1e5c31af7Sopenharmony_ci// Copyright 2014-2024 The Khronos Group Inc.
2e5c31af7Sopenharmony_ci//
3e5c31af7Sopenharmony_ci// SPDX-License-Identifier: CC-BY-4.0
4e5c31af7Sopenharmony_ci
5e5c31af7Sopenharmony_ciinclude::{generated}/meta/{refprefix}VK_KHR_display.adoc[]
6e5c31af7Sopenharmony_ci
7e5c31af7Sopenharmony_ci=== Other Extension Metadata
8e5c31af7Sopenharmony_ci
9e5c31af7Sopenharmony_ci*Last Modified Date*::
10e5c31af7Sopenharmony_ci    2017-03-13
11e5c31af7Sopenharmony_ci*IP Status*::
12e5c31af7Sopenharmony_ci    No known IP claims.
13e5c31af7Sopenharmony_ci*Contributors*::
14e5c31af7Sopenharmony_ci  - James Jones, NVIDIA
15e5c31af7Sopenharmony_ci  - Norbert Nopper, Freescale
16e5c31af7Sopenharmony_ci  - Jeff Vigil, Qualcomm
17e5c31af7Sopenharmony_ci  - Daniel Rakos, AMD
18e5c31af7Sopenharmony_ci
19e5c31af7Sopenharmony_ci=== Description
20e5c31af7Sopenharmony_ci
21e5c31af7Sopenharmony_ciThis extension provides the API to enumerate displays and available modes on
22e5c31af7Sopenharmony_cia given device.
23e5c31af7Sopenharmony_ci
24e5c31af7Sopenharmony_ciinclude::{generated}/interfaces/VK_KHR_display.adoc[]
25e5c31af7Sopenharmony_ci
26e5c31af7Sopenharmony_ci=== Issues
27e5c31af7Sopenharmony_ci
28e5c31af7Sopenharmony_ci1) Which properties of a mode should be fixed in the mode information vs.
29e5c31af7Sopenharmony_cisettable in some other function when setting the mode? E.g., do we need to
30e5c31af7Sopenharmony_cidouble the size of the mode pool to include both stereo and non-stereo
31e5c31af7Sopenharmony_cimodes? YUV and RGB scanout even if they both take RGB input images? BGR vs.
32e5c31af7Sopenharmony_ciRGB input? etc.
33e5c31af7Sopenharmony_ci
34e5c31af7Sopenharmony_ci*RESOLVED*: Many modern displays support at most a handful of resolutions
35e5c31af7Sopenharmony_ciand timings natively.
36e5c31af7Sopenharmony_ciOther "`modes`" are expected to be supported using scaling hardware on the
37e5c31af7Sopenharmony_cidisplay engine or GPU.
38e5c31af7Sopenharmony_ciOther properties, such as rotation and mirroring should not require
39e5c31af7Sopenharmony_ciduplicating hardware modes just to express all combinations.
40e5c31af7Sopenharmony_ciFurther, these properties may be implemented on a per-display or per-overlay
41e5c31af7Sopenharmony_cigranularity.
42e5c31af7Sopenharmony_ci
43e5c31af7Sopenharmony_ciTo avoid the exponential growth of modes as mutable properties are added, as
44e5c31af7Sopenharmony_ciwas the case with code:EGLConfig/WGL pixel formats/code:GLXFBConfig, this
45e5c31af7Sopenharmony_cispecification should separate out hardware properties and configurable state
46e5c31af7Sopenharmony_ciinto separate objects.
47e5c31af7Sopenharmony_ciModes and overlay planes will express capabilities of the hardware, while a
48e5c31af7Sopenharmony_ciseparate structure will allow applications to configure scaling, rotation,
49e5c31af7Sopenharmony_cimirroring, color keys, LUT values, alpha masks, etc.
50e5c31af7Sopenharmony_cifor a given swapchain independent of the mode in use.
51e5c31af7Sopenharmony_ciConstraints on these settings will be established by properties of the
52e5c31af7Sopenharmony_ciimmutable objects.
53e5c31af7Sopenharmony_ci
54e5c31af7Sopenharmony_ciNote the resolution of this issue may affect issue 5 as well.
55e5c31af7Sopenharmony_ci
56e5c31af7Sopenharmony_ci2) What properties of a display itself are useful?
57e5c31af7Sopenharmony_ci
58e5c31af7Sopenharmony_ci*RESOLVED*: This issue is too broad.
59e5c31af7Sopenharmony_ciIt was meant to prompt general discussion, but resolving this issue amounts
60e5c31af7Sopenharmony_cito completing this specification.
61e5c31af7Sopenharmony_ciAll interesting properties should be included.
62e5c31af7Sopenharmony_ciThe issue will remain as a placeholder since removing it would make it hard
63e5c31af7Sopenharmony_cito parse existing discussion notes that refer to issues by number.
64e5c31af7Sopenharmony_ci
65e5c31af7Sopenharmony_ci3) How are multiple overlay planes within a display or mode enumerated?
66e5c31af7Sopenharmony_ci
67e5c31af7Sopenharmony_ci*RESOLVED*: They are referred to by an index.
68e5c31af7Sopenharmony_ciEach display will report the number of overlay planes it contains.
69e5c31af7Sopenharmony_ci
70e5c31af7Sopenharmony_ci4) Should swapchains be created relative to a mode or a display?
71e5c31af7Sopenharmony_ci
72e5c31af7Sopenharmony_ci*RESOLVED*: When using this extension, swapchains are created relative to a
73e5c31af7Sopenharmony_cimode and a plane.
74e5c31af7Sopenharmony_ciThe mode implies the display object the swapchain will present to.
75e5c31af7Sopenharmony_ciIf the specified mode is not the display's current mode, the new mode will
76e5c31af7Sopenharmony_cibe applied when the first image is presented to the swapchain, and the
77e5c31af7Sopenharmony_cidefault operating system mode, if any, will be restored when the swapchain
78e5c31af7Sopenharmony_ciis destroyed.
79e5c31af7Sopenharmony_ci
80e5c31af7Sopenharmony_ci5) Should users query generic ranges from displays and construct their own
81e5c31af7Sopenharmony_cimodes explicitly using those constraints rather than querying a fixed set of
82e5c31af7Sopenharmony_cimodes (Most monitors only have one real "`mode`" these days, even though
83e5c31af7Sopenharmony_cimany support relatively arbitrary scaling, either on the monitor side or in
84e5c31af7Sopenharmony_cithe GPU display engine, making "`modes`" something of a relic/compatibility
85e5c31af7Sopenharmony_ciconstruct).
86e5c31af7Sopenharmony_ci
87e5c31af7Sopenharmony_ci*RESOLVED*: Expose both.
88e5c31af7Sopenharmony_ciDisplay information structures will expose a set of predefined modes, as
89e5c31af7Sopenharmony_ciwell as any attributes necessary to construct a customized mode.
90e5c31af7Sopenharmony_ci
91e5c31af7Sopenharmony_ci6) Is it fine if we return the display and display mode handles in the
92e5c31af7Sopenharmony_cistructure used to query their properties?
93e5c31af7Sopenharmony_ci
94e5c31af7Sopenharmony_ci*RESOLVED*: Yes.
95e5c31af7Sopenharmony_ci
96e5c31af7Sopenharmony_ci7) Is there a possibility that not all displays of a device work with all of
97e5c31af7Sopenharmony_cithe present queues of a device? If yes, how do we determine which displays
98e5c31af7Sopenharmony_ciwork with which present queues?
99e5c31af7Sopenharmony_ci
100e5c31af7Sopenharmony_ci*RESOLVED*: No known hardware has such limitations, but determining such
101e5c31af7Sopenharmony_cilimitations is supported automatically using the existing
102e5c31af7Sopenharmony_ci`apiext:VK_KHR_surface` and `apiext:VK_KHR_swapchain` query mechanisms.
103e5c31af7Sopenharmony_ci
104e5c31af7Sopenharmony_ci8) Should all presentation need to be done relative to an overlay plane, or
105e5c31af7Sopenharmony_cican a display mode + display be used alone to target an output?
106e5c31af7Sopenharmony_ci
107e5c31af7Sopenharmony_ci*RESOLVED*: Require specifying a plane explicitly.
108e5c31af7Sopenharmony_ci
109e5c31af7Sopenharmony_ci9) Should displays have an associated window system display, such as an
110e5c31af7Sopenharmony_cicode:HDC or code:Display*?
111e5c31af7Sopenharmony_ci
112e5c31af7Sopenharmony_ci*RESOLVED*: No.
113e5c31af7Sopenharmony_ciDisplays are independent of any windowing system in use on the system.
114e5c31af7Sopenharmony_ciFurther, neither code:HDC nor code:Display* refer to a physical display
115e5c31af7Sopenharmony_ciobject.
116e5c31af7Sopenharmony_ci
117e5c31af7Sopenharmony_ci10) Are displays queried from a physical GPU or from a device instance?
118e5c31af7Sopenharmony_ci
119e5c31af7Sopenharmony_ci*RESOLVED*: Developers prefer to query modes directly from the physical GPU
120e5c31af7Sopenharmony_ciso they can use display information as an input to their device selection
121e5c31af7Sopenharmony_cialgorithms prior to device creation.
122e5c31af7Sopenharmony_ciThis avoids the need to create placeholder device instances to enumerate
123e5c31af7Sopenharmony_cidisplays.
124e5c31af7Sopenharmony_ci
125e5c31af7Sopenharmony_ciThis preference must be weighed against the extra initialization that must
126e5c31af7Sopenharmony_cibe done by driver vendors prior to device instance creation to support this
127e5c31af7Sopenharmony_ciusage.
128e5c31af7Sopenharmony_ci
129e5c31af7Sopenharmony_ci11) Should displays and/or modes be dispatchable objects? If functions are
130e5c31af7Sopenharmony_cito take displays, overlays, or modes as their first parameter, they must be
131e5c31af7Sopenharmony_cidispatchable objects as defined in Khronos bug 13529.
132e5c31af7Sopenharmony_ciIf they are not added to the list of dispatchable objects, functions
133e5c31af7Sopenharmony_cioperating on them must take some higher-level object as their first
134e5c31af7Sopenharmony_ciparameter.
135e5c31af7Sopenharmony_ciThere is no performance case against making them dispatchable objects, but
136e5c31af7Sopenharmony_cithey would be the first extension objects to be dispatchable.
137e5c31af7Sopenharmony_ci
138e5c31af7Sopenharmony_ci*RESOLVED*: Do not make displays or modes dispatchable.
139e5c31af7Sopenharmony_ciThey will dispatch based on their associated physical device.
140e5c31af7Sopenharmony_ci
141e5c31af7Sopenharmony_ci12) Should hardware cursor capabilities be exposed?
142e5c31af7Sopenharmony_ci
143e5c31af7Sopenharmony_ci*RESOLVED*: Defer.
144e5c31af7Sopenharmony_ciThis could be a separate extension on top of the base WSI specs.
145e5c31af7Sopenharmony_ci
146e5c31af7Sopenharmony_ci13) How many display objects should be enumerated for "tiled" display
147e5c31af7Sopenharmony_cidevices? There are ongoing design discussions among lower-level display API
148e5c31af7Sopenharmony_ciauthors regarding how to expose displays if they are one physical display
149e5c31af7Sopenharmony_cidevice to an end user, but may internally be implemented as two side-by-side
150e5c31af7Sopenharmony_cidisplays using the same display engine (and sometimes cabling) resources as
151e5c31af7Sopenharmony_citwo physically separate display devices.
152e5c31af7Sopenharmony_ci
153e5c31af7Sopenharmony_ci*RESOLVED*: Tiled displays will appear as a single display object in this
154e5c31af7Sopenharmony_ciAPI.
155e5c31af7Sopenharmony_ci
156e5c31af7Sopenharmony_ci14) Should the raw EDID data be included in the display information?
157e5c31af7Sopenharmony_ci
158e5c31af7Sopenharmony_ci*RESOLVED*: No.
159e5c31af7Sopenharmony_ciA future extension could be added which reports the EDID if necessary.
160e5c31af7Sopenharmony_ciThis may be complicated by the outcome of issue 13.
161e5c31af7Sopenharmony_ci
162e5c31af7Sopenharmony_ci15) Should min and max scaling factor capabilities of overlays be exposed?
163e5c31af7Sopenharmony_ci
164e5c31af7Sopenharmony_ci*RESOLVED*: Yes.
165e5c31af7Sopenharmony_ciThis is exposed indirectly by allowing applications to query the min/max
166e5c31af7Sopenharmony_ciposition and extent of the source and destination regions from which image
167e5c31af7Sopenharmony_cicontents are fetched by the display engine when using a particular mode and
168e5c31af7Sopenharmony_cioverlay pair.
169e5c31af7Sopenharmony_ci
170e5c31af7Sopenharmony_ci16) Should devices be able to expose planes that can be moved between
171e5c31af7Sopenharmony_cidisplays? If so, how?
172e5c31af7Sopenharmony_ci
173e5c31af7Sopenharmony_ci*RESOLVED*: Yes.
174e5c31af7Sopenharmony_ciApplications can determine which displays a given plane supports using
175e5c31af7Sopenharmony_ciflink:vkGetDisplayPlaneSupportedDisplaysKHR.
176e5c31af7Sopenharmony_ci
177e5c31af7Sopenharmony_ci17) Should there be a way to destroy display modes? If so, does it support
178e5c31af7Sopenharmony_cidestroying "`built in`" modes?
179e5c31af7Sopenharmony_ci
180e5c31af7Sopenharmony_ci*RESOLVED*: Not in this extension.
181e5c31af7Sopenharmony_ciA future extension could add this functionality.
182e5c31af7Sopenharmony_ci
183e5c31af7Sopenharmony_ci18) What should the lifetime of display and built-in display mode objects
184e5c31af7Sopenharmony_cibe?
185e5c31af7Sopenharmony_ci
186e5c31af7Sopenharmony_ci*RESOLVED*: The lifetime of the instance.
187e5c31af7Sopenharmony_ciThese objects cannot be destroyed.
188e5c31af7Sopenharmony_ciA future extension may be added to expose a way to destroy these objects
189e5c31af7Sopenharmony_ciand/or support display hotplug.
190e5c31af7Sopenharmony_ci
191e5c31af7Sopenharmony_ci19) Should persistent mode for smart panels be enabled/disabled at swapchain
192e5c31af7Sopenharmony_cicreation time, or on a per-present basis.
193e5c31af7Sopenharmony_ci
194e5c31af7Sopenharmony_ci*RESOLVED*: On a per-present basis.
195e5c31af7Sopenharmony_ci
196e5c31af7Sopenharmony_ciifndef::VKSC_VERSION_1_0[]
197e5c31af7Sopenharmony_ci=== Examples
198e5c31af7Sopenharmony_ci
199e5c31af7Sopenharmony_ci[NOTE]
200e5c31af7Sopenharmony_ci.Note
201e5c31af7Sopenharmony_ci====
202e5c31af7Sopenharmony_ciThe example code for the `VK_KHR_display` and
203e5c31af7Sopenharmony_ci`apiext:VK_KHR_display_swapchain` extensions was removed from the appendix
204e5c31af7Sopenharmony_ciafter revision 1.0.43.
205e5c31af7Sopenharmony_ciThe display enumeration example code was ported to the cube demo that is
206e5c31af7Sopenharmony_cishipped with the official Khronos SDK, and is being kept up-to-date in that
207e5c31af7Sopenharmony_cilocation (see:
208e5c31af7Sopenharmony_cihttps://github.com/KhronosGroup/Vulkan-Tools/blob/master/cube/cube.c).
209e5c31af7Sopenharmony_ci====
210e5c31af7Sopenharmony_ciendif::VKSC_VERSION_1_0[]
211e5c31af7Sopenharmony_ci
212e5c31af7Sopenharmony_ci=== Version History
213e5c31af7Sopenharmony_ci
214e5c31af7Sopenharmony_ci  * Revision 1, 2015-02-24 (James Jones)
215e5c31af7Sopenharmony_ci  ** Initial draft
216e5c31af7Sopenharmony_ci
217e5c31af7Sopenharmony_ci  * Revision 2, 2015-03-12 (Norbert Nopper)
218e5c31af7Sopenharmony_ci  ** Added overlay enumeration for a display.
219e5c31af7Sopenharmony_ci
220e5c31af7Sopenharmony_ci  * Revision 3, 2015-03-17 (Norbert Nopper)
221e5c31af7Sopenharmony_ci  ** Fixed typos and namings as discussed in Bugzilla.
222e5c31af7Sopenharmony_ci  ** Reordered and grouped functions.
223e5c31af7Sopenharmony_ci  ** Added functions to query count of display, mode and overlay.
224e5c31af7Sopenharmony_ci  ** Added native display handle, which may be needed on some platforms to
225e5c31af7Sopenharmony_ci     create a native Window.
226e5c31af7Sopenharmony_ci
227e5c31af7Sopenharmony_ci  * Revision 4, 2015-03-18 (Norbert Nopper)
228e5c31af7Sopenharmony_ci  ** Removed primary and virtualPostion members (see comment of James Jones
229e5c31af7Sopenharmony_ci     in Bugzilla).
230e5c31af7Sopenharmony_ci  ** Added native overlay handle to information structure.
231e5c31af7Sopenharmony_ci  ** Replaced , with ; in struct.
232e5c31af7Sopenharmony_ci
233e5c31af7Sopenharmony_ci  * Revision 6, 2015-03-18 (Daniel Rakos)
234e5c31af7Sopenharmony_ci  ** Added WSI extension suffix to all items.
235e5c31af7Sopenharmony_ci  ** Made the whole API more "`Vulkanish`".
236e5c31af7Sopenharmony_ci  ** Replaced all functions with a single vkGetDisplayInfoKHR function to
237e5c31af7Sopenharmony_ci     better match the rest of the API.
238e5c31af7Sopenharmony_ci  ** Made the display, display mode, and overlay objects be first class
239e5c31af7Sopenharmony_ci     objects, not subclasses of VkBaseObject as they do not support the
240e5c31af7Sopenharmony_ci     common functions anyways.
241e5c31af7Sopenharmony_ci  ** Renamed *Info structures to *Properties.
242e5c31af7Sopenharmony_ci  ** Removed overlayIndex field from VkOverlayProperties as there is an
243e5c31af7Sopenharmony_ci     implicit index already as a result of moving to a "`Vulkanish`" API.
244e5c31af7Sopenharmony_ci  ** Displays are not get through device, but through physical GPU to match
245e5c31af7Sopenharmony_ci     the rest of the Vulkan API.
246e5c31af7Sopenharmony_ci     Also this is something ISVs explicitly requested.
247e5c31af7Sopenharmony_ci  ** Added issue (6) and (7).
248e5c31af7Sopenharmony_ci
249e5c31af7Sopenharmony_ci  * Revision 7, 2015-03-25 (James Jones)
250e5c31af7Sopenharmony_ci  ** Added an issues section
251e5c31af7Sopenharmony_ci  ** Added rotation and mirroring flags
252e5c31af7Sopenharmony_ci
253e5c31af7Sopenharmony_ci  * Revision 8, 2015-03-25 (James Jones)
254e5c31af7Sopenharmony_ci  ** Combined the duplicate issues sections introduced in last change.
255e5c31af7Sopenharmony_ci  ** Added proposed resolutions to several issues.
256e5c31af7Sopenharmony_ci
257e5c31af7Sopenharmony_ci  * Revision 9, 2015-04-01 (Daniel Rakos)
258e5c31af7Sopenharmony_ci  ** Rebased extension against Vulkan 0.82.0
259e5c31af7Sopenharmony_ci
260e5c31af7Sopenharmony_ci  * Revision 10, 2015-04-01 (James Jones)
261e5c31af7Sopenharmony_ci  ** Added issues (10) and (11).
262e5c31af7Sopenharmony_ci  ** Added more straw-man issue resolutions, and cleaned up the proposed
263e5c31af7Sopenharmony_ci     resolution for issue (4).
264e5c31af7Sopenharmony_ci  ** Updated the rotation and mirroring enums to have proper bitmask
265e5c31af7Sopenharmony_ci     semantics.
266e5c31af7Sopenharmony_ci
267e5c31af7Sopenharmony_ci  * Revision 11, 2015-04-15 (James Jones)
268e5c31af7Sopenharmony_ci  ** Added proposed resolution for issues (1) and (2).
269e5c31af7Sopenharmony_ci  ** Added issues (12), (13), (14), and (15)
270e5c31af7Sopenharmony_ci  ** Removed pNativeHandle field from overlay structure.
271e5c31af7Sopenharmony_ci  ** Fixed small compilation errors in example code.
272e5c31af7Sopenharmony_ci
273e5c31af7Sopenharmony_ci  * Revision 12, 2015-07-29 (James Jones)
274e5c31af7Sopenharmony_ci  ** Rewrote the guts of the extension against the latest WSI swapchain
275e5c31af7Sopenharmony_ci     specifications and the latest Vulkan API.
276e5c31af7Sopenharmony_ci  ** Address overlay planes by their index rather than an object handle and
277e5c31af7Sopenharmony_ci     refer to them as "`planes`" rather than "`overlays`" to make it
278e5c31af7Sopenharmony_ci     slightly clearer that even a display with no "`overlays`" still has at
279e5c31af7Sopenharmony_ci     least one base "`plane`" that images can be displayed on.
280e5c31af7Sopenharmony_ci  ** Updated most of the issues.
281e5c31af7Sopenharmony_ci  ** Added an "`extension type`" section to the specification header.
282e5c31af7Sopenharmony_ci  ** Reused the VK_EXT_KHR_surface surface transform enumerations rather
283e5c31af7Sopenharmony_ci     than redefining them here.
284e5c31af7Sopenharmony_ci  ** Updated the example code to use the new semantics.
285e5c31af7Sopenharmony_ci
286e5c31af7Sopenharmony_ci  * Revision 13, 2015-08-21 (Ian Elliott)
287e5c31af7Sopenharmony_ci  ** Renamed this extension and all of its enumerations, types, functions,
288e5c31af7Sopenharmony_ci     etc.
289e5c31af7Sopenharmony_ci     This makes it compliant with the proposed standard for Vulkan
290e5c31af7Sopenharmony_ci     extensions.
291e5c31af7Sopenharmony_ci  ** Switched from "`revision`" to "`version`", including use of the
292e5c31af7Sopenharmony_ci     VK_MAKE_VERSION macro in the header file.
293e5c31af7Sopenharmony_ci
294e5c31af7Sopenharmony_ci  * Revision 14, 2015-09-01 (James Jones)
295e5c31af7Sopenharmony_ci  ** Restore single-field revision number.
296e5c31af7Sopenharmony_ci
297e5c31af7Sopenharmony_ci  * Revision 15, 2015-09-08 (James Jones)
298e5c31af7Sopenharmony_ci  ** Added alpha flags enum.
299e5c31af7Sopenharmony_ci  ** Added premultiplied alpha support.
300e5c31af7Sopenharmony_ci
301e5c31af7Sopenharmony_ci  * Revision 16, 2015-09-08 (James Jones)
302e5c31af7Sopenharmony_ci  ** Added description section to the spec.
303e5c31af7Sopenharmony_ci  ** Added issues 16 - 18.
304e5c31af7Sopenharmony_ci
305e5c31af7Sopenharmony_ci  * Revision 17, 2015-10-02 (James Jones)
306e5c31af7Sopenharmony_ci  ** Planes are now a property of the entire device rather than individual
307e5c31af7Sopenharmony_ci     displays.
308e5c31af7Sopenharmony_ci     This allows planes to be moved between multiple displays on devices
309e5c31af7Sopenharmony_ci     that support it.
310e5c31af7Sopenharmony_ci  ** Added a function to create a VkSurfaceKHR object describing a display
311e5c31af7Sopenharmony_ci     plane and mode to align with the new per-platform surface creation
312e5c31af7Sopenharmony_ci     conventions.
313e5c31af7Sopenharmony_ci  ** Removed detailed mode timing data.
314e5c31af7Sopenharmony_ci     It was agreed that the mode extents and refresh rate are sufficient for
315e5c31af7Sopenharmony_ci     current use cases.
316e5c31af7Sopenharmony_ci     Other information could be added back in as an extension if it is
317e5c31af7Sopenharmony_ci     needed in the future.
318e5c31af7Sopenharmony_ci  ** Added support for smart/persistent/buffered display devices.
319e5c31af7Sopenharmony_ci
320e5c31af7Sopenharmony_ci  * Revision 18, 2015-10-26 (Ian Elliott)
321e5c31af7Sopenharmony_ci  ** Renamed from VK_EXT_KHR_display to VK_KHR_display.
322e5c31af7Sopenharmony_ci
323e5c31af7Sopenharmony_ci  * Revision 19, 2015-11-02 (James Jones)
324e5c31af7Sopenharmony_ci  ** Updated example code to match revision 17 changes.
325e5c31af7Sopenharmony_ci
326e5c31af7Sopenharmony_ci  * Revision 20, 2015-11-03 (Daniel Rakos)
327e5c31af7Sopenharmony_ci  ** Added allocation callbacks to creation functions.
328e5c31af7Sopenharmony_ci
329e5c31af7Sopenharmony_ci  * Revision 21, 2015-11-10 (Jesse Hall)
330e5c31af7Sopenharmony_ci  ** Added VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR, and use
331e5c31af7Sopenharmony_ci     VkDisplayPlaneAlphaFlagBitsKHR for
332e5c31af7Sopenharmony_ci     VkDisplayPlanePropertiesKHR::alphaMode instead of
333e5c31af7Sopenharmony_ci     VkDisplayPlaneAlphaFlagsKHR, since it only represents one mode.
334e5c31af7Sopenharmony_ci  ** Added reserved flags bitmask to VkDisplayPlanePropertiesKHR.
335e5c31af7Sopenharmony_ci  ** Use VkSurfaceTransformFlagBitsKHR instead of obsolete
336e5c31af7Sopenharmony_ci     VkSurfaceTransformKHR.
337e5c31af7Sopenharmony_ci  ** Renamed vkGetDisplayPlaneSupportedDisplaysKHR parameters for clarity.
338e5c31af7Sopenharmony_ci
339e5c31af7Sopenharmony_ci  * Revision 22, 2015-12-18 (James Jones)
340e5c31af7Sopenharmony_ci  ** Added missing "`planeIndex`" parameter to
341e5c31af7Sopenharmony_ci     vkGetDisplayPlaneSupportedDisplaysKHR()
342e5c31af7Sopenharmony_ci
343e5c31af7Sopenharmony_ci  * Revision 23, 2017-03-13 (James Jones)
344e5c31af7Sopenharmony_ci  ** Closed all remaining issues.
345e5c31af7Sopenharmony_ci     The specification and implementations have been shipping with the
346e5c31af7Sopenharmony_ci     proposed resolutions for some time now.
347e5c31af7Sopenharmony_ci  ** Removed the sample code and noted it has been integrated into the
348e5c31af7Sopenharmony_ci     official Vulkan SDK cube demo.
349