Home | History | Annotate | Download | only in vulkan
      1 #ifndef VULKAN_H_
      2 #define VULKAN_H_ 1
      3 
      4 #ifdef __cplusplus
      5 extern "C" {
      6 #endif
      7 
      8 /*
      9 ** Copyright (c) 2015-2017 The Khronos Group Inc.
     10 **
     11 ** Licensed under the Apache License, Version 2.0 (the "License");
     12 ** you may not use this file except in compliance with the License.
     13 ** You may obtain a copy of the License at
     14 **
     15 **     http://www.apache.org/licenses/LICENSE-2.0
     16 **
     17 ** Unless required by applicable law or agreed to in writing, software
     18 ** distributed under the License is distributed on an "AS IS" BASIS,
     19 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     20 ** See the License for the specific language governing permissions and
     21 ** limitations under the License.
     22 */
     23 
     24 /*
     25 ** This header is generated from the Khronos Vulkan XML API Registry.
     26 **
     27 */
     28 
     29 /*
     30  * Below this point is based on the original Khronos vulkan.h header, but simplified for use in Skia
     31  * when we are not building with a Vulkan backend, but still need the type declarations for compiling.
     32  */
     33 
     34 #define VK_VERSION_1_0 1
     35 #include "vk_platform.h"
     36 
     37 #define VK_MAKE_VERSION(major, minor, patch) \
     38     (((major) << 22) | ((minor) << 12) | (patch))
     39 
     40 // DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead.
     41 //#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0)
     42 
     43 // Vulkan 1.0 version number
     44 #define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)
     45 
     46 #define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22)
     47 #define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
     48 #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
     49 // Version of this file
     50 #define VK_HEADER_VERSION 46
     51 
     52 
     53 #define VK_NULL_HANDLE 0
     54 
     55 
     56 
     57 #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
     58 
     59 
     60 #if !defined(VK_DEFINE_NON_DISPATCHABLE_HANDLE)
     61 #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
     62         #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
     63 #else
     64         #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
     65 #endif
     66 #endif
     67 
     68 
     69 
     70 typedef uint32_t VkFlags;
     71 typedef uint32_t VkBool32;
     72 typedef uint64_t VkDeviceSize;
     73 typedef uint32_t VkSampleMask;
     74 
     75 VK_DEFINE_HANDLE(VkInstance)
     76 VK_DEFINE_HANDLE(VkPhysicalDevice)
     77 VK_DEFINE_HANDLE(VkDevice)
     78 VK_DEFINE_HANDLE(VkQueue)
     79 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore)
     80 VK_DEFINE_HANDLE(VkCommandBuffer)
     81 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence)
     82 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory)
     83 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer)
     84 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage)
     85 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent)
     86 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool)
     87 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView)
     88 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView)
     89 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule)
     90 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache)
     91 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout)
     92 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass)
     93 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline)
     94 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout)
     95 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler)
     96 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool)
     97 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet)
     98 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer)
     99 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool)
    100 
    101 #define VK_LOD_CLAMP_NONE                 1000.0f
    102 #define VK_REMAINING_MIP_LEVELS           (~0U)
    103 #define VK_REMAINING_ARRAY_LAYERS         (~0U)
    104 #define VK_WHOLE_SIZE                     (~0ULL)
    105 #define VK_ATTACHMENT_UNUSED              (~0U)
    106 #define VK_TRUE                           1
    107 #define VK_FALSE                          0
    108 #define VK_QUEUE_FAMILY_IGNORED           (~0U)
    109 #define VK_SUBPASS_EXTERNAL               (~0U)
    110 #define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE  256
    111 #define VK_UUID_SIZE                      16
    112 #define VK_MAX_MEMORY_TYPES               32
    113 #define VK_MAX_MEMORY_HEAPS               16
    114 #define VK_MAX_EXTENSION_NAME_SIZE        256
    115 #define VK_MAX_DESCRIPTION_SIZE           256
    116 
    117 
    118 typedef enum VkPipelineCacheHeaderVersion {
    119     VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
    120     VK_PIPELINE_CACHE_HEADER_VERSION_BEGIN_RANGE = VK_PIPELINE_CACHE_HEADER_VERSION_ONE,
    121     VK_PIPELINE_CACHE_HEADER_VERSION_END_RANGE = VK_PIPELINE_CACHE_HEADER_VERSION_ONE,
    122     VK_PIPELINE_CACHE_HEADER_VERSION_RANGE_SIZE = (VK_PIPELINE_CACHE_HEADER_VERSION_ONE - VK_PIPELINE_CACHE_HEADER_VERSION_ONE + 1),
    123     VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF
    124 } VkPipelineCacheHeaderVersion;
    125 
    126 typedef enum VkResult {
    127     VK_SUCCESS = 0,
    128     VK_NOT_READY = 1,
    129     VK_TIMEOUT = 2,
    130     VK_EVENT_SET = 3,
    131     VK_EVENT_RESET = 4,
    132     VK_INCOMPLETE = 5,
    133     VK_ERROR_OUT_OF_HOST_MEMORY = -1,
    134     VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
    135     VK_ERROR_INITIALIZATION_FAILED = -3,
    136     VK_ERROR_DEVICE_LOST = -4,
    137     VK_ERROR_MEMORY_MAP_FAILED = -5,
    138     VK_ERROR_LAYER_NOT_PRESENT = -6,
    139     VK_ERROR_EXTENSION_NOT_PRESENT = -7,
    140     VK_ERROR_FEATURE_NOT_PRESENT = -8,
    141     VK_ERROR_INCOMPATIBLE_DRIVER = -9,
    142     VK_ERROR_TOO_MANY_OBJECTS = -10,
    143     VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
    144     VK_ERROR_FRAGMENTED_POOL = -12,
    145     VK_ERROR_SURFACE_LOST_KHR = -1000000000,
    146     VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
    147     VK_SUBOPTIMAL_KHR = 1000001003,
    148     VK_ERROR_OUT_OF_DATE_KHR = -1000001004,
    149     VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
    150     VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
    151     VK_ERROR_INVALID_SHADER_NV = -1000012000,
    152     VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000,
    153     VK_ERROR_INVALID_EXTERNAL_HANDLE_KHX = -1000072003,
    154     VK_RESULT_BEGIN_RANGE = VK_ERROR_FRAGMENTED_POOL,
    155     VK_RESULT_END_RANGE = VK_INCOMPLETE,
    156     VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FRAGMENTED_POOL + 1),
    157     VK_RESULT_MAX_ENUM = 0x7FFFFFFF
    158 } VkResult;
    159 
    160 typedef enum VkStructureType {
    161     VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
    162     VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
    163     VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
    164     VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
    165     VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
    166     VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
    167     VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
    168     VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
    169     VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
    170     VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
    171     VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
    172     VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
    173     VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
    174     VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
    175     VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
    176     VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
    177     VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
    178     VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
    179     VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
    180     VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
    181     VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
    182     VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
    183     VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
    184     VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
    185     VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
    186     VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
    187     VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
    188     VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
    189     VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
    190     VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
    191     VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
    192     VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
    193     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
    194     VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
    195     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
    196     VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
    197     VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
    198     VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
    199     VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
    200     VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
    201     VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
    202     VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
    203     VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
    204     VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
    205     VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
    206     VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
    207     VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
    208     VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
    209     VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
    210     VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
    211     VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
    212     VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
    213     VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
    214     VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000,
    215     VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
    216     VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
    217     VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
    218     VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000,
    219     VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
    220     VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
    221     VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
    222     VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,
    223     VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,
    224     VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,
    225     VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,
    226     VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
    227     VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
    228     VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
    229     VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX = 1000053000,
    230     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX = 1000053001,
    231     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX = 1000053002,
    232     VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
    233     VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,
    234     VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
    235     VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
    236     VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
    237     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000,
    238     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001,
    239     VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002,
    240     VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003,
    241     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004,
    242     VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005,
    243     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006,
    244     VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007,
    245     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008,
    246     VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX = 1000060000,
    247     VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX = 1000060001,
    248     VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX = 1000060002,
    249     VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX = 1000060003,
    250     VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX = 1000060004,
    251     VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX = 1000060005,
    252     VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX = 1000060006,
    253     VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX = 1000060007,
    254     VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX = 1000060008,
    255     VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX = 1000060009,
    256     VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX = 1000060010,
    257     VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX = 1000060011,
    258     VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX = 1000060012,
    259     VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
    260     VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000,
    261     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX = 1000070000,
    262     VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX = 1000070001,
    263     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHX = 1000071000,
    264     VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHX = 1000071001,
    265     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHX = 1000071002,
    266     VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHX = 1000071003,
    267     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHX = 1000071004,
    268     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHX = 1000071005,
    269     VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHX = 1000071006,
    270     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHX = 1000071007,
    271     VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHX = 1000072000,
    272     VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHX = 1000072001,
    273     VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHX = 1000072002,
    274     VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHX = 1000073000,
    275     VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHX = 1000073001,
    276     VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHX = 1000073002,
    277     VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHX = 1000074000,
    278     VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHX = 1000074001,
    279     VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHX = 1000075000,
    280     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHX = 1000076000,
    281     VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHX = 1000076001,
    282     VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHX = 1000077000,
    283     VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX = 1000078000,
    284     VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX = 1000078001,
    285     VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHX = 1000078002,
    286     VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHX = 1000079000,
    287     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000,
    288     VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
    289     VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000,
    290     VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
    291     VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
    292     VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = 1000086002,
    293     VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = 1000086003,
    294     VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004,
    295     VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005,
    296     VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000,
    297     VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000,
    298     VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000,
    299     VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001,
    300     VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002,
    301     VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,
    302     VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000,
    303     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000,
    304     VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000,
    305     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,
    306     VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,
    307     VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
    308     VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000,
    309     VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000,
    310     VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
    311     VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
    312     VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
    313     VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
    314 } VkStructureType;
    315 
    316 typedef enum VkSystemAllocationScope {
    317     VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,
    318     VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,
    319     VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,
    320     VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,
    321     VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4,
    322     VK_SYSTEM_ALLOCATION_SCOPE_BEGIN_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
    323     VK_SYSTEM_ALLOCATION_SCOPE_END_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE,
    324     VK_SYSTEM_ALLOCATION_SCOPE_RANGE_SIZE = (VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE - VK_SYSTEM_ALLOCATION_SCOPE_COMMAND + 1),
    325     VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF
    326 } VkSystemAllocationScope;
    327 
    328 typedef enum VkInternalAllocationType {
    329     VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,
    330     VK_INTERNAL_ALLOCATION_TYPE_BEGIN_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE,
    331     VK_INTERNAL_ALLOCATION_TYPE_END_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE,
    332     VK_INTERNAL_ALLOCATION_TYPE_RANGE_SIZE = (VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE - VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE + 1),
    333     VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF
    334 } VkInternalAllocationType;
    335 
    336 typedef enum VkFormat {
    337     VK_FORMAT_UNDEFINED = 0,
    338     VK_FORMAT_R4G4_UNORM_PACK8 = 1,
    339     VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
    340     VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
    341     VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
    342     VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
    343     VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
    344     VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
    345     VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
    346     VK_FORMAT_R8_UNORM = 9,
    347     VK_FORMAT_R8_SNORM = 10,
    348     VK_FORMAT_R8_USCALED = 11,
    349     VK_FORMAT_R8_SSCALED = 12,
    350     VK_FORMAT_R8_UINT = 13,
    351     VK_FORMAT_R8_SINT = 14,
    352     VK_FORMAT_R8_SRGB = 15,
    353     VK_FORMAT_R8G8_UNORM = 16,
    354     VK_FORMAT_R8G8_SNORM = 17,
    355     VK_FORMAT_R8G8_USCALED = 18,
    356     VK_FORMAT_R8G8_SSCALED = 19,
    357     VK_FORMAT_R8G8_UINT = 20,
    358     VK_FORMAT_R8G8_SINT = 21,
    359     VK_FORMAT_R8G8_SRGB = 22,
    360     VK_FORMAT_R8G8B8_UNORM = 23,
    361     VK_FORMAT_R8G8B8_SNORM = 24,
    362     VK_FORMAT_R8G8B8_USCALED = 25,
    363     VK_FORMAT_R8G8B8_SSCALED = 26,
    364     VK_FORMAT_R8G8B8_UINT = 27,
    365     VK_FORMAT_R8G8B8_SINT = 28,
    366     VK_FORMAT_R8G8B8_SRGB = 29,
    367     VK_FORMAT_B8G8R8_UNORM = 30,
    368     VK_FORMAT_B8G8R8_SNORM = 31,
    369     VK_FORMAT_B8G8R8_USCALED = 32,
    370     VK_FORMAT_B8G8R8_SSCALED = 33,
    371     VK_FORMAT_B8G8R8_UINT = 34,
    372     VK_FORMAT_B8G8R8_SINT = 35,
    373     VK_FORMAT_B8G8R8_SRGB = 36,
    374     VK_FORMAT_R8G8B8A8_UNORM = 37,
    375     VK_FORMAT_R8G8B8A8_SNORM = 38,
    376     VK_FORMAT_R8G8B8A8_USCALED = 39,
    377     VK_FORMAT_R8G8B8A8_SSCALED = 40,
    378     VK_FORMAT_R8G8B8A8_UINT = 41,
    379     VK_FORMAT_R8G8B8A8_SINT = 42,
    380     VK_FORMAT_R8G8B8A8_SRGB = 43,
    381     VK_FORMAT_B8G8R8A8_UNORM = 44,
    382     VK_FORMAT_B8G8R8A8_SNORM = 45,
    383     VK_FORMAT_B8G8R8A8_USCALED = 46,
    384     VK_FORMAT_B8G8R8A8_SSCALED = 47,
    385     VK_FORMAT_B8G8R8A8_UINT = 48,
    386     VK_FORMAT_B8G8R8A8_SINT = 49,
    387     VK_FORMAT_B8G8R8A8_SRGB = 50,
    388     VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
    389     VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
    390     VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
    391     VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
    392     VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
    393     VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
    394     VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
    395     VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
    396     VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
    397     VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
    398     VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
    399     VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
    400     VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
    401     VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
    402     VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
    403     VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
    404     VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
    405     VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
    406     VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
    407     VK_FORMAT_R16_UNORM = 70,
    408     VK_FORMAT_R16_SNORM = 71,
    409     VK_FORMAT_R16_USCALED = 72,
    410     VK_FORMAT_R16_SSCALED = 73,
    411     VK_FORMAT_R16_UINT = 74,
    412     VK_FORMAT_R16_SINT = 75,
    413     VK_FORMAT_R16_SFLOAT = 76,
    414     VK_FORMAT_R16G16_UNORM = 77,
    415     VK_FORMAT_R16G16_SNORM = 78,
    416     VK_FORMAT_R16G16_USCALED = 79,
    417     VK_FORMAT_R16G16_SSCALED = 80,
    418     VK_FORMAT_R16G16_UINT = 81,
    419     VK_FORMAT_R16G16_SINT = 82,
    420     VK_FORMAT_R16G16_SFLOAT = 83,
    421     VK_FORMAT_R16G16B16_UNORM = 84,
    422     VK_FORMAT_R16G16B16_SNORM = 85,
    423     VK_FORMAT_R16G16B16_USCALED = 86,
    424     VK_FORMAT_R16G16B16_SSCALED = 87,
    425     VK_FORMAT_R16G16B16_UINT = 88,
    426     VK_FORMAT_R16G16B16_SINT = 89,
    427     VK_FORMAT_R16G16B16_SFLOAT = 90,
    428     VK_FORMAT_R16G16B16A16_UNORM = 91,
    429     VK_FORMAT_R16G16B16A16_SNORM = 92,
    430     VK_FORMAT_R16G16B16A16_USCALED = 93,
    431     VK_FORMAT_R16G16B16A16_SSCALED = 94,
    432     VK_FORMAT_R16G16B16A16_UINT = 95,
    433     VK_FORMAT_R16G16B16A16_SINT = 96,
    434     VK_FORMAT_R16G16B16A16_SFLOAT = 97,
    435     VK_FORMAT_R32_UINT = 98,
    436     VK_FORMAT_R32_SINT = 99,
    437     VK_FORMAT_R32_SFLOAT = 100,
    438     VK_FORMAT_R32G32_UINT = 101,
    439     VK_FORMAT_R32G32_SINT = 102,
    440     VK_FORMAT_R32G32_SFLOAT = 103,
    441     VK_FORMAT_R32G32B32_UINT = 104,
    442     VK_FORMAT_R32G32B32_SINT = 105,
    443     VK_FORMAT_R32G32B32_SFLOAT = 106,
    444     VK_FORMAT_R32G32B32A32_UINT = 107,
    445     VK_FORMAT_R32G32B32A32_SINT = 108,
    446     VK_FORMAT_R32G32B32A32_SFLOAT = 109,
    447     VK_FORMAT_R64_UINT = 110,
    448     VK_FORMAT_R64_SINT = 111,
    449     VK_FORMAT_R64_SFLOAT = 112,
    450     VK_FORMAT_R64G64_UINT = 113,
    451     VK_FORMAT_R64G64_SINT = 114,
    452     VK_FORMAT_R64G64_SFLOAT = 115,
    453     VK_FORMAT_R64G64B64_UINT = 116,
    454     VK_FORMAT_R64G64B64_SINT = 117,
    455     VK_FORMAT_R64G64B64_SFLOAT = 118,
    456     VK_FORMAT_R64G64B64A64_UINT = 119,
    457     VK_FORMAT_R64G64B64A64_SINT = 120,
    458     VK_FORMAT_R64G64B64A64_SFLOAT = 121,
    459     VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
    460     VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
    461     VK_FORMAT_D16_UNORM = 124,
    462     VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
    463     VK_FORMAT_D32_SFLOAT = 126,
    464     VK_FORMAT_S8_UINT = 127,
    465     VK_FORMAT_D16_UNORM_S8_UINT = 128,
    466     VK_FORMAT_D24_UNORM_S8_UINT = 129,
    467     VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
    468     VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
    469     VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
    470     VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
    471     VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
    472     VK_FORMAT_BC2_UNORM_BLOCK = 135,
    473     VK_FORMAT_BC2_SRGB_BLOCK = 136,
    474     VK_FORMAT_BC3_UNORM_BLOCK = 137,
    475     VK_FORMAT_BC3_SRGB_BLOCK = 138,
    476     VK_FORMAT_BC4_UNORM_BLOCK = 139,
    477     VK_FORMAT_BC4_SNORM_BLOCK = 140,
    478     VK_FORMAT_BC5_UNORM_BLOCK = 141,
    479     VK_FORMAT_BC5_SNORM_BLOCK = 142,
    480     VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
    481     VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
    482     VK_FORMAT_BC7_UNORM_BLOCK = 145,
    483     VK_FORMAT_BC7_SRGB_BLOCK = 146,
    484     VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
    485     VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
    486     VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
    487     VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
    488     VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
    489     VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
    490     VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
    491     VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
    492     VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
    493     VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
    494     VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
    495     VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
    496     VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
    497     VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
    498     VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
    499     VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
    500     VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
    501     VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
    502     VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
    503     VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
    504     VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
    505     VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
    506     VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
    507     VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
    508     VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
    509     VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
    510     VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
    511     VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
    512     VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
    513     VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
    514     VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
    515     VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
    516     VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
    517     VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
    518     VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
    519     VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
    520     VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
    521     VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
    522     VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
    523     VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
    524     VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
    525     VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
    526     VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
    527     VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
    528     VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
    529     VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
    530     VK_FORMAT_BEGIN_RANGE = VK_FORMAT_UNDEFINED,
    531     VK_FORMAT_END_RANGE = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
    532     VK_FORMAT_RANGE_SIZE = (VK_FORMAT_ASTC_12x12_SRGB_BLOCK - VK_FORMAT_UNDEFINED + 1),
    533     VK_FORMAT_MAX_ENUM = 0x7FFFFFFF
    534 } VkFormat;
    535 
    536 typedef enum VkImageType {
    537     VK_IMAGE_TYPE_1D = 0,
    538     VK_IMAGE_TYPE_2D = 1,
    539     VK_IMAGE_TYPE_3D = 2,
    540     VK_IMAGE_TYPE_BEGIN_RANGE = VK_IMAGE_TYPE_1D,
    541     VK_IMAGE_TYPE_END_RANGE = VK_IMAGE_TYPE_3D,
    542     VK_IMAGE_TYPE_RANGE_SIZE = (VK_IMAGE_TYPE_3D - VK_IMAGE_TYPE_1D + 1),
    543     VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF
    544 } VkImageType;
    545 
    546 typedef enum VkImageTiling {
    547     VK_IMAGE_TILING_OPTIMAL = 0,
    548     VK_IMAGE_TILING_LINEAR = 1,
    549     VK_IMAGE_TILING_BEGIN_RANGE = VK_IMAGE_TILING_OPTIMAL,
    550     VK_IMAGE_TILING_END_RANGE = VK_IMAGE_TILING_LINEAR,
    551     VK_IMAGE_TILING_RANGE_SIZE = (VK_IMAGE_TILING_LINEAR - VK_IMAGE_TILING_OPTIMAL + 1),
    552     VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF
    553 } VkImageTiling;
    554 
    555 typedef enum VkPhysicalDeviceType {
    556     VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,
    557     VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,
    558     VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,
    559     VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,
    560     VK_PHYSICAL_DEVICE_TYPE_CPU = 4,
    561     VK_PHYSICAL_DEVICE_TYPE_BEGIN_RANGE = VK_PHYSICAL_DEVICE_TYPE_OTHER,
    562     VK_PHYSICAL_DEVICE_TYPE_END_RANGE = VK_PHYSICAL_DEVICE_TYPE_CPU,
    563     VK_PHYSICAL_DEVICE_TYPE_RANGE_SIZE = (VK_PHYSICAL_DEVICE_TYPE_CPU - VK_PHYSICAL_DEVICE_TYPE_OTHER + 1),
    564     VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF
    565 } VkPhysicalDeviceType;
    566 
    567 typedef enum VkQueryType {
    568     VK_QUERY_TYPE_OCCLUSION = 0,
    569     VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
    570     VK_QUERY_TYPE_TIMESTAMP = 2,
    571     VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION,
    572     VK_QUERY_TYPE_END_RANGE = VK_QUERY_TYPE_TIMESTAMP,
    573     VK_QUERY_TYPE_RANGE_SIZE = (VK_QUERY_TYPE_TIMESTAMP - VK_QUERY_TYPE_OCCLUSION + 1),
    574     VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF
    575 } VkQueryType;
    576 
    577 typedef enum VkSharingMode {
    578     VK_SHARING_MODE_EXCLUSIVE = 0,
    579     VK_SHARING_MODE_CONCURRENT = 1,
    580     VK_SHARING_MODE_BEGIN_RANGE = VK_SHARING_MODE_EXCLUSIVE,
    581     VK_SHARING_MODE_END_RANGE = VK_SHARING_MODE_CONCURRENT,
    582     VK_SHARING_MODE_RANGE_SIZE = (VK_SHARING_MODE_CONCURRENT - VK_SHARING_MODE_EXCLUSIVE + 1),
    583     VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF
    584 } VkSharingMode;
    585 
    586 typedef enum VkImageLayout {
    587     VK_IMAGE_LAYOUT_UNDEFINED = 0,
    588     VK_IMAGE_LAYOUT_GENERAL = 1,
    589     VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,
    590     VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
    591     VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
    592     VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,
    593     VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,
    594     VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
    595     VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
    596     VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
    597     VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED,
    598     VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_PREINITIALIZED,
    599     VK_IMAGE_LAYOUT_RANGE_SIZE = (VK_IMAGE_LAYOUT_PREINITIALIZED - VK_IMAGE_LAYOUT_UNDEFINED + 1),
    600     VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF
    601 } VkImageLayout;
    602 
    603 typedef enum VkImageViewType {
    604     VK_IMAGE_VIEW_TYPE_1D = 0,
    605     VK_IMAGE_VIEW_TYPE_2D = 1,
    606     VK_IMAGE_VIEW_TYPE_3D = 2,
    607     VK_IMAGE_VIEW_TYPE_CUBE = 3,
    608     VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4,
    609     VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5,
    610     VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6,
    611     VK_IMAGE_VIEW_TYPE_BEGIN_RANGE = VK_IMAGE_VIEW_TYPE_1D,
    612     VK_IMAGE_VIEW_TYPE_END_RANGE = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY,
    613     VK_IMAGE_VIEW_TYPE_RANGE_SIZE = (VK_IMAGE_VIEW_TYPE_CUBE_ARRAY - VK_IMAGE_VIEW_TYPE_1D + 1),
    614     VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF
    615 } VkImageViewType;
    616 
    617 typedef enum VkComponentSwizzle {
    618     VK_COMPONENT_SWIZZLE_IDENTITY = 0,
    619     VK_COMPONENT_SWIZZLE_ZERO = 1,
    620     VK_COMPONENT_SWIZZLE_ONE = 2,
    621     VK_COMPONENT_SWIZZLE_R = 3,
    622     VK_COMPONENT_SWIZZLE_G = 4,
    623     VK_COMPONENT_SWIZZLE_B = 5,
    624     VK_COMPONENT_SWIZZLE_A = 6,
    625     VK_COMPONENT_SWIZZLE_BEGIN_RANGE = VK_COMPONENT_SWIZZLE_IDENTITY,
    626     VK_COMPONENT_SWIZZLE_END_RANGE = VK_COMPONENT_SWIZZLE_A,
    627     VK_COMPONENT_SWIZZLE_RANGE_SIZE = (VK_COMPONENT_SWIZZLE_A - VK_COMPONENT_SWIZZLE_IDENTITY + 1),
    628     VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF
    629 } VkComponentSwizzle;
    630 
    631 typedef enum VkVertexInputRate {
    632     VK_VERTEX_INPUT_RATE_VERTEX = 0,
    633     VK_VERTEX_INPUT_RATE_INSTANCE = 1,
    634     VK_VERTEX_INPUT_RATE_BEGIN_RANGE = VK_VERTEX_INPUT_RATE_VERTEX,
    635     VK_VERTEX_INPUT_RATE_END_RANGE = VK_VERTEX_INPUT_RATE_INSTANCE,
    636     VK_VERTEX_INPUT_RATE_RANGE_SIZE = (VK_VERTEX_INPUT_RATE_INSTANCE - VK_VERTEX_INPUT_RATE_VERTEX + 1),
    637     VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF
    638 } VkVertexInputRate;
    639 
    640 typedef enum VkPrimitiveTopology {
    641     VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
    642     VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,
    643     VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,
    644     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,
    645     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,
    646     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,
    647     VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,
    648     VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
    649     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
    650     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
    651     VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,
    652     VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
    653     VK_PRIMITIVE_TOPOLOGY_END_RANGE = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST,
    654     VK_PRIMITIVE_TOPOLOGY_RANGE_SIZE = (VK_PRIMITIVE_TOPOLOGY_PATCH_LIST - VK_PRIMITIVE_TOPOLOGY_POINT_LIST + 1),
    655     VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF
    656 } VkPrimitiveTopology;
    657 
    658 typedef enum VkPolygonMode {
    659     VK_POLYGON_MODE_FILL = 0,
    660     VK_POLYGON_MODE_LINE = 1,
    661     VK_POLYGON_MODE_POINT = 2,
    662     VK_POLYGON_MODE_BEGIN_RANGE = VK_POLYGON_MODE_FILL,
    663     VK_POLYGON_MODE_END_RANGE = VK_POLYGON_MODE_POINT,
    664     VK_POLYGON_MODE_RANGE_SIZE = (VK_POLYGON_MODE_POINT - VK_POLYGON_MODE_FILL + 1),
    665     VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF
    666 } VkPolygonMode;
    667 
    668 typedef enum VkFrontFace {
    669     VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
    670     VK_FRONT_FACE_CLOCKWISE = 1,
    671     VK_FRONT_FACE_BEGIN_RANGE = VK_FRONT_FACE_COUNTER_CLOCKWISE,
    672     VK_FRONT_FACE_END_RANGE = VK_FRONT_FACE_CLOCKWISE,
    673     VK_FRONT_FACE_RANGE_SIZE = (VK_FRONT_FACE_CLOCKWISE - VK_FRONT_FACE_COUNTER_CLOCKWISE + 1),
    674     VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF
    675 } VkFrontFace;
    676 
    677 typedef enum VkCompareOp {
    678     VK_COMPARE_OP_NEVER = 0,
    679     VK_COMPARE_OP_LESS = 1,
    680     VK_COMPARE_OP_EQUAL = 2,
    681     VK_COMPARE_OP_LESS_OR_EQUAL = 3,
    682     VK_COMPARE_OP_GREATER = 4,
    683     VK_COMPARE_OP_NOT_EQUAL = 5,
    684     VK_COMPARE_OP_GREATER_OR_EQUAL = 6,
    685     VK_COMPARE_OP_ALWAYS = 7,
    686     VK_COMPARE_OP_BEGIN_RANGE = VK_COMPARE_OP_NEVER,
    687     VK_COMPARE_OP_END_RANGE = VK_COMPARE_OP_ALWAYS,
    688     VK_COMPARE_OP_RANGE_SIZE = (VK_COMPARE_OP_ALWAYS - VK_COMPARE_OP_NEVER + 1),
    689     VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF
    690 } VkCompareOp;
    691 
    692 typedef enum VkStencilOp {
    693     VK_STENCIL_OP_KEEP = 0,
    694     VK_STENCIL_OP_ZERO = 1,
    695     VK_STENCIL_OP_REPLACE = 2,
    696     VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,
    697     VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,
    698     VK_STENCIL_OP_INVERT = 5,
    699     VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,
    700     VK_STENCIL_OP_DECREMENT_AND_WRAP = 7,
    701     VK_STENCIL_OP_BEGIN_RANGE = VK_STENCIL_OP_KEEP,
    702     VK_STENCIL_OP_END_RANGE = VK_STENCIL_OP_DECREMENT_AND_WRAP,
    703     VK_STENCIL_OP_RANGE_SIZE = (VK_STENCIL_OP_DECREMENT_AND_WRAP - VK_STENCIL_OP_KEEP + 1),
    704     VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF
    705 } VkStencilOp;
    706 
    707 typedef enum VkLogicOp {
    708     VK_LOGIC_OP_CLEAR = 0,
    709     VK_LOGIC_OP_AND = 1,
    710     VK_LOGIC_OP_AND_REVERSE = 2,
    711     VK_LOGIC_OP_COPY = 3,
    712     VK_LOGIC_OP_AND_INVERTED = 4,
    713     VK_LOGIC_OP_NO_OP = 5,
    714     VK_LOGIC_OP_XOR = 6,
    715     VK_LOGIC_OP_OR = 7,
    716     VK_LOGIC_OP_NOR = 8,
    717     VK_LOGIC_OP_EQUIVALENT = 9,
    718     VK_LOGIC_OP_INVERT = 10,
    719     VK_LOGIC_OP_OR_REVERSE = 11,
    720     VK_LOGIC_OP_COPY_INVERTED = 12,
    721     VK_LOGIC_OP_OR_INVERTED = 13,
    722     VK_LOGIC_OP_NAND = 14,
    723     VK_LOGIC_OP_SET = 15,
    724     VK_LOGIC_OP_BEGIN_RANGE = VK_LOGIC_OP_CLEAR,
    725     VK_LOGIC_OP_END_RANGE = VK_LOGIC_OP_SET,
    726     VK_LOGIC_OP_RANGE_SIZE = (VK_LOGIC_OP_SET - VK_LOGIC_OP_CLEAR + 1),
    727     VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF
    728 } VkLogicOp;
    729 
    730 typedef enum VkBlendFactor {
    731     VK_BLEND_FACTOR_ZERO = 0,
    732     VK_BLEND_FACTOR_ONE = 1,
    733     VK_BLEND_FACTOR_SRC_COLOR = 2,
    734     VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,
    735     VK_BLEND_FACTOR_DST_COLOR = 4,
    736     VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,
    737     VK_BLEND_FACTOR_SRC_ALPHA = 6,
    738     VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,
    739     VK_BLEND_FACTOR_DST_ALPHA = 8,
    740     VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,
    741     VK_BLEND_FACTOR_CONSTANT_COLOR = 10,
    742     VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,
    743     VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,
    744     VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,
    745     VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,
    746     VK_BLEND_FACTOR_SRC1_COLOR = 15,
    747     VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,
    748     VK_BLEND_FACTOR_SRC1_ALPHA = 17,
    749     VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18,
    750     VK_BLEND_FACTOR_BEGIN_RANGE = VK_BLEND_FACTOR_ZERO,
    751     VK_BLEND_FACTOR_END_RANGE = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA,
    752     VK_BLEND_FACTOR_RANGE_SIZE = (VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - VK_BLEND_FACTOR_ZERO + 1),
    753     VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF
    754 } VkBlendFactor;
    755 
    756 typedef enum VkBlendOp {
    757     VK_BLEND_OP_ADD = 0,
    758     VK_BLEND_OP_SUBTRACT = 1,
    759     VK_BLEND_OP_REVERSE_SUBTRACT = 2,
    760     VK_BLEND_OP_MIN = 3,
    761     VK_BLEND_OP_MAX = 4,
    762     VK_BLEND_OP_BEGIN_RANGE = VK_BLEND_OP_ADD,
    763     VK_BLEND_OP_END_RANGE = VK_BLEND_OP_MAX,
    764     VK_BLEND_OP_RANGE_SIZE = (VK_BLEND_OP_MAX - VK_BLEND_OP_ADD + 1),
    765     VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF
    766 } VkBlendOp;
    767 
    768 typedef enum VkDynamicState {
    769     VK_DYNAMIC_STATE_VIEWPORT = 0,
    770     VK_DYNAMIC_STATE_SCISSOR = 1,
    771     VK_DYNAMIC_STATE_LINE_WIDTH = 2,
    772     VK_DYNAMIC_STATE_DEPTH_BIAS = 3,
    773     VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,
    774     VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,
    775     VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,
    776     VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,
    777     VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
    778     VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000,
    779     VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
    780     VK_DYNAMIC_STATE_BEGIN_RANGE = VK_DYNAMIC_STATE_VIEWPORT,
    781     VK_DYNAMIC_STATE_END_RANGE = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
    782     VK_DYNAMIC_STATE_RANGE_SIZE = (VK_DYNAMIC_STATE_STENCIL_REFERENCE - VK_DYNAMIC_STATE_VIEWPORT + 1),
    783     VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF
    784 } VkDynamicState;
    785 
    786 typedef enum VkFilter {
    787     VK_FILTER_NEAREST = 0,
    788     VK_FILTER_LINEAR = 1,
    789     VK_FILTER_CUBIC_IMG = 1000015000,
    790     VK_FILTER_BEGIN_RANGE = VK_FILTER_NEAREST,
    791     VK_FILTER_END_RANGE = VK_FILTER_LINEAR,
    792     VK_FILTER_RANGE_SIZE = (VK_FILTER_LINEAR - VK_FILTER_NEAREST + 1),
    793     VK_FILTER_MAX_ENUM = 0x7FFFFFFF
    794 } VkFilter;
    795 
    796 typedef enum VkSamplerMipmapMode {
    797     VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,
    798     VK_SAMPLER_MIPMAP_MODE_LINEAR = 1,
    799     VK_SAMPLER_MIPMAP_MODE_BEGIN_RANGE = VK_SAMPLER_MIPMAP_MODE_NEAREST,
    800     VK_SAMPLER_MIPMAP_MODE_END_RANGE = VK_SAMPLER_MIPMAP_MODE_LINEAR,
    801     VK_SAMPLER_MIPMAP_MODE_RANGE_SIZE = (VK_SAMPLER_MIPMAP_MODE_LINEAR - VK_SAMPLER_MIPMAP_MODE_NEAREST + 1),
    802     VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF
    803 } VkSamplerMipmapMode;
    804 
    805 typedef enum VkSamplerAddressMode {
    806     VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
    807     VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
    808     VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
    809     VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
    810     VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
    811     VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE = VK_SAMPLER_ADDRESS_MODE_REPEAT,
    812     VK_SAMPLER_ADDRESS_MODE_END_RANGE = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
    813     VK_SAMPLER_ADDRESS_MODE_RANGE_SIZE = (VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER - VK_SAMPLER_ADDRESS_MODE_REPEAT + 1),
    814     VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
    815 } VkSamplerAddressMode;
    816 
    817 typedef enum VkBorderColor {
    818     VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
    819     VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,
    820     VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,
    821     VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,
    822     VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,
    823     VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5,
    824     VK_BORDER_COLOR_BEGIN_RANGE = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
    825     VK_BORDER_COLOR_END_RANGE = VK_BORDER_COLOR_INT_OPAQUE_WHITE,
    826     VK_BORDER_COLOR_RANGE_SIZE = (VK_BORDER_COLOR_INT_OPAQUE_WHITE - VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK + 1),
    827     VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF
    828 } VkBorderColor;
    829 
    830 typedef enum VkDescriptorType {
    831     VK_DESCRIPTOR_TYPE_SAMPLER = 0,
    832     VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1,
    833     VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2,
    834     VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3,
    835     VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4,
    836     VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5,
    837     VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6,
    838     VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7,
    839     VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8,
    840     VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9,
    841     VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10,
    842     VK_DESCRIPTOR_TYPE_BEGIN_RANGE = VK_DESCRIPTOR_TYPE_SAMPLER,
    843     VK_DESCRIPTOR_TYPE_END_RANGE = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
    844     VK_DESCRIPTOR_TYPE_RANGE_SIZE = (VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT - VK_DESCRIPTOR_TYPE_SAMPLER + 1),
    845     VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF
    846 } VkDescriptorType;
    847 
    848 typedef enum VkAttachmentLoadOp {
    849     VK_ATTACHMENT_LOAD_OP_LOAD = 0,
    850     VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
    851     VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
    852     VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE = VK_ATTACHMENT_LOAD_OP_LOAD,
    853     VK_ATTACHMENT_LOAD_OP_END_RANGE = VK_ATTACHMENT_LOAD_OP_DONT_CARE,
    854     VK_ATTACHMENT_LOAD_OP_RANGE_SIZE = (VK_ATTACHMENT_LOAD_OP_DONT_CARE - VK_ATTACHMENT_LOAD_OP_LOAD + 1),
    855     VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF
    856 } VkAttachmentLoadOp;
    857 
    858 typedef enum VkAttachmentStoreOp {
    859     VK_ATTACHMENT_STORE_OP_STORE = 0,
    860     VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,
    861     VK_ATTACHMENT_STORE_OP_BEGIN_RANGE = VK_ATTACHMENT_STORE_OP_STORE,
    862     VK_ATTACHMENT_STORE_OP_END_RANGE = VK_ATTACHMENT_STORE_OP_DONT_CARE,
    863     VK_ATTACHMENT_STORE_OP_RANGE_SIZE = (VK_ATTACHMENT_STORE_OP_DONT_CARE - VK_ATTACHMENT_STORE_OP_STORE + 1),
    864     VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF
    865 } VkAttachmentStoreOp;
    866 
    867 typedef enum VkPipelineBindPoint {
    868     VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
    869     VK_PIPELINE_BIND_POINT_COMPUTE = 1,
    870     VK_PIPELINE_BIND_POINT_BEGIN_RANGE = VK_PIPELINE_BIND_POINT_GRAPHICS,
    871     VK_PIPELINE_BIND_POINT_END_RANGE = VK_PIPELINE_BIND_POINT_COMPUTE,
    872     VK_PIPELINE_BIND_POINT_RANGE_SIZE = (VK_PIPELINE_BIND_POINT_COMPUTE - VK_PIPELINE_BIND_POINT_GRAPHICS + 1),
    873     VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF
    874 } VkPipelineBindPoint;
    875 
    876 typedef enum VkCommandBufferLevel {
    877     VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
    878     VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,
    879     VK_COMMAND_BUFFER_LEVEL_BEGIN_RANGE = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
    880     VK_COMMAND_BUFFER_LEVEL_END_RANGE = VK_COMMAND_BUFFER_LEVEL_SECONDARY,
    881     VK_COMMAND_BUFFER_LEVEL_RANGE_SIZE = (VK_COMMAND_BUFFER_LEVEL_SECONDARY - VK_COMMAND_BUFFER_LEVEL_PRIMARY + 1),
    882     VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF
    883 } VkCommandBufferLevel;
    884 
    885 typedef enum VkIndexType {
    886     VK_INDEX_TYPE_UINT16 = 0,
    887     VK_INDEX_TYPE_UINT32 = 1,
    888     VK_INDEX_TYPE_BEGIN_RANGE = VK_INDEX_TYPE_UINT16,
    889     VK_INDEX_TYPE_END_RANGE = VK_INDEX_TYPE_UINT32,
    890     VK_INDEX_TYPE_RANGE_SIZE = (VK_INDEX_TYPE_UINT32 - VK_INDEX_TYPE_UINT16 + 1),
    891     VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF
    892 } VkIndexType;
    893 
    894 typedef enum VkSubpassContents {
    895     VK_SUBPASS_CONTENTS_INLINE = 0,
    896     VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
    897     VK_SUBPASS_CONTENTS_BEGIN_RANGE = VK_SUBPASS_CONTENTS_INLINE,
    898     VK_SUBPASS_CONTENTS_END_RANGE = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS,
    899     VK_SUBPASS_CONTENTS_RANGE_SIZE = (VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS - VK_SUBPASS_CONTENTS_INLINE + 1),
    900     VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF
    901 } VkSubpassContents;
    902 
    903 typedef VkFlags VkInstanceCreateFlags;
    904 
    905 typedef enum VkFormatFeatureFlagBits {
    906     VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
    907     VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002,
    908     VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004,
    909     VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008,
    910     VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010,
    911     VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020,
    912     VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040,
    913     VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080,
    914     VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100,
    915     VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200,
    916     VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400,
    917     VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800,
    918     VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
    919     VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
    920     VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 0x00004000,
    921     VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 0x00008000,
    922     VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    923 } VkFormatFeatureFlagBits;
    924 typedef VkFlags VkFormatFeatureFlags;
    925 
    926 typedef enum VkImageUsageFlagBits {
    927     VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001,
    928     VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002,
    929     VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004,
    930     VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008,
    931     VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010,
    932     VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020,
    933     VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040,
    934     VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080,
    935     VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    936 } VkImageUsageFlagBits;
    937 typedef VkFlags VkImageUsageFlags;
    938 
    939 typedef enum VkImageCreateFlagBits {
    940     VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001,
    941     VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
    942     VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
    943     VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008,
    944     VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010,
    945     VK_IMAGE_CREATE_BIND_SFR_BIT_KHX = 0x00000040,
    946     VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 0x00000020,
    947     VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    948 } VkImageCreateFlagBits;
    949 typedef VkFlags VkImageCreateFlags;
    950 
    951 typedef enum VkSampleCountFlagBits {
    952     VK_SAMPLE_COUNT_1_BIT = 0x00000001,
    953     VK_SAMPLE_COUNT_2_BIT = 0x00000002,
    954     VK_SAMPLE_COUNT_4_BIT = 0x00000004,
    955     VK_SAMPLE_COUNT_8_BIT = 0x00000008,
    956     VK_SAMPLE_COUNT_16_BIT = 0x00000010,
    957     VK_SAMPLE_COUNT_32_BIT = 0x00000020,
    958     VK_SAMPLE_COUNT_64_BIT = 0x00000040,
    959     VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    960 } VkSampleCountFlagBits;
    961 typedef VkFlags VkSampleCountFlags;
    962 
    963 typedef enum VkQueueFlagBits {
    964     VK_QUEUE_GRAPHICS_BIT = 0x00000001,
    965     VK_QUEUE_COMPUTE_BIT = 0x00000002,
    966     VK_QUEUE_TRANSFER_BIT = 0x00000004,
    967     VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
    968     VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    969 } VkQueueFlagBits;
    970 typedef VkFlags VkQueueFlags;
    971 
    972 typedef enum VkMemoryPropertyFlagBits {
    973     VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
    974     VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
    975     VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
    976     VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
    977     VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
    978     VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    979 } VkMemoryPropertyFlagBits;
    980 typedef VkFlags VkMemoryPropertyFlags;
    981 
    982 typedef enum VkMemoryHeapFlagBits {
    983     VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
    984     VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX = 0x00000002,
    985     VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    986 } VkMemoryHeapFlagBits;
    987 typedef VkFlags VkMemoryHeapFlags;
    988 typedef VkFlags VkDeviceCreateFlags;
    989 typedef VkFlags VkDeviceQueueCreateFlags;
    990 
    991 typedef enum VkPipelineStageFlagBits {
    992     VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001,
    993     VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002,
    994     VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004,
    995     VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008,
    996     VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010,
    997     VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020,
    998     VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040,
    999     VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080,
   1000     VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100,
   1001     VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200,
   1002     VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400,
   1003     VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800,
   1004     VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000,
   1005     VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
   1006     VK_PIPELINE_STAGE_HOST_BIT = 0x00004000,
   1007     VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000,
   1008     VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000,
   1009     VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000,
   1010     VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1011 } VkPipelineStageFlagBits;
   1012 typedef VkFlags VkPipelineStageFlags;
   1013 typedef VkFlags VkMemoryMapFlags;
   1014 
   1015 typedef enum VkImageAspectFlagBits {
   1016     VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
   1017     VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
   1018     VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
   1019     VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
   1020     VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1021 } VkImageAspectFlagBits;
   1022 typedef VkFlags VkImageAspectFlags;
   1023 
   1024 typedef enum VkSparseImageFormatFlagBits {
   1025     VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001,
   1026     VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
   1027     VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,
   1028     VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1029 } VkSparseImageFormatFlagBits;
   1030 typedef VkFlags VkSparseImageFormatFlags;
   1031 
   1032 typedef enum VkSparseMemoryBindFlagBits {
   1033     VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
   1034     VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1035 } VkSparseMemoryBindFlagBits;
   1036 typedef VkFlags VkSparseMemoryBindFlags;
   1037 
   1038 typedef enum VkFenceCreateFlagBits {
   1039     VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
   1040     VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1041 } VkFenceCreateFlagBits;
   1042 typedef VkFlags VkFenceCreateFlags;
   1043 typedef VkFlags VkSemaphoreCreateFlags;
   1044 typedef VkFlags VkEventCreateFlags;
   1045 typedef VkFlags VkQueryPoolCreateFlags;
   1046 
   1047 typedef enum VkQueryPipelineStatisticFlagBits {
   1048     VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001,
   1049     VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002,
   1050     VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004,
   1051     VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008,
   1052     VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010,
   1053     VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020,
   1054     VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040,
   1055     VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080,
   1056     VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100,
   1057     VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200,
   1058     VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400,
   1059     VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1060 } VkQueryPipelineStatisticFlagBits;
   1061 typedef VkFlags VkQueryPipelineStatisticFlags;
   1062 
   1063 typedef enum VkQueryResultFlagBits {
   1064     VK_QUERY_RESULT_64_BIT = 0x00000001,
   1065     VK_QUERY_RESULT_WAIT_BIT = 0x00000002,
   1066     VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004,
   1067     VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008,
   1068     VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1069 } VkQueryResultFlagBits;
   1070 typedef VkFlags VkQueryResultFlags;
   1071 
   1072 typedef enum VkBufferCreateFlagBits {
   1073     VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,
   1074     VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
   1075     VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
   1076     VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1077 } VkBufferCreateFlagBits;
   1078 typedef VkFlags VkBufferCreateFlags;
   1079 
   1080 typedef enum VkBufferUsageFlagBits {
   1081     VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001,
   1082     VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002,
   1083     VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,
   1084     VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008,
   1085     VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010,
   1086     VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020,
   1087     VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
   1088     VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
   1089     VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
   1090     VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1091 } VkBufferUsageFlagBits;
   1092 typedef VkFlags VkBufferUsageFlags;
   1093 typedef VkFlags VkBufferViewCreateFlags;
   1094 typedef VkFlags VkImageViewCreateFlags;
   1095 typedef VkFlags VkShaderModuleCreateFlags;
   1096 typedef VkFlags VkPipelineCacheCreateFlags;
   1097 
   1098 typedef enum VkPipelineCreateFlagBits {
   1099     VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
   1100     VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
   1101     VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
   1102     VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX = 0x00000008,
   1103     VK_PIPELINE_CREATE_DISPATCH_BASE_KHX = 0x00000010,
   1104     VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1105 } VkPipelineCreateFlagBits;
   1106 typedef VkFlags VkPipelineCreateFlags;
   1107 typedef VkFlags VkPipelineShaderStageCreateFlags;
   1108 
   1109 typedef enum VkShaderStageFlagBits {
   1110     VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
   1111     VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
   1112     VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
   1113     VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
   1114     VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
   1115     VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
   1116     VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
   1117     VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
   1118     VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1119 } VkShaderStageFlagBits;
   1120 typedef VkFlags VkPipelineVertexInputStateCreateFlags;
   1121 typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;
   1122 typedef VkFlags VkPipelineTessellationStateCreateFlags;
   1123 typedef VkFlags VkPipelineViewportStateCreateFlags;
   1124 typedef VkFlags VkPipelineRasterizationStateCreateFlags;
   1125 
   1126 typedef enum VkCullModeFlagBits {
   1127     VK_CULL_MODE_NONE = 0,
   1128     VK_CULL_MODE_FRONT_BIT = 0x00000001,
   1129     VK_CULL_MODE_BACK_BIT = 0x00000002,
   1130     VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
   1131     VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1132 } VkCullModeFlagBits;
   1133 typedef VkFlags VkCullModeFlags;
   1134 typedef VkFlags VkPipelineMultisampleStateCreateFlags;
   1135 typedef VkFlags VkPipelineDepthStencilStateCreateFlags;
   1136 typedef VkFlags VkPipelineColorBlendStateCreateFlags;
   1137 
   1138 typedef enum VkColorComponentFlagBits {
   1139     VK_COLOR_COMPONENT_R_BIT = 0x00000001,
   1140     VK_COLOR_COMPONENT_G_BIT = 0x00000002,
   1141     VK_COLOR_COMPONENT_B_BIT = 0x00000004,
   1142     VK_COLOR_COMPONENT_A_BIT = 0x00000008,
   1143     VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1144 } VkColorComponentFlagBits;
   1145 typedef VkFlags VkColorComponentFlags;
   1146 typedef VkFlags VkPipelineDynamicStateCreateFlags;
   1147 typedef VkFlags VkPipelineLayoutCreateFlags;
   1148 typedef VkFlags VkShaderStageFlags;
   1149 typedef VkFlags VkSamplerCreateFlags;
   1150 
   1151 typedef enum VkDescriptorSetLayoutCreateFlagBits {
   1152     VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
   1153     VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1154 } VkDescriptorSetLayoutCreateFlagBits;
   1155 typedef VkFlags VkDescriptorSetLayoutCreateFlags;
   1156 
   1157 typedef enum VkDescriptorPoolCreateFlagBits {
   1158     VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
   1159     VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1160 } VkDescriptorPoolCreateFlagBits;
   1161 typedef VkFlags VkDescriptorPoolCreateFlags;
   1162 typedef VkFlags VkDescriptorPoolResetFlags;
   1163 typedef VkFlags VkFramebufferCreateFlags;
   1164 typedef VkFlags VkRenderPassCreateFlags;
   1165 
   1166 typedef enum VkAttachmentDescriptionFlagBits {
   1167     VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
   1168     VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1169 } VkAttachmentDescriptionFlagBits;
   1170 typedef VkFlags VkAttachmentDescriptionFlags;
   1171 
   1172 typedef enum VkSubpassDescriptionFlagBits {
   1173     VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001,
   1174     VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,
   1175     VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1176 } VkSubpassDescriptionFlagBits;
   1177 typedef VkFlags VkSubpassDescriptionFlags;
   1178 
   1179 typedef enum VkAccessFlagBits {
   1180     VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
   1181     VK_ACCESS_INDEX_READ_BIT = 0x00000002,
   1182     VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
   1183     VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
   1184     VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
   1185     VK_ACCESS_SHADER_READ_BIT = 0x00000020,
   1186     VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
   1187     VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
   1188     VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
   1189     VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
   1190     VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
   1191     VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
   1192     VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
   1193     VK_ACCESS_HOST_READ_BIT = 0x00002000,
   1194     VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
   1195     VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
   1196     VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
   1197     VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000,
   1198     VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000,
   1199     VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1200 } VkAccessFlagBits;
   1201 typedef VkFlags VkAccessFlags;
   1202 
   1203 typedef enum VkDependencyFlagBits {
   1204     VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
   1205     VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX = 0x00000002,
   1206     VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX = 0x00000004,
   1207     VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1208 } VkDependencyFlagBits;
   1209 typedef VkFlags VkDependencyFlags;
   1210 
   1211 typedef enum VkCommandPoolCreateFlagBits {
   1212     VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001,
   1213     VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
   1214     VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1215 } VkCommandPoolCreateFlagBits;
   1216 typedef VkFlags VkCommandPoolCreateFlags;
   1217 
   1218 typedef enum VkCommandPoolResetFlagBits {
   1219     VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
   1220     VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1221 } VkCommandPoolResetFlagBits;
   1222 typedef VkFlags VkCommandPoolResetFlags;
   1223 
   1224 typedef enum VkCommandBufferUsageFlagBits {
   1225     VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
   1226     VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
   1227     VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
   1228     VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1229 } VkCommandBufferUsageFlagBits;
   1230 typedef VkFlags VkCommandBufferUsageFlags;
   1231 
   1232 typedef enum VkQueryControlFlagBits {
   1233     VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
   1234     VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1235 } VkQueryControlFlagBits;
   1236 typedef VkFlags VkQueryControlFlags;
   1237 
   1238 typedef enum VkCommandBufferResetFlagBits {
   1239     VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
   1240     VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1241 } VkCommandBufferResetFlagBits;
   1242 typedef VkFlags VkCommandBufferResetFlags;
   1243 
   1244 typedef enum VkStencilFaceFlagBits {
   1245     VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
   1246     VK_STENCIL_FACE_BACK_BIT = 0x00000002,
   1247     VK_STENCIL_FRONT_AND_BACK = 0x00000003,
   1248     VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1249 } VkStencilFaceFlagBits;
   1250 typedef VkFlags VkStencilFaceFlags;
   1251 
   1252 typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(
   1253     void*                                       pUserData,
   1254     size_t                                      size,
   1255     size_t                                      alignment,
   1256     VkSystemAllocationScope                     allocationScope);
   1257 
   1258 typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)(
   1259     void*                                       pUserData,
   1260     void*                                       pOriginal,
   1261     size_t                                      size,
   1262     size_t                                      alignment,
   1263     VkSystemAllocationScope                     allocationScope);
   1264 
   1265 typedef void (VKAPI_PTR *PFN_vkFreeFunction)(
   1266     void*                                       pUserData,
   1267     void*                                       pMemory);
   1268 
   1269 typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)(
   1270     void*                                       pUserData,
   1271     size_t                                      size,
   1272     VkInternalAllocationType                    allocationType,
   1273     VkSystemAllocationScope                     allocationScope);
   1274 
   1275 typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)(
   1276     void*                                       pUserData,
   1277     size_t                                      size,
   1278     VkInternalAllocationType                    allocationType,
   1279     VkSystemAllocationScope                     allocationScope);
   1280 
   1281 typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void);
   1282 
   1283 typedef struct VkApplicationInfo {
   1284     VkStructureType    sType;
   1285     const void*        pNext;
   1286     const char*        pApplicationName;
   1287     uint32_t           applicationVersion;
   1288     const char*        pEngineName;
   1289     uint32_t           engineVersion;
   1290     uint32_t           apiVersion;
   1291 } VkApplicationInfo;
   1292 
   1293 typedef struct VkInstanceCreateInfo {
   1294     VkStructureType             sType;
   1295     const void*                 pNext;
   1296     VkInstanceCreateFlags       flags;
   1297     const VkApplicationInfo*    pApplicationInfo;
   1298     uint32_t                    enabledLayerCount;
   1299     const char* const*          ppEnabledLayerNames;
   1300     uint32_t                    enabledExtensionCount;
   1301     const char* const*          ppEnabledExtensionNames;
   1302 } VkInstanceCreateInfo;
   1303 
   1304 typedef struct VkAllocationCallbacks {
   1305     void*                                   pUserData;
   1306     PFN_vkAllocationFunction                pfnAllocation;
   1307     PFN_vkReallocationFunction              pfnReallocation;
   1308     PFN_vkFreeFunction                      pfnFree;
   1309     PFN_vkInternalAllocationNotification    pfnInternalAllocation;
   1310     PFN_vkInternalFreeNotification          pfnInternalFree;
   1311 } VkAllocationCallbacks;
   1312 
   1313 typedef struct VkPhysicalDeviceFeatures {
   1314     VkBool32    robustBufferAccess;
   1315     VkBool32    fullDrawIndexUint32;
   1316     VkBool32    imageCubeArray;
   1317     VkBool32    independentBlend;
   1318     VkBool32    geometryShader;
   1319     VkBool32    tessellationShader;
   1320     VkBool32    sampleRateShading;
   1321     VkBool32    dualSrcBlend;
   1322     VkBool32    logicOp;
   1323     VkBool32    multiDrawIndirect;
   1324     VkBool32    drawIndirectFirstInstance;
   1325     VkBool32    depthClamp;
   1326     VkBool32    depthBiasClamp;
   1327     VkBool32    fillModeNonSolid;
   1328     VkBool32    depthBounds;
   1329     VkBool32    wideLines;
   1330     VkBool32    largePoints;
   1331     VkBool32    alphaToOne;
   1332     VkBool32    multiViewport;
   1333     VkBool32    samplerAnisotropy;
   1334     VkBool32    textureCompressionETC2;
   1335     VkBool32    textureCompressionASTC_LDR;
   1336     VkBool32    textureCompressionBC;
   1337     VkBool32    occlusionQueryPrecise;
   1338     VkBool32    pipelineStatisticsQuery;
   1339     VkBool32    vertexPipelineStoresAndAtomics;
   1340     VkBool32    fragmentStoresAndAtomics;
   1341     VkBool32    shaderTessellationAndGeometryPointSize;
   1342     VkBool32    shaderImageGatherExtended;
   1343     VkBool32    shaderStorageImageExtendedFormats;
   1344     VkBool32    shaderStorageImageMultisample;
   1345     VkBool32    shaderStorageImageReadWithoutFormat;
   1346     VkBool32    shaderStorageImageWriteWithoutFormat;
   1347     VkBool32    shaderUniformBufferArrayDynamicIndexing;
   1348     VkBool32    shaderSampledImageArrayDynamicIndexing;
   1349     VkBool32    shaderStorageBufferArrayDynamicIndexing;
   1350     VkBool32    shaderStorageImageArrayDynamicIndexing;
   1351     VkBool32    shaderClipDistance;
   1352     VkBool32    shaderCullDistance;
   1353     VkBool32    shaderFloat64;
   1354     VkBool32    shaderInt64;
   1355     VkBool32    shaderInt16;
   1356     VkBool32    shaderResourceResidency;
   1357     VkBool32    shaderResourceMinLod;
   1358     VkBool32    sparseBinding;
   1359     VkBool32    sparseResidencyBuffer;
   1360     VkBool32    sparseResidencyImage2D;
   1361     VkBool32    sparseResidencyImage3D;
   1362     VkBool32    sparseResidency2Samples;
   1363     VkBool32    sparseResidency4Samples;
   1364     VkBool32    sparseResidency8Samples;
   1365     VkBool32    sparseResidency16Samples;
   1366     VkBool32    sparseResidencyAliased;
   1367     VkBool32    variableMultisampleRate;
   1368     VkBool32    inheritedQueries;
   1369 } VkPhysicalDeviceFeatures;
   1370 
   1371 typedef struct VkFormatProperties {
   1372     VkFormatFeatureFlags    linearTilingFeatures;
   1373     VkFormatFeatureFlags    optimalTilingFeatures;
   1374     VkFormatFeatureFlags    bufferFeatures;
   1375 } VkFormatProperties;
   1376 
   1377 typedef struct VkExtent3D {
   1378     uint32_t    width;
   1379     uint32_t    height;
   1380     uint32_t    depth;
   1381 } VkExtent3D;
   1382 
   1383 typedef struct VkImageFormatProperties {
   1384     VkExtent3D            maxExtent;
   1385     uint32_t              maxMipLevels;
   1386     uint32_t              maxArrayLayers;
   1387     VkSampleCountFlags    sampleCounts;
   1388     VkDeviceSize          maxResourceSize;
   1389 } VkImageFormatProperties;
   1390 
   1391 typedef struct VkPhysicalDeviceLimits {
   1392     uint32_t              maxImageDimension1D;
   1393     uint32_t              maxImageDimension2D;
   1394     uint32_t              maxImageDimension3D;
   1395     uint32_t              maxImageDimensionCube;
   1396     uint32_t              maxImageArrayLayers;
   1397     uint32_t              maxTexelBufferElements;
   1398     uint32_t              maxUniformBufferRange;
   1399     uint32_t              maxStorageBufferRange;
   1400     uint32_t              maxPushConstantsSize;
   1401     uint32_t              maxMemoryAllocationCount;
   1402     uint32_t              maxSamplerAllocationCount;
   1403     VkDeviceSize          bufferImageGranularity;
   1404     VkDeviceSize          sparseAddressSpaceSize;
   1405     uint32_t              maxBoundDescriptorSets;
   1406     uint32_t              maxPerStageDescriptorSamplers;
   1407     uint32_t              maxPerStageDescriptorUniformBuffers;
   1408     uint32_t              maxPerStageDescriptorStorageBuffers;
   1409     uint32_t              maxPerStageDescriptorSampledImages;
   1410     uint32_t              maxPerStageDescriptorStorageImages;
   1411     uint32_t              maxPerStageDescriptorInputAttachments;
   1412     uint32_t              maxPerStageResources;
   1413     uint32_t              maxDescriptorSetSamplers;
   1414     uint32_t              maxDescriptorSetUniformBuffers;
   1415     uint32_t              maxDescriptorSetUniformBuffersDynamic;
   1416     uint32_t              maxDescriptorSetStorageBuffers;
   1417     uint32_t              maxDescriptorSetStorageBuffersDynamic;
   1418     uint32_t              maxDescriptorSetSampledImages;
   1419     uint32_t              maxDescriptorSetStorageImages;
   1420     uint32_t              maxDescriptorSetInputAttachments;
   1421     uint32_t              maxVertexInputAttributes;
   1422     uint32_t              maxVertexInputBindings;
   1423     uint32_t              maxVertexInputAttributeOffset;
   1424     uint32_t              maxVertexInputBindingStride;
   1425     uint32_t              maxVertexOutputComponents;
   1426     uint32_t              maxTessellationGenerationLevel;
   1427     uint32_t              maxTessellationPatchSize;
   1428     uint32_t              maxTessellationControlPerVertexInputComponents;
   1429     uint32_t              maxTessellationControlPerVertexOutputComponents;
   1430     uint32_t              maxTessellationControlPerPatchOutputComponents;
   1431     uint32_t              maxTessellationControlTotalOutputComponents;
   1432     uint32_t              maxTessellationEvaluationInputComponents;
   1433     uint32_t              maxTessellationEvaluationOutputComponents;
   1434     uint32_t              maxGeometryShaderInvocations;
   1435     uint32_t              maxGeometryInputComponents;
   1436     uint32_t              maxGeometryOutputComponents;
   1437     uint32_t              maxGeometryOutputVertices;
   1438     uint32_t              maxGeometryTotalOutputComponents;
   1439     uint32_t              maxFragmentInputComponents;
   1440     uint32_t              maxFragmentOutputAttachments;
   1441     uint32_t              maxFragmentDualSrcAttachments;
   1442     uint32_t              maxFragmentCombinedOutputResources;
   1443     uint32_t              maxComputeSharedMemorySize;
   1444     uint32_t              maxComputeWorkGroupCount[3];
   1445     uint32_t              maxComputeWorkGroupInvocations;
   1446     uint32_t              maxComputeWorkGroupSize[3];
   1447     uint32_t              subPixelPrecisionBits;
   1448     uint32_t              subTexelPrecisionBits;
   1449     uint32_t              mipmapPrecisionBits;
   1450     uint32_t              maxDrawIndexedIndexValue;
   1451     uint32_t              maxDrawIndirectCount;
   1452     float                 maxSamplerLodBias;
   1453     float                 maxSamplerAnisotropy;
   1454     uint32_t              maxViewports;
   1455     uint32_t              maxViewportDimensions[2];
   1456     float                 viewportBoundsRange[2];
   1457     uint32_t              viewportSubPixelBits;
   1458     size_t                minMemoryMapAlignment;
   1459     VkDeviceSize          minTexelBufferOffsetAlignment;
   1460     VkDeviceSize          minUniformBufferOffsetAlignment;
   1461     VkDeviceSize          minStorageBufferOffsetAlignment;
   1462     int32_t               minTexelOffset;
   1463     uint32_t              maxTexelOffset;
   1464     int32_t               minTexelGatherOffset;
   1465     uint32_t              maxTexelGatherOffset;
   1466     float                 minInterpolationOffset;
   1467     float                 maxInterpolationOffset;
   1468     uint32_t              subPixelInterpolationOffsetBits;
   1469     uint32_t              maxFramebufferWidth;
   1470     uint32_t              maxFramebufferHeight;
   1471     uint32_t              maxFramebufferLayers;
   1472     VkSampleCountFlags    framebufferColorSampleCounts;
   1473     VkSampleCountFlags    framebufferDepthSampleCounts;
   1474     VkSampleCountFlags    framebufferStencilSampleCounts;
   1475     VkSampleCountFlags    framebufferNoAttachmentsSampleCounts;
   1476     uint32_t              maxColorAttachments;
   1477     VkSampleCountFlags    sampledImageColorSampleCounts;
   1478     VkSampleCountFlags    sampledImageIntegerSampleCounts;
   1479     VkSampleCountFlags    sampledImageDepthSampleCounts;
   1480     VkSampleCountFlags    sampledImageStencilSampleCounts;
   1481     VkSampleCountFlags    storageImageSampleCounts;
   1482     uint32_t              maxSampleMaskWords;
   1483     VkBool32              timestampComputeAndGraphics;
   1484     float                 timestampPeriod;
   1485     uint32_t              maxClipDistances;
   1486     uint32_t              maxCullDistances;
   1487     uint32_t              maxCombinedClipAndCullDistances;
   1488     uint32_t              discreteQueuePriorities;
   1489     float                 pointSizeRange[2];
   1490     float                 lineWidthRange[2];
   1491     float                 pointSizeGranularity;
   1492     float                 lineWidthGranularity;
   1493     VkBool32              strictLines;
   1494     VkBool32              standardSampleLocations;
   1495     VkDeviceSize          optimalBufferCopyOffsetAlignment;
   1496     VkDeviceSize          optimalBufferCopyRowPitchAlignment;
   1497     VkDeviceSize          nonCoherentAtomSize;
   1498 } VkPhysicalDeviceLimits;
   1499 
   1500 typedef struct VkPhysicalDeviceSparseProperties {
   1501     VkBool32    residencyStandard2DBlockShape;
   1502     VkBool32    residencyStandard2DMultisampleBlockShape;
   1503     VkBool32    residencyStandard3DBlockShape;
   1504     VkBool32    residencyAlignedMipSize;
   1505     VkBool32    residencyNonResidentStrict;
   1506 } VkPhysicalDeviceSparseProperties;
   1507 
   1508 typedef struct VkPhysicalDeviceProperties {
   1509     uint32_t                            apiVersion;
   1510     uint32_t                            driverVersion;
   1511     uint32_t                            vendorID;
   1512     uint32_t                            deviceID;
   1513     VkPhysicalDeviceType                deviceType;
   1514     char                                deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
   1515     uint8_t                             pipelineCacheUUID[VK_UUID_SIZE];
   1516     VkPhysicalDeviceLimits              limits;
   1517     VkPhysicalDeviceSparseProperties    sparseProperties;
   1518 } VkPhysicalDeviceProperties;
   1519 
   1520 typedef struct VkQueueFamilyProperties {
   1521     VkQueueFlags    queueFlags;
   1522     uint32_t        queueCount;
   1523     uint32_t        timestampValidBits;
   1524     VkExtent3D      minImageTransferGranularity;
   1525 } VkQueueFamilyProperties;
   1526 
   1527 typedef struct VkMemoryType {
   1528     VkMemoryPropertyFlags    propertyFlags;
   1529     uint32_t                 heapIndex;
   1530 } VkMemoryType;
   1531 
   1532 typedef struct VkMemoryHeap {
   1533     VkDeviceSize         size;
   1534     VkMemoryHeapFlags    flags;
   1535 } VkMemoryHeap;
   1536 
   1537 typedef struct VkPhysicalDeviceMemoryProperties {
   1538     uint32_t        memoryTypeCount;
   1539     VkMemoryType    memoryTypes[VK_MAX_MEMORY_TYPES];
   1540     uint32_t        memoryHeapCount;
   1541     VkMemoryHeap    memoryHeaps[VK_MAX_MEMORY_HEAPS];
   1542 } VkPhysicalDeviceMemoryProperties;
   1543 
   1544 typedef struct VkDeviceQueueCreateInfo {
   1545     VkStructureType             sType;
   1546     const void*                 pNext;
   1547     VkDeviceQueueCreateFlags    flags;
   1548     uint32_t                    queueFamilyIndex;
   1549     uint32_t                    queueCount;
   1550     const float*                pQueuePriorities;
   1551 } VkDeviceQueueCreateInfo;
   1552 
   1553 typedef struct VkDeviceCreateInfo {
   1554     VkStructureType                    sType;
   1555     const void*                        pNext;
   1556     VkDeviceCreateFlags                flags;
   1557     uint32_t                           queueCreateInfoCount;
   1558     const VkDeviceQueueCreateInfo*     pQueueCreateInfos;
   1559     uint32_t                           enabledLayerCount;
   1560     const char* const*                 ppEnabledLayerNames;
   1561     uint32_t                           enabledExtensionCount;
   1562     const char* const*                 ppEnabledExtensionNames;
   1563     const VkPhysicalDeviceFeatures*    pEnabledFeatures;
   1564 } VkDeviceCreateInfo;
   1565 
   1566 typedef struct VkExtensionProperties {
   1567     char        extensionName[VK_MAX_EXTENSION_NAME_SIZE];
   1568     uint32_t    specVersion;
   1569 } VkExtensionProperties;
   1570 
   1571 typedef struct VkLayerProperties {
   1572     char        layerName[VK_MAX_EXTENSION_NAME_SIZE];
   1573     uint32_t    specVersion;
   1574     uint32_t    implementationVersion;
   1575     char        description[VK_MAX_DESCRIPTION_SIZE];
   1576 } VkLayerProperties;
   1577 
   1578 typedef struct VkSubmitInfo {
   1579     VkStructureType                sType;
   1580     const void*                    pNext;
   1581     uint32_t                       waitSemaphoreCount;
   1582     const VkSemaphore*             pWaitSemaphores;
   1583     const VkPipelineStageFlags*    pWaitDstStageMask;
   1584     uint32_t                       commandBufferCount;
   1585     const VkCommandBuffer*         pCommandBuffers;
   1586     uint32_t                       signalSemaphoreCount;
   1587     const VkSemaphore*             pSignalSemaphores;
   1588 } VkSubmitInfo;
   1589 
   1590 typedef struct VkMemoryAllocateInfo {
   1591     VkStructureType    sType;
   1592     const void*        pNext;
   1593     VkDeviceSize       allocationSize;
   1594     uint32_t           memoryTypeIndex;
   1595 } VkMemoryAllocateInfo;
   1596 
   1597 typedef struct VkMappedMemoryRange {
   1598     VkStructureType    sType;
   1599     const void*        pNext;
   1600     VkDeviceMemory     memory;
   1601     VkDeviceSize       offset;
   1602     VkDeviceSize       size;
   1603 } VkMappedMemoryRange;
   1604 
   1605 typedef struct VkMemoryRequirements {
   1606     VkDeviceSize    size;
   1607     VkDeviceSize    alignment;
   1608     uint32_t        memoryTypeBits;
   1609 } VkMemoryRequirements;
   1610 
   1611 typedef struct VkSparseImageFormatProperties {
   1612     VkImageAspectFlags          aspectMask;
   1613     VkExtent3D                  imageGranularity;
   1614     VkSparseImageFormatFlags    flags;
   1615 } VkSparseImageFormatProperties;
   1616 
   1617 typedef struct VkSparseImageMemoryRequirements {
   1618     VkSparseImageFormatProperties    formatProperties;
   1619     uint32_t                         imageMipTailFirstLod;
   1620     VkDeviceSize                     imageMipTailSize;
   1621     VkDeviceSize                     imageMipTailOffset;
   1622     VkDeviceSize                     imageMipTailStride;
   1623 } VkSparseImageMemoryRequirements;
   1624 
   1625 typedef struct VkSparseMemoryBind {
   1626     VkDeviceSize               resourceOffset;
   1627     VkDeviceSize               size;
   1628     VkDeviceMemory             memory;
   1629     VkDeviceSize               memoryOffset;
   1630     VkSparseMemoryBindFlags    flags;
   1631 } VkSparseMemoryBind;
   1632 
   1633 typedef struct VkSparseBufferMemoryBindInfo {
   1634     VkBuffer                     buffer;
   1635     uint32_t                     bindCount;
   1636     const VkSparseMemoryBind*    pBinds;
   1637 } VkSparseBufferMemoryBindInfo;
   1638 
   1639 typedef struct VkSparseImageOpaqueMemoryBindInfo {
   1640     VkImage                      image;
   1641     uint32_t                     bindCount;
   1642     const VkSparseMemoryBind*    pBinds;
   1643 } VkSparseImageOpaqueMemoryBindInfo;
   1644 
   1645 typedef struct VkImageSubresource {
   1646     VkImageAspectFlags    aspectMask;
   1647     uint32_t              mipLevel;
   1648     uint32_t              arrayLayer;
   1649 } VkImageSubresource;
   1650 
   1651 typedef struct VkOffset3D {
   1652     int32_t    x;
   1653     int32_t    y;
   1654     int32_t    z;
   1655 } VkOffset3D;
   1656 
   1657 typedef struct VkSparseImageMemoryBind {
   1658     VkImageSubresource         subresource;
   1659     VkOffset3D                 offset;
   1660     VkExtent3D                 extent;
   1661     VkDeviceMemory             memory;
   1662     VkDeviceSize               memoryOffset;
   1663     VkSparseMemoryBindFlags    flags;
   1664 } VkSparseImageMemoryBind;
   1665 
   1666 typedef struct VkSparseImageMemoryBindInfo {
   1667     VkImage                           image;
   1668     uint32_t                          bindCount;
   1669     const VkSparseImageMemoryBind*    pBinds;
   1670 } VkSparseImageMemoryBindInfo;
   1671 
   1672 typedef struct VkBindSparseInfo {
   1673     VkStructureType                             sType;
   1674     const void*                                 pNext;
   1675     uint32_t                                    waitSemaphoreCount;
   1676     const VkSemaphore*                          pWaitSemaphores;
   1677     uint32_t                                    bufferBindCount;
   1678     const VkSparseBufferMemoryBindInfo*         pBufferBinds;
   1679     uint32_t                                    imageOpaqueBindCount;
   1680     const VkSparseImageOpaqueMemoryBindInfo*    pImageOpaqueBinds;
   1681     uint32_t                                    imageBindCount;
   1682     const VkSparseImageMemoryBindInfo*          pImageBinds;
   1683     uint32_t                                    signalSemaphoreCount;
   1684     const VkSemaphore*                          pSignalSemaphores;
   1685 } VkBindSparseInfo;
   1686 
   1687 typedef struct VkFenceCreateInfo {
   1688     VkStructureType       sType;
   1689     const void*           pNext;
   1690     VkFenceCreateFlags    flags;
   1691 } VkFenceCreateInfo;
   1692 
   1693 typedef struct VkSemaphoreCreateInfo {
   1694     VkStructureType           sType;
   1695     const void*               pNext;
   1696     VkSemaphoreCreateFlags    flags;
   1697 } VkSemaphoreCreateInfo;
   1698 
   1699 typedef struct VkEventCreateInfo {
   1700     VkStructureType       sType;
   1701     const void*           pNext;
   1702     VkEventCreateFlags    flags;
   1703 } VkEventCreateInfo;
   1704 
   1705 typedef struct VkQueryPoolCreateInfo {
   1706     VkStructureType                  sType;
   1707     const void*                      pNext;
   1708     VkQueryPoolCreateFlags           flags;
   1709     VkQueryType                      queryType;
   1710     uint32_t                         queryCount;
   1711     VkQueryPipelineStatisticFlags    pipelineStatistics;
   1712 } VkQueryPoolCreateInfo;
   1713 
   1714 typedef struct VkBufferCreateInfo {
   1715     VkStructureType        sType;
   1716     const void*            pNext;
   1717     VkBufferCreateFlags    flags;
   1718     VkDeviceSize           size;
   1719     VkBufferUsageFlags     usage;
   1720     VkSharingMode          sharingMode;
   1721     uint32_t               queueFamilyIndexCount;
   1722     const uint32_t*        pQueueFamilyIndices;
   1723 } VkBufferCreateInfo;
   1724 
   1725 typedef struct VkBufferViewCreateInfo {
   1726     VkStructureType            sType;
   1727     const void*                pNext;
   1728     VkBufferViewCreateFlags    flags;
   1729     VkBuffer                   buffer;
   1730     VkFormat                   format;
   1731     VkDeviceSize               offset;
   1732     VkDeviceSize               range;
   1733 } VkBufferViewCreateInfo;
   1734 
   1735 typedef struct VkImageCreateInfo {
   1736     VkStructureType          sType;
   1737     const void*              pNext;
   1738     VkImageCreateFlags       flags;
   1739     VkImageType              imageType;
   1740     VkFormat                 format;
   1741     VkExtent3D               extent;
   1742     uint32_t                 mipLevels;
   1743     uint32_t                 arrayLayers;
   1744     VkSampleCountFlagBits    samples;
   1745     VkImageTiling            tiling;
   1746     VkImageUsageFlags        usage;
   1747     VkSharingMode            sharingMode;
   1748     uint32_t                 queueFamilyIndexCount;
   1749     const uint32_t*          pQueueFamilyIndices;
   1750     VkImageLayout            initialLayout;
   1751 } VkImageCreateInfo;
   1752 
   1753 typedef struct VkSubresourceLayout {
   1754     VkDeviceSize    offset;
   1755     VkDeviceSize    size;
   1756     VkDeviceSize    rowPitch;
   1757     VkDeviceSize    arrayPitch;
   1758     VkDeviceSize    depthPitch;
   1759 } VkSubresourceLayout;
   1760 
   1761 typedef struct VkComponentMapping {
   1762     VkComponentSwizzle    r;
   1763     VkComponentSwizzle    g;
   1764     VkComponentSwizzle    b;
   1765     VkComponentSwizzle    a;
   1766 } VkComponentMapping;
   1767 
   1768 typedef struct VkImageSubresourceRange {
   1769     VkImageAspectFlags    aspectMask;
   1770     uint32_t              baseMipLevel;
   1771     uint32_t              levelCount;
   1772     uint32_t              baseArrayLayer;
   1773     uint32_t              layerCount;
   1774 } VkImageSubresourceRange;
   1775 
   1776 typedef struct VkImageViewCreateInfo {
   1777     VkStructureType            sType;
   1778     const void*                pNext;
   1779     VkImageViewCreateFlags     flags;
   1780     VkImage                    image;
   1781     VkImageViewType            viewType;
   1782     VkFormat                   format;
   1783     VkComponentMapping         components;
   1784     VkImageSubresourceRange    subresourceRange;
   1785 } VkImageViewCreateInfo;
   1786 
   1787 typedef struct VkShaderModuleCreateInfo {
   1788     VkStructureType              sType;
   1789     const void*                  pNext;
   1790     VkShaderModuleCreateFlags    flags;
   1791     size_t                       codeSize;
   1792     const uint32_t*              pCode;
   1793 } VkShaderModuleCreateInfo;
   1794 
   1795 typedef struct VkPipelineCacheCreateInfo {
   1796     VkStructureType               sType;
   1797     const void*                   pNext;
   1798     VkPipelineCacheCreateFlags    flags;
   1799     size_t                        initialDataSize;
   1800     const void*                   pInitialData;
   1801 } VkPipelineCacheCreateInfo;
   1802 
   1803 typedef struct VkSpecializationMapEntry {
   1804     uint32_t    constantID;
   1805     uint32_t    offset;
   1806     size_t      size;
   1807 } VkSpecializationMapEntry;
   1808 
   1809 typedef struct VkSpecializationInfo {
   1810     uint32_t                           mapEntryCount;
   1811     const VkSpecializationMapEntry*    pMapEntries;
   1812     size_t                             dataSize;
   1813     const void*                        pData;
   1814 } VkSpecializationInfo;
   1815 
   1816 typedef struct VkPipelineShaderStageCreateInfo {
   1817     VkStructureType                     sType;
   1818     const void*                         pNext;
   1819     VkPipelineShaderStageCreateFlags    flags;
   1820     VkShaderStageFlagBits               stage;
   1821     VkShaderModule                      module;
   1822     const char*                         pName;
   1823     const VkSpecializationInfo*         pSpecializationInfo;
   1824 } VkPipelineShaderStageCreateInfo;
   1825 
   1826 typedef struct VkVertexInputBindingDescription {
   1827     uint32_t             binding;
   1828     uint32_t             stride;
   1829     VkVertexInputRate    inputRate;
   1830 } VkVertexInputBindingDescription;
   1831 
   1832 typedef struct VkVertexInputAttributeDescription {
   1833     uint32_t    location;
   1834     uint32_t    binding;
   1835     VkFormat    format;
   1836     uint32_t    offset;
   1837 } VkVertexInputAttributeDescription;
   1838 
   1839 typedef struct VkPipelineVertexInputStateCreateInfo {
   1840     VkStructureType                             sType;
   1841     const void*                                 pNext;
   1842     VkPipelineVertexInputStateCreateFlags       flags;
   1843     uint32_t                                    vertexBindingDescriptionCount;
   1844     const VkVertexInputBindingDescription*      pVertexBindingDescriptions;
   1845     uint32_t                                    vertexAttributeDescriptionCount;
   1846     const VkVertexInputAttributeDescription*    pVertexAttributeDescriptions;
   1847 } VkPipelineVertexInputStateCreateInfo;
   1848 
   1849 typedef struct VkPipelineInputAssemblyStateCreateInfo {
   1850     VkStructureType                            sType;
   1851     const void*                                pNext;
   1852     VkPipelineInputAssemblyStateCreateFlags    flags;
   1853     VkPrimitiveTopology                        topology;
   1854     VkBool32                                   primitiveRestartEnable;
   1855 } VkPipelineInputAssemblyStateCreateInfo;
   1856 
   1857 typedef struct VkPipelineTessellationStateCreateInfo {
   1858     VkStructureType                           sType;
   1859     const void*                               pNext;
   1860     VkPipelineTessellationStateCreateFlags    flags;
   1861     uint32_t                                  patchControlPoints;
   1862 } VkPipelineTessellationStateCreateInfo;
   1863 
   1864 typedef struct VkViewport {
   1865     float    x;
   1866     float    y;
   1867     float    width;
   1868     float    height;
   1869     float    minDepth;
   1870     float    maxDepth;
   1871 } VkViewport;
   1872 
   1873 typedef struct VkOffset2D {
   1874     int32_t    x;
   1875     int32_t    y;
   1876 } VkOffset2D;
   1877 
   1878 typedef struct VkExtent2D {
   1879     uint32_t    width;
   1880     uint32_t    height;
   1881 } VkExtent2D;
   1882 
   1883 typedef struct VkRect2D {
   1884     VkOffset2D    offset;
   1885     VkExtent2D    extent;
   1886 } VkRect2D;
   1887 
   1888 typedef struct VkPipelineViewportStateCreateInfo {
   1889     VkStructureType                       sType;
   1890     const void*                           pNext;
   1891     VkPipelineViewportStateCreateFlags    flags;
   1892     uint32_t                              viewportCount;
   1893     const VkViewport*                     pViewports;
   1894     uint32_t                              scissorCount;
   1895     const VkRect2D*                       pScissors;
   1896 } VkPipelineViewportStateCreateInfo;
   1897 
   1898 typedef struct VkPipelineRasterizationStateCreateInfo {
   1899     VkStructureType                            sType;
   1900     const void*                                pNext;
   1901     VkPipelineRasterizationStateCreateFlags    flags;
   1902     VkBool32                                   depthClampEnable;
   1903     VkBool32                                   rasterizerDiscardEnable;
   1904     VkPolygonMode                              polygonMode;
   1905     VkCullModeFlags                            cullMode;
   1906     VkFrontFace                                frontFace;
   1907     VkBool32                                   depthBiasEnable;
   1908     float                                      depthBiasConstantFactor;
   1909     float                                      depthBiasClamp;
   1910     float                                      depthBiasSlopeFactor;
   1911     float                                      lineWidth;
   1912 } VkPipelineRasterizationStateCreateInfo;
   1913 
   1914 typedef struct VkPipelineMultisampleStateCreateInfo {
   1915     VkStructureType                          sType;
   1916     const void*                              pNext;
   1917     VkPipelineMultisampleStateCreateFlags    flags;
   1918     VkSampleCountFlagBits                    rasterizationSamples;
   1919     VkBool32                                 sampleShadingEnable;
   1920     float                                    minSampleShading;
   1921     const VkSampleMask*                      pSampleMask;
   1922     VkBool32                                 alphaToCoverageEnable;
   1923     VkBool32                                 alphaToOneEnable;
   1924 } VkPipelineMultisampleStateCreateInfo;
   1925 
   1926 typedef struct VkStencilOpState {
   1927     VkStencilOp    failOp;
   1928     VkStencilOp    passOp;
   1929     VkStencilOp    depthFailOp;
   1930     VkCompareOp    compareOp;
   1931     uint32_t       compareMask;
   1932     uint32_t       writeMask;
   1933     uint32_t       reference;
   1934 } VkStencilOpState;
   1935 
   1936 typedef struct VkPipelineDepthStencilStateCreateInfo {
   1937     VkStructureType                           sType;
   1938     const void*                               pNext;
   1939     VkPipelineDepthStencilStateCreateFlags    flags;
   1940     VkBool32                                  depthTestEnable;
   1941     VkBool32                                  depthWriteEnable;
   1942     VkCompareOp                               depthCompareOp;
   1943     VkBool32                                  depthBoundsTestEnable;
   1944     VkBool32                                  stencilTestEnable;
   1945     VkStencilOpState                          front;
   1946     VkStencilOpState                          back;
   1947     float                                     minDepthBounds;
   1948     float                                     maxDepthBounds;
   1949 } VkPipelineDepthStencilStateCreateInfo;
   1950 
   1951 typedef struct VkPipelineColorBlendAttachmentState {
   1952     VkBool32                 blendEnable;
   1953     VkBlendFactor            srcColorBlendFactor;
   1954     VkBlendFactor            dstColorBlendFactor;
   1955     VkBlendOp                colorBlendOp;
   1956     VkBlendFactor            srcAlphaBlendFactor;
   1957     VkBlendFactor            dstAlphaBlendFactor;
   1958     VkBlendOp                alphaBlendOp;
   1959     VkColorComponentFlags    colorWriteMask;
   1960 } VkPipelineColorBlendAttachmentState;
   1961 
   1962 typedef struct VkPipelineColorBlendStateCreateInfo {
   1963     VkStructureType                               sType;
   1964     const void*                                   pNext;
   1965     VkPipelineColorBlendStateCreateFlags          flags;
   1966     VkBool32                                      logicOpEnable;
   1967     VkLogicOp                                     logicOp;
   1968     uint32_t                                      attachmentCount;
   1969     const VkPipelineColorBlendAttachmentState*    pAttachments;
   1970     float                                         blendConstants[4];
   1971 } VkPipelineColorBlendStateCreateInfo;
   1972 
   1973 typedef struct VkPipelineDynamicStateCreateInfo {
   1974     VkStructureType                      sType;
   1975     const void*                          pNext;
   1976     VkPipelineDynamicStateCreateFlags    flags;
   1977     uint32_t                             dynamicStateCount;
   1978     const VkDynamicState*                pDynamicStates;
   1979 } VkPipelineDynamicStateCreateInfo;
   1980 
   1981 typedef struct VkGraphicsPipelineCreateInfo {
   1982     VkStructureType                                  sType;
   1983     const void*                                      pNext;
   1984     VkPipelineCreateFlags                            flags;
   1985     uint32_t                                         stageCount;
   1986     const VkPipelineShaderStageCreateInfo*           pStages;
   1987     const VkPipelineVertexInputStateCreateInfo*      pVertexInputState;
   1988     const VkPipelineInputAssemblyStateCreateInfo*    pInputAssemblyState;
   1989     const VkPipelineTessellationStateCreateInfo*     pTessellationState;
   1990     const VkPipelineViewportStateCreateInfo*         pViewportState;
   1991     const VkPipelineRasterizationStateCreateInfo*    pRasterizationState;
   1992     const VkPipelineMultisampleStateCreateInfo*      pMultisampleState;
   1993     const VkPipelineDepthStencilStateCreateInfo*     pDepthStencilState;
   1994     const VkPipelineColorBlendStateCreateInfo*       pColorBlendState;
   1995     const VkPipelineDynamicStateCreateInfo*          pDynamicState;
   1996     VkPipelineLayout                                 layout;
   1997     VkRenderPass                                     renderPass;
   1998     uint32_t                                         subpass;
   1999     VkPipeline                                       basePipelineHandle;
   2000     int32_t                                          basePipelineIndex;
   2001 } VkGraphicsPipelineCreateInfo;
   2002 
   2003 typedef struct VkComputePipelineCreateInfo {
   2004     VkStructureType                    sType;
   2005     const void*                        pNext;
   2006     VkPipelineCreateFlags              flags;
   2007     VkPipelineShaderStageCreateInfo    stage;
   2008     VkPipelineLayout                   layout;
   2009     VkPipeline                         basePipelineHandle;
   2010     int32_t                            basePipelineIndex;
   2011 } VkComputePipelineCreateInfo;
   2012 
   2013 typedef struct VkPushConstantRange {
   2014     VkShaderStageFlags    stageFlags;
   2015     uint32_t              offset;
   2016     uint32_t              size;
   2017 } VkPushConstantRange;
   2018 
   2019 typedef struct VkPipelineLayoutCreateInfo {
   2020     VkStructureType                 sType;
   2021     const void*                     pNext;
   2022     VkPipelineLayoutCreateFlags     flags;
   2023     uint32_t                        setLayoutCount;
   2024     const VkDescriptorSetLayout*    pSetLayouts;
   2025     uint32_t                        pushConstantRangeCount;
   2026     const VkPushConstantRange*      pPushConstantRanges;
   2027 } VkPipelineLayoutCreateInfo;
   2028 
   2029 typedef struct VkSamplerCreateInfo {
   2030     VkStructureType         sType;
   2031     const void*             pNext;
   2032     VkSamplerCreateFlags    flags;
   2033     VkFilter                magFilter;
   2034     VkFilter                minFilter;
   2035     VkSamplerMipmapMode     mipmapMode;
   2036     VkSamplerAddressMode    addressModeU;
   2037     VkSamplerAddressMode    addressModeV;
   2038     VkSamplerAddressMode    addressModeW;
   2039     float                   mipLodBias;
   2040     VkBool32                anisotropyEnable;
   2041     float                   maxAnisotropy;
   2042     VkBool32                compareEnable;
   2043     VkCompareOp             compareOp;
   2044     float                   minLod;
   2045     float                   maxLod;
   2046     VkBorderColor           borderColor;
   2047     VkBool32                unnormalizedCoordinates;
   2048 } VkSamplerCreateInfo;
   2049 
   2050 typedef struct VkDescriptorSetLayoutBinding {
   2051     uint32_t              binding;
   2052     VkDescriptorType      descriptorType;
   2053     uint32_t              descriptorCount;
   2054     VkShaderStageFlags    stageFlags;
   2055     const VkSampler*      pImmutableSamplers;
   2056 } VkDescriptorSetLayoutBinding;
   2057 
   2058 typedef struct VkDescriptorSetLayoutCreateInfo {
   2059     VkStructureType                        sType;
   2060     const void*                            pNext;
   2061     VkDescriptorSetLayoutCreateFlags       flags;
   2062     uint32_t                               bindingCount;
   2063     const VkDescriptorSetLayoutBinding*    pBindings;
   2064 } VkDescriptorSetLayoutCreateInfo;
   2065 
   2066 typedef struct VkDescriptorPoolSize {
   2067     VkDescriptorType    type;
   2068     uint32_t            descriptorCount;
   2069 } VkDescriptorPoolSize;
   2070 
   2071 typedef struct VkDescriptorPoolCreateInfo {
   2072     VkStructureType                sType;
   2073     const void*                    pNext;
   2074     VkDescriptorPoolCreateFlags    flags;
   2075     uint32_t                       maxSets;
   2076     uint32_t                       poolSizeCount;
   2077     const VkDescriptorPoolSize*    pPoolSizes;
   2078 } VkDescriptorPoolCreateInfo;
   2079 
   2080 typedef struct VkDescriptorSetAllocateInfo {
   2081     VkStructureType                 sType;
   2082     const void*                     pNext;
   2083     VkDescriptorPool                descriptorPool;
   2084     uint32_t                        descriptorSetCount;
   2085     const VkDescriptorSetLayout*    pSetLayouts;
   2086 } VkDescriptorSetAllocateInfo;
   2087 
   2088 typedef struct VkDescriptorImageInfo {
   2089     VkSampler        sampler;
   2090     VkImageView      imageView;
   2091     VkImageLayout    imageLayout;
   2092 } VkDescriptorImageInfo;
   2093 
   2094 typedef struct VkDescriptorBufferInfo {
   2095     VkBuffer        buffer;
   2096     VkDeviceSize    offset;
   2097     VkDeviceSize    range;
   2098 } VkDescriptorBufferInfo;
   2099 
   2100 typedef struct VkWriteDescriptorSet {
   2101     VkStructureType                  sType;
   2102     const void*                      pNext;
   2103     VkDescriptorSet                  dstSet;
   2104     uint32_t                         dstBinding;
   2105     uint32_t                         dstArrayElement;
   2106     uint32_t                         descriptorCount;
   2107     VkDescriptorType                 descriptorType;
   2108     const VkDescriptorImageInfo*     pImageInfo;
   2109     const VkDescriptorBufferInfo*    pBufferInfo;
   2110     const VkBufferView*              pTexelBufferView;
   2111 } VkWriteDescriptorSet;
   2112 
   2113 typedef struct VkCopyDescriptorSet {
   2114     VkStructureType    sType;
   2115     const void*        pNext;
   2116     VkDescriptorSet    srcSet;
   2117     uint32_t           srcBinding;
   2118     uint32_t           srcArrayElement;
   2119     VkDescriptorSet    dstSet;
   2120     uint32_t           dstBinding;
   2121     uint32_t           dstArrayElement;
   2122     uint32_t           descriptorCount;
   2123 } VkCopyDescriptorSet;
   2124 
   2125 typedef struct VkFramebufferCreateInfo {
   2126     VkStructureType             sType;
   2127     const void*                 pNext;
   2128     VkFramebufferCreateFlags    flags;
   2129     VkRenderPass                renderPass;
   2130     uint32_t                    attachmentCount;
   2131     const VkImageView*          pAttachments;
   2132     uint32_t                    width;
   2133     uint32_t                    height;
   2134     uint32_t                    layers;
   2135 } VkFramebufferCreateInfo;
   2136 
   2137 typedef struct VkAttachmentDescription {
   2138     VkAttachmentDescriptionFlags    flags;
   2139     VkFormat                        format;
   2140     VkSampleCountFlagBits           samples;
   2141     VkAttachmentLoadOp              loadOp;
   2142     VkAttachmentStoreOp             storeOp;
   2143     VkAttachmentLoadOp              stencilLoadOp;
   2144     VkAttachmentStoreOp             stencilStoreOp;
   2145     VkImageLayout                   initialLayout;
   2146     VkImageLayout                   finalLayout;
   2147 } VkAttachmentDescription;
   2148 
   2149 typedef struct VkAttachmentReference {
   2150     uint32_t         attachment;
   2151     VkImageLayout    layout;
   2152 } VkAttachmentReference;
   2153 
   2154 typedef struct VkSubpassDescription {
   2155     VkSubpassDescriptionFlags       flags;
   2156     VkPipelineBindPoint             pipelineBindPoint;
   2157     uint32_t                        inputAttachmentCount;
   2158     const VkAttachmentReference*    pInputAttachments;
   2159     uint32_t                        colorAttachmentCount;
   2160     const VkAttachmentReference*    pColorAttachments;
   2161     const VkAttachmentReference*    pResolveAttachments;
   2162     const VkAttachmentReference*    pDepthStencilAttachment;
   2163     uint32_t                        preserveAttachmentCount;
   2164     const uint32_t*                 pPreserveAttachments;
   2165 } VkSubpassDescription;
   2166 
   2167 typedef struct VkSubpassDependency {
   2168     uint32_t                srcSubpass;
   2169     uint32_t                dstSubpass;
   2170     VkPipelineStageFlags    srcStageMask;
   2171     VkPipelineStageFlags    dstStageMask;
   2172     VkAccessFlags           srcAccessMask;
   2173     VkAccessFlags           dstAccessMask;
   2174     VkDependencyFlags       dependencyFlags;
   2175 } VkSubpassDependency;
   2176 
   2177 typedef struct VkRenderPassCreateInfo {
   2178     VkStructureType                   sType;
   2179     const void*                       pNext;
   2180     VkRenderPassCreateFlags           flags;
   2181     uint32_t                          attachmentCount;
   2182     const VkAttachmentDescription*    pAttachments;
   2183     uint32_t                          subpassCount;
   2184     const VkSubpassDescription*       pSubpasses;
   2185     uint32_t                          dependencyCount;
   2186     const VkSubpassDependency*        pDependencies;
   2187 } VkRenderPassCreateInfo;
   2188 
   2189 typedef struct VkCommandPoolCreateInfo {
   2190     VkStructureType             sType;
   2191     const void*                 pNext;
   2192     VkCommandPoolCreateFlags    flags;
   2193     uint32_t                    queueFamilyIndex;
   2194 } VkCommandPoolCreateInfo;
   2195 
   2196 typedef struct VkCommandBufferAllocateInfo {
   2197     VkStructureType         sType;
   2198     const void*             pNext;
   2199     VkCommandPool           commandPool;
   2200     VkCommandBufferLevel    level;
   2201     uint32_t                commandBufferCount;
   2202 } VkCommandBufferAllocateInfo;
   2203 
   2204 typedef struct VkCommandBufferInheritanceInfo {
   2205     VkStructureType                  sType;
   2206     const void*                      pNext;
   2207     VkRenderPass                     renderPass;
   2208     uint32_t                         subpass;
   2209     VkFramebuffer                    framebuffer;
   2210     VkBool32                         occlusionQueryEnable;
   2211     VkQueryControlFlags              queryFlags;
   2212     VkQueryPipelineStatisticFlags    pipelineStatistics;
   2213 } VkCommandBufferInheritanceInfo;
   2214 
   2215 typedef struct VkCommandBufferBeginInfo {
   2216     VkStructureType                          sType;
   2217     const void*                              pNext;
   2218     VkCommandBufferUsageFlags                flags;
   2219     const VkCommandBufferInheritanceInfo*    pInheritanceInfo;
   2220 } VkCommandBufferBeginInfo;
   2221 
   2222 typedef struct VkBufferCopy {
   2223     VkDeviceSize    srcOffset;
   2224     VkDeviceSize    dstOffset;
   2225     VkDeviceSize    size;
   2226 } VkBufferCopy;
   2227 
   2228 typedef struct VkImageSubresourceLayers {
   2229     VkImageAspectFlags    aspectMask;
   2230     uint32_t              mipLevel;
   2231     uint32_t              baseArrayLayer;
   2232     uint32_t              layerCount;
   2233 } VkImageSubresourceLayers;
   2234 
   2235 typedef struct VkImageCopy {
   2236     VkImageSubresourceLayers    srcSubresource;
   2237     VkOffset3D                  srcOffset;
   2238     VkImageSubresourceLayers    dstSubresource;
   2239     VkOffset3D                  dstOffset;
   2240     VkExtent3D                  extent;
   2241 } VkImageCopy;
   2242 
   2243 typedef struct VkImageBlit {
   2244     VkImageSubresourceLayers    srcSubresource;
   2245     VkOffset3D                  srcOffsets[2];
   2246     VkImageSubresourceLayers    dstSubresource;
   2247     VkOffset3D                  dstOffsets[2];
   2248 } VkImageBlit;
   2249 
   2250 typedef struct VkBufferImageCopy {
   2251     VkDeviceSize                bufferOffset;
   2252     uint32_t                    bufferRowLength;
   2253     uint32_t                    bufferImageHeight;
   2254     VkImageSubresourceLayers    imageSubresource;
   2255     VkOffset3D                  imageOffset;
   2256     VkExtent3D                  imageExtent;
   2257 } VkBufferImageCopy;
   2258 
   2259 typedef union VkClearColorValue {
   2260     float       float32[4];
   2261     int32_t     int32[4];
   2262     uint32_t    uint32[4];
   2263 } VkClearColorValue;
   2264 
   2265 typedef struct VkClearDepthStencilValue {
   2266     float       depth;
   2267     uint32_t    stencil;
   2268 } VkClearDepthStencilValue;
   2269 
   2270 typedef union VkClearValue {
   2271     VkClearColorValue           color;
   2272     VkClearDepthStencilValue    depthStencil;
   2273 } VkClearValue;
   2274 
   2275 typedef struct VkClearAttachment {
   2276     VkImageAspectFlags    aspectMask;
   2277     uint32_t              colorAttachment;
   2278     VkClearValue          clearValue;
   2279 } VkClearAttachment;
   2280 
   2281 typedef struct VkClearRect {
   2282     VkRect2D    rect;
   2283     uint32_t    baseArrayLayer;
   2284     uint32_t    layerCount;
   2285 } VkClearRect;
   2286 
   2287 typedef struct VkImageResolve {
   2288     VkImageSubresourceLayers    srcSubresource;
   2289     VkOffset3D                  srcOffset;
   2290     VkImageSubresourceLayers    dstSubresource;
   2291     VkOffset3D                  dstOffset;
   2292     VkExtent3D                  extent;
   2293 } VkImageResolve;
   2294 
   2295 typedef struct VkMemoryBarrier {
   2296     VkStructureType    sType;
   2297     const void*        pNext;
   2298     VkAccessFlags      srcAccessMask;
   2299     VkAccessFlags      dstAccessMask;
   2300 } VkMemoryBarrier;
   2301 
   2302 typedef struct VkBufferMemoryBarrier {
   2303     VkStructureType    sType;
   2304     const void*        pNext;
   2305     VkAccessFlags      srcAccessMask;
   2306     VkAccessFlags      dstAccessMask;
   2307     uint32_t           srcQueueFamilyIndex;
   2308     uint32_t           dstQueueFamilyIndex;
   2309     VkBuffer           buffer;
   2310     VkDeviceSize       offset;
   2311     VkDeviceSize       size;
   2312 } VkBufferMemoryBarrier;
   2313 
   2314 typedef struct VkImageMemoryBarrier {
   2315     VkStructureType            sType;
   2316     const void*                pNext;
   2317     VkAccessFlags              srcAccessMask;
   2318     VkAccessFlags              dstAccessMask;
   2319     VkImageLayout              oldLayout;
   2320     VkImageLayout              newLayout;
   2321     uint32_t                   srcQueueFamilyIndex;
   2322     uint32_t                   dstQueueFamilyIndex;
   2323     VkImage                    image;
   2324     VkImageSubresourceRange    subresourceRange;
   2325 } VkImageMemoryBarrier;
   2326 
   2327 typedef struct VkRenderPassBeginInfo {
   2328     VkStructureType        sType;
   2329     const void*            pNext;
   2330     VkRenderPass           renderPass;
   2331     VkFramebuffer          framebuffer;
   2332     VkRect2D               renderArea;
   2333     uint32_t               clearValueCount;
   2334     const VkClearValue*    pClearValues;
   2335 } VkRenderPassBeginInfo;
   2336 
   2337 typedef struct VkDispatchIndirectCommand {
   2338     uint32_t    x;
   2339     uint32_t    y;
   2340     uint32_t    z;
   2341 } VkDispatchIndirectCommand;
   2342 
   2343 typedef struct VkDrawIndexedIndirectCommand {
   2344     uint32_t    indexCount;
   2345     uint32_t    instanceCount;
   2346     uint32_t    firstIndex;
   2347     int32_t     vertexOffset;
   2348     uint32_t    firstInstance;
   2349 } VkDrawIndexedIndirectCommand;
   2350 
   2351 typedef struct VkDrawIndirectCommand {
   2352     uint32_t    vertexCount;
   2353     uint32_t    instanceCount;
   2354     uint32_t    firstVertex;
   2355     uint32_t    firstInstance;
   2356 } VkDrawIndirectCommand;
   2357 
   2358 
   2359 typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
   2360 typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator);
   2361 typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
   2362 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
   2363 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
   2364 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
   2365 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
   2366 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
   2367 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
   2368 typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName);
   2369 typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);
   2370 typedef VkResult (VKAPI_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
   2371 typedef void (VKAPI_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks* pAllocator);
   2372 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
   2373 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
   2374 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties);
   2375 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties);
   2376 typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
   2377 typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
   2378 typedef VkResult (VKAPI_PTR *PFN_vkQueueWaitIdle)(VkQueue queue);
   2379 typedef VkResult (VKAPI_PTR *PFN_vkDeviceWaitIdle)(VkDevice device);
   2380 typedef VkResult (VKAPI_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
   2381 typedef void (VKAPI_PTR *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);
   2382 typedef VkResult (VKAPI_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
   2383 typedef void (VKAPI_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory);
   2384 typedef VkResult (VKAPI_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
   2385 typedef VkResult (VKAPI_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
   2386 typedef void (VKAPI_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
   2387 typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
   2388 typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
   2389 typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
   2390 typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
   2391 typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
   2392 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties);
   2393 typedef VkResult (VKAPI_PTR *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
   2394 typedef VkResult (VKAPI_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
   2395 typedef void (VKAPI_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
   2396 typedef VkResult (VKAPI_PTR *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
   2397 typedef VkResult (VKAPI_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);
   2398 typedef VkResult (VKAPI_PTR *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
   2399 typedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
   2400 typedef void (VKAPI_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
   2401 typedef VkResult (VKAPI_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
   2402 typedef void (VKAPI_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
   2403 typedef VkResult (VKAPI_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);
   2404 typedef VkResult (VKAPI_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event);
   2405 typedef VkResult (VKAPI_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event);
   2406 typedef VkResult (VKAPI_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
   2407 typedef void (VKAPI_PTR *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator);
   2408 typedef VkResult (VKAPI_PTR *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
   2409 typedef VkResult (VKAPI_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
   2410 typedef void (VKAPI_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
   2411 typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
   2412 typedef void (VKAPI_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
   2413 typedef VkResult (VKAPI_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
   2414 typedef void (VKAPI_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
   2415 typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
   2416 typedef VkResult (VKAPI_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
   2417 typedef void (VKAPI_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
   2418 typedef VkResult (VKAPI_PTR *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule);
   2419 typedef void (VKAPI_PTR *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator);
   2420 typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
   2421 typedef void (VKAPI_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
   2422 typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
   2423 typedef VkResult (VKAPI_PTR *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
   2424 typedef VkResult (VKAPI_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
   2425 typedef VkResult (VKAPI_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
   2426 typedef void (VKAPI_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
   2427 typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
   2428 typedef void (VKAPI_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
   2429 typedef VkResult (VKAPI_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
   2430 typedef void (VKAPI_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
   2431 typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
   2432 typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
   2433 typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
   2434 typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator);
   2435 typedef VkResult (VKAPI_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
   2436 typedef VkResult (VKAPI_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
   2437 typedef VkResult (VKAPI_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
   2438 typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
   2439 typedef VkResult (VKAPI_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
   2440 typedef void (VKAPI_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
   2441 typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
   2442 typedef void (VKAPI_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
   2443 typedef void (VKAPI_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
   2444 typedef VkResult (VKAPI_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
   2445 typedef void (VKAPI_PTR *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator);
   2446 typedef VkResult (VKAPI_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
   2447 typedef VkResult (VKAPI_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
   2448 typedef void (VKAPI_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
   2449 typedef VkResult (VKAPI_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
   2450 typedef VkResult (VKAPI_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer);
   2451 typedef VkResult (VKAPI_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
   2452 typedef void (VKAPI_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
   2453 typedef void (VKAPI_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports);
   2454 typedef void (VKAPI_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors);
   2455 typedef void (VKAPI_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth);
   2456 typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
   2457 typedef void (VKAPI_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]);
   2458 typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
   2459 typedef void (VKAPI_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask);
   2460 typedef void (VKAPI_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask);
   2461 typedef void (VKAPI_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference);
   2462 typedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorSets)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets);
   2463 typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
   2464 typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
   2465 typedef void (VKAPI_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
   2466 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
   2467 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
   2468 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
   2469 typedef void (VKAPI_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
   2470 typedef void (VKAPI_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
   2471 typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
   2472 typedef void (VKAPI_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
   2473 typedef void (VKAPI_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
   2474 typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
   2475 typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
   2476 typedef void (VKAPI_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);
   2477 typedef void (VKAPI_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data);
   2478 typedef void (VKAPI_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
   2479 typedef void (VKAPI_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
   2480 typedef void (VKAPI_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
   2481 typedef void (VKAPI_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
   2482 typedef void (VKAPI_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
   2483 typedef void (VKAPI_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
   2484 typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);
   2485 typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier)(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);
   2486 typedef void (VKAPI_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags);
   2487 typedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query);
   2488 typedef void (VKAPI_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);
   2489 typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query);
   2490 typedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
   2491 typedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues);
   2492 typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
   2493 typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents);
   2494 typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer);
   2495 typedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
   2496 
   2497 #ifndef VK_NO_PROTOTYPES
   2498 VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
   2499     const VkInstanceCreateInfo*                 pCreateInfo,
   2500     const VkAllocationCallbacks*                pAllocator,
   2501     VkInstance*                                 pInstance);
   2502 
   2503 VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
   2504     VkInstance                                  instance,
   2505     const VkAllocationCallbacks*                pAllocator);
   2506 
   2507 VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices(
   2508     VkInstance                                  instance,
   2509     uint32_t*                                   pPhysicalDeviceCount,
   2510     VkPhysicalDevice*                           pPhysicalDevices);
   2511 
   2512 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures(
   2513     VkPhysicalDevice                            physicalDevice,
   2514     VkPhysicalDeviceFeatures*                   pFeatures);
   2515 
   2516 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(
   2517     VkPhysicalDevice                            physicalDevice,
   2518     VkFormat                                    format,
   2519     VkFormatProperties*                         pFormatProperties);
   2520 
   2521 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties(
   2522     VkPhysicalDevice                            physicalDevice,
   2523     VkFormat                                    format,
   2524     VkImageType                                 type,
   2525     VkImageTiling                               tiling,
   2526     VkImageUsageFlags                           usage,
   2527     VkImageCreateFlags                          flags,
   2528     VkImageFormatProperties*                    pImageFormatProperties);
   2529 
   2530 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties(
   2531     VkPhysicalDevice                            physicalDevice,
   2532     VkPhysicalDeviceProperties*                 pProperties);
   2533 
   2534 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties(
   2535     VkPhysicalDevice                            physicalDevice,
   2536     uint32_t*                                   pQueueFamilyPropertyCount,
   2537     VkQueueFamilyProperties*                    pQueueFamilyProperties);
   2538 
   2539 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(
   2540     VkPhysicalDevice                            physicalDevice,
   2541     VkPhysicalDeviceMemoryProperties*           pMemoryProperties);
   2542 
   2543 VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(
   2544     VkInstance                                  instance,
   2545     const char*                                 pName);
   2546 
   2547 VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(
   2548     VkDevice                                    device,
   2549     const char*                                 pName);
   2550 
   2551 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(
   2552     VkPhysicalDevice                            physicalDevice,
   2553     const VkDeviceCreateInfo*                   pCreateInfo,
   2554     const VkAllocationCallbacks*                pAllocator,
   2555     VkDevice*                                   pDevice);
   2556 
   2557 VKAPI_ATTR void VKAPI_CALL vkDestroyDevice(
   2558     VkDevice                                    device,
   2559     const VkAllocationCallbacks*                pAllocator);
   2560 
   2561 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties(
   2562     const char*                                 pLayerName,
   2563     uint32_t*                                   pPropertyCount,
   2564     VkExtensionProperties*                      pProperties);
   2565 
   2566 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties(
   2567     VkPhysicalDevice                            physicalDevice,
   2568     const char*                                 pLayerName,
   2569     uint32_t*                                   pPropertyCount,
   2570     VkExtensionProperties*                      pProperties);
   2571 
   2572 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties(
   2573     uint32_t*                                   pPropertyCount,
   2574     VkLayerProperties*                          pProperties);
   2575 
   2576 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties(
   2577     VkPhysicalDevice                            physicalDevice,
   2578     uint32_t*                                   pPropertyCount,
   2579     VkLayerProperties*                          pProperties);
   2580 
   2581 VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue(
   2582     VkDevice                                    device,
   2583     uint32_t                                    queueFamilyIndex,
   2584     uint32_t                                    queueIndex,
   2585     VkQueue*                                    pQueue);
   2586 
   2587 VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(
   2588     VkQueue                                     queue,
   2589     uint32_t                                    submitCount,
   2590     const VkSubmitInfo*                         pSubmits,
   2591     VkFence                                     fence);
   2592 
   2593 VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(
   2594     VkQueue                                     queue);
   2595 
   2596 VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(
   2597     VkDevice                                    device);
   2598 
   2599 VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(
   2600     VkDevice                                    device,
   2601     const VkMemoryAllocateInfo*                 pAllocateInfo,
   2602     const VkAllocationCallbacks*                pAllocator,
   2603     VkDeviceMemory*                             pMemory);
   2604 
   2605 VKAPI_ATTR void VKAPI_CALL vkFreeMemory(
   2606     VkDevice                                    device,
   2607     VkDeviceMemory                              memory,
   2608     const VkAllocationCallbacks*                pAllocator);
   2609 
   2610 VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(
   2611     VkDevice                                    device,
   2612     VkDeviceMemory                              memory,
   2613     VkDeviceSize                                offset,
   2614     VkDeviceSize                                size,
   2615     VkMemoryMapFlags                            flags,
   2616     void**                                      ppData);
   2617 
   2618 VKAPI_ATTR void VKAPI_CALL vkUnmapMemory(
   2619     VkDevice                                    device,
   2620     VkDeviceMemory                              memory);
   2621 
   2622 VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges(
   2623     VkDevice                                    device,
   2624     uint32_t                                    memoryRangeCount,
   2625     const VkMappedMemoryRange*                  pMemoryRanges);
   2626 
   2627 VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(
   2628     VkDevice                                    device,
   2629     uint32_t                                    memoryRangeCount,
   2630     const VkMappedMemoryRange*                  pMemoryRanges);
   2631 
   2632 VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment(
   2633     VkDevice                                    device,
   2634     VkDeviceMemory                              memory,
   2635     VkDeviceSize*                               pCommittedMemoryInBytes);
   2636 
   2637 VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(
   2638     VkDevice                                    device,
   2639     VkBuffer                                    buffer,
   2640     VkDeviceMemory                              memory,
   2641     VkDeviceSize                                memoryOffset);
   2642 
   2643 VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(
   2644     VkDevice                                    device,
   2645     VkImage                                     image,
   2646     VkDeviceMemory                              memory,
   2647     VkDeviceSize                                memoryOffset);
   2648 
   2649 VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements(
   2650     VkDevice                                    device,
   2651     VkBuffer                                    buffer,
   2652     VkMemoryRequirements*                       pMemoryRequirements);
   2653 
   2654 VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements(
   2655     VkDevice                                    device,
   2656     VkImage                                     image,
   2657     VkMemoryRequirements*                       pMemoryRequirements);
   2658 
   2659 VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements(
   2660     VkDevice                                    device,
   2661     VkImage                                     image,
   2662     uint32_t*                                   pSparseMemoryRequirementCount,
   2663     VkSparseImageMemoryRequirements*            pSparseMemoryRequirements);
   2664 
   2665 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties(
   2666     VkPhysicalDevice                            physicalDevice,
   2667     VkFormat                                    format,
   2668     VkImageType                                 type,
   2669     VkSampleCountFlagBits                       samples,
   2670     VkImageUsageFlags                           usage,
   2671     VkImageTiling                               tiling,
   2672     uint32_t*                                   pPropertyCount,
   2673     VkSparseImageFormatProperties*              pProperties);
   2674 
   2675 VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse(
   2676     VkQueue                                     queue,
   2677     uint32_t                                    bindInfoCount,
   2678     const VkBindSparseInfo*                     pBindInfo,
   2679     VkFence                                     fence);
   2680 
   2681 VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(
   2682     VkDevice                                    device,
   2683     const VkFenceCreateInfo*                    pCreateInfo,
   2684     const VkAllocationCallbacks*                pAllocator,
   2685     VkFence*                                    pFence);
   2686 
   2687 VKAPI_ATTR void VKAPI_CALL vkDestroyFence(
   2688     VkDevice                                    device,
   2689     VkFence                                     fence,
   2690     const VkAllocationCallbacks*                pAllocator);
   2691 
   2692 VKAPI_ATTR VkResult VKAPI_CALL vkResetFences(
   2693     VkDevice                                    device,
   2694     uint32_t                                    fenceCount,
   2695     const VkFence*                              pFences);
   2696 
   2697 VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(
   2698     VkDevice                                    device,
   2699     VkFence                                     fence);
   2700 
   2701 VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(
   2702     VkDevice                                    device,
   2703     uint32_t                                    fenceCount,
   2704     const VkFence*                              pFences,
   2705     VkBool32                                    waitAll,
   2706     uint64_t                                    timeout);
   2707 
   2708 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore(
   2709     VkDevice                                    device,
   2710     const VkSemaphoreCreateInfo*                pCreateInfo,
   2711     const VkAllocationCallbacks*                pAllocator,
   2712     VkSemaphore*                                pSemaphore);
   2713 
   2714 VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore(
   2715     VkDevice                                    device,
   2716     VkSemaphore                                 semaphore,
   2717     const VkAllocationCallbacks*                pAllocator);
   2718 
   2719 VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(
   2720     VkDevice                                    device,
   2721     const VkEventCreateInfo*                    pCreateInfo,
   2722     const VkAllocationCallbacks*                pAllocator,
   2723     VkEvent*                                    pEvent);
   2724 
   2725 VKAPI_ATTR void VKAPI_CALL vkDestroyEvent(
   2726     VkDevice                                    device,
   2727     VkEvent                                     event,
   2728     const VkAllocationCallbacks*                pAllocator);
   2729 
   2730 VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus(
   2731     VkDevice                                    device,
   2732     VkEvent                                     event);
   2733 
   2734 VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent(
   2735     VkDevice                                    device,
   2736     VkEvent                                     event);
   2737 
   2738 VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent(
   2739     VkDevice                                    device,
   2740     VkEvent                                     event);
   2741 
   2742 VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool(
   2743     VkDevice                                    device,
   2744     const VkQueryPoolCreateInfo*                pCreateInfo,
   2745     const VkAllocationCallbacks*                pAllocator,
   2746     VkQueryPool*                                pQueryPool);
   2747 
   2748 VKAPI_ATTR void VKAPI_CALL vkDestroyQueryPool(
   2749     VkDevice                                    device,
   2750     VkQueryPool                                 queryPool,
   2751     const VkAllocationCallbacks*                pAllocator);
   2752 
   2753 VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults(
   2754     VkDevice                                    device,
   2755     VkQueryPool                                 queryPool,
   2756     uint32_t                                    firstQuery,
   2757     uint32_t                                    queryCount,
   2758     size_t                                      dataSize,
   2759     void*                                       pData,
   2760     VkDeviceSize                                stride,
   2761     VkQueryResultFlags                          flags);
   2762 
   2763 VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(
   2764     VkDevice                                    device,
   2765     const VkBufferCreateInfo*                   pCreateInfo,
   2766     const VkAllocationCallbacks*                pAllocator,
   2767     VkBuffer*                                   pBuffer);
   2768 
   2769 VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(
   2770     VkDevice                                    device,
   2771     VkBuffer                                    buffer,
   2772     const VkAllocationCallbacks*                pAllocator);
   2773 
   2774 VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(
   2775     VkDevice                                    device,
   2776     const VkBufferViewCreateInfo*               pCreateInfo,
   2777     const VkAllocationCallbacks*                pAllocator,
   2778     VkBufferView*                               pView);
   2779 
   2780 VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView(
   2781     VkDevice                                    device,
   2782     VkBufferView                                bufferView,
   2783     const VkAllocationCallbacks*                pAllocator);
   2784 
   2785 VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(
   2786     VkDevice                                    device,
   2787     const VkImageCreateInfo*                    pCreateInfo,
   2788     const VkAllocationCallbacks*                pAllocator,
   2789     VkImage*                                    pImage);
   2790 
   2791 VKAPI_ATTR void VKAPI_CALL vkDestroyImage(
   2792     VkDevice                                    device,
   2793     VkImage                                     image,
   2794     const VkAllocationCallbacks*                pAllocator);
   2795 
   2796 VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout(
   2797     VkDevice                                    device,
   2798     VkImage                                     image,
   2799     const VkImageSubresource*                   pSubresource,
   2800     VkSubresourceLayout*                        pLayout);
   2801 
   2802 VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView(
   2803     VkDevice                                    device,
   2804     const VkImageViewCreateInfo*                pCreateInfo,
   2805     const VkAllocationCallbacks*                pAllocator,
   2806     VkImageView*                                pView);
   2807 
   2808 VKAPI_ATTR void VKAPI_CALL vkDestroyImageView(
   2809     VkDevice                                    device,
   2810     VkImageView                                 imageView,
   2811     const VkAllocationCallbacks*                pAllocator);
   2812 
   2813 VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderModule(
   2814     VkDevice                                    device,
   2815     const VkShaderModuleCreateInfo*             pCreateInfo,
   2816     const VkAllocationCallbacks*                pAllocator,
   2817     VkShaderModule*                             pShaderModule);
   2818 
   2819 VKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule(
   2820     VkDevice                                    device,
   2821     VkShaderModule                              shaderModule,
   2822     const VkAllocationCallbacks*                pAllocator);
   2823 
   2824 VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(
   2825     VkDevice                                    device,
   2826     const VkPipelineCacheCreateInfo*            pCreateInfo,
   2827     const VkAllocationCallbacks*                pAllocator,
   2828     VkPipelineCache*                            pPipelineCache);
   2829 
   2830 VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache(
   2831     VkDevice                                    device,
   2832     VkPipelineCache                             pipelineCache,
   2833     const VkAllocationCallbacks*                pAllocator);
   2834 
   2835 VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineCacheData(
   2836     VkDevice                                    device,
   2837     VkPipelineCache                             pipelineCache,
   2838     size_t*                                     pDataSize,
   2839     void*                                       pData);
   2840 
   2841 VKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches(
   2842     VkDevice                                    device,
   2843     VkPipelineCache                             dstCache,
   2844     uint32_t                                    srcCacheCount,
   2845     const VkPipelineCache*                      pSrcCaches);
   2846 
   2847 VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(
   2848     VkDevice                                    device,
   2849     VkPipelineCache                             pipelineCache,
   2850     uint32_t                                    createInfoCount,
   2851     const VkGraphicsPipelineCreateInfo*         pCreateInfos,
   2852     const VkAllocationCallbacks*                pAllocator,
   2853     VkPipeline*                                 pPipelines);
   2854 
   2855 VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines(
   2856     VkDevice                                    device,
   2857     VkPipelineCache                             pipelineCache,
   2858     uint32_t                                    createInfoCount,
   2859     const VkComputePipelineCreateInfo*          pCreateInfos,
   2860     const VkAllocationCallbacks*                pAllocator,
   2861     VkPipeline*                                 pPipelines);
   2862 
   2863 VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline(
   2864     VkDevice                                    device,
   2865     VkPipeline                                  pipeline,
   2866     const VkAllocationCallbacks*                pAllocator);
   2867 
   2868 VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout(
   2869     VkDevice                                    device,
   2870     const VkPipelineLayoutCreateInfo*           pCreateInfo,
   2871     const VkAllocationCallbacks*                pAllocator,
   2872     VkPipelineLayout*                           pPipelineLayout);
   2873 
   2874 VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout(
   2875     VkDevice                                    device,
   2876     VkPipelineLayout                            pipelineLayout,
   2877     const VkAllocationCallbacks*                pAllocator);
   2878 
   2879 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler(
   2880     VkDevice                                    device,
   2881     const VkSamplerCreateInfo*                  pCreateInfo,
   2882     const VkAllocationCallbacks*                pAllocator,
   2883     VkSampler*                                  pSampler);
   2884 
   2885 VKAPI_ATTR void VKAPI_CALL vkDestroySampler(
   2886     VkDevice                                    device,
   2887     VkSampler                                   sampler,
   2888     const VkAllocationCallbacks*                pAllocator);
   2889 
   2890 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout(
   2891     VkDevice                                    device,
   2892     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
   2893     const VkAllocationCallbacks*                pAllocator,
   2894     VkDescriptorSetLayout*                      pSetLayout);
   2895 
   2896 VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout(
   2897     VkDevice                                    device,
   2898     VkDescriptorSetLayout                       descriptorSetLayout,
   2899     const VkAllocationCallbacks*                pAllocator);
   2900 
   2901 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool(
   2902     VkDevice                                    device,
   2903     const VkDescriptorPoolCreateInfo*           pCreateInfo,
   2904     const VkAllocationCallbacks*                pAllocator,
   2905     VkDescriptorPool*                           pDescriptorPool);
   2906 
   2907 VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorPool(
   2908     VkDevice                                    device,
   2909     VkDescriptorPool                            descriptorPool,
   2910     const VkAllocationCallbacks*                pAllocator);
   2911 
   2912 VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool(
   2913     VkDevice                                    device,
   2914     VkDescriptorPool                            descriptorPool,
   2915     VkDescriptorPoolResetFlags                  flags);
   2916 
   2917 VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(
   2918     VkDevice                                    device,
   2919     const VkDescriptorSetAllocateInfo*          pAllocateInfo,
   2920     VkDescriptorSet*                            pDescriptorSets);
   2921 
   2922 VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets(
   2923     VkDevice                                    device,
   2924     VkDescriptorPool                            descriptorPool,
   2925     uint32_t                                    descriptorSetCount,
   2926     const VkDescriptorSet*                      pDescriptorSets);
   2927 
   2928 VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets(
   2929     VkDevice                                    device,
   2930     uint32_t                                    descriptorWriteCount,
   2931     const VkWriteDescriptorSet*                 pDescriptorWrites,
   2932     uint32_t                                    descriptorCopyCount,
   2933     const VkCopyDescriptorSet*                  pDescriptorCopies);
   2934 
   2935 VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(
   2936     VkDevice                                    device,
   2937     const VkFramebufferCreateInfo*              pCreateInfo,
   2938     const VkAllocationCallbacks*                pAllocator,
   2939     VkFramebuffer*                              pFramebuffer);
   2940 
   2941 VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer(
   2942     VkDevice                                    device,
   2943     VkFramebuffer                               framebuffer,
   2944     const VkAllocationCallbacks*                pAllocator);
   2945 
   2946 VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(
   2947     VkDevice                                    device,
   2948     const VkRenderPassCreateInfo*               pCreateInfo,
   2949     const VkAllocationCallbacks*                pAllocator,
   2950     VkRenderPass*                               pRenderPass);
   2951 
   2952 VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass(
   2953     VkDevice                                    device,
   2954     VkRenderPass                                renderPass,
   2955     const VkAllocationCallbacks*                pAllocator);
   2956 
   2957 VKAPI_ATTR void VKAPI_CALL vkGetRenderAreaGranularity(
   2958     VkDevice                                    device,
   2959     VkRenderPass                                renderPass,
   2960     VkExtent2D*                                 pGranularity);
   2961 
   2962 VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool(
   2963     VkDevice                                    device,
   2964     const VkCommandPoolCreateInfo*              pCreateInfo,
   2965     const VkAllocationCallbacks*                pAllocator,
   2966     VkCommandPool*                              pCommandPool);
   2967 
   2968 VKAPI_ATTR void VKAPI_CALL vkDestroyCommandPool(
   2969     VkDevice                                    device,
   2970     VkCommandPool                               commandPool,
   2971     const VkAllocationCallbacks*                pAllocator);
   2972 
   2973 VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool(
   2974     VkDevice                                    device,
   2975     VkCommandPool                               commandPool,
   2976     VkCommandPoolResetFlags                     flags);
   2977 
   2978 VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(
   2979     VkDevice                                    device,
   2980     const VkCommandBufferAllocateInfo*          pAllocateInfo,
   2981     VkCommandBuffer*                            pCommandBuffers);
   2982 
   2983 VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers(
   2984     VkDevice                                    device,
   2985     VkCommandPool                               commandPool,
   2986     uint32_t                                    commandBufferCount,
   2987     const VkCommandBuffer*                      pCommandBuffers);
   2988 
   2989 VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(
   2990     VkCommandBuffer                             commandBuffer,
   2991     const VkCommandBufferBeginInfo*             pBeginInfo);
   2992 
   2993 VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer(
   2994     VkCommandBuffer                             commandBuffer);
   2995 
   2996 VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer(
   2997     VkCommandBuffer                             commandBuffer,
   2998     VkCommandBufferResetFlags                   flags);
   2999 
   3000 VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(
   3001     VkCommandBuffer                             commandBuffer,
   3002     VkPipelineBindPoint                         pipelineBindPoint,
   3003     VkPipeline                                  pipeline);
   3004 
   3005 VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(
   3006     VkCommandBuffer                             commandBuffer,
   3007     uint32_t                                    firstViewport,
   3008     uint32_t                                    viewportCount,
   3009     const VkViewport*                           pViewports);
   3010 
   3011 VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor(
   3012     VkCommandBuffer                             commandBuffer,
   3013     uint32_t                                    firstScissor,
   3014     uint32_t                                    scissorCount,
   3015     const VkRect2D*                             pScissors);
   3016 
   3017 VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth(
   3018     VkCommandBuffer                             commandBuffer,
   3019     float                                       lineWidth);
   3020 
   3021 VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias(
   3022     VkCommandBuffer                             commandBuffer,
   3023     float                                       depthBiasConstantFactor,
   3024     float                                       depthBiasClamp,
   3025     float                                       depthBiasSlopeFactor);
   3026 
   3027 VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants(
   3028     VkCommandBuffer                             commandBuffer,
   3029     const float                                 blendConstants[4]);
   3030 
   3031 VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds(
   3032     VkCommandBuffer                             commandBuffer,
   3033     float                                       minDepthBounds,
   3034     float                                       maxDepthBounds);
   3035 
   3036 VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask(
   3037     VkCommandBuffer                             commandBuffer,
   3038     VkStencilFaceFlags                          faceMask,
   3039     uint32_t                                    compareMask);
   3040 
   3041 VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask(
   3042     VkCommandBuffer                             commandBuffer,
   3043     VkStencilFaceFlags                          faceMask,
   3044     uint32_t                                    writeMask);
   3045 
   3046 VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference(
   3047     VkCommandBuffer                             commandBuffer,
   3048     VkStencilFaceFlags                          faceMask,
   3049     uint32_t                                    reference);
   3050 
   3051 VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(
   3052     VkCommandBuffer                             commandBuffer,
   3053     VkPipelineBindPoint                         pipelineBindPoint,
   3054     VkPipelineLayout                            layout,
   3055     uint32_t                                    firstSet,
   3056     uint32_t                                    descriptorSetCount,
   3057     const VkDescriptorSet*                      pDescriptorSets,
   3058     uint32_t                                    dynamicOffsetCount,
   3059     const uint32_t*                             pDynamicOffsets);
   3060 
   3061 VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(
   3062     VkCommandBuffer                             commandBuffer,
   3063     VkBuffer                                    buffer,
   3064     VkDeviceSize                                offset,
   3065     VkIndexType                                 indexType);
   3066 
   3067 VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(
   3068     VkCommandBuffer                             commandBuffer,
   3069     uint32_t                                    firstBinding,
   3070     uint32_t                                    bindingCount,
   3071     const VkBuffer*                             pBuffers,
   3072     const VkDeviceSize*                         pOffsets);
   3073 
   3074 VKAPI_ATTR void VKAPI_CALL vkCmdDraw(
   3075     VkCommandBuffer                             commandBuffer,
   3076     uint32_t                                    vertexCount,
   3077     uint32_t                                    instanceCount,
   3078     uint32_t                                    firstVertex,
   3079     uint32_t                                    firstInstance);
   3080 
   3081 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed(
   3082     VkCommandBuffer                             commandBuffer,
   3083     uint32_t                                    indexCount,
   3084     uint32_t                                    instanceCount,
   3085     uint32_t                                    firstIndex,
   3086     int32_t                                     vertexOffset,
   3087     uint32_t                                    firstInstance);
   3088 
   3089 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(
   3090     VkCommandBuffer                             commandBuffer,
   3091     VkBuffer                                    buffer,
   3092     VkDeviceSize                                offset,
   3093     uint32_t                                    drawCount,
   3094     uint32_t                                    stride);
   3095 
   3096 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(
   3097     VkCommandBuffer                             commandBuffer,
   3098     VkBuffer                                    buffer,
   3099     VkDeviceSize                                offset,
   3100     uint32_t                                    drawCount,
   3101     uint32_t                                    stride);
   3102 
   3103 VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(
   3104     VkCommandBuffer                             commandBuffer,
   3105     uint32_t                                    groupCountX,
   3106     uint32_t                                    groupCountY,
   3107     uint32_t                                    groupCountZ);
   3108 
   3109 VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(
   3110     VkCommandBuffer                             commandBuffer,
   3111     VkBuffer                                    buffer,
   3112     VkDeviceSize                                offset);
   3113 
   3114 VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(
   3115     VkCommandBuffer                             commandBuffer,
   3116     VkBuffer                                    srcBuffer,
   3117     VkBuffer                                    dstBuffer,
   3118     uint32_t                                    regionCount,
   3119     const VkBufferCopy*                         pRegions);
   3120 
   3121 VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(
   3122     VkCommandBuffer                             commandBuffer,
   3123     VkImage                                     srcImage,
   3124     VkImageLayout                               srcImageLayout,
   3125     VkImage                                     dstImage,
   3126     VkImageLayout                               dstImageLayout,
   3127     uint32_t                                    regionCount,
   3128     const VkImageCopy*                          pRegions);
   3129 
   3130 VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(
   3131     VkCommandBuffer                             commandBuffer,
   3132     VkImage                                     srcImage,
   3133     VkImageLayout                               srcImageLayout,
   3134     VkImage                                     dstImage,
   3135     VkImageLayout                               dstImageLayout,
   3136     uint32_t                                    regionCount,
   3137     const VkImageBlit*                          pRegions,
   3138     VkFilter                                    filter);
   3139 
   3140 VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(
   3141     VkCommandBuffer                             commandBuffer,
   3142     VkBuffer                                    srcBuffer,
   3143     VkImage                                     dstImage,
   3144     VkImageLayout                               dstImageLayout,
   3145     uint32_t                                    regionCount,
   3146     const VkBufferImageCopy*                    pRegions);
   3147 
   3148 VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(
   3149     VkCommandBuffer                             commandBuffer,
   3150     VkImage                                     srcImage,
   3151     VkImageLayout                               srcImageLayout,
   3152     VkBuffer                                    dstBuffer,
   3153     uint32_t                                    regionCount,
   3154     const VkBufferImageCopy*                    pRegions);
   3155 
   3156 VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(
   3157     VkCommandBuffer                             commandBuffer,
   3158     VkBuffer                                    dstBuffer,
   3159     VkDeviceSize                                dstOffset,
   3160     VkDeviceSize                                dataSize,
   3161     const void*                                 pData);
   3162 
   3163 VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(
   3164     VkCommandBuffer                             commandBuffer,
   3165     VkBuffer                                    dstBuffer,
   3166     VkDeviceSize                                dstOffset,
   3167     VkDeviceSize                                size,
   3168     uint32_t                                    data);
   3169 
   3170 VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(
   3171     VkCommandBuffer                             commandBuffer,
   3172     VkImage                                     image,
   3173     VkImageLayout                               imageLayout,
   3174     const VkClearColorValue*                    pColor,
   3175     uint32_t                                    rangeCount,
   3176     const VkImageSubresourceRange*              pRanges);
   3177 
   3178 VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(
   3179     VkCommandBuffer                             commandBuffer,
   3180     VkImage                                     image,
   3181     VkImageLayout                               imageLayout,
   3182     const VkClearDepthStencilValue*             pDepthStencil,
   3183     uint32_t                                    rangeCount,
   3184     const VkImageSubresourceRange*              pRanges);
   3185 
   3186 VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments(
   3187     VkCommandBuffer                             commandBuffer,
   3188     uint32_t                                    attachmentCount,
   3189     const VkClearAttachment*                    pAttachments,
   3190     uint32_t                                    rectCount,
   3191     const VkClearRect*                          pRects);
   3192 
   3193 VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(
   3194     VkCommandBuffer                             commandBuffer,
   3195     VkImage                                     srcImage,
   3196     VkImageLayout                               srcImageLayout,
   3197     VkImage                                     dstImage,
   3198     VkImageLayout                               dstImageLayout,
   3199     uint32_t                                    regionCount,
   3200     const VkImageResolve*                       pRegions);
   3201 
   3202 VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(
   3203     VkCommandBuffer                             commandBuffer,
   3204     VkEvent                                     event,
   3205     VkPipelineStageFlags                        stageMask);
   3206 
   3207 VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(
   3208     VkCommandBuffer                             commandBuffer,
   3209     VkEvent                                     event,
   3210     VkPipelineStageFlags                        stageMask);
   3211 
   3212 VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents(
   3213     VkCommandBuffer                             commandBuffer,
   3214     uint32_t                                    eventCount,
   3215     const VkEvent*                              pEvents,
   3216     VkPipelineStageFlags                        srcStageMask,
   3217     VkPipelineStageFlags                        dstStageMask,
   3218     uint32_t                                    memoryBarrierCount,
   3219     const VkMemoryBarrier*                      pMemoryBarriers,
   3220     uint32_t                                    bufferMemoryBarrierCount,
   3221     const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
   3222     uint32_t                                    imageMemoryBarrierCount,
   3223     const VkImageMemoryBarrier*                 pImageMemoryBarriers);
   3224 
   3225 VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier(
   3226     VkCommandBuffer                             commandBuffer,
   3227     VkPipelineStageFlags                        srcStageMask,
   3228     VkPipelineStageFlags                        dstStageMask,
   3229     VkDependencyFlags                           dependencyFlags,
   3230     uint32_t                                    memoryBarrierCount,
   3231     const VkMemoryBarrier*                      pMemoryBarriers,
   3232     uint32_t                                    bufferMemoryBarrierCount,
   3233     const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
   3234     uint32_t                                    imageMemoryBarrierCount,
   3235     const VkImageMemoryBarrier*                 pImageMemoryBarriers);
   3236 
   3237 VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(
   3238     VkCommandBuffer                             commandBuffer,
   3239     VkQueryPool                                 queryPool,
   3240     uint32_t                                    query,
   3241     VkQueryControlFlags                         flags);
   3242 
   3243 VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(
   3244     VkCommandBuffer                             commandBuffer,
   3245     VkQueryPool                                 queryPool,
   3246     uint32_t                                    query);
   3247 
   3248 VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(
   3249     VkCommandBuffer                             commandBuffer,
   3250     VkQueryPool                                 queryPool,
   3251     uint32_t                                    firstQuery,
   3252     uint32_t                                    queryCount);
   3253 
   3254 VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(
   3255     VkCommandBuffer                             commandBuffer,
   3256     VkPipelineStageFlagBits                     pipelineStage,
   3257     VkQueryPool                                 queryPool,
   3258     uint32_t                                    query);
   3259 
   3260 VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(
   3261     VkCommandBuffer                             commandBuffer,
   3262     VkQueryPool                                 queryPool,
   3263     uint32_t                                    firstQuery,
   3264     uint32_t                                    queryCount,
   3265     VkBuffer                                    dstBuffer,
   3266     VkDeviceSize                                dstOffset,
   3267     VkDeviceSize                                stride,
   3268     VkQueryResultFlags                          flags);
   3269 
   3270 VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(
   3271     VkCommandBuffer                             commandBuffer,
   3272     VkPipelineLayout                            layout,
   3273     VkShaderStageFlags                          stageFlags,
   3274     uint32_t                                    offset,
   3275     uint32_t                                    size,
   3276     const void*                                 pValues);
   3277 
   3278 VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(
   3279     VkCommandBuffer                             commandBuffer,
   3280     const VkRenderPassBeginInfo*                pRenderPassBegin,
   3281     VkSubpassContents                           contents);
   3282 
   3283 VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass(
   3284     VkCommandBuffer                             commandBuffer,
   3285     VkSubpassContents                           contents);
   3286 
   3287 VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass(
   3288     VkCommandBuffer                             commandBuffer);
   3289 
   3290 VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(
   3291     VkCommandBuffer                             commandBuffer,
   3292     uint32_t                                    commandBufferCount,
   3293     const VkCommandBuffer*                      pCommandBuffers);
   3294 #endif
   3295 
   3296 #define VK_KHR_surface 1
   3297 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
   3298 
   3299 #define VK_KHR_SURFACE_SPEC_VERSION       25
   3300 #define VK_KHR_SURFACE_EXTENSION_NAME     "VK_KHR_surface"
   3301 #define VK_COLORSPACE_SRGB_NONLINEAR_KHR  VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
   3302 
   3303 
   3304 typedef enum VkColorSpaceKHR {
   3305     VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,
   3306     VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
   3307     VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
   3308     VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003,
   3309     VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
   3310     VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
   3311     VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
   3312     VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
   3313     VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
   3314     VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
   3315     VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
   3316     VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
   3317     VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
   3318     VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
   3319     VK_COLOR_SPACE_BEGIN_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
   3320     VK_COLOR_SPACE_END_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
   3321     VK_COLOR_SPACE_RANGE_SIZE_KHR = (VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR + 1),
   3322     VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF
   3323 } VkColorSpaceKHR;
   3324 
   3325 typedef enum VkPresentModeKHR {
   3326     VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
   3327     VK_PRESENT_MODE_MAILBOX_KHR = 1,
   3328     VK_PRESENT_MODE_FIFO_KHR = 2,
   3329     VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,
   3330     VK_PRESENT_MODE_BEGIN_RANGE_KHR = VK_PRESENT_MODE_IMMEDIATE_KHR,
   3331     VK_PRESENT_MODE_END_RANGE_KHR = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
   3332     VK_PRESENT_MODE_RANGE_SIZE_KHR = (VK_PRESENT_MODE_FIFO_RELAXED_KHR - VK_PRESENT_MODE_IMMEDIATE_KHR + 1),
   3333     VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
   3334 } VkPresentModeKHR;
   3335 
   3336 
   3337 typedef enum VkSurfaceTransformFlagBitsKHR {
   3338     VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
   3339     VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
   3340     VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
   3341     VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
   3342     VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
   3343     VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
   3344     VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
   3345     VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
   3346     VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
   3347     VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
   3348 } VkSurfaceTransformFlagBitsKHR;
   3349 typedef VkFlags VkSurfaceTransformFlagsKHR;
   3350 
   3351 typedef enum VkCompositeAlphaFlagBitsKHR {
   3352     VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
   3353     VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
   3354     VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
   3355     VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
   3356     VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
   3357 } VkCompositeAlphaFlagBitsKHR;
   3358 typedef VkFlags VkCompositeAlphaFlagsKHR;
   3359 
   3360 typedef struct VkSurfaceCapabilitiesKHR {
   3361     uint32_t                         minImageCount;
   3362     uint32_t                         maxImageCount;
   3363     VkExtent2D                       currentExtent;
   3364     VkExtent2D                       minImageExtent;
   3365     VkExtent2D                       maxImageExtent;
   3366     uint32_t                         maxImageArrayLayers;
   3367     VkSurfaceTransformFlagsKHR       supportedTransforms;
   3368     VkSurfaceTransformFlagBitsKHR    currentTransform;
   3369     VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
   3370     VkImageUsageFlags                supportedUsageFlags;
   3371 } VkSurfaceCapabilitiesKHR;
   3372 
   3373 typedef struct VkSurfaceFormatKHR {
   3374     VkFormat           format;
   3375     VkColorSpaceKHR    colorSpace;
   3376 } VkSurfaceFormatKHR;
   3377 
   3378 
   3379 typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator);
   3380 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
   3381 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
   3382 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
   3383 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
   3384 
   3385 #ifndef VK_NO_PROTOTYPES
   3386 VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
   3387     VkInstance                                  instance,
   3388     VkSurfaceKHR                                surface,
   3389     const VkAllocationCallbacks*                pAllocator);
   3390 
   3391 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
   3392     VkPhysicalDevice                            physicalDevice,
   3393     uint32_t                                    queueFamilyIndex,
   3394     VkSurfaceKHR                                surface,
   3395     VkBool32*                                   pSupported);
   3396 
   3397 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
   3398     VkPhysicalDevice                            physicalDevice,
   3399     VkSurfaceKHR                                surface,
   3400     VkSurfaceCapabilitiesKHR*                   pSurfaceCapabilities);
   3401 
   3402 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR(
   3403     VkPhysicalDevice                            physicalDevice,
   3404     VkSurfaceKHR                                surface,
   3405     uint32_t*                                   pSurfaceFormatCount,
   3406     VkSurfaceFormatKHR*                         pSurfaceFormats);
   3407 
   3408 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
   3409     VkPhysicalDevice                            physicalDevice,
   3410     VkSurfaceKHR                                surface,
   3411     uint32_t*                                   pPresentModeCount,
   3412     VkPresentModeKHR*                           pPresentModes);
   3413 #endif
   3414 
   3415 #define VK_KHR_swapchain 1
   3416 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
   3417 
   3418 #define VK_KHR_SWAPCHAIN_SPEC_VERSION     68
   3419 #define VK_KHR_SWAPCHAIN_EXTENSION_NAME   "VK_KHR_swapchain"
   3420 
   3421 
   3422 typedef enum VkSwapchainCreateFlagBitsKHR {
   3423     VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX = 0x00000001,
   3424     VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
   3425 } VkSwapchainCreateFlagBitsKHR;
   3426 typedef VkFlags VkSwapchainCreateFlagsKHR;
   3427 
   3428 typedef struct VkSwapchainCreateInfoKHR {
   3429     VkStructureType                  sType;
   3430     const void*                      pNext;
   3431     VkSwapchainCreateFlagsKHR        flags;
   3432     VkSurfaceKHR                     surface;
   3433     uint32_t                         minImageCount;
   3434     VkFormat                         imageFormat;
   3435     VkColorSpaceKHR                  imageColorSpace;
   3436     VkExtent2D                       imageExtent;
   3437     uint32_t                         imageArrayLayers;
   3438     VkImageUsageFlags                imageUsage;
   3439     VkSharingMode                    imageSharingMode;
   3440     uint32_t                         queueFamilyIndexCount;
   3441     const uint32_t*                  pQueueFamilyIndices;
   3442     VkSurfaceTransformFlagBitsKHR    preTransform;
   3443     VkCompositeAlphaFlagBitsKHR      compositeAlpha;
   3444     VkPresentModeKHR                 presentMode;
   3445     VkBool32                         clipped;
   3446     VkSwapchainKHR                   oldSwapchain;
   3447 } VkSwapchainCreateInfoKHR;
   3448 
   3449 typedef struct VkPresentInfoKHR {
   3450     VkStructureType          sType;
   3451     const void*              pNext;
   3452     uint32_t                 waitSemaphoreCount;
   3453     const VkSemaphore*       pWaitSemaphores;
   3454     uint32_t                 swapchainCount;
   3455     const VkSwapchainKHR*    pSwapchains;
   3456     const uint32_t*          pImageIndices;
   3457     VkResult*                pResults;
   3458 } VkPresentInfoKHR;
   3459 
   3460 
   3461 typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain);
   3462 typedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator);
   3463 typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages);
   3464 typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex);
   3465 typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR* pPresentInfo);
   3466 
   3467 #ifndef VK_NO_PROTOTYPES
   3468 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(
   3469     VkDevice                                    device,
   3470     const VkSwapchainCreateInfoKHR*             pCreateInfo,
   3471     const VkAllocationCallbacks*                pAllocator,
   3472     VkSwapchainKHR*                             pSwapchain);
   3473 
   3474 VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR(
   3475     VkDevice                                    device,
   3476     VkSwapchainKHR                              swapchain,
   3477     const VkAllocationCallbacks*                pAllocator);
   3478 
   3479 VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR(
   3480     VkDevice                                    device,
   3481     VkSwapchainKHR                              swapchain,
   3482     uint32_t*                                   pSwapchainImageCount,
   3483     VkImage*                                    pSwapchainImages);
   3484 
   3485 VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(
   3486     VkDevice                                    device,
   3487     VkSwapchainKHR                              swapchain,
   3488     uint64_t                                    timeout,
   3489     VkSemaphore                                 semaphore,
   3490     VkFence                                     fence,
   3491     uint32_t*                                   pImageIndex);
   3492 
   3493 VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
   3494     VkQueue                                     queue,
   3495     const VkPresentInfoKHR*                     pPresentInfo);
   3496 #endif
   3497 
   3498 #define VK_KHR_display 1
   3499 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
   3500 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
   3501 
   3502 #define VK_KHR_DISPLAY_SPEC_VERSION       21
   3503 #define VK_KHR_DISPLAY_EXTENSION_NAME     "VK_KHR_display"
   3504 
   3505 
   3506 typedef enum VkDisplayPlaneAlphaFlagBitsKHR {
   3507     VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
   3508     VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
   3509     VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
   3510     VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
   3511     VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
   3512 } VkDisplayPlaneAlphaFlagBitsKHR;
   3513 typedef VkFlags VkDisplayPlaneAlphaFlagsKHR;
   3514 typedef VkFlags VkDisplayModeCreateFlagsKHR;
   3515 typedef VkFlags VkDisplaySurfaceCreateFlagsKHR;
   3516 
   3517 typedef struct VkDisplayPropertiesKHR {
   3518     VkDisplayKHR                  display;
   3519     const char*                   displayName;
   3520     VkExtent2D                    physicalDimensions;
   3521     VkExtent2D                    physicalResolution;
   3522     VkSurfaceTransformFlagsKHR    supportedTransforms;
   3523     VkBool32                      planeReorderPossible;
   3524     VkBool32                      persistentContent;
   3525 } VkDisplayPropertiesKHR;
   3526 
   3527 typedef struct VkDisplayModeParametersKHR {
   3528     VkExtent2D    visibleRegion;
   3529     uint32_t      refreshRate;
   3530 } VkDisplayModeParametersKHR;
   3531 
   3532 typedef struct VkDisplayModePropertiesKHR {
   3533     VkDisplayModeKHR              displayMode;
   3534     VkDisplayModeParametersKHR    parameters;
   3535 } VkDisplayModePropertiesKHR;
   3536 
   3537 typedef struct VkDisplayModeCreateInfoKHR {
   3538     VkStructureType                sType;
   3539     const void*                    pNext;
   3540     VkDisplayModeCreateFlagsKHR    flags;
   3541     VkDisplayModeParametersKHR     parameters;
   3542 } VkDisplayModeCreateInfoKHR;
   3543 
   3544 typedef struct VkDisplayPlaneCapabilitiesKHR {
   3545     VkDisplayPlaneAlphaFlagsKHR    supportedAlpha;
   3546     VkOffset2D                     minSrcPosition;
   3547     VkOffset2D                     maxSrcPosition;
   3548     VkExtent2D                     minSrcExtent;
   3549     VkExtent2D                     maxSrcExtent;
   3550     VkOffset2D                     minDstPosition;
   3551     VkOffset2D                     maxDstPosition;
   3552     VkExtent2D                     minDstExtent;
   3553     VkExtent2D                     maxDstExtent;
   3554 } VkDisplayPlaneCapabilitiesKHR;
   3555 
   3556 typedef struct VkDisplayPlanePropertiesKHR {
   3557     VkDisplayKHR    currentDisplay;
   3558     uint32_t        currentStackIndex;
   3559 } VkDisplayPlanePropertiesKHR;
   3560 
   3561 typedef struct VkDisplaySurfaceCreateInfoKHR {
   3562     VkStructureType                   sType;
   3563     const void*                       pNext;
   3564     VkDisplaySurfaceCreateFlagsKHR    flags;
   3565     VkDisplayModeKHR                  displayMode;
   3566     uint32_t                          planeIndex;
   3567     uint32_t                          planeStackIndex;
   3568     VkSurfaceTransformFlagBitsKHR     transform;
   3569     float                             globalAlpha;
   3570     VkDisplayPlaneAlphaFlagBitsKHR    alphaMode;
   3571     VkExtent2D                        imageExtent;
   3572 } VkDisplaySurfaceCreateInfoKHR;
   3573 
   3574 
   3575 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
   3576 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
   3577 typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays);
   3578 typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
   3579 typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
   3580 typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
   3581 typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
   3582 
   3583 #ifndef VK_NO_PROTOTYPES
   3584 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR(
   3585     VkPhysicalDevice                            physicalDevice,
   3586     uint32_t*                                   pPropertyCount,
   3587     VkDisplayPropertiesKHR*                     pProperties);
   3588 
   3589 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
   3590     VkPhysicalDevice                            physicalDevice,
   3591     uint32_t*                                   pPropertyCount,
   3592     VkDisplayPlanePropertiesKHR*                pProperties);
   3593 
   3594 VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR(
   3595     VkPhysicalDevice                            physicalDevice,
   3596     uint32_t                                    planeIndex,
   3597     uint32_t*                                   pDisplayCount,
   3598     VkDisplayKHR*                               pDisplays);
   3599 
   3600 VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR(
   3601     VkPhysicalDevice                            physicalDevice,
   3602     VkDisplayKHR                                display,
   3603     uint32_t*                                   pPropertyCount,
   3604     VkDisplayModePropertiesKHR*                 pProperties);
   3605 
   3606 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR(
   3607     VkPhysicalDevice                            physicalDevice,
   3608     VkDisplayKHR                                display,
   3609     const VkDisplayModeCreateInfoKHR*           pCreateInfo,
   3610     const VkAllocationCallbacks*                pAllocator,
   3611     VkDisplayModeKHR*                           pMode);
   3612 
   3613 VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR(
   3614     VkPhysicalDevice                            physicalDevice,
   3615     VkDisplayModeKHR                            mode,
   3616     uint32_t                                    planeIndex,
   3617     VkDisplayPlaneCapabilitiesKHR*              pCapabilities);
   3618 
   3619 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
   3620     VkInstance                                  instance,
   3621     const VkDisplaySurfaceCreateInfoKHR*        pCreateInfo,
   3622     const VkAllocationCallbacks*                pAllocator,
   3623     VkSurfaceKHR*                               pSurface);
   3624 #endif
   3625 
   3626 #define VK_KHR_display_swapchain 1
   3627 #define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 9
   3628 #define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
   3629 
   3630 typedef struct VkDisplayPresentInfoKHR {
   3631     VkStructureType    sType;
   3632     const void*        pNext;
   3633     VkRect2D           srcRect;
   3634     VkRect2D           dstRect;
   3635     VkBool32           persistent;
   3636 } VkDisplayPresentInfoKHR;
   3637 
   3638 
   3639 typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains);
   3640 
   3641 #ifndef VK_NO_PROTOTYPES
   3642 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR(
   3643     VkDevice                                    device,
   3644     uint32_t                                    swapchainCount,
   3645     const VkSwapchainCreateInfoKHR*             pCreateInfos,
   3646     const VkAllocationCallbacks*                pAllocator,
   3647     VkSwapchainKHR*                             pSwapchains);
   3648 #endif
   3649 
   3650 #define VK_KHR_sampler_mirror_clamp_to_edge 1
   3651 #define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 1
   3652 #define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME "VK_KHR_sampler_mirror_clamp_to_edge"
   3653 
   3654 
   3655 #define VK_KHR_get_physical_device_properties2 1
   3656 #define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 1
   3657 #define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2"
   3658 
   3659 typedef struct VkPhysicalDeviceFeatures2KHR {
   3660     VkStructureType             sType;
   3661     void*                       pNext;
   3662     VkPhysicalDeviceFeatures    features;
   3663 } VkPhysicalDeviceFeatures2KHR;
   3664 
   3665 typedef struct VkPhysicalDeviceProperties2KHR {
   3666     VkStructureType               sType;
   3667     void*                         pNext;
   3668     VkPhysicalDeviceProperties    properties;
   3669 } VkPhysicalDeviceProperties2KHR;
   3670 
   3671 typedef struct VkFormatProperties2KHR {
   3672     VkStructureType       sType;
   3673     void*                 pNext;
   3674     VkFormatProperties    formatProperties;
   3675 } VkFormatProperties2KHR;
   3676 
   3677 typedef struct VkImageFormatProperties2KHR {
   3678     VkStructureType            sType;
   3679     void*                      pNext;
   3680     VkImageFormatProperties    imageFormatProperties;
   3681 } VkImageFormatProperties2KHR;
   3682 
   3683 typedef struct VkPhysicalDeviceImageFormatInfo2KHR {
   3684     VkStructureType       sType;
   3685     const void*           pNext;
   3686     VkFormat              format;
   3687     VkImageType           type;
   3688     VkImageTiling         tiling;
   3689     VkImageUsageFlags     usage;
   3690     VkImageCreateFlags    flags;
   3691 } VkPhysicalDeviceImageFormatInfo2KHR;
   3692 
   3693 typedef struct VkQueueFamilyProperties2KHR {
   3694     VkStructureType            sType;
   3695     void*                      pNext;
   3696     VkQueueFamilyProperties    queueFamilyProperties;
   3697 } VkQueueFamilyProperties2KHR;
   3698 
   3699 typedef struct VkPhysicalDeviceMemoryProperties2KHR {
   3700     VkStructureType                     sType;
   3701     void*                               pNext;
   3702     VkPhysicalDeviceMemoryProperties    memoryProperties;
   3703 } VkPhysicalDeviceMemoryProperties2KHR;
   3704 
   3705 typedef struct VkSparseImageFormatProperties2KHR {
   3706     VkStructureType                  sType;
   3707     void*                            pNext;
   3708     VkSparseImageFormatProperties    properties;
   3709 } VkSparseImageFormatProperties2KHR;
   3710 
   3711 typedef struct VkPhysicalDeviceSparseImageFormatInfo2KHR {
   3712     VkStructureType          sType;
   3713     const void*              pNext;
   3714     VkFormat                 format;
   3715     VkImageType              type;
   3716     VkSampleCountFlagBits    samples;
   3717     VkImageUsageFlags        usage;
   3718     VkImageTiling            tiling;
   3719 } VkPhysicalDeviceSparseImageFormatInfo2KHR;
   3720 
   3721 
   3722 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2KHR* pFeatures);
   3723 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2KHR* pProperties);
   3724 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2KHR)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2KHR* pFormatProperties);
   3725 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, VkImageFormatProperties2KHR* pImageFormatProperties);
   3726 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2KHR* pQueueFamilyProperties);
   3727 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties);
   3728 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2KHR* pProperties);
   3729 
   3730 #ifndef VK_NO_PROTOTYPES
   3731 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2KHR(
   3732     VkPhysicalDevice                            physicalDevice,
   3733     VkPhysicalDeviceFeatures2KHR*               pFeatures);
   3734 
   3735 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2KHR(
   3736     VkPhysicalDevice                            physicalDevice,
   3737     VkPhysicalDeviceProperties2KHR*             pProperties);
   3738 
   3739 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2KHR(
   3740     VkPhysicalDevice                            physicalDevice,
   3741     VkFormat                                    format,
   3742     VkFormatProperties2KHR*                     pFormatProperties);
   3743 
   3744 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2KHR(
   3745     VkPhysicalDevice                            physicalDevice,
   3746     const VkPhysicalDeviceImageFormatInfo2KHR*  pImageFormatInfo,
   3747     VkImageFormatProperties2KHR*                pImageFormatProperties);
   3748 
   3749 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2KHR(
   3750     VkPhysicalDevice                            physicalDevice,
   3751     uint32_t*                                   pQueueFamilyPropertyCount,
   3752     VkQueueFamilyProperties2KHR*                pQueueFamilyProperties);
   3753 
   3754 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2KHR(
   3755     VkPhysicalDevice                            physicalDevice,
   3756     VkPhysicalDeviceMemoryProperties2KHR*       pMemoryProperties);
   3757 
   3758 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
   3759     VkPhysicalDevice                            physicalDevice,
   3760     const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo,
   3761     uint32_t*                                   pPropertyCount,
   3762     VkSparseImageFormatProperties2KHR*          pProperties);
   3763 #endif
   3764 
   3765 #define VK_KHR_shader_draw_parameters 1
   3766 #define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1
   3767 #define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters"
   3768 
   3769 
   3770 #define VK_KHR_maintenance1 1
   3771 #define VK_KHR_MAINTENANCE1_SPEC_VERSION  1
   3772 #define VK_KHR_MAINTENANCE1_EXTENSION_NAME "VK_KHR_maintenance1"
   3773 
   3774 typedef VkFlags VkCommandPoolTrimFlagsKHR;
   3775 
   3776 typedef void (VKAPI_PTR *PFN_vkTrimCommandPoolKHR)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlagsKHR flags);
   3777 
   3778 #ifndef VK_NO_PROTOTYPES
   3779 VKAPI_ATTR void VKAPI_CALL vkTrimCommandPoolKHR(
   3780     VkDevice                                    device,
   3781     VkCommandPool                               commandPool,
   3782     VkCommandPoolTrimFlagsKHR                   flags);
   3783 #endif
   3784 
   3785 #define VK_KHR_push_descriptor 1
   3786 #define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 1
   3787 #define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor"
   3788 
   3789 typedef struct VkPhysicalDevicePushDescriptorPropertiesKHR {
   3790     VkStructureType    sType;
   3791     void*              pNext;
   3792     uint32_t           maxPushDescriptors;
   3793 } VkPhysicalDevicePushDescriptorPropertiesKHR;
   3794 
   3795 
   3796 typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetKHR)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites);
   3797 
   3798 #ifndef VK_NO_PROTOTYPES
   3799 VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetKHR(
   3800     VkCommandBuffer                             commandBuffer,
   3801     VkPipelineBindPoint                         pipelineBindPoint,
   3802     VkPipelineLayout                            layout,
   3803     uint32_t                                    set,
   3804     uint32_t                                    descriptorWriteCount,
   3805     const VkWriteDescriptorSet*                 pDescriptorWrites);
   3806 #endif
   3807 
   3808 #define VK_KHR_incremental_present 1
   3809 #define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1
   3810 #define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present"
   3811 
   3812 typedef struct VkRectLayerKHR {
   3813     VkOffset2D    offset;
   3814     VkExtent2D    extent;
   3815     uint32_t      layer;
   3816 } VkRectLayerKHR;
   3817 
   3818 typedef struct VkPresentRegionKHR {
   3819     uint32_t                 rectangleCount;
   3820     const VkRectLayerKHR*    pRectangles;
   3821 } VkPresentRegionKHR;
   3822 
   3823 typedef struct VkPresentRegionsKHR {
   3824     VkStructureType              sType;
   3825     const void*                  pNext;
   3826     uint32_t                     swapchainCount;
   3827     const VkPresentRegionKHR*    pRegions;
   3828 } VkPresentRegionsKHR;
   3829 
   3830 
   3831 
   3832 #define VK_KHR_descriptor_update_template 1
   3833 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplateKHR)
   3834 
   3835 #define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1
   3836 #define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template"
   3837 
   3838 
   3839 typedef enum VkDescriptorUpdateTemplateTypeKHR {
   3840     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0,
   3841     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1,
   3842     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_BEGIN_RANGE_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
   3843     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_END_RANGE_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR,
   3844     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_RANGE_SIZE_KHR = (VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR + 1),
   3845     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
   3846 } VkDescriptorUpdateTemplateTypeKHR;
   3847 
   3848 typedef VkFlags VkDescriptorUpdateTemplateCreateFlagsKHR;
   3849 
   3850 typedef struct VkDescriptorUpdateTemplateEntryKHR {
   3851     uint32_t            dstBinding;
   3852     uint32_t            dstArrayElement;
   3853     uint32_t            descriptorCount;
   3854     VkDescriptorType    descriptorType;
   3855     size_t              offset;
   3856     size_t              stride;
   3857 } VkDescriptorUpdateTemplateEntryKHR;
   3858 
   3859 typedef struct VkDescriptorUpdateTemplateCreateInfoKHR {
   3860     VkStructureType                              sType;
   3861     void*                                        pNext;
   3862     VkDescriptorUpdateTemplateCreateFlagsKHR     flags;
   3863     uint32_t                                     descriptorUpdateEntryCount;
   3864     const VkDescriptorUpdateTemplateEntryKHR*    pDescriptorUpdateEntries;
   3865     VkDescriptorUpdateTemplateTypeKHR            templateType;
   3866     VkDescriptorSetLayout                        descriptorSetLayout;
   3867     VkPipelineBindPoint                          pipelineBindPoint;
   3868     VkPipelineLayout                             pipelineLayout;
   3869     uint32_t                                     set;
   3870 } VkDescriptorUpdateTemplateCreateInfoKHR;
   3871 
   3872 
   3873 typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplateKHR)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate);
   3874 typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplateKHR)(VkDevice device, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
   3875 typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplateKHR)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData);
   3876 typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplateKHR)(VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData);
   3877 
   3878 #ifndef VK_NO_PROTOTYPES
   3879 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplateKHR(
   3880     VkDevice                                    device,
   3881     const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo,
   3882     const VkAllocationCallbacks*                pAllocator,
   3883     VkDescriptorUpdateTemplateKHR*              pDescriptorUpdateTemplate);
   3884 
   3885 VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplateKHR(
   3886     VkDevice                                    device,
   3887     VkDescriptorUpdateTemplateKHR               descriptorUpdateTemplate,
   3888     const VkAllocationCallbacks*                pAllocator);
   3889 
   3890 VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR(
   3891     VkDevice                                    device,
   3892     VkDescriptorSet                             descriptorSet,
   3893     VkDescriptorUpdateTemplateKHR               descriptorUpdateTemplate,
   3894     const void*                                 pData);
   3895 
   3896 VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR(
   3897     VkCommandBuffer                             commandBuffer,
   3898     VkDescriptorUpdateTemplateKHR               descriptorUpdateTemplate,
   3899     VkPipelineLayout                            layout,
   3900     uint32_t                                    set,
   3901     const void*                                 pData);
   3902 #endif
   3903 
   3904 #define VK_EXT_debug_report 1
   3905 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
   3906 
   3907 #define VK_EXT_DEBUG_REPORT_SPEC_VERSION  6
   3908 #define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report"
   3909 #define VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
   3910 
   3911 
   3912 typedef enum VkDebugReportObjectTypeEXT {
   3913     VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
   3914     VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
   3915     VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
   3916     VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,
   3917     VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,
   3918     VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,
   3919     VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,
   3920     VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,
   3921     VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,
   3922     VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,
   3923     VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,
   3924     VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,
   3925     VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,
   3926     VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,
   3927     VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,
   3928     VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,
   3929     VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,
   3930     VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,
   3931     VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,
   3932     VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,
   3933     VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,
   3934     VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,
   3935     VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,
   3936     VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,
   3937     VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,
   3938     VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,
   3939     VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
   3940     VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
   3941     VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28,
   3942     VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29,
   3943     VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,
   3944     VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31,
   3945     VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32,
   3946     VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000,
   3947     VK_DEBUG_REPORT_OBJECT_TYPE_BEGIN_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
   3948     VK_DEBUG_REPORT_OBJECT_TYPE_END_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,
   3949     VK_DEBUG_REPORT_OBJECT_TYPE_RANGE_SIZE_EXT = (VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT - VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT + 1),
   3950     VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
   3951 } VkDebugReportObjectTypeEXT;
   3952 
   3953 typedef enum VkDebugReportErrorEXT {
   3954     VK_DEBUG_REPORT_ERROR_NONE_EXT = 0,
   3955     VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT = 1,
   3956     VK_DEBUG_REPORT_ERROR_BEGIN_RANGE_EXT = VK_DEBUG_REPORT_ERROR_NONE_EXT,
   3957     VK_DEBUG_REPORT_ERROR_END_RANGE_EXT = VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT,
   3958     VK_DEBUG_REPORT_ERROR_RANGE_SIZE_EXT = (VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT - VK_DEBUG_REPORT_ERROR_NONE_EXT + 1),
   3959     VK_DEBUG_REPORT_ERROR_MAX_ENUM_EXT = 0x7FFFFFFF
   3960 } VkDebugReportErrorEXT;
   3961 
   3962 
   3963 typedef enum VkDebugReportFlagBitsEXT {
   3964     VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,
   3965     VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002,
   3966     VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004,
   3967     VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008,
   3968     VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010,
   3969     VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
   3970 } VkDebugReportFlagBitsEXT;
   3971 typedef VkFlags VkDebugReportFlagsEXT;
   3972 
   3973 typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)(
   3974     VkDebugReportFlagsEXT                       flags,
   3975     VkDebugReportObjectTypeEXT                  objectType,
   3976     uint64_t                                    object,
   3977     size_t                                      location,
   3978     int32_t                                     messageCode,
   3979     const char*                                 pLayerPrefix,
   3980     const char*                                 pMessage,
   3981     void*                                       pUserData);
   3982 
   3983 
   3984 typedef struct VkDebugReportCallbackCreateInfoEXT {
   3985     VkStructureType                 sType;
   3986     const void*                     pNext;
   3987     VkDebugReportFlagsEXT           flags;
   3988     PFN_vkDebugReportCallbackEXT    pfnCallback;
   3989     void*                           pUserData;
   3990 } VkDebugReportCallbackCreateInfoEXT;
   3991 
   3992 
   3993 typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugReportCallbackEXT)(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback);
   3994 typedef void (VKAPI_PTR *PFN_vkDestroyDebugReportCallbackEXT)(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator);
   3995 typedef void (VKAPI_PTR *PFN_vkDebugReportMessageEXT)(VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage);
   3996 
   3997 #ifndef VK_NO_PROTOTYPES
   3998 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugReportCallbackEXT(
   3999     VkInstance                                  instance,
   4000     const VkDebugReportCallbackCreateInfoEXT*   pCreateInfo,
   4001     const VkAllocationCallbacks*                pAllocator,
   4002     VkDebugReportCallbackEXT*                   pCallback);
   4003 
   4004 VKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackEXT(
   4005     VkInstance                                  instance,
   4006     VkDebugReportCallbackEXT                    callback,
   4007     const VkAllocationCallbacks*                pAllocator);
   4008 
   4009 VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT(
   4010     VkInstance                                  instance,
   4011     VkDebugReportFlagsEXT                       flags,
   4012     VkDebugReportObjectTypeEXT                  objectType,
   4013     uint64_t                                    object,
   4014     size_t                                      location,
   4015     int32_t                                     messageCode,
   4016     const char*                                 pLayerPrefix,
   4017     const char*                                 pMessage);
   4018 #endif
   4019 
   4020 #define VK_NV_glsl_shader 1
   4021 #define VK_NV_GLSL_SHADER_SPEC_VERSION    1
   4022 #define VK_NV_GLSL_SHADER_EXTENSION_NAME  "VK_NV_glsl_shader"
   4023 
   4024 
   4025 #define VK_IMG_filter_cubic 1
   4026 #define VK_IMG_FILTER_CUBIC_SPEC_VERSION  1
   4027 #define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic"
   4028 
   4029 
   4030 #define VK_AMD_rasterization_order 1
   4031 #define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1
   4032 #define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME "VK_AMD_rasterization_order"
   4033 
   4034 
   4035 typedef enum VkRasterizationOrderAMD {
   4036     VK_RASTERIZATION_ORDER_STRICT_AMD = 0,
   4037     VK_RASTERIZATION_ORDER_RELAXED_AMD = 1,
   4038     VK_RASTERIZATION_ORDER_BEGIN_RANGE_AMD = VK_RASTERIZATION_ORDER_STRICT_AMD,
   4039     VK_RASTERIZATION_ORDER_END_RANGE_AMD = VK_RASTERIZATION_ORDER_RELAXED_AMD,
   4040     VK_RASTERIZATION_ORDER_RANGE_SIZE_AMD = (VK_RASTERIZATION_ORDER_RELAXED_AMD - VK_RASTERIZATION_ORDER_STRICT_AMD + 1),
   4041     VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF
   4042 } VkRasterizationOrderAMD;
   4043 
   4044 typedef struct VkPipelineRasterizationStateRasterizationOrderAMD {
   4045     VkStructureType            sType;
   4046     const void*                pNext;
   4047     VkRasterizationOrderAMD    rasterizationOrder;
   4048 } VkPipelineRasterizationStateRasterizationOrderAMD;
   4049 
   4050 
   4051 
   4052 #define VK_AMD_shader_trinary_minmax 1
   4053 #define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1
   4054 #define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax"
   4055 
   4056 
   4057 #define VK_AMD_shader_explicit_vertex_parameter 1
   4058 #define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1
   4059 #define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter"
   4060 
   4061 
   4062 #define VK_EXT_debug_marker 1
   4063 #define VK_EXT_DEBUG_MARKER_SPEC_VERSION  4
   4064 #define VK_EXT_DEBUG_MARKER_EXTENSION_NAME "VK_EXT_debug_marker"
   4065 
   4066 typedef struct VkDebugMarkerObjectNameInfoEXT {
   4067     VkStructureType               sType;
   4068     const void*                   pNext;
   4069     VkDebugReportObjectTypeEXT    objectType;
   4070     uint64_t                      object;
   4071     const char*                   pObjectName;
   4072 } VkDebugMarkerObjectNameInfoEXT;
   4073 
   4074 typedef struct VkDebugMarkerObjectTagInfoEXT {
   4075     VkStructureType               sType;
   4076     const void*                   pNext;
   4077     VkDebugReportObjectTypeEXT    objectType;
   4078     uint64_t                      object;
   4079     uint64_t                      tagName;
   4080     size_t                        tagSize;
   4081     const void*                   pTag;
   4082 } VkDebugMarkerObjectTagInfoEXT;
   4083 
   4084 typedef struct VkDebugMarkerMarkerInfoEXT {
   4085     VkStructureType    sType;
   4086     const void*        pNext;
   4087     const char*        pMarkerName;
   4088     float              color[4];
   4089 } VkDebugMarkerMarkerInfoEXT;
   4090 
   4091 
   4092 typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectTagEXT)(VkDevice device, VkDebugMarkerObjectTagInfoEXT* pTagInfo);
   4093 typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectNameEXT)(VkDevice device, VkDebugMarkerObjectNameInfoEXT* pNameInfo);
   4094 typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer commandBuffer, VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
   4095 typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerEndEXT)(VkCommandBuffer commandBuffer);
   4096 typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer commandBuffer, VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
   4097 
   4098 #ifndef VK_NO_PROTOTYPES
   4099 VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT(
   4100     VkDevice                                    device,
   4101     VkDebugMarkerObjectTagInfoEXT*              pTagInfo);
   4102 
   4103 VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT(
   4104     VkDevice                                    device,
   4105     VkDebugMarkerObjectNameInfoEXT*             pNameInfo);
   4106 
   4107 VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerBeginEXT(
   4108     VkCommandBuffer                             commandBuffer,
   4109     VkDebugMarkerMarkerInfoEXT*                 pMarkerInfo);
   4110 
   4111 VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerEndEXT(
   4112     VkCommandBuffer                             commandBuffer);
   4113 
   4114 VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT(
   4115     VkCommandBuffer                             commandBuffer,
   4116     VkDebugMarkerMarkerInfoEXT*                 pMarkerInfo);
   4117 #endif
   4118 
   4119 #define VK_AMD_gcn_shader 1
   4120 #define VK_AMD_GCN_SHADER_SPEC_VERSION    1
   4121 #define VK_AMD_GCN_SHADER_EXTENSION_NAME  "VK_AMD_gcn_shader"
   4122 
   4123 
   4124 #define VK_NV_dedicated_allocation 1
   4125 #define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1
   4126 #define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation"
   4127 
   4128 typedef struct VkDedicatedAllocationImageCreateInfoNV {
   4129     VkStructureType    sType;
   4130     const void*        pNext;
   4131     VkBool32           dedicatedAllocation;
   4132 } VkDedicatedAllocationImageCreateInfoNV;
   4133 
   4134 typedef struct VkDedicatedAllocationBufferCreateInfoNV {
   4135     VkStructureType    sType;
   4136     const void*        pNext;
   4137     VkBool32           dedicatedAllocation;
   4138 } VkDedicatedAllocationBufferCreateInfoNV;
   4139 
   4140 typedef struct VkDedicatedAllocationMemoryAllocateInfoNV {
   4141     VkStructureType    sType;
   4142     const void*        pNext;
   4143     VkImage            image;
   4144     VkBuffer           buffer;
   4145 } VkDedicatedAllocationMemoryAllocateInfoNV;
   4146 
   4147 
   4148 
   4149 #define VK_AMD_draw_indirect_count 1
   4150 #define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
   4151 #define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count"
   4152 
   4153 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
   4154 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
   4155 
   4156 #ifndef VK_NO_PROTOTYPES
   4157 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountAMD(
   4158     VkCommandBuffer                             commandBuffer,
   4159     VkBuffer                                    buffer,
   4160     VkDeviceSize                                offset,
   4161     VkBuffer                                    countBuffer,
   4162     VkDeviceSize                                countBufferOffset,
   4163     uint32_t                                    maxDrawCount,
   4164     uint32_t                                    stride);
   4165 
   4166 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD(
   4167     VkCommandBuffer                             commandBuffer,
   4168     VkBuffer                                    buffer,
   4169     VkDeviceSize                                offset,
   4170     VkBuffer                                    countBuffer,
   4171     VkDeviceSize                                countBufferOffset,
   4172     uint32_t                                    maxDrawCount,
   4173     uint32_t                                    stride);
   4174 #endif
   4175 
   4176 #define VK_AMD_negative_viewport_height 1
   4177 #define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1
   4178 #define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height"
   4179 
   4180 
   4181 #define VK_AMD_gpu_shader_half_float 1
   4182 #define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 1
   4183 #define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float"
   4184 
   4185 
   4186 #define VK_AMD_shader_ballot 1
   4187 #define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1
   4188 #define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot"
   4189 
   4190 
   4191 #define VK_KHX_multiview 1
   4192 #define VK_KHX_MULTIVIEW_SPEC_VERSION     1
   4193 #define VK_KHX_MULTIVIEW_EXTENSION_NAME   "VK_KHX_multiview"
   4194 
   4195 typedef struct VkRenderPassMultiviewCreateInfoKHX {
   4196     VkStructureType    sType;
   4197     const void*        pNext;
   4198     uint32_t           subpassCount;
   4199     const uint32_t*    pViewMasks;
   4200     uint32_t           dependencyCount;
   4201     const int32_t*     pViewOffsets;
   4202     uint32_t           correlationMaskCount;
   4203     const uint32_t*    pCorrelationMasks;
   4204 } VkRenderPassMultiviewCreateInfoKHX;
   4205 
   4206 typedef struct VkPhysicalDeviceMultiviewFeaturesKHX {
   4207     VkStructureType    sType;
   4208     void*              pNext;
   4209     VkBool32           multiview;
   4210     VkBool32           multiviewGeometryShader;
   4211     VkBool32           multiviewTessellationShader;
   4212 } VkPhysicalDeviceMultiviewFeaturesKHX;
   4213 
   4214 typedef struct VkPhysicalDeviceMultiviewPropertiesKHX {
   4215     VkStructureType    sType;
   4216     void*              pNext;
   4217     uint32_t           maxMultiviewViewCount;
   4218     uint32_t           maxMultiviewInstanceIndex;
   4219 } VkPhysicalDeviceMultiviewPropertiesKHX;
   4220 
   4221 
   4222 
   4223 #define VK_IMG_format_pvrtc 1
   4224 #define VK_IMG_FORMAT_PVRTC_SPEC_VERSION  1
   4225 #define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc"
   4226 
   4227 
   4228 #define VK_NV_external_memory_capabilities 1
   4229 #define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
   4230 #define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities"
   4231 
   4232 
   4233 typedef enum VkExternalMemoryHandleTypeFlagBitsNV {
   4234     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,
   4235     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,
   4236     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,
   4237     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,
   4238     VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
   4239 } VkExternalMemoryHandleTypeFlagBitsNV;
   4240 typedef VkFlags VkExternalMemoryHandleTypeFlagsNV;
   4241 
   4242 typedef enum VkExternalMemoryFeatureFlagBitsNV {
   4243     VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001,
   4244     VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002,
   4245     VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004,
   4246     VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
   4247 } VkExternalMemoryFeatureFlagBitsNV;
   4248 typedef VkFlags VkExternalMemoryFeatureFlagsNV;
   4249 
   4250 typedef struct VkExternalImageFormatPropertiesNV {
   4251     VkImageFormatProperties              imageFormatProperties;
   4252     VkExternalMemoryFeatureFlagsNV       externalMemoryFeatures;
   4253     VkExternalMemoryHandleTypeFlagsNV    exportFromImportedHandleTypes;
   4254     VkExternalMemoryHandleTypeFlagsNV    compatibleHandleTypes;
   4255 } VkExternalImageFormatPropertiesNV;
   4256 
   4257 
   4258 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
   4259 
   4260 #ifndef VK_NO_PROTOTYPES
   4261 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
   4262     VkPhysicalDevice                            physicalDevice,
   4263     VkFormat                                    format,
   4264     VkImageType                                 type,
   4265     VkImageTiling                               tiling,
   4266     VkImageUsageFlags                           usage,
   4267     VkImageCreateFlags                          flags,
   4268     VkExternalMemoryHandleTypeFlagsNV           externalHandleType,
   4269     VkExternalImageFormatPropertiesNV*          pExternalImageFormatProperties);
   4270 #endif
   4271 
   4272 #define VK_NV_external_memory 1
   4273 #define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1
   4274 #define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory"
   4275 
   4276 typedef struct VkExternalMemoryImageCreateInfoNV {
   4277     VkStructureType                      sType;
   4278     const void*                          pNext;
   4279     VkExternalMemoryHandleTypeFlagsNV    handleTypes;
   4280 } VkExternalMemoryImageCreateInfoNV;
   4281 
   4282 typedef struct VkExportMemoryAllocateInfoNV {
   4283     VkStructureType                      sType;
   4284     const void*                          pNext;
   4285     VkExternalMemoryHandleTypeFlagsNV    handleTypes;
   4286 } VkExportMemoryAllocateInfoNV;
   4287 
   4288 
   4289 
   4290 #define VK_KHX_device_group 1
   4291 #define VK_MAX_DEVICE_GROUP_SIZE_KHX      32
   4292 #define VK_KHX_DEVICE_GROUP_SPEC_VERSION  1
   4293 #define VK_KHX_DEVICE_GROUP_EXTENSION_NAME "VK_KHX_device_group"
   4294 
   4295 
   4296 typedef enum VkPeerMemoryFeatureFlagBitsKHX {
   4297     VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX = 0x00000001,
   4298     VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX = 0x00000002,
   4299     VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX = 0x00000004,
   4300     VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX = 0x00000008,
   4301     VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_KHX = 0x7FFFFFFF
   4302 } VkPeerMemoryFeatureFlagBitsKHX;
   4303 typedef VkFlags VkPeerMemoryFeatureFlagsKHX;
   4304 
   4305 typedef enum VkMemoryAllocateFlagBitsKHX {
   4306     VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX = 0x00000001,
   4307     VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM_KHX = 0x7FFFFFFF
   4308 } VkMemoryAllocateFlagBitsKHX;
   4309 typedef VkFlags VkMemoryAllocateFlagsKHX;
   4310 
   4311 typedef enum VkDeviceGroupPresentModeFlagBitsKHX {
   4312     VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX = 0x00000001,
   4313     VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX = 0x00000002,
   4314     VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX = 0x00000004,
   4315     VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX = 0x00000008,
   4316     VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHX = 0x7FFFFFFF
   4317 } VkDeviceGroupPresentModeFlagBitsKHX;
   4318 typedef VkFlags VkDeviceGroupPresentModeFlagsKHX;
   4319 
   4320 typedef struct VkMemoryAllocateFlagsInfoKHX {
   4321     VkStructureType             sType;
   4322     const void*                 pNext;
   4323     VkMemoryAllocateFlagsKHX    flags;
   4324     uint32_t                    deviceMask;
   4325 } VkMemoryAllocateFlagsInfoKHX;
   4326 
   4327 typedef struct VkBindBufferMemoryInfoKHX {
   4328     VkStructureType    sType;
   4329     const void*        pNext;
   4330     VkBuffer           buffer;
   4331     VkDeviceMemory     memory;
   4332     VkDeviceSize       memoryOffset;
   4333     uint32_t           deviceIndexCount;
   4334     const uint32_t*    pDeviceIndices;
   4335 } VkBindBufferMemoryInfoKHX;
   4336 
   4337 typedef struct VkBindImageMemoryInfoKHX {
   4338     VkStructureType    sType;
   4339     const void*        pNext;
   4340     VkImage            image;
   4341     VkDeviceMemory     memory;
   4342     VkDeviceSize       memoryOffset;
   4343     uint32_t           deviceIndexCount;
   4344     const uint32_t*    pDeviceIndices;
   4345     uint32_t           SFRRectCount;
   4346     const VkRect2D*    pSFRRects;
   4347 } VkBindImageMemoryInfoKHX;
   4348 
   4349 typedef struct VkDeviceGroupRenderPassBeginInfoKHX {
   4350     VkStructureType    sType;
   4351     const void*        pNext;
   4352     uint32_t           deviceMask;
   4353     uint32_t           deviceRenderAreaCount;
   4354     const VkRect2D*    pDeviceRenderAreas;
   4355 } VkDeviceGroupRenderPassBeginInfoKHX;
   4356 
   4357 typedef struct VkDeviceGroupCommandBufferBeginInfoKHX {
   4358     VkStructureType    sType;
   4359     const void*        pNext;
   4360     uint32_t           deviceMask;
   4361 } VkDeviceGroupCommandBufferBeginInfoKHX;
   4362 
   4363 typedef struct VkDeviceGroupSubmitInfoKHX {
   4364     VkStructureType    sType;
   4365     const void*        pNext;
   4366     uint32_t           waitSemaphoreCount;
   4367     const uint32_t*    pWaitSemaphoreDeviceIndices;
   4368     uint32_t           commandBufferCount;
   4369     const uint32_t*    pCommandBufferDeviceMasks;
   4370     uint32_t           signalSemaphoreCount;
   4371     const uint32_t*    pSignalSemaphoreDeviceIndices;
   4372 } VkDeviceGroupSubmitInfoKHX;
   4373 
   4374 typedef struct VkDeviceGroupBindSparseInfoKHX {
   4375     VkStructureType    sType;
   4376     const void*        pNext;
   4377     uint32_t           resourceDeviceIndex;
   4378     uint32_t           memoryDeviceIndex;
   4379 } VkDeviceGroupBindSparseInfoKHX;
   4380 
   4381 typedef struct VkDeviceGroupPresentCapabilitiesKHX {
   4382     VkStructureType                     sType;
   4383     const void*                         pNext;
   4384     uint32_t                            presentMask[VK_MAX_DEVICE_GROUP_SIZE_KHX];
   4385     VkDeviceGroupPresentModeFlagsKHX    modes;
   4386 } VkDeviceGroupPresentCapabilitiesKHX;
   4387 
   4388 typedef struct VkImageSwapchainCreateInfoKHX {
   4389     VkStructureType    sType;
   4390     const void*        pNext;
   4391     VkSwapchainKHR     swapchain;
   4392 } VkImageSwapchainCreateInfoKHX;
   4393 
   4394 typedef struct VkBindImageMemorySwapchainInfoKHX {
   4395     VkStructureType    sType;
   4396     const void*        pNext;
   4397     VkSwapchainKHR     swapchain;
   4398     uint32_t           imageIndex;
   4399 } VkBindImageMemorySwapchainInfoKHX;
   4400 
   4401 typedef struct VkAcquireNextImageInfoKHX {
   4402     VkStructureType    sType;
   4403     const void*        pNext;
   4404     VkSwapchainKHR     swapchain;
   4405     uint64_t           timeout;
   4406     VkSemaphore        semaphore;
   4407     VkFence            fence;
   4408     uint32_t           deviceMask;
   4409 } VkAcquireNextImageInfoKHX;
   4410 
   4411 typedef struct VkDeviceGroupPresentInfoKHX {
   4412     VkStructureType                        sType;
   4413     const void*                            pNext;
   4414     uint32_t                               swapchainCount;
   4415     const uint32_t*                        pDeviceMasks;
   4416     VkDeviceGroupPresentModeFlagBitsKHX    mode;
   4417 } VkDeviceGroupPresentInfoKHX;
   4418 
   4419 typedef struct VkDeviceGroupSwapchainCreateInfoKHX {
   4420     VkStructureType                     sType;
   4421     const void*                         pNext;
   4422     VkDeviceGroupPresentModeFlagsKHX    modes;
   4423 } VkDeviceGroupSwapchainCreateInfoKHX;
   4424 
   4425 
   4426 typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeaturesKHX)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures);
   4427 typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2KHX)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfoKHX* pBindInfos);
   4428 typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2KHX)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfoKHX* pBindInfos);
   4429 typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMaskKHX)(VkCommandBuffer commandBuffer, uint32_t deviceMask);
   4430 typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHX)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities);
   4431 typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHX)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHX* pModes);
   4432 typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImage2KHX)(VkDevice device, const VkAcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex);
   4433 typedef void (VKAPI_PTR *PFN_vkCmdDispatchBaseKHX)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
   4434 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHX)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects);
   4435 
   4436 #ifndef VK_NO_PROTOTYPES
   4437 VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeaturesKHX(
   4438     VkDevice                                    device,
   4439     uint32_t                                    heapIndex,
   4440     uint32_t                                    localDeviceIndex,
   4441     uint32_t                                    remoteDeviceIndex,
   4442     VkPeerMemoryFeatureFlagsKHX*                pPeerMemoryFeatures);
   4443 
   4444 VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2KHX(
   4445     VkDevice                                    device,
   4446     uint32_t                                    bindInfoCount,
   4447     const VkBindBufferMemoryInfoKHX*            pBindInfos);
   4448 
   4449 VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2KHX(
   4450     VkDevice                                    device,
   4451     uint32_t                                    bindInfoCount,
   4452     const VkBindImageMemoryInfoKHX*             pBindInfos);
   4453 
   4454 VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMaskKHX(
   4455     VkCommandBuffer                             commandBuffer,
   4456     uint32_t                                    deviceMask);
   4457 
   4458 VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupPresentCapabilitiesKHX(
   4459     VkDevice                                    device,
   4460     VkDeviceGroupPresentCapabilitiesKHX*        pDeviceGroupPresentCapabilities);
   4461 
   4462 VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHX(
   4463     VkDevice                                    device,
   4464     VkSurfaceKHR                                surface,
   4465     VkDeviceGroupPresentModeFlagsKHX*           pModes);
   4466 
   4467 VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHX(
   4468     VkDevice                                    device,
   4469     const VkAcquireNextImageInfoKHX*            pAcquireInfo,
   4470     uint32_t*                                   pImageIndex);
   4471 
   4472 VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBaseKHX(
   4473     VkCommandBuffer                             commandBuffer,
   4474     uint32_t                                    baseGroupX,
   4475     uint32_t                                    baseGroupY,
   4476     uint32_t                                    baseGroupZ,
   4477     uint32_t                                    groupCountX,
   4478     uint32_t                                    groupCountY,
   4479     uint32_t                                    groupCountZ);
   4480 
   4481 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHX(
   4482     VkPhysicalDevice                            physicalDevice,
   4483     VkSurfaceKHR                                surface,
   4484     uint32_t*                                   pRectCount,
   4485     VkRect2D*                                   pRects);
   4486 #endif
   4487 
   4488 #define VK_EXT_validation_flags 1
   4489 #define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 1
   4490 #define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags"
   4491 
   4492 
   4493 typedef enum VkValidationCheckEXT {
   4494     VK_VALIDATION_CHECK_ALL_EXT = 0,
   4495     VK_VALIDATION_CHECK_BEGIN_RANGE_EXT = VK_VALIDATION_CHECK_ALL_EXT,
   4496     VK_VALIDATION_CHECK_END_RANGE_EXT = VK_VALIDATION_CHECK_ALL_EXT,
   4497     VK_VALIDATION_CHECK_RANGE_SIZE_EXT = (VK_VALIDATION_CHECK_ALL_EXT - VK_VALIDATION_CHECK_ALL_EXT + 1),
   4498     VK_VALIDATION_CHECK_MAX_ENUM_EXT = 0x7FFFFFFF
   4499 } VkValidationCheckEXT;
   4500 
   4501 typedef struct VkValidationFlagsEXT {
   4502     VkStructureType          sType;
   4503     const void*              pNext;
   4504     uint32_t                 disabledValidationCheckCount;
   4505     VkValidationCheckEXT*    pDisabledValidationChecks;
   4506 } VkValidationFlagsEXT;
   4507 
   4508 
   4509 #define VK_EXT_shader_subgroup_ballot 1
   4510 #define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1
   4511 #define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot"
   4512 
   4513 
   4514 #define VK_EXT_shader_subgroup_vote 1
   4515 #define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1
   4516 #define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote"
   4517 
   4518 
   4519 #define VK_KHX_device_group_creation 1
   4520 #define VK_KHX_DEVICE_GROUP_CREATION_SPEC_VERSION 1
   4521 #define VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHX_device_group_creation"
   4522 
   4523 typedef struct VkPhysicalDeviceGroupPropertiesKHX {
   4524     VkStructureType     sType;
   4525     void*               pNext;
   4526     uint32_t            physicalDeviceCount;
   4527     VkPhysicalDevice    physicalDevices[VK_MAX_DEVICE_GROUP_SIZE_KHX];
   4528     VkBool32            subsetAllocation;
   4529 } VkPhysicalDeviceGroupPropertiesKHX;
   4530 
   4531 typedef struct VkDeviceGroupDeviceCreateInfoKHX {
   4532     VkStructureType            sType;
   4533     const void*                pNext;
   4534     uint32_t                   physicalDeviceCount;
   4535     const VkPhysicalDevice*    pPhysicalDevices;
   4536 } VkDeviceGroupDeviceCreateInfoKHX;
   4537 
   4538 
   4539 typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroupsKHX)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties);
   4540 
   4541 #ifndef VK_NO_PROTOTYPES
   4542 VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroupsKHX(
   4543     VkInstance                                  instance,
   4544     uint32_t*                                   pPhysicalDeviceGroupCount,
   4545     VkPhysicalDeviceGroupPropertiesKHX*         pPhysicalDeviceGroupProperties);
   4546 #endif
   4547 
   4548 #define VK_KHX_external_memory_capabilities 1
   4549 #define VK_LUID_SIZE_KHX                  8
   4550 #define VK_KHX_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
   4551 #define VK_KHX_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHX_external_memory_capabilities"
   4552 
   4553 
   4554 typedef enum VkExternalMemoryHandleTypeFlagBitsKHX {
   4555     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHX = 0x00000001,
   4556     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX = 0x00000002,
   4557     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX = 0x00000004,
   4558     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHX = 0x00000008,
   4559     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHX = 0x00000010,
   4560     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHX = 0x00000020,
   4561     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHX = 0x00000040,
   4562     VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_KHX = 0x7FFFFFFF
   4563 } VkExternalMemoryHandleTypeFlagBitsKHX;
   4564 typedef VkFlags VkExternalMemoryHandleTypeFlagsKHX;
   4565 
   4566 typedef enum VkExternalMemoryFeatureFlagBitsKHX {
   4567     VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHX = 0x00000001,
   4568     VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHX = 0x00000002,
   4569     VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHX = 0x00000004,
   4570     VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_KHX = 0x7FFFFFFF
   4571 } VkExternalMemoryFeatureFlagBitsKHX;
   4572 typedef VkFlags VkExternalMemoryFeatureFlagsKHX;
   4573 
   4574 typedef struct VkExternalMemoryPropertiesKHX {
   4575     VkExternalMemoryFeatureFlagsKHX       externalMemoryFeatures;
   4576     VkExternalMemoryHandleTypeFlagsKHX    exportFromImportedHandleTypes;
   4577     VkExternalMemoryHandleTypeFlagsKHX    compatibleHandleTypes;
   4578 } VkExternalMemoryPropertiesKHX;
   4579 
   4580 typedef struct VkPhysicalDeviceExternalImageFormatInfoKHX {
   4581     VkStructureType                          sType;
   4582     const void*                              pNext;
   4583     VkExternalMemoryHandleTypeFlagBitsKHX    handleType;
   4584 } VkPhysicalDeviceExternalImageFormatInfoKHX;
   4585 
   4586 typedef struct VkExternalImageFormatPropertiesKHX {
   4587     VkStructureType                  sType;
   4588     void*                            pNext;
   4589     VkExternalMemoryPropertiesKHX    externalMemoryProperties;
   4590 } VkExternalImageFormatPropertiesKHX;
   4591 
   4592 typedef struct VkPhysicalDeviceExternalBufferInfoKHX {
   4593     VkStructureType                          sType;
   4594     const void*                              pNext;
   4595     VkBufferCreateFlags                      flags;
   4596     VkBufferUsageFlags                       usage;
   4597     VkExternalMemoryHandleTypeFlagBitsKHX    handleType;
   4598 } VkPhysicalDeviceExternalBufferInfoKHX;
   4599 
   4600 typedef struct VkExternalBufferPropertiesKHX {
   4601     VkStructureType                  sType;
   4602     void*                            pNext;
   4603     VkExternalMemoryPropertiesKHX    externalMemoryProperties;
   4604 } VkExternalBufferPropertiesKHX;
   4605 
   4606 typedef struct VkPhysicalDeviceIDPropertiesKHX {
   4607     VkStructureType    sType;
   4608     void*              pNext;
   4609     uint8_t            deviceUUID[VK_UUID_SIZE];
   4610     uint8_t            driverUUID[VK_UUID_SIZE];
   4611     uint8_t            deviceLUID[VK_LUID_SIZE_KHX];
   4612     VkBool32           deviceLUIDValid;
   4613 } VkPhysicalDeviceIDPropertiesKHX;
   4614 
   4615 
   4616 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHX)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo, VkExternalBufferPropertiesKHX* pExternalBufferProperties);
   4617 
   4618 #ifndef VK_NO_PROTOTYPES
   4619 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferPropertiesKHX(
   4620     VkPhysicalDevice                            physicalDevice,
   4621     const VkPhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo,
   4622     VkExternalBufferPropertiesKHX*              pExternalBufferProperties);
   4623 #endif
   4624 
   4625 #define VK_KHX_external_memory 1
   4626 #define VK_KHX_EXTERNAL_MEMORY_SPEC_VERSION 1
   4627 #define VK_KHX_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHX_external_memory"
   4628 #define VK_QUEUE_FAMILY_EXTERNAL_KHX      (~0U-1)
   4629 
   4630 typedef struct VkExternalMemoryImageCreateInfoKHX {
   4631     VkStructureType                       sType;
   4632     const void*                           pNext;
   4633     VkExternalMemoryHandleTypeFlagsKHX    handleTypes;
   4634 } VkExternalMemoryImageCreateInfoKHX;
   4635 
   4636 typedef struct VkExternalMemoryBufferCreateInfoKHX {
   4637     VkStructureType                       sType;
   4638     const void*                           pNext;
   4639     VkExternalMemoryHandleTypeFlagsKHX    handleTypes;
   4640 } VkExternalMemoryBufferCreateInfoKHX;
   4641 
   4642 typedef struct VkExportMemoryAllocateInfoKHX {
   4643     VkStructureType                       sType;
   4644     const void*                           pNext;
   4645     VkExternalMemoryHandleTypeFlagsKHX    handleTypes;
   4646 } VkExportMemoryAllocateInfoKHX;
   4647 
   4648 
   4649 #define VK_KHX_external_memory_fd 1
   4650 #define VK_KHX_EXTERNAL_MEMORY_FD_SPEC_VERSION 1
   4651 #define VK_KHX_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHX_external_memory_fd"
   4652 
   4653 typedef struct VkImportMemoryFdInfoKHX {
   4654     VkStructureType                          sType;
   4655     const void*                              pNext;
   4656     VkExternalMemoryHandleTypeFlagBitsKHX    handleType;
   4657     int                                      fd;
   4658 } VkImportMemoryFdInfoKHX;
   4659 
   4660 typedef struct VkMemoryFdPropertiesKHX {
   4661     VkStructureType    sType;
   4662     void*              pNext;
   4663     uint32_t           memoryTypeBits;
   4664 } VkMemoryFdPropertiesKHX;
   4665 
   4666 
   4667 typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdKHX)(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagBitsKHX handleType, int* pFd);
   4668 typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdPropertiesKHX)(VkDevice device, VkExternalMemoryHandleTypeFlagBitsKHX handleType, int fd, VkMemoryFdPropertiesKHX* pMemoryFdProperties);
   4669 
   4670 #ifndef VK_NO_PROTOTYPES
   4671 VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdKHX(
   4672     VkDevice                                    device,
   4673     VkDeviceMemory                              memory,
   4674     VkExternalMemoryHandleTypeFlagBitsKHX       handleType,
   4675     int*                                        pFd);
   4676 
   4677 VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHX(
   4678     VkDevice                                    device,
   4679     VkExternalMemoryHandleTypeFlagBitsKHX       handleType,
   4680     int                                         fd,
   4681     VkMemoryFdPropertiesKHX*                    pMemoryFdProperties);
   4682 #endif
   4683 
   4684 #define VK_KHX_external_semaphore_capabilities 1
   4685 #define VK_KHX_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1
   4686 #define VK_KHX_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHX_external_semaphore_capabilities"
   4687 
   4688 
   4689 typedef enum VkExternalSemaphoreHandleTypeFlagBitsKHX {
   4690     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHX = 0x00000001,
   4691     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX = 0x00000002,
   4692     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX = 0x00000004,
   4693     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHX = 0x00000008,
   4694     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHX = 0x00000010,
   4695     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_KHX = 0x7FFFFFFF
   4696 } VkExternalSemaphoreHandleTypeFlagBitsKHX;
   4697 typedef VkFlags VkExternalSemaphoreHandleTypeFlagsKHX;
   4698 
   4699 typedef enum VkExternalSemaphoreFeatureFlagBitsKHX {
   4700     VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHX = 0x00000001,
   4701     VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHX = 0x00000002,
   4702     VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM_KHX = 0x7FFFFFFF
   4703 } VkExternalSemaphoreFeatureFlagBitsKHX;
   4704 typedef VkFlags VkExternalSemaphoreFeatureFlagsKHX;
   4705 
   4706 typedef struct VkPhysicalDeviceExternalSemaphoreInfoKHX {
   4707     VkStructureType                             sType;
   4708     const void*                                 pNext;
   4709     VkExternalSemaphoreHandleTypeFlagBitsKHX    handleType;
   4710 } VkPhysicalDeviceExternalSemaphoreInfoKHX;
   4711 
   4712 typedef struct VkExternalSemaphorePropertiesKHX {
   4713     VkStructureType                          sType;
   4714     void*                                    pNext;
   4715     VkExternalSemaphoreHandleTypeFlagsKHX    exportFromImportedHandleTypes;
   4716     VkExternalSemaphoreHandleTypeFlagsKHX    compatibleHandleTypes;
   4717     VkExternalSemaphoreFeatureFlagsKHX       externalSemaphoreFeatures;
   4718 } VkExternalSemaphorePropertiesKHX;
   4719 
   4720 
   4721 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHX)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo, VkExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties);
   4722 
   4723 #ifndef VK_NO_PROTOTYPES
   4724 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphorePropertiesKHX(
   4725     VkPhysicalDevice                            physicalDevice,
   4726     const VkPhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo,
   4727     VkExternalSemaphorePropertiesKHX*           pExternalSemaphoreProperties);
   4728 #endif
   4729 
   4730 #define VK_KHX_external_semaphore 1
   4731 #define VK_KHX_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
   4732 #define VK_KHX_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHX_external_semaphore"
   4733 
   4734 typedef struct VkExportSemaphoreCreateInfoKHX {
   4735     VkStructureType                          sType;
   4736     const void*                              pNext;
   4737     VkExternalSemaphoreHandleTypeFlagsKHX    handleTypes;
   4738 } VkExportSemaphoreCreateInfoKHX;
   4739 
   4740 
   4741 #define VK_KHX_external_semaphore_fd 1
   4742 #define VK_KHX_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1
   4743 #define VK_KHX_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHX_external_semaphore_fd"
   4744 
   4745 typedef struct VkImportSemaphoreFdInfoKHX {
   4746     VkStructureType                             sType;
   4747     const void*                                 pNext;
   4748     VkSemaphore                                 semaphore;
   4749     VkExternalSemaphoreHandleTypeFlagBitsKHX    handleType;
   4750     int                                         fd;
   4751 } VkImportSemaphoreFdInfoKHX;
   4752 
   4753 
   4754 typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreFdKHX)(VkDevice device, const VkImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo);
   4755 typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreFdKHX)(VkDevice device, VkSemaphore semaphore, VkExternalSemaphoreHandleTypeFlagBitsKHX handleType, int* pFd);
   4756 
   4757 #ifndef VK_NO_PROTOTYPES
   4758 VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreFdKHX(
   4759     VkDevice                                    device,
   4760     const VkImportSemaphoreFdInfoKHX*           pImportSemaphoreFdInfo);
   4761 
   4762 VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHX(
   4763     VkDevice                                    device,
   4764     VkSemaphore                                 semaphore,
   4765     VkExternalSemaphoreHandleTypeFlagBitsKHX    handleType,
   4766     int*                                        pFd);
   4767 #endif
   4768 
   4769 #define VK_NVX_device_generated_commands 1
   4770 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkObjectTableNVX)
   4771 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNVX)
   4772 
   4773 #define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 1
   4774 #define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands"
   4775 
   4776 
   4777 typedef enum VkIndirectCommandsTokenTypeNVX {
   4778     VK_INDIRECT_COMMANDS_TOKEN_PIPELINE_NVX = 0,
   4779     VK_INDIRECT_COMMANDS_TOKEN_DESCRIPTOR_SET_NVX = 1,
   4780     VK_INDIRECT_COMMANDS_TOKEN_INDEX_BUFFER_NVX = 2,
   4781     VK_INDIRECT_COMMANDS_TOKEN_VERTEX_BUFFER_NVX = 3,
   4782     VK_INDIRECT_COMMANDS_TOKEN_PUSH_CONSTANT_NVX = 4,
   4783     VK_INDIRECT_COMMANDS_TOKEN_DRAW_INDEXED_NVX = 5,
   4784     VK_INDIRECT_COMMANDS_TOKEN_DRAW_NVX = 6,
   4785     VK_INDIRECT_COMMANDS_TOKEN_DISPATCH_NVX = 7,
   4786     VK_INDIRECT_COMMANDS_TOKEN_TYPE_BEGIN_RANGE_NVX = VK_INDIRECT_COMMANDS_TOKEN_PIPELINE_NVX,
   4787     VK_INDIRECT_COMMANDS_TOKEN_TYPE_END_RANGE_NVX = VK_INDIRECT_COMMANDS_TOKEN_DISPATCH_NVX,
   4788     VK_INDIRECT_COMMANDS_TOKEN_TYPE_RANGE_SIZE_NVX = (VK_INDIRECT_COMMANDS_TOKEN_DISPATCH_NVX - VK_INDIRECT_COMMANDS_TOKEN_PIPELINE_NVX + 1),
   4789     VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NVX = 0x7FFFFFFF
   4790 } VkIndirectCommandsTokenTypeNVX;
   4791 
   4792 typedef enum VkObjectEntryTypeNVX {
   4793     VK_OBJECT_ENTRY_DESCRIPTOR_SET_NVX = 0,
   4794     VK_OBJECT_ENTRY_PIPELINE_NVX = 1,
   4795     VK_OBJECT_ENTRY_INDEX_BUFFER_NVX = 2,
   4796     VK_OBJECT_ENTRY_VERTEX_BUFFER_NVX = 3,
   4797     VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX = 4,
   4798     VK_OBJECT_ENTRY_TYPE_BEGIN_RANGE_NVX = VK_OBJECT_ENTRY_DESCRIPTOR_SET_NVX,
   4799     VK_OBJECT_ENTRY_TYPE_END_RANGE_NVX = VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX,
   4800     VK_OBJECT_ENTRY_TYPE_RANGE_SIZE_NVX = (VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX - VK_OBJECT_ENTRY_DESCRIPTOR_SET_NVX + 1),
   4801     VK_OBJECT_ENTRY_TYPE_MAX_ENUM_NVX = 0x7FFFFFFF
   4802 } VkObjectEntryTypeNVX;
   4803 
   4804 
   4805 typedef enum VkIndirectCommandsLayoutUsageFlagBitsNVX {
   4806     VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = 0x00000001,
   4807     VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = 0x00000002,
   4808     VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = 0x00000004,
   4809     VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = 0x00000008,
   4810     VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NVX = 0x7FFFFFFF
   4811 } VkIndirectCommandsLayoutUsageFlagBitsNVX;
   4812 typedef VkFlags VkIndirectCommandsLayoutUsageFlagsNVX;
   4813 
   4814 typedef enum VkObjectEntryUsageFlagBitsNVX {
   4815     VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = 0x00000001,
   4816     VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = 0x00000002,
   4817     VK_OBJECT_ENTRY_USAGE_FLAG_BITS_MAX_ENUM_NVX = 0x7FFFFFFF
   4818 } VkObjectEntryUsageFlagBitsNVX;
   4819 typedef VkFlags VkObjectEntryUsageFlagsNVX;
   4820 
   4821 typedef struct VkDeviceGeneratedCommandsFeaturesNVX {
   4822     VkStructureType    sType;
   4823     const void*        pNext;
   4824     VkBool32           computeBindingPointSupport;
   4825 } VkDeviceGeneratedCommandsFeaturesNVX;
   4826 
   4827 typedef struct VkDeviceGeneratedCommandsLimitsNVX {
   4828     VkStructureType    sType;
   4829     const void*        pNext;
   4830     uint32_t           maxIndirectCommandsLayoutTokenCount;
   4831     uint32_t           maxObjectEntryCounts;
   4832     uint32_t           minSequenceCountBufferOffsetAlignment;
   4833     uint32_t           minSequenceIndexBufferOffsetAlignment;
   4834     uint32_t           minCommandsTokenBufferOffsetAlignment;
   4835 } VkDeviceGeneratedCommandsLimitsNVX;
   4836 
   4837 typedef struct VkIndirectCommandsTokenNVX {
   4838     VkIndirectCommandsTokenTypeNVX    tokenType;
   4839     VkBuffer                          buffer;
   4840     VkDeviceSize                      offset;
   4841 } VkIndirectCommandsTokenNVX;
   4842 
   4843 typedef struct VkIndirectCommandsLayoutTokenNVX {
   4844     VkIndirectCommandsTokenTypeNVX    tokenType;
   4845     uint32_t                          bindingUnit;
   4846     uint32_t                          dynamicCount;
   4847     uint32_t                          divisor;
   4848 } VkIndirectCommandsLayoutTokenNVX;
   4849 
   4850 typedef struct VkIndirectCommandsLayoutCreateInfoNVX {
   4851     VkStructureType                            sType;
   4852     const void*                                pNext;
   4853     VkPipelineBindPoint                        pipelineBindPoint;
   4854     VkIndirectCommandsLayoutUsageFlagsNVX      flags;
   4855     uint32_t                                   tokenCount;
   4856     const VkIndirectCommandsLayoutTokenNVX*    pTokens;
   4857 } VkIndirectCommandsLayoutCreateInfoNVX;
   4858 
   4859 typedef struct VkCmdProcessCommandsInfoNVX {
   4860     VkStructureType                      sType;
   4861     const void*                          pNext;
   4862     VkObjectTableNVX                     objectTable;
   4863     VkIndirectCommandsLayoutNVX          indirectCommandsLayout;
   4864     uint32_t                             indirectCommandsTokenCount;
   4865     const VkIndirectCommandsTokenNVX*    pIndirectCommandsTokens;
   4866     uint32_t                             maxSequencesCount;
   4867     VkCommandBuffer                      targetCommandBuffer;
   4868     VkBuffer                             sequencesCountBuffer;
   4869     VkDeviceSize                         sequencesCountOffset;
   4870     VkBuffer                             sequencesIndexBuffer;
   4871     VkDeviceSize                         sequencesIndexOffset;
   4872 } VkCmdProcessCommandsInfoNVX;
   4873 
   4874 typedef struct VkCmdReserveSpaceForCommandsInfoNVX {
   4875     VkStructureType                sType;
   4876     const void*                    pNext;
   4877     VkObjectTableNVX               objectTable;
   4878     VkIndirectCommandsLayoutNVX    indirectCommandsLayout;
   4879     uint32_t                       maxSequencesCount;
   4880 } VkCmdReserveSpaceForCommandsInfoNVX;
   4881 
   4882 typedef struct VkObjectTableCreateInfoNVX {
   4883     VkStructureType                      sType;
   4884     const void*                          pNext;
   4885     uint32_t                             objectCount;
   4886     const VkObjectEntryTypeNVX*          pObjectEntryTypes;
   4887     const uint32_t*                      pObjectEntryCounts;
   4888     const VkObjectEntryUsageFlagsNVX*    pObjectEntryUsageFlags;
   4889     uint32_t                             maxUniformBuffersPerDescriptor;
   4890     uint32_t                             maxStorageBuffersPerDescriptor;
   4891     uint32_t                             maxStorageImagesPerDescriptor;
   4892     uint32_t                             maxSampledImagesPerDescriptor;
   4893     uint32_t                             maxPipelineLayouts;
   4894 } VkObjectTableCreateInfoNVX;
   4895 
   4896 typedef struct VkObjectTableEntryNVX {
   4897     VkObjectEntryTypeNVX          type;
   4898     VkObjectEntryUsageFlagsNVX    flags;
   4899 } VkObjectTableEntryNVX;
   4900 
   4901 typedef struct VkObjectTablePipelineEntryNVX {
   4902     VkObjectEntryTypeNVX          type;
   4903     VkObjectEntryUsageFlagsNVX    flags;
   4904     VkPipeline                    pipeline;
   4905 } VkObjectTablePipelineEntryNVX;
   4906 
   4907 typedef struct VkObjectTableDescriptorSetEntryNVX {
   4908     VkObjectEntryTypeNVX          type;
   4909     VkObjectEntryUsageFlagsNVX    flags;
   4910     VkPipelineLayout              pipelineLayout;
   4911     VkDescriptorSet               descriptorSet;
   4912 } VkObjectTableDescriptorSetEntryNVX;
   4913 
   4914 typedef struct VkObjectTableVertexBufferEntryNVX {
   4915     VkObjectEntryTypeNVX          type;
   4916     VkObjectEntryUsageFlagsNVX    flags;
   4917     VkBuffer                      buffer;
   4918 } VkObjectTableVertexBufferEntryNVX;
   4919 
   4920 typedef struct VkObjectTableIndexBufferEntryNVX {
   4921     VkObjectEntryTypeNVX          type;
   4922     VkObjectEntryUsageFlagsNVX    flags;
   4923     VkBuffer                      buffer;
   4924     VkIndexType                   indexType;
   4925 } VkObjectTableIndexBufferEntryNVX;
   4926 
   4927 typedef struct VkObjectTablePushConstantEntryNVX {
   4928     VkObjectEntryTypeNVX          type;
   4929     VkObjectEntryUsageFlagsNVX    flags;
   4930     VkPipelineLayout              pipelineLayout;
   4931     VkShaderStageFlags            stageFlags;
   4932 } VkObjectTablePushConstantEntryNVX;
   4933 
   4934 
   4935 typedef void (VKAPI_PTR *PFN_vkCmdProcessCommandsNVX)(VkCommandBuffer commandBuffer, const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo);
   4936 typedef void (VKAPI_PTR *PFN_vkCmdReserveSpaceForCommandsNVX)(VkCommandBuffer commandBuffer, const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo);
   4937 typedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectCommandsLayoutNVX)(VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout);
   4938 typedef void (VKAPI_PTR *PFN_vkDestroyIndirectCommandsLayoutNVX)(VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator);
   4939 typedef VkResult (VKAPI_PTR *PFN_vkCreateObjectTableNVX)(VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable);
   4940 typedef void (VKAPI_PTR *PFN_vkDestroyObjectTableNVX)(VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator);
   4941 typedef VkResult (VKAPI_PTR *PFN_vkRegisterObjectsNVX)(VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectTableEntryNVX* const*    ppObjectTableEntries, const uint32_t* pObjectIndices);
   4942 typedef VkResult (VKAPI_PTR *PFN_vkUnregisterObjectsNVX)(VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices);
   4943 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX)(VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits);
   4944 
   4945 #ifndef VK_NO_PROTOTYPES
   4946 VKAPI_ATTR void VKAPI_CALL vkCmdProcessCommandsNVX(
   4947     VkCommandBuffer                             commandBuffer,
   4948     const VkCmdProcessCommandsInfoNVX*          pProcessCommandsInfo);
   4949 
   4950 VKAPI_ATTR void VKAPI_CALL vkCmdReserveSpaceForCommandsNVX(
   4951     VkCommandBuffer                             commandBuffer,
   4952     const VkCmdReserveSpaceForCommandsInfoNVX*  pReserveSpaceInfo);
   4953 
   4954 VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutNVX(
   4955     VkDevice                                    device,
   4956     const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
   4957     const VkAllocationCallbacks*                pAllocator,
   4958     VkIndirectCommandsLayoutNVX*                pIndirectCommandsLayout);
   4959 
   4960 VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutNVX(
   4961     VkDevice                                    device,
   4962     VkIndirectCommandsLayoutNVX                 indirectCommandsLayout,
   4963     const VkAllocationCallbacks*                pAllocator);
   4964 
   4965 VKAPI_ATTR VkResult VKAPI_CALL vkCreateObjectTableNVX(
   4966     VkDevice                                    device,
   4967     const VkObjectTableCreateInfoNVX*           pCreateInfo,
   4968     const VkAllocationCallbacks*                pAllocator,
   4969     VkObjectTableNVX*                           pObjectTable);
   4970 
   4971 VKAPI_ATTR void VKAPI_CALL vkDestroyObjectTableNVX(
   4972     VkDevice                                    device,
   4973     VkObjectTableNVX                            objectTable,
   4974     const VkAllocationCallbacks*                pAllocator);
   4975 
   4976 VKAPI_ATTR VkResult VKAPI_CALL vkRegisterObjectsNVX(
   4977     VkDevice                                    device,
   4978     VkObjectTableNVX                            objectTable,
   4979     uint32_t                                    objectCount,
   4980     const VkObjectTableEntryNVX* const*         ppObjectTableEntries,
   4981     const uint32_t*                             pObjectIndices);
   4982 
   4983 VKAPI_ATTR VkResult VKAPI_CALL vkUnregisterObjectsNVX(
   4984     VkDevice                                    device,
   4985     VkObjectTableNVX                            objectTable,
   4986     uint32_t                                    objectCount,
   4987     const VkObjectEntryTypeNVX*                 pObjectEntryTypes,
   4988     const uint32_t*                             pObjectIndices);
   4989 
   4990 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
   4991     VkPhysicalDevice                            physicalDevice,
   4992     VkDeviceGeneratedCommandsFeaturesNVX*       pFeatures,
   4993     VkDeviceGeneratedCommandsLimitsNVX*         pLimits);
   4994 #endif
   4995 
   4996 #define VK_NV_clip_space_w_scaling 1
   4997 #define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1
   4998 #define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling"
   4999 
   5000 typedef struct VkViewportWScalingNV {
   5001     float    xcoeff;
   5002     float    ycoeff;
   5003 } VkViewportWScalingNV;
   5004 
   5005 typedef struct VkPipelineViewportWScalingStateCreateInfoNV {
   5006     VkStructureType                sType;
   5007     const void*                    pNext;
   5008     VkBool32                       viewportWScalingEnable;
   5009     uint32_t                       viewportCount;
   5010     const VkViewportWScalingNV*    pViewportWScalings;
   5011 } VkPipelineViewportWScalingStateCreateInfoNV;
   5012 
   5013 
   5014 typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings);
   5015 
   5016 #ifndef VK_NO_PROTOTYPES
   5017 VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWScalingNV(
   5018     VkCommandBuffer                             commandBuffer,
   5019     uint32_t                                    firstViewport,
   5020     uint32_t                                    viewportCount,
   5021     const VkViewportWScalingNV*                 pViewportWScalings);
   5022 #endif
   5023 
   5024 #define VK_EXT_direct_mode_display 1
   5025 #define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1
   5026 #define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display"
   5027 
   5028 typedef VkResult (VKAPI_PTR *PFN_vkReleaseDisplayEXT)(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
   5029 
   5030 #ifndef VK_NO_PROTOTYPES
   5031 VKAPI_ATTR VkResult VKAPI_CALL vkReleaseDisplayEXT(
   5032     VkPhysicalDevice                            physicalDevice,
   5033     VkDisplayKHR                                display);
   5034 #endif
   5035 
   5036 #define VK_EXT_display_surface_counter 1
   5037 #define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1
   5038 #define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter"
   5039 
   5040 
   5041 typedef enum VkSurfaceCounterFlagBitsEXT {
   5042     VK_SURFACE_COUNTER_VBLANK_EXT = 0x00000001,
   5043     VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
   5044 } VkSurfaceCounterFlagBitsEXT;
   5045 typedef VkFlags VkSurfaceCounterFlagsEXT;
   5046 
   5047 typedef struct VkSurfaceCapabilities2EXT {
   5048     VkStructureType                  sType;
   5049     void*                            pNext;
   5050     uint32_t                         minImageCount;
   5051     uint32_t                         maxImageCount;
   5052     VkExtent2D                       currentExtent;
   5053     VkExtent2D                       minImageExtent;
   5054     VkExtent2D                       maxImageExtent;
   5055     uint32_t                         maxImageArrayLayers;
   5056     VkSurfaceTransformFlagsKHR       supportedTransforms;
   5057     VkSurfaceTransformFlagBitsKHR    currentTransform;
   5058     VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
   5059     VkImageUsageFlags                supportedUsageFlags;
   5060     VkSurfaceCounterFlagsEXT         supportedSurfaceCounters;
   5061 } VkSurfaceCapabilities2EXT;
   5062 
   5063 
   5064 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
   5065 
   5066 #ifndef VK_NO_PROTOTYPES
   5067 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT(
   5068     VkPhysicalDevice                            physicalDevice,
   5069     VkSurfaceKHR                                surface,
   5070     VkSurfaceCapabilities2EXT*                  pSurfaceCapabilities);
   5071 #endif
   5072 
   5073 #define VK_EXT_display_control 1
   5074 #define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1
   5075 #define VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME "VK_EXT_display_control"
   5076 
   5077 
   5078 typedef enum VkDisplayPowerStateEXT {
   5079     VK_DISPLAY_POWER_STATE_OFF_EXT = 0,
   5080     VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,
   5081     VK_DISPLAY_POWER_STATE_ON_EXT = 2,
   5082     VK_DISPLAY_POWER_STATE_BEGIN_RANGE_EXT = VK_DISPLAY_POWER_STATE_OFF_EXT,
   5083     VK_DISPLAY_POWER_STATE_END_RANGE_EXT = VK_DISPLAY_POWER_STATE_ON_EXT,
   5084     VK_DISPLAY_POWER_STATE_RANGE_SIZE_EXT = (VK_DISPLAY_POWER_STATE_ON_EXT - VK_DISPLAY_POWER_STATE_OFF_EXT + 1),
   5085     VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 0x7FFFFFFF
   5086 } VkDisplayPowerStateEXT;
   5087 
   5088 typedef enum VkDeviceEventTypeEXT {
   5089     VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0,
   5090     VK_DEVICE_EVENT_TYPE_BEGIN_RANGE_EXT = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT,
   5091     VK_DEVICE_EVENT_TYPE_END_RANGE_EXT = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT,
   5092     VK_DEVICE_EVENT_TYPE_RANGE_SIZE_EXT = (VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT + 1),
   5093     VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
   5094 } VkDeviceEventTypeEXT;
   5095 
   5096 typedef enum VkDisplayEventTypeEXT {
   5097     VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,
   5098     VK_DISPLAY_EVENT_TYPE_BEGIN_RANGE_EXT = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT,
   5099     VK_DISPLAY_EVENT_TYPE_END_RANGE_EXT = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT,
   5100     VK_DISPLAY_EVENT_TYPE_RANGE_SIZE_EXT = (VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT + 1),
   5101     VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
   5102 } VkDisplayEventTypeEXT;
   5103 
   5104 typedef struct VkDisplayPowerInfoEXT {
   5105     VkStructureType           sType;
   5106     const void*               pNext;
   5107     VkDisplayPowerStateEXT    powerState;
   5108 } VkDisplayPowerInfoEXT;
   5109 
   5110 typedef struct VkDeviceEventInfoEXT {
   5111     VkStructureType         sType;
   5112     const void*             pNext;
   5113     VkDeviceEventTypeEXT    deviceEvent;
   5114 } VkDeviceEventInfoEXT;
   5115 
   5116 typedef struct VkDisplayEventInfoEXT {
   5117     VkStructureType          sType;
   5118     const void*              pNext;
   5119     VkDisplayEventTypeEXT    displayEvent;
   5120 } VkDisplayEventInfoEXT;
   5121 
   5122 typedef struct VkSwapchainCounterCreateInfoEXT {
   5123     VkStructureType             sType;
   5124     const void*                 pNext;
   5125     VkSurfaceCounterFlagsEXT    surfaceCounters;
   5126 } VkSwapchainCounterCreateInfoEXT;
   5127 
   5128 
   5129 typedef VkResult (VKAPI_PTR *PFN_vkDisplayPowerControlEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
   5130 typedef VkResult (VKAPI_PTR *PFN_vkRegisterDeviceEventEXT)(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
   5131 typedef VkResult (VKAPI_PTR *PFN_vkRegisterDisplayEventEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
   5132 typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainCounterEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue);
   5133 
   5134 #ifndef VK_NO_PROTOTYPES
   5135 VKAPI_ATTR VkResult VKAPI_CALL vkDisplayPowerControlEXT(
   5136     VkDevice                                    device,
   5137     VkDisplayKHR                                display,
   5138     const VkDisplayPowerInfoEXT*                pDisplayPowerInfo);
   5139 
   5140 VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDeviceEventEXT(
   5141     VkDevice                                    device,
   5142     const VkDeviceEventInfoEXT*                 pDeviceEventInfo,
   5143     const VkAllocationCallbacks*                pAllocator,
   5144     VkFence*                                    pFence);
   5145 
   5146 VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDisplayEventEXT(
   5147     VkDevice                                    device,
   5148     VkDisplayKHR                                display,
   5149     const VkDisplayEventInfoEXT*                pDisplayEventInfo,
   5150     const VkAllocationCallbacks*                pAllocator,
   5151     VkFence*                                    pFence);
   5152 
   5153 VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainCounterEXT(
   5154     VkDevice                                    device,
   5155     VkSwapchainKHR                              swapchain,
   5156     VkSurfaceCounterFlagBitsEXT                 counter,
   5157     uint64_t*                                   pCounterValue);
   5158 #endif
   5159 
   5160 #define VK_GOOGLE_display_timing 1
   5161 #define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1
   5162 #define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing"
   5163 
   5164 typedef struct VkRefreshCycleDurationGOOGLE {
   5165     uint64_t    refreshDuration;
   5166 } VkRefreshCycleDurationGOOGLE;
   5167 
   5168 typedef struct VkPastPresentationTimingGOOGLE {
   5169     uint32_t    presentID;
   5170     uint64_t    desiredPresentTime;
   5171     uint64_t    actualPresentTime;
   5172     uint64_t    earliestPresentTime;
   5173     uint64_t    presentMargin;
   5174 } VkPastPresentationTimingGOOGLE;
   5175 
   5176 typedef struct VkPresentTimeGOOGLE {
   5177     uint32_t    presentID;
   5178     uint64_t    desiredPresentTime;
   5179 } VkPresentTimeGOOGLE;
   5180 
   5181 typedef struct VkPresentTimesInfoGOOGLE {
   5182     VkStructureType               sType;
   5183     const void*                   pNext;
   5184     uint32_t                      swapchainCount;
   5185     const VkPresentTimeGOOGLE*    pTimes;
   5186 } VkPresentTimesInfoGOOGLE;
   5187 
   5188 
   5189 typedef VkResult (VKAPI_PTR *PFN_vkGetRefreshCycleDurationGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
   5190 typedef VkResult (VKAPI_PTR *PFN_vkGetPastPresentationTimingGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings);
   5191 
   5192 #ifndef VK_NO_PROTOTYPES
   5193 VKAPI_ATTR VkResult VKAPI_CALL vkGetRefreshCycleDurationGOOGLE(
   5194     VkDevice                                    device,
   5195     VkSwapchainKHR                              swapchain,
   5196     VkRefreshCycleDurationGOOGLE*               pDisplayTimingProperties);
   5197 
   5198 VKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingGOOGLE(
   5199     VkDevice                                    device,
   5200     VkSwapchainKHR                              swapchain,
   5201     uint32_t*                                   pPresentationTimingCount,
   5202     VkPastPresentationTimingGOOGLE*             pPresentationTimings);
   5203 #endif
   5204 
   5205 #define VK_NV_sample_mask_override_coverage 1
   5206 #define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1
   5207 #define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage"
   5208 
   5209 
   5210 #define VK_NV_geometry_shader_passthrough 1
   5211 #define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1
   5212 #define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough"
   5213 
   5214 
   5215 #define VK_NV_viewport_array2 1
   5216 #define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION 1
   5217 #define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME "VK_NV_viewport_array2"
   5218 
   5219 
   5220 #define VK_NVX_multiview_per_view_attributes 1
   5221 #define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1
   5222 #define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes"
   5223 
   5224 typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
   5225     VkStructureType    sType;
   5226     void*              pNext;
   5227     VkBool32           perViewPositionAllComponents;
   5228 } VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
   5229 
   5230 
   5231 
   5232 #define VK_NV_viewport_swizzle 1
   5233 #define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1
   5234 #define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle"
   5235 
   5236 
   5237 typedef enum VkViewportCoordinateSwizzleNV {
   5238     VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0,
   5239     VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1,
   5240     VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2,
   5241     VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3,
   5242     VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4,
   5243     VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5,
   5244     VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6,
   5245     VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7,
   5246     VK_VIEWPORT_COORDINATE_SWIZZLE_BEGIN_RANGE_NV = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
   5247     VK_VIEWPORT_COORDINATE_SWIZZLE_END_RANGE_NV = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV,
   5248     VK_VIEWPORT_COORDINATE_SWIZZLE_RANGE_SIZE_NV = (VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV + 1),
   5249     VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 0x7FFFFFFF
   5250 } VkViewportCoordinateSwizzleNV;
   5251 
   5252 typedef VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV;
   5253 
   5254 typedef struct VkViewportSwizzleNV {
   5255     VkViewportCoordinateSwizzleNV    x;
   5256     VkViewportCoordinateSwizzleNV    y;
   5257     VkViewportCoordinateSwizzleNV    z;
   5258     VkViewportCoordinateSwizzleNV    w;
   5259 } VkViewportSwizzleNV;
   5260 
   5261 typedef struct VkPipelineViewportSwizzleStateCreateInfoNV {
   5262     VkStructureType                                sType;
   5263     const void*                                    pNext;
   5264     VkPipelineViewportSwizzleStateCreateFlagsNV    flags;
   5265     uint32_t                                       viewportCount;
   5266     const VkViewportSwizzleNV*                     pViewportSwizzles;
   5267 } VkPipelineViewportSwizzleStateCreateInfoNV;
   5268 
   5269 
   5270 
   5271 #define VK_EXT_discard_rectangles 1
   5272 #define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1
   5273 #define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
   5274 
   5275 
   5276 typedef enum VkDiscardRectangleModeEXT {
   5277     VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,
   5278     VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,
   5279     VK_DISCARD_RECTANGLE_MODE_BEGIN_RANGE_EXT = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
   5280     VK_DISCARD_RECTANGLE_MODE_END_RANGE_EXT = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT,
   5281     VK_DISCARD_RECTANGLE_MODE_RANGE_SIZE_EXT = (VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT - VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT + 1),
   5282     VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
   5283 } VkDiscardRectangleModeEXT;
   5284 
   5285 typedef VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT;
   5286 
   5287 typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT {
   5288     VkStructureType    sType;
   5289     void*              pNext;
   5290     uint32_t           maxDiscardRectangles;
   5291 } VkPhysicalDeviceDiscardRectanglePropertiesEXT;
   5292 
   5293 typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT {
   5294     VkStructureType                                  sType;
   5295     const void*                                      pNext;
   5296     VkPipelineDiscardRectangleStateCreateFlagsEXT    flags;
   5297     VkDiscardRectangleModeEXT                        discardRectangleMode;
   5298     uint32_t                                         discardRectangleCount;
   5299     const VkRect2D*                                  pDiscardRectangles;
   5300 } VkPipelineDiscardRectangleStateCreateInfoEXT;
   5301 
   5302 
   5303 typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEXT)(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles);
   5304 
   5305 #ifndef VK_NO_PROTOTYPES
   5306 VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT(
   5307     VkCommandBuffer                             commandBuffer,
   5308     uint32_t                                    firstDiscardRectangle,
   5309     uint32_t                                    discardRectangleCount,
   5310     const VkRect2D*                             pDiscardRectangles);
   5311 #endif
   5312 
   5313 #define VK_EXT_swapchain_colorspace 1
   5314 #define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 2
   5315 #define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace"
   5316 
   5317 
   5318 #define VK_EXT_hdr_metadata 1
   5319 #define VK_EXT_HDR_METADATA_SPEC_VERSION  1
   5320 #define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata"
   5321 
   5322 typedef struct VkXYColorEXT {
   5323     float    x;
   5324     float    y;
   5325 } VkXYColorEXT;
   5326 
   5327 typedef struct VkHdrMetadataEXT {
   5328     VkStructureType    sType;
   5329     const void*        pNext;
   5330     VkXYColorEXT       displayPrimaryRed;
   5331     VkXYColorEXT       displayPrimaryGreen;
   5332     VkXYColorEXT       displayPrimaryBlue;
   5333     VkXYColorEXT       whitePoint;
   5334     float              maxLuminance;
   5335     float              minLuminance;
   5336     float              maxContentLightLevel;
   5337     float              maxFrameAverageLightLevel;
   5338 } VkHdrMetadataEXT;
   5339 
   5340 
   5341 typedef void (VKAPI_PTR *PFN_vkSetHdrMetadataEXT)(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata);
   5342 
   5343 #ifndef VK_NO_PROTOTYPES
   5344 VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT(
   5345     VkDevice                                    device,
   5346     uint32_t                                    swapchainCount,
   5347     const VkSwapchainKHR*                       pSwapchains,
   5348     const VkHdrMetadataEXT*                     pMetadata);
   5349 #endif
   5350 
   5351 #ifdef __cplusplus
   5352 }
   5353 #endif
   5354 
   5355 #endif
   5356