Home | History | Annotate | Download | only in vulkan
      1 #ifndef VULKAN_H_
      2 #define VULKAN_H_ 1
      3 
      4 #ifdef __cplusplus
      5 extern "C" {
      6 #endif
      7 
      8 /*
      9 ** Copyright (c) 2015-2016 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)
     38 
     39 // Vulkan 1.0 version number
     40 #define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 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 31
     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_SURFACE_LOST_KHR = -1000000000,
    142     VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
    143     VK_SUBOPTIMAL_KHR = 1000001003,
    144     VK_ERROR_OUT_OF_DATE_KHR = -1000001004,
    145     VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
    146     VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
    147     VK_ERROR_INVALID_SHADER_NV = -1000012000,
    148     VK_RESULT_BEGIN_RANGE = VK_ERROR_FRAGMENTED_POOL,
    149     VK_RESULT_END_RANGE = VK_INCOMPLETE,
    150     VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FRAGMENTED_POOL + 1),
    151     VK_RESULT_MAX_ENUM = 0x7FFFFFFF
    152 } VkResult;
    153 
    154 typedef enum VkStructureType {
    155     VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
    156     VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
    157     VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
    158     VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
    159     VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
    160     VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
    161     VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
    162     VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
    163     VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
    164     VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
    165     VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
    166     VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
    167     VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
    168     VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
    169     VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
    170     VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
    171     VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
    172     VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
    173     VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
    174     VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
    175     VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
    176     VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
    177     VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
    178     VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
    179     VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
    180     VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
    181     VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
    182     VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
    183     VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
    184     VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
    185     VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
    186     VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
    187     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
    188     VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
    189     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
    190     VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
    191     VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
    192     VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
    193     VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
    194     VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
    195     VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
    196     VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
    197     VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
    198     VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
    199     VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
    200     VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
    201     VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
    202     VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
    203     VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
    204     VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
    205     VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
    206     VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
    207     VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
    208     VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000,
    209     VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
    210     VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
    211     VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
    212     VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000,
    213     VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
    214     VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
    215     VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
    216     VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,
    217     VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,
    218     VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,
    219     VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,
    220     VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
    221     VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
    222     VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
    223     VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
    224     VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,
    225     VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
    226     VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
    227     VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
    228     VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
    229     VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
    230     VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
    231     VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
    232     VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
    233 } VkStructureType;
    234 
    235 typedef enum VkSystemAllocationScope {
    236     VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,
    237     VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,
    238     VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,
    239     VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,
    240     VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4,
    241     VK_SYSTEM_ALLOCATION_SCOPE_BEGIN_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
    242     VK_SYSTEM_ALLOCATION_SCOPE_END_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE,
    243     VK_SYSTEM_ALLOCATION_SCOPE_RANGE_SIZE = (VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE - VK_SYSTEM_ALLOCATION_SCOPE_COMMAND + 1),
    244     VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF
    245 } VkSystemAllocationScope;
    246 
    247 typedef enum VkInternalAllocationType {
    248     VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,
    249     VK_INTERNAL_ALLOCATION_TYPE_BEGIN_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE,
    250     VK_INTERNAL_ALLOCATION_TYPE_END_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE,
    251     VK_INTERNAL_ALLOCATION_TYPE_RANGE_SIZE = (VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE - VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE + 1),
    252     VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF
    253 } VkInternalAllocationType;
    254 
    255 typedef enum VkFormat {
    256     VK_FORMAT_UNDEFINED = 0,
    257     VK_FORMAT_R4G4_UNORM_PACK8 = 1,
    258     VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
    259     VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
    260     VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
    261     VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
    262     VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
    263     VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
    264     VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
    265     VK_FORMAT_R8_UNORM = 9,
    266     VK_FORMAT_R8_SNORM = 10,
    267     VK_FORMAT_R8_USCALED = 11,
    268     VK_FORMAT_R8_SSCALED = 12,
    269     VK_FORMAT_R8_UINT = 13,
    270     VK_FORMAT_R8_SINT = 14,
    271     VK_FORMAT_R8_SRGB = 15,
    272     VK_FORMAT_R8G8_UNORM = 16,
    273     VK_FORMAT_R8G8_SNORM = 17,
    274     VK_FORMAT_R8G8_USCALED = 18,
    275     VK_FORMAT_R8G8_SSCALED = 19,
    276     VK_FORMAT_R8G8_UINT = 20,
    277     VK_FORMAT_R8G8_SINT = 21,
    278     VK_FORMAT_R8G8_SRGB = 22,
    279     VK_FORMAT_R8G8B8_UNORM = 23,
    280     VK_FORMAT_R8G8B8_SNORM = 24,
    281     VK_FORMAT_R8G8B8_USCALED = 25,
    282     VK_FORMAT_R8G8B8_SSCALED = 26,
    283     VK_FORMAT_R8G8B8_UINT = 27,
    284     VK_FORMAT_R8G8B8_SINT = 28,
    285     VK_FORMAT_R8G8B8_SRGB = 29,
    286     VK_FORMAT_B8G8R8_UNORM = 30,
    287     VK_FORMAT_B8G8R8_SNORM = 31,
    288     VK_FORMAT_B8G8R8_USCALED = 32,
    289     VK_FORMAT_B8G8R8_SSCALED = 33,
    290     VK_FORMAT_B8G8R8_UINT = 34,
    291     VK_FORMAT_B8G8R8_SINT = 35,
    292     VK_FORMAT_B8G8R8_SRGB = 36,
    293     VK_FORMAT_R8G8B8A8_UNORM = 37,
    294     VK_FORMAT_R8G8B8A8_SNORM = 38,
    295     VK_FORMAT_R8G8B8A8_USCALED = 39,
    296     VK_FORMAT_R8G8B8A8_SSCALED = 40,
    297     VK_FORMAT_R8G8B8A8_UINT = 41,
    298     VK_FORMAT_R8G8B8A8_SINT = 42,
    299     VK_FORMAT_R8G8B8A8_SRGB = 43,
    300     VK_FORMAT_B8G8R8A8_UNORM = 44,
    301     VK_FORMAT_B8G8R8A8_SNORM = 45,
    302     VK_FORMAT_B8G8R8A8_USCALED = 46,
    303     VK_FORMAT_B8G8R8A8_SSCALED = 47,
    304     VK_FORMAT_B8G8R8A8_UINT = 48,
    305     VK_FORMAT_B8G8R8A8_SINT = 49,
    306     VK_FORMAT_B8G8R8A8_SRGB = 50,
    307     VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
    308     VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
    309     VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
    310     VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
    311     VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
    312     VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
    313     VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
    314     VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
    315     VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
    316     VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
    317     VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
    318     VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
    319     VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
    320     VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
    321     VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
    322     VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
    323     VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
    324     VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
    325     VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
    326     VK_FORMAT_R16_UNORM = 70,
    327     VK_FORMAT_R16_SNORM = 71,
    328     VK_FORMAT_R16_USCALED = 72,
    329     VK_FORMAT_R16_SSCALED = 73,
    330     VK_FORMAT_R16_UINT = 74,
    331     VK_FORMAT_R16_SINT = 75,
    332     VK_FORMAT_R16_SFLOAT = 76,
    333     VK_FORMAT_R16G16_UNORM = 77,
    334     VK_FORMAT_R16G16_SNORM = 78,
    335     VK_FORMAT_R16G16_USCALED = 79,
    336     VK_FORMAT_R16G16_SSCALED = 80,
    337     VK_FORMAT_R16G16_UINT = 81,
    338     VK_FORMAT_R16G16_SINT = 82,
    339     VK_FORMAT_R16G16_SFLOAT = 83,
    340     VK_FORMAT_R16G16B16_UNORM = 84,
    341     VK_FORMAT_R16G16B16_SNORM = 85,
    342     VK_FORMAT_R16G16B16_USCALED = 86,
    343     VK_FORMAT_R16G16B16_SSCALED = 87,
    344     VK_FORMAT_R16G16B16_UINT = 88,
    345     VK_FORMAT_R16G16B16_SINT = 89,
    346     VK_FORMAT_R16G16B16_SFLOAT = 90,
    347     VK_FORMAT_R16G16B16A16_UNORM = 91,
    348     VK_FORMAT_R16G16B16A16_SNORM = 92,
    349     VK_FORMAT_R16G16B16A16_USCALED = 93,
    350     VK_FORMAT_R16G16B16A16_SSCALED = 94,
    351     VK_FORMAT_R16G16B16A16_UINT = 95,
    352     VK_FORMAT_R16G16B16A16_SINT = 96,
    353     VK_FORMAT_R16G16B16A16_SFLOAT = 97,
    354     VK_FORMAT_R32_UINT = 98,
    355     VK_FORMAT_R32_SINT = 99,
    356     VK_FORMAT_R32_SFLOAT = 100,
    357     VK_FORMAT_R32G32_UINT = 101,
    358     VK_FORMAT_R32G32_SINT = 102,
    359     VK_FORMAT_R32G32_SFLOAT = 103,
    360     VK_FORMAT_R32G32B32_UINT = 104,
    361     VK_FORMAT_R32G32B32_SINT = 105,
    362     VK_FORMAT_R32G32B32_SFLOAT = 106,
    363     VK_FORMAT_R32G32B32A32_UINT = 107,
    364     VK_FORMAT_R32G32B32A32_SINT = 108,
    365     VK_FORMAT_R32G32B32A32_SFLOAT = 109,
    366     VK_FORMAT_R64_UINT = 110,
    367     VK_FORMAT_R64_SINT = 111,
    368     VK_FORMAT_R64_SFLOAT = 112,
    369     VK_FORMAT_R64G64_UINT = 113,
    370     VK_FORMAT_R64G64_SINT = 114,
    371     VK_FORMAT_R64G64_SFLOAT = 115,
    372     VK_FORMAT_R64G64B64_UINT = 116,
    373     VK_FORMAT_R64G64B64_SINT = 117,
    374     VK_FORMAT_R64G64B64_SFLOAT = 118,
    375     VK_FORMAT_R64G64B64A64_UINT = 119,
    376     VK_FORMAT_R64G64B64A64_SINT = 120,
    377     VK_FORMAT_R64G64B64A64_SFLOAT = 121,
    378     VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
    379     VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
    380     VK_FORMAT_D16_UNORM = 124,
    381     VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
    382     VK_FORMAT_D32_SFLOAT = 126,
    383     VK_FORMAT_S8_UINT = 127,
    384     VK_FORMAT_D16_UNORM_S8_UINT = 128,
    385     VK_FORMAT_D24_UNORM_S8_UINT = 129,
    386     VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
    387     VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
    388     VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
    389     VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
    390     VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
    391     VK_FORMAT_BC2_UNORM_BLOCK = 135,
    392     VK_FORMAT_BC2_SRGB_BLOCK = 136,
    393     VK_FORMAT_BC3_UNORM_BLOCK = 137,
    394     VK_FORMAT_BC3_SRGB_BLOCK = 138,
    395     VK_FORMAT_BC4_UNORM_BLOCK = 139,
    396     VK_FORMAT_BC4_SNORM_BLOCK = 140,
    397     VK_FORMAT_BC5_UNORM_BLOCK = 141,
    398     VK_FORMAT_BC5_SNORM_BLOCK = 142,
    399     VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
    400     VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
    401     VK_FORMAT_BC7_UNORM_BLOCK = 145,
    402     VK_FORMAT_BC7_SRGB_BLOCK = 146,
    403     VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
    404     VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
    405     VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
    406     VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
    407     VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
    408     VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
    409     VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
    410     VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
    411     VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
    412     VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
    413     VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
    414     VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
    415     VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
    416     VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
    417     VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
    418     VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
    419     VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
    420     VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
    421     VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
    422     VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
    423     VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
    424     VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
    425     VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
    426     VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
    427     VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
    428     VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
    429     VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
    430     VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
    431     VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
    432     VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
    433     VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
    434     VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
    435     VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
    436     VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
    437     VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
    438     VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
    439     VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
    440     VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
    441     VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
    442     VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
    443     VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
    444     VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
    445     VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
    446     VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
    447     VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
    448     VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
    449     VK_FORMAT_BEGIN_RANGE = VK_FORMAT_UNDEFINED,
    450     VK_FORMAT_END_RANGE = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
    451     VK_FORMAT_RANGE_SIZE = (VK_FORMAT_ASTC_12x12_SRGB_BLOCK - VK_FORMAT_UNDEFINED + 1),
    452     VK_FORMAT_MAX_ENUM = 0x7FFFFFFF
    453 } VkFormat;
    454 
    455 typedef enum VkImageType {
    456     VK_IMAGE_TYPE_1D = 0,
    457     VK_IMAGE_TYPE_2D = 1,
    458     VK_IMAGE_TYPE_3D = 2,
    459     VK_IMAGE_TYPE_BEGIN_RANGE = VK_IMAGE_TYPE_1D,
    460     VK_IMAGE_TYPE_END_RANGE = VK_IMAGE_TYPE_3D,
    461     VK_IMAGE_TYPE_RANGE_SIZE = (VK_IMAGE_TYPE_3D - VK_IMAGE_TYPE_1D + 1),
    462     VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF
    463 } VkImageType;
    464 
    465 typedef enum VkImageTiling {
    466     VK_IMAGE_TILING_OPTIMAL = 0,
    467     VK_IMAGE_TILING_LINEAR = 1,
    468     VK_IMAGE_TILING_BEGIN_RANGE = VK_IMAGE_TILING_OPTIMAL,
    469     VK_IMAGE_TILING_END_RANGE = VK_IMAGE_TILING_LINEAR,
    470     VK_IMAGE_TILING_RANGE_SIZE = (VK_IMAGE_TILING_LINEAR - VK_IMAGE_TILING_OPTIMAL + 1),
    471     VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF
    472 } VkImageTiling;
    473 
    474 typedef enum VkPhysicalDeviceType {
    475     VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,
    476     VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,
    477     VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,
    478     VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,
    479     VK_PHYSICAL_DEVICE_TYPE_CPU = 4,
    480     VK_PHYSICAL_DEVICE_TYPE_BEGIN_RANGE = VK_PHYSICAL_DEVICE_TYPE_OTHER,
    481     VK_PHYSICAL_DEVICE_TYPE_END_RANGE = VK_PHYSICAL_DEVICE_TYPE_CPU,
    482     VK_PHYSICAL_DEVICE_TYPE_RANGE_SIZE = (VK_PHYSICAL_DEVICE_TYPE_CPU - VK_PHYSICAL_DEVICE_TYPE_OTHER + 1),
    483     VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF
    484 } VkPhysicalDeviceType;
    485 
    486 typedef enum VkQueryType {
    487     VK_QUERY_TYPE_OCCLUSION = 0,
    488     VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
    489     VK_QUERY_TYPE_TIMESTAMP = 2,
    490     VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION,
    491     VK_QUERY_TYPE_END_RANGE = VK_QUERY_TYPE_TIMESTAMP,
    492     VK_QUERY_TYPE_RANGE_SIZE = (VK_QUERY_TYPE_TIMESTAMP - VK_QUERY_TYPE_OCCLUSION + 1),
    493     VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF
    494 } VkQueryType;
    495 
    496 typedef enum VkSharingMode {
    497     VK_SHARING_MODE_EXCLUSIVE = 0,
    498     VK_SHARING_MODE_CONCURRENT = 1,
    499     VK_SHARING_MODE_BEGIN_RANGE = VK_SHARING_MODE_EXCLUSIVE,
    500     VK_SHARING_MODE_END_RANGE = VK_SHARING_MODE_CONCURRENT,
    501     VK_SHARING_MODE_RANGE_SIZE = (VK_SHARING_MODE_CONCURRENT - VK_SHARING_MODE_EXCLUSIVE + 1),
    502     VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF
    503 } VkSharingMode;
    504 
    505 typedef enum VkImageLayout {
    506     VK_IMAGE_LAYOUT_UNDEFINED = 0,
    507     VK_IMAGE_LAYOUT_GENERAL = 1,
    508     VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,
    509     VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
    510     VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
    511     VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,
    512     VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,
    513     VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
    514     VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
    515     VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
    516     VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED,
    517     VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_PREINITIALIZED,
    518     VK_IMAGE_LAYOUT_RANGE_SIZE = (VK_IMAGE_LAYOUT_PREINITIALIZED - VK_IMAGE_LAYOUT_UNDEFINED + 1),
    519     VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF
    520 } VkImageLayout;
    521 
    522 typedef enum VkImageViewType {
    523     VK_IMAGE_VIEW_TYPE_1D = 0,
    524     VK_IMAGE_VIEW_TYPE_2D = 1,
    525     VK_IMAGE_VIEW_TYPE_3D = 2,
    526     VK_IMAGE_VIEW_TYPE_CUBE = 3,
    527     VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4,
    528     VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5,
    529     VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6,
    530     VK_IMAGE_VIEW_TYPE_BEGIN_RANGE = VK_IMAGE_VIEW_TYPE_1D,
    531     VK_IMAGE_VIEW_TYPE_END_RANGE = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY,
    532     VK_IMAGE_VIEW_TYPE_RANGE_SIZE = (VK_IMAGE_VIEW_TYPE_CUBE_ARRAY - VK_IMAGE_VIEW_TYPE_1D + 1),
    533     VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF
    534 } VkImageViewType;
    535 
    536 typedef enum VkComponentSwizzle {
    537     VK_COMPONENT_SWIZZLE_IDENTITY = 0,
    538     VK_COMPONENT_SWIZZLE_ZERO = 1,
    539     VK_COMPONENT_SWIZZLE_ONE = 2,
    540     VK_COMPONENT_SWIZZLE_R = 3,
    541     VK_COMPONENT_SWIZZLE_G = 4,
    542     VK_COMPONENT_SWIZZLE_B = 5,
    543     VK_COMPONENT_SWIZZLE_A = 6,
    544     VK_COMPONENT_SWIZZLE_BEGIN_RANGE = VK_COMPONENT_SWIZZLE_IDENTITY,
    545     VK_COMPONENT_SWIZZLE_END_RANGE = VK_COMPONENT_SWIZZLE_A,
    546     VK_COMPONENT_SWIZZLE_RANGE_SIZE = (VK_COMPONENT_SWIZZLE_A - VK_COMPONENT_SWIZZLE_IDENTITY + 1),
    547     VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF
    548 } VkComponentSwizzle;
    549 
    550 typedef enum VkVertexInputRate {
    551     VK_VERTEX_INPUT_RATE_VERTEX = 0,
    552     VK_VERTEX_INPUT_RATE_INSTANCE = 1,
    553     VK_VERTEX_INPUT_RATE_BEGIN_RANGE = VK_VERTEX_INPUT_RATE_VERTEX,
    554     VK_VERTEX_INPUT_RATE_END_RANGE = VK_VERTEX_INPUT_RATE_INSTANCE,
    555     VK_VERTEX_INPUT_RATE_RANGE_SIZE = (VK_VERTEX_INPUT_RATE_INSTANCE - VK_VERTEX_INPUT_RATE_VERTEX + 1),
    556     VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF
    557 } VkVertexInputRate;
    558 
    559 typedef enum VkPrimitiveTopology {
    560     VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
    561     VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,
    562     VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,
    563     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,
    564     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,
    565     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,
    566     VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,
    567     VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
    568     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
    569     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
    570     VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,
    571     VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
    572     VK_PRIMITIVE_TOPOLOGY_END_RANGE = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST,
    573     VK_PRIMITIVE_TOPOLOGY_RANGE_SIZE = (VK_PRIMITIVE_TOPOLOGY_PATCH_LIST - VK_PRIMITIVE_TOPOLOGY_POINT_LIST + 1),
    574     VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF
    575 } VkPrimitiveTopology;
    576 
    577 typedef enum VkPolygonMode {
    578     VK_POLYGON_MODE_FILL = 0,
    579     VK_POLYGON_MODE_LINE = 1,
    580     VK_POLYGON_MODE_POINT = 2,
    581     VK_POLYGON_MODE_BEGIN_RANGE = VK_POLYGON_MODE_FILL,
    582     VK_POLYGON_MODE_END_RANGE = VK_POLYGON_MODE_POINT,
    583     VK_POLYGON_MODE_RANGE_SIZE = (VK_POLYGON_MODE_POINT - VK_POLYGON_MODE_FILL + 1),
    584     VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF
    585 } VkPolygonMode;
    586 
    587 typedef enum VkFrontFace {
    588     VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
    589     VK_FRONT_FACE_CLOCKWISE = 1,
    590     VK_FRONT_FACE_BEGIN_RANGE = VK_FRONT_FACE_COUNTER_CLOCKWISE,
    591     VK_FRONT_FACE_END_RANGE = VK_FRONT_FACE_CLOCKWISE,
    592     VK_FRONT_FACE_RANGE_SIZE = (VK_FRONT_FACE_CLOCKWISE - VK_FRONT_FACE_COUNTER_CLOCKWISE + 1),
    593     VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF
    594 } VkFrontFace;
    595 
    596 typedef enum VkCompareOp {
    597     VK_COMPARE_OP_NEVER = 0,
    598     VK_COMPARE_OP_LESS = 1,
    599     VK_COMPARE_OP_EQUAL = 2,
    600     VK_COMPARE_OP_LESS_OR_EQUAL = 3,
    601     VK_COMPARE_OP_GREATER = 4,
    602     VK_COMPARE_OP_NOT_EQUAL = 5,
    603     VK_COMPARE_OP_GREATER_OR_EQUAL = 6,
    604     VK_COMPARE_OP_ALWAYS = 7,
    605     VK_COMPARE_OP_BEGIN_RANGE = VK_COMPARE_OP_NEVER,
    606     VK_COMPARE_OP_END_RANGE = VK_COMPARE_OP_ALWAYS,
    607     VK_COMPARE_OP_RANGE_SIZE = (VK_COMPARE_OP_ALWAYS - VK_COMPARE_OP_NEVER + 1),
    608     VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF
    609 } VkCompareOp;
    610 
    611 typedef enum VkStencilOp {
    612     VK_STENCIL_OP_KEEP = 0,
    613     VK_STENCIL_OP_ZERO = 1,
    614     VK_STENCIL_OP_REPLACE = 2,
    615     VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,
    616     VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,
    617     VK_STENCIL_OP_INVERT = 5,
    618     VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,
    619     VK_STENCIL_OP_DECREMENT_AND_WRAP = 7,
    620     VK_STENCIL_OP_BEGIN_RANGE = VK_STENCIL_OP_KEEP,
    621     VK_STENCIL_OP_END_RANGE = VK_STENCIL_OP_DECREMENT_AND_WRAP,
    622     VK_STENCIL_OP_RANGE_SIZE = (VK_STENCIL_OP_DECREMENT_AND_WRAP - VK_STENCIL_OP_KEEP + 1),
    623     VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF
    624 } VkStencilOp;
    625 
    626 typedef enum VkLogicOp {
    627     VK_LOGIC_OP_CLEAR = 0,
    628     VK_LOGIC_OP_AND = 1,
    629     VK_LOGIC_OP_AND_REVERSE = 2,
    630     VK_LOGIC_OP_COPY = 3,
    631     VK_LOGIC_OP_AND_INVERTED = 4,
    632     VK_LOGIC_OP_NO_OP = 5,
    633     VK_LOGIC_OP_XOR = 6,
    634     VK_LOGIC_OP_OR = 7,
    635     VK_LOGIC_OP_NOR = 8,
    636     VK_LOGIC_OP_EQUIVALENT = 9,
    637     VK_LOGIC_OP_INVERT = 10,
    638     VK_LOGIC_OP_OR_REVERSE = 11,
    639     VK_LOGIC_OP_COPY_INVERTED = 12,
    640     VK_LOGIC_OP_OR_INVERTED = 13,
    641     VK_LOGIC_OP_NAND = 14,
    642     VK_LOGIC_OP_SET = 15,
    643     VK_LOGIC_OP_BEGIN_RANGE = VK_LOGIC_OP_CLEAR,
    644     VK_LOGIC_OP_END_RANGE = VK_LOGIC_OP_SET,
    645     VK_LOGIC_OP_RANGE_SIZE = (VK_LOGIC_OP_SET - VK_LOGIC_OP_CLEAR + 1),
    646     VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF
    647 } VkLogicOp;
    648 
    649 typedef enum VkBlendFactor {
    650     VK_BLEND_FACTOR_ZERO = 0,
    651     VK_BLEND_FACTOR_ONE = 1,
    652     VK_BLEND_FACTOR_SRC_COLOR = 2,
    653     VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,
    654     VK_BLEND_FACTOR_DST_COLOR = 4,
    655     VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,
    656     VK_BLEND_FACTOR_SRC_ALPHA = 6,
    657     VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,
    658     VK_BLEND_FACTOR_DST_ALPHA = 8,
    659     VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,
    660     VK_BLEND_FACTOR_CONSTANT_COLOR = 10,
    661     VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,
    662     VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,
    663     VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,
    664     VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,
    665     VK_BLEND_FACTOR_SRC1_COLOR = 15,
    666     VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,
    667     VK_BLEND_FACTOR_SRC1_ALPHA = 17,
    668     VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18,
    669     VK_BLEND_FACTOR_BEGIN_RANGE = VK_BLEND_FACTOR_ZERO,
    670     VK_BLEND_FACTOR_END_RANGE = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA,
    671     VK_BLEND_FACTOR_RANGE_SIZE = (VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - VK_BLEND_FACTOR_ZERO + 1),
    672     VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF
    673 } VkBlendFactor;
    674 
    675 typedef enum VkBlendOp {
    676     VK_BLEND_OP_ADD = 0,
    677     VK_BLEND_OP_SUBTRACT = 1,
    678     VK_BLEND_OP_REVERSE_SUBTRACT = 2,
    679     VK_BLEND_OP_MIN = 3,
    680     VK_BLEND_OP_MAX = 4,
    681     VK_BLEND_OP_BEGIN_RANGE = VK_BLEND_OP_ADD,
    682     VK_BLEND_OP_END_RANGE = VK_BLEND_OP_MAX,
    683     VK_BLEND_OP_RANGE_SIZE = (VK_BLEND_OP_MAX - VK_BLEND_OP_ADD + 1),
    684     VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF
    685 } VkBlendOp;
    686 
    687 typedef enum VkDynamicState {
    688     VK_DYNAMIC_STATE_VIEWPORT = 0,
    689     VK_DYNAMIC_STATE_SCISSOR = 1,
    690     VK_DYNAMIC_STATE_LINE_WIDTH = 2,
    691     VK_DYNAMIC_STATE_DEPTH_BIAS = 3,
    692     VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,
    693     VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,
    694     VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,
    695     VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,
    696     VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
    697     VK_DYNAMIC_STATE_BEGIN_RANGE = VK_DYNAMIC_STATE_VIEWPORT,
    698     VK_DYNAMIC_STATE_END_RANGE = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
    699     VK_DYNAMIC_STATE_RANGE_SIZE = (VK_DYNAMIC_STATE_STENCIL_REFERENCE - VK_DYNAMIC_STATE_VIEWPORT + 1),
    700     VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF
    701 } VkDynamicState;
    702 
    703 typedef enum VkFilter {
    704     VK_FILTER_NEAREST = 0,
    705     VK_FILTER_LINEAR = 1,
    706     VK_FILTER_CUBIC_IMG = 1000015000,
    707     VK_FILTER_BEGIN_RANGE = VK_FILTER_NEAREST,
    708     VK_FILTER_END_RANGE = VK_FILTER_LINEAR,
    709     VK_FILTER_RANGE_SIZE = (VK_FILTER_LINEAR - VK_FILTER_NEAREST + 1),
    710     VK_FILTER_MAX_ENUM = 0x7FFFFFFF
    711 } VkFilter;
    712 
    713 typedef enum VkSamplerMipmapMode {
    714     VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,
    715     VK_SAMPLER_MIPMAP_MODE_LINEAR = 1,
    716     VK_SAMPLER_MIPMAP_MODE_BEGIN_RANGE = VK_SAMPLER_MIPMAP_MODE_NEAREST,
    717     VK_SAMPLER_MIPMAP_MODE_END_RANGE = VK_SAMPLER_MIPMAP_MODE_LINEAR,
    718     VK_SAMPLER_MIPMAP_MODE_RANGE_SIZE = (VK_SAMPLER_MIPMAP_MODE_LINEAR - VK_SAMPLER_MIPMAP_MODE_NEAREST + 1),
    719     VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF
    720 } VkSamplerMipmapMode;
    721 
    722 typedef enum VkSamplerAddressMode {
    723     VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
    724     VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
    725     VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
    726     VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
    727     VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
    728     VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE = VK_SAMPLER_ADDRESS_MODE_REPEAT,
    729     VK_SAMPLER_ADDRESS_MODE_END_RANGE = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
    730     VK_SAMPLER_ADDRESS_MODE_RANGE_SIZE = (VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER - VK_SAMPLER_ADDRESS_MODE_REPEAT + 1),
    731     VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
    732 } VkSamplerAddressMode;
    733 
    734 typedef enum VkBorderColor {
    735     VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
    736     VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,
    737     VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,
    738     VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,
    739     VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,
    740     VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5,
    741     VK_BORDER_COLOR_BEGIN_RANGE = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
    742     VK_BORDER_COLOR_END_RANGE = VK_BORDER_COLOR_INT_OPAQUE_WHITE,
    743     VK_BORDER_COLOR_RANGE_SIZE = (VK_BORDER_COLOR_INT_OPAQUE_WHITE - VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK + 1),
    744     VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF
    745 } VkBorderColor;
    746 
    747 typedef enum VkDescriptorType {
    748     VK_DESCRIPTOR_TYPE_SAMPLER = 0,
    749     VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1,
    750     VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2,
    751     VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3,
    752     VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4,
    753     VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5,
    754     VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6,
    755     VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7,
    756     VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8,
    757     VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9,
    758     VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10,
    759     VK_DESCRIPTOR_TYPE_BEGIN_RANGE = VK_DESCRIPTOR_TYPE_SAMPLER,
    760     VK_DESCRIPTOR_TYPE_END_RANGE = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
    761     VK_DESCRIPTOR_TYPE_RANGE_SIZE = (VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT - VK_DESCRIPTOR_TYPE_SAMPLER + 1),
    762     VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF
    763 } VkDescriptorType;
    764 
    765 typedef enum VkAttachmentLoadOp {
    766     VK_ATTACHMENT_LOAD_OP_LOAD = 0,
    767     VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
    768     VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
    769     VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE = VK_ATTACHMENT_LOAD_OP_LOAD,
    770     VK_ATTACHMENT_LOAD_OP_END_RANGE = VK_ATTACHMENT_LOAD_OP_DONT_CARE,
    771     VK_ATTACHMENT_LOAD_OP_RANGE_SIZE = (VK_ATTACHMENT_LOAD_OP_DONT_CARE - VK_ATTACHMENT_LOAD_OP_LOAD + 1),
    772     VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF
    773 } VkAttachmentLoadOp;
    774 
    775 typedef enum VkAttachmentStoreOp {
    776     VK_ATTACHMENT_STORE_OP_STORE = 0,
    777     VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,
    778     VK_ATTACHMENT_STORE_OP_BEGIN_RANGE = VK_ATTACHMENT_STORE_OP_STORE,
    779     VK_ATTACHMENT_STORE_OP_END_RANGE = VK_ATTACHMENT_STORE_OP_DONT_CARE,
    780     VK_ATTACHMENT_STORE_OP_RANGE_SIZE = (VK_ATTACHMENT_STORE_OP_DONT_CARE - VK_ATTACHMENT_STORE_OP_STORE + 1),
    781     VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF
    782 } VkAttachmentStoreOp;
    783 
    784 typedef enum VkPipelineBindPoint {
    785     VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
    786     VK_PIPELINE_BIND_POINT_COMPUTE = 1,
    787     VK_PIPELINE_BIND_POINT_BEGIN_RANGE = VK_PIPELINE_BIND_POINT_GRAPHICS,
    788     VK_PIPELINE_BIND_POINT_END_RANGE = VK_PIPELINE_BIND_POINT_COMPUTE,
    789     VK_PIPELINE_BIND_POINT_RANGE_SIZE = (VK_PIPELINE_BIND_POINT_COMPUTE - VK_PIPELINE_BIND_POINT_GRAPHICS + 1),
    790     VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF
    791 } VkPipelineBindPoint;
    792 
    793 typedef enum VkCommandBufferLevel {
    794     VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
    795     VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,
    796     VK_COMMAND_BUFFER_LEVEL_BEGIN_RANGE = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
    797     VK_COMMAND_BUFFER_LEVEL_END_RANGE = VK_COMMAND_BUFFER_LEVEL_SECONDARY,
    798     VK_COMMAND_BUFFER_LEVEL_RANGE_SIZE = (VK_COMMAND_BUFFER_LEVEL_SECONDARY - VK_COMMAND_BUFFER_LEVEL_PRIMARY + 1),
    799     VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF
    800 } VkCommandBufferLevel;
    801 
    802 typedef enum VkIndexType {
    803     VK_INDEX_TYPE_UINT16 = 0,
    804     VK_INDEX_TYPE_UINT32 = 1,
    805     VK_INDEX_TYPE_BEGIN_RANGE = VK_INDEX_TYPE_UINT16,
    806     VK_INDEX_TYPE_END_RANGE = VK_INDEX_TYPE_UINT32,
    807     VK_INDEX_TYPE_RANGE_SIZE = (VK_INDEX_TYPE_UINT32 - VK_INDEX_TYPE_UINT16 + 1),
    808     VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF
    809 } VkIndexType;
    810 
    811 typedef enum VkSubpassContents {
    812     VK_SUBPASS_CONTENTS_INLINE = 0,
    813     VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
    814     VK_SUBPASS_CONTENTS_BEGIN_RANGE = VK_SUBPASS_CONTENTS_INLINE,
    815     VK_SUBPASS_CONTENTS_END_RANGE = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS,
    816     VK_SUBPASS_CONTENTS_RANGE_SIZE = (VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS - VK_SUBPASS_CONTENTS_INLINE + 1),
    817     VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF
    818 } VkSubpassContents;
    819 
    820 typedef VkFlags VkInstanceCreateFlags;
    821 
    822 typedef enum VkFormatFeatureFlagBits {
    823     VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
    824     VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002,
    825     VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004,
    826     VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008,
    827     VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010,
    828     VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020,
    829     VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040,
    830     VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080,
    831     VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100,
    832     VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200,
    833     VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400,
    834     VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800,
    835     VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
    836     VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
    837     VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    838 } VkFormatFeatureFlagBits;
    839 typedef VkFlags VkFormatFeatureFlags;
    840 
    841 typedef enum VkImageUsageFlagBits {
    842     VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001,
    843     VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002,
    844     VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004,
    845     VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008,
    846     VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010,
    847     VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020,
    848     VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040,
    849     VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080,
    850     VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    851 } VkImageUsageFlagBits;
    852 typedef VkFlags VkImageUsageFlags;
    853 
    854 typedef enum VkImageCreateFlagBits {
    855     VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001,
    856     VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
    857     VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
    858     VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008,
    859     VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010,
    860     VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    861 } VkImageCreateFlagBits;
    862 typedef VkFlags VkImageCreateFlags;
    863 
    864 typedef enum VkSampleCountFlagBits {
    865     VK_SAMPLE_COUNT_1_BIT = 0x00000001,
    866     VK_SAMPLE_COUNT_2_BIT = 0x00000002,
    867     VK_SAMPLE_COUNT_4_BIT = 0x00000004,
    868     VK_SAMPLE_COUNT_8_BIT = 0x00000008,
    869     VK_SAMPLE_COUNT_16_BIT = 0x00000010,
    870     VK_SAMPLE_COUNT_32_BIT = 0x00000020,
    871     VK_SAMPLE_COUNT_64_BIT = 0x00000040,
    872     VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    873 } VkSampleCountFlagBits;
    874 typedef VkFlags VkSampleCountFlags;
    875 
    876 typedef enum VkQueueFlagBits {
    877     VK_QUEUE_GRAPHICS_BIT = 0x00000001,
    878     VK_QUEUE_COMPUTE_BIT = 0x00000002,
    879     VK_QUEUE_TRANSFER_BIT = 0x00000004,
    880     VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
    881     VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    882 } VkQueueFlagBits;
    883 typedef VkFlags VkQueueFlags;
    884 
    885 typedef enum VkMemoryPropertyFlagBits {
    886     VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
    887     VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
    888     VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
    889     VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
    890     VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
    891     VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    892 } VkMemoryPropertyFlagBits;
    893 typedef VkFlags VkMemoryPropertyFlags;
    894 
    895 typedef enum VkMemoryHeapFlagBits {
    896     VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
    897     VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    898 } VkMemoryHeapFlagBits;
    899 typedef VkFlags VkMemoryHeapFlags;
    900 typedef VkFlags VkDeviceCreateFlags;
    901 typedef VkFlags VkDeviceQueueCreateFlags;
    902 
    903 typedef enum VkPipelineStageFlagBits {
    904     VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001,
    905     VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002,
    906     VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004,
    907     VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008,
    908     VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010,
    909     VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020,
    910     VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040,
    911     VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080,
    912     VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100,
    913     VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200,
    914     VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400,
    915     VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800,
    916     VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000,
    917     VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
    918     VK_PIPELINE_STAGE_HOST_BIT = 0x00004000,
    919     VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000,
    920     VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000,
    921     VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    922 } VkPipelineStageFlagBits;
    923 typedef VkFlags VkPipelineStageFlags;
    924 typedef VkFlags VkMemoryMapFlags;
    925 
    926 typedef enum VkImageAspectFlagBits {
    927     VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
    928     VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
    929     VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
    930     VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
    931     VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    932 } VkImageAspectFlagBits;
    933 typedef VkFlags VkImageAspectFlags;
    934 
    935 typedef enum VkSparseImageFormatFlagBits {
    936     VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001,
    937     VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
    938     VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,
    939     VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    940 } VkSparseImageFormatFlagBits;
    941 typedef VkFlags VkSparseImageFormatFlags;
    942 
    943 typedef enum VkSparseMemoryBindFlagBits {
    944     VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
    945     VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    946 } VkSparseMemoryBindFlagBits;
    947 typedef VkFlags VkSparseMemoryBindFlags;
    948 
    949 typedef enum VkFenceCreateFlagBits {
    950     VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
    951     VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    952 } VkFenceCreateFlagBits;
    953 typedef VkFlags VkFenceCreateFlags;
    954 typedef VkFlags VkSemaphoreCreateFlags;
    955 typedef VkFlags VkEventCreateFlags;
    956 typedef VkFlags VkQueryPoolCreateFlags;
    957 
    958 typedef enum VkQueryPipelineStatisticFlagBits {
    959     VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001,
    960     VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002,
    961     VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004,
    962     VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008,
    963     VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010,
    964     VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020,
    965     VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040,
    966     VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080,
    967     VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100,
    968     VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200,
    969     VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400,
    970     VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    971 } VkQueryPipelineStatisticFlagBits;
    972 typedef VkFlags VkQueryPipelineStatisticFlags;
    973 
    974 typedef enum VkQueryResultFlagBits {
    975     VK_QUERY_RESULT_64_BIT = 0x00000001,
    976     VK_QUERY_RESULT_WAIT_BIT = 0x00000002,
    977     VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004,
    978     VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008,
    979     VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    980 } VkQueryResultFlagBits;
    981 typedef VkFlags VkQueryResultFlags;
    982 
    983 typedef enum VkBufferCreateFlagBits {
    984     VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,
    985     VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
    986     VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
    987     VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
    988 } VkBufferCreateFlagBits;
    989 typedef VkFlags VkBufferCreateFlags;
    990 
    991 typedef enum VkBufferUsageFlagBits {
    992     VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001,
    993     VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002,
    994     VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,
    995     VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008,
    996     VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010,
    997     VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020,
    998     VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
    999     VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
   1000     VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
   1001     VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1002 } VkBufferUsageFlagBits;
   1003 typedef VkFlags VkBufferUsageFlags;
   1004 typedef VkFlags VkBufferViewCreateFlags;
   1005 typedef VkFlags VkImageViewCreateFlags;
   1006 typedef VkFlags VkShaderModuleCreateFlags;
   1007 typedef VkFlags VkPipelineCacheCreateFlags;
   1008 
   1009 typedef enum VkPipelineCreateFlagBits {
   1010     VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
   1011     VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
   1012     VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
   1013     VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1014 } VkPipelineCreateFlagBits;
   1015 typedef VkFlags VkPipelineCreateFlags;
   1016 typedef VkFlags VkPipelineShaderStageCreateFlags;
   1017 
   1018 typedef enum VkShaderStageFlagBits {
   1019     VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
   1020     VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
   1021     VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
   1022     VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
   1023     VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
   1024     VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
   1025     VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
   1026     VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
   1027     VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1028 } VkShaderStageFlagBits;
   1029 typedef VkFlags VkPipelineVertexInputStateCreateFlags;
   1030 typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;
   1031 typedef VkFlags VkPipelineTessellationStateCreateFlags;
   1032 typedef VkFlags VkPipelineViewportStateCreateFlags;
   1033 typedef VkFlags VkPipelineRasterizationStateCreateFlags;
   1034 
   1035 typedef enum VkCullModeFlagBits {
   1036     VK_CULL_MODE_NONE = 0,
   1037     VK_CULL_MODE_FRONT_BIT = 0x00000001,
   1038     VK_CULL_MODE_BACK_BIT = 0x00000002,
   1039     VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
   1040     VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1041 } VkCullModeFlagBits;
   1042 typedef VkFlags VkCullModeFlags;
   1043 typedef VkFlags VkPipelineMultisampleStateCreateFlags;
   1044 typedef VkFlags VkPipelineDepthStencilStateCreateFlags;
   1045 typedef VkFlags VkPipelineColorBlendStateCreateFlags;
   1046 
   1047 typedef enum VkColorComponentFlagBits {
   1048     VK_COLOR_COMPONENT_R_BIT = 0x00000001,
   1049     VK_COLOR_COMPONENT_G_BIT = 0x00000002,
   1050     VK_COLOR_COMPONENT_B_BIT = 0x00000004,
   1051     VK_COLOR_COMPONENT_A_BIT = 0x00000008,
   1052     VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1053 } VkColorComponentFlagBits;
   1054 typedef VkFlags VkColorComponentFlags;
   1055 typedef VkFlags VkPipelineDynamicStateCreateFlags;
   1056 typedef VkFlags VkPipelineLayoutCreateFlags;
   1057 typedef VkFlags VkShaderStageFlags;
   1058 typedef VkFlags VkSamplerCreateFlags;
   1059 typedef VkFlags VkDescriptorSetLayoutCreateFlags;
   1060 
   1061 typedef enum VkDescriptorPoolCreateFlagBits {
   1062     VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
   1063     VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1064 } VkDescriptorPoolCreateFlagBits;
   1065 typedef VkFlags VkDescriptorPoolCreateFlags;
   1066 typedef VkFlags VkDescriptorPoolResetFlags;
   1067 typedef VkFlags VkFramebufferCreateFlags;
   1068 typedef VkFlags VkRenderPassCreateFlags;
   1069 
   1070 typedef enum VkAttachmentDescriptionFlagBits {
   1071     VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
   1072     VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1073 } VkAttachmentDescriptionFlagBits;
   1074 typedef VkFlags VkAttachmentDescriptionFlags;
   1075 typedef VkFlags VkSubpassDescriptionFlags;
   1076 
   1077 typedef enum VkAccessFlagBits {
   1078     VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
   1079     VK_ACCESS_INDEX_READ_BIT = 0x00000002,
   1080     VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
   1081     VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
   1082     VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
   1083     VK_ACCESS_SHADER_READ_BIT = 0x00000020,
   1084     VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
   1085     VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
   1086     VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
   1087     VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
   1088     VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
   1089     VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
   1090     VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
   1091     VK_ACCESS_HOST_READ_BIT = 0x00002000,
   1092     VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
   1093     VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
   1094     VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
   1095     VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1096 } VkAccessFlagBits;
   1097 typedef VkFlags VkAccessFlags;
   1098 
   1099 typedef enum VkDependencyFlagBits {
   1100     VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
   1101     VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1102 } VkDependencyFlagBits;
   1103 typedef VkFlags VkDependencyFlags;
   1104 
   1105 typedef enum VkCommandPoolCreateFlagBits {
   1106     VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001,
   1107     VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
   1108     VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1109 } VkCommandPoolCreateFlagBits;
   1110 typedef VkFlags VkCommandPoolCreateFlags;
   1111 
   1112 typedef enum VkCommandPoolResetFlagBits {
   1113     VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
   1114     VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1115 } VkCommandPoolResetFlagBits;
   1116 typedef VkFlags VkCommandPoolResetFlags;
   1117 
   1118 typedef enum VkCommandBufferUsageFlagBits {
   1119     VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
   1120     VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
   1121     VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
   1122     VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1123 } VkCommandBufferUsageFlagBits;
   1124 typedef VkFlags VkCommandBufferUsageFlags;
   1125 
   1126 typedef enum VkQueryControlFlagBits {
   1127     VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
   1128     VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1129 } VkQueryControlFlagBits;
   1130 typedef VkFlags VkQueryControlFlags;
   1131 
   1132 typedef enum VkCommandBufferResetFlagBits {
   1133     VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
   1134     VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1135 } VkCommandBufferResetFlagBits;
   1136 typedef VkFlags VkCommandBufferResetFlags;
   1137 
   1138 typedef enum VkStencilFaceFlagBits {
   1139     VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
   1140     VK_STENCIL_FACE_BACK_BIT = 0x00000002,
   1141     VK_STENCIL_FRONT_AND_BACK = 0x00000003,
   1142     VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
   1143 } VkStencilFaceFlagBits;
   1144 typedef VkFlags VkStencilFaceFlags;
   1145 
   1146 typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(
   1147     void*                                       pUserData,
   1148     size_t                                      size,
   1149     size_t                                      alignment,
   1150     VkSystemAllocationScope                     allocationScope);
   1151 
   1152 typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)(
   1153     void*                                       pUserData,
   1154     void*                                       pOriginal,
   1155     size_t                                      size,
   1156     size_t                                      alignment,
   1157     VkSystemAllocationScope                     allocationScope);
   1158 
   1159 typedef void (VKAPI_PTR *PFN_vkFreeFunction)(
   1160     void*                                       pUserData,
   1161     void*                                       pMemory);
   1162 
   1163 typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)(
   1164     void*                                       pUserData,
   1165     size_t                                      size,
   1166     VkInternalAllocationType                    allocationType,
   1167     VkSystemAllocationScope                     allocationScope);
   1168 
   1169 typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)(
   1170     void*                                       pUserData,
   1171     size_t                                      size,
   1172     VkInternalAllocationType                    allocationType,
   1173     VkSystemAllocationScope                     allocationScope);
   1174 
   1175 typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void);
   1176 
   1177 typedef struct VkApplicationInfo {
   1178     VkStructureType    sType;
   1179     const void*        pNext;
   1180     const char*        pApplicationName;
   1181     uint32_t           applicationVersion;
   1182     const char*        pEngineName;
   1183     uint32_t           engineVersion;
   1184     uint32_t           apiVersion;
   1185 } VkApplicationInfo;
   1186 
   1187 typedef struct VkInstanceCreateInfo {
   1188     VkStructureType             sType;
   1189     const void*                 pNext;
   1190     VkInstanceCreateFlags       flags;
   1191     const VkApplicationInfo*    pApplicationInfo;
   1192     uint32_t                    enabledLayerCount;
   1193     const char* const*          ppEnabledLayerNames;
   1194     uint32_t                    enabledExtensionCount;
   1195     const char* const*          ppEnabledExtensionNames;
   1196 } VkInstanceCreateInfo;
   1197 
   1198 typedef struct VkAllocationCallbacks {
   1199     void*                                   pUserData;
   1200     PFN_vkAllocationFunction                pfnAllocation;
   1201     PFN_vkReallocationFunction              pfnReallocation;
   1202     PFN_vkFreeFunction                      pfnFree;
   1203     PFN_vkInternalAllocationNotification    pfnInternalAllocation;
   1204     PFN_vkInternalFreeNotification          pfnInternalFree;
   1205 } VkAllocationCallbacks;
   1206 
   1207 typedef struct VkPhysicalDeviceFeatures {
   1208     VkBool32    robustBufferAccess;
   1209     VkBool32    fullDrawIndexUint32;
   1210     VkBool32    imageCubeArray;
   1211     VkBool32    independentBlend;
   1212     VkBool32    geometryShader;
   1213     VkBool32    tessellationShader;
   1214     VkBool32    sampleRateShading;
   1215     VkBool32    dualSrcBlend;
   1216     VkBool32    logicOp;
   1217     VkBool32    multiDrawIndirect;
   1218     VkBool32    drawIndirectFirstInstance;
   1219     VkBool32    depthClamp;
   1220     VkBool32    depthBiasClamp;
   1221     VkBool32    fillModeNonSolid;
   1222     VkBool32    depthBounds;
   1223     VkBool32    wideLines;
   1224     VkBool32    largePoints;
   1225     VkBool32    alphaToOne;
   1226     VkBool32    multiViewport;
   1227     VkBool32    samplerAnisotropy;
   1228     VkBool32    textureCompressionETC2;
   1229     VkBool32    textureCompressionASTC_LDR;
   1230     VkBool32    textureCompressionBC;
   1231     VkBool32    occlusionQueryPrecise;
   1232     VkBool32    pipelineStatisticsQuery;
   1233     VkBool32    vertexPipelineStoresAndAtomics;
   1234     VkBool32    fragmentStoresAndAtomics;
   1235     VkBool32    shaderTessellationAndGeometryPointSize;
   1236     VkBool32    shaderImageGatherExtended;
   1237     VkBool32    shaderStorageImageExtendedFormats;
   1238     VkBool32    shaderStorageImageMultisample;
   1239     VkBool32    shaderStorageImageReadWithoutFormat;
   1240     VkBool32    shaderStorageImageWriteWithoutFormat;
   1241     VkBool32    shaderUniformBufferArrayDynamicIndexing;
   1242     VkBool32    shaderSampledImageArrayDynamicIndexing;
   1243     VkBool32    shaderStorageBufferArrayDynamicIndexing;
   1244     VkBool32    shaderStorageImageArrayDynamicIndexing;
   1245     VkBool32    shaderClipDistance;
   1246     VkBool32    shaderCullDistance;
   1247     VkBool32    shaderFloat64;
   1248     VkBool32    shaderInt64;
   1249     VkBool32    shaderInt16;
   1250     VkBool32    shaderResourceResidency;
   1251     VkBool32    shaderResourceMinLod;
   1252     VkBool32    sparseBinding;
   1253     VkBool32    sparseResidencyBuffer;
   1254     VkBool32    sparseResidencyImage2D;
   1255     VkBool32    sparseResidencyImage3D;
   1256     VkBool32    sparseResidency2Samples;
   1257     VkBool32    sparseResidency4Samples;
   1258     VkBool32    sparseResidency8Samples;
   1259     VkBool32    sparseResidency16Samples;
   1260     VkBool32    sparseResidencyAliased;
   1261     VkBool32    variableMultisampleRate;
   1262     VkBool32    inheritedQueries;
   1263 } VkPhysicalDeviceFeatures;
   1264 
   1265 typedef struct VkFormatProperties {
   1266     VkFormatFeatureFlags    linearTilingFeatures;
   1267     VkFormatFeatureFlags    optimalTilingFeatures;
   1268     VkFormatFeatureFlags    bufferFeatures;
   1269 } VkFormatProperties;
   1270 
   1271 typedef struct VkExtent3D {
   1272     uint32_t    width;
   1273     uint32_t    height;
   1274     uint32_t    depth;
   1275 } VkExtent3D;
   1276 
   1277 typedef struct VkImageFormatProperties {
   1278     VkExtent3D            maxExtent;
   1279     uint32_t              maxMipLevels;
   1280     uint32_t              maxArrayLayers;
   1281     VkSampleCountFlags    sampleCounts;
   1282     VkDeviceSize          maxResourceSize;
   1283 } VkImageFormatProperties;
   1284 
   1285 typedef struct VkPhysicalDeviceLimits {
   1286     uint32_t              maxImageDimension1D;
   1287     uint32_t              maxImageDimension2D;
   1288     uint32_t              maxImageDimension3D;
   1289     uint32_t              maxImageDimensionCube;
   1290     uint32_t              maxImageArrayLayers;
   1291     uint32_t              maxTexelBufferElements;
   1292     uint32_t              maxUniformBufferRange;
   1293     uint32_t              maxStorageBufferRange;
   1294     uint32_t              maxPushConstantsSize;
   1295     uint32_t              maxMemoryAllocationCount;
   1296     uint32_t              maxSamplerAllocationCount;
   1297     VkDeviceSize          bufferImageGranularity;
   1298     VkDeviceSize          sparseAddressSpaceSize;
   1299     uint32_t              maxBoundDescriptorSets;
   1300     uint32_t              maxPerStageDescriptorSamplers;
   1301     uint32_t              maxPerStageDescriptorUniformBuffers;
   1302     uint32_t              maxPerStageDescriptorStorageBuffers;
   1303     uint32_t              maxPerStageDescriptorSampledImages;
   1304     uint32_t              maxPerStageDescriptorStorageImages;
   1305     uint32_t              maxPerStageDescriptorInputAttachments;
   1306     uint32_t              maxPerStageResources;
   1307     uint32_t              maxDescriptorSetSamplers;
   1308     uint32_t              maxDescriptorSetUniformBuffers;
   1309     uint32_t              maxDescriptorSetUniformBuffersDynamic;
   1310     uint32_t              maxDescriptorSetStorageBuffers;
   1311     uint32_t              maxDescriptorSetStorageBuffersDynamic;
   1312     uint32_t              maxDescriptorSetSampledImages;
   1313     uint32_t              maxDescriptorSetStorageImages;
   1314     uint32_t              maxDescriptorSetInputAttachments;
   1315     uint32_t              maxVertexInputAttributes;
   1316     uint32_t              maxVertexInputBindings;
   1317     uint32_t              maxVertexInputAttributeOffset;
   1318     uint32_t              maxVertexInputBindingStride;
   1319     uint32_t              maxVertexOutputComponents;
   1320     uint32_t              maxTessellationGenerationLevel;
   1321     uint32_t              maxTessellationPatchSize;
   1322     uint32_t              maxTessellationControlPerVertexInputComponents;
   1323     uint32_t              maxTessellationControlPerVertexOutputComponents;
   1324     uint32_t              maxTessellationControlPerPatchOutputComponents;
   1325     uint32_t              maxTessellationControlTotalOutputComponents;
   1326     uint32_t              maxTessellationEvaluationInputComponents;
   1327     uint32_t              maxTessellationEvaluationOutputComponents;
   1328     uint32_t              maxGeometryShaderInvocations;
   1329     uint32_t              maxGeometryInputComponents;
   1330     uint32_t              maxGeometryOutputComponents;
   1331     uint32_t              maxGeometryOutputVertices;
   1332     uint32_t              maxGeometryTotalOutputComponents;
   1333     uint32_t              maxFragmentInputComponents;
   1334     uint32_t              maxFragmentOutputAttachments;
   1335     uint32_t              maxFragmentDualSrcAttachments;
   1336     uint32_t              maxFragmentCombinedOutputResources;
   1337     uint32_t              maxComputeSharedMemorySize;
   1338     uint32_t              maxComputeWorkGroupCount[3];
   1339     uint32_t              maxComputeWorkGroupInvocations;
   1340     uint32_t              maxComputeWorkGroupSize[3];
   1341     uint32_t              subPixelPrecisionBits;
   1342     uint32_t              subTexelPrecisionBits;
   1343     uint32_t              mipmapPrecisionBits;
   1344     uint32_t              maxDrawIndexedIndexValue;
   1345     uint32_t              maxDrawIndirectCount;
   1346     float                 maxSamplerLodBias;
   1347     float                 maxSamplerAnisotropy;
   1348     uint32_t              maxViewports;
   1349     uint32_t              maxViewportDimensions[2];
   1350     float                 viewportBoundsRange[2];
   1351     uint32_t              viewportSubPixelBits;
   1352     size_t                minMemoryMapAlignment;
   1353     VkDeviceSize          minTexelBufferOffsetAlignment;
   1354     VkDeviceSize          minUniformBufferOffsetAlignment;
   1355     VkDeviceSize          minStorageBufferOffsetAlignment;
   1356     int32_t               minTexelOffset;
   1357     uint32_t              maxTexelOffset;
   1358     int32_t               minTexelGatherOffset;
   1359     uint32_t              maxTexelGatherOffset;
   1360     float                 minInterpolationOffset;
   1361     float                 maxInterpolationOffset;
   1362     uint32_t              subPixelInterpolationOffsetBits;
   1363     uint32_t              maxFramebufferWidth;
   1364     uint32_t              maxFramebufferHeight;
   1365     uint32_t              maxFramebufferLayers;
   1366     VkSampleCountFlags    framebufferColorSampleCounts;
   1367     VkSampleCountFlags    framebufferDepthSampleCounts;
   1368     VkSampleCountFlags    framebufferStencilSampleCounts;
   1369     VkSampleCountFlags    framebufferNoAttachmentsSampleCounts;
   1370     uint32_t              maxColorAttachments;
   1371     VkSampleCountFlags    sampledImageColorSampleCounts;
   1372     VkSampleCountFlags    sampledImageIntegerSampleCounts;
   1373     VkSampleCountFlags    sampledImageDepthSampleCounts;
   1374     VkSampleCountFlags    sampledImageStencilSampleCounts;
   1375     VkSampleCountFlags    storageImageSampleCounts;
   1376     uint32_t              maxSampleMaskWords;
   1377     VkBool32              timestampComputeAndGraphics;
   1378     float                 timestampPeriod;
   1379     uint32_t              maxClipDistances;
   1380     uint32_t              maxCullDistances;
   1381     uint32_t              maxCombinedClipAndCullDistances;
   1382     uint32_t              discreteQueuePriorities;
   1383     float                 pointSizeRange[2];
   1384     float                 lineWidthRange[2];
   1385     float                 pointSizeGranularity;
   1386     float                 lineWidthGranularity;
   1387     VkBool32              strictLines;
   1388     VkBool32              standardSampleLocations;
   1389     VkDeviceSize          optimalBufferCopyOffsetAlignment;
   1390     VkDeviceSize          optimalBufferCopyRowPitchAlignment;
   1391     VkDeviceSize          nonCoherentAtomSize;
   1392 } VkPhysicalDeviceLimits;
   1393 
   1394 typedef struct VkPhysicalDeviceSparseProperties {
   1395     VkBool32    residencyStandard2DBlockShape;
   1396     VkBool32    residencyStandard2DMultisampleBlockShape;
   1397     VkBool32    residencyStandard3DBlockShape;
   1398     VkBool32    residencyAlignedMipSize;
   1399     VkBool32    residencyNonResidentStrict;
   1400 } VkPhysicalDeviceSparseProperties;
   1401 
   1402 typedef struct VkPhysicalDeviceProperties {
   1403     uint32_t                            apiVersion;
   1404     uint32_t                            driverVersion;
   1405     uint32_t                            vendorID;
   1406     uint32_t                            deviceID;
   1407     VkPhysicalDeviceType                deviceType;
   1408     char                                deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
   1409     uint8_t                             pipelineCacheUUID[VK_UUID_SIZE];
   1410     VkPhysicalDeviceLimits              limits;
   1411     VkPhysicalDeviceSparseProperties    sparseProperties;
   1412 } VkPhysicalDeviceProperties;
   1413 
   1414 typedef struct VkQueueFamilyProperties {
   1415     VkQueueFlags    queueFlags;
   1416     uint32_t        queueCount;
   1417     uint32_t        timestampValidBits;
   1418     VkExtent3D      minImageTransferGranularity;
   1419 } VkQueueFamilyProperties;
   1420 
   1421 typedef struct VkMemoryType {
   1422     VkMemoryPropertyFlags    propertyFlags;
   1423     uint32_t                 heapIndex;
   1424 } VkMemoryType;
   1425 
   1426 typedef struct VkMemoryHeap {
   1427     VkDeviceSize         size;
   1428     VkMemoryHeapFlags    flags;
   1429 } VkMemoryHeap;
   1430 
   1431 typedef struct VkPhysicalDeviceMemoryProperties {
   1432     uint32_t        memoryTypeCount;
   1433     VkMemoryType    memoryTypes[VK_MAX_MEMORY_TYPES];
   1434     uint32_t        memoryHeapCount;
   1435     VkMemoryHeap    memoryHeaps[VK_MAX_MEMORY_HEAPS];
   1436 } VkPhysicalDeviceMemoryProperties;
   1437 
   1438 typedef struct VkDeviceQueueCreateInfo {
   1439     VkStructureType             sType;
   1440     const void*                 pNext;
   1441     VkDeviceQueueCreateFlags    flags;
   1442     uint32_t                    queueFamilyIndex;
   1443     uint32_t                    queueCount;
   1444     const float*                pQueuePriorities;
   1445 } VkDeviceQueueCreateInfo;
   1446 
   1447 typedef struct VkDeviceCreateInfo {
   1448     VkStructureType                    sType;
   1449     const void*                        pNext;
   1450     VkDeviceCreateFlags                flags;
   1451     uint32_t                           queueCreateInfoCount;
   1452     const VkDeviceQueueCreateInfo*     pQueueCreateInfos;
   1453     uint32_t                           enabledLayerCount;
   1454     const char* const*                 ppEnabledLayerNames;
   1455     uint32_t                           enabledExtensionCount;
   1456     const char* const*                 ppEnabledExtensionNames;
   1457     const VkPhysicalDeviceFeatures*    pEnabledFeatures;
   1458 } VkDeviceCreateInfo;
   1459 
   1460 typedef struct VkExtensionProperties {
   1461     char        extensionName[VK_MAX_EXTENSION_NAME_SIZE];
   1462     uint32_t    specVersion;
   1463 } VkExtensionProperties;
   1464 
   1465 typedef struct VkLayerProperties {
   1466     char        layerName[VK_MAX_EXTENSION_NAME_SIZE];
   1467     uint32_t    specVersion;
   1468     uint32_t    implementationVersion;
   1469     char        description[VK_MAX_DESCRIPTION_SIZE];
   1470 } VkLayerProperties;
   1471 
   1472 typedef struct VkSubmitInfo {
   1473     VkStructureType                sType;
   1474     const void*                    pNext;
   1475     uint32_t                       waitSemaphoreCount;
   1476     const VkSemaphore*             pWaitSemaphores;
   1477     const VkPipelineStageFlags*    pWaitDstStageMask;
   1478     uint32_t                       commandBufferCount;
   1479     const VkCommandBuffer*         pCommandBuffers;
   1480     uint32_t                       signalSemaphoreCount;
   1481     const VkSemaphore*             pSignalSemaphores;
   1482 } VkSubmitInfo;
   1483 
   1484 typedef struct VkMemoryAllocateInfo {
   1485     VkStructureType    sType;
   1486     const void*        pNext;
   1487     VkDeviceSize       allocationSize;
   1488     uint32_t           memoryTypeIndex;
   1489 } VkMemoryAllocateInfo;
   1490 
   1491 typedef struct VkMappedMemoryRange {
   1492     VkStructureType    sType;
   1493     const void*        pNext;
   1494     VkDeviceMemory     memory;
   1495     VkDeviceSize       offset;
   1496     VkDeviceSize       size;
   1497 } VkMappedMemoryRange;
   1498 
   1499 typedef struct VkMemoryRequirements {
   1500     VkDeviceSize    size;
   1501     VkDeviceSize    alignment;
   1502     uint32_t        memoryTypeBits;
   1503 } VkMemoryRequirements;
   1504 
   1505 typedef struct VkSparseImageFormatProperties {
   1506     VkImageAspectFlags          aspectMask;
   1507     VkExtent3D                  imageGranularity;
   1508     VkSparseImageFormatFlags    flags;
   1509 } VkSparseImageFormatProperties;
   1510 
   1511 typedef struct VkSparseImageMemoryRequirements {
   1512     VkSparseImageFormatProperties    formatProperties;
   1513     uint32_t                         imageMipTailFirstLod;
   1514     VkDeviceSize                     imageMipTailSize;
   1515     VkDeviceSize                     imageMipTailOffset;
   1516     VkDeviceSize                     imageMipTailStride;
   1517 } VkSparseImageMemoryRequirements;
   1518 
   1519 typedef struct VkSparseMemoryBind {
   1520     VkDeviceSize               resourceOffset;
   1521     VkDeviceSize               size;
   1522     VkDeviceMemory             memory;
   1523     VkDeviceSize               memoryOffset;
   1524     VkSparseMemoryBindFlags    flags;
   1525 } VkSparseMemoryBind;
   1526 
   1527 typedef struct VkSparseBufferMemoryBindInfo {
   1528     VkBuffer                     buffer;
   1529     uint32_t                     bindCount;
   1530     const VkSparseMemoryBind*    pBinds;
   1531 } VkSparseBufferMemoryBindInfo;
   1532 
   1533 typedef struct VkSparseImageOpaqueMemoryBindInfo {
   1534     VkImage                      image;
   1535     uint32_t                     bindCount;
   1536     const VkSparseMemoryBind*    pBinds;
   1537 } VkSparseImageOpaqueMemoryBindInfo;
   1538 
   1539 typedef struct VkImageSubresource {
   1540     VkImageAspectFlags    aspectMask;
   1541     uint32_t              mipLevel;
   1542     uint32_t              arrayLayer;
   1543 } VkImageSubresource;
   1544 
   1545 typedef struct VkOffset3D {
   1546     int32_t    x;
   1547     int32_t    y;
   1548     int32_t    z;
   1549 } VkOffset3D;
   1550 
   1551 typedef struct VkSparseImageMemoryBind {
   1552     VkImageSubresource         subresource;
   1553     VkOffset3D                 offset;
   1554     VkExtent3D                 extent;
   1555     VkDeviceMemory             memory;
   1556     VkDeviceSize               memoryOffset;
   1557     VkSparseMemoryBindFlags    flags;
   1558 } VkSparseImageMemoryBind;
   1559 
   1560 typedef struct VkSparseImageMemoryBindInfo {
   1561     VkImage                           image;
   1562     uint32_t                          bindCount;
   1563     const VkSparseImageMemoryBind*    pBinds;
   1564 } VkSparseImageMemoryBindInfo;
   1565 
   1566 typedef struct VkBindSparseInfo {
   1567     VkStructureType                             sType;
   1568     const void*                                 pNext;
   1569     uint32_t                                    waitSemaphoreCount;
   1570     const VkSemaphore*                          pWaitSemaphores;
   1571     uint32_t                                    bufferBindCount;
   1572     const VkSparseBufferMemoryBindInfo*         pBufferBinds;
   1573     uint32_t                                    imageOpaqueBindCount;
   1574     const VkSparseImageOpaqueMemoryBindInfo*    pImageOpaqueBinds;
   1575     uint32_t                                    imageBindCount;
   1576     const VkSparseImageMemoryBindInfo*          pImageBinds;
   1577     uint32_t                                    signalSemaphoreCount;
   1578     const VkSemaphore*                          pSignalSemaphores;
   1579 } VkBindSparseInfo;
   1580 
   1581 typedef struct VkFenceCreateInfo {
   1582     VkStructureType       sType;
   1583     const void*           pNext;
   1584     VkFenceCreateFlags    flags;
   1585 } VkFenceCreateInfo;
   1586 
   1587 typedef struct VkSemaphoreCreateInfo {
   1588     VkStructureType           sType;
   1589     const void*               pNext;
   1590     VkSemaphoreCreateFlags    flags;
   1591 } VkSemaphoreCreateInfo;
   1592 
   1593 typedef struct VkEventCreateInfo {
   1594     VkStructureType       sType;
   1595     const void*           pNext;
   1596     VkEventCreateFlags    flags;
   1597 } VkEventCreateInfo;
   1598 
   1599 typedef struct VkQueryPoolCreateInfo {
   1600     VkStructureType                  sType;
   1601     const void*                      pNext;
   1602     VkQueryPoolCreateFlags           flags;
   1603     VkQueryType                      queryType;
   1604     uint32_t                         queryCount;
   1605     VkQueryPipelineStatisticFlags    pipelineStatistics;
   1606 } VkQueryPoolCreateInfo;
   1607 
   1608 typedef struct VkBufferCreateInfo {
   1609     VkStructureType        sType;
   1610     const void*            pNext;
   1611     VkBufferCreateFlags    flags;
   1612     VkDeviceSize           size;
   1613     VkBufferUsageFlags     usage;
   1614     VkSharingMode          sharingMode;
   1615     uint32_t               queueFamilyIndexCount;
   1616     const uint32_t*        pQueueFamilyIndices;
   1617 } VkBufferCreateInfo;
   1618 
   1619 typedef struct VkBufferViewCreateInfo {
   1620     VkStructureType            sType;
   1621     const void*                pNext;
   1622     VkBufferViewCreateFlags    flags;
   1623     VkBuffer                   buffer;
   1624     VkFormat                   format;
   1625     VkDeviceSize               offset;
   1626     VkDeviceSize               range;
   1627 } VkBufferViewCreateInfo;
   1628 
   1629 typedef struct VkImageCreateInfo {
   1630     VkStructureType          sType;
   1631     const void*              pNext;
   1632     VkImageCreateFlags       flags;
   1633     VkImageType              imageType;
   1634     VkFormat                 format;
   1635     VkExtent3D               extent;
   1636     uint32_t                 mipLevels;
   1637     uint32_t                 arrayLayers;
   1638     VkSampleCountFlagBits    samples;
   1639     VkImageTiling            tiling;
   1640     VkImageUsageFlags        usage;
   1641     VkSharingMode            sharingMode;
   1642     uint32_t                 queueFamilyIndexCount;
   1643     const uint32_t*          pQueueFamilyIndices;
   1644     VkImageLayout            initialLayout;
   1645 } VkImageCreateInfo;
   1646 
   1647 typedef struct VkSubresourceLayout {
   1648     VkDeviceSize    offset;
   1649     VkDeviceSize    size;
   1650     VkDeviceSize    rowPitch;
   1651     VkDeviceSize    arrayPitch;
   1652     VkDeviceSize    depthPitch;
   1653 } VkSubresourceLayout;
   1654 
   1655 typedef struct VkComponentMapping {
   1656     VkComponentSwizzle    r;
   1657     VkComponentSwizzle    g;
   1658     VkComponentSwizzle    b;
   1659     VkComponentSwizzle    a;
   1660 } VkComponentMapping;
   1661 
   1662 typedef struct VkImageSubresourceRange {
   1663     VkImageAspectFlags    aspectMask;
   1664     uint32_t              baseMipLevel;
   1665     uint32_t              levelCount;
   1666     uint32_t              baseArrayLayer;
   1667     uint32_t              layerCount;
   1668 } VkImageSubresourceRange;
   1669 
   1670 typedef struct VkImageViewCreateInfo {
   1671     VkStructureType            sType;
   1672     const void*                pNext;
   1673     VkImageViewCreateFlags     flags;
   1674     VkImage                    image;
   1675     VkImageViewType            viewType;
   1676     VkFormat                   format;
   1677     VkComponentMapping         components;
   1678     VkImageSubresourceRange    subresourceRange;
   1679 } VkImageViewCreateInfo;
   1680 
   1681 typedef struct VkShaderModuleCreateInfo {
   1682     VkStructureType              sType;
   1683     const void*                  pNext;
   1684     VkShaderModuleCreateFlags    flags;
   1685     size_t                       codeSize;
   1686     const uint32_t*              pCode;
   1687 } VkShaderModuleCreateInfo;
   1688 
   1689 typedef struct VkPipelineCacheCreateInfo {
   1690     VkStructureType               sType;
   1691     const void*                   pNext;
   1692     VkPipelineCacheCreateFlags    flags;
   1693     size_t                        initialDataSize;
   1694     const void*                   pInitialData;
   1695 } VkPipelineCacheCreateInfo;
   1696 
   1697 typedef struct VkSpecializationMapEntry {
   1698     uint32_t    constantID;
   1699     uint32_t    offset;
   1700     size_t      size;
   1701 } VkSpecializationMapEntry;
   1702 
   1703 typedef struct VkSpecializationInfo {
   1704     uint32_t                           mapEntryCount;
   1705     const VkSpecializationMapEntry*    pMapEntries;
   1706     size_t                             dataSize;
   1707     const void*                        pData;
   1708 } VkSpecializationInfo;
   1709 
   1710 typedef struct VkPipelineShaderStageCreateInfo {
   1711     VkStructureType                     sType;
   1712     const void*                         pNext;
   1713     VkPipelineShaderStageCreateFlags    flags;
   1714     VkShaderStageFlagBits               stage;
   1715     VkShaderModule                      module;
   1716     const char*                         pName;
   1717     const VkSpecializationInfo*         pSpecializationInfo;
   1718 } VkPipelineShaderStageCreateInfo;
   1719 
   1720 typedef struct VkVertexInputBindingDescription {
   1721     uint32_t             binding;
   1722     uint32_t             stride;
   1723     VkVertexInputRate    inputRate;
   1724 } VkVertexInputBindingDescription;
   1725 
   1726 typedef struct VkVertexInputAttributeDescription {
   1727     uint32_t    location;
   1728     uint32_t    binding;
   1729     VkFormat    format;
   1730     uint32_t    offset;
   1731 } VkVertexInputAttributeDescription;
   1732 
   1733 typedef struct VkPipelineVertexInputStateCreateInfo {
   1734     VkStructureType                             sType;
   1735     const void*                                 pNext;
   1736     VkPipelineVertexInputStateCreateFlags       flags;
   1737     uint32_t                                    vertexBindingDescriptionCount;
   1738     const VkVertexInputBindingDescription*      pVertexBindingDescriptions;
   1739     uint32_t                                    vertexAttributeDescriptionCount;
   1740     const VkVertexInputAttributeDescription*    pVertexAttributeDescriptions;
   1741 } VkPipelineVertexInputStateCreateInfo;
   1742 
   1743 typedef struct VkPipelineInputAssemblyStateCreateInfo {
   1744     VkStructureType                            sType;
   1745     const void*                                pNext;
   1746     VkPipelineInputAssemblyStateCreateFlags    flags;
   1747     VkPrimitiveTopology                        topology;
   1748     VkBool32                                   primitiveRestartEnable;
   1749 } VkPipelineInputAssemblyStateCreateInfo;
   1750 
   1751 typedef struct VkPipelineTessellationStateCreateInfo {
   1752     VkStructureType                           sType;
   1753     const void*                               pNext;
   1754     VkPipelineTessellationStateCreateFlags    flags;
   1755     uint32_t                                  patchControlPoints;
   1756 } VkPipelineTessellationStateCreateInfo;
   1757 
   1758 typedef struct VkViewport {
   1759     float    x;
   1760     float    y;
   1761     float    width;
   1762     float    height;
   1763     float    minDepth;
   1764     float    maxDepth;
   1765 } VkViewport;
   1766 
   1767 typedef struct VkOffset2D {
   1768     int32_t    x;
   1769     int32_t    y;
   1770 } VkOffset2D;
   1771 
   1772 typedef struct VkExtent2D {
   1773     uint32_t    width;
   1774     uint32_t    height;
   1775 } VkExtent2D;
   1776 
   1777 typedef struct VkRect2D {
   1778     VkOffset2D    offset;
   1779     VkExtent2D    extent;
   1780 } VkRect2D;
   1781 
   1782 typedef struct VkPipelineViewportStateCreateInfo {
   1783     VkStructureType                       sType;
   1784     const void*                           pNext;
   1785     VkPipelineViewportStateCreateFlags    flags;
   1786     uint32_t                              viewportCount;
   1787     const VkViewport*                     pViewports;
   1788     uint32_t                              scissorCount;
   1789     const VkRect2D*                       pScissors;
   1790 } VkPipelineViewportStateCreateInfo;
   1791 
   1792 typedef struct VkPipelineRasterizationStateCreateInfo {
   1793     VkStructureType                            sType;
   1794     const void*                                pNext;
   1795     VkPipelineRasterizationStateCreateFlags    flags;
   1796     VkBool32                                   depthClampEnable;
   1797     VkBool32                                   rasterizerDiscardEnable;
   1798     VkPolygonMode                              polygonMode;
   1799     VkCullModeFlags                            cullMode;
   1800     VkFrontFace                                frontFace;
   1801     VkBool32                                   depthBiasEnable;
   1802     float                                      depthBiasConstantFactor;
   1803     float                                      depthBiasClamp;
   1804     float                                      depthBiasSlopeFactor;
   1805     float                                      lineWidth;
   1806 } VkPipelineRasterizationStateCreateInfo;
   1807 
   1808 typedef struct VkPipelineMultisampleStateCreateInfo {
   1809     VkStructureType                          sType;
   1810     const void*                              pNext;
   1811     VkPipelineMultisampleStateCreateFlags    flags;
   1812     VkSampleCountFlagBits                    rasterizationSamples;
   1813     VkBool32                                 sampleShadingEnable;
   1814     float                                    minSampleShading;
   1815     const VkSampleMask*                      pSampleMask;
   1816     VkBool32                                 alphaToCoverageEnable;
   1817     VkBool32                                 alphaToOneEnable;
   1818 } VkPipelineMultisampleStateCreateInfo;
   1819 
   1820 typedef struct VkStencilOpState {
   1821     VkStencilOp    failOp;
   1822     VkStencilOp    passOp;
   1823     VkStencilOp    depthFailOp;
   1824     VkCompareOp    compareOp;
   1825     uint32_t       compareMask;
   1826     uint32_t       writeMask;
   1827     uint32_t       reference;
   1828 } VkStencilOpState;
   1829 
   1830 typedef struct VkPipelineDepthStencilStateCreateInfo {
   1831     VkStructureType                           sType;
   1832     const void*                               pNext;
   1833     VkPipelineDepthStencilStateCreateFlags    flags;
   1834     VkBool32                                  depthTestEnable;
   1835     VkBool32                                  depthWriteEnable;
   1836     VkCompareOp                               depthCompareOp;
   1837     VkBool32                                  depthBoundsTestEnable;
   1838     VkBool32                                  stencilTestEnable;
   1839     VkStencilOpState                          front;
   1840     VkStencilOpState                          back;
   1841     float                                     minDepthBounds;
   1842     float                                     maxDepthBounds;
   1843 } VkPipelineDepthStencilStateCreateInfo;
   1844 
   1845 typedef struct VkPipelineColorBlendAttachmentState {
   1846     VkBool32                 blendEnable;
   1847     VkBlendFactor            srcColorBlendFactor;
   1848     VkBlendFactor            dstColorBlendFactor;
   1849     VkBlendOp                colorBlendOp;
   1850     VkBlendFactor            srcAlphaBlendFactor;
   1851     VkBlendFactor            dstAlphaBlendFactor;
   1852     VkBlendOp                alphaBlendOp;
   1853     VkColorComponentFlags    colorWriteMask;
   1854 } VkPipelineColorBlendAttachmentState;
   1855 
   1856 typedef struct VkPipelineColorBlendStateCreateInfo {
   1857     VkStructureType                               sType;
   1858     const void*                                   pNext;
   1859     VkPipelineColorBlendStateCreateFlags          flags;
   1860     VkBool32                                      logicOpEnable;
   1861     VkLogicOp                                     logicOp;
   1862     uint32_t                                      attachmentCount;
   1863     const VkPipelineColorBlendAttachmentState*    pAttachments;
   1864     float                                         blendConstants[4];
   1865 } VkPipelineColorBlendStateCreateInfo;
   1866 
   1867 typedef struct VkPipelineDynamicStateCreateInfo {
   1868     VkStructureType                      sType;
   1869     const void*                          pNext;
   1870     VkPipelineDynamicStateCreateFlags    flags;
   1871     uint32_t                             dynamicStateCount;
   1872     const VkDynamicState*                pDynamicStates;
   1873 } VkPipelineDynamicStateCreateInfo;
   1874 
   1875 typedef struct VkGraphicsPipelineCreateInfo {
   1876     VkStructureType                                  sType;
   1877     const void*                                      pNext;
   1878     VkPipelineCreateFlags                            flags;
   1879     uint32_t                                         stageCount;
   1880     const VkPipelineShaderStageCreateInfo*           pStages;
   1881     const VkPipelineVertexInputStateCreateInfo*      pVertexInputState;
   1882     const VkPipelineInputAssemblyStateCreateInfo*    pInputAssemblyState;
   1883     const VkPipelineTessellationStateCreateInfo*     pTessellationState;
   1884     const VkPipelineViewportStateCreateInfo*         pViewportState;
   1885     const VkPipelineRasterizationStateCreateInfo*    pRasterizationState;
   1886     const VkPipelineMultisampleStateCreateInfo*      pMultisampleState;
   1887     const VkPipelineDepthStencilStateCreateInfo*     pDepthStencilState;
   1888     const VkPipelineColorBlendStateCreateInfo*       pColorBlendState;
   1889     const VkPipelineDynamicStateCreateInfo*          pDynamicState;
   1890     VkPipelineLayout                                 layout;
   1891     VkRenderPass                                     renderPass;
   1892     uint32_t                                         subpass;
   1893     VkPipeline                                       basePipelineHandle;
   1894     int32_t                                          basePipelineIndex;
   1895 } VkGraphicsPipelineCreateInfo;
   1896 
   1897 typedef struct VkComputePipelineCreateInfo {
   1898     VkStructureType                    sType;
   1899     const void*                        pNext;
   1900     VkPipelineCreateFlags              flags;
   1901     VkPipelineShaderStageCreateInfo    stage;
   1902     VkPipelineLayout                   layout;
   1903     VkPipeline                         basePipelineHandle;
   1904     int32_t                            basePipelineIndex;
   1905 } VkComputePipelineCreateInfo;
   1906 
   1907 typedef struct VkPushConstantRange {
   1908     VkShaderStageFlags    stageFlags;
   1909     uint32_t              offset;
   1910     uint32_t              size;
   1911 } VkPushConstantRange;
   1912 
   1913 typedef struct VkPipelineLayoutCreateInfo {
   1914     VkStructureType                 sType;
   1915     const void*                     pNext;
   1916     VkPipelineLayoutCreateFlags     flags;
   1917     uint32_t                        setLayoutCount;
   1918     const VkDescriptorSetLayout*    pSetLayouts;
   1919     uint32_t                        pushConstantRangeCount;
   1920     const VkPushConstantRange*      pPushConstantRanges;
   1921 } VkPipelineLayoutCreateInfo;
   1922 
   1923 typedef struct VkSamplerCreateInfo {
   1924     VkStructureType         sType;
   1925     const void*             pNext;
   1926     VkSamplerCreateFlags    flags;
   1927     VkFilter                magFilter;
   1928     VkFilter                minFilter;
   1929     VkSamplerMipmapMode     mipmapMode;
   1930     VkSamplerAddressMode    addressModeU;
   1931     VkSamplerAddressMode    addressModeV;
   1932     VkSamplerAddressMode    addressModeW;
   1933     float                   mipLodBias;
   1934     VkBool32                anisotropyEnable;
   1935     float                   maxAnisotropy;
   1936     VkBool32                compareEnable;
   1937     VkCompareOp             compareOp;
   1938     float                   minLod;
   1939     float                   maxLod;
   1940     VkBorderColor           borderColor;
   1941     VkBool32                unnormalizedCoordinates;
   1942 } VkSamplerCreateInfo;
   1943 
   1944 typedef struct VkDescriptorSetLayoutBinding {
   1945     uint32_t              binding;
   1946     VkDescriptorType      descriptorType;
   1947     uint32_t              descriptorCount;
   1948     VkShaderStageFlags    stageFlags;
   1949     const VkSampler*      pImmutableSamplers;
   1950 } VkDescriptorSetLayoutBinding;
   1951 
   1952 typedef struct VkDescriptorSetLayoutCreateInfo {
   1953     VkStructureType                        sType;
   1954     const void*                            pNext;
   1955     VkDescriptorSetLayoutCreateFlags       flags;
   1956     uint32_t                               bindingCount;
   1957     const VkDescriptorSetLayoutBinding*    pBindings;
   1958 } VkDescriptorSetLayoutCreateInfo;
   1959 
   1960 typedef struct VkDescriptorPoolSize {
   1961     VkDescriptorType    type;
   1962     uint32_t            descriptorCount;
   1963 } VkDescriptorPoolSize;
   1964 
   1965 typedef struct VkDescriptorPoolCreateInfo {
   1966     VkStructureType                sType;
   1967     const void*                    pNext;
   1968     VkDescriptorPoolCreateFlags    flags;
   1969     uint32_t                       maxSets;
   1970     uint32_t                       poolSizeCount;
   1971     const VkDescriptorPoolSize*    pPoolSizes;
   1972 } VkDescriptorPoolCreateInfo;
   1973 
   1974 typedef struct VkDescriptorSetAllocateInfo {
   1975     VkStructureType                 sType;
   1976     const void*                     pNext;
   1977     VkDescriptorPool                descriptorPool;
   1978     uint32_t                        descriptorSetCount;
   1979     const VkDescriptorSetLayout*    pSetLayouts;
   1980 } VkDescriptorSetAllocateInfo;
   1981 
   1982 typedef struct VkDescriptorImageInfo {
   1983     VkSampler        sampler;
   1984     VkImageView      imageView;
   1985     VkImageLayout    imageLayout;
   1986 } VkDescriptorImageInfo;
   1987 
   1988 typedef struct VkDescriptorBufferInfo {
   1989     VkBuffer        buffer;
   1990     VkDeviceSize    offset;
   1991     VkDeviceSize    range;
   1992 } VkDescriptorBufferInfo;
   1993 
   1994 typedef struct VkWriteDescriptorSet {
   1995     VkStructureType                  sType;
   1996     const void*                      pNext;
   1997     VkDescriptorSet                  dstSet;
   1998     uint32_t                         dstBinding;
   1999     uint32_t                         dstArrayElement;
   2000     uint32_t                         descriptorCount;
   2001     VkDescriptorType                 descriptorType;
   2002     const VkDescriptorImageInfo*     pImageInfo;
   2003     const VkDescriptorBufferInfo*    pBufferInfo;
   2004     const VkBufferView*              pTexelBufferView;
   2005 } VkWriteDescriptorSet;
   2006 
   2007 typedef struct VkCopyDescriptorSet {
   2008     VkStructureType    sType;
   2009     const void*        pNext;
   2010     VkDescriptorSet    srcSet;
   2011     uint32_t           srcBinding;
   2012     uint32_t           srcArrayElement;
   2013     VkDescriptorSet    dstSet;
   2014     uint32_t           dstBinding;
   2015     uint32_t           dstArrayElement;
   2016     uint32_t           descriptorCount;
   2017 } VkCopyDescriptorSet;
   2018 
   2019 typedef struct VkFramebufferCreateInfo {
   2020     VkStructureType             sType;
   2021     const void*                 pNext;
   2022     VkFramebufferCreateFlags    flags;
   2023     VkRenderPass                renderPass;
   2024     uint32_t                    attachmentCount;
   2025     const VkImageView*          pAttachments;
   2026     uint32_t                    width;
   2027     uint32_t                    height;
   2028     uint32_t                    layers;
   2029 } VkFramebufferCreateInfo;
   2030 
   2031 typedef struct VkAttachmentDescription {
   2032     VkAttachmentDescriptionFlags    flags;
   2033     VkFormat                        format;
   2034     VkSampleCountFlagBits           samples;
   2035     VkAttachmentLoadOp              loadOp;
   2036     VkAttachmentStoreOp             storeOp;
   2037     VkAttachmentLoadOp              stencilLoadOp;
   2038     VkAttachmentStoreOp             stencilStoreOp;
   2039     VkImageLayout                   initialLayout;
   2040     VkImageLayout                   finalLayout;
   2041 } VkAttachmentDescription;
   2042 
   2043 typedef struct VkAttachmentReference {
   2044     uint32_t         attachment;
   2045     VkImageLayout    layout;
   2046 } VkAttachmentReference;
   2047 
   2048 typedef struct VkSubpassDescription {
   2049     VkSubpassDescriptionFlags       flags;
   2050     VkPipelineBindPoint             pipelineBindPoint;
   2051     uint32_t                        inputAttachmentCount;
   2052     const VkAttachmentReference*    pInputAttachments;
   2053     uint32_t                        colorAttachmentCount;
   2054     const VkAttachmentReference*    pColorAttachments;
   2055     const VkAttachmentReference*    pResolveAttachments;
   2056     const VkAttachmentReference*    pDepthStencilAttachment;
   2057     uint32_t                        preserveAttachmentCount;
   2058     const uint32_t*                 pPreserveAttachments;
   2059 } VkSubpassDescription;
   2060 
   2061 typedef struct VkSubpassDependency {
   2062     uint32_t                srcSubpass;
   2063     uint32_t                dstSubpass;
   2064     VkPipelineStageFlags    srcStageMask;
   2065     VkPipelineStageFlags    dstStageMask;
   2066     VkAccessFlags           srcAccessMask;
   2067     VkAccessFlags           dstAccessMask;
   2068     VkDependencyFlags       dependencyFlags;
   2069 } VkSubpassDependency;
   2070 
   2071 typedef struct VkRenderPassCreateInfo {
   2072     VkStructureType                   sType;
   2073     const void*                       pNext;
   2074     VkRenderPassCreateFlags           flags;
   2075     uint32_t                          attachmentCount;
   2076     const VkAttachmentDescription*    pAttachments;
   2077     uint32_t                          subpassCount;
   2078     const VkSubpassDescription*       pSubpasses;
   2079     uint32_t                          dependencyCount;
   2080     const VkSubpassDependency*        pDependencies;
   2081 } VkRenderPassCreateInfo;
   2082 
   2083 typedef struct VkCommandPoolCreateInfo {
   2084     VkStructureType             sType;
   2085     const void*                 pNext;
   2086     VkCommandPoolCreateFlags    flags;
   2087     uint32_t                    queueFamilyIndex;
   2088 } VkCommandPoolCreateInfo;
   2089 
   2090 typedef struct VkCommandBufferAllocateInfo {
   2091     VkStructureType         sType;
   2092     const void*             pNext;
   2093     VkCommandPool           commandPool;
   2094     VkCommandBufferLevel    level;
   2095     uint32_t                commandBufferCount;
   2096 } VkCommandBufferAllocateInfo;
   2097 
   2098 typedef struct VkCommandBufferInheritanceInfo {
   2099     VkStructureType                  sType;
   2100     const void*                      pNext;
   2101     VkRenderPass                     renderPass;
   2102     uint32_t                         subpass;
   2103     VkFramebuffer                    framebuffer;
   2104     VkBool32                         occlusionQueryEnable;
   2105     VkQueryControlFlags              queryFlags;
   2106     VkQueryPipelineStatisticFlags    pipelineStatistics;
   2107 } VkCommandBufferInheritanceInfo;
   2108 
   2109 typedef struct VkCommandBufferBeginInfo {
   2110     VkStructureType                          sType;
   2111     const void*                              pNext;
   2112     VkCommandBufferUsageFlags                flags;
   2113     const VkCommandBufferInheritanceInfo*    pInheritanceInfo;
   2114 } VkCommandBufferBeginInfo;
   2115 
   2116 typedef struct VkBufferCopy {
   2117     VkDeviceSize    srcOffset;
   2118     VkDeviceSize    dstOffset;
   2119     VkDeviceSize    size;
   2120 } VkBufferCopy;
   2121 
   2122 typedef struct VkImageSubresourceLayers {
   2123     VkImageAspectFlags    aspectMask;
   2124     uint32_t              mipLevel;
   2125     uint32_t              baseArrayLayer;
   2126     uint32_t              layerCount;
   2127 } VkImageSubresourceLayers;
   2128 
   2129 typedef struct VkImageCopy {
   2130     VkImageSubresourceLayers    srcSubresource;
   2131     VkOffset3D                  srcOffset;
   2132     VkImageSubresourceLayers    dstSubresource;
   2133     VkOffset3D                  dstOffset;
   2134     VkExtent3D                  extent;
   2135 } VkImageCopy;
   2136 
   2137 typedef struct VkImageBlit {
   2138     VkImageSubresourceLayers    srcSubresource;
   2139     VkOffset3D                  srcOffsets[2];
   2140     VkImageSubresourceLayers    dstSubresource;
   2141     VkOffset3D                  dstOffsets[2];
   2142 } VkImageBlit;
   2143 
   2144 typedef struct VkBufferImageCopy {
   2145     VkDeviceSize                bufferOffset;
   2146     uint32_t                    bufferRowLength;
   2147     uint32_t                    bufferImageHeight;
   2148     VkImageSubresourceLayers    imageSubresource;
   2149     VkOffset3D                  imageOffset;
   2150     VkExtent3D                  imageExtent;
   2151 } VkBufferImageCopy;
   2152 
   2153 typedef union VkClearColorValue {
   2154     float       float32[4];
   2155     int32_t     int32[4];
   2156     uint32_t    uint32[4];
   2157 } VkClearColorValue;
   2158 
   2159 typedef struct VkClearDepthStencilValue {
   2160     float       depth;
   2161     uint32_t    stencil;
   2162 } VkClearDepthStencilValue;
   2163 
   2164 typedef union VkClearValue {
   2165     VkClearColorValue           color;
   2166     VkClearDepthStencilValue    depthStencil;
   2167 } VkClearValue;
   2168 
   2169 typedef struct VkClearAttachment {
   2170     VkImageAspectFlags    aspectMask;
   2171     uint32_t              colorAttachment;
   2172     VkClearValue          clearValue;
   2173 } VkClearAttachment;
   2174 
   2175 typedef struct VkClearRect {
   2176     VkRect2D    rect;
   2177     uint32_t    baseArrayLayer;
   2178     uint32_t    layerCount;
   2179 } VkClearRect;
   2180 
   2181 typedef struct VkImageResolve {
   2182     VkImageSubresourceLayers    srcSubresource;
   2183     VkOffset3D                  srcOffset;
   2184     VkImageSubresourceLayers    dstSubresource;
   2185     VkOffset3D                  dstOffset;
   2186     VkExtent3D                  extent;
   2187 } VkImageResolve;
   2188 
   2189 typedef struct VkMemoryBarrier {
   2190     VkStructureType    sType;
   2191     const void*        pNext;
   2192     VkAccessFlags      srcAccessMask;
   2193     VkAccessFlags      dstAccessMask;
   2194 } VkMemoryBarrier;
   2195 
   2196 typedef struct VkBufferMemoryBarrier {
   2197     VkStructureType    sType;
   2198     const void*        pNext;
   2199     VkAccessFlags      srcAccessMask;
   2200     VkAccessFlags      dstAccessMask;
   2201     uint32_t           srcQueueFamilyIndex;
   2202     uint32_t           dstQueueFamilyIndex;
   2203     VkBuffer           buffer;
   2204     VkDeviceSize       offset;
   2205     VkDeviceSize       size;
   2206 } VkBufferMemoryBarrier;
   2207 
   2208 typedef struct VkImageMemoryBarrier {
   2209     VkStructureType            sType;
   2210     const void*                pNext;
   2211     VkAccessFlags              srcAccessMask;
   2212     VkAccessFlags              dstAccessMask;
   2213     VkImageLayout              oldLayout;
   2214     VkImageLayout              newLayout;
   2215     uint32_t                   srcQueueFamilyIndex;
   2216     uint32_t                   dstQueueFamilyIndex;
   2217     VkImage                    image;
   2218     VkImageSubresourceRange    subresourceRange;
   2219 } VkImageMemoryBarrier;
   2220 
   2221 typedef struct VkRenderPassBeginInfo {
   2222     VkStructureType        sType;
   2223     const void*            pNext;
   2224     VkRenderPass           renderPass;
   2225     VkFramebuffer          framebuffer;
   2226     VkRect2D               renderArea;
   2227     uint32_t               clearValueCount;
   2228     const VkClearValue*    pClearValues;
   2229 } VkRenderPassBeginInfo;
   2230 
   2231 typedef struct VkDispatchIndirectCommand {
   2232     uint32_t    x;
   2233     uint32_t    y;
   2234     uint32_t    z;
   2235 } VkDispatchIndirectCommand;
   2236 
   2237 typedef struct VkDrawIndexedIndirectCommand {
   2238     uint32_t    indexCount;
   2239     uint32_t    instanceCount;
   2240     uint32_t    firstIndex;
   2241     int32_t     vertexOffset;
   2242     uint32_t    firstInstance;
   2243 } VkDrawIndexedIndirectCommand;
   2244 
   2245 typedef struct VkDrawIndirectCommand {
   2246     uint32_t    vertexCount;
   2247     uint32_t    instanceCount;
   2248     uint32_t    firstVertex;
   2249     uint32_t    firstInstance;
   2250 } VkDrawIndirectCommand;
   2251 
   2252 
   2253 typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
   2254 typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator);
   2255 typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
   2256 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
   2257 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
   2258 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
   2259 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
   2260 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
   2261 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
   2262 typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName);
   2263 typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);
   2264 typedef VkResult (VKAPI_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
   2265 typedef void (VKAPI_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks* pAllocator);
   2266 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
   2267 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
   2268 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties);
   2269 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties);
   2270 typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
   2271 typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
   2272 typedef VkResult (VKAPI_PTR *PFN_vkQueueWaitIdle)(VkQueue queue);
   2273 typedef VkResult (VKAPI_PTR *PFN_vkDeviceWaitIdle)(VkDevice device);
   2274 typedef VkResult (VKAPI_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
   2275 typedef void (VKAPI_PTR *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);
   2276 typedef VkResult (VKAPI_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
   2277 typedef void (VKAPI_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory);
   2278 typedef VkResult (VKAPI_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
   2279 typedef VkResult (VKAPI_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
   2280 typedef void (VKAPI_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
   2281 typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
   2282 typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
   2283 typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
   2284 typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
   2285 typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
   2286 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties);
   2287 typedef VkResult (VKAPI_PTR *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
   2288 typedef VkResult (VKAPI_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
   2289 typedef void (VKAPI_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
   2290 typedef VkResult (VKAPI_PTR *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
   2291 typedef VkResult (VKAPI_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);
   2292 typedef VkResult (VKAPI_PTR *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
   2293 typedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
   2294 typedef void (VKAPI_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
   2295 typedef VkResult (VKAPI_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
   2296 typedef void (VKAPI_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
   2297 typedef VkResult (VKAPI_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);
   2298 typedef VkResult (VKAPI_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event);
   2299 typedef VkResult (VKAPI_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event);
   2300 typedef VkResult (VKAPI_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
   2301 typedef void (VKAPI_PTR *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator);
   2302 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);
   2303 typedef VkResult (VKAPI_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
   2304 typedef void (VKAPI_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
   2305 typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
   2306 typedef void (VKAPI_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
   2307 typedef VkResult (VKAPI_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
   2308 typedef void (VKAPI_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
   2309 typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
   2310 typedef VkResult (VKAPI_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
   2311 typedef void (VKAPI_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
   2312 typedef VkResult (VKAPI_PTR *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule);
   2313 typedef void (VKAPI_PTR *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator);
   2314 typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
   2315 typedef void (VKAPI_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
   2316 typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
   2317 typedef VkResult (VKAPI_PTR *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
   2318 typedef VkResult (VKAPI_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
   2319 typedef VkResult (VKAPI_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
   2320 typedef void (VKAPI_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
   2321 typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
   2322 typedef void (VKAPI_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
   2323 typedef VkResult (VKAPI_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
   2324 typedef void (VKAPI_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
   2325 typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
   2326 typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
   2327 typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
   2328 typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator);
   2329 typedef VkResult (VKAPI_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
   2330 typedef VkResult (VKAPI_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
   2331 typedef VkResult (VKAPI_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
   2332 typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
   2333 typedef VkResult (VKAPI_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
   2334 typedef void (VKAPI_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
   2335 typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
   2336 typedef void (VKAPI_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
   2337 typedef void (VKAPI_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
   2338 typedef VkResult (VKAPI_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
   2339 typedef void (VKAPI_PTR *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator);
   2340 typedef VkResult (VKAPI_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
   2341 typedef VkResult (VKAPI_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
   2342 typedef void (VKAPI_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
   2343 typedef VkResult (VKAPI_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
   2344 typedef VkResult (VKAPI_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer);
   2345 typedef VkResult (VKAPI_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
   2346 typedef void (VKAPI_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
   2347 typedef void (VKAPI_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports);
   2348 typedef void (VKAPI_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors);
   2349 typedef void (VKAPI_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth);
   2350 typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
   2351 typedef void (VKAPI_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]);
   2352 typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
   2353 typedef void (VKAPI_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask);
   2354 typedef void (VKAPI_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask);
   2355 typedef void (VKAPI_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference);
   2356 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);
   2357 typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
   2358 typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
   2359 typedef void (VKAPI_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
   2360 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
   2361 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
   2362 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
   2363 typedef void (VKAPI_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t x, uint32_t y, uint32_t z);
   2364 typedef void (VKAPI_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
   2365 typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
   2366 typedef void (VKAPI_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
   2367 typedef void (VKAPI_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
   2368 typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
   2369 typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
   2370 typedef void (VKAPI_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);
   2371 typedef void (VKAPI_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data);
   2372 typedef void (VKAPI_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
   2373 typedef void (VKAPI_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
   2374 typedef void (VKAPI_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
   2375 typedef void (VKAPI_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
   2376 typedef void (VKAPI_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
   2377 typedef void (VKAPI_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
   2378 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);
   2379 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);
   2380 typedef void (VKAPI_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags);
   2381 typedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query);
   2382 typedef void (VKAPI_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);
   2383 typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query);
   2384 typedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
   2385 typedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues);
   2386 typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
   2387 typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents);
   2388 typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer);
   2389 typedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
   2390 
   2391 #ifndef VK_NO_PROTOTYPES
   2392 VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
   2393     const VkInstanceCreateInfo*                 pCreateInfo,
   2394     const VkAllocationCallbacks*                pAllocator,
   2395     VkInstance*                                 pInstance);
   2396 
   2397 VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
   2398     VkInstance                                  instance,
   2399     const VkAllocationCallbacks*                pAllocator);
   2400 
   2401 VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices(
   2402     VkInstance                                  instance,
   2403     uint32_t*                                   pPhysicalDeviceCount,
   2404     VkPhysicalDevice*                           pPhysicalDevices);
   2405 
   2406 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures(
   2407     VkPhysicalDevice                            physicalDevice,
   2408     VkPhysicalDeviceFeatures*                   pFeatures);
   2409 
   2410 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(
   2411     VkPhysicalDevice                            physicalDevice,
   2412     VkFormat                                    format,
   2413     VkFormatProperties*                         pFormatProperties);
   2414 
   2415 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties(
   2416     VkPhysicalDevice                            physicalDevice,
   2417     VkFormat                                    format,
   2418     VkImageType                                 type,
   2419     VkImageTiling                               tiling,
   2420     VkImageUsageFlags                           usage,
   2421     VkImageCreateFlags                          flags,
   2422     VkImageFormatProperties*                    pImageFormatProperties);
   2423 
   2424 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties(
   2425     VkPhysicalDevice                            physicalDevice,
   2426     VkPhysicalDeviceProperties*                 pProperties);
   2427 
   2428 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties(
   2429     VkPhysicalDevice                            physicalDevice,
   2430     uint32_t*                                   pQueueFamilyPropertyCount,
   2431     VkQueueFamilyProperties*                    pQueueFamilyProperties);
   2432 
   2433 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(
   2434     VkPhysicalDevice                            physicalDevice,
   2435     VkPhysicalDeviceMemoryProperties*           pMemoryProperties);
   2436 
   2437 VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(
   2438     VkInstance                                  instance,
   2439     const char*                                 pName);
   2440 
   2441 VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(
   2442     VkDevice                                    device,
   2443     const char*                                 pName);
   2444 
   2445 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(
   2446     VkPhysicalDevice                            physicalDevice,
   2447     const VkDeviceCreateInfo*                   pCreateInfo,
   2448     const VkAllocationCallbacks*                pAllocator,
   2449     VkDevice*                                   pDevice);
   2450 
   2451 VKAPI_ATTR void VKAPI_CALL vkDestroyDevice(
   2452     VkDevice                                    device,
   2453     const VkAllocationCallbacks*                pAllocator);
   2454 
   2455 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties(
   2456     const char*                                 pLayerName,
   2457     uint32_t*                                   pPropertyCount,
   2458     VkExtensionProperties*                      pProperties);
   2459 
   2460 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties(
   2461     VkPhysicalDevice                            physicalDevice,
   2462     const char*                                 pLayerName,
   2463     uint32_t*                                   pPropertyCount,
   2464     VkExtensionProperties*                      pProperties);
   2465 
   2466 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties(
   2467     uint32_t*                                   pPropertyCount,
   2468     VkLayerProperties*                          pProperties);
   2469 
   2470 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties(
   2471     VkPhysicalDevice                            physicalDevice,
   2472     uint32_t*                                   pPropertyCount,
   2473     VkLayerProperties*                          pProperties);
   2474 
   2475 VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue(
   2476     VkDevice                                    device,
   2477     uint32_t                                    queueFamilyIndex,
   2478     uint32_t                                    queueIndex,
   2479     VkQueue*                                    pQueue);
   2480 
   2481 VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(
   2482     VkQueue                                     queue,
   2483     uint32_t                                    submitCount,
   2484     const VkSubmitInfo*                         pSubmits,
   2485     VkFence                                     fence);
   2486 
   2487 VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(
   2488     VkQueue                                     queue);
   2489 
   2490 VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(
   2491     VkDevice                                    device);
   2492 
   2493 VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(
   2494     VkDevice                                    device,
   2495     const VkMemoryAllocateInfo*                 pAllocateInfo,
   2496     const VkAllocationCallbacks*                pAllocator,
   2497     VkDeviceMemory*                             pMemory);
   2498 
   2499 VKAPI_ATTR void VKAPI_CALL vkFreeMemory(
   2500     VkDevice                                    device,
   2501     VkDeviceMemory                              memory,
   2502     const VkAllocationCallbacks*                pAllocator);
   2503 
   2504 VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(
   2505     VkDevice                                    device,
   2506     VkDeviceMemory                              memory,
   2507     VkDeviceSize                                offset,
   2508     VkDeviceSize                                size,
   2509     VkMemoryMapFlags                            flags,
   2510     void**                                      ppData);
   2511 
   2512 VKAPI_ATTR void VKAPI_CALL vkUnmapMemory(
   2513     VkDevice                                    device,
   2514     VkDeviceMemory                              memory);
   2515 
   2516 VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges(
   2517     VkDevice                                    device,
   2518     uint32_t                                    memoryRangeCount,
   2519     const VkMappedMemoryRange*                  pMemoryRanges);
   2520 
   2521 VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(
   2522     VkDevice                                    device,
   2523     uint32_t                                    memoryRangeCount,
   2524     const VkMappedMemoryRange*                  pMemoryRanges);
   2525 
   2526 VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment(
   2527     VkDevice                                    device,
   2528     VkDeviceMemory                              memory,
   2529     VkDeviceSize*                               pCommittedMemoryInBytes);
   2530 
   2531 VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(
   2532     VkDevice                                    device,
   2533     VkBuffer                                    buffer,
   2534     VkDeviceMemory                              memory,
   2535     VkDeviceSize                                memoryOffset);
   2536 
   2537 VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(
   2538     VkDevice                                    device,
   2539     VkImage                                     image,
   2540     VkDeviceMemory                              memory,
   2541     VkDeviceSize                                memoryOffset);
   2542 
   2543 VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements(
   2544     VkDevice                                    device,
   2545     VkBuffer                                    buffer,
   2546     VkMemoryRequirements*                       pMemoryRequirements);
   2547 
   2548 VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements(
   2549     VkDevice                                    device,
   2550     VkImage                                     image,
   2551     VkMemoryRequirements*                       pMemoryRequirements);
   2552 
   2553 VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements(
   2554     VkDevice                                    device,
   2555     VkImage                                     image,
   2556     uint32_t*                                   pSparseMemoryRequirementCount,
   2557     VkSparseImageMemoryRequirements*            pSparseMemoryRequirements);
   2558 
   2559 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties(
   2560     VkPhysicalDevice                            physicalDevice,
   2561     VkFormat                                    format,
   2562     VkImageType                                 type,
   2563     VkSampleCountFlagBits                       samples,
   2564     VkImageUsageFlags                           usage,
   2565     VkImageTiling                               tiling,
   2566     uint32_t*                                   pPropertyCount,
   2567     VkSparseImageFormatProperties*              pProperties);
   2568 
   2569 VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse(
   2570     VkQueue                                     queue,
   2571     uint32_t                                    bindInfoCount,
   2572     const VkBindSparseInfo*                     pBindInfo,
   2573     VkFence                                     fence);
   2574 
   2575 VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(
   2576     VkDevice                                    device,
   2577     const VkFenceCreateInfo*                    pCreateInfo,
   2578     const VkAllocationCallbacks*                pAllocator,
   2579     VkFence*                                    pFence);
   2580 
   2581 VKAPI_ATTR void VKAPI_CALL vkDestroyFence(
   2582     VkDevice                                    device,
   2583     VkFence                                     fence,
   2584     const VkAllocationCallbacks*                pAllocator);
   2585 
   2586 VKAPI_ATTR VkResult VKAPI_CALL vkResetFences(
   2587     VkDevice                                    device,
   2588     uint32_t                                    fenceCount,
   2589     const VkFence*                              pFences);
   2590 
   2591 VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(
   2592     VkDevice                                    device,
   2593     VkFence                                     fence);
   2594 
   2595 VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(
   2596     VkDevice                                    device,
   2597     uint32_t                                    fenceCount,
   2598     const VkFence*                              pFences,
   2599     VkBool32                                    waitAll,
   2600     uint64_t                                    timeout);
   2601 
   2602 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore(
   2603     VkDevice                                    device,
   2604     const VkSemaphoreCreateInfo*                pCreateInfo,
   2605     const VkAllocationCallbacks*                pAllocator,
   2606     VkSemaphore*                                pSemaphore);
   2607 
   2608 VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore(
   2609     VkDevice                                    device,
   2610     VkSemaphore                                 semaphore,
   2611     const VkAllocationCallbacks*                pAllocator);
   2612 
   2613 VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(
   2614     VkDevice                                    device,
   2615     const VkEventCreateInfo*                    pCreateInfo,
   2616     const VkAllocationCallbacks*                pAllocator,
   2617     VkEvent*                                    pEvent);
   2618 
   2619 VKAPI_ATTR void VKAPI_CALL vkDestroyEvent(
   2620     VkDevice                                    device,
   2621     VkEvent                                     event,
   2622     const VkAllocationCallbacks*                pAllocator);
   2623 
   2624 VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus(
   2625     VkDevice                                    device,
   2626     VkEvent                                     event);
   2627 
   2628 VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent(
   2629     VkDevice                                    device,
   2630     VkEvent                                     event);
   2631 
   2632 VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent(
   2633     VkDevice                                    device,
   2634     VkEvent                                     event);
   2635 
   2636 VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool(
   2637     VkDevice                                    device,
   2638     const VkQueryPoolCreateInfo*                pCreateInfo,
   2639     const VkAllocationCallbacks*                pAllocator,
   2640     VkQueryPool*                                pQueryPool);
   2641 
   2642 VKAPI_ATTR void VKAPI_CALL vkDestroyQueryPool(
   2643     VkDevice                                    device,
   2644     VkQueryPool                                 queryPool,
   2645     const VkAllocationCallbacks*                pAllocator);
   2646 
   2647 VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults(
   2648     VkDevice                                    device,
   2649     VkQueryPool                                 queryPool,
   2650     uint32_t                                    firstQuery,
   2651     uint32_t                                    queryCount,
   2652     size_t                                      dataSize,
   2653     void*                                       pData,
   2654     VkDeviceSize                                stride,
   2655     VkQueryResultFlags                          flags);
   2656 
   2657 VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(
   2658     VkDevice                                    device,
   2659     const VkBufferCreateInfo*                   pCreateInfo,
   2660     const VkAllocationCallbacks*                pAllocator,
   2661     VkBuffer*                                   pBuffer);
   2662 
   2663 VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(
   2664     VkDevice                                    device,
   2665     VkBuffer                                    buffer,
   2666     const VkAllocationCallbacks*                pAllocator);
   2667 
   2668 VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(
   2669     VkDevice                                    device,
   2670     const VkBufferViewCreateInfo*               pCreateInfo,
   2671     const VkAllocationCallbacks*                pAllocator,
   2672     VkBufferView*                               pView);
   2673 
   2674 VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView(
   2675     VkDevice                                    device,
   2676     VkBufferView                                bufferView,
   2677     const VkAllocationCallbacks*                pAllocator);
   2678 
   2679 VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(
   2680     VkDevice                                    device,
   2681     const VkImageCreateInfo*                    pCreateInfo,
   2682     const VkAllocationCallbacks*                pAllocator,
   2683     VkImage*                                    pImage);
   2684 
   2685 VKAPI_ATTR void VKAPI_CALL vkDestroyImage(
   2686     VkDevice                                    device,
   2687     VkImage                                     image,
   2688     const VkAllocationCallbacks*                pAllocator);
   2689 
   2690 VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout(
   2691     VkDevice                                    device,
   2692     VkImage                                     image,
   2693     const VkImageSubresource*                   pSubresource,
   2694     VkSubresourceLayout*                        pLayout);
   2695 
   2696 VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView(
   2697     VkDevice                                    device,
   2698     const VkImageViewCreateInfo*                pCreateInfo,
   2699     const VkAllocationCallbacks*                pAllocator,
   2700     VkImageView*                                pView);
   2701 
   2702 VKAPI_ATTR void VKAPI_CALL vkDestroyImageView(
   2703     VkDevice                                    device,
   2704     VkImageView                                 imageView,
   2705     const VkAllocationCallbacks*                pAllocator);
   2706 
   2707 VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderModule(
   2708     VkDevice                                    device,
   2709     const VkShaderModuleCreateInfo*             pCreateInfo,
   2710     const VkAllocationCallbacks*                pAllocator,
   2711     VkShaderModule*                             pShaderModule);
   2712 
   2713 VKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule(
   2714     VkDevice                                    device,
   2715     VkShaderModule                              shaderModule,
   2716     const VkAllocationCallbacks*                pAllocator);
   2717 
   2718 VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(
   2719     VkDevice                                    device,
   2720     const VkPipelineCacheCreateInfo*            pCreateInfo,
   2721     const VkAllocationCallbacks*                pAllocator,
   2722     VkPipelineCache*                            pPipelineCache);
   2723 
   2724 VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache(
   2725     VkDevice                                    device,
   2726     VkPipelineCache                             pipelineCache,
   2727     const VkAllocationCallbacks*                pAllocator);
   2728 
   2729 VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineCacheData(
   2730     VkDevice                                    device,
   2731     VkPipelineCache                             pipelineCache,
   2732     size_t*                                     pDataSize,
   2733     void*                                       pData);
   2734 
   2735 VKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches(
   2736     VkDevice                                    device,
   2737     VkPipelineCache                             dstCache,
   2738     uint32_t                                    srcCacheCount,
   2739     const VkPipelineCache*                      pSrcCaches);
   2740 
   2741 VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(
   2742     VkDevice                                    device,
   2743     VkPipelineCache                             pipelineCache,
   2744     uint32_t                                    createInfoCount,
   2745     const VkGraphicsPipelineCreateInfo*         pCreateInfos,
   2746     const VkAllocationCallbacks*                pAllocator,
   2747     VkPipeline*                                 pPipelines);
   2748 
   2749 VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines(
   2750     VkDevice                                    device,
   2751     VkPipelineCache                             pipelineCache,
   2752     uint32_t                                    createInfoCount,
   2753     const VkComputePipelineCreateInfo*          pCreateInfos,
   2754     const VkAllocationCallbacks*                pAllocator,
   2755     VkPipeline*                                 pPipelines);
   2756 
   2757 VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline(
   2758     VkDevice                                    device,
   2759     VkPipeline                                  pipeline,
   2760     const VkAllocationCallbacks*                pAllocator);
   2761 
   2762 VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout(
   2763     VkDevice                                    device,
   2764     const VkPipelineLayoutCreateInfo*           pCreateInfo,
   2765     const VkAllocationCallbacks*                pAllocator,
   2766     VkPipelineLayout*                           pPipelineLayout);
   2767 
   2768 VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout(
   2769     VkDevice                                    device,
   2770     VkPipelineLayout                            pipelineLayout,
   2771     const VkAllocationCallbacks*                pAllocator);
   2772 
   2773 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler(
   2774     VkDevice                                    device,
   2775     const VkSamplerCreateInfo*                  pCreateInfo,
   2776     const VkAllocationCallbacks*                pAllocator,
   2777     VkSampler*                                  pSampler);
   2778 
   2779 VKAPI_ATTR void VKAPI_CALL vkDestroySampler(
   2780     VkDevice                                    device,
   2781     VkSampler                                   sampler,
   2782     const VkAllocationCallbacks*                pAllocator);
   2783 
   2784 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout(
   2785     VkDevice                                    device,
   2786     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
   2787     const VkAllocationCallbacks*                pAllocator,
   2788     VkDescriptorSetLayout*                      pSetLayout);
   2789 
   2790 VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout(
   2791     VkDevice                                    device,
   2792     VkDescriptorSetLayout                       descriptorSetLayout,
   2793     const VkAllocationCallbacks*                pAllocator);
   2794 
   2795 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool(
   2796     VkDevice                                    device,
   2797     const VkDescriptorPoolCreateInfo*           pCreateInfo,
   2798     const VkAllocationCallbacks*                pAllocator,
   2799     VkDescriptorPool*                           pDescriptorPool);
   2800 
   2801 VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorPool(
   2802     VkDevice                                    device,
   2803     VkDescriptorPool                            descriptorPool,
   2804     const VkAllocationCallbacks*                pAllocator);
   2805 
   2806 VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool(
   2807     VkDevice                                    device,
   2808     VkDescriptorPool                            descriptorPool,
   2809     VkDescriptorPoolResetFlags                  flags);
   2810 
   2811 VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(
   2812     VkDevice                                    device,
   2813     const VkDescriptorSetAllocateInfo*          pAllocateInfo,
   2814     VkDescriptorSet*                            pDescriptorSets);
   2815 
   2816 VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets(
   2817     VkDevice                                    device,
   2818     VkDescriptorPool                            descriptorPool,
   2819     uint32_t                                    descriptorSetCount,
   2820     const VkDescriptorSet*                      pDescriptorSets);
   2821 
   2822 VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets(
   2823     VkDevice                                    device,
   2824     uint32_t                                    descriptorWriteCount,
   2825     const VkWriteDescriptorSet*                 pDescriptorWrites,
   2826     uint32_t                                    descriptorCopyCount,
   2827     const VkCopyDescriptorSet*                  pDescriptorCopies);
   2828 
   2829 VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(
   2830     VkDevice                                    device,
   2831     const VkFramebufferCreateInfo*              pCreateInfo,
   2832     const VkAllocationCallbacks*                pAllocator,
   2833     VkFramebuffer*                              pFramebuffer);
   2834 
   2835 VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer(
   2836     VkDevice                                    device,
   2837     VkFramebuffer                               framebuffer,
   2838     const VkAllocationCallbacks*                pAllocator);
   2839 
   2840 VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(
   2841     VkDevice                                    device,
   2842     const VkRenderPassCreateInfo*               pCreateInfo,
   2843     const VkAllocationCallbacks*                pAllocator,
   2844     VkRenderPass*                               pRenderPass);
   2845 
   2846 VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass(
   2847     VkDevice                                    device,
   2848     VkRenderPass                                renderPass,
   2849     const VkAllocationCallbacks*                pAllocator);
   2850 
   2851 VKAPI_ATTR void VKAPI_CALL vkGetRenderAreaGranularity(
   2852     VkDevice                                    device,
   2853     VkRenderPass                                renderPass,
   2854     VkExtent2D*                                 pGranularity);
   2855 
   2856 VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool(
   2857     VkDevice                                    device,
   2858     const VkCommandPoolCreateInfo*              pCreateInfo,
   2859     const VkAllocationCallbacks*                pAllocator,
   2860     VkCommandPool*                              pCommandPool);
   2861 
   2862 VKAPI_ATTR void VKAPI_CALL vkDestroyCommandPool(
   2863     VkDevice                                    device,
   2864     VkCommandPool                               commandPool,
   2865     const VkAllocationCallbacks*                pAllocator);
   2866 
   2867 VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool(
   2868     VkDevice                                    device,
   2869     VkCommandPool                               commandPool,
   2870     VkCommandPoolResetFlags                     flags);
   2871 
   2872 VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(
   2873     VkDevice                                    device,
   2874     const VkCommandBufferAllocateInfo*          pAllocateInfo,
   2875     VkCommandBuffer*                            pCommandBuffers);
   2876 
   2877 VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers(
   2878     VkDevice                                    device,
   2879     VkCommandPool                               commandPool,
   2880     uint32_t                                    commandBufferCount,
   2881     const VkCommandBuffer*                      pCommandBuffers);
   2882 
   2883 VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(
   2884     VkCommandBuffer                             commandBuffer,
   2885     const VkCommandBufferBeginInfo*             pBeginInfo);
   2886 
   2887 VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer(
   2888     VkCommandBuffer                             commandBuffer);
   2889 
   2890 VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer(
   2891     VkCommandBuffer                             commandBuffer,
   2892     VkCommandBufferResetFlags                   flags);
   2893 
   2894 VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(
   2895     VkCommandBuffer                             commandBuffer,
   2896     VkPipelineBindPoint                         pipelineBindPoint,
   2897     VkPipeline                                  pipeline);
   2898 
   2899 VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(
   2900     VkCommandBuffer                             commandBuffer,
   2901     uint32_t                                    firstViewport,
   2902     uint32_t                                    viewportCount,
   2903     const VkViewport*                           pViewports);
   2904 
   2905 VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor(
   2906     VkCommandBuffer                             commandBuffer,
   2907     uint32_t                                    firstScissor,
   2908     uint32_t                                    scissorCount,
   2909     const VkRect2D*                             pScissors);
   2910 
   2911 VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth(
   2912     VkCommandBuffer                             commandBuffer,
   2913     float                                       lineWidth);
   2914 
   2915 VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias(
   2916     VkCommandBuffer                             commandBuffer,
   2917     float                                       depthBiasConstantFactor,
   2918     float                                       depthBiasClamp,
   2919     float                                       depthBiasSlopeFactor);
   2920 
   2921 VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants(
   2922     VkCommandBuffer                             commandBuffer,
   2923     const float                                 blendConstants[4]);
   2924 
   2925 VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds(
   2926     VkCommandBuffer                             commandBuffer,
   2927     float                                       minDepthBounds,
   2928     float                                       maxDepthBounds);
   2929 
   2930 VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask(
   2931     VkCommandBuffer                             commandBuffer,
   2932     VkStencilFaceFlags                          faceMask,
   2933     uint32_t                                    compareMask);
   2934 
   2935 VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask(
   2936     VkCommandBuffer                             commandBuffer,
   2937     VkStencilFaceFlags                          faceMask,
   2938     uint32_t                                    writeMask);
   2939 
   2940 VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference(
   2941     VkCommandBuffer                             commandBuffer,
   2942     VkStencilFaceFlags                          faceMask,
   2943     uint32_t                                    reference);
   2944 
   2945 VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(
   2946     VkCommandBuffer                             commandBuffer,
   2947     VkPipelineBindPoint                         pipelineBindPoint,
   2948     VkPipelineLayout                            layout,
   2949     uint32_t                                    firstSet,
   2950     uint32_t                                    descriptorSetCount,
   2951     const VkDescriptorSet*                      pDescriptorSets,
   2952     uint32_t                                    dynamicOffsetCount,
   2953     const uint32_t*                             pDynamicOffsets);
   2954 
   2955 VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(
   2956     VkCommandBuffer                             commandBuffer,
   2957     VkBuffer                                    buffer,
   2958     VkDeviceSize                                offset,
   2959     VkIndexType                                 indexType);
   2960 
   2961 VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(
   2962     VkCommandBuffer                             commandBuffer,
   2963     uint32_t                                    firstBinding,
   2964     uint32_t                                    bindingCount,
   2965     const VkBuffer*                             pBuffers,
   2966     const VkDeviceSize*                         pOffsets);
   2967 
   2968 VKAPI_ATTR void VKAPI_CALL vkCmdDraw(
   2969     VkCommandBuffer                             commandBuffer,
   2970     uint32_t                                    vertexCount,
   2971     uint32_t                                    instanceCount,
   2972     uint32_t                                    firstVertex,
   2973     uint32_t                                    firstInstance);
   2974 
   2975 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed(
   2976     VkCommandBuffer                             commandBuffer,
   2977     uint32_t                                    indexCount,
   2978     uint32_t                                    instanceCount,
   2979     uint32_t                                    firstIndex,
   2980     int32_t                                     vertexOffset,
   2981     uint32_t                                    firstInstance);
   2982 
   2983 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(
   2984     VkCommandBuffer                             commandBuffer,
   2985     VkBuffer                                    buffer,
   2986     VkDeviceSize                                offset,
   2987     uint32_t                                    drawCount,
   2988     uint32_t                                    stride);
   2989 
   2990 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(
   2991     VkCommandBuffer                             commandBuffer,
   2992     VkBuffer                                    buffer,
   2993     VkDeviceSize                                offset,
   2994     uint32_t                                    drawCount,
   2995     uint32_t                                    stride);
   2996 
   2997 VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(
   2998     VkCommandBuffer                             commandBuffer,
   2999     uint32_t                                    x,
   3000     uint32_t                                    y,
   3001     uint32_t                                    z);
   3002 
   3003 VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(
   3004     VkCommandBuffer                             commandBuffer,
   3005     VkBuffer                                    buffer,
   3006     VkDeviceSize                                offset);
   3007 
   3008 VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(
   3009     VkCommandBuffer                             commandBuffer,
   3010     VkBuffer                                    srcBuffer,
   3011     VkBuffer                                    dstBuffer,
   3012     uint32_t                                    regionCount,
   3013     const VkBufferCopy*                         pRegions);
   3014 
   3015 VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(
   3016     VkCommandBuffer                             commandBuffer,
   3017     VkImage                                     srcImage,
   3018     VkImageLayout                               srcImageLayout,
   3019     VkImage                                     dstImage,
   3020     VkImageLayout                               dstImageLayout,
   3021     uint32_t                                    regionCount,
   3022     const VkImageCopy*                          pRegions);
   3023 
   3024 VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(
   3025     VkCommandBuffer                             commandBuffer,
   3026     VkImage                                     srcImage,
   3027     VkImageLayout                               srcImageLayout,
   3028     VkImage                                     dstImage,
   3029     VkImageLayout                               dstImageLayout,
   3030     uint32_t                                    regionCount,
   3031     const VkImageBlit*                          pRegions,
   3032     VkFilter                                    filter);
   3033 
   3034 VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(
   3035     VkCommandBuffer                             commandBuffer,
   3036     VkBuffer                                    srcBuffer,
   3037     VkImage                                     dstImage,
   3038     VkImageLayout                               dstImageLayout,
   3039     uint32_t                                    regionCount,
   3040     const VkBufferImageCopy*                    pRegions);
   3041 
   3042 VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(
   3043     VkCommandBuffer                             commandBuffer,
   3044     VkImage                                     srcImage,
   3045     VkImageLayout                               srcImageLayout,
   3046     VkBuffer                                    dstBuffer,
   3047     uint32_t                                    regionCount,
   3048     const VkBufferImageCopy*                    pRegions);
   3049 
   3050 VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(
   3051     VkCommandBuffer                             commandBuffer,
   3052     VkBuffer                                    dstBuffer,
   3053     VkDeviceSize                                dstOffset,
   3054     VkDeviceSize                                dataSize,
   3055     const void*                                 pData);
   3056 
   3057 VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(
   3058     VkCommandBuffer                             commandBuffer,
   3059     VkBuffer                                    dstBuffer,
   3060     VkDeviceSize                                dstOffset,
   3061     VkDeviceSize                                size,
   3062     uint32_t                                    data);
   3063 
   3064 VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(
   3065     VkCommandBuffer                             commandBuffer,
   3066     VkImage                                     image,
   3067     VkImageLayout                               imageLayout,
   3068     const VkClearColorValue*                    pColor,
   3069     uint32_t                                    rangeCount,
   3070     const VkImageSubresourceRange*              pRanges);
   3071 
   3072 VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(
   3073     VkCommandBuffer                             commandBuffer,
   3074     VkImage                                     image,
   3075     VkImageLayout                               imageLayout,
   3076     const VkClearDepthStencilValue*             pDepthStencil,
   3077     uint32_t                                    rangeCount,
   3078     const VkImageSubresourceRange*              pRanges);
   3079 
   3080 VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments(
   3081     VkCommandBuffer                             commandBuffer,
   3082     uint32_t                                    attachmentCount,
   3083     const VkClearAttachment*                    pAttachments,
   3084     uint32_t                                    rectCount,
   3085     const VkClearRect*                          pRects);
   3086 
   3087 VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(
   3088     VkCommandBuffer                             commandBuffer,
   3089     VkImage                                     srcImage,
   3090     VkImageLayout                               srcImageLayout,
   3091     VkImage                                     dstImage,
   3092     VkImageLayout                               dstImageLayout,
   3093     uint32_t                                    regionCount,
   3094     const VkImageResolve*                       pRegions);
   3095 
   3096 VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(
   3097     VkCommandBuffer                             commandBuffer,
   3098     VkEvent                                     event,
   3099     VkPipelineStageFlags                        stageMask);
   3100 
   3101 VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(
   3102     VkCommandBuffer                             commandBuffer,
   3103     VkEvent                                     event,
   3104     VkPipelineStageFlags                        stageMask);
   3105 
   3106 VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents(
   3107     VkCommandBuffer                             commandBuffer,
   3108     uint32_t                                    eventCount,
   3109     const VkEvent*                              pEvents,
   3110     VkPipelineStageFlags                        srcStageMask,
   3111     VkPipelineStageFlags                        dstStageMask,
   3112     uint32_t                                    memoryBarrierCount,
   3113     const VkMemoryBarrier*                      pMemoryBarriers,
   3114     uint32_t                                    bufferMemoryBarrierCount,
   3115     const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
   3116     uint32_t                                    imageMemoryBarrierCount,
   3117     const VkImageMemoryBarrier*                 pImageMemoryBarriers);
   3118 
   3119 VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier(
   3120     VkCommandBuffer                             commandBuffer,
   3121     VkPipelineStageFlags                        srcStageMask,
   3122     VkPipelineStageFlags                        dstStageMask,
   3123     VkDependencyFlags                           dependencyFlags,
   3124     uint32_t                                    memoryBarrierCount,
   3125     const VkMemoryBarrier*                      pMemoryBarriers,
   3126     uint32_t                                    bufferMemoryBarrierCount,
   3127     const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
   3128     uint32_t                                    imageMemoryBarrierCount,
   3129     const VkImageMemoryBarrier*                 pImageMemoryBarriers);
   3130 
   3131 VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(
   3132     VkCommandBuffer                             commandBuffer,
   3133     VkQueryPool                                 queryPool,
   3134     uint32_t                                    query,
   3135     VkQueryControlFlags                         flags);
   3136 
   3137 VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(
   3138     VkCommandBuffer                             commandBuffer,
   3139     VkQueryPool                                 queryPool,
   3140     uint32_t                                    query);
   3141 
   3142 VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(
   3143     VkCommandBuffer                             commandBuffer,
   3144     VkQueryPool                                 queryPool,
   3145     uint32_t                                    firstQuery,
   3146     uint32_t                                    queryCount);
   3147 
   3148 VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(
   3149     VkCommandBuffer                             commandBuffer,
   3150     VkPipelineStageFlagBits                     pipelineStage,
   3151     VkQueryPool                                 queryPool,
   3152     uint32_t                                    query);
   3153 
   3154 VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(
   3155     VkCommandBuffer                             commandBuffer,
   3156     VkQueryPool                                 queryPool,
   3157     uint32_t                                    firstQuery,
   3158     uint32_t                                    queryCount,
   3159     VkBuffer                                    dstBuffer,
   3160     VkDeviceSize                                dstOffset,
   3161     VkDeviceSize                                stride,
   3162     VkQueryResultFlags                          flags);
   3163 
   3164 VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(
   3165     VkCommandBuffer                             commandBuffer,
   3166     VkPipelineLayout                            layout,
   3167     VkShaderStageFlags                          stageFlags,
   3168     uint32_t                                    offset,
   3169     uint32_t                                    size,
   3170     const void*                                 pValues);
   3171 
   3172 VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(
   3173     VkCommandBuffer                             commandBuffer,
   3174     const VkRenderPassBeginInfo*                pRenderPassBegin,
   3175     VkSubpassContents                           contents);
   3176 
   3177 VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass(
   3178     VkCommandBuffer                             commandBuffer,
   3179     VkSubpassContents                           contents);
   3180 
   3181 VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass(
   3182     VkCommandBuffer                             commandBuffer);
   3183 
   3184 VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(
   3185     VkCommandBuffer                             commandBuffer,
   3186     uint32_t                                    commandBufferCount,
   3187     const VkCommandBuffer*                      pCommandBuffers);
   3188 #endif
   3189 
   3190 #define VK_KHR_surface 1
   3191 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
   3192 
   3193 #define VK_KHR_SURFACE_SPEC_VERSION       25
   3194 #define VK_KHR_SURFACE_EXTENSION_NAME     "VK_KHR_surface"
   3195 #define VK_COLORSPACE_SRGB_NONLINEAR_KHR  VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
   3196 
   3197 
   3198 typedef enum VkColorSpaceKHR {
   3199     VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,
   3200     VK_COLOR_SPACE_BEGIN_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
   3201     VK_COLOR_SPACE_END_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
   3202     VK_COLOR_SPACE_RANGE_SIZE_KHR = (VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR + 1),
   3203     VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF
   3204 } VkColorSpaceKHR;
   3205 
   3206 typedef enum VkPresentModeKHR {
   3207     VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
   3208     VK_PRESENT_MODE_MAILBOX_KHR = 1,
   3209     VK_PRESENT_MODE_FIFO_KHR = 2,
   3210     VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,
   3211     VK_PRESENT_MODE_BEGIN_RANGE_KHR = VK_PRESENT_MODE_IMMEDIATE_KHR,
   3212     VK_PRESENT_MODE_END_RANGE_KHR = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
   3213     VK_PRESENT_MODE_RANGE_SIZE_KHR = (VK_PRESENT_MODE_FIFO_RELAXED_KHR - VK_PRESENT_MODE_IMMEDIATE_KHR + 1),
   3214     VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
   3215 } VkPresentModeKHR;
   3216 
   3217 
   3218 typedef enum VkSurfaceTransformFlagBitsKHR {
   3219     VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
   3220     VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
   3221     VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
   3222     VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
   3223     VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
   3224     VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
   3225     VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
   3226     VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
   3227     VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
   3228     VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
   3229 } VkSurfaceTransformFlagBitsKHR;
   3230 typedef VkFlags VkSurfaceTransformFlagsKHR;
   3231 
   3232 typedef enum VkCompositeAlphaFlagBitsKHR {
   3233     VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
   3234     VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
   3235     VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
   3236     VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
   3237     VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
   3238 } VkCompositeAlphaFlagBitsKHR;
   3239 typedef VkFlags VkCompositeAlphaFlagsKHR;
   3240 
   3241 typedef struct VkSurfaceCapabilitiesKHR {
   3242     uint32_t                         minImageCount;
   3243     uint32_t                         maxImageCount;
   3244     VkExtent2D                       currentExtent;
   3245     VkExtent2D                       minImageExtent;
   3246     VkExtent2D                       maxImageExtent;
   3247     uint32_t                         maxImageArrayLayers;
   3248     VkSurfaceTransformFlagsKHR       supportedTransforms;
   3249     VkSurfaceTransformFlagBitsKHR    currentTransform;
   3250     VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
   3251     VkImageUsageFlags                supportedUsageFlags;
   3252 } VkSurfaceCapabilitiesKHR;
   3253 
   3254 typedef struct VkSurfaceFormatKHR {
   3255     VkFormat           format;
   3256     VkColorSpaceKHR    colorSpace;
   3257 } VkSurfaceFormatKHR;
   3258 
   3259 
   3260 typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator);
   3261 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
   3262 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
   3263 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
   3264 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
   3265 
   3266 #ifndef VK_NO_PROTOTYPES
   3267 VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
   3268     VkInstance                                  instance,
   3269     VkSurfaceKHR                                surface,
   3270     const VkAllocationCallbacks*                pAllocator);
   3271 
   3272 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
   3273     VkPhysicalDevice                            physicalDevice,
   3274     uint32_t                                    queueFamilyIndex,
   3275     VkSurfaceKHR                                surface,
   3276     VkBool32*                                   pSupported);
   3277 
   3278 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
   3279     VkPhysicalDevice                            physicalDevice,
   3280     VkSurfaceKHR                                surface,
   3281     VkSurfaceCapabilitiesKHR*                   pSurfaceCapabilities);
   3282 
   3283 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR(
   3284     VkPhysicalDevice                            physicalDevice,
   3285     VkSurfaceKHR                                surface,
   3286     uint32_t*                                   pSurfaceFormatCount,
   3287     VkSurfaceFormatKHR*                         pSurfaceFormats);
   3288 
   3289 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
   3290     VkPhysicalDevice                            physicalDevice,
   3291     VkSurfaceKHR                                surface,
   3292     uint32_t*                                   pPresentModeCount,
   3293     VkPresentModeKHR*                           pPresentModes);
   3294 #endif
   3295 
   3296 #define VK_KHR_swapchain 1
   3297 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
   3298 
   3299 #define VK_KHR_SWAPCHAIN_SPEC_VERSION     68
   3300 #define VK_KHR_SWAPCHAIN_EXTENSION_NAME   "VK_KHR_swapchain"
   3301 
   3302 typedef VkFlags VkSwapchainCreateFlagsKHR;
   3303 
   3304 typedef struct VkSwapchainCreateInfoKHR {
   3305     VkStructureType                  sType;
   3306     const void*                      pNext;
   3307     VkSwapchainCreateFlagsKHR        flags;
   3308     VkSurfaceKHR                     surface;
   3309     uint32_t                         minImageCount;
   3310     VkFormat                         imageFormat;
   3311     VkColorSpaceKHR                  imageColorSpace;
   3312     VkExtent2D                       imageExtent;
   3313     uint32_t                         imageArrayLayers;
   3314     VkImageUsageFlags                imageUsage;
   3315     VkSharingMode                    imageSharingMode;
   3316     uint32_t                         queueFamilyIndexCount;
   3317     const uint32_t*                  pQueueFamilyIndices;
   3318     VkSurfaceTransformFlagBitsKHR    preTransform;
   3319     VkCompositeAlphaFlagBitsKHR      compositeAlpha;
   3320     VkPresentModeKHR                 presentMode;
   3321     VkBool32                         clipped;
   3322     VkSwapchainKHR                   oldSwapchain;
   3323 } VkSwapchainCreateInfoKHR;
   3324 
   3325 typedef struct VkPresentInfoKHR {
   3326     VkStructureType          sType;
   3327     const void*              pNext;
   3328     uint32_t                 waitSemaphoreCount;
   3329     const VkSemaphore*       pWaitSemaphores;
   3330     uint32_t                 swapchainCount;
   3331     const VkSwapchainKHR*    pSwapchains;
   3332     const uint32_t*          pImageIndices;
   3333     VkResult*                pResults;
   3334 } VkPresentInfoKHR;
   3335 
   3336 
   3337 typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain);
   3338 typedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator);
   3339 typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages);
   3340 typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex);
   3341 typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR* pPresentInfo);
   3342 
   3343 #ifndef VK_NO_PROTOTYPES
   3344 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(
   3345     VkDevice                                    device,
   3346     const VkSwapchainCreateInfoKHR*             pCreateInfo,
   3347     const VkAllocationCallbacks*                pAllocator,
   3348     VkSwapchainKHR*                             pSwapchain);
   3349 
   3350 VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR(
   3351     VkDevice                                    device,
   3352     VkSwapchainKHR                              swapchain,
   3353     const VkAllocationCallbacks*                pAllocator);
   3354 
   3355 VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR(
   3356     VkDevice                                    device,
   3357     VkSwapchainKHR                              swapchain,
   3358     uint32_t*                                   pSwapchainImageCount,
   3359     VkImage*                                    pSwapchainImages);
   3360 
   3361 VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(
   3362     VkDevice                                    device,
   3363     VkSwapchainKHR                              swapchain,
   3364     uint64_t                                    timeout,
   3365     VkSemaphore                                 semaphore,
   3366     VkFence                                     fence,
   3367     uint32_t*                                   pImageIndex);
   3368 
   3369 VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
   3370     VkQueue                                     queue,
   3371     const VkPresentInfoKHR*                     pPresentInfo);
   3372 #endif
   3373 
   3374 #define VK_KHR_display 1
   3375 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
   3376 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
   3377 
   3378 #define VK_KHR_DISPLAY_SPEC_VERSION       21
   3379 #define VK_KHR_DISPLAY_EXTENSION_NAME     "VK_KHR_display"
   3380 
   3381 
   3382 typedef enum VkDisplayPlaneAlphaFlagBitsKHR {
   3383     VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
   3384     VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
   3385     VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
   3386     VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
   3387     VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
   3388 } VkDisplayPlaneAlphaFlagBitsKHR;
   3389 typedef VkFlags VkDisplayPlaneAlphaFlagsKHR;
   3390 typedef VkFlags VkDisplayModeCreateFlagsKHR;
   3391 typedef VkFlags VkDisplaySurfaceCreateFlagsKHR;
   3392 
   3393 typedef struct VkDisplayPropertiesKHR {
   3394     VkDisplayKHR                  display;
   3395     const char*                   displayName;
   3396     VkExtent2D                    physicalDimensions;
   3397     VkExtent2D                    physicalResolution;
   3398     VkSurfaceTransformFlagsKHR    supportedTransforms;
   3399     VkBool32                      planeReorderPossible;
   3400     VkBool32                      persistentContent;
   3401 } VkDisplayPropertiesKHR;
   3402 
   3403 typedef struct VkDisplayModeParametersKHR {
   3404     VkExtent2D    visibleRegion;
   3405     uint32_t      refreshRate;
   3406 } VkDisplayModeParametersKHR;
   3407 
   3408 typedef struct VkDisplayModePropertiesKHR {
   3409     VkDisplayModeKHR              displayMode;
   3410     VkDisplayModeParametersKHR    parameters;
   3411 } VkDisplayModePropertiesKHR;
   3412 
   3413 typedef struct VkDisplayModeCreateInfoKHR {
   3414     VkStructureType                sType;
   3415     const void*                    pNext;
   3416     VkDisplayModeCreateFlagsKHR    flags;
   3417     VkDisplayModeParametersKHR     parameters;
   3418 } VkDisplayModeCreateInfoKHR;
   3419 
   3420 typedef struct VkDisplayPlaneCapabilitiesKHR {
   3421     VkDisplayPlaneAlphaFlagsKHR    supportedAlpha;
   3422     VkOffset2D                     minSrcPosition;
   3423     VkOffset2D                     maxSrcPosition;
   3424     VkExtent2D                     minSrcExtent;
   3425     VkExtent2D                     maxSrcExtent;
   3426     VkOffset2D                     minDstPosition;
   3427     VkOffset2D                     maxDstPosition;
   3428     VkExtent2D                     minDstExtent;
   3429     VkExtent2D                     maxDstExtent;
   3430 } VkDisplayPlaneCapabilitiesKHR;
   3431 
   3432 typedef struct VkDisplayPlanePropertiesKHR {
   3433     VkDisplayKHR    currentDisplay;
   3434     uint32_t        currentStackIndex;
   3435 } VkDisplayPlanePropertiesKHR;
   3436 
   3437 typedef struct VkDisplaySurfaceCreateInfoKHR {
   3438     VkStructureType                   sType;
   3439     const void*                       pNext;
   3440     VkDisplaySurfaceCreateFlagsKHR    flags;
   3441     VkDisplayModeKHR                  displayMode;
   3442     uint32_t                          planeIndex;
   3443     uint32_t                          planeStackIndex;
   3444     VkSurfaceTransformFlagBitsKHR     transform;
   3445     float                             globalAlpha;
   3446     VkDisplayPlaneAlphaFlagBitsKHR    alphaMode;
   3447     VkExtent2D                        imageExtent;
   3448 } VkDisplaySurfaceCreateInfoKHR;
   3449 
   3450 
   3451 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
   3452 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
   3453 typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays);
   3454 typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
   3455 typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
   3456 typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
   3457 typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
   3458 
   3459 #ifndef VK_NO_PROTOTYPES
   3460 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR(
   3461     VkPhysicalDevice                            physicalDevice,
   3462     uint32_t*                                   pPropertyCount,
   3463     VkDisplayPropertiesKHR*                     pProperties);
   3464 
   3465 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
   3466     VkPhysicalDevice                            physicalDevice,
   3467     uint32_t*                                   pPropertyCount,
   3468     VkDisplayPlanePropertiesKHR*                pProperties);
   3469 
   3470 VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR(
   3471     VkPhysicalDevice                            physicalDevice,
   3472     uint32_t                                    planeIndex,
   3473     uint32_t*                                   pDisplayCount,
   3474     VkDisplayKHR*                               pDisplays);
   3475 
   3476 VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR(
   3477     VkPhysicalDevice                            physicalDevice,
   3478     VkDisplayKHR                                display,
   3479     uint32_t*                                   pPropertyCount,
   3480     VkDisplayModePropertiesKHR*                 pProperties);
   3481 
   3482 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR(
   3483     VkPhysicalDevice                            physicalDevice,
   3484     VkDisplayKHR                                display,
   3485     const VkDisplayModeCreateInfoKHR*           pCreateInfo,
   3486     const VkAllocationCallbacks*                pAllocator,
   3487     VkDisplayModeKHR*                           pMode);
   3488 
   3489 VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR(
   3490     VkPhysicalDevice                            physicalDevice,
   3491     VkDisplayModeKHR                            mode,
   3492     uint32_t                                    planeIndex,
   3493     VkDisplayPlaneCapabilitiesKHR*              pCapabilities);
   3494 
   3495 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
   3496     VkInstance                                  instance,
   3497     const VkDisplaySurfaceCreateInfoKHR*        pCreateInfo,
   3498     const VkAllocationCallbacks*                pAllocator,
   3499     VkSurfaceKHR*                               pSurface);
   3500 #endif
   3501 
   3502 #define VK_KHR_display_swapchain 1
   3503 #define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 9
   3504 #define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
   3505 
   3506 typedef struct VkDisplayPresentInfoKHR {
   3507     VkStructureType    sType;
   3508     const void*        pNext;
   3509     VkRect2D           srcRect;
   3510     VkRect2D           dstRect;
   3511     VkBool32           persistent;
   3512 } VkDisplayPresentInfoKHR;
   3513 
   3514 
   3515 typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains);
   3516 
   3517 #ifndef VK_NO_PROTOTYPES
   3518 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR(
   3519     VkDevice                                    device,
   3520     uint32_t                                    swapchainCount,
   3521     const VkSwapchainCreateInfoKHR*             pCreateInfos,
   3522     const VkAllocationCallbacks*                pAllocator,
   3523     VkSwapchainKHR*                             pSwapchains);
   3524 #endif
   3525 
   3526 #ifdef VK_USE_PLATFORM_XLIB_KHR
   3527 #define VK_KHR_xlib_surface 1
   3528 #include <X11/Xlib.h>
   3529 
   3530 #define VK_KHR_XLIB_SURFACE_SPEC_VERSION  6
   3531 #define VK_KHR_XLIB_SURFACE_EXTENSION_NAME "VK_KHR_xlib_surface"
   3532 
   3533 typedef VkFlags VkXlibSurfaceCreateFlagsKHR;
   3534 
   3535 typedef struct VkXlibSurfaceCreateInfoKHR {
   3536     VkStructureType                sType;
   3537     const void*                    pNext;
   3538     VkXlibSurfaceCreateFlagsKHR    flags;
   3539     Display*                       dpy;
   3540     Window                         window;
   3541 } VkXlibSurfaceCreateInfoKHR;
   3542 
   3543 
   3544 typedef VkResult (VKAPI_PTR *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
   3545 typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID);
   3546 
   3547 #ifndef VK_NO_PROTOTYPES
   3548 VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR(
   3549     VkInstance                                  instance,
   3550     const VkXlibSurfaceCreateInfoKHR*           pCreateInfo,
   3551     const VkAllocationCallbacks*                pAllocator,
   3552     VkSurfaceKHR*                               pSurface);
   3553 
   3554 VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXlibPresentationSupportKHR(
   3555     VkPhysicalDevice                            physicalDevice,
   3556     uint32_t                                    queueFamilyIndex,
   3557     Display*                                    dpy,
   3558     VisualID                                    visualID);
   3559 #endif
   3560 #endif /* VK_USE_PLATFORM_XLIB_KHR */
   3561 
   3562 #ifdef VK_USE_PLATFORM_XCB_KHR
   3563 #define VK_KHR_xcb_surface 1
   3564 #include <xcb/xcb.h>
   3565 
   3566 #define VK_KHR_XCB_SURFACE_SPEC_VERSION   6
   3567 #define VK_KHR_XCB_SURFACE_EXTENSION_NAME "VK_KHR_xcb_surface"
   3568 
   3569 typedef VkFlags VkXcbSurfaceCreateFlagsKHR;
   3570 
   3571 typedef struct VkXcbSurfaceCreateInfoKHR {
   3572     VkStructureType               sType;
   3573     const void*                   pNext;
   3574     VkXcbSurfaceCreateFlagsKHR    flags;
   3575     xcb_connection_t*             connection;
   3576     xcb_window_t                  window;
   3577 } VkXcbSurfaceCreateInfoKHR;
   3578 
   3579 
   3580 typedef VkResult (VKAPI_PTR *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
   3581 typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id);
   3582 
   3583 #ifndef VK_NO_PROTOTYPES
   3584 VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR(
   3585     VkInstance                                  instance,
   3586     const VkXcbSurfaceCreateInfoKHR*            pCreateInfo,
   3587     const VkAllocationCallbacks*                pAllocator,
   3588     VkSurfaceKHR*                               pSurface);
   3589 
   3590 VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXcbPresentationSupportKHR(
   3591     VkPhysicalDevice                            physicalDevice,
   3592     uint32_t                                    queueFamilyIndex,
   3593     xcb_connection_t*                           connection,
   3594     xcb_visualid_t                              visual_id);
   3595 #endif
   3596 #endif /* VK_USE_PLATFORM_XCB_KHR */
   3597 
   3598 #ifdef VK_USE_PLATFORM_WAYLAND_KHR
   3599 #define VK_KHR_wayland_surface 1
   3600 #include <wayland-client.h>
   3601 
   3602 #define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 5
   3603 #define VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_KHR_wayland_surface"
   3604 
   3605 typedef VkFlags VkWaylandSurfaceCreateFlagsKHR;
   3606 
   3607 typedef struct VkWaylandSurfaceCreateInfoKHR {
   3608     VkStructureType                   sType;
   3609     const void*                       pNext;
   3610     VkWaylandSurfaceCreateFlagsKHR    flags;
   3611     struct wl_display*                display;
   3612     struct wl_surface*                surface;
   3613 } VkWaylandSurfaceCreateInfoKHR;
   3614 
   3615 
   3616 typedef VkResult (VKAPI_PTR *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
   3617 typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display);
   3618 
   3619 #ifndef VK_NO_PROTOTYPES
   3620 VKAPI_ATTR VkResult VKAPI_CALL vkCreateWaylandSurfaceKHR(
   3621     VkInstance                                  instance,
   3622     const VkWaylandSurfaceCreateInfoKHR*        pCreateInfo,
   3623     const VkAllocationCallbacks*                pAllocator,
   3624     VkSurfaceKHR*                               pSurface);
   3625 
   3626 VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWaylandPresentationSupportKHR(
   3627     VkPhysicalDevice                            physicalDevice,
   3628     uint32_t                                    queueFamilyIndex,
   3629     struct wl_display*                          display);
   3630 #endif
   3631 #endif /* VK_USE_PLATFORM_WAYLAND_KHR */
   3632 
   3633 #ifdef VK_USE_PLATFORM_MIR_KHR
   3634 #define VK_KHR_mir_surface 1
   3635 #include <mir_toolkit/client_types.h>
   3636 
   3637 #define VK_KHR_MIR_SURFACE_SPEC_VERSION   4
   3638 #define VK_KHR_MIR_SURFACE_EXTENSION_NAME "VK_KHR_mir_surface"
   3639 
   3640 typedef VkFlags VkMirSurfaceCreateFlagsKHR;
   3641 
   3642 typedef struct VkMirSurfaceCreateInfoKHR {
   3643     VkStructureType               sType;
   3644     const void*                   pNext;
   3645     VkMirSurfaceCreateFlagsKHR    flags;
   3646     MirConnection*                connection;
   3647     MirSurface*                   mirSurface;
   3648 } VkMirSurfaceCreateInfoKHR;
   3649 
   3650 
   3651 typedef VkResult (VKAPI_PTR *PFN_vkCreateMirSurfaceKHR)(VkInstance instance, const VkMirSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
   3652 typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceMirPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, MirConnection* connection);
   3653 
   3654 #ifndef VK_NO_PROTOTYPES
   3655 VKAPI_ATTR VkResult VKAPI_CALL vkCreateMirSurfaceKHR(
   3656     VkInstance                                  instance,
   3657     const VkMirSurfaceCreateInfoKHR*            pCreateInfo,
   3658     const VkAllocationCallbacks*                pAllocator,
   3659     VkSurfaceKHR*                               pSurface);
   3660 
   3661 VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceMirPresentationSupportKHR(
   3662     VkPhysicalDevice                            physicalDevice,
   3663     uint32_t                                    queueFamilyIndex,
   3664     MirConnection*                              connection);
   3665 #endif
   3666 #endif /* VK_USE_PLATFORM_MIR_KHR */
   3667 
   3668 #ifdef VK_USE_PLATFORM_ANDROID_KHR
   3669 #define VK_KHR_android_surface 1
   3670 #include <android/native_window.h>
   3671 
   3672 #define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6
   3673 #define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_KHR_android_surface"
   3674 
   3675 typedef VkFlags VkAndroidSurfaceCreateFlagsKHR;
   3676 
   3677 typedef struct VkAndroidSurfaceCreateInfoKHR {
   3678     VkStructureType                   sType;
   3679     const void*                       pNext;
   3680     VkAndroidSurfaceCreateFlagsKHR    flags;
   3681     ANativeWindow*                    window;
   3682 } VkAndroidSurfaceCreateInfoKHR;
   3683 
   3684 
   3685 typedef VkResult (VKAPI_PTR *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
   3686 
   3687 #ifndef VK_NO_PROTOTYPES
   3688 VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR(
   3689     VkInstance                                  instance,
   3690     const VkAndroidSurfaceCreateInfoKHR*        pCreateInfo,
   3691     const VkAllocationCallbacks*                pAllocator,
   3692     VkSurfaceKHR*                               pSurface);
   3693 #endif
   3694 #endif /* VK_USE_PLATFORM_ANDROID_KHR */
   3695 
   3696 #ifdef VK_USE_PLATFORM_WIN32_KHR
   3697 #define VK_KHR_win32_surface 1
   3698 #include <windows.h>
   3699 
   3700 #define VK_KHR_WIN32_SURFACE_SPEC_VERSION 5
   3701 #define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface"
   3702 
   3703 typedef VkFlags VkWin32SurfaceCreateFlagsKHR;
   3704 
   3705 typedef struct VkWin32SurfaceCreateInfoKHR {
   3706     VkStructureType                 sType;
   3707     const void*                     pNext;
   3708     VkWin32SurfaceCreateFlagsKHR    flags;
   3709     HINSTANCE                       hinstance;
   3710     HWND                            hwnd;
   3711 } VkWin32SurfaceCreateInfoKHR;
   3712 
   3713 
   3714 typedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
   3715 typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex);
   3716 
   3717 #ifndef VK_NO_PROTOTYPES
   3718 VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR(
   3719     VkInstance                                  instance,
   3720     const VkWin32SurfaceCreateInfoKHR*          pCreateInfo,
   3721     const VkAllocationCallbacks*                pAllocator,
   3722     VkSurfaceKHR*                               pSurface);
   3723 
   3724 VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR(
   3725     VkPhysicalDevice                            physicalDevice,
   3726     uint32_t                                    queueFamilyIndex);
   3727 #endif
   3728 #endif /* VK_USE_PLATFORM_WIN32_KHR */
   3729 
   3730 #define VK_KHR_sampler_mirror_clamp_to_edge 1
   3731 #define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 1
   3732 #define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME "VK_KHR_sampler_mirror_clamp_to_edge"
   3733 
   3734 
   3735 #define VK_EXT_debug_report 1
   3736 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
   3737 
   3738 #define VK_EXT_DEBUG_REPORT_SPEC_VERSION  3
   3739 #define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report"
   3740 #define VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
   3741 
   3742 
   3743 typedef enum VkDebugReportObjectTypeEXT {
   3744     VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
   3745     VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
   3746     VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
   3747     VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,
   3748     VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,
   3749     VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,
   3750     VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,
   3751     VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,
   3752     VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,
   3753     VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,
   3754     VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,
   3755     VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,
   3756     VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,
   3757     VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,
   3758     VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,
   3759     VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,
   3760     VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,
   3761     VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,
   3762     VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,
   3763     VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,
   3764     VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,
   3765     VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,
   3766     VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,
   3767     VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,
   3768     VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,
   3769     VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,
   3770     VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
   3771     VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
   3772     VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28,
   3773     VK_DEBUG_REPORT_OBJECT_TYPE_BEGIN_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
   3774     VK_DEBUG_REPORT_OBJECT_TYPE_END_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT,
   3775     VK_DEBUG_REPORT_OBJECT_TYPE_RANGE_SIZE_EXT = (VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT - VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT + 1),
   3776     VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
   3777 } VkDebugReportObjectTypeEXT;
   3778 
   3779 typedef enum VkDebugReportErrorEXT {
   3780     VK_DEBUG_REPORT_ERROR_NONE_EXT = 0,
   3781     VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT = 1,
   3782     VK_DEBUG_REPORT_ERROR_BEGIN_RANGE_EXT = VK_DEBUG_REPORT_ERROR_NONE_EXT,
   3783     VK_DEBUG_REPORT_ERROR_END_RANGE_EXT = VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT,
   3784     VK_DEBUG_REPORT_ERROR_RANGE_SIZE_EXT = (VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT - VK_DEBUG_REPORT_ERROR_NONE_EXT + 1),
   3785     VK_DEBUG_REPORT_ERROR_MAX_ENUM_EXT = 0x7FFFFFFF
   3786 } VkDebugReportErrorEXT;
   3787 
   3788 
   3789 typedef enum VkDebugReportFlagBitsEXT {
   3790     VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,
   3791     VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002,
   3792     VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004,
   3793     VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008,
   3794     VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010,
   3795     VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
   3796 } VkDebugReportFlagBitsEXT;
   3797 typedef VkFlags VkDebugReportFlagsEXT;
   3798 
   3799 typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)(
   3800     VkDebugReportFlagsEXT                       flags,
   3801     VkDebugReportObjectTypeEXT                  objectType,
   3802     uint64_t                                    object,
   3803     size_t                                      location,
   3804     int32_t                                     messageCode,
   3805     const char*                                 pLayerPrefix,
   3806     const char*                                 pMessage,
   3807     void*                                       pUserData);
   3808 
   3809 
   3810 typedef struct VkDebugReportCallbackCreateInfoEXT {
   3811     VkStructureType                 sType;
   3812     const void*                     pNext;
   3813     VkDebugReportFlagsEXT           flags;
   3814     PFN_vkDebugReportCallbackEXT    pfnCallback;
   3815     void*                           pUserData;
   3816 } VkDebugReportCallbackCreateInfoEXT;
   3817 
   3818 
   3819 typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugReportCallbackEXT)(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback);
   3820 typedef void (VKAPI_PTR *PFN_vkDestroyDebugReportCallbackEXT)(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator);
   3821 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);
   3822 
   3823 #ifndef VK_NO_PROTOTYPES
   3824 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugReportCallbackEXT(
   3825     VkInstance                                  instance,
   3826     const VkDebugReportCallbackCreateInfoEXT*   pCreateInfo,
   3827     const VkAllocationCallbacks*                pAllocator,
   3828     VkDebugReportCallbackEXT*                   pCallback);
   3829 
   3830 VKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackEXT(
   3831     VkInstance                                  instance,
   3832     VkDebugReportCallbackEXT                    callback,
   3833     const VkAllocationCallbacks*                pAllocator);
   3834 
   3835 VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT(
   3836     VkInstance                                  instance,
   3837     VkDebugReportFlagsEXT                       flags,
   3838     VkDebugReportObjectTypeEXT                  objectType,
   3839     uint64_t                                    object,
   3840     size_t                                      location,
   3841     int32_t                                     messageCode,
   3842     const char*                                 pLayerPrefix,
   3843     const char*                                 pMessage);
   3844 #endif
   3845 
   3846 #define VK_NV_glsl_shader 1
   3847 #define VK_NV_GLSL_SHADER_SPEC_VERSION    1
   3848 #define VK_NV_GLSL_SHADER_EXTENSION_NAME  "VK_NV_glsl_shader"
   3849 
   3850 
   3851 #define VK_IMG_filter_cubic 1
   3852 #define VK_IMG_FILTER_CUBIC_SPEC_VERSION  1
   3853 #define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic"
   3854 
   3855 
   3856 #define VK_AMD_rasterization_order 1
   3857 #define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1
   3858 #define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME "VK_AMD_rasterization_order"
   3859 
   3860 
   3861 typedef enum VkRasterizationOrderAMD {
   3862     VK_RASTERIZATION_ORDER_STRICT_AMD = 0,
   3863     VK_RASTERIZATION_ORDER_RELAXED_AMD = 1,
   3864     VK_RASTERIZATION_ORDER_BEGIN_RANGE_AMD = VK_RASTERIZATION_ORDER_STRICT_AMD,
   3865     VK_RASTERIZATION_ORDER_END_RANGE_AMD = VK_RASTERIZATION_ORDER_RELAXED_AMD,
   3866     VK_RASTERIZATION_ORDER_RANGE_SIZE_AMD = (VK_RASTERIZATION_ORDER_RELAXED_AMD - VK_RASTERIZATION_ORDER_STRICT_AMD + 1),
   3867     VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF
   3868 } VkRasterizationOrderAMD;
   3869 
   3870 typedef struct VkPipelineRasterizationStateRasterizationOrderAMD {
   3871     VkStructureType            sType;
   3872     const void*                pNext;
   3873     VkRasterizationOrderAMD    rasterizationOrder;
   3874 } VkPipelineRasterizationStateRasterizationOrderAMD;
   3875 
   3876 
   3877 
   3878 #define VK_AMD_shader_trinary_minmax 1
   3879 #define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1
   3880 #define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax"
   3881 
   3882 
   3883 #define VK_AMD_shader_explicit_vertex_parameter 1
   3884 #define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1
   3885 #define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter"
   3886 
   3887 
   3888 #define VK_EXT_debug_marker 1
   3889 #define VK_EXT_DEBUG_MARKER_SPEC_VERSION  3
   3890 #define VK_EXT_DEBUG_MARKER_EXTENSION_NAME "VK_EXT_debug_marker"
   3891 
   3892 typedef struct VkDebugMarkerObjectNameInfoEXT {
   3893     VkStructureType               sType;
   3894     const void*                   pNext;
   3895     VkDebugReportObjectTypeEXT    objectType;
   3896     uint64_t                      object;
   3897     const char*                   pObjectName;
   3898 } VkDebugMarkerObjectNameInfoEXT;
   3899 
   3900 typedef struct VkDebugMarkerObjectTagInfoEXT {
   3901     VkStructureType               sType;
   3902     const void*                   pNext;
   3903     VkDebugReportObjectTypeEXT    objectType;
   3904     uint64_t                      object;
   3905     uint64_t                      tagName;
   3906     size_t                        tagSize;
   3907     const void*                   pTag;
   3908 } VkDebugMarkerObjectTagInfoEXT;
   3909 
   3910 typedef struct VkDebugMarkerMarkerInfoEXT {
   3911     VkStructureType    sType;
   3912     const void*        pNext;
   3913     const char*        pMarkerName;
   3914     float              color[4];
   3915 } VkDebugMarkerMarkerInfoEXT;
   3916 
   3917 
   3918 typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectTagEXT)(VkDevice device, VkDebugMarkerObjectTagInfoEXT* pTagInfo);
   3919 typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectNameEXT)(VkDevice device, VkDebugMarkerObjectNameInfoEXT* pNameInfo);
   3920 typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer commandBuffer, VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
   3921 typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerEndEXT)(VkCommandBuffer commandBuffer);
   3922 typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer commandBuffer, VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
   3923 
   3924 #ifndef VK_NO_PROTOTYPES
   3925 VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT(
   3926     VkDevice                                    device,
   3927     VkDebugMarkerObjectTagInfoEXT*              pTagInfo);
   3928 
   3929 VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT(
   3930     VkDevice                                    device,
   3931     VkDebugMarkerObjectNameInfoEXT*             pNameInfo);
   3932 
   3933 VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerBeginEXT(
   3934     VkCommandBuffer                             commandBuffer,
   3935     VkDebugMarkerMarkerInfoEXT*                 pMarkerInfo);
   3936 
   3937 VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerEndEXT(
   3938     VkCommandBuffer                             commandBuffer);
   3939 
   3940 VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT(
   3941     VkCommandBuffer                             commandBuffer,
   3942     VkDebugMarkerMarkerInfoEXT*                 pMarkerInfo);
   3943 #endif
   3944 
   3945 #define VK_AMD_gcn_shader 1
   3946 #define VK_AMD_GCN_SHADER_SPEC_VERSION    1
   3947 #define VK_AMD_GCN_SHADER_EXTENSION_NAME  "VK_AMD_gcn_shader"
   3948 
   3949 
   3950 #define VK_NV_dedicated_allocation 1
   3951 #define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1
   3952 #define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation"
   3953 
   3954 typedef struct VkDedicatedAllocationImageCreateInfoNV {
   3955     VkStructureType    sType;
   3956     const void*        pNext;
   3957     VkBool32           dedicatedAllocation;
   3958 } VkDedicatedAllocationImageCreateInfoNV;
   3959 
   3960 typedef struct VkDedicatedAllocationBufferCreateInfoNV {
   3961     VkStructureType    sType;
   3962     const void*        pNext;
   3963     VkBool32           dedicatedAllocation;
   3964 } VkDedicatedAllocationBufferCreateInfoNV;
   3965 
   3966 typedef struct VkDedicatedAllocationMemoryAllocateInfoNV {
   3967     VkStructureType    sType;
   3968     const void*        pNext;
   3969     VkImage            image;
   3970     VkBuffer           buffer;
   3971 } VkDedicatedAllocationMemoryAllocateInfoNV;
   3972 
   3973 
   3974 
   3975 #define VK_AMD_draw_indirect_count 1
   3976 #define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
   3977 #define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count"
   3978 
   3979 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
   3980 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
   3981 
   3982 #ifndef VK_NO_PROTOTYPES
   3983 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountAMD(
   3984     VkCommandBuffer                             commandBuffer,
   3985     VkBuffer                                    buffer,
   3986     VkDeviceSize                                offset,
   3987     VkBuffer                                    countBuffer,
   3988     VkDeviceSize                                countBufferOffset,
   3989     uint32_t                                    maxDrawCount,
   3990     uint32_t                                    stride);
   3991 
   3992 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD(
   3993     VkCommandBuffer                             commandBuffer,
   3994     VkBuffer                                    buffer,
   3995     VkDeviceSize                                offset,
   3996     VkBuffer                                    countBuffer,
   3997     VkDeviceSize                                countBufferOffset,
   3998     uint32_t                                    maxDrawCount,
   3999     uint32_t                                    stride);
   4000 #endif
   4001 
   4002 #define VK_AMD_negative_viewport_height 1
   4003 #define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 0
   4004 #define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height"
   4005 
   4006 
   4007 #define VK_AMD_gpu_shader_half_float 1
   4008 #define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 1
   4009 #define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float"
   4010 
   4011 
   4012 #define VK_AMD_shader_ballot 1
   4013 #define VK_AMD_SHADER_BALLOT_SPEC_VERSION 0
   4014 #define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot"
   4015 
   4016 
   4017 #define VK_IMG_format_pvrtc 1
   4018 #define VK_IMG_FORMAT_PVRTC_SPEC_VERSION  1
   4019 #define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc"
   4020 
   4021 
   4022 #define VK_NV_external_memory_capabilities 1
   4023 #define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
   4024 #define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities"
   4025 
   4026 
   4027 typedef enum VkExternalMemoryHandleTypeFlagBitsNV {
   4028     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,
   4029     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,
   4030     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,
   4031     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,
   4032     VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
   4033 } VkExternalMemoryHandleTypeFlagBitsNV;
   4034 typedef VkFlags VkExternalMemoryHandleTypeFlagsNV;
   4035 
   4036 typedef enum VkExternalMemoryFeatureFlagBitsNV {
   4037     VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001,
   4038     VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002,
   4039     VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004,
   4040     VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
   4041 } VkExternalMemoryFeatureFlagBitsNV;
   4042 typedef VkFlags VkExternalMemoryFeatureFlagsNV;
   4043 
   4044 typedef struct VkExternalImageFormatPropertiesNV {
   4045     VkImageFormatProperties              imageFormatProperties;
   4046     VkExternalMemoryFeatureFlagsNV       externalMemoryFeatures;
   4047     VkExternalMemoryHandleTypeFlagsNV    exportFromImportedHandleTypes;
   4048     VkExternalMemoryHandleTypeFlagsNV    compatibleHandleTypes;
   4049 } VkExternalImageFormatPropertiesNV;
   4050 
   4051 
   4052 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
   4053 
   4054 #ifndef VK_NO_PROTOTYPES
   4055 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
   4056     VkPhysicalDevice                            physicalDevice,
   4057     VkFormat                                    format,
   4058     VkImageType                                 type,
   4059     VkImageTiling                               tiling,
   4060     VkImageUsageFlags                           usage,
   4061     VkImageCreateFlags                          flags,
   4062     VkExternalMemoryHandleTypeFlagsNV           externalHandleType,
   4063     VkExternalImageFormatPropertiesNV*          pExternalImageFormatProperties);
   4064 #endif
   4065 
   4066 #define VK_NV_external_memory 1
   4067 #define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1
   4068 #define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory"
   4069 
   4070 typedef struct VkExternalMemoryImageCreateInfoNV {
   4071     VkStructureType                      sType;
   4072     const void*                          pNext;
   4073     VkExternalMemoryHandleTypeFlagsNV    handleTypes;
   4074 } VkExternalMemoryImageCreateInfoNV;
   4075 
   4076 typedef struct VkExportMemoryAllocateInfoNV {
   4077     VkStructureType                      sType;
   4078     const void*                          pNext;
   4079     VkExternalMemoryHandleTypeFlagsNV    handleTypes;
   4080 } VkExportMemoryAllocateInfoNV;
   4081 
   4082 
   4083 
   4084 #ifdef VK_USE_PLATFORM_WIN32_KHR
   4085 #define VK_NV_external_memory_win32 1
   4086 #define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
   4087 #define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
   4088 
   4089 typedef struct VkImportMemoryWin32HandleInfoNV {
   4090     VkStructureType                      sType;
   4091     const void*                          pNext;
   4092     VkExternalMemoryHandleTypeFlagsNV    handleType;
   4093     HANDLE                               handle;
   4094 } VkImportMemoryWin32HandleInfoNV;
   4095 
   4096 typedef struct VkExportMemoryWin32HandleInfoNV {
   4097     VkStructureType               sType;
   4098     const void*                   pNext;
   4099     const SECURITY_ATTRIBUTES*    pAttributes;
   4100     DWORD                         dwAccess;
   4101 } VkExportMemoryWin32HandleInfoNV;
   4102 
   4103 
   4104 typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryWin32HandleNV)(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle);
   4105 
   4106 #ifndef VK_NO_PROTOTYPES
   4107 VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleNV(
   4108     VkDevice                                    device,
   4109     VkDeviceMemory                              memory,
   4110     VkExternalMemoryHandleTypeFlagsNV           handleType,
   4111     HANDLE*                                     pHandle);
   4112 #endif
   4113 #endif /* VK_USE_PLATFORM_WIN32_KHR */
   4114 
   4115 #ifdef VK_USE_PLATFORM_WIN32_KHR
   4116 #define VK_NV_win32_keyed_mutex 1
   4117 #define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 1
   4118 #define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
   4119 
   4120 typedef struct VkWin32KeyedMutexAcquireReleaseInfoNV {
   4121     VkStructureType          sType;
   4122     const void*              pNext;
   4123     uint32_t                 acquireCount;
   4124     const VkDeviceMemory*    pAcquireSyncs;
   4125     const uint64_t*          pAcquireKeys;
   4126     const uint32_t*          pAcquireTimeoutMilliseconds;
   4127     uint32_t                 releaseCount;
   4128     const VkDeviceMemory*    pReleaseSyncs;
   4129     const uint64_t*          pReleaseKeys;
   4130 } VkWin32KeyedMutexAcquireReleaseInfoNV;
   4131 
   4132 
   4133 #endif /* VK_USE_PLATFORM_WIN32_KHR */
   4134 
   4135 #define VK_EXT_validation_flags 1
   4136 #define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 1
   4137 #define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags"
   4138 
   4139 
   4140 typedef enum VkValidationCheckEXT {
   4141     VK_VALIDATION_CHECK_ALL_EXT = 0,
   4142     VK_VALIDATION_CHECK_BEGIN_RANGE_EXT = VK_VALIDATION_CHECK_ALL_EXT,
   4143     VK_VALIDATION_CHECK_END_RANGE_EXT = VK_VALIDATION_CHECK_ALL_EXT,
   4144     VK_VALIDATION_CHECK_RANGE_SIZE_EXT = (VK_VALIDATION_CHECK_ALL_EXT - VK_VALIDATION_CHECK_ALL_EXT + 1),
   4145     VK_VALIDATION_CHECK_MAX_ENUM_EXT = 0x7FFFFFFF
   4146 } VkValidationCheckEXT;
   4147 
   4148 typedef struct VkValidationFlagsEXT {
   4149     VkStructureType          sType;
   4150     const void*              pNext;
   4151     uint32_t                 disabledValidationCheckCount;
   4152     VkValidationCheckEXT*    pDisabledValidationChecks;
   4153 } VkValidationFlagsEXT;
   4154 
   4155 
   4156 
   4157 #ifdef __cplusplus
   4158 }
   4159 #endif
   4160 
   4161 #endif
   4162