Home | History | Annotate | Download | only in vulkan
      1 #ifndef VULKAN_CORE_H_
      2 #define VULKAN_CORE_H_ 1
      3 
      4 #ifdef __cplusplus
      5 extern "C" {
      6 #endif
      7 
      8 /*
      9 ** Copyright (c) 2015-2019 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 #define VK_VERSION_1_0 1
     31 #include "vk_platform.h"
     32 
     33 #define VK_MAKE_VERSION(major, minor, patch) \
     34     (((major) << 22) | ((minor) << 12) | (patch))
     35 
     36 // 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.
     37 //#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) // Patch version should always be set to 0
     38 
     39 // Vulkan 1.0 version number
     40 #define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)// Patch version should always be set to 0
     41 
     42 #define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22)
     43 #define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
     44 #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
     45 // Version of this file
     46 #define VK_HEADER_VERSION 102
     47 
     48 
     49 #define VK_NULL_HANDLE 0
     50 
     51 
     52 #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
     53 
     54 
     55 #if !defined(VK_DEFINE_NON_DISPATCHABLE_HANDLE)
     56 #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
     57         #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
     58 #else
     59         #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
     60 #endif
     61 #endif
     62 
     63 
     64 typedef uint32_t VkFlags;
     65 typedef uint32_t VkBool32;
     66 typedef uint64_t VkDeviceSize;
     67 typedef uint32_t VkSampleMask;
     68 
     69 VK_DEFINE_HANDLE(VkInstance)
     70 VK_DEFINE_HANDLE(VkPhysicalDevice)
     71 VK_DEFINE_HANDLE(VkDevice)
     72 VK_DEFINE_HANDLE(VkQueue)
     73 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore)
     74 VK_DEFINE_HANDLE(VkCommandBuffer)
     75 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence)
     76 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory)
     77 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer)
     78 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage)
     79 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent)
     80 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool)
     81 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView)
     82 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView)
     83 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule)
     84 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache)
     85 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout)
     86 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass)
     87 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline)
     88 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout)
     89 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler)
     90 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool)
     91 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet)
     92 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer)
     93 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool)
     94 
     95 #define VK_LOD_CLAMP_NONE                 1000.0f
     96 #define VK_REMAINING_MIP_LEVELS           (~0U)
     97 #define VK_REMAINING_ARRAY_LAYERS         (~0U)
     98 #define VK_WHOLE_SIZE                     (~0ULL)
     99 #define VK_ATTACHMENT_UNUSED              (~0U)
    100 #define VK_TRUE                           1
    101 #define VK_FALSE                          0
    102 #define VK_QUEUE_FAMILY_IGNORED           (~0U)
    103 #define VK_SUBPASS_EXTERNAL               (~0U)
    104 #define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE  256
    105 #define VK_UUID_SIZE                      16
    106 #define VK_MAX_MEMORY_TYPES               32
    107 #define VK_MAX_MEMORY_HEAPS               16
    108 #define VK_MAX_EXTENSION_NAME_SIZE        256
    109 #define VK_MAX_DESCRIPTION_SIZE           256
    110 
    111 
    112 typedef enum VkPipelineCacheHeaderVersion {
    113     VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
    114     VK_PIPELINE_CACHE_HEADER_VERSION_BEGIN_RANGE = VK_PIPELINE_CACHE_HEADER_VERSION_ONE,
    115     VK_PIPELINE_CACHE_HEADER_VERSION_END_RANGE = VK_PIPELINE_CACHE_HEADER_VERSION_ONE,
    116     VK_PIPELINE_CACHE_HEADER_VERSION_RANGE_SIZE = (VK_PIPELINE_CACHE_HEADER_VERSION_ONE - VK_PIPELINE_CACHE_HEADER_VERSION_ONE + 1),
    117     VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF
    118 } VkPipelineCacheHeaderVersion;
    119 
    120 typedef enum VkResult {
    121     VK_SUCCESS = 0,
    122     VK_NOT_READY = 1,
    123     VK_TIMEOUT = 2,
    124     VK_EVENT_SET = 3,
    125     VK_EVENT_RESET = 4,
    126     VK_INCOMPLETE = 5,
    127     VK_ERROR_OUT_OF_HOST_MEMORY = -1,
    128     VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
    129     VK_ERROR_INITIALIZATION_FAILED = -3,
    130     VK_ERROR_DEVICE_LOST = -4,
    131     VK_ERROR_MEMORY_MAP_FAILED = -5,
    132     VK_ERROR_LAYER_NOT_PRESENT = -6,
    133     VK_ERROR_EXTENSION_NOT_PRESENT = -7,
    134     VK_ERROR_FEATURE_NOT_PRESENT = -8,
    135     VK_ERROR_INCOMPATIBLE_DRIVER = -9,
    136     VK_ERROR_TOO_MANY_OBJECTS = -10,
    137     VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
    138     VK_ERROR_FRAGMENTED_POOL = -12,
    139     VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000,
    140     VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003,
    141     VK_ERROR_SURFACE_LOST_KHR = -1000000000,
    142     VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
    143     VK_SUBOPTIMAL_KHR = 1000001003,
    144     VK_ERROR_OUT_OF_DATE_KHR = -1000001004,
    145     VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
    146     VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
    147     VK_ERROR_INVALID_SHADER_NV = -1000012000,
    148     VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000,
    149     VK_ERROR_FRAGMENTATION_EXT = -1000161000,
    150     VK_ERROR_NOT_PERMITTED_EXT = -1000174001,
    151     VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = -1000244000,
    152     VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY,
    153     VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE,
    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_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000,
    211     VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000,
    212     VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001,
    213     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000,
    214     VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000,
    215     VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001,
    216     VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000,
    217     VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003,
    218     VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004,
    219     VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005,
    220     VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006,
    221     VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013,
    222     VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014,
    223     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000,
    224     VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001,
    225     VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000,
    226     VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001,
    227     VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002,
    228     VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003,
    229     VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004,
    230     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000,
    231     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001,
    232     VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002,
    233     VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003,
    234     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004,
    235     VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005,
    236     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006,
    237     VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007,
    238     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008,
    239     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000,
    240     VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001,
    241     VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002,
    242     VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003,
    243     VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000,
    244     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001,
    245     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002,
    246     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000,
    247     VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000,
    248     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001,
    249     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002,
    250     VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003,
    251     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000,
    252     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001,
    253     VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002,
    254     VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003,
    255     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004,
    256     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005,
    257     VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000,
    258     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000,
    259     VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001,
    260     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002,
    261     VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003,
    262     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004,
    263     VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000,
    264     VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001,
    265     VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002,
    266     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000,
    267     VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001,
    268     VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000,
    269     VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000,
    270     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000,
    271     VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001,
    272     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000,
    273     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001,
    274     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000,
    275     VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
    276     VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
    277     VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007,
    278     VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008,
    279     VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009,
    280     VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010,
    281     VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011,
    282     VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012,
    283     VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
    284     VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
    285     VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000,
    286     VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
    287     VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
    288     VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
    289     VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
    290     VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
    291     VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
    292     VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,
    293     VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,
    294     VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,
    295     VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,
    296     VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
    297     VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
    298     VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
    299     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000,
    300     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001,
    301     VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002,
    302     VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000,
    303     VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000,
    304     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000,
    305     VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
    306     VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,
    307     VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
    308     VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
    309     VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
    310     VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
    311     VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000,
    312     VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000,
    313     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001,
    314     VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000,
    315     VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001,
    316     VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002,
    317     VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003,
    318     VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000,
    319     VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001,
    320     VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002,
    321     VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000,
    322     VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000,
    323     VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001,
    324     VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002,
    325     VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003,
    326     VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000,
    327     VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001,
    328     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000,
    329     VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000,
    330     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001,
    331     VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002,
    332     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = 1000082000,
    333     VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
    334     VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
    335     VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
    336     VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = 1000086002,
    337     VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = 1000086003,
    338     VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004,
    339     VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005,
    340     VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000,
    341     VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000,
    342     VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000,
    343     VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001,
    344     VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002,
    345     VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,
    346     VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000,
    347     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000,
    348     VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000,
    349     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,
    350     VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,
    351     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000,
    352     VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001,
    353     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000,
    354     VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001,
    355     VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
    356     VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = 1000109000,
    357     VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = 1000109001,
    358     VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = 1000109002,
    359     VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = 1000109003,
    360     VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = 1000109004,
    361     VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = 1000109005,
    362     VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = 1000109006,
    363     VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
    364     VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000,
    365     VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001,
    366     VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002,
    367     VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000,
    368     VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001,
    369     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,
    370     VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001,
    371     VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002,
    372     VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000,
    373     VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001,
    374     VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002,
    375     VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003,
    376     VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004,
    377     VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000,
    378     VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000,
    379     VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000,
    380     VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001,
    381     VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002,
    382     VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003,
    383     VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004,
    384     VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000,
    385     VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001,
    386     VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002,
    387     VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003,
    388     VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004,
    389     VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005,
    390     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000,
    391     VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001,
    392     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000,
    393     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001,
    394     VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002,
    395     VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003,
    396     VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000,
    397     VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001,
    398     VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002,
    399     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003,
    400     VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004,
    401     VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000,
    402     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000,
    403     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001,
    404     VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
    405     VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000,
    406     VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000,
    407     VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000,
    408     VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158001,
    409     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002,
    410     VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003,
    411     VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004,
    412     VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005,
    413     VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,
    414     VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
    415     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = 1000161000,
    416     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = 1000161001,
    417     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = 1000161002,
    418     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = 1000161003,
    419     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = 1000161004,
    420     VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000,
    421     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001,
    422     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002,
    423     VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005,
    424     VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000,
    425     VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001,
    426     VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003,
    427     VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004,
    428     VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005,
    429     VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006,
    430     VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007,
    431     VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008,
    432     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009,
    433     VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011,
    434     VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012,
    435     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000,
    436     VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001,
    437     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000,
    438     VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001,
    439     VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000,
    440     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = 1000177000,
    441     VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000,
    442     VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001,
    443     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,
    444     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = 1000180000,
    445     VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000,
    446     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000,
    447     VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000,
    448     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000,
    449     VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001,
    450     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002,
    451     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = 1000196000,
    452     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = 1000197000,
    453     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = 1000199000,
    454     VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = 1000199001,
    455     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000,
    456     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000,
    457     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001,
    458     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000,
    459     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000,
    460     VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000,
    461     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002,
    462     VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000,
    463     VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001,
    464     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000,
    465     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000,
    466     VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000,
    467     VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000,
    468     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000,
    469     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001,
    470     VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002,
    471     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = 1000221000,
    472     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000,
    473     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000,
    474     VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001,
    475     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000,
    476     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = 1000244000,
    477     VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = 1000244001,
    478     VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002,
    479     VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = 1000246000,
    480     VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000,
    481     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000,
    482     VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001,
    483     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002,
    484     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000,
    485     VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
    486     VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,
    487     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
    488     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
    489     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,
    490     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,
    491     VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2,
    492     VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,
    493     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
    494     VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,
    495     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
    496     VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2,
    497     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
    498     VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,
    499     VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
    500     VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
    501     VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,
    502     VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,
    503     VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
    504     VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
    505     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES,
    506     VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,
    507     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
    508     VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,
    509     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
    510     VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,
    511     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,
    512     VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
    513     VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
    514     VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,
    515     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
    516     VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
    517     VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
    518     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
    519     VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
    520     VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
    521     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
    522     VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
    523     VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
    524     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
    525     VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
    526     VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,
    527     VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
    528     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,
    529     VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
    530     VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
    531     VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
    532     VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
    533     VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
    534     VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
    535     VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
    536     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
    537     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
    538     VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,
    539     VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
    540     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
    541     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
    542     VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
    543     VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
    544     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
    545     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
    546     VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
    547     VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
    548     VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
    549     VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
    550 } VkStructureType;
    551 
    552 typedef enum VkSystemAllocationScope {
    553     VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,
    554     VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,
    555     VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,
    556     VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,
    557     VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4,
    558     VK_SYSTEM_ALLOCATION_SCOPE_BEGIN_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
    559     VK_SYSTEM_ALLOCATION_SCOPE_END_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE,
    560     VK_SYSTEM_ALLOCATION_SCOPE_RANGE_SIZE = (VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE - VK_SYSTEM_ALLOCATION_SCOPE_COMMAND + 1),
    561     VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF
    562 } VkSystemAllocationScope;
    563 
    564 typedef enum VkInternalAllocationType {
    565     VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,
    566     VK_INTERNAL_ALLOCATION_TYPE_BEGIN_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE,
    567     VK_INTERNAL_ALLOCATION_TYPE_END_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE,
    568     VK_INTERNAL_ALLOCATION_TYPE_RANGE_SIZE = (VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE - VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE + 1),
    569     VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF
    570 } VkInternalAllocationType;
    571 
    572 typedef enum VkFormat {
    573     VK_FORMAT_UNDEFINED = 0,
    574     VK_FORMAT_R4G4_UNORM_PACK8 = 1,
    575     VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
    576     VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
    577     VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
    578     VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
    579     VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
    580     VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
    581     VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
    582     VK_FORMAT_R8_UNORM = 9,
    583     VK_FORMAT_R8_SNORM = 10,
    584     VK_FORMAT_R8_USCALED = 11,
    585     VK_FORMAT_R8_SSCALED = 12,
    586     VK_FORMAT_R8_UINT = 13,
    587     VK_FORMAT_R8_SINT = 14,
    588     VK_FORMAT_R8_SRGB = 15,
    589     VK_FORMAT_R8G8_UNORM = 16,
    590     VK_FORMAT_R8G8_SNORM = 17,
    591     VK_FORMAT_R8G8_USCALED = 18,
    592     VK_FORMAT_R8G8_SSCALED = 19,
    593     VK_FORMAT_R8G8_UINT = 20,
    594     VK_FORMAT_R8G8_SINT = 21,
    595     VK_FORMAT_R8G8_SRGB = 22,
    596     VK_FORMAT_R8G8B8_UNORM = 23,
    597     VK_FORMAT_R8G8B8_SNORM = 24,
    598     VK_FORMAT_R8G8B8_USCALED = 25,
    599     VK_FORMAT_R8G8B8_SSCALED = 26,
    600     VK_FORMAT_R8G8B8_UINT = 27,
    601     VK_FORMAT_R8G8B8_SINT = 28,
    602     VK_FORMAT_R8G8B8_SRGB = 29,
    603     VK_FORMAT_B8G8R8_UNORM = 30,
    604     VK_FORMAT_B8G8R8_SNORM = 31,
    605     VK_FORMAT_B8G8R8_USCALED = 32,
    606     VK_FORMAT_B8G8R8_SSCALED = 33,
    607     VK_FORMAT_B8G8R8_UINT = 34,
    608     VK_FORMAT_B8G8R8_SINT = 35,
    609     VK_FORMAT_B8G8R8_SRGB = 36,
    610     VK_FORMAT_R8G8B8A8_UNORM = 37,
    611     VK_FORMAT_R8G8B8A8_SNORM = 38,
    612     VK_FORMAT_R8G8B8A8_USCALED = 39,
    613     VK_FORMAT_R8G8B8A8_SSCALED = 40,
    614     VK_FORMAT_R8G8B8A8_UINT = 41,
    615     VK_FORMAT_R8G8B8A8_SINT = 42,
    616     VK_FORMAT_R8G8B8A8_SRGB = 43,
    617     VK_FORMAT_B8G8R8A8_UNORM = 44,
    618     VK_FORMAT_B8G8R8A8_SNORM = 45,
    619     VK_FORMAT_B8G8R8A8_USCALED = 46,
    620     VK_FORMAT_B8G8R8A8_SSCALED = 47,
    621     VK_FORMAT_B8G8R8A8_UINT = 48,
    622     VK_FORMAT_B8G8R8A8_SINT = 49,
    623     VK_FORMAT_B8G8R8A8_SRGB = 50,
    624     VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
    625     VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
    626     VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
    627     VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
    628     VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
    629     VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
    630     VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
    631     VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
    632     VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
    633     VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
    634     VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
    635     VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
    636     VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
    637     VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
    638     VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
    639     VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
    640     VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
    641     VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
    642     VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
    643     VK_FORMAT_R16_UNORM = 70,
    644     VK_FORMAT_R16_SNORM = 71,
    645     VK_FORMAT_R16_USCALED = 72,
    646     VK_FORMAT_R16_SSCALED = 73,
    647     VK_FORMAT_R16_UINT = 74,
    648     VK_FORMAT_R16_SINT = 75,
    649     VK_FORMAT_R16_SFLOAT = 76,
    650     VK_FORMAT_R16G16_UNORM = 77,
    651     VK_FORMAT_R16G16_SNORM = 78,
    652     VK_FORMAT_R16G16_USCALED = 79,
    653     VK_FORMAT_R16G16_SSCALED = 80,
    654     VK_FORMAT_R16G16_UINT = 81,
    655     VK_FORMAT_R16G16_SINT = 82,
    656     VK_FORMAT_R16G16_SFLOAT = 83,
    657     VK_FORMAT_R16G16B16_UNORM = 84,
    658     VK_FORMAT_R16G16B16_SNORM = 85,
    659     VK_FORMAT_R16G16B16_USCALED = 86,
    660     VK_FORMAT_R16G16B16_SSCALED = 87,
    661     VK_FORMAT_R16G16B16_UINT = 88,
    662     VK_FORMAT_R16G16B16_SINT = 89,
    663     VK_FORMAT_R16G16B16_SFLOAT = 90,
    664     VK_FORMAT_R16G16B16A16_UNORM = 91,
    665     VK_FORMAT_R16G16B16A16_SNORM = 92,
    666     VK_FORMAT_R16G16B16A16_USCALED = 93,
    667     VK_FORMAT_R16G16B16A16_SSCALED = 94,
    668     VK_FORMAT_R16G16B16A16_UINT = 95,
    669     VK_FORMAT_R16G16B16A16_SINT = 96,
    670     VK_FORMAT_R16G16B16A16_SFLOAT = 97,
    671     VK_FORMAT_R32_UINT = 98,
    672     VK_FORMAT_R32_SINT = 99,
    673     VK_FORMAT_R32_SFLOAT = 100,
    674     VK_FORMAT_R32G32_UINT = 101,
    675     VK_FORMAT_R32G32_SINT = 102,
    676     VK_FORMAT_R32G32_SFLOAT = 103,
    677     VK_FORMAT_R32G32B32_UINT = 104,
    678     VK_FORMAT_R32G32B32_SINT = 105,
    679     VK_FORMAT_R32G32B32_SFLOAT = 106,
    680     VK_FORMAT_R32G32B32A32_UINT = 107,
    681     VK_FORMAT_R32G32B32A32_SINT = 108,
    682     VK_FORMAT_R32G32B32A32_SFLOAT = 109,
    683     VK_FORMAT_R64_UINT = 110,
    684     VK_FORMAT_R64_SINT = 111,
    685     VK_FORMAT_R64_SFLOAT = 112,
    686     VK_FORMAT_R64G64_UINT = 113,
    687     VK_FORMAT_R64G64_SINT = 114,
    688     VK_FORMAT_R64G64_SFLOAT = 115,
    689     VK_FORMAT_R64G64B64_UINT = 116,
    690     VK_FORMAT_R64G64B64_SINT = 117,
    691     VK_FORMAT_R64G64B64_SFLOAT = 118,
    692     VK_FORMAT_R64G64B64A64_UINT = 119,
    693     VK_FORMAT_R64G64B64A64_SINT = 120,
    694     VK_FORMAT_R64G64B64A64_SFLOAT = 121,
    695     VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
    696     VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
    697     VK_FORMAT_D16_UNORM = 124,
    698     VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
    699     VK_FORMAT_D32_SFLOAT = 126,
    700     VK_FORMAT_S8_UINT = 127,
    701     VK_FORMAT_D16_UNORM_S8_UINT = 128,
    702     VK_FORMAT_D24_UNORM_S8_UINT = 129,
    703     VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
    704     VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
    705     VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
    706     VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
    707     VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
    708     VK_FORMAT_BC2_UNORM_BLOCK = 135,
    709     VK_FORMAT_BC2_SRGB_BLOCK = 136,
    710     VK_FORMAT_BC3_UNORM_BLOCK = 137,
    711     VK_FORMAT_BC3_SRGB_BLOCK = 138,
    712     VK_FORMAT_BC4_UNORM_BLOCK = 139,
    713     VK_FORMAT_BC4_SNORM_BLOCK = 140,
    714     VK_FORMAT_BC5_UNORM_BLOCK = 141,
    715     VK_FORMAT_BC5_SNORM_BLOCK = 142,
    716     VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
    717     VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
    718     VK_FORMAT_BC7_UNORM_BLOCK = 145,
    719     VK_FORMAT_BC7_SRGB_BLOCK = 146,
    720     VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
    721     VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
    722     VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
    723     VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
    724     VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
    725     VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
    726     VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
    727     VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
    728     VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
    729     VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
    730     VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
    731     VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
    732     VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
    733     VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
    734     VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
    735     VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
    736     VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
    737     VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
    738     VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
    739     VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
    740     VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
    741     VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
    742     VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
    743     VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
    744     VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
    745     VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
    746     VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
    747     VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
    748     VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
    749     VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
    750     VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
    751     VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
    752     VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
    753     VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
    754     VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
    755     VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
    756     VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
    757     VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
    758     VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000,
    759     VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001,
    760     VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002,
    761     VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003,
    762     VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004,
    763     VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005,
    764     VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006,
    765     VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007,
    766     VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008,
    767     VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009,
    768     VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010,
    769     VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011,
    770     VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012,
    771     VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013,
    772     VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014,
    773     VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015,
    774     VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016,
    775     VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017,
    776     VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018,
    777     VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019,
    778     VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020,
    779     VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021,
    780     VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022,
    781     VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023,
    782     VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024,
    783     VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025,
    784     VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026,
    785     VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027,
    786     VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028,
    787     VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029,
    788     VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030,
    789     VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031,
    790     VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032,
    791     VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033,
    792     VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
    793     VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
    794     VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
    795     VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
    796     VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
    797     VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
    798     VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
    799     VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
    800     VK_FORMAT_G8B8G8R8_422_UNORM_KHR = VK_FORMAT_G8B8G8R8_422_UNORM,
    801     VK_FORMAT_B8G8R8G8_422_UNORM_KHR = VK_FORMAT_B8G8R8G8_422_UNORM,
    802     VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
    803     VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM,
    804     VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM,
    805     VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM,
    806     VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM,
    807     VK_FORMAT_R10X6_UNORM_PACK16_KHR = VK_FORMAT_R10X6_UNORM_PACK16,
    808     VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16,
    809     VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,
    810     VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,
    811     VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,
    812     VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,
    813     VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,
    814     VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,
    815     VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,
    816     VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,
    817     VK_FORMAT_R12X4_UNORM_PACK16_KHR = VK_FORMAT_R12X4_UNORM_PACK16,
    818     VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16,
    819     VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,
    820     VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,
    821     VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,
    822     VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,
    823     VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,
    824     VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,
    825     VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,
    826     VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,
    827     VK_FORMAT_G16B16G16R16_422_UNORM_KHR = VK_FORMAT_G16B16G16R16_422_UNORM,
    828     VK_FORMAT_B16G16R16G16_422_UNORM_KHR = VK_FORMAT_B16G16R16G16_422_UNORM,
    829     VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM,
    830     VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM,
    831     VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM,
    832     VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM,
    833     VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM,
    834     VK_FORMAT_BEGIN_RANGE = VK_FORMAT_UNDEFINED,
    835     VK_FORMAT_END_RANGE = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
    836     VK_FORMAT_RANGE_SIZE = (VK_FORMAT_ASTC_12x12_SRGB_BLOCK - VK_FORMAT_UNDEFINED + 1),
    837     VK_FORMAT_MAX_ENUM = 0x7FFFFFFF
    838 } VkFormat;
    839 
    840 typedef enum VkImageType {
    841     VK_IMAGE_TYPE_1D = 0,
    842     VK_IMAGE_TYPE_2D = 1,
    843     VK_IMAGE_TYPE_3D = 2,
    844     VK_IMAGE_TYPE_BEGIN_RANGE = VK_IMAGE_TYPE_1D,
    845     VK_IMAGE_TYPE_END_RANGE = VK_IMAGE_TYPE_3D,
    846     VK_IMAGE_TYPE_RANGE_SIZE = (VK_IMAGE_TYPE_3D - VK_IMAGE_TYPE_1D + 1),
    847     VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF
    848 } VkImageType;
    849 
    850 typedef enum VkImageTiling {
    851     VK_IMAGE_TILING_OPTIMAL = 0,
    852     VK_IMAGE_TILING_LINEAR = 1,
    853     VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000,
    854     VK_IMAGE_TILING_BEGIN_RANGE = VK_IMAGE_TILING_OPTIMAL,
    855     VK_IMAGE_TILING_END_RANGE = VK_IMAGE_TILING_LINEAR,
    856     VK_IMAGE_TILING_RANGE_SIZE = (VK_IMAGE_TILING_LINEAR - VK_IMAGE_TILING_OPTIMAL + 1),
    857     VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF
    858 } VkImageTiling;
    859 
    860 typedef enum VkPhysicalDeviceType {
    861     VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,
    862     VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,
    863     VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,
    864     VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,
    865     VK_PHYSICAL_DEVICE_TYPE_CPU = 4,
    866     VK_PHYSICAL_DEVICE_TYPE_BEGIN_RANGE = VK_PHYSICAL_DEVICE_TYPE_OTHER,
    867     VK_PHYSICAL_DEVICE_TYPE_END_RANGE = VK_PHYSICAL_DEVICE_TYPE_CPU,
    868     VK_PHYSICAL_DEVICE_TYPE_RANGE_SIZE = (VK_PHYSICAL_DEVICE_TYPE_CPU - VK_PHYSICAL_DEVICE_TYPE_OTHER + 1),
    869     VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF
    870 } VkPhysicalDeviceType;
    871 
    872 typedef enum VkQueryType {
    873     VK_QUERY_TYPE_OCCLUSION = 0,
    874     VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
    875     VK_QUERY_TYPE_TIMESTAMP = 2,
    876     VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004,
    877     VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000,
    878     VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION,
    879     VK_QUERY_TYPE_END_RANGE = VK_QUERY_TYPE_TIMESTAMP,
    880     VK_QUERY_TYPE_RANGE_SIZE = (VK_QUERY_TYPE_TIMESTAMP - VK_QUERY_TYPE_OCCLUSION + 1),
    881     VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF
    882 } VkQueryType;
    883 
    884 typedef enum VkSharingMode {
    885     VK_SHARING_MODE_EXCLUSIVE = 0,
    886     VK_SHARING_MODE_CONCURRENT = 1,
    887     VK_SHARING_MODE_BEGIN_RANGE = VK_SHARING_MODE_EXCLUSIVE,
    888     VK_SHARING_MODE_END_RANGE = VK_SHARING_MODE_CONCURRENT,
    889     VK_SHARING_MODE_RANGE_SIZE = (VK_SHARING_MODE_CONCURRENT - VK_SHARING_MODE_EXCLUSIVE + 1),
    890     VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF
    891 } VkSharingMode;
    892 
    893 typedef enum VkImageLayout {
    894     VK_IMAGE_LAYOUT_UNDEFINED = 0,
    895     VK_IMAGE_LAYOUT_GENERAL = 1,
    896     VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,
    897     VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
    898     VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
    899     VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,
    900     VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,
    901     VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
    902     VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
    903     VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000,
    904     VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001,
    905     VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
    906     VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
    907     VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003,
    908     VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000,
    909     VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
    910     VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
    911     VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED,
    912     VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_PREINITIALIZED,
    913     VK_IMAGE_LAYOUT_RANGE_SIZE = (VK_IMAGE_LAYOUT_PREINITIALIZED - VK_IMAGE_LAYOUT_UNDEFINED + 1),
    914     VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF
    915 } VkImageLayout;
    916 
    917 typedef enum VkImageViewType {
    918     VK_IMAGE_VIEW_TYPE_1D = 0,
    919     VK_IMAGE_VIEW_TYPE_2D = 1,
    920     VK_IMAGE_VIEW_TYPE_3D = 2,
    921     VK_IMAGE_VIEW_TYPE_CUBE = 3,
    922     VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4,
    923     VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5,
    924     VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6,
    925     VK_IMAGE_VIEW_TYPE_BEGIN_RANGE = VK_IMAGE_VIEW_TYPE_1D,
    926     VK_IMAGE_VIEW_TYPE_END_RANGE = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY,
    927     VK_IMAGE_VIEW_TYPE_RANGE_SIZE = (VK_IMAGE_VIEW_TYPE_CUBE_ARRAY - VK_IMAGE_VIEW_TYPE_1D + 1),
    928     VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF
    929 } VkImageViewType;
    930 
    931 typedef enum VkComponentSwizzle {
    932     VK_COMPONENT_SWIZZLE_IDENTITY = 0,
    933     VK_COMPONENT_SWIZZLE_ZERO = 1,
    934     VK_COMPONENT_SWIZZLE_ONE = 2,
    935     VK_COMPONENT_SWIZZLE_R = 3,
    936     VK_COMPONENT_SWIZZLE_G = 4,
    937     VK_COMPONENT_SWIZZLE_B = 5,
    938     VK_COMPONENT_SWIZZLE_A = 6,
    939     VK_COMPONENT_SWIZZLE_BEGIN_RANGE = VK_COMPONENT_SWIZZLE_IDENTITY,
    940     VK_COMPONENT_SWIZZLE_END_RANGE = VK_COMPONENT_SWIZZLE_A,
    941     VK_COMPONENT_SWIZZLE_RANGE_SIZE = (VK_COMPONENT_SWIZZLE_A - VK_COMPONENT_SWIZZLE_IDENTITY + 1),
    942     VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF
    943 } VkComponentSwizzle;
    944 
    945 typedef enum VkVertexInputRate {
    946     VK_VERTEX_INPUT_RATE_VERTEX = 0,
    947     VK_VERTEX_INPUT_RATE_INSTANCE = 1,
    948     VK_VERTEX_INPUT_RATE_BEGIN_RANGE = VK_VERTEX_INPUT_RATE_VERTEX,
    949     VK_VERTEX_INPUT_RATE_END_RANGE = VK_VERTEX_INPUT_RATE_INSTANCE,
    950     VK_VERTEX_INPUT_RATE_RANGE_SIZE = (VK_VERTEX_INPUT_RATE_INSTANCE - VK_VERTEX_INPUT_RATE_VERTEX + 1),
    951     VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF
    952 } VkVertexInputRate;
    953 
    954 typedef enum VkPrimitiveTopology {
    955     VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
    956     VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,
    957     VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,
    958     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,
    959     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,
    960     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,
    961     VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,
    962     VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
    963     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
    964     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
    965     VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,
    966     VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
    967     VK_PRIMITIVE_TOPOLOGY_END_RANGE = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST,
    968     VK_PRIMITIVE_TOPOLOGY_RANGE_SIZE = (VK_PRIMITIVE_TOPOLOGY_PATCH_LIST - VK_PRIMITIVE_TOPOLOGY_POINT_LIST + 1),
    969     VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF
    970 } VkPrimitiveTopology;
    971 
    972 typedef enum VkPolygonMode {
    973     VK_POLYGON_MODE_FILL = 0,
    974     VK_POLYGON_MODE_LINE = 1,
    975     VK_POLYGON_MODE_POINT = 2,
    976     VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000,
    977     VK_POLYGON_MODE_BEGIN_RANGE = VK_POLYGON_MODE_FILL,
    978     VK_POLYGON_MODE_END_RANGE = VK_POLYGON_MODE_POINT,
    979     VK_POLYGON_MODE_RANGE_SIZE = (VK_POLYGON_MODE_POINT - VK_POLYGON_MODE_FILL + 1),
    980     VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF
    981 } VkPolygonMode;
    982 
    983 typedef enum VkFrontFace {
    984     VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
    985     VK_FRONT_FACE_CLOCKWISE = 1,
    986     VK_FRONT_FACE_BEGIN_RANGE = VK_FRONT_FACE_COUNTER_CLOCKWISE,
    987     VK_FRONT_FACE_END_RANGE = VK_FRONT_FACE_CLOCKWISE,
    988     VK_FRONT_FACE_RANGE_SIZE = (VK_FRONT_FACE_CLOCKWISE - VK_FRONT_FACE_COUNTER_CLOCKWISE + 1),
    989     VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF
    990 } VkFrontFace;
    991 
    992 typedef enum VkCompareOp {
    993     VK_COMPARE_OP_NEVER = 0,
    994     VK_COMPARE_OP_LESS = 1,
    995     VK_COMPARE_OP_EQUAL = 2,
    996     VK_COMPARE_OP_LESS_OR_EQUAL = 3,
    997     VK_COMPARE_OP_GREATER = 4,
    998     VK_COMPARE_OP_NOT_EQUAL = 5,
    999     VK_COMPARE_OP_GREATER_OR_EQUAL = 6,
   1000     VK_COMPARE_OP_ALWAYS = 7,
   1001     VK_COMPARE_OP_BEGIN_RANGE = VK_COMPARE_OP_NEVER,
   1002     VK_COMPARE_OP_END_RANGE = VK_COMPARE_OP_ALWAYS,
   1003     VK_COMPARE_OP_RANGE_SIZE = (VK_COMPARE_OP_ALWAYS - VK_COMPARE_OP_NEVER + 1),
   1004     VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF
   1005 } VkCompareOp;
   1006 
   1007 typedef enum VkStencilOp {
   1008     VK_STENCIL_OP_KEEP = 0,
   1009     VK_STENCIL_OP_ZERO = 1,
   1010     VK_STENCIL_OP_REPLACE = 2,
   1011     VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,
   1012     VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,
   1013     VK_STENCIL_OP_INVERT = 5,
   1014     VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,
   1015     VK_STENCIL_OP_DECREMENT_AND_WRAP = 7,
   1016     VK_STENCIL_OP_BEGIN_RANGE = VK_STENCIL_OP_KEEP,
   1017     VK_STENCIL_OP_END_RANGE = VK_STENCIL_OP_DECREMENT_AND_WRAP,
   1018     VK_STENCIL_OP_RANGE_SIZE = (VK_STENCIL_OP_DECREMENT_AND_WRAP - VK_STENCIL_OP_KEEP + 1),
   1019     VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF
   1020 } VkStencilOp;
   1021 
   1022 typedef enum VkLogicOp {
   1023     VK_LOGIC_OP_CLEAR = 0,
   1024     VK_LOGIC_OP_AND = 1,
   1025     VK_LOGIC_OP_AND_REVERSE = 2,
   1026     VK_LOGIC_OP_COPY = 3,
   1027     VK_LOGIC_OP_AND_INVERTED = 4,
   1028     VK_LOGIC_OP_NO_OP = 5,
   1029     VK_LOGIC_OP_XOR = 6,
   1030     VK_LOGIC_OP_OR = 7,
   1031     VK_LOGIC_OP_NOR = 8,
   1032     VK_LOGIC_OP_EQUIVALENT = 9,
   1033     VK_LOGIC_OP_INVERT = 10,
   1034     VK_LOGIC_OP_OR_REVERSE = 11,
   1035     VK_LOGIC_OP_COPY_INVERTED = 12,
   1036     VK_LOGIC_OP_OR_INVERTED = 13,
   1037     VK_LOGIC_OP_NAND = 14,
   1038     VK_LOGIC_OP_SET = 15,
   1039     VK_LOGIC_OP_BEGIN_RANGE = VK_LOGIC_OP_CLEAR,
   1040     VK_LOGIC_OP_END_RANGE = VK_LOGIC_OP_SET,
   1041     VK_LOGIC_OP_RANGE_SIZE = (VK_LOGIC_OP_SET - VK_LOGIC_OP_CLEAR + 1),
   1042     VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF
   1043 } VkLogicOp;
   1044 
   1045 typedef enum VkBlendFactor {
   1046     VK_BLEND_FACTOR_ZERO = 0,
   1047     VK_BLEND_FACTOR_ONE = 1,
   1048     VK_BLEND_FACTOR_SRC_COLOR = 2,
   1049     VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,
   1050     VK_BLEND_FACTOR_DST_COLOR = 4,
   1051     VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,
   1052     VK_BLEND_FACTOR_SRC_ALPHA = 6,
   1053     VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,
   1054     VK_BLEND_FACTOR_DST_ALPHA = 8,
   1055     VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,
   1056     VK_BLEND_FACTOR_CONSTANT_COLOR = 10,
   1057     VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,
   1058     VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,
   1059     VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,
   1060     VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,
   1061     VK_BLEND_FACTOR_SRC1_COLOR = 15,
   1062     VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,
   1063     VK_BLEND_FACTOR_SRC1_ALPHA = 17,
   1064     VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18,
   1065     VK_BLEND_FACTOR_BEGIN_RANGE = VK_BLEND_FACTOR_ZERO,
   1066     VK_BLEND_FACTOR_END_RANGE = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA,
   1067     VK_BLEND_FACTOR_RANGE_SIZE = (VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - VK_BLEND_FACTOR_ZERO + 1),
   1068     VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF
   1069 } VkBlendFactor;
   1070 
   1071 typedef enum VkBlendOp {
   1072     VK_BLEND_OP_ADD = 0,
   1073     VK_BLEND_OP_SUBTRACT = 1,
   1074     VK_BLEND_OP_REVERSE_SUBTRACT = 2,
   1075     VK_BLEND_OP_MIN = 3,
   1076     VK_BLEND_OP_MAX = 4,
   1077     VK_BLEND_OP_ZERO_EXT = 1000148000,
   1078     VK_BLEND_OP_SRC_EXT = 1000148001,
   1079     VK_BLEND_OP_DST_EXT = 1000148002,
   1080     VK_BLEND_OP_SRC_OVER_EXT = 1000148003,
   1081     VK_BLEND_OP_DST_OVER_EXT = 1000148004,
   1082     VK_BLEND_OP_SRC_IN_EXT = 1000148005,
   1083     VK_BLEND_OP_DST_IN_EXT = 1000148006,
   1084     VK_BLEND_OP_SRC_OUT_EXT = 1000148007,
   1085     VK_BLEND_OP_DST_OUT_EXT = 1000148008,
   1086     VK_BLEND_OP_SRC_ATOP_EXT = 1000148009,
   1087     VK_BLEND_OP_DST_ATOP_EXT = 1000148010,
   1088     VK_BLEND_OP_XOR_EXT = 1000148011,
   1089     VK_BLEND_OP_MULTIPLY_EXT = 1000148012,
   1090     VK_BLEND_OP_SCREEN_EXT = 1000148013,
   1091     VK_BLEND_OP_OVERLAY_EXT = 1000148014,
   1092     VK_BLEND_OP_DARKEN_EXT = 1000148015,
   1093     VK_BLEND_OP_LIGHTEN_EXT = 1000148016,
   1094     VK_BLEND_OP_COLORDODGE_EXT = 1000148017,
   1095     VK_BLEND_OP_COLORBURN_EXT = 1000148018,
   1096     VK_BLEND_OP_HARDLIGHT_EXT = 1000148019,
   1097     VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020,
   1098     VK_BLEND_OP_DIFFERENCE_EXT = 1000148021,
   1099     VK_BLEND_OP_EXCLUSION_EXT = 1000148022,
   1100     VK_BLEND_OP_INVERT_EXT = 1000148023,
   1101     VK_BLEND_OP_INVERT_RGB_EXT = 1000148024,
   1102     VK_BLEND_OP_LINEARDODGE_EXT = 1000148025,
   1103     VK_BLEND_OP_LINEARBURN_EXT = 1000148026,
   1104     VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027,
   1105     VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028,
   1106     VK_BLEND_OP_PINLIGHT_EXT = 1000148029,
   1107     VK_BLEND_OP_HARDMIX_EXT = 1000148030,
   1108     VK_BLEND_OP_HSL_HUE_EXT = 1000148031,
   1109     VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032,
   1110     VK_BLEND_OP_HSL_COLOR_EXT = 1000148033,
   1111     VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034,
   1112     VK_BLEND_OP_PLUS_EXT = 1000148035,
   1113     VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036,
   1114     VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037,
   1115     VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038,
   1116     VK_BLEND_OP_MINUS_EXT = 1000148039,
   1117     VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040,
   1118     VK_BLEND_OP_CONTRAST_EXT = 1000148041,
   1119     VK_BLEND_OP_INVERT_OVG_EXT = 1000148042,
   1120     VK_BLEND_OP_RED_EXT = 1000148043,
   1121     VK_BLEND_OP_GREEN_EXT = 1000148044,
   1122     VK_BLEND_OP_BLUE_EXT = 1000148045,
   1123     VK_BLEND_OP_BEGIN_RANGE = VK_BLEND_OP_ADD,
   1124     VK_BLEND_OP_END_RANGE = VK_BLEND_OP_MAX,
   1125     VK_BLEND_OP_RANGE_SIZE = (VK_BLEND_OP_MAX - VK_BLEND_OP_ADD + 1),
   1126     VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF
   1127 } VkBlendOp;
   1128 
   1129 typedef enum VkDynamicState {
   1130     VK_DYNAMIC_STATE_VIEWPORT = 0,
   1131     VK_DYNAMIC_STATE_SCISSOR = 1,
   1132     VK_DYNAMIC_STATE_LINE_WIDTH = 2,
   1133     VK_DYNAMIC_STATE_DEPTH_BIAS = 3,
   1134     VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,
   1135     VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,
   1136     VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,
   1137     VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,
   1138     VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
   1139     VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000,
   1140     VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
   1141     VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000,
   1142     VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004,
   1143     VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006,
   1144     VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001,
   1145     VK_DYNAMIC_STATE_BEGIN_RANGE = VK_DYNAMIC_STATE_VIEWPORT,
   1146     VK_DYNAMIC_STATE_END_RANGE = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
   1147     VK_DYNAMIC_STATE_RANGE_SIZE = (VK_DYNAMIC_STATE_STENCIL_REFERENCE - VK_DYNAMIC_STATE_VIEWPORT + 1),
   1148     VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF
   1149 } VkDynamicState;
   1150 
   1151 typedef enum VkFilter {
   1152     VK_FILTER_NEAREST = 0,
   1153     VK_FILTER_LINEAR = 1,
   1154     VK_FILTER_CUBIC_IMG = 1000015000,
   1155     VK_FILTER_CUBIC_EXT = VK_FILTER_CUBIC_IMG,
   1156     VK_FILTER_BEGIN_RANGE = VK_FILTER_NEAREST,
   1157     VK_FILTER_END_RANGE = VK_FILTER_LINEAR,
   1158     VK_FILTER_RANGE_SIZE = (VK_FILTER_LINEAR - VK_FILTER_NEAREST + 1),
   1159     VK_FILTER_MAX_ENUM = 0x7FFFFFFF
   1160 } VkFilter;
   1161 
   1162 typedef enum VkSamplerMipmapMode {
   1163     VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,
   1164     VK_SAMPLER_MIPMAP_MODE_LINEAR = 1,
   1165     VK_SAMPLER_MIPMAP_MODE_BEGIN_RANGE = VK_SAMPLER_MIPMAP_MODE_NEAREST,
   1166     VK_SAMPLER_MIPMAP_MODE_END_RANGE = VK_SAMPLER_MIPMAP_MODE_LINEAR,
   1167     VK_SAMPLER_MIPMAP_MODE_RANGE_SIZE = (VK_SAMPLER_MIPMAP_MODE_LINEAR - VK_SAMPLER_MIPMAP_MODE_NEAREST + 1),
   1168     VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF
   1169 } VkSamplerMipmapMode;
   1170 
   1171 typedef enum VkSamplerAddressMode {
   1172     VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
   1173     VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
   1174     VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
   1175     VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
   1176     VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
   1177     VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE = VK_SAMPLER_ADDRESS_MODE_REPEAT,
   1178     VK_SAMPLER_ADDRESS_MODE_END_RANGE = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
   1179     VK_SAMPLER_ADDRESS_MODE_RANGE_SIZE = (VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER - VK_SAMPLER_ADDRESS_MODE_REPEAT + 1),
   1180     VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
   1181 } VkSamplerAddressMode;
   1182 
   1183 typedef enum VkBorderColor {
   1184     VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
   1185     VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,
   1186     VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,
   1187     VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,
   1188     VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,
   1189     VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5,
   1190     VK_BORDER_COLOR_BEGIN_RANGE = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
   1191     VK_BORDER_COLOR_END_RANGE = VK_BORDER_COLOR_INT_OPAQUE_WHITE,
   1192     VK_BORDER_COLOR_RANGE_SIZE = (VK_BORDER_COLOR_INT_OPAQUE_WHITE - VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK + 1),
   1193     VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF
   1194 } VkBorderColor;
   1195 
   1196 typedef enum VkDescriptorType {
   1197     VK_DESCRIPTOR_TYPE_SAMPLER = 0,
   1198     VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1,
   1199     VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2,
   1200     VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3,
   1201     VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4,
   1202     VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5,
   1203     VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6,
   1204     VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7,
   1205     VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8,
   1206     VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9,
   1207     VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10,
   1208     VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = 1000138000,
   1209     VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000,
   1210     VK_DESCRIPTOR_TYPE_BEGIN_RANGE = VK_DESCRIPTOR_TYPE_SAMPLER,
   1211     VK_DESCRIPTOR_TYPE_END_RANGE = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
   1212     VK_DESCRIPTOR_TYPE_RANGE_SIZE = (VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT - VK_DESCRIPTOR_TYPE_SAMPLER + 1),
   1213     VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF
   1214 } VkDescriptorType;
   1215 
   1216 typedef enum VkAttachmentLoadOp {
   1217     VK_ATTACHMENT_LOAD_OP_LOAD = 0,
   1218     VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
   1219     VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
   1220     VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE = VK_ATTACHMENT_LOAD_OP_LOAD,
   1221     VK_ATTACHMENT_LOAD_OP_END_RANGE = VK_ATTACHMENT_LOAD_OP_DONT_CARE,
   1222     VK_ATTACHMENT_LOAD_OP_RANGE_SIZE = (VK_ATTACHMENT_LOAD_OP_DONT_CARE - VK_ATTACHMENT_LOAD_OP_LOAD + 1),
   1223     VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF
   1224 } VkAttachmentLoadOp;
   1225 
   1226 typedef enum VkAttachmentStoreOp {
   1227     VK_ATTACHMENT_STORE_OP_STORE = 0,
   1228     VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,
   1229     VK_ATTACHMENT_STORE_OP_BEGIN_RANGE = VK_ATTACHMENT_STORE_OP_STORE,
   1230     VK_ATTACHMENT_STORE_OP_END_RANGE = VK_ATTACHMENT_STORE_OP_DONT_CARE,
   1231     VK_ATTACHMENT_STORE_OP_RANGE_SIZE = (VK_ATTACHMENT_STORE_OP_DONT_CARE - VK_ATTACHMENT_STORE_OP_STORE + 1),
   1232     VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF
   1233 } VkAttachmentStoreOp;
   1234 
   1235 typedef enum VkPipelineBindPoint {
   1236     VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
   1237     VK_PIPELINE_BIND_POINT_COMPUTE = 1,
   1238     VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = 1000165000,
   1239     VK_PIPELINE_BIND_POINT_BEGIN_RANGE = VK_PIPELINE_BIND_POINT_GRAPHICS,
   1240     VK_PIPELINE_BIND_POINT_END_RANGE = VK_PIPELINE_BIND_POINT_COMPUTE,
   1241     VK_PIPELINE_BIND_POINT_RANGE_SIZE = (VK_PIPELINE_BIND_POINT_COMPUTE - VK_PIPELINE_BIND_POINT_GRAPHICS + 1),
   1242     VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF
   1243 } VkPipelineBindPoint;
   1244 
   1245 typedef enum VkCommandBufferLevel {
   1246     VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
   1247     VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,
   1248     VK_COMMAND_BUFFER_LEVEL_BEGIN_RANGE = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
   1249     VK_COMMAND_BUFFER_LEVEL_END_RANGE = VK_COMMAND_BUFFER_LEVEL_SECONDARY,
   1250     VK_COMMAND_BUFFER_LEVEL_RANGE_SIZE = (VK_COMMAND_BUFFER_LEVEL_SECONDARY - VK_COMMAND_BUFFER_LEVEL_PRIMARY + 1),
   1251     VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF
   1252 } VkCommandBufferLevel;
   1253 
   1254 typedef enum VkIndexType {
   1255     VK_INDEX_TYPE_UINT16 = 0,
   1256     VK_INDEX_TYPE_UINT32 = 1,
   1257     VK_INDEX_TYPE_NONE_NV = 1000165000,
   1258     VK_INDEX_TYPE_BEGIN_RANGE = VK_INDEX_TYPE_UINT16,
   1259     VK_INDEX_TYPE_END_RANGE = VK_INDEX_TYPE_UINT32,
   1260     VK_INDEX_TYPE_RANGE_SIZE = (VK_INDEX_TYPE_UINT32 - VK_INDEX_TYPE_UINT16 + 1),
   1261     VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF
   1262 } VkIndexType;
   1263 
   1264 typedef enum VkSubpassContents {
   1265     VK_SUBPASS_CONTENTS_INLINE = 0,
   1266     VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
   1267     VK_SUBPASS_CONTENTS_BEGIN_RANGE = VK_SUBPASS_CONTENTS_INLINE,
   1268     VK_SUBPASS_CONTENTS_END_RANGE = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS,
   1269     VK_SUBPASS_CONTENTS_RANGE_SIZE = (VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS - VK_SUBPASS_CONTENTS_INLINE + 1),
   1270     VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF
   1271 } VkSubpassContents;
   1272 
   1273 typedef enum VkObjectType {
   1274     VK_OBJECT_TYPE_UNKNOWN = 0,
   1275     VK_OBJECT_TYPE_INSTANCE = 1,
   1276     VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,
   1277     VK_OBJECT_TYPE_DEVICE = 3,
   1278     VK_OBJECT_TYPE_QUEUE = 4,
   1279     VK_OBJECT_TYPE_SEMAPHORE = 5,
   1280     VK_OBJECT_TYPE_COMMAND_BUFFER = 6,
   1281     VK_OBJECT_TYPE_FENCE = 7,
   1282     VK_OBJECT_TYPE_DEVICE_MEMORY = 8,
   1283     VK_OBJECT_TYPE_BUFFER = 9,
   1284     VK_OBJECT_TYPE_IMAGE = 10,
   1285     VK_OBJECT_TYPE_EVENT = 11,
   1286     VK_OBJECT_TYPE_QUERY_POOL = 12,
   1287     VK_OBJECT_TYPE_BUFFER_VIEW = 13,
   1288     VK_OBJECT_TYPE_IMAGE_VIEW = 14,
   1289     VK_OBJECT_TYPE_SHADER_MODULE = 15,
   1290     VK_OBJECT_TYPE_PIPELINE_CACHE = 16,
   1291     VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,
   1292     VK_OBJECT_TYPE_RENDER_PASS = 18,
   1293     VK_OBJECT_TYPE_PIPELINE = 19,
   1294     VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,
   1295     VK_OBJECT_TYPE_SAMPLER = 21,
   1296     VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,
   1297     VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,
   1298     VK_OBJECT_TYPE_FRAMEBUFFER = 24,
   1299     VK_OBJECT_TYPE_COMMAND_POOL = 25,
   1300     VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000,
   1301     VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000,
   1302     VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,
   1303     VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,
   1304     VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000,
   1305     VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001,
   1306     VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000,
   1307     VK_OBJECT_TYPE_OBJECT_TABLE_NVX = 1000086000,
   1308     VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = 1000086001,
   1309     VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000,
   1310     VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000,
   1311     VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000,
   1312     VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
   1313     VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION,
   1314     VK_OBJECT_TYPE_BEGIN_RANGE = VK_OBJECT_TYPE_UNKNOWN,
   1315     VK_OBJECT_TYPE_END_RANGE = VK_OBJECT_TYPE_COMMAND_POOL,
   1316     VK_OBJECT_TYPE_RANGE_SIZE = (VK_OBJECT_TYPE_COMMAND_POOL - VK_OBJECT_TYPE_UNKNOWN + 1),
   1317     VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF
   1318 } VkObjectType;
   1319 
   1320 typedef enum VkVendorId {
   1321     VK_VENDOR_ID_VIV = 0x10001,
   1322     VK_VENDOR_ID_VSI = 0x10002,
   1323     VK_VENDOR_ID_KAZAN = 0x10003,
   1324     VK_VENDOR_ID_BEGIN_RANGE = VK_VENDOR_ID_VIV,
   1325     VK_VENDOR_ID_END_RANGE = VK_VENDOR_ID_KAZAN,
   1326     VK_VENDOR_ID_RANGE_SIZE = (VK_VENDOR_ID_KAZAN - VK_VENDOR_ID_VIV + 1),
   1327     VK_VENDOR_ID_MAX_ENUM = 0x7FFFFFFF
   1328 } VkVendorId;
   1329 
   1330 typedef VkFlags VkInstanceCreateFlags;
   1331 
   1332 typedef enum VkFormatFeatureFlagBits {
   1333     VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
   1334     VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002,
   1335     VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004,
   1336     VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008,
   1337     VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010,
   1338     VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020,
   1339     VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040,
   1340     VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080,
   1341     VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100,
   1342     VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200,
   1343     VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400,
   1344     VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800,
   1345     VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
   1346     VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 0x00004000,
   1347     VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 0x00008000,
   1348     VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000,
   1349     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000,
   1350     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000,
   1351     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000,
   1352     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000,
   1353     VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000,
   1354     VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000,
   1355     VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
   1356     VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 0x00010000,
   1357     VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000,
   1358     VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
   1359     VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
   1360     VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
   1361     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
   1362     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
   1363     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,
   1364     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT,
   1365     VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = VK_FORMAT_FEATURE_DISJOINT_BIT,
   1366     VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
   1367     VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
   1368     VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1369 } VkFormatFeatureFlagBits;
   1370 typedef VkFlags VkFormatFeatureFlags;
   1371 
   1372 typedef enum VkImageUsageFlagBits {
   1373     VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001,
   1374     VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002,
   1375     VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004,
   1376     VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008,
   1377     VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010,
   1378     VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020,
   1379     VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040,
   1380     VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080,
   1381     VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = 0x00000100,
   1382     VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x00000200,
   1383     VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1384 } VkImageUsageFlagBits;
   1385 typedef VkFlags VkImageUsageFlags;
   1386 
   1387 typedef enum VkImageCreateFlagBits {
   1388     VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001,
   1389     VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
   1390     VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
   1391     VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008,
   1392     VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010,
   1393     VK_IMAGE_CREATE_ALIAS_BIT = 0x00000400,
   1394     VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 0x00000040,
   1395     VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 0x00000020,
   1396     VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 0x00000080,
   1397     VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 0x00000100,
   1398     VK_IMAGE_CREATE_PROTECTED_BIT = 0x00000800,
   1399     VK_IMAGE_CREATE_DISJOINT_BIT = 0x00000200,
   1400     VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 0x00002000,
   1401     VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000,
   1402     VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 0x00004000,
   1403     VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,
   1404     VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
   1405     VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
   1406     VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,
   1407     VK_IMAGE_CREATE_DISJOINT_BIT_KHR = VK_IMAGE_CREATE_DISJOINT_BIT,
   1408     VK_IMAGE_CREATE_ALIAS_BIT_KHR = VK_IMAGE_CREATE_ALIAS_BIT,
   1409     VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1410 } VkImageCreateFlagBits;
   1411 typedef VkFlags VkImageCreateFlags;
   1412 
   1413 typedef enum VkSampleCountFlagBits {
   1414     VK_SAMPLE_COUNT_1_BIT = 0x00000001,
   1415     VK_SAMPLE_COUNT_2_BIT = 0x00000002,
   1416     VK_SAMPLE_COUNT_4_BIT = 0x00000004,
   1417     VK_SAMPLE_COUNT_8_BIT = 0x00000008,
   1418     VK_SAMPLE_COUNT_16_BIT = 0x00000010,
   1419     VK_SAMPLE_COUNT_32_BIT = 0x00000020,
   1420     VK_SAMPLE_COUNT_64_BIT = 0x00000040,
   1421     VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1422 } VkSampleCountFlagBits;
   1423 typedef VkFlags VkSampleCountFlags;
   1424 
   1425 typedef enum VkQueueFlagBits {
   1426     VK_QUEUE_GRAPHICS_BIT = 0x00000001,
   1427     VK_QUEUE_COMPUTE_BIT = 0x00000002,
   1428     VK_QUEUE_TRANSFER_BIT = 0x00000004,
   1429     VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
   1430     VK_QUEUE_PROTECTED_BIT = 0x00000010,
   1431     VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1432 } VkQueueFlagBits;
   1433 typedef VkFlags VkQueueFlags;
   1434 
   1435 typedef enum VkMemoryPropertyFlagBits {
   1436     VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
   1437     VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
   1438     VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
   1439     VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
   1440     VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
   1441     VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020,
   1442     VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1443 } VkMemoryPropertyFlagBits;
   1444 typedef VkFlags VkMemoryPropertyFlags;
   1445 
   1446 typedef enum VkMemoryHeapFlagBits {
   1447     VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
   1448     VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 0x00000002,
   1449     VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT,
   1450     VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1451 } VkMemoryHeapFlagBits;
   1452 typedef VkFlags VkMemoryHeapFlags;
   1453 typedef VkFlags VkDeviceCreateFlags;
   1454 
   1455 typedef enum VkDeviceQueueCreateFlagBits {
   1456     VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 0x00000001,
   1457     VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1458 } VkDeviceQueueCreateFlagBits;
   1459 typedef VkFlags VkDeviceQueueCreateFlags;
   1460 
   1461 typedef enum VkPipelineStageFlagBits {
   1462     VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001,
   1463     VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002,
   1464     VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004,
   1465     VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008,
   1466     VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010,
   1467     VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020,
   1468     VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040,
   1469     VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080,
   1470     VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100,
   1471     VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200,
   1472     VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400,
   1473     VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800,
   1474     VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000,
   1475     VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
   1476     VK_PIPELINE_STAGE_HOST_BIT = 0x00004000,
   1477     VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000,
   1478     VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000,
   1479     VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000,
   1480     VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000,
   1481     VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000,
   1482     VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = 0x00400000,
   1483     VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = 0x00200000,
   1484     VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 0x02000000,
   1485     VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 0x00080000,
   1486     VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 0x00100000,
   1487     VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000,
   1488     VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1489 } VkPipelineStageFlagBits;
   1490 typedef VkFlags VkPipelineStageFlags;
   1491 typedef VkFlags VkMemoryMapFlags;
   1492 
   1493 typedef enum VkImageAspectFlagBits {
   1494     VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
   1495     VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
   1496     VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
   1497     VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
   1498     VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010,
   1499     VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020,
   1500     VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040,
   1501     VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 0x00000080,
   1502     VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 0x00000100,
   1503     VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 0x00000200,
   1504     VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 0x00000400,
   1505     VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = VK_IMAGE_ASPECT_PLANE_0_BIT,
   1506     VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = VK_IMAGE_ASPECT_PLANE_1_BIT,
   1507     VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = VK_IMAGE_ASPECT_PLANE_2_BIT,
   1508     VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1509 } VkImageAspectFlagBits;
   1510 typedef VkFlags VkImageAspectFlags;
   1511 
   1512 typedef enum VkSparseImageFormatFlagBits {
   1513     VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001,
   1514     VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
   1515     VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,
   1516     VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1517 } VkSparseImageFormatFlagBits;
   1518 typedef VkFlags VkSparseImageFormatFlags;
   1519 
   1520 typedef enum VkSparseMemoryBindFlagBits {
   1521     VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
   1522     VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1523 } VkSparseMemoryBindFlagBits;
   1524 typedef VkFlags VkSparseMemoryBindFlags;
   1525 
   1526 typedef enum VkFenceCreateFlagBits {
   1527     VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
   1528     VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1529 } VkFenceCreateFlagBits;
   1530 typedef VkFlags VkFenceCreateFlags;
   1531 typedef VkFlags VkSemaphoreCreateFlags;
   1532 typedef VkFlags VkEventCreateFlags;
   1533 typedef VkFlags VkQueryPoolCreateFlags;
   1534 
   1535 typedef enum VkQueryPipelineStatisticFlagBits {
   1536     VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001,
   1537     VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002,
   1538     VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004,
   1539     VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008,
   1540     VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010,
   1541     VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020,
   1542     VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040,
   1543     VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080,
   1544     VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100,
   1545     VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200,
   1546     VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400,
   1547     VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1548 } VkQueryPipelineStatisticFlagBits;
   1549 typedef VkFlags VkQueryPipelineStatisticFlags;
   1550 
   1551 typedef enum VkQueryResultFlagBits {
   1552     VK_QUERY_RESULT_64_BIT = 0x00000001,
   1553     VK_QUERY_RESULT_WAIT_BIT = 0x00000002,
   1554     VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004,
   1555     VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008,
   1556     VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1557 } VkQueryResultFlagBits;
   1558 typedef VkFlags VkQueryResultFlags;
   1559 
   1560 typedef enum VkBufferCreateFlagBits {
   1561     VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,
   1562     VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
   1563     VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
   1564     VK_BUFFER_CREATE_PROTECTED_BIT = 0x00000008,
   1565     VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 0x00000010,
   1566     VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1567 } VkBufferCreateFlagBits;
   1568 typedef VkFlags VkBufferCreateFlags;
   1569 
   1570 typedef enum VkBufferUsageFlagBits {
   1571     VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001,
   1572     VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002,
   1573     VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,
   1574     VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008,
   1575     VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010,
   1576     VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020,
   1577     VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
   1578     VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
   1579     VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
   1580     VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800,
   1581     VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000,
   1582     VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200,
   1583     VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = 0x00000400,
   1584     VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = 0x00020000,
   1585     VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1586 } VkBufferUsageFlagBits;
   1587 typedef VkFlags VkBufferUsageFlags;
   1588 typedef VkFlags VkBufferViewCreateFlags;
   1589 
   1590 typedef enum VkImageViewCreateFlagBits {
   1591     VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 0x00000001,
   1592     VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1593 } VkImageViewCreateFlagBits;
   1594 typedef VkFlags VkImageViewCreateFlags;
   1595 typedef VkFlags VkShaderModuleCreateFlags;
   1596 typedef VkFlags VkPipelineCacheCreateFlags;
   1597 
   1598 typedef enum VkPipelineCreateFlagBits {
   1599     VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
   1600     VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
   1601     VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
   1602     VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008,
   1603     VK_PIPELINE_CREATE_DISPATCH_BASE = 0x00000010,
   1604     VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 0x00000020,
   1605     VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,
   1606     VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = VK_PIPELINE_CREATE_DISPATCH_BASE,
   1607     VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1608 } VkPipelineCreateFlagBits;
   1609 typedef VkFlags VkPipelineCreateFlags;
   1610 typedef VkFlags VkPipelineShaderStageCreateFlags;
   1611 
   1612 typedef enum VkShaderStageFlagBits {
   1613     VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
   1614     VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
   1615     VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
   1616     VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
   1617     VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
   1618     VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
   1619     VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
   1620     VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
   1621     VK_SHADER_STAGE_RAYGEN_BIT_NV = 0x00000100,
   1622     VK_SHADER_STAGE_ANY_HIT_BIT_NV = 0x00000200,
   1623     VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = 0x00000400,
   1624     VK_SHADER_STAGE_MISS_BIT_NV = 0x00000800,
   1625     VK_SHADER_STAGE_INTERSECTION_BIT_NV = 0x00001000,
   1626     VK_SHADER_STAGE_CALLABLE_BIT_NV = 0x00002000,
   1627     VK_SHADER_STAGE_TASK_BIT_NV = 0x00000040,
   1628     VK_SHADER_STAGE_MESH_BIT_NV = 0x00000080,
   1629     VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1630 } VkShaderStageFlagBits;
   1631 typedef VkFlags VkPipelineVertexInputStateCreateFlags;
   1632 typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;
   1633 typedef VkFlags VkPipelineTessellationStateCreateFlags;
   1634 typedef VkFlags VkPipelineViewportStateCreateFlags;
   1635 typedef VkFlags VkPipelineRasterizationStateCreateFlags;
   1636 
   1637 typedef enum VkCullModeFlagBits {
   1638     VK_CULL_MODE_NONE = 0,
   1639     VK_CULL_MODE_FRONT_BIT = 0x00000001,
   1640     VK_CULL_MODE_BACK_BIT = 0x00000002,
   1641     VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
   1642     VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1643 } VkCullModeFlagBits;
   1644 typedef VkFlags VkCullModeFlags;
   1645 typedef VkFlags VkPipelineMultisampleStateCreateFlags;
   1646 typedef VkFlags VkPipelineDepthStencilStateCreateFlags;
   1647 typedef VkFlags VkPipelineColorBlendStateCreateFlags;
   1648 
   1649 typedef enum VkColorComponentFlagBits {
   1650     VK_COLOR_COMPONENT_R_BIT = 0x00000001,
   1651     VK_COLOR_COMPONENT_G_BIT = 0x00000002,
   1652     VK_COLOR_COMPONENT_B_BIT = 0x00000004,
   1653     VK_COLOR_COMPONENT_A_BIT = 0x00000008,
   1654     VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1655 } VkColorComponentFlagBits;
   1656 typedef VkFlags VkColorComponentFlags;
   1657 typedef VkFlags VkPipelineDynamicStateCreateFlags;
   1658 typedef VkFlags VkPipelineLayoutCreateFlags;
   1659 typedef VkFlags VkShaderStageFlags;
   1660 
   1661 typedef enum VkSamplerCreateFlagBits {
   1662     VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 0x00000001,
   1663     VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 0x00000002,
   1664     VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1665 } VkSamplerCreateFlagBits;
   1666 typedef VkFlags VkSamplerCreateFlags;
   1667 
   1668 typedef enum VkDescriptorSetLayoutCreateFlagBits {
   1669     VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
   1670     VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = 0x00000002,
   1671     VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1672 } VkDescriptorSetLayoutCreateFlagBits;
   1673 typedef VkFlags VkDescriptorSetLayoutCreateFlags;
   1674 
   1675 typedef enum VkDescriptorPoolCreateFlagBits {
   1676     VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
   1677     VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = 0x00000002,
   1678     VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1679 } VkDescriptorPoolCreateFlagBits;
   1680 typedef VkFlags VkDescriptorPoolCreateFlags;
   1681 typedef VkFlags VkDescriptorPoolResetFlags;
   1682 typedef VkFlags VkFramebufferCreateFlags;
   1683 typedef VkFlags VkRenderPassCreateFlags;
   1684 
   1685 typedef enum VkAttachmentDescriptionFlagBits {
   1686     VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
   1687     VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1688 } VkAttachmentDescriptionFlagBits;
   1689 typedef VkFlags VkAttachmentDescriptionFlags;
   1690 
   1691 typedef enum VkSubpassDescriptionFlagBits {
   1692     VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001,
   1693     VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,
   1694     VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1695 } VkSubpassDescriptionFlagBits;
   1696 typedef VkFlags VkSubpassDescriptionFlags;
   1697 
   1698 typedef enum VkAccessFlagBits {
   1699     VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
   1700     VK_ACCESS_INDEX_READ_BIT = 0x00000002,
   1701     VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
   1702     VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
   1703     VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
   1704     VK_ACCESS_SHADER_READ_BIT = 0x00000020,
   1705     VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
   1706     VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
   1707     VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
   1708     VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
   1709     VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
   1710     VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
   1711     VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
   1712     VK_ACCESS_HOST_READ_BIT = 0x00002000,
   1713     VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
   1714     VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
   1715     VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
   1716     VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000,
   1717     VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000,
   1718     VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000,
   1719     VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000,
   1720     VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000,
   1721     VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000,
   1722     VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000,
   1723     VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = 0x00800000,
   1724     VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = 0x00200000,
   1725     VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 0x00400000,
   1726     VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000,
   1727     VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1728 } VkAccessFlagBits;
   1729 typedef VkFlags VkAccessFlags;
   1730 
   1731 typedef enum VkDependencyFlagBits {
   1732     VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
   1733     VK_DEPENDENCY_DEVICE_GROUP_BIT = 0x00000004,
   1734     VK_DEPENDENCY_VIEW_LOCAL_BIT = 0x00000002,
   1735     VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = VK_DEPENDENCY_VIEW_LOCAL_BIT,
   1736     VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = VK_DEPENDENCY_DEVICE_GROUP_BIT,
   1737     VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1738 } VkDependencyFlagBits;
   1739 typedef VkFlags VkDependencyFlags;
   1740 
   1741 typedef enum VkCommandPoolCreateFlagBits {
   1742     VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001,
   1743     VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
   1744     VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 0x00000004,
   1745     VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1746 } VkCommandPoolCreateFlagBits;
   1747 typedef VkFlags VkCommandPoolCreateFlags;
   1748 
   1749 typedef enum VkCommandPoolResetFlagBits {
   1750     VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
   1751     VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1752 } VkCommandPoolResetFlagBits;
   1753 typedef VkFlags VkCommandPoolResetFlags;
   1754 
   1755 typedef enum VkCommandBufferUsageFlagBits {
   1756     VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
   1757     VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
   1758     VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
   1759     VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1760 } VkCommandBufferUsageFlagBits;
   1761 typedef VkFlags VkCommandBufferUsageFlags;
   1762 
   1763 typedef enum VkQueryControlFlagBits {
   1764     VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
   1765     VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1766 } VkQueryControlFlagBits;
   1767 typedef VkFlags VkQueryControlFlags;
   1768 
   1769 typedef enum VkCommandBufferResetFlagBits {
   1770     VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
   1771     VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1772 } VkCommandBufferResetFlagBits;
   1773 typedef VkFlags VkCommandBufferResetFlags;
   1774 
   1775 typedef enum VkStencilFaceFlagBits {
   1776     VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
   1777     VK_STENCIL_FACE_BACK_BIT = 0x00000002,
   1778     VK_STENCIL_FRONT_AND_BACK = 0x00000003,
   1779     VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1780 } VkStencilFaceFlagBits;
   1781 typedef VkFlags VkStencilFaceFlags;
   1782 
   1783 typedef struct VkApplicationInfo {
   1784     VkStructureType    sType;
   1785     const void*        pNext;
   1786     const char*        pApplicationName;
   1787     uint32_t           applicationVersion;
   1788     const char*        pEngineName;
   1789     uint32_t           engineVersion;
   1790     uint32_t           apiVersion;
   1791 } VkApplicationInfo;
   1792 
   1793 typedef struct VkInstanceCreateInfo {
   1794     VkStructureType             sType;
   1795     const void*                 pNext;
   1796     VkInstanceCreateFlags       flags;
   1797     const VkApplicationInfo*    pApplicationInfo;
   1798     uint32_t                    enabledLayerCount;
   1799     const char* const*          ppEnabledLayerNames;
   1800     uint32_t                    enabledExtensionCount;
   1801     const char* const*          ppEnabledExtensionNames;
   1802 } VkInstanceCreateInfo;
   1803 
   1804 typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(
   1805     void*                                       pUserData,
   1806     size_t                                      size,
   1807     size_t                                      alignment,
   1808     VkSystemAllocationScope                     allocationScope);
   1809 
   1810 typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)(
   1811     void*                                       pUserData,
   1812     void*                                       pOriginal,
   1813     size_t                                      size,
   1814     size_t                                      alignment,
   1815     VkSystemAllocationScope                     allocationScope);
   1816 
   1817 typedef void (VKAPI_PTR *PFN_vkFreeFunction)(
   1818     void*                                       pUserData,
   1819     void*                                       pMemory);
   1820 
   1821 typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)(
   1822     void*                                       pUserData,
   1823     size_t                                      size,
   1824     VkInternalAllocationType                    allocationType,
   1825     VkSystemAllocationScope                     allocationScope);
   1826 
   1827 typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)(
   1828     void*                                       pUserData,
   1829     size_t                                      size,
   1830     VkInternalAllocationType                    allocationType,
   1831     VkSystemAllocationScope                     allocationScope);
   1832 
   1833 typedef struct VkAllocationCallbacks {
   1834     void*                                   pUserData;
   1835     PFN_vkAllocationFunction                pfnAllocation;
   1836     PFN_vkReallocationFunction              pfnReallocation;
   1837     PFN_vkFreeFunction                      pfnFree;
   1838     PFN_vkInternalAllocationNotification    pfnInternalAllocation;
   1839     PFN_vkInternalFreeNotification          pfnInternalFree;
   1840 } VkAllocationCallbacks;
   1841 
   1842 typedef struct VkPhysicalDeviceFeatures {
   1843     VkBool32    robustBufferAccess;
   1844     VkBool32    fullDrawIndexUint32;
   1845     VkBool32    imageCubeArray;
   1846     VkBool32    independentBlend;
   1847     VkBool32    geometryShader;
   1848     VkBool32    tessellationShader;
   1849     VkBool32    sampleRateShading;
   1850     VkBool32    dualSrcBlend;
   1851     VkBool32    logicOp;
   1852     VkBool32    multiDrawIndirect;
   1853     VkBool32    drawIndirectFirstInstance;
   1854     VkBool32    depthClamp;
   1855     VkBool32    depthBiasClamp;
   1856     VkBool32    fillModeNonSolid;
   1857     VkBool32    depthBounds;
   1858     VkBool32    wideLines;
   1859     VkBool32    largePoints;
   1860     VkBool32    alphaToOne;
   1861     VkBool32    multiViewport;
   1862     VkBool32    samplerAnisotropy;
   1863     VkBool32    textureCompressionETC2;
   1864     VkBool32    textureCompressionASTC_LDR;
   1865     VkBool32    textureCompressionBC;
   1866     VkBool32    occlusionQueryPrecise;
   1867     VkBool32    pipelineStatisticsQuery;
   1868     VkBool32    vertexPipelineStoresAndAtomics;
   1869     VkBool32    fragmentStoresAndAtomics;
   1870     VkBool32    shaderTessellationAndGeometryPointSize;
   1871     VkBool32    shaderImageGatherExtended;
   1872     VkBool32    shaderStorageImageExtendedFormats;
   1873     VkBool32    shaderStorageImageMultisample;
   1874     VkBool32    shaderStorageImageReadWithoutFormat;
   1875     VkBool32    shaderStorageImageWriteWithoutFormat;
   1876     VkBool32    shaderUniformBufferArrayDynamicIndexing;
   1877     VkBool32    shaderSampledImageArrayDynamicIndexing;
   1878     VkBool32    shaderStorageBufferArrayDynamicIndexing;
   1879     VkBool32    shaderStorageImageArrayDynamicIndexing;
   1880     VkBool32    shaderClipDistance;
   1881     VkBool32    shaderCullDistance;
   1882     VkBool32    shaderFloat64;
   1883     VkBool32    shaderInt64;
   1884     VkBool32    shaderInt16;
   1885     VkBool32    shaderResourceResidency;
   1886     VkBool32    shaderResourceMinLod;
   1887     VkBool32    sparseBinding;
   1888     VkBool32    sparseResidencyBuffer;
   1889     VkBool32    sparseResidencyImage2D;
   1890     VkBool32    sparseResidencyImage3D;
   1891     VkBool32    sparseResidency2Samples;
   1892     VkBool32    sparseResidency4Samples;
   1893     VkBool32    sparseResidency8Samples;
   1894     VkBool32    sparseResidency16Samples;
   1895     VkBool32    sparseResidencyAliased;
   1896     VkBool32    variableMultisampleRate;
   1897     VkBool32    inheritedQueries;
   1898 } VkPhysicalDeviceFeatures;
   1899 
   1900 typedef struct VkFormatProperties {
   1901     VkFormatFeatureFlags    linearTilingFeatures;
   1902     VkFormatFeatureFlags    optimalTilingFeatures;
   1903     VkFormatFeatureFlags    bufferFeatures;
   1904 } VkFormatProperties;
   1905 
   1906 typedef struct VkExtent3D {
   1907     uint32_t    width;
   1908     uint32_t    height;
   1909     uint32_t    depth;
   1910 } VkExtent3D;
   1911 
   1912 typedef struct VkImageFormatProperties {
   1913     VkExtent3D            maxExtent;
   1914     uint32_t              maxMipLevels;
   1915     uint32_t              maxArrayLayers;
   1916     VkSampleCountFlags    sampleCounts;
   1917     VkDeviceSize          maxResourceSize;
   1918 } VkImageFormatProperties;
   1919 
   1920 typedef struct VkPhysicalDeviceLimits {
   1921     uint32_t              maxImageDimension1D;
   1922     uint32_t              maxImageDimension2D;
   1923     uint32_t              maxImageDimension3D;
   1924     uint32_t              maxImageDimensionCube;
   1925     uint32_t              maxImageArrayLayers;
   1926     uint32_t              maxTexelBufferElements;
   1927     uint32_t              maxUniformBufferRange;
   1928     uint32_t              maxStorageBufferRange;
   1929     uint32_t              maxPushConstantsSize;
   1930     uint32_t              maxMemoryAllocationCount;
   1931     uint32_t              maxSamplerAllocationCount;
   1932     VkDeviceSize          bufferImageGranularity;
   1933     VkDeviceSize          sparseAddressSpaceSize;
   1934     uint32_t              maxBoundDescriptorSets;
   1935     uint32_t              maxPerStageDescriptorSamplers;
   1936     uint32_t              maxPerStageDescriptorUniformBuffers;
   1937     uint32_t              maxPerStageDescriptorStorageBuffers;
   1938     uint32_t              maxPerStageDescriptorSampledImages;
   1939     uint32_t              maxPerStageDescriptorStorageImages;
   1940     uint32_t              maxPerStageDescriptorInputAttachments;
   1941     uint32_t              maxPerStageResources;
   1942     uint32_t              maxDescriptorSetSamplers;
   1943     uint32_t              maxDescriptorSetUniformBuffers;
   1944     uint32_t              maxDescriptorSetUniformBuffersDynamic;
   1945     uint32_t              maxDescriptorSetStorageBuffers;
   1946     uint32_t              maxDescriptorSetStorageBuffersDynamic;
   1947     uint32_t              maxDescriptorSetSampledImages;
   1948     uint32_t              maxDescriptorSetStorageImages;
   1949     uint32_t              maxDescriptorSetInputAttachments;
   1950     uint32_t              maxVertexInputAttributes;
   1951     uint32_t              maxVertexInputBindings;
   1952     uint32_t              maxVertexInputAttributeOffset;
   1953     uint32_t              maxVertexInputBindingStride;
   1954     uint32_t              maxVertexOutputComponents;
   1955     uint32_t              maxTessellationGenerationLevel;
   1956     uint32_t              maxTessellationPatchSize;
   1957     uint32_t              maxTessellationControlPerVertexInputComponents;
   1958     uint32_t              maxTessellationControlPerVertexOutputComponents;
   1959     uint32_t              maxTessellationControlPerPatchOutputComponents;
   1960     uint32_t              maxTessellationControlTotalOutputComponents;
   1961     uint32_t              maxTessellationEvaluationInputComponents;
   1962     uint32_t              maxTessellationEvaluationOutputComponents;
   1963     uint32_t              maxGeometryShaderInvocations;
   1964     uint32_t              maxGeometryInputComponents;
   1965     uint32_t              maxGeometryOutputComponents;
   1966     uint32_t              maxGeometryOutputVertices;
   1967     uint32_t              maxGeometryTotalOutputComponents;
   1968     uint32_t              maxFragmentInputComponents;
   1969     uint32_t              maxFragmentOutputAttachments;
   1970     uint32_t              maxFragmentDualSrcAttachments;
   1971     uint32_t              maxFragmentCombinedOutputResources;
   1972     uint32_t              maxComputeSharedMemorySize;
   1973     uint32_t              maxComputeWorkGroupCount[3];
   1974     uint32_t              maxComputeWorkGroupInvocations;
   1975     uint32_t              maxComputeWorkGroupSize[3];
   1976     uint32_t              subPixelPrecisionBits;
   1977     uint32_t              subTexelPrecisionBits;
   1978     uint32_t              mipmapPrecisionBits;
   1979     uint32_t              maxDrawIndexedIndexValue;
   1980     uint32_t              maxDrawIndirectCount;
   1981     float                 maxSamplerLodBias;
   1982     float                 maxSamplerAnisotropy;
   1983     uint32_t              maxViewports;
   1984     uint32_t              maxViewportDimensions[2];
   1985     float                 viewportBoundsRange[2];
   1986     uint32_t              viewportSubPixelBits;
   1987     size_t                minMemoryMapAlignment;
   1988     VkDeviceSize          minTexelBufferOffsetAlignment;
   1989     VkDeviceSize          minUniformBufferOffsetAlignment;
   1990     VkDeviceSize          minStorageBufferOffsetAlignment;
   1991     int32_t               minTexelOffset;
   1992     uint32_t              maxTexelOffset;
   1993     int32_t               minTexelGatherOffset;
   1994     uint32_t              maxTexelGatherOffset;
   1995     float                 minInterpolationOffset;
   1996     float                 maxInterpolationOffset;
   1997     uint32_t              subPixelInterpolationOffsetBits;
   1998     uint32_t              maxFramebufferWidth;
   1999     uint32_t              maxFramebufferHeight;
   2000     uint32_t              maxFramebufferLayers;
   2001     VkSampleCountFlags    framebufferColorSampleCounts;
   2002     VkSampleCountFlags    framebufferDepthSampleCounts;
   2003     VkSampleCountFlags    framebufferStencilSampleCounts;
   2004     VkSampleCountFlags    framebufferNoAttachmentsSampleCounts;
   2005     uint32_t              maxColorAttachments;
   2006     VkSampleCountFlags    sampledImageColorSampleCounts;
   2007     VkSampleCountFlags    sampledImageIntegerSampleCounts;
   2008     VkSampleCountFlags    sampledImageDepthSampleCounts;
   2009     VkSampleCountFlags    sampledImageStencilSampleCounts;
   2010     VkSampleCountFlags    storageImageSampleCounts;
   2011     uint32_t              maxSampleMaskWords;
   2012     VkBool32              timestampComputeAndGraphics;
   2013     float                 timestampPeriod;
   2014     uint32_t              maxClipDistances;
   2015     uint32_t              maxCullDistances;
   2016     uint32_t              maxCombinedClipAndCullDistances;
   2017     uint32_t              discreteQueuePriorities;
   2018     float                 pointSizeRange[2];
   2019     float                 lineWidthRange[2];
   2020     float                 pointSizeGranularity;
   2021     float                 lineWidthGranularity;
   2022     VkBool32              strictLines;
   2023     VkBool32              standardSampleLocations;
   2024     VkDeviceSize          optimalBufferCopyOffsetAlignment;
   2025     VkDeviceSize          optimalBufferCopyRowPitchAlignment;
   2026     VkDeviceSize          nonCoherentAtomSize;
   2027 } VkPhysicalDeviceLimits;
   2028 
   2029 typedef struct VkPhysicalDeviceSparseProperties {
   2030     VkBool32    residencyStandard2DBlockShape;
   2031     VkBool32    residencyStandard2DMultisampleBlockShape;
   2032     VkBool32    residencyStandard3DBlockShape;
   2033     VkBool32    residencyAlignedMipSize;
   2034     VkBool32    residencyNonResidentStrict;
   2035 } VkPhysicalDeviceSparseProperties;
   2036 
   2037 typedef struct VkPhysicalDeviceProperties {
   2038     uint32_t                            apiVersion;
   2039     uint32_t                            driverVersion;
   2040     uint32_t                            vendorID;
   2041     uint32_t                            deviceID;
   2042     VkPhysicalDeviceType                deviceType;
   2043     char                                deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
   2044     uint8_t                             pipelineCacheUUID[VK_UUID_SIZE];
   2045     VkPhysicalDeviceLimits              limits;
   2046     VkPhysicalDeviceSparseProperties    sparseProperties;
   2047 } VkPhysicalDeviceProperties;
   2048 
   2049 typedef struct VkQueueFamilyProperties {
   2050     VkQueueFlags    queueFlags;
   2051     uint32_t        queueCount;
   2052     uint32_t        timestampValidBits;
   2053     VkExtent3D      minImageTransferGranularity;
   2054 } VkQueueFamilyProperties;
   2055 
   2056 typedef struct VkMemoryType {
   2057     VkMemoryPropertyFlags    propertyFlags;
   2058     uint32_t                 heapIndex;
   2059 } VkMemoryType;
   2060 
   2061 typedef struct VkMemoryHeap {
   2062     VkDeviceSize         size;
   2063     VkMemoryHeapFlags    flags;
   2064 } VkMemoryHeap;
   2065 
   2066 typedef struct VkPhysicalDeviceMemoryProperties {
   2067     uint32_t        memoryTypeCount;
   2068     VkMemoryType    memoryTypes[VK_MAX_MEMORY_TYPES];
   2069     uint32_t        memoryHeapCount;
   2070     VkMemoryHeap    memoryHeaps[VK_MAX_MEMORY_HEAPS];
   2071 } VkPhysicalDeviceMemoryProperties;
   2072 
   2073 typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void);
   2074 typedef struct VkDeviceQueueCreateInfo {
   2075     VkStructureType             sType;
   2076     const void*                 pNext;
   2077     VkDeviceQueueCreateFlags    flags;
   2078     uint32_t                    queueFamilyIndex;
   2079     uint32_t                    queueCount;
   2080     const float*                pQueuePriorities;
   2081 } VkDeviceQueueCreateInfo;
   2082 
   2083 typedef struct VkDeviceCreateInfo {
   2084     VkStructureType                    sType;
   2085     const void*                        pNext;
   2086     VkDeviceCreateFlags                flags;
   2087     uint32_t                           queueCreateInfoCount;
   2088     const VkDeviceQueueCreateInfo*     pQueueCreateInfos;
   2089     uint32_t                           enabledLayerCount;
   2090     const char* const*                 ppEnabledLayerNames;
   2091     uint32_t                           enabledExtensionCount;
   2092     const char* const*                 ppEnabledExtensionNames;
   2093     const VkPhysicalDeviceFeatures*    pEnabledFeatures;
   2094 } VkDeviceCreateInfo;
   2095 
   2096 typedef struct VkExtensionProperties {
   2097     char        extensionName[VK_MAX_EXTENSION_NAME_SIZE];
   2098     uint32_t    specVersion;
   2099 } VkExtensionProperties;
   2100 
   2101 typedef struct VkLayerProperties {
   2102     char        layerName[VK_MAX_EXTENSION_NAME_SIZE];
   2103     uint32_t    specVersion;
   2104     uint32_t    implementationVersion;
   2105     char        description[VK_MAX_DESCRIPTION_SIZE];
   2106 } VkLayerProperties;
   2107 
   2108 typedef struct VkSubmitInfo {
   2109     VkStructureType                sType;
   2110     const void*                    pNext;
   2111     uint32_t                       waitSemaphoreCount;
   2112     const VkSemaphore*             pWaitSemaphores;
   2113     const VkPipelineStageFlags*    pWaitDstStageMask;
   2114     uint32_t                       commandBufferCount;
   2115     const VkCommandBuffer*         pCommandBuffers;
   2116     uint32_t                       signalSemaphoreCount;
   2117     const VkSemaphore*             pSignalSemaphores;
   2118 } VkSubmitInfo;
   2119 
   2120 typedef struct VkMemoryAllocateInfo {
   2121     VkStructureType    sType;
   2122     const void*        pNext;
   2123     VkDeviceSize       allocationSize;
   2124     uint32_t           memoryTypeIndex;
   2125 } VkMemoryAllocateInfo;
   2126 
   2127 typedef struct VkMappedMemoryRange {
   2128     VkStructureType    sType;
   2129     const void*        pNext;
   2130     VkDeviceMemory     memory;
   2131     VkDeviceSize       offset;
   2132     VkDeviceSize       size;
   2133 } VkMappedMemoryRange;
   2134 
   2135 typedef struct VkMemoryRequirements {
   2136     VkDeviceSize    size;
   2137     VkDeviceSize    alignment;
   2138     uint32_t        memoryTypeBits;
   2139 } VkMemoryRequirements;
   2140 
   2141 typedef struct VkSparseImageFormatProperties {
   2142     VkImageAspectFlags          aspectMask;
   2143     VkExtent3D                  imageGranularity;
   2144     VkSparseImageFormatFlags    flags;
   2145 } VkSparseImageFormatProperties;
   2146 
   2147 typedef struct VkSparseImageMemoryRequirements {
   2148     VkSparseImageFormatProperties    formatProperties;
   2149     uint32_t                         imageMipTailFirstLod;
   2150     VkDeviceSize                     imageMipTailSize;
   2151     VkDeviceSize                     imageMipTailOffset;
   2152     VkDeviceSize                     imageMipTailStride;
   2153 } VkSparseImageMemoryRequirements;
   2154 
   2155 typedef struct VkSparseMemoryBind {
   2156     VkDeviceSize               resourceOffset;
   2157     VkDeviceSize               size;
   2158     VkDeviceMemory             memory;
   2159     VkDeviceSize               memoryOffset;
   2160     VkSparseMemoryBindFlags    flags;
   2161 } VkSparseMemoryBind;
   2162 
   2163 typedef struct VkSparseBufferMemoryBindInfo {
   2164     VkBuffer                     buffer;
   2165     uint32_t                     bindCount;
   2166     const VkSparseMemoryBind*    pBinds;
   2167 } VkSparseBufferMemoryBindInfo;
   2168 
   2169 typedef struct VkSparseImageOpaqueMemoryBindInfo {
   2170     VkImage                      image;
   2171     uint32_t                     bindCount;
   2172     const VkSparseMemoryBind*    pBinds;
   2173 } VkSparseImageOpaqueMemoryBindInfo;
   2174 
   2175 typedef struct VkImageSubresource {
   2176     VkImageAspectFlags    aspectMask;
   2177     uint32_t              mipLevel;
   2178     uint32_t              arrayLayer;
   2179 } VkImageSubresource;
   2180 
   2181 typedef struct VkOffset3D {
   2182     int32_t    x;
   2183     int32_t    y;
   2184     int32_t    z;
   2185 } VkOffset3D;
   2186 
   2187 typedef struct VkSparseImageMemoryBind {
   2188     VkImageSubresource         subresource;
   2189     VkOffset3D                 offset;
   2190     VkExtent3D                 extent;
   2191     VkDeviceMemory             memory;
   2192     VkDeviceSize               memoryOffset;
   2193     VkSparseMemoryBindFlags    flags;
   2194 } VkSparseImageMemoryBind;
   2195 
   2196 typedef struct VkSparseImageMemoryBindInfo {
   2197     VkImage                           image;
   2198     uint32_t                          bindCount;
   2199     const VkSparseImageMemoryBind*    pBinds;
   2200 } VkSparseImageMemoryBindInfo;
   2201 
   2202 typedef struct VkBindSparseInfo {
   2203     VkStructureType                             sType;
   2204     const void*                                 pNext;
   2205     uint32_t                                    waitSemaphoreCount;
   2206     const VkSemaphore*                          pWaitSemaphores;
   2207     uint32_t                                    bufferBindCount;
   2208     const VkSparseBufferMemoryBindInfo*         pBufferBinds;
   2209     uint32_t                                    imageOpaqueBindCount;
   2210     const VkSparseImageOpaqueMemoryBindInfo*    pImageOpaqueBinds;
   2211     uint32_t                                    imageBindCount;
   2212     const VkSparseImageMemoryBindInfo*          pImageBinds;
   2213     uint32_t                                    signalSemaphoreCount;
   2214     const VkSemaphore*                          pSignalSemaphores;
   2215 } VkBindSparseInfo;
   2216 
   2217 typedef struct VkFenceCreateInfo {
   2218     VkStructureType       sType;
   2219     const void*           pNext;
   2220     VkFenceCreateFlags    flags;
   2221 } VkFenceCreateInfo;
   2222 
   2223 typedef struct VkSemaphoreCreateInfo {
   2224     VkStructureType           sType;
   2225     const void*               pNext;
   2226     VkSemaphoreCreateFlags    flags;
   2227 } VkSemaphoreCreateInfo;
   2228 
   2229 typedef struct VkEventCreateInfo {
   2230     VkStructureType       sType;
   2231     const void*           pNext;
   2232     VkEventCreateFlags    flags;
   2233 } VkEventCreateInfo;
   2234 
   2235 typedef struct VkQueryPoolCreateInfo {
   2236     VkStructureType                  sType;
   2237     const void*                      pNext;
   2238     VkQueryPoolCreateFlags           flags;
   2239     VkQueryType                      queryType;
   2240     uint32_t                         queryCount;
   2241     VkQueryPipelineStatisticFlags    pipelineStatistics;
   2242 } VkQueryPoolCreateInfo;
   2243 
   2244 typedef struct VkBufferCreateInfo {
   2245     VkStructureType        sType;
   2246     const void*            pNext;
   2247     VkBufferCreateFlags    flags;
   2248     VkDeviceSize           size;
   2249     VkBufferUsageFlags     usage;
   2250     VkSharingMode          sharingMode;
   2251     uint32_t               queueFamilyIndexCount;
   2252     const uint32_t*        pQueueFamilyIndices;
   2253 } VkBufferCreateInfo;
   2254 
   2255 typedef struct VkBufferViewCreateInfo {
   2256     VkStructureType            sType;
   2257     const void*                pNext;
   2258     VkBufferViewCreateFlags    flags;
   2259     VkBuffer                   buffer;
   2260     VkFormat                   format;
   2261     VkDeviceSize               offset;
   2262     VkDeviceSize               range;
   2263 } VkBufferViewCreateInfo;
   2264 
   2265 typedef struct VkImageCreateInfo {
   2266     VkStructureType          sType;
   2267     const void*              pNext;
   2268     VkImageCreateFlags       flags;
   2269     VkImageType              imageType;
   2270     VkFormat                 format;
   2271     VkExtent3D               extent;
   2272     uint32_t                 mipLevels;
   2273     uint32_t                 arrayLayers;
   2274     VkSampleCountFlagBits    samples;
   2275     VkImageTiling            tiling;
   2276     VkImageUsageFlags        usage;
   2277     VkSharingMode            sharingMode;
   2278     uint32_t                 queueFamilyIndexCount;
   2279     const uint32_t*          pQueueFamilyIndices;
   2280     VkImageLayout            initialLayout;
   2281 } VkImageCreateInfo;
   2282 
   2283 typedef struct VkSubresourceLayout {
   2284     VkDeviceSize    offset;
   2285     VkDeviceSize    size;
   2286     VkDeviceSize    rowPitch;
   2287     VkDeviceSize    arrayPitch;
   2288     VkDeviceSize    depthPitch;
   2289 } VkSubresourceLayout;
   2290 
   2291 typedef struct VkComponentMapping {
   2292     VkComponentSwizzle    r;
   2293     VkComponentSwizzle    g;
   2294     VkComponentSwizzle    b;
   2295     VkComponentSwizzle    a;
   2296 } VkComponentMapping;
   2297 
   2298 typedef struct VkImageSubresourceRange {
   2299     VkImageAspectFlags    aspectMask;
   2300     uint32_t              baseMipLevel;
   2301     uint32_t              levelCount;
   2302     uint32_t              baseArrayLayer;
   2303     uint32_t              layerCount;
   2304 } VkImageSubresourceRange;
   2305 
   2306 typedef struct VkImageViewCreateInfo {
   2307     VkStructureType            sType;
   2308     const void*                pNext;
   2309     VkImageViewCreateFlags     flags;
   2310     VkImage                    image;
   2311     VkImageViewType            viewType;
   2312     VkFormat                   format;
   2313     VkComponentMapping         components;
   2314     VkImageSubresourceRange    subresourceRange;
   2315 } VkImageViewCreateInfo;
   2316 
   2317 typedef struct VkShaderModuleCreateInfo {
   2318     VkStructureType              sType;
   2319     const void*                  pNext;
   2320     VkShaderModuleCreateFlags    flags;
   2321     size_t                       codeSize;
   2322     const uint32_t*              pCode;
   2323 } VkShaderModuleCreateInfo;
   2324 
   2325 typedef struct VkPipelineCacheCreateInfo {
   2326     VkStructureType               sType;
   2327     const void*                   pNext;
   2328     VkPipelineCacheCreateFlags    flags;
   2329     size_t                        initialDataSize;
   2330     const void*                   pInitialData;
   2331 } VkPipelineCacheCreateInfo;
   2332 
   2333 typedef struct VkSpecializationMapEntry {
   2334     uint32_t    constantID;
   2335     uint32_t    offset;
   2336     size_t      size;
   2337 } VkSpecializationMapEntry;
   2338 
   2339 typedef struct VkSpecializationInfo {
   2340     uint32_t                           mapEntryCount;
   2341     const VkSpecializationMapEntry*    pMapEntries;
   2342     size_t                             dataSize;
   2343     const void*                        pData;
   2344 } VkSpecializationInfo;
   2345 
   2346 typedef struct VkPipelineShaderStageCreateInfo {
   2347     VkStructureType                     sType;
   2348     const void*                         pNext;
   2349     VkPipelineShaderStageCreateFlags    flags;
   2350     VkShaderStageFlagBits               stage;
   2351     VkShaderModule                      module;
   2352     const char*                         pName;
   2353     const VkSpecializationInfo*         pSpecializationInfo;
   2354 } VkPipelineShaderStageCreateInfo;
   2355 
   2356 typedef struct VkVertexInputBindingDescription {
   2357     uint32_t             binding;
   2358     uint32_t             stride;
   2359     VkVertexInputRate    inputRate;
   2360 } VkVertexInputBindingDescription;
   2361 
   2362 typedef struct VkVertexInputAttributeDescription {
   2363     uint32_t    location;
   2364     uint32_t    binding;
   2365     VkFormat    format;
   2366     uint32_t    offset;
   2367 } VkVertexInputAttributeDescription;
   2368 
   2369 typedef struct VkPipelineVertexInputStateCreateInfo {
   2370     VkStructureType                             sType;
   2371     const void*                                 pNext;
   2372     VkPipelineVertexInputStateCreateFlags       flags;
   2373     uint32_t                                    vertexBindingDescriptionCount;
   2374     const VkVertexInputBindingDescription*      pVertexBindingDescriptions;
   2375     uint32_t                                    vertexAttributeDescriptionCount;
   2376     const VkVertexInputAttributeDescription*    pVertexAttributeDescriptions;
   2377 } VkPipelineVertexInputStateCreateInfo;
   2378 
   2379 typedef struct VkPipelineInputAssemblyStateCreateInfo {
   2380     VkStructureType                            sType;
   2381     const void*                                pNext;
   2382     VkPipelineInputAssemblyStateCreateFlags    flags;
   2383     VkPrimitiveTopology                        topology;
   2384     VkBool32                                   primitiveRestartEnable;
   2385 } VkPipelineInputAssemblyStateCreateInfo;
   2386 
   2387 typedef struct VkPipelineTessellationStateCreateInfo {
   2388     VkStructureType                           sType;
   2389     const void*                               pNext;
   2390     VkPipelineTessellationStateCreateFlags    flags;
   2391     uint32_t                                  patchControlPoints;
   2392 } VkPipelineTessellationStateCreateInfo;
   2393 
   2394 typedef struct VkViewport {
   2395     float    x;
   2396     float    y;
   2397     float    width;
   2398     float    height;
   2399     float    minDepth;
   2400     float    maxDepth;
   2401 } VkViewport;
   2402 
   2403 typedef struct VkOffset2D {
   2404     int32_t    x;
   2405     int32_t    y;
   2406 } VkOffset2D;
   2407 
   2408 typedef struct VkExtent2D {
   2409     uint32_t    width;
   2410     uint32_t    height;
   2411 } VkExtent2D;
   2412 
   2413 typedef struct VkRect2D {
   2414     VkOffset2D    offset;
   2415     VkExtent2D    extent;
   2416 } VkRect2D;
   2417 
   2418 typedef struct VkPipelineViewportStateCreateInfo {
   2419     VkStructureType                       sType;
   2420     const void*                           pNext;
   2421     VkPipelineViewportStateCreateFlags    flags;
   2422     uint32_t                              viewportCount;
   2423     const VkViewport*                     pViewports;
   2424     uint32_t                              scissorCount;
   2425     const VkRect2D*                       pScissors;
   2426 } VkPipelineViewportStateCreateInfo;
   2427 
   2428 typedef struct VkPipelineRasterizationStateCreateInfo {
   2429     VkStructureType                            sType;
   2430     const void*                                pNext;
   2431     VkPipelineRasterizationStateCreateFlags    flags;
   2432     VkBool32                                   depthClampEnable;
   2433     VkBool32                                   rasterizerDiscardEnable;
   2434     VkPolygonMode                              polygonMode;
   2435     VkCullModeFlags                            cullMode;
   2436     VkFrontFace                                frontFace;
   2437     VkBool32                                   depthBiasEnable;
   2438     float                                      depthBiasConstantFactor;
   2439     float                                      depthBiasClamp;
   2440     float                                      depthBiasSlopeFactor;
   2441     float                                      lineWidth;
   2442 } VkPipelineRasterizationStateCreateInfo;
   2443 
   2444 typedef struct VkPipelineMultisampleStateCreateInfo {
   2445     VkStructureType                          sType;
   2446     const void*                              pNext;
   2447     VkPipelineMultisampleStateCreateFlags    flags;
   2448     VkSampleCountFlagBits                    rasterizationSamples;
   2449     VkBool32                                 sampleShadingEnable;
   2450     float                                    minSampleShading;
   2451     const VkSampleMask*                      pSampleMask;
   2452     VkBool32                                 alphaToCoverageEnable;
   2453     VkBool32                                 alphaToOneEnable;
   2454 } VkPipelineMultisampleStateCreateInfo;
   2455 
   2456 typedef struct VkStencilOpState {
   2457     VkStencilOp    failOp;
   2458     VkStencilOp    passOp;
   2459     VkStencilOp    depthFailOp;
   2460     VkCompareOp    compareOp;
   2461     uint32_t       compareMask;
   2462     uint32_t       writeMask;
   2463     uint32_t       reference;
   2464 } VkStencilOpState;
   2465 
   2466 typedef struct VkPipelineDepthStencilStateCreateInfo {
   2467     VkStructureType                           sType;
   2468     const void*                               pNext;
   2469     VkPipelineDepthStencilStateCreateFlags    flags;
   2470     VkBool32                                  depthTestEnable;
   2471     VkBool32                                  depthWriteEnable;
   2472     VkCompareOp                               depthCompareOp;
   2473     VkBool32                                  depthBoundsTestEnable;
   2474     VkBool32                                  stencilTestEnable;
   2475     VkStencilOpState                          front;
   2476     VkStencilOpState                          back;
   2477     float                                     minDepthBounds;
   2478     float                                     maxDepthBounds;
   2479 } VkPipelineDepthStencilStateCreateInfo;
   2480 
   2481 typedef struct VkPipelineColorBlendAttachmentState {
   2482     VkBool32                 blendEnable;
   2483     VkBlendFactor            srcColorBlendFactor;
   2484     VkBlendFactor            dstColorBlendFactor;
   2485     VkBlendOp                colorBlendOp;
   2486     VkBlendFactor            srcAlphaBlendFactor;
   2487     VkBlendFactor            dstAlphaBlendFactor;
   2488     VkBlendOp                alphaBlendOp;
   2489     VkColorComponentFlags    colorWriteMask;
   2490 } VkPipelineColorBlendAttachmentState;
   2491 
   2492 typedef struct VkPipelineColorBlendStateCreateInfo {
   2493     VkStructureType                               sType;
   2494     const void*                                   pNext;
   2495     VkPipelineColorBlendStateCreateFlags          flags;
   2496     VkBool32                                      logicOpEnable;
   2497     VkLogicOp                                     logicOp;
   2498     uint32_t                                      attachmentCount;
   2499     const VkPipelineColorBlendAttachmentState*    pAttachments;
   2500     float                                         blendConstants[4];
   2501 } VkPipelineColorBlendStateCreateInfo;
   2502 
   2503 typedef struct VkPipelineDynamicStateCreateInfo {
   2504     VkStructureType                      sType;
   2505     const void*                          pNext;
   2506     VkPipelineDynamicStateCreateFlags    flags;
   2507     uint32_t                             dynamicStateCount;
   2508     const VkDynamicState*                pDynamicStates;
   2509 } VkPipelineDynamicStateCreateInfo;
   2510 
   2511 typedef struct VkGraphicsPipelineCreateInfo {
   2512     VkStructureType                                  sType;
   2513     const void*                                      pNext;
   2514     VkPipelineCreateFlags                            flags;
   2515     uint32_t                                         stageCount;
   2516     const VkPipelineShaderStageCreateInfo*           pStages;
   2517     const VkPipelineVertexInputStateCreateInfo*      pVertexInputState;
   2518     const VkPipelineInputAssemblyStateCreateInfo*    pInputAssemblyState;
   2519     const VkPipelineTessellationStateCreateInfo*     pTessellationState;
   2520     const VkPipelineViewportStateCreateInfo*         pViewportState;
   2521     const VkPipelineRasterizationStateCreateInfo*    pRasterizationState;
   2522     const VkPipelineMultisampleStateCreateInfo*      pMultisampleState;
   2523     const VkPipelineDepthStencilStateCreateInfo*     pDepthStencilState;
   2524     const VkPipelineColorBlendStateCreateInfo*       pColorBlendState;
   2525     const VkPipelineDynamicStateCreateInfo*          pDynamicState;
   2526     VkPipelineLayout                                 layout;
   2527     VkRenderPass                                     renderPass;
   2528     uint32_t                                         subpass;
   2529     VkPipeline                                       basePipelineHandle;
   2530     int32_t                                          basePipelineIndex;
   2531 } VkGraphicsPipelineCreateInfo;
   2532 
   2533 typedef struct VkComputePipelineCreateInfo {
   2534     VkStructureType                    sType;
   2535     const void*                        pNext;
   2536     VkPipelineCreateFlags              flags;
   2537     VkPipelineShaderStageCreateInfo    stage;
   2538     VkPipelineLayout                   layout;
   2539     VkPipeline                         basePipelineHandle;
   2540     int32_t                            basePipelineIndex;
   2541 } VkComputePipelineCreateInfo;
   2542 
   2543 typedef struct VkPushConstantRange {
   2544     VkShaderStageFlags    stageFlags;
   2545     uint32_t              offset;
   2546     uint32_t              size;
   2547 } VkPushConstantRange;
   2548 
   2549 typedef struct VkPipelineLayoutCreateInfo {
   2550     VkStructureType                 sType;
   2551     const void*                     pNext;
   2552     VkPipelineLayoutCreateFlags     flags;
   2553     uint32_t                        setLayoutCount;
   2554     const VkDescriptorSetLayout*    pSetLayouts;
   2555     uint32_t                        pushConstantRangeCount;
   2556     const VkPushConstantRange*      pPushConstantRanges;
   2557 } VkPipelineLayoutCreateInfo;
   2558 
   2559 typedef struct VkSamplerCreateInfo {
   2560     VkStructureType         sType;
   2561     const void*             pNext;
   2562     VkSamplerCreateFlags    flags;
   2563     VkFilter                magFilter;
   2564     VkFilter                minFilter;
   2565     VkSamplerMipmapMode     mipmapMode;
   2566     VkSamplerAddressMode    addressModeU;
   2567     VkSamplerAddressMode    addressModeV;
   2568     VkSamplerAddressMode    addressModeW;
   2569     float                   mipLodBias;
   2570     VkBool32                anisotropyEnable;
   2571     float                   maxAnisotropy;
   2572     VkBool32                compareEnable;
   2573     VkCompareOp             compareOp;
   2574     float                   minLod;
   2575     float                   maxLod;
   2576     VkBorderColor           borderColor;
   2577     VkBool32                unnormalizedCoordinates;
   2578 } VkSamplerCreateInfo;
   2579 
   2580 typedef struct VkDescriptorSetLayoutBinding {
   2581     uint32_t              binding;
   2582     VkDescriptorType      descriptorType;
   2583     uint32_t              descriptorCount;
   2584     VkShaderStageFlags    stageFlags;
   2585     const VkSampler*      pImmutableSamplers;
   2586 } VkDescriptorSetLayoutBinding;
   2587 
   2588 typedef struct VkDescriptorSetLayoutCreateInfo {
   2589     VkStructureType                        sType;
   2590     const void*                            pNext;
   2591     VkDescriptorSetLayoutCreateFlags       flags;
   2592     uint32_t                               bindingCount;
   2593     const VkDescriptorSetLayoutBinding*    pBindings;
   2594 } VkDescriptorSetLayoutCreateInfo;
   2595 
   2596 typedef struct VkDescriptorPoolSize {
   2597     VkDescriptorType    type;
   2598     uint32_t            descriptorCount;
   2599 } VkDescriptorPoolSize;
   2600 
   2601 typedef struct VkDescriptorPoolCreateInfo {
   2602     VkStructureType                sType;
   2603     const void*                    pNext;
   2604     VkDescriptorPoolCreateFlags    flags;
   2605     uint32_t                       maxSets;
   2606     uint32_t                       poolSizeCount;
   2607     const VkDescriptorPoolSize*    pPoolSizes;
   2608 } VkDescriptorPoolCreateInfo;
   2609 
   2610 typedef struct VkDescriptorSetAllocateInfo {
   2611     VkStructureType                 sType;
   2612     const void*                     pNext;
   2613     VkDescriptorPool                descriptorPool;
   2614     uint32_t                        descriptorSetCount;
   2615     const VkDescriptorSetLayout*    pSetLayouts;
   2616 } VkDescriptorSetAllocateInfo;
   2617 
   2618 typedef struct VkDescriptorImageInfo {
   2619     VkSampler        sampler;
   2620     VkImageView      imageView;
   2621     VkImageLayout    imageLayout;
   2622 } VkDescriptorImageInfo;
   2623 
   2624 typedef struct VkDescriptorBufferInfo {
   2625     VkBuffer        buffer;
   2626     VkDeviceSize    offset;
   2627     VkDeviceSize    range;
   2628 } VkDescriptorBufferInfo;
   2629 
   2630 typedef struct VkWriteDescriptorSet {
   2631     VkStructureType                  sType;
   2632     const void*                      pNext;
   2633     VkDescriptorSet                  dstSet;
   2634     uint32_t                         dstBinding;
   2635     uint32_t                         dstArrayElement;
   2636     uint32_t                         descriptorCount;
   2637     VkDescriptorType                 descriptorType;
   2638     const VkDescriptorImageInfo*     pImageInfo;
   2639     const VkDescriptorBufferInfo*    pBufferInfo;
   2640     const VkBufferView*              pTexelBufferView;
   2641 } VkWriteDescriptorSet;
   2642 
   2643 typedef struct VkCopyDescriptorSet {
   2644     VkStructureType    sType;
   2645     const void*        pNext;
   2646     VkDescriptorSet    srcSet;
   2647     uint32_t           srcBinding;
   2648     uint32_t           srcArrayElement;
   2649     VkDescriptorSet    dstSet;
   2650     uint32_t           dstBinding;
   2651     uint32_t           dstArrayElement;
   2652     uint32_t           descriptorCount;
   2653 } VkCopyDescriptorSet;
   2654 
   2655 typedef struct VkFramebufferCreateInfo {
   2656     VkStructureType             sType;
   2657     const void*                 pNext;
   2658     VkFramebufferCreateFlags    flags;
   2659     VkRenderPass                renderPass;
   2660     uint32_t                    attachmentCount;
   2661     const VkImageView*          pAttachments;
   2662     uint32_t                    width;
   2663     uint32_t                    height;
   2664     uint32_t                    layers;
   2665 } VkFramebufferCreateInfo;
   2666 
   2667 typedef struct VkAttachmentDescription {
   2668     VkAttachmentDescriptionFlags    flags;
   2669     VkFormat                        format;
   2670     VkSampleCountFlagBits           samples;
   2671     VkAttachmentLoadOp              loadOp;
   2672     VkAttachmentStoreOp             storeOp;
   2673     VkAttachmentLoadOp              stencilLoadOp;
   2674     VkAttachmentStoreOp             stencilStoreOp;
   2675     VkImageLayout                   initialLayout;
   2676     VkImageLayout                   finalLayout;
   2677 } VkAttachmentDescription;
   2678 
   2679 typedef struct VkAttachmentReference {
   2680     uint32_t         attachment;
   2681     VkImageLayout    layout;
   2682 } VkAttachmentReference;
   2683 
   2684 typedef struct VkSubpassDescription {
   2685     VkSubpassDescriptionFlags       flags;
   2686     VkPipelineBindPoint             pipelineBindPoint;
   2687     uint32_t                        inputAttachmentCount;
   2688     const VkAttachmentReference*    pInputAttachments;
   2689     uint32_t                        colorAttachmentCount;
   2690     const VkAttachmentReference*    pColorAttachments;
   2691     const VkAttachmentReference*    pResolveAttachments;
   2692     const VkAttachmentReference*    pDepthStencilAttachment;
   2693     uint32_t                        preserveAttachmentCount;
   2694     const uint32_t*                 pPreserveAttachments;
   2695 } VkSubpassDescription;
   2696 
   2697 typedef struct VkSubpassDependency {
   2698     uint32_t                srcSubpass;
   2699     uint32_t                dstSubpass;
   2700     VkPipelineStageFlags    srcStageMask;
   2701     VkPipelineStageFlags    dstStageMask;
   2702     VkAccessFlags           srcAccessMask;
   2703     VkAccessFlags           dstAccessMask;
   2704     VkDependencyFlags       dependencyFlags;
   2705 } VkSubpassDependency;
   2706 
   2707 typedef struct VkRenderPassCreateInfo {
   2708     VkStructureType                   sType;
   2709     const void*                       pNext;
   2710     VkRenderPassCreateFlags           flags;
   2711     uint32_t                          attachmentCount;
   2712     const VkAttachmentDescription*    pAttachments;
   2713     uint32_t                          subpassCount;
   2714     const VkSubpassDescription*       pSubpasses;
   2715     uint32_t                          dependencyCount;
   2716     const VkSubpassDependency*        pDependencies;
   2717 } VkRenderPassCreateInfo;
   2718 
   2719 typedef struct VkCommandPoolCreateInfo {
   2720     VkStructureType             sType;
   2721     const void*                 pNext;
   2722     VkCommandPoolCreateFlags    flags;
   2723     uint32_t                    queueFamilyIndex;
   2724 } VkCommandPoolCreateInfo;
   2725 
   2726 typedef struct VkCommandBufferAllocateInfo {
   2727     VkStructureType         sType;
   2728     const void*             pNext;
   2729     VkCommandPool           commandPool;
   2730     VkCommandBufferLevel    level;
   2731     uint32_t                commandBufferCount;
   2732 } VkCommandBufferAllocateInfo;
   2733 
   2734 typedef struct VkCommandBufferInheritanceInfo {
   2735     VkStructureType                  sType;
   2736     const void*                      pNext;
   2737     VkRenderPass                     renderPass;
   2738     uint32_t                         subpass;
   2739     VkFramebuffer                    framebuffer;
   2740     VkBool32                         occlusionQueryEnable;
   2741     VkQueryControlFlags              queryFlags;
   2742     VkQueryPipelineStatisticFlags    pipelineStatistics;
   2743 } VkCommandBufferInheritanceInfo;
   2744 
   2745 typedef struct VkCommandBufferBeginInfo {
   2746     VkStructureType                          sType;
   2747     const void*                              pNext;
   2748     VkCommandBufferUsageFlags                flags;
   2749     const VkCommandBufferInheritanceInfo*    pInheritanceInfo;
   2750 } VkCommandBufferBeginInfo;
   2751 
   2752 typedef struct VkBufferCopy {
   2753     VkDeviceSize    srcOffset;
   2754     VkDeviceSize    dstOffset;
   2755     VkDeviceSize    size;
   2756 } VkBufferCopy;
   2757 
   2758 typedef struct VkImageSubresourceLayers {
   2759     VkImageAspectFlags    aspectMask;
   2760     uint32_t              mipLevel;
   2761     uint32_t              baseArrayLayer;
   2762     uint32_t              layerCount;
   2763 } VkImageSubresourceLayers;
   2764 
   2765 typedef struct VkImageCopy {
   2766     VkImageSubresourceLayers    srcSubresource;
   2767     VkOffset3D                  srcOffset;
   2768     VkImageSubresourceLayers    dstSubresource;
   2769     VkOffset3D                  dstOffset;
   2770     VkExtent3D                  extent;
   2771 } VkImageCopy;
   2772 
   2773 typedef struct VkImageBlit {
   2774     VkImageSubresourceLayers    srcSubresource;
   2775     VkOffset3D                  srcOffsets[2];
   2776     VkImageSubresourceLayers    dstSubresource;
   2777     VkOffset3D                  dstOffsets[2];
   2778 } VkImageBlit;
   2779 
   2780 typedef struct VkBufferImageCopy {
   2781     VkDeviceSize                bufferOffset;
   2782     uint32_t                    bufferRowLength;
   2783     uint32_t                    bufferImageHeight;
   2784     VkImageSubresourceLayers    imageSubresource;
   2785     VkOffset3D                  imageOffset;
   2786     VkExtent3D                  imageExtent;
   2787 } VkBufferImageCopy;
   2788 
   2789 typedef union VkClearColorValue {
   2790     float       float32[4];
   2791     int32_t     int32[4];
   2792     uint32_t    uint32[4];
   2793 } VkClearColorValue;
   2794 
   2795 typedef struct VkClearDepthStencilValue {
   2796     float       depth;
   2797     uint32_t    stencil;
   2798 } VkClearDepthStencilValue;
   2799 
   2800 typedef union VkClearValue {
   2801     VkClearColorValue           color;
   2802     VkClearDepthStencilValue    depthStencil;
   2803 } VkClearValue;
   2804 
   2805 typedef struct VkClearAttachment {
   2806     VkImageAspectFlags    aspectMask;
   2807     uint32_t              colorAttachment;
   2808     VkClearValue          clearValue;
   2809 } VkClearAttachment;
   2810 
   2811 typedef struct VkClearRect {
   2812     VkRect2D    rect;
   2813     uint32_t    baseArrayLayer;
   2814     uint32_t    layerCount;
   2815 } VkClearRect;
   2816 
   2817 typedef struct VkImageResolve {
   2818     VkImageSubresourceLayers    srcSubresource;
   2819     VkOffset3D                  srcOffset;
   2820     VkImageSubresourceLayers    dstSubresource;
   2821     VkOffset3D                  dstOffset;
   2822     VkExtent3D                  extent;
   2823 } VkImageResolve;
   2824 
   2825 typedef struct VkMemoryBarrier {
   2826     VkStructureType    sType;
   2827     const void*        pNext;
   2828     VkAccessFlags      srcAccessMask;
   2829     VkAccessFlags      dstAccessMask;
   2830 } VkMemoryBarrier;
   2831 
   2832 typedef struct VkBufferMemoryBarrier {
   2833     VkStructureType    sType;
   2834     const void*        pNext;
   2835     VkAccessFlags      srcAccessMask;
   2836     VkAccessFlags      dstAccessMask;
   2837     uint32_t           srcQueueFamilyIndex;
   2838     uint32_t           dstQueueFamilyIndex;
   2839     VkBuffer           buffer;
   2840     VkDeviceSize       offset;
   2841     VkDeviceSize       size;
   2842 } VkBufferMemoryBarrier;
   2843 
   2844 typedef struct VkImageMemoryBarrier {
   2845     VkStructureType            sType;
   2846     const void*                pNext;
   2847     VkAccessFlags              srcAccessMask;
   2848     VkAccessFlags              dstAccessMask;
   2849     VkImageLayout              oldLayout;
   2850     VkImageLayout              newLayout;
   2851     uint32_t                   srcQueueFamilyIndex;
   2852     uint32_t                   dstQueueFamilyIndex;
   2853     VkImage                    image;
   2854     VkImageSubresourceRange    subresourceRange;
   2855 } VkImageMemoryBarrier;
   2856 
   2857 typedef struct VkRenderPassBeginInfo {
   2858     VkStructureType        sType;
   2859     const void*            pNext;
   2860     VkRenderPass           renderPass;
   2861     VkFramebuffer          framebuffer;
   2862     VkRect2D               renderArea;
   2863     uint32_t               clearValueCount;
   2864     const VkClearValue*    pClearValues;
   2865 } VkRenderPassBeginInfo;
   2866 
   2867 typedef struct VkDispatchIndirectCommand {
   2868     uint32_t    x;
   2869     uint32_t    y;
   2870     uint32_t    z;
   2871 } VkDispatchIndirectCommand;
   2872 
   2873 typedef struct VkDrawIndexedIndirectCommand {
   2874     uint32_t    indexCount;
   2875     uint32_t    instanceCount;
   2876     uint32_t    firstIndex;
   2877     int32_t     vertexOffset;
   2878     uint32_t    firstInstance;
   2879 } VkDrawIndexedIndirectCommand;
   2880 
   2881 typedef struct VkDrawIndirectCommand {
   2882     uint32_t    vertexCount;
   2883     uint32_t    instanceCount;
   2884     uint32_t    firstVertex;
   2885     uint32_t    firstInstance;
   2886 } VkDrawIndirectCommand;
   2887 
   2888 typedef struct VkBaseOutStructure {
   2889     VkStructureType               sType;
   2890     struct VkBaseOutStructure*    pNext;
   2891 } VkBaseOutStructure;
   2892 
   2893 typedef struct VkBaseInStructure {
   2894     VkStructureType                    sType;
   2895     const struct VkBaseInStructure*    pNext;
   2896 } VkBaseInStructure;
   2897 
   2898 
   2899 typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
   2900 typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator);
   2901 typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
   2902 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
   2903 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
   2904 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
   2905 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
   2906 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
   2907 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
   2908 typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName);
   2909 typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);
   2910 typedef VkResult (VKAPI_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
   2911 typedef void (VKAPI_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks* pAllocator);
   2912 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
   2913 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
   2914 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties);
   2915 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties);
   2916 typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
   2917 typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
   2918 typedef VkResult (VKAPI_PTR *PFN_vkQueueWaitIdle)(VkQueue queue);
   2919 typedef VkResult (VKAPI_PTR *PFN_vkDeviceWaitIdle)(VkDevice device);
   2920 typedef VkResult (VKAPI_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
   2921 typedef void (VKAPI_PTR *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);
   2922 typedef VkResult (VKAPI_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
   2923 typedef void (VKAPI_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory);
   2924 typedef VkResult (VKAPI_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
   2925 typedef VkResult (VKAPI_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
   2926 typedef void (VKAPI_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
   2927 typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
   2928 typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
   2929 typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
   2930 typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
   2931 typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
   2932 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties);
   2933 typedef VkResult (VKAPI_PTR *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
   2934 typedef VkResult (VKAPI_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
   2935 typedef void (VKAPI_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
   2936 typedef VkResult (VKAPI_PTR *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
   2937 typedef VkResult (VKAPI_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);
   2938 typedef VkResult (VKAPI_PTR *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
   2939 typedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
   2940 typedef void (VKAPI_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
   2941 typedef VkResult (VKAPI_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
   2942 typedef void (VKAPI_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
   2943 typedef VkResult (VKAPI_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);
   2944 typedef VkResult (VKAPI_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event);
   2945 typedef VkResult (VKAPI_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event);
   2946 typedef VkResult (VKAPI_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
   2947 typedef void (VKAPI_PTR *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator);
   2948 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);
   2949 typedef VkResult (VKAPI_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
   2950 typedef void (VKAPI_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
   2951 typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
   2952 typedef void (VKAPI_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
   2953 typedef VkResult (VKAPI_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
   2954 typedef void (VKAPI_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
   2955 typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
   2956 typedef VkResult (VKAPI_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
   2957 typedef void (VKAPI_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
   2958 typedef VkResult (VKAPI_PTR *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule);
   2959 typedef void (VKAPI_PTR *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator);
   2960 typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
   2961 typedef void (VKAPI_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
   2962 typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
   2963 typedef VkResult (VKAPI_PTR *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
   2964 typedef VkResult (VKAPI_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
   2965 typedef VkResult (VKAPI_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
   2966 typedef void (VKAPI_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
   2967 typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
   2968 typedef void (VKAPI_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
   2969 typedef VkResult (VKAPI_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
   2970 typedef void (VKAPI_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
   2971 typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
   2972 typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
   2973 typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
   2974 typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator);
   2975 typedef VkResult (VKAPI_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
   2976 typedef VkResult (VKAPI_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
   2977 typedef VkResult (VKAPI_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
   2978 typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
   2979 typedef VkResult (VKAPI_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
   2980 typedef void (VKAPI_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
   2981 typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
   2982 typedef void (VKAPI_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
   2983 typedef void (VKAPI_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
   2984 typedef VkResult (VKAPI_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
   2985 typedef void (VKAPI_PTR *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator);
   2986 typedef VkResult (VKAPI_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
   2987 typedef VkResult (VKAPI_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
   2988 typedef void (VKAPI_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
   2989 typedef VkResult (VKAPI_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
   2990 typedef VkResult (VKAPI_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer);
   2991 typedef VkResult (VKAPI_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
   2992 typedef void (VKAPI_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
   2993 typedef void (VKAPI_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports);
   2994 typedef void (VKAPI_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors);
   2995 typedef void (VKAPI_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth);
   2996 typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
   2997 typedef void (VKAPI_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]);
   2998 typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
   2999 typedef void (VKAPI_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask);
   3000 typedef void (VKAPI_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask);
   3001 typedef void (VKAPI_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference);
   3002 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);
   3003 typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
   3004 typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
   3005 typedef void (VKAPI_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
   3006 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
   3007 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
   3008 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
   3009 typedef void (VKAPI_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
   3010 typedef void (VKAPI_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
   3011 typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
   3012 typedef void (VKAPI_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
   3013 typedef void (VKAPI_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
   3014 typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
   3015 typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
   3016 typedef void (VKAPI_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);
   3017 typedef void (VKAPI_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data);
   3018 typedef void (VKAPI_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
   3019 typedef void (VKAPI_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
   3020 typedef void (VKAPI_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
   3021 typedef void (VKAPI_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
   3022 typedef void (VKAPI_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
   3023 typedef void (VKAPI_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
   3024 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);
   3025 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);
   3026 typedef void (VKAPI_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags);
   3027 typedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query);
   3028 typedef void (VKAPI_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);
   3029 typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query);
   3030 typedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
   3031 typedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues);
   3032 typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
   3033 typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents);
   3034 typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer);
   3035 typedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
   3036 
   3037 #ifndef VK_NO_PROTOTYPES
   3038 VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
   3039     const VkInstanceCreateInfo*                 pCreateInfo,
   3040     const VkAllocationCallbacks*                pAllocator,
   3041     VkInstance*                                 pInstance);
   3042 
   3043 VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
   3044     VkInstance                                  instance,
   3045     const VkAllocationCallbacks*                pAllocator);
   3046 
   3047 VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices(
   3048     VkInstance                                  instance,
   3049     uint32_t*                                   pPhysicalDeviceCount,
   3050     VkPhysicalDevice*                           pPhysicalDevices);
   3051 
   3052 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures(
   3053     VkPhysicalDevice                            physicalDevice,
   3054     VkPhysicalDeviceFeatures*                   pFeatures);
   3055 
   3056 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(
   3057     VkPhysicalDevice                            physicalDevice,
   3058     VkFormat                                    format,
   3059     VkFormatProperties*                         pFormatProperties);
   3060 
   3061 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties(
   3062     VkPhysicalDevice                            physicalDevice,
   3063     VkFormat                                    format,
   3064     VkImageType                                 type,
   3065     VkImageTiling                               tiling,
   3066     VkImageUsageFlags                           usage,
   3067     VkImageCreateFlags                          flags,
   3068     VkImageFormatProperties*                    pImageFormatProperties);
   3069 
   3070 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties(
   3071     VkPhysicalDevice                            physicalDevice,
   3072     VkPhysicalDeviceProperties*                 pProperties);
   3073 
   3074 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties(
   3075     VkPhysicalDevice                            physicalDevice,
   3076     uint32_t*                                   pQueueFamilyPropertyCount,
   3077     VkQueueFamilyProperties*                    pQueueFamilyProperties);
   3078 
   3079 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(
   3080     VkPhysicalDevice                            physicalDevice,
   3081     VkPhysicalDeviceMemoryProperties*           pMemoryProperties);
   3082 
   3083 VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(
   3084     VkInstance                                  instance,
   3085     const char*                                 pName);
   3086 
   3087 VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(
   3088     VkDevice                                    device,
   3089     const char*                                 pName);
   3090 
   3091 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(
   3092     VkPhysicalDevice                            physicalDevice,
   3093     const VkDeviceCreateInfo*                   pCreateInfo,
   3094     const VkAllocationCallbacks*                pAllocator,
   3095     VkDevice*                                   pDevice);
   3096 
   3097 VKAPI_ATTR void VKAPI_CALL vkDestroyDevice(
   3098     VkDevice                                    device,
   3099     const VkAllocationCallbacks*                pAllocator);
   3100 
   3101 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties(
   3102     const char*                                 pLayerName,
   3103     uint32_t*                                   pPropertyCount,
   3104     VkExtensionProperties*                      pProperties);
   3105 
   3106 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties(
   3107     VkPhysicalDevice                            physicalDevice,
   3108     const char*                                 pLayerName,
   3109     uint32_t*                                   pPropertyCount,
   3110     VkExtensionProperties*                      pProperties);
   3111 
   3112 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties(
   3113     uint32_t*                                   pPropertyCount,
   3114     VkLayerProperties*                          pProperties);
   3115 
   3116 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties(
   3117     VkPhysicalDevice                            physicalDevice,
   3118     uint32_t*                                   pPropertyCount,
   3119     VkLayerProperties*                          pProperties);
   3120 
   3121 VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue(
   3122     VkDevice                                    device,
   3123     uint32_t                                    queueFamilyIndex,
   3124     uint32_t                                    queueIndex,
   3125     VkQueue*                                    pQueue);
   3126 
   3127 VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(
   3128     VkQueue                                     queue,
   3129     uint32_t                                    submitCount,
   3130     const VkSubmitInfo*                         pSubmits,
   3131     VkFence                                     fence);
   3132 
   3133 VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(
   3134     VkQueue                                     queue);
   3135 
   3136 VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(
   3137     VkDevice                                    device);
   3138 
   3139 VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(
   3140     VkDevice                                    device,
   3141     const VkMemoryAllocateInfo*                 pAllocateInfo,
   3142     const VkAllocationCallbacks*                pAllocator,
   3143     VkDeviceMemory*                             pMemory);
   3144 
   3145 VKAPI_ATTR void VKAPI_CALL vkFreeMemory(
   3146     VkDevice                                    device,
   3147     VkDeviceMemory                              memory,
   3148     const VkAllocationCallbacks*                pAllocator);
   3149 
   3150 VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(
   3151     VkDevice                                    device,
   3152     VkDeviceMemory                              memory,
   3153     VkDeviceSize                                offset,
   3154     VkDeviceSize                                size,
   3155     VkMemoryMapFlags                            flags,
   3156     void**                                      ppData);
   3157 
   3158 VKAPI_ATTR void VKAPI_CALL vkUnmapMemory(
   3159     VkDevice                                    device,
   3160     VkDeviceMemory                              memory);
   3161 
   3162 VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges(
   3163     VkDevice                                    device,
   3164     uint32_t                                    memoryRangeCount,
   3165     const VkMappedMemoryRange*                  pMemoryRanges);
   3166 
   3167 VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(
   3168     VkDevice                                    device,
   3169     uint32_t                                    memoryRangeCount,
   3170     const VkMappedMemoryRange*                  pMemoryRanges);
   3171 
   3172 VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment(
   3173     VkDevice                                    device,
   3174     VkDeviceMemory                              memory,
   3175     VkDeviceSize*                               pCommittedMemoryInBytes);
   3176 
   3177 VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(
   3178     VkDevice                                    device,
   3179     VkBuffer                                    buffer,
   3180     VkDeviceMemory                              memory,
   3181     VkDeviceSize                                memoryOffset);
   3182 
   3183 VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(
   3184     VkDevice                                    device,
   3185     VkImage                                     image,
   3186     VkDeviceMemory                              memory,
   3187     VkDeviceSize                                memoryOffset);
   3188 
   3189 VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements(
   3190     VkDevice                                    device,
   3191     VkBuffer                                    buffer,
   3192     VkMemoryRequirements*                       pMemoryRequirements);
   3193 
   3194 VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements(
   3195     VkDevice                                    device,
   3196     VkImage                                     image,
   3197     VkMemoryRequirements*                       pMemoryRequirements);
   3198 
   3199 VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements(
   3200     VkDevice                                    device,
   3201     VkImage                                     image,
   3202     uint32_t*                                   pSparseMemoryRequirementCount,
   3203     VkSparseImageMemoryRequirements*            pSparseMemoryRequirements);
   3204 
   3205 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties(
   3206     VkPhysicalDevice                            physicalDevice,
   3207     VkFormat                                    format,
   3208     VkImageType                                 type,
   3209     VkSampleCountFlagBits                       samples,
   3210     VkImageUsageFlags                           usage,
   3211     VkImageTiling                               tiling,
   3212     uint32_t*                                   pPropertyCount,
   3213     VkSparseImageFormatProperties*              pProperties);
   3214 
   3215 VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse(
   3216     VkQueue                                     queue,
   3217     uint32_t                                    bindInfoCount,
   3218     const VkBindSparseInfo*                     pBindInfo,
   3219     VkFence                                     fence);
   3220 
   3221 VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(
   3222     VkDevice                                    device,
   3223     const VkFenceCreateInfo*                    pCreateInfo,
   3224     const VkAllocationCallbacks*                pAllocator,
   3225     VkFence*                                    pFence);
   3226 
   3227 VKAPI_ATTR void VKAPI_CALL vkDestroyFence(
   3228     VkDevice                                    device,
   3229     VkFence                                     fence,
   3230     const VkAllocationCallbacks*                pAllocator);
   3231 
   3232 VKAPI_ATTR VkResult VKAPI_CALL vkResetFences(
   3233     VkDevice                                    device,
   3234     uint32_t                                    fenceCount,
   3235     const VkFence*                              pFences);
   3236 
   3237 VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(
   3238     VkDevice                                    device,
   3239     VkFence                                     fence);
   3240 
   3241 VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(
   3242     VkDevice                                    device,
   3243     uint32_t                                    fenceCount,
   3244     const VkFence*                              pFences,
   3245     VkBool32                                    waitAll,
   3246     uint64_t                                    timeout);
   3247 
   3248 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore(
   3249     VkDevice                                    device,
   3250     const VkSemaphoreCreateInfo*                pCreateInfo,
   3251     const VkAllocationCallbacks*                pAllocator,
   3252     VkSemaphore*                                pSemaphore);
   3253 
   3254 VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore(
   3255     VkDevice                                    device,
   3256     VkSemaphore                                 semaphore,
   3257     const VkAllocationCallbacks*                pAllocator);
   3258 
   3259 VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(
   3260     VkDevice                                    device,
   3261     const VkEventCreateInfo*                    pCreateInfo,
   3262     const VkAllocationCallbacks*                pAllocator,
   3263     VkEvent*                                    pEvent);
   3264 
   3265 VKAPI_ATTR void VKAPI_CALL vkDestroyEvent(
   3266     VkDevice                                    device,
   3267     VkEvent                                     event,
   3268     const VkAllocationCallbacks*                pAllocator);
   3269 
   3270 VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus(
   3271     VkDevice                                    device,
   3272     VkEvent                                     event);
   3273 
   3274 VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent(
   3275     VkDevice                                    device,
   3276     VkEvent                                     event);
   3277 
   3278 VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent(
   3279     VkDevice                                    device,
   3280     VkEvent                                     event);
   3281 
   3282 VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool(
   3283     VkDevice                                    device,
   3284     const VkQueryPoolCreateInfo*                pCreateInfo,
   3285     const VkAllocationCallbacks*                pAllocator,
   3286     VkQueryPool*                                pQueryPool);
   3287 
   3288 VKAPI_ATTR void VKAPI_CALL vkDestroyQueryPool(
   3289     VkDevice                                    device,
   3290     VkQueryPool                                 queryPool,
   3291     const VkAllocationCallbacks*                pAllocator);
   3292 
   3293 VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults(
   3294     VkDevice                                    device,
   3295     VkQueryPool                                 queryPool,
   3296     uint32_t                                    firstQuery,
   3297     uint32_t                                    queryCount,
   3298     size_t                                      dataSize,
   3299     void*                                       pData,
   3300     VkDeviceSize                                stride,
   3301     VkQueryResultFlags                          flags);
   3302 
   3303 VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(
   3304     VkDevice                                    device,
   3305     const VkBufferCreateInfo*                   pCreateInfo,
   3306     const VkAllocationCallbacks*                pAllocator,
   3307     VkBuffer*                                   pBuffer);
   3308 
   3309 VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(
   3310     VkDevice                                    device,
   3311     VkBuffer                                    buffer,
   3312     const VkAllocationCallbacks*                pAllocator);
   3313 
   3314 VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(
   3315     VkDevice                                    device,
   3316     const VkBufferViewCreateInfo*               pCreateInfo,
   3317     const VkAllocationCallbacks*                pAllocator,
   3318     VkBufferView*                               pView);
   3319 
   3320 VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView(
   3321     VkDevice                                    device,
   3322     VkBufferView                                bufferView,
   3323     const VkAllocationCallbacks*                pAllocator);
   3324 
   3325 VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(
   3326     VkDevice                                    device,
   3327     const VkImageCreateInfo*                    pCreateInfo,
   3328     const VkAllocationCallbacks*                pAllocator,
   3329     VkImage*                                    pImage);
   3330 
   3331 VKAPI_ATTR void VKAPI_CALL vkDestroyImage(
   3332     VkDevice                                    device,
   3333     VkImage                                     image,
   3334     const VkAllocationCallbacks*                pAllocator);
   3335 
   3336 VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout(
   3337     VkDevice                                    device,
   3338     VkImage                                     image,
   3339     const VkImageSubresource*                   pSubresource,
   3340     VkSubresourceLayout*                        pLayout);
   3341 
   3342 VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView(
   3343     VkDevice                                    device,
   3344     const VkImageViewCreateInfo*                pCreateInfo,
   3345     const VkAllocationCallbacks*                pAllocator,
   3346     VkImageView*                                pView);
   3347 
   3348 VKAPI_ATTR void VKAPI_CALL vkDestroyImageView(
   3349     VkDevice                                    device,
   3350     VkImageView                                 imageView,
   3351     const VkAllocationCallbacks*                pAllocator);
   3352 
   3353 VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderModule(
   3354     VkDevice                                    device,
   3355     const VkShaderModuleCreateInfo*             pCreateInfo,
   3356     const VkAllocationCallbacks*                pAllocator,
   3357     VkShaderModule*                             pShaderModule);
   3358 
   3359 VKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule(
   3360     VkDevice                                    device,
   3361     VkShaderModule                              shaderModule,
   3362     const VkAllocationCallbacks*                pAllocator);
   3363 
   3364 VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(
   3365     VkDevice                                    device,
   3366     const VkPipelineCacheCreateInfo*            pCreateInfo,
   3367     const VkAllocationCallbacks*                pAllocator,
   3368     VkPipelineCache*                            pPipelineCache);
   3369 
   3370 VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache(
   3371     VkDevice                                    device,
   3372     VkPipelineCache                             pipelineCache,
   3373     const VkAllocationCallbacks*                pAllocator);
   3374 
   3375 VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineCacheData(
   3376     VkDevice                                    device,
   3377     VkPipelineCache                             pipelineCache,
   3378     size_t*                                     pDataSize,
   3379     void*                                       pData);
   3380 
   3381 VKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches(
   3382     VkDevice                                    device,
   3383     VkPipelineCache                             dstCache,
   3384     uint32_t                                    srcCacheCount,
   3385     const VkPipelineCache*                      pSrcCaches);
   3386 
   3387 VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(
   3388     VkDevice                                    device,
   3389     VkPipelineCache                             pipelineCache,
   3390     uint32_t                                    createInfoCount,
   3391     const VkGraphicsPipelineCreateInfo*         pCreateInfos,
   3392     const VkAllocationCallbacks*                pAllocator,
   3393     VkPipeline*                                 pPipelines);
   3394 
   3395 VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines(
   3396     VkDevice                                    device,
   3397     VkPipelineCache                             pipelineCache,
   3398     uint32_t                                    createInfoCount,
   3399     const VkComputePipelineCreateInfo*          pCreateInfos,
   3400     const VkAllocationCallbacks*                pAllocator,
   3401     VkPipeline*                                 pPipelines);
   3402 
   3403 VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline(
   3404     VkDevice                                    device,
   3405     VkPipeline                                  pipeline,
   3406     const VkAllocationCallbacks*                pAllocator);
   3407 
   3408 VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout(
   3409     VkDevice                                    device,
   3410     const VkPipelineLayoutCreateInfo*           pCreateInfo,
   3411     const VkAllocationCallbacks*                pAllocator,
   3412     VkPipelineLayout*                           pPipelineLayout);
   3413 
   3414 VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout(
   3415     VkDevice                                    device,
   3416     VkPipelineLayout                            pipelineLayout,
   3417     const VkAllocationCallbacks*                pAllocator);
   3418 
   3419 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler(
   3420     VkDevice                                    device,
   3421     const VkSamplerCreateInfo*                  pCreateInfo,
   3422     const VkAllocationCallbacks*                pAllocator,
   3423     VkSampler*                                  pSampler);
   3424 
   3425 VKAPI_ATTR void VKAPI_CALL vkDestroySampler(
   3426     VkDevice                                    device,
   3427     VkSampler                                   sampler,
   3428     const VkAllocationCallbacks*                pAllocator);
   3429 
   3430 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout(
   3431     VkDevice                                    device,
   3432     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
   3433     const VkAllocationCallbacks*                pAllocator,
   3434     VkDescriptorSetLayout*                      pSetLayout);
   3435 
   3436 VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout(
   3437     VkDevice                                    device,
   3438     VkDescriptorSetLayout                       descriptorSetLayout,
   3439     const VkAllocationCallbacks*                pAllocator);
   3440 
   3441 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool(
   3442     VkDevice                                    device,
   3443     const VkDescriptorPoolCreateInfo*           pCreateInfo,
   3444     const VkAllocationCallbacks*                pAllocator,
   3445     VkDescriptorPool*                           pDescriptorPool);
   3446 
   3447 VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorPool(
   3448     VkDevice                                    device,
   3449     VkDescriptorPool                            descriptorPool,
   3450     const VkAllocationCallbacks*                pAllocator);
   3451 
   3452 VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool(
   3453     VkDevice                                    device,
   3454     VkDescriptorPool                            descriptorPool,
   3455     VkDescriptorPoolResetFlags                  flags);
   3456 
   3457 VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(
   3458     VkDevice                                    device,
   3459     const VkDescriptorSetAllocateInfo*          pAllocateInfo,
   3460     VkDescriptorSet*                            pDescriptorSets);
   3461 
   3462 VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets(
   3463     VkDevice                                    device,
   3464     VkDescriptorPool                            descriptorPool,
   3465     uint32_t                                    descriptorSetCount,
   3466     const VkDescriptorSet*                      pDescriptorSets);
   3467 
   3468 VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets(
   3469     VkDevice                                    device,
   3470     uint32_t                                    descriptorWriteCount,
   3471     const VkWriteDescriptorSet*                 pDescriptorWrites,
   3472     uint32_t                                    descriptorCopyCount,
   3473     const VkCopyDescriptorSet*                  pDescriptorCopies);
   3474 
   3475 VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(
   3476     VkDevice                                    device,
   3477     const VkFramebufferCreateInfo*              pCreateInfo,
   3478     const VkAllocationCallbacks*                pAllocator,
   3479     VkFramebuffer*                              pFramebuffer);
   3480 
   3481 VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer(
   3482     VkDevice                                    device,
   3483     VkFramebuffer                               framebuffer,
   3484     const VkAllocationCallbacks*                pAllocator);
   3485 
   3486 VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(
   3487     VkDevice                                    device,
   3488     const VkRenderPassCreateInfo*               pCreateInfo,
   3489     const VkAllocationCallbacks*                pAllocator,
   3490     VkRenderPass*                               pRenderPass);
   3491 
   3492 VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass(
   3493     VkDevice                                    device,
   3494     VkRenderPass                                renderPass,
   3495     const VkAllocationCallbacks*                pAllocator);
   3496 
   3497 VKAPI_ATTR void VKAPI_CALL vkGetRenderAreaGranularity(
   3498     VkDevice                                    device,
   3499     VkRenderPass                                renderPass,
   3500     VkExtent2D*                                 pGranularity);
   3501 
   3502 VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool(
   3503     VkDevice                                    device,
   3504     const VkCommandPoolCreateInfo*              pCreateInfo,
   3505     const VkAllocationCallbacks*                pAllocator,
   3506     VkCommandPool*                              pCommandPool);
   3507 
   3508 VKAPI_ATTR void VKAPI_CALL vkDestroyCommandPool(
   3509     VkDevice                                    device,
   3510     VkCommandPool                               commandPool,
   3511     const VkAllocationCallbacks*                pAllocator);
   3512 
   3513 VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool(
   3514     VkDevice                                    device,
   3515     VkCommandPool                               commandPool,
   3516     VkCommandPoolResetFlags                     flags);
   3517 
   3518 VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(
   3519     VkDevice                                    device,
   3520     const VkCommandBufferAllocateInfo*          pAllocateInfo,
   3521     VkCommandBuffer*                            pCommandBuffers);
   3522 
   3523 VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers(
   3524     VkDevice                                    device,
   3525     VkCommandPool                               commandPool,
   3526     uint32_t                                    commandBufferCount,
   3527     const VkCommandBuffer*                      pCommandBuffers);
   3528 
   3529 VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(
   3530     VkCommandBuffer                             commandBuffer,
   3531     const VkCommandBufferBeginInfo*             pBeginInfo);
   3532 
   3533 VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer(
   3534     VkCommandBuffer                             commandBuffer);
   3535 
   3536 VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer(
   3537     VkCommandBuffer                             commandBuffer,
   3538     VkCommandBufferResetFlags                   flags);
   3539 
   3540 VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(
   3541     VkCommandBuffer                             commandBuffer,
   3542     VkPipelineBindPoint                         pipelineBindPoint,
   3543     VkPipeline                                  pipeline);
   3544 
   3545 VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(
   3546     VkCommandBuffer                             commandBuffer,
   3547     uint32_t                                    firstViewport,
   3548     uint32_t                                    viewportCount,
   3549     const VkViewport*                           pViewports);
   3550 
   3551 VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor(
   3552     VkCommandBuffer                             commandBuffer,
   3553     uint32_t                                    firstScissor,
   3554     uint32_t                                    scissorCount,
   3555     const VkRect2D*                             pScissors);
   3556 
   3557 VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth(
   3558     VkCommandBuffer                             commandBuffer,
   3559     float                                       lineWidth);
   3560 
   3561 VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias(
   3562     VkCommandBuffer                             commandBuffer,
   3563     float                                       depthBiasConstantFactor,
   3564     float                                       depthBiasClamp,
   3565     float                                       depthBiasSlopeFactor);
   3566 
   3567 VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants(
   3568     VkCommandBuffer                             commandBuffer,
   3569     const float                                 blendConstants[4]);
   3570 
   3571 VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds(
   3572     VkCommandBuffer                             commandBuffer,
   3573     float                                       minDepthBounds,
   3574     float                                       maxDepthBounds);
   3575 
   3576 VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask(
   3577     VkCommandBuffer                             commandBuffer,
   3578     VkStencilFaceFlags                          faceMask,
   3579     uint32_t                                    compareMask);
   3580 
   3581 VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask(
   3582     VkCommandBuffer                             commandBuffer,
   3583     VkStencilFaceFlags                          faceMask,
   3584     uint32_t                                    writeMask);
   3585 
   3586 VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference(
   3587     VkCommandBuffer                             commandBuffer,
   3588     VkStencilFaceFlags                          faceMask,
   3589     uint32_t                                    reference);
   3590 
   3591 VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(
   3592     VkCommandBuffer                             commandBuffer,
   3593     VkPipelineBindPoint                         pipelineBindPoint,
   3594     VkPipelineLayout                            layout,
   3595     uint32_t                                    firstSet,
   3596     uint32_t                                    descriptorSetCount,
   3597     const VkDescriptorSet*                      pDescriptorSets,
   3598     uint32_t                                    dynamicOffsetCount,
   3599     const uint32_t*                             pDynamicOffsets);
   3600 
   3601 VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(
   3602     VkCommandBuffer                             commandBuffer,
   3603     VkBuffer                                    buffer,
   3604     VkDeviceSize                                offset,
   3605     VkIndexType                                 indexType);
   3606 
   3607 VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(
   3608     VkCommandBuffer                             commandBuffer,
   3609     uint32_t                                    firstBinding,
   3610     uint32_t                                    bindingCount,
   3611     const VkBuffer*                             pBuffers,
   3612     const VkDeviceSize*                         pOffsets);
   3613 
   3614 VKAPI_ATTR void VKAPI_CALL vkCmdDraw(
   3615     VkCommandBuffer                             commandBuffer,
   3616     uint32_t                                    vertexCount,
   3617     uint32_t                                    instanceCount,
   3618     uint32_t                                    firstVertex,
   3619     uint32_t                                    firstInstance);
   3620 
   3621 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed(
   3622     VkCommandBuffer                             commandBuffer,
   3623     uint32_t                                    indexCount,
   3624     uint32_t                                    instanceCount,
   3625     uint32_t                                    firstIndex,
   3626     int32_t                                     vertexOffset,
   3627     uint32_t                                    firstInstance);
   3628 
   3629 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(
   3630     VkCommandBuffer                             commandBuffer,
   3631     VkBuffer                                    buffer,
   3632     VkDeviceSize                                offset,
   3633     uint32_t                                    drawCount,
   3634     uint32_t                                    stride);
   3635 
   3636 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(
   3637     VkCommandBuffer                             commandBuffer,
   3638     VkBuffer                                    buffer,
   3639     VkDeviceSize                                offset,
   3640     uint32_t                                    drawCount,
   3641     uint32_t                                    stride);
   3642 
   3643 VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(
   3644     VkCommandBuffer                             commandBuffer,
   3645     uint32_t                                    groupCountX,
   3646     uint32_t                                    groupCountY,
   3647     uint32_t                                    groupCountZ);
   3648 
   3649 VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(
   3650     VkCommandBuffer                             commandBuffer,
   3651     VkBuffer                                    buffer,
   3652     VkDeviceSize                                offset);
   3653 
   3654 VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(
   3655     VkCommandBuffer                             commandBuffer,
   3656     VkBuffer                                    srcBuffer,
   3657     VkBuffer                                    dstBuffer,
   3658     uint32_t                                    regionCount,
   3659     const VkBufferCopy*                         pRegions);
   3660 
   3661 VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(
   3662     VkCommandBuffer                             commandBuffer,
   3663     VkImage                                     srcImage,
   3664     VkImageLayout                               srcImageLayout,
   3665     VkImage                                     dstImage,
   3666     VkImageLayout                               dstImageLayout,
   3667     uint32_t                                    regionCount,
   3668     const VkImageCopy*                          pRegions);
   3669 
   3670 VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(
   3671     VkCommandBuffer                             commandBuffer,
   3672     VkImage                                     srcImage,
   3673     VkImageLayout                               srcImageLayout,
   3674     VkImage                                     dstImage,
   3675     VkImageLayout                               dstImageLayout,
   3676     uint32_t                                    regionCount,
   3677     const VkImageBlit*                          pRegions,
   3678     VkFilter                                    filter);
   3679 
   3680 VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(
   3681     VkCommandBuffer                             commandBuffer,
   3682     VkBuffer                                    srcBuffer,
   3683     VkImage                                     dstImage,
   3684     VkImageLayout                               dstImageLayout,
   3685     uint32_t                                    regionCount,
   3686     const VkBufferImageCopy*                    pRegions);
   3687 
   3688 VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(
   3689     VkCommandBuffer                             commandBuffer,
   3690     VkImage                                     srcImage,
   3691     VkImageLayout                               srcImageLayout,
   3692     VkBuffer                                    dstBuffer,
   3693     uint32_t                                    regionCount,
   3694     const VkBufferImageCopy*                    pRegions);
   3695 
   3696 VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(
   3697     VkCommandBuffer                             commandBuffer,
   3698     VkBuffer                                    dstBuffer,
   3699     VkDeviceSize                                dstOffset,
   3700     VkDeviceSize                                dataSize,
   3701     const void*                                 pData);
   3702 
   3703 VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(
   3704     VkCommandBuffer                             commandBuffer,
   3705     VkBuffer                                    dstBuffer,
   3706     VkDeviceSize                                dstOffset,
   3707     VkDeviceSize                                size,
   3708     uint32_t                                    data);
   3709 
   3710 VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(
   3711     VkCommandBuffer                             commandBuffer,
   3712     VkImage                                     image,
   3713     VkImageLayout                               imageLayout,
   3714     const VkClearColorValue*                    pColor,
   3715     uint32_t                                    rangeCount,
   3716     const VkImageSubresourceRange*              pRanges);
   3717 
   3718 VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(
   3719     VkCommandBuffer                             commandBuffer,
   3720     VkImage                                     image,
   3721     VkImageLayout                               imageLayout,
   3722     const VkClearDepthStencilValue*             pDepthStencil,
   3723     uint32_t                                    rangeCount,
   3724     const VkImageSubresourceRange*              pRanges);
   3725 
   3726 VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments(
   3727     VkCommandBuffer                             commandBuffer,
   3728     uint32_t                                    attachmentCount,
   3729     const VkClearAttachment*                    pAttachments,
   3730     uint32_t                                    rectCount,
   3731     const VkClearRect*                          pRects);
   3732 
   3733 VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(
   3734     VkCommandBuffer                             commandBuffer,
   3735     VkImage                                     srcImage,
   3736     VkImageLayout                               srcImageLayout,
   3737     VkImage                                     dstImage,
   3738     VkImageLayout                               dstImageLayout,
   3739     uint32_t                                    regionCount,
   3740     const VkImageResolve*                       pRegions);
   3741 
   3742 VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(
   3743     VkCommandBuffer                             commandBuffer,
   3744     VkEvent                                     event,
   3745     VkPipelineStageFlags                        stageMask);
   3746 
   3747 VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(
   3748     VkCommandBuffer                             commandBuffer,
   3749     VkEvent                                     event,
   3750     VkPipelineStageFlags                        stageMask);
   3751 
   3752 VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents(
   3753     VkCommandBuffer                             commandBuffer,
   3754     uint32_t                                    eventCount,
   3755     const VkEvent*                              pEvents,
   3756     VkPipelineStageFlags                        srcStageMask,
   3757     VkPipelineStageFlags                        dstStageMask,
   3758     uint32_t                                    memoryBarrierCount,
   3759     const VkMemoryBarrier*                      pMemoryBarriers,
   3760     uint32_t                                    bufferMemoryBarrierCount,
   3761     const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
   3762     uint32_t                                    imageMemoryBarrierCount,
   3763     const VkImageMemoryBarrier*                 pImageMemoryBarriers);
   3764 
   3765 VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier(
   3766     VkCommandBuffer                             commandBuffer,
   3767     VkPipelineStageFlags                        srcStageMask,
   3768     VkPipelineStageFlags                        dstStageMask,
   3769     VkDependencyFlags                           dependencyFlags,
   3770     uint32_t                                    memoryBarrierCount,
   3771     const VkMemoryBarrier*                      pMemoryBarriers,
   3772     uint32_t                                    bufferMemoryBarrierCount,
   3773     const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
   3774     uint32_t                                    imageMemoryBarrierCount,
   3775     const VkImageMemoryBarrier*                 pImageMemoryBarriers);
   3776 
   3777 VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(
   3778     VkCommandBuffer                             commandBuffer,
   3779     VkQueryPool                                 queryPool,
   3780     uint32_t                                    query,
   3781     VkQueryControlFlags                         flags);
   3782 
   3783 VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(
   3784     VkCommandBuffer                             commandBuffer,
   3785     VkQueryPool                                 queryPool,
   3786     uint32_t                                    query);
   3787 
   3788 VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(
   3789     VkCommandBuffer                             commandBuffer,
   3790     VkQueryPool                                 queryPool,
   3791     uint32_t                                    firstQuery,
   3792     uint32_t                                    queryCount);
   3793 
   3794 VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(
   3795     VkCommandBuffer                             commandBuffer,
   3796     VkPipelineStageFlagBits                     pipelineStage,
   3797     VkQueryPool                                 queryPool,
   3798     uint32_t                                    query);
   3799 
   3800 VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(
   3801     VkCommandBuffer                             commandBuffer,
   3802     VkQueryPool                                 queryPool,
   3803     uint32_t                                    firstQuery,
   3804     uint32_t                                    queryCount,
   3805     VkBuffer                                    dstBuffer,
   3806     VkDeviceSize                                dstOffset,
   3807     VkDeviceSize                                stride,
   3808     VkQueryResultFlags                          flags);
   3809 
   3810 VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(
   3811     VkCommandBuffer                             commandBuffer,
   3812     VkPipelineLayout                            layout,
   3813     VkShaderStageFlags                          stageFlags,
   3814     uint32_t                                    offset,
   3815     uint32_t                                    size,
   3816     const void*                                 pValues);
   3817 
   3818 VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(
   3819     VkCommandBuffer                             commandBuffer,
   3820     const VkRenderPassBeginInfo*                pRenderPassBegin,
   3821     VkSubpassContents                           contents);
   3822 
   3823 VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass(
   3824     VkCommandBuffer                             commandBuffer,
   3825     VkSubpassContents                           contents);
   3826 
   3827 VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass(
   3828     VkCommandBuffer                             commandBuffer);
   3829 
   3830 VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(
   3831     VkCommandBuffer                             commandBuffer,
   3832     uint32_t                                    commandBufferCount,
   3833     const VkCommandBuffer*                      pCommandBuffers);
   3834 #endif
   3835 
   3836 #define VK_VERSION_1_1 1
   3837 // Vulkan 1.1 version number
   3838 #define VK_API_VERSION_1_1 VK_MAKE_VERSION(1, 1, 0)// Patch version should always be set to 0
   3839 
   3840 
   3841 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion)
   3842 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplate)
   3843 
   3844 #define VK_MAX_DEVICE_GROUP_SIZE          32
   3845 #define VK_LUID_SIZE                      8
   3846 #define VK_QUEUE_FAMILY_EXTERNAL          (~0U-1)
   3847 
   3848 
   3849 typedef enum VkPointClippingBehavior {
   3850     VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0,
   3851     VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1,
   3852     VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES,
   3853     VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY,
   3854     VK_POINT_CLIPPING_BEHAVIOR_BEGIN_RANGE = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES,
   3855     VK_POINT_CLIPPING_BEHAVIOR_END_RANGE = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY,
   3856     VK_POINT_CLIPPING_BEHAVIOR_RANGE_SIZE = (VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY - VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES + 1),
   3857     VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF
   3858 } VkPointClippingBehavior;
   3859 
   3860 typedef enum VkTessellationDomainOrigin {
   3861     VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0,
   3862     VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1,
   3863     VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT,
   3864     VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT,
   3865     VK_TESSELLATION_DOMAIN_ORIGIN_BEGIN_RANGE = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT,
   3866     VK_TESSELLATION_DOMAIN_ORIGIN_END_RANGE = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT,
   3867     VK_TESSELLATION_DOMAIN_ORIGIN_RANGE_SIZE = (VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT - VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT + 1),
   3868     VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 0x7FFFFFFF
   3869 } VkTessellationDomainOrigin;
   3870 
   3871 typedef enum VkSamplerYcbcrModelConversion {
   3872     VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0,
   3873     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1,
   3874     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2,
   3875     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3,
   3876     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4,
   3877     VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY,
   3878     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY,
   3879     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709,
   3880     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601,
   3881     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020,
   3882     VK_SAMPLER_YCBCR_MODEL_CONVERSION_BEGIN_RANGE = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY,
   3883     VK_SAMPLER_YCBCR_MODEL_CONVERSION_END_RANGE = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020,
   3884     VK_SAMPLER_YCBCR_MODEL_CONVERSION_RANGE_SIZE = (VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 - VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY + 1),
   3885     VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 0x7FFFFFFF
   3886 } VkSamplerYcbcrModelConversion;
   3887 
   3888 typedef enum VkSamplerYcbcrRange {
   3889     VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0,
   3890     VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1,
   3891     VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_FULL,
   3892     VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW,
   3893     VK_SAMPLER_YCBCR_RANGE_BEGIN_RANGE = VK_SAMPLER_YCBCR_RANGE_ITU_FULL,
   3894     VK_SAMPLER_YCBCR_RANGE_END_RANGE = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW,
   3895     VK_SAMPLER_YCBCR_RANGE_RANGE_SIZE = (VK_SAMPLER_YCBCR_RANGE_ITU_NARROW - VK_SAMPLER_YCBCR_RANGE_ITU_FULL + 1),
   3896     VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 0x7FFFFFFF
   3897 } VkSamplerYcbcrRange;
   3898 
   3899 typedef enum VkChromaLocation {
   3900     VK_CHROMA_LOCATION_COSITED_EVEN = 0,
   3901     VK_CHROMA_LOCATION_MIDPOINT = 1,
   3902     VK_CHROMA_LOCATION_COSITED_EVEN_KHR = VK_CHROMA_LOCATION_COSITED_EVEN,
   3903     VK_CHROMA_LOCATION_MIDPOINT_KHR = VK_CHROMA_LOCATION_MIDPOINT,
   3904     VK_CHROMA_LOCATION_BEGIN_RANGE = VK_CHROMA_LOCATION_COSITED_EVEN,
   3905     VK_CHROMA_LOCATION_END_RANGE = VK_CHROMA_LOCATION_MIDPOINT,
   3906     VK_CHROMA_LOCATION_RANGE_SIZE = (VK_CHROMA_LOCATION_MIDPOINT - VK_CHROMA_LOCATION_COSITED_EVEN + 1),
   3907     VK_CHROMA_LOCATION_MAX_ENUM = 0x7FFFFFFF
   3908 } VkChromaLocation;
   3909 
   3910 typedef enum VkDescriptorUpdateTemplateType {
   3911     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0,
   3912     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1,
   3913     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET,
   3914     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_BEGIN_RANGE = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET,
   3915     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_END_RANGE = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET,
   3916     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_RANGE_SIZE = (VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET + 1),
   3917     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 0x7FFFFFFF
   3918 } VkDescriptorUpdateTemplateType;
   3919 
   3920 
   3921 typedef enum VkSubgroupFeatureFlagBits {
   3922     VK_SUBGROUP_FEATURE_BASIC_BIT = 0x00000001,
   3923     VK_SUBGROUP_FEATURE_VOTE_BIT = 0x00000002,
   3924     VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 0x00000004,
   3925     VK_SUBGROUP_FEATURE_BALLOT_BIT = 0x00000008,
   3926     VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 0x00000010,
   3927     VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 0x00000020,
   3928     VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 0x00000040,
   3929     VK_SUBGROUP_FEATURE_QUAD_BIT = 0x00000080,
   3930     VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 0x00000100,
   3931     VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   3932 } VkSubgroupFeatureFlagBits;
   3933 typedef VkFlags VkSubgroupFeatureFlags;
   3934 
   3935 typedef enum VkPeerMemoryFeatureFlagBits {
   3936     VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 0x00000001,
   3937     VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 0x00000002,
   3938     VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 0x00000004,
   3939     VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 0x00000008,
   3940     VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,
   3941     VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,
   3942     VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT,
   3943     VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT,
   3944     VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   3945 } VkPeerMemoryFeatureFlagBits;
   3946 typedef VkFlags VkPeerMemoryFeatureFlags;
   3947 
   3948 typedef enum VkMemoryAllocateFlagBits {
   3949     VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001,
   3950     VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,
   3951     VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   3952 } VkMemoryAllocateFlagBits;
   3953 typedef VkFlags VkMemoryAllocateFlags;
   3954 typedef VkFlags VkCommandPoolTrimFlags;
   3955 typedef VkFlags VkDescriptorUpdateTemplateCreateFlags;
   3956 
   3957 typedef enum VkExternalMemoryHandleTypeFlagBits {
   3958     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
   3959     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
   3960     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
   3961     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 0x00000008,
   3962     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 0x00000010,
   3963     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 0x00000020,
   3964     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 0x00000040,
   3965     VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0x00000200,
   3966     VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 0x00000400,
   3967     VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080,
   3968     VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100,
   3969     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,
   3970     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
   3971     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
   3972     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,
   3973     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,
   3974     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,
   3975     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT,
   3976     VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   3977 } VkExternalMemoryHandleTypeFlagBits;
   3978 typedef VkFlags VkExternalMemoryHandleTypeFlags;
   3979 
   3980 typedef enum VkExternalMemoryFeatureFlagBits {
   3981     VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 0x00000001,
   3982     VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 0x00000002,
   3983     VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 0x00000004,
   3984     VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,
   3985     VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,
   3986     VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT,
   3987     VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   3988 } VkExternalMemoryFeatureFlagBits;
   3989 typedef VkFlags VkExternalMemoryFeatureFlags;
   3990 
   3991 typedef enum VkExternalFenceHandleTypeFlagBits {
   3992     VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
   3993     VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
   3994     VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
   3995     VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000008,
   3996     VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,
   3997     VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
   3998     VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
   3999     VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT,
   4000     VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   4001 } VkExternalFenceHandleTypeFlagBits;
   4002 typedef VkFlags VkExternalFenceHandleTypeFlags;
   4003 
   4004 typedef enum VkExternalFenceFeatureFlagBits {
   4005     VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 0x00000001,
   4006     VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 0x00000002,
   4007     VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,
   4008     VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT,
   4009     VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   4010 } VkExternalFenceFeatureFlagBits;
   4011 typedef VkFlags VkExternalFenceFeatureFlags;
   4012 
   4013 typedef enum VkFenceImportFlagBits {
   4014     VK_FENCE_IMPORT_TEMPORARY_BIT = 0x00000001,
   4015     VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = VK_FENCE_IMPORT_TEMPORARY_BIT,
   4016     VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   4017 } VkFenceImportFlagBits;
   4018 typedef VkFlags VkFenceImportFlags;
   4019 
   4020 typedef enum VkSemaphoreImportFlagBits {
   4021     VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 0x00000001,
   4022     VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT,
   4023     VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   4024 } VkSemaphoreImportFlagBits;
   4025 typedef VkFlags VkSemaphoreImportFlags;
   4026 
   4027 typedef enum VkExternalSemaphoreHandleTypeFlagBits {
   4028     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
   4029     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
   4030     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
   4031     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 0x00000008,
   4032     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000010,
   4033     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,
   4034     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
   4035     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
   4036     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
   4037     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT,
   4038     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   4039 } VkExternalSemaphoreHandleTypeFlagBits;
   4040 typedef VkFlags VkExternalSemaphoreHandleTypeFlags;
   4041 
   4042 typedef enum VkExternalSemaphoreFeatureFlagBits {
   4043     VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 0x00000001,
   4044     VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 0x00000002,
   4045     VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,
   4046     VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT,
   4047     VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   4048 } VkExternalSemaphoreFeatureFlagBits;
   4049 typedef VkFlags VkExternalSemaphoreFeatureFlags;
   4050 
   4051 typedef struct VkPhysicalDeviceSubgroupProperties {
   4052     VkStructureType           sType;
   4053     void*                     pNext;
   4054     uint32_t                  subgroupSize;
   4055     VkShaderStageFlags        supportedStages;
   4056     VkSubgroupFeatureFlags    supportedOperations;
   4057     VkBool32                  quadOperationsInAllStages;
   4058 } VkPhysicalDeviceSubgroupProperties;
   4059 
   4060 typedef struct VkBindBufferMemoryInfo {
   4061     VkStructureType    sType;
   4062     const void*        pNext;
   4063     VkBuffer           buffer;
   4064     VkDeviceMemory     memory;
   4065     VkDeviceSize       memoryOffset;
   4066 } VkBindBufferMemoryInfo;
   4067 
   4068 typedef struct VkBindImageMemoryInfo {
   4069     VkStructureType    sType;
   4070     const void*        pNext;
   4071     VkImage            image;
   4072     VkDeviceMemory     memory;
   4073     VkDeviceSize       memoryOffset;
   4074 } VkBindImageMemoryInfo;
   4075 
   4076 typedef struct VkPhysicalDevice16BitStorageFeatures {
   4077     VkStructureType    sType;
   4078     void*              pNext;
   4079     VkBool32           storageBuffer16BitAccess;
   4080     VkBool32           uniformAndStorageBuffer16BitAccess;
   4081     VkBool32           storagePushConstant16;
   4082     VkBool32           storageInputOutput16;
   4083 } VkPhysicalDevice16BitStorageFeatures;
   4084 
   4085 typedef struct VkMemoryDedicatedRequirements {
   4086     VkStructureType    sType;
   4087     void*              pNext;
   4088     VkBool32           prefersDedicatedAllocation;
   4089     VkBool32           requiresDedicatedAllocation;
   4090 } VkMemoryDedicatedRequirements;
   4091 
   4092 typedef struct VkMemoryDedicatedAllocateInfo {
   4093     VkStructureType    sType;
   4094     const void*        pNext;
   4095     VkImage            image;
   4096     VkBuffer           buffer;
   4097 } VkMemoryDedicatedAllocateInfo;
   4098 
   4099 typedef struct VkMemoryAllocateFlagsInfo {
   4100     VkStructureType          sType;
   4101     const void*              pNext;
   4102     VkMemoryAllocateFlags    flags;
   4103     uint32_t                 deviceMask;
   4104 } VkMemoryAllocateFlagsInfo;
   4105 
   4106 typedef struct VkDeviceGroupRenderPassBeginInfo {
   4107     VkStructureType    sType;
   4108     const void*        pNext;
   4109     uint32_t           deviceMask;
   4110     uint32_t           deviceRenderAreaCount;
   4111     const VkRect2D*    pDeviceRenderAreas;
   4112 } VkDeviceGroupRenderPassBeginInfo;
   4113 
   4114 typedef struct VkDeviceGroupCommandBufferBeginInfo {
   4115     VkStructureType    sType;
   4116     const void*        pNext;
   4117     uint32_t           deviceMask;
   4118 } VkDeviceGroupCommandBufferBeginInfo;
   4119 
   4120 typedef struct VkDeviceGroupSubmitInfo {
   4121     VkStructureType    sType;
   4122     const void*        pNext;
   4123     uint32_t           waitSemaphoreCount;
   4124     const uint32_t*    pWaitSemaphoreDeviceIndices;
   4125     uint32_t           commandBufferCount;
   4126     const uint32_t*    pCommandBufferDeviceMasks;
   4127     uint32_t           signalSemaphoreCount;
   4128     const uint32_t*    pSignalSemaphoreDeviceIndices;
   4129 } VkDeviceGroupSubmitInfo;
   4130 
   4131 typedef struct VkDeviceGroupBindSparseInfo {
   4132     VkStructureType    sType;
   4133     const void*        pNext;
   4134     uint32_t           resourceDeviceIndex;
   4135     uint32_t           memoryDeviceIndex;
   4136 } VkDeviceGroupBindSparseInfo;
   4137 
   4138 typedef struct VkBindBufferMemoryDeviceGroupInfo {
   4139     VkStructureType    sType;
   4140     const void*        pNext;
   4141     uint32_t           deviceIndexCount;
   4142     const uint32_t*    pDeviceIndices;
   4143 } VkBindBufferMemoryDeviceGroupInfo;
   4144 
   4145 typedef struct VkBindImageMemoryDeviceGroupInfo {
   4146     VkStructureType    sType;
   4147     const void*        pNext;
   4148     uint32_t           deviceIndexCount;
   4149     const uint32_t*    pDeviceIndices;
   4150     uint32_t           splitInstanceBindRegionCount;
   4151     const VkRect2D*    pSplitInstanceBindRegions;
   4152 } VkBindImageMemoryDeviceGroupInfo;
   4153 
   4154 typedef struct VkPhysicalDeviceGroupProperties {
   4155     VkStructureType     sType;
   4156     void*               pNext;
   4157     uint32_t            physicalDeviceCount;
   4158     VkPhysicalDevice    physicalDevices[VK_MAX_DEVICE_GROUP_SIZE];
   4159     VkBool32            subsetAllocation;
   4160 } VkPhysicalDeviceGroupProperties;
   4161 
   4162 typedef struct VkDeviceGroupDeviceCreateInfo {
   4163     VkStructureType            sType;
   4164     const void*                pNext;
   4165     uint32_t                   physicalDeviceCount;
   4166     const VkPhysicalDevice*    pPhysicalDevices;
   4167 } VkDeviceGroupDeviceCreateInfo;
   4168 
   4169 typedef struct VkBufferMemoryRequirementsInfo2 {
   4170     VkStructureType    sType;
   4171     const void*        pNext;
   4172     VkBuffer           buffer;
   4173 } VkBufferMemoryRequirementsInfo2;
   4174 
   4175 typedef struct VkImageMemoryRequirementsInfo2 {
   4176     VkStructureType    sType;
   4177     const void*        pNext;
   4178     VkImage            image;
   4179 } VkImageMemoryRequirementsInfo2;
   4180 
   4181 typedef struct VkImageSparseMemoryRequirementsInfo2 {
   4182     VkStructureType    sType;
   4183     const void*        pNext;
   4184     VkImage            image;
   4185 } VkImageSparseMemoryRequirementsInfo2;
   4186 
   4187 typedef struct VkMemoryRequirements2 {
   4188     VkStructureType         sType;
   4189     void*                   pNext;
   4190     VkMemoryRequirements    memoryRequirements;
   4191 } VkMemoryRequirements2;
   4192 
   4193 typedef VkMemoryRequirements2 VkMemoryRequirements2KHR;
   4194 
   4195 typedef struct VkSparseImageMemoryRequirements2 {
   4196     VkStructureType                    sType;
   4197     void*                              pNext;
   4198     VkSparseImageMemoryRequirements    memoryRequirements;
   4199 } VkSparseImageMemoryRequirements2;
   4200 
   4201 typedef struct VkPhysicalDeviceFeatures2 {
   4202     VkStructureType             sType;
   4203     void*                       pNext;
   4204     VkPhysicalDeviceFeatures    features;
   4205 } VkPhysicalDeviceFeatures2;
   4206 
   4207 typedef struct VkPhysicalDeviceProperties2 {
   4208     VkStructureType               sType;
   4209     void*                         pNext;
   4210     VkPhysicalDeviceProperties    properties;
   4211 } VkPhysicalDeviceProperties2;
   4212 
   4213 typedef struct VkFormatProperties2 {
   4214     VkStructureType       sType;
   4215     void*                 pNext;
   4216     VkFormatProperties    formatProperties;
   4217 } VkFormatProperties2;
   4218 
   4219 typedef struct VkImageFormatProperties2 {
   4220     VkStructureType            sType;
   4221     void*                      pNext;
   4222     VkImageFormatProperties    imageFormatProperties;
   4223 } VkImageFormatProperties2;
   4224 
   4225 typedef struct VkPhysicalDeviceImageFormatInfo2 {
   4226     VkStructureType       sType;
   4227     const void*           pNext;
   4228     VkFormat              format;
   4229     VkImageType           type;
   4230     VkImageTiling         tiling;
   4231     VkImageUsageFlags     usage;
   4232     VkImageCreateFlags    flags;
   4233 } VkPhysicalDeviceImageFormatInfo2;
   4234 
   4235 typedef struct VkQueueFamilyProperties2 {
   4236     VkStructureType            sType;
   4237     void*                      pNext;
   4238     VkQueueFamilyProperties    queueFamilyProperties;
   4239 } VkQueueFamilyProperties2;
   4240 
   4241 typedef struct VkPhysicalDeviceMemoryProperties2 {
   4242     VkStructureType                     sType;
   4243     void*                               pNext;
   4244     VkPhysicalDeviceMemoryProperties    memoryProperties;
   4245 } VkPhysicalDeviceMemoryProperties2;
   4246 
   4247 typedef struct VkSparseImageFormatProperties2 {
   4248     VkStructureType                  sType;
   4249     void*                            pNext;
   4250     VkSparseImageFormatProperties    properties;
   4251 } VkSparseImageFormatProperties2;
   4252 
   4253 typedef struct VkPhysicalDeviceSparseImageFormatInfo2 {
   4254     VkStructureType          sType;
   4255     const void*              pNext;
   4256     VkFormat                 format;
   4257     VkImageType              type;
   4258     VkSampleCountFlagBits    samples;
   4259     VkImageUsageFlags        usage;
   4260     VkImageTiling            tiling;
   4261 } VkPhysicalDeviceSparseImageFormatInfo2;
   4262 
   4263 typedef struct VkPhysicalDevicePointClippingProperties {
   4264     VkStructureType            sType;
   4265     void*                      pNext;
   4266     VkPointClippingBehavior    pointClippingBehavior;
   4267 } VkPhysicalDevicePointClippingProperties;
   4268 
   4269 typedef struct VkInputAttachmentAspectReference {
   4270     uint32_t              subpass;
   4271     uint32_t              inputAttachmentIndex;
   4272     VkImageAspectFlags    aspectMask;
   4273 } VkInputAttachmentAspectReference;
   4274 
   4275 typedef struct VkRenderPassInputAttachmentAspectCreateInfo {
   4276     VkStructureType                            sType;
   4277     const void*                                pNext;
   4278     uint32_t                                   aspectReferenceCount;
   4279     const VkInputAttachmentAspectReference*    pAspectReferences;
   4280 } VkRenderPassInputAttachmentAspectCreateInfo;
   4281 
   4282 typedef struct VkImageViewUsageCreateInfo {
   4283     VkStructureType      sType;
   4284     const void*          pNext;
   4285     VkImageUsageFlags    usage;
   4286 } VkImageViewUsageCreateInfo;
   4287 
   4288 typedef struct VkPipelineTessellationDomainOriginStateCreateInfo {
   4289     VkStructureType               sType;
   4290     const void*                   pNext;
   4291     VkTessellationDomainOrigin    domainOrigin;
   4292 } VkPipelineTessellationDomainOriginStateCreateInfo;
   4293 
   4294 typedef struct VkRenderPassMultiviewCreateInfo {
   4295     VkStructureType    sType;
   4296     const void*        pNext;
   4297     uint32_t           subpassCount;
   4298     const uint32_t*    pViewMasks;
   4299     uint32_t           dependencyCount;
   4300     const int32_t*     pViewOffsets;
   4301     uint32_t           correlationMaskCount;
   4302     const uint32_t*    pCorrelationMasks;
   4303 } VkRenderPassMultiviewCreateInfo;
   4304 
   4305 typedef struct VkPhysicalDeviceMultiviewFeatures {
   4306     VkStructureType    sType;
   4307     void*              pNext;
   4308     VkBool32           multiview;
   4309     VkBool32           multiviewGeometryShader;
   4310     VkBool32           multiviewTessellationShader;
   4311 } VkPhysicalDeviceMultiviewFeatures;
   4312 
   4313 typedef struct VkPhysicalDeviceMultiviewProperties {
   4314     VkStructureType    sType;
   4315     void*              pNext;
   4316     uint32_t           maxMultiviewViewCount;
   4317     uint32_t           maxMultiviewInstanceIndex;
   4318 } VkPhysicalDeviceMultiviewProperties;
   4319 
   4320 typedef struct VkPhysicalDeviceVariablePointerFeatures {
   4321     VkStructureType    sType;
   4322     void*              pNext;
   4323     VkBool32           variablePointersStorageBuffer;
   4324     VkBool32           variablePointers;
   4325 } VkPhysicalDeviceVariablePointerFeatures;
   4326 
   4327 typedef struct VkPhysicalDeviceProtectedMemoryFeatures {
   4328     VkStructureType    sType;
   4329     void*              pNext;
   4330     VkBool32           protectedMemory;
   4331 } VkPhysicalDeviceProtectedMemoryFeatures;
   4332 
   4333 typedef struct VkPhysicalDeviceProtectedMemoryProperties {
   4334     VkStructureType    sType;
   4335     void*              pNext;
   4336     VkBool32           protectedNoFault;
   4337 } VkPhysicalDeviceProtectedMemoryProperties;
   4338 
   4339 typedef struct VkDeviceQueueInfo2 {
   4340     VkStructureType             sType;
   4341     const void*                 pNext;
   4342     VkDeviceQueueCreateFlags    flags;
   4343     uint32_t                    queueFamilyIndex;
   4344     uint32_t                    queueIndex;
   4345 } VkDeviceQueueInfo2;
   4346 
   4347 typedef struct VkProtectedSubmitInfo {
   4348     VkStructureType    sType;
   4349     const void*        pNext;
   4350     VkBool32           protectedSubmit;
   4351 } VkProtectedSubmitInfo;
   4352 
   4353 typedef struct VkSamplerYcbcrConversionCreateInfo {
   4354     VkStructureType                  sType;
   4355     const void*                      pNext;
   4356     VkFormat                         format;
   4357     VkSamplerYcbcrModelConversion    ycbcrModel;
   4358     VkSamplerYcbcrRange              ycbcrRange;
   4359     VkComponentMapping               components;
   4360     VkChromaLocation                 xChromaOffset;
   4361     VkChromaLocation                 yChromaOffset;
   4362     VkFilter                         chromaFilter;
   4363     VkBool32                         forceExplicitReconstruction;
   4364 } VkSamplerYcbcrConversionCreateInfo;
   4365 
   4366 typedef struct VkSamplerYcbcrConversionInfo {
   4367     VkStructureType             sType;
   4368     const void*                 pNext;
   4369     VkSamplerYcbcrConversion    conversion;
   4370 } VkSamplerYcbcrConversionInfo;
   4371 
   4372 typedef struct VkBindImagePlaneMemoryInfo {
   4373     VkStructureType          sType;
   4374     const void*              pNext;
   4375     VkImageAspectFlagBits    planeAspect;
   4376 } VkBindImagePlaneMemoryInfo;
   4377 
   4378 typedef struct VkImagePlaneMemoryRequirementsInfo {
   4379     VkStructureType          sType;
   4380     const void*              pNext;
   4381     VkImageAspectFlagBits    planeAspect;
   4382 } VkImagePlaneMemoryRequirementsInfo;
   4383 
   4384 typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures {
   4385     VkStructureType    sType;
   4386     void*              pNext;
   4387     VkBool32           samplerYcbcrConversion;
   4388 } VkPhysicalDeviceSamplerYcbcrConversionFeatures;
   4389 
   4390 typedef struct VkSamplerYcbcrConversionImageFormatProperties {
   4391     VkStructureType    sType;
   4392     void*              pNext;
   4393     uint32_t           combinedImageSamplerDescriptorCount;
   4394 } VkSamplerYcbcrConversionImageFormatProperties;
   4395 
   4396 typedef struct VkDescriptorUpdateTemplateEntry {
   4397     uint32_t            dstBinding;
   4398     uint32_t            dstArrayElement;
   4399     uint32_t            descriptorCount;
   4400     VkDescriptorType    descriptorType;
   4401     size_t              offset;
   4402     size_t              stride;
   4403 } VkDescriptorUpdateTemplateEntry;
   4404 
   4405 typedef struct VkDescriptorUpdateTemplateCreateInfo {
   4406     VkStructureType                           sType;
   4407     const void*                               pNext;
   4408     VkDescriptorUpdateTemplateCreateFlags     flags;
   4409     uint32_t                                  descriptorUpdateEntryCount;
   4410     const VkDescriptorUpdateTemplateEntry*    pDescriptorUpdateEntries;
   4411     VkDescriptorUpdateTemplateType            templateType;
   4412     VkDescriptorSetLayout                     descriptorSetLayout;
   4413     VkPipelineBindPoint                       pipelineBindPoint;
   4414     VkPipelineLayout                          pipelineLayout;
   4415     uint32_t                                  set;
   4416 } VkDescriptorUpdateTemplateCreateInfo;
   4417 
   4418 typedef struct VkExternalMemoryProperties {
   4419     VkExternalMemoryFeatureFlags       externalMemoryFeatures;
   4420     VkExternalMemoryHandleTypeFlags    exportFromImportedHandleTypes;
   4421     VkExternalMemoryHandleTypeFlags    compatibleHandleTypes;
   4422 } VkExternalMemoryProperties;
   4423 
   4424 typedef struct VkPhysicalDeviceExternalImageFormatInfo {
   4425     VkStructureType                       sType;
   4426     const void*                           pNext;
   4427     VkExternalMemoryHandleTypeFlagBits    handleType;
   4428 } VkPhysicalDeviceExternalImageFormatInfo;
   4429 
   4430 typedef struct VkExternalImageFormatProperties {
   4431     VkStructureType               sType;
   4432     void*                         pNext;
   4433     VkExternalMemoryProperties    externalMemoryProperties;
   4434 } VkExternalImageFormatProperties;
   4435 
   4436 typedef struct VkPhysicalDeviceExternalBufferInfo {
   4437     VkStructureType                       sType;
   4438     const void*                           pNext;
   4439     VkBufferCreateFlags                   flags;
   4440     VkBufferUsageFlags                    usage;
   4441     VkExternalMemoryHandleTypeFlagBits    handleType;
   4442 } VkPhysicalDeviceExternalBufferInfo;
   4443 
   4444 typedef struct VkExternalBufferProperties {
   4445     VkStructureType               sType;
   4446     void*                         pNext;
   4447     VkExternalMemoryProperties    externalMemoryProperties;
   4448 } VkExternalBufferProperties;
   4449 
   4450 typedef struct VkPhysicalDeviceIDProperties {
   4451     VkStructureType    sType;
   4452     void*              pNext;
   4453     uint8_t            deviceUUID[VK_UUID_SIZE];
   4454     uint8_t            driverUUID[VK_UUID_SIZE];
   4455     uint8_t            deviceLUID[VK_LUID_SIZE];
   4456     uint32_t           deviceNodeMask;
   4457     VkBool32           deviceLUIDValid;
   4458 } VkPhysicalDeviceIDProperties;
   4459 
   4460 typedef struct VkExternalMemoryImageCreateInfo {
   4461     VkStructureType                    sType;
   4462     const void*                        pNext;
   4463     VkExternalMemoryHandleTypeFlags    handleTypes;
   4464 } VkExternalMemoryImageCreateInfo;
   4465 
   4466 typedef struct VkExternalMemoryBufferCreateInfo {
   4467     VkStructureType                    sType;
   4468     const void*                        pNext;
   4469     VkExternalMemoryHandleTypeFlags    handleTypes;
   4470 } VkExternalMemoryBufferCreateInfo;
   4471 
   4472 typedef struct VkExportMemoryAllocateInfo {
   4473     VkStructureType                    sType;
   4474     const void*                        pNext;
   4475     VkExternalMemoryHandleTypeFlags    handleTypes;
   4476 } VkExportMemoryAllocateInfo;
   4477 
   4478 typedef struct VkPhysicalDeviceExternalFenceInfo {
   4479     VkStructureType                      sType;
   4480     const void*                          pNext;
   4481     VkExternalFenceHandleTypeFlagBits    handleType;
   4482 } VkPhysicalDeviceExternalFenceInfo;
   4483 
   4484 typedef struct VkExternalFenceProperties {
   4485     VkStructureType                   sType;
   4486     void*                             pNext;
   4487     VkExternalFenceHandleTypeFlags    exportFromImportedHandleTypes;
   4488     VkExternalFenceHandleTypeFlags    compatibleHandleTypes;
   4489     VkExternalFenceFeatureFlags       externalFenceFeatures;
   4490 } VkExternalFenceProperties;
   4491 
   4492 typedef struct VkExportFenceCreateInfo {
   4493     VkStructureType                   sType;
   4494     const void*                       pNext;
   4495     VkExternalFenceHandleTypeFlags    handleTypes;
   4496 } VkExportFenceCreateInfo;
   4497 
   4498 typedef struct VkExportSemaphoreCreateInfo {
   4499     VkStructureType                       sType;
   4500     const void*                           pNext;
   4501     VkExternalSemaphoreHandleTypeFlags    handleTypes;
   4502 } VkExportSemaphoreCreateInfo;
   4503 
   4504 typedef struct VkPhysicalDeviceExternalSemaphoreInfo {
   4505     VkStructureType                          sType;
   4506     const void*                              pNext;
   4507     VkExternalSemaphoreHandleTypeFlagBits    handleType;
   4508 } VkPhysicalDeviceExternalSemaphoreInfo;
   4509 
   4510 typedef struct VkExternalSemaphoreProperties {
   4511     VkStructureType                       sType;
   4512     void*                                 pNext;
   4513     VkExternalSemaphoreHandleTypeFlags    exportFromImportedHandleTypes;
   4514     VkExternalSemaphoreHandleTypeFlags    compatibleHandleTypes;
   4515     VkExternalSemaphoreFeatureFlags       externalSemaphoreFeatures;
   4516 } VkExternalSemaphoreProperties;
   4517 
   4518 typedef struct VkPhysicalDeviceMaintenance3Properties {
   4519     VkStructureType    sType;
   4520     void*              pNext;
   4521     uint32_t           maxPerSetDescriptors;
   4522     VkDeviceSize       maxMemoryAllocationSize;
   4523 } VkPhysicalDeviceMaintenance3Properties;
   4524 
   4525 typedef struct VkDescriptorSetLayoutSupport {
   4526     VkStructureType    sType;
   4527     void*              pNext;
   4528     VkBool32           supported;
   4529 } VkDescriptorSetLayoutSupport;
   4530 
   4531 typedef struct VkPhysicalDeviceShaderDrawParameterFeatures {
   4532     VkStructureType    sType;
   4533     void*              pNext;
   4534     VkBool32           shaderDrawParameters;
   4535 } VkPhysicalDeviceShaderDrawParameterFeatures;
   4536 
   4537 
   4538 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceVersion)(uint32_t* pApiVersion);
   4539 typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
   4540 typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
   4541 typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeatures)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
   4542 typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMask)(VkCommandBuffer commandBuffer, uint32_t deviceMask);
   4543 typedef void (VKAPI_PTR *PFN_vkCmdDispatchBase)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
   4544 typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroups)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
   4545 typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
   4546 typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
   4547 typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
   4548 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
   4549 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
   4550 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
   4551 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
   4552 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
   4553 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
   4554 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
   4555 typedef void (VKAPI_PTR *PFN_vkTrimCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);
   4556 typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue2)(VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue);
   4557 typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversion)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
   4558 typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversion)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
   4559 typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplate)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
   4560 typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplate)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
   4561 typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplate)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
   4562 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
   4563 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFenceProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
   4564 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
   4565 typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupport)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
   4566 
   4567 #ifndef VK_NO_PROTOTYPES
   4568 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceVersion(
   4569     uint32_t*                                   pApiVersion);
   4570 
   4571 VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2(
   4572     VkDevice                                    device,
   4573     uint32_t                                    bindInfoCount,
   4574     const VkBindBufferMemoryInfo*               pBindInfos);
   4575 
   4576 VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2(
   4577     VkDevice                                    device,
   4578     uint32_t                                    bindInfoCount,
   4579     const VkBindImageMemoryInfo*                pBindInfos);
   4580 
   4581 VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeatures(
   4582     VkDevice                                    device,
   4583     uint32_t                                    heapIndex,
   4584     uint32_t                                    localDeviceIndex,
   4585     uint32_t                                    remoteDeviceIndex,
   4586     VkPeerMemoryFeatureFlags*                   pPeerMemoryFeatures);
   4587 
   4588 VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMask(
   4589     VkCommandBuffer                             commandBuffer,
   4590     uint32_t                                    deviceMask);
   4591 
   4592 VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBase(
   4593     VkCommandBuffer                             commandBuffer,
   4594     uint32_t                                    baseGroupX,
   4595     uint32_t                                    baseGroupY,
   4596     uint32_t                                    baseGroupZ,
   4597     uint32_t                                    groupCountX,
   4598     uint32_t                                    groupCountY,
   4599     uint32_t                                    groupCountZ);
   4600 
   4601 VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroups(
   4602     VkInstance                                  instance,
   4603     uint32_t*                                   pPhysicalDeviceGroupCount,
   4604     VkPhysicalDeviceGroupProperties*            pPhysicalDeviceGroupProperties);
   4605 
   4606 VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2(
   4607     VkDevice                                    device,
   4608     const VkImageMemoryRequirementsInfo2*       pInfo,
   4609     VkMemoryRequirements2*                      pMemoryRequirements);
   4610 
   4611 VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2(
   4612     VkDevice                                    device,
   4613     const VkBufferMemoryRequirementsInfo2*      pInfo,
   4614     VkMemoryRequirements2*                      pMemoryRequirements);
   4615 
   4616 VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2(
   4617     VkDevice                                    device,
   4618     const VkImageSparseMemoryRequirementsInfo2* pInfo,
   4619     uint32_t*                                   pSparseMemoryRequirementCount,
   4620     VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements);
   4621 
   4622 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2(
   4623     VkPhysicalDevice                            physicalDevice,
   4624     VkPhysicalDeviceFeatures2*                  pFeatures);
   4625 
   4626 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2(
   4627     VkPhysicalDevice                            physicalDevice,
   4628     VkPhysicalDeviceProperties2*                pProperties);
   4629 
   4630 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2(
   4631     VkPhysicalDevice                            physicalDevice,
   4632     VkFormat                                    format,
   4633     VkFormatProperties2*                        pFormatProperties);
   4634 
   4635 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2(
   4636     VkPhysicalDevice                            physicalDevice,
   4637     const VkPhysicalDeviceImageFormatInfo2*     pImageFormatInfo,
   4638     VkImageFormatProperties2*                   pImageFormatProperties);
   4639 
   4640 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2(
   4641     VkPhysicalDevice                            physicalDevice,
   4642     uint32_t*                                   pQueueFamilyPropertyCount,
   4643     VkQueueFamilyProperties2*                   pQueueFamilyProperties);
   4644 
   4645 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2(
   4646     VkPhysicalDevice                            physicalDevice,
   4647     VkPhysicalDeviceMemoryProperties2*          pMemoryProperties);
   4648 
   4649 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2(
   4650     VkPhysicalDevice                            physicalDevice,
   4651     const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
   4652     uint32_t*                                   pPropertyCount,
   4653     VkSparseImageFormatProperties2*             pProperties);
   4654 
   4655 VKAPI_ATTR void VKAPI_CALL vkTrimCommandPool(
   4656     VkDevice                                    device,
   4657     VkCommandPool                               commandPool,
   4658     VkCommandPoolTrimFlags                      flags);
   4659 
   4660 VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue2(
   4661     VkDevice                                    device,
   4662     const VkDeviceQueueInfo2*                   pQueueInfo,
   4663     VkQueue*                                    pQueue);
   4664 
   4665 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversion(
   4666     VkDevice                                    device,
   4667     const VkSamplerYcbcrConversionCreateInfo*   pCreateInfo,
   4668     const VkAllocationCallbacks*                pAllocator,
   4669     VkSamplerYcbcrConversion*                   pYcbcrConversion);
   4670 
   4671 VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversion(
   4672     VkDevice                                    device,
   4673     VkSamplerYcbcrConversion                    ycbcrConversion,
   4674     const VkAllocationCallbacks*                pAllocator);
   4675 
   4676 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplate(
   4677     VkDevice                                    device,
   4678     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
   4679     const VkAllocationCallbacks*                pAllocator,
   4680     VkDescriptorUpdateTemplate*                 pDescriptorUpdateTemplate);
   4681 
   4682 VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplate(
   4683     VkDevice                                    device,
   4684     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
   4685     const VkAllocationCallbacks*                pAllocator);
   4686 
   4687 VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplate(
   4688     VkDevice                                    device,
   4689     VkDescriptorSet                             descriptorSet,
   4690     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
   4691     const void*                                 pData);
   4692 
   4693 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferProperties(
   4694     VkPhysicalDevice                            physicalDevice,
   4695     const VkPhysicalDeviceExternalBufferInfo*   pExternalBufferInfo,
   4696     VkExternalBufferProperties*                 pExternalBufferProperties);
   4697 
   4698 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFenceProperties(
   4699     VkPhysicalDevice                            physicalDevice,
   4700     const VkPhysicalDeviceExternalFenceInfo*    pExternalFenceInfo,
   4701     VkExternalFenceProperties*                  pExternalFenceProperties);
   4702 
   4703 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphoreProperties(
   4704     VkPhysicalDevice                            physicalDevice,
   4705     const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
   4706     VkExternalSemaphoreProperties*              pExternalSemaphoreProperties);
   4707 
   4708 VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupport(
   4709     VkDevice                                    device,
   4710     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
   4711     VkDescriptorSetLayoutSupport*               pSupport);
   4712 #endif
   4713 
   4714 #define VK_KHR_surface 1
   4715 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
   4716 
   4717 #define VK_KHR_SURFACE_SPEC_VERSION       25
   4718 #define VK_KHR_SURFACE_EXTENSION_NAME     "VK_KHR_surface"
   4719 
   4720 
   4721 typedef enum VkColorSpaceKHR {
   4722     VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,
   4723     VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
   4724     VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
   4725     VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003,
   4726     VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
   4727     VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
   4728     VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
   4729     VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
   4730     VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
   4731     VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
   4732     VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
   4733     VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
   4734     VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
   4735     VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
   4736     VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014,
   4737     VK_COLORSPACE_SRGB_NONLINEAR_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
   4738     VK_COLOR_SPACE_BEGIN_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
   4739     VK_COLOR_SPACE_END_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
   4740     VK_COLOR_SPACE_RANGE_SIZE_KHR = (VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR + 1),
   4741     VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF
   4742 } VkColorSpaceKHR;
   4743 
   4744 typedef enum VkPresentModeKHR {
   4745     VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
   4746     VK_PRESENT_MODE_MAILBOX_KHR = 1,
   4747     VK_PRESENT_MODE_FIFO_KHR = 2,
   4748     VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,
   4749     VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,
   4750     VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,
   4751     VK_PRESENT_MODE_BEGIN_RANGE_KHR = VK_PRESENT_MODE_IMMEDIATE_KHR,
   4752     VK_PRESENT_MODE_END_RANGE_KHR = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
   4753     VK_PRESENT_MODE_RANGE_SIZE_KHR = (VK_PRESENT_MODE_FIFO_RELAXED_KHR - VK_PRESENT_MODE_IMMEDIATE_KHR + 1),
   4754     VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
   4755 } VkPresentModeKHR;
   4756 
   4757 
   4758 typedef enum VkSurfaceTransformFlagBitsKHR {
   4759     VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
   4760     VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
   4761     VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
   4762     VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
   4763     VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
   4764     VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
   4765     VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
   4766     VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
   4767     VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
   4768     VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
   4769 } VkSurfaceTransformFlagBitsKHR;
   4770 typedef VkFlags VkSurfaceTransformFlagsKHR;
   4771 
   4772 typedef enum VkCompositeAlphaFlagBitsKHR {
   4773     VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
   4774     VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
   4775     VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
   4776     VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
   4777     VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
   4778 } VkCompositeAlphaFlagBitsKHR;
   4779 typedef VkFlags VkCompositeAlphaFlagsKHR;
   4780 
   4781 typedef struct VkSurfaceCapabilitiesKHR {
   4782     uint32_t                         minImageCount;
   4783     uint32_t                         maxImageCount;
   4784     VkExtent2D                       currentExtent;
   4785     VkExtent2D                       minImageExtent;
   4786     VkExtent2D                       maxImageExtent;
   4787     uint32_t                         maxImageArrayLayers;
   4788     VkSurfaceTransformFlagsKHR       supportedTransforms;
   4789     VkSurfaceTransformFlagBitsKHR    currentTransform;
   4790     VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
   4791     VkImageUsageFlags                supportedUsageFlags;
   4792 } VkSurfaceCapabilitiesKHR;
   4793 
   4794 typedef struct VkSurfaceFormatKHR {
   4795     VkFormat           format;
   4796     VkColorSpaceKHR    colorSpace;
   4797 } VkSurfaceFormatKHR;
   4798 
   4799 
   4800 typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator);
   4801 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
   4802 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
   4803 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
   4804 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
   4805 
   4806 #ifndef VK_NO_PROTOTYPES
   4807 VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
   4808     VkInstance                                  instance,
   4809     VkSurfaceKHR                                surface,
   4810     const VkAllocationCallbacks*                pAllocator);
   4811 
   4812 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
   4813     VkPhysicalDevice                            physicalDevice,
   4814     uint32_t                                    queueFamilyIndex,
   4815     VkSurfaceKHR                                surface,
   4816     VkBool32*                                   pSupported);
   4817 
   4818 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
   4819     VkPhysicalDevice                            physicalDevice,
   4820     VkSurfaceKHR                                surface,
   4821     VkSurfaceCapabilitiesKHR*                   pSurfaceCapabilities);
   4822 
   4823 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR(
   4824     VkPhysicalDevice                            physicalDevice,
   4825     VkSurfaceKHR                                surface,
   4826     uint32_t*                                   pSurfaceFormatCount,
   4827     VkSurfaceFormatKHR*                         pSurfaceFormats);
   4828 
   4829 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
   4830     VkPhysicalDevice                            physicalDevice,
   4831     VkSurfaceKHR                                surface,
   4832     uint32_t*                                   pPresentModeCount,
   4833     VkPresentModeKHR*                           pPresentModes);
   4834 #endif
   4835 
   4836 #define VK_KHR_swapchain 1
   4837 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
   4838 
   4839 #define VK_KHR_SWAPCHAIN_SPEC_VERSION     70
   4840 #define VK_KHR_SWAPCHAIN_EXTENSION_NAME   "VK_KHR_swapchain"
   4841 
   4842 
   4843 typedef enum VkSwapchainCreateFlagBitsKHR {
   4844     VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0x00000001,
   4845     VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0x00000002,
   4846     VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 0x00000004,
   4847     VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
   4848 } VkSwapchainCreateFlagBitsKHR;
   4849 typedef VkFlags VkSwapchainCreateFlagsKHR;
   4850 
   4851 typedef enum VkDeviceGroupPresentModeFlagBitsKHR {
   4852     VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 0x00000001,
   4853     VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 0x00000002,
   4854     VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 0x00000004,
   4855     VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 0x00000008,
   4856     VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
   4857 } VkDeviceGroupPresentModeFlagBitsKHR;
   4858 typedef VkFlags VkDeviceGroupPresentModeFlagsKHR;
   4859 
   4860 typedef struct VkSwapchainCreateInfoKHR {
   4861     VkStructureType                  sType;
   4862     const void*                      pNext;
   4863     VkSwapchainCreateFlagsKHR        flags;
   4864     VkSurfaceKHR                     surface;
   4865     uint32_t                         minImageCount;
   4866     VkFormat                         imageFormat;
   4867     VkColorSpaceKHR                  imageColorSpace;
   4868     VkExtent2D                       imageExtent;
   4869     uint32_t                         imageArrayLayers;
   4870     VkImageUsageFlags                imageUsage;
   4871     VkSharingMode                    imageSharingMode;
   4872     uint32_t                         queueFamilyIndexCount;
   4873     const uint32_t*                  pQueueFamilyIndices;
   4874     VkSurfaceTransformFlagBitsKHR    preTransform;
   4875     VkCompositeAlphaFlagBitsKHR      compositeAlpha;
   4876     VkPresentModeKHR                 presentMode;
   4877     VkBool32                         clipped;
   4878     VkSwapchainKHR                   oldSwapchain;
   4879 } VkSwapchainCreateInfoKHR;
   4880 
   4881 typedef struct VkPresentInfoKHR {
   4882     VkStructureType          sType;
   4883     const void*              pNext;
   4884     uint32_t                 waitSemaphoreCount;
   4885     const VkSemaphore*       pWaitSemaphores;
   4886     uint32_t                 swapchainCount;
   4887     const VkSwapchainKHR*    pSwapchains;
   4888     const uint32_t*          pImageIndices;
   4889     VkResult*                pResults;
   4890 } VkPresentInfoKHR;
   4891 
   4892 typedef struct VkImageSwapchainCreateInfoKHR {
   4893     VkStructureType    sType;
   4894     const void*        pNext;
   4895     VkSwapchainKHR     swapchain;
   4896 } VkImageSwapchainCreateInfoKHR;
   4897 
   4898 typedef struct VkBindImageMemorySwapchainInfoKHR {
   4899     VkStructureType    sType;
   4900     const void*        pNext;
   4901     VkSwapchainKHR     swapchain;
   4902     uint32_t           imageIndex;
   4903 } VkBindImageMemorySwapchainInfoKHR;
   4904 
   4905 typedef struct VkAcquireNextImageInfoKHR {
   4906     VkStructureType    sType;
   4907     const void*        pNext;
   4908     VkSwapchainKHR     swapchain;
   4909     uint64_t           timeout;
   4910     VkSemaphore        semaphore;
   4911     VkFence            fence;
   4912     uint32_t           deviceMask;
   4913 } VkAcquireNextImageInfoKHR;
   4914 
   4915 typedef struct VkDeviceGroupPresentCapabilitiesKHR {
   4916     VkStructureType                     sType;
   4917     const void*                         pNext;
   4918     uint32_t                            presentMask[VK_MAX_DEVICE_GROUP_SIZE];
   4919     VkDeviceGroupPresentModeFlagsKHR    modes;
   4920 } VkDeviceGroupPresentCapabilitiesKHR;
   4921 
   4922 typedef struct VkDeviceGroupPresentInfoKHR {
   4923     VkStructureType                        sType;
   4924     const void*                            pNext;
   4925     uint32_t                               swapchainCount;
   4926     const uint32_t*                        pDeviceMasks;
   4927     VkDeviceGroupPresentModeFlagBitsKHR    mode;
   4928 } VkDeviceGroupPresentInfoKHR;
   4929 
   4930 typedef struct VkDeviceGroupSwapchainCreateInfoKHR {
   4931     VkStructureType                     sType;
   4932     const void*                         pNext;
   4933     VkDeviceGroupPresentModeFlagsKHR    modes;
   4934 } VkDeviceGroupSwapchainCreateInfoKHR;
   4935 
   4936 
   4937 typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain);
   4938 typedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator);
   4939 typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages);
   4940 typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex);
   4941 typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR* pPresentInfo);
   4942 typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHR)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
   4943 typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes);
   4944 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects);
   4945 typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImage2KHR)(VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex);
   4946 
   4947 #ifndef VK_NO_PROTOTYPES
   4948 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(
   4949     VkDevice                                    device,
   4950     const VkSwapchainCreateInfoKHR*             pCreateInfo,
   4951     const VkAllocationCallbacks*                pAllocator,
   4952     VkSwapchainKHR*                             pSwapchain);
   4953 
   4954 VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR(
   4955     VkDevice                                    device,
   4956     VkSwapchainKHR                              swapchain,
   4957     const VkAllocationCallbacks*                pAllocator);
   4958 
   4959 VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR(
   4960     VkDevice                                    device,
   4961     VkSwapchainKHR                              swapchain,
   4962     uint32_t*                                   pSwapchainImageCount,
   4963     VkImage*                                    pSwapchainImages);
   4964 
   4965 VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(
   4966     VkDevice                                    device,
   4967     VkSwapchainKHR                              swapchain,
   4968     uint64_t                                    timeout,
   4969     VkSemaphore                                 semaphore,
   4970     VkFence                                     fence,
   4971     uint32_t*                                   pImageIndex);
   4972 
   4973 VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
   4974     VkQueue                                     queue,
   4975     const VkPresentInfoKHR*                     pPresentInfo);
   4976 
   4977 VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupPresentCapabilitiesKHR(
   4978     VkDevice                                    device,
   4979     VkDeviceGroupPresentCapabilitiesKHR*        pDeviceGroupPresentCapabilities);
   4980 
   4981 VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHR(
   4982     VkDevice                                    device,
   4983     VkSurfaceKHR                                surface,
   4984     VkDeviceGroupPresentModeFlagsKHR*           pModes);
   4985 
   4986 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHR(
   4987     VkPhysicalDevice                            physicalDevice,
   4988     VkSurfaceKHR                                surface,
   4989     uint32_t*                                   pRectCount,
   4990     VkRect2D*                                   pRects);
   4991 
   4992 VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHR(
   4993     VkDevice                                    device,
   4994     const VkAcquireNextImageInfoKHR*            pAcquireInfo,
   4995     uint32_t*                                   pImageIndex);
   4996 #endif
   4997 
   4998 #define VK_KHR_display 1
   4999 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
   5000 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
   5001 
   5002 #define VK_KHR_DISPLAY_SPEC_VERSION       21
   5003 #define VK_KHR_DISPLAY_EXTENSION_NAME     "VK_KHR_display"
   5004 
   5005 
   5006 typedef enum VkDisplayPlaneAlphaFlagBitsKHR {
   5007     VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
   5008     VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
   5009     VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
   5010     VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
   5011     VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
   5012 } VkDisplayPlaneAlphaFlagBitsKHR;
   5013 typedef VkFlags VkDisplayPlaneAlphaFlagsKHR;
   5014 typedef VkFlags VkDisplayModeCreateFlagsKHR;
   5015 typedef VkFlags VkDisplaySurfaceCreateFlagsKHR;
   5016 
   5017 typedef struct VkDisplayPropertiesKHR {
   5018     VkDisplayKHR                  display;
   5019     const char*                   displayName;
   5020     VkExtent2D                    physicalDimensions;
   5021     VkExtent2D                    physicalResolution;
   5022     VkSurfaceTransformFlagsKHR    supportedTransforms;
   5023     VkBool32                      planeReorderPossible;
   5024     VkBool32                      persistentContent;
   5025 } VkDisplayPropertiesKHR;
   5026 
   5027 typedef struct VkDisplayModeParametersKHR {
   5028     VkExtent2D    visibleRegion;
   5029     uint32_t      refreshRate;
   5030 } VkDisplayModeParametersKHR;
   5031 
   5032 typedef struct VkDisplayModePropertiesKHR {
   5033     VkDisplayModeKHR              displayMode;
   5034     VkDisplayModeParametersKHR    parameters;
   5035 } VkDisplayModePropertiesKHR;
   5036 
   5037 typedef struct VkDisplayModeCreateInfoKHR {
   5038     VkStructureType                sType;
   5039     const void*                    pNext;
   5040     VkDisplayModeCreateFlagsKHR    flags;
   5041     VkDisplayModeParametersKHR     parameters;
   5042 } VkDisplayModeCreateInfoKHR;
   5043 
   5044 typedef struct VkDisplayPlaneCapabilitiesKHR {
   5045     VkDisplayPlaneAlphaFlagsKHR    supportedAlpha;
   5046     VkOffset2D                     minSrcPosition;
   5047     VkOffset2D                     maxSrcPosition;
   5048     VkExtent2D                     minSrcExtent;
   5049     VkExtent2D                     maxSrcExtent;
   5050     VkOffset2D                     minDstPosition;
   5051     VkOffset2D                     maxDstPosition;
   5052     VkExtent2D                     minDstExtent;
   5053     VkExtent2D                     maxDstExtent;
   5054 } VkDisplayPlaneCapabilitiesKHR;
   5055 
   5056 typedef struct VkDisplayPlanePropertiesKHR {
   5057     VkDisplayKHR    currentDisplay;
   5058     uint32_t        currentStackIndex;
   5059 } VkDisplayPlanePropertiesKHR;
   5060 
   5061 typedef struct VkDisplaySurfaceCreateInfoKHR {
   5062     VkStructureType                   sType;
   5063     const void*                       pNext;
   5064     VkDisplaySurfaceCreateFlagsKHR    flags;
   5065     VkDisplayModeKHR                  displayMode;
   5066     uint32_t                          planeIndex;
   5067     uint32_t                          planeStackIndex;
   5068     VkSurfaceTransformFlagBitsKHR     transform;
   5069     float                             globalAlpha;
   5070     VkDisplayPlaneAlphaFlagBitsKHR    alphaMode;
   5071     VkExtent2D                        imageExtent;
   5072 } VkDisplaySurfaceCreateInfoKHR;
   5073 
   5074 
   5075 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
   5076 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
   5077 typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays);
   5078 typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
   5079 typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
   5080 typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
   5081 typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
   5082 
   5083 #ifndef VK_NO_PROTOTYPES
   5084 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR(
   5085     VkPhysicalDevice                            physicalDevice,
   5086     uint32_t*                                   pPropertyCount,
   5087     VkDisplayPropertiesKHR*                     pProperties);
   5088 
   5089 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
   5090     VkPhysicalDevice                            physicalDevice,
   5091     uint32_t*                                   pPropertyCount,
   5092     VkDisplayPlanePropertiesKHR*                pProperties);
   5093 
   5094 VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR(
   5095     VkPhysicalDevice                            physicalDevice,
   5096     uint32_t                                    planeIndex,
   5097     uint32_t*                                   pDisplayCount,
   5098     VkDisplayKHR*                               pDisplays);
   5099 
   5100 VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR(
   5101     VkPhysicalDevice                            physicalDevice,
   5102     VkDisplayKHR                                display,
   5103     uint32_t*                                   pPropertyCount,
   5104     VkDisplayModePropertiesKHR*                 pProperties);
   5105 
   5106 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR(
   5107     VkPhysicalDevice                            physicalDevice,
   5108     VkDisplayKHR                                display,
   5109     const VkDisplayModeCreateInfoKHR*           pCreateInfo,
   5110     const VkAllocationCallbacks*                pAllocator,
   5111     VkDisplayModeKHR*                           pMode);
   5112 
   5113 VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR(
   5114     VkPhysicalDevice                            physicalDevice,
   5115     VkDisplayModeKHR                            mode,
   5116     uint32_t                                    planeIndex,
   5117     VkDisplayPlaneCapabilitiesKHR*              pCapabilities);
   5118 
   5119 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
   5120     VkInstance                                  instance,
   5121     const VkDisplaySurfaceCreateInfoKHR*        pCreateInfo,
   5122     const VkAllocationCallbacks*                pAllocator,
   5123     VkSurfaceKHR*                               pSurface);
   5124 #endif
   5125 
   5126 #define VK_KHR_display_swapchain 1
   5127 #define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 9
   5128 #define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
   5129 
   5130 typedef struct VkDisplayPresentInfoKHR {
   5131     VkStructureType    sType;
   5132     const void*        pNext;
   5133     VkRect2D           srcRect;
   5134     VkRect2D           dstRect;
   5135     VkBool32           persistent;
   5136 } VkDisplayPresentInfoKHR;
   5137 
   5138 
   5139 typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains);
   5140 
   5141 #ifndef VK_NO_PROTOTYPES
   5142 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR(
   5143     VkDevice                                    device,
   5144     uint32_t                                    swapchainCount,
   5145     const VkSwapchainCreateInfoKHR*             pCreateInfos,
   5146     const VkAllocationCallbacks*                pAllocator,
   5147     VkSwapchainKHR*                             pSwapchains);
   5148 #endif
   5149 
   5150 #define VK_KHR_sampler_mirror_clamp_to_edge 1
   5151 #define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 1
   5152 #define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME "VK_KHR_sampler_mirror_clamp_to_edge"
   5153 
   5154 
   5155 #define VK_KHR_multiview 1
   5156 #define VK_KHR_MULTIVIEW_SPEC_VERSION     1
   5157 #define VK_KHR_MULTIVIEW_EXTENSION_NAME   "VK_KHR_multiview"
   5158 
   5159 typedef VkRenderPassMultiviewCreateInfo VkRenderPassMultiviewCreateInfoKHR;
   5160 
   5161 typedef VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeaturesKHR;
   5162 
   5163 typedef VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewPropertiesKHR;
   5164 
   5165 
   5166 
   5167 #define VK_KHR_get_physical_device_properties2 1
   5168 #define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 1
   5169 #define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2"
   5170 
   5171 typedef VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2KHR;
   5172 
   5173 typedef VkPhysicalDeviceProperties2 VkPhysicalDeviceProperties2KHR;
   5174 
   5175 typedef VkFormatProperties2 VkFormatProperties2KHR;
   5176 
   5177 typedef VkImageFormatProperties2 VkImageFormatProperties2KHR;
   5178 
   5179 typedef VkPhysicalDeviceImageFormatInfo2 VkPhysicalDeviceImageFormatInfo2KHR;
   5180 
   5181 typedef VkQueueFamilyProperties2 VkQueueFamilyProperties2KHR;
   5182 
   5183 typedef VkPhysicalDeviceMemoryProperties2 VkPhysicalDeviceMemoryProperties2KHR;
   5184 
   5185 typedef VkSparseImageFormatProperties2 VkSparseImageFormatProperties2KHR;
   5186 
   5187 typedef VkPhysicalDeviceSparseImageFormatInfo2 VkPhysicalDeviceSparseImageFormatInfo2KHR;
   5188 
   5189 
   5190 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
   5191 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
   5192 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2KHR)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
   5193 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
   5194 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
   5195 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
   5196 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
   5197 
   5198 #ifndef VK_NO_PROTOTYPES
   5199 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2KHR(
   5200     VkPhysicalDevice                            physicalDevice,
   5201     VkPhysicalDeviceFeatures2*                  pFeatures);
   5202 
   5203 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2KHR(
   5204     VkPhysicalDevice                            physicalDevice,
   5205     VkPhysicalDeviceProperties2*                pProperties);
   5206 
   5207 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2KHR(
   5208     VkPhysicalDevice                            physicalDevice,
   5209     VkFormat                                    format,
   5210     VkFormatProperties2*                        pFormatProperties);
   5211 
   5212 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2KHR(
   5213     VkPhysicalDevice                            physicalDevice,
   5214     const VkPhysicalDeviceImageFormatInfo2*     pImageFormatInfo,
   5215     VkImageFormatProperties2*                   pImageFormatProperties);
   5216 
   5217 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2KHR(
   5218     VkPhysicalDevice                            physicalDevice,
   5219     uint32_t*                                   pQueueFamilyPropertyCount,
   5220     VkQueueFamilyProperties2*                   pQueueFamilyProperties);
   5221 
   5222 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2KHR(
   5223     VkPhysicalDevice                            physicalDevice,
   5224     VkPhysicalDeviceMemoryProperties2*          pMemoryProperties);
   5225 
   5226 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
   5227     VkPhysicalDevice                            physicalDevice,
   5228     const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
   5229     uint32_t*                                   pPropertyCount,
   5230     VkSparseImageFormatProperties2*             pProperties);
   5231 #endif
   5232 
   5233 #define VK_KHR_device_group 1
   5234 #define VK_KHR_DEVICE_GROUP_SPEC_VERSION  3
   5235 #define VK_KHR_DEVICE_GROUP_EXTENSION_NAME "VK_KHR_device_group"
   5236 
   5237 typedef VkPeerMemoryFeatureFlags VkPeerMemoryFeatureFlagsKHR;
   5238 
   5239 typedef VkPeerMemoryFeatureFlagBits VkPeerMemoryFeatureFlagBitsKHR;
   5240 
   5241 typedef VkMemoryAllocateFlags VkMemoryAllocateFlagsKHR;
   5242 
   5243 typedef VkMemoryAllocateFlagBits VkMemoryAllocateFlagBitsKHR;
   5244 
   5245 
   5246 typedef VkMemoryAllocateFlagsInfo VkMemoryAllocateFlagsInfoKHR;
   5247 
   5248 typedef VkDeviceGroupRenderPassBeginInfo VkDeviceGroupRenderPassBeginInfoKHR;
   5249 
   5250 typedef VkDeviceGroupCommandBufferBeginInfo VkDeviceGroupCommandBufferBeginInfoKHR;
   5251 
   5252 typedef VkDeviceGroupSubmitInfo VkDeviceGroupSubmitInfoKHR;
   5253 
   5254 typedef VkDeviceGroupBindSparseInfo VkDeviceGroupBindSparseInfoKHR;
   5255 
   5256 typedef VkBindBufferMemoryDeviceGroupInfo VkBindBufferMemoryDeviceGroupInfoKHR;
   5257 
   5258 typedef VkBindImageMemoryDeviceGroupInfo VkBindImageMemoryDeviceGroupInfoKHR;
   5259 
   5260 
   5261 typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
   5262 typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMaskKHR)(VkCommandBuffer commandBuffer, uint32_t deviceMask);
   5263 typedef void (VKAPI_PTR *PFN_vkCmdDispatchBaseKHR)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
   5264 
   5265 #ifndef VK_NO_PROTOTYPES
   5266 VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeaturesKHR(
   5267     VkDevice                                    device,
   5268     uint32_t                                    heapIndex,
   5269     uint32_t                                    localDeviceIndex,
   5270     uint32_t                                    remoteDeviceIndex,
   5271     VkPeerMemoryFeatureFlags*                   pPeerMemoryFeatures);
   5272 
   5273 VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMaskKHR(
   5274     VkCommandBuffer                             commandBuffer,
   5275     uint32_t                                    deviceMask);
   5276 
   5277 VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBaseKHR(
   5278     VkCommandBuffer                             commandBuffer,
   5279     uint32_t                                    baseGroupX,
   5280     uint32_t                                    baseGroupY,
   5281     uint32_t                                    baseGroupZ,
   5282     uint32_t                                    groupCountX,
   5283     uint32_t                                    groupCountY,
   5284     uint32_t                                    groupCountZ);
   5285 #endif
   5286 
   5287 #define VK_KHR_shader_draw_parameters 1
   5288 #define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1
   5289 #define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters"
   5290 
   5291 
   5292 #define VK_KHR_maintenance1 1
   5293 #define VK_KHR_MAINTENANCE1_SPEC_VERSION  2
   5294 #define VK_KHR_MAINTENANCE1_EXTENSION_NAME "VK_KHR_maintenance1"
   5295 
   5296 typedef VkCommandPoolTrimFlags VkCommandPoolTrimFlagsKHR;
   5297 
   5298 
   5299 typedef void (VKAPI_PTR *PFN_vkTrimCommandPoolKHR)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);
   5300 
   5301 #ifndef VK_NO_PROTOTYPES
   5302 VKAPI_ATTR void VKAPI_CALL vkTrimCommandPoolKHR(
   5303     VkDevice                                    device,
   5304     VkCommandPool                               commandPool,
   5305     VkCommandPoolTrimFlags                      flags);
   5306 #endif
   5307 
   5308 #define VK_KHR_device_group_creation 1
   5309 #define VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION 1
   5310 #define VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHR_device_group_creation"
   5311 #define VK_MAX_DEVICE_GROUP_SIZE_KHR      VK_MAX_DEVICE_GROUP_SIZE
   5312 
   5313 typedef VkPhysicalDeviceGroupProperties VkPhysicalDeviceGroupPropertiesKHR;
   5314 
   5315 typedef VkDeviceGroupDeviceCreateInfo VkDeviceGroupDeviceCreateInfoKHR;
   5316 
   5317 
   5318 typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroupsKHR)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
   5319 
   5320 #ifndef VK_NO_PROTOTYPES
   5321 VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroupsKHR(
   5322     VkInstance                                  instance,
   5323     uint32_t*                                   pPhysicalDeviceGroupCount,
   5324     VkPhysicalDeviceGroupProperties*            pPhysicalDeviceGroupProperties);
   5325 #endif
   5326 
   5327 #define VK_KHR_external_memory_capabilities 1
   5328 #define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
   5329 #define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_memory_capabilities"
   5330 #define VK_LUID_SIZE_KHR                  VK_LUID_SIZE
   5331 
   5332 typedef VkExternalMemoryHandleTypeFlags VkExternalMemoryHandleTypeFlagsKHR;
   5333 
   5334 typedef VkExternalMemoryHandleTypeFlagBits VkExternalMemoryHandleTypeFlagBitsKHR;
   5335 
   5336 typedef VkExternalMemoryFeatureFlags VkExternalMemoryFeatureFlagsKHR;
   5337 
   5338 typedef VkExternalMemoryFeatureFlagBits VkExternalMemoryFeatureFlagBitsKHR;
   5339 
   5340 
   5341 typedef VkExternalMemoryProperties VkExternalMemoryPropertiesKHR;
   5342 
   5343 typedef VkPhysicalDeviceExternalImageFormatInfo VkPhysicalDeviceExternalImageFormatInfoKHR;
   5344 
   5345 typedef VkExternalImageFormatProperties VkExternalImageFormatPropertiesKHR;
   5346 
   5347 typedef VkPhysicalDeviceExternalBufferInfo VkPhysicalDeviceExternalBufferInfoKHR;
   5348 
   5349 typedef VkExternalBufferProperties VkExternalBufferPropertiesKHR;
   5350 
   5351 typedef VkPhysicalDeviceIDProperties VkPhysicalDeviceIDPropertiesKHR;
   5352 
   5353 
   5354 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
   5355 
   5356 #ifndef VK_NO_PROTOTYPES
   5357 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferPropertiesKHR(
   5358     VkPhysicalDevice                            physicalDevice,
   5359     const VkPhysicalDeviceExternalBufferInfo*   pExternalBufferInfo,
   5360     VkExternalBufferProperties*                 pExternalBufferProperties);
   5361 #endif
   5362 
   5363 #define VK_KHR_external_memory 1
   5364 #define VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION 1
   5365 #define VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHR_external_memory"
   5366 #define VK_QUEUE_FAMILY_EXTERNAL_KHR      VK_QUEUE_FAMILY_EXTERNAL
   5367 
   5368 typedef VkExternalMemoryImageCreateInfo VkExternalMemoryImageCreateInfoKHR;
   5369 
   5370 typedef VkExternalMemoryBufferCreateInfo VkExternalMemoryBufferCreateInfoKHR;
   5371 
   5372 typedef VkExportMemoryAllocateInfo VkExportMemoryAllocateInfoKHR;
   5373 
   5374 
   5375 
   5376 #define VK_KHR_external_memory_fd 1
   5377 #define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1
   5378 #define VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHR_external_memory_fd"
   5379 
   5380 typedef struct VkImportMemoryFdInfoKHR {
   5381     VkStructureType                       sType;
   5382     const void*                           pNext;
   5383     VkExternalMemoryHandleTypeFlagBits    handleType;
   5384     int                                   fd;
   5385 } VkImportMemoryFdInfoKHR;
   5386 
   5387 typedef struct VkMemoryFdPropertiesKHR {
   5388     VkStructureType    sType;
   5389     void*              pNext;
   5390     uint32_t           memoryTypeBits;
   5391 } VkMemoryFdPropertiesKHR;
   5392 
   5393 typedef struct VkMemoryGetFdInfoKHR {
   5394     VkStructureType                       sType;
   5395     const void*                           pNext;
   5396     VkDeviceMemory                        memory;
   5397     VkExternalMemoryHandleTypeFlagBits    handleType;
   5398 } VkMemoryGetFdInfoKHR;
   5399 
   5400 
   5401 typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdKHR)(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd);
   5402 typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdPropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties);
   5403 
   5404 #ifndef VK_NO_PROTOTYPES
   5405 VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdKHR(
   5406     VkDevice                                    device,
   5407     const VkMemoryGetFdInfoKHR*                 pGetFdInfo,
   5408     int*                                        pFd);
   5409 
   5410 VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHR(
   5411     VkDevice                                    device,
   5412     VkExternalMemoryHandleTypeFlagBits          handleType,
   5413     int                                         fd,
   5414     VkMemoryFdPropertiesKHR*                    pMemoryFdProperties);
   5415 #endif
   5416 
   5417 #define VK_KHR_external_semaphore_capabilities 1
   5418 #define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1
   5419 #define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_semaphore_capabilities"
   5420 
   5421 typedef VkExternalSemaphoreHandleTypeFlags VkExternalSemaphoreHandleTypeFlagsKHR;
   5422 
   5423 typedef VkExternalSemaphoreHandleTypeFlagBits VkExternalSemaphoreHandleTypeFlagBitsKHR;
   5424 
   5425 typedef VkExternalSemaphoreFeatureFlags VkExternalSemaphoreFeatureFlagsKHR;
   5426 
   5427 typedef VkExternalSemaphoreFeatureFlagBits VkExternalSemaphoreFeatureFlagBitsKHR;
   5428 
   5429 
   5430 typedef VkPhysicalDeviceExternalSemaphoreInfo VkPhysicalDeviceExternalSemaphoreInfoKHR;
   5431 
   5432 typedef VkExternalSemaphoreProperties VkExternalSemaphorePropertiesKHR;
   5433 
   5434 
   5435 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
   5436 
   5437 #ifndef VK_NO_PROTOTYPES
   5438 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
   5439     VkPhysicalDevice                            physicalDevice,
   5440     const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
   5441     VkExternalSemaphoreProperties*              pExternalSemaphoreProperties);
   5442 #endif
   5443 
   5444 #define VK_KHR_external_semaphore 1
   5445 #define VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
   5446 #define VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHR_external_semaphore"
   5447 
   5448 typedef VkSemaphoreImportFlags VkSemaphoreImportFlagsKHR;
   5449 
   5450 typedef VkSemaphoreImportFlagBits VkSemaphoreImportFlagBitsKHR;
   5451 
   5452 
   5453 typedef VkExportSemaphoreCreateInfo VkExportSemaphoreCreateInfoKHR;
   5454 
   5455 
   5456 
   5457 #define VK_KHR_external_semaphore_fd 1
   5458 #define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1
   5459 #define VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHR_external_semaphore_fd"
   5460 
   5461 typedef struct VkImportSemaphoreFdInfoKHR {
   5462     VkStructureType                          sType;
   5463     const void*                              pNext;
   5464     VkSemaphore                              semaphore;
   5465     VkSemaphoreImportFlags                   flags;
   5466     VkExternalSemaphoreHandleTypeFlagBits    handleType;
   5467     int                                      fd;
   5468 } VkImportSemaphoreFdInfoKHR;
   5469 
   5470 typedef struct VkSemaphoreGetFdInfoKHR {
   5471     VkStructureType                          sType;
   5472     const void*                              pNext;
   5473     VkSemaphore                              semaphore;
   5474     VkExternalSemaphoreHandleTypeFlagBits    handleType;
   5475 } VkSemaphoreGetFdInfoKHR;
   5476 
   5477 
   5478 typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreFdKHR)(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
   5479 typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreFdKHR)(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd);
   5480 
   5481 #ifndef VK_NO_PROTOTYPES
   5482 VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreFdKHR(
   5483     VkDevice                                    device,
   5484     const VkImportSemaphoreFdInfoKHR*           pImportSemaphoreFdInfo);
   5485 
   5486 VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHR(
   5487     VkDevice                                    device,
   5488     const VkSemaphoreGetFdInfoKHR*              pGetFdInfo,
   5489     int*                                        pFd);
   5490 #endif
   5491 
   5492 #define VK_KHR_push_descriptor 1
   5493 #define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 2
   5494 #define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor"
   5495 
   5496 typedef struct VkPhysicalDevicePushDescriptorPropertiesKHR {
   5497     VkStructureType    sType;
   5498     void*              pNext;
   5499     uint32_t           maxPushDescriptors;
   5500 } VkPhysicalDevicePushDescriptorPropertiesKHR;
   5501 
   5502 
   5503 typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetKHR)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites);
   5504 typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplateKHR)(VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData);
   5505 
   5506 #ifndef VK_NO_PROTOTYPES
   5507 VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetKHR(
   5508     VkCommandBuffer                             commandBuffer,
   5509     VkPipelineBindPoint                         pipelineBindPoint,
   5510     VkPipelineLayout                            layout,
   5511     uint32_t                                    set,
   5512     uint32_t                                    descriptorWriteCount,
   5513     const VkWriteDescriptorSet*                 pDescriptorWrites);
   5514 
   5515 VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR(
   5516     VkCommandBuffer                             commandBuffer,
   5517     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
   5518     VkPipelineLayout                            layout,
   5519     uint32_t                                    set,
   5520     const void*                                 pData);
   5521 #endif
   5522 
   5523 #define VK_KHR_shader_float16_int8 1
   5524 #define VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION 1
   5525 #define VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME "VK_KHR_shader_float16_int8"
   5526 
   5527 typedef struct VkPhysicalDeviceFloat16Int8FeaturesKHR {
   5528     VkStructureType    sType;
   5529     void*              pNext;
   5530     VkBool32           shaderFloat16;
   5531     VkBool32           shaderInt8;
   5532 } VkPhysicalDeviceFloat16Int8FeaturesKHR;
   5533 
   5534 
   5535 
   5536 #define VK_KHR_16bit_storage 1
   5537 #define VK_KHR_16BIT_STORAGE_SPEC_VERSION 1
   5538 #define VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage"
   5539 
   5540 typedef VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeaturesKHR;
   5541 
   5542 
   5543 
   5544 #define VK_KHR_incremental_present 1
   5545 #define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1
   5546 #define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present"
   5547 
   5548 typedef struct VkRectLayerKHR {
   5549     VkOffset2D    offset;
   5550     VkExtent2D    extent;
   5551     uint32_t      layer;
   5552 } VkRectLayerKHR;
   5553 
   5554 typedef struct VkPresentRegionKHR {
   5555     uint32_t                 rectangleCount;
   5556     const VkRectLayerKHR*    pRectangles;
   5557 } VkPresentRegionKHR;
   5558 
   5559 typedef struct VkPresentRegionsKHR {
   5560     VkStructureType              sType;
   5561     const void*                  pNext;
   5562     uint32_t                     swapchainCount;
   5563     const VkPresentRegionKHR*    pRegions;
   5564 } VkPresentRegionsKHR;
   5565 
   5566 
   5567 
   5568 #define VK_KHR_descriptor_update_template 1
   5569 typedef VkDescriptorUpdateTemplate VkDescriptorUpdateTemplateKHR;
   5570 
   5571 
   5572 #define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1
   5573 #define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template"
   5574 
   5575 typedef VkDescriptorUpdateTemplateType VkDescriptorUpdateTemplateTypeKHR;
   5576 
   5577 
   5578 typedef VkDescriptorUpdateTemplateCreateFlags VkDescriptorUpdateTemplateCreateFlagsKHR;
   5579 
   5580 
   5581 typedef VkDescriptorUpdateTemplateEntry VkDescriptorUpdateTemplateEntryKHR;
   5582 
   5583 typedef VkDescriptorUpdateTemplateCreateInfo VkDescriptorUpdateTemplateCreateInfoKHR;
   5584 
   5585 
   5586 typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplateKHR)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
   5587 typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplateKHR)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
   5588 typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplateKHR)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
   5589 
   5590 #ifndef VK_NO_PROTOTYPES
   5591 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplateKHR(
   5592     VkDevice                                    device,
   5593     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
   5594     const VkAllocationCallbacks*                pAllocator,
   5595     VkDescriptorUpdateTemplate*                 pDescriptorUpdateTemplate);
   5596 
   5597 VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplateKHR(
   5598     VkDevice                                    device,
   5599     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
   5600     const VkAllocationCallbacks*                pAllocator);
   5601 
   5602 VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR(
   5603     VkDevice                                    device,
   5604     VkDescriptorSet                             descriptorSet,
   5605     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
   5606     const void*                                 pData);
   5607 #endif
   5608 
   5609 #define VK_KHR_create_renderpass2 1
   5610 #define VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION 1
   5611 #define VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME "VK_KHR_create_renderpass2"
   5612 
   5613 typedef struct VkAttachmentDescription2KHR {
   5614     VkStructureType                 sType;
   5615     const void*                     pNext;
   5616     VkAttachmentDescriptionFlags    flags;
   5617     VkFormat                        format;
   5618     VkSampleCountFlagBits           samples;
   5619     VkAttachmentLoadOp              loadOp;
   5620     VkAttachmentStoreOp             storeOp;
   5621     VkAttachmentLoadOp              stencilLoadOp;
   5622     VkAttachmentStoreOp             stencilStoreOp;
   5623     VkImageLayout                   initialLayout;
   5624     VkImageLayout                   finalLayout;
   5625 } VkAttachmentDescription2KHR;
   5626 
   5627 typedef struct VkAttachmentReference2KHR {
   5628     VkStructureType       sType;
   5629     const void*           pNext;
   5630     uint32_t              attachment;
   5631     VkImageLayout         layout;
   5632     VkImageAspectFlags    aspectMask;
   5633 } VkAttachmentReference2KHR;
   5634 
   5635 typedef struct VkSubpassDescription2KHR {
   5636     VkStructureType                     sType;
   5637     const void*                         pNext;
   5638     VkSubpassDescriptionFlags           flags;
   5639     VkPipelineBindPoint                 pipelineBindPoint;
   5640     uint32_t                            viewMask;
   5641     uint32_t                            inputAttachmentCount;
   5642     const VkAttachmentReference2KHR*    pInputAttachments;
   5643     uint32_t                            colorAttachmentCount;
   5644     const VkAttachmentReference2KHR*    pColorAttachments;
   5645     const VkAttachmentReference2KHR*    pResolveAttachments;
   5646     const VkAttachmentReference2KHR*    pDepthStencilAttachment;
   5647     uint32_t                            preserveAttachmentCount;
   5648     const uint32_t*                     pPreserveAttachments;
   5649 } VkSubpassDescription2KHR;
   5650 
   5651 typedef struct VkSubpassDependency2KHR {
   5652     VkStructureType         sType;
   5653     const void*             pNext;
   5654     uint32_t                srcSubpass;
   5655     uint32_t                dstSubpass;
   5656     VkPipelineStageFlags    srcStageMask;
   5657     VkPipelineStageFlags    dstStageMask;
   5658     VkAccessFlags           srcAccessMask;
   5659     VkAccessFlags           dstAccessMask;
   5660     VkDependencyFlags       dependencyFlags;
   5661     int32_t                 viewOffset;
   5662 } VkSubpassDependency2KHR;
   5663 
   5664 typedef struct VkRenderPassCreateInfo2KHR {
   5665     VkStructureType                       sType;
   5666     const void*                           pNext;
   5667     VkRenderPassCreateFlags               flags;
   5668     uint32_t                              attachmentCount;
   5669     const VkAttachmentDescription2KHR*    pAttachments;
   5670     uint32_t                              subpassCount;
   5671     const VkSubpassDescription2KHR*       pSubpasses;
   5672     uint32_t                              dependencyCount;
   5673     const VkSubpassDependency2KHR*        pDependencies;
   5674     uint32_t                              correlatedViewMaskCount;
   5675     const uint32_t*                       pCorrelatedViewMasks;
   5676 } VkRenderPassCreateInfo2KHR;
   5677 
   5678 typedef struct VkSubpassBeginInfoKHR {
   5679     VkStructureType      sType;
   5680     const void*          pNext;
   5681     VkSubpassContents    contents;
   5682 } VkSubpassBeginInfoKHR;
   5683 
   5684 typedef struct VkSubpassEndInfoKHR {
   5685     VkStructureType    sType;
   5686     const void*        pNext;
   5687 } VkSubpassEndInfoKHR;
   5688 
   5689 
   5690 typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2KHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
   5691 typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo*      pRenderPassBegin, const VkSubpassBeginInfoKHR*      pSubpassBeginInfo);
   5692 typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfoKHR*      pSubpassBeginInfo, const VkSubpassEndInfoKHR*        pSubpassEndInfo);
   5693 typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfoKHR*        pSubpassEndInfo);
   5694 
   5695 #ifndef VK_NO_PROTOTYPES
   5696 VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2KHR(
   5697     VkDevice                                    device,
   5698     const VkRenderPassCreateInfo2KHR*           pCreateInfo,
   5699     const VkAllocationCallbacks*                pAllocator,
   5700     VkRenderPass*                               pRenderPass);
   5701 
   5702 VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2KHR(
   5703     VkCommandBuffer                             commandBuffer,
   5704     const VkRenderPassBeginInfo*                pRenderPassBegin,
   5705     const VkSubpassBeginInfoKHR*                pSubpassBeginInfo);
   5706 
   5707 VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2KHR(
   5708     VkCommandBuffer                             commandBuffer,
   5709     const VkSubpassBeginInfoKHR*                pSubpassBeginInfo,
   5710     const VkSubpassEndInfoKHR*                  pSubpassEndInfo);
   5711 
   5712 VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2KHR(
   5713     VkCommandBuffer                             commandBuffer,
   5714     const VkSubpassEndInfoKHR*                  pSubpassEndInfo);
   5715 #endif
   5716 
   5717 #define VK_KHR_shared_presentable_image 1
   5718 #define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1
   5719 #define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image"
   5720 
   5721 typedef struct VkSharedPresentSurfaceCapabilitiesKHR {
   5722     VkStructureType      sType;
   5723     void*                pNext;
   5724     VkImageUsageFlags    sharedPresentSupportedUsageFlags;
   5725 } VkSharedPresentSurfaceCapabilitiesKHR;
   5726 
   5727 
   5728 typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainStatusKHR)(VkDevice device, VkSwapchainKHR swapchain);
   5729 
   5730 #ifndef VK_NO_PROTOTYPES
   5731 VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainStatusKHR(
   5732     VkDevice                                    device,
   5733     VkSwapchainKHR                              swapchain);
   5734 #endif
   5735 
   5736 #define VK_KHR_external_fence_capabilities 1
   5737 #define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION 1
   5738 #define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_fence_capabilities"
   5739 
   5740 typedef VkExternalFenceHandleTypeFlags VkExternalFenceHandleTypeFlagsKHR;
   5741 
   5742 typedef VkExternalFenceHandleTypeFlagBits VkExternalFenceHandleTypeFlagBitsKHR;
   5743 
   5744 typedef VkExternalFenceFeatureFlags VkExternalFenceFeatureFlagsKHR;
   5745 
   5746 typedef VkExternalFenceFeatureFlagBits VkExternalFenceFeatureFlagBitsKHR;
   5747 
   5748 
   5749 typedef VkPhysicalDeviceExternalFenceInfo VkPhysicalDeviceExternalFenceInfoKHR;
   5750 
   5751 typedef VkExternalFenceProperties VkExternalFencePropertiesKHR;
   5752 
   5753 
   5754 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
   5755 
   5756 #ifndef VK_NO_PROTOTYPES
   5757 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFencePropertiesKHR(
   5758     VkPhysicalDevice                            physicalDevice,
   5759     const VkPhysicalDeviceExternalFenceInfo*    pExternalFenceInfo,
   5760     VkExternalFenceProperties*                  pExternalFenceProperties);
   5761 #endif
   5762 
   5763 #define VK_KHR_external_fence 1
   5764 #define VK_KHR_EXTERNAL_FENCE_SPEC_VERSION 1
   5765 #define VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME "VK_KHR_external_fence"
   5766 
   5767 typedef VkFenceImportFlags VkFenceImportFlagsKHR;
   5768 
   5769 typedef VkFenceImportFlagBits VkFenceImportFlagBitsKHR;
   5770 
   5771 
   5772 typedef VkExportFenceCreateInfo VkExportFenceCreateInfoKHR;
   5773 
   5774 
   5775 
   5776 #define VK_KHR_external_fence_fd 1
   5777 #define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1
   5778 #define VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME "VK_KHR_external_fence_fd"
   5779 
   5780 typedef struct VkImportFenceFdInfoKHR {
   5781     VkStructureType                      sType;
   5782     const void*                          pNext;
   5783     VkFence                              fence;
   5784     VkFenceImportFlags                   flags;
   5785     VkExternalFenceHandleTypeFlagBits    handleType;
   5786     int                                  fd;
   5787 } VkImportFenceFdInfoKHR;
   5788 
   5789 typedef struct VkFenceGetFdInfoKHR {
   5790     VkStructureType                      sType;
   5791     const void*                          pNext;
   5792     VkFence                              fence;
   5793     VkExternalFenceHandleTypeFlagBits    handleType;
   5794 } VkFenceGetFdInfoKHR;
   5795 
   5796 
   5797 typedef VkResult (VKAPI_PTR *PFN_vkImportFenceFdKHR)(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
   5798 typedef VkResult (VKAPI_PTR *PFN_vkGetFenceFdKHR)(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd);
   5799 
   5800 #ifndef VK_NO_PROTOTYPES
   5801 VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceFdKHR(
   5802     VkDevice                                    device,
   5803     const VkImportFenceFdInfoKHR*               pImportFenceFdInfo);
   5804 
   5805 VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceFdKHR(
   5806     VkDevice                                    device,
   5807     const VkFenceGetFdInfoKHR*                  pGetFdInfo,
   5808     int*                                        pFd);
   5809 #endif
   5810 
   5811 #define VK_KHR_maintenance2 1
   5812 #define VK_KHR_MAINTENANCE2_SPEC_VERSION  1
   5813 #define VK_KHR_MAINTENANCE2_EXTENSION_NAME "VK_KHR_maintenance2"
   5814 
   5815 typedef VkPointClippingBehavior VkPointClippingBehaviorKHR;
   5816 
   5817 typedef VkTessellationDomainOrigin VkTessellationDomainOriginKHR;
   5818 
   5819 
   5820 typedef VkPhysicalDevicePointClippingProperties VkPhysicalDevicePointClippingPropertiesKHR;
   5821 
   5822 typedef VkRenderPassInputAttachmentAspectCreateInfo VkRenderPassInputAttachmentAspectCreateInfoKHR;
   5823 
   5824 typedef VkInputAttachmentAspectReference VkInputAttachmentAspectReferenceKHR;
   5825 
   5826 typedef VkImageViewUsageCreateInfo VkImageViewUsageCreateInfoKHR;
   5827 
   5828 typedef VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellationDomainOriginStateCreateInfoKHR;
   5829 
   5830 
   5831 
   5832 #define VK_KHR_get_surface_capabilities2 1
   5833 #define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1
   5834 #define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2"
   5835 
   5836 typedef struct VkPhysicalDeviceSurfaceInfo2KHR {
   5837     VkStructureType    sType;
   5838     const void*        pNext;
   5839     VkSurfaceKHR       surface;
   5840 } VkPhysicalDeviceSurfaceInfo2KHR;
   5841 
   5842 typedef struct VkSurfaceCapabilities2KHR {
   5843     VkStructureType             sType;
   5844     void*                       pNext;
   5845     VkSurfaceCapabilitiesKHR    surfaceCapabilities;
   5846 } VkSurfaceCapabilities2KHR;
   5847 
   5848 typedef struct VkSurfaceFormat2KHR {
   5849     VkStructureType       sType;
   5850     void*                 pNext;
   5851     VkSurfaceFormatKHR    surfaceFormat;
   5852 } VkSurfaceFormat2KHR;
   5853 
   5854 
   5855 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
   5856 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats);
   5857 
   5858 #ifndef VK_NO_PROTOTYPES
   5859 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2KHR(
   5860     VkPhysicalDevice                            physicalDevice,
   5861     const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
   5862     VkSurfaceCapabilities2KHR*                  pSurfaceCapabilities);
   5863 
   5864 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormats2KHR(
   5865     VkPhysicalDevice                            physicalDevice,
   5866     const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
   5867     uint32_t*                                   pSurfaceFormatCount,
   5868     VkSurfaceFormat2KHR*                        pSurfaceFormats);
   5869 #endif
   5870 
   5871 #define VK_KHR_variable_pointers 1
   5872 #define VK_KHR_VARIABLE_POINTERS_SPEC_VERSION 1
   5873 #define VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME "VK_KHR_variable_pointers"
   5874 
   5875 typedef VkPhysicalDeviceVariablePointerFeatures VkPhysicalDeviceVariablePointerFeaturesKHR;
   5876 
   5877 
   5878 
   5879 #define VK_KHR_get_display_properties2 1
   5880 #define VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION 1
   5881 #define VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_display_properties2"
   5882 
   5883 typedef struct VkDisplayProperties2KHR {
   5884     VkStructureType           sType;
   5885     void*                     pNext;
   5886     VkDisplayPropertiesKHR    displayProperties;
   5887 } VkDisplayProperties2KHR;
   5888 
   5889 typedef struct VkDisplayPlaneProperties2KHR {
   5890     VkStructureType                sType;
   5891     void*                          pNext;
   5892     VkDisplayPlanePropertiesKHR    displayPlaneProperties;
   5893 } VkDisplayPlaneProperties2KHR;
   5894 
   5895 typedef struct VkDisplayModeProperties2KHR {
   5896     VkStructureType               sType;
   5897     void*                         pNext;
   5898     VkDisplayModePropertiesKHR    displayModeProperties;
   5899 } VkDisplayModeProperties2KHR;
   5900 
   5901 typedef struct VkDisplayPlaneInfo2KHR {
   5902     VkStructureType     sType;
   5903     const void*         pNext;
   5904     VkDisplayModeKHR    mode;
   5905     uint32_t            planeIndex;
   5906 } VkDisplayPlaneInfo2KHR;
   5907 
   5908 typedef struct VkDisplayPlaneCapabilities2KHR {
   5909     VkStructureType                  sType;
   5910     void*                            pNext;
   5911     VkDisplayPlaneCapabilitiesKHR    capabilities;
   5912 } VkDisplayPlaneCapabilities2KHR;
   5913 
   5914 
   5915 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties);
   5916 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties);
   5917 typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModeProperties2KHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties);
   5918 typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities);
   5919 
   5920 #ifndef VK_NO_PROTOTYPES
   5921 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayProperties2KHR(
   5922     VkPhysicalDevice                            physicalDevice,
   5923     uint32_t*                                   pPropertyCount,
   5924     VkDisplayProperties2KHR*                    pProperties);
   5925 
   5926 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
   5927     VkPhysicalDevice                            physicalDevice,
   5928     uint32_t*                                   pPropertyCount,
   5929     VkDisplayPlaneProperties2KHR*               pProperties);
   5930 
   5931 VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModeProperties2KHR(
   5932     VkPhysicalDevice                            physicalDevice,
   5933     VkDisplayKHR                                display,
   5934     uint32_t*                                   pPropertyCount,
   5935     VkDisplayModeProperties2KHR*                pProperties);
   5936 
   5937 VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilities2KHR(
   5938     VkPhysicalDevice                            physicalDevice,
   5939     const VkDisplayPlaneInfo2KHR*               pDisplayPlaneInfo,
   5940     VkDisplayPlaneCapabilities2KHR*             pCapabilities);
   5941 #endif
   5942 
   5943 #define VK_KHR_dedicated_allocation 1
   5944 #define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3
   5945 #define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation"
   5946 
   5947 typedef VkMemoryDedicatedRequirements VkMemoryDedicatedRequirementsKHR;
   5948 
   5949 typedef VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfoKHR;
   5950 
   5951 
   5952 
   5953 #define VK_KHR_storage_buffer_storage_class 1
   5954 #define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION 1
   5955 #define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME "VK_KHR_storage_buffer_storage_class"
   5956 
   5957 
   5958 #define VK_KHR_relaxed_block_layout 1
   5959 #define VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION 1
   5960 #define VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME "VK_KHR_relaxed_block_layout"
   5961 
   5962 
   5963 #define VK_KHR_get_memory_requirements2 1
   5964 #define VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION 1
   5965 #define VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME "VK_KHR_get_memory_requirements2"
   5966 
   5967 typedef VkBufferMemoryRequirementsInfo2 VkBufferMemoryRequirementsInfo2KHR;
   5968 
   5969 typedef VkImageMemoryRequirementsInfo2 VkImageMemoryRequirementsInfo2KHR;
   5970 
   5971 typedef VkImageSparseMemoryRequirementsInfo2 VkImageSparseMemoryRequirementsInfo2KHR;
   5972 
   5973 typedef VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2KHR;
   5974 
   5975 
   5976 typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2KHR)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
   5977 typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2KHR)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
   5978 typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2KHR)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
   5979 
   5980 #ifndef VK_NO_PROTOTYPES
   5981 VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2KHR(
   5982     VkDevice                                    device,
   5983     const VkImageMemoryRequirementsInfo2*       pInfo,
   5984     VkMemoryRequirements2*                      pMemoryRequirements);
   5985 
   5986 VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2KHR(
   5987     VkDevice                                    device,
   5988     const VkBufferMemoryRequirementsInfo2*      pInfo,
   5989     VkMemoryRequirements2*                      pMemoryRequirements);
   5990 
   5991 VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2KHR(
   5992     VkDevice                                    device,
   5993     const VkImageSparseMemoryRequirementsInfo2* pInfo,
   5994     uint32_t*                                   pSparseMemoryRequirementCount,
   5995     VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements);
   5996 #endif
   5997 
   5998 #define VK_KHR_image_format_list 1
   5999 #define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1
   6000 #define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME "VK_KHR_image_format_list"
   6001 
   6002 typedef struct VkImageFormatListCreateInfoKHR {
   6003     VkStructureType    sType;
   6004     const void*        pNext;
   6005     uint32_t           viewFormatCount;
   6006     const VkFormat*    pViewFormats;
   6007 } VkImageFormatListCreateInfoKHR;
   6008 
   6009 
   6010 
   6011 #define VK_KHR_sampler_ycbcr_conversion 1
   6012 typedef VkSamplerYcbcrConversion VkSamplerYcbcrConversionKHR;
   6013 
   6014 
   6015 #define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 1
   6016 #define VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME "VK_KHR_sampler_ycbcr_conversion"
   6017 
   6018 typedef VkSamplerYcbcrModelConversion VkSamplerYcbcrModelConversionKHR;
   6019 
   6020 typedef VkSamplerYcbcrRange VkSamplerYcbcrRangeKHR;
   6021 
   6022 typedef VkChromaLocation VkChromaLocationKHR;
   6023 
   6024 
   6025 typedef VkSamplerYcbcrConversionCreateInfo VkSamplerYcbcrConversionCreateInfoKHR;
   6026 
   6027 typedef VkSamplerYcbcrConversionInfo VkSamplerYcbcrConversionInfoKHR;
   6028 
   6029 typedef VkBindImagePlaneMemoryInfo VkBindImagePlaneMemoryInfoKHR;
   6030 
   6031 typedef VkImagePlaneMemoryRequirementsInfo VkImagePlaneMemoryRequirementsInfoKHR;
   6032 
   6033 typedef VkPhysicalDeviceSamplerYcbcrConversionFeatures VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR;
   6034 
   6035 typedef VkSamplerYcbcrConversionImageFormatProperties VkSamplerYcbcrConversionImageFormatPropertiesKHR;
   6036 
   6037 
   6038 typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversionKHR)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
   6039 typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversionKHR)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
   6040 
   6041 #ifndef VK_NO_PROTOTYPES
   6042 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversionKHR(
   6043     VkDevice                                    device,
   6044     const VkSamplerYcbcrConversionCreateInfo*   pCreateInfo,
   6045     const VkAllocationCallbacks*                pAllocator,
   6046     VkSamplerYcbcrConversion*                   pYcbcrConversion);
   6047 
   6048 VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversionKHR(
   6049     VkDevice                                    device,
   6050     VkSamplerYcbcrConversion                    ycbcrConversion,
   6051     const VkAllocationCallbacks*                pAllocator);
   6052 #endif
   6053 
   6054 #define VK_KHR_bind_memory2 1
   6055 #define VK_KHR_BIND_MEMORY_2_SPEC_VERSION 1
   6056 #define VK_KHR_BIND_MEMORY_2_EXTENSION_NAME "VK_KHR_bind_memory2"
   6057 
   6058 typedef VkBindBufferMemoryInfo VkBindBufferMemoryInfoKHR;
   6059 
   6060 typedef VkBindImageMemoryInfo VkBindImageMemoryInfoKHR;
   6061 
   6062 
   6063 typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
   6064 typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
   6065 
   6066 #ifndef VK_NO_PROTOTYPES
   6067 VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2KHR(
   6068     VkDevice                                    device,
   6069     uint32_t                                    bindInfoCount,
   6070     const VkBindBufferMemoryInfo*               pBindInfos);
   6071 
   6072 VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2KHR(
   6073     VkDevice                                    device,
   6074     uint32_t                                    bindInfoCount,
   6075     const VkBindImageMemoryInfo*                pBindInfos);
   6076 #endif
   6077 
   6078 #define VK_KHR_maintenance3 1
   6079 #define VK_KHR_MAINTENANCE3_SPEC_VERSION  1
   6080 #define VK_KHR_MAINTENANCE3_EXTENSION_NAME "VK_KHR_maintenance3"
   6081 
   6082 typedef VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3PropertiesKHR;
   6083 
   6084 typedef VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupportKHR;
   6085 
   6086 
   6087 typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupportKHR)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
   6088 
   6089 #ifndef VK_NO_PROTOTYPES
   6090 VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupportKHR(
   6091     VkDevice                                    device,
   6092     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
   6093     VkDescriptorSetLayoutSupport*               pSupport);
   6094 #endif
   6095 
   6096 #define VK_KHR_draw_indirect_count 1
   6097 #define VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
   6098 #define VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_KHR_draw_indirect_count"
   6099 
   6100 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
   6101 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
   6102 
   6103 #ifndef VK_NO_PROTOTYPES
   6104 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountKHR(
   6105     VkCommandBuffer                             commandBuffer,
   6106     VkBuffer                                    buffer,
   6107     VkDeviceSize                                offset,
   6108     VkBuffer                                    countBuffer,
   6109     VkDeviceSize                                countBufferOffset,
   6110     uint32_t                                    maxDrawCount,
   6111     uint32_t                                    stride);
   6112 
   6113 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR(
   6114     VkCommandBuffer                             commandBuffer,
   6115     VkBuffer                                    buffer,
   6116     VkDeviceSize                                offset,
   6117     VkBuffer                                    countBuffer,
   6118     VkDeviceSize                                countBufferOffset,
   6119     uint32_t                                    maxDrawCount,
   6120     uint32_t                                    stride);
   6121 #endif
   6122 
   6123 #define VK_KHR_8bit_storage 1
   6124 #define VK_KHR_8BIT_STORAGE_SPEC_VERSION  1
   6125 #define VK_KHR_8BIT_STORAGE_EXTENSION_NAME "VK_KHR_8bit_storage"
   6126 
   6127 typedef struct VkPhysicalDevice8BitStorageFeaturesKHR {
   6128     VkStructureType    sType;
   6129     void*              pNext;
   6130     VkBool32           storageBuffer8BitAccess;
   6131     VkBool32           uniformAndStorageBuffer8BitAccess;
   6132     VkBool32           storagePushConstant8;
   6133 } VkPhysicalDevice8BitStorageFeaturesKHR;
   6134 
   6135 
   6136 
   6137 #define VK_KHR_shader_atomic_int64 1
   6138 #define VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION 1
   6139 #define VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME "VK_KHR_shader_atomic_int64"
   6140 
   6141 typedef struct VkPhysicalDeviceShaderAtomicInt64FeaturesKHR {
   6142     VkStructureType    sType;
   6143     void*              pNext;
   6144     VkBool32           shaderBufferInt64Atomics;
   6145     VkBool32           shaderSharedInt64Atomics;
   6146 } VkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
   6147 
   6148 
   6149 
   6150 #define VK_KHR_driver_properties 1
   6151 #define VK_MAX_DRIVER_NAME_SIZE_KHR       256
   6152 #define VK_MAX_DRIVER_INFO_SIZE_KHR       256
   6153 #define VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION 1
   6154 #define VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME "VK_KHR_driver_properties"
   6155 
   6156 
   6157 typedef enum VkDriverIdKHR {
   6158     VK_DRIVER_ID_AMD_PROPRIETARY_KHR = 1,
   6159     VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = 2,
   6160     VK_DRIVER_ID_MESA_RADV_KHR = 3,
   6161     VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = 4,
   6162     VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = 5,
   6163     VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = 6,
   6164     VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = 7,
   6165     VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = 8,
   6166     VK_DRIVER_ID_ARM_PROPRIETARY_KHR = 9,
   6167     VK_DRIVER_ID_GOOGLE_PASTEL_KHR = 10,
   6168     VK_DRIVER_ID_BEGIN_RANGE_KHR = VK_DRIVER_ID_AMD_PROPRIETARY_KHR,
   6169     VK_DRIVER_ID_END_RANGE_KHR = VK_DRIVER_ID_GOOGLE_PASTEL_KHR,
   6170     VK_DRIVER_ID_RANGE_SIZE_KHR = (VK_DRIVER_ID_GOOGLE_PASTEL_KHR - VK_DRIVER_ID_AMD_PROPRIETARY_KHR + 1),
   6171     VK_DRIVER_ID_MAX_ENUM_KHR = 0x7FFFFFFF
   6172 } VkDriverIdKHR;
   6173 
   6174 typedef struct VkConformanceVersionKHR {
   6175     uint8_t    major;
   6176     uint8_t    minor;
   6177     uint8_t    subminor;
   6178     uint8_t    patch;
   6179 } VkConformanceVersionKHR;
   6180 
   6181 typedef struct VkPhysicalDeviceDriverPropertiesKHR {
   6182     VkStructureType            sType;
   6183     void*                      pNext;
   6184     VkDriverIdKHR              driverID;
   6185     char                       driverName[VK_MAX_DRIVER_NAME_SIZE_KHR];
   6186     char                       driverInfo[VK_MAX_DRIVER_INFO_SIZE_KHR];
   6187     VkConformanceVersionKHR    conformanceVersion;
   6188 } VkPhysicalDeviceDriverPropertiesKHR;
   6189 
   6190 
   6191 
   6192 #define VK_KHR_shader_float_controls 1
   6193 #define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 1
   6194 #define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls"
   6195 
   6196 typedef struct VkPhysicalDeviceFloatControlsPropertiesKHR {
   6197     VkStructureType    sType;
   6198     void*              pNext;
   6199     VkBool32           separateDenormSettings;
   6200     VkBool32           separateRoundingModeSettings;
   6201     VkBool32           shaderSignedZeroInfNanPreserveFloat16;
   6202     VkBool32           shaderSignedZeroInfNanPreserveFloat32;
   6203     VkBool32           shaderSignedZeroInfNanPreserveFloat64;
   6204     VkBool32           shaderDenormPreserveFloat16;
   6205     VkBool32           shaderDenormPreserveFloat32;
   6206     VkBool32           shaderDenormPreserveFloat64;
   6207     VkBool32           shaderDenormFlushToZeroFloat16;
   6208     VkBool32           shaderDenormFlushToZeroFloat32;
   6209     VkBool32           shaderDenormFlushToZeroFloat64;
   6210     VkBool32           shaderRoundingModeRTEFloat16;
   6211     VkBool32           shaderRoundingModeRTEFloat32;
   6212     VkBool32           shaderRoundingModeRTEFloat64;
   6213     VkBool32           shaderRoundingModeRTZFloat16;
   6214     VkBool32           shaderRoundingModeRTZFloat32;
   6215     VkBool32           shaderRoundingModeRTZFloat64;
   6216 } VkPhysicalDeviceFloatControlsPropertiesKHR;
   6217 
   6218 
   6219 
   6220 #define VK_KHR_depth_stencil_resolve 1
   6221 #define VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION 1
   6222 #define VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME "VK_KHR_depth_stencil_resolve"
   6223 
   6224 
   6225 typedef enum VkResolveModeFlagBitsKHR {
   6226     VK_RESOLVE_MODE_NONE_KHR = 0,
   6227     VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = 0x00000001,
   6228     VK_RESOLVE_MODE_AVERAGE_BIT_KHR = 0x00000002,
   6229     VK_RESOLVE_MODE_MIN_BIT_KHR = 0x00000004,
   6230     VK_RESOLVE_MODE_MAX_BIT_KHR = 0x00000008,
   6231     VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
   6232 } VkResolveModeFlagBitsKHR;
   6233 typedef VkFlags VkResolveModeFlagsKHR;
   6234 
   6235 typedef struct VkSubpassDescriptionDepthStencilResolveKHR {
   6236     VkStructureType                     sType;
   6237     const void*                         pNext;
   6238     VkResolveModeFlagBitsKHR            depthResolveMode;
   6239     VkResolveModeFlagBitsKHR            stencilResolveMode;
   6240     const VkAttachmentReference2KHR*    pDepthStencilResolveAttachment;
   6241 } VkSubpassDescriptionDepthStencilResolveKHR;
   6242 
   6243 typedef struct VkPhysicalDeviceDepthStencilResolvePropertiesKHR {
   6244     VkStructureType          sType;
   6245     void*                    pNext;
   6246     VkResolveModeFlagsKHR    supportedDepthResolveModes;
   6247     VkResolveModeFlagsKHR    supportedStencilResolveModes;
   6248     VkBool32                 independentResolveNone;
   6249     VkBool32                 independentResolve;
   6250 } VkPhysicalDeviceDepthStencilResolvePropertiesKHR;
   6251 
   6252 
   6253 
   6254 #define VK_KHR_swapchain_mutable_format 1
   6255 #define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION 1
   6256 #define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME "VK_KHR_swapchain_mutable_format"
   6257 
   6258 
   6259 #define VK_KHR_vulkan_memory_model 1
   6260 #define VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION 3
   6261 #define VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME "VK_KHR_vulkan_memory_model"
   6262 
   6263 typedef struct VkPhysicalDeviceVulkanMemoryModelFeaturesKHR {
   6264     VkStructureType    sType;
   6265     void*              pNext;
   6266     VkBool32           vulkanMemoryModel;
   6267     VkBool32           vulkanMemoryModelDeviceScope;
   6268     VkBool32           vulkanMemoryModelAvailabilityVisibilityChains;
   6269 } VkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
   6270 
   6271 
   6272 
   6273 #define VK_EXT_debug_report 1
   6274 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
   6275 
   6276 #define VK_EXT_DEBUG_REPORT_SPEC_VERSION  9
   6277 #define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report"
   6278 
   6279 
   6280 typedef enum VkDebugReportObjectTypeEXT {
   6281     VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
   6282     VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
   6283     VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
   6284     VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,
   6285     VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,
   6286     VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,
   6287     VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,
   6288     VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,
   6289     VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,
   6290     VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,
   6291     VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,
   6292     VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,
   6293     VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,
   6294     VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,
   6295     VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,
   6296     VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,
   6297     VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,
   6298     VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,
   6299     VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,
   6300     VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,
   6301     VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,
   6302     VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,
   6303     VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,
   6304     VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,
   6305     VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,
   6306     VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,
   6307     VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
   6308     VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
   6309     VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28,
   6310     VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29,
   6311     VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,
   6312     VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31,
   6313     VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32,
   6314     VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33,
   6315     VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000,
   6316     VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000,
   6317     VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000,
   6318     VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,
   6319     VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT,
   6320     VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT,
   6321     VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT,
   6322     VK_DEBUG_REPORT_OBJECT_TYPE_BEGIN_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
   6323     VK_DEBUG_REPORT_OBJECT_TYPE_END_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT,
   6324     VK_DEBUG_REPORT_OBJECT_TYPE_RANGE_SIZE_EXT = (VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT - VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT + 1),
   6325     VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
   6326 } VkDebugReportObjectTypeEXT;
   6327 
   6328 
   6329 typedef enum VkDebugReportFlagBitsEXT {
   6330     VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,
   6331     VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002,
   6332     VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004,
   6333     VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008,
   6334     VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010,
   6335     VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
   6336 } VkDebugReportFlagBitsEXT;
   6337 typedef VkFlags VkDebugReportFlagsEXT;
   6338 
   6339 typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)(
   6340     VkDebugReportFlagsEXT                       flags,
   6341     VkDebugReportObjectTypeEXT                  objectType,
   6342     uint64_t                                    object,
   6343     size_t                                      location,
   6344     int32_t                                     messageCode,
   6345     const char*                                 pLayerPrefix,
   6346     const char*                                 pMessage,
   6347     void*                                       pUserData);
   6348 
   6349 typedef struct VkDebugReportCallbackCreateInfoEXT {
   6350     VkStructureType                 sType;
   6351     const void*                     pNext;
   6352     VkDebugReportFlagsEXT           flags;
   6353     PFN_vkDebugReportCallbackEXT    pfnCallback;
   6354     void*                           pUserData;
   6355 } VkDebugReportCallbackCreateInfoEXT;
   6356 
   6357 
   6358 typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugReportCallbackEXT)(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback);
   6359 typedef void (VKAPI_PTR *PFN_vkDestroyDebugReportCallbackEXT)(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator);
   6360 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);
   6361 
   6362 #ifndef VK_NO_PROTOTYPES
   6363 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugReportCallbackEXT(
   6364     VkInstance                                  instance,
   6365     const VkDebugReportCallbackCreateInfoEXT*   pCreateInfo,
   6366     const VkAllocationCallbacks*                pAllocator,
   6367     VkDebugReportCallbackEXT*                   pCallback);
   6368 
   6369 VKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackEXT(
   6370     VkInstance                                  instance,
   6371     VkDebugReportCallbackEXT                    callback,
   6372     const VkAllocationCallbacks*                pAllocator);
   6373 
   6374 VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT(
   6375     VkInstance                                  instance,
   6376     VkDebugReportFlagsEXT                       flags,
   6377     VkDebugReportObjectTypeEXT                  objectType,
   6378     uint64_t                                    object,
   6379     size_t                                      location,
   6380     int32_t                                     messageCode,
   6381     const char*                                 pLayerPrefix,
   6382     const char*                                 pMessage);
   6383 #endif
   6384 
   6385 #define VK_NV_glsl_shader 1
   6386 #define VK_NV_GLSL_SHADER_SPEC_VERSION    1
   6387 #define VK_NV_GLSL_SHADER_EXTENSION_NAME  "VK_NV_glsl_shader"
   6388 
   6389 
   6390 #define VK_EXT_depth_range_unrestricted 1
   6391 #define VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION 1
   6392 #define VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME "VK_EXT_depth_range_unrestricted"
   6393 
   6394 
   6395 #define VK_IMG_filter_cubic 1
   6396 #define VK_IMG_FILTER_CUBIC_SPEC_VERSION  1
   6397 #define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic"
   6398 
   6399 
   6400 #define VK_AMD_rasterization_order 1
   6401 #define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1
   6402 #define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME "VK_AMD_rasterization_order"
   6403 
   6404 
   6405 typedef enum VkRasterizationOrderAMD {
   6406     VK_RASTERIZATION_ORDER_STRICT_AMD = 0,
   6407     VK_RASTERIZATION_ORDER_RELAXED_AMD = 1,
   6408     VK_RASTERIZATION_ORDER_BEGIN_RANGE_AMD = VK_RASTERIZATION_ORDER_STRICT_AMD,
   6409     VK_RASTERIZATION_ORDER_END_RANGE_AMD = VK_RASTERIZATION_ORDER_RELAXED_AMD,
   6410     VK_RASTERIZATION_ORDER_RANGE_SIZE_AMD = (VK_RASTERIZATION_ORDER_RELAXED_AMD - VK_RASTERIZATION_ORDER_STRICT_AMD + 1),
   6411     VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF
   6412 } VkRasterizationOrderAMD;
   6413 
   6414 typedef struct VkPipelineRasterizationStateRasterizationOrderAMD {
   6415     VkStructureType            sType;
   6416     const void*                pNext;
   6417     VkRasterizationOrderAMD    rasterizationOrder;
   6418 } VkPipelineRasterizationStateRasterizationOrderAMD;
   6419 
   6420 
   6421 
   6422 #define VK_AMD_shader_trinary_minmax 1
   6423 #define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1
   6424 #define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax"
   6425 
   6426 
   6427 #define VK_AMD_shader_explicit_vertex_parameter 1
   6428 #define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1
   6429 #define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter"
   6430 
   6431 
   6432 #define VK_EXT_debug_marker 1
   6433 #define VK_EXT_DEBUG_MARKER_SPEC_VERSION  4
   6434 #define VK_EXT_DEBUG_MARKER_EXTENSION_NAME "VK_EXT_debug_marker"
   6435 
   6436 typedef struct VkDebugMarkerObjectNameInfoEXT {
   6437     VkStructureType               sType;
   6438     const void*                   pNext;
   6439     VkDebugReportObjectTypeEXT    objectType;
   6440     uint64_t                      object;
   6441     const char*                   pObjectName;
   6442 } VkDebugMarkerObjectNameInfoEXT;
   6443 
   6444 typedef struct VkDebugMarkerObjectTagInfoEXT {
   6445     VkStructureType               sType;
   6446     const void*                   pNext;
   6447     VkDebugReportObjectTypeEXT    objectType;
   6448     uint64_t                      object;
   6449     uint64_t                      tagName;
   6450     size_t                        tagSize;
   6451     const void*                   pTag;
   6452 } VkDebugMarkerObjectTagInfoEXT;
   6453 
   6454 typedef struct VkDebugMarkerMarkerInfoEXT {
   6455     VkStructureType    sType;
   6456     const void*        pNext;
   6457     const char*        pMarkerName;
   6458     float              color[4];
   6459 } VkDebugMarkerMarkerInfoEXT;
   6460 
   6461 
   6462 typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectTagEXT)(VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo);
   6463 typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectNameEXT)(VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo);
   6464 typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
   6465 typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerEndEXT)(VkCommandBuffer commandBuffer);
   6466 typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
   6467 
   6468 #ifndef VK_NO_PROTOTYPES
   6469 VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT(
   6470     VkDevice                                    device,
   6471     const VkDebugMarkerObjectTagInfoEXT*        pTagInfo);
   6472 
   6473 VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT(
   6474     VkDevice                                    device,
   6475     const VkDebugMarkerObjectNameInfoEXT*       pNameInfo);
   6476 
   6477 VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerBeginEXT(
   6478     VkCommandBuffer                             commandBuffer,
   6479     const VkDebugMarkerMarkerInfoEXT*           pMarkerInfo);
   6480 
   6481 VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerEndEXT(
   6482     VkCommandBuffer                             commandBuffer);
   6483 
   6484 VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT(
   6485     VkCommandBuffer                             commandBuffer,
   6486     const VkDebugMarkerMarkerInfoEXT*           pMarkerInfo);
   6487 #endif
   6488 
   6489 #define VK_AMD_gcn_shader 1
   6490 #define VK_AMD_GCN_SHADER_SPEC_VERSION    1
   6491 #define VK_AMD_GCN_SHADER_EXTENSION_NAME  "VK_AMD_gcn_shader"
   6492 
   6493 
   6494 #define VK_NV_dedicated_allocation 1
   6495 #define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1
   6496 #define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation"
   6497 
   6498 typedef struct VkDedicatedAllocationImageCreateInfoNV {
   6499     VkStructureType    sType;
   6500     const void*        pNext;
   6501     VkBool32           dedicatedAllocation;
   6502 } VkDedicatedAllocationImageCreateInfoNV;
   6503 
   6504 typedef struct VkDedicatedAllocationBufferCreateInfoNV {
   6505     VkStructureType    sType;
   6506     const void*        pNext;
   6507     VkBool32           dedicatedAllocation;
   6508 } VkDedicatedAllocationBufferCreateInfoNV;
   6509 
   6510 typedef struct VkDedicatedAllocationMemoryAllocateInfoNV {
   6511     VkStructureType    sType;
   6512     const void*        pNext;
   6513     VkImage            image;
   6514     VkBuffer           buffer;
   6515 } VkDedicatedAllocationMemoryAllocateInfoNV;
   6516 
   6517 
   6518 
   6519 #define VK_EXT_transform_feedback 1
   6520 #define VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION 1
   6521 #define VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME "VK_EXT_transform_feedback"
   6522 
   6523 typedef VkFlags VkPipelineRasterizationStateStreamCreateFlagsEXT;
   6524 
   6525 typedef struct VkPhysicalDeviceTransformFeedbackFeaturesEXT {
   6526     VkStructureType    sType;
   6527     void*              pNext;
   6528     VkBool32           transformFeedback;
   6529     VkBool32           geometryStreams;
   6530 } VkPhysicalDeviceTransformFeedbackFeaturesEXT;
   6531 
   6532 typedef struct VkPhysicalDeviceTransformFeedbackPropertiesEXT {
   6533     VkStructureType    sType;
   6534     void*              pNext;
   6535     uint32_t           maxTransformFeedbackStreams;
   6536     uint32_t           maxTransformFeedbackBuffers;
   6537     VkDeviceSize       maxTransformFeedbackBufferSize;
   6538     uint32_t           maxTransformFeedbackStreamDataSize;
   6539     uint32_t           maxTransformFeedbackBufferDataSize;
   6540     uint32_t           maxTransformFeedbackBufferDataStride;
   6541     VkBool32           transformFeedbackQueries;
   6542     VkBool32           transformFeedbackStreamsLinesTriangles;
   6543     VkBool32           transformFeedbackRasterizationStreamSelect;
   6544     VkBool32           transformFeedbackDraw;
   6545 } VkPhysicalDeviceTransformFeedbackPropertiesEXT;
   6546 
   6547 typedef struct VkPipelineRasterizationStateStreamCreateInfoEXT {
   6548     VkStructureType                                     sType;
   6549     const void*                                         pNext;
   6550     VkPipelineRasterizationStateStreamCreateFlagsEXT    flags;
   6551     uint32_t                                            rasterizationStream;
   6552 } VkPipelineRasterizationStateStreamCreateInfoEXT;
   6553 
   6554 
   6555 typedef void (VKAPI_PTR *PFN_vkCmdBindTransformFeedbackBuffersEXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes);
   6556 typedef void (VKAPI_PTR *PFN_vkCmdBeginTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets);
   6557 typedef void (VKAPI_PTR *PFN_vkCmdEndTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets);
   6558 typedef void (VKAPI_PTR *PFN_vkCmdBeginQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags, uint32_t index);
   6559 typedef void (VKAPI_PTR *PFN_vkCmdEndQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index);
   6560 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectByteCountEXT)(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride);
   6561 
   6562 #ifndef VK_NO_PROTOTYPES
   6563 VKAPI_ATTR void VKAPI_CALL vkCmdBindTransformFeedbackBuffersEXT(
   6564     VkCommandBuffer                             commandBuffer,
   6565     uint32_t                                    firstBinding,
   6566     uint32_t                                    bindingCount,
   6567     const VkBuffer*                             pBuffers,
   6568     const VkDeviceSize*                         pOffsets,
   6569     const VkDeviceSize*                         pSizes);
   6570 
   6571 VKAPI_ATTR void VKAPI_CALL vkCmdBeginTransformFeedbackEXT(
   6572     VkCommandBuffer                             commandBuffer,
   6573     uint32_t                                    firstCounterBuffer,
   6574     uint32_t                                    counterBufferCount,
   6575     const VkBuffer*                             pCounterBuffers,
   6576     const VkDeviceSize*                         pCounterBufferOffsets);
   6577 
   6578 VKAPI_ATTR void VKAPI_CALL vkCmdEndTransformFeedbackEXT(
   6579     VkCommandBuffer                             commandBuffer,
   6580     uint32_t                                    firstCounterBuffer,
   6581     uint32_t                                    counterBufferCount,
   6582     const VkBuffer*                             pCounterBuffers,
   6583     const VkDeviceSize*                         pCounterBufferOffsets);
   6584 
   6585 VKAPI_ATTR void VKAPI_CALL vkCmdBeginQueryIndexedEXT(
   6586     VkCommandBuffer                             commandBuffer,
   6587     VkQueryPool                                 queryPool,
   6588     uint32_t                                    query,
   6589     VkQueryControlFlags                         flags,
   6590     uint32_t                                    index);
   6591 
   6592 VKAPI_ATTR void VKAPI_CALL vkCmdEndQueryIndexedEXT(
   6593     VkCommandBuffer                             commandBuffer,
   6594     VkQueryPool                                 queryPool,
   6595     uint32_t                                    query,
   6596     uint32_t                                    index);
   6597 
   6598 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectByteCountEXT(
   6599     VkCommandBuffer                             commandBuffer,
   6600     uint32_t                                    instanceCount,
   6601     uint32_t                                    firstInstance,
   6602     VkBuffer                                    counterBuffer,
   6603     VkDeviceSize                                counterBufferOffset,
   6604     uint32_t                                    counterOffset,
   6605     uint32_t                                    vertexStride);
   6606 #endif
   6607 
   6608 #define VK_NVX_image_view_handle 1
   6609 #define VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION 1
   6610 #define VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME "VK_NVX_image_view_handle"
   6611 
   6612 typedef struct VkImageViewHandleInfoNVX {
   6613     VkStructureType     sType;
   6614     const void*         pNext;
   6615     VkImageView         imageView;
   6616     VkDescriptorType    descriptorType;
   6617     VkSampler           sampler;
   6618 } VkImageViewHandleInfoNVX;
   6619 
   6620 
   6621 typedef uint32_t (VKAPI_PTR *PFN_vkGetImageViewHandleNVX)(VkDevice device, const VkImageViewHandleInfoNVX* pInfo);
   6622 
   6623 #ifndef VK_NO_PROTOTYPES
   6624 VKAPI_ATTR uint32_t VKAPI_CALL vkGetImageViewHandleNVX(
   6625     VkDevice                                    device,
   6626     const VkImageViewHandleInfoNVX*             pInfo);
   6627 #endif
   6628 
   6629 #define VK_AMD_draw_indirect_count 1
   6630 #define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
   6631 #define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count"
   6632 
   6633 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
   6634 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
   6635 
   6636 #ifndef VK_NO_PROTOTYPES
   6637 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountAMD(
   6638     VkCommandBuffer                             commandBuffer,
   6639     VkBuffer                                    buffer,
   6640     VkDeviceSize                                offset,
   6641     VkBuffer                                    countBuffer,
   6642     VkDeviceSize                                countBufferOffset,
   6643     uint32_t                                    maxDrawCount,
   6644     uint32_t                                    stride);
   6645 
   6646 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD(
   6647     VkCommandBuffer                             commandBuffer,
   6648     VkBuffer                                    buffer,
   6649     VkDeviceSize                                offset,
   6650     VkBuffer                                    countBuffer,
   6651     VkDeviceSize                                countBufferOffset,
   6652     uint32_t                                    maxDrawCount,
   6653     uint32_t                                    stride);
   6654 #endif
   6655 
   6656 #define VK_AMD_negative_viewport_height 1
   6657 #define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1
   6658 #define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height"
   6659 
   6660 
   6661 #define VK_AMD_gpu_shader_half_float 1
   6662 #define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 1
   6663 #define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float"
   6664 
   6665 
   6666 #define VK_AMD_shader_ballot 1
   6667 #define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1
   6668 #define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot"
   6669 
   6670 
   6671 #define VK_AMD_texture_gather_bias_lod 1
   6672 #define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1
   6673 #define VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME "VK_AMD_texture_gather_bias_lod"
   6674 
   6675 typedef struct VkTextureLODGatherFormatPropertiesAMD {
   6676     VkStructureType    sType;
   6677     void*              pNext;
   6678     VkBool32           supportsTextureGatherLODBiasAMD;
   6679 } VkTextureLODGatherFormatPropertiesAMD;
   6680 
   6681 
   6682 
   6683 #define VK_AMD_shader_info 1
   6684 #define VK_AMD_SHADER_INFO_SPEC_VERSION   1
   6685 #define VK_AMD_SHADER_INFO_EXTENSION_NAME "VK_AMD_shader_info"
   6686 
   6687 
   6688 typedef enum VkShaderInfoTypeAMD {
   6689     VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0,
   6690     VK_SHADER_INFO_TYPE_BINARY_AMD = 1,
   6691     VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2,
   6692     VK_SHADER_INFO_TYPE_BEGIN_RANGE_AMD = VK_SHADER_INFO_TYPE_STATISTICS_AMD,
   6693     VK_SHADER_INFO_TYPE_END_RANGE_AMD = VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD,
   6694     VK_SHADER_INFO_TYPE_RANGE_SIZE_AMD = (VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD - VK_SHADER_INFO_TYPE_STATISTICS_AMD + 1),
   6695     VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 0x7FFFFFFF
   6696 } VkShaderInfoTypeAMD;
   6697 
   6698 typedef struct VkShaderResourceUsageAMD {
   6699     uint32_t    numUsedVgprs;
   6700     uint32_t    numUsedSgprs;
   6701     uint32_t    ldsSizePerLocalWorkGroup;
   6702     size_t      ldsUsageSizeInBytes;
   6703     size_t      scratchMemUsageInBytes;
   6704 } VkShaderResourceUsageAMD;
   6705 
   6706 typedef struct VkShaderStatisticsInfoAMD {
   6707     VkShaderStageFlags          shaderStageMask;
   6708     VkShaderResourceUsageAMD    resourceUsage;
   6709     uint32_t                    numPhysicalVgprs;
   6710     uint32_t                    numPhysicalSgprs;
   6711     uint32_t                    numAvailableVgprs;
   6712     uint32_t                    numAvailableSgprs;
   6713     uint32_t                    computeWorkGroupSize[3];
   6714 } VkShaderStatisticsInfoAMD;
   6715 
   6716 
   6717 typedef VkResult (VKAPI_PTR *PFN_vkGetShaderInfoAMD)(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo);
   6718 
   6719 #ifndef VK_NO_PROTOTYPES
   6720 VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInfoAMD(
   6721     VkDevice                                    device,
   6722     VkPipeline                                  pipeline,
   6723     VkShaderStageFlagBits                       shaderStage,
   6724     VkShaderInfoTypeAMD                         infoType,
   6725     size_t*                                     pInfoSize,
   6726     void*                                       pInfo);
   6727 #endif
   6728 
   6729 #define VK_AMD_shader_image_load_store_lod 1
   6730 #define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1
   6731 #define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME "VK_AMD_shader_image_load_store_lod"
   6732 
   6733 
   6734 #define VK_NV_corner_sampled_image 1
   6735 #define VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION 2
   6736 #define VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME "VK_NV_corner_sampled_image"
   6737 
   6738 typedef struct VkPhysicalDeviceCornerSampledImageFeaturesNV {
   6739     VkStructureType    sType;
   6740     void*              pNext;
   6741     VkBool32           cornerSampledImage;
   6742 } VkPhysicalDeviceCornerSampledImageFeaturesNV;
   6743 
   6744 
   6745 
   6746 #define VK_IMG_format_pvrtc 1
   6747 #define VK_IMG_FORMAT_PVRTC_SPEC_VERSION  1
   6748 #define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc"
   6749 
   6750 
   6751 #define VK_NV_external_memory_capabilities 1
   6752 #define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
   6753 #define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities"
   6754 
   6755 
   6756 typedef enum VkExternalMemoryHandleTypeFlagBitsNV {
   6757     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,
   6758     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,
   6759     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,
   6760     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,
   6761     VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
   6762 } VkExternalMemoryHandleTypeFlagBitsNV;
   6763 typedef VkFlags VkExternalMemoryHandleTypeFlagsNV;
   6764 
   6765 typedef enum VkExternalMemoryFeatureFlagBitsNV {
   6766     VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001,
   6767     VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002,
   6768     VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004,
   6769     VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
   6770 } VkExternalMemoryFeatureFlagBitsNV;
   6771 typedef VkFlags VkExternalMemoryFeatureFlagsNV;
   6772 
   6773 typedef struct VkExternalImageFormatPropertiesNV {
   6774     VkImageFormatProperties              imageFormatProperties;
   6775     VkExternalMemoryFeatureFlagsNV       externalMemoryFeatures;
   6776     VkExternalMemoryHandleTypeFlagsNV    exportFromImportedHandleTypes;
   6777     VkExternalMemoryHandleTypeFlagsNV    compatibleHandleTypes;
   6778 } VkExternalImageFormatPropertiesNV;
   6779 
   6780 
   6781 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
   6782 
   6783 #ifndef VK_NO_PROTOTYPES
   6784 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
   6785     VkPhysicalDevice                            physicalDevice,
   6786     VkFormat                                    format,
   6787     VkImageType                                 type,
   6788     VkImageTiling                               tiling,
   6789     VkImageUsageFlags                           usage,
   6790     VkImageCreateFlags                          flags,
   6791     VkExternalMemoryHandleTypeFlagsNV           externalHandleType,
   6792     VkExternalImageFormatPropertiesNV*          pExternalImageFormatProperties);
   6793 #endif
   6794 
   6795 #define VK_NV_external_memory 1
   6796 #define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1
   6797 #define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory"
   6798 
   6799 typedef struct VkExternalMemoryImageCreateInfoNV {
   6800     VkStructureType                      sType;
   6801     const void*                          pNext;
   6802     VkExternalMemoryHandleTypeFlagsNV    handleTypes;
   6803 } VkExternalMemoryImageCreateInfoNV;
   6804 
   6805 typedef struct VkExportMemoryAllocateInfoNV {
   6806     VkStructureType                      sType;
   6807     const void*                          pNext;
   6808     VkExternalMemoryHandleTypeFlagsNV    handleTypes;
   6809 } VkExportMemoryAllocateInfoNV;
   6810 
   6811 
   6812 
   6813 #define VK_EXT_validation_flags 1
   6814 #define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 1
   6815 #define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags"
   6816 
   6817 
   6818 typedef enum VkValidationCheckEXT {
   6819     VK_VALIDATION_CHECK_ALL_EXT = 0,
   6820     VK_VALIDATION_CHECK_SHADERS_EXT = 1,
   6821     VK_VALIDATION_CHECK_BEGIN_RANGE_EXT = VK_VALIDATION_CHECK_ALL_EXT,
   6822     VK_VALIDATION_CHECK_END_RANGE_EXT = VK_VALIDATION_CHECK_SHADERS_EXT,
   6823     VK_VALIDATION_CHECK_RANGE_SIZE_EXT = (VK_VALIDATION_CHECK_SHADERS_EXT - VK_VALIDATION_CHECK_ALL_EXT + 1),
   6824     VK_VALIDATION_CHECK_MAX_ENUM_EXT = 0x7FFFFFFF
   6825 } VkValidationCheckEXT;
   6826 
   6827 typedef struct VkValidationFlagsEXT {
   6828     VkStructureType                sType;
   6829     const void*                    pNext;
   6830     uint32_t                       disabledValidationCheckCount;
   6831     const VkValidationCheckEXT*    pDisabledValidationChecks;
   6832 } VkValidationFlagsEXT;
   6833 
   6834 
   6835 
   6836 #define VK_EXT_shader_subgroup_ballot 1
   6837 #define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1
   6838 #define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot"
   6839 
   6840 
   6841 #define VK_EXT_shader_subgroup_vote 1
   6842 #define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1
   6843 #define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote"
   6844 
   6845 
   6846 #define VK_EXT_astc_decode_mode 1
   6847 #define VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION 1
   6848 #define VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME "VK_EXT_astc_decode_mode"
   6849 
   6850 typedef struct VkImageViewASTCDecodeModeEXT {
   6851     VkStructureType    sType;
   6852     const void*        pNext;
   6853     VkFormat           decodeMode;
   6854 } VkImageViewASTCDecodeModeEXT;
   6855 
   6856 typedef struct VkPhysicalDeviceASTCDecodeFeaturesEXT {
   6857     VkStructureType    sType;
   6858     void*              pNext;
   6859     VkBool32           decodeModeSharedExponent;
   6860 } VkPhysicalDeviceASTCDecodeFeaturesEXT;
   6861 
   6862 
   6863 
   6864 #define VK_EXT_conditional_rendering 1
   6865 #define VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION 1
   6866 #define VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME "VK_EXT_conditional_rendering"
   6867 
   6868 
   6869 typedef enum VkConditionalRenderingFlagBitsEXT {
   6870     VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 0x00000001,
   6871     VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
   6872 } VkConditionalRenderingFlagBitsEXT;
   6873 typedef VkFlags VkConditionalRenderingFlagsEXT;
   6874 
   6875 typedef struct VkConditionalRenderingBeginInfoEXT {
   6876     VkStructureType                   sType;
   6877     const void*                       pNext;
   6878     VkBuffer                          buffer;
   6879     VkDeviceSize                      offset;
   6880     VkConditionalRenderingFlagsEXT    flags;
   6881 } VkConditionalRenderingBeginInfoEXT;
   6882 
   6883 typedef struct VkPhysicalDeviceConditionalRenderingFeaturesEXT {
   6884     VkStructureType    sType;
   6885     void*              pNext;
   6886     VkBool32           conditionalRendering;
   6887     VkBool32           inheritedConditionalRendering;
   6888 } VkPhysicalDeviceConditionalRenderingFeaturesEXT;
   6889 
   6890 typedef struct VkCommandBufferInheritanceConditionalRenderingInfoEXT {
   6891     VkStructureType    sType;
   6892     const void*        pNext;
   6893     VkBool32           conditionalRenderingEnable;
   6894 } VkCommandBufferInheritanceConditionalRenderingInfoEXT;
   6895 
   6896 
   6897 typedef void (VKAPI_PTR *PFN_vkCmdBeginConditionalRenderingEXT)(VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin);
   6898 typedef void (VKAPI_PTR *PFN_vkCmdEndConditionalRenderingEXT)(VkCommandBuffer commandBuffer);
   6899 
   6900 #ifndef VK_NO_PROTOTYPES
   6901 VKAPI_ATTR void VKAPI_CALL vkCmdBeginConditionalRenderingEXT(
   6902     VkCommandBuffer                             commandBuffer,
   6903     const VkConditionalRenderingBeginInfoEXT*   pConditionalRenderingBegin);
   6904 
   6905 VKAPI_ATTR void VKAPI_CALL vkCmdEndConditionalRenderingEXT(
   6906     VkCommandBuffer                             commandBuffer);
   6907 #endif
   6908 
   6909 #define VK_NVX_device_generated_commands 1
   6910 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkObjectTableNVX)
   6911 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNVX)
   6912 
   6913 #define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3
   6914 #define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands"
   6915 
   6916 
   6917 typedef enum VkIndirectCommandsTokenTypeNVX {
   6918     VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX = 0,
   6919     VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX = 1,
   6920     VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX = 2,
   6921     VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX = 3,
   6922     VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX = 4,
   6923     VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX = 5,
   6924     VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX = 6,
   6925     VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX = 7,
   6926     VK_INDIRECT_COMMANDS_TOKEN_TYPE_BEGIN_RANGE_NVX = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX,
   6927     VK_INDIRECT_COMMANDS_TOKEN_TYPE_END_RANGE_NVX = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX,
   6928     VK_INDIRECT_COMMANDS_TOKEN_TYPE_RANGE_SIZE_NVX = (VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX - VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX + 1),
   6929     VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NVX = 0x7FFFFFFF
   6930 } VkIndirectCommandsTokenTypeNVX;
   6931 
   6932 typedef enum VkObjectEntryTypeNVX {
   6933     VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX = 0,
   6934     VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX = 1,
   6935     VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX = 2,
   6936     VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX = 3,
   6937     VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX = 4,
   6938     VK_OBJECT_ENTRY_TYPE_BEGIN_RANGE_NVX = VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX,
   6939     VK_OBJECT_ENTRY_TYPE_END_RANGE_NVX = VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX,
   6940     VK_OBJECT_ENTRY_TYPE_RANGE_SIZE_NVX = (VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX - VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX + 1),
   6941     VK_OBJECT_ENTRY_TYPE_MAX_ENUM_NVX = 0x7FFFFFFF
   6942 } VkObjectEntryTypeNVX;
   6943 
   6944 
   6945 typedef enum VkIndirectCommandsLayoutUsageFlagBitsNVX {
   6946     VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = 0x00000001,
   6947     VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = 0x00000002,
   6948     VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = 0x00000004,
   6949     VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = 0x00000008,
   6950     VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NVX = 0x7FFFFFFF
   6951 } VkIndirectCommandsLayoutUsageFlagBitsNVX;
   6952 typedef VkFlags VkIndirectCommandsLayoutUsageFlagsNVX;
   6953 
   6954 typedef enum VkObjectEntryUsageFlagBitsNVX {
   6955     VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = 0x00000001,
   6956     VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = 0x00000002,
   6957     VK_OBJECT_ENTRY_USAGE_FLAG_BITS_MAX_ENUM_NVX = 0x7FFFFFFF
   6958 } VkObjectEntryUsageFlagBitsNVX;
   6959 typedef VkFlags VkObjectEntryUsageFlagsNVX;
   6960 
   6961 typedef struct VkDeviceGeneratedCommandsFeaturesNVX {
   6962     VkStructureType    sType;
   6963     const void*        pNext;
   6964     VkBool32           computeBindingPointSupport;
   6965 } VkDeviceGeneratedCommandsFeaturesNVX;
   6966 
   6967 typedef struct VkDeviceGeneratedCommandsLimitsNVX {
   6968     VkStructureType    sType;
   6969     const void*        pNext;
   6970     uint32_t           maxIndirectCommandsLayoutTokenCount;
   6971     uint32_t           maxObjectEntryCounts;
   6972     uint32_t           minSequenceCountBufferOffsetAlignment;
   6973     uint32_t           minSequenceIndexBufferOffsetAlignment;
   6974     uint32_t           minCommandsTokenBufferOffsetAlignment;
   6975 } VkDeviceGeneratedCommandsLimitsNVX;
   6976 
   6977 typedef struct VkIndirectCommandsTokenNVX {
   6978     VkIndirectCommandsTokenTypeNVX    tokenType;
   6979     VkBuffer                          buffer;
   6980     VkDeviceSize                      offset;
   6981 } VkIndirectCommandsTokenNVX;
   6982 
   6983 typedef struct VkIndirectCommandsLayoutTokenNVX {
   6984     VkIndirectCommandsTokenTypeNVX    tokenType;
   6985     uint32_t                          bindingUnit;
   6986     uint32_t                          dynamicCount;
   6987     uint32_t                          divisor;
   6988 } VkIndirectCommandsLayoutTokenNVX;
   6989 
   6990 typedef struct VkIndirectCommandsLayoutCreateInfoNVX {
   6991     VkStructureType                            sType;
   6992     const void*                                pNext;
   6993     VkPipelineBindPoint                        pipelineBindPoint;
   6994     VkIndirectCommandsLayoutUsageFlagsNVX      flags;
   6995     uint32_t                                   tokenCount;
   6996     const VkIndirectCommandsLayoutTokenNVX*    pTokens;
   6997 } VkIndirectCommandsLayoutCreateInfoNVX;
   6998 
   6999 typedef struct VkCmdProcessCommandsInfoNVX {
   7000     VkStructureType                      sType;
   7001     const void*                          pNext;
   7002     VkObjectTableNVX                     objectTable;
   7003     VkIndirectCommandsLayoutNVX          indirectCommandsLayout;
   7004     uint32_t                             indirectCommandsTokenCount;
   7005     const VkIndirectCommandsTokenNVX*    pIndirectCommandsTokens;
   7006     uint32_t                             maxSequencesCount;
   7007     VkCommandBuffer                      targetCommandBuffer;
   7008     VkBuffer                             sequencesCountBuffer;
   7009     VkDeviceSize                         sequencesCountOffset;
   7010     VkBuffer                             sequencesIndexBuffer;
   7011     VkDeviceSize                         sequencesIndexOffset;
   7012 } VkCmdProcessCommandsInfoNVX;
   7013 
   7014 typedef struct VkCmdReserveSpaceForCommandsInfoNVX {
   7015     VkStructureType                sType;
   7016     const void*                    pNext;
   7017     VkObjectTableNVX               objectTable;
   7018     VkIndirectCommandsLayoutNVX    indirectCommandsLayout;
   7019     uint32_t                       maxSequencesCount;
   7020 } VkCmdReserveSpaceForCommandsInfoNVX;
   7021 
   7022 typedef struct VkObjectTableCreateInfoNVX {
   7023     VkStructureType                      sType;
   7024     const void*                          pNext;
   7025     uint32_t                             objectCount;
   7026     const VkObjectEntryTypeNVX*          pObjectEntryTypes;
   7027     const uint32_t*                      pObjectEntryCounts;
   7028     const VkObjectEntryUsageFlagsNVX*    pObjectEntryUsageFlags;
   7029     uint32_t                             maxUniformBuffersPerDescriptor;
   7030     uint32_t                             maxStorageBuffersPerDescriptor;
   7031     uint32_t                             maxStorageImagesPerDescriptor;
   7032     uint32_t                             maxSampledImagesPerDescriptor;
   7033     uint32_t                             maxPipelineLayouts;
   7034 } VkObjectTableCreateInfoNVX;
   7035 
   7036 typedef struct VkObjectTableEntryNVX {
   7037     VkObjectEntryTypeNVX          type;
   7038     VkObjectEntryUsageFlagsNVX    flags;
   7039 } VkObjectTableEntryNVX;
   7040 
   7041 typedef struct VkObjectTablePipelineEntryNVX {
   7042     VkObjectEntryTypeNVX          type;
   7043     VkObjectEntryUsageFlagsNVX    flags;
   7044     VkPipeline                    pipeline;
   7045 } VkObjectTablePipelineEntryNVX;
   7046 
   7047 typedef struct VkObjectTableDescriptorSetEntryNVX {
   7048     VkObjectEntryTypeNVX          type;
   7049     VkObjectEntryUsageFlagsNVX    flags;
   7050     VkPipelineLayout              pipelineLayout;
   7051     VkDescriptorSet               descriptorSet;
   7052 } VkObjectTableDescriptorSetEntryNVX;
   7053 
   7054 typedef struct VkObjectTableVertexBufferEntryNVX {
   7055     VkObjectEntryTypeNVX          type;
   7056     VkObjectEntryUsageFlagsNVX    flags;
   7057     VkBuffer                      buffer;
   7058 } VkObjectTableVertexBufferEntryNVX;
   7059 
   7060 typedef struct VkObjectTableIndexBufferEntryNVX {
   7061     VkObjectEntryTypeNVX          type;
   7062     VkObjectEntryUsageFlagsNVX    flags;
   7063     VkBuffer                      buffer;
   7064     VkIndexType                   indexType;
   7065 } VkObjectTableIndexBufferEntryNVX;
   7066 
   7067 typedef struct VkObjectTablePushConstantEntryNVX {
   7068     VkObjectEntryTypeNVX          type;
   7069     VkObjectEntryUsageFlagsNVX    flags;
   7070     VkPipelineLayout              pipelineLayout;
   7071     VkShaderStageFlags            stageFlags;
   7072 } VkObjectTablePushConstantEntryNVX;
   7073 
   7074 
   7075 typedef void (VKAPI_PTR *PFN_vkCmdProcessCommandsNVX)(VkCommandBuffer commandBuffer, const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo);
   7076 typedef void (VKAPI_PTR *PFN_vkCmdReserveSpaceForCommandsNVX)(VkCommandBuffer commandBuffer, const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo);
   7077 typedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectCommandsLayoutNVX)(VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout);
   7078 typedef void (VKAPI_PTR *PFN_vkDestroyIndirectCommandsLayoutNVX)(VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator);
   7079 typedef VkResult (VKAPI_PTR *PFN_vkCreateObjectTableNVX)(VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable);
   7080 typedef void (VKAPI_PTR *PFN_vkDestroyObjectTableNVX)(VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator);
   7081 typedef VkResult (VKAPI_PTR *PFN_vkRegisterObjectsNVX)(VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectTableEntryNVX* const*    ppObjectTableEntries, const uint32_t* pObjectIndices);
   7082 typedef VkResult (VKAPI_PTR *PFN_vkUnregisterObjectsNVX)(VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices);
   7083 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX)(VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits);
   7084 
   7085 #ifndef VK_NO_PROTOTYPES
   7086 VKAPI_ATTR void VKAPI_CALL vkCmdProcessCommandsNVX(
   7087     VkCommandBuffer                             commandBuffer,
   7088     const VkCmdProcessCommandsInfoNVX*          pProcessCommandsInfo);
   7089 
   7090 VKAPI_ATTR void VKAPI_CALL vkCmdReserveSpaceForCommandsNVX(
   7091     VkCommandBuffer                             commandBuffer,
   7092     const VkCmdReserveSpaceForCommandsInfoNVX*  pReserveSpaceInfo);
   7093 
   7094 VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutNVX(
   7095     VkDevice                                    device,
   7096     const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
   7097     const VkAllocationCallbacks*                pAllocator,
   7098     VkIndirectCommandsLayoutNVX*                pIndirectCommandsLayout);
   7099 
   7100 VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutNVX(
   7101     VkDevice                                    device,
   7102     VkIndirectCommandsLayoutNVX                 indirectCommandsLayout,
   7103     const VkAllocationCallbacks*                pAllocator);
   7104 
   7105 VKAPI_ATTR VkResult VKAPI_CALL vkCreateObjectTableNVX(
   7106     VkDevice                                    device,
   7107     const VkObjectTableCreateInfoNVX*           pCreateInfo,
   7108     const VkAllocationCallbacks*                pAllocator,
   7109     VkObjectTableNVX*                           pObjectTable);
   7110 
   7111 VKAPI_ATTR void VKAPI_CALL vkDestroyObjectTableNVX(
   7112     VkDevice                                    device,
   7113     VkObjectTableNVX                            objectTable,
   7114     const VkAllocationCallbacks*                pAllocator);
   7115 
   7116 VKAPI_ATTR VkResult VKAPI_CALL vkRegisterObjectsNVX(
   7117     VkDevice                                    device,
   7118     VkObjectTableNVX                            objectTable,
   7119     uint32_t                                    objectCount,
   7120     const VkObjectTableEntryNVX* const*         ppObjectTableEntries,
   7121     const uint32_t*                             pObjectIndices);
   7122 
   7123 VKAPI_ATTR VkResult VKAPI_CALL vkUnregisterObjectsNVX(
   7124     VkDevice                                    device,
   7125     VkObjectTableNVX                            objectTable,
   7126     uint32_t                                    objectCount,
   7127     const VkObjectEntryTypeNVX*                 pObjectEntryTypes,
   7128     const uint32_t*                             pObjectIndices);
   7129 
   7130 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
   7131     VkPhysicalDevice                            physicalDevice,
   7132     VkDeviceGeneratedCommandsFeaturesNVX*       pFeatures,
   7133     VkDeviceGeneratedCommandsLimitsNVX*         pLimits);
   7134 #endif
   7135 
   7136 #define VK_NV_clip_space_w_scaling 1
   7137 #define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1
   7138 #define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling"
   7139 
   7140 typedef struct VkViewportWScalingNV {
   7141     float    xcoeff;
   7142     float    ycoeff;
   7143 } VkViewportWScalingNV;
   7144 
   7145 typedef struct VkPipelineViewportWScalingStateCreateInfoNV {
   7146     VkStructureType                sType;
   7147     const void*                    pNext;
   7148     VkBool32                       viewportWScalingEnable;
   7149     uint32_t                       viewportCount;
   7150     const VkViewportWScalingNV*    pViewportWScalings;
   7151 } VkPipelineViewportWScalingStateCreateInfoNV;
   7152 
   7153 
   7154 typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings);
   7155 
   7156 #ifndef VK_NO_PROTOTYPES
   7157 VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWScalingNV(
   7158     VkCommandBuffer                             commandBuffer,
   7159     uint32_t                                    firstViewport,
   7160     uint32_t                                    viewportCount,
   7161     const VkViewportWScalingNV*                 pViewportWScalings);
   7162 #endif
   7163 
   7164 #define VK_EXT_direct_mode_display 1
   7165 #define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1
   7166 #define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display"
   7167 
   7168 typedef VkResult (VKAPI_PTR *PFN_vkReleaseDisplayEXT)(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
   7169 
   7170 #ifndef VK_NO_PROTOTYPES
   7171 VKAPI_ATTR VkResult VKAPI_CALL vkReleaseDisplayEXT(
   7172     VkPhysicalDevice                            physicalDevice,
   7173     VkDisplayKHR                                display);
   7174 #endif
   7175 
   7176 #define VK_EXT_display_surface_counter 1
   7177 #define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1
   7178 #define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter"
   7179 
   7180 
   7181 typedef enum VkSurfaceCounterFlagBitsEXT {
   7182     VK_SURFACE_COUNTER_VBLANK_EXT = 0x00000001,
   7183     VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
   7184 } VkSurfaceCounterFlagBitsEXT;
   7185 typedef VkFlags VkSurfaceCounterFlagsEXT;
   7186 
   7187 typedef struct VkSurfaceCapabilities2EXT {
   7188     VkStructureType                  sType;
   7189     void*                            pNext;
   7190     uint32_t                         minImageCount;
   7191     uint32_t                         maxImageCount;
   7192     VkExtent2D                       currentExtent;
   7193     VkExtent2D                       minImageExtent;
   7194     VkExtent2D                       maxImageExtent;
   7195     uint32_t                         maxImageArrayLayers;
   7196     VkSurfaceTransformFlagsKHR       supportedTransforms;
   7197     VkSurfaceTransformFlagBitsKHR    currentTransform;
   7198     VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
   7199     VkImageUsageFlags                supportedUsageFlags;
   7200     VkSurfaceCounterFlagsEXT         supportedSurfaceCounters;
   7201 } VkSurfaceCapabilities2EXT;
   7202 
   7203 
   7204 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
   7205 
   7206 #ifndef VK_NO_PROTOTYPES
   7207 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT(
   7208     VkPhysicalDevice                            physicalDevice,
   7209     VkSurfaceKHR                                surface,
   7210     VkSurfaceCapabilities2EXT*                  pSurfaceCapabilities);
   7211 #endif
   7212 
   7213 #define VK_EXT_display_control 1
   7214 #define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1
   7215 #define VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME "VK_EXT_display_control"
   7216 
   7217 
   7218 typedef enum VkDisplayPowerStateEXT {
   7219     VK_DISPLAY_POWER_STATE_OFF_EXT = 0,
   7220     VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,
   7221     VK_DISPLAY_POWER_STATE_ON_EXT = 2,
   7222     VK_DISPLAY_POWER_STATE_BEGIN_RANGE_EXT = VK_DISPLAY_POWER_STATE_OFF_EXT,
   7223     VK_DISPLAY_POWER_STATE_END_RANGE_EXT = VK_DISPLAY_POWER_STATE_ON_EXT,
   7224     VK_DISPLAY_POWER_STATE_RANGE_SIZE_EXT = (VK_DISPLAY_POWER_STATE_ON_EXT - VK_DISPLAY_POWER_STATE_OFF_EXT + 1),
   7225     VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 0x7FFFFFFF
   7226 } VkDisplayPowerStateEXT;
   7227 
   7228 typedef enum VkDeviceEventTypeEXT {
   7229     VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0,
   7230     VK_DEVICE_EVENT_TYPE_BEGIN_RANGE_EXT = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT,
   7231     VK_DEVICE_EVENT_TYPE_END_RANGE_EXT = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT,
   7232     VK_DEVICE_EVENT_TYPE_RANGE_SIZE_EXT = (VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT + 1),
   7233     VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
   7234 } VkDeviceEventTypeEXT;
   7235 
   7236 typedef enum VkDisplayEventTypeEXT {
   7237     VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,
   7238     VK_DISPLAY_EVENT_TYPE_BEGIN_RANGE_EXT = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT,
   7239     VK_DISPLAY_EVENT_TYPE_END_RANGE_EXT = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT,
   7240     VK_DISPLAY_EVENT_TYPE_RANGE_SIZE_EXT = (VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT + 1),
   7241     VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
   7242 } VkDisplayEventTypeEXT;
   7243 
   7244 typedef struct VkDisplayPowerInfoEXT {
   7245     VkStructureType           sType;
   7246     const void*               pNext;
   7247     VkDisplayPowerStateEXT    powerState;
   7248 } VkDisplayPowerInfoEXT;
   7249 
   7250 typedef struct VkDeviceEventInfoEXT {
   7251     VkStructureType         sType;
   7252     const void*             pNext;
   7253     VkDeviceEventTypeEXT    deviceEvent;
   7254 } VkDeviceEventInfoEXT;
   7255 
   7256 typedef struct VkDisplayEventInfoEXT {
   7257     VkStructureType          sType;
   7258     const void*              pNext;
   7259     VkDisplayEventTypeEXT    displayEvent;
   7260 } VkDisplayEventInfoEXT;
   7261 
   7262 typedef struct VkSwapchainCounterCreateInfoEXT {
   7263     VkStructureType             sType;
   7264     const void*                 pNext;
   7265     VkSurfaceCounterFlagsEXT    surfaceCounters;
   7266 } VkSwapchainCounterCreateInfoEXT;
   7267 
   7268 
   7269 typedef VkResult (VKAPI_PTR *PFN_vkDisplayPowerControlEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
   7270 typedef VkResult (VKAPI_PTR *PFN_vkRegisterDeviceEventEXT)(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
   7271 typedef VkResult (VKAPI_PTR *PFN_vkRegisterDisplayEventEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
   7272 typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainCounterEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue);
   7273 
   7274 #ifndef VK_NO_PROTOTYPES
   7275 VKAPI_ATTR VkResult VKAPI_CALL vkDisplayPowerControlEXT(
   7276     VkDevice                                    device,
   7277     VkDisplayKHR                                display,
   7278     const VkDisplayPowerInfoEXT*                pDisplayPowerInfo);
   7279 
   7280 VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDeviceEventEXT(
   7281     VkDevice                                    device,
   7282     const VkDeviceEventInfoEXT*                 pDeviceEventInfo,
   7283     const VkAllocationCallbacks*                pAllocator,
   7284     VkFence*                                    pFence);
   7285 
   7286 VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDisplayEventEXT(
   7287     VkDevice                                    device,
   7288     VkDisplayKHR                                display,
   7289     const VkDisplayEventInfoEXT*                pDisplayEventInfo,
   7290     const VkAllocationCallbacks*                pAllocator,
   7291     VkFence*                                    pFence);
   7292 
   7293 VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainCounterEXT(
   7294     VkDevice                                    device,
   7295     VkSwapchainKHR                              swapchain,
   7296     VkSurfaceCounterFlagBitsEXT                 counter,
   7297     uint64_t*                                   pCounterValue);
   7298 #endif
   7299 
   7300 #define VK_GOOGLE_display_timing 1
   7301 #define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1
   7302 #define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing"
   7303 
   7304 typedef struct VkRefreshCycleDurationGOOGLE {
   7305     uint64_t    refreshDuration;
   7306 } VkRefreshCycleDurationGOOGLE;
   7307 
   7308 typedef struct VkPastPresentationTimingGOOGLE {
   7309     uint32_t    presentID;
   7310     uint64_t    desiredPresentTime;
   7311     uint64_t    actualPresentTime;
   7312     uint64_t    earliestPresentTime;
   7313     uint64_t    presentMargin;
   7314 } VkPastPresentationTimingGOOGLE;
   7315 
   7316 typedef struct VkPresentTimeGOOGLE {
   7317     uint32_t    presentID;
   7318     uint64_t    desiredPresentTime;
   7319 } VkPresentTimeGOOGLE;
   7320 
   7321 typedef struct VkPresentTimesInfoGOOGLE {
   7322     VkStructureType               sType;
   7323     const void*                   pNext;
   7324     uint32_t                      swapchainCount;
   7325     const VkPresentTimeGOOGLE*    pTimes;
   7326 } VkPresentTimesInfoGOOGLE;
   7327 
   7328 
   7329 typedef VkResult (VKAPI_PTR *PFN_vkGetRefreshCycleDurationGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
   7330 typedef VkResult (VKAPI_PTR *PFN_vkGetPastPresentationTimingGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings);
   7331 
   7332 #ifndef VK_NO_PROTOTYPES
   7333 VKAPI_ATTR VkResult VKAPI_CALL vkGetRefreshCycleDurationGOOGLE(
   7334     VkDevice                                    device,
   7335     VkSwapchainKHR                              swapchain,
   7336     VkRefreshCycleDurationGOOGLE*               pDisplayTimingProperties);
   7337 
   7338 VKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingGOOGLE(
   7339     VkDevice                                    device,
   7340     VkSwapchainKHR                              swapchain,
   7341     uint32_t*                                   pPresentationTimingCount,
   7342     VkPastPresentationTimingGOOGLE*             pPresentationTimings);
   7343 #endif
   7344 
   7345 #define VK_NV_sample_mask_override_coverage 1
   7346 #define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1
   7347 #define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage"
   7348 
   7349 
   7350 #define VK_NV_geometry_shader_passthrough 1
   7351 #define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1
   7352 #define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough"
   7353 
   7354 
   7355 #define VK_NV_viewport_array2 1
   7356 #define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION 1
   7357 #define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME "VK_NV_viewport_array2"
   7358 
   7359 
   7360 #define VK_NVX_multiview_per_view_attributes 1
   7361 #define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1
   7362 #define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes"
   7363 
   7364 typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
   7365     VkStructureType    sType;
   7366     void*              pNext;
   7367     VkBool32           perViewPositionAllComponents;
   7368 } VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
   7369 
   7370 
   7371 
   7372 #define VK_NV_viewport_swizzle 1
   7373 #define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1
   7374 #define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle"
   7375 
   7376 
   7377 typedef enum VkViewportCoordinateSwizzleNV {
   7378     VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0,
   7379     VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1,
   7380     VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2,
   7381     VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3,
   7382     VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4,
   7383     VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5,
   7384     VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6,
   7385     VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7,
   7386     VK_VIEWPORT_COORDINATE_SWIZZLE_BEGIN_RANGE_NV = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
   7387     VK_VIEWPORT_COORDINATE_SWIZZLE_END_RANGE_NV = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV,
   7388     VK_VIEWPORT_COORDINATE_SWIZZLE_RANGE_SIZE_NV = (VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV + 1),
   7389     VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 0x7FFFFFFF
   7390 } VkViewportCoordinateSwizzleNV;
   7391 
   7392 typedef VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV;
   7393 
   7394 typedef struct VkViewportSwizzleNV {
   7395     VkViewportCoordinateSwizzleNV    x;
   7396     VkViewportCoordinateSwizzleNV    y;
   7397     VkViewportCoordinateSwizzleNV    z;
   7398     VkViewportCoordinateSwizzleNV    w;
   7399 } VkViewportSwizzleNV;
   7400 
   7401 typedef struct VkPipelineViewportSwizzleStateCreateInfoNV {
   7402     VkStructureType                                sType;
   7403     const void*                                    pNext;
   7404     VkPipelineViewportSwizzleStateCreateFlagsNV    flags;
   7405     uint32_t                                       viewportCount;
   7406     const VkViewportSwizzleNV*                     pViewportSwizzles;
   7407 } VkPipelineViewportSwizzleStateCreateInfoNV;
   7408 
   7409 
   7410 
   7411 #define VK_EXT_discard_rectangles 1
   7412 #define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1
   7413 #define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
   7414 
   7415 
   7416 typedef enum VkDiscardRectangleModeEXT {
   7417     VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,
   7418     VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,
   7419     VK_DISCARD_RECTANGLE_MODE_BEGIN_RANGE_EXT = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
   7420     VK_DISCARD_RECTANGLE_MODE_END_RANGE_EXT = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT,
   7421     VK_DISCARD_RECTANGLE_MODE_RANGE_SIZE_EXT = (VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT - VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT + 1),
   7422     VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
   7423 } VkDiscardRectangleModeEXT;
   7424 
   7425 typedef VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT;
   7426 
   7427 typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT {
   7428     VkStructureType    sType;
   7429     void*              pNext;
   7430     uint32_t           maxDiscardRectangles;
   7431 } VkPhysicalDeviceDiscardRectanglePropertiesEXT;
   7432 
   7433 typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT {
   7434     VkStructureType                                  sType;
   7435     const void*                                      pNext;
   7436     VkPipelineDiscardRectangleStateCreateFlagsEXT    flags;
   7437     VkDiscardRectangleModeEXT                        discardRectangleMode;
   7438     uint32_t                                         discardRectangleCount;
   7439     const VkRect2D*                                  pDiscardRectangles;
   7440 } VkPipelineDiscardRectangleStateCreateInfoEXT;
   7441 
   7442 
   7443 typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEXT)(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles);
   7444 
   7445 #ifndef VK_NO_PROTOTYPES
   7446 VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT(
   7447     VkCommandBuffer                             commandBuffer,
   7448     uint32_t                                    firstDiscardRectangle,
   7449     uint32_t                                    discardRectangleCount,
   7450     const VkRect2D*                             pDiscardRectangles);
   7451 #endif
   7452 
   7453 #define VK_EXT_conservative_rasterization 1
   7454 #define VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION 1
   7455 #define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME "VK_EXT_conservative_rasterization"
   7456 
   7457 
   7458 typedef enum VkConservativeRasterizationModeEXT {
   7459     VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0,
   7460     VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1,
   7461     VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2,
   7462     VK_CONSERVATIVE_RASTERIZATION_MODE_BEGIN_RANGE_EXT = VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT,
   7463     VK_CONSERVATIVE_RASTERIZATION_MODE_END_RANGE_EXT = VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT,
   7464     VK_CONSERVATIVE_RASTERIZATION_MODE_RANGE_SIZE_EXT = (VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT - VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT + 1),
   7465     VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
   7466 } VkConservativeRasterizationModeEXT;
   7467 
   7468 typedef VkFlags VkPipelineRasterizationConservativeStateCreateFlagsEXT;
   7469 
   7470 typedef struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT {
   7471     VkStructureType    sType;
   7472     void*              pNext;
   7473     float              primitiveOverestimationSize;
   7474     float              maxExtraPrimitiveOverestimationSize;
   7475     float              extraPrimitiveOverestimationSizeGranularity;
   7476     VkBool32           primitiveUnderestimation;
   7477     VkBool32           conservativePointAndLineRasterization;
   7478     VkBool32           degenerateTrianglesRasterized;
   7479     VkBool32           degenerateLinesRasterized;
   7480     VkBool32           fullyCoveredFragmentShaderInputVariable;
   7481     VkBool32           conservativeRasterizationPostDepthCoverage;
   7482 } VkPhysicalDeviceConservativeRasterizationPropertiesEXT;
   7483 
   7484 typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT {
   7485     VkStructureType                                           sType;
   7486     const void*                                               pNext;
   7487     VkPipelineRasterizationConservativeStateCreateFlagsEXT    flags;
   7488     VkConservativeRasterizationModeEXT                        conservativeRasterizationMode;
   7489     float                                                     extraPrimitiveOverestimationSize;
   7490 } VkPipelineRasterizationConservativeStateCreateInfoEXT;
   7491 
   7492 
   7493 
   7494 #define VK_EXT_depth_clip_enable 1
   7495 #define VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION 1
   7496 #define VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME "VK_EXT_depth_clip_enable"
   7497 
   7498 typedef VkFlags VkPipelineRasterizationDepthClipStateCreateFlagsEXT;
   7499 
   7500 typedef struct VkPhysicalDeviceDepthClipEnableFeaturesEXT {
   7501     VkStructureType    sType;
   7502     void*              pNext;
   7503     VkBool32           depthClipEnable;
   7504 } VkPhysicalDeviceDepthClipEnableFeaturesEXT;
   7505 
   7506 typedef struct VkPipelineRasterizationDepthClipStateCreateInfoEXT {
   7507     VkStructureType                                        sType;
   7508     const void*                                            pNext;
   7509     VkPipelineRasterizationDepthClipStateCreateFlagsEXT    flags;
   7510     VkBool32                                               depthClipEnable;
   7511 } VkPipelineRasterizationDepthClipStateCreateInfoEXT;
   7512 
   7513 
   7514 
   7515 #define VK_EXT_swapchain_colorspace 1
   7516 #define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 3
   7517 #define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace"
   7518 
   7519 
   7520 #define VK_EXT_hdr_metadata 1
   7521 #define VK_EXT_HDR_METADATA_SPEC_VERSION  1
   7522 #define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata"
   7523 
   7524 typedef struct VkXYColorEXT {
   7525     float    x;
   7526     float    y;
   7527 } VkXYColorEXT;
   7528 
   7529 typedef struct VkHdrMetadataEXT {
   7530     VkStructureType    sType;
   7531     const void*        pNext;
   7532     VkXYColorEXT       displayPrimaryRed;
   7533     VkXYColorEXT       displayPrimaryGreen;
   7534     VkXYColorEXT       displayPrimaryBlue;
   7535     VkXYColorEXT       whitePoint;
   7536     float              maxLuminance;
   7537     float              minLuminance;
   7538     float              maxContentLightLevel;
   7539     float              maxFrameAverageLightLevel;
   7540 } VkHdrMetadataEXT;
   7541 
   7542 
   7543 typedef void (VKAPI_PTR *PFN_vkSetHdrMetadataEXT)(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata);
   7544 
   7545 #ifndef VK_NO_PROTOTYPES
   7546 VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT(
   7547     VkDevice                                    device,
   7548     uint32_t                                    swapchainCount,
   7549     const VkSwapchainKHR*                       pSwapchains,
   7550     const VkHdrMetadataEXT*                     pMetadata);
   7551 #endif
   7552 
   7553 #define VK_EXT_external_memory_dma_buf 1
   7554 #define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1
   7555 #define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME "VK_EXT_external_memory_dma_buf"
   7556 
   7557 
   7558 #define VK_EXT_queue_family_foreign 1
   7559 #define VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION 1
   7560 #define VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME "VK_EXT_queue_family_foreign"
   7561 #define VK_QUEUE_FAMILY_FOREIGN_EXT       (~0U-2)
   7562 
   7563 
   7564 #define VK_EXT_debug_utils 1
   7565 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugUtilsMessengerEXT)
   7566 
   7567 #define VK_EXT_DEBUG_UTILS_SPEC_VERSION   1
   7568 #define VK_EXT_DEBUG_UTILS_EXTENSION_NAME "VK_EXT_debug_utils"
   7569 
   7570 typedef VkFlags VkDebugUtilsMessengerCallbackDataFlagsEXT;
   7571 typedef VkFlags VkDebugUtilsMessengerCreateFlagsEXT;
   7572 
   7573 typedef enum VkDebugUtilsMessageSeverityFlagBitsEXT {
   7574     VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001,
   7575     VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 0x00000010,
   7576     VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0x00000100,
   7577     VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0x00001000,
   7578     VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
   7579 } VkDebugUtilsMessageSeverityFlagBitsEXT;
   7580 typedef VkFlags VkDebugUtilsMessageSeverityFlagsEXT;
   7581 
   7582 typedef enum VkDebugUtilsMessageTypeFlagBitsEXT {
   7583     VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0x00000001,
   7584     VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0x00000002,
   7585     VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004,
   7586     VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
   7587 } VkDebugUtilsMessageTypeFlagBitsEXT;
   7588 typedef VkFlags VkDebugUtilsMessageTypeFlagsEXT;
   7589 
   7590 typedef struct VkDebugUtilsObjectNameInfoEXT {
   7591     VkStructureType    sType;
   7592     const void*        pNext;
   7593     VkObjectType       objectType;
   7594     uint64_t           objectHandle;
   7595     const char*        pObjectName;
   7596 } VkDebugUtilsObjectNameInfoEXT;
   7597 
   7598 typedef struct VkDebugUtilsObjectTagInfoEXT {
   7599     VkStructureType    sType;
   7600     const void*        pNext;
   7601     VkObjectType       objectType;
   7602     uint64_t           objectHandle;
   7603     uint64_t           tagName;
   7604     size_t             tagSize;
   7605     const void*        pTag;
   7606 } VkDebugUtilsObjectTagInfoEXT;
   7607 
   7608 typedef struct VkDebugUtilsLabelEXT {
   7609     VkStructureType    sType;
   7610     const void*        pNext;
   7611     const char*        pLabelName;
   7612     float              color[4];
   7613 } VkDebugUtilsLabelEXT;
   7614 
   7615 typedef struct VkDebugUtilsMessengerCallbackDataEXT {
   7616     VkStructureType                              sType;
   7617     const void*                                  pNext;
   7618     VkDebugUtilsMessengerCallbackDataFlagsEXT    flags;
   7619     const char*                                  pMessageIdName;
   7620     int32_t                                      messageIdNumber;
   7621     const char*                                  pMessage;
   7622     uint32_t                                     queueLabelCount;
   7623     const VkDebugUtilsLabelEXT*                  pQueueLabels;
   7624     uint32_t                                     cmdBufLabelCount;
   7625     const VkDebugUtilsLabelEXT*                  pCmdBufLabels;
   7626     uint32_t                                     objectCount;
   7627     const VkDebugUtilsObjectNameInfoEXT*         pObjects;
   7628 } VkDebugUtilsMessengerCallbackDataEXT;
   7629 
   7630 typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)(
   7631     VkDebugUtilsMessageSeverityFlagBitsEXT           messageSeverity,
   7632     VkDebugUtilsMessageTypeFlagsEXT                  messageTypes,
   7633     const VkDebugUtilsMessengerCallbackDataEXT*      pCallbackData,
   7634     void*                                            pUserData);
   7635 
   7636 typedef struct VkDebugUtilsMessengerCreateInfoEXT {
   7637     VkStructureType                         sType;
   7638     const void*                             pNext;
   7639     VkDebugUtilsMessengerCreateFlagsEXT     flags;
   7640     VkDebugUtilsMessageSeverityFlagsEXT     messageSeverity;
   7641     VkDebugUtilsMessageTypeFlagsEXT         messageType;
   7642     PFN_vkDebugUtilsMessengerCallbackEXT    pfnUserCallback;
   7643     void*                                   pUserData;
   7644 } VkDebugUtilsMessengerCreateInfoEXT;
   7645 
   7646 
   7647 typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectNameEXT)(VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo);
   7648 typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectTagEXT)(VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo);
   7649 typedef void (VKAPI_PTR *PFN_vkQueueBeginDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);
   7650 typedef void (VKAPI_PTR *PFN_vkQueueEndDebugUtilsLabelEXT)(VkQueue queue);
   7651 typedef void (VKAPI_PTR *PFN_vkQueueInsertDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);
   7652 typedef void (VKAPI_PTR *PFN_vkCmdBeginDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);
   7653 typedef void (VKAPI_PTR *PFN_vkCmdEndDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer);
   7654 typedef void (VKAPI_PTR *PFN_vkCmdInsertDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);
   7655 typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugUtilsMessengerEXT)(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger);
   7656 typedef void (VKAPI_PTR *PFN_vkDestroyDebugUtilsMessengerEXT)(VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator);
   7657 typedef void (VKAPI_PTR *PFN_vkSubmitDebugUtilsMessageEXT)(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
   7658 
   7659 #ifndef VK_NO_PROTOTYPES
   7660 VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectNameEXT(
   7661     VkDevice                                    device,
   7662     const VkDebugUtilsObjectNameInfoEXT*        pNameInfo);
   7663 
   7664 VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectTagEXT(
   7665     VkDevice                                    device,
   7666     const VkDebugUtilsObjectTagInfoEXT*         pTagInfo);
   7667 
   7668 VKAPI_ATTR void VKAPI_CALL vkQueueBeginDebugUtilsLabelEXT(
   7669     VkQueue                                     queue,
   7670     const VkDebugUtilsLabelEXT*                 pLabelInfo);
   7671 
   7672 VKAPI_ATTR void VKAPI_CALL vkQueueEndDebugUtilsLabelEXT(
   7673     VkQueue                                     queue);
   7674 
   7675 VKAPI_ATTR void VKAPI_CALL vkQueueInsertDebugUtilsLabelEXT(
   7676     VkQueue                                     queue,
   7677     const VkDebugUtilsLabelEXT*                 pLabelInfo);
   7678 
   7679 VKAPI_ATTR void VKAPI_CALL vkCmdBeginDebugUtilsLabelEXT(
   7680     VkCommandBuffer                             commandBuffer,
   7681     const VkDebugUtilsLabelEXT*                 pLabelInfo);
   7682 
   7683 VKAPI_ATTR void VKAPI_CALL vkCmdEndDebugUtilsLabelEXT(
   7684     VkCommandBuffer                             commandBuffer);
   7685 
   7686 VKAPI_ATTR void VKAPI_CALL vkCmdInsertDebugUtilsLabelEXT(
   7687     VkCommandBuffer                             commandBuffer,
   7688     const VkDebugUtilsLabelEXT*                 pLabelInfo);
   7689 
   7690 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugUtilsMessengerEXT(
   7691     VkInstance                                  instance,
   7692     const VkDebugUtilsMessengerCreateInfoEXT*   pCreateInfo,
   7693     const VkAllocationCallbacks*                pAllocator,
   7694     VkDebugUtilsMessengerEXT*                   pMessenger);
   7695 
   7696 VKAPI_ATTR void VKAPI_CALL vkDestroyDebugUtilsMessengerEXT(
   7697     VkInstance                                  instance,
   7698     VkDebugUtilsMessengerEXT                    messenger,
   7699     const VkAllocationCallbacks*                pAllocator);
   7700 
   7701 VKAPI_ATTR void VKAPI_CALL vkSubmitDebugUtilsMessageEXT(
   7702     VkInstance                                  instance,
   7703     VkDebugUtilsMessageSeverityFlagBitsEXT      messageSeverity,
   7704     VkDebugUtilsMessageTypeFlagsEXT             messageTypes,
   7705     const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
   7706 #endif
   7707 
   7708 #define VK_EXT_sampler_filter_minmax 1
   7709 #define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 1
   7710 #define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
   7711 
   7712 
   7713 typedef enum VkSamplerReductionModeEXT {
   7714     VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0,
   7715     VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1,
   7716     VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2,
   7717     VK_SAMPLER_REDUCTION_MODE_BEGIN_RANGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT,
   7718     VK_SAMPLER_REDUCTION_MODE_END_RANGE_EXT = VK_SAMPLER_REDUCTION_MODE_MAX_EXT,
   7719     VK_SAMPLER_REDUCTION_MODE_RANGE_SIZE_EXT = (VK_SAMPLER_REDUCTION_MODE_MAX_EXT - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT + 1),
   7720     VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
   7721 } VkSamplerReductionModeEXT;
   7722 
   7723 typedef struct VkSamplerReductionModeCreateInfoEXT {
   7724     VkStructureType              sType;
   7725     const void*                  pNext;
   7726     VkSamplerReductionModeEXT    reductionMode;
   7727 } VkSamplerReductionModeCreateInfoEXT;
   7728 
   7729 typedef struct VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
   7730     VkStructureType    sType;
   7731     void*              pNext;
   7732     VkBool32           filterMinmaxSingleComponentFormats;
   7733     VkBool32           filterMinmaxImageComponentMapping;
   7734 } VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
   7735 
   7736 
   7737 
   7738 #define VK_AMD_gpu_shader_int16 1
   7739 #define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 1
   7740 #define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME "VK_AMD_gpu_shader_int16"
   7741 
   7742 
   7743 #define VK_AMD_mixed_attachment_samples 1
   7744 #define VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION 1
   7745 #define VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME "VK_AMD_mixed_attachment_samples"
   7746 
   7747 
   7748 #define VK_AMD_shader_fragment_mask 1
   7749 #define VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION 1
   7750 #define VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME "VK_AMD_shader_fragment_mask"
   7751 
   7752 
   7753 #define VK_EXT_inline_uniform_block 1
   7754 #define VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION 1
   7755 #define VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME "VK_EXT_inline_uniform_block"
   7756 
   7757 typedef struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT {
   7758     VkStructureType    sType;
   7759     void*              pNext;
   7760     VkBool32           inlineUniformBlock;
   7761     VkBool32           descriptorBindingInlineUniformBlockUpdateAfterBind;
   7762 } VkPhysicalDeviceInlineUniformBlockFeaturesEXT;
   7763 
   7764 typedef struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT {
   7765     VkStructureType    sType;
   7766     void*              pNext;
   7767     uint32_t           maxInlineUniformBlockSize;
   7768     uint32_t           maxPerStageDescriptorInlineUniformBlocks;
   7769     uint32_t           maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks;
   7770     uint32_t           maxDescriptorSetInlineUniformBlocks;
   7771     uint32_t           maxDescriptorSetUpdateAfterBindInlineUniformBlocks;
   7772 } VkPhysicalDeviceInlineUniformBlockPropertiesEXT;
   7773 
   7774 typedef struct VkWriteDescriptorSetInlineUniformBlockEXT {
   7775     VkStructureType    sType;
   7776     const void*        pNext;
   7777     uint32_t           dataSize;
   7778     const void*        pData;
   7779 } VkWriteDescriptorSetInlineUniformBlockEXT;
   7780 
   7781 typedef struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT {
   7782     VkStructureType    sType;
   7783     const void*        pNext;
   7784     uint32_t           maxInlineUniformBlockBindings;
   7785 } VkDescriptorPoolInlineUniformBlockCreateInfoEXT;
   7786 
   7787 
   7788 
   7789 #define VK_EXT_shader_stencil_export 1
   7790 #define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1
   7791 #define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME "VK_EXT_shader_stencil_export"
   7792 
   7793 
   7794 #define VK_EXT_sample_locations 1
   7795 #define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1
   7796 #define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations"
   7797 
   7798 typedef struct VkSampleLocationEXT {
   7799     float    x;
   7800     float    y;
   7801 } VkSampleLocationEXT;
   7802 
   7803 typedef struct VkSampleLocationsInfoEXT {
   7804     VkStructureType               sType;
   7805     const void*                   pNext;
   7806     VkSampleCountFlagBits         sampleLocationsPerPixel;
   7807     VkExtent2D                    sampleLocationGridSize;
   7808     uint32_t                      sampleLocationsCount;
   7809     const VkSampleLocationEXT*    pSampleLocations;
   7810 } VkSampleLocationsInfoEXT;
   7811 
   7812 typedef struct VkAttachmentSampleLocationsEXT {
   7813     uint32_t                    attachmentIndex;
   7814     VkSampleLocationsInfoEXT    sampleLocationsInfo;
   7815 } VkAttachmentSampleLocationsEXT;
   7816 
   7817 typedef struct VkSubpassSampleLocationsEXT {
   7818     uint32_t                    subpassIndex;
   7819     VkSampleLocationsInfoEXT    sampleLocationsInfo;
   7820 } VkSubpassSampleLocationsEXT;
   7821 
   7822 typedef struct VkRenderPassSampleLocationsBeginInfoEXT {
   7823     VkStructureType                          sType;
   7824     const void*                              pNext;
   7825     uint32_t                                 attachmentInitialSampleLocationsCount;
   7826     const VkAttachmentSampleLocationsEXT*    pAttachmentInitialSampleLocations;
   7827     uint32_t                                 postSubpassSampleLocationsCount;
   7828     const VkSubpassSampleLocationsEXT*       pPostSubpassSampleLocations;
   7829 } VkRenderPassSampleLocationsBeginInfoEXT;
   7830 
   7831 typedef struct VkPipelineSampleLocationsStateCreateInfoEXT {
   7832     VkStructureType             sType;
   7833     const void*                 pNext;
   7834     VkBool32                    sampleLocationsEnable;
   7835     VkSampleLocationsInfoEXT    sampleLocationsInfo;
   7836 } VkPipelineSampleLocationsStateCreateInfoEXT;
   7837 
   7838 typedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT {
   7839     VkStructureType       sType;
   7840     void*                 pNext;
   7841     VkSampleCountFlags    sampleLocationSampleCounts;
   7842     VkExtent2D            maxSampleLocationGridSize;
   7843     float                 sampleLocationCoordinateRange[2];
   7844     uint32_t              sampleLocationSubPixelBits;
   7845     VkBool32              variableSampleLocations;
   7846 } VkPhysicalDeviceSampleLocationsPropertiesEXT;
   7847 
   7848 typedef struct VkMultisamplePropertiesEXT {
   7849     VkStructureType    sType;
   7850     void*              pNext;
   7851     VkExtent2D         maxSampleLocationGridSize;
   7852 } VkMultisamplePropertiesEXT;
   7853 
   7854 
   7855 typedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEXT)(VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
   7856 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)(VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties);
   7857 
   7858 #ifndef VK_NO_PROTOTYPES
   7859 VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleLocationsEXT(
   7860     VkCommandBuffer                             commandBuffer,
   7861     const VkSampleLocationsInfoEXT*             pSampleLocationsInfo);
   7862 
   7863 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT(
   7864     VkPhysicalDevice                            physicalDevice,
   7865     VkSampleCountFlagBits                       samples,
   7866     VkMultisamplePropertiesEXT*                 pMultisampleProperties);
   7867 #endif
   7868 
   7869 #define VK_EXT_blend_operation_advanced 1
   7870 #define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2
   7871 #define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
   7872 
   7873 
   7874 typedef enum VkBlendOverlapEXT {
   7875     VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0,
   7876     VK_BLEND_OVERLAP_DISJOINT_EXT = 1,
   7877     VK_BLEND_OVERLAP_CONJOINT_EXT = 2,
   7878     VK_BLEND_OVERLAP_BEGIN_RANGE_EXT = VK_BLEND_OVERLAP_UNCORRELATED_EXT,
   7879     VK_BLEND_OVERLAP_END_RANGE_EXT = VK_BLEND_OVERLAP_CONJOINT_EXT,
   7880     VK_BLEND_OVERLAP_RANGE_SIZE_EXT = (VK_BLEND_OVERLAP_CONJOINT_EXT - VK_BLEND_OVERLAP_UNCORRELATED_EXT + 1),
   7881     VK_BLEND_OVERLAP_MAX_ENUM_EXT = 0x7FFFFFFF
   7882 } VkBlendOverlapEXT;
   7883 
   7884 typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
   7885     VkStructureType    sType;
   7886     void*              pNext;
   7887     VkBool32           advancedBlendCoherentOperations;
   7888 } VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
   7889 
   7890 typedef struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
   7891     VkStructureType    sType;
   7892     void*              pNext;
   7893     uint32_t           advancedBlendMaxColorAttachments;
   7894     VkBool32           advancedBlendIndependentBlend;
   7895     VkBool32           advancedBlendNonPremultipliedSrcColor;
   7896     VkBool32           advancedBlendNonPremultipliedDstColor;
   7897     VkBool32           advancedBlendCorrelatedOverlap;
   7898     VkBool32           advancedBlendAllOperations;
   7899 } VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
   7900 
   7901 typedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT {
   7902     VkStructureType      sType;
   7903     const void*          pNext;
   7904     VkBool32             srcPremultiplied;
   7905     VkBool32             dstPremultiplied;
   7906     VkBlendOverlapEXT    blendOverlap;
   7907 } VkPipelineColorBlendAdvancedStateCreateInfoEXT;
   7908 
   7909 
   7910 
   7911 #define VK_NV_fragment_coverage_to_color 1
   7912 #define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1
   7913 #define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME "VK_NV_fragment_coverage_to_color"
   7914 
   7915 typedef VkFlags VkPipelineCoverageToColorStateCreateFlagsNV;
   7916 
   7917 typedef struct VkPipelineCoverageToColorStateCreateInfoNV {
   7918     VkStructureType                                sType;
   7919     const void*                                    pNext;
   7920     VkPipelineCoverageToColorStateCreateFlagsNV    flags;
   7921     VkBool32                                       coverageToColorEnable;
   7922     uint32_t                                       coverageToColorLocation;
   7923 } VkPipelineCoverageToColorStateCreateInfoNV;
   7924 
   7925 
   7926 
   7927 #define VK_NV_framebuffer_mixed_samples 1
   7928 #define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1
   7929 #define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME "VK_NV_framebuffer_mixed_samples"
   7930 
   7931 
   7932 typedef enum VkCoverageModulationModeNV {
   7933     VK_COVERAGE_MODULATION_MODE_NONE_NV = 0,
   7934     VK_COVERAGE_MODULATION_MODE_RGB_NV = 1,
   7935     VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2,
   7936     VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3,
   7937     VK_COVERAGE_MODULATION_MODE_BEGIN_RANGE_NV = VK_COVERAGE_MODULATION_MODE_NONE_NV,
   7938     VK_COVERAGE_MODULATION_MODE_END_RANGE_NV = VK_COVERAGE_MODULATION_MODE_RGBA_NV,
   7939     VK_COVERAGE_MODULATION_MODE_RANGE_SIZE_NV = (VK_COVERAGE_MODULATION_MODE_RGBA_NV - VK_COVERAGE_MODULATION_MODE_NONE_NV + 1),
   7940     VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 0x7FFFFFFF
   7941 } VkCoverageModulationModeNV;
   7942 
   7943 typedef VkFlags VkPipelineCoverageModulationStateCreateFlagsNV;
   7944 
   7945 typedef struct VkPipelineCoverageModulationStateCreateInfoNV {
   7946     VkStructureType                                   sType;
   7947     const void*                                       pNext;
   7948     VkPipelineCoverageModulationStateCreateFlagsNV    flags;
   7949     VkCoverageModulationModeNV                        coverageModulationMode;
   7950     VkBool32                                          coverageModulationTableEnable;
   7951     uint32_t                                          coverageModulationTableCount;
   7952     const float*                                      pCoverageModulationTable;
   7953 } VkPipelineCoverageModulationStateCreateInfoNV;
   7954 
   7955 
   7956 
   7957 #define VK_NV_fill_rectangle 1
   7958 #define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1
   7959 #define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle"
   7960 
   7961 
   7962 #define VK_EXT_post_depth_coverage 1
   7963 #define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1
   7964 #define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage"
   7965 
   7966 
   7967 #define VK_EXT_image_drm_format_modifier 1
   7968 #define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION 1
   7969 #define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME "VK_EXT_image_drm_format_modifier"
   7970 
   7971 typedef struct VkDrmFormatModifierPropertiesEXT {
   7972     uint64_t                drmFormatModifier;
   7973     uint32_t                drmFormatModifierPlaneCount;
   7974     VkFormatFeatureFlags    drmFormatModifierTilingFeatures;
   7975 } VkDrmFormatModifierPropertiesEXT;
   7976 
   7977 typedef struct VkDrmFormatModifierPropertiesListEXT {
   7978     VkStructureType                      sType;
   7979     void*                                pNext;
   7980     uint32_t                             drmFormatModifierCount;
   7981     VkDrmFormatModifierPropertiesEXT*    pDrmFormatModifierProperties;
   7982 } VkDrmFormatModifierPropertiesListEXT;
   7983 
   7984 typedef struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT {
   7985     VkStructureType    sType;
   7986     const void*        pNext;
   7987     uint64_t           drmFormatModifier;
   7988     VkSharingMode      sharingMode;
   7989     uint32_t           queueFamilyIndexCount;
   7990     const uint32_t*    pQueueFamilyIndices;
   7991 } VkPhysicalDeviceImageDrmFormatModifierInfoEXT;
   7992 
   7993 typedef struct VkImageDrmFormatModifierListCreateInfoEXT {
   7994     VkStructureType    sType;
   7995     const void*        pNext;
   7996     uint32_t           drmFormatModifierCount;
   7997     const uint64_t*    pDrmFormatModifiers;
   7998 } VkImageDrmFormatModifierListCreateInfoEXT;
   7999 
   8000 typedef struct VkImageDrmFormatModifierExplicitCreateInfoEXT {
   8001     VkStructureType               sType;
   8002     const void*                   pNext;
   8003     uint64_t                      drmFormatModifier;
   8004     uint32_t                      drmFormatModifierPlaneCount;
   8005     const VkSubresourceLayout*    pPlaneLayouts;
   8006 } VkImageDrmFormatModifierExplicitCreateInfoEXT;
   8007 
   8008 typedef struct VkImageDrmFormatModifierPropertiesEXT {
   8009     VkStructureType    sType;
   8010     void*              pNext;
   8011     uint64_t           drmFormatModifier;
   8012 } VkImageDrmFormatModifierPropertiesEXT;
   8013 
   8014 
   8015 typedef VkResult (VKAPI_PTR *PFN_vkGetImageDrmFormatModifierPropertiesEXT)(VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties);
   8016 
   8017 #ifndef VK_NO_PROTOTYPES
   8018 VKAPI_ATTR VkResult VKAPI_CALL vkGetImageDrmFormatModifierPropertiesEXT(
   8019     VkDevice                                    device,
   8020     VkImage                                     image,
   8021     VkImageDrmFormatModifierPropertiesEXT*      pProperties);
   8022 #endif
   8023 
   8024 #define VK_EXT_validation_cache 1
   8025 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT)
   8026 
   8027 #define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1
   8028 #define VK_EXT_VALIDATION_CACHE_EXTENSION_NAME "VK_EXT_validation_cache"
   8029 
   8030 
   8031 typedef enum VkValidationCacheHeaderVersionEXT {
   8032     VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1,
   8033     VK_VALIDATION_CACHE_HEADER_VERSION_BEGIN_RANGE_EXT = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT,
   8034     VK_VALIDATION_CACHE_HEADER_VERSION_END_RANGE_EXT = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT,
   8035     VK_VALIDATION_CACHE_HEADER_VERSION_RANGE_SIZE_EXT = (VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT + 1),
   8036     VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 0x7FFFFFFF
   8037 } VkValidationCacheHeaderVersionEXT;
   8038 
   8039 typedef VkFlags VkValidationCacheCreateFlagsEXT;
   8040 
   8041 typedef struct VkValidationCacheCreateInfoEXT {
   8042     VkStructureType                    sType;
   8043     const void*                        pNext;
   8044     VkValidationCacheCreateFlagsEXT    flags;
   8045     size_t                             initialDataSize;
   8046     const void*                        pInitialData;
   8047 } VkValidationCacheCreateInfoEXT;
   8048 
   8049 typedef struct VkShaderModuleValidationCacheCreateInfoEXT {
   8050     VkStructureType         sType;
   8051     const void*             pNext;
   8052     VkValidationCacheEXT    validationCache;
   8053 } VkShaderModuleValidationCacheCreateInfoEXT;
   8054 
   8055 
   8056 typedef VkResult (VKAPI_PTR *PFN_vkCreateValidationCacheEXT)(VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache);
   8057 typedef void (VKAPI_PTR *PFN_vkDestroyValidationCacheEXT)(VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator);
   8058 typedef VkResult (VKAPI_PTR *PFN_vkMergeValidationCachesEXT)(VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches);
   8059 typedef VkResult (VKAPI_PTR *PFN_vkGetValidationCacheDataEXT)(VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData);
   8060 
   8061 #ifndef VK_NO_PROTOTYPES
   8062 VKAPI_ATTR VkResult VKAPI_CALL vkCreateValidationCacheEXT(
   8063     VkDevice                                    device,
   8064     const VkValidationCacheCreateInfoEXT*       pCreateInfo,
   8065     const VkAllocationCallbacks*                pAllocator,
   8066     VkValidationCacheEXT*                       pValidationCache);
   8067 
   8068 VKAPI_ATTR void VKAPI_CALL vkDestroyValidationCacheEXT(
   8069     VkDevice                                    device,
   8070     VkValidationCacheEXT                        validationCache,
   8071     const VkAllocationCallbacks*                pAllocator);
   8072 
   8073 VKAPI_ATTR VkResult VKAPI_CALL vkMergeValidationCachesEXT(
   8074     VkDevice                                    device,
   8075     VkValidationCacheEXT                        dstCache,
   8076     uint32_t                                    srcCacheCount,
   8077     const VkValidationCacheEXT*                 pSrcCaches);
   8078 
   8079 VKAPI_ATTR VkResult VKAPI_CALL vkGetValidationCacheDataEXT(
   8080     VkDevice                                    device,
   8081     VkValidationCacheEXT                        validationCache,
   8082     size_t*                                     pDataSize,
   8083     void*                                       pData);
   8084 #endif
   8085 
   8086 #define VK_EXT_descriptor_indexing 1
   8087 #define VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION 2
   8088 #define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing"
   8089 
   8090 
   8091 typedef enum VkDescriptorBindingFlagBitsEXT {
   8092     VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = 0x00000001,
   8093     VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = 0x00000002,
   8094     VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = 0x00000004,
   8095     VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = 0x00000008,
   8096     VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
   8097 } VkDescriptorBindingFlagBitsEXT;
   8098 typedef VkFlags VkDescriptorBindingFlagsEXT;
   8099 
   8100 typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfoEXT {
   8101     VkStructureType                       sType;
   8102     const void*                           pNext;
   8103     uint32_t                              bindingCount;
   8104     const VkDescriptorBindingFlagsEXT*    pBindingFlags;
   8105 } VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
   8106 
   8107 typedef struct VkPhysicalDeviceDescriptorIndexingFeaturesEXT {
   8108     VkStructureType    sType;
   8109     void*              pNext;
   8110     VkBool32           shaderInputAttachmentArrayDynamicIndexing;
   8111     VkBool32           shaderUniformTexelBufferArrayDynamicIndexing;
   8112     VkBool32           shaderStorageTexelBufferArrayDynamicIndexing;
   8113     VkBool32           shaderUniformBufferArrayNonUniformIndexing;
   8114     VkBool32           shaderSampledImageArrayNonUniformIndexing;
   8115     VkBool32           shaderStorageBufferArrayNonUniformIndexing;
   8116     VkBool32           shaderStorageImageArrayNonUniformIndexing;
   8117     VkBool32           shaderInputAttachmentArrayNonUniformIndexing;
   8118     VkBool32           shaderUniformTexelBufferArrayNonUniformIndexing;
   8119     VkBool32           shaderStorageTexelBufferArrayNonUniformIndexing;
   8120     VkBool32           descriptorBindingUniformBufferUpdateAfterBind;
   8121     VkBool32           descriptorBindingSampledImageUpdateAfterBind;
   8122     VkBool32           descriptorBindingStorageImageUpdateAfterBind;
   8123     VkBool32           descriptorBindingStorageBufferUpdateAfterBind;
   8124     VkBool32           descriptorBindingUniformTexelBufferUpdateAfterBind;
   8125     VkBool32           descriptorBindingStorageTexelBufferUpdateAfterBind;
   8126     VkBool32           descriptorBindingUpdateUnusedWhilePending;
   8127     VkBool32           descriptorBindingPartiallyBound;
   8128     VkBool32           descriptorBindingVariableDescriptorCount;
   8129     VkBool32           runtimeDescriptorArray;
   8130 } VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
   8131 
   8132 typedef struct VkPhysicalDeviceDescriptorIndexingPropertiesEXT {
   8133     VkStructureType    sType;
   8134     void*              pNext;
   8135     uint32_t           maxUpdateAfterBindDescriptorsInAllPools;
   8136     VkBool32           shaderUniformBufferArrayNonUniformIndexingNative;
   8137     VkBool32           shaderSampledImageArrayNonUniformIndexingNative;
   8138     VkBool32           shaderStorageBufferArrayNonUniformIndexingNative;
   8139     VkBool32           shaderStorageImageArrayNonUniformIndexingNative;
   8140     VkBool32           shaderInputAttachmentArrayNonUniformIndexingNative;
   8141     VkBool32           robustBufferAccessUpdateAfterBind;
   8142     VkBool32           quadDivergentImplicitLod;
   8143     uint32_t           maxPerStageDescriptorUpdateAfterBindSamplers;
   8144     uint32_t           maxPerStageDescriptorUpdateAfterBindUniformBuffers;
   8145     uint32_t           maxPerStageDescriptorUpdateAfterBindStorageBuffers;
   8146     uint32_t           maxPerStageDescriptorUpdateAfterBindSampledImages;
   8147     uint32_t           maxPerStageDescriptorUpdateAfterBindStorageImages;
   8148     uint32_t           maxPerStageDescriptorUpdateAfterBindInputAttachments;
   8149     uint32_t           maxPerStageUpdateAfterBindResources;
   8150     uint32_t           maxDescriptorSetUpdateAfterBindSamplers;
   8151     uint32_t           maxDescriptorSetUpdateAfterBindUniformBuffers;
   8152     uint32_t           maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
   8153     uint32_t           maxDescriptorSetUpdateAfterBindStorageBuffers;
   8154     uint32_t           maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
   8155     uint32_t           maxDescriptorSetUpdateAfterBindSampledImages;
   8156     uint32_t           maxDescriptorSetUpdateAfterBindStorageImages;
   8157     uint32_t           maxDescriptorSetUpdateAfterBindInputAttachments;
   8158 } VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
   8159 
   8160 typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfoEXT {
   8161     VkStructureType    sType;
   8162     const void*        pNext;
   8163     uint32_t           descriptorSetCount;
   8164     const uint32_t*    pDescriptorCounts;
   8165 } VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
   8166 
   8167 typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupportEXT {
   8168     VkStructureType    sType;
   8169     void*              pNext;
   8170     uint32_t           maxVariableDescriptorCount;
   8171 } VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
   8172 
   8173 
   8174 
   8175 #define VK_EXT_shader_viewport_index_layer 1
   8176 #define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION 1
   8177 #define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME "VK_EXT_shader_viewport_index_layer"
   8178 
   8179 
   8180 #define VK_NV_shading_rate_image 1
   8181 #define VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION 3
   8182 #define VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME "VK_NV_shading_rate_image"
   8183 
   8184 
   8185 typedef enum VkShadingRatePaletteEntryNV {
   8186     VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0,
   8187     VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1,
   8188     VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2,
   8189     VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3,
   8190     VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4,
   8191     VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5,
   8192     VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6,
   8193     VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7,
   8194     VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8,
   8195     VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9,
   8196     VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10,
   8197     VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11,
   8198     VK_SHADING_RATE_PALETTE_ENTRY_BEGIN_RANGE_NV = VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV,
   8199     VK_SHADING_RATE_PALETTE_ENTRY_END_RANGE_NV = VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV,
   8200     VK_SHADING_RATE_PALETTE_ENTRY_RANGE_SIZE_NV = (VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV - VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV + 1),
   8201     VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 0x7FFFFFFF
   8202 } VkShadingRatePaletteEntryNV;
   8203 
   8204 typedef enum VkCoarseSampleOrderTypeNV {
   8205     VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0,
   8206     VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1,
   8207     VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2,
   8208     VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3,
   8209     VK_COARSE_SAMPLE_ORDER_TYPE_BEGIN_RANGE_NV = VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV,
   8210     VK_COARSE_SAMPLE_ORDER_TYPE_END_RANGE_NV = VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV,
   8211     VK_COARSE_SAMPLE_ORDER_TYPE_RANGE_SIZE_NV = (VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV - VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV + 1),
   8212     VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
   8213 } VkCoarseSampleOrderTypeNV;
   8214 
   8215 typedef struct VkShadingRatePaletteNV {
   8216     uint32_t                              shadingRatePaletteEntryCount;
   8217     const VkShadingRatePaletteEntryNV*    pShadingRatePaletteEntries;
   8218 } VkShadingRatePaletteNV;
   8219 
   8220 typedef struct VkPipelineViewportShadingRateImageStateCreateInfoNV {
   8221     VkStructureType                  sType;
   8222     const void*                      pNext;
   8223     VkBool32                         shadingRateImageEnable;
   8224     uint32_t                         viewportCount;
   8225     const VkShadingRatePaletteNV*    pShadingRatePalettes;
   8226 } VkPipelineViewportShadingRateImageStateCreateInfoNV;
   8227 
   8228 typedef struct VkPhysicalDeviceShadingRateImageFeaturesNV {
   8229     VkStructureType    sType;
   8230     void*              pNext;
   8231     VkBool32           shadingRateImage;
   8232     VkBool32           shadingRateCoarseSampleOrder;
   8233 } VkPhysicalDeviceShadingRateImageFeaturesNV;
   8234 
   8235 typedef struct VkPhysicalDeviceShadingRateImagePropertiesNV {
   8236     VkStructureType    sType;
   8237     void*              pNext;
   8238     VkExtent2D         shadingRateTexelSize;
   8239     uint32_t           shadingRatePaletteSize;
   8240     uint32_t           shadingRateMaxCoarseSamples;
   8241 } VkPhysicalDeviceShadingRateImagePropertiesNV;
   8242 
   8243 typedef struct VkCoarseSampleLocationNV {
   8244     uint32_t    pixelX;
   8245     uint32_t    pixelY;
   8246     uint32_t    sample;
   8247 } VkCoarseSampleLocationNV;
   8248 
   8249 typedef struct VkCoarseSampleOrderCustomNV {
   8250     VkShadingRatePaletteEntryNV        shadingRate;
   8251     uint32_t                           sampleCount;
   8252     uint32_t                           sampleLocationCount;
   8253     const VkCoarseSampleLocationNV*    pSampleLocations;
   8254 } VkCoarseSampleOrderCustomNV;
   8255 
   8256 typedef struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV {
   8257     VkStructureType                       sType;
   8258     const void*                           pNext;
   8259     VkCoarseSampleOrderTypeNV             sampleOrderType;
   8260     uint32_t                              customSampleOrderCount;
   8261     const VkCoarseSampleOrderCustomNV*    pCustomSampleOrders;
   8262 } VkPipelineViewportCoarseSampleOrderStateCreateInfoNV;
   8263 
   8264 
   8265 typedef void (VKAPI_PTR *PFN_vkCmdBindShadingRateImageNV)(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout);
   8266 typedef void (VKAPI_PTR *PFN_vkCmdSetViewportShadingRatePaletteNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes);
   8267 typedef void (VKAPI_PTR *PFN_vkCmdSetCoarseSampleOrderNV)(VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders);
   8268 
   8269 #ifndef VK_NO_PROTOTYPES
   8270 VKAPI_ATTR void VKAPI_CALL vkCmdBindShadingRateImageNV(
   8271     VkCommandBuffer                             commandBuffer,
   8272     VkImageView                                 imageView,
   8273     VkImageLayout                               imageLayout);
   8274 
   8275 VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportShadingRatePaletteNV(
   8276     VkCommandBuffer                             commandBuffer,
   8277     uint32_t                                    firstViewport,
   8278     uint32_t                                    viewportCount,
   8279     const VkShadingRatePaletteNV*               pShadingRatePalettes);
   8280 
   8281 VKAPI_ATTR void VKAPI_CALL vkCmdSetCoarseSampleOrderNV(
   8282     VkCommandBuffer                             commandBuffer,
   8283     VkCoarseSampleOrderTypeNV                   sampleOrderType,
   8284     uint32_t                                    customSampleOrderCount,
   8285     const VkCoarseSampleOrderCustomNV*          pCustomSampleOrders);
   8286 #endif
   8287 
   8288 #define VK_NV_ray_tracing 1
   8289 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureNV)
   8290 
   8291 #define VK_NV_RAY_TRACING_SPEC_VERSION    3
   8292 #define VK_NV_RAY_TRACING_EXTENSION_NAME  "VK_NV_ray_tracing"
   8293 #define VK_SHADER_UNUSED_NV               (~0U)
   8294 
   8295 
   8296 typedef enum VkRayTracingShaderGroupTypeNV {
   8297     VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = 0,
   8298     VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = 1,
   8299     VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = 2,
   8300     VK_RAY_TRACING_SHADER_GROUP_TYPE_BEGIN_RANGE_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV,
   8301     VK_RAY_TRACING_SHADER_GROUP_TYPE_END_RANGE_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV,
   8302     VK_RAY_TRACING_SHADER_GROUP_TYPE_RANGE_SIZE_NV = (VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV - VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV + 1),
   8303     VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
   8304 } VkRayTracingShaderGroupTypeNV;
   8305 
   8306 typedef enum VkGeometryTypeNV {
   8307     VK_GEOMETRY_TYPE_TRIANGLES_NV = 0,
   8308     VK_GEOMETRY_TYPE_AABBS_NV = 1,
   8309     VK_GEOMETRY_TYPE_BEGIN_RANGE_NV = VK_GEOMETRY_TYPE_TRIANGLES_NV,
   8310     VK_GEOMETRY_TYPE_END_RANGE_NV = VK_GEOMETRY_TYPE_AABBS_NV,
   8311     VK_GEOMETRY_TYPE_RANGE_SIZE_NV = (VK_GEOMETRY_TYPE_AABBS_NV - VK_GEOMETRY_TYPE_TRIANGLES_NV + 1),
   8312     VK_GEOMETRY_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
   8313 } VkGeometryTypeNV;
   8314 
   8315 typedef enum VkAccelerationStructureTypeNV {
   8316     VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = 0,
   8317     VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = 1,
   8318     VK_ACCELERATION_STRUCTURE_TYPE_BEGIN_RANGE_NV = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV,
   8319     VK_ACCELERATION_STRUCTURE_TYPE_END_RANGE_NV = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV,
   8320     VK_ACCELERATION_STRUCTURE_TYPE_RANGE_SIZE_NV = (VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV - VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV + 1),
   8321     VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
   8322 } VkAccelerationStructureTypeNV;
   8323 
   8324 typedef enum VkCopyAccelerationStructureModeNV {
   8325     VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = 0,
   8326     VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = 1,
   8327     VK_COPY_ACCELERATION_STRUCTURE_MODE_BEGIN_RANGE_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV,
   8328     VK_COPY_ACCELERATION_STRUCTURE_MODE_END_RANGE_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV,
   8329     VK_COPY_ACCELERATION_STRUCTURE_MODE_RANGE_SIZE_NV = (VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV - VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV + 1),
   8330     VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_NV = 0x7FFFFFFF
   8331 } VkCopyAccelerationStructureModeNV;
   8332 
   8333 typedef enum VkAccelerationStructureMemoryRequirementsTypeNV {
   8334     VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0,
   8335     VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1,
   8336     VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2,
   8337     VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BEGIN_RANGE_NV = VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV,
   8338     VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_END_RANGE_NV = VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV,
   8339     VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_RANGE_SIZE_NV = (VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV - VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV + 1),
   8340     VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
   8341 } VkAccelerationStructureMemoryRequirementsTypeNV;
   8342 
   8343 
   8344 typedef enum VkGeometryFlagBitsNV {
   8345     VK_GEOMETRY_OPAQUE_BIT_NV = 0x00000001,
   8346     VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = 0x00000002,
   8347     VK_GEOMETRY_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
   8348 } VkGeometryFlagBitsNV;
   8349 typedef VkFlags VkGeometryFlagsNV;
   8350 
   8351 typedef enum VkGeometryInstanceFlagBitsNV {
   8352     VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = 0x00000001,
   8353     VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 0x00000002,
   8354     VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = 0x00000004,
   8355     VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = 0x00000008,
   8356     VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
   8357 } VkGeometryInstanceFlagBitsNV;
   8358 typedef VkFlags VkGeometryInstanceFlagsNV;
   8359 
   8360 typedef enum VkBuildAccelerationStructureFlagBitsNV {
   8361     VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = 0x00000001,
   8362     VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = 0x00000002,
   8363     VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = 0x00000004,
   8364     VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = 0x00000008,
   8365     VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = 0x00000010,
   8366     VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
   8367 } VkBuildAccelerationStructureFlagBitsNV;
   8368 typedef VkFlags VkBuildAccelerationStructureFlagsNV;
   8369 
   8370 typedef struct VkRayTracingShaderGroupCreateInfoNV {
   8371     VkStructureType                  sType;
   8372     const void*                      pNext;
   8373     VkRayTracingShaderGroupTypeNV    type;
   8374     uint32_t                         generalShader;
   8375     uint32_t                         closestHitShader;
   8376     uint32_t                         anyHitShader;
   8377     uint32_t                         intersectionShader;
   8378 } VkRayTracingShaderGroupCreateInfoNV;
   8379 
   8380 typedef struct VkRayTracingPipelineCreateInfoNV {
   8381     VkStructureType                               sType;
   8382     const void*                                   pNext;
   8383     VkPipelineCreateFlags                         flags;
   8384     uint32_t                                      stageCount;
   8385     const VkPipelineShaderStageCreateInfo*        pStages;
   8386     uint32_t                                      groupCount;
   8387     const VkRayTracingShaderGroupCreateInfoNV*    pGroups;
   8388     uint32_t                                      maxRecursionDepth;
   8389     VkPipelineLayout                              layout;
   8390     VkPipeline                                    basePipelineHandle;
   8391     int32_t                                       basePipelineIndex;
   8392 } VkRayTracingPipelineCreateInfoNV;
   8393 
   8394 typedef struct VkGeometryTrianglesNV {
   8395     VkStructureType    sType;
   8396     const void*        pNext;
   8397     VkBuffer           vertexData;
   8398     VkDeviceSize       vertexOffset;
   8399     uint32_t           vertexCount;
   8400     VkDeviceSize       vertexStride;
   8401     VkFormat           vertexFormat;
   8402     VkBuffer           indexData;
   8403     VkDeviceSize       indexOffset;
   8404     uint32_t           indexCount;
   8405     VkIndexType        indexType;
   8406     VkBuffer           transformData;
   8407     VkDeviceSize       transformOffset;
   8408 } VkGeometryTrianglesNV;
   8409 
   8410 typedef struct VkGeometryAABBNV {
   8411     VkStructureType    sType;
   8412     const void*        pNext;
   8413     VkBuffer           aabbData;
   8414     uint32_t           numAABBs;
   8415     uint32_t           stride;
   8416     VkDeviceSize       offset;
   8417 } VkGeometryAABBNV;
   8418 
   8419 typedef struct VkGeometryDataNV {
   8420     VkGeometryTrianglesNV    triangles;
   8421     VkGeometryAABBNV         aabbs;
   8422 } VkGeometryDataNV;
   8423 
   8424 typedef struct VkGeometryNV {
   8425     VkStructureType      sType;
   8426     const void*          pNext;
   8427     VkGeometryTypeNV     geometryType;
   8428     VkGeometryDataNV     geometry;
   8429     VkGeometryFlagsNV    flags;
   8430 } VkGeometryNV;
   8431 
   8432 typedef struct VkAccelerationStructureInfoNV {
   8433     VkStructureType                        sType;
   8434     const void*                            pNext;
   8435     VkAccelerationStructureTypeNV          type;
   8436     VkBuildAccelerationStructureFlagsNV    flags;
   8437     uint32_t                               instanceCount;
   8438     uint32_t                               geometryCount;
   8439     const VkGeometryNV*                    pGeometries;
   8440 } VkAccelerationStructureInfoNV;
   8441 
   8442 typedef struct VkAccelerationStructureCreateInfoNV {
   8443     VkStructureType                  sType;
   8444     const void*                      pNext;
   8445     VkDeviceSize                     compactedSize;
   8446     VkAccelerationStructureInfoNV    info;
   8447 } VkAccelerationStructureCreateInfoNV;
   8448 
   8449 typedef struct VkBindAccelerationStructureMemoryInfoNV {
   8450     VkStructureType              sType;
   8451     const void*                  pNext;
   8452     VkAccelerationStructureNV    accelerationStructure;
   8453     VkDeviceMemory               memory;
   8454     VkDeviceSize                 memoryOffset;
   8455     uint32_t                     deviceIndexCount;
   8456     const uint32_t*              pDeviceIndices;
   8457 } VkBindAccelerationStructureMemoryInfoNV;
   8458 
   8459 typedef struct VkWriteDescriptorSetAccelerationStructureNV {
   8460     VkStructureType                     sType;
   8461     const void*                         pNext;
   8462     uint32_t                            accelerationStructureCount;
   8463     const VkAccelerationStructureNV*    pAccelerationStructures;
   8464 } VkWriteDescriptorSetAccelerationStructureNV;
   8465 
   8466 typedef struct VkAccelerationStructureMemoryRequirementsInfoNV {
   8467     VkStructureType                                    sType;
   8468     const void*                                        pNext;
   8469     VkAccelerationStructureMemoryRequirementsTypeNV    type;
   8470     VkAccelerationStructureNV                          accelerationStructure;
   8471 } VkAccelerationStructureMemoryRequirementsInfoNV;
   8472 
   8473 typedef struct VkPhysicalDeviceRayTracingPropertiesNV {
   8474     VkStructureType    sType;
   8475     void*              pNext;
   8476     uint32_t           shaderGroupHandleSize;
   8477     uint32_t           maxRecursionDepth;
   8478     uint32_t           maxShaderGroupStride;
   8479     uint32_t           shaderGroupBaseAlignment;
   8480     uint64_t           maxGeometryCount;
   8481     uint64_t           maxInstanceCount;
   8482     uint64_t           maxTriangleCount;
   8483     uint32_t           maxDescriptorSetAccelerationStructures;
   8484 } VkPhysicalDeviceRayTracingPropertiesNV;
   8485 
   8486 
   8487 typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureNV)(VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure);
   8488 typedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator);
   8489 typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureMemoryRequirementsNV)(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements);
   8490 typedef VkResult (VKAPI_PTR *PFN_vkBindAccelerationStructureMemoryNV)(VkDevice device, uint32_t bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos);
   8491 typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructureNV)(VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset);
   8492 typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureNV)(VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeNV mode);
   8493 typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysNV)(VkCommandBuffer commandBuffer, VkBuffer raygenShaderBindingTableBuffer, VkDeviceSize raygenShaderBindingOffset, VkBuffer missShaderBindingTableBuffer, VkDeviceSize missShaderBindingOffset, VkDeviceSize missShaderBindingStride, VkBuffer hitShaderBindingTableBuffer, VkDeviceSize hitShaderBindingOffset, VkDeviceSize hitShaderBindingStride, VkBuffer callableShaderBindingTableBuffer, VkDeviceSize callableShaderBindingOffset, VkDeviceSize callableShaderBindingStride, uint32_t width, uint32_t height, uint32_t depth);
   8494 typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesNV)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
   8495 typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupHandlesNV)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData);
   8496 typedef VkResult (VKAPI_PTR *PFN_vkGetAccelerationStructureHandleNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, size_t dataSize, void* pData);
   8497 typedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructuresPropertiesNV)(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery);
   8498 typedef VkResult (VKAPI_PTR *PFN_vkCompileDeferredNV)(VkDevice device, VkPipeline pipeline, uint32_t shader);
   8499 
   8500 #ifndef VK_NO_PROTOTYPES
   8501 VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureNV(
   8502     VkDevice                                    device,
   8503     const VkAccelerationStructureCreateInfoNV*  pCreateInfo,
   8504     const VkAllocationCallbacks*                pAllocator,
   8505     VkAccelerationStructureNV*                  pAccelerationStructure);
   8506 
   8507 VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureNV(
   8508     VkDevice                                    device,
   8509     VkAccelerationStructureNV                   accelerationStructure,
   8510     const VkAllocationCallbacks*                pAllocator);
   8511 
   8512 VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsNV(
   8513     VkDevice                                    device,
   8514     const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
   8515     VkMemoryRequirements2KHR*                   pMemoryRequirements);
   8516 
   8517 VKAPI_ATTR VkResult VKAPI_CALL vkBindAccelerationStructureMemoryNV(
   8518     VkDevice                                    device,
   8519     uint32_t                                    bindInfoCount,
   8520     const VkBindAccelerationStructureMemoryInfoNV* pBindInfos);
   8521 
   8522 VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructureNV(
   8523     VkCommandBuffer                             commandBuffer,
   8524     const VkAccelerationStructureInfoNV*        pInfo,
   8525     VkBuffer                                    instanceData,
   8526     VkDeviceSize                                instanceOffset,
   8527     VkBool32                                    update,
   8528     VkAccelerationStructureNV                   dst,
   8529     VkAccelerationStructureNV                   src,
   8530     VkBuffer                                    scratch,
   8531     VkDeviceSize                                scratchOffset);
   8532 
   8533 VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureNV(
   8534     VkCommandBuffer                             commandBuffer,
   8535     VkAccelerationStructureNV                   dst,
   8536     VkAccelerationStructureNV                   src,
   8537     VkCopyAccelerationStructureModeNV           mode);
   8538 
   8539 VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysNV(
   8540     VkCommandBuffer                             commandBuffer,
   8541     VkBuffer                                    raygenShaderBindingTableBuffer,
   8542     VkDeviceSize                                raygenShaderBindingOffset,
   8543     VkBuffer                                    missShaderBindingTableBuffer,
   8544     VkDeviceSize                                missShaderBindingOffset,
   8545     VkDeviceSize                                missShaderBindingStride,
   8546     VkBuffer                                    hitShaderBindingTableBuffer,
   8547     VkDeviceSize                                hitShaderBindingOffset,
   8548     VkDeviceSize                                hitShaderBindingStride,
   8549     VkBuffer                                    callableShaderBindingTableBuffer,
   8550     VkDeviceSize                                callableShaderBindingOffset,
   8551     VkDeviceSize                                callableShaderBindingStride,
   8552     uint32_t                                    width,
   8553     uint32_t                                    height,
   8554     uint32_t                                    depth);
   8555 
   8556 VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesNV(
   8557     VkDevice                                    device,
   8558     VkPipelineCache                             pipelineCache,
   8559     uint32_t                                    createInfoCount,
   8560     const VkRayTracingPipelineCreateInfoNV*     pCreateInfos,
   8561     const VkAllocationCallbacks*                pAllocator,
   8562     VkPipeline*                                 pPipelines);
   8563 
   8564 VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesNV(
   8565     VkDevice                                    device,
   8566     VkPipeline                                  pipeline,
   8567     uint32_t                                    firstGroup,
   8568     uint32_t                                    groupCount,
   8569     size_t                                      dataSize,
   8570     void*                                       pData);
   8571 
   8572 VKAPI_ATTR VkResult VKAPI_CALL vkGetAccelerationStructureHandleNV(
   8573     VkDevice                                    device,
   8574     VkAccelerationStructureNV                   accelerationStructure,
   8575     size_t                                      dataSize,
   8576     void*                                       pData);
   8577 
   8578 VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesNV(
   8579     VkCommandBuffer                             commandBuffer,
   8580     uint32_t                                    accelerationStructureCount,
   8581     const VkAccelerationStructureNV*            pAccelerationStructures,
   8582     VkQueryType                                 queryType,
   8583     VkQueryPool                                 queryPool,
   8584     uint32_t                                    firstQuery);
   8585 
   8586 VKAPI_ATTR VkResult VKAPI_CALL vkCompileDeferredNV(
   8587     VkDevice                                    device,
   8588     VkPipeline                                  pipeline,
   8589     uint32_t                                    shader);
   8590 #endif
   8591 
   8592 #define VK_NV_representative_fragment_test 1
   8593 #define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION 1
   8594 #define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME "VK_NV_representative_fragment_test"
   8595 
   8596 typedef struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV {
   8597     VkStructureType    sType;
   8598     void*              pNext;
   8599     VkBool32           representativeFragmentTest;
   8600 } VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV;
   8601 
   8602 typedef struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV {
   8603     VkStructureType    sType;
   8604     const void*        pNext;
   8605     VkBool32           representativeFragmentTestEnable;
   8606 } VkPipelineRepresentativeFragmentTestStateCreateInfoNV;
   8607 
   8608 
   8609 
   8610 #define VK_EXT_filter_cubic 1
   8611 #define VK_EXT_FILTER_CUBIC_SPEC_VERSION  1
   8612 #define VK_EXT_FILTER_CUBIC_EXTENSION_NAME "VK_EXT_filter_cubic"
   8613 
   8614 typedef struct VkPhysicalDeviceImageViewImageFormatInfoEXT {
   8615     VkStructureType    sType;
   8616     void*              pNext;
   8617     VkImageViewType    imageViewType;
   8618 } VkPhysicalDeviceImageViewImageFormatInfoEXT;
   8619 
   8620 typedef struct VkFilterCubicImageViewImageFormatPropertiesEXT {
   8621     VkStructureType    sType;
   8622     void*              pNext;
   8623     VkBool32           filterCubic;
   8624     VkBool32           filterCubicMinmax ;
   8625 } VkFilterCubicImageViewImageFormatPropertiesEXT;
   8626 
   8627 
   8628 
   8629 #define VK_EXT_global_priority 1
   8630 #define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 2
   8631 #define VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME "VK_EXT_global_priority"
   8632 
   8633 
   8634 typedef enum VkQueueGlobalPriorityEXT {
   8635     VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128,
   8636     VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256,
   8637     VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512,
   8638     VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024,
   8639     VK_QUEUE_GLOBAL_PRIORITY_BEGIN_RANGE_EXT = VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT,
   8640     VK_QUEUE_GLOBAL_PRIORITY_END_RANGE_EXT = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT,
   8641     VK_QUEUE_GLOBAL_PRIORITY_RANGE_SIZE_EXT = (VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT - VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT + 1),
   8642     VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 0x7FFFFFFF
   8643 } VkQueueGlobalPriorityEXT;
   8644 
   8645 typedef struct VkDeviceQueueGlobalPriorityCreateInfoEXT {
   8646     VkStructureType             sType;
   8647     const void*                 pNext;
   8648     VkQueueGlobalPriorityEXT    globalPriority;
   8649 } VkDeviceQueueGlobalPriorityCreateInfoEXT;
   8650 
   8651 
   8652 
   8653 #define VK_EXT_external_memory_host 1
   8654 #define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1
   8655 #define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host"
   8656 
   8657 typedef struct VkImportMemoryHostPointerInfoEXT {
   8658     VkStructureType                       sType;
   8659     const void*                           pNext;
   8660     VkExternalMemoryHandleTypeFlagBits    handleType;
   8661     void*                                 pHostPointer;
   8662 } VkImportMemoryHostPointerInfoEXT;
   8663 
   8664 typedef struct VkMemoryHostPointerPropertiesEXT {
   8665     VkStructureType    sType;
   8666     void*              pNext;
   8667     uint32_t           memoryTypeBits;
   8668 } VkMemoryHostPointerPropertiesEXT;
   8669 
   8670 typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT {
   8671     VkStructureType    sType;
   8672     void*              pNext;
   8673     VkDeviceSize       minImportedHostPointerAlignment;
   8674 } VkPhysicalDeviceExternalMemoryHostPropertiesEXT;
   8675 
   8676 
   8677 typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryHostPointerPropertiesEXT)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
   8678 
   8679 #ifndef VK_NO_PROTOTYPES
   8680 VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryHostPointerPropertiesEXT(
   8681     VkDevice                                    device,
   8682     VkExternalMemoryHandleTypeFlagBits          handleType,
   8683     const void*                                 pHostPointer,
   8684     VkMemoryHostPointerPropertiesEXT*           pMemoryHostPointerProperties);
   8685 #endif
   8686 
   8687 #define VK_AMD_buffer_marker 1
   8688 #define VK_AMD_BUFFER_MARKER_SPEC_VERSION 1
   8689 #define VK_AMD_BUFFER_MARKER_EXTENSION_NAME "VK_AMD_buffer_marker"
   8690 
   8691 typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarkerAMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker);
   8692 
   8693 #ifndef VK_NO_PROTOTYPES
   8694 VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarkerAMD(
   8695     VkCommandBuffer                             commandBuffer,
   8696     VkPipelineStageFlagBits                     pipelineStage,
   8697     VkBuffer                                    dstBuffer,
   8698     VkDeviceSize                                dstOffset,
   8699     uint32_t                                    marker);
   8700 #endif
   8701 
   8702 #define VK_EXT_calibrated_timestamps 1
   8703 #define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 1
   8704 #define VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME "VK_EXT_calibrated_timestamps"
   8705 
   8706 
   8707 typedef enum VkTimeDomainEXT {
   8708     VK_TIME_DOMAIN_DEVICE_EXT = 0,
   8709     VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1,
   8710     VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2,
   8711     VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3,
   8712     VK_TIME_DOMAIN_BEGIN_RANGE_EXT = VK_TIME_DOMAIN_DEVICE_EXT,
   8713     VK_TIME_DOMAIN_END_RANGE_EXT = VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT,
   8714     VK_TIME_DOMAIN_RANGE_SIZE_EXT = (VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT - VK_TIME_DOMAIN_DEVICE_EXT + 1),
   8715     VK_TIME_DOMAIN_MAX_ENUM_EXT = 0x7FFFFFFF
   8716 } VkTimeDomainEXT;
   8717 
   8718 typedef struct VkCalibratedTimestampInfoEXT {
   8719     VkStructureType    sType;
   8720     const void*        pNext;
   8721     VkTimeDomainEXT    timeDomain;
   8722 } VkCalibratedTimestampInfoEXT;
   8723 
   8724 
   8725 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)(VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains);
   8726 typedef VkResult (VKAPI_PTR *PFN_vkGetCalibratedTimestampsEXT)(VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation);
   8727 
   8728 #ifndef VK_NO_PROTOTYPES
   8729 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
   8730     VkPhysicalDevice                            physicalDevice,
   8731     uint32_t*                                   pTimeDomainCount,
   8732     VkTimeDomainEXT*                            pTimeDomains);
   8733 
   8734 VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsEXT(
   8735     VkDevice                                    device,
   8736     uint32_t                                    timestampCount,
   8737     const VkCalibratedTimestampInfoEXT*         pTimestampInfos,
   8738     uint64_t*                                   pTimestamps,
   8739     uint64_t*                                   pMaxDeviation);
   8740 #endif
   8741 
   8742 #define VK_AMD_shader_core_properties 1
   8743 #define VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION 1
   8744 #define VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_AMD_shader_core_properties"
   8745 
   8746 typedef struct VkPhysicalDeviceShaderCorePropertiesAMD {
   8747     VkStructureType    sType;
   8748     void*              pNext;
   8749     uint32_t           shaderEngineCount;
   8750     uint32_t           shaderArraysPerEngineCount;
   8751     uint32_t           computeUnitsPerShaderArray;
   8752     uint32_t           simdPerComputeUnit;
   8753     uint32_t           wavefrontsPerSimd;
   8754     uint32_t           wavefrontSize;
   8755     uint32_t           sgprsPerSimd;
   8756     uint32_t           minSgprAllocation;
   8757     uint32_t           maxSgprAllocation;
   8758     uint32_t           sgprAllocationGranularity;
   8759     uint32_t           vgprsPerSimd;
   8760     uint32_t           minVgprAllocation;
   8761     uint32_t           maxVgprAllocation;
   8762     uint32_t           vgprAllocationGranularity;
   8763 } VkPhysicalDeviceShaderCorePropertiesAMD;
   8764 
   8765 
   8766 
   8767 #define VK_AMD_memory_overallocation_behavior 1
   8768 #define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION 1
   8769 #define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME "VK_AMD_memory_overallocation_behavior"
   8770 
   8771 
   8772 typedef enum VkMemoryOverallocationBehaviorAMD {
   8773     VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0,
   8774     VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1,
   8775     VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2,
   8776     VK_MEMORY_OVERALLOCATION_BEHAVIOR_BEGIN_RANGE_AMD = VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD,
   8777     VK_MEMORY_OVERALLOCATION_BEHAVIOR_END_RANGE_AMD = VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD,
   8778     VK_MEMORY_OVERALLOCATION_BEHAVIOR_RANGE_SIZE_AMD = (VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD - VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD + 1),
   8779     VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 0x7FFFFFFF
   8780 } VkMemoryOverallocationBehaviorAMD;
   8781 
   8782 typedef struct VkDeviceMemoryOverallocationCreateInfoAMD {
   8783     VkStructureType                      sType;
   8784     const void*                          pNext;
   8785     VkMemoryOverallocationBehaviorAMD    overallocationBehavior;
   8786 } VkDeviceMemoryOverallocationCreateInfoAMD;
   8787 
   8788 
   8789 
   8790 #define VK_EXT_vertex_attribute_divisor 1
   8791 #define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 3
   8792 #define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_EXT_vertex_attribute_divisor"
   8793 
   8794 typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT {
   8795     VkStructureType    sType;
   8796     void*              pNext;
   8797     uint32_t           maxVertexAttribDivisor;
   8798 } VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;
   8799 
   8800 typedef struct VkVertexInputBindingDivisorDescriptionEXT {
   8801     uint32_t    binding;
   8802     uint32_t    divisor;
   8803 } VkVertexInputBindingDivisorDescriptionEXT;
   8804 
   8805 typedef struct VkPipelineVertexInputDivisorStateCreateInfoEXT {
   8806     VkStructureType                                     sType;
   8807     const void*                                         pNext;
   8808     uint32_t                                            vertexBindingDivisorCount;
   8809     const VkVertexInputBindingDivisorDescriptionEXT*    pVertexBindingDivisors;
   8810 } VkPipelineVertexInputDivisorStateCreateInfoEXT;
   8811 
   8812 typedef struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT {
   8813     VkStructureType    sType;
   8814     void*              pNext;
   8815     VkBool32           vertexAttributeInstanceRateDivisor;
   8816     VkBool32           vertexAttributeInstanceRateZeroDivisor;
   8817 } VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT;
   8818 
   8819 
   8820 
   8821 #define VK_NV_shader_subgroup_partitioned 1
   8822 #define VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION 1
   8823 #define VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME "VK_NV_shader_subgroup_partitioned"
   8824 
   8825 
   8826 #define VK_NV_compute_shader_derivatives 1
   8827 #define VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION 1
   8828 #define VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME "VK_NV_compute_shader_derivatives"
   8829 
   8830 typedef struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV {
   8831     VkStructureType    sType;
   8832     void*              pNext;
   8833     VkBool32           computeDerivativeGroupQuads;
   8834     VkBool32           computeDerivativeGroupLinear;
   8835 } VkPhysicalDeviceComputeShaderDerivativesFeaturesNV;
   8836 
   8837 
   8838 
   8839 #define VK_NV_mesh_shader 1
   8840 #define VK_NV_MESH_SHADER_SPEC_VERSION    1
   8841 #define VK_NV_MESH_SHADER_EXTENSION_NAME  "VK_NV_mesh_shader"
   8842 
   8843 typedef struct VkPhysicalDeviceMeshShaderFeaturesNV {
   8844     VkStructureType    sType;
   8845     void*              pNext;
   8846     VkBool32           taskShader;
   8847     VkBool32           meshShader;
   8848 } VkPhysicalDeviceMeshShaderFeaturesNV;
   8849 
   8850 typedef struct VkPhysicalDeviceMeshShaderPropertiesNV {
   8851     VkStructureType    sType;
   8852     void*              pNext;
   8853     uint32_t           maxDrawMeshTasksCount;
   8854     uint32_t           maxTaskWorkGroupInvocations;
   8855     uint32_t           maxTaskWorkGroupSize[3];
   8856     uint32_t           maxTaskTotalMemorySize;
   8857     uint32_t           maxTaskOutputCount;
   8858     uint32_t           maxMeshWorkGroupInvocations;
   8859     uint32_t           maxMeshWorkGroupSize[3];
   8860     uint32_t           maxMeshTotalMemorySize;
   8861     uint32_t           maxMeshOutputVertices;
   8862     uint32_t           maxMeshOutputPrimitives;
   8863     uint32_t           maxMeshMultiviewViewCount;
   8864     uint32_t           meshOutputPerVertexGranularity;
   8865     uint32_t           meshOutputPerPrimitiveGranularity;
   8866 } VkPhysicalDeviceMeshShaderPropertiesNV;
   8867 
   8868 typedef struct VkDrawMeshTasksIndirectCommandNV {
   8869     uint32_t    taskCount;
   8870     uint32_t    firstTask;
   8871 } VkDrawMeshTasksIndirectCommandNV;
   8872 
   8873 
   8874 typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksNV)(VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask);
   8875 typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
   8876 typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectCountNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
   8877 
   8878 #ifndef VK_NO_PROTOTYPES
   8879 VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksNV(
   8880     VkCommandBuffer                             commandBuffer,
   8881     uint32_t                                    taskCount,
   8882     uint32_t                                    firstTask);
   8883 
   8884 VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectNV(
   8885     VkCommandBuffer                             commandBuffer,
   8886     VkBuffer                                    buffer,
   8887     VkDeviceSize                                offset,
   8888     uint32_t                                    drawCount,
   8889     uint32_t                                    stride);
   8890 
   8891 VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectCountNV(
   8892     VkCommandBuffer                             commandBuffer,
   8893     VkBuffer                                    buffer,
   8894     VkDeviceSize                                offset,
   8895     VkBuffer                                    countBuffer,
   8896     VkDeviceSize                                countBufferOffset,
   8897     uint32_t                                    maxDrawCount,
   8898     uint32_t                                    stride);
   8899 #endif
   8900 
   8901 #define VK_NV_fragment_shader_barycentric 1
   8902 #define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1
   8903 #define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME "VK_NV_fragment_shader_barycentric"
   8904 
   8905 typedef struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV {
   8906     VkStructureType    sType;
   8907     void*              pNext;
   8908     VkBool32           fragmentShaderBarycentric;
   8909 } VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV;
   8910 
   8911 
   8912 
   8913 #define VK_NV_shader_image_footprint 1
   8914 #define VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION 1
   8915 #define VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME "VK_NV_shader_image_footprint"
   8916 
   8917 typedef struct VkPhysicalDeviceShaderImageFootprintFeaturesNV {
   8918     VkStructureType    sType;
   8919     void*              pNext;
   8920     VkBool32           imageFootprint;
   8921 } VkPhysicalDeviceShaderImageFootprintFeaturesNV;
   8922 
   8923 
   8924 
   8925 #define VK_NV_scissor_exclusive 1
   8926 #define VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION 1
   8927 #define VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME "VK_NV_scissor_exclusive"
   8928 
   8929 typedef struct VkPipelineViewportExclusiveScissorStateCreateInfoNV {
   8930     VkStructureType    sType;
   8931     const void*        pNext;
   8932     uint32_t           exclusiveScissorCount;
   8933     const VkRect2D*    pExclusiveScissors;
   8934 } VkPipelineViewportExclusiveScissorStateCreateInfoNV;
   8935 
   8936 typedef struct VkPhysicalDeviceExclusiveScissorFeaturesNV {
   8937     VkStructureType    sType;
   8938     void*              pNext;
   8939     VkBool32           exclusiveScissor;
   8940 } VkPhysicalDeviceExclusiveScissorFeaturesNV;
   8941 
   8942 
   8943 typedef void (VKAPI_PTR *PFN_vkCmdSetExclusiveScissorNV)(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VkRect2D* pExclusiveScissors);
   8944 
   8945 #ifndef VK_NO_PROTOTYPES
   8946 VKAPI_ATTR void VKAPI_CALL vkCmdSetExclusiveScissorNV(
   8947     VkCommandBuffer                             commandBuffer,
   8948     uint32_t                                    firstExclusiveScissor,
   8949     uint32_t                                    exclusiveScissorCount,
   8950     const VkRect2D*                             pExclusiveScissors);
   8951 #endif
   8952 
   8953 #define VK_NV_device_diagnostic_checkpoints 1
   8954 #define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION 2
   8955 #define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME "VK_NV_device_diagnostic_checkpoints"
   8956 
   8957 typedef struct VkQueueFamilyCheckpointPropertiesNV {
   8958     VkStructureType         sType;
   8959     void*                   pNext;
   8960     VkPipelineStageFlags    checkpointExecutionStageMask;
   8961 } VkQueueFamilyCheckpointPropertiesNV;
   8962 
   8963 typedef struct VkCheckpointDataNV {
   8964     VkStructureType            sType;
   8965     void*                      pNext;
   8966     VkPipelineStageFlagBits    stage;
   8967     void*                      pCheckpointMarker;
   8968 } VkCheckpointDataNV;
   8969 
   8970 
   8971 typedef void (VKAPI_PTR *PFN_vkCmdSetCheckpointNV)(VkCommandBuffer commandBuffer, const void* pCheckpointMarker);
   8972 typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointDataNV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData);
   8973 
   8974 #ifndef VK_NO_PROTOTYPES
   8975 VKAPI_ATTR void VKAPI_CALL vkCmdSetCheckpointNV(
   8976     VkCommandBuffer                             commandBuffer,
   8977     const void*                                 pCheckpointMarker);
   8978 
   8979 VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointDataNV(
   8980     VkQueue                                     queue,
   8981     uint32_t*                                   pCheckpointDataCount,
   8982     VkCheckpointDataNV*                         pCheckpointData);
   8983 #endif
   8984 
   8985 #define VK_EXT_pci_bus_info 1
   8986 #define VK_EXT_PCI_BUS_INFO_SPEC_VERSION  2
   8987 #define VK_EXT_PCI_BUS_INFO_EXTENSION_NAME "VK_EXT_pci_bus_info"
   8988 
   8989 typedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT {
   8990     VkStructureType    sType;
   8991     void*              pNext;
   8992     uint32_t           pciDomain;
   8993     uint32_t           pciBus;
   8994     uint32_t           pciDevice;
   8995     uint32_t           pciFunction;
   8996 } VkPhysicalDevicePCIBusInfoPropertiesEXT;
   8997 
   8998 
   8999 
   9000 #define VK_EXT_fragment_density_map 1
   9001 #define VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION 1
   9002 #define VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME "VK_EXT_fragment_density_map"
   9003 
   9004 typedef struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT {
   9005     VkStructureType    sType;
   9006     void*              pNext;
   9007     VkBool32           fragmentDensityMap;
   9008     VkBool32           fragmentDensityMapDynamic;
   9009     VkBool32           fragmentDensityMapNonSubsampledImages;
   9010 } VkPhysicalDeviceFragmentDensityMapFeaturesEXT;
   9011 
   9012 typedef struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT {
   9013     VkStructureType    sType;
   9014     void*              pNext;
   9015     VkExtent2D         minFragmentDensityTexelSize;
   9016     VkExtent2D         maxFragmentDensityTexelSize;
   9017     VkBool32           fragmentDensityInvocations;
   9018 } VkPhysicalDeviceFragmentDensityMapPropertiesEXT;
   9019 
   9020 typedef struct VkRenderPassFragmentDensityMapCreateInfoEXT {
   9021     VkStructureType          sType;
   9022     const void*              pNext;
   9023     VkAttachmentReference    fragmentDensityMapAttachment;
   9024 } VkRenderPassFragmentDensityMapCreateInfoEXT;
   9025 
   9026 
   9027 
   9028 #define VK_EXT_scalar_block_layout 1
   9029 #define VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION 1
   9030 #define VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME "VK_EXT_scalar_block_layout"
   9031 
   9032 typedef struct VkPhysicalDeviceScalarBlockLayoutFeaturesEXT {
   9033     VkStructureType    sType;
   9034     void*              pNext;
   9035     VkBool32           scalarBlockLayout;
   9036 } VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
   9037 
   9038 
   9039 
   9040 #define VK_GOOGLE_hlsl_functionality1 1
   9041 #define VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION 1
   9042 #define VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME "VK_GOOGLE_hlsl_functionality1"
   9043 
   9044 
   9045 #define VK_GOOGLE_decorate_string 1
   9046 #define VK_GOOGLE_DECORATE_STRING_SPEC_VERSION 1
   9047 #define VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME "VK_GOOGLE_decorate_string"
   9048 
   9049 
   9050 #define VK_EXT_memory_budget 1
   9051 #define VK_EXT_MEMORY_BUDGET_SPEC_VERSION 1
   9052 #define VK_EXT_MEMORY_BUDGET_EXTENSION_NAME "VK_EXT_memory_budget"
   9053 
   9054 typedef struct VkPhysicalDeviceMemoryBudgetPropertiesEXT {
   9055     VkStructureType    sType;
   9056     void*              pNext;
   9057     VkDeviceSize       heapBudget[VK_MAX_MEMORY_HEAPS];
   9058     VkDeviceSize       heapUsage[VK_MAX_MEMORY_HEAPS];
   9059 } VkPhysicalDeviceMemoryBudgetPropertiesEXT;
   9060 
   9061 
   9062 
   9063 #define VK_EXT_memory_priority 1
   9064 #define VK_EXT_MEMORY_PRIORITY_SPEC_VERSION 1
   9065 #define VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME "VK_EXT_memory_priority"
   9066 
   9067 typedef struct VkPhysicalDeviceMemoryPriorityFeaturesEXT {
   9068     VkStructureType    sType;
   9069     void*              pNext;
   9070     VkBool32           memoryPriority;
   9071 } VkPhysicalDeviceMemoryPriorityFeaturesEXT;
   9072 
   9073 typedef struct VkMemoryPriorityAllocateInfoEXT {
   9074     VkStructureType    sType;
   9075     const void*        pNext;
   9076     float              priority;
   9077 } VkMemoryPriorityAllocateInfoEXT;
   9078 
   9079 
   9080 
   9081 #define VK_NV_dedicated_allocation_image_aliasing 1
   9082 #define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION 1
   9083 #define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME "VK_NV_dedicated_allocation_image_aliasing"
   9084 
   9085 typedef struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
   9086     VkStructureType    sType;
   9087     void*              pNext;
   9088     VkBool32           dedicatedAllocationImageAliasing;
   9089 } VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
   9090 
   9091 
   9092 
   9093 #define VK_EXT_buffer_device_address 1
   9094 typedef uint64_t VkDeviceAddress;
   9095 
   9096 #define VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 2
   9097 #define VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_EXT_buffer_device_address"
   9098 
   9099 typedef struct VkPhysicalDeviceBufferAddressFeaturesEXT {
   9100     VkStructureType    sType;
   9101     void*              pNext;
   9102     VkBool32           bufferDeviceAddress;
   9103     VkBool32           bufferDeviceAddressCaptureReplay;
   9104     VkBool32           bufferDeviceAddressMultiDevice;
   9105 } VkPhysicalDeviceBufferAddressFeaturesEXT;
   9106 
   9107 typedef struct VkBufferDeviceAddressInfoEXT {
   9108     VkStructureType    sType;
   9109     const void*        pNext;
   9110     VkBuffer           buffer;
   9111 } VkBufferDeviceAddressInfoEXT;
   9112 
   9113 typedef struct VkBufferDeviceAddressCreateInfoEXT {
   9114     VkStructureType    sType;
   9115     const void*        pNext;
   9116     VkDeviceSize       deviceAddress;
   9117 } VkBufferDeviceAddressCreateInfoEXT;
   9118 
   9119 
   9120 typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressEXT)(VkDevice device, const VkBufferDeviceAddressInfoEXT* pInfo);
   9121 
   9122 #ifndef VK_NO_PROTOTYPES
   9123 VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressEXT(
   9124     VkDevice                                    device,
   9125     const VkBufferDeviceAddressInfoEXT*         pInfo);
   9126 #endif
   9127 
   9128 #define VK_EXT_separate_stencil_usage 1
   9129 #define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1
   9130 #define VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME "VK_EXT_separate_stencil_usage"
   9131 
   9132 typedef struct VkImageStencilUsageCreateInfoEXT {
   9133     VkStructureType      sType;
   9134     const void*          pNext;
   9135     VkImageUsageFlags    stencilUsage;
   9136 } VkImageStencilUsageCreateInfoEXT;
   9137 
   9138 
   9139 
   9140 #define VK_EXT_validation_features 1
   9141 #define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 1
   9142 #define VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME "VK_EXT_validation_features"
   9143 
   9144 
   9145 typedef enum VkValidationFeatureEnableEXT {
   9146     VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0,
   9147     VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1,
   9148     VK_VALIDATION_FEATURE_ENABLE_BEGIN_RANGE_EXT = VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT,
   9149     VK_VALIDATION_FEATURE_ENABLE_END_RANGE_EXT = VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT,
   9150     VK_VALIDATION_FEATURE_ENABLE_RANGE_SIZE_EXT = (VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT - VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT + 1),
   9151     VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 0x7FFFFFFF
   9152 } VkValidationFeatureEnableEXT;
   9153 
   9154 typedef enum VkValidationFeatureDisableEXT {
   9155     VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0,
   9156     VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1,
   9157     VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2,
   9158     VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3,
   9159     VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4,
   9160     VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5,
   9161     VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6,
   9162     VK_VALIDATION_FEATURE_DISABLE_BEGIN_RANGE_EXT = VK_VALIDATION_FEATURE_DISABLE_ALL_EXT,
   9163     VK_VALIDATION_FEATURE_DISABLE_END_RANGE_EXT = VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT,
   9164     VK_VALIDATION_FEATURE_DISABLE_RANGE_SIZE_EXT = (VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT - VK_VALIDATION_FEATURE_DISABLE_ALL_EXT + 1),
   9165     VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 0x7FFFFFFF
   9166 } VkValidationFeatureDisableEXT;
   9167 
   9168 typedef struct VkValidationFeaturesEXT {
   9169     VkStructureType                         sType;
   9170     const void*                             pNext;
   9171     uint32_t                                enabledValidationFeatureCount;
   9172     const VkValidationFeatureEnableEXT*     pEnabledValidationFeatures;
   9173     uint32_t                                disabledValidationFeatureCount;
   9174     const VkValidationFeatureDisableEXT*    pDisabledValidationFeatures;
   9175 } VkValidationFeaturesEXT;
   9176 
   9177 
   9178 
   9179 #define VK_NV_cooperative_matrix 1
   9180 #define VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION 1
   9181 #define VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME "VK_NV_cooperative_matrix"
   9182 
   9183 
   9184 typedef enum VkComponentTypeNV {
   9185     VK_COMPONENT_TYPE_FLOAT16_NV = 0,
   9186     VK_COMPONENT_TYPE_FLOAT32_NV = 1,
   9187     VK_COMPONENT_TYPE_FLOAT64_NV = 2,
   9188     VK_COMPONENT_TYPE_SINT8_NV = 3,
   9189     VK_COMPONENT_TYPE_SINT16_NV = 4,
   9190     VK_COMPONENT_TYPE_SINT32_NV = 5,
   9191     VK_COMPONENT_TYPE_SINT64_NV = 6,
   9192     VK_COMPONENT_TYPE_UINT8_NV = 7,
   9193     VK_COMPONENT_TYPE_UINT16_NV = 8,
   9194     VK_COMPONENT_TYPE_UINT32_NV = 9,
   9195     VK_COMPONENT_TYPE_UINT64_NV = 10,
   9196     VK_COMPONENT_TYPE_BEGIN_RANGE_NV = VK_COMPONENT_TYPE_FLOAT16_NV,
   9197     VK_COMPONENT_TYPE_END_RANGE_NV = VK_COMPONENT_TYPE_UINT64_NV,
   9198     VK_COMPONENT_TYPE_RANGE_SIZE_NV = (VK_COMPONENT_TYPE_UINT64_NV - VK_COMPONENT_TYPE_FLOAT16_NV + 1),
   9199     VK_COMPONENT_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
   9200 } VkComponentTypeNV;
   9201 
   9202 typedef enum VkScopeNV {
   9203     VK_SCOPE_DEVICE_NV = 1,
   9204     VK_SCOPE_WORKGROUP_NV = 2,
   9205     VK_SCOPE_SUBGROUP_NV = 3,
   9206     VK_SCOPE_QUEUE_FAMILY_NV = 5,
   9207     VK_SCOPE_BEGIN_RANGE_NV = VK_SCOPE_DEVICE_NV,
   9208     VK_SCOPE_END_RANGE_NV = VK_SCOPE_QUEUE_FAMILY_NV,
   9209     VK_SCOPE_RANGE_SIZE_NV = (VK_SCOPE_QUEUE_FAMILY_NV - VK_SCOPE_DEVICE_NV + 1),
   9210     VK_SCOPE_MAX_ENUM_NV = 0x7FFFFFFF
   9211 } VkScopeNV;
   9212 
   9213 typedef struct VkCooperativeMatrixPropertiesNV {
   9214     VkStructureType      sType;
   9215     void*                pNext;
   9216     uint32_t             MSize;
   9217     uint32_t             NSize;
   9218     uint32_t             KSize;
   9219     VkComponentTypeNV    AType;
   9220     VkComponentTypeNV    BType;
   9221     VkComponentTypeNV    CType;
   9222     VkComponentTypeNV    DType;
   9223     VkScopeNV            scope;
   9224 } VkCooperativeMatrixPropertiesNV;
   9225 
   9226 typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesNV {
   9227     VkStructureType    sType;
   9228     void*              pNext;
   9229     VkBool32           cooperativeMatrix;
   9230     VkBool32           cooperativeMatrixRobustBufferAccess;
   9231 } VkPhysicalDeviceCooperativeMatrixFeaturesNV;
   9232 
   9233 typedef struct VkPhysicalDeviceCooperativeMatrixPropertiesNV {
   9234     VkStructureType       sType;
   9235     void*                 pNext;
   9236     VkShaderStageFlags    cooperativeMatrixSupportedStages;
   9237 } VkPhysicalDeviceCooperativeMatrixPropertiesNV;
   9238 
   9239 
   9240 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties);
   9241 
   9242 #ifndef VK_NO_PROTOTYPES
   9243 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
   9244     VkPhysicalDevice                            physicalDevice,
   9245     uint32_t*                                   pPropertyCount,
   9246     VkCooperativeMatrixPropertiesNV*            pProperties);
   9247 #endif
   9248 
   9249 #define VK_EXT_ycbcr_image_arrays 1
   9250 #define VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION 1
   9251 #define VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME "VK_EXT_ycbcr_image_arrays"
   9252 
   9253 typedef struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT {
   9254     VkStructureType    sType;
   9255     void*              pNext;
   9256     VkBool32           ycbcrImageArrays;
   9257 } VkPhysicalDeviceYcbcrImageArraysFeaturesEXT;
   9258 
   9259 
   9260 
   9261 #ifdef __cplusplus
   9262 }
   9263 #endif
   9264 
   9265 #endif
   9266