1e5c31af7Sopenharmony_ci// Copyright 2014-2021 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.txt[] 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.txt[] 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*PROPOSED RESOLUTION*: Many modern displays support at most a handful of 35e5c31af7Sopenharmony_ciresolutions and 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*PROPOSED RESOLUTION*: 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*PROPOSED RESOLUTION*: 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*PROPOSED RESOLUTION*: When using this extension, swapchains are created 73e5c31af7Sopenharmony_cirelative to a mode 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*PROPOSED RESOLUTION*: 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*PROPOSED RESOLUTION*: 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*PROPOSED RESOLUTION*: No known hardware has such limitations, but 101e5c31af7Sopenharmony_cidetermining such limitations 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*PROPOSED RESOLUTION*: 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*PROPOSED RESOLUTION*: 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*PROPOSED RESOLUTION*: Developers prefer to query modes directly from the 120e5c31af7Sopenharmony_ciphysical GPU so they can use display information as an input to their device 121e5c31af7Sopenharmony_ciselection algorithms 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*PROPOSED RESOLUTION*: 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*PROPOSED RESOLUTION*: Defer. 144e5c31af7Sopenharmony_ciThis could be a separate extension on top of the base WSI specs. 145e5c31af7Sopenharmony_ci 146e5c31af7Sopenharmony_ciifdef::editing-notes[] 147e5c31af7Sopenharmony_ci[NOTE] 148e5c31af7Sopenharmony_ci.editing-note 149e5c31af7Sopenharmony_ci==== 150e5c31af7Sopenharmony_ciThere appears to be a missing sentence for the first part of issue 13 here. 151e5c31af7Sopenharmony_ci==== 152e5c31af7Sopenharmony_ciendif::editing-notes[] 153e5c31af7Sopenharmony_ci 154e5c31af7Sopenharmony_ciif they are one physical display device to an end user, but may internally 155e5c31af7Sopenharmony_cibe implemented as two side-by-side displays using the same display engine 156e5c31af7Sopenharmony_ci(and sometimes cabling) resources as two physically separate display 157e5c31af7Sopenharmony_cidevices. 158e5c31af7Sopenharmony_ci 159e5c31af7Sopenharmony_ci*RESOLVED*: Tiled displays will appear as a single display object in this 160e5c31af7Sopenharmony_ciAPI. 161e5c31af7Sopenharmony_ci 162e5c31af7Sopenharmony_ci14) Should the raw EDID data be included in the display information? 163e5c31af7Sopenharmony_ci 164e5c31af7Sopenharmony_ci*RESOLVED*: No. 165e5c31af7Sopenharmony_ciA future extension could be added which reports the EDID if necessary. 166e5c31af7Sopenharmony_ciThis may be complicated by the outcome of issue 13. 167e5c31af7Sopenharmony_ci 168e5c31af7Sopenharmony_ci15) Should min and max scaling factor capabilities of overlays be exposed? 169e5c31af7Sopenharmony_ci 170e5c31af7Sopenharmony_ci*RESOLVED*: Yes. 171e5c31af7Sopenharmony_ciThis is exposed indirectly by allowing applications to query the min/max 172e5c31af7Sopenharmony_ciposition and extent of the source and destination regions from which image 173e5c31af7Sopenharmony_cicontents are fetched by the display engine when using a particular mode and 174e5c31af7Sopenharmony_cioverlay pair. 175e5c31af7Sopenharmony_ci 176e5c31af7Sopenharmony_ci16) Should devices be able to expose planes that can be moved between 177e5c31af7Sopenharmony_cidisplays? If so, how? 178e5c31af7Sopenharmony_ci 179e5c31af7Sopenharmony_ci*RESOLVED*: Yes. 180e5c31af7Sopenharmony_ciApplications can determine which displays a given plane supports using 181e5c31af7Sopenharmony_ciflink:vkGetDisplayPlaneSupportedDisplaysKHR. 182e5c31af7Sopenharmony_ci 183e5c31af7Sopenharmony_ci17) Should there be a way to destroy display modes? If so, does it support 184e5c31af7Sopenharmony_cidestroying "`built in`" modes? 185e5c31af7Sopenharmony_ci 186e5c31af7Sopenharmony_ci*RESOLVED*: Not in this extension. 187e5c31af7Sopenharmony_ciA future extension could add this functionality. 188e5c31af7Sopenharmony_ci 189e5c31af7Sopenharmony_ci18) What should the lifetime of display and built-in display mode objects 190e5c31af7Sopenharmony_cibe? 191e5c31af7Sopenharmony_ci 192e5c31af7Sopenharmony_ci*RESOLVED*: The lifetime of the instance. 193e5c31af7Sopenharmony_ciThese objects cannot be destroyed. 194e5c31af7Sopenharmony_ciA future extension may be added to expose a way to destroy these objects 195e5c31af7Sopenharmony_ciand/or support display hotplug. 196e5c31af7Sopenharmony_ci 197e5c31af7Sopenharmony_ci19) Should persistent mode for smart panels be enabled/disabled at swapchain 198e5c31af7Sopenharmony_cicreation time, or on a per-present basis. 199e5c31af7Sopenharmony_ci 200e5c31af7Sopenharmony_ci*RESOLVED*: On a per-present basis. 201e5c31af7Sopenharmony_ci 202e5c31af7Sopenharmony_ci=== Examples 203e5c31af7Sopenharmony_ci 204e5c31af7Sopenharmony_ci[NOTE] 205e5c31af7Sopenharmony_ci.Note 206e5c31af7Sopenharmony_ci==== 207e5c31af7Sopenharmony_ciThe example code for the `VK_KHR_display` and 208e5c31af7Sopenharmony_ci`apiext:VK_KHR_display_swapchain` extensions was removed from the appendix 209e5c31af7Sopenharmony_ciafter revision 1.0.43. 210e5c31af7Sopenharmony_ciThe display enumeration example code was ported to the cube demo that is 211e5c31af7Sopenharmony_cishipped with the official Khronos SDK, and is being kept up-to-date in that 212e5c31af7Sopenharmony_cilocation (see: 213e5c31af7Sopenharmony_cihttps://github.com/KhronosGroup/Vulkan-Tools/blob/master/cube/cube.c). 214e5c31af7Sopenharmony_ci==== 215e5c31af7Sopenharmony_ci 216e5c31af7Sopenharmony_ci=== Version History 217e5c31af7Sopenharmony_ci 218e5c31af7Sopenharmony_ci * Revision 1, 2015-02-24 (James Jones) 219e5c31af7Sopenharmony_ci - Initial draft 220e5c31af7Sopenharmony_ci 221e5c31af7Sopenharmony_ci * Revision 2, 2015-03-12 (Norbert Nopper) 222e5c31af7Sopenharmony_ci - Added overlay enumeration for a display. 223e5c31af7Sopenharmony_ci 224e5c31af7Sopenharmony_ci * Revision 3, 2015-03-17 (Norbert Nopper) 225e5c31af7Sopenharmony_ci - Fixed typos and namings as discussed in Bugzilla. 226e5c31af7Sopenharmony_ci - Reordered and grouped functions. 227e5c31af7Sopenharmony_ci - Added functions to query count of display, mode and overlay. 228e5c31af7Sopenharmony_ci - Added native display handle, which may be needed on some platforms to 229e5c31af7Sopenharmony_ci create a native Window. 230e5c31af7Sopenharmony_ci 231e5c31af7Sopenharmony_ci * Revision 4, 2015-03-18 (Norbert Nopper) 232e5c31af7Sopenharmony_ci - Removed primary and virtualPostion members (see comment of James Jones 233e5c31af7Sopenharmony_ci in Bugzilla). 234e5c31af7Sopenharmony_ci - Added native overlay handle to information structure. 235e5c31af7Sopenharmony_ci - Replaced , with ; in struct. 236e5c31af7Sopenharmony_ci 237e5c31af7Sopenharmony_ci * Revision 6, 2015-03-18 (Daniel Rakos) 238e5c31af7Sopenharmony_ci - Added WSI extension suffix to all items. 239e5c31af7Sopenharmony_ci - Made the whole API more "`Vulkanish`". 240e5c31af7Sopenharmony_ci - Replaced all functions with a single vkGetDisplayInfoKHR function to 241e5c31af7Sopenharmony_ci better match the rest of the API. 242e5c31af7Sopenharmony_ci - Made the display, display mode, and overlay objects be first class 243e5c31af7Sopenharmony_ci objects, not subclasses of VkBaseObject as they do not support the 244e5c31af7Sopenharmony_ci common functions anyways. 245e5c31af7Sopenharmony_ci - Renamed *Info structures to *Properties. 246e5c31af7Sopenharmony_ci - Removed overlayIndex field from VkOverlayProperties as there is an 247e5c31af7Sopenharmony_ci implicit index already as a result of moving to a "`Vulkanish`" API. 248e5c31af7Sopenharmony_ci - Displays are not get through device, but through physical GPU to match 249e5c31af7Sopenharmony_ci the rest of the Vulkan API. 250e5c31af7Sopenharmony_ci Also this is something ISVs explicitly requested. 251e5c31af7Sopenharmony_ci - Added issue (6) and (7). 252e5c31af7Sopenharmony_ci 253e5c31af7Sopenharmony_ci * Revision 7, 2015-03-25 (James Jones) 254e5c31af7Sopenharmony_ci - Added an issues section 255e5c31af7Sopenharmony_ci - Added rotation and mirroring flags 256e5c31af7Sopenharmony_ci 257e5c31af7Sopenharmony_ci * Revision 8, 2015-03-25 (James Jones) 258e5c31af7Sopenharmony_ci - Combined the duplicate issues sections introduced in last change. 259e5c31af7Sopenharmony_ci - Added proposed resolutions to several issues. 260e5c31af7Sopenharmony_ci 261e5c31af7Sopenharmony_ci * Revision 9, 2015-04-01 (Daniel Rakos) 262e5c31af7Sopenharmony_ci - Rebased extension against Vulkan 0.82.0 263e5c31af7Sopenharmony_ci 264e5c31af7Sopenharmony_ci * Revision 10, 2015-04-01 (James Jones) 265e5c31af7Sopenharmony_ci - Added issues (10) and (11). 266e5c31af7Sopenharmony_ci - Added more straw-man issue resolutions, and cleaned up the proposed 267e5c31af7Sopenharmony_ci resolution for issue (4). 268e5c31af7Sopenharmony_ci - Updated the rotation and mirroring enums to have proper bitmask 269e5c31af7Sopenharmony_ci semantics. 270e5c31af7Sopenharmony_ci 271e5c31af7Sopenharmony_ci * Revision 11, 2015-04-15 (James Jones) 272e5c31af7Sopenharmony_ci - Added proposed resolution for issues (1) and (2). 273e5c31af7Sopenharmony_ci - Added issues (12), (13), (14), and (15) 274e5c31af7Sopenharmony_ci - Removed pNativeHandle field from overlay structure. 275e5c31af7Sopenharmony_ci - Fixed small compilation errors in example code. 276e5c31af7Sopenharmony_ci 277e5c31af7Sopenharmony_ci * Revision 12, 2015-07-29 (James Jones) 278e5c31af7Sopenharmony_ci - Rewrote the guts of the extension against the latest WSI swapchain 279e5c31af7Sopenharmony_ci specifications and the latest Vulkan API. 280e5c31af7Sopenharmony_ci - Address overlay planes by their index rather than an object handle and 281e5c31af7Sopenharmony_ci refer to them as "`planes`" rather than "`overlays`" to make it 282e5c31af7Sopenharmony_ci slightly clearer that even a display with no "`overlays`" still has at 283e5c31af7Sopenharmony_ci least one base "`plane`" that images can be displayed on. 284e5c31af7Sopenharmony_ci - Updated most of the issues. 285e5c31af7Sopenharmony_ci - Added an "`extension type`" section to the specification header. 286e5c31af7Sopenharmony_ci - Re-used the VK_EXT_KHR_surface surface transform enumerations rather 287e5c31af7Sopenharmony_ci than redefining them here. 288e5c31af7Sopenharmony_ci - Updated the example code to use the new semantics. 289e5c31af7Sopenharmony_ci 290e5c31af7Sopenharmony_ci * Revision 13, 2015-08-21 (Ian Elliott) 291e5c31af7Sopenharmony_ci - Renamed this extension and all of its enumerations, types, functions, 292e5c31af7Sopenharmony_ci etc. 293e5c31af7Sopenharmony_ci This makes it compliant with the proposed standard for Vulkan 294e5c31af7Sopenharmony_ci extensions. 295e5c31af7Sopenharmony_ci - Switched from "`revision`" to "`version`", including use of the 296e5c31af7Sopenharmony_ci VK_MAKE_VERSION macro in the header file. 297e5c31af7Sopenharmony_ci 298e5c31af7Sopenharmony_ci * Revision 14, 2015-09-01 (James Jones) 299e5c31af7Sopenharmony_ci - Restore single-field revision number. 300e5c31af7Sopenharmony_ci 301e5c31af7Sopenharmony_ci * Revision 15, 2015-09-08 (James Jones) 302e5c31af7Sopenharmony_ci - Added alpha flags enum. 303e5c31af7Sopenharmony_ci - Added premultiplied alpha support. 304e5c31af7Sopenharmony_ci 305e5c31af7Sopenharmony_ci * Revision 16, 2015-09-08 (James Jones) 306e5c31af7Sopenharmony_ci - Added description section to the spec. 307e5c31af7Sopenharmony_ci - Added issues 16 - 18. 308e5c31af7Sopenharmony_ci 309e5c31af7Sopenharmony_ci * Revision 17, 2015-10-02 (James Jones) 310e5c31af7Sopenharmony_ci - Planes are now a property of the entire device rather than individual 311e5c31af7Sopenharmony_ci displays. 312e5c31af7Sopenharmony_ci This allows planes to be moved between multiple displays on devices 313e5c31af7Sopenharmony_ci that support it. 314e5c31af7Sopenharmony_ci - Added a function to create a VkSurfaceKHR object describing a display 315e5c31af7Sopenharmony_ci plane and mode to align with the new per-platform surface creation 316e5c31af7Sopenharmony_ci conventions. 317e5c31af7Sopenharmony_ci - Removed detailed mode timing data. 318e5c31af7Sopenharmony_ci It was agreed that the mode extents and refresh rate are sufficient for 319e5c31af7Sopenharmony_ci current use cases. 320e5c31af7Sopenharmony_ci Other information could be added back in as an extension if it is 321e5c31af7Sopenharmony_ci needed in the future. 322e5c31af7Sopenharmony_ci - Added support for smart/persistent/buffered display devices. 323e5c31af7Sopenharmony_ci 324e5c31af7Sopenharmony_ci * Revision 18, 2015-10-26 (Ian Elliott) 325e5c31af7Sopenharmony_ci - Renamed from VK_EXT_KHR_display to VK_KHR_display. 326e5c31af7Sopenharmony_ci 327e5c31af7Sopenharmony_ci * Revision 19, 2015-11-02 (James Jones) 328e5c31af7Sopenharmony_ci - Updated example code to match revision 17 changes. 329e5c31af7Sopenharmony_ci 330e5c31af7Sopenharmony_ci * Revision 20, 2015-11-03 (Daniel Rakos) 331e5c31af7Sopenharmony_ci - Added allocation callbacks to creation functions. 332e5c31af7Sopenharmony_ci 333e5c31af7Sopenharmony_ci * Revision 21, 2015-11-10 (Jesse Hall) 334e5c31af7Sopenharmony_ci - Added VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR, and use 335e5c31af7Sopenharmony_ci VkDisplayPlaneAlphaFlagBitsKHR for 336e5c31af7Sopenharmony_ci VkDisplayPlanePropertiesKHR::alphaMode instead of 337e5c31af7Sopenharmony_ci VkDisplayPlaneAlphaFlagsKHR, since it only represents one mode. 338e5c31af7Sopenharmony_ci - Added reserved flags bitmask to VkDisplayPlanePropertiesKHR. 339e5c31af7Sopenharmony_ci - Use VkSurfaceTransformFlagBitsKHR instead of obsolete 340e5c31af7Sopenharmony_ci VkSurfaceTransformKHR. 341e5c31af7Sopenharmony_ci - Renamed vkGetDisplayPlaneSupportedDisplaysKHR parameters for clarity. 342e5c31af7Sopenharmony_ci 343e5c31af7Sopenharmony_ci * Revision 22, 2015-12-18 (James Jones) 344e5c31af7Sopenharmony_ci - Added missing "`planeIndex`" parameter to 345e5c31af7Sopenharmony_ci vkGetDisplayPlaneSupportedDisplaysKHR() 346e5c31af7Sopenharmony_ci 347e5c31af7Sopenharmony_ci * Revision 23, 2017-03-13 (James Jones) 348e5c31af7Sopenharmony_ci - Closed all remaining issues. 349e5c31af7Sopenharmony_ci The specification and implementations have been shipping with the 350e5c31af7Sopenharmony_ci proposed resolutions for some time now. 351e5c31af7Sopenharmony_ci - Removed the sample code and noted it has been integrated into the 352e5c31af7Sopenharmony_ci official Vulkan SDK cube demo. 353