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-2018 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 68
     47 
     48 
     49 #define VK_NULL_HANDLE 0
     50 
     51 
     52 
     53 #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
     54 
     55 
     56 #if !defined(VK_DEFINE_NON_DISPATCHABLE_HANDLE)
     57 #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
     58         #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
     59 #else
     60         #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
     61 #endif
     62 #endif
     63 
     64 
     65 
     66 typedef uint32_t VkFlags;
     67 typedef uint32_t VkBool32;
     68 typedef uint64_t VkDeviceSize;
     69 typedef uint32_t VkSampleMask;
     70 
     71 VK_DEFINE_HANDLE(VkInstance)
     72 VK_DEFINE_HANDLE(VkPhysicalDevice)
     73 VK_DEFINE_HANDLE(VkDevice)
     74 VK_DEFINE_HANDLE(VkQueue)
     75 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore)
     76 VK_DEFINE_HANDLE(VkCommandBuffer)
     77 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence)
     78 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory)
     79 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer)
     80 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage)
     81 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent)
     82 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool)
     83 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView)
     84 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView)
     85 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule)
     86 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache)
     87 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout)
     88 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass)
     89 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline)
     90 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout)
     91 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler)
     92 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool)
     93 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet)
     94 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer)
     95 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool)
     96 
     97 #define VK_LOD_CLAMP_NONE                 1000.0f
     98 #define VK_REMAINING_MIP_LEVELS           (~0U)
     99 #define VK_REMAINING_ARRAY_LAYERS         (~0U)
    100 #define VK_WHOLE_SIZE                     (~0ULL)
    101 #define VK_ATTACHMENT_UNUSED              (~0U)
    102 #define VK_TRUE                           1
    103 #define VK_FALSE                          0
    104 #define VK_QUEUE_FAMILY_IGNORED           (~0U)
    105 #define VK_SUBPASS_EXTERNAL               (~0U)
    106 #define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE  256
    107 #define VK_UUID_SIZE                      16
    108 #define VK_MAX_MEMORY_TYPES               32
    109 #define VK_MAX_MEMORY_HEAPS               16
    110 #define VK_MAX_EXTENSION_NAME_SIZE        256
    111 #define VK_MAX_DESCRIPTION_SIZE           256
    112 
    113 
    114 typedef enum VkPipelineCacheHeaderVersion {
    115     VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
    116     VK_PIPELINE_CACHE_HEADER_VERSION_BEGIN_RANGE = VK_PIPELINE_CACHE_HEADER_VERSION_ONE,
    117     VK_PIPELINE_CACHE_HEADER_VERSION_END_RANGE = VK_PIPELINE_CACHE_HEADER_VERSION_ONE,
    118     VK_PIPELINE_CACHE_HEADER_VERSION_RANGE_SIZE = (VK_PIPELINE_CACHE_HEADER_VERSION_ONE - VK_PIPELINE_CACHE_HEADER_VERSION_ONE + 1),
    119     VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF
    120 } VkPipelineCacheHeaderVersion;
    121 
    122 typedef enum VkResult {
    123     VK_SUCCESS = 0,
    124     VK_NOT_READY = 1,
    125     VK_TIMEOUT = 2,
    126     VK_EVENT_SET = 3,
    127     VK_EVENT_RESET = 4,
    128     VK_INCOMPLETE = 5,
    129     VK_ERROR_OUT_OF_HOST_MEMORY = -1,
    130     VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
    131     VK_ERROR_INITIALIZATION_FAILED = -3,
    132     VK_ERROR_DEVICE_LOST = -4,
    133     VK_ERROR_MEMORY_MAP_FAILED = -5,
    134     VK_ERROR_LAYER_NOT_PRESENT = -6,
    135     VK_ERROR_EXTENSION_NOT_PRESENT = -7,
    136     VK_ERROR_FEATURE_NOT_PRESENT = -8,
    137     VK_ERROR_INCOMPATIBLE_DRIVER = -9,
    138     VK_ERROR_TOO_MANY_OBJECTS = -10,
    139     VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
    140     VK_ERROR_FRAGMENTED_POOL = -12,
    141     VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000,
    142     VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003,
    143     VK_ERROR_SURFACE_LOST_KHR = -1000000000,
    144     VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
    145     VK_SUBOPTIMAL_KHR = 1000001003,
    146     VK_ERROR_OUT_OF_DATE_KHR = -1000001004,
    147     VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
    148     VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
    149     VK_ERROR_INVALID_SHADER_NV = -1000012000,
    150     VK_ERROR_NOT_PERMITTED_EXT = -1000174001,
    151     VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY,
    152     VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE,
    153     VK_RESULT_BEGIN_RANGE = VK_ERROR_FRAGMENTED_POOL,
    154     VK_RESULT_END_RANGE = VK_INCOMPLETE,
    155     VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FRAGMENTED_POOL + 1),
    156     VK_RESULT_MAX_ENUM = 0x7FFFFFFF
    157 } VkResult;
    158 
    159 typedef enum VkStructureType {
    160     VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
    161     VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
    162     VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
    163     VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
    164     VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
    165     VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
    166     VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
    167     VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
    168     VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
    169     VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
    170     VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
    171     VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
    172     VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
    173     VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
    174     VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
    175     VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
    176     VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
    177     VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
    178     VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
    179     VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
    180     VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
    181     VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
    182     VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
    183     VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
    184     VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
    185     VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
    186     VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
    187     VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
    188     VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
    189     VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
    190     VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
    191     VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
    192     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
    193     VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
    194     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
    195     VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
    196     VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
    197     VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
    198     VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
    199     VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
    200     VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
    201     VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
    202     VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
    203     VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
    204     VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
    205     VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
    206     VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
    207     VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
    208     VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
    209     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000,
    210     VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000,
    211     VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001,
    212     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000,
    213     VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000,
    214     VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001,
    215     VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000,
    216     VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003,
    217     VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004,
    218     VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005,
    219     VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006,
    220     VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013,
    221     VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014,
    222     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000,
    223     VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001,
    224     VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000,
    225     VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001,
    226     VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002,
    227     VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003,
    228     VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004,
    229     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000,
    230     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001,
    231     VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002,
    232     VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003,
    233     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004,
    234     VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005,
    235     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006,
    236     VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007,
    237     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008,
    238     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000,
    239     VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001,
    240     VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002,
    241     VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003,
    242     VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000,
    243     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001,
    244     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002,
    245     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000,
    246     VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000,
    247     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001,
    248     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002,
    249     VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003,
    250     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000,
    251     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001,
    252     VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002,
    253     VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003,
    254     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004,
    255     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005,
    256     VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000,
    257     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000,
    258     VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001,
    259     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002,
    260     VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003,
    261     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004,
    262     VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000,
    263     VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001,
    264     VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002,
    265     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000,
    266     VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001,
    267     VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000,
    268     VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000,
    269     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000,
    270     VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001,
    271     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000,
    272     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001,
    273     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000,
    274     VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
    275     VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
    276     VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007,
    277     VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008,
    278     VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009,
    279     VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010,
    280     VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011,
    281     VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012,
    282     VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
    283     VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
    284     VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000,
    285     VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
    286     VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
    287     VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
    288     VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000,
    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_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000,
    300     VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
    301     VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,
    302     VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
    303     VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
    304     VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
    305     VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
    306     VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000,
    307     VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000,
    308     VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001,
    309     VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002,
    310     VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003,
    311     VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000,
    312     VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001,
    313     VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002,
    314     VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000,
    315     VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000,
    316     VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001,
    317     VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002,
    318     VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003,
    319     VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000,
    320     VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001,
    321     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000,
    322     VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
    323     VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
    324     VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
    325     VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = 1000086002,
    326     VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = 1000086003,
    327     VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004,
    328     VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005,
    329     VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000,
    330     VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000,
    331     VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000,
    332     VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001,
    333     VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002,
    334     VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,
    335     VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000,
    336     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000,
    337     VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000,
    338     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,
    339     VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,
    340     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000,
    341     VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001,
    342     VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
    343     VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
    344     VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000,
    345     VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001,
    346     VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002,
    347     VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000,
    348     VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001,
    349     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,
    350     VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001,
    351     VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002,
    352     VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000,
    353     VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000,
    354     VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000,
    355     VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001,
    356     VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002,
    357     VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003,
    358     VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004,
    359     VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000,
    360     VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001,
    361     VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002,
    362     VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003,
    363     VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004,
    364     VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005,
    365     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000,
    366     VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001,
    367     VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000,
    368     VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001,
    369     VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002,
    370     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003,
    371     VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004,
    372     VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000,
    373     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000,
    374     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001,
    375     VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
    376     VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000,
    377     VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000,
    378     VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,
    379     VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
    380     VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000,
    381     VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000,
    382     VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001,
    383     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,
    384     VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,
    385     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
    386     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
    387     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,
    388     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,
    389     VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2,
    390     VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,
    391     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
    392     VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,
    393     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
    394     VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2,
    395     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
    396     VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,
    397     VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
    398     VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
    399     VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,
    400     VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,
    401     VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
    402     VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
    403     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES,
    404     VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,
    405     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
    406     VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,
    407     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
    408     VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,
    409     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,
    410     VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
    411     VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
    412     VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,
    413     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
    414     VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
    415     VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
    416     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
    417     VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
    418     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
    419     VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
    420     VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
    421     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
    422     VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
    423     VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,
    424     VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
    425     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES,
    426     VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
    427     VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
    428     VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
    429     VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
    430     VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
    431     VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
    432     VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
    433     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
    434     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
    435     VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,
    436     VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
    437     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
    438     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
    439     VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
    440     VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
    441     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
    442     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
    443     VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
    444     VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
    445     VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
    446     VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
    447 } VkStructureType;
    448 
    449 typedef enum VkSystemAllocationScope {
    450     VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,
    451     VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,
    452     VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,
    453     VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,
    454     VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4,
    455     VK_SYSTEM_ALLOCATION_SCOPE_BEGIN_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
    456     VK_SYSTEM_ALLOCATION_SCOPE_END_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE,
    457     VK_SYSTEM_ALLOCATION_SCOPE_RANGE_SIZE = (VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE - VK_SYSTEM_ALLOCATION_SCOPE_COMMAND + 1),
    458     VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF
    459 } VkSystemAllocationScope;
    460 
    461 typedef enum VkInternalAllocationType {
    462     VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,
    463     VK_INTERNAL_ALLOCATION_TYPE_BEGIN_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE,
    464     VK_INTERNAL_ALLOCATION_TYPE_END_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE,
    465     VK_INTERNAL_ALLOCATION_TYPE_RANGE_SIZE = (VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE - VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE + 1),
    466     VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF
    467 } VkInternalAllocationType;
    468 
    469 typedef enum VkFormat {
    470     VK_FORMAT_UNDEFINED = 0,
    471     VK_FORMAT_R4G4_UNORM_PACK8 = 1,
    472     VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
    473     VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
    474     VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
    475     VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
    476     VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
    477     VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
    478     VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
    479     VK_FORMAT_R8_UNORM = 9,
    480     VK_FORMAT_R8_SNORM = 10,
    481     VK_FORMAT_R8_USCALED = 11,
    482     VK_FORMAT_R8_SSCALED = 12,
    483     VK_FORMAT_R8_UINT = 13,
    484     VK_FORMAT_R8_SINT = 14,
    485     VK_FORMAT_R8_SRGB = 15,
    486     VK_FORMAT_R8G8_UNORM = 16,
    487     VK_FORMAT_R8G8_SNORM = 17,
    488     VK_FORMAT_R8G8_USCALED = 18,
    489     VK_FORMAT_R8G8_SSCALED = 19,
    490     VK_FORMAT_R8G8_UINT = 20,
    491     VK_FORMAT_R8G8_SINT = 21,
    492     VK_FORMAT_R8G8_SRGB = 22,
    493     VK_FORMAT_R8G8B8_UNORM = 23,
    494     VK_FORMAT_R8G8B8_SNORM = 24,
    495     VK_FORMAT_R8G8B8_USCALED = 25,
    496     VK_FORMAT_R8G8B8_SSCALED = 26,
    497     VK_FORMAT_R8G8B8_UINT = 27,
    498     VK_FORMAT_R8G8B8_SINT = 28,
    499     VK_FORMAT_R8G8B8_SRGB = 29,
    500     VK_FORMAT_B8G8R8_UNORM = 30,
    501     VK_FORMAT_B8G8R8_SNORM = 31,
    502     VK_FORMAT_B8G8R8_USCALED = 32,
    503     VK_FORMAT_B8G8R8_SSCALED = 33,
    504     VK_FORMAT_B8G8R8_UINT = 34,
    505     VK_FORMAT_B8G8R8_SINT = 35,
    506     VK_FORMAT_B8G8R8_SRGB = 36,
    507     VK_FORMAT_R8G8B8A8_UNORM = 37,
    508     VK_FORMAT_R8G8B8A8_SNORM = 38,
    509     VK_FORMAT_R8G8B8A8_USCALED = 39,
    510     VK_FORMAT_R8G8B8A8_SSCALED = 40,
    511     VK_FORMAT_R8G8B8A8_UINT = 41,
    512     VK_FORMAT_R8G8B8A8_SINT = 42,
    513     VK_FORMAT_R8G8B8A8_SRGB = 43,
    514     VK_FORMAT_B8G8R8A8_UNORM = 44,
    515     VK_FORMAT_B8G8R8A8_SNORM = 45,
    516     VK_FORMAT_B8G8R8A8_USCALED = 46,
    517     VK_FORMAT_B8G8R8A8_SSCALED = 47,
    518     VK_FORMAT_B8G8R8A8_UINT = 48,
    519     VK_FORMAT_B8G8R8A8_SINT = 49,
    520     VK_FORMAT_B8G8R8A8_SRGB = 50,
    521     VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
    522     VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
    523     VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
    524     VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
    525     VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
    526     VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
    527     VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
    528     VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
    529     VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
    530     VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
    531     VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
    532     VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
    533     VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
    534     VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
    535     VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
    536     VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
    537     VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
    538     VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
    539     VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
    540     VK_FORMAT_R16_UNORM = 70,
    541     VK_FORMAT_R16_SNORM = 71,
    542     VK_FORMAT_R16_USCALED = 72,
    543     VK_FORMAT_R16_SSCALED = 73,
    544     VK_FORMAT_R16_UINT = 74,
    545     VK_FORMAT_R16_SINT = 75,
    546     VK_FORMAT_R16_SFLOAT = 76,
    547     VK_FORMAT_R16G16_UNORM = 77,
    548     VK_FORMAT_R16G16_SNORM = 78,
    549     VK_FORMAT_R16G16_USCALED = 79,
    550     VK_FORMAT_R16G16_SSCALED = 80,
    551     VK_FORMAT_R16G16_UINT = 81,
    552     VK_FORMAT_R16G16_SINT = 82,
    553     VK_FORMAT_R16G16_SFLOAT = 83,
    554     VK_FORMAT_R16G16B16_UNORM = 84,
    555     VK_FORMAT_R16G16B16_SNORM = 85,
    556     VK_FORMAT_R16G16B16_USCALED = 86,
    557     VK_FORMAT_R16G16B16_SSCALED = 87,
    558     VK_FORMAT_R16G16B16_UINT = 88,
    559     VK_FORMAT_R16G16B16_SINT = 89,
    560     VK_FORMAT_R16G16B16_SFLOAT = 90,
    561     VK_FORMAT_R16G16B16A16_UNORM = 91,
    562     VK_FORMAT_R16G16B16A16_SNORM = 92,
    563     VK_FORMAT_R16G16B16A16_USCALED = 93,
    564     VK_FORMAT_R16G16B16A16_SSCALED = 94,
    565     VK_FORMAT_R16G16B16A16_UINT = 95,
    566     VK_FORMAT_R16G16B16A16_SINT = 96,
    567     VK_FORMAT_R16G16B16A16_SFLOAT = 97,
    568     VK_FORMAT_R32_UINT = 98,
    569     VK_FORMAT_R32_SINT = 99,
    570     VK_FORMAT_R32_SFLOAT = 100,
    571     VK_FORMAT_R32G32_UINT = 101,
    572     VK_FORMAT_R32G32_SINT = 102,
    573     VK_FORMAT_R32G32_SFLOAT = 103,
    574     VK_FORMAT_R32G32B32_UINT = 104,
    575     VK_FORMAT_R32G32B32_SINT = 105,
    576     VK_FORMAT_R32G32B32_SFLOAT = 106,
    577     VK_FORMAT_R32G32B32A32_UINT = 107,
    578     VK_FORMAT_R32G32B32A32_SINT = 108,
    579     VK_FORMAT_R32G32B32A32_SFLOAT = 109,
    580     VK_FORMAT_R64_UINT = 110,
    581     VK_FORMAT_R64_SINT = 111,
    582     VK_FORMAT_R64_SFLOAT = 112,
    583     VK_FORMAT_R64G64_UINT = 113,
    584     VK_FORMAT_R64G64_SINT = 114,
    585     VK_FORMAT_R64G64_SFLOAT = 115,
    586     VK_FORMAT_R64G64B64_UINT = 116,
    587     VK_FORMAT_R64G64B64_SINT = 117,
    588     VK_FORMAT_R64G64B64_SFLOAT = 118,
    589     VK_FORMAT_R64G64B64A64_UINT = 119,
    590     VK_FORMAT_R64G64B64A64_SINT = 120,
    591     VK_FORMAT_R64G64B64A64_SFLOAT = 121,
    592     VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
    593     VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
    594     VK_FORMAT_D16_UNORM = 124,
    595     VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
    596     VK_FORMAT_D32_SFLOAT = 126,
    597     VK_FORMAT_S8_UINT = 127,
    598     VK_FORMAT_D16_UNORM_S8_UINT = 128,
    599     VK_FORMAT_D24_UNORM_S8_UINT = 129,
    600     VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
    601     VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
    602     VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
    603     VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
    604     VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
    605     VK_FORMAT_BC2_UNORM_BLOCK = 135,
    606     VK_FORMAT_BC2_SRGB_BLOCK = 136,
    607     VK_FORMAT_BC3_UNORM_BLOCK = 137,
    608     VK_FORMAT_BC3_SRGB_BLOCK = 138,
    609     VK_FORMAT_BC4_UNORM_BLOCK = 139,
    610     VK_FORMAT_BC4_SNORM_BLOCK = 140,
    611     VK_FORMAT_BC5_UNORM_BLOCK = 141,
    612     VK_FORMAT_BC5_SNORM_BLOCK = 142,
    613     VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
    614     VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
    615     VK_FORMAT_BC7_UNORM_BLOCK = 145,
    616     VK_FORMAT_BC7_SRGB_BLOCK = 146,
    617     VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
    618     VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
    619     VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
    620     VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
    621     VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
    622     VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
    623     VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
    624     VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
    625     VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
    626     VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
    627     VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
    628     VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
    629     VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
    630     VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
    631     VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
    632     VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
    633     VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
    634     VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
    635     VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
    636     VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
    637     VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
    638     VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
    639     VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
    640     VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
    641     VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
    642     VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
    643     VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
    644     VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
    645     VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
    646     VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
    647     VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
    648     VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
    649     VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
    650     VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
    651     VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
    652     VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
    653     VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
    654     VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
    655     VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000,
    656     VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001,
    657     VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002,
    658     VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003,
    659     VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004,
    660     VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005,
    661     VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006,
    662     VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007,
    663     VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008,
    664     VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009,
    665     VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010,
    666     VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011,
    667     VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012,
    668     VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013,
    669     VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014,
    670     VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015,
    671     VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016,
    672     VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017,
    673     VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018,
    674     VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019,
    675     VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020,
    676     VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021,
    677     VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022,
    678     VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023,
    679     VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024,
    680     VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025,
    681     VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026,
    682     VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027,
    683     VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028,
    684     VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029,
    685     VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030,
    686     VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031,
    687     VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032,
    688     VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033,
    689     VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
    690     VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
    691     VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
    692     VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
    693     VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
    694     VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
    695     VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
    696     VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
    697     VK_FORMAT_G8B8G8R8_422_UNORM_KHR = VK_FORMAT_G8B8G8R8_422_UNORM,
    698     VK_FORMAT_B8G8R8G8_422_UNORM_KHR = VK_FORMAT_B8G8R8G8_422_UNORM,
    699     VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
    700     VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM,
    701     VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM,
    702     VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM,
    703     VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM,
    704     VK_FORMAT_R10X6_UNORM_PACK16_KHR = VK_FORMAT_R10X6_UNORM_PACK16,
    705     VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16,
    706     VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,
    707     VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,
    708     VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,
    709     VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,
    710     VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,
    711     VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,
    712     VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,
    713     VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,
    714     VK_FORMAT_R12X4_UNORM_PACK16_KHR = VK_FORMAT_R12X4_UNORM_PACK16,
    715     VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16,
    716     VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,
    717     VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,
    718     VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,
    719     VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,
    720     VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,
    721     VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,
    722     VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,
    723     VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,
    724     VK_FORMAT_G16B16G16R16_422_UNORM_KHR = VK_FORMAT_G16B16G16R16_422_UNORM,
    725     VK_FORMAT_B16G16R16G16_422_UNORM_KHR = VK_FORMAT_B16G16R16G16_422_UNORM,
    726     VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM,
    727     VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM,
    728     VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM,
    729     VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM,
    730     VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM,
    731     VK_FORMAT_BEGIN_RANGE = VK_FORMAT_UNDEFINED,
    732     VK_FORMAT_END_RANGE = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
    733     VK_FORMAT_RANGE_SIZE = (VK_FORMAT_ASTC_12x12_SRGB_BLOCK - VK_FORMAT_UNDEFINED + 1),
    734     VK_FORMAT_MAX_ENUM = 0x7FFFFFFF
    735 } VkFormat;
    736 
    737 typedef enum VkImageType {
    738     VK_IMAGE_TYPE_1D = 0,
    739     VK_IMAGE_TYPE_2D = 1,
    740     VK_IMAGE_TYPE_3D = 2,
    741     VK_IMAGE_TYPE_BEGIN_RANGE = VK_IMAGE_TYPE_1D,
    742     VK_IMAGE_TYPE_END_RANGE = VK_IMAGE_TYPE_3D,
    743     VK_IMAGE_TYPE_RANGE_SIZE = (VK_IMAGE_TYPE_3D - VK_IMAGE_TYPE_1D + 1),
    744     VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF
    745 } VkImageType;
    746 
    747 typedef enum VkImageTiling {
    748     VK_IMAGE_TILING_OPTIMAL = 0,
    749     VK_IMAGE_TILING_LINEAR = 1,
    750     VK_IMAGE_TILING_BEGIN_RANGE = VK_IMAGE_TILING_OPTIMAL,
    751     VK_IMAGE_TILING_END_RANGE = VK_IMAGE_TILING_LINEAR,
    752     VK_IMAGE_TILING_RANGE_SIZE = (VK_IMAGE_TILING_LINEAR - VK_IMAGE_TILING_OPTIMAL + 1),
    753     VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF
    754 } VkImageTiling;
    755 
    756 typedef enum VkPhysicalDeviceType {
    757     VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,
    758     VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,
    759     VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,
    760     VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,
    761     VK_PHYSICAL_DEVICE_TYPE_CPU = 4,
    762     VK_PHYSICAL_DEVICE_TYPE_BEGIN_RANGE = VK_PHYSICAL_DEVICE_TYPE_OTHER,
    763     VK_PHYSICAL_DEVICE_TYPE_END_RANGE = VK_PHYSICAL_DEVICE_TYPE_CPU,
    764     VK_PHYSICAL_DEVICE_TYPE_RANGE_SIZE = (VK_PHYSICAL_DEVICE_TYPE_CPU - VK_PHYSICAL_DEVICE_TYPE_OTHER + 1),
    765     VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF
    766 } VkPhysicalDeviceType;
    767 
    768 typedef enum VkQueryType {
    769     VK_QUERY_TYPE_OCCLUSION = 0,
    770     VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
    771     VK_QUERY_TYPE_TIMESTAMP = 2,
    772     VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION,
    773     VK_QUERY_TYPE_END_RANGE = VK_QUERY_TYPE_TIMESTAMP,
    774     VK_QUERY_TYPE_RANGE_SIZE = (VK_QUERY_TYPE_TIMESTAMP - VK_QUERY_TYPE_OCCLUSION + 1),
    775     VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF
    776 } VkQueryType;
    777 
    778 typedef enum VkSharingMode {
    779     VK_SHARING_MODE_EXCLUSIVE = 0,
    780     VK_SHARING_MODE_CONCURRENT = 1,
    781     VK_SHARING_MODE_BEGIN_RANGE = VK_SHARING_MODE_EXCLUSIVE,
    782     VK_SHARING_MODE_END_RANGE = VK_SHARING_MODE_CONCURRENT,
    783     VK_SHARING_MODE_RANGE_SIZE = (VK_SHARING_MODE_CONCURRENT - VK_SHARING_MODE_EXCLUSIVE + 1),
    784     VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF
    785 } VkSharingMode;
    786 
    787 typedef enum VkImageLayout {
    788     VK_IMAGE_LAYOUT_UNDEFINED = 0,
    789     VK_IMAGE_LAYOUT_GENERAL = 1,
    790     VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,
    791     VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
    792     VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
    793     VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,
    794     VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,
    795     VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
    796     VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
    797     VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000,
    798     VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001,
    799     VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
    800     VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
    801     VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
    802     VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
    803     VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED,
    804     VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_PREINITIALIZED,
    805     VK_IMAGE_LAYOUT_RANGE_SIZE = (VK_IMAGE_LAYOUT_PREINITIALIZED - VK_IMAGE_LAYOUT_UNDEFINED + 1),
    806     VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF
    807 } VkImageLayout;
    808 
    809 typedef enum VkImageViewType {
    810     VK_IMAGE_VIEW_TYPE_1D = 0,
    811     VK_IMAGE_VIEW_TYPE_2D = 1,
    812     VK_IMAGE_VIEW_TYPE_3D = 2,
    813     VK_IMAGE_VIEW_TYPE_CUBE = 3,
    814     VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4,
    815     VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5,
    816     VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6,
    817     VK_IMAGE_VIEW_TYPE_BEGIN_RANGE = VK_IMAGE_VIEW_TYPE_1D,
    818     VK_IMAGE_VIEW_TYPE_END_RANGE = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY,
    819     VK_IMAGE_VIEW_TYPE_RANGE_SIZE = (VK_IMAGE_VIEW_TYPE_CUBE_ARRAY - VK_IMAGE_VIEW_TYPE_1D + 1),
    820     VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF
    821 } VkImageViewType;
    822 
    823 typedef enum VkComponentSwizzle {
    824     VK_COMPONENT_SWIZZLE_IDENTITY = 0,
    825     VK_COMPONENT_SWIZZLE_ZERO = 1,
    826     VK_COMPONENT_SWIZZLE_ONE = 2,
    827     VK_COMPONENT_SWIZZLE_R = 3,
    828     VK_COMPONENT_SWIZZLE_G = 4,
    829     VK_COMPONENT_SWIZZLE_B = 5,
    830     VK_COMPONENT_SWIZZLE_A = 6,
    831     VK_COMPONENT_SWIZZLE_BEGIN_RANGE = VK_COMPONENT_SWIZZLE_IDENTITY,
    832     VK_COMPONENT_SWIZZLE_END_RANGE = VK_COMPONENT_SWIZZLE_A,
    833     VK_COMPONENT_SWIZZLE_RANGE_SIZE = (VK_COMPONENT_SWIZZLE_A - VK_COMPONENT_SWIZZLE_IDENTITY + 1),
    834     VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF
    835 } VkComponentSwizzle;
    836 
    837 typedef enum VkVertexInputRate {
    838     VK_VERTEX_INPUT_RATE_VERTEX = 0,
    839     VK_VERTEX_INPUT_RATE_INSTANCE = 1,
    840     VK_VERTEX_INPUT_RATE_BEGIN_RANGE = VK_VERTEX_INPUT_RATE_VERTEX,
    841     VK_VERTEX_INPUT_RATE_END_RANGE = VK_VERTEX_INPUT_RATE_INSTANCE,
    842     VK_VERTEX_INPUT_RATE_RANGE_SIZE = (VK_VERTEX_INPUT_RATE_INSTANCE - VK_VERTEX_INPUT_RATE_VERTEX + 1),
    843     VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF
    844 } VkVertexInputRate;
    845 
    846 typedef enum VkPrimitiveTopology {
    847     VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
    848     VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,
    849     VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,
    850     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,
    851     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,
    852     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,
    853     VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,
    854     VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
    855     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
    856     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
    857     VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,
    858     VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
    859     VK_PRIMITIVE_TOPOLOGY_END_RANGE = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST,
    860     VK_PRIMITIVE_TOPOLOGY_RANGE_SIZE = (VK_PRIMITIVE_TOPOLOGY_PATCH_LIST - VK_PRIMITIVE_TOPOLOGY_POINT_LIST + 1),
    861     VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF
    862 } VkPrimitiveTopology;
    863 
    864 typedef enum VkPolygonMode {
    865     VK_POLYGON_MODE_FILL = 0,
    866     VK_POLYGON_MODE_LINE = 1,
    867     VK_POLYGON_MODE_POINT = 2,
    868     VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000,
    869     VK_POLYGON_MODE_BEGIN_RANGE = VK_POLYGON_MODE_FILL,
    870     VK_POLYGON_MODE_END_RANGE = VK_POLYGON_MODE_POINT,
    871     VK_POLYGON_MODE_RANGE_SIZE = (VK_POLYGON_MODE_POINT - VK_POLYGON_MODE_FILL + 1),
    872     VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF
    873 } VkPolygonMode;
    874 
    875 typedef enum VkFrontFace {
    876     VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
    877     VK_FRONT_FACE_CLOCKWISE = 1,
    878     VK_FRONT_FACE_BEGIN_RANGE = VK_FRONT_FACE_COUNTER_CLOCKWISE,
    879     VK_FRONT_FACE_END_RANGE = VK_FRONT_FACE_CLOCKWISE,
    880     VK_FRONT_FACE_RANGE_SIZE = (VK_FRONT_FACE_CLOCKWISE - VK_FRONT_FACE_COUNTER_CLOCKWISE + 1),
    881     VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF
    882 } VkFrontFace;
    883 
    884 typedef enum VkCompareOp {
    885     VK_COMPARE_OP_NEVER = 0,
    886     VK_COMPARE_OP_LESS = 1,
    887     VK_COMPARE_OP_EQUAL = 2,
    888     VK_COMPARE_OP_LESS_OR_EQUAL = 3,
    889     VK_COMPARE_OP_GREATER = 4,
    890     VK_COMPARE_OP_NOT_EQUAL = 5,
    891     VK_COMPARE_OP_GREATER_OR_EQUAL = 6,
    892     VK_COMPARE_OP_ALWAYS = 7,
    893     VK_COMPARE_OP_BEGIN_RANGE = VK_COMPARE_OP_NEVER,
    894     VK_COMPARE_OP_END_RANGE = VK_COMPARE_OP_ALWAYS,
    895     VK_COMPARE_OP_RANGE_SIZE = (VK_COMPARE_OP_ALWAYS - VK_COMPARE_OP_NEVER + 1),
    896     VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF
    897 } VkCompareOp;
    898 
    899 typedef enum VkStencilOp {
    900     VK_STENCIL_OP_KEEP = 0,
    901     VK_STENCIL_OP_ZERO = 1,
    902     VK_STENCIL_OP_REPLACE = 2,
    903     VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,
    904     VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,
    905     VK_STENCIL_OP_INVERT = 5,
    906     VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,
    907     VK_STENCIL_OP_DECREMENT_AND_WRAP = 7,
    908     VK_STENCIL_OP_BEGIN_RANGE = VK_STENCIL_OP_KEEP,
    909     VK_STENCIL_OP_END_RANGE = VK_STENCIL_OP_DECREMENT_AND_WRAP,
    910     VK_STENCIL_OP_RANGE_SIZE = (VK_STENCIL_OP_DECREMENT_AND_WRAP - VK_STENCIL_OP_KEEP + 1),
    911     VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF
    912 } VkStencilOp;
    913 
    914 typedef enum VkLogicOp {
    915     VK_LOGIC_OP_CLEAR = 0,
    916     VK_LOGIC_OP_AND = 1,
    917     VK_LOGIC_OP_AND_REVERSE = 2,
    918     VK_LOGIC_OP_COPY = 3,
    919     VK_LOGIC_OP_AND_INVERTED = 4,
    920     VK_LOGIC_OP_NO_OP = 5,
    921     VK_LOGIC_OP_XOR = 6,
    922     VK_LOGIC_OP_OR = 7,
    923     VK_LOGIC_OP_NOR = 8,
    924     VK_LOGIC_OP_EQUIVALENT = 9,
    925     VK_LOGIC_OP_INVERT = 10,
    926     VK_LOGIC_OP_OR_REVERSE = 11,
    927     VK_LOGIC_OP_COPY_INVERTED = 12,
    928     VK_LOGIC_OP_OR_INVERTED = 13,
    929     VK_LOGIC_OP_NAND = 14,
    930     VK_LOGIC_OP_SET = 15,
    931     VK_LOGIC_OP_BEGIN_RANGE = VK_LOGIC_OP_CLEAR,
    932     VK_LOGIC_OP_END_RANGE = VK_LOGIC_OP_SET,
    933     VK_LOGIC_OP_RANGE_SIZE = (VK_LOGIC_OP_SET - VK_LOGIC_OP_CLEAR + 1),
    934     VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF
    935 } VkLogicOp;
    936 
    937 typedef enum VkBlendFactor {
    938     VK_BLEND_FACTOR_ZERO = 0,
    939     VK_BLEND_FACTOR_ONE = 1,
    940     VK_BLEND_FACTOR_SRC_COLOR = 2,
    941     VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,
    942     VK_BLEND_FACTOR_DST_COLOR = 4,
    943     VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,
    944     VK_BLEND_FACTOR_SRC_ALPHA = 6,
    945     VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,
    946     VK_BLEND_FACTOR_DST_ALPHA = 8,
    947     VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,
    948     VK_BLEND_FACTOR_CONSTANT_COLOR = 10,
    949     VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,
    950     VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,
    951     VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,
    952     VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,
    953     VK_BLEND_FACTOR_SRC1_COLOR = 15,
    954     VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,
    955     VK_BLEND_FACTOR_SRC1_ALPHA = 17,
    956     VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18,
    957     VK_BLEND_FACTOR_BEGIN_RANGE = VK_BLEND_FACTOR_ZERO,
    958     VK_BLEND_FACTOR_END_RANGE = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA,
    959     VK_BLEND_FACTOR_RANGE_SIZE = (VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - VK_BLEND_FACTOR_ZERO + 1),
    960     VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF
    961 } VkBlendFactor;
    962 
    963 typedef enum VkBlendOp {
    964     VK_BLEND_OP_ADD = 0,
    965     VK_BLEND_OP_SUBTRACT = 1,
    966     VK_BLEND_OP_REVERSE_SUBTRACT = 2,
    967     VK_BLEND_OP_MIN = 3,
    968     VK_BLEND_OP_MAX = 4,
    969     VK_BLEND_OP_ZERO_EXT = 1000148000,
    970     VK_BLEND_OP_SRC_EXT = 1000148001,
    971     VK_BLEND_OP_DST_EXT = 1000148002,
    972     VK_BLEND_OP_SRC_OVER_EXT = 1000148003,
    973     VK_BLEND_OP_DST_OVER_EXT = 1000148004,
    974     VK_BLEND_OP_SRC_IN_EXT = 1000148005,
    975     VK_BLEND_OP_DST_IN_EXT = 1000148006,
    976     VK_BLEND_OP_SRC_OUT_EXT = 1000148007,
    977     VK_BLEND_OP_DST_OUT_EXT = 1000148008,
    978     VK_BLEND_OP_SRC_ATOP_EXT = 1000148009,
    979     VK_BLEND_OP_DST_ATOP_EXT = 1000148010,
    980     VK_BLEND_OP_XOR_EXT = 1000148011,
    981     VK_BLEND_OP_MULTIPLY_EXT = 1000148012,
    982     VK_BLEND_OP_SCREEN_EXT = 1000148013,
    983     VK_BLEND_OP_OVERLAY_EXT = 1000148014,
    984     VK_BLEND_OP_DARKEN_EXT = 1000148015,
    985     VK_BLEND_OP_LIGHTEN_EXT = 1000148016,
    986     VK_BLEND_OP_COLORDODGE_EXT = 1000148017,
    987     VK_BLEND_OP_COLORBURN_EXT = 1000148018,
    988     VK_BLEND_OP_HARDLIGHT_EXT = 1000148019,
    989     VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020,
    990     VK_BLEND_OP_DIFFERENCE_EXT = 1000148021,
    991     VK_BLEND_OP_EXCLUSION_EXT = 1000148022,
    992     VK_BLEND_OP_INVERT_EXT = 1000148023,
    993     VK_BLEND_OP_INVERT_RGB_EXT = 1000148024,
    994     VK_BLEND_OP_LINEARDODGE_EXT = 1000148025,
    995     VK_BLEND_OP_LINEARBURN_EXT = 1000148026,
    996     VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027,
    997     VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028,
    998     VK_BLEND_OP_PINLIGHT_EXT = 1000148029,
    999     VK_BLEND_OP_HARDMIX_EXT = 1000148030,
   1000     VK_BLEND_OP_HSL_HUE_EXT = 1000148031,
   1001     VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032,
   1002     VK_BLEND_OP_HSL_COLOR_EXT = 1000148033,
   1003     VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034,
   1004     VK_BLEND_OP_PLUS_EXT = 1000148035,
   1005     VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036,
   1006     VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037,
   1007     VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038,
   1008     VK_BLEND_OP_MINUS_EXT = 1000148039,
   1009     VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040,
   1010     VK_BLEND_OP_CONTRAST_EXT = 1000148041,
   1011     VK_BLEND_OP_INVERT_OVG_EXT = 1000148042,
   1012     VK_BLEND_OP_RED_EXT = 1000148043,
   1013     VK_BLEND_OP_GREEN_EXT = 1000148044,
   1014     VK_BLEND_OP_BLUE_EXT = 1000148045,
   1015     VK_BLEND_OP_BEGIN_RANGE = VK_BLEND_OP_ADD,
   1016     VK_BLEND_OP_END_RANGE = VK_BLEND_OP_MAX,
   1017     VK_BLEND_OP_RANGE_SIZE = (VK_BLEND_OP_MAX - VK_BLEND_OP_ADD + 1),
   1018     VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF
   1019 } VkBlendOp;
   1020 
   1021 typedef enum VkDynamicState {
   1022     VK_DYNAMIC_STATE_VIEWPORT = 0,
   1023     VK_DYNAMIC_STATE_SCISSOR = 1,
   1024     VK_DYNAMIC_STATE_LINE_WIDTH = 2,
   1025     VK_DYNAMIC_STATE_DEPTH_BIAS = 3,
   1026     VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,
   1027     VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,
   1028     VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,
   1029     VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,
   1030     VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
   1031     VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000,
   1032     VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
   1033     VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000,
   1034     VK_DYNAMIC_STATE_BEGIN_RANGE = VK_DYNAMIC_STATE_VIEWPORT,
   1035     VK_DYNAMIC_STATE_END_RANGE = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
   1036     VK_DYNAMIC_STATE_RANGE_SIZE = (VK_DYNAMIC_STATE_STENCIL_REFERENCE - VK_DYNAMIC_STATE_VIEWPORT + 1),
   1037     VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF
   1038 } VkDynamicState;
   1039 
   1040 typedef enum VkFilter {
   1041     VK_FILTER_NEAREST = 0,
   1042     VK_FILTER_LINEAR = 1,
   1043     VK_FILTER_CUBIC_IMG = 1000015000,
   1044     VK_FILTER_BEGIN_RANGE = VK_FILTER_NEAREST,
   1045     VK_FILTER_END_RANGE = VK_FILTER_LINEAR,
   1046     VK_FILTER_RANGE_SIZE = (VK_FILTER_LINEAR - VK_FILTER_NEAREST + 1),
   1047     VK_FILTER_MAX_ENUM = 0x7FFFFFFF
   1048 } VkFilter;
   1049 
   1050 typedef enum VkSamplerMipmapMode {
   1051     VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,
   1052     VK_SAMPLER_MIPMAP_MODE_LINEAR = 1,
   1053     VK_SAMPLER_MIPMAP_MODE_BEGIN_RANGE = VK_SAMPLER_MIPMAP_MODE_NEAREST,
   1054     VK_SAMPLER_MIPMAP_MODE_END_RANGE = VK_SAMPLER_MIPMAP_MODE_LINEAR,
   1055     VK_SAMPLER_MIPMAP_MODE_RANGE_SIZE = (VK_SAMPLER_MIPMAP_MODE_LINEAR - VK_SAMPLER_MIPMAP_MODE_NEAREST + 1),
   1056     VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF
   1057 } VkSamplerMipmapMode;
   1058 
   1059 typedef enum VkSamplerAddressMode {
   1060     VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
   1061     VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
   1062     VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
   1063     VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
   1064     VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
   1065     VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE = VK_SAMPLER_ADDRESS_MODE_REPEAT,
   1066     VK_SAMPLER_ADDRESS_MODE_END_RANGE = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
   1067     VK_SAMPLER_ADDRESS_MODE_RANGE_SIZE = (VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER - VK_SAMPLER_ADDRESS_MODE_REPEAT + 1),
   1068     VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
   1069 } VkSamplerAddressMode;
   1070 
   1071 typedef enum VkBorderColor {
   1072     VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
   1073     VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,
   1074     VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,
   1075     VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,
   1076     VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,
   1077     VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5,
   1078     VK_BORDER_COLOR_BEGIN_RANGE = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
   1079     VK_BORDER_COLOR_END_RANGE = VK_BORDER_COLOR_INT_OPAQUE_WHITE,
   1080     VK_BORDER_COLOR_RANGE_SIZE = (VK_BORDER_COLOR_INT_OPAQUE_WHITE - VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK + 1),
   1081     VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF
   1082 } VkBorderColor;
   1083 
   1084 typedef enum VkDescriptorType {
   1085     VK_DESCRIPTOR_TYPE_SAMPLER = 0,
   1086     VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1,
   1087     VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2,
   1088     VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3,
   1089     VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4,
   1090     VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5,
   1091     VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6,
   1092     VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7,
   1093     VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8,
   1094     VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9,
   1095     VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10,
   1096     VK_DESCRIPTOR_TYPE_BEGIN_RANGE = VK_DESCRIPTOR_TYPE_SAMPLER,
   1097     VK_DESCRIPTOR_TYPE_END_RANGE = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
   1098     VK_DESCRIPTOR_TYPE_RANGE_SIZE = (VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT - VK_DESCRIPTOR_TYPE_SAMPLER + 1),
   1099     VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF
   1100 } VkDescriptorType;
   1101 
   1102 typedef enum VkAttachmentLoadOp {
   1103     VK_ATTACHMENT_LOAD_OP_LOAD = 0,
   1104     VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
   1105     VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
   1106     VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE = VK_ATTACHMENT_LOAD_OP_LOAD,
   1107     VK_ATTACHMENT_LOAD_OP_END_RANGE = VK_ATTACHMENT_LOAD_OP_DONT_CARE,
   1108     VK_ATTACHMENT_LOAD_OP_RANGE_SIZE = (VK_ATTACHMENT_LOAD_OP_DONT_CARE - VK_ATTACHMENT_LOAD_OP_LOAD + 1),
   1109     VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF
   1110 } VkAttachmentLoadOp;
   1111 
   1112 typedef enum VkAttachmentStoreOp {
   1113     VK_ATTACHMENT_STORE_OP_STORE = 0,
   1114     VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,
   1115     VK_ATTACHMENT_STORE_OP_BEGIN_RANGE = VK_ATTACHMENT_STORE_OP_STORE,
   1116     VK_ATTACHMENT_STORE_OP_END_RANGE = VK_ATTACHMENT_STORE_OP_DONT_CARE,
   1117     VK_ATTACHMENT_STORE_OP_RANGE_SIZE = (VK_ATTACHMENT_STORE_OP_DONT_CARE - VK_ATTACHMENT_STORE_OP_STORE + 1),
   1118     VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF
   1119 } VkAttachmentStoreOp;
   1120 
   1121 typedef enum VkPipelineBindPoint {
   1122     VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
   1123     VK_PIPELINE_BIND_POINT_COMPUTE = 1,
   1124     VK_PIPELINE_BIND_POINT_BEGIN_RANGE = VK_PIPELINE_BIND_POINT_GRAPHICS,
   1125     VK_PIPELINE_BIND_POINT_END_RANGE = VK_PIPELINE_BIND_POINT_COMPUTE,
   1126     VK_PIPELINE_BIND_POINT_RANGE_SIZE = (VK_PIPELINE_BIND_POINT_COMPUTE - VK_PIPELINE_BIND_POINT_GRAPHICS + 1),
   1127     VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF
   1128 } VkPipelineBindPoint;
   1129 
   1130 typedef enum VkCommandBufferLevel {
   1131     VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
   1132     VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,
   1133     VK_COMMAND_BUFFER_LEVEL_BEGIN_RANGE = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
   1134     VK_COMMAND_BUFFER_LEVEL_END_RANGE = VK_COMMAND_BUFFER_LEVEL_SECONDARY,
   1135     VK_COMMAND_BUFFER_LEVEL_RANGE_SIZE = (VK_COMMAND_BUFFER_LEVEL_SECONDARY - VK_COMMAND_BUFFER_LEVEL_PRIMARY + 1),
   1136     VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF
   1137 } VkCommandBufferLevel;
   1138 
   1139 typedef enum VkIndexType {
   1140     VK_INDEX_TYPE_UINT16 = 0,
   1141     VK_INDEX_TYPE_UINT32 = 1,
   1142     VK_INDEX_TYPE_BEGIN_RANGE = VK_INDEX_TYPE_UINT16,
   1143     VK_INDEX_TYPE_END_RANGE = VK_INDEX_TYPE_UINT32,
   1144     VK_INDEX_TYPE_RANGE_SIZE = (VK_INDEX_TYPE_UINT32 - VK_INDEX_TYPE_UINT16 + 1),
   1145     VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF
   1146 } VkIndexType;
   1147 
   1148 typedef enum VkSubpassContents {
   1149     VK_SUBPASS_CONTENTS_INLINE = 0,
   1150     VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
   1151     VK_SUBPASS_CONTENTS_BEGIN_RANGE = VK_SUBPASS_CONTENTS_INLINE,
   1152     VK_SUBPASS_CONTENTS_END_RANGE = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS,
   1153     VK_SUBPASS_CONTENTS_RANGE_SIZE = (VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS - VK_SUBPASS_CONTENTS_INLINE + 1),
   1154     VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF
   1155 } VkSubpassContents;
   1156 
   1157 typedef enum VkObjectType {
   1158     VK_OBJECT_TYPE_UNKNOWN = 0,
   1159     VK_OBJECT_TYPE_INSTANCE = 1,
   1160     VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,
   1161     VK_OBJECT_TYPE_DEVICE = 3,
   1162     VK_OBJECT_TYPE_QUEUE = 4,
   1163     VK_OBJECT_TYPE_SEMAPHORE = 5,
   1164     VK_OBJECT_TYPE_COMMAND_BUFFER = 6,
   1165     VK_OBJECT_TYPE_FENCE = 7,
   1166     VK_OBJECT_TYPE_DEVICE_MEMORY = 8,
   1167     VK_OBJECT_TYPE_BUFFER = 9,
   1168     VK_OBJECT_TYPE_IMAGE = 10,
   1169     VK_OBJECT_TYPE_EVENT = 11,
   1170     VK_OBJECT_TYPE_QUERY_POOL = 12,
   1171     VK_OBJECT_TYPE_BUFFER_VIEW = 13,
   1172     VK_OBJECT_TYPE_IMAGE_VIEW = 14,
   1173     VK_OBJECT_TYPE_SHADER_MODULE = 15,
   1174     VK_OBJECT_TYPE_PIPELINE_CACHE = 16,
   1175     VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,
   1176     VK_OBJECT_TYPE_RENDER_PASS = 18,
   1177     VK_OBJECT_TYPE_PIPELINE = 19,
   1178     VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,
   1179     VK_OBJECT_TYPE_SAMPLER = 21,
   1180     VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,
   1181     VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,
   1182     VK_OBJECT_TYPE_FRAMEBUFFER = 24,
   1183     VK_OBJECT_TYPE_COMMAND_POOL = 25,
   1184     VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000,
   1185     VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000,
   1186     VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,
   1187     VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,
   1188     VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000,
   1189     VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001,
   1190     VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000,
   1191     VK_OBJECT_TYPE_OBJECT_TABLE_NVX = 1000086000,
   1192     VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = 1000086001,
   1193     VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000,
   1194     VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000,
   1195     VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
   1196     VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION,
   1197     VK_OBJECT_TYPE_BEGIN_RANGE = VK_OBJECT_TYPE_UNKNOWN,
   1198     VK_OBJECT_TYPE_END_RANGE = VK_OBJECT_TYPE_COMMAND_POOL,
   1199     VK_OBJECT_TYPE_RANGE_SIZE = (VK_OBJECT_TYPE_COMMAND_POOL - VK_OBJECT_TYPE_UNKNOWN + 1),
   1200     VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF
   1201 } VkObjectType;
   1202 
   1203 typedef VkFlags VkInstanceCreateFlags;
   1204 
   1205 typedef enum VkFormatFeatureFlagBits {
   1206     VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
   1207     VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002,
   1208     VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004,
   1209     VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008,
   1210     VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010,
   1211     VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020,
   1212     VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040,
   1213     VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080,
   1214     VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100,
   1215     VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200,
   1216     VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400,
   1217     VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800,
   1218     VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
   1219     VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 0x00004000,
   1220     VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 0x00008000,
   1221     VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000,
   1222     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000,
   1223     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000,
   1224     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000,
   1225     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000,
   1226     VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000,
   1227     VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000,
   1228     VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
   1229     VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 0x00010000,
   1230     VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
   1231     VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
   1232     VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
   1233     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
   1234     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
   1235     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,
   1236     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,
   1237     VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = VK_FORMAT_FEATURE_DISJOINT_BIT,
   1238     VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
   1239     VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1240 } VkFormatFeatureFlagBits;
   1241 typedef VkFlags VkFormatFeatureFlags;
   1242 
   1243 typedef enum VkImageUsageFlagBits {
   1244     VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001,
   1245     VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002,
   1246     VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004,
   1247     VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008,
   1248     VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010,
   1249     VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020,
   1250     VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040,
   1251     VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080,
   1252     VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1253 } VkImageUsageFlagBits;
   1254 typedef VkFlags VkImageUsageFlags;
   1255 
   1256 typedef enum VkImageCreateFlagBits {
   1257     VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001,
   1258     VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
   1259     VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
   1260     VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008,
   1261     VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010,
   1262     VK_IMAGE_CREATE_ALIAS_BIT = 0x00000400,
   1263     VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 0x00000040,
   1264     VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 0x00000020,
   1265     VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 0x00000080,
   1266     VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 0x00000100,
   1267     VK_IMAGE_CREATE_PROTECTED_BIT = 0x00000800,
   1268     VK_IMAGE_CREATE_DISJOINT_BIT = 0x00000200,
   1269     VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000,
   1270     VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,
   1271     VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
   1272     VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
   1273     VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,
   1274     VK_IMAGE_CREATE_DISJOINT_BIT_KHR = VK_IMAGE_CREATE_DISJOINT_BIT,
   1275     VK_IMAGE_CREATE_ALIAS_BIT_KHR = VK_IMAGE_CREATE_ALIAS_BIT,
   1276     VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1277 } VkImageCreateFlagBits;
   1278 typedef VkFlags VkImageCreateFlags;
   1279 
   1280 typedef enum VkSampleCountFlagBits {
   1281     VK_SAMPLE_COUNT_1_BIT = 0x00000001,
   1282     VK_SAMPLE_COUNT_2_BIT = 0x00000002,
   1283     VK_SAMPLE_COUNT_4_BIT = 0x00000004,
   1284     VK_SAMPLE_COUNT_8_BIT = 0x00000008,
   1285     VK_SAMPLE_COUNT_16_BIT = 0x00000010,
   1286     VK_SAMPLE_COUNT_32_BIT = 0x00000020,
   1287     VK_SAMPLE_COUNT_64_BIT = 0x00000040,
   1288     VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1289 } VkSampleCountFlagBits;
   1290 typedef VkFlags VkSampleCountFlags;
   1291 
   1292 typedef enum VkQueueFlagBits {
   1293     VK_QUEUE_GRAPHICS_BIT = 0x00000001,
   1294     VK_QUEUE_COMPUTE_BIT = 0x00000002,
   1295     VK_QUEUE_TRANSFER_BIT = 0x00000004,
   1296     VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
   1297     VK_QUEUE_PROTECTED_BIT = 0x00000010,
   1298     VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1299 } VkQueueFlagBits;
   1300 typedef VkFlags VkQueueFlags;
   1301 
   1302 typedef enum VkMemoryPropertyFlagBits {
   1303     VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
   1304     VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
   1305     VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
   1306     VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
   1307     VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
   1308     VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020,
   1309     VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1310 } VkMemoryPropertyFlagBits;
   1311 typedef VkFlags VkMemoryPropertyFlags;
   1312 
   1313 typedef enum VkMemoryHeapFlagBits {
   1314     VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
   1315     VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 0x00000002,
   1316     VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT,
   1317     VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1318 } VkMemoryHeapFlagBits;
   1319 typedef VkFlags VkMemoryHeapFlags;
   1320 typedef VkFlags VkDeviceCreateFlags;
   1321 
   1322 typedef enum VkDeviceQueueCreateFlagBits {
   1323     VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 0x00000001,
   1324     VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1325 } VkDeviceQueueCreateFlagBits;
   1326 typedef VkFlags VkDeviceQueueCreateFlags;
   1327 
   1328 typedef enum VkPipelineStageFlagBits {
   1329     VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001,
   1330     VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002,
   1331     VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004,
   1332     VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008,
   1333     VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010,
   1334     VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020,
   1335     VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040,
   1336     VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080,
   1337     VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100,
   1338     VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200,
   1339     VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400,
   1340     VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800,
   1341     VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000,
   1342     VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
   1343     VK_PIPELINE_STAGE_HOST_BIT = 0x00004000,
   1344     VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000,
   1345     VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000,
   1346     VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000,
   1347     VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1348 } VkPipelineStageFlagBits;
   1349 typedef VkFlags VkPipelineStageFlags;
   1350 typedef VkFlags VkMemoryMapFlags;
   1351 
   1352 typedef enum VkImageAspectFlagBits {
   1353     VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
   1354     VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
   1355     VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
   1356     VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
   1357     VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010,
   1358     VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020,
   1359     VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040,
   1360     VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = VK_IMAGE_ASPECT_PLANE_0_BIT,
   1361     VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = VK_IMAGE_ASPECT_PLANE_1_BIT,
   1362     VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = VK_IMAGE_ASPECT_PLANE_2_BIT,
   1363     VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1364 } VkImageAspectFlagBits;
   1365 typedef VkFlags VkImageAspectFlags;
   1366 
   1367 typedef enum VkSparseImageFormatFlagBits {
   1368     VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001,
   1369     VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
   1370     VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,
   1371     VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1372 } VkSparseImageFormatFlagBits;
   1373 typedef VkFlags VkSparseImageFormatFlags;
   1374 
   1375 typedef enum VkSparseMemoryBindFlagBits {
   1376     VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
   1377     VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1378 } VkSparseMemoryBindFlagBits;
   1379 typedef VkFlags VkSparseMemoryBindFlags;
   1380 
   1381 typedef enum VkFenceCreateFlagBits {
   1382     VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
   1383     VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1384 } VkFenceCreateFlagBits;
   1385 typedef VkFlags VkFenceCreateFlags;
   1386 typedef VkFlags VkSemaphoreCreateFlags;
   1387 typedef VkFlags VkEventCreateFlags;
   1388 typedef VkFlags VkQueryPoolCreateFlags;
   1389 
   1390 typedef enum VkQueryPipelineStatisticFlagBits {
   1391     VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001,
   1392     VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002,
   1393     VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004,
   1394     VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008,
   1395     VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010,
   1396     VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020,
   1397     VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040,
   1398     VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080,
   1399     VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100,
   1400     VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200,
   1401     VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400,
   1402     VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1403 } VkQueryPipelineStatisticFlagBits;
   1404 typedef VkFlags VkQueryPipelineStatisticFlags;
   1405 
   1406 typedef enum VkQueryResultFlagBits {
   1407     VK_QUERY_RESULT_64_BIT = 0x00000001,
   1408     VK_QUERY_RESULT_WAIT_BIT = 0x00000002,
   1409     VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004,
   1410     VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008,
   1411     VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1412 } VkQueryResultFlagBits;
   1413 typedef VkFlags VkQueryResultFlags;
   1414 
   1415 typedef enum VkBufferCreateFlagBits {
   1416     VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,
   1417     VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
   1418     VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
   1419     VK_BUFFER_CREATE_PROTECTED_BIT = 0x00000008,
   1420     VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1421 } VkBufferCreateFlagBits;
   1422 typedef VkFlags VkBufferCreateFlags;
   1423 
   1424 typedef enum VkBufferUsageFlagBits {
   1425     VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001,
   1426     VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002,
   1427     VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,
   1428     VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008,
   1429     VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010,
   1430     VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020,
   1431     VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
   1432     VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
   1433     VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
   1434     VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1435 } VkBufferUsageFlagBits;
   1436 typedef VkFlags VkBufferUsageFlags;
   1437 typedef VkFlags VkBufferViewCreateFlags;
   1438 typedef VkFlags VkImageViewCreateFlags;
   1439 typedef VkFlags VkShaderModuleCreateFlags;
   1440 typedef VkFlags VkPipelineCacheCreateFlags;
   1441 
   1442 typedef enum VkPipelineCreateFlagBits {
   1443     VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
   1444     VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
   1445     VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
   1446     VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008,
   1447     VK_PIPELINE_CREATE_DISPATCH_BASE = 0x00000010,
   1448     VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,
   1449     VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = VK_PIPELINE_CREATE_DISPATCH_BASE,
   1450     VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1451 } VkPipelineCreateFlagBits;
   1452 typedef VkFlags VkPipelineCreateFlags;
   1453 typedef VkFlags VkPipelineShaderStageCreateFlags;
   1454 
   1455 typedef enum VkShaderStageFlagBits {
   1456     VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
   1457     VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
   1458     VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
   1459     VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
   1460     VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
   1461     VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
   1462     VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
   1463     VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
   1464     VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1465 } VkShaderStageFlagBits;
   1466 typedef VkFlags VkPipelineVertexInputStateCreateFlags;
   1467 typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;
   1468 typedef VkFlags VkPipelineTessellationStateCreateFlags;
   1469 typedef VkFlags VkPipelineViewportStateCreateFlags;
   1470 typedef VkFlags VkPipelineRasterizationStateCreateFlags;
   1471 
   1472 typedef enum VkCullModeFlagBits {
   1473     VK_CULL_MODE_NONE = 0,
   1474     VK_CULL_MODE_FRONT_BIT = 0x00000001,
   1475     VK_CULL_MODE_BACK_BIT = 0x00000002,
   1476     VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
   1477     VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1478 } VkCullModeFlagBits;
   1479 typedef VkFlags VkCullModeFlags;
   1480 typedef VkFlags VkPipelineMultisampleStateCreateFlags;
   1481 typedef VkFlags VkPipelineDepthStencilStateCreateFlags;
   1482 typedef VkFlags VkPipelineColorBlendStateCreateFlags;
   1483 
   1484 typedef enum VkColorComponentFlagBits {
   1485     VK_COLOR_COMPONENT_R_BIT = 0x00000001,
   1486     VK_COLOR_COMPONENT_G_BIT = 0x00000002,
   1487     VK_COLOR_COMPONENT_B_BIT = 0x00000004,
   1488     VK_COLOR_COMPONENT_A_BIT = 0x00000008,
   1489     VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1490 } VkColorComponentFlagBits;
   1491 typedef VkFlags VkColorComponentFlags;
   1492 typedef VkFlags VkPipelineDynamicStateCreateFlags;
   1493 typedef VkFlags VkPipelineLayoutCreateFlags;
   1494 typedef VkFlags VkShaderStageFlags;
   1495 typedef VkFlags VkSamplerCreateFlags;
   1496 
   1497 typedef enum VkDescriptorSetLayoutCreateFlagBits {
   1498     VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
   1499     VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1500 } VkDescriptorSetLayoutCreateFlagBits;
   1501 typedef VkFlags VkDescriptorSetLayoutCreateFlags;
   1502 
   1503 typedef enum VkDescriptorPoolCreateFlagBits {
   1504     VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
   1505     VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1506 } VkDescriptorPoolCreateFlagBits;
   1507 typedef VkFlags VkDescriptorPoolCreateFlags;
   1508 typedef VkFlags VkDescriptorPoolResetFlags;
   1509 typedef VkFlags VkFramebufferCreateFlags;
   1510 typedef VkFlags VkRenderPassCreateFlags;
   1511 
   1512 typedef enum VkAttachmentDescriptionFlagBits {
   1513     VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
   1514     VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1515 } VkAttachmentDescriptionFlagBits;
   1516 typedef VkFlags VkAttachmentDescriptionFlags;
   1517 
   1518 typedef enum VkSubpassDescriptionFlagBits {
   1519     VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001,
   1520     VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,
   1521     VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1522 } VkSubpassDescriptionFlagBits;
   1523 typedef VkFlags VkSubpassDescriptionFlags;
   1524 
   1525 typedef enum VkAccessFlagBits {
   1526     VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
   1527     VK_ACCESS_INDEX_READ_BIT = 0x00000002,
   1528     VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
   1529     VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
   1530     VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
   1531     VK_ACCESS_SHADER_READ_BIT = 0x00000020,
   1532     VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
   1533     VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
   1534     VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
   1535     VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
   1536     VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
   1537     VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
   1538     VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
   1539     VK_ACCESS_HOST_READ_BIT = 0x00002000,
   1540     VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
   1541     VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
   1542     VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
   1543     VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000,
   1544     VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000,
   1545     VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000,
   1546     VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1547 } VkAccessFlagBits;
   1548 typedef VkFlags VkAccessFlags;
   1549 
   1550 typedef enum VkDependencyFlagBits {
   1551     VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
   1552     VK_DEPENDENCY_DEVICE_GROUP_BIT = 0x00000004,
   1553     VK_DEPENDENCY_VIEW_LOCAL_BIT = 0x00000002,
   1554     VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = VK_DEPENDENCY_VIEW_LOCAL_BIT,
   1555     VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = VK_DEPENDENCY_DEVICE_GROUP_BIT,
   1556     VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1557 } VkDependencyFlagBits;
   1558 typedef VkFlags VkDependencyFlags;
   1559 
   1560 typedef enum VkCommandPoolCreateFlagBits {
   1561     VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001,
   1562     VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
   1563     VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 0x00000004,
   1564     VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1565 } VkCommandPoolCreateFlagBits;
   1566 typedef VkFlags VkCommandPoolCreateFlags;
   1567 
   1568 typedef enum VkCommandPoolResetFlagBits {
   1569     VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
   1570     VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1571 } VkCommandPoolResetFlagBits;
   1572 typedef VkFlags VkCommandPoolResetFlags;
   1573 
   1574 typedef enum VkCommandBufferUsageFlagBits {
   1575     VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
   1576     VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
   1577     VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
   1578     VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1579 } VkCommandBufferUsageFlagBits;
   1580 typedef VkFlags VkCommandBufferUsageFlags;
   1581 
   1582 typedef enum VkQueryControlFlagBits {
   1583     VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
   1584     VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1585 } VkQueryControlFlagBits;
   1586 typedef VkFlags VkQueryControlFlags;
   1587 
   1588 typedef enum VkCommandBufferResetFlagBits {
   1589     VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
   1590     VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1591 } VkCommandBufferResetFlagBits;
   1592 typedef VkFlags VkCommandBufferResetFlags;
   1593 
   1594 typedef enum VkStencilFaceFlagBits {
   1595     VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
   1596     VK_STENCIL_FACE_BACK_BIT = 0x00000002,
   1597     VK_STENCIL_FRONT_AND_BACK = 0x00000003,
   1598     VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1599 } VkStencilFaceFlagBits;
   1600 typedef VkFlags VkStencilFaceFlags;
   1601 
   1602 typedef struct VkApplicationInfo {
   1603     VkStructureType    sType;
   1604     const void*        pNext;
   1605     const char*        pApplicationName;
   1606     uint32_t           applicationVersion;
   1607     const char*        pEngineName;
   1608     uint32_t           engineVersion;
   1609     uint32_t           apiVersion;
   1610 } VkApplicationInfo;
   1611 
   1612 typedef struct VkInstanceCreateInfo {
   1613     VkStructureType             sType;
   1614     const void*                 pNext;
   1615     VkInstanceCreateFlags       flags;
   1616     const VkApplicationInfo*    pApplicationInfo;
   1617     uint32_t                    enabledLayerCount;
   1618     const char* const*          ppEnabledLayerNames;
   1619     uint32_t                    enabledExtensionCount;
   1620     const char* const*          ppEnabledExtensionNames;
   1621 } VkInstanceCreateInfo;
   1622 
   1623 typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(
   1624     void*                                       pUserData,
   1625     size_t                                      size,
   1626     size_t                                      alignment,
   1627     VkSystemAllocationScope                     allocationScope);
   1628 
   1629 typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)(
   1630     void*                                       pUserData,
   1631     void*                                       pOriginal,
   1632     size_t                                      size,
   1633     size_t                                      alignment,
   1634     VkSystemAllocationScope                     allocationScope);
   1635 
   1636 typedef void (VKAPI_PTR *PFN_vkFreeFunction)(
   1637     void*                                       pUserData,
   1638     void*                                       pMemory);
   1639 
   1640 typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)(
   1641     void*                                       pUserData,
   1642     size_t                                      size,
   1643     VkInternalAllocationType                    allocationType,
   1644     VkSystemAllocationScope                     allocationScope);
   1645 
   1646 typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)(
   1647     void*                                       pUserData,
   1648     size_t                                      size,
   1649     VkInternalAllocationType                    allocationType,
   1650     VkSystemAllocationScope                     allocationScope);
   1651 
   1652 typedef struct VkAllocationCallbacks {
   1653     void*                                   pUserData;
   1654     PFN_vkAllocationFunction                pfnAllocation;
   1655     PFN_vkReallocationFunction              pfnReallocation;
   1656     PFN_vkFreeFunction                      pfnFree;
   1657     PFN_vkInternalAllocationNotification    pfnInternalAllocation;
   1658     PFN_vkInternalFreeNotification          pfnInternalFree;
   1659 } VkAllocationCallbacks;
   1660 
   1661 typedef struct VkPhysicalDeviceFeatures {
   1662     VkBool32    robustBufferAccess;
   1663     VkBool32    fullDrawIndexUint32;
   1664     VkBool32    imageCubeArray;
   1665     VkBool32    independentBlend;
   1666     VkBool32    geometryShader;
   1667     VkBool32    tessellationShader;
   1668     VkBool32    sampleRateShading;
   1669     VkBool32    dualSrcBlend;
   1670     VkBool32    logicOp;
   1671     VkBool32    multiDrawIndirect;
   1672     VkBool32    drawIndirectFirstInstance;
   1673     VkBool32    depthClamp;
   1674     VkBool32    depthBiasClamp;
   1675     VkBool32    fillModeNonSolid;
   1676     VkBool32    depthBounds;
   1677     VkBool32    wideLines;
   1678     VkBool32    largePoints;
   1679     VkBool32    alphaToOne;
   1680     VkBool32    multiViewport;
   1681     VkBool32    samplerAnisotropy;
   1682     VkBool32    textureCompressionETC2;
   1683     VkBool32    textureCompressionASTC_LDR;
   1684     VkBool32    textureCompressionBC;
   1685     VkBool32    occlusionQueryPrecise;
   1686     VkBool32    pipelineStatisticsQuery;
   1687     VkBool32    vertexPipelineStoresAndAtomics;
   1688     VkBool32    fragmentStoresAndAtomics;
   1689     VkBool32    shaderTessellationAndGeometryPointSize;
   1690     VkBool32    shaderImageGatherExtended;
   1691     VkBool32    shaderStorageImageExtendedFormats;
   1692     VkBool32    shaderStorageImageMultisample;
   1693     VkBool32    shaderStorageImageReadWithoutFormat;
   1694     VkBool32    shaderStorageImageWriteWithoutFormat;
   1695     VkBool32    shaderUniformBufferArrayDynamicIndexing;
   1696     VkBool32    shaderSampledImageArrayDynamicIndexing;
   1697     VkBool32    shaderStorageBufferArrayDynamicIndexing;
   1698     VkBool32    shaderStorageImageArrayDynamicIndexing;
   1699     VkBool32    shaderClipDistance;
   1700     VkBool32    shaderCullDistance;
   1701     VkBool32    shaderFloat64;
   1702     VkBool32    shaderInt64;
   1703     VkBool32    shaderInt16;
   1704     VkBool32    shaderResourceResidency;
   1705     VkBool32    shaderResourceMinLod;
   1706     VkBool32    sparseBinding;
   1707     VkBool32    sparseResidencyBuffer;
   1708     VkBool32    sparseResidencyImage2D;
   1709     VkBool32    sparseResidencyImage3D;
   1710     VkBool32    sparseResidency2Samples;
   1711     VkBool32    sparseResidency4Samples;
   1712     VkBool32    sparseResidency8Samples;
   1713     VkBool32    sparseResidency16Samples;
   1714     VkBool32    sparseResidencyAliased;
   1715     VkBool32    variableMultisampleRate;
   1716     VkBool32    inheritedQueries;
   1717 } VkPhysicalDeviceFeatures;
   1718 
   1719 typedef struct VkFormatProperties {
   1720     VkFormatFeatureFlags    linearTilingFeatures;
   1721     VkFormatFeatureFlags    optimalTilingFeatures;
   1722     VkFormatFeatureFlags    bufferFeatures;
   1723 } VkFormatProperties;
   1724 
   1725 typedef struct VkExtent3D {
   1726     uint32_t    width;
   1727     uint32_t    height;
   1728     uint32_t    depth;
   1729 } VkExtent3D;
   1730 
   1731 typedef struct VkImageFormatProperties {
   1732     VkExtent3D            maxExtent;
   1733     uint32_t              maxMipLevels;
   1734     uint32_t              maxArrayLayers;
   1735     VkSampleCountFlags    sampleCounts;
   1736     VkDeviceSize          maxResourceSize;
   1737 } VkImageFormatProperties;
   1738 
   1739 typedef struct VkPhysicalDeviceLimits {
   1740     uint32_t              maxImageDimension1D;
   1741     uint32_t              maxImageDimension2D;
   1742     uint32_t              maxImageDimension3D;
   1743     uint32_t              maxImageDimensionCube;
   1744     uint32_t              maxImageArrayLayers;
   1745     uint32_t              maxTexelBufferElements;
   1746     uint32_t              maxUniformBufferRange;
   1747     uint32_t              maxStorageBufferRange;
   1748     uint32_t              maxPushConstantsSize;
   1749     uint32_t              maxMemoryAllocationCount;
   1750     uint32_t              maxSamplerAllocationCount;
   1751     VkDeviceSize          bufferImageGranularity;
   1752     VkDeviceSize          sparseAddressSpaceSize;
   1753     uint32_t              maxBoundDescriptorSets;
   1754     uint32_t              maxPerStageDescriptorSamplers;
   1755     uint32_t              maxPerStageDescriptorUniformBuffers;
   1756     uint32_t              maxPerStageDescriptorStorageBuffers;
   1757     uint32_t              maxPerStageDescriptorSampledImages;
   1758     uint32_t              maxPerStageDescriptorStorageImages;
   1759     uint32_t              maxPerStageDescriptorInputAttachments;
   1760     uint32_t              maxPerStageResources;
   1761     uint32_t              maxDescriptorSetSamplers;
   1762     uint32_t              maxDescriptorSetUniformBuffers;
   1763     uint32_t              maxDescriptorSetUniformBuffersDynamic;
   1764     uint32_t              maxDescriptorSetStorageBuffers;
   1765     uint32_t              maxDescriptorSetStorageBuffersDynamic;
   1766     uint32_t              maxDescriptorSetSampledImages;
   1767     uint32_t              maxDescriptorSetStorageImages;
   1768     uint32_t              maxDescriptorSetInputAttachments;
   1769     uint32_t              maxVertexInputAttributes;
   1770     uint32_t              maxVertexInputBindings;
   1771     uint32_t              maxVertexInputAttributeOffset;
   1772     uint32_t              maxVertexInputBindingStride;
   1773     uint32_t              maxVertexOutputComponents;
   1774     uint32_t              maxTessellationGenerationLevel;
   1775     uint32_t              maxTessellationPatchSize;
   1776     uint32_t              maxTessellationControlPerVertexInputComponents;
   1777     uint32_t              maxTessellationControlPerVertexOutputComponents;
   1778     uint32_t              maxTessellationControlPerPatchOutputComponents;
   1779     uint32_t              maxTessellationControlTotalOutputComponents;
   1780     uint32_t              maxTessellationEvaluationInputComponents;
   1781     uint32_t              maxTessellationEvaluationOutputComponents;
   1782     uint32_t              maxGeometryShaderInvocations;
   1783     uint32_t              maxGeometryInputComponents;
   1784     uint32_t              maxGeometryOutputComponents;
   1785     uint32_t              maxGeometryOutputVertices;
   1786     uint32_t              maxGeometryTotalOutputComponents;
   1787     uint32_t              maxFragmentInputComponents;
   1788     uint32_t              maxFragmentOutputAttachments;
   1789     uint32_t              maxFragmentDualSrcAttachments;
   1790     uint32_t              maxFragmentCombinedOutputResources;
   1791     uint32_t              maxComputeSharedMemorySize;
   1792     uint32_t              maxComputeWorkGroupCount[3];
   1793     uint32_t              maxComputeWorkGroupInvocations;
   1794     uint32_t              maxComputeWorkGroupSize[3];
   1795     uint32_t              subPixelPrecisionBits;
   1796     uint32_t              subTexelPrecisionBits;
   1797     uint32_t              mipmapPrecisionBits;
   1798     uint32_t              maxDrawIndexedIndexValue;
   1799     uint32_t              maxDrawIndirectCount;
   1800     float                 maxSamplerLodBias;
   1801     float                 maxSamplerAnisotropy;
   1802     uint32_t              maxViewports;
   1803     uint32_t              maxViewportDimensions[2];
   1804     float                 viewportBoundsRange[2];
   1805     uint32_t              viewportSubPixelBits;
   1806     size_t                minMemoryMapAlignment;
   1807     VkDeviceSize          minTexelBufferOffsetAlignment;
   1808     VkDeviceSize          minUniformBufferOffsetAlignment;
   1809     VkDeviceSize          minStorageBufferOffsetAlignment;
   1810     int32_t               minTexelOffset;
   1811     uint32_t              maxTexelOffset;
   1812     int32_t               minTexelGatherOffset;
   1813     uint32_t              maxTexelGatherOffset;
   1814     float                 minInterpolationOffset;
   1815     float                 maxInterpolationOffset;
   1816     uint32_t              subPixelInterpolationOffsetBits;
   1817     uint32_t              maxFramebufferWidth;
   1818     uint32_t              maxFramebufferHeight;
   1819     uint32_t              maxFramebufferLayers;
   1820     VkSampleCountFlags    framebufferColorSampleCounts;
   1821     VkSampleCountFlags    framebufferDepthSampleCounts;
   1822     VkSampleCountFlags    framebufferStencilSampleCounts;
   1823     VkSampleCountFlags    framebufferNoAttachmentsSampleCounts;
   1824     uint32_t              maxColorAttachments;
   1825     VkSampleCountFlags    sampledImageColorSampleCounts;
   1826     VkSampleCountFlags    sampledImageIntegerSampleCounts;
   1827     VkSampleCountFlags    sampledImageDepthSampleCounts;
   1828     VkSampleCountFlags    sampledImageStencilSampleCounts;
   1829     VkSampleCountFlags    storageImageSampleCounts;
   1830     uint32_t              maxSampleMaskWords;
   1831     VkBool32              timestampComputeAndGraphics;
   1832     float                 timestampPeriod;
   1833     uint32_t              maxClipDistances;
   1834     uint32_t              maxCullDistances;
   1835     uint32_t              maxCombinedClipAndCullDistances;
   1836     uint32_t              discreteQueuePriorities;
   1837     float                 pointSizeRange[2];
   1838     float                 lineWidthRange[2];
   1839     float                 pointSizeGranularity;
   1840     float                 lineWidthGranularity;
   1841     VkBool32              strictLines;
   1842     VkBool32              standardSampleLocations;
   1843     VkDeviceSize          optimalBufferCopyOffsetAlignment;
   1844     VkDeviceSize          optimalBufferCopyRowPitchAlignment;
   1845     VkDeviceSize          nonCoherentAtomSize;
   1846 } VkPhysicalDeviceLimits;
   1847 
   1848 typedef struct VkPhysicalDeviceSparseProperties {
   1849     VkBool32    residencyStandard2DBlockShape;
   1850     VkBool32    residencyStandard2DMultisampleBlockShape;
   1851     VkBool32    residencyStandard3DBlockShape;
   1852     VkBool32    residencyAlignedMipSize;
   1853     VkBool32    residencyNonResidentStrict;
   1854 } VkPhysicalDeviceSparseProperties;
   1855 
   1856 typedef struct VkPhysicalDeviceProperties {
   1857     uint32_t                            apiVersion;
   1858     uint32_t                            driverVersion;
   1859     uint32_t                            vendorID;
   1860     uint32_t                            deviceID;
   1861     VkPhysicalDeviceType                deviceType;
   1862     char                                deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
   1863     uint8_t                             pipelineCacheUUID[VK_UUID_SIZE];
   1864     VkPhysicalDeviceLimits              limits;
   1865     VkPhysicalDeviceSparseProperties    sparseProperties;
   1866 } VkPhysicalDeviceProperties;
   1867 
   1868 typedef struct VkQueueFamilyProperties {
   1869     VkQueueFlags    queueFlags;
   1870     uint32_t        queueCount;
   1871     uint32_t        timestampValidBits;
   1872     VkExtent3D      minImageTransferGranularity;
   1873 } VkQueueFamilyProperties;
   1874 
   1875 typedef struct VkMemoryType {
   1876     VkMemoryPropertyFlags    propertyFlags;
   1877     uint32_t                 heapIndex;
   1878 } VkMemoryType;
   1879 
   1880 typedef struct VkMemoryHeap {
   1881     VkDeviceSize         size;
   1882     VkMemoryHeapFlags    flags;
   1883 } VkMemoryHeap;
   1884 
   1885 typedef struct VkPhysicalDeviceMemoryProperties {
   1886     uint32_t        memoryTypeCount;
   1887     VkMemoryType    memoryTypes[VK_MAX_MEMORY_TYPES];
   1888     uint32_t        memoryHeapCount;
   1889     VkMemoryHeap    memoryHeaps[VK_MAX_MEMORY_HEAPS];
   1890 } VkPhysicalDeviceMemoryProperties;
   1891 
   1892 typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void);
   1893 typedef struct VkDeviceQueueCreateInfo {
   1894     VkStructureType             sType;
   1895     const void*                 pNext;
   1896     VkDeviceQueueCreateFlags    flags;
   1897     uint32_t                    queueFamilyIndex;
   1898     uint32_t                    queueCount;
   1899     const float*                pQueuePriorities;
   1900 } VkDeviceQueueCreateInfo;
   1901 
   1902 typedef struct VkDeviceCreateInfo {
   1903     VkStructureType                    sType;
   1904     const void*                        pNext;
   1905     VkDeviceCreateFlags                flags;
   1906     uint32_t                           queueCreateInfoCount;
   1907     const VkDeviceQueueCreateInfo*     pQueueCreateInfos;
   1908     uint32_t                           enabledLayerCount;
   1909     const char* const*                 ppEnabledLayerNames;
   1910     uint32_t                           enabledExtensionCount;
   1911     const char* const*                 ppEnabledExtensionNames;
   1912     const VkPhysicalDeviceFeatures*    pEnabledFeatures;
   1913 } VkDeviceCreateInfo;
   1914 
   1915 typedef struct VkExtensionProperties {
   1916     char        extensionName[VK_MAX_EXTENSION_NAME_SIZE];
   1917     uint32_t    specVersion;
   1918 } VkExtensionProperties;
   1919 
   1920 typedef struct VkLayerProperties {
   1921     char        layerName[VK_MAX_EXTENSION_NAME_SIZE];
   1922     uint32_t    specVersion;
   1923     uint32_t    implementationVersion;
   1924     char        description[VK_MAX_DESCRIPTION_SIZE];
   1925 } VkLayerProperties;
   1926 
   1927 typedef struct VkSubmitInfo {
   1928     VkStructureType                sType;
   1929     const void*                    pNext;
   1930     uint32_t                       waitSemaphoreCount;
   1931     const VkSemaphore*             pWaitSemaphores;
   1932     const VkPipelineStageFlags*    pWaitDstStageMask;
   1933     uint32_t                       commandBufferCount;
   1934     const VkCommandBuffer*         pCommandBuffers;
   1935     uint32_t                       signalSemaphoreCount;
   1936     const VkSemaphore*             pSignalSemaphores;
   1937 } VkSubmitInfo;
   1938 
   1939 typedef struct VkMemoryAllocateInfo {
   1940     VkStructureType    sType;
   1941     const void*        pNext;
   1942     VkDeviceSize       allocationSize;
   1943     uint32_t           memoryTypeIndex;
   1944 } VkMemoryAllocateInfo;
   1945 
   1946 typedef struct VkMappedMemoryRange {
   1947     VkStructureType    sType;
   1948     const void*        pNext;
   1949     VkDeviceMemory     memory;
   1950     VkDeviceSize       offset;
   1951     VkDeviceSize       size;
   1952 } VkMappedMemoryRange;
   1953 
   1954 typedef struct VkMemoryRequirements {
   1955     VkDeviceSize    size;
   1956     VkDeviceSize    alignment;
   1957     uint32_t        memoryTypeBits;
   1958 } VkMemoryRequirements;
   1959 
   1960 typedef struct VkSparseImageFormatProperties {
   1961     VkImageAspectFlags          aspectMask;
   1962     VkExtent3D                  imageGranularity;
   1963     VkSparseImageFormatFlags    flags;
   1964 } VkSparseImageFormatProperties;
   1965 
   1966 typedef struct VkSparseImageMemoryRequirements {
   1967     VkSparseImageFormatProperties    formatProperties;
   1968     uint32_t                         imageMipTailFirstLod;
   1969     VkDeviceSize                     imageMipTailSize;
   1970     VkDeviceSize                     imageMipTailOffset;
   1971     VkDeviceSize                     imageMipTailStride;
   1972 } VkSparseImageMemoryRequirements;
   1973 
   1974 typedef struct VkSparseMemoryBind {
   1975     VkDeviceSize               resourceOffset;
   1976     VkDeviceSize               size;
   1977     VkDeviceMemory             memory;
   1978     VkDeviceSize               memoryOffset;
   1979     VkSparseMemoryBindFlags    flags;
   1980 } VkSparseMemoryBind;
   1981 
   1982 typedef struct VkSparseBufferMemoryBindInfo {
   1983     VkBuffer                     buffer;
   1984     uint32_t                     bindCount;
   1985     const VkSparseMemoryBind*    pBinds;
   1986 } VkSparseBufferMemoryBindInfo;
   1987 
   1988 typedef struct VkSparseImageOpaqueMemoryBindInfo {
   1989     VkImage                      image;
   1990     uint32_t                     bindCount;
   1991     const VkSparseMemoryBind*    pBinds;
   1992 } VkSparseImageOpaqueMemoryBindInfo;
   1993 
   1994 typedef struct VkImageSubresource {
   1995     VkImageAspectFlags    aspectMask;
   1996     uint32_t              mipLevel;
   1997     uint32_t              arrayLayer;
   1998 } VkImageSubresource;
   1999 
   2000 typedef struct VkOffset3D {
   2001     int32_t    x;
   2002     int32_t    y;
   2003     int32_t    z;
   2004 } VkOffset3D;
   2005 
   2006 typedef struct VkSparseImageMemoryBind {
   2007     VkImageSubresource         subresource;
   2008     VkOffset3D                 offset;
   2009     VkExtent3D                 extent;
   2010     VkDeviceMemory             memory;
   2011     VkDeviceSize               memoryOffset;
   2012     VkSparseMemoryBindFlags    flags;
   2013 } VkSparseImageMemoryBind;
   2014 
   2015 typedef struct VkSparseImageMemoryBindInfo {
   2016     VkImage                           image;
   2017     uint32_t                          bindCount;
   2018     const VkSparseImageMemoryBind*    pBinds;
   2019 } VkSparseImageMemoryBindInfo;
   2020 
   2021 typedef struct VkBindSparseInfo {
   2022     VkStructureType                             sType;
   2023     const void*                                 pNext;
   2024     uint32_t                                    waitSemaphoreCount;
   2025     const VkSemaphore*                          pWaitSemaphores;
   2026     uint32_t                                    bufferBindCount;
   2027     const VkSparseBufferMemoryBindInfo*         pBufferBinds;
   2028     uint32_t                                    imageOpaqueBindCount;
   2029     const VkSparseImageOpaqueMemoryBindInfo*    pImageOpaqueBinds;
   2030     uint32_t                                    imageBindCount;
   2031     const VkSparseImageMemoryBindInfo*          pImageBinds;
   2032     uint32_t                                    signalSemaphoreCount;
   2033     const VkSemaphore*                          pSignalSemaphores;
   2034 } VkBindSparseInfo;
   2035 
   2036 typedef struct VkFenceCreateInfo {
   2037     VkStructureType       sType;
   2038     const void*           pNext;
   2039     VkFenceCreateFlags    flags;
   2040 } VkFenceCreateInfo;
   2041 
   2042 typedef struct VkSemaphoreCreateInfo {
   2043     VkStructureType           sType;
   2044     const void*               pNext;
   2045     VkSemaphoreCreateFlags    flags;
   2046 } VkSemaphoreCreateInfo;
   2047 
   2048 typedef struct VkEventCreateInfo {
   2049     VkStructureType       sType;
   2050     const void*           pNext;
   2051     VkEventCreateFlags    flags;
   2052 } VkEventCreateInfo;
   2053 
   2054 typedef struct VkQueryPoolCreateInfo {
   2055     VkStructureType                  sType;
   2056     const void*                      pNext;
   2057     VkQueryPoolCreateFlags           flags;
   2058     VkQueryType                      queryType;
   2059     uint32_t                         queryCount;
   2060     VkQueryPipelineStatisticFlags    pipelineStatistics;
   2061 } VkQueryPoolCreateInfo;
   2062 
   2063 typedef struct VkBufferCreateInfo {
   2064     VkStructureType        sType;
   2065     const void*            pNext;
   2066     VkBufferCreateFlags    flags;
   2067     VkDeviceSize           size;
   2068     VkBufferUsageFlags     usage;
   2069     VkSharingMode          sharingMode;
   2070     uint32_t               queueFamilyIndexCount;
   2071     const uint32_t*        pQueueFamilyIndices;
   2072 } VkBufferCreateInfo;
   2073 
   2074 typedef struct VkBufferViewCreateInfo {
   2075     VkStructureType            sType;
   2076     const void*                pNext;
   2077     VkBufferViewCreateFlags    flags;
   2078     VkBuffer                   buffer;
   2079     VkFormat                   format;
   2080     VkDeviceSize               offset;
   2081     VkDeviceSize               range;
   2082 } VkBufferViewCreateInfo;
   2083 
   2084 typedef struct VkImageCreateInfo {
   2085     VkStructureType          sType;
   2086     const void*              pNext;
   2087     VkImageCreateFlags       flags;
   2088     VkImageType              imageType;
   2089     VkFormat                 format;
   2090     VkExtent3D               extent;
   2091     uint32_t                 mipLevels;
   2092     uint32_t                 arrayLayers;
   2093     VkSampleCountFlagBits    samples;
   2094     VkImageTiling            tiling;
   2095     VkImageUsageFlags        usage;
   2096     VkSharingMode            sharingMode;
   2097     uint32_t                 queueFamilyIndexCount;
   2098     const uint32_t*          pQueueFamilyIndices;
   2099     VkImageLayout            initialLayout;
   2100 } VkImageCreateInfo;
   2101 
   2102 typedef struct VkSubresourceLayout {
   2103     VkDeviceSize    offset;
   2104     VkDeviceSize    size;
   2105     VkDeviceSize    rowPitch;
   2106     VkDeviceSize    arrayPitch;
   2107     VkDeviceSize    depthPitch;
   2108 } VkSubresourceLayout;
   2109 
   2110 typedef struct VkComponentMapping {
   2111     VkComponentSwizzle    r;
   2112     VkComponentSwizzle    g;
   2113     VkComponentSwizzle    b;
   2114     VkComponentSwizzle    a;
   2115 } VkComponentMapping;
   2116 
   2117 typedef struct VkImageSubresourceRange {
   2118     VkImageAspectFlags    aspectMask;
   2119     uint32_t              baseMipLevel;
   2120     uint32_t              levelCount;
   2121     uint32_t              baseArrayLayer;
   2122     uint32_t              layerCount;
   2123 } VkImageSubresourceRange;
   2124 
   2125 typedef struct VkImageViewCreateInfo {
   2126     VkStructureType            sType;
   2127     const void*                pNext;
   2128     VkImageViewCreateFlags     flags;
   2129     VkImage                    image;
   2130     VkImageViewType            viewType;
   2131     VkFormat                   format;
   2132     VkComponentMapping         components;
   2133     VkImageSubresourceRange    subresourceRange;
   2134 } VkImageViewCreateInfo;
   2135 
   2136 typedef struct VkShaderModuleCreateInfo {
   2137     VkStructureType              sType;
   2138     const void*                  pNext;
   2139     VkShaderModuleCreateFlags    flags;
   2140     size_t                       codeSize;
   2141     const uint32_t*              pCode;
   2142 } VkShaderModuleCreateInfo;
   2143 
   2144 typedef struct VkPipelineCacheCreateInfo {
   2145     VkStructureType               sType;
   2146     const void*                   pNext;
   2147     VkPipelineCacheCreateFlags    flags;
   2148     size_t                        initialDataSize;
   2149     const void*                   pInitialData;
   2150 } VkPipelineCacheCreateInfo;
   2151 
   2152 typedef struct VkSpecializationMapEntry {
   2153     uint32_t    constantID;
   2154     uint32_t    offset;
   2155     size_t      size;
   2156 } VkSpecializationMapEntry;
   2157 
   2158 typedef struct VkSpecializationInfo {
   2159     uint32_t                           mapEntryCount;
   2160     const VkSpecializationMapEntry*    pMapEntries;
   2161     size_t                             dataSize;
   2162     const void*                        pData;
   2163 } VkSpecializationInfo;
   2164 
   2165 typedef struct VkPipelineShaderStageCreateInfo {
   2166     VkStructureType                     sType;
   2167     const void*                         pNext;
   2168     VkPipelineShaderStageCreateFlags    flags;
   2169     VkShaderStageFlagBits               stage;
   2170     VkShaderModule                      module;
   2171     const char*                         pName;
   2172     const VkSpecializationInfo*         pSpecializationInfo;
   2173 } VkPipelineShaderStageCreateInfo;
   2174 
   2175 typedef struct VkVertexInputBindingDescription {
   2176     uint32_t             binding;
   2177     uint32_t             stride;
   2178     VkVertexInputRate    inputRate;
   2179 } VkVertexInputBindingDescription;
   2180 
   2181 typedef struct VkVertexInputAttributeDescription {
   2182     uint32_t    location;
   2183     uint32_t    binding;
   2184     VkFormat    format;
   2185     uint32_t    offset;
   2186 } VkVertexInputAttributeDescription;
   2187 
   2188 typedef struct VkPipelineVertexInputStateCreateInfo {
   2189     VkStructureType                             sType;
   2190     const void*                                 pNext;
   2191     VkPipelineVertexInputStateCreateFlags       flags;
   2192     uint32_t                                    vertexBindingDescriptionCount;
   2193     const VkVertexInputBindingDescription*      pVertexBindingDescriptions;
   2194     uint32_t                                    vertexAttributeDescriptionCount;
   2195     const VkVertexInputAttributeDescription*    pVertexAttributeDescriptions;
   2196 } VkPipelineVertexInputStateCreateInfo;
   2197 
   2198 typedef struct VkPipelineInputAssemblyStateCreateInfo {
   2199     VkStructureType                            sType;
   2200     const void*                                pNext;
   2201     VkPipelineInputAssemblyStateCreateFlags    flags;
   2202     VkPrimitiveTopology                        topology;
   2203     VkBool32                                   primitiveRestartEnable;
   2204 } VkPipelineInputAssemblyStateCreateInfo;
   2205 
   2206 typedef struct VkPipelineTessellationStateCreateInfo {
   2207     VkStructureType                           sType;
   2208     const void*                               pNext;
   2209     VkPipelineTessellationStateCreateFlags    flags;
   2210     uint32_t                                  patchControlPoints;
   2211 } VkPipelineTessellationStateCreateInfo;
   2212 
   2213 typedef struct VkViewport {
   2214     float    x;
   2215     float    y;
   2216     float    width;
   2217     float    height;
   2218     float    minDepth;
   2219     float    maxDepth;
   2220 } VkViewport;
   2221 
   2222 typedef struct VkOffset2D {
   2223     int32_t    x;
   2224     int32_t    y;
   2225 } VkOffset2D;
   2226 
   2227 typedef struct VkExtent2D {
   2228     uint32_t    width;
   2229     uint32_t    height;
   2230 } VkExtent2D;
   2231 
   2232 typedef struct VkRect2D {
   2233     VkOffset2D    offset;
   2234     VkExtent2D    extent;
   2235 } VkRect2D;
   2236 
   2237 typedef struct VkPipelineViewportStateCreateInfo {
   2238     VkStructureType                       sType;
   2239     const void*                           pNext;
   2240     VkPipelineViewportStateCreateFlags    flags;
   2241     uint32_t                              viewportCount;
   2242     const VkViewport*                     pViewports;
   2243     uint32_t                              scissorCount;
   2244     const VkRect2D*                       pScissors;
   2245 } VkPipelineViewportStateCreateInfo;
   2246 
   2247 typedef struct VkPipelineRasterizationStateCreateInfo {
   2248     VkStructureType                            sType;
   2249     const void*                                pNext;
   2250     VkPipelineRasterizationStateCreateFlags    flags;
   2251     VkBool32                                   depthClampEnable;
   2252     VkBool32                                   rasterizerDiscardEnable;
   2253     VkPolygonMode                              polygonMode;
   2254     VkCullModeFlags                            cullMode;
   2255     VkFrontFace                                frontFace;
   2256     VkBool32                                   depthBiasEnable;
   2257     float                                      depthBiasConstantFactor;
   2258     float                                      depthBiasClamp;
   2259     float                                      depthBiasSlopeFactor;
   2260     float                                      lineWidth;
   2261 } VkPipelineRasterizationStateCreateInfo;
   2262 
   2263 typedef struct VkPipelineMultisampleStateCreateInfo {
   2264     VkStructureType                          sType;
   2265     const void*                              pNext;
   2266     VkPipelineMultisampleStateCreateFlags    flags;
   2267     VkSampleCountFlagBits                    rasterizationSamples;
   2268     VkBool32                                 sampleShadingEnable;
   2269     float                                    minSampleShading;
   2270     const VkSampleMask*                      pSampleMask;
   2271     VkBool32                                 alphaToCoverageEnable;
   2272     VkBool32                                 alphaToOneEnable;
   2273 } VkPipelineMultisampleStateCreateInfo;
   2274 
   2275 typedef struct VkStencilOpState {
   2276     VkStencilOp    failOp;
   2277     VkStencilOp    passOp;
   2278     VkStencilOp    depthFailOp;
   2279     VkCompareOp    compareOp;
   2280     uint32_t       compareMask;
   2281     uint32_t       writeMask;
   2282     uint32_t       reference;
   2283 } VkStencilOpState;
   2284 
   2285 typedef struct VkPipelineDepthStencilStateCreateInfo {
   2286     VkStructureType                           sType;
   2287     const void*                               pNext;
   2288     VkPipelineDepthStencilStateCreateFlags    flags;
   2289     VkBool32                                  depthTestEnable;
   2290     VkBool32                                  depthWriteEnable;
   2291     VkCompareOp                               depthCompareOp;
   2292     VkBool32                                  depthBoundsTestEnable;
   2293     VkBool32                                  stencilTestEnable;
   2294     VkStencilOpState                          front;
   2295     VkStencilOpState                          back;
   2296     float                                     minDepthBounds;
   2297     float                                     maxDepthBounds;
   2298 } VkPipelineDepthStencilStateCreateInfo;
   2299 
   2300 typedef struct VkPipelineColorBlendAttachmentState {
   2301     VkBool32                 blendEnable;
   2302     VkBlendFactor            srcColorBlendFactor;
   2303     VkBlendFactor            dstColorBlendFactor;
   2304     VkBlendOp                colorBlendOp;
   2305     VkBlendFactor            srcAlphaBlendFactor;
   2306     VkBlendFactor            dstAlphaBlendFactor;
   2307     VkBlendOp                alphaBlendOp;
   2308     VkColorComponentFlags    colorWriteMask;
   2309 } VkPipelineColorBlendAttachmentState;
   2310 
   2311 typedef struct VkPipelineColorBlendStateCreateInfo {
   2312     VkStructureType                               sType;
   2313     const void*                                   pNext;
   2314     VkPipelineColorBlendStateCreateFlags          flags;
   2315     VkBool32                                      logicOpEnable;
   2316     VkLogicOp                                     logicOp;
   2317     uint32_t                                      attachmentCount;
   2318     const VkPipelineColorBlendAttachmentState*    pAttachments;
   2319     float                                         blendConstants[4];
   2320 } VkPipelineColorBlendStateCreateInfo;
   2321 
   2322 typedef struct VkPipelineDynamicStateCreateInfo {
   2323     VkStructureType                      sType;
   2324     const void*                          pNext;
   2325     VkPipelineDynamicStateCreateFlags    flags;
   2326     uint32_t                             dynamicStateCount;
   2327     const VkDynamicState*                pDynamicStates;
   2328 } VkPipelineDynamicStateCreateInfo;
   2329 
   2330 typedef struct VkGraphicsPipelineCreateInfo {
   2331     VkStructureType                                  sType;
   2332     const void*                                      pNext;
   2333     VkPipelineCreateFlags                            flags;
   2334     uint32_t                                         stageCount;
   2335     const VkPipelineShaderStageCreateInfo*           pStages;
   2336     const VkPipelineVertexInputStateCreateInfo*      pVertexInputState;
   2337     const VkPipelineInputAssemblyStateCreateInfo*    pInputAssemblyState;
   2338     const VkPipelineTessellationStateCreateInfo*     pTessellationState;
   2339     const VkPipelineViewportStateCreateInfo*         pViewportState;
   2340     const VkPipelineRasterizationStateCreateInfo*    pRasterizationState;
   2341     const VkPipelineMultisampleStateCreateInfo*      pMultisampleState;
   2342     const VkPipelineDepthStencilStateCreateInfo*     pDepthStencilState;
   2343     const VkPipelineColorBlendStateCreateInfo*       pColorBlendState;
   2344     const VkPipelineDynamicStateCreateInfo*          pDynamicState;
   2345     VkPipelineLayout                                 layout;
   2346     VkRenderPass                                     renderPass;
   2347     uint32_t                                         subpass;
   2348     VkPipeline                                       basePipelineHandle;
   2349     int32_t                                          basePipelineIndex;
   2350 } VkGraphicsPipelineCreateInfo;
   2351 
   2352 typedef struct VkComputePipelineCreateInfo {
   2353     VkStructureType                    sType;
   2354     const void*                        pNext;
   2355     VkPipelineCreateFlags              flags;
   2356     VkPipelineShaderStageCreateInfo    stage;
   2357     VkPipelineLayout                   layout;
   2358     VkPipeline                         basePipelineHandle;
   2359     int32_t                            basePipelineIndex;
   2360 } VkComputePipelineCreateInfo;
   2361 
   2362 typedef struct VkPushConstantRange {
   2363     VkShaderStageFlags    stageFlags;
   2364     uint32_t              offset;
   2365     uint32_t              size;
   2366 } VkPushConstantRange;
   2367 
   2368 typedef struct VkPipelineLayoutCreateInfo {
   2369     VkStructureType                 sType;
   2370     const void*                     pNext;
   2371     VkPipelineLayoutCreateFlags     flags;
   2372     uint32_t                        setLayoutCount;
   2373     const VkDescriptorSetLayout*    pSetLayouts;
   2374     uint32_t                        pushConstantRangeCount;
   2375     const VkPushConstantRange*      pPushConstantRanges;
   2376 } VkPipelineLayoutCreateInfo;
   2377 
   2378 typedef struct VkSamplerCreateInfo {
   2379     VkStructureType         sType;
   2380     const void*             pNext;
   2381     VkSamplerCreateFlags    flags;
   2382     VkFilter                magFilter;
   2383     VkFilter                minFilter;
   2384     VkSamplerMipmapMode     mipmapMode;
   2385     VkSamplerAddressMode    addressModeU;
   2386     VkSamplerAddressMode    addressModeV;
   2387     VkSamplerAddressMode    addressModeW;
   2388     float                   mipLodBias;
   2389     VkBool32                anisotropyEnable;
   2390     float                   maxAnisotropy;
   2391     VkBool32                compareEnable;
   2392     VkCompareOp             compareOp;
   2393     float                   minLod;
   2394     float                   maxLod;
   2395     VkBorderColor           borderColor;
   2396     VkBool32                unnormalizedCoordinates;
   2397 } VkSamplerCreateInfo;
   2398 
   2399 typedef struct VkDescriptorSetLayoutBinding {
   2400     uint32_t              binding;
   2401     VkDescriptorType      descriptorType;
   2402     uint32_t              descriptorCount;
   2403     VkShaderStageFlags    stageFlags;
   2404     const VkSampler*      pImmutableSamplers;
   2405 } VkDescriptorSetLayoutBinding;
   2406 
   2407 typedef struct VkDescriptorSetLayoutCreateInfo {
   2408     VkStructureType                        sType;
   2409     const void*                            pNext;
   2410     VkDescriptorSetLayoutCreateFlags       flags;
   2411     uint32_t                               bindingCount;
   2412     const VkDescriptorSetLayoutBinding*    pBindings;
   2413 } VkDescriptorSetLayoutCreateInfo;
   2414 
   2415 typedef struct VkDescriptorPoolSize {
   2416     VkDescriptorType    type;
   2417     uint32_t            descriptorCount;
   2418 } VkDescriptorPoolSize;
   2419 
   2420 typedef struct VkDescriptorPoolCreateInfo {
   2421     VkStructureType                sType;
   2422     const void*                    pNext;
   2423     VkDescriptorPoolCreateFlags    flags;
   2424     uint32_t                       maxSets;
   2425     uint32_t                       poolSizeCount;
   2426     const VkDescriptorPoolSize*    pPoolSizes;
   2427 } VkDescriptorPoolCreateInfo;
   2428 
   2429 typedef struct VkDescriptorSetAllocateInfo {
   2430     VkStructureType                 sType;
   2431     const void*                     pNext;
   2432     VkDescriptorPool                descriptorPool;
   2433     uint32_t                        descriptorSetCount;
   2434     const VkDescriptorSetLayout*    pSetLayouts;
   2435 } VkDescriptorSetAllocateInfo;
   2436 
   2437 typedef struct VkDescriptorImageInfo {
   2438     VkSampler        sampler;
   2439     VkImageView      imageView;
   2440     VkImageLayout    imageLayout;
   2441 } VkDescriptorImageInfo;
   2442 
   2443 typedef struct VkDescriptorBufferInfo {
   2444     VkBuffer        buffer;
   2445     VkDeviceSize    offset;
   2446     VkDeviceSize    range;
   2447 } VkDescriptorBufferInfo;
   2448 
   2449 typedef struct VkWriteDescriptorSet {
   2450     VkStructureType                  sType;
   2451     const void*                      pNext;
   2452     VkDescriptorSet                  dstSet;
   2453     uint32_t                         dstBinding;
   2454     uint32_t                         dstArrayElement;
   2455     uint32_t                         descriptorCount;
   2456     VkDescriptorType                 descriptorType;
   2457     const VkDescriptorImageInfo*     pImageInfo;
   2458     const VkDescriptorBufferInfo*    pBufferInfo;
   2459     const VkBufferView*              pTexelBufferView;
   2460 } VkWriteDescriptorSet;
   2461 
   2462 typedef struct VkCopyDescriptorSet {
   2463     VkStructureType    sType;
   2464     const void*        pNext;
   2465     VkDescriptorSet    srcSet;
   2466     uint32_t           srcBinding;
   2467     uint32_t           srcArrayElement;
   2468     VkDescriptorSet    dstSet;
   2469     uint32_t           dstBinding;
   2470     uint32_t           dstArrayElement;
   2471     uint32_t           descriptorCount;
   2472 } VkCopyDescriptorSet;
   2473 
   2474 typedef struct VkFramebufferCreateInfo {
   2475     VkStructureType             sType;
   2476     const void*                 pNext;
   2477     VkFramebufferCreateFlags    flags;
   2478     VkRenderPass                renderPass;
   2479     uint32_t                    attachmentCount;
   2480     const VkImageView*          pAttachments;
   2481     uint32_t                    width;
   2482     uint32_t                    height;
   2483     uint32_t                    layers;
   2484 } VkFramebufferCreateInfo;
   2485 
   2486 typedef struct VkAttachmentDescription {
   2487     VkAttachmentDescriptionFlags    flags;
   2488     VkFormat                        format;
   2489     VkSampleCountFlagBits           samples;
   2490     VkAttachmentLoadOp              loadOp;
   2491     VkAttachmentStoreOp             storeOp;
   2492     VkAttachmentLoadOp              stencilLoadOp;
   2493     VkAttachmentStoreOp             stencilStoreOp;
   2494     VkImageLayout                   initialLayout;
   2495     VkImageLayout                   finalLayout;
   2496 } VkAttachmentDescription;
   2497 
   2498 typedef struct VkAttachmentReference {
   2499     uint32_t         attachment;
   2500     VkImageLayout    layout;
   2501 } VkAttachmentReference;
   2502 
   2503 typedef struct VkSubpassDescription {
   2504     VkSubpassDescriptionFlags       flags;
   2505     VkPipelineBindPoint             pipelineBindPoint;
   2506     uint32_t                        inputAttachmentCount;
   2507     const VkAttachmentReference*    pInputAttachments;
   2508     uint32_t                        colorAttachmentCount;
   2509     const VkAttachmentReference*    pColorAttachments;
   2510     const VkAttachmentReference*    pResolveAttachments;
   2511     const VkAttachmentReference*    pDepthStencilAttachment;
   2512     uint32_t                        preserveAttachmentCount;
   2513     const uint32_t*                 pPreserveAttachments;
   2514 } VkSubpassDescription;
   2515 
   2516 typedef struct VkSubpassDependency {
   2517     uint32_t                srcSubpass;
   2518     uint32_t                dstSubpass;
   2519     VkPipelineStageFlags    srcStageMask;
   2520     VkPipelineStageFlags    dstStageMask;
   2521     VkAccessFlags           srcAccessMask;
   2522     VkAccessFlags           dstAccessMask;
   2523     VkDependencyFlags       dependencyFlags;
   2524 } VkSubpassDependency;
   2525 
   2526 typedef struct VkRenderPassCreateInfo {
   2527     VkStructureType                   sType;
   2528     const void*                       pNext;
   2529     VkRenderPassCreateFlags           flags;
   2530     uint32_t                          attachmentCount;
   2531     const VkAttachmentDescription*    pAttachments;
   2532     uint32_t                          subpassCount;
   2533     const VkSubpassDescription*       pSubpasses;
   2534     uint32_t                          dependencyCount;
   2535     const VkSubpassDependency*        pDependencies;
   2536 } VkRenderPassCreateInfo;
   2537 
   2538 typedef struct VkCommandPoolCreateInfo {
   2539     VkStructureType             sType;
   2540     const void*                 pNext;
   2541     VkCommandPoolCreateFlags    flags;
   2542     uint32_t                    queueFamilyIndex;
   2543 } VkCommandPoolCreateInfo;
   2544 
   2545 typedef struct VkCommandBufferAllocateInfo {
   2546     VkStructureType         sType;
   2547     const void*             pNext;
   2548     VkCommandPool           commandPool;
   2549     VkCommandBufferLevel    level;
   2550     uint32_t                commandBufferCount;
   2551 } VkCommandBufferAllocateInfo;
   2552 
   2553 typedef struct VkCommandBufferInheritanceInfo {
   2554     VkStructureType                  sType;
   2555     const void*                      pNext;
   2556     VkRenderPass                     renderPass;
   2557     uint32_t                         subpass;
   2558     VkFramebuffer                    framebuffer;
   2559     VkBool32                         occlusionQueryEnable;
   2560     VkQueryControlFlags              queryFlags;
   2561     VkQueryPipelineStatisticFlags    pipelineStatistics;
   2562 } VkCommandBufferInheritanceInfo;
   2563 
   2564 typedef struct VkCommandBufferBeginInfo {
   2565     VkStructureType                          sType;
   2566     const void*                              pNext;
   2567     VkCommandBufferUsageFlags                flags;
   2568     const VkCommandBufferInheritanceInfo*    pInheritanceInfo;
   2569 } VkCommandBufferBeginInfo;
   2570 
   2571 typedef struct VkBufferCopy {
   2572     VkDeviceSize    srcOffset;
   2573     VkDeviceSize    dstOffset;
   2574     VkDeviceSize    size;
   2575 } VkBufferCopy;
   2576 
   2577 typedef struct VkImageSubresourceLayers {
   2578     VkImageAspectFlags    aspectMask;
   2579     uint32_t              mipLevel;
   2580     uint32_t              baseArrayLayer;
   2581     uint32_t              layerCount;
   2582 } VkImageSubresourceLayers;
   2583 
   2584 typedef struct VkImageCopy {
   2585     VkImageSubresourceLayers    srcSubresource;
   2586     VkOffset3D                  srcOffset;
   2587     VkImageSubresourceLayers    dstSubresource;
   2588     VkOffset3D                  dstOffset;
   2589     VkExtent3D                  extent;
   2590 } VkImageCopy;
   2591 
   2592 typedef struct VkImageBlit {
   2593     VkImageSubresourceLayers    srcSubresource;
   2594     VkOffset3D                  srcOffsets[2];
   2595     VkImageSubresourceLayers    dstSubresource;
   2596     VkOffset3D                  dstOffsets[2];
   2597 } VkImageBlit;
   2598 
   2599 typedef struct VkBufferImageCopy {
   2600     VkDeviceSize                bufferOffset;
   2601     uint32_t                    bufferRowLength;
   2602     uint32_t                    bufferImageHeight;
   2603     VkImageSubresourceLayers    imageSubresource;
   2604     VkOffset3D                  imageOffset;
   2605     VkExtent3D                  imageExtent;
   2606 } VkBufferImageCopy;
   2607 
   2608 typedef union VkClearColorValue {
   2609     float       float32[4];
   2610     int32_t     int32[4];
   2611     uint32_t    uint32[4];
   2612 } VkClearColorValue;
   2613 
   2614 typedef struct VkClearDepthStencilValue {
   2615     float       depth;
   2616     uint32_t    stencil;
   2617 } VkClearDepthStencilValue;
   2618 
   2619 typedef union VkClearValue {
   2620     VkClearColorValue           color;
   2621     VkClearDepthStencilValue    depthStencil;
   2622 } VkClearValue;
   2623 
   2624 typedef struct VkClearAttachment {
   2625     VkImageAspectFlags    aspectMask;
   2626     uint32_t              colorAttachment;
   2627     VkClearValue          clearValue;
   2628 } VkClearAttachment;
   2629 
   2630 typedef struct VkClearRect {
   2631     VkRect2D    rect;
   2632     uint32_t    baseArrayLayer;
   2633     uint32_t    layerCount;
   2634 } VkClearRect;
   2635 
   2636 typedef struct VkImageResolve {
   2637     VkImageSubresourceLayers    srcSubresource;
   2638     VkOffset3D                  srcOffset;
   2639     VkImageSubresourceLayers    dstSubresource;
   2640     VkOffset3D                  dstOffset;
   2641     VkExtent3D                  extent;
   2642 } VkImageResolve;
   2643 
   2644 typedef struct VkMemoryBarrier {
   2645     VkStructureType    sType;
   2646     const void*        pNext;
   2647     VkAccessFlags      srcAccessMask;
   2648     VkAccessFlags      dstAccessMask;
   2649 } VkMemoryBarrier;
   2650 
   2651 typedef struct VkBufferMemoryBarrier {
   2652     VkStructureType    sType;
   2653     const void*        pNext;
   2654     VkAccessFlags      srcAccessMask;
   2655     VkAccessFlags      dstAccessMask;
   2656     uint32_t           srcQueueFamilyIndex;
   2657     uint32_t           dstQueueFamilyIndex;
   2658     VkBuffer           buffer;
   2659     VkDeviceSize       offset;
   2660     VkDeviceSize       size;
   2661 } VkBufferMemoryBarrier;
   2662 
   2663 typedef struct VkImageMemoryBarrier {
   2664     VkStructureType            sType;
   2665     const void*                pNext;
   2666     VkAccessFlags              srcAccessMask;
   2667     VkAccessFlags              dstAccessMask;
   2668     VkImageLayout              oldLayout;
   2669     VkImageLayout              newLayout;
   2670     uint32_t                   srcQueueFamilyIndex;
   2671     uint32_t                   dstQueueFamilyIndex;
   2672     VkImage                    image;
   2673     VkImageSubresourceRange    subresourceRange;
   2674 } VkImageMemoryBarrier;
   2675 
   2676 typedef struct VkRenderPassBeginInfo {
   2677     VkStructureType        sType;
   2678     const void*            pNext;
   2679     VkRenderPass           renderPass;
   2680     VkFramebuffer          framebuffer;
   2681     VkRect2D               renderArea;
   2682     uint32_t               clearValueCount;
   2683     const VkClearValue*    pClearValues;
   2684 } VkRenderPassBeginInfo;
   2685 
   2686 typedef struct VkDispatchIndirectCommand {
   2687     uint32_t    x;
   2688     uint32_t    y;
   2689     uint32_t    z;
   2690 } VkDispatchIndirectCommand;
   2691 
   2692 typedef struct VkDrawIndexedIndirectCommand {
   2693     uint32_t    indexCount;
   2694     uint32_t    instanceCount;
   2695     uint32_t    firstIndex;
   2696     int32_t     vertexOffset;
   2697     uint32_t    firstInstance;
   2698 } VkDrawIndexedIndirectCommand;
   2699 
   2700 typedef struct VkDrawIndirectCommand {
   2701     uint32_t    vertexCount;
   2702     uint32_t    instanceCount;
   2703     uint32_t    firstVertex;
   2704     uint32_t    firstInstance;
   2705 } VkDrawIndirectCommand;
   2706 
   2707 
   2708 typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
   2709 typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator);
   2710 typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
   2711 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
   2712 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
   2713 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
   2714 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
   2715 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
   2716 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
   2717 typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName);
   2718 typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);
   2719 typedef VkResult (VKAPI_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
   2720 typedef void (VKAPI_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks* pAllocator);
   2721 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
   2722 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
   2723 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties);
   2724 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties);
   2725 typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
   2726 typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
   2727 typedef VkResult (VKAPI_PTR *PFN_vkQueueWaitIdle)(VkQueue queue);
   2728 typedef VkResult (VKAPI_PTR *PFN_vkDeviceWaitIdle)(VkDevice device);
   2729 typedef VkResult (VKAPI_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
   2730 typedef void (VKAPI_PTR *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);
   2731 typedef VkResult (VKAPI_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
   2732 typedef void (VKAPI_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory);
   2733 typedef VkResult (VKAPI_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
   2734 typedef VkResult (VKAPI_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
   2735 typedef void (VKAPI_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
   2736 typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
   2737 typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
   2738 typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
   2739 typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
   2740 typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
   2741 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties);
   2742 typedef VkResult (VKAPI_PTR *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
   2743 typedef VkResult (VKAPI_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
   2744 typedef void (VKAPI_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
   2745 typedef VkResult (VKAPI_PTR *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
   2746 typedef VkResult (VKAPI_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);
   2747 typedef VkResult (VKAPI_PTR *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
   2748 typedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
   2749 typedef void (VKAPI_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
   2750 typedef VkResult (VKAPI_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
   2751 typedef void (VKAPI_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
   2752 typedef VkResult (VKAPI_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);
   2753 typedef VkResult (VKAPI_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event);
   2754 typedef VkResult (VKAPI_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event);
   2755 typedef VkResult (VKAPI_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
   2756 typedef void (VKAPI_PTR *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator);
   2757 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);
   2758 typedef VkResult (VKAPI_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
   2759 typedef void (VKAPI_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
   2760 typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
   2761 typedef void (VKAPI_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
   2762 typedef VkResult (VKAPI_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
   2763 typedef void (VKAPI_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
   2764 typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
   2765 typedef VkResult (VKAPI_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
   2766 typedef void (VKAPI_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
   2767 typedef VkResult (VKAPI_PTR *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule);
   2768 typedef void (VKAPI_PTR *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator);
   2769 typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
   2770 typedef void (VKAPI_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
   2771 typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
   2772 typedef VkResult (VKAPI_PTR *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
   2773 typedef VkResult (VKAPI_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
   2774 typedef VkResult (VKAPI_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
   2775 typedef void (VKAPI_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
   2776 typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
   2777 typedef void (VKAPI_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
   2778 typedef VkResult (VKAPI_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
   2779 typedef void (VKAPI_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
   2780 typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
   2781 typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
   2782 typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
   2783 typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator);
   2784 typedef VkResult (VKAPI_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
   2785 typedef VkResult (VKAPI_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
   2786 typedef VkResult (VKAPI_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
   2787 typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
   2788 typedef VkResult (VKAPI_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
   2789 typedef void (VKAPI_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
   2790 typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
   2791 typedef void (VKAPI_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
   2792 typedef void (VKAPI_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
   2793 typedef VkResult (VKAPI_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
   2794 typedef void (VKAPI_PTR *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator);
   2795 typedef VkResult (VKAPI_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
   2796 typedef VkResult (VKAPI_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
   2797 typedef void (VKAPI_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
   2798 typedef VkResult (VKAPI_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
   2799 typedef VkResult (VKAPI_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer);
   2800 typedef VkResult (VKAPI_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
   2801 typedef void (VKAPI_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
   2802 typedef void (VKAPI_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports);
   2803 typedef void (VKAPI_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors);
   2804 typedef void (VKAPI_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth);
   2805 typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
   2806 typedef void (VKAPI_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]);
   2807 typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
   2808 typedef void (VKAPI_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask);
   2809 typedef void (VKAPI_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask);
   2810 typedef void (VKAPI_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference);
   2811 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);
   2812 typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
   2813 typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
   2814 typedef void (VKAPI_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
   2815 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
   2816 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
   2817 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
   2818 typedef void (VKAPI_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
   2819 typedef void (VKAPI_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
   2820 typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
   2821 typedef void (VKAPI_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
   2822 typedef void (VKAPI_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
   2823 typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
   2824 typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
   2825 typedef void (VKAPI_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);
   2826 typedef void (VKAPI_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data);
   2827 typedef void (VKAPI_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
   2828 typedef void (VKAPI_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
   2829 typedef void (VKAPI_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
   2830 typedef void (VKAPI_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
   2831 typedef void (VKAPI_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
   2832 typedef void (VKAPI_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
   2833 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);
   2834 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);
   2835 typedef void (VKAPI_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags);
   2836 typedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query);
   2837 typedef void (VKAPI_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);
   2838 typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query);
   2839 typedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
   2840 typedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues);
   2841 typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
   2842 typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents);
   2843 typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer);
   2844 typedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
   2845 
   2846 #ifndef VK_NO_PROTOTYPES
   2847 VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
   2848     const VkInstanceCreateInfo*                 pCreateInfo,
   2849     const VkAllocationCallbacks*                pAllocator,
   2850     VkInstance*                                 pInstance);
   2851 
   2852 VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
   2853     VkInstance                                  instance,
   2854     const VkAllocationCallbacks*                pAllocator);
   2855 
   2856 VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices(
   2857     VkInstance                                  instance,
   2858     uint32_t*                                   pPhysicalDeviceCount,
   2859     VkPhysicalDevice*                           pPhysicalDevices);
   2860 
   2861 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures(
   2862     VkPhysicalDevice                            physicalDevice,
   2863     VkPhysicalDeviceFeatures*                   pFeatures);
   2864 
   2865 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(
   2866     VkPhysicalDevice                            physicalDevice,
   2867     VkFormat                                    format,
   2868     VkFormatProperties*                         pFormatProperties);
   2869 
   2870 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties(
   2871     VkPhysicalDevice                            physicalDevice,
   2872     VkFormat                                    format,
   2873     VkImageType                                 type,
   2874     VkImageTiling                               tiling,
   2875     VkImageUsageFlags                           usage,
   2876     VkImageCreateFlags                          flags,
   2877     VkImageFormatProperties*                    pImageFormatProperties);
   2878 
   2879 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties(
   2880     VkPhysicalDevice                            physicalDevice,
   2881     VkPhysicalDeviceProperties*                 pProperties);
   2882 
   2883 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties(
   2884     VkPhysicalDevice                            physicalDevice,
   2885     uint32_t*                                   pQueueFamilyPropertyCount,
   2886     VkQueueFamilyProperties*                    pQueueFamilyProperties);
   2887 
   2888 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(
   2889     VkPhysicalDevice                            physicalDevice,
   2890     VkPhysicalDeviceMemoryProperties*           pMemoryProperties);
   2891 
   2892 VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(
   2893     VkInstance                                  instance,
   2894     const char*                                 pName);
   2895 
   2896 VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(
   2897     VkDevice                                    device,
   2898     const char*                                 pName);
   2899 
   2900 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(
   2901     VkPhysicalDevice                            physicalDevice,
   2902     const VkDeviceCreateInfo*                   pCreateInfo,
   2903     const VkAllocationCallbacks*                pAllocator,
   2904     VkDevice*                                   pDevice);
   2905 
   2906 VKAPI_ATTR void VKAPI_CALL vkDestroyDevice(
   2907     VkDevice                                    device,
   2908     const VkAllocationCallbacks*                pAllocator);
   2909 
   2910 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties(
   2911     const char*                                 pLayerName,
   2912     uint32_t*                                   pPropertyCount,
   2913     VkExtensionProperties*                      pProperties);
   2914 
   2915 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties(
   2916     VkPhysicalDevice                            physicalDevice,
   2917     const char*                                 pLayerName,
   2918     uint32_t*                                   pPropertyCount,
   2919     VkExtensionProperties*                      pProperties);
   2920 
   2921 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties(
   2922     uint32_t*                                   pPropertyCount,
   2923     VkLayerProperties*                          pProperties);
   2924 
   2925 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties(
   2926     VkPhysicalDevice                            physicalDevice,
   2927     uint32_t*                                   pPropertyCount,
   2928     VkLayerProperties*                          pProperties);
   2929 
   2930 VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue(
   2931     VkDevice                                    device,
   2932     uint32_t                                    queueFamilyIndex,
   2933     uint32_t                                    queueIndex,
   2934     VkQueue*                                    pQueue);
   2935 
   2936 VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(
   2937     VkQueue                                     queue,
   2938     uint32_t                                    submitCount,
   2939     const VkSubmitInfo*                         pSubmits,
   2940     VkFence                                     fence);
   2941 
   2942 VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(
   2943     VkQueue                                     queue);
   2944 
   2945 VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(
   2946     VkDevice                                    device);
   2947 
   2948 VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(
   2949     VkDevice                                    device,
   2950     const VkMemoryAllocateInfo*                 pAllocateInfo,
   2951     const VkAllocationCallbacks*                pAllocator,
   2952     VkDeviceMemory*                             pMemory);
   2953 
   2954 VKAPI_ATTR void VKAPI_CALL vkFreeMemory(
   2955     VkDevice                                    device,
   2956     VkDeviceMemory                              memory,
   2957     const VkAllocationCallbacks*                pAllocator);
   2958 
   2959 VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(
   2960     VkDevice                                    device,
   2961     VkDeviceMemory                              memory,
   2962     VkDeviceSize                                offset,
   2963     VkDeviceSize                                size,
   2964     VkMemoryMapFlags                            flags,
   2965     void**                                      ppData);
   2966 
   2967 VKAPI_ATTR void VKAPI_CALL vkUnmapMemory(
   2968     VkDevice                                    device,
   2969     VkDeviceMemory                              memory);
   2970 
   2971 VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges(
   2972     VkDevice                                    device,
   2973     uint32_t                                    memoryRangeCount,
   2974     const VkMappedMemoryRange*                  pMemoryRanges);
   2975 
   2976 VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(
   2977     VkDevice                                    device,
   2978     uint32_t                                    memoryRangeCount,
   2979     const VkMappedMemoryRange*                  pMemoryRanges);
   2980 
   2981 VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment(
   2982     VkDevice                                    device,
   2983     VkDeviceMemory                              memory,
   2984     VkDeviceSize*                               pCommittedMemoryInBytes);
   2985 
   2986 VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(
   2987     VkDevice                                    device,
   2988     VkBuffer                                    buffer,
   2989     VkDeviceMemory                              memory,
   2990     VkDeviceSize                                memoryOffset);
   2991 
   2992 VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(
   2993     VkDevice                                    device,
   2994     VkImage                                     image,
   2995     VkDeviceMemory                              memory,
   2996     VkDeviceSize                                memoryOffset);
   2997 
   2998 VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements(
   2999     VkDevice                                    device,
   3000     VkBuffer                                    buffer,
   3001     VkMemoryRequirements*                       pMemoryRequirements);
   3002 
   3003 VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements(
   3004     VkDevice                                    device,
   3005     VkImage                                     image,
   3006     VkMemoryRequirements*                       pMemoryRequirements);
   3007 
   3008 VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements(
   3009     VkDevice                                    device,
   3010     VkImage                                     image,
   3011     uint32_t*                                   pSparseMemoryRequirementCount,
   3012     VkSparseImageMemoryRequirements*            pSparseMemoryRequirements);
   3013 
   3014 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties(
   3015     VkPhysicalDevice                            physicalDevice,
   3016     VkFormat                                    format,
   3017     VkImageType                                 type,
   3018     VkSampleCountFlagBits                       samples,
   3019     VkImageUsageFlags                           usage,
   3020     VkImageTiling                               tiling,
   3021     uint32_t*                                   pPropertyCount,
   3022     VkSparseImageFormatProperties*              pProperties);
   3023 
   3024 VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse(
   3025     VkQueue                                     queue,
   3026     uint32_t                                    bindInfoCount,
   3027     const VkBindSparseInfo*                     pBindInfo,
   3028     VkFence                                     fence);
   3029 
   3030 VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(
   3031     VkDevice                                    device,
   3032     const VkFenceCreateInfo*                    pCreateInfo,
   3033     const VkAllocationCallbacks*                pAllocator,
   3034     VkFence*                                    pFence);
   3035 
   3036 VKAPI_ATTR void VKAPI_CALL vkDestroyFence(
   3037     VkDevice                                    device,
   3038     VkFence                                     fence,
   3039     const VkAllocationCallbacks*                pAllocator);
   3040 
   3041 VKAPI_ATTR VkResult VKAPI_CALL vkResetFences(
   3042     VkDevice                                    device,
   3043     uint32_t                                    fenceCount,
   3044     const VkFence*                              pFences);
   3045 
   3046 VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(
   3047     VkDevice                                    device,
   3048     VkFence                                     fence);
   3049 
   3050 VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(
   3051     VkDevice                                    device,
   3052     uint32_t                                    fenceCount,
   3053     const VkFence*                              pFences,
   3054     VkBool32                                    waitAll,
   3055     uint64_t                                    timeout);
   3056 
   3057 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore(
   3058     VkDevice                                    device,
   3059     const VkSemaphoreCreateInfo*                pCreateInfo,
   3060     const VkAllocationCallbacks*                pAllocator,
   3061     VkSemaphore*                                pSemaphore);
   3062 
   3063 VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore(
   3064     VkDevice                                    device,
   3065     VkSemaphore                                 semaphore,
   3066     const VkAllocationCallbacks*                pAllocator);
   3067 
   3068 VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(
   3069     VkDevice                                    device,
   3070     const VkEventCreateInfo*                    pCreateInfo,
   3071     const VkAllocationCallbacks*                pAllocator,
   3072     VkEvent*                                    pEvent);
   3073 
   3074 VKAPI_ATTR void VKAPI_CALL vkDestroyEvent(
   3075     VkDevice                                    device,
   3076     VkEvent                                     event,
   3077     const VkAllocationCallbacks*                pAllocator);
   3078 
   3079 VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus(
   3080     VkDevice                                    device,
   3081     VkEvent                                     event);
   3082 
   3083 VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent(
   3084     VkDevice                                    device,
   3085     VkEvent                                     event);
   3086 
   3087 VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent(
   3088     VkDevice                                    device,
   3089     VkEvent                                     event);
   3090 
   3091 VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool(
   3092     VkDevice                                    device,
   3093     const VkQueryPoolCreateInfo*                pCreateInfo,
   3094     const VkAllocationCallbacks*                pAllocator,
   3095     VkQueryPool*                                pQueryPool);
   3096 
   3097 VKAPI_ATTR void VKAPI_CALL vkDestroyQueryPool(
   3098     VkDevice                                    device,
   3099     VkQueryPool                                 queryPool,
   3100     const VkAllocationCallbacks*                pAllocator);
   3101 
   3102 VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults(
   3103     VkDevice                                    device,
   3104     VkQueryPool                                 queryPool,
   3105     uint32_t                                    firstQuery,
   3106     uint32_t                                    queryCount,
   3107     size_t                                      dataSize,
   3108     void*                                       pData,
   3109     VkDeviceSize                                stride,
   3110     VkQueryResultFlags                          flags);
   3111 
   3112 VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(
   3113     VkDevice                                    device,
   3114     const VkBufferCreateInfo*                   pCreateInfo,
   3115     const VkAllocationCallbacks*                pAllocator,
   3116     VkBuffer*                                   pBuffer);
   3117 
   3118 VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(
   3119     VkDevice                                    device,
   3120     VkBuffer                                    buffer,
   3121     const VkAllocationCallbacks*                pAllocator);
   3122 
   3123 VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(
   3124     VkDevice                                    device,
   3125     const VkBufferViewCreateInfo*               pCreateInfo,
   3126     const VkAllocationCallbacks*                pAllocator,
   3127     VkBufferView*                               pView);
   3128 
   3129 VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView(
   3130     VkDevice                                    device,
   3131     VkBufferView                                bufferView,
   3132     const VkAllocationCallbacks*                pAllocator);
   3133 
   3134 VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(
   3135     VkDevice                                    device,
   3136     const VkImageCreateInfo*                    pCreateInfo,
   3137     const VkAllocationCallbacks*                pAllocator,
   3138     VkImage*                                    pImage);
   3139 
   3140 VKAPI_ATTR void VKAPI_CALL vkDestroyImage(
   3141     VkDevice                                    device,
   3142     VkImage                                     image,
   3143     const VkAllocationCallbacks*                pAllocator);
   3144 
   3145 VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout(
   3146     VkDevice                                    device,
   3147     VkImage                                     image,
   3148     const VkImageSubresource*                   pSubresource,
   3149     VkSubresourceLayout*                        pLayout);
   3150 
   3151 VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView(
   3152     VkDevice                                    device,
   3153     const VkImageViewCreateInfo*                pCreateInfo,
   3154     const VkAllocationCallbacks*                pAllocator,
   3155     VkImageView*                                pView);
   3156 
   3157 VKAPI_ATTR void VKAPI_CALL vkDestroyImageView(
   3158     VkDevice                                    device,
   3159     VkImageView                                 imageView,
   3160     const VkAllocationCallbacks*                pAllocator);
   3161 
   3162 VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderModule(
   3163     VkDevice                                    device,
   3164     const VkShaderModuleCreateInfo*             pCreateInfo,
   3165     const VkAllocationCallbacks*                pAllocator,
   3166     VkShaderModule*                             pShaderModule);
   3167 
   3168 VKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule(
   3169     VkDevice                                    device,
   3170     VkShaderModule                              shaderModule,
   3171     const VkAllocationCallbacks*                pAllocator);
   3172 
   3173 VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(
   3174     VkDevice                                    device,
   3175     const VkPipelineCacheCreateInfo*            pCreateInfo,
   3176     const VkAllocationCallbacks*                pAllocator,
   3177     VkPipelineCache*                            pPipelineCache);
   3178 
   3179 VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache(
   3180     VkDevice                                    device,
   3181     VkPipelineCache                             pipelineCache,
   3182     const VkAllocationCallbacks*                pAllocator);
   3183 
   3184 VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineCacheData(
   3185     VkDevice                                    device,
   3186     VkPipelineCache                             pipelineCache,
   3187     size_t*                                     pDataSize,
   3188     void*                                       pData);
   3189 
   3190 VKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches(
   3191     VkDevice                                    device,
   3192     VkPipelineCache                             dstCache,
   3193     uint32_t                                    srcCacheCount,
   3194     const VkPipelineCache*                      pSrcCaches);
   3195 
   3196 VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(
   3197     VkDevice                                    device,
   3198     VkPipelineCache                             pipelineCache,
   3199     uint32_t                                    createInfoCount,
   3200     const VkGraphicsPipelineCreateInfo*         pCreateInfos,
   3201     const VkAllocationCallbacks*                pAllocator,
   3202     VkPipeline*                                 pPipelines);
   3203 
   3204 VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines(
   3205     VkDevice                                    device,
   3206     VkPipelineCache                             pipelineCache,
   3207     uint32_t                                    createInfoCount,
   3208     const VkComputePipelineCreateInfo*          pCreateInfos,
   3209     const VkAllocationCallbacks*                pAllocator,
   3210     VkPipeline*                                 pPipelines);
   3211 
   3212 VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline(
   3213     VkDevice                                    device,
   3214     VkPipeline                                  pipeline,
   3215     const VkAllocationCallbacks*                pAllocator);
   3216 
   3217 VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout(
   3218     VkDevice                                    device,
   3219     const VkPipelineLayoutCreateInfo*           pCreateInfo,
   3220     const VkAllocationCallbacks*                pAllocator,
   3221     VkPipelineLayout*                           pPipelineLayout);
   3222 
   3223 VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout(
   3224     VkDevice                                    device,
   3225     VkPipelineLayout                            pipelineLayout,
   3226     const VkAllocationCallbacks*                pAllocator);
   3227 
   3228 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler(
   3229     VkDevice                                    device,
   3230     const VkSamplerCreateInfo*                  pCreateInfo,
   3231     const VkAllocationCallbacks*                pAllocator,
   3232     VkSampler*                                  pSampler);
   3233 
   3234 VKAPI_ATTR void VKAPI_CALL vkDestroySampler(
   3235     VkDevice                                    device,
   3236     VkSampler                                   sampler,
   3237     const VkAllocationCallbacks*                pAllocator);
   3238 
   3239 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout(
   3240     VkDevice                                    device,
   3241     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
   3242     const VkAllocationCallbacks*                pAllocator,
   3243     VkDescriptorSetLayout*                      pSetLayout);
   3244 
   3245 VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout(
   3246     VkDevice                                    device,
   3247     VkDescriptorSetLayout                       descriptorSetLayout,
   3248     const VkAllocationCallbacks*                pAllocator);
   3249 
   3250 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool(
   3251     VkDevice                                    device,
   3252     const VkDescriptorPoolCreateInfo*           pCreateInfo,
   3253     const VkAllocationCallbacks*                pAllocator,
   3254     VkDescriptorPool*                           pDescriptorPool);
   3255 
   3256 VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorPool(
   3257     VkDevice                                    device,
   3258     VkDescriptorPool                            descriptorPool,
   3259     const VkAllocationCallbacks*                pAllocator);
   3260 
   3261 VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool(
   3262     VkDevice                                    device,
   3263     VkDescriptorPool                            descriptorPool,
   3264     VkDescriptorPoolResetFlags                  flags);
   3265 
   3266 VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(
   3267     VkDevice                                    device,
   3268     const VkDescriptorSetAllocateInfo*          pAllocateInfo,
   3269     VkDescriptorSet*                            pDescriptorSets);
   3270 
   3271 VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets(
   3272     VkDevice                                    device,
   3273     VkDescriptorPool                            descriptorPool,
   3274     uint32_t                                    descriptorSetCount,
   3275     const VkDescriptorSet*                      pDescriptorSets);
   3276 
   3277 VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets(
   3278     VkDevice                                    device,
   3279     uint32_t                                    descriptorWriteCount,
   3280     const VkWriteDescriptorSet*                 pDescriptorWrites,
   3281     uint32_t                                    descriptorCopyCount,
   3282     const VkCopyDescriptorSet*                  pDescriptorCopies);
   3283 
   3284 VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(
   3285     VkDevice                                    device,
   3286     const VkFramebufferCreateInfo*              pCreateInfo,
   3287     const VkAllocationCallbacks*                pAllocator,
   3288     VkFramebuffer*                              pFramebuffer);
   3289 
   3290 VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer(
   3291     VkDevice                                    device,
   3292     VkFramebuffer                               framebuffer,
   3293     const VkAllocationCallbacks*                pAllocator);
   3294 
   3295 VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(
   3296     VkDevice                                    device,
   3297     const VkRenderPassCreateInfo*               pCreateInfo,
   3298     const VkAllocationCallbacks*                pAllocator,
   3299     VkRenderPass*                               pRenderPass);
   3300 
   3301 VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass(
   3302     VkDevice                                    device,
   3303     VkRenderPass                                renderPass,
   3304     const VkAllocationCallbacks*                pAllocator);
   3305 
   3306 VKAPI_ATTR void VKAPI_CALL vkGetRenderAreaGranularity(
   3307     VkDevice                                    device,
   3308     VkRenderPass                                renderPass,
   3309     VkExtent2D*                                 pGranularity);
   3310 
   3311 VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool(
   3312     VkDevice                                    device,
   3313     const VkCommandPoolCreateInfo*              pCreateInfo,
   3314     const VkAllocationCallbacks*                pAllocator,
   3315     VkCommandPool*                              pCommandPool);
   3316 
   3317 VKAPI_ATTR void VKAPI_CALL vkDestroyCommandPool(
   3318     VkDevice                                    device,
   3319     VkCommandPool                               commandPool,
   3320     const VkAllocationCallbacks*                pAllocator);
   3321 
   3322 VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool(
   3323     VkDevice                                    device,
   3324     VkCommandPool                               commandPool,
   3325     VkCommandPoolResetFlags                     flags);
   3326 
   3327 VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(
   3328     VkDevice                                    device,
   3329     const VkCommandBufferAllocateInfo*          pAllocateInfo,
   3330     VkCommandBuffer*                            pCommandBuffers);
   3331 
   3332 VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers(
   3333     VkDevice                                    device,
   3334     VkCommandPool                               commandPool,
   3335     uint32_t                                    commandBufferCount,
   3336     const VkCommandBuffer*                      pCommandBuffers);
   3337 
   3338 VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(
   3339     VkCommandBuffer                             commandBuffer,
   3340     const VkCommandBufferBeginInfo*             pBeginInfo);
   3341 
   3342 VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer(
   3343     VkCommandBuffer                             commandBuffer);
   3344 
   3345 VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer(
   3346     VkCommandBuffer                             commandBuffer,
   3347     VkCommandBufferResetFlags                   flags);
   3348 
   3349 VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(
   3350     VkCommandBuffer                             commandBuffer,
   3351     VkPipelineBindPoint                         pipelineBindPoint,
   3352     VkPipeline                                  pipeline);
   3353 
   3354 VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(
   3355     VkCommandBuffer                             commandBuffer,
   3356     uint32_t                                    firstViewport,
   3357     uint32_t                                    viewportCount,
   3358     const VkViewport*                           pViewports);
   3359 
   3360 VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor(
   3361     VkCommandBuffer                             commandBuffer,
   3362     uint32_t                                    firstScissor,
   3363     uint32_t                                    scissorCount,
   3364     const VkRect2D*                             pScissors);
   3365 
   3366 VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth(
   3367     VkCommandBuffer                             commandBuffer,
   3368     float                                       lineWidth);
   3369 
   3370 VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias(
   3371     VkCommandBuffer                             commandBuffer,
   3372     float                                       depthBiasConstantFactor,
   3373     float                                       depthBiasClamp,
   3374     float                                       depthBiasSlopeFactor);
   3375 
   3376 VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants(
   3377     VkCommandBuffer                             commandBuffer,
   3378     const float                                 blendConstants[4]);
   3379 
   3380 VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds(
   3381     VkCommandBuffer                             commandBuffer,
   3382     float                                       minDepthBounds,
   3383     float                                       maxDepthBounds);
   3384 
   3385 VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask(
   3386     VkCommandBuffer                             commandBuffer,
   3387     VkStencilFaceFlags                          faceMask,
   3388     uint32_t                                    compareMask);
   3389 
   3390 VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask(
   3391     VkCommandBuffer                             commandBuffer,
   3392     VkStencilFaceFlags                          faceMask,
   3393     uint32_t                                    writeMask);
   3394 
   3395 VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference(
   3396     VkCommandBuffer                             commandBuffer,
   3397     VkStencilFaceFlags                          faceMask,
   3398     uint32_t                                    reference);
   3399 
   3400 VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(
   3401     VkCommandBuffer                             commandBuffer,
   3402     VkPipelineBindPoint                         pipelineBindPoint,
   3403     VkPipelineLayout                            layout,
   3404     uint32_t                                    firstSet,
   3405     uint32_t                                    descriptorSetCount,
   3406     const VkDescriptorSet*                      pDescriptorSets,
   3407     uint32_t                                    dynamicOffsetCount,
   3408     const uint32_t*                             pDynamicOffsets);
   3409 
   3410 VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(
   3411     VkCommandBuffer                             commandBuffer,
   3412     VkBuffer                                    buffer,
   3413     VkDeviceSize                                offset,
   3414     VkIndexType                                 indexType);
   3415 
   3416 VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(
   3417     VkCommandBuffer                             commandBuffer,
   3418     uint32_t                                    firstBinding,
   3419     uint32_t                                    bindingCount,
   3420     const VkBuffer*                             pBuffers,
   3421     const VkDeviceSize*                         pOffsets);
   3422 
   3423 VKAPI_ATTR void VKAPI_CALL vkCmdDraw(
   3424     VkCommandBuffer                             commandBuffer,
   3425     uint32_t                                    vertexCount,
   3426     uint32_t                                    instanceCount,
   3427     uint32_t                                    firstVertex,
   3428     uint32_t                                    firstInstance);
   3429 
   3430 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed(
   3431     VkCommandBuffer                             commandBuffer,
   3432     uint32_t                                    indexCount,
   3433     uint32_t                                    instanceCount,
   3434     uint32_t                                    firstIndex,
   3435     int32_t                                     vertexOffset,
   3436     uint32_t                                    firstInstance);
   3437 
   3438 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(
   3439     VkCommandBuffer                             commandBuffer,
   3440     VkBuffer                                    buffer,
   3441     VkDeviceSize                                offset,
   3442     uint32_t                                    drawCount,
   3443     uint32_t                                    stride);
   3444 
   3445 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(
   3446     VkCommandBuffer                             commandBuffer,
   3447     VkBuffer                                    buffer,
   3448     VkDeviceSize                                offset,
   3449     uint32_t                                    drawCount,
   3450     uint32_t                                    stride);
   3451 
   3452 VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(
   3453     VkCommandBuffer                             commandBuffer,
   3454     uint32_t                                    groupCountX,
   3455     uint32_t                                    groupCountY,
   3456     uint32_t                                    groupCountZ);
   3457 
   3458 VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(
   3459     VkCommandBuffer                             commandBuffer,
   3460     VkBuffer                                    buffer,
   3461     VkDeviceSize                                offset);
   3462 
   3463 VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(
   3464     VkCommandBuffer                             commandBuffer,
   3465     VkBuffer                                    srcBuffer,
   3466     VkBuffer                                    dstBuffer,
   3467     uint32_t                                    regionCount,
   3468     const VkBufferCopy*                         pRegions);
   3469 
   3470 VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(
   3471     VkCommandBuffer                             commandBuffer,
   3472     VkImage                                     srcImage,
   3473     VkImageLayout                               srcImageLayout,
   3474     VkImage                                     dstImage,
   3475     VkImageLayout                               dstImageLayout,
   3476     uint32_t                                    regionCount,
   3477     const VkImageCopy*                          pRegions);
   3478 
   3479 VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(
   3480     VkCommandBuffer                             commandBuffer,
   3481     VkImage                                     srcImage,
   3482     VkImageLayout                               srcImageLayout,
   3483     VkImage                                     dstImage,
   3484     VkImageLayout                               dstImageLayout,
   3485     uint32_t                                    regionCount,
   3486     const VkImageBlit*                          pRegions,
   3487     VkFilter                                    filter);
   3488 
   3489 VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(
   3490     VkCommandBuffer                             commandBuffer,
   3491     VkBuffer                                    srcBuffer,
   3492     VkImage                                     dstImage,
   3493     VkImageLayout                               dstImageLayout,
   3494     uint32_t                                    regionCount,
   3495     const VkBufferImageCopy*                    pRegions);
   3496 
   3497 VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(
   3498     VkCommandBuffer                             commandBuffer,
   3499     VkImage                                     srcImage,
   3500     VkImageLayout                               srcImageLayout,
   3501     VkBuffer                                    dstBuffer,
   3502     uint32_t                                    regionCount,
   3503     const VkBufferImageCopy*                    pRegions);
   3504 
   3505 VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(
   3506     VkCommandBuffer                             commandBuffer,
   3507     VkBuffer                                    dstBuffer,
   3508     VkDeviceSize                                dstOffset,
   3509     VkDeviceSize                                dataSize,
   3510     const void*                                 pData);
   3511 
   3512 VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(
   3513     VkCommandBuffer                             commandBuffer,
   3514     VkBuffer                                    dstBuffer,
   3515     VkDeviceSize                                dstOffset,
   3516     VkDeviceSize                                size,
   3517     uint32_t                                    data);
   3518 
   3519 VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(
   3520     VkCommandBuffer                             commandBuffer,
   3521     VkImage                                     image,
   3522     VkImageLayout                               imageLayout,
   3523     const VkClearColorValue*                    pColor,
   3524     uint32_t                                    rangeCount,
   3525     const VkImageSubresourceRange*              pRanges);
   3526 
   3527 VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(
   3528     VkCommandBuffer                             commandBuffer,
   3529     VkImage                                     image,
   3530     VkImageLayout                               imageLayout,
   3531     const VkClearDepthStencilValue*             pDepthStencil,
   3532     uint32_t                                    rangeCount,
   3533     const VkImageSubresourceRange*              pRanges);
   3534 
   3535 VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments(
   3536     VkCommandBuffer                             commandBuffer,
   3537     uint32_t                                    attachmentCount,
   3538     const VkClearAttachment*                    pAttachments,
   3539     uint32_t                                    rectCount,
   3540     const VkClearRect*                          pRects);
   3541 
   3542 VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(
   3543     VkCommandBuffer                             commandBuffer,
   3544     VkImage                                     srcImage,
   3545     VkImageLayout                               srcImageLayout,
   3546     VkImage                                     dstImage,
   3547     VkImageLayout                               dstImageLayout,
   3548     uint32_t                                    regionCount,
   3549     const VkImageResolve*                       pRegions);
   3550 
   3551 VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(
   3552     VkCommandBuffer                             commandBuffer,
   3553     VkEvent                                     event,
   3554     VkPipelineStageFlags                        stageMask);
   3555 
   3556 VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(
   3557     VkCommandBuffer                             commandBuffer,
   3558     VkEvent                                     event,
   3559     VkPipelineStageFlags                        stageMask);
   3560 
   3561 VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents(
   3562     VkCommandBuffer                             commandBuffer,
   3563     uint32_t                                    eventCount,
   3564     const VkEvent*                              pEvents,
   3565     VkPipelineStageFlags                        srcStageMask,
   3566     VkPipelineStageFlags                        dstStageMask,
   3567     uint32_t                                    memoryBarrierCount,
   3568     const VkMemoryBarrier*                      pMemoryBarriers,
   3569     uint32_t                                    bufferMemoryBarrierCount,
   3570     const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
   3571     uint32_t                                    imageMemoryBarrierCount,
   3572     const VkImageMemoryBarrier*                 pImageMemoryBarriers);
   3573 
   3574 VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier(
   3575     VkCommandBuffer                             commandBuffer,
   3576     VkPipelineStageFlags                        srcStageMask,
   3577     VkPipelineStageFlags                        dstStageMask,
   3578     VkDependencyFlags                           dependencyFlags,
   3579     uint32_t                                    memoryBarrierCount,
   3580     const VkMemoryBarrier*                      pMemoryBarriers,
   3581     uint32_t                                    bufferMemoryBarrierCount,
   3582     const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
   3583     uint32_t                                    imageMemoryBarrierCount,
   3584     const VkImageMemoryBarrier*                 pImageMemoryBarriers);
   3585 
   3586 VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(
   3587     VkCommandBuffer                             commandBuffer,
   3588     VkQueryPool                                 queryPool,
   3589     uint32_t                                    query,
   3590     VkQueryControlFlags                         flags);
   3591 
   3592 VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(
   3593     VkCommandBuffer                             commandBuffer,
   3594     VkQueryPool                                 queryPool,
   3595     uint32_t                                    query);
   3596 
   3597 VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(
   3598     VkCommandBuffer                             commandBuffer,
   3599     VkQueryPool                                 queryPool,
   3600     uint32_t                                    firstQuery,
   3601     uint32_t                                    queryCount);
   3602 
   3603 VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(
   3604     VkCommandBuffer                             commandBuffer,
   3605     VkPipelineStageFlagBits                     pipelineStage,
   3606     VkQueryPool                                 queryPool,
   3607     uint32_t                                    query);
   3608 
   3609 VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(
   3610     VkCommandBuffer                             commandBuffer,
   3611     VkQueryPool                                 queryPool,
   3612     uint32_t                                    firstQuery,
   3613     uint32_t                                    queryCount,
   3614     VkBuffer                                    dstBuffer,
   3615     VkDeviceSize                                dstOffset,
   3616     VkDeviceSize                                stride,
   3617     VkQueryResultFlags                          flags);
   3618 
   3619 VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(
   3620     VkCommandBuffer                             commandBuffer,
   3621     VkPipelineLayout                            layout,
   3622     VkShaderStageFlags                          stageFlags,
   3623     uint32_t                                    offset,
   3624     uint32_t                                    size,
   3625     const void*                                 pValues);
   3626 
   3627 VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(
   3628     VkCommandBuffer                             commandBuffer,
   3629     const VkRenderPassBeginInfo*                pRenderPassBegin,
   3630     VkSubpassContents                           contents);
   3631 
   3632 VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass(
   3633     VkCommandBuffer                             commandBuffer,
   3634     VkSubpassContents                           contents);
   3635 
   3636 VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass(
   3637     VkCommandBuffer                             commandBuffer);
   3638 
   3639 VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(
   3640     VkCommandBuffer                             commandBuffer,
   3641     uint32_t                                    commandBufferCount,
   3642     const VkCommandBuffer*                      pCommandBuffers);
   3643 #endif
   3644 
   3645 #define VK_VERSION_1_1 1
   3646 // Vulkan 1.1 version number
   3647 #define VK_API_VERSION_1_1 VK_MAKE_VERSION(1, 1, 0)// Patch version should always be set to 0
   3648 
   3649 
   3650 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion)
   3651 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplate)
   3652 
   3653 #define VK_MAX_DEVICE_GROUP_SIZE          32
   3654 #define VK_LUID_SIZE                      8
   3655 #define VK_QUEUE_FAMILY_EXTERNAL          (~0U-1)
   3656 
   3657 
   3658 typedef enum VkPointClippingBehavior {
   3659     VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0,
   3660     VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1,
   3661     VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES,
   3662     VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY,
   3663     VK_POINT_CLIPPING_BEHAVIOR_BEGIN_RANGE = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES,
   3664     VK_POINT_CLIPPING_BEHAVIOR_END_RANGE = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY,
   3665     VK_POINT_CLIPPING_BEHAVIOR_RANGE_SIZE = (VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY - VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES + 1),
   3666     VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF
   3667 } VkPointClippingBehavior;
   3668 
   3669 typedef enum VkTessellationDomainOrigin {
   3670     VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0,
   3671     VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1,
   3672     VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT,
   3673     VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT,
   3674     VK_TESSELLATION_DOMAIN_ORIGIN_BEGIN_RANGE = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT,
   3675     VK_TESSELLATION_DOMAIN_ORIGIN_END_RANGE = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT,
   3676     VK_TESSELLATION_DOMAIN_ORIGIN_RANGE_SIZE = (VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT - VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT + 1),
   3677     VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 0x7FFFFFFF
   3678 } VkTessellationDomainOrigin;
   3679 
   3680 typedef enum VkSamplerYcbcrModelConversion {
   3681     VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0,
   3682     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1,
   3683     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2,
   3684     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3,
   3685     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4,
   3686     VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY,
   3687     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY,
   3688     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709,
   3689     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601,
   3690     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020,
   3691     VK_SAMPLER_YCBCR_MODEL_CONVERSION_BEGIN_RANGE = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY,
   3692     VK_SAMPLER_YCBCR_MODEL_CONVERSION_END_RANGE = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020,
   3693     VK_SAMPLER_YCBCR_MODEL_CONVERSION_RANGE_SIZE = (VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 - VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY + 1),
   3694     VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 0x7FFFFFFF
   3695 } VkSamplerYcbcrModelConversion;
   3696 
   3697 typedef enum VkSamplerYcbcrRange {
   3698     VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0,
   3699     VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1,
   3700     VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_FULL,
   3701     VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW,
   3702     VK_SAMPLER_YCBCR_RANGE_BEGIN_RANGE = VK_SAMPLER_YCBCR_RANGE_ITU_FULL,
   3703     VK_SAMPLER_YCBCR_RANGE_END_RANGE = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW,
   3704     VK_SAMPLER_YCBCR_RANGE_RANGE_SIZE = (VK_SAMPLER_YCBCR_RANGE_ITU_NARROW - VK_SAMPLER_YCBCR_RANGE_ITU_FULL + 1),
   3705     VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 0x7FFFFFFF
   3706 } VkSamplerYcbcrRange;
   3707 
   3708 typedef enum VkChromaLocation {
   3709     VK_CHROMA_LOCATION_COSITED_EVEN = 0,
   3710     VK_CHROMA_LOCATION_MIDPOINT = 1,
   3711     VK_CHROMA_LOCATION_COSITED_EVEN_KHR = VK_CHROMA_LOCATION_COSITED_EVEN,
   3712     VK_CHROMA_LOCATION_MIDPOINT_KHR = VK_CHROMA_LOCATION_MIDPOINT,
   3713     VK_CHROMA_LOCATION_BEGIN_RANGE = VK_CHROMA_LOCATION_COSITED_EVEN,
   3714     VK_CHROMA_LOCATION_END_RANGE = VK_CHROMA_LOCATION_MIDPOINT,
   3715     VK_CHROMA_LOCATION_RANGE_SIZE = (VK_CHROMA_LOCATION_MIDPOINT - VK_CHROMA_LOCATION_COSITED_EVEN + 1),
   3716     VK_CHROMA_LOCATION_MAX_ENUM = 0x7FFFFFFF
   3717 } VkChromaLocation;
   3718 
   3719 typedef enum VkDescriptorUpdateTemplateType {
   3720     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0,
   3721     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1,
   3722     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET,
   3723     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_BEGIN_RANGE = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET,
   3724     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_END_RANGE = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET,
   3725     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_RANGE_SIZE = (VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET + 1),
   3726     VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 0x7FFFFFFF
   3727 } VkDescriptorUpdateTemplateType;
   3728 
   3729 
   3730 typedef enum VkSubgroupFeatureFlagBits {
   3731     VK_SUBGROUP_FEATURE_BASIC_BIT = 0x00000001,
   3732     VK_SUBGROUP_FEATURE_VOTE_BIT = 0x00000002,
   3733     VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 0x00000004,
   3734     VK_SUBGROUP_FEATURE_BALLOT_BIT = 0x00000008,
   3735     VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 0x00000010,
   3736     VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 0x00000020,
   3737     VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 0x00000040,
   3738     VK_SUBGROUP_FEATURE_QUAD_BIT = 0x00000080,
   3739     VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   3740 } VkSubgroupFeatureFlagBits;
   3741 typedef VkFlags VkSubgroupFeatureFlags;
   3742 
   3743 typedef enum VkPeerMemoryFeatureFlagBits {
   3744     VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 0x00000001,
   3745     VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 0x00000002,
   3746     VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 0x00000004,
   3747     VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 0x00000008,
   3748     VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,
   3749     VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,
   3750     VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT,
   3751     VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT,
   3752     VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   3753 } VkPeerMemoryFeatureFlagBits;
   3754 typedef VkFlags VkPeerMemoryFeatureFlags;
   3755 
   3756 typedef enum VkMemoryAllocateFlagBits {
   3757     VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001,
   3758     VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,
   3759     VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   3760 } VkMemoryAllocateFlagBits;
   3761 typedef VkFlags VkMemoryAllocateFlags;
   3762 typedef VkFlags VkCommandPoolTrimFlags;
   3763 typedef VkFlags VkDescriptorUpdateTemplateCreateFlags;
   3764 
   3765 typedef enum VkExternalMemoryHandleTypeFlagBits {
   3766     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
   3767     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
   3768     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
   3769     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 0x00000008,
   3770     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 0x00000010,
   3771     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 0x00000020,
   3772     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 0x00000040,
   3773     VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0x00000200,
   3774     VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 0x00000400,
   3775     VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080,
   3776     VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100,
   3777     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,
   3778     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
   3779     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
   3780     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,
   3781     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,
   3782     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,
   3783     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT,
   3784     VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   3785 } VkExternalMemoryHandleTypeFlagBits;
   3786 typedef VkFlags VkExternalMemoryHandleTypeFlags;
   3787 
   3788 typedef enum VkExternalMemoryFeatureFlagBits {
   3789     VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 0x00000001,
   3790     VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 0x00000002,
   3791     VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 0x00000004,
   3792     VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,
   3793     VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,
   3794     VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT,
   3795     VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   3796 } VkExternalMemoryFeatureFlagBits;
   3797 typedef VkFlags VkExternalMemoryFeatureFlags;
   3798 
   3799 typedef enum VkExternalFenceHandleTypeFlagBits {
   3800     VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
   3801     VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
   3802     VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
   3803     VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000008,
   3804     VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,
   3805     VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
   3806     VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
   3807     VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT,
   3808     VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   3809 } VkExternalFenceHandleTypeFlagBits;
   3810 typedef VkFlags VkExternalFenceHandleTypeFlags;
   3811 
   3812 typedef enum VkExternalFenceFeatureFlagBits {
   3813     VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 0x00000001,
   3814     VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 0x00000002,
   3815     VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,
   3816     VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT,
   3817     VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   3818 } VkExternalFenceFeatureFlagBits;
   3819 typedef VkFlags VkExternalFenceFeatureFlags;
   3820 
   3821 typedef enum VkFenceImportFlagBits {
   3822     VK_FENCE_IMPORT_TEMPORARY_BIT = 0x00000001,
   3823     VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = VK_FENCE_IMPORT_TEMPORARY_BIT,
   3824     VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   3825 } VkFenceImportFlagBits;
   3826 typedef VkFlags VkFenceImportFlags;
   3827 
   3828 typedef enum VkSemaphoreImportFlagBits {
   3829     VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 0x00000001,
   3830     VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT,
   3831     VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   3832 } VkSemaphoreImportFlagBits;
   3833 typedef VkFlags VkSemaphoreImportFlags;
   3834 
   3835 typedef enum VkExternalSemaphoreHandleTypeFlagBits {
   3836     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
   3837     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
   3838     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
   3839     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 0x00000008,
   3840     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000010,
   3841     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,
   3842     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
   3843     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
   3844     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
   3845     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT,
   3846     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   3847 } VkExternalSemaphoreHandleTypeFlagBits;
   3848 typedef VkFlags VkExternalSemaphoreHandleTypeFlags;
   3849 
   3850 typedef enum VkExternalSemaphoreFeatureFlagBits {
   3851     VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 0x00000001,
   3852     VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 0x00000002,
   3853     VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,
   3854     VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT,
   3855     VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   3856 } VkExternalSemaphoreFeatureFlagBits;
   3857 typedef VkFlags VkExternalSemaphoreFeatureFlags;
   3858 
   3859 typedef struct VkPhysicalDeviceSubgroupProperties {
   3860     VkStructureType           sType;
   3861     void*                     pNext;
   3862     uint32_t                  subgroupSize;
   3863     VkShaderStageFlags        supportedStages;
   3864     VkSubgroupFeatureFlags    supportedOperations;
   3865     VkBool32                  quadOperationsInAllStages;
   3866 } VkPhysicalDeviceSubgroupProperties;
   3867 
   3868 typedef struct VkBindBufferMemoryInfo {
   3869     VkStructureType    sType;
   3870     const void*        pNext;
   3871     VkBuffer           buffer;
   3872     VkDeviceMemory     memory;
   3873     VkDeviceSize       memoryOffset;
   3874 } VkBindBufferMemoryInfo;
   3875 
   3876 typedef struct VkBindImageMemoryInfo {
   3877     VkStructureType    sType;
   3878     const void*        pNext;
   3879     VkImage            image;
   3880     VkDeviceMemory     memory;
   3881     VkDeviceSize       memoryOffset;
   3882 } VkBindImageMemoryInfo;
   3883 
   3884 typedef struct VkPhysicalDevice16BitStorageFeatures {
   3885     VkStructureType    sType;
   3886     void*              pNext;
   3887     VkBool32           storageBuffer16BitAccess;
   3888     VkBool32           uniformAndStorageBuffer16BitAccess;
   3889     VkBool32           storagePushConstant16;
   3890     VkBool32           storageInputOutput16;
   3891 } VkPhysicalDevice16BitStorageFeatures;
   3892 
   3893 typedef struct VkMemoryDedicatedRequirements {
   3894     VkStructureType    sType;
   3895     void*              pNext;
   3896     VkBool32           prefersDedicatedAllocation;
   3897     VkBool32           requiresDedicatedAllocation;
   3898 } VkMemoryDedicatedRequirements;
   3899 
   3900 typedef struct VkMemoryDedicatedAllocateInfo {
   3901     VkStructureType    sType;
   3902     const void*        pNext;
   3903     VkImage            image;
   3904     VkBuffer           buffer;
   3905 } VkMemoryDedicatedAllocateInfo;
   3906 
   3907 typedef struct VkMemoryAllocateFlagsInfo {
   3908     VkStructureType          sType;
   3909     const void*              pNext;
   3910     VkMemoryAllocateFlags    flags;
   3911     uint32_t                 deviceMask;
   3912 } VkMemoryAllocateFlagsInfo;
   3913 
   3914 typedef struct VkDeviceGroupRenderPassBeginInfo {
   3915     VkStructureType    sType;
   3916     const void*        pNext;
   3917     uint32_t           deviceMask;
   3918     uint32_t           deviceRenderAreaCount;
   3919     const VkRect2D*    pDeviceRenderAreas;
   3920 } VkDeviceGroupRenderPassBeginInfo;
   3921 
   3922 typedef struct VkDeviceGroupCommandBufferBeginInfo {
   3923     VkStructureType    sType;
   3924     const void*        pNext;
   3925     uint32_t           deviceMask;
   3926 } VkDeviceGroupCommandBufferBeginInfo;
   3927 
   3928 typedef struct VkDeviceGroupSubmitInfo {
   3929     VkStructureType    sType;
   3930     const void*        pNext;
   3931     uint32_t           waitSemaphoreCount;
   3932     const uint32_t*    pWaitSemaphoreDeviceIndices;
   3933     uint32_t           commandBufferCount;
   3934     const uint32_t*    pCommandBufferDeviceMasks;
   3935     uint32_t           signalSemaphoreCount;
   3936     const uint32_t*    pSignalSemaphoreDeviceIndices;
   3937 } VkDeviceGroupSubmitInfo;
   3938 
   3939 typedef struct VkDeviceGroupBindSparseInfo {
   3940     VkStructureType    sType;
   3941     const void*        pNext;
   3942     uint32_t           resourceDeviceIndex;
   3943     uint32_t           memoryDeviceIndex;
   3944 } VkDeviceGroupBindSparseInfo;
   3945 
   3946 typedef struct VkBindBufferMemoryDeviceGroupInfo {
   3947     VkStructureType    sType;
   3948     const void*        pNext;
   3949     uint32_t           deviceIndexCount;
   3950     const uint32_t*    pDeviceIndices;
   3951 } VkBindBufferMemoryDeviceGroupInfo;
   3952 
   3953 typedef struct VkBindImageMemoryDeviceGroupInfo {
   3954     VkStructureType    sType;
   3955     const void*        pNext;
   3956     uint32_t           deviceIndexCount;
   3957     const uint32_t*    pDeviceIndices;
   3958     uint32_t           splitInstanceBindRegionCount;
   3959     const VkRect2D*    pSplitInstanceBindRegions;
   3960 } VkBindImageMemoryDeviceGroupInfo;
   3961 
   3962 typedef struct VkPhysicalDeviceGroupProperties {
   3963     VkStructureType     sType;
   3964     void*               pNext;
   3965     uint32_t            physicalDeviceCount;
   3966     VkPhysicalDevice    physicalDevices[VK_MAX_DEVICE_GROUP_SIZE];
   3967     VkBool32            subsetAllocation;
   3968 } VkPhysicalDeviceGroupProperties;
   3969 
   3970 typedef struct VkDeviceGroupDeviceCreateInfo {
   3971     VkStructureType            sType;
   3972     const void*                pNext;
   3973     uint32_t                   physicalDeviceCount;
   3974     const VkPhysicalDevice*    pPhysicalDevices;
   3975 } VkDeviceGroupDeviceCreateInfo;
   3976 
   3977 typedef struct VkBufferMemoryRequirementsInfo2 {
   3978     VkStructureType    sType;
   3979     const void*        pNext;
   3980     VkBuffer           buffer;
   3981 } VkBufferMemoryRequirementsInfo2;
   3982 
   3983 typedef struct VkImageMemoryRequirementsInfo2 {
   3984     VkStructureType    sType;
   3985     const void*        pNext;
   3986     VkImage            image;
   3987 } VkImageMemoryRequirementsInfo2;
   3988 
   3989 typedef struct VkImageSparseMemoryRequirementsInfo2 {
   3990     VkStructureType    sType;
   3991     const void*        pNext;
   3992     VkImage            image;
   3993 } VkImageSparseMemoryRequirementsInfo2;
   3994 
   3995 typedef struct VkMemoryRequirements2 {
   3996     VkStructureType         sType;
   3997     void*                   pNext;
   3998     VkMemoryRequirements    memoryRequirements;
   3999 } VkMemoryRequirements2;
   4000 
   4001 typedef struct VkSparseImageMemoryRequirements2 {
   4002     VkStructureType                    sType;
   4003     void*                              pNext;
   4004     VkSparseImageMemoryRequirements    memoryRequirements;
   4005 } VkSparseImageMemoryRequirements2;
   4006 
   4007 typedef struct VkPhysicalDeviceFeatures2 {
   4008     VkStructureType             sType;
   4009     void*                       pNext;
   4010     VkPhysicalDeviceFeatures    features;
   4011 } VkPhysicalDeviceFeatures2;
   4012 
   4013 typedef struct VkPhysicalDeviceProperties2 {
   4014     VkStructureType               sType;
   4015     void*                         pNext;
   4016     VkPhysicalDeviceProperties    properties;
   4017 } VkPhysicalDeviceProperties2;
   4018 
   4019 typedef struct VkFormatProperties2 {
   4020     VkStructureType       sType;
   4021     void*                 pNext;
   4022     VkFormatProperties    formatProperties;
   4023 } VkFormatProperties2;
   4024 
   4025 typedef struct VkImageFormatProperties2 {
   4026     VkStructureType            sType;
   4027     void*                      pNext;
   4028     VkImageFormatProperties    imageFormatProperties;
   4029 } VkImageFormatProperties2;
   4030 
   4031 typedef struct VkPhysicalDeviceImageFormatInfo2 {
   4032     VkStructureType       sType;
   4033     const void*           pNext;
   4034     VkFormat              format;
   4035     VkImageType           type;
   4036     VkImageTiling         tiling;
   4037     VkImageUsageFlags     usage;
   4038     VkImageCreateFlags    flags;
   4039 } VkPhysicalDeviceImageFormatInfo2;
   4040 
   4041 typedef struct VkQueueFamilyProperties2 {
   4042     VkStructureType            sType;
   4043     void*                      pNext;
   4044     VkQueueFamilyProperties    queueFamilyProperties;
   4045 } VkQueueFamilyProperties2;
   4046 
   4047 typedef struct VkPhysicalDeviceMemoryProperties2 {
   4048     VkStructureType                     sType;
   4049     void*                               pNext;
   4050     VkPhysicalDeviceMemoryProperties    memoryProperties;
   4051 } VkPhysicalDeviceMemoryProperties2;
   4052 
   4053 typedef struct VkSparseImageFormatProperties2 {
   4054     VkStructureType                  sType;
   4055     void*                            pNext;
   4056     VkSparseImageFormatProperties    properties;
   4057 } VkSparseImageFormatProperties2;
   4058 
   4059 typedef struct VkPhysicalDeviceSparseImageFormatInfo2 {
   4060     VkStructureType          sType;
   4061     const void*              pNext;
   4062     VkFormat                 format;
   4063     VkImageType              type;
   4064     VkSampleCountFlagBits    samples;
   4065     VkImageUsageFlags        usage;
   4066     VkImageTiling            tiling;
   4067 } VkPhysicalDeviceSparseImageFormatInfo2;
   4068 
   4069 typedef struct VkPhysicalDevicePointClippingProperties {
   4070     VkStructureType            sType;
   4071     void*                      pNext;
   4072     VkPointClippingBehavior    pointClippingBehavior;
   4073 } VkPhysicalDevicePointClippingProperties;
   4074 
   4075 typedef struct VkInputAttachmentAspectReference {
   4076     uint32_t              subpass;
   4077     uint32_t              inputAttachmentIndex;
   4078     VkImageAspectFlags    aspectMask;
   4079 } VkInputAttachmentAspectReference;
   4080 
   4081 typedef struct VkRenderPassInputAttachmentAspectCreateInfo {
   4082     VkStructureType                            sType;
   4083     const void*                                pNext;
   4084     uint32_t                                   aspectReferenceCount;
   4085     const VkInputAttachmentAspectReference*    pAspectReferences;
   4086 } VkRenderPassInputAttachmentAspectCreateInfo;
   4087 
   4088 typedef struct VkImageViewUsageCreateInfo {
   4089     VkStructureType      sType;
   4090     const void*          pNext;
   4091     VkImageUsageFlags    usage;
   4092 } VkImageViewUsageCreateInfo;
   4093 
   4094 typedef struct VkPipelineTessellationDomainOriginStateCreateInfo {
   4095     VkStructureType               sType;
   4096     const void*                   pNext;
   4097     VkTessellationDomainOrigin    domainOrigin;
   4098 } VkPipelineTessellationDomainOriginStateCreateInfo;
   4099 
   4100 typedef struct VkRenderPassMultiviewCreateInfo {
   4101     VkStructureType    sType;
   4102     const void*        pNext;
   4103     uint32_t           subpassCount;
   4104     const uint32_t*    pViewMasks;
   4105     uint32_t           dependencyCount;
   4106     const int32_t*     pViewOffsets;
   4107     uint32_t           correlationMaskCount;
   4108     const uint32_t*    pCorrelationMasks;
   4109 } VkRenderPassMultiviewCreateInfo;
   4110 
   4111 typedef struct VkPhysicalDeviceMultiviewFeatures {
   4112     VkStructureType    sType;
   4113     void*              pNext;
   4114     VkBool32           multiview;
   4115     VkBool32           multiviewGeometryShader;
   4116     VkBool32           multiviewTessellationShader;
   4117 } VkPhysicalDeviceMultiviewFeatures;
   4118 
   4119 typedef struct VkPhysicalDeviceMultiviewProperties {
   4120     VkStructureType    sType;
   4121     void*              pNext;
   4122     uint32_t           maxMultiviewViewCount;
   4123     uint32_t           maxMultiviewInstanceIndex;
   4124 } VkPhysicalDeviceMultiviewProperties;
   4125 
   4126 typedef struct VkPhysicalDeviceVariablePointerFeatures {
   4127     VkStructureType    sType;
   4128     void*              pNext;
   4129     VkBool32           variablePointersStorageBuffer;
   4130     VkBool32           variablePointers;
   4131 } VkPhysicalDeviceVariablePointerFeatures;
   4132 
   4133 typedef struct VkPhysicalDeviceProtectedMemoryFeatures {
   4134     VkStructureType    sType;
   4135     void*              pNext;
   4136     VkBool32           protectedMemory;
   4137 } VkPhysicalDeviceProtectedMemoryFeatures;
   4138 
   4139 typedef struct VkPhysicalDeviceProtectedMemoryProperties {
   4140     VkStructureType    sType;
   4141     void*              pNext;
   4142     VkBool32           protectedNoFault;
   4143 } VkPhysicalDeviceProtectedMemoryProperties;
   4144 
   4145 typedef struct VkDeviceQueueInfo2 {
   4146     VkStructureType             sType;
   4147     const void*                 pNext;
   4148     VkDeviceQueueCreateFlags    flags;
   4149     uint32_t                    queueFamilyIndex;
   4150     uint32_t                    queueIndex;
   4151 } VkDeviceQueueInfo2;
   4152 
   4153 typedef struct VkProtectedSubmitInfo {
   4154     VkStructureType    sType;
   4155     const void*        pNext;
   4156     VkBool32           protectedSubmit;
   4157 } VkProtectedSubmitInfo;
   4158 
   4159 typedef struct VkSamplerYcbcrConversionCreateInfo {
   4160     VkStructureType                  sType;
   4161     const void*                      pNext;
   4162     VkFormat                         format;
   4163     VkSamplerYcbcrModelConversion    ycbcrModel;
   4164     VkSamplerYcbcrRange              ycbcrRange;
   4165     VkComponentMapping               components;
   4166     VkChromaLocation                 xChromaOffset;
   4167     VkChromaLocation                 yChromaOffset;
   4168     VkFilter                         chromaFilter;
   4169     VkBool32                         forceExplicitReconstruction;
   4170 } VkSamplerYcbcrConversionCreateInfo;
   4171 
   4172 typedef struct VkSamplerYcbcrConversionInfo {
   4173     VkStructureType             sType;
   4174     const void*                 pNext;
   4175     VkSamplerYcbcrConversion    conversion;
   4176 } VkSamplerYcbcrConversionInfo;
   4177 
   4178 typedef struct VkBindImagePlaneMemoryInfo {
   4179     VkStructureType          sType;
   4180     const void*              pNext;
   4181     VkImageAspectFlagBits    planeAspect;
   4182 } VkBindImagePlaneMemoryInfo;
   4183 
   4184 typedef struct VkImagePlaneMemoryRequirementsInfo {
   4185     VkStructureType          sType;
   4186     const void*              pNext;
   4187     VkImageAspectFlagBits    planeAspect;
   4188 } VkImagePlaneMemoryRequirementsInfo;
   4189 
   4190 typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures {
   4191     VkStructureType    sType;
   4192     void*              pNext;
   4193     VkBool32           samplerYcbcrConversion;
   4194 } VkPhysicalDeviceSamplerYcbcrConversionFeatures;
   4195 
   4196 typedef struct VkSamplerYcbcrConversionImageFormatProperties {
   4197     VkStructureType    sType;
   4198     void*              pNext;
   4199     uint32_t           combinedImageSamplerDescriptorCount;
   4200 } VkSamplerYcbcrConversionImageFormatProperties;
   4201 
   4202 typedef struct VkDescriptorUpdateTemplateEntry {
   4203     uint32_t            dstBinding;
   4204     uint32_t            dstArrayElement;
   4205     uint32_t            descriptorCount;
   4206     VkDescriptorType    descriptorType;
   4207     size_t              offset;
   4208     size_t              stride;
   4209 } VkDescriptorUpdateTemplateEntry;
   4210 
   4211 typedef struct VkDescriptorUpdateTemplateCreateInfo {
   4212     VkStructureType                           sType;
   4213     void*                                     pNext;
   4214     VkDescriptorUpdateTemplateCreateFlags     flags;
   4215     uint32_t                                  descriptorUpdateEntryCount;
   4216     const VkDescriptorUpdateTemplateEntry*    pDescriptorUpdateEntries;
   4217     VkDescriptorUpdateTemplateType            templateType;
   4218     VkDescriptorSetLayout                     descriptorSetLayout;
   4219     VkPipelineBindPoint                       pipelineBindPoint;
   4220     VkPipelineLayout                          pipelineLayout;
   4221     uint32_t                                  set;
   4222 } VkDescriptorUpdateTemplateCreateInfo;
   4223 
   4224 typedef struct VkExternalMemoryProperties {
   4225     VkExternalMemoryFeatureFlags       externalMemoryFeatures;
   4226     VkExternalMemoryHandleTypeFlags    exportFromImportedHandleTypes;
   4227     VkExternalMemoryHandleTypeFlags    compatibleHandleTypes;
   4228 } VkExternalMemoryProperties;
   4229 
   4230 typedef struct VkPhysicalDeviceExternalImageFormatInfo {
   4231     VkStructureType                       sType;
   4232     const void*                           pNext;
   4233     VkExternalMemoryHandleTypeFlagBits    handleType;
   4234 } VkPhysicalDeviceExternalImageFormatInfo;
   4235 
   4236 typedef struct VkExternalImageFormatProperties {
   4237     VkStructureType               sType;
   4238     void*                         pNext;
   4239     VkExternalMemoryProperties    externalMemoryProperties;
   4240 } VkExternalImageFormatProperties;
   4241 
   4242 typedef struct VkPhysicalDeviceExternalBufferInfo {
   4243     VkStructureType                       sType;
   4244     const void*                           pNext;
   4245     VkBufferCreateFlags                   flags;
   4246     VkBufferUsageFlags                    usage;
   4247     VkExternalMemoryHandleTypeFlagBits    handleType;
   4248 } VkPhysicalDeviceExternalBufferInfo;
   4249 
   4250 typedef struct VkExternalBufferProperties {
   4251     VkStructureType               sType;
   4252     void*                         pNext;
   4253     VkExternalMemoryProperties    externalMemoryProperties;
   4254 } VkExternalBufferProperties;
   4255 
   4256 typedef struct VkPhysicalDeviceIDProperties {
   4257     VkStructureType    sType;
   4258     void*              pNext;
   4259     uint8_t            deviceUUID[VK_UUID_SIZE];
   4260     uint8_t            driverUUID[VK_UUID_SIZE];
   4261     uint8_t            deviceLUID[VK_LUID_SIZE];
   4262     uint32_t           deviceNodeMask;
   4263     VkBool32           deviceLUIDValid;
   4264 } VkPhysicalDeviceIDProperties;
   4265 
   4266 typedef struct VkExternalMemoryImageCreateInfo {
   4267     VkStructureType                    sType;
   4268     const void*                        pNext;
   4269     VkExternalMemoryHandleTypeFlags    handleTypes;
   4270 } VkExternalMemoryImageCreateInfo;
   4271 
   4272 typedef struct VkExternalMemoryBufferCreateInfo {
   4273     VkStructureType                    sType;
   4274     const void*                        pNext;
   4275     VkExternalMemoryHandleTypeFlags    handleTypes;
   4276 } VkExternalMemoryBufferCreateInfo;
   4277 
   4278 typedef struct VkExportMemoryAllocateInfo {
   4279     VkStructureType                    sType;
   4280     const void*                        pNext;
   4281     VkExternalMemoryHandleTypeFlags    handleTypes;
   4282 } VkExportMemoryAllocateInfo;
   4283 
   4284 typedef struct VkPhysicalDeviceExternalFenceInfo {
   4285     VkStructureType                      sType;
   4286     const void*                          pNext;
   4287     VkExternalFenceHandleTypeFlagBits    handleType;
   4288 } VkPhysicalDeviceExternalFenceInfo;
   4289 
   4290 typedef struct VkExternalFenceProperties {
   4291     VkStructureType                   sType;
   4292     void*                             pNext;
   4293     VkExternalFenceHandleTypeFlags    exportFromImportedHandleTypes;
   4294     VkExternalFenceHandleTypeFlags    compatibleHandleTypes;
   4295     VkExternalFenceFeatureFlags       externalFenceFeatures;
   4296 } VkExternalFenceProperties;
   4297 
   4298 typedef struct VkExportFenceCreateInfo {
   4299     VkStructureType                   sType;
   4300     const void*                       pNext;
   4301     VkExternalFenceHandleTypeFlags    handleTypes;
   4302 } VkExportFenceCreateInfo;
   4303 
   4304 typedef struct VkExportSemaphoreCreateInfo {
   4305     VkStructureType                       sType;
   4306     const void*                           pNext;
   4307     VkExternalSemaphoreHandleTypeFlags    handleTypes;
   4308 } VkExportSemaphoreCreateInfo;
   4309 
   4310 typedef struct VkPhysicalDeviceExternalSemaphoreInfo {
   4311     VkStructureType                          sType;
   4312     const void*                              pNext;
   4313     VkExternalSemaphoreHandleTypeFlagBits    handleType;
   4314 } VkPhysicalDeviceExternalSemaphoreInfo;
   4315 
   4316 typedef struct VkExternalSemaphoreProperties {
   4317     VkStructureType                       sType;
   4318     void*                                 pNext;
   4319     VkExternalSemaphoreHandleTypeFlags    exportFromImportedHandleTypes;
   4320     VkExternalSemaphoreHandleTypeFlags    compatibleHandleTypes;
   4321     VkExternalSemaphoreFeatureFlags       externalSemaphoreFeatures;
   4322 } VkExternalSemaphoreProperties;
   4323 
   4324 typedef struct VkPhysicalDeviceMaintenance3Properties {
   4325     VkStructureType    sType;
   4326     void*              pNext;
   4327     uint32_t           maxPerSetDescriptors;
   4328     VkDeviceSize       maxMemoryAllocationSize;
   4329 } VkPhysicalDeviceMaintenance3Properties;
   4330 
   4331 typedef struct VkDescriptorSetLayoutSupport {
   4332     VkStructureType    sType;
   4333     void*              pNext;
   4334     VkBool32           supported;
   4335 } VkDescriptorSetLayoutSupport;
   4336 
   4337 typedef struct VkPhysicalDeviceShaderDrawParameterFeatures {
   4338     VkStructureType    sType;
   4339     void*              pNext;
   4340     VkBool32           shaderDrawParameters;
   4341 } VkPhysicalDeviceShaderDrawParameterFeatures;
   4342 
   4343 
   4344 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceVersion)(uint32_t* pApiVersion);
   4345 typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
   4346 typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
   4347 typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeatures)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
   4348 typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMask)(VkCommandBuffer commandBuffer, uint32_t deviceMask);
   4349 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);
   4350 typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroups)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
   4351 typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
   4352 typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
   4353 typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
   4354 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
   4355 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
   4356 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
   4357 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
   4358 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
   4359 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
   4360 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
   4361 typedef void (VKAPI_PTR *PFN_vkTrimCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);
   4362 typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue2)(VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue);
   4363 typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversion)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
   4364 typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversion)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
   4365 typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplate)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
   4366 typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplate)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
   4367 typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplate)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
   4368 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
   4369 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFenceProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
   4370 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
   4371 typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupport)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
   4372 
   4373 #ifndef VK_NO_PROTOTYPES
   4374 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceVersion(
   4375     uint32_t*                                   pApiVersion);
   4376 
   4377 VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2(
   4378     VkDevice                                    device,
   4379     uint32_t                                    bindInfoCount,
   4380     const VkBindBufferMemoryInfo*               pBindInfos);
   4381 
   4382 VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2(
   4383     VkDevice                                    device,
   4384     uint32_t                                    bindInfoCount,
   4385     const VkBindImageMemoryInfo*                pBindInfos);
   4386 
   4387 VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeatures(
   4388     VkDevice                                    device,
   4389     uint32_t                                    heapIndex,
   4390     uint32_t                                    localDeviceIndex,
   4391     uint32_t                                    remoteDeviceIndex,
   4392     VkPeerMemoryFeatureFlags*                   pPeerMemoryFeatures);
   4393 
   4394 VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMask(
   4395     VkCommandBuffer                             commandBuffer,
   4396     uint32_t                                    deviceMask);
   4397 
   4398 VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBase(
   4399     VkCommandBuffer                             commandBuffer,
   4400     uint32_t                                    baseGroupX,
   4401     uint32_t                                    baseGroupY,
   4402     uint32_t                                    baseGroupZ,
   4403     uint32_t                                    groupCountX,
   4404     uint32_t                                    groupCountY,
   4405     uint32_t                                    groupCountZ);
   4406 
   4407 VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroups(
   4408     VkInstance                                  instance,
   4409     uint32_t*                                   pPhysicalDeviceGroupCount,
   4410     VkPhysicalDeviceGroupProperties*            pPhysicalDeviceGroupProperties);
   4411 
   4412 VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2(
   4413     VkDevice                                    device,
   4414     const VkImageMemoryRequirementsInfo2*       pInfo,
   4415     VkMemoryRequirements2*                      pMemoryRequirements);
   4416 
   4417 VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2(
   4418     VkDevice                                    device,
   4419     const VkBufferMemoryRequirementsInfo2*      pInfo,
   4420     VkMemoryRequirements2*                      pMemoryRequirements);
   4421 
   4422 VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2(
   4423     VkDevice                                    device,
   4424     const VkImageSparseMemoryRequirementsInfo2* pInfo,
   4425     uint32_t*                                   pSparseMemoryRequirementCount,
   4426     VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements);
   4427 
   4428 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2(
   4429     VkPhysicalDevice                            physicalDevice,
   4430     VkPhysicalDeviceFeatures2*                  pFeatures);
   4431 
   4432 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2(
   4433     VkPhysicalDevice                            physicalDevice,
   4434     VkPhysicalDeviceProperties2*                pProperties);
   4435 
   4436 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2(
   4437     VkPhysicalDevice                            physicalDevice,
   4438     VkFormat                                    format,
   4439     VkFormatProperties2*                        pFormatProperties);
   4440 
   4441 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2(
   4442     VkPhysicalDevice                            physicalDevice,
   4443     const VkPhysicalDeviceImageFormatInfo2*     pImageFormatInfo,
   4444     VkImageFormatProperties2*                   pImageFormatProperties);
   4445 
   4446 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2(
   4447     VkPhysicalDevice                            physicalDevice,
   4448     uint32_t*                                   pQueueFamilyPropertyCount,
   4449     VkQueueFamilyProperties2*                   pQueueFamilyProperties);
   4450 
   4451 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2(
   4452     VkPhysicalDevice                            physicalDevice,
   4453     VkPhysicalDeviceMemoryProperties2*          pMemoryProperties);
   4454 
   4455 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2(
   4456     VkPhysicalDevice                            physicalDevice,
   4457     const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
   4458     uint32_t*                                   pPropertyCount,
   4459     VkSparseImageFormatProperties2*             pProperties);
   4460 
   4461 VKAPI_ATTR void VKAPI_CALL vkTrimCommandPool(
   4462     VkDevice                                    device,
   4463     VkCommandPool                               commandPool,
   4464     VkCommandPoolTrimFlags                      flags);
   4465 
   4466 VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue2(
   4467     VkDevice                                    device,
   4468     const VkDeviceQueueInfo2*                   pQueueInfo,
   4469     VkQueue*                                    pQueue);
   4470 
   4471 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversion(
   4472     VkDevice                                    device,
   4473     const VkSamplerYcbcrConversionCreateInfo*   pCreateInfo,
   4474     const VkAllocationCallbacks*                pAllocator,
   4475     VkSamplerYcbcrConversion*                   pYcbcrConversion);
   4476 
   4477 VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversion(
   4478     VkDevice                                    device,
   4479     VkSamplerYcbcrConversion                    ycbcrConversion,
   4480     const VkAllocationCallbacks*                pAllocator);
   4481 
   4482 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplate(
   4483     VkDevice                                    device,
   4484     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
   4485     const VkAllocationCallbacks*                pAllocator,
   4486     VkDescriptorUpdateTemplate*                 pDescriptorUpdateTemplate);
   4487 
   4488 VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplate(
   4489     VkDevice                                    device,
   4490     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
   4491     const VkAllocationCallbacks*                pAllocator);
   4492 
   4493 VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplate(
   4494     VkDevice                                    device,
   4495     VkDescriptorSet                             descriptorSet,
   4496     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
   4497     const void*                                 pData);
   4498 
   4499 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferProperties(
   4500     VkPhysicalDevice                            physicalDevice,
   4501     const VkPhysicalDeviceExternalBufferInfo*   pExternalBufferInfo,
   4502     VkExternalBufferProperties*                 pExternalBufferProperties);
   4503 
   4504 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFenceProperties(
   4505     VkPhysicalDevice                            physicalDevice,
   4506     const VkPhysicalDeviceExternalFenceInfo*    pExternalFenceInfo,
   4507     VkExternalFenceProperties*                  pExternalFenceProperties);
   4508 
   4509 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphoreProperties(
   4510     VkPhysicalDevice                            physicalDevice,
   4511     const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
   4512     VkExternalSemaphoreProperties*              pExternalSemaphoreProperties);
   4513 
   4514 VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupport(
   4515     VkDevice                                    device,
   4516     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
   4517     VkDescriptorSetLayoutSupport*               pSupport);
   4518 #endif
   4519 
   4520 #define VK_KHR_surface 1
   4521 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
   4522 
   4523 #define VK_KHR_SURFACE_SPEC_VERSION       25
   4524 #define VK_KHR_SURFACE_EXTENSION_NAME     "VK_KHR_surface"
   4525 #define VK_COLORSPACE_SRGB_NONLINEAR_KHR  VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
   4526 
   4527 
   4528 typedef enum VkColorSpaceKHR {
   4529     VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,
   4530     VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
   4531     VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
   4532     VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003,
   4533     VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
   4534     VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
   4535     VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
   4536     VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
   4537     VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
   4538     VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
   4539     VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
   4540     VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
   4541     VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
   4542     VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
   4543     VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014,
   4544     VK_COLOR_SPACE_BEGIN_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
   4545     VK_COLOR_SPACE_END_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
   4546     VK_COLOR_SPACE_RANGE_SIZE_KHR = (VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR + 1),
   4547     VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF
   4548 } VkColorSpaceKHR;
   4549 
   4550 typedef enum VkPresentModeKHR {
   4551     VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
   4552     VK_PRESENT_MODE_MAILBOX_KHR = 1,
   4553     VK_PRESENT_MODE_FIFO_KHR = 2,
   4554     VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,
   4555     VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,
   4556     VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,
   4557     VK_PRESENT_MODE_BEGIN_RANGE_KHR = VK_PRESENT_MODE_IMMEDIATE_KHR,
   4558     VK_PRESENT_MODE_END_RANGE_KHR = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
   4559     VK_PRESENT_MODE_RANGE_SIZE_KHR = (VK_PRESENT_MODE_FIFO_RELAXED_KHR - VK_PRESENT_MODE_IMMEDIATE_KHR + 1),
   4560     VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
   4561 } VkPresentModeKHR;
   4562 
   4563 
   4564 typedef enum VkSurfaceTransformFlagBitsKHR {
   4565     VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
   4566     VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
   4567     VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
   4568     VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
   4569     VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
   4570     VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
   4571     VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
   4572     VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
   4573     VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
   4574     VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
   4575 } VkSurfaceTransformFlagBitsKHR;
   4576 typedef VkFlags VkSurfaceTransformFlagsKHR;
   4577 
   4578 typedef enum VkCompositeAlphaFlagBitsKHR {
   4579     VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
   4580     VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
   4581     VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
   4582     VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
   4583     VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
   4584 } VkCompositeAlphaFlagBitsKHR;
   4585 typedef VkFlags VkCompositeAlphaFlagsKHR;
   4586 
   4587 typedef struct VkSurfaceCapabilitiesKHR {
   4588     uint32_t                         minImageCount;
   4589     uint32_t                         maxImageCount;
   4590     VkExtent2D                       currentExtent;
   4591     VkExtent2D                       minImageExtent;
   4592     VkExtent2D                       maxImageExtent;
   4593     uint32_t                         maxImageArrayLayers;
   4594     VkSurfaceTransformFlagsKHR       supportedTransforms;
   4595     VkSurfaceTransformFlagBitsKHR    currentTransform;
   4596     VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
   4597     VkImageUsageFlags                supportedUsageFlags;
   4598 } VkSurfaceCapabilitiesKHR;
   4599 
   4600 typedef struct VkSurfaceFormatKHR {
   4601     VkFormat           format;
   4602     VkColorSpaceKHR    colorSpace;
   4603 } VkSurfaceFormatKHR;
   4604 
   4605 
   4606 typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator);
   4607 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
   4608 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
   4609 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
   4610 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
   4611 
   4612 #ifndef VK_NO_PROTOTYPES
   4613 VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
   4614     VkInstance                                  instance,
   4615     VkSurfaceKHR                                surface,
   4616     const VkAllocationCallbacks*                pAllocator);
   4617 
   4618 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
   4619     VkPhysicalDevice                            physicalDevice,
   4620     uint32_t                                    queueFamilyIndex,
   4621     VkSurfaceKHR                                surface,
   4622     VkBool32*                                   pSupported);
   4623 
   4624 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
   4625     VkPhysicalDevice                            physicalDevice,
   4626     VkSurfaceKHR                                surface,
   4627     VkSurfaceCapabilitiesKHR*                   pSurfaceCapabilities);
   4628 
   4629 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR(
   4630     VkPhysicalDevice                            physicalDevice,
   4631     VkSurfaceKHR                                surface,
   4632     uint32_t*                                   pSurfaceFormatCount,
   4633     VkSurfaceFormatKHR*                         pSurfaceFormats);
   4634 
   4635 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
   4636     VkPhysicalDevice                            physicalDevice,
   4637     VkSurfaceKHR                                surface,
   4638     uint32_t*                                   pPresentModeCount,
   4639     VkPresentModeKHR*                           pPresentModes);
   4640 #endif
   4641 
   4642 #define VK_KHR_swapchain 1
   4643 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
   4644 
   4645 #define VK_KHR_SWAPCHAIN_SPEC_VERSION     70
   4646 #define VK_KHR_SWAPCHAIN_EXTENSION_NAME   "VK_KHR_swapchain"
   4647 
   4648 
   4649 typedef enum VkSwapchainCreateFlagBitsKHR {
   4650     VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0x00000001,
   4651     VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0x00000002,
   4652     VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
   4653 } VkSwapchainCreateFlagBitsKHR;
   4654 typedef VkFlags VkSwapchainCreateFlagsKHR;
   4655 
   4656 typedef enum VkDeviceGroupPresentModeFlagBitsKHR {
   4657     VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 0x00000001,
   4658     VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 0x00000002,
   4659     VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 0x00000004,
   4660     VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 0x00000008,
   4661     VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
   4662 } VkDeviceGroupPresentModeFlagBitsKHR;
   4663 typedef VkFlags VkDeviceGroupPresentModeFlagsKHR;
   4664 
   4665 typedef struct VkSwapchainCreateInfoKHR {
   4666     VkStructureType                  sType;
   4667     const void*                      pNext;
   4668     VkSwapchainCreateFlagsKHR        flags;
   4669     VkSurfaceKHR                     surface;
   4670     uint32_t                         minImageCount;
   4671     VkFormat                         imageFormat;
   4672     VkColorSpaceKHR                  imageColorSpace;
   4673     VkExtent2D                       imageExtent;
   4674     uint32_t                         imageArrayLayers;
   4675     VkImageUsageFlags                imageUsage;
   4676     VkSharingMode                    imageSharingMode;
   4677     uint32_t                         queueFamilyIndexCount;
   4678     const uint32_t*                  pQueueFamilyIndices;
   4679     VkSurfaceTransformFlagBitsKHR    preTransform;
   4680     VkCompositeAlphaFlagBitsKHR      compositeAlpha;
   4681     VkPresentModeKHR                 presentMode;
   4682     VkBool32                         clipped;
   4683     VkSwapchainKHR                   oldSwapchain;
   4684 } VkSwapchainCreateInfoKHR;
   4685 
   4686 typedef struct VkPresentInfoKHR {
   4687     VkStructureType          sType;
   4688     const void*              pNext;
   4689     uint32_t                 waitSemaphoreCount;
   4690     const VkSemaphore*       pWaitSemaphores;
   4691     uint32_t                 swapchainCount;
   4692     const VkSwapchainKHR*    pSwapchains;
   4693     const uint32_t*          pImageIndices;
   4694     VkResult*                pResults;
   4695 } VkPresentInfoKHR;
   4696 
   4697 typedef struct VkImageSwapchainCreateInfoKHR {
   4698     VkStructureType    sType;
   4699     const void*        pNext;
   4700     VkSwapchainKHR     swapchain;
   4701 } VkImageSwapchainCreateInfoKHR;
   4702 
   4703 typedef struct VkBindImageMemorySwapchainInfoKHR {
   4704     VkStructureType    sType;
   4705     const void*        pNext;
   4706     VkSwapchainKHR     swapchain;
   4707     uint32_t           imageIndex;
   4708 } VkBindImageMemorySwapchainInfoKHR;
   4709 
   4710 typedef struct VkAcquireNextImageInfoKHR {
   4711     VkStructureType    sType;
   4712     const void*        pNext;
   4713     VkSwapchainKHR     swapchain;
   4714     uint64_t           timeout;
   4715     VkSemaphore        semaphore;
   4716     VkFence            fence;
   4717     uint32_t           deviceMask;
   4718 } VkAcquireNextImageInfoKHR;
   4719 
   4720 typedef struct VkDeviceGroupPresentCapabilitiesKHR {
   4721     VkStructureType                     sType;
   4722     const void*                         pNext;
   4723     uint32_t                            presentMask[VK_MAX_DEVICE_GROUP_SIZE];
   4724     VkDeviceGroupPresentModeFlagsKHR    modes;
   4725 } VkDeviceGroupPresentCapabilitiesKHR;
   4726 
   4727 typedef struct VkDeviceGroupPresentInfoKHR {
   4728     VkStructureType                        sType;
   4729     const void*                            pNext;
   4730     uint32_t                               swapchainCount;
   4731     const uint32_t*                        pDeviceMasks;
   4732     VkDeviceGroupPresentModeFlagBitsKHR    mode;
   4733 } VkDeviceGroupPresentInfoKHR;
   4734 
   4735 typedef struct VkDeviceGroupSwapchainCreateInfoKHR {
   4736     VkStructureType                     sType;
   4737     const void*                         pNext;
   4738     VkDeviceGroupPresentModeFlagsKHR    modes;
   4739 } VkDeviceGroupSwapchainCreateInfoKHR;
   4740 
   4741 
   4742 typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain);
   4743 typedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator);
   4744 typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages);
   4745 typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex);
   4746 typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR* pPresentInfo);
   4747 typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHR)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
   4748 typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes);
   4749 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects);
   4750 typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImage2KHR)(VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex);
   4751 
   4752 #ifndef VK_NO_PROTOTYPES
   4753 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(
   4754     VkDevice                                    device,
   4755     const VkSwapchainCreateInfoKHR*             pCreateInfo,
   4756     const VkAllocationCallbacks*                pAllocator,
   4757     VkSwapchainKHR*                             pSwapchain);
   4758 
   4759 VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR(
   4760     VkDevice                                    device,
   4761     VkSwapchainKHR                              swapchain,
   4762     const VkAllocationCallbacks*                pAllocator);
   4763 
   4764 VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR(
   4765     VkDevice                                    device,
   4766     VkSwapchainKHR                              swapchain,
   4767     uint32_t*                                   pSwapchainImageCount,
   4768     VkImage*                                    pSwapchainImages);
   4769 
   4770 VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(
   4771     VkDevice                                    device,
   4772     VkSwapchainKHR                              swapchain,
   4773     uint64_t                                    timeout,
   4774     VkSemaphore                                 semaphore,
   4775     VkFence                                     fence,
   4776     uint32_t*                                   pImageIndex);
   4777 
   4778 VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
   4779     VkQueue                                     queue,
   4780     const VkPresentInfoKHR*                     pPresentInfo);
   4781 
   4782 VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupPresentCapabilitiesKHR(
   4783     VkDevice                                    device,
   4784     VkDeviceGroupPresentCapabilitiesKHR*        pDeviceGroupPresentCapabilities);
   4785 
   4786 VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHR(
   4787     VkDevice                                    device,
   4788     VkSurfaceKHR                                surface,
   4789     VkDeviceGroupPresentModeFlagsKHR*           pModes);
   4790 
   4791 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHR(
   4792     VkPhysicalDevice                            physicalDevice,
   4793     VkSurfaceKHR                                surface,
   4794     uint32_t*                                   pRectCount,
   4795     VkRect2D*                                   pRects);
   4796 
   4797 VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHR(
   4798     VkDevice                                    device,
   4799     const VkAcquireNextImageInfoKHR*            pAcquireInfo,
   4800     uint32_t*                                   pImageIndex);
   4801 #endif
   4802 
   4803 #define VK_KHR_display 1
   4804 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
   4805 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
   4806 
   4807 #define VK_KHR_DISPLAY_SPEC_VERSION       21
   4808 #define VK_KHR_DISPLAY_EXTENSION_NAME     "VK_KHR_display"
   4809 
   4810 
   4811 typedef enum VkDisplayPlaneAlphaFlagBitsKHR {
   4812     VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
   4813     VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
   4814     VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
   4815     VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
   4816     VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
   4817 } VkDisplayPlaneAlphaFlagBitsKHR;
   4818 typedef VkFlags VkDisplayPlaneAlphaFlagsKHR;
   4819 typedef VkFlags VkDisplayModeCreateFlagsKHR;
   4820 typedef VkFlags VkDisplaySurfaceCreateFlagsKHR;
   4821 
   4822 typedef struct VkDisplayPropertiesKHR {
   4823     VkDisplayKHR                  display;
   4824     const char*                   displayName;
   4825     VkExtent2D                    physicalDimensions;
   4826     VkExtent2D                    physicalResolution;
   4827     VkSurfaceTransformFlagsKHR    supportedTransforms;
   4828     VkBool32                      planeReorderPossible;
   4829     VkBool32                      persistentContent;
   4830 } VkDisplayPropertiesKHR;
   4831 
   4832 typedef struct VkDisplayModeParametersKHR {
   4833     VkExtent2D    visibleRegion;
   4834     uint32_t      refreshRate;
   4835 } VkDisplayModeParametersKHR;
   4836 
   4837 typedef struct VkDisplayModePropertiesKHR {
   4838     VkDisplayModeKHR              displayMode;
   4839     VkDisplayModeParametersKHR    parameters;
   4840 } VkDisplayModePropertiesKHR;
   4841 
   4842 typedef struct VkDisplayModeCreateInfoKHR {
   4843     VkStructureType                sType;
   4844     const void*                    pNext;
   4845     VkDisplayModeCreateFlagsKHR    flags;
   4846     VkDisplayModeParametersKHR     parameters;
   4847 } VkDisplayModeCreateInfoKHR;
   4848 
   4849 typedef struct VkDisplayPlaneCapabilitiesKHR {
   4850     VkDisplayPlaneAlphaFlagsKHR    supportedAlpha;
   4851     VkOffset2D                     minSrcPosition;
   4852     VkOffset2D                     maxSrcPosition;
   4853     VkExtent2D                     minSrcExtent;
   4854     VkExtent2D                     maxSrcExtent;
   4855     VkOffset2D                     minDstPosition;
   4856     VkOffset2D                     maxDstPosition;
   4857     VkExtent2D                     minDstExtent;
   4858     VkExtent2D                     maxDstExtent;
   4859 } VkDisplayPlaneCapabilitiesKHR;
   4860 
   4861 typedef struct VkDisplayPlanePropertiesKHR {
   4862     VkDisplayKHR    currentDisplay;
   4863     uint32_t        currentStackIndex;
   4864 } VkDisplayPlanePropertiesKHR;
   4865 
   4866 typedef struct VkDisplaySurfaceCreateInfoKHR {
   4867     VkStructureType                   sType;
   4868     const void*                       pNext;
   4869     VkDisplaySurfaceCreateFlagsKHR    flags;
   4870     VkDisplayModeKHR                  displayMode;
   4871     uint32_t                          planeIndex;
   4872     uint32_t                          planeStackIndex;
   4873     VkSurfaceTransformFlagBitsKHR     transform;
   4874     float                             globalAlpha;
   4875     VkDisplayPlaneAlphaFlagBitsKHR    alphaMode;
   4876     VkExtent2D                        imageExtent;
   4877 } VkDisplaySurfaceCreateInfoKHR;
   4878 
   4879 
   4880 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
   4881 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
   4882 typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays);
   4883 typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
   4884 typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
   4885 typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
   4886 typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
   4887 
   4888 #ifndef VK_NO_PROTOTYPES
   4889 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR(
   4890     VkPhysicalDevice                            physicalDevice,
   4891     uint32_t*                                   pPropertyCount,
   4892     VkDisplayPropertiesKHR*                     pProperties);
   4893 
   4894 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
   4895     VkPhysicalDevice                            physicalDevice,
   4896     uint32_t*                                   pPropertyCount,
   4897     VkDisplayPlanePropertiesKHR*                pProperties);
   4898 
   4899 VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR(
   4900     VkPhysicalDevice                            physicalDevice,
   4901     uint32_t                                    planeIndex,
   4902     uint32_t*                                   pDisplayCount,
   4903     VkDisplayKHR*                               pDisplays);
   4904 
   4905 VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR(
   4906     VkPhysicalDevice                            physicalDevice,
   4907     VkDisplayKHR                                display,
   4908     uint32_t*                                   pPropertyCount,
   4909     VkDisplayModePropertiesKHR*                 pProperties);
   4910 
   4911 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR(
   4912     VkPhysicalDevice                            physicalDevice,
   4913     VkDisplayKHR                                display,
   4914     const VkDisplayModeCreateInfoKHR*           pCreateInfo,
   4915     const VkAllocationCallbacks*                pAllocator,
   4916     VkDisplayModeKHR*                           pMode);
   4917 
   4918 VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR(
   4919     VkPhysicalDevice                            physicalDevice,
   4920     VkDisplayModeKHR                            mode,
   4921     uint32_t                                    planeIndex,
   4922     VkDisplayPlaneCapabilitiesKHR*              pCapabilities);
   4923 
   4924 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
   4925     VkInstance                                  instance,
   4926     const VkDisplaySurfaceCreateInfoKHR*        pCreateInfo,
   4927     const VkAllocationCallbacks*                pAllocator,
   4928     VkSurfaceKHR*                               pSurface);
   4929 #endif
   4930 
   4931 #define VK_KHR_display_swapchain 1
   4932 #define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 9
   4933 #define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
   4934 
   4935 typedef struct VkDisplayPresentInfoKHR {
   4936     VkStructureType    sType;
   4937     const void*        pNext;
   4938     VkRect2D           srcRect;
   4939     VkRect2D           dstRect;
   4940     VkBool32           persistent;
   4941 } VkDisplayPresentInfoKHR;
   4942 
   4943 
   4944 typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains);
   4945 
   4946 #ifndef VK_NO_PROTOTYPES
   4947 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR(
   4948     VkDevice                                    device,
   4949     uint32_t                                    swapchainCount,
   4950     const VkSwapchainCreateInfoKHR*             pCreateInfos,
   4951     const VkAllocationCallbacks*                pAllocator,
   4952     VkSwapchainKHR*                             pSwapchains);
   4953 #endif
   4954 
   4955 #define VK_KHR_sampler_mirror_clamp_to_edge 1
   4956 #define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 1
   4957 #define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME "VK_KHR_sampler_mirror_clamp_to_edge"
   4958 
   4959 
   4960 #define VK_KHR_multiview 1
   4961 #define VK_KHR_MULTIVIEW_SPEC_VERSION     1
   4962 #define VK_KHR_MULTIVIEW_EXTENSION_NAME   "VK_KHR_multiview"
   4963 
   4964 typedef VkRenderPassMultiviewCreateInfo VkRenderPassMultiviewCreateInfoKHR;
   4965 
   4966 typedef VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeaturesKHR;
   4967 
   4968 typedef VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewPropertiesKHR;
   4969 
   4970 
   4971 
   4972 #define VK_KHR_get_physical_device_properties2 1
   4973 #define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 1
   4974 #define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2"
   4975 
   4976 typedef VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2KHR;
   4977 
   4978 typedef VkPhysicalDeviceProperties2 VkPhysicalDeviceProperties2KHR;
   4979 
   4980 typedef VkFormatProperties2 VkFormatProperties2KHR;
   4981 
   4982 typedef VkImageFormatProperties2 VkImageFormatProperties2KHR;
   4983 
   4984 typedef VkPhysicalDeviceImageFormatInfo2 VkPhysicalDeviceImageFormatInfo2KHR;
   4985 
   4986 typedef VkQueueFamilyProperties2 VkQueueFamilyProperties2KHR;
   4987 
   4988 typedef VkPhysicalDeviceMemoryProperties2 VkPhysicalDeviceMemoryProperties2KHR;
   4989 
   4990 typedef VkSparseImageFormatProperties2 VkSparseImageFormatProperties2KHR;
   4991 
   4992 typedef VkPhysicalDeviceSparseImageFormatInfo2 VkPhysicalDeviceSparseImageFormatInfo2KHR;
   4993 
   4994 
   4995 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
   4996 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
   4997 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2KHR)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
   4998 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
   4999 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
   5000 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
   5001 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
   5002 
   5003 #ifndef VK_NO_PROTOTYPES
   5004 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2KHR(
   5005     VkPhysicalDevice                            physicalDevice,
   5006     VkPhysicalDeviceFeatures2*                  pFeatures);
   5007 
   5008 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2KHR(
   5009     VkPhysicalDevice                            physicalDevice,
   5010     VkPhysicalDeviceProperties2*                pProperties);
   5011 
   5012 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2KHR(
   5013     VkPhysicalDevice                            physicalDevice,
   5014     VkFormat                                    format,
   5015     VkFormatProperties2*                        pFormatProperties);
   5016 
   5017 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2KHR(
   5018     VkPhysicalDevice                            physicalDevice,
   5019     const VkPhysicalDeviceImageFormatInfo2*     pImageFormatInfo,
   5020     VkImageFormatProperties2*                   pImageFormatProperties);
   5021 
   5022 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2KHR(
   5023     VkPhysicalDevice                            physicalDevice,
   5024     uint32_t*                                   pQueueFamilyPropertyCount,
   5025     VkQueueFamilyProperties2*                   pQueueFamilyProperties);
   5026 
   5027 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2KHR(
   5028     VkPhysicalDevice                            physicalDevice,
   5029     VkPhysicalDeviceMemoryProperties2*          pMemoryProperties);
   5030 
   5031 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
   5032     VkPhysicalDevice                            physicalDevice,
   5033     const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
   5034     uint32_t*                                   pPropertyCount,
   5035     VkSparseImageFormatProperties2*             pProperties);
   5036 #endif
   5037 
   5038 #define VK_KHR_device_group 1
   5039 #define VK_KHR_DEVICE_GROUP_SPEC_VERSION  3
   5040 #define VK_KHR_DEVICE_GROUP_EXTENSION_NAME "VK_KHR_device_group"
   5041 
   5042 typedef VkPeerMemoryFeatureFlags VkPeerMemoryFeatureFlagsKHR;
   5043 
   5044 typedef VkPeerMemoryFeatureFlagBits VkPeerMemoryFeatureFlagBitsKHR;
   5045 
   5046 typedef VkMemoryAllocateFlags VkMemoryAllocateFlagsKHR;
   5047 
   5048 typedef VkMemoryAllocateFlagBits VkMemoryAllocateFlagBitsKHR;
   5049 
   5050 
   5051 typedef VkMemoryAllocateFlagsInfo VkMemoryAllocateFlagsInfoKHR;
   5052 
   5053 typedef VkDeviceGroupRenderPassBeginInfo VkDeviceGroupRenderPassBeginInfoKHR;
   5054 
   5055 typedef VkDeviceGroupCommandBufferBeginInfo VkDeviceGroupCommandBufferBeginInfoKHR;
   5056 
   5057 typedef VkDeviceGroupSubmitInfo VkDeviceGroupSubmitInfoKHR;
   5058 
   5059 typedef VkDeviceGroupBindSparseInfo VkDeviceGroupBindSparseInfoKHR;
   5060 
   5061 typedef VkBindBufferMemoryDeviceGroupInfo VkBindBufferMemoryDeviceGroupInfoKHR;
   5062 
   5063 typedef VkBindImageMemoryDeviceGroupInfo VkBindImageMemoryDeviceGroupInfoKHR;
   5064 
   5065 
   5066 typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
   5067 typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMaskKHR)(VkCommandBuffer commandBuffer, uint32_t deviceMask);
   5068 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);
   5069 
   5070 #ifndef VK_NO_PROTOTYPES
   5071 VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeaturesKHR(
   5072     VkDevice                                    device,
   5073     uint32_t                                    heapIndex,
   5074     uint32_t                                    localDeviceIndex,
   5075     uint32_t                                    remoteDeviceIndex,
   5076     VkPeerMemoryFeatureFlags*                   pPeerMemoryFeatures);
   5077 
   5078 VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMaskKHR(
   5079     VkCommandBuffer                             commandBuffer,
   5080     uint32_t                                    deviceMask);
   5081 
   5082 VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBaseKHR(
   5083     VkCommandBuffer                             commandBuffer,
   5084     uint32_t                                    baseGroupX,
   5085     uint32_t                                    baseGroupY,
   5086     uint32_t                                    baseGroupZ,
   5087     uint32_t                                    groupCountX,
   5088     uint32_t                                    groupCountY,
   5089     uint32_t                                    groupCountZ);
   5090 #endif
   5091 
   5092 #define VK_KHR_shader_draw_parameters 1
   5093 #define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1
   5094 #define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters"
   5095 
   5096 
   5097 #define VK_KHR_maintenance1 1
   5098 #define VK_KHR_MAINTENANCE1_SPEC_VERSION  1
   5099 #define VK_KHR_MAINTENANCE1_EXTENSION_NAME "VK_KHR_maintenance1"
   5100 
   5101 typedef VkCommandPoolTrimFlags VkCommandPoolTrimFlagsKHR;
   5102 
   5103 
   5104 typedef void (VKAPI_PTR *PFN_vkTrimCommandPoolKHR)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);
   5105 
   5106 #ifndef VK_NO_PROTOTYPES
   5107 VKAPI_ATTR void VKAPI_CALL vkTrimCommandPoolKHR(
   5108     VkDevice                                    device,
   5109     VkCommandPool                               commandPool,
   5110     VkCommandPoolTrimFlags                      flags);
   5111 #endif
   5112 
   5113 #define VK_KHR_device_group_creation 1
   5114 #define VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION 1
   5115 #define VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHR_device_group_creation"
   5116 #define VK_MAX_DEVICE_GROUP_SIZE_KHR      VK_MAX_DEVICE_GROUP_SIZE
   5117 
   5118 typedef VkPhysicalDeviceGroupProperties VkPhysicalDeviceGroupPropertiesKHR;
   5119 
   5120 typedef VkDeviceGroupDeviceCreateInfo VkDeviceGroupDeviceCreateInfoKHR;
   5121 
   5122 
   5123 typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroupsKHR)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
   5124 
   5125 #ifndef VK_NO_PROTOTYPES
   5126 VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroupsKHR(
   5127     VkInstance                                  instance,
   5128     uint32_t*                                   pPhysicalDeviceGroupCount,
   5129     VkPhysicalDeviceGroupProperties*            pPhysicalDeviceGroupProperties);
   5130 #endif
   5131 
   5132 #define VK_KHR_external_memory_capabilities 1
   5133 #define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
   5134 #define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_memory_capabilities"
   5135 #define VK_LUID_SIZE_KHR                  VK_LUID_SIZE
   5136 
   5137 typedef VkExternalMemoryHandleTypeFlags VkExternalMemoryHandleTypeFlagsKHR;
   5138 
   5139 typedef VkExternalMemoryHandleTypeFlagBits VkExternalMemoryHandleTypeFlagBitsKHR;
   5140 
   5141 typedef VkExternalMemoryFeatureFlags VkExternalMemoryFeatureFlagsKHR;
   5142 
   5143 typedef VkExternalMemoryFeatureFlagBits VkExternalMemoryFeatureFlagBitsKHR;
   5144 
   5145 
   5146 typedef VkExternalMemoryProperties VkExternalMemoryPropertiesKHR;
   5147 
   5148 typedef VkPhysicalDeviceExternalImageFormatInfo VkPhysicalDeviceExternalImageFormatInfoKHR;
   5149 
   5150 typedef VkExternalImageFormatProperties VkExternalImageFormatPropertiesKHR;
   5151 
   5152 typedef VkPhysicalDeviceExternalBufferInfo VkPhysicalDeviceExternalBufferInfoKHR;
   5153 
   5154 typedef VkExternalBufferProperties VkExternalBufferPropertiesKHR;
   5155 
   5156 typedef VkPhysicalDeviceIDProperties VkPhysicalDeviceIDPropertiesKHR;
   5157 
   5158 
   5159 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
   5160 
   5161 #ifndef VK_NO_PROTOTYPES
   5162 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferPropertiesKHR(
   5163     VkPhysicalDevice                            physicalDevice,
   5164     const VkPhysicalDeviceExternalBufferInfo*   pExternalBufferInfo,
   5165     VkExternalBufferProperties*                 pExternalBufferProperties);
   5166 #endif
   5167 
   5168 #define VK_KHR_external_memory 1
   5169 #define VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION 1
   5170 #define VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHR_external_memory"
   5171 #define VK_QUEUE_FAMILY_EXTERNAL_KHR      VK_QUEUE_FAMILY_EXTERNAL
   5172 
   5173 typedef VkExternalMemoryImageCreateInfo VkExternalMemoryImageCreateInfoKHR;
   5174 
   5175 typedef VkExternalMemoryBufferCreateInfo VkExternalMemoryBufferCreateInfoKHR;
   5176 
   5177 typedef VkExportMemoryAllocateInfo VkExportMemoryAllocateInfoKHR;
   5178 
   5179 
   5180 
   5181 #define VK_KHR_external_memory_fd 1
   5182 #define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1
   5183 #define VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHR_external_memory_fd"
   5184 
   5185 typedef struct VkImportMemoryFdInfoKHR {
   5186     VkStructureType                       sType;
   5187     const void*                           pNext;
   5188     VkExternalMemoryHandleTypeFlagBits    handleType;
   5189     int                                   fd;
   5190 } VkImportMemoryFdInfoKHR;
   5191 
   5192 typedef struct VkMemoryFdPropertiesKHR {
   5193     VkStructureType    sType;
   5194     void*              pNext;
   5195     uint32_t           memoryTypeBits;
   5196 } VkMemoryFdPropertiesKHR;
   5197 
   5198 typedef struct VkMemoryGetFdInfoKHR {
   5199     VkStructureType                       sType;
   5200     const void*                           pNext;
   5201     VkDeviceMemory                        memory;
   5202     VkExternalMemoryHandleTypeFlagBits    handleType;
   5203 } VkMemoryGetFdInfoKHR;
   5204 
   5205 
   5206 typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdKHR)(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd);
   5207 typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdPropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties);
   5208 
   5209 #ifndef VK_NO_PROTOTYPES
   5210 VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdKHR(
   5211     VkDevice                                    device,
   5212     const VkMemoryGetFdInfoKHR*                 pGetFdInfo,
   5213     int*                                        pFd);
   5214 
   5215 VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHR(
   5216     VkDevice                                    device,
   5217     VkExternalMemoryHandleTypeFlagBits          handleType,
   5218     int                                         fd,
   5219     VkMemoryFdPropertiesKHR*                    pMemoryFdProperties);
   5220 #endif
   5221 
   5222 #define VK_KHR_external_semaphore_capabilities 1
   5223 #define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1
   5224 #define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_semaphore_capabilities"
   5225 
   5226 typedef VkExternalSemaphoreHandleTypeFlags VkExternalSemaphoreHandleTypeFlagsKHR;
   5227 
   5228 typedef VkExternalSemaphoreHandleTypeFlagBits VkExternalSemaphoreHandleTypeFlagBitsKHR;
   5229 
   5230 typedef VkExternalSemaphoreFeatureFlags VkExternalSemaphoreFeatureFlagsKHR;
   5231 
   5232 typedef VkExternalSemaphoreFeatureFlagBits VkExternalSemaphoreFeatureFlagBitsKHR;
   5233 
   5234 
   5235 typedef VkPhysicalDeviceExternalSemaphoreInfo VkPhysicalDeviceExternalSemaphoreInfoKHR;
   5236 
   5237 typedef VkExternalSemaphoreProperties VkExternalSemaphorePropertiesKHR;
   5238 
   5239 
   5240 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
   5241 
   5242 #ifndef VK_NO_PROTOTYPES
   5243 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
   5244     VkPhysicalDevice                            physicalDevice,
   5245     const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
   5246     VkExternalSemaphoreProperties*              pExternalSemaphoreProperties);
   5247 #endif
   5248 
   5249 #define VK_KHR_external_semaphore 1
   5250 #define VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
   5251 #define VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHR_external_semaphore"
   5252 
   5253 typedef VkSemaphoreImportFlags VkSemaphoreImportFlagsKHR;
   5254 
   5255 typedef VkSemaphoreImportFlagBits VkSemaphoreImportFlagBitsKHR;
   5256 
   5257 
   5258 typedef VkExportSemaphoreCreateInfo VkExportSemaphoreCreateInfoKHR;
   5259 
   5260 
   5261 
   5262 #define VK_KHR_external_semaphore_fd 1
   5263 #define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1
   5264 #define VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHR_external_semaphore_fd"
   5265 
   5266 typedef struct VkImportSemaphoreFdInfoKHR {
   5267     VkStructureType                          sType;
   5268     const void*                              pNext;
   5269     VkSemaphore                              semaphore;
   5270     VkSemaphoreImportFlags                   flags;
   5271     VkExternalSemaphoreHandleTypeFlagBits    handleType;
   5272     int                                      fd;
   5273 } VkImportSemaphoreFdInfoKHR;
   5274 
   5275 typedef struct VkSemaphoreGetFdInfoKHR {
   5276     VkStructureType                          sType;
   5277     const void*                              pNext;
   5278     VkSemaphore                              semaphore;
   5279     VkExternalSemaphoreHandleTypeFlagBits    handleType;
   5280 } VkSemaphoreGetFdInfoKHR;
   5281 
   5282 
   5283 typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreFdKHR)(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
   5284 typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreFdKHR)(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd);
   5285 
   5286 #ifndef VK_NO_PROTOTYPES
   5287 VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreFdKHR(
   5288     VkDevice                                    device,
   5289     const VkImportSemaphoreFdInfoKHR*           pImportSemaphoreFdInfo);
   5290 
   5291 VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHR(
   5292     VkDevice                                    device,
   5293     const VkSemaphoreGetFdInfoKHR*              pGetFdInfo,
   5294     int*                                        pFd);
   5295 #endif
   5296 
   5297 #define VK_KHR_push_descriptor 1
   5298 #define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 2
   5299 #define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor"
   5300 
   5301 typedef struct VkPhysicalDevicePushDescriptorPropertiesKHR {
   5302     VkStructureType    sType;
   5303     void*              pNext;
   5304     uint32_t           maxPushDescriptors;
   5305 } VkPhysicalDevicePushDescriptorPropertiesKHR;
   5306 
   5307 
   5308 typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetKHR)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites);
   5309 typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplateKHR)(VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData);
   5310 
   5311 #ifndef VK_NO_PROTOTYPES
   5312 VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetKHR(
   5313     VkCommandBuffer                             commandBuffer,
   5314     VkPipelineBindPoint                         pipelineBindPoint,
   5315     VkPipelineLayout                            layout,
   5316     uint32_t                                    set,
   5317     uint32_t                                    descriptorWriteCount,
   5318     const VkWriteDescriptorSet*                 pDescriptorWrites);
   5319 
   5320 VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR(
   5321     VkCommandBuffer                             commandBuffer,
   5322     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
   5323     VkPipelineLayout                            layout,
   5324     uint32_t                                    set,
   5325     const void*                                 pData);
   5326 #endif
   5327 
   5328 #define VK_KHR_16bit_storage 1
   5329 #define VK_KHR_16BIT_STORAGE_SPEC_VERSION 1
   5330 #define VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage"
   5331 
   5332 typedef VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeaturesKHR;
   5333 
   5334 
   5335 
   5336 #define VK_KHR_incremental_present 1
   5337 #define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1
   5338 #define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present"
   5339 
   5340 typedef struct VkRectLayerKHR {
   5341     VkOffset2D    offset;
   5342     VkExtent2D    extent;
   5343     uint32_t      layer;
   5344 } VkRectLayerKHR;
   5345 
   5346 typedef struct VkPresentRegionKHR {
   5347     uint32_t                 rectangleCount;
   5348     const VkRectLayerKHR*    pRectangles;
   5349 } VkPresentRegionKHR;
   5350 
   5351 typedef struct VkPresentRegionsKHR {
   5352     VkStructureType              sType;
   5353     const void*                  pNext;
   5354     uint32_t                     swapchainCount;
   5355     const VkPresentRegionKHR*    pRegions;
   5356 } VkPresentRegionsKHR;
   5357 
   5358 
   5359 
   5360 #define VK_KHR_descriptor_update_template 1
   5361 typedef VkDescriptorUpdateTemplate VkDescriptorUpdateTemplateKHR;
   5362 
   5363 
   5364 #define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1
   5365 #define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template"
   5366 
   5367 typedef VkDescriptorUpdateTemplateType VkDescriptorUpdateTemplateTypeKHR;
   5368 
   5369 
   5370 typedef VkDescriptorUpdateTemplateCreateFlags VkDescriptorUpdateTemplateCreateFlagsKHR;
   5371 
   5372 
   5373 typedef VkDescriptorUpdateTemplateEntry VkDescriptorUpdateTemplateEntryKHR;
   5374 
   5375 typedef VkDescriptorUpdateTemplateCreateInfo VkDescriptorUpdateTemplateCreateInfoKHR;
   5376 
   5377 
   5378 typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplateKHR)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
   5379 typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplateKHR)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
   5380 typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplateKHR)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
   5381 
   5382 #ifndef VK_NO_PROTOTYPES
   5383 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplateKHR(
   5384     VkDevice                                    device,
   5385     const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
   5386     const VkAllocationCallbacks*                pAllocator,
   5387     VkDescriptorUpdateTemplate*                 pDescriptorUpdateTemplate);
   5388 
   5389 VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplateKHR(
   5390     VkDevice                                    device,
   5391     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
   5392     const VkAllocationCallbacks*                pAllocator);
   5393 
   5394 VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR(
   5395     VkDevice                                    device,
   5396     VkDescriptorSet                             descriptorSet,
   5397     VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
   5398     const void*                                 pData);
   5399 #endif
   5400 
   5401 #define VK_KHR_shared_presentable_image 1
   5402 #define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1
   5403 #define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image"
   5404 
   5405 typedef struct VkSharedPresentSurfaceCapabilitiesKHR {
   5406     VkStructureType      sType;
   5407     void*                pNext;
   5408     VkImageUsageFlags    sharedPresentSupportedUsageFlags;
   5409 } VkSharedPresentSurfaceCapabilitiesKHR;
   5410 
   5411 
   5412 typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainStatusKHR)(VkDevice device, VkSwapchainKHR swapchain);
   5413 
   5414 #ifndef VK_NO_PROTOTYPES
   5415 VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainStatusKHR(
   5416     VkDevice                                    device,
   5417     VkSwapchainKHR                              swapchain);
   5418 #endif
   5419 
   5420 #define VK_KHR_external_fence_capabilities 1
   5421 #define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION 1
   5422 #define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_fence_capabilities"
   5423 
   5424 typedef VkExternalFenceHandleTypeFlags VkExternalFenceHandleTypeFlagsKHR;
   5425 
   5426 typedef VkExternalFenceHandleTypeFlagBits VkExternalFenceHandleTypeFlagBitsKHR;
   5427 
   5428 typedef VkExternalFenceFeatureFlags VkExternalFenceFeatureFlagsKHR;
   5429 
   5430 typedef VkExternalFenceFeatureFlagBits VkExternalFenceFeatureFlagBitsKHR;
   5431 
   5432 
   5433 typedef VkPhysicalDeviceExternalFenceInfo VkPhysicalDeviceExternalFenceInfoKHR;
   5434 
   5435 typedef VkExternalFenceProperties VkExternalFencePropertiesKHR;
   5436 
   5437 
   5438 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
   5439 
   5440 #ifndef VK_NO_PROTOTYPES
   5441 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFencePropertiesKHR(
   5442     VkPhysicalDevice                            physicalDevice,
   5443     const VkPhysicalDeviceExternalFenceInfo*    pExternalFenceInfo,
   5444     VkExternalFenceProperties*                  pExternalFenceProperties);
   5445 #endif
   5446 
   5447 #define VK_KHR_external_fence 1
   5448 #define VK_KHR_EXTERNAL_FENCE_SPEC_VERSION 1
   5449 #define VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME "VK_KHR_external_fence"
   5450 
   5451 typedef VkFenceImportFlags VkFenceImportFlagsKHR;
   5452 
   5453 typedef VkFenceImportFlagBits VkFenceImportFlagBitsKHR;
   5454 
   5455 
   5456 typedef VkExportFenceCreateInfo VkExportFenceCreateInfoKHR;
   5457 
   5458 
   5459 
   5460 #define VK_KHR_external_fence_fd 1
   5461 #define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1
   5462 #define VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME "VK_KHR_external_fence_fd"
   5463 
   5464 typedef struct VkImportFenceFdInfoKHR {
   5465     VkStructureType                      sType;
   5466     const void*                          pNext;
   5467     VkFence                              fence;
   5468     VkFenceImportFlags                   flags;
   5469     VkExternalFenceHandleTypeFlagBits    handleType;
   5470     int                                  fd;
   5471 } VkImportFenceFdInfoKHR;
   5472 
   5473 typedef struct VkFenceGetFdInfoKHR {
   5474     VkStructureType                      sType;
   5475     const void*                          pNext;
   5476     VkFence                              fence;
   5477     VkExternalFenceHandleTypeFlagBits    handleType;
   5478 } VkFenceGetFdInfoKHR;
   5479 
   5480 
   5481 typedef VkResult (VKAPI_PTR *PFN_vkImportFenceFdKHR)(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
   5482 typedef VkResult (VKAPI_PTR *PFN_vkGetFenceFdKHR)(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd);
   5483 
   5484 #ifndef VK_NO_PROTOTYPES
   5485 VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceFdKHR(
   5486     VkDevice                                    device,
   5487     const VkImportFenceFdInfoKHR*               pImportFenceFdInfo);
   5488 
   5489 VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceFdKHR(
   5490     VkDevice                                    device,
   5491     const VkFenceGetFdInfoKHR*                  pGetFdInfo,
   5492     int*                                        pFd);
   5493 #endif
   5494 
   5495 #define VK_KHR_maintenance2 1
   5496 #define VK_KHR_MAINTENANCE2_SPEC_VERSION  1
   5497 #define VK_KHR_MAINTENANCE2_EXTENSION_NAME "VK_KHR_maintenance2"
   5498 
   5499 typedef VkPointClippingBehavior VkPointClippingBehaviorKHR;
   5500 
   5501 typedef VkTessellationDomainOrigin VkTessellationDomainOriginKHR;
   5502 
   5503 
   5504 typedef VkPhysicalDevicePointClippingProperties VkPhysicalDevicePointClippingPropertiesKHR;
   5505 
   5506 typedef VkRenderPassInputAttachmentAspectCreateInfo VkRenderPassInputAttachmentAspectCreateInfoKHR;
   5507 
   5508 typedef VkInputAttachmentAspectReference VkInputAttachmentAspectReferenceKHR;
   5509 
   5510 typedef VkImageViewUsageCreateInfo VkImageViewUsageCreateInfoKHR;
   5511 
   5512 typedef VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellationDomainOriginStateCreateInfoKHR;
   5513 
   5514 
   5515 
   5516 #define VK_KHR_get_surface_capabilities2 1
   5517 #define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1
   5518 #define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2"
   5519 
   5520 typedef struct VkPhysicalDeviceSurfaceInfo2KHR {
   5521     VkStructureType    sType;
   5522     const void*        pNext;
   5523     VkSurfaceKHR       surface;
   5524 } VkPhysicalDeviceSurfaceInfo2KHR;
   5525 
   5526 typedef struct VkSurfaceCapabilities2KHR {
   5527     VkStructureType             sType;
   5528     void*                       pNext;
   5529     VkSurfaceCapabilitiesKHR    surfaceCapabilities;
   5530 } VkSurfaceCapabilities2KHR;
   5531 
   5532 typedef struct VkSurfaceFormat2KHR {
   5533     VkStructureType       sType;
   5534     void*                 pNext;
   5535     VkSurfaceFormatKHR    surfaceFormat;
   5536 } VkSurfaceFormat2KHR;
   5537 
   5538 
   5539 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
   5540 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats);
   5541 
   5542 #ifndef VK_NO_PROTOTYPES
   5543 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2KHR(
   5544     VkPhysicalDevice                            physicalDevice,
   5545     const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
   5546     VkSurfaceCapabilities2KHR*                  pSurfaceCapabilities);
   5547 
   5548 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormats2KHR(
   5549     VkPhysicalDevice                            physicalDevice,
   5550     const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
   5551     uint32_t*                                   pSurfaceFormatCount,
   5552     VkSurfaceFormat2KHR*                        pSurfaceFormats);
   5553 #endif
   5554 
   5555 #define VK_KHR_variable_pointers 1
   5556 #define VK_KHR_VARIABLE_POINTERS_SPEC_VERSION 1
   5557 #define VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME "VK_KHR_variable_pointers"
   5558 
   5559 typedef VkPhysicalDeviceVariablePointerFeatures VkPhysicalDeviceVariablePointerFeaturesKHR;
   5560 
   5561 
   5562 
   5563 #define VK_KHR_dedicated_allocation 1
   5564 #define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3
   5565 #define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation"
   5566 
   5567 typedef VkMemoryDedicatedRequirements VkMemoryDedicatedRequirementsKHR;
   5568 
   5569 typedef VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfoKHR;
   5570 
   5571 
   5572 
   5573 #define VK_KHR_storage_buffer_storage_class 1
   5574 #define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION 1
   5575 #define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME "VK_KHR_storage_buffer_storage_class"
   5576 
   5577 
   5578 #define VK_KHR_relaxed_block_layout 1
   5579 #define VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION 1
   5580 #define VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME "VK_KHR_relaxed_block_layout"
   5581 
   5582 
   5583 #define VK_KHR_get_memory_requirements2 1
   5584 #define VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION 1
   5585 #define VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME "VK_KHR_get_memory_requirements2"
   5586 
   5587 typedef VkBufferMemoryRequirementsInfo2 VkBufferMemoryRequirementsInfo2KHR;
   5588 
   5589 typedef VkImageMemoryRequirementsInfo2 VkImageMemoryRequirementsInfo2KHR;
   5590 
   5591 typedef VkImageSparseMemoryRequirementsInfo2 VkImageSparseMemoryRequirementsInfo2KHR;
   5592 
   5593 typedef VkMemoryRequirements2 VkMemoryRequirements2KHR;
   5594 
   5595 typedef VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2KHR;
   5596 
   5597 
   5598 typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2KHR)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
   5599 typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2KHR)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
   5600 typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2KHR)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
   5601 
   5602 #ifndef VK_NO_PROTOTYPES
   5603 VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2KHR(
   5604     VkDevice                                    device,
   5605     const VkImageMemoryRequirementsInfo2*       pInfo,
   5606     VkMemoryRequirements2*                      pMemoryRequirements);
   5607 
   5608 VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2KHR(
   5609     VkDevice                                    device,
   5610     const VkBufferMemoryRequirementsInfo2*      pInfo,
   5611     VkMemoryRequirements2*                      pMemoryRequirements);
   5612 
   5613 VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2KHR(
   5614     VkDevice                                    device,
   5615     const VkImageSparseMemoryRequirementsInfo2* pInfo,
   5616     uint32_t*                                   pSparseMemoryRequirementCount,
   5617     VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements);
   5618 #endif
   5619 
   5620 #define VK_KHR_image_format_list 1
   5621 #define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1
   5622 #define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME "VK_KHR_image_format_list"
   5623 
   5624 typedef struct VkImageFormatListCreateInfoKHR {
   5625     VkStructureType    sType;
   5626     const void*        pNext;
   5627     uint32_t           viewFormatCount;
   5628     const VkFormat*    pViewFormats;
   5629 } VkImageFormatListCreateInfoKHR;
   5630 
   5631 
   5632 
   5633 #define VK_KHR_sampler_ycbcr_conversion 1
   5634 typedef VkSamplerYcbcrConversion VkSamplerYcbcrConversionKHR;
   5635 
   5636 
   5637 #define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 1
   5638 #define VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME "VK_KHR_sampler_ycbcr_conversion"
   5639 
   5640 typedef VkSamplerYcbcrModelConversion VkSamplerYcbcrModelConversionKHR;
   5641 
   5642 typedef VkSamplerYcbcrRange VkSamplerYcbcrRangeKHR;
   5643 
   5644 typedef VkChromaLocation VkChromaLocationKHR;
   5645 
   5646 
   5647 typedef VkSamplerYcbcrConversionCreateInfo VkSamplerYcbcrConversionCreateInfoKHR;
   5648 
   5649 typedef VkSamplerYcbcrConversionInfo VkSamplerYcbcrConversionInfoKHR;
   5650 
   5651 typedef VkBindImagePlaneMemoryInfo VkBindImagePlaneMemoryInfoKHR;
   5652 
   5653 typedef VkImagePlaneMemoryRequirementsInfo VkImagePlaneMemoryRequirementsInfoKHR;
   5654 
   5655 typedef VkPhysicalDeviceSamplerYcbcrConversionFeatures VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR;
   5656 
   5657 typedef VkSamplerYcbcrConversionImageFormatProperties VkSamplerYcbcrConversionImageFormatPropertiesKHR;
   5658 
   5659 
   5660 typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversionKHR)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
   5661 typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversionKHR)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
   5662 
   5663 #ifndef VK_NO_PROTOTYPES
   5664 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversionKHR(
   5665     VkDevice                                    device,
   5666     const VkSamplerYcbcrConversionCreateInfo*   pCreateInfo,
   5667     const VkAllocationCallbacks*                pAllocator,
   5668     VkSamplerYcbcrConversion*                   pYcbcrConversion);
   5669 
   5670 VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversionKHR(
   5671     VkDevice                                    device,
   5672     VkSamplerYcbcrConversion                    ycbcrConversion,
   5673     const VkAllocationCallbacks*                pAllocator);
   5674 #endif
   5675 
   5676 #define VK_KHR_bind_memory2 1
   5677 #define VK_KHR_BIND_MEMORY_2_SPEC_VERSION 1
   5678 #define VK_KHR_BIND_MEMORY_2_EXTENSION_NAME "VK_KHR_bind_memory2"
   5679 
   5680 typedef VkBindBufferMemoryInfo VkBindBufferMemoryInfoKHR;
   5681 
   5682 typedef VkBindImageMemoryInfo VkBindImageMemoryInfoKHR;
   5683 
   5684 
   5685 typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
   5686 typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
   5687 
   5688 #ifndef VK_NO_PROTOTYPES
   5689 VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2KHR(
   5690     VkDevice                                    device,
   5691     uint32_t                                    bindInfoCount,
   5692     const VkBindBufferMemoryInfo*               pBindInfos);
   5693 
   5694 VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2KHR(
   5695     VkDevice                                    device,
   5696     uint32_t                                    bindInfoCount,
   5697     const VkBindImageMemoryInfo*                pBindInfos);
   5698 #endif
   5699 
   5700 #define VK_KHR_maintenance3 1
   5701 #define VK_KHR_MAINTENANCE3_SPEC_VERSION  1
   5702 #define VK_KHR_MAINTENANCE3_EXTENSION_NAME "VK_KHR_maintenance3"
   5703 
   5704 typedef VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3PropertiesKHR;
   5705 
   5706 typedef VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupportKHR;
   5707 
   5708 
   5709 typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupportKHR)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
   5710 
   5711 #ifndef VK_NO_PROTOTYPES
   5712 VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupportKHR(
   5713     VkDevice                                    device,
   5714     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
   5715     VkDescriptorSetLayoutSupport*               pSupport);
   5716 #endif
   5717 
   5718 #define VK_EXT_debug_report 1
   5719 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
   5720 
   5721 #define VK_EXT_DEBUG_REPORT_SPEC_VERSION  9
   5722 #define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report"
   5723 #define VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
   5724 #define VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT
   5725 
   5726 
   5727 typedef enum VkDebugReportObjectTypeEXT {
   5728     VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
   5729     VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
   5730     VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
   5731     VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,
   5732     VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,
   5733     VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,
   5734     VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,
   5735     VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,
   5736     VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,
   5737     VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,
   5738     VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,
   5739     VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,
   5740     VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,
   5741     VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,
   5742     VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,
   5743     VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,
   5744     VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,
   5745     VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,
   5746     VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,
   5747     VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,
   5748     VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,
   5749     VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,
   5750     VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,
   5751     VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,
   5752     VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,
   5753     VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,
   5754     VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
   5755     VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
   5756     VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28,
   5757     VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29,
   5758     VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,
   5759     VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31,
   5760     VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32,
   5761     VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33,
   5762     VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000,
   5763     VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000,
   5764     VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT,
   5765     VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT,
   5766     VK_DEBUG_REPORT_OBJECT_TYPE_BEGIN_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
   5767     VK_DEBUG_REPORT_OBJECT_TYPE_END_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT,
   5768     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),
   5769     VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
   5770 } VkDebugReportObjectTypeEXT;
   5771 
   5772 
   5773 typedef enum VkDebugReportFlagBitsEXT {
   5774     VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,
   5775     VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002,
   5776     VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004,
   5777     VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008,
   5778     VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010,
   5779     VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
   5780 } VkDebugReportFlagBitsEXT;
   5781 typedef VkFlags VkDebugReportFlagsEXT;
   5782 
   5783 typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)(
   5784     VkDebugReportFlagsEXT                       flags,
   5785     VkDebugReportObjectTypeEXT                  objectType,
   5786     uint64_t                                    object,
   5787     size_t                                      location,
   5788     int32_t                                     messageCode,
   5789     const char*                                 pLayerPrefix,
   5790     const char*                                 pMessage,
   5791     void*                                       pUserData);
   5792 
   5793 typedef struct VkDebugReportCallbackCreateInfoEXT {
   5794     VkStructureType                 sType;
   5795     const void*                     pNext;
   5796     VkDebugReportFlagsEXT           flags;
   5797     PFN_vkDebugReportCallbackEXT    pfnCallback;
   5798     void*                           pUserData;
   5799 } VkDebugReportCallbackCreateInfoEXT;
   5800 
   5801 
   5802 typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugReportCallbackEXT)(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback);
   5803 typedef void (VKAPI_PTR *PFN_vkDestroyDebugReportCallbackEXT)(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator);
   5804 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);
   5805 
   5806 #ifndef VK_NO_PROTOTYPES
   5807 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugReportCallbackEXT(
   5808     VkInstance                                  instance,
   5809     const VkDebugReportCallbackCreateInfoEXT*   pCreateInfo,
   5810     const VkAllocationCallbacks*                pAllocator,
   5811     VkDebugReportCallbackEXT*                   pCallback);
   5812 
   5813 VKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackEXT(
   5814     VkInstance                                  instance,
   5815     VkDebugReportCallbackEXT                    callback,
   5816     const VkAllocationCallbacks*                pAllocator);
   5817 
   5818 VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT(
   5819     VkInstance                                  instance,
   5820     VkDebugReportFlagsEXT                       flags,
   5821     VkDebugReportObjectTypeEXT                  objectType,
   5822     uint64_t                                    object,
   5823     size_t                                      location,
   5824     int32_t                                     messageCode,
   5825     const char*                                 pLayerPrefix,
   5826     const char*                                 pMessage);
   5827 #endif
   5828 
   5829 #define VK_NV_glsl_shader 1
   5830 #define VK_NV_GLSL_SHADER_SPEC_VERSION    1
   5831 #define VK_NV_GLSL_SHADER_EXTENSION_NAME  "VK_NV_glsl_shader"
   5832 
   5833 
   5834 #define VK_EXT_depth_range_unrestricted 1
   5835 #define VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION 1
   5836 #define VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME "VK_EXT_depth_range_unrestricted"
   5837 
   5838 
   5839 #define VK_IMG_filter_cubic 1
   5840 #define VK_IMG_FILTER_CUBIC_SPEC_VERSION  1
   5841 #define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic"
   5842 
   5843 
   5844 #define VK_AMD_rasterization_order 1
   5845 #define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1
   5846 #define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME "VK_AMD_rasterization_order"
   5847 
   5848 
   5849 typedef enum VkRasterizationOrderAMD {
   5850     VK_RASTERIZATION_ORDER_STRICT_AMD = 0,
   5851     VK_RASTERIZATION_ORDER_RELAXED_AMD = 1,
   5852     VK_RASTERIZATION_ORDER_BEGIN_RANGE_AMD = VK_RASTERIZATION_ORDER_STRICT_AMD,
   5853     VK_RASTERIZATION_ORDER_END_RANGE_AMD = VK_RASTERIZATION_ORDER_RELAXED_AMD,
   5854     VK_RASTERIZATION_ORDER_RANGE_SIZE_AMD = (VK_RASTERIZATION_ORDER_RELAXED_AMD - VK_RASTERIZATION_ORDER_STRICT_AMD + 1),
   5855     VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF
   5856 } VkRasterizationOrderAMD;
   5857 
   5858 typedef struct VkPipelineRasterizationStateRasterizationOrderAMD {
   5859     VkStructureType            sType;
   5860     const void*                pNext;
   5861     VkRasterizationOrderAMD    rasterizationOrder;
   5862 } VkPipelineRasterizationStateRasterizationOrderAMD;
   5863 
   5864 
   5865 
   5866 #define VK_AMD_shader_trinary_minmax 1
   5867 #define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1
   5868 #define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax"
   5869 
   5870 
   5871 #define VK_AMD_shader_explicit_vertex_parameter 1
   5872 #define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1
   5873 #define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter"
   5874 
   5875 
   5876 #define VK_EXT_debug_marker 1
   5877 #define VK_EXT_DEBUG_MARKER_SPEC_VERSION  4
   5878 #define VK_EXT_DEBUG_MARKER_EXTENSION_NAME "VK_EXT_debug_marker"
   5879 
   5880 typedef struct VkDebugMarkerObjectNameInfoEXT {
   5881     VkStructureType               sType;
   5882     const void*                   pNext;
   5883     VkDebugReportObjectTypeEXT    objectType;
   5884     uint64_t                      object;
   5885     const char*                   pObjectName;
   5886 } VkDebugMarkerObjectNameInfoEXT;
   5887 
   5888 typedef struct VkDebugMarkerObjectTagInfoEXT {
   5889     VkStructureType               sType;
   5890     const void*                   pNext;
   5891     VkDebugReportObjectTypeEXT    objectType;
   5892     uint64_t                      object;
   5893     uint64_t                      tagName;
   5894     size_t                        tagSize;
   5895     const void*                   pTag;
   5896 } VkDebugMarkerObjectTagInfoEXT;
   5897 
   5898 typedef struct VkDebugMarkerMarkerInfoEXT {
   5899     VkStructureType    sType;
   5900     const void*        pNext;
   5901     const char*        pMarkerName;
   5902     float              color[4];
   5903 } VkDebugMarkerMarkerInfoEXT;
   5904 
   5905 
   5906 typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectTagEXT)(VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo);
   5907 typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectNameEXT)(VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo);
   5908 typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
   5909 typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerEndEXT)(VkCommandBuffer commandBuffer);
   5910 typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
   5911 
   5912 #ifndef VK_NO_PROTOTYPES
   5913 VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT(
   5914     VkDevice                                    device,
   5915     const VkDebugMarkerObjectTagInfoEXT*        pTagInfo);
   5916 
   5917 VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT(
   5918     VkDevice                                    device,
   5919     const VkDebugMarkerObjectNameInfoEXT*       pNameInfo);
   5920 
   5921 VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerBeginEXT(
   5922     VkCommandBuffer                             commandBuffer,
   5923     const VkDebugMarkerMarkerInfoEXT*           pMarkerInfo);
   5924 
   5925 VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerEndEXT(
   5926     VkCommandBuffer                             commandBuffer);
   5927 
   5928 VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT(
   5929     VkCommandBuffer                             commandBuffer,
   5930     const VkDebugMarkerMarkerInfoEXT*           pMarkerInfo);
   5931 #endif
   5932 
   5933 #define VK_AMD_gcn_shader 1
   5934 #define VK_AMD_GCN_SHADER_SPEC_VERSION    1
   5935 #define VK_AMD_GCN_SHADER_EXTENSION_NAME  "VK_AMD_gcn_shader"
   5936 
   5937 
   5938 #define VK_NV_dedicated_allocation 1
   5939 #define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1
   5940 #define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation"
   5941 
   5942 typedef struct VkDedicatedAllocationImageCreateInfoNV {
   5943     VkStructureType    sType;
   5944     const void*        pNext;
   5945     VkBool32           dedicatedAllocation;
   5946 } VkDedicatedAllocationImageCreateInfoNV;
   5947 
   5948 typedef struct VkDedicatedAllocationBufferCreateInfoNV {
   5949     VkStructureType    sType;
   5950     const void*        pNext;
   5951     VkBool32           dedicatedAllocation;
   5952 } VkDedicatedAllocationBufferCreateInfoNV;
   5953 
   5954 typedef struct VkDedicatedAllocationMemoryAllocateInfoNV {
   5955     VkStructureType    sType;
   5956     const void*        pNext;
   5957     VkImage            image;
   5958     VkBuffer           buffer;
   5959 } VkDedicatedAllocationMemoryAllocateInfoNV;
   5960 
   5961 
   5962 
   5963 #define VK_AMD_draw_indirect_count 1
   5964 #define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
   5965 #define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count"
   5966 
   5967 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
   5968 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
   5969 
   5970 #ifndef VK_NO_PROTOTYPES
   5971 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountAMD(
   5972     VkCommandBuffer                             commandBuffer,
   5973     VkBuffer                                    buffer,
   5974     VkDeviceSize                                offset,
   5975     VkBuffer                                    countBuffer,
   5976     VkDeviceSize                                countBufferOffset,
   5977     uint32_t                                    maxDrawCount,
   5978     uint32_t                                    stride);
   5979 
   5980 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD(
   5981     VkCommandBuffer                             commandBuffer,
   5982     VkBuffer                                    buffer,
   5983     VkDeviceSize                                offset,
   5984     VkBuffer                                    countBuffer,
   5985     VkDeviceSize                                countBufferOffset,
   5986     uint32_t                                    maxDrawCount,
   5987     uint32_t                                    stride);
   5988 #endif
   5989 
   5990 #define VK_AMD_negative_viewport_height 1
   5991 #define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1
   5992 #define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height"
   5993 
   5994 
   5995 #define VK_AMD_gpu_shader_half_float 1
   5996 #define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 1
   5997 #define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float"
   5998 
   5999 
   6000 #define VK_AMD_shader_ballot 1
   6001 #define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1
   6002 #define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot"
   6003 
   6004 
   6005 #define VK_AMD_texture_gather_bias_lod 1
   6006 #define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1
   6007 #define VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME "VK_AMD_texture_gather_bias_lod"
   6008 
   6009 typedef struct VkTextureLODGatherFormatPropertiesAMD {
   6010     VkStructureType    sType;
   6011     void*              pNext;
   6012     VkBool32           supportsTextureGatherLODBiasAMD;
   6013 } VkTextureLODGatherFormatPropertiesAMD;
   6014 
   6015 
   6016 
   6017 #define VK_AMD_shader_info 1
   6018 #define VK_AMD_SHADER_INFO_SPEC_VERSION   1
   6019 #define VK_AMD_SHADER_INFO_EXTENSION_NAME "VK_AMD_shader_info"
   6020 
   6021 
   6022 typedef enum VkShaderInfoTypeAMD {
   6023     VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0,
   6024     VK_SHADER_INFO_TYPE_BINARY_AMD = 1,
   6025     VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2,
   6026     VK_SHADER_INFO_TYPE_BEGIN_RANGE_AMD = VK_SHADER_INFO_TYPE_STATISTICS_AMD,
   6027     VK_SHADER_INFO_TYPE_END_RANGE_AMD = VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD,
   6028     VK_SHADER_INFO_TYPE_RANGE_SIZE_AMD = (VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD - VK_SHADER_INFO_TYPE_STATISTICS_AMD + 1),
   6029     VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 0x7FFFFFFF
   6030 } VkShaderInfoTypeAMD;
   6031 
   6032 typedef struct VkShaderResourceUsageAMD {
   6033     uint32_t    numUsedVgprs;
   6034     uint32_t    numUsedSgprs;
   6035     uint32_t    ldsSizePerLocalWorkGroup;
   6036     size_t      ldsUsageSizeInBytes;
   6037     size_t      scratchMemUsageInBytes;
   6038 } VkShaderResourceUsageAMD;
   6039 
   6040 typedef struct VkShaderStatisticsInfoAMD {
   6041     VkShaderStageFlags          shaderStageMask;
   6042     VkShaderResourceUsageAMD    resourceUsage;
   6043     uint32_t                    numPhysicalVgprs;
   6044     uint32_t                    numPhysicalSgprs;
   6045     uint32_t                    numAvailableVgprs;
   6046     uint32_t                    numAvailableSgprs;
   6047     uint32_t                    computeWorkGroupSize[3];
   6048 } VkShaderStatisticsInfoAMD;
   6049 
   6050 
   6051 typedef VkResult (VKAPI_PTR *PFN_vkGetShaderInfoAMD)(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo);
   6052 
   6053 #ifndef VK_NO_PROTOTYPES
   6054 VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInfoAMD(
   6055     VkDevice                                    device,
   6056     VkPipeline                                  pipeline,
   6057     VkShaderStageFlagBits                       shaderStage,
   6058     VkShaderInfoTypeAMD                         infoType,
   6059     size_t*                                     pInfoSize,
   6060     void*                                       pInfo);
   6061 #endif
   6062 
   6063 #define VK_AMD_shader_image_load_store_lod 1
   6064 #define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1
   6065 #define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME "VK_AMD_shader_image_load_store_lod"
   6066 
   6067 
   6068 #define VK_IMG_format_pvrtc 1
   6069 #define VK_IMG_FORMAT_PVRTC_SPEC_VERSION  1
   6070 #define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc"
   6071 
   6072 
   6073 #define VK_NV_external_memory_capabilities 1
   6074 #define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
   6075 #define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities"
   6076 
   6077 
   6078 typedef enum VkExternalMemoryHandleTypeFlagBitsNV {
   6079     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,
   6080     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,
   6081     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,
   6082     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,
   6083     VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
   6084 } VkExternalMemoryHandleTypeFlagBitsNV;
   6085 typedef VkFlags VkExternalMemoryHandleTypeFlagsNV;
   6086 
   6087 typedef enum VkExternalMemoryFeatureFlagBitsNV {
   6088     VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001,
   6089     VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002,
   6090     VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004,
   6091     VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
   6092 } VkExternalMemoryFeatureFlagBitsNV;
   6093 typedef VkFlags VkExternalMemoryFeatureFlagsNV;
   6094 
   6095 typedef struct VkExternalImageFormatPropertiesNV {
   6096     VkImageFormatProperties              imageFormatProperties;
   6097     VkExternalMemoryFeatureFlagsNV       externalMemoryFeatures;
   6098     VkExternalMemoryHandleTypeFlagsNV    exportFromImportedHandleTypes;
   6099     VkExternalMemoryHandleTypeFlagsNV    compatibleHandleTypes;
   6100 } VkExternalImageFormatPropertiesNV;
   6101 
   6102 
   6103 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
   6104 
   6105 #ifndef VK_NO_PROTOTYPES
   6106 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
   6107     VkPhysicalDevice                            physicalDevice,
   6108     VkFormat                                    format,
   6109     VkImageType                                 type,
   6110     VkImageTiling                               tiling,
   6111     VkImageUsageFlags                           usage,
   6112     VkImageCreateFlags                          flags,
   6113     VkExternalMemoryHandleTypeFlagsNV           externalHandleType,
   6114     VkExternalImageFormatPropertiesNV*          pExternalImageFormatProperties);
   6115 #endif
   6116 
   6117 #define VK_NV_external_memory 1
   6118 #define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1
   6119 #define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory"
   6120 
   6121 typedef struct VkExternalMemoryImageCreateInfoNV {
   6122     VkStructureType                      sType;
   6123     const void*                          pNext;
   6124     VkExternalMemoryHandleTypeFlagsNV    handleTypes;
   6125 } VkExternalMemoryImageCreateInfoNV;
   6126 
   6127 typedef struct VkExportMemoryAllocateInfoNV {
   6128     VkStructureType                      sType;
   6129     const void*                          pNext;
   6130     VkExternalMemoryHandleTypeFlagsNV    handleTypes;
   6131 } VkExportMemoryAllocateInfoNV;
   6132 
   6133 
   6134 
   6135 #define VK_EXT_validation_flags 1
   6136 #define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 1
   6137 #define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags"
   6138 
   6139 
   6140 typedef enum VkValidationCheckEXT {
   6141     VK_VALIDATION_CHECK_ALL_EXT = 0,
   6142     VK_VALIDATION_CHECK_SHADERS_EXT = 1,
   6143     VK_VALIDATION_CHECK_BEGIN_RANGE_EXT = VK_VALIDATION_CHECK_ALL_EXT,
   6144     VK_VALIDATION_CHECK_END_RANGE_EXT = VK_VALIDATION_CHECK_SHADERS_EXT,
   6145     VK_VALIDATION_CHECK_RANGE_SIZE_EXT = (VK_VALIDATION_CHECK_SHADERS_EXT - VK_VALIDATION_CHECK_ALL_EXT + 1),
   6146     VK_VALIDATION_CHECK_MAX_ENUM_EXT = 0x7FFFFFFF
   6147 } VkValidationCheckEXT;
   6148 
   6149 typedef struct VkValidationFlagsEXT {
   6150     VkStructureType          sType;
   6151     const void*              pNext;
   6152     uint32_t                 disabledValidationCheckCount;
   6153     VkValidationCheckEXT*    pDisabledValidationChecks;
   6154 } VkValidationFlagsEXT;
   6155 
   6156 
   6157 
   6158 #define VK_EXT_shader_subgroup_ballot 1
   6159 #define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1
   6160 #define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot"
   6161 
   6162 
   6163 #define VK_EXT_shader_subgroup_vote 1
   6164 #define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1
   6165 #define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote"
   6166 
   6167 
   6168 #define VK_NVX_device_generated_commands 1
   6169 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkObjectTableNVX)
   6170 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNVX)
   6171 
   6172 #define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3
   6173 #define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands"
   6174 
   6175 
   6176 typedef enum VkIndirectCommandsTokenTypeNVX {
   6177     VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX = 0,
   6178     VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX = 1,
   6179     VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX = 2,
   6180     VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX = 3,
   6181     VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX = 4,
   6182     VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX = 5,
   6183     VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX = 6,
   6184     VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX = 7,
   6185     VK_INDIRECT_COMMANDS_TOKEN_TYPE_BEGIN_RANGE_NVX = VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX,
   6186     VK_INDIRECT_COMMANDS_TOKEN_TYPE_END_RANGE_NVX = VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX,
   6187     VK_INDIRECT_COMMANDS_TOKEN_TYPE_RANGE_SIZE_NVX = (VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX - VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX + 1),
   6188     VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NVX = 0x7FFFFFFF
   6189 } VkIndirectCommandsTokenTypeNVX;
   6190 
   6191 typedef enum VkObjectEntryTypeNVX {
   6192     VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX = 0,
   6193     VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX = 1,
   6194     VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX = 2,
   6195     VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX = 3,
   6196     VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX = 4,
   6197     VK_OBJECT_ENTRY_TYPE_BEGIN_RANGE_NVX = VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX,
   6198     VK_OBJECT_ENTRY_TYPE_END_RANGE_NVX = VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX,
   6199     VK_OBJECT_ENTRY_TYPE_RANGE_SIZE_NVX = (VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX - VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX + 1),
   6200     VK_OBJECT_ENTRY_TYPE_MAX_ENUM_NVX = 0x7FFFFFFF
   6201 } VkObjectEntryTypeNVX;
   6202 
   6203 
   6204 typedef enum VkIndirectCommandsLayoutUsageFlagBitsNVX {
   6205     VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = 0x00000001,
   6206     VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = 0x00000002,
   6207     VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = 0x00000004,
   6208     VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = 0x00000008,
   6209     VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NVX = 0x7FFFFFFF
   6210 } VkIndirectCommandsLayoutUsageFlagBitsNVX;
   6211 typedef VkFlags VkIndirectCommandsLayoutUsageFlagsNVX;
   6212 
   6213 typedef enum VkObjectEntryUsageFlagBitsNVX {
   6214     VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = 0x00000001,
   6215     VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = 0x00000002,
   6216     VK_OBJECT_ENTRY_USAGE_FLAG_BITS_MAX_ENUM_NVX = 0x7FFFFFFF
   6217 } VkObjectEntryUsageFlagBitsNVX;
   6218 typedef VkFlags VkObjectEntryUsageFlagsNVX;
   6219 
   6220 typedef struct VkDeviceGeneratedCommandsFeaturesNVX {
   6221     VkStructureType    sType;
   6222     const void*        pNext;
   6223     VkBool32           computeBindingPointSupport;
   6224 } VkDeviceGeneratedCommandsFeaturesNVX;
   6225 
   6226 typedef struct VkDeviceGeneratedCommandsLimitsNVX {
   6227     VkStructureType    sType;
   6228     const void*        pNext;
   6229     uint32_t           maxIndirectCommandsLayoutTokenCount;
   6230     uint32_t           maxObjectEntryCounts;
   6231     uint32_t           minSequenceCountBufferOffsetAlignment;
   6232     uint32_t           minSequenceIndexBufferOffsetAlignment;
   6233     uint32_t           minCommandsTokenBufferOffsetAlignment;
   6234 } VkDeviceGeneratedCommandsLimitsNVX;
   6235 
   6236 typedef struct VkIndirectCommandsTokenNVX {
   6237     VkIndirectCommandsTokenTypeNVX    tokenType;
   6238     VkBuffer                          buffer;
   6239     VkDeviceSize                      offset;
   6240 } VkIndirectCommandsTokenNVX;
   6241 
   6242 typedef struct VkIndirectCommandsLayoutTokenNVX {
   6243     VkIndirectCommandsTokenTypeNVX    tokenType;
   6244     uint32_t                          bindingUnit;
   6245     uint32_t                          dynamicCount;
   6246     uint32_t                          divisor;
   6247 } VkIndirectCommandsLayoutTokenNVX;
   6248 
   6249 typedef struct VkIndirectCommandsLayoutCreateInfoNVX {
   6250     VkStructureType                            sType;
   6251     const void*                                pNext;
   6252     VkPipelineBindPoint                        pipelineBindPoint;
   6253     VkIndirectCommandsLayoutUsageFlagsNVX      flags;
   6254     uint32_t                                   tokenCount;
   6255     const VkIndirectCommandsLayoutTokenNVX*    pTokens;
   6256 } VkIndirectCommandsLayoutCreateInfoNVX;
   6257 
   6258 typedef struct VkCmdProcessCommandsInfoNVX {
   6259     VkStructureType                      sType;
   6260     const void*                          pNext;
   6261     VkObjectTableNVX                     objectTable;
   6262     VkIndirectCommandsLayoutNVX          indirectCommandsLayout;
   6263     uint32_t                             indirectCommandsTokenCount;
   6264     const VkIndirectCommandsTokenNVX*    pIndirectCommandsTokens;
   6265     uint32_t                             maxSequencesCount;
   6266     VkCommandBuffer                      targetCommandBuffer;
   6267     VkBuffer                             sequencesCountBuffer;
   6268     VkDeviceSize                         sequencesCountOffset;
   6269     VkBuffer                             sequencesIndexBuffer;
   6270     VkDeviceSize                         sequencesIndexOffset;
   6271 } VkCmdProcessCommandsInfoNVX;
   6272 
   6273 typedef struct VkCmdReserveSpaceForCommandsInfoNVX {
   6274     VkStructureType                sType;
   6275     const void*                    pNext;
   6276     VkObjectTableNVX               objectTable;
   6277     VkIndirectCommandsLayoutNVX    indirectCommandsLayout;
   6278     uint32_t                       maxSequencesCount;
   6279 } VkCmdReserveSpaceForCommandsInfoNVX;
   6280 
   6281 typedef struct VkObjectTableCreateInfoNVX {
   6282     VkStructureType                      sType;
   6283     const void*                          pNext;
   6284     uint32_t                             objectCount;
   6285     const VkObjectEntryTypeNVX*          pObjectEntryTypes;
   6286     const uint32_t*                      pObjectEntryCounts;
   6287     const VkObjectEntryUsageFlagsNVX*    pObjectEntryUsageFlags;
   6288     uint32_t                             maxUniformBuffersPerDescriptor;
   6289     uint32_t                             maxStorageBuffersPerDescriptor;
   6290     uint32_t                             maxStorageImagesPerDescriptor;
   6291     uint32_t                             maxSampledImagesPerDescriptor;
   6292     uint32_t                             maxPipelineLayouts;
   6293 } VkObjectTableCreateInfoNVX;
   6294 
   6295 typedef struct VkObjectTableEntryNVX {
   6296     VkObjectEntryTypeNVX          type;
   6297     VkObjectEntryUsageFlagsNVX    flags;
   6298 } VkObjectTableEntryNVX;
   6299 
   6300 typedef struct VkObjectTablePipelineEntryNVX {
   6301     VkObjectEntryTypeNVX          type;
   6302     VkObjectEntryUsageFlagsNVX    flags;
   6303     VkPipeline                    pipeline;
   6304 } VkObjectTablePipelineEntryNVX;
   6305 
   6306 typedef struct VkObjectTableDescriptorSetEntryNVX {
   6307     VkObjectEntryTypeNVX          type;
   6308     VkObjectEntryUsageFlagsNVX    flags;
   6309     VkPipelineLayout              pipelineLayout;
   6310     VkDescriptorSet               descriptorSet;
   6311 } VkObjectTableDescriptorSetEntryNVX;
   6312 
   6313 typedef struct VkObjectTableVertexBufferEntryNVX {
   6314     VkObjectEntryTypeNVX          type;
   6315     VkObjectEntryUsageFlagsNVX    flags;
   6316     VkBuffer                      buffer;
   6317 } VkObjectTableVertexBufferEntryNVX;
   6318 
   6319 typedef struct VkObjectTableIndexBufferEntryNVX {
   6320     VkObjectEntryTypeNVX          type;
   6321     VkObjectEntryUsageFlagsNVX    flags;
   6322     VkBuffer                      buffer;
   6323     VkIndexType                   indexType;
   6324 } VkObjectTableIndexBufferEntryNVX;
   6325 
   6326 typedef struct VkObjectTablePushConstantEntryNVX {
   6327     VkObjectEntryTypeNVX          type;
   6328     VkObjectEntryUsageFlagsNVX    flags;
   6329     VkPipelineLayout              pipelineLayout;
   6330     VkShaderStageFlags            stageFlags;
   6331 } VkObjectTablePushConstantEntryNVX;
   6332 
   6333 
   6334 typedef void (VKAPI_PTR *PFN_vkCmdProcessCommandsNVX)(VkCommandBuffer commandBuffer, const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo);
   6335 typedef void (VKAPI_PTR *PFN_vkCmdReserveSpaceForCommandsNVX)(VkCommandBuffer commandBuffer, const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo);
   6336 typedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectCommandsLayoutNVX)(VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout);
   6337 typedef void (VKAPI_PTR *PFN_vkDestroyIndirectCommandsLayoutNVX)(VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator);
   6338 typedef VkResult (VKAPI_PTR *PFN_vkCreateObjectTableNVX)(VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable);
   6339 typedef void (VKAPI_PTR *PFN_vkDestroyObjectTableNVX)(VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator);
   6340 typedef VkResult (VKAPI_PTR *PFN_vkRegisterObjectsNVX)(VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectTableEntryNVX* const*    ppObjectTableEntries, const uint32_t* pObjectIndices);
   6341 typedef VkResult (VKAPI_PTR *PFN_vkUnregisterObjectsNVX)(VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices);
   6342 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX)(VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits);
   6343 
   6344 #ifndef VK_NO_PROTOTYPES
   6345 VKAPI_ATTR void VKAPI_CALL vkCmdProcessCommandsNVX(
   6346     VkCommandBuffer                             commandBuffer,
   6347     const VkCmdProcessCommandsInfoNVX*          pProcessCommandsInfo);
   6348 
   6349 VKAPI_ATTR void VKAPI_CALL vkCmdReserveSpaceForCommandsNVX(
   6350     VkCommandBuffer                             commandBuffer,
   6351     const VkCmdReserveSpaceForCommandsInfoNVX*  pReserveSpaceInfo);
   6352 
   6353 VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutNVX(
   6354     VkDevice                                    device,
   6355     const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
   6356     const VkAllocationCallbacks*                pAllocator,
   6357     VkIndirectCommandsLayoutNVX*                pIndirectCommandsLayout);
   6358 
   6359 VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutNVX(
   6360     VkDevice                                    device,
   6361     VkIndirectCommandsLayoutNVX                 indirectCommandsLayout,
   6362     const VkAllocationCallbacks*                pAllocator);
   6363 
   6364 VKAPI_ATTR VkResult VKAPI_CALL vkCreateObjectTableNVX(
   6365     VkDevice                                    device,
   6366     const VkObjectTableCreateInfoNVX*           pCreateInfo,
   6367     const VkAllocationCallbacks*                pAllocator,
   6368     VkObjectTableNVX*                           pObjectTable);
   6369 
   6370 VKAPI_ATTR void VKAPI_CALL vkDestroyObjectTableNVX(
   6371     VkDevice                                    device,
   6372     VkObjectTableNVX                            objectTable,
   6373     const VkAllocationCallbacks*                pAllocator);
   6374 
   6375 VKAPI_ATTR VkResult VKAPI_CALL vkRegisterObjectsNVX(
   6376     VkDevice                                    device,
   6377     VkObjectTableNVX                            objectTable,
   6378     uint32_t                                    objectCount,
   6379     const VkObjectTableEntryNVX* const*         ppObjectTableEntries,
   6380     const uint32_t*                             pObjectIndices);
   6381 
   6382 VKAPI_ATTR VkResult VKAPI_CALL vkUnregisterObjectsNVX(
   6383     VkDevice                                    device,
   6384     VkObjectTableNVX                            objectTable,
   6385     uint32_t                                    objectCount,
   6386     const VkObjectEntryTypeNVX*                 pObjectEntryTypes,
   6387     const uint32_t*                             pObjectIndices);
   6388 
   6389 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
   6390     VkPhysicalDevice                            physicalDevice,
   6391     VkDeviceGeneratedCommandsFeaturesNVX*       pFeatures,
   6392     VkDeviceGeneratedCommandsLimitsNVX*         pLimits);
   6393 #endif
   6394 
   6395 #define VK_NV_clip_space_w_scaling 1
   6396 #define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1
   6397 #define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling"
   6398 
   6399 typedef struct VkViewportWScalingNV {
   6400     float    xcoeff;
   6401     float    ycoeff;
   6402 } VkViewportWScalingNV;
   6403 
   6404 typedef struct VkPipelineViewportWScalingStateCreateInfoNV {
   6405     VkStructureType                sType;
   6406     const void*                    pNext;
   6407     VkBool32                       viewportWScalingEnable;
   6408     uint32_t                       viewportCount;
   6409     const VkViewportWScalingNV*    pViewportWScalings;
   6410 } VkPipelineViewportWScalingStateCreateInfoNV;
   6411 
   6412 
   6413 typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings);
   6414 
   6415 #ifndef VK_NO_PROTOTYPES
   6416 VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWScalingNV(
   6417     VkCommandBuffer                             commandBuffer,
   6418     uint32_t                                    firstViewport,
   6419     uint32_t                                    viewportCount,
   6420     const VkViewportWScalingNV*                 pViewportWScalings);
   6421 #endif
   6422 
   6423 #define VK_EXT_direct_mode_display 1
   6424 #define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1
   6425 #define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display"
   6426 
   6427 typedef VkResult (VKAPI_PTR *PFN_vkReleaseDisplayEXT)(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
   6428 
   6429 #ifndef VK_NO_PROTOTYPES
   6430 VKAPI_ATTR VkResult VKAPI_CALL vkReleaseDisplayEXT(
   6431     VkPhysicalDevice                            physicalDevice,
   6432     VkDisplayKHR                                display);
   6433 #endif
   6434 
   6435 #define VK_EXT_display_surface_counter 1
   6436 #define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1
   6437 #define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter"
   6438 #define VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT
   6439 
   6440 
   6441 typedef enum VkSurfaceCounterFlagBitsEXT {
   6442     VK_SURFACE_COUNTER_VBLANK_EXT = 0x00000001,
   6443     VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
   6444 } VkSurfaceCounterFlagBitsEXT;
   6445 typedef VkFlags VkSurfaceCounterFlagsEXT;
   6446 
   6447 typedef struct VkSurfaceCapabilities2EXT {
   6448     VkStructureType                  sType;
   6449     void*                            pNext;
   6450     uint32_t                         minImageCount;
   6451     uint32_t                         maxImageCount;
   6452     VkExtent2D                       currentExtent;
   6453     VkExtent2D                       minImageExtent;
   6454     VkExtent2D                       maxImageExtent;
   6455     uint32_t                         maxImageArrayLayers;
   6456     VkSurfaceTransformFlagsKHR       supportedTransforms;
   6457     VkSurfaceTransformFlagBitsKHR    currentTransform;
   6458     VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
   6459     VkImageUsageFlags                supportedUsageFlags;
   6460     VkSurfaceCounterFlagsEXT         supportedSurfaceCounters;
   6461 } VkSurfaceCapabilities2EXT;
   6462 
   6463 
   6464 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
   6465 
   6466 #ifndef VK_NO_PROTOTYPES
   6467 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT(
   6468     VkPhysicalDevice                            physicalDevice,
   6469     VkSurfaceKHR                                surface,
   6470     VkSurfaceCapabilities2EXT*                  pSurfaceCapabilities);
   6471 #endif
   6472 
   6473 #define VK_EXT_display_control 1
   6474 #define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1
   6475 #define VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME "VK_EXT_display_control"
   6476 
   6477 
   6478 typedef enum VkDisplayPowerStateEXT {
   6479     VK_DISPLAY_POWER_STATE_OFF_EXT = 0,
   6480     VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,
   6481     VK_DISPLAY_POWER_STATE_ON_EXT = 2,
   6482     VK_DISPLAY_POWER_STATE_BEGIN_RANGE_EXT = VK_DISPLAY_POWER_STATE_OFF_EXT,
   6483     VK_DISPLAY_POWER_STATE_END_RANGE_EXT = VK_DISPLAY_POWER_STATE_ON_EXT,
   6484     VK_DISPLAY_POWER_STATE_RANGE_SIZE_EXT = (VK_DISPLAY_POWER_STATE_ON_EXT - VK_DISPLAY_POWER_STATE_OFF_EXT + 1),
   6485     VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 0x7FFFFFFF
   6486 } VkDisplayPowerStateEXT;
   6487 
   6488 typedef enum VkDeviceEventTypeEXT {
   6489     VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0,
   6490     VK_DEVICE_EVENT_TYPE_BEGIN_RANGE_EXT = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT,
   6491     VK_DEVICE_EVENT_TYPE_END_RANGE_EXT = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT,
   6492     VK_DEVICE_EVENT_TYPE_RANGE_SIZE_EXT = (VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT + 1),
   6493     VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
   6494 } VkDeviceEventTypeEXT;
   6495 
   6496 typedef enum VkDisplayEventTypeEXT {
   6497     VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,
   6498     VK_DISPLAY_EVENT_TYPE_BEGIN_RANGE_EXT = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT,
   6499     VK_DISPLAY_EVENT_TYPE_END_RANGE_EXT = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT,
   6500     VK_DISPLAY_EVENT_TYPE_RANGE_SIZE_EXT = (VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT + 1),
   6501     VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
   6502 } VkDisplayEventTypeEXT;
   6503 
   6504 typedef struct VkDisplayPowerInfoEXT {
   6505     VkStructureType           sType;
   6506     const void*               pNext;
   6507     VkDisplayPowerStateEXT    powerState;
   6508 } VkDisplayPowerInfoEXT;
   6509 
   6510 typedef struct VkDeviceEventInfoEXT {
   6511     VkStructureType         sType;
   6512     const void*             pNext;
   6513     VkDeviceEventTypeEXT    deviceEvent;
   6514 } VkDeviceEventInfoEXT;
   6515 
   6516 typedef struct VkDisplayEventInfoEXT {
   6517     VkStructureType          sType;
   6518     const void*              pNext;
   6519     VkDisplayEventTypeEXT    displayEvent;
   6520 } VkDisplayEventInfoEXT;
   6521 
   6522 typedef struct VkSwapchainCounterCreateInfoEXT {
   6523     VkStructureType             sType;
   6524     const void*                 pNext;
   6525     VkSurfaceCounterFlagsEXT    surfaceCounters;
   6526 } VkSwapchainCounterCreateInfoEXT;
   6527 
   6528 
   6529 typedef VkResult (VKAPI_PTR *PFN_vkDisplayPowerControlEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
   6530 typedef VkResult (VKAPI_PTR *PFN_vkRegisterDeviceEventEXT)(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
   6531 typedef VkResult (VKAPI_PTR *PFN_vkRegisterDisplayEventEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
   6532 typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainCounterEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue);
   6533 
   6534 #ifndef VK_NO_PROTOTYPES
   6535 VKAPI_ATTR VkResult VKAPI_CALL vkDisplayPowerControlEXT(
   6536     VkDevice                                    device,
   6537     VkDisplayKHR                                display,
   6538     const VkDisplayPowerInfoEXT*                pDisplayPowerInfo);
   6539 
   6540 VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDeviceEventEXT(
   6541     VkDevice                                    device,
   6542     const VkDeviceEventInfoEXT*                 pDeviceEventInfo,
   6543     const VkAllocationCallbacks*                pAllocator,
   6544     VkFence*                                    pFence);
   6545 
   6546 VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDisplayEventEXT(
   6547     VkDevice                                    device,
   6548     VkDisplayKHR                                display,
   6549     const VkDisplayEventInfoEXT*                pDisplayEventInfo,
   6550     const VkAllocationCallbacks*                pAllocator,
   6551     VkFence*                                    pFence);
   6552 
   6553 VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainCounterEXT(
   6554     VkDevice                                    device,
   6555     VkSwapchainKHR                              swapchain,
   6556     VkSurfaceCounterFlagBitsEXT                 counter,
   6557     uint64_t*                                   pCounterValue);
   6558 #endif
   6559 
   6560 #define VK_GOOGLE_display_timing 1
   6561 #define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1
   6562 #define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing"
   6563 
   6564 typedef struct VkRefreshCycleDurationGOOGLE {
   6565     uint64_t    refreshDuration;
   6566 } VkRefreshCycleDurationGOOGLE;
   6567 
   6568 typedef struct VkPastPresentationTimingGOOGLE {
   6569     uint32_t    presentID;
   6570     uint64_t    desiredPresentTime;
   6571     uint64_t    actualPresentTime;
   6572     uint64_t    earliestPresentTime;
   6573     uint64_t    presentMargin;
   6574 } VkPastPresentationTimingGOOGLE;
   6575 
   6576 typedef struct VkPresentTimeGOOGLE {
   6577     uint32_t    presentID;
   6578     uint64_t    desiredPresentTime;
   6579 } VkPresentTimeGOOGLE;
   6580 
   6581 typedef struct VkPresentTimesInfoGOOGLE {
   6582     VkStructureType               sType;
   6583     const void*                   pNext;
   6584     uint32_t                      swapchainCount;
   6585     const VkPresentTimeGOOGLE*    pTimes;
   6586 } VkPresentTimesInfoGOOGLE;
   6587 
   6588 
   6589 typedef VkResult (VKAPI_PTR *PFN_vkGetRefreshCycleDurationGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
   6590 typedef VkResult (VKAPI_PTR *PFN_vkGetPastPresentationTimingGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings);
   6591 
   6592 #ifndef VK_NO_PROTOTYPES
   6593 VKAPI_ATTR VkResult VKAPI_CALL vkGetRefreshCycleDurationGOOGLE(
   6594     VkDevice                                    device,
   6595     VkSwapchainKHR                              swapchain,
   6596     VkRefreshCycleDurationGOOGLE*               pDisplayTimingProperties);
   6597 
   6598 VKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingGOOGLE(
   6599     VkDevice                                    device,
   6600     VkSwapchainKHR                              swapchain,
   6601     uint32_t*                                   pPresentationTimingCount,
   6602     VkPastPresentationTimingGOOGLE*             pPresentationTimings);
   6603 #endif
   6604 
   6605 #define VK_NV_sample_mask_override_coverage 1
   6606 #define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1
   6607 #define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage"
   6608 
   6609 
   6610 #define VK_NV_geometry_shader_passthrough 1
   6611 #define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1
   6612 #define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough"
   6613 
   6614 
   6615 #define VK_NV_viewport_array2 1
   6616 #define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION 1
   6617 #define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME "VK_NV_viewport_array2"
   6618 
   6619 
   6620 #define VK_NVX_multiview_per_view_attributes 1
   6621 #define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1
   6622 #define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes"
   6623 
   6624 typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
   6625     VkStructureType    sType;
   6626     void*              pNext;
   6627     VkBool32           perViewPositionAllComponents;
   6628 } VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
   6629 
   6630 
   6631 
   6632 #define VK_NV_viewport_swizzle 1
   6633 #define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1
   6634 #define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle"
   6635 
   6636 
   6637 typedef enum VkViewportCoordinateSwizzleNV {
   6638     VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0,
   6639     VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1,
   6640     VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2,
   6641     VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3,
   6642     VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4,
   6643     VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5,
   6644     VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6,
   6645     VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7,
   6646     VK_VIEWPORT_COORDINATE_SWIZZLE_BEGIN_RANGE_NV = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
   6647     VK_VIEWPORT_COORDINATE_SWIZZLE_END_RANGE_NV = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV,
   6648     VK_VIEWPORT_COORDINATE_SWIZZLE_RANGE_SIZE_NV = (VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV + 1),
   6649     VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 0x7FFFFFFF
   6650 } VkViewportCoordinateSwizzleNV;
   6651 
   6652 typedef VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV;
   6653 
   6654 typedef struct VkViewportSwizzleNV {
   6655     VkViewportCoordinateSwizzleNV    x;
   6656     VkViewportCoordinateSwizzleNV    y;
   6657     VkViewportCoordinateSwizzleNV    z;
   6658     VkViewportCoordinateSwizzleNV    w;
   6659 } VkViewportSwizzleNV;
   6660 
   6661 typedef struct VkPipelineViewportSwizzleStateCreateInfoNV {
   6662     VkStructureType                                sType;
   6663     const void*                                    pNext;
   6664     VkPipelineViewportSwizzleStateCreateFlagsNV    flags;
   6665     uint32_t                                       viewportCount;
   6666     const VkViewportSwizzleNV*                     pViewportSwizzles;
   6667 } VkPipelineViewportSwizzleStateCreateInfoNV;
   6668 
   6669 
   6670 
   6671 #define VK_EXT_discard_rectangles 1
   6672 #define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1
   6673 #define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
   6674 
   6675 
   6676 typedef enum VkDiscardRectangleModeEXT {
   6677     VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,
   6678     VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,
   6679     VK_DISCARD_RECTANGLE_MODE_BEGIN_RANGE_EXT = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
   6680     VK_DISCARD_RECTANGLE_MODE_END_RANGE_EXT = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT,
   6681     VK_DISCARD_RECTANGLE_MODE_RANGE_SIZE_EXT = (VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT - VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT + 1),
   6682     VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
   6683 } VkDiscardRectangleModeEXT;
   6684 
   6685 typedef VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT;
   6686 
   6687 typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT {
   6688     VkStructureType    sType;
   6689     void*              pNext;
   6690     uint32_t           maxDiscardRectangles;
   6691 } VkPhysicalDeviceDiscardRectanglePropertiesEXT;
   6692 
   6693 typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT {
   6694     VkStructureType                                  sType;
   6695     const void*                                      pNext;
   6696     VkPipelineDiscardRectangleStateCreateFlagsEXT    flags;
   6697     VkDiscardRectangleModeEXT                        discardRectangleMode;
   6698     uint32_t                                         discardRectangleCount;
   6699     const VkRect2D*                                  pDiscardRectangles;
   6700 } VkPipelineDiscardRectangleStateCreateInfoEXT;
   6701 
   6702 
   6703 typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEXT)(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles);
   6704 
   6705 #ifndef VK_NO_PROTOTYPES
   6706 VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT(
   6707     VkCommandBuffer                             commandBuffer,
   6708     uint32_t                                    firstDiscardRectangle,
   6709     uint32_t                                    discardRectangleCount,
   6710     const VkRect2D*                             pDiscardRectangles);
   6711 #endif
   6712 
   6713 #define VK_EXT_conservative_rasterization 1
   6714 #define VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION 1
   6715 #define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME "VK_EXT_conservative_rasterization"
   6716 
   6717 
   6718 typedef enum VkConservativeRasterizationModeEXT {
   6719     VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0,
   6720     VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1,
   6721     VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2,
   6722     VK_CONSERVATIVE_RASTERIZATION_MODE_BEGIN_RANGE_EXT = VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT,
   6723     VK_CONSERVATIVE_RASTERIZATION_MODE_END_RANGE_EXT = VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT,
   6724     VK_CONSERVATIVE_RASTERIZATION_MODE_RANGE_SIZE_EXT = (VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT - VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT + 1),
   6725     VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
   6726 } VkConservativeRasterizationModeEXT;
   6727 
   6728 typedef VkFlags VkPipelineRasterizationConservativeStateCreateFlagsEXT;
   6729 
   6730 typedef struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT {
   6731     VkStructureType    sType;
   6732     void*              pNext;
   6733     float              primitiveOverestimationSize;
   6734     float              maxExtraPrimitiveOverestimationSize;
   6735     float              extraPrimitiveOverestimationSizeGranularity;
   6736     VkBool32           primitiveUnderestimation;
   6737     VkBool32           conservativePointAndLineRasterization;
   6738     VkBool32           degenerateTrianglesRasterized;
   6739     VkBool32           degenerateLinesRasterized;
   6740     VkBool32           fullyCoveredFragmentShaderInputVariable;
   6741     VkBool32           conservativeRasterizationPostDepthCoverage;
   6742 } VkPhysicalDeviceConservativeRasterizationPropertiesEXT;
   6743 
   6744 typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT {
   6745     VkStructureType                                           sType;
   6746     const void*                                               pNext;
   6747     VkPipelineRasterizationConservativeStateCreateFlagsEXT    flags;
   6748     VkConservativeRasterizationModeEXT                        conservativeRasterizationMode;
   6749     float                                                     extraPrimitiveOverestimationSize;
   6750 } VkPipelineRasterizationConservativeStateCreateInfoEXT;
   6751 
   6752 
   6753 
   6754 #define VK_EXT_swapchain_colorspace 1
   6755 #define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 3
   6756 #define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace"
   6757 
   6758 
   6759 #define VK_EXT_hdr_metadata 1
   6760 #define VK_EXT_HDR_METADATA_SPEC_VERSION  1
   6761 #define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata"
   6762 
   6763 typedef struct VkXYColorEXT {
   6764     float    x;
   6765     float    y;
   6766 } VkXYColorEXT;
   6767 
   6768 typedef struct VkHdrMetadataEXT {
   6769     VkStructureType    sType;
   6770     const void*        pNext;
   6771     VkXYColorEXT       displayPrimaryRed;
   6772     VkXYColorEXT       displayPrimaryGreen;
   6773     VkXYColorEXT       displayPrimaryBlue;
   6774     VkXYColorEXT       whitePoint;
   6775     float              maxLuminance;
   6776     float              minLuminance;
   6777     float              maxContentLightLevel;
   6778     float              maxFrameAverageLightLevel;
   6779 } VkHdrMetadataEXT;
   6780 
   6781 
   6782 typedef void (VKAPI_PTR *PFN_vkSetHdrMetadataEXT)(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata);
   6783 
   6784 #ifndef VK_NO_PROTOTYPES
   6785 VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT(
   6786     VkDevice                                    device,
   6787     uint32_t                                    swapchainCount,
   6788     const VkSwapchainKHR*                       pSwapchains,
   6789     const VkHdrMetadataEXT*                     pMetadata);
   6790 #endif
   6791 
   6792 #define VK_EXT_external_memory_dma_buf 1
   6793 #define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1
   6794 #define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME "VK_EXT_external_memory_dma_buf"
   6795 
   6796 
   6797 #define VK_EXT_queue_family_foreign 1
   6798 #define VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION 1
   6799 #define VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME "VK_EXT_queue_family_foreign"
   6800 #define VK_QUEUE_FAMILY_FOREIGN_EXT       (~0U-2)
   6801 
   6802 
   6803 #define VK_EXT_debug_utils 1
   6804 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugUtilsMessengerEXT)
   6805 
   6806 #define VK_EXT_DEBUG_UTILS_SPEC_VERSION   1
   6807 #define VK_EXT_DEBUG_UTILS_EXTENSION_NAME "VK_EXT_debug_utils"
   6808 
   6809 typedef VkFlags VkDebugUtilsMessengerCallbackDataFlagsEXT;
   6810 typedef VkFlags VkDebugUtilsMessengerCreateFlagsEXT;
   6811 
   6812 typedef enum VkDebugUtilsMessageSeverityFlagBitsEXT {
   6813     VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001,
   6814     VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 0x00000010,
   6815     VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0x00000100,
   6816     VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0x00001000,
   6817     VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
   6818 } VkDebugUtilsMessageSeverityFlagBitsEXT;
   6819 typedef VkFlags VkDebugUtilsMessageSeverityFlagsEXT;
   6820 
   6821 typedef enum VkDebugUtilsMessageTypeFlagBitsEXT {
   6822     VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0x00000001,
   6823     VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0x00000002,
   6824     VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004,
   6825     VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
   6826 } VkDebugUtilsMessageTypeFlagBitsEXT;
   6827 typedef VkFlags VkDebugUtilsMessageTypeFlagsEXT;
   6828 
   6829 typedef struct VkDebugUtilsObjectNameInfoEXT {
   6830     VkStructureType    sType;
   6831     const void*        pNext;
   6832     VkObjectType       objectType;
   6833     uint64_t           objectHandle;
   6834     const char*        pObjectName;
   6835 } VkDebugUtilsObjectNameInfoEXT;
   6836 
   6837 typedef struct VkDebugUtilsObjectTagInfoEXT {
   6838     VkStructureType    sType;
   6839     const void*        pNext;
   6840     VkObjectType       objectType;
   6841     uint64_t           objectHandle;
   6842     uint64_t           tagName;
   6843     size_t             tagSize;
   6844     const void*        pTag;
   6845 } VkDebugUtilsObjectTagInfoEXT;
   6846 
   6847 typedef struct VkDebugUtilsLabelEXT {
   6848     VkStructureType    sType;
   6849     const void*        pNext;
   6850     const char*        pLabelName;
   6851     float              color[4];
   6852 } VkDebugUtilsLabelEXT;
   6853 
   6854 typedef struct VkDebugUtilsMessengerCallbackDataEXT {
   6855     VkStructureType                              sType;
   6856     const void*                                  pNext;
   6857     VkDebugUtilsMessengerCallbackDataFlagsEXT    flags;
   6858     const char*                                  pMessageIdName;
   6859     int32_t                                      messageIdNumber;
   6860     const char*                                  pMessage;
   6861     uint32_t                                     queueLabelCount;
   6862     VkDebugUtilsLabelEXT*                        pQueueLabels;
   6863     uint32_t                                     cmdBufLabelCount;
   6864     VkDebugUtilsLabelEXT*                        pCmdBufLabels;
   6865     uint32_t                                     objectCount;
   6866     VkDebugUtilsObjectNameInfoEXT*               pObjects;
   6867 } VkDebugUtilsMessengerCallbackDataEXT;
   6868 
   6869 typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)(
   6870     VkDebugUtilsMessageSeverityFlagBitsEXT           messageSeverity,
   6871     VkDebugUtilsMessageTypeFlagsEXT                  messageType,
   6872     const VkDebugUtilsMessengerCallbackDataEXT*      pCallbackData,
   6873     void*                                            pUserData);
   6874 
   6875 typedef struct VkDebugUtilsMessengerCreateInfoEXT {
   6876     VkStructureType                         sType;
   6877     const void*                             pNext;
   6878     VkDebugUtilsMessengerCreateFlagsEXT     flags;
   6879     VkDebugUtilsMessageSeverityFlagsEXT     messageSeverity;
   6880     VkDebugUtilsMessageTypeFlagsEXT         messageType;
   6881     PFN_vkDebugUtilsMessengerCallbackEXT    pfnUserCallback;
   6882     void*                                   pUserData;
   6883 } VkDebugUtilsMessengerCreateInfoEXT;
   6884 
   6885 
   6886 typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectNameEXT)(VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo);
   6887 typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectTagEXT)(VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo);
   6888 typedef void (VKAPI_PTR *PFN_vkQueueBeginDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);
   6889 typedef void (VKAPI_PTR *PFN_vkQueueEndDebugUtilsLabelEXT)(VkQueue queue);
   6890 typedef void (VKAPI_PTR *PFN_vkQueueInsertDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);
   6891 typedef void (VKAPI_PTR *PFN_vkCmdBeginDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);
   6892 typedef void (VKAPI_PTR *PFN_vkCmdEndDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer);
   6893 typedef void (VKAPI_PTR *PFN_vkCmdInsertDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);
   6894 typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugUtilsMessengerEXT)(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger);
   6895 typedef void (VKAPI_PTR *PFN_vkDestroyDebugUtilsMessengerEXT)(VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator);
   6896 typedef void (VKAPI_PTR *PFN_vkSubmitDebugUtilsMessageEXT)(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
   6897 
   6898 #ifndef VK_NO_PROTOTYPES
   6899 VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectNameEXT(
   6900     VkDevice                                    device,
   6901     const VkDebugUtilsObjectNameInfoEXT*        pNameInfo);
   6902 
   6903 VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectTagEXT(
   6904     VkDevice                                    device,
   6905     const VkDebugUtilsObjectTagInfoEXT*         pTagInfo);
   6906 
   6907 VKAPI_ATTR void VKAPI_CALL vkQueueBeginDebugUtilsLabelEXT(
   6908     VkQueue                                     queue,
   6909     const VkDebugUtilsLabelEXT*                 pLabelInfo);
   6910 
   6911 VKAPI_ATTR void VKAPI_CALL vkQueueEndDebugUtilsLabelEXT(
   6912     VkQueue                                     queue);
   6913 
   6914 VKAPI_ATTR void VKAPI_CALL vkQueueInsertDebugUtilsLabelEXT(
   6915     VkQueue                                     queue,
   6916     const VkDebugUtilsLabelEXT*                 pLabelInfo);
   6917 
   6918 VKAPI_ATTR void VKAPI_CALL vkCmdBeginDebugUtilsLabelEXT(
   6919     VkCommandBuffer                             commandBuffer,
   6920     const VkDebugUtilsLabelEXT*                 pLabelInfo);
   6921 
   6922 VKAPI_ATTR void VKAPI_CALL vkCmdEndDebugUtilsLabelEXT(
   6923     VkCommandBuffer                             commandBuffer);
   6924 
   6925 VKAPI_ATTR void VKAPI_CALL vkCmdInsertDebugUtilsLabelEXT(
   6926     VkCommandBuffer                             commandBuffer,
   6927     const VkDebugUtilsLabelEXT*                 pLabelInfo);
   6928 
   6929 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugUtilsMessengerEXT(
   6930     VkInstance                                  instance,
   6931     const VkDebugUtilsMessengerCreateInfoEXT*   pCreateInfo,
   6932     const VkAllocationCallbacks*                pAllocator,
   6933     VkDebugUtilsMessengerEXT*                   pMessenger);
   6934 
   6935 VKAPI_ATTR void VKAPI_CALL vkDestroyDebugUtilsMessengerEXT(
   6936     VkInstance                                  instance,
   6937     VkDebugUtilsMessengerEXT                    messenger,
   6938     const VkAllocationCallbacks*                pAllocator);
   6939 
   6940 VKAPI_ATTR void VKAPI_CALL vkSubmitDebugUtilsMessageEXT(
   6941     VkInstance                                  instance,
   6942     VkDebugUtilsMessageSeverityFlagBitsEXT      messageSeverity,
   6943     VkDebugUtilsMessageTypeFlagsEXT             messageTypes,
   6944     const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
   6945 #endif
   6946 
   6947 #define VK_EXT_sampler_filter_minmax 1
   6948 #define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 1
   6949 #define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
   6950 
   6951 
   6952 typedef enum VkSamplerReductionModeEXT {
   6953     VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0,
   6954     VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1,
   6955     VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2,
   6956     VK_SAMPLER_REDUCTION_MODE_BEGIN_RANGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT,
   6957     VK_SAMPLER_REDUCTION_MODE_END_RANGE_EXT = VK_SAMPLER_REDUCTION_MODE_MAX_EXT,
   6958     VK_SAMPLER_REDUCTION_MODE_RANGE_SIZE_EXT = (VK_SAMPLER_REDUCTION_MODE_MAX_EXT - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT + 1),
   6959     VK_SAMPLER_REDUCTION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
   6960 } VkSamplerReductionModeEXT;
   6961 
   6962 typedef struct VkSamplerReductionModeCreateInfoEXT {
   6963     VkStructureType              sType;
   6964     const void*                  pNext;
   6965     VkSamplerReductionModeEXT    reductionMode;
   6966 } VkSamplerReductionModeCreateInfoEXT;
   6967 
   6968 typedef struct VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
   6969     VkStructureType    sType;
   6970     void*              pNext;
   6971     VkBool32           filterMinmaxSingleComponentFormats;
   6972     VkBool32           filterMinmaxImageComponentMapping;
   6973 } VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
   6974 
   6975 
   6976 
   6977 #define VK_AMD_gpu_shader_int16 1
   6978 #define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 1
   6979 #define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME "VK_AMD_gpu_shader_int16"
   6980 
   6981 
   6982 #define VK_AMD_mixed_attachment_samples 1
   6983 #define VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION 1
   6984 #define VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME "VK_AMD_mixed_attachment_samples"
   6985 
   6986 
   6987 #define VK_AMD_shader_fragment_mask 1
   6988 #define VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION 1
   6989 #define VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME "VK_AMD_shader_fragment_mask"
   6990 
   6991 
   6992 #define VK_EXT_shader_stencil_export 1
   6993 #define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1
   6994 #define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME "VK_EXT_shader_stencil_export"
   6995 
   6996 
   6997 #define VK_EXT_sample_locations 1
   6998 #define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1
   6999 #define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations"
   7000 
   7001 typedef struct VkSampleLocationEXT {
   7002     float    x;
   7003     float    y;
   7004 } VkSampleLocationEXT;
   7005 
   7006 typedef struct VkSampleLocationsInfoEXT {
   7007     VkStructureType               sType;
   7008     const void*                   pNext;
   7009     VkSampleCountFlagBits         sampleLocationsPerPixel;
   7010     VkExtent2D                    sampleLocationGridSize;
   7011     uint32_t                      sampleLocationsCount;
   7012     const VkSampleLocationEXT*    pSampleLocations;
   7013 } VkSampleLocationsInfoEXT;
   7014 
   7015 typedef struct VkAttachmentSampleLocationsEXT {
   7016     uint32_t                    attachmentIndex;
   7017     VkSampleLocationsInfoEXT    sampleLocationsInfo;
   7018 } VkAttachmentSampleLocationsEXT;
   7019 
   7020 typedef struct VkSubpassSampleLocationsEXT {
   7021     uint32_t                    subpassIndex;
   7022     VkSampleLocationsInfoEXT    sampleLocationsInfo;
   7023 } VkSubpassSampleLocationsEXT;
   7024 
   7025 typedef struct VkRenderPassSampleLocationsBeginInfoEXT {
   7026     VkStructureType                          sType;
   7027     const void*                              pNext;
   7028     uint32_t                                 attachmentInitialSampleLocationsCount;
   7029     const VkAttachmentSampleLocationsEXT*    pAttachmentInitialSampleLocations;
   7030     uint32_t                                 postSubpassSampleLocationsCount;
   7031     const VkSubpassSampleLocationsEXT*       pPostSubpassSampleLocations;
   7032 } VkRenderPassSampleLocationsBeginInfoEXT;
   7033 
   7034 typedef struct VkPipelineSampleLocationsStateCreateInfoEXT {
   7035     VkStructureType             sType;
   7036     const void*                 pNext;
   7037     VkBool32                    sampleLocationsEnable;
   7038     VkSampleLocationsInfoEXT    sampleLocationsInfo;
   7039 } VkPipelineSampleLocationsStateCreateInfoEXT;
   7040 
   7041 typedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT {
   7042     VkStructureType       sType;
   7043     void*                 pNext;
   7044     VkSampleCountFlags    sampleLocationSampleCounts;
   7045     VkExtent2D            maxSampleLocationGridSize;
   7046     float                 sampleLocationCoordinateRange[2];
   7047     uint32_t              sampleLocationSubPixelBits;
   7048     VkBool32              variableSampleLocations;
   7049 } VkPhysicalDeviceSampleLocationsPropertiesEXT;
   7050 
   7051 typedef struct VkMultisamplePropertiesEXT {
   7052     VkStructureType    sType;
   7053     void*              pNext;
   7054     VkExtent2D         maxSampleLocationGridSize;
   7055 } VkMultisamplePropertiesEXT;
   7056 
   7057 
   7058 typedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEXT)(VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
   7059 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)(VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties);
   7060 
   7061 #ifndef VK_NO_PROTOTYPES
   7062 VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleLocationsEXT(
   7063     VkCommandBuffer                             commandBuffer,
   7064     const VkSampleLocationsInfoEXT*             pSampleLocationsInfo);
   7065 
   7066 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT(
   7067     VkPhysicalDevice                            physicalDevice,
   7068     VkSampleCountFlagBits                       samples,
   7069     VkMultisamplePropertiesEXT*                 pMultisampleProperties);
   7070 #endif
   7071 
   7072 #define VK_EXT_blend_operation_advanced 1
   7073 #define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2
   7074 #define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
   7075 
   7076 
   7077 typedef enum VkBlendOverlapEXT {
   7078     VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0,
   7079     VK_BLEND_OVERLAP_DISJOINT_EXT = 1,
   7080     VK_BLEND_OVERLAP_CONJOINT_EXT = 2,
   7081     VK_BLEND_OVERLAP_BEGIN_RANGE_EXT = VK_BLEND_OVERLAP_UNCORRELATED_EXT,
   7082     VK_BLEND_OVERLAP_END_RANGE_EXT = VK_BLEND_OVERLAP_CONJOINT_EXT,
   7083     VK_BLEND_OVERLAP_RANGE_SIZE_EXT = (VK_BLEND_OVERLAP_CONJOINT_EXT - VK_BLEND_OVERLAP_UNCORRELATED_EXT + 1),
   7084     VK_BLEND_OVERLAP_MAX_ENUM_EXT = 0x7FFFFFFF
   7085 } VkBlendOverlapEXT;
   7086 
   7087 typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
   7088     VkStructureType    sType;
   7089     void*              pNext;
   7090     VkBool32           advancedBlendCoherentOperations;
   7091 } VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
   7092 
   7093 typedef struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
   7094     VkStructureType    sType;
   7095     void*              pNext;
   7096     uint32_t           advancedBlendMaxColorAttachments;
   7097     VkBool32           advancedBlendIndependentBlend;
   7098     VkBool32           advancedBlendNonPremultipliedSrcColor;
   7099     VkBool32           advancedBlendNonPremultipliedDstColor;
   7100     VkBool32           advancedBlendCorrelatedOverlap;
   7101     VkBool32           advancedBlendAllOperations;
   7102 } VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
   7103 
   7104 typedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT {
   7105     VkStructureType      sType;
   7106     const void*          pNext;
   7107     VkBool32             srcPremultiplied;
   7108     VkBool32             dstPremultiplied;
   7109     VkBlendOverlapEXT    blendOverlap;
   7110 } VkPipelineColorBlendAdvancedStateCreateInfoEXT;
   7111 
   7112 
   7113 
   7114 #define VK_NV_fragment_coverage_to_color 1
   7115 #define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1
   7116 #define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME "VK_NV_fragment_coverage_to_color"
   7117 
   7118 typedef VkFlags VkPipelineCoverageToColorStateCreateFlagsNV;
   7119 
   7120 typedef struct VkPipelineCoverageToColorStateCreateInfoNV {
   7121     VkStructureType                                sType;
   7122     const void*                                    pNext;
   7123     VkPipelineCoverageToColorStateCreateFlagsNV    flags;
   7124     VkBool32                                       coverageToColorEnable;
   7125     uint32_t                                       coverageToColorLocation;
   7126 } VkPipelineCoverageToColorStateCreateInfoNV;
   7127 
   7128 
   7129 
   7130 #define VK_NV_framebuffer_mixed_samples 1
   7131 #define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1
   7132 #define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME "VK_NV_framebuffer_mixed_samples"
   7133 
   7134 
   7135 typedef enum VkCoverageModulationModeNV {
   7136     VK_COVERAGE_MODULATION_MODE_NONE_NV = 0,
   7137     VK_COVERAGE_MODULATION_MODE_RGB_NV = 1,
   7138     VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2,
   7139     VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3,
   7140     VK_COVERAGE_MODULATION_MODE_BEGIN_RANGE_NV = VK_COVERAGE_MODULATION_MODE_NONE_NV,
   7141     VK_COVERAGE_MODULATION_MODE_END_RANGE_NV = VK_COVERAGE_MODULATION_MODE_RGBA_NV,
   7142     VK_COVERAGE_MODULATION_MODE_RANGE_SIZE_NV = (VK_COVERAGE_MODULATION_MODE_RGBA_NV - VK_COVERAGE_MODULATION_MODE_NONE_NV + 1),
   7143     VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 0x7FFFFFFF
   7144 } VkCoverageModulationModeNV;
   7145 
   7146 typedef VkFlags VkPipelineCoverageModulationStateCreateFlagsNV;
   7147 
   7148 typedef struct VkPipelineCoverageModulationStateCreateInfoNV {
   7149     VkStructureType                                   sType;
   7150     const void*                                       pNext;
   7151     VkPipelineCoverageModulationStateCreateFlagsNV    flags;
   7152     VkCoverageModulationModeNV                        coverageModulationMode;
   7153     VkBool32                                          coverageModulationTableEnable;
   7154     uint32_t                                          coverageModulationTableCount;
   7155     const float*                                      pCoverageModulationTable;
   7156 } VkPipelineCoverageModulationStateCreateInfoNV;
   7157 
   7158 
   7159 
   7160 #define VK_NV_fill_rectangle 1
   7161 #define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1
   7162 #define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle"
   7163 
   7164 
   7165 #define VK_EXT_post_depth_coverage 1
   7166 #define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1
   7167 #define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage"
   7168 
   7169 
   7170 #define VK_EXT_validation_cache 1
   7171 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT)
   7172 
   7173 #define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1
   7174 #define VK_EXT_VALIDATION_CACHE_EXTENSION_NAME "VK_EXT_validation_cache"
   7175 #define VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT
   7176 
   7177 
   7178 typedef enum VkValidationCacheHeaderVersionEXT {
   7179     VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1,
   7180     VK_VALIDATION_CACHE_HEADER_VERSION_BEGIN_RANGE_EXT = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT,
   7181     VK_VALIDATION_CACHE_HEADER_VERSION_END_RANGE_EXT = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT,
   7182     VK_VALIDATION_CACHE_HEADER_VERSION_RANGE_SIZE_EXT = (VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT - VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT + 1),
   7183     VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 0x7FFFFFFF
   7184 } VkValidationCacheHeaderVersionEXT;
   7185 
   7186 typedef VkFlags VkValidationCacheCreateFlagsEXT;
   7187 
   7188 typedef struct VkValidationCacheCreateInfoEXT {
   7189     VkStructureType                    sType;
   7190     const void*                        pNext;
   7191     VkValidationCacheCreateFlagsEXT    flags;
   7192     size_t                             initialDataSize;
   7193     const void*                        pInitialData;
   7194 } VkValidationCacheCreateInfoEXT;
   7195 
   7196 typedef struct VkShaderModuleValidationCacheCreateInfoEXT {
   7197     VkStructureType         sType;
   7198     const void*             pNext;
   7199     VkValidationCacheEXT    validationCache;
   7200 } VkShaderModuleValidationCacheCreateInfoEXT;
   7201 
   7202 
   7203 typedef VkResult (VKAPI_PTR *PFN_vkCreateValidationCacheEXT)(VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache);
   7204 typedef void (VKAPI_PTR *PFN_vkDestroyValidationCacheEXT)(VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator);
   7205 typedef VkResult (VKAPI_PTR *PFN_vkMergeValidationCachesEXT)(VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches);
   7206 typedef VkResult (VKAPI_PTR *PFN_vkGetValidationCacheDataEXT)(VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData);
   7207 
   7208 #ifndef VK_NO_PROTOTYPES
   7209 VKAPI_ATTR VkResult VKAPI_CALL vkCreateValidationCacheEXT(
   7210     VkDevice                                    device,
   7211     const VkValidationCacheCreateInfoEXT*       pCreateInfo,
   7212     const VkAllocationCallbacks*                pAllocator,
   7213     VkValidationCacheEXT*                       pValidationCache);
   7214 
   7215 VKAPI_ATTR void VKAPI_CALL vkDestroyValidationCacheEXT(
   7216     VkDevice                                    device,
   7217     VkValidationCacheEXT                        validationCache,
   7218     const VkAllocationCallbacks*                pAllocator);
   7219 
   7220 VKAPI_ATTR VkResult VKAPI_CALL vkMergeValidationCachesEXT(
   7221     VkDevice                                    device,
   7222     VkValidationCacheEXT                        dstCache,
   7223     uint32_t                                    srcCacheCount,
   7224     const VkValidationCacheEXT*                 pSrcCaches);
   7225 
   7226 VKAPI_ATTR VkResult VKAPI_CALL vkGetValidationCacheDataEXT(
   7227     VkDevice                                    device,
   7228     VkValidationCacheEXT                        validationCache,
   7229     size_t*                                     pDataSize,
   7230     void*                                       pData);
   7231 #endif
   7232 
   7233 #define VK_EXT_shader_viewport_index_layer 1
   7234 #define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION 1
   7235 #define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME "VK_EXT_shader_viewport_index_layer"
   7236 
   7237 
   7238 #define VK_EXT_global_priority 1
   7239 #define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 2
   7240 #define VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME "VK_EXT_global_priority"
   7241 
   7242 
   7243 typedef enum VkQueueGlobalPriorityEXT {
   7244     VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128,
   7245     VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256,
   7246     VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512,
   7247     VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024,
   7248     VK_QUEUE_GLOBAL_PRIORITY_BEGIN_RANGE_EXT = VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT,
   7249     VK_QUEUE_GLOBAL_PRIORITY_END_RANGE_EXT = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT,
   7250     VK_QUEUE_GLOBAL_PRIORITY_RANGE_SIZE_EXT = (VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT - VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT + 1),
   7251     VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 0x7FFFFFFF
   7252 } VkQueueGlobalPriorityEXT;
   7253 
   7254 typedef struct VkDeviceQueueGlobalPriorityCreateInfoEXT {
   7255     VkStructureType             sType;
   7256     const void*                 pNext;
   7257     VkQueueGlobalPriorityEXT    globalPriority;
   7258 } VkDeviceQueueGlobalPriorityCreateInfoEXT;
   7259 
   7260 
   7261 
   7262 #define VK_EXT_external_memory_host 1
   7263 #define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1
   7264 #define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host"
   7265 
   7266 typedef struct VkImportMemoryHostPointerInfoEXT {
   7267     VkStructureType                       sType;
   7268     const void*                           pNext;
   7269     VkExternalMemoryHandleTypeFlagBits    handleType;
   7270     void*                                 pHostPointer;
   7271 } VkImportMemoryHostPointerInfoEXT;
   7272 
   7273 typedef struct VkMemoryHostPointerPropertiesEXT {
   7274     VkStructureType    sType;
   7275     void*              pNext;
   7276     uint32_t           memoryTypeBits;
   7277 } VkMemoryHostPointerPropertiesEXT;
   7278 
   7279 typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT {
   7280     VkStructureType    sType;
   7281     void*              pNext;
   7282     VkDeviceSize       minImportedHostPointerAlignment;
   7283 } VkPhysicalDeviceExternalMemoryHostPropertiesEXT;
   7284 
   7285 
   7286 typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryHostPointerPropertiesEXT)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
   7287 
   7288 #ifndef VK_NO_PROTOTYPES
   7289 VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryHostPointerPropertiesEXT(
   7290     VkDevice                                    device,
   7291     VkExternalMemoryHandleTypeFlagBits          handleType,
   7292     const void*                                 pHostPointer,
   7293     VkMemoryHostPointerPropertiesEXT*           pMemoryHostPointerProperties);
   7294 #endif
   7295 
   7296 #ifdef __cplusplus
   7297 }
   7298 #endif
   7299 
   7300 #endif
   7301