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