• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef VULKAN_SC_CORE_H_
2 #define VULKAN_SC_CORE_H_ 1
3 
4 /*
5 ** Copyright 2015-2021 The Khronos Group Inc.
6 **
7 ** SPDX-License-Identifier: Apache-2.0
8 */
9 
10 /*
11 ** This header is generated from the Khronos Vulkan XML API Registry.
12 **
13 */
14 
15 
16 #ifdef __cplusplus
17 extern "C" {
18 #endif
19 
20 
21 
22 #define VK_VERSION_1_0 1
23 #include "vk_platform.h"
24 
25 #define VK_DEFINE_HANDLE(object) typedef struct object##_T* (object);
26 
27 
28 #ifndef VK_USE_64_BIT_PTR_DEFINES
29     #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
30         #define VK_USE_64_BIT_PTR_DEFINES 1
31     #else
32         #define VK_USE_64_BIT_PTR_DEFINES 0
33     #endif
34 #endif
35 
36 
37 #ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE
38     #if (VK_USE_64_BIT_PTR_DEFINES==1)
39         #if (defined(__cplusplus) && (__cplusplus >= 201103L)) || (defined(_MSVC_LANG) && (_MSVC_LANG >= 201103L))
40             #define VK_NULL_HANDLE nullptr
41         #else
42             #define VK_NULL_HANDLE ((void*)0)
43         #endif
44     #else
45         #define VK_NULL_HANDLE 0ULL
46     #endif
47 #endif
48 #ifndef VK_NULL_HANDLE
49     #define VK_NULL_HANDLE 0
50 #endif
51 
52 
53 #ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE
54     #if (VK_USE_64_BIT_PTR_DEFINES==1)
55         #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *(object);
56     #else
57         #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t (object);
58     #endif
59 #endif
60 
61 #define VK_MAKE_API_VERSION(variant, major, minor, patch) \
62     ((((uint32_t)(variant)) << 29) | (((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch)))
63 
64 // Vulkan 1.0 version number
65 #define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)// Patch version should always be set to 0
66 
67 // Version of this file
68 #define VK_HEADER_VERSION 8
69 
70 // Vulkan SC variant number
71 #define VKSC_API_VARIANT 1
72 
73 // Complete version of this file
74 #define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(VKSC_API_VARIANT, 1, 0, VK_HEADER_VERSION)
75 
76 #define VK_API_VERSION_VARIANT(version) ((uint32_t)(version) >> 29)
77 #define VK_API_VERSION_MAJOR(version) (((uint32_t)(version) >> 22) & 0x7FU)
78 #define VK_API_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3FFU)
79 #define VK_API_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU)
80 typedef uint32_t VkBool32;
81 typedef uint64_t VkDeviceAddress;
82 typedef uint64_t VkDeviceSize;
83 typedef uint32_t VkFlags;
84 typedef uint32_t VkSampleMask;
85 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer)
86 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage)
87 VK_DEFINE_HANDLE(VkInstance)
88 VK_DEFINE_HANDLE(VkPhysicalDevice)
89 VK_DEFINE_HANDLE(VkDevice)
90 VK_DEFINE_HANDLE(VkQueue)
91 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore)
92 VK_DEFINE_HANDLE(VkCommandBuffer)
93 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence)
94 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory)
95 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent)
96 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool)
97 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView)
98 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView)
99 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule)
100 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache)
101 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout)
102 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline)
103 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass)
104 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout)
105 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler)
106 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet)
107 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool)
108 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer)
109 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool)
110 #define VK_UUID_SIZE                      16U
111 #define VK_ATTACHMENT_UNUSED              (~0U)
112 #define VK_FALSE                          0U
113 #define VK_LOD_CLAMP_NONE                 1000.0F
114 #define VK_QUEUE_FAMILY_IGNORED           (~0U)
115 #define VK_REMAINING_ARRAY_LAYERS         (~0U)
116 #define VK_REMAINING_MIP_LEVELS           (~0U)
117 #define VK_SUBPASS_EXTERNAL               (~0U)
118 #define VK_TRUE                           1U
119 #define VK_WHOLE_SIZE                     (~0ULL)
120 #define VK_MAX_MEMORY_TYPES               32U
121 #define VK_MAX_MEMORY_HEAPS               16U
122 #define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE  256U
123 #define VK_MAX_EXTENSION_NAME_SIZE        256U
124 #define VK_MAX_DESCRIPTION_SIZE           256U
125 
126 typedef enum VkResult {
127     VK_SUCCESS = 0,
128     VK_NOT_READY = 1,
129     VK_TIMEOUT = 2,
130     VK_EVENT_SET = 3,
131     VK_EVENT_RESET = 4,
132     VK_INCOMPLETE = 5,
133     VK_ERROR_OUT_OF_HOST_MEMORY = -1,
134     VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
135     VK_ERROR_INITIALIZATION_FAILED = -3,
136     VK_ERROR_DEVICE_LOST = -4,
137     VK_ERROR_MEMORY_MAP_FAILED = -5,
138     VK_ERROR_LAYER_NOT_PRESENT = -6,
139     VK_ERROR_EXTENSION_NOT_PRESENT = -7,
140     VK_ERROR_FEATURE_NOT_PRESENT = -8,
141     VK_ERROR_INCOMPATIBLE_DRIVER = -9,
142     VK_ERROR_TOO_MANY_OBJECTS = -10,
143     VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
144     VK_ERROR_FRAGMENTED_POOL = -12,
145     VK_ERROR_UNKNOWN = -13,
146     VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000,
147     VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003,
148     VK_ERROR_FRAGMENTATION = -1000161000,
149     VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000,
150     VK_ERROR_VALIDATION_FAILED = -1000011001,
151     VK_ERROR_INVALID_PIPELINE_CACHE_DATA = -1000298000,
152     VK_ERROR_NO_PIPELINE_MATCH = -1000298001,
153     VK_ERROR_SURFACE_LOST_KHR = -1000000000,
154     VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
155     VK_SUBOPTIMAL_KHR = 1000001003,
156     VK_ERROR_OUT_OF_DATE_KHR = -1000001004,
157     VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
158     VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000,
159     VK_ERROR_NOT_PERMITTED_EXT = -1000174001,
160     VK_RESULT_MAX_ENUM = 0x7FFFFFFF
161 } VkResult;
162 
163 typedef enum VkStructureType {
164     VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
165     VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
166     VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
167     VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
168     VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
169     VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
170     VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
171     VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
172     VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
173     VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
174     VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
175     VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
176     VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
177     VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
178     VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
179     VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
180     VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
181     VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
182     VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
183     VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
184     VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
185     VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
186     VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
187     VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
188     VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
189     VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
190     VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
191     VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
192     VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
193     VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
194     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
195     VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
196     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
197     VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
198     VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
199     VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
200     VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
201     VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
202     VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
203     VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
204     VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
205     VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
206     VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
207     VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
208     VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
209     VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
210     VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
211     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000,
212     VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000,
213     VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001,
214     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000,
215     VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000,
216     VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001,
217     VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000,
218     VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003,
219     VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004,
220     VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005,
221     VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013,
222     VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014,
223     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000,
224     VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001,
225     VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000,
226     VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001,
227     VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003,
228     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000,
229     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001,
230     VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002,
231     VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003,
232     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004,
233     VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005,
234     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006,
235     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000,
236     VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001,
237     VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002,
238     VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003,
239     VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000,
240     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001,
241     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002,
242     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000,
243     VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000,
244     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001,
245     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002,
246     VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003,
247     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000,
248     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001,
249     VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002,
250     VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003,
251     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004,
252     VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005,
253     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000,
254     VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001,
255     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002,
256     VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003,
257     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004,
258     VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000,
259     VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001,
260     VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002,
261     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000,
262     VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001,
263     VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000,
264     VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000,
265     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000,
266     VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001,
267     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000,
268     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001,
269     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000,
270     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49,
271     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50,
272     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51,
273     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52,
274     VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000,
275     VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000,
276     VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001,
277     VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002,
278     VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003,
279     VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004,
280     VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005,
281     VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006,
282     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000,
283     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000,
284     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000,
285     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000,
286     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000,
287     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000,
288     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001,
289     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002,
290     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003,
291     VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004,
292     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000,
293     VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001,
294     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000,
295     VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000,
296     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000,
297     VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001,
298     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000,
299     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000,
300     VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001,
301     VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002,
302     VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003,
303     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000,
304     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000,
305     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000,
306     VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001,
307     VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002,
308     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000,
309     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000,
310     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001,
311     VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002,
312     VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003,
313     VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004,
314     VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005,
315     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000,
316     VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001,
317     VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002,
318     VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003,
319     VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004,
320     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_FEATURES = 1000298000,
321     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_SC_1_0_PROPERTIES = 1000298001,
322     VK_STRUCTURE_TYPE_DEVICE_OBJECT_RESERVATION_CREATE_INFO = 1000298002,
323     VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_RESERVATION_CREATE_INFO = 1000298003,
324     VK_STRUCTURE_TYPE_COMMAND_POOL_MEMORY_CONSUMPTION = 1000298004,
325     VK_STRUCTURE_TYPE_PIPELINE_POOL_SIZE = 1000298005,
326     VK_STRUCTURE_TYPE_FAULT_DATA = 1000298007,
327     VK_STRUCTURE_TYPE_FAULT_CALLBACK_INFO = 1000298008,
328     VK_STRUCTURE_TYPE_PIPELINE_OFFLINE_CREATE_INFO = 1000298010,
329     VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
330     VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
331     VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007,
332     VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008,
333     VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009,
334     VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010,
335     VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011,
336     VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012,
337     VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
338     VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
339     VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000,
340     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000,
341     VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000,
342     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001,
343     VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000,
344     VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001,
345     VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002,
346     VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000,
347     VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001,
348     VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
349     VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000,
350     VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000,
351     VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001,
352     VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002,
353     VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,
354     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,
355     VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,
356     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000,
357     VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001,
358     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000,
359     VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001,
360     VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
361     VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
362     VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000,
363     VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001,
364     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000,
365     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001,
366     VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002,
367     VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003,
368     VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004,
369     VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005,
370     VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006,
371     VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_RESERVATION_INFO_KHR = 1000116007,
372     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,
373     VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001,
374     VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002,
375     VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000,
376     VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001,
377     VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002,
378     VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003,
379     VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004,
380     VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000,
381     VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001,
382     VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002,
383     VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003,
384     VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004,
385     VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000,
386     VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001,
387     VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002,
388     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003,
389     VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004,
390     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000,
391     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001,
392     VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
393     VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000,
394     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002,
395     VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003,
396     VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004,
397     VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005,
398     VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT = 1000158006,
399     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000,
400     VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001,
401     VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000,
402     VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000,
403     VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001,
404     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,
405     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000,
406     VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000,
407     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000,
408     VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001,
409     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002,
410     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000,
411     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = 1000215000,
412     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000,
413     VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001,
414     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002,
415     VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000226000,
416     VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR = 1000226001,
417     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR = 1000226002,
418     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR = 1000226003,
419     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = 1000226004,
420     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = 1000234000,
421     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000,
422     VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000,
423     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000,
424     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000,
425     VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000,
426     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000,
427     VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001,
428     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002,
429     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000,
430     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000,
431     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000,
432     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000,
433     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000,
434     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001,
435     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000,
436     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001,
437     VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000,
438     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001,
439     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002,
440     VK_STRUCTURE_TYPE_REFRESH_OBJECT_LIST_KHR = 1000308000,
441     VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR = 1000314000,
442     VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR = 1000314001,
443     VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR = 1000314002,
444     VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR = 1000314003,
445     VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR = 1000314004,
446     VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR = 1000314005,
447     VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR = 1000314006,
448     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR = 1000314007,
449     VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008,
450     VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009,
451     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT = 1000330000,
452     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000,
453     VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR = 1000337000,
454     VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR = 1000337001,
455     VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR = 1000337002,
456     VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR = 1000337003,
457     VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR = 1000337004,
458     VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR = 1000337005,
459     VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR = 1000337006,
460     VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR = 1000337007,
461     VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR = 1000337008,
462     VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR = 1000337009,
463     VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR = 1000337010,
464     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000,
465     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT = 1000352000,
466     VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT = 1000352001,
467     VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT = 1000352002,
468     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = 1000377000,
469     VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = 1000381000,
470     VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT = 1000381001,
471     VK_STRUCTURE_TYPE_APPLICATION_PARAMETERS_EXT = 1000435000,
472     VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
473 } VkStructureType;
474 
475 typedef enum VkImageLayout {
476     VK_IMAGE_LAYOUT_UNDEFINED = 0,
477     VK_IMAGE_LAYOUT_GENERAL = 1,
478     VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,
479     VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
480     VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
481     VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,
482     VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,
483     VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
484     VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
485     VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000,
486     VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001,
487     VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000,
488     VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001,
489     VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002,
490     VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003,
491     VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
492     VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
493     VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003,
494     VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR = 1000314000,
495     VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR = 1000314001,
496     VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF
497 } VkImageLayout;
498 
499 typedef enum VkObjectType {
500     VK_OBJECT_TYPE_UNKNOWN = 0,
501     VK_OBJECT_TYPE_INSTANCE = 1,
502     VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,
503     VK_OBJECT_TYPE_DEVICE = 3,
504     VK_OBJECT_TYPE_QUEUE = 4,
505     VK_OBJECT_TYPE_SEMAPHORE = 5,
506     VK_OBJECT_TYPE_COMMAND_BUFFER = 6,
507     VK_OBJECT_TYPE_FENCE = 7,
508     VK_OBJECT_TYPE_DEVICE_MEMORY = 8,
509     VK_OBJECT_TYPE_BUFFER = 9,
510     VK_OBJECT_TYPE_IMAGE = 10,
511     VK_OBJECT_TYPE_EVENT = 11,
512     VK_OBJECT_TYPE_QUERY_POOL = 12,
513     VK_OBJECT_TYPE_BUFFER_VIEW = 13,
514     VK_OBJECT_TYPE_IMAGE_VIEW = 14,
515     VK_OBJECT_TYPE_PIPELINE_CACHE = 16,
516     VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,
517     VK_OBJECT_TYPE_RENDER_PASS = 18,
518     VK_OBJECT_TYPE_PIPELINE = 19,
519     VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,
520     VK_OBJECT_TYPE_SAMPLER = 21,
521     VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,
522     VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,
523     VK_OBJECT_TYPE_FRAMEBUFFER = 24,
524     VK_OBJECT_TYPE_COMMAND_POOL = 25,
525     VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000,
526     VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,
527     VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,
528     VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000,
529     VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001,
530     VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000,
531     VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF
532 } VkObjectType;
533 
534 typedef enum VkPipelineCacheHeaderVersion {
535     VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
536     VK_PIPELINE_CACHE_HEADER_VERSION_SAFETY_CRITICAL_ONE = 1000298001,
537     VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF
538 } VkPipelineCacheHeaderVersion;
539 
540 typedef enum VkVendorId {
541     VK_VENDOR_ID_VIV = 0x10001,
542     VK_VENDOR_ID_VSI = 0x10002,
543     VK_VENDOR_ID_KAZAN = 0x10003,
544     VK_VENDOR_ID_CODEPLAY = 0x10004,
545     VK_VENDOR_ID_MESA = 0x10005,
546     VK_VENDOR_ID_POCL = 0x10006,
547     VK_VENDOR_ID_MAX_ENUM = 0x7FFFFFFF
548 } VkVendorId;
549 
550 typedef enum VkSystemAllocationScope {
551     VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,
552     VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,
553     VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,
554     VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,
555     VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4,
556     VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF
557 } VkSystemAllocationScope;
558 
559 typedef enum VkInternalAllocationType {
560     VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,
561     VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF
562 } VkInternalAllocationType;
563 
564 typedef enum VkFormat {
565     VK_FORMAT_UNDEFINED = 0,
566     VK_FORMAT_R4G4_UNORM_PACK8 = 1,
567     VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
568     VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
569     VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
570     VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
571     VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
572     VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
573     VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
574     VK_FORMAT_R8_UNORM = 9,
575     VK_FORMAT_R8_SNORM = 10,
576     VK_FORMAT_R8_USCALED = 11,
577     VK_FORMAT_R8_SSCALED = 12,
578     VK_FORMAT_R8_UINT = 13,
579     VK_FORMAT_R8_SINT = 14,
580     VK_FORMAT_R8_SRGB = 15,
581     VK_FORMAT_R8G8_UNORM = 16,
582     VK_FORMAT_R8G8_SNORM = 17,
583     VK_FORMAT_R8G8_USCALED = 18,
584     VK_FORMAT_R8G8_SSCALED = 19,
585     VK_FORMAT_R8G8_UINT = 20,
586     VK_FORMAT_R8G8_SINT = 21,
587     VK_FORMAT_R8G8_SRGB = 22,
588     VK_FORMAT_R8G8B8_UNORM = 23,
589     VK_FORMAT_R8G8B8_SNORM = 24,
590     VK_FORMAT_R8G8B8_USCALED = 25,
591     VK_FORMAT_R8G8B8_SSCALED = 26,
592     VK_FORMAT_R8G8B8_UINT = 27,
593     VK_FORMAT_R8G8B8_SINT = 28,
594     VK_FORMAT_R8G8B8_SRGB = 29,
595     VK_FORMAT_B8G8R8_UNORM = 30,
596     VK_FORMAT_B8G8R8_SNORM = 31,
597     VK_FORMAT_B8G8R8_USCALED = 32,
598     VK_FORMAT_B8G8R8_SSCALED = 33,
599     VK_FORMAT_B8G8R8_UINT = 34,
600     VK_FORMAT_B8G8R8_SINT = 35,
601     VK_FORMAT_B8G8R8_SRGB = 36,
602     VK_FORMAT_R8G8B8A8_UNORM = 37,
603     VK_FORMAT_R8G8B8A8_SNORM = 38,
604     VK_FORMAT_R8G8B8A8_USCALED = 39,
605     VK_FORMAT_R8G8B8A8_SSCALED = 40,
606     VK_FORMAT_R8G8B8A8_UINT = 41,
607     VK_FORMAT_R8G8B8A8_SINT = 42,
608     VK_FORMAT_R8G8B8A8_SRGB = 43,
609     VK_FORMAT_B8G8R8A8_UNORM = 44,
610     VK_FORMAT_B8G8R8A8_SNORM = 45,
611     VK_FORMAT_B8G8R8A8_USCALED = 46,
612     VK_FORMAT_B8G8R8A8_SSCALED = 47,
613     VK_FORMAT_B8G8R8A8_UINT = 48,
614     VK_FORMAT_B8G8R8A8_SINT = 49,
615     VK_FORMAT_B8G8R8A8_SRGB = 50,
616     VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
617     VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
618     VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
619     VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
620     VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
621     VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
622     VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
623     VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
624     VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
625     VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
626     VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
627     VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
628     VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
629     VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
630     VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
631     VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
632     VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
633     VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
634     VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
635     VK_FORMAT_R16_UNORM = 70,
636     VK_FORMAT_R16_SNORM = 71,
637     VK_FORMAT_R16_USCALED = 72,
638     VK_FORMAT_R16_SSCALED = 73,
639     VK_FORMAT_R16_UINT = 74,
640     VK_FORMAT_R16_SINT = 75,
641     VK_FORMAT_R16_SFLOAT = 76,
642     VK_FORMAT_R16G16_UNORM = 77,
643     VK_FORMAT_R16G16_SNORM = 78,
644     VK_FORMAT_R16G16_USCALED = 79,
645     VK_FORMAT_R16G16_SSCALED = 80,
646     VK_FORMAT_R16G16_UINT = 81,
647     VK_FORMAT_R16G16_SINT = 82,
648     VK_FORMAT_R16G16_SFLOAT = 83,
649     VK_FORMAT_R16G16B16_UNORM = 84,
650     VK_FORMAT_R16G16B16_SNORM = 85,
651     VK_FORMAT_R16G16B16_USCALED = 86,
652     VK_FORMAT_R16G16B16_SSCALED = 87,
653     VK_FORMAT_R16G16B16_UINT = 88,
654     VK_FORMAT_R16G16B16_SINT = 89,
655     VK_FORMAT_R16G16B16_SFLOAT = 90,
656     VK_FORMAT_R16G16B16A16_UNORM = 91,
657     VK_FORMAT_R16G16B16A16_SNORM = 92,
658     VK_FORMAT_R16G16B16A16_USCALED = 93,
659     VK_FORMAT_R16G16B16A16_SSCALED = 94,
660     VK_FORMAT_R16G16B16A16_UINT = 95,
661     VK_FORMAT_R16G16B16A16_SINT = 96,
662     VK_FORMAT_R16G16B16A16_SFLOAT = 97,
663     VK_FORMAT_R32_UINT = 98,
664     VK_FORMAT_R32_SINT = 99,
665     VK_FORMAT_R32_SFLOAT = 100,
666     VK_FORMAT_R32G32_UINT = 101,
667     VK_FORMAT_R32G32_SINT = 102,
668     VK_FORMAT_R32G32_SFLOAT = 103,
669     VK_FORMAT_R32G32B32_UINT = 104,
670     VK_FORMAT_R32G32B32_SINT = 105,
671     VK_FORMAT_R32G32B32_SFLOAT = 106,
672     VK_FORMAT_R32G32B32A32_UINT = 107,
673     VK_FORMAT_R32G32B32A32_SINT = 108,
674     VK_FORMAT_R32G32B32A32_SFLOAT = 109,
675     VK_FORMAT_R64_UINT = 110,
676     VK_FORMAT_R64_SINT = 111,
677     VK_FORMAT_R64_SFLOAT = 112,
678     VK_FORMAT_R64G64_UINT = 113,
679     VK_FORMAT_R64G64_SINT = 114,
680     VK_FORMAT_R64G64_SFLOAT = 115,
681     VK_FORMAT_R64G64B64_UINT = 116,
682     VK_FORMAT_R64G64B64_SINT = 117,
683     VK_FORMAT_R64G64B64_SFLOAT = 118,
684     VK_FORMAT_R64G64B64A64_UINT = 119,
685     VK_FORMAT_R64G64B64A64_SINT = 120,
686     VK_FORMAT_R64G64B64A64_SFLOAT = 121,
687     VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
688     VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
689     VK_FORMAT_D16_UNORM = 124,
690     VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
691     VK_FORMAT_D32_SFLOAT = 126,
692     VK_FORMAT_S8_UINT = 127,
693     VK_FORMAT_D16_UNORM_S8_UINT = 128,
694     VK_FORMAT_D24_UNORM_S8_UINT = 129,
695     VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
696     VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
697     VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
698     VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
699     VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
700     VK_FORMAT_BC2_UNORM_BLOCK = 135,
701     VK_FORMAT_BC2_SRGB_BLOCK = 136,
702     VK_FORMAT_BC3_UNORM_BLOCK = 137,
703     VK_FORMAT_BC3_SRGB_BLOCK = 138,
704     VK_FORMAT_BC4_UNORM_BLOCK = 139,
705     VK_FORMAT_BC4_SNORM_BLOCK = 140,
706     VK_FORMAT_BC5_UNORM_BLOCK = 141,
707     VK_FORMAT_BC5_SNORM_BLOCK = 142,
708     VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
709     VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
710     VK_FORMAT_BC7_UNORM_BLOCK = 145,
711     VK_FORMAT_BC7_SRGB_BLOCK = 146,
712     VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
713     VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
714     VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
715     VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
716     VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
717     VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
718     VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
719     VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
720     VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
721     VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
722     VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
723     VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
724     VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
725     VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
726     VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
727     VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
728     VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
729     VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
730     VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
731     VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
732     VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
733     VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
734     VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
735     VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
736     VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
737     VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
738     VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
739     VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
740     VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
741     VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
742     VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
743     VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
744     VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
745     VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
746     VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
747     VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
748     VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
749     VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
750     VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000,
751     VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001,
752     VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002,
753     VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003,
754     VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004,
755     VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005,
756     VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006,
757     VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007,
758     VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008,
759     VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009,
760     VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010,
761     VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011,
762     VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012,
763     VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013,
764     VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014,
765     VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015,
766     VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016,
767     VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017,
768     VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018,
769     VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019,
770     VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020,
771     VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021,
772     VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022,
773     VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023,
774     VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024,
775     VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025,
776     VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026,
777     VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027,
778     VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028,
779     VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029,
780     VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030,
781     VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031,
782     VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032,
783     VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033,
784     VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000,
785     VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001,
786     VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002,
787     VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003,
788     VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004,
789     VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005,
790     VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006,
791     VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007,
792     VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008,
793     VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009,
794     VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010,
795     VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011,
796     VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012,
797     VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013,
798     VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT = 1000330000,
799     VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = 1000330001,
800     VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = 1000330002,
801     VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT = 1000330003,
802     VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000,
803     VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001,
804     VK_FORMAT_MAX_ENUM = 0x7FFFFFFF
805 } VkFormat;
806 
807 typedef enum VkImageTiling {
808     VK_IMAGE_TILING_OPTIMAL = 0,
809     VK_IMAGE_TILING_LINEAR = 1,
810     VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000,
811     VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF
812 } VkImageTiling;
813 
814 typedef enum VkImageType {
815     VK_IMAGE_TYPE_1D = 0,
816     VK_IMAGE_TYPE_2D = 1,
817     VK_IMAGE_TYPE_3D = 2,
818     VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF
819 } VkImageType;
820 
821 typedef enum VkPhysicalDeviceType {
822     VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,
823     VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,
824     VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,
825     VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,
826     VK_PHYSICAL_DEVICE_TYPE_CPU = 4,
827     VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF
828 } VkPhysicalDeviceType;
829 
830 typedef enum VkQueryType {
831     VK_QUERY_TYPE_OCCLUSION = 0,
832     VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
833     VK_QUERY_TYPE_TIMESTAMP = 2,
834     VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000,
835     VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF
836 } VkQueryType;
837 
838 typedef enum VkSharingMode {
839     VK_SHARING_MODE_EXCLUSIVE = 0,
840     VK_SHARING_MODE_CONCURRENT = 1,
841     VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF
842 } VkSharingMode;
843 
844 typedef enum VkComponentSwizzle {
845     VK_COMPONENT_SWIZZLE_IDENTITY = 0,
846     VK_COMPONENT_SWIZZLE_ZERO = 1,
847     VK_COMPONENT_SWIZZLE_ONE = 2,
848     VK_COMPONENT_SWIZZLE_R = 3,
849     VK_COMPONENT_SWIZZLE_G = 4,
850     VK_COMPONENT_SWIZZLE_B = 5,
851     VK_COMPONENT_SWIZZLE_A = 6,
852     VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF
853 } VkComponentSwizzle;
854 
855 typedef enum VkImageViewType {
856     VK_IMAGE_VIEW_TYPE_1D = 0,
857     VK_IMAGE_VIEW_TYPE_2D = 1,
858     VK_IMAGE_VIEW_TYPE_3D = 2,
859     VK_IMAGE_VIEW_TYPE_CUBE = 3,
860     VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4,
861     VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5,
862     VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6,
863     VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF
864 } VkImageViewType;
865 
866 typedef enum VkBlendFactor {
867     VK_BLEND_FACTOR_ZERO = 0,
868     VK_BLEND_FACTOR_ONE = 1,
869     VK_BLEND_FACTOR_SRC_COLOR = 2,
870     VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,
871     VK_BLEND_FACTOR_DST_COLOR = 4,
872     VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,
873     VK_BLEND_FACTOR_SRC_ALPHA = 6,
874     VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,
875     VK_BLEND_FACTOR_DST_ALPHA = 8,
876     VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,
877     VK_BLEND_FACTOR_CONSTANT_COLOR = 10,
878     VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,
879     VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,
880     VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,
881     VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,
882     VK_BLEND_FACTOR_SRC1_COLOR = 15,
883     VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,
884     VK_BLEND_FACTOR_SRC1_ALPHA = 17,
885     VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18,
886     VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF
887 } VkBlendFactor;
888 
889 typedef enum VkBlendOp {
890     VK_BLEND_OP_ADD = 0,
891     VK_BLEND_OP_SUBTRACT = 1,
892     VK_BLEND_OP_REVERSE_SUBTRACT = 2,
893     VK_BLEND_OP_MIN = 3,
894     VK_BLEND_OP_MAX = 4,
895     VK_BLEND_OP_ZERO_EXT = 1000148000,
896     VK_BLEND_OP_SRC_EXT = 1000148001,
897     VK_BLEND_OP_DST_EXT = 1000148002,
898     VK_BLEND_OP_SRC_OVER_EXT = 1000148003,
899     VK_BLEND_OP_DST_OVER_EXT = 1000148004,
900     VK_BLEND_OP_SRC_IN_EXT = 1000148005,
901     VK_BLEND_OP_DST_IN_EXT = 1000148006,
902     VK_BLEND_OP_SRC_OUT_EXT = 1000148007,
903     VK_BLEND_OP_DST_OUT_EXT = 1000148008,
904     VK_BLEND_OP_SRC_ATOP_EXT = 1000148009,
905     VK_BLEND_OP_DST_ATOP_EXT = 1000148010,
906     VK_BLEND_OP_XOR_EXT = 1000148011,
907     VK_BLEND_OP_MULTIPLY_EXT = 1000148012,
908     VK_BLEND_OP_SCREEN_EXT = 1000148013,
909     VK_BLEND_OP_OVERLAY_EXT = 1000148014,
910     VK_BLEND_OP_DARKEN_EXT = 1000148015,
911     VK_BLEND_OP_LIGHTEN_EXT = 1000148016,
912     VK_BLEND_OP_COLORDODGE_EXT = 1000148017,
913     VK_BLEND_OP_COLORBURN_EXT = 1000148018,
914     VK_BLEND_OP_HARDLIGHT_EXT = 1000148019,
915     VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020,
916     VK_BLEND_OP_DIFFERENCE_EXT = 1000148021,
917     VK_BLEND_OP_EXCLUSION_EXT = 1000148022,
918     VK_BLEND_OP_INVERT_EXT = 1000148023,
919     VK_BLEND_OP_INVERT_RGB_EXT = 1000148024,
920     VK_BLEND_OP_LINEARDODGE_EXT = 1000148025,
921     VK_BLEND_OP_LINEARBURN_EXT = 1000148026,
922     VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027,
923     VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028,
924     VK_BLEND_OP_PINLIGHT_EXT = 1000148029,
925     VK_BLEND_OP_HARDMIX_EXT = 1000148030,
926     VK_BLEND_OP_HSL_HUE_EXT = 1000148031,
927     VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032,
928     VK_BLEND_OP_HSL_COLOR_EXT = 1000148033,
929     VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034,
930     VK_BLEND_OP_PLUS_EXT = 1000148035,
931     VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036,
932     VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037,
933     VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038,
934     VK_BLEND_OP_MINUS_EXT = 1000148039,
935     VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040,
936     VK_BLEND_OP_CONTRAST_EXT = 1000148041,
937     VK_BLEND_OP_INVERT_OVG_EXT = 1000148042,
938     VK_BLEND_OP_RED_EXT = 1000148043,
939     VK_BLEND_OP_GREEN_EXT = 1000148044,
940     VK_BLEND_OP_BLUE_EXT = 1000148045,
941     VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF
942 } VkBlendOp;
943 
944 typedef enum VkCompareOp {
945     VK_COMPARE_OP_NEVER = 0,
946     VK_COMPARE_OP_LESS = 1,
947     VK_COMPARE_OP_EQUAL = 2,
948     VK_COMPARE_OP_LESS_OR_EQUAL = 3,
949     VK_COMPARE_OP_GREATER = 4,
950     VK_COMPARE_OP_NOT_EQUAL = 5,
951     VK_COMPARE_OP_GREATER_OR_EQUAL = 6,
952     VK_COMPARE_OP_ALWAYS = 7,
953     VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF
954 } VkCompareOp;
955 
956 typedef enum VkDynamicState {
957     VK_DYNAMIC_STATE_VIEWPORT = 0,
958     VK_DYNAMIC_STATE_SCISSOR = 1,
959     VK_DYNAMIC_STATE_LINE_WIDTH = 2,
960     VK_DYNAMIC_STATE_DEPTH_BIAS = 3,
961     VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,
962     VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,
963     VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,
964     VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,
965     VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
966     VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
967     VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000,
968     VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR = 1000226000,
969     VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000,
970     VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000,
971     VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001,
972     VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002,
973     VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003,
974     VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004,
975     VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005,
976     VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006,
977     VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007,
978     VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008,
979     VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009,
980     VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010,
981     VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011,
982     VK_DYNAMIC_STATE_VERTEX_INPUT_EXT = 1000352000,
983     VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000,
984     VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = 1000377001,
985     VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = 1000377002,
986     VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003,
987     VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = 1000377004,
988     VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000,
989     VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF
990 } VkDynamicState;
991 
992 typedef enum VkFrontFace {
993     VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
994     VK_FRONT_FACE_CLOCKWISE = 1,
995     VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF
996 } VkFrontFace;
997 
998 typedef enum VkVertexInputRate {
999     VK_VERTEX_INPUT_RATE_VERTEX = 0,
1000     VK_VERTEX_INPUT_RATE_INSTANCE = 1,
1001     VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF
1002 } VkVertexInputRate;
1003 
1004 typedef enum VkPrimitiveTopology {
1005     VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
1006     VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,
1007     VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,
1008     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,
1009     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,
1010     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,
1011     VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,
1012     VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
1013     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
1014     VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
1015     VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,
1016     VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF
1017 } VkPrimitiveTopology;
1018 
1019 typedef enum VkPolygonMode {
1020     VK_POLYGON_MODE_FILL = 0,
1021     VK_POLYGON_MODE_LINE = 1,
1022     VK_POLYGON_MODE_POINT = 2,
1023     VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF
1024 } VkPolygonMode;
1025 
1026 typedef enum VkStencilOp {
1027     VK_STENCIL_OP_KEEP = 0,
1028     VK_STENCIL_OP_ZERO = 1,
1029     VK_STENCIL_OP_REPLACE = 2,
1030     VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,
1031     VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,
1032     VK_STENCIL_OP_INVERT = 5,
1033     VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,
1034     VK_STENCIL_OP_DECREMENT_AND_WRAP = 7,
1035     VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF
1036 } VkStencilOp;
1037 
1038 typedef enum VkLogicOp {
1039     VK_LOGIC_OP_CLEAR = 0,
1040     VK_LOGIC_OP_AND = 1,
1041     VK_LOGIC_OP_AND_REVERSE = 2,
1042     VK_LOGIC_OP_COPY = 3,
1043     VK_LOGIC_OP_AND_INVERTED = 4,
1044     VK_LOGIC_OP_NO_OP = 5,
1045     VK_LOGIC_OP_XOR = 6,
1046     VK_LOGIC_OP_OR = 7,
1047     VK_LOGIC_OP_NOR = 8,
1048     VK_LOGIC_OP_EQUIVALENT = 9,
1049     VK_LOGIC_OP_INVERT = 10,
1050     VK_LOGIC_OP_OR_REVERSE = 11,
1051     VK_LOGIC_OP_COPY_INVERTED = 12,
1052     VK_LOGIC_OP_OR_INVERTED = 13,
1053     VK_LOGIC_OP_NAND = 14,
1054     VK_LOGIC_OP_SET = 15,
1055     VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF
1056 } VkLogicOp;
1057 
1058 typedef enum VkBorderColor {
1059     VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
1060     VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,
1061     VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,
1062     VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,
1063     VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,
1064     VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5,
1065     VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003,
1066     VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004,
1067     VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF
1068 } VkBorderColor;
1069 
1070 typedef enum VkFilter {
1071     VK_FILTER_NEAREST = 0,
1072     VK_FILTER_LINEAR = 1,
1073     VK_FILTER_CUBIC_IMG = 1000015000,
1074     VK_FILTER_CUBIC_EXT = VK_FILTER_CUBIC_IMG,
1075     VK_FILTER_MAX_ENUM = 0x7FFFFFFF
1076 } VkFilter;
1077 
1078 typedef enum VkSamplerAddressMode {
1079     VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
1080     VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
1081     VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
1082     VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
1083     VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
1084     VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
1085 } VkSamplerAddressMode;
1086 
1087 typedef enum VkSamplerMipmapMode {
1088     VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,
1089     VK_SAMPLER_MIPMAP_MODE_LINEAR = 1,
1090     VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF
1091 } VkSamplerMipmapMode;
1092 
1093 typedef enum VkDescriptorType {
1094     VK_DESCRIPTOR_TYPE_SAMPLER = 0,
1095     VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1,
1096     VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2,
1097     VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3,
1098     VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4,
1099     VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5,
1100     VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6,
1101     VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7,
1102     VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8,
1103     VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9,
1104     VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10,
1105     VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF
1106 } VkDescriptorType;
1107 
1108 typedef enum VkAttachmentLoadOp {
1109     VK_ATTACHMENT_LOAD_OP_LOAD = 0,
1110     VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
1111     VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
1112     VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF
1113 } VkAttachmentLoadOp;
1114 
1115 typedef enum VkAttachmentStoreOp {
1116     VK_ATTACHMENT_STORE_OP_STORE = 0,
1117     VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,
1118     VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF
1119 } VkAttachmentStoreOp;
1120 
1121 typedef enum VkPipelineBindPoint {
1122     VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
1123     VK_PIPELINE_BIND_POINT_COMPUTE = 1,
1124     VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF
1125 } VkPipelineBindPoint;
1126 
1127 typedef enum VkCommandBufferLevel {
1128     VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
1129     VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,
1130     VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF
1131 } VkCommandBufferLevel;
1132 
1133 typedef enum VkIndexType {
1134     VK_INDEX_TYPE_UINT16 = 0,
1135     VK_INDEX_TYPE_UINT32 = 1,
1136     VK_INDEX_TYPE_UINT8_EXT = 1000265000,
1137     VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF
1138 } VkIndexType;
1139 
1140 typedef enum VkSubpassContents {
1141     VK_SUBPASS_CONTENTS_INLINE = 0,
1142     VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
1143     VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF
1144 } VkSubpassContents;
1145 
1146 typedef enum VkAccessFlagBits {
1147     VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
1148     VK_ACCESS_INDEX_READ_BIT = 0x00000002,
1149     VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
1150     VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
1151     VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
1152     VK_ACCESS_SHADER_READ_BIT = 0x00000020,
1153     VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
1154     VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
1155     VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
1156     VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
1157     VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
1158     VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
1159     VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
1160     VK_ACCESS_HOST_READ_BIT = 0x00002000,
1161     VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
1162     VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
1163     VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
1164     VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000,
1165     VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000,
1166     VK_ACCESS_NONE_KHR = 0,
1167     VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1168 } VkAccessFlagBits;
1169 typedef VkFlags VkAccessFlags;
1170 
1171 typedef enum VkImageAspectFlagBits {
1172     VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
1173     VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
1174     VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
1175     VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
1176     VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010,
1177     VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020,
1178     VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040,
1179     VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 0x00000080,
1180     VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 0x00000100,
1181     VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 0x00000200,
1182     VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 0x00000400,
1183     VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1184 } VkImageAspectFlagBits;
1185 typedef VkFlags VkImageAspectFlags;
1186 
1187 typedef enum VkFormatFeatureFlagBits {
1188     VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
1189     VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002,
1190     VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004,
1191     VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008,
1192     VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010,
1193     VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020,
1194     VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040,
1195     VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080,
1196     VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100,
1197     VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200,
1198     VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400,
1199     VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800,
1200     VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
1201     VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 0x00004000,
1202     VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 0x00008000,
1203     VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000,
1204     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000,
1205     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000,
1206     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000,
1207     VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000,
1208     VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000,
1209     VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000,
1210     VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000,
1211     VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
1212     VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000,
1213     VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG,
1214     VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1215 } VkFormatFeatureFlagBits;
1216 typedef VkFlags VkFormatFeatureFlags;
1217 
1218 typedef enum VkImageCreateFlagBits {
1219     VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001,
1220     VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
1221     VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
1222     VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008,
1223     VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010,
1224     VK_IMAGE_CREATE_ALIAS_BIT = 0x00000400,
1225     VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 0x00000040,
1226     VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 0x00000020,
1227     VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 0x00000080,
1228     VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 0x00000100,
1229     VK_IMAGE_CREATE_PROTECTED_BIT = 0x00000800,
1230     VK_IMAGE_CREATE_DISJOINT_BIT = 0x00000200,
1231     VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000,
1232     VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1233 } VkImageCreateFlagBits;
1234 typedef VkFlags VkImageCreateFlags;
1235 
1236 typedef enum VkSampleCountFlagBits {
1237     VK_SAMPLE_COUNT_1_BIT = 0x00000001,
1238     VK_SAMPLE_COUNT_2_BIT = 0x00000002,
1239     VK_SAMPLE_COUNT_4_BIT = 0x00000004,
1240     VK_SAMPLE_COUNT_8_BIT = 0x00000008,
1241     VK_SAMPLE_COUNT_16_BIT = 0x00000010,
1242     VK_SAMPLE_COUNT_32_BIT = 0x00000020,
1243     VK_SAMPLE_COUNT_64_BIT = 0x00000040,
1244     VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1245 } VkSampleCountFlagBits;
1246 typedef VkFlags VkSampleCountFlags;
1247 
1248 typedef enum VkImageUsageFlagBits {
1249     VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001,
1250     VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002,
1251     VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004,
1252     VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008,
1253     VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010,
1254     VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020,
1255     VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040,
1256     VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080,
1257     VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00000100,
1258     VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1259 } VkImageUsageFlagBits;
1260 typedef VkFlags VkImageUsageFlags;
1261 typedef VkFlags VkInstanceCreateFlags;
1262 
1263 typedef enum VkMemoryHeapFlagBits {
1264     VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
1265     VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 0x00000002,
1266     VK_MEMORY_HEAP_SEU_SAFE_BIT = 0x00000004,
1267     VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1268 } VkMemoryHeapFlagBits;
1269 typedef VkFlags VkMemoryHeapFlags;
1270 
1271 typedef enum VkMemoryPropertyFlagBits {
1272     VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
1273     VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
1274     VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
1275     VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
1276     VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
1277     VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020,
1278     VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1279 } VkMemoryPropertyFlagBits;
1280 typedef VkFlags VkMemoryPropertyFlags;
1281 
1282 typedef enum VkQueueFlagBits {
1283     VK_QUEUE_GRAPHICS_BIT = 0x00000001,
1284     VK_QUEUE_COMPUTE_BIT = 0x00000002,
1285     VK_QUEUE_TRANSFER_BIT = 0x00000004,
1286     VK_QUEUE_PROTECTED_BIT = 0x00000010,
1287     VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1288 } VkQueueFlagBits;
1289 typedef VkFlags VkQueueFlags;
1290 typedef VkFlags VkDeviceCreateFlags;
1291 
1292 typedef enum VkDeviceQueueCreateFlagBits {
1293     VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 0x00000001,
1294     VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1295 } VkDeviceQueueCreateFlagBits;
1296 typedef VkFlags VkDeviceQueueCreateFlags;
1297 
1298 typedef enum VkPipelineStageFlagBits {
1299     VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001,
1300     VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002,
1301     VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004,
1302     VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008,
1303     VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010,
1304     VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020,
1305     VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040,
1306     VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080,
1307     VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100,
1308     VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200,
1309     VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400,
1310     VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800,
1311     VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000,
1312     VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
1313     VK_PIPELINE_STAGE_HOST_BIT = 0x00004000,
1314     VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000,
1315     VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000,
1316     VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000,
1317     VK_PIPELINE_STAGE_NONE_KHR = 0,
1318     VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1319 } VkPipelineStageFlagBits;
1320 typedef VkFlags VkPipelineStageFlags;
1321 typedef VkFlags VkMemoryMapFlags;
1322 
1323 typedef enum VkFenceCreateFlagBits {
1324     VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
1325     VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1326 } VkFenceCreateFlagBits;
1327 typedef VkFlags VkFenceCreateFlags;
1328 typedef VkFlags VkSemaphoreCreateFlags;
1329 
1330 typedef enum VkEventCreateFlagBits {
1331     VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR = 0x00000001,
1332     VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1333 } VkEventCreateFlagBits;
1334 typedef VkFlags VkEventCreateFlags;
1335 
1336 typedef enum VkQueryPipelineStatisticFlagBits {
1337     VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001,
1338     VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002,
1339     VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004,
1340     VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008,
1341     VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010,
1342     VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020,
1343     VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040,
1344     VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080,
1345     VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100,
1346     VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200,
1347     VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400,
1348     VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1349 } VkQueryPipelineStatisticFlagBits;
1350 typedef VkFlags VkQueryPipelineStatisticFlags;
1351 typedef VkFlags VkQueryPoolCreateFlags;
1352 
1353 typedef enum VkQueryResultFlagBits {
1354     VK_QUERY_RESULT_64_BIT = 0x00000001,
1355     VK_QUERY_RESULT_WAIT_BIT = 0x00000002,
1356     VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004,
1357     VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008,
1358     VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1359 } VkQueryResultFlagBits;
1360 typedef VkFlags VkQueryResultFlags;
1361 
1362 typedef enum VkBufferCreateFlagBits {
1363     VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,
1364     VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
1365     VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
1366     VK_BUFFER_CREATE_PROTECTED_BIT = 0x00000008,
1367     VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000010,
1368     VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1369 } VkBufferCreateFlagBits;
1370 typedef VkFlags VkBufferCreateFlags;
1371 
1372 typedef enum VkBufferUsageFlagBits {
1373     VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001,
1374     VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002,
1375     VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,
1376     VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008,
1377     VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010,
1378     VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020,
1379     VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
1380     VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
1381     VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
1382     VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 0x00020000,
1383     VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1384 } VkBufferUsageFlagBits;
1385 typedef VkFlags VkBufferUsageFlags;
1386 typedef VkFlags VkBufferViewCreateFlags;
1387 
1388 typedef enum VkImageViewCreateFlagBits {
1389     VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1390 } VkImageViewCreateFlagBits;
1391 typedef VkFlags VkImageViewCreateFlags;
1392 
1393 typedef enum VkPipelineCacheCreateFlagBits {
1394     VK_PIPELINE_CACHE_CREATE_USE_APPLICATION_STORAGE_BIT = 0x00000004,
1395     VK_PIPELINE_CACHE_CREATE_RESERVED_1_BIT_EXT = 0x00000002,
1396     VK_PIPELINE_CACHE_CREATE_READ_ONLY_BIT = VK_PIPELINE_CACHE_CREATE_RESERVED_1_BIT_EXT,
1397     VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1398 } VkPipelineCacheCreateFlagBits;
1399 typedef VkFlags VkPipelineCacheCreateFlags;
1400 
1401 typedef enum VkColorComponentFlagBits {
1402     VK_COLOR_COMPONENT_R_BIT = 0x00000001,
1403     VK_COLOR_COMPONENT_G_BIT = 0x00000002,
1404     VK_COLOR_COMPONENT_B_BIT = 0x00000004,
1405     VK_COLOR_COMPONENT_A_BIT = 0x00000008,
1406     VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1407 } VkColorComponentFlagBits;
1408 typedef VkFlags VkColorComponentFlags;
1409 
1410 typedef enum VkPipelineCreateFlagBits {
1411     VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
1412     VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
1413     VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008,
1414     VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 0x00000010,
1415     VK_PIPELINE_CREATE_DISPATCH_BASE = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT,
1416     VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1417 } VkPipelineCreateFlagBits;
1418 typedef VkFlags VkPipelineCreateFlags;
1419 
1420 typedef enum VkPipelineShaderStageCreateFlagBits {
1421     VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 0x00000001,
1422     VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 0x00000002,
1423     VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1424 } VkPipelineShaderStageCreateFlagBits;
1425 typedef VkFlags VkPipelineShaderStageCreateFlags;
1426 
1427 typedef enum VkShaderStageFlagBits {
1428     VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
1429     VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
1430     VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
1431     VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
1432     VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
1433     VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
1434     VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
1435     VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
1436     VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1437 } VkShaderStageFlagBits;
1438 
1439 typedef enum VkCullModeFlagBits {
1440     VK_CULL_MODE_NONE = 0,
1441     VK_CULL_MODE_FRONT_BIT = 0x00000001,
1442     VK_CULL_MODE_BACK_BIT = 0x00000002,
1443     VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
1444     VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1445 } VkCullModeFlagBits;
1446 typedef VkFlags VkCullModeFlags;
1447 typedef VkFlags VkPipelineVertexInputStateCreateFlags;
1448 typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;
1449 typedef VkFlags VkPipelineTessellationStateCreateFlags;
1450 typedef VkFlags VkPipelineViewportStateCreateFlags;
1451 typedef VkFlags VkPipelineRasterizationStateCreateFlags;
1452 typedef VkFlags VkPipelineMultisampleStateCreateFlags;
1453 typedef VkFlags VkPipelineDepthStencilStateCreateFlags;
1454 typedef VkFlags VkPipelineColorBlendStateCreateFlags;
1455 typedef VkFlags VkPipelineDynamicStateCreateFlags;
1456 typedef VkFlags VkPipelineLayoutCreateFlags;
1457 typedef VkFlags VkShaderStageFlags;
1458 
1459 typedef enum VkSamplerCreateFlagBits {
1460     VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1461 } VkSamplerCreateFlagBits;
1462 typedef VkFlags VkSamplerCreateFlags;
1463 
1464 typedef enum VkDescriptorPoolCreateFlagBits {
1465     VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
1466     VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 0x00000002,
1467     VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1468 } VkDescriptorPoolCreateFlagBits;
1469 typedef VkFlags VkDescriptorPoolCreateFlags;
1470 typedef VkFlags VkDescriptorPoolResetFlags;
1471 
1472 typedef enum VkDescriptorSetLayoutCreateFlagBits {
1473     VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 0x00000002,
1474     VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1475 } VkDescriptorSetLayoutCreateFlagBits;
1476 typedef VkFlags VkDescriptorSetLayoutCreateFlags;
1477 
1478 typedef enum VkAttachmentDescriptionFlagBits {
1479     VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
1480     VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1481 } VkAttachmentDescriptionFlagBits;
1482 typedef VkFlags VkAttachmentDescriptionFlags;
1483 
1484 typedef enum VkDependencyFlagBits {
1485     VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
1486     VK_DEPENDENCY_DEVICE_GROUP_BIT = 0x00000004,
1487     VK_DEPENDENCY_VIEW_LOCAL_BIT = 0x00000002,
1488     VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1489 } VkDependencyFlagBits;
1490 typedef VkFlags VkDependencyFlags;
1491 
1492 typedef enum VkFramebufferCreateFlagBits {
1493     VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 0x00000001,
1494     VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1495 } VkFramebufferCreateFlagBits;
1496 typedef VkFlags VkFramebufferCreateFlags;
1497 
1498 typedef enum VkRenderPassCreateFlagBits {
1499     VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1500 } VkRenderPassCreateFlagBits;
1501 typedef VkFlags VkRenderPassCreateFlags;
1502 
1503 typedef enum VkSubpassDescriptionFlagBits {
1504     VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1505 } VkSubpassDescriptionFlagBits;
1506 typedef VkFlags VkSubpassDescriptionFlags;
1507 
1508 typedef enum VkCommandPoolCreateFlagBits {
1509     VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001,
1510     VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
1511     VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 0x00000004,
1512     VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1513 } VkCommandPoolCreateFlagBits;
1514 typedef VkFlags VkCommandPoolCreateFlags;
1515 
1516 typedef enum VkCommandPoolResetFlagBits {
1517     VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1518 } VkCommandPoolResetFlagBits;
1519 typedef VkFlags VkCommandPoolResetFlags;
1520 
1521 typedef enum VkCommandBufferUsageFlagBits {
1522     VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
1523     VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
1524     VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
1525     VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1526 } VkCommandBufferUsageFlagBits;
1527 typedef VkFlags VkCommandBufferUsageFlags;
1528 
1529 typedef enum VkQueryControlFlagBits {
1530     VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
1531     VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1532 } VkQueryControlFlagBits;
1533 typedef VkFlags VkQueryControlFlags;
1534 
1535 typedef enum VkCommandBufferResetFlagBits {
1536     VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
1537     VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1538 } VkCommandBufferResetFlagBits;
1539 typedef VkFlags VkCommandBufferResetFlags;
1540 
1541 typedef enum VkStencilFaceFlagBits {
1542     VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
1543     VK_STENCIL_FACE_BACK_BIT = 0x00000002,
1544     VK_STENCIL_FACE_FRONT_AND_BACK = 0x00000003,
1545     VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1546 } VkStencilFaceFlagBits;
1547 typedef VkFlags VkStencilFaceFlags;
1548 typedef struct VkExtent2D {
1549     uint32_t    width;
1550     uint32_t    height;
1551 } VkExtent2D;
1552 
1553 typedef struct VkExtent3D {
1554     uint32_t    width;
1555     uint32_t    height;
1556     uint32_t    depth;
1557 } VkExtent3D;
1558 
1559 typedef struct VkOffset2D {
1560     int32_t    x;
1561     int32_t    y;
1562 } VkOffset2D;
1563 
1564 typedef struct VkOffset3D {
1565     int32_t    x;
1566     int32_t    y;
1567     int32_t    z;
1568 } VkOffset3D;
1569 
1570 typedef struct VkRect2D {
1571     VkOffset2D    offset;
1572     VkExtent2D    extent;
1573 } VkRect2D;
1574 
1575 typedef struct VkBaseInStructure {
1576     VkStructureType                    sType;
1577     const struct VkBaseInStructure*    pNext;
1578 } VkBaseInStructure;
1579 
1580 typedef struct VkBaseOutStructure {
1581     VkStructureType               sType;
1582     struct VkBaseOutStructure*    pNext;
1583 } VkBaseOutStructure;
1584 
1585 typedef struct VkBufferMemoryBarrier {
1586     VkStructureType    sType;
1587     const void*        pNext;
1588     VkAccessFlags      srcAccessMask;
1589     VkAccessFlags      dstAccessMask;
1590     uint32_t           srcQueueFamilyIndex;
1591     uint32_t           dstQueueFamilyIndex;
1592     VkBuffer           buffer;
1593     VkDeviceSize       offset;
1594     VkDeviceSize       size;
1595 } VkBufferMemoryBarrier;
1596 
1597 typedef struct VkDispatchIndirectCommand {
1598     uint32_t    x;
1599     uint32_t    y;
1600     uint32_t    z;
1601 } VkDispatchIndirectCommand;
1602 
1603 typedef struct VkDrawIndexedIndirectCommand {
1604     uint32_t    indexCount;
1605     uint32_t    instanceCount;
1606     uint32_t    firstIndex;
1607     int32_t     vertexOffset;
1608     uint32_t    firstInstance;
1609 } VkDrawIndexedIndirectCommand;
1610 
1611 typedef struct VkDrawIndirectCommand {
1612     uint32_t    vertexCount;
1613     uint32_t    instanceCount;
1614     uint32_t    firstVertex;
1615     uint32_t    firstInstance;
1616 } VkDrawIndirectCommand;
1617 
1618 typedef struct VkImageSubresourceRange {
1619     VkImageAspectFlags    aspectMask;
1620     uint32_t              baseMipLevel;
1621     uint32_t              levelCount;
1622     uint32_t              baseArrayLayer;
1623     uint32_t              layerCount;
1624 } VkImageSubresourceRange;
1625 
1626 typedef struct VkImageMemoryBarrier {
1627     VkStructureType            sType;
1628     const void*                pNext;
1629     VkAccessFlags              srcAccessMask;
1630     VkAccessFlags              dstAccessMask;
1631     VkImageLayout              oldLayout;
1632     VkImageLayout              newLayout;
1633     uint32_t                   srcQueueFamilyIndex;
1634     uint32_t                   dstQueueFamilyIndex;
1635     VkImage                    image;
1636     VkImageSubresourceRange    subresourceRange;
1637 } VkImageMemoryBarrier;
1638 
1639 typedef struct VkMemoryBarrier {
1640     VkStructureType    sType;
1641     const void*        pNext;
1642     VkAccessFlags      srcAccessMask;
1643     VkAccessFlags      dstAccessMask;
1644 } VkMemoryBarrier;
1645 
1646 typedef struct VkPipelineCacheHeaderVersionOne {
1647     uint32_t                        headerSize;
1648     VkPipelineCacheHeaderVersion    headerVersion;
1649     uint32_t                        vendorID;
1650     uint32_t                        deviceID;
1651     uint8_t                         pipelineCacheUUID[VK_UUID_SIZE];
1652 } VkPipelineCacheHeaderVersionOne;
1653 
1654 typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(
1655     void*                                       pUserData,
1656     size_t                                      size,
1657     size_t                                      alignment,
1658     VkSystemAllocationScope                     allocationScope);
1659 
1660 typedef void (VKAPI_PTR *PFN_vkFreeFunction)(
1661     void*                                       pUserData,
1662     void*                                       pMemory);
1663 
1664 typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)(
1665     void*                                       pUserData,
1666     size_t                                      size,
1667     VkInternalAllocationType                    allocationType,
1668     VkSystemAllocationScope                     allocationScope);
1669 
1670 typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)(
1671     void*                                       pUserData,
1672     size_t                                      size,
1673     VkInternalAllocationType                    allocationType,
1674     VkSystemAllocationScope                     allocationScope);
1675 
1676 typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)(
1677     void*                                       pUserData,
1678     void*                                       pOriginal,
1679     size_t                                      size,
1680     size_t                                      alignment,
1681     VkSystemAllocationScope                     allocationScope);
1682 
1683 typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void);
1684 typedef struct VkAllocationCallbacks {
1685     void*                                   pUserData;
1686     PFN_vkAllocationFunction                pfnAllocation;
1687     PFN_vkReallocationFunction              pfnReallocation;
1688     PFN_vkFreeFunction                      pfnFree;
1689     PFN_vkInternalAllocationNotification    pfnInternalAllocation;
1690     PFN_vkInternalFreeNotification          pfnInternalFree;
1691 } VkAllocationCallbacks;
1692 
1693 typedef struct VkApplicationInfo {
1694     VkStructureType    sType;
1695     const void*        pNext;
1696     const char*        pApplicationName;
1697     uint32_t           applicationVersion;
1698     const char*        pEngineName;
1699     uint32_t           engineVersion;
1700     uint32_t           apiVersion;
1701 } VkApplicationInfo;
1702 
1703 typedef struct VkFormatProperties {
1704     VkFormatFeatureFlags    linearTilingFeatures;
1705     VkFormatFeatureFlags    optimalTilingFeatures;
1706     VkFormatFeatureFlags    bufferFeatures;
1707 } VkFormatProperties;
1708 
1709 typedef struct VkImageFormatProperties {
1710     VkExtent3D            maxExtent;
1711     uint32_t              maxMipLevels;
1712     uint32_t              maxArrayLayers;
1713     VkSampleCountFlags    sampleCounts;
1714     VkDeviceSize          maxResourceSize;
1715 } VkImageFormatProperties;
1716 
1717 typedef struct VkInstanceCreateInfo {
1718     VkStructureType             sType;
1719     const void*                 pNext;
1720     VkInstanceCreateFlags       flags;
1721     const VkApplicationInfo*    pApplicationInfo;
1722     uint32_t                    enabledLayerCount;
1723     const char* const*          ppEnabledLayerNames;
1724     uint32_t                    enabledExtensionCount;
1725     const char* const*          ppEnabledExtensionNames;
1726 } VkInstanceCreateInfo;
1727 
1728 typedef struct VkMemoryHeap {
1729     VkDeviceSize         size;
1730     VkMemoryHeapFlags    flags;
1731 } VkMemoryHeap;
1732 
1733 typedef struct VkMemoryType {
1734     VkMemoryPropertyFlags    propertyFlags;
1735     uint32_t                 heapIndex;
1736 } VkMemoryType;
1737 
1738 typedef struct VkPhysicalDeviceFeatures {
1739     VkBool32    robustBufferAccess;
1740     VkBool32    fullDrawIndexUint32;
1741     VkBool32    imageCubeArray;
1742     VkBool32    independentBlend;
1743     VkBool32    geometryShader;
1744     VkBool32    tessellationShader;
1745     VkBool32    sampleRateShading;
1746     VkBool32    dualSrcBlend;
1747     VkBool32    logicOp;
1748     VkBool32    multiDrawIndirect;
1749     VkBool32    drawIndirectFirstInstance;
1750     VkBool32    depthClamp;
1751     VkBool32    depthBiasClamp;
1752     VkBool32    fillModeNonSolid;
1753     VkBool32    depthBounds;
1754     VkBool32    wideLines;
1755     VkBool32    largePoints;
1756     VkBool32    alphaToOne;
1757     VkBool32    multiViewport;
1758     VkBool32    samplerAnisotropy;
1759     VkBool32    textureCompressionETC2;
1760     VkBool32    textureCompressionASTC_LDR;
1761     VkBool32    textureCompressionBC;
1762     VkBool32    occlusionQueryPrecise;
1763     VkBool32    pipelineStatisticsQuery;
1764     VkBool32    vertexPipelineStoresAndAtomics;
1765     VkBool32    fragmentStoresAndAtomics;
1766     VkBool32    shaderTessellationAndGeometryPointSize;
1767     VkBool32    shaderImageGatherExtended;
1768     VkBool32    shaderStorageImageExtendedFormats;
1769     VkBool32    shaderStorageImageMultisample;
1770     VkBool32    shaderStorageImageReadWithoutFormat;
1771     VkBool32    shaderStorageImageWriteWithoutFormat;
1772     VkBool32    shaderUniformBufferArrayDynamicIndexing;
1773     VkBool32    shaderSampledImageArrayDynamicIndexing;
1774     VkBool32    shaderStorageBufferArrayDynamicIndexing;
1775     VkBool32    shaderStorageImageArrayDynamicIndexing;
1776     VkBool32    shaderClipDistance;
1777     VkBool32    shaderCullDistance;
1778     VkBool32    shaderFloat64;
1779     VkBool32    shaderInt64;
1780     VkBool32    shaderInt16;
1781     VkBool32    shaderResourceResidency;
1782     VkBool32    shaderResourceMinLod;
1783     VkBool32    sparseBinding;
1784     VkBool32    sparseResidencyBuffer;
1785     VkBool32    sparseResidencyImage2D;
1786     VkBool32    sparseResidencyImage3D;
1787     VkBool32    sparseResidency2Samples;
1788     VkBool32    sparseResidency4Samples;
1789     VkBool32    sparseResidency8Samples;
1790     VkBool32    sparseResidency16Samples;
1791     VkBool32    sparseResidencyAliased;
1792     VkBool32    variableMultisampleRate;
1793     VkBool32    inheritedQueries;
1794 } VkPhysicalDeviceFeatures;
1795 
1796 typedef struct VkPhysicalDeviceLimits {
1797     uint32_t              maxImageDimension1D;
1798     uint32_t              maxImageDimension2D;
1799     uint32_t              maxImageDimension3D;
1800     uint32_t              maxImageDimensionCube;
1801     uint32_t              maxImageArrayLayers;
1802     uint32_t              maxTexelBufferElements;
1803     uint32_t              maxUniformBufferRange;
1804     uint32_t              maxStorageBufferRange;
1805     uint32_t              maxPushConstantsSize;
1806     uint32_t              maxMemoryAllocationCount;
1807     uint32_t              maxSamplerAllocationCount;
1808     VkDeviceSize          bufferImageGranularity;
1809     VkDeviceSize          sparseAddressSpaceSize;
1810     uint32_t              maxBoundDescriptorSets;
1811     uint32_t              maxPerStageDescriptorSamplers;
1812     uint32_t              maxPerStageDescriptorUniformBuffers;
1813     uint32_t              maxPerStageDescriptorStorageBuffers;
1814     uint32_t              maxPerStageDescriptorSampledImages;
1815     uint32_t              maxPerStageDescriptorStorageImages;
1816     uint32_t              maxPerStageDescriptorInputAttachments;
1817     uint32_t              maxPerStageResources;
1818     uint32_t              maxDescriptorSetSamplers;
1819     uint32_t              maxDescriptorSetUniformBuffers;
1820     uint32_t              maxDescriptorSetUniformBuffersDynamic;
1821     uint32_t              maxDescriptorSetStorageBuffers;
1822     uint32_t              maxDescriptorSetStorageBuffersDynamic;
1823     uint32_t              maxDescriptorSetSampledImages;
1824     uint32_t              maxDescriptorSetStorageImages;
1825     uint32_t              maxDescriptorSetInputAttachments;
1826     uint32_t              maxVertexInputAttributes;
1827     uint32_t              maxVertexInputBindings;
1828     uint32_t              maxVertexInputAttributeOffset;
1829     uint32_t              maxVertexInputBindingStride;
1830     uint32_t              maxVertexOutputComponents;
1831     uint32_t              maxTessellationGenerationLevel;
1832     uint32_t              maxTessellationPatchSize;
1833     uint32_t              maxTessellationControlPerVertexInputComponents;
1834     uint32_t              maxTessellationControlPerVertexOutputComponents;
1835     uint32_t              maxTessellationControlPerPatchOutputComponents;
1836     uint32_t              maxTessellationControlTotalOutputComponents;
1837     uint32_t              maxTessellationEvaluationInputComponents;
1838     uint32_t              maxTessellationEvaluationOutputComponents;
1839     uint32_t              maxGeometryShaderInvocations;
1840     uint32_t              maxGeometryInputComponents;
1841     uint32_t              maxGeometryOutputComponents;
1842     uint32_t              maxGeometryOutputVertices;
1843     uint32_t              maxGeometryTotalOutputComponents;
1844     uint32_t              maxFragmentInputComponents;
1845     uint32_t              maxFragmentOutputAttachments;
1846     uint32_t              maxFragmentDualSrcAttachments;
1847     uint32_t              maxFragmentCombinedOutputResources;
1848     uint32_t              maxComputeSharedMemorySize;
1849     uint32_t              maxComputeWorkGroupCount[3];
1850     uint32_t              maxComputeWorkGroupInvocations;
1851     uint32_t              maxComputeWorkGroupSize[3];
1852     uint32_t              subPixelPrecisionBits;
1853     uint32_t              subTexelPrecisionBits;
1854     uint32_t              mipmapPrecisionBits;
1855     uint32_t              maxDrawIndexedIndexValue;
1856     uint32_t              maxDrawIndirectCount;
1857     float                 maxSamplerLodBias;
1858     float                 maxSamplerAnisotropy;
1859     uint32_t              maxViewports;
1860     uint32_t              maxViewportDimensions[2];
1861     float                 viewportBoundsRange[2];
1862     uint32_t              viewportSubPixelBits;
1863     size_t                minMemoryMapAlignment;
1864     VkDeviceSize          minTexelBufferOffsetAlignment;
1865     VkDeviceSize          minUniformBufferOffsetAlignment;
1866     VkDeviceSize          minStorageBufferOffsetAlignment;
1867     int32_t               minTexelOffset;
1868     uint32_t              maxTexelOffset;
1869     int32_t               minTexelGatherOffset;
1870     uint32_t              maxTexelGatherOffset;
1871     float                 minInterpolationOffset;
1872     float                 maxInterpolationOffset;
1873     uint32_t              subPixelInterpolationOffsetBits;
1874     uint32_t              maxFramebufferWidth;
1875     uint32_t              maxFramebufferHeight;
1876     uint32_t              maxFramebufferLayers;
1877     VkSampleCountFlags    framebufferColorSampleCounts;
1878     VkSampleCountFlags    framebufferDepthSampleCounts;
1879     VkSampleCountFlags    framebufferStencilSampleCounts;
1880     VkSampleCountFlags    framebufferNoAttachmentsSampleCounts;
1881     uint32_t              maxColorAttachments;
1882     VkSampleCountFlags    sampledImageColorSampleCounts;
1883     VkSampleCountFlags    sampledImageIntegerSampleCounts;
1884     VkSampleCountFlags    sampledImageDepthSampleCounts;
1885     VkSampleCountFlags    sampledImageStencilSampleCounts;
1886     VkSampleCountFlags    storageImageSampleCounts;
1887     uint32_t              maxSampleMaskWords;
1888     VkBool32              timestampComputeAndGraphics;
1889     float                 timestampPeriod;
1890     uint32_t              maxClipDistances;
1891     uint32_t              maxCullDistances;
1892     uint32_t              maxCombinedClipAndCullDistances;
1893     uint32_t              discreteQueuePriorities;
1894     float                 pointSizeRange[2];
1895     float                 lineWidthRange[2];
1896     float                 pointSizeGranularity;
1897     float                 lineWidthGranularity;
1898     VkBool32              strictLines;
1899     VkBool32              standardSampleLocations;
1900     VkDeviceSize          optimalBufferCopyOffsetAlignment;
1901     VkDeviceSize          optimalBufferCopyRowPitchAlignment;
1902     VkDeviceSize          nonCoherentAtomSize;
1903 } VkPhysicalDeviceLimits;
1904 
1905 typedef struct VkPhysicalDeviceMemoryProperties {
1906     uint32_t        memoryTypeCount;
1907     VkMemoryType    memoryTypes[VK_MAX_MEMORY_TYPES];
1908     uint32_t        memoryHeapCount;
1909     VkMemoryHeap    memoryHeaps[VK_MAX_MEMORY_HEAPS];
1910 } VkPhysicalDeviceMemoryProperties;
1911 
1912 typedef struct VkPhysicalDeviceSparseProperties {
1913     VkBool32    residencyStandard2DBlockShape;
1914     VkBool32    residencyStandard2DMultisampleBlockShape;
1915     VkBool32    residencyStandard3DBlockShape;
1916     VkBool32    residencyAlignedMipSize;
1917     VkBool32    residencyNonResidentStrict;
1918 } VkPhysicalDeviceSparseProperties;
1919 
1920 typedef struct VkPhysicalDeviceProperties {
1921     uint32_t                            apiVersion;
1922     uint32_t                            driverVersion;
1923     uint32_t                            vendorID;
1924     uint32_t                            deviceID;
1925     VkPhysicalDeviceType                deviceType;
1926     char                                deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
1927     uint8_t                             pipelineCacheUUID[VK_UUID_SIZE];
1928     VkPhysicalDeviceLimits              limits;
1929     VkPhysicalDeviceSparseProperties    sparseProperties;
1930 } VkPhysicalDeviceProperties;
1931 
1932 typedef struct VkQueueFamilyProperties {
1933     VkQueueFlags    queueFlags;
1934     uint32_t        queueCount;
1935     uint32_t        timestampValidBits;
1936     VkExtent3D      minImageTransferGranularity;
1937 } VkQueueFamilyProperties;
1938 
1939 typedef struct VkDeviceQueueCreateInfo {
1940     VkStructureType             sType;
1941     const void*                 pNext;
1942     VkDeviceQueueCreateFlags    flags;
1943     uint32_t                    queueFamilyIndex;
1944     uint32_t                    queueCount;
1945     const float*                pQueuePriorities;
1946 } VkDeviceQueueCreateInfo;
1947 
1948 typedef struct VkDeviceCreateInfo {
1949     VkStructureType                    sType;
1950     const void*                        pNext;
1951     VkDeviceCreateFlags                flags;
1952     uint32_t                           queueCreateInfoCount;
1953     const VkDeviceQueueCreateInfo*     pQueueCreateInfos;
1954     uint32_t                           enabledLayerCount;
1955     const char* const*                 ppEnabledLayerNames;
1956     uint32_t                           enabledExtensionCount;
1957     const char* const*                 ppEnabledExtensionNames;
1958     const VkPhysicalDeviceFeatures*    pEnabledFeatures;
1959 } VkDeviceCreateInfo;
1960 
1961 typedef struct VkExtensionProperties {
1962     char        extensionName[VK_MAX_EXTENSION_NAME_SIZE];
1963     uint32_t    specVersion;
1964 } VkExtensionProperties;
1965 
1966 typedef struct VkLayerProperties {
1967     char        layerName[VK_MAX_EXTENSION_NAME_SIZE];
1968     uint32_t    specVersion;
1969     uint32_t    implementationVersion;
1970     char        description[VK_MAX_DESCRIPTION_SIZE];
1971 } VkLayerProperties;
1972 
1973 typedef struct VkSubmitInfo {
1974     VkStructureType                sType;
1975     const void*                    pNext;
1976     uint32_t                       waitSemaphoreCount;
1977     const VkSemaphore*             pWaitSemaphores;
1978     const VkPipelineStageFlags*    pWaitDstStageMask;
1979     uint32_t                       commandBufferCount;
1980     const VkCommandBuffer*         pCommandBuffers;
1981     uint32_t                       signalSemaphoreCount;
1982     const VkSemaphore*             pSignalSemaphores;
1983 } VkSubmitInfo;
1984 
1985 typedef struct VkMappedMemoryRange {
1986     VkStructureType    sType;
1987     const void*        pNext;
1988     VkDeviceMemory     memory;
1989     VkDeviceSize       offset;
1990     VkDeviceSize       size;
1991 } VkMappedMemoryRange;
1992 
1993 typedef struct VkMemoryAllocateInfo {
1994     VkStructureType    sType;
1995     const void*        pNext;
1996     VkDeviceSize       allocationSize;
1997     uint32_t           memoryTypeIndex;
1998 } VkMemoryAllocateInfo;
1999 
2000 typedef struct VkMemoryRequirements {
2001     VkDeviceSize    size;
2002     VkDeviceSize    alignment;
2003     uint32_t        memoryTypeBits;
2004 } VkMemoryRequirements;
2005 
2006 typedef struct VkImageSubresource {
2007     VkImageAspectFlags    aspectMask;
2008     uint32_t              mipLevel;
2009     uint32_t              arrayLayer;
2010 } VkImageSubresource;
2011 
2012 typedef struct VkFenceCreateInfo {
2013     VkStructureType       sType;
2014     const void*           pNext;
2015     VkFenceCreateFlags    flags;
2016 } VkFenceCreateInfo;
2017 
2018 typedef struct VkSemaphoreCreateInfo {
2019     VkStructureType           sType;
2020     const void*               pNext;
2021     VkSemaphoreCreateFlags    flags;
2022 } VkSemaphoreCreateInfo;
2023 
2024 typedef struct VkEventCreateInfo {
2025     VkStructureType       sType;
2026     const void*           pNext;
2027     VkEventCreateFlags    flags;
2028 } VkEventCreateInfo;
2029 
2030 typedef struct VkQueryPoolCreateInfo {
2031     VkStructureType                  sType;
2032     const void*                      pNext;
2033     VkQueryPoolCreateFlags           flags;
2034     VkQueryType                      queryType;
2035     uint32_t                         queryCount;
2036     VkQueryPipelineStatisticFlags    pipelineStatistics;
2037 } VkQueryPoolCreateInfo;
2038 
2039 typedef struct VkBufferCreateInfo {
2040     VkStructureType        sType;
2041     const void*            pNext;
2042     VkBufferCreateFlags    flags;
2043     VkDeviceSize           size;
2044     VkBufferUsageFlags     usage;
2045     VkSharingMode          sharingMode;
2046     uint32_t               queueFamilyIndexCount;
2047     const uint32_t*        pQueueFamilyIndices;
2048 } VkBufferCreateInfo;
2049 
2050 typedef struct VkBufferViewCreateInfo {
2051     VkStructureType            sType;
2052     const void*                pNext;
2053     VkBufferViewCreateFlags    flags;
2054     VkBuffer                   buffer;
2055     VkFormat                   format;
2056     VkDeviceSize               offset;
2057     VkDeviceSize               range;
2058 } VkBufferViewCreateInfo;
2059 
2060 typedef struct VkImageCreateInfo {
2061     VkStructureType          sType;
2062     const void*              pNext;
2063     VkImageCreateFlags       flags;
2064     VkImageType              imageType;
2065     VkFormat                 format;
2066     VkExtent3D               extent;
2067     uint32_t                 mipLevels;
2068     uint32_t                 arrayLayers;
2069     VkSampleCountFlagBits    samples;
2070     VkImageTiling            tiling;
2071     VkImageUsageFlags        usage;
2072     VkSharingMode            sharingMode;
2073     uint32_t                 queueFamilyIndexCount;
2074     const uint32_t*          pQueueFamilyIndices;
2075     VkImageLayout            initialLayout;
2076 } VkImageCreateInfo;
2077 
2078 typedef struct VkSubresourceLayout {
2079     VkDeviceSize    offset;
2080     VkDeviceSize    size;
2081     VkDeviceSize    rowPitch;
2082     VkDeviceSize    arrayPitch;
2083     VkDeviceSize    depthPitch;
2084 } VkSubresourceLayout;
2085 
2086 typedef struct VkComponentMapping {
2087     VkComponentSwizzle    r;
2088     VkComponentSwizzle    g;
2089     VkComponentSwizzle    b;
2090     VkComponentSwizzle    a;
2091 } VkComponentMapping;
2092 
2093 typedef struct VkImageViewCreateInfo {
2094     VkStructureType            sType;
2095     const void*                pNext;
2096     VkImageViewCreateFlags     flags;
2097     VkImage                    image;
2098     VkImageViewType            viewType;
2099     VkFormat                   format;
2100     VkComponentMapping         components;
2101     VkImageSubresourceRange    subresourceRange;
2102 } VkImageViewCreateInfo;
2103 
2104 typedef struct VkPipelineCacheCreateInfo {
2105     VkStructureType               sType;
2106     const void*                   pNext;
2107     VkPipelineCacheCreateFlags    flags;
2108     size_t                        initialDataSize;
2109     const void*                   pInitialData;
2110 } VkPipelineCacheCreateInfo;
2111 
2112 typedef struct VkSpecializationMapEntry {
2113     uint32_t    constantID;
2114     uint32_t    offset;
2115     size_t      size;
2116 } VkSpecializationMapEntry;
2117 
2118 typedef struct VkSpecializationInfo {
2119     uint32_t                           mapEntryCount;
2120     const VkSpecializationMapEntry*    pMapEntries;
2121     size_t                             dataSize;
2122     const void*                        pData;
2123 } VkSpecializationInfo;
2124 
2125 typedef struct VkPipelineShaderStageCreateInfo {
2126     VkStructureType                     sType;
2127     const void*                         pNext;
2128     VkPipelineShaderStageCreateFlags    flags;
2129     VkShaderStageFlagBits               stage;
2130     VkShaderModule                      module;
2131     const char*                         pName;
2132     const VkSpecializationInfo*         pSpecializationInfo;
2133 } VkPipelineShaderStageCreateInfo;
2134 
2135 typedef struct VkComputePipelineCreateInfo {
2136     VkStructureType                    sType;
2137     const void*                        pNext;
2138     VkPipelineCreateFlags              flags;
2139     VkPipelineShaderStageCreateInfo    stage;
2140     VkPipelineLayout                   layout;
2141     VkPipeline                         basePipelineHandle;
2142     int32_t                            basePipelineIndex;
2143 } VkComputePipelineCreateInfo;
2144 
2145 typedef struct VkVertexInputBindingDescription {
2146     uint32_t             binding;
2147     uint32_t             stride;
2148     VkVertexInputRate    inputRate;
2149 } VkVertexInputBindingDescription;
2150 
2151 typedef struct VkVertexInputAttributeDescription {
2152     uint32_t    location;
2153     uint32_t    binding;
2154     VkFormat    format;
2155     uint32_t    offset;
2156 } VkVertexInputAttributeDescription;
2157 
2158 typedef struct VkPipelineVertexInputStateCreateInfo {
2159     VkStructureType                             sType;
2160     const void*                                 pNext;
2161     VkPipelineVertexInputStateCreateFlags       flags;
2162     uint32_t                                    vertexBindingDescriptionCount;
2163     const VkVertexInputBindingDescription*      pVertexBindingDescriptions;
2164     uint32_t                                    vertexAttributeDescriptionCount;
2165     const VkVertexInputAttributeDescription*    pVertexAttributeDescriptions;
2166 } VkPipelineVertexInputStateCreateInfo;
2167 
2168 typedef struct VkPipelineInputAssemblyStateCreateInfo {
2169     VkStructureType                            sType;
2170     const void*                                pNext;
2171     VkPipelineInputAssemblyStateCreateFlags    flags;
2172     VkPrimitiveTopology                        topology;
2173     VkBool32                                   primitiveRestartEnable;
2174 } VkPipelineInputAssemblyStateCreateInfo;
2175 
2176 typedef struct VkPipelineTessellationStateCreateInfo {
2177     VkStructureType                           sType;
2178     const void*                               pNext;
2179     VkPipelineTessellationStateCreateFlags    flags;
2180     uint32_t                                  patchControlPoints;
2181 } VkPipelineTessellationStateCreateInfo;
2182 
2183 typedef struct VkViewport {
2184     float    x;
2185     float    y;
2186     float    width;
2187     float    height;
2188     float    minDepth;
2189     float    maxDepth;
2190 } VkViewport;
2191 
2192 typedef struct VkPipelineViewportStateCreateInfo {
2193     VkStructureType                       sType;
2194     const void*                           pNext;
2195     VkPipelineViewportStateCreateFlags    flags;
2196     uint32_t                              viewportCount;
2197     const VkViewport*                     pViewports;
2198     uint32_t                              scissorCount;
2199     const VkRect2D*                       pScissors;
2200 } VkPipelineViewportStateCreateInfo;
2201 
2202 typedef struct VkPipelineRasterizationStateCreateInfo {
2203     VkStructureType                            sType;
2204     const void*                                pNext;
2205     VkPipelineRasterizationStateCreateFlags    flags;
2206     VkBool32                                   depthClampEnable;
2207     VkBool32                                   rasterizerDiscardEnable;
2208     VkPolygonMode                              polygonMode;
2209     VkCullModeFlags                            cullMode;
2210     VkFrontFace                                frontFace;
2211     VkBool32                                   depthBiasEnable;
2212     float                                      depthBiasConstantFactor;
2213     float                                      depthBiasClamp;
2214     float                                      depthBiasSlopeFactor;
2215     float                                      lineWidth;
2216 } VkPipelineRasterizationStateCreateInfo;
2217 
2218 typedef struct VkPipelineMultisampleStateCreateInfo {
2219     VkStructureType                          sType;
2220     const void*                              pNext;
2221     VkPipelineMultisampleStateCreateFlags    flags;
2222     VkSampleCountFlagBits                    rasterizationSamples;
2223     VkBool32                                 sampleShadingEnable;
2224     float                                    minSampleShading;
2225     const VkSampleMask*                      pSampleMask;
2226     VkBool32                                 alphaToCoverageEnable;
2227     VkBool32                                 alphaToOneEnable;
2228 } VkPipelineMultisampleStateCreateInfo;
2229 
2230 typedef struct VkStencilOpState {
2231     VkStencilOp    failOp;
2232     VkStencilOp    passOp;
2233     VkStencilOp    depthFailOp;
2234     VkCompareOp    compareOp;
2235     uint32_t       compareMask;
2236     uint32_t       writeMask;
2237     uint32_t       reference;
2238 } VkStencilOpState;
2239 
2240 typedef struct VkPipelineDepthStencilStateCreateInfo {
2241     VkStructureType                           sType;
2242     const void*                               pNext;
2243     VkPipelineDepthStencilStateCreateFlags    flags;
2244     VkBool32                                  depthTestEnable;
2245     VkBool32                                  depthWriteEnable;
2246     VkCompareOp                               depthCompareOp;
2247     VkBool32                                  depthBoundsTestEnable;
2248     VkBool32                                  stencilTestEnable;
2249     VkStencilOpState                          front;
2250     VkStencilOpState                          back;
2251     float                                     minDepthBounds;
2252     float                                     maxDepthBounds;
2253 } VkPipelineDepthStencilStateCreateInfo;
2254 
2255 typedef struct VkPipelineColorBlendAttachmentState {
2256     VkBool32                 blendEnable;
2257     VkBlendFactor            srcColorBlendFactor;
2258     VkBlendFactor            dstColorBlendFactor;
2259     VkBlendOp                colorBlendOp;
2260     VkBlendFactor            srcAlphaBlendFactor;
2261     VkBlendFactor            dstAlphaBlendFactor;
2262     VkBlendOp                alphaBlendOp;
2263     VkColorComponentFlags    colorWriteMask;
2264 } VkPipelineColorBlendAttachmentState;
2265 
2266 typedef struct VkPipelineColorBlendStateCreateInfo {
2267     VkStructureType                               sType;
2268     const void*                                   pNext;
2269     VkPipelineColorBlendStateCreateFlags          flags;
2270     VkBool32                                      logicOpEnable;
2271     VkLogicOp                                     logicOp;
2272     uint32_t                                      attachmentCount;
2273     const VkPipelineColorBlendAttachmentState*    pAttachments;
2274     float                                         blendConstants[4];
2275 } VkPipelineColorBlendStateCreateInfo;
2276 
2277 typedef struct VkPipelineDynamicStateCreateInfo {
2278     VkStructureType                      sType;
2279     const void*                          pNext;
2280     VkPipelineDynamicStateCreateFlags    flags;
2281     uint32_t                             dynamicStateCount;
2282     const VkDynamicState*                pDynamicStates;
2283 } VkPipelineDynamicStateCreateInfo;
2284 
2285 typedef struct VkGraphicsPipelineCreateInfo {
2286     VkStructureType                                  sType;
2287     const void*                                      pNext;
2288     VkPipelineCreateFlags                            flags;
2289     uint32_t                                         stageCount;
2290     const VkPipelineShaderStageCreateInfo*           pStages;
2291     const VkPipelineVertexInputStateCreateInfo*      pVertexInputState;
2292     const VkPipelineInputAssemblyStateCreateInfo*    pInputAssemblyState;
2293     const VkPipelineTessellationStateCreateInfo*     pTessellationState;
2294     const VkPipelineViewportStateCreateInfo*         pViewportState;
2295     const VkPipelineRasterizationStateCreateInfo*    pRasterizationState;
2296     const VkPipelineMultisampleStateCreateInfo*      pMultisampleState;
2297     const VkPipelineDepthStencilStateCreateInfo*     pDepthStencilState;
2298     const VkPipelineColorBlendStateCreateInfo*       pColorBlendState;
2299     const VkPipelineDynamicStateCreateInfo*          pDynamicState;
2300     VkPipelineLayout                                 layout;
2301     VkRenderPass                                     renderPass;
2302     uint32_t                                         subpass;
2303     VkPipeline                                       basePipelineHandle;
2304     int32_t                                          basePipelineIndex;
2305 } VkGraphicsPipelineCreateInfo;
2306 
2307 typedef struct VkPushConstantRange {
2308     VkShaderStageFlags    stageFlags;
2309     uint32_t              offset;
2310     uint32_t              size;
2311 } VkPushConstantRange;
2312 
2313 typedef struct VkPipelineLayoutCreateInfo {
2314     VkStructureType                 sType;
2315     const void*                     pNext;
2316     VkPipelineLayoutCreateFlags     flags;
2317     uint32_t                        setLayoutCount;
2318     const VkDescriptorSetLayout*    pSetLayouts;
2319     uint32_t                        pushConstantRangeCount;
2320     const VkPushConstantRange*      pPushConstantRanges;
2321 } VkPipelineLayoutCreateInfo;
2322 
2323 typedef struct VkSamplerCreateInfo {
2324     VkStructureType         sType;
2325     const void*             pNext;
2326     VkSamplerCreateFlags    flags;
2327     VkFilter                magFilter;
2328     VkFilter                minFilter;
2329     VkSamplerMipmapMode     mipmapMode;
2330     VkSamplerAddressMode    addressModeU;
2331     VkSamplerAddressMode    addressModeV;
2332     VkSamplerAddressMode    addressModeW;
2333     float                   mipLodBias;
2334     VkBool32                anisotropyEnable;
2335     float                   maxAnisotropy;
2336     VkBool32                compareEnable;
2337     VkCompareOp             compareOp;
2338     float                   minLod;
2339     float                   maxLod;
2340     VkBorderColor           borderColor;
2341     VkBool32                unnormalizedCoordinates;
2342 } VkSamplerCreateInfo;
2343 
2344 typedef struct VkCopyDescriptorSet {
2345     VkStructureType    sType;
2346     const void*        pNext;
2347     VkDescriptorSet    srcSet;
2348     uint32_t           srcBinding;
2349     uint32_t           srcArrayElement;
2350     VkDescriptorSet    dstSet;
2351     uint32_t           dstBinding;
2352     uint32_t           dstArrayElement;
2353     uint32_t           descriptorCount;
2354 } VkCopyDescriptorSet;
2355 
2356 typedef struct VkDescriptorBufferInfo {
2357     VkBuffer        buffer;
2358     VkDeviceSize    offset;
2359     VkDeviceSize    range;
2360 } VkDescriptorBufferInfo;
2361 
2362 typedef struct VkDescriptorImageInfo {
2363     VkSampler        sampler;
2364     VkImageView      imageView;
2365     VkImageLayout    imageLayout;
2366 } VkDescriptorImageInfo;
2367 
2368 typedef struct VkDescriptorPoolSize {
2369     VkDescriptorType    type;
2370     uint32_t            descriptorCount;
2371 } VkDescriptorPoolSize;
2372 
2373 typedef struct VkDescriptorPoolCreateInfo {
2374     VkStructureType                sType;
2375     const void*                    pNext;
2376     VkDescriptorPoolCreateFlags    flags;
2377     uint32_t                       maxSets;
2378     uint32_t                       poolSizeCount;
2379     const VkDescriptorPoolSize*    pPoolSizes;
2380 } VkDescriptorPoolCreateInfo;
2381 
2382 typedef struct VkDescriptorSetAllocateInfo {
2383     VkStructureType                 sType;
2384     const void*                     pNext;
2385     VkDescriptorPool                descriptorPool;
2386     uint32_t                        descriptorSetCount;
2387     const VkDescriptorSetLayout*    pSetLayouts;
2388 } VkDescriptorSetAllocateInfo;
2389 
2390 typedef struct VkDescriptorSetLayoutBinding {
2391     uint32_t              binding;
2392     VkDescriptorType      descriptorType;
2393     uint32_t              descriptorCount;
2394     VkShaderStageFlags    stageFlags;
2395     const VkSampler*      pImmutableSamplers;
2396 } VkDescriptorSetLayoutBinding;
2397 
2398 typedef struct VkDescriptorSetLayoutCreateInfo {
2399     VkStructureType                        sType;
2400     const void*                            pNext;
2401     VkDescriptorSetLayoutCreateFlags       flags;
2402     uint32_t                               bindingCount;
2403     const VkDescriptorSetLayoutBinding*    pBindings;
2404 } VkDescriptorSetLayoutCreateInfo;
2405 
2406 typedef struct VkWriteDescriptorSet {
2407     VkStructureType                  sType;
2408     const void*                      pNext;
2409     VkDescriptorSet                  dstSet;
2410     uint32_t                         dstBinding;
2411     uint32_t                         dstArrayElement;
2412     uint32_t                         descriptorCount;
2413     VkDescriptorType                 descriptorType;
2414     const VkDescriptorImageInfo*     pImageInfo;
2415     const VkDescriptorBufferInfo*    pBufferInfo;
2416     const VkBufferView*              pTexelBufferView;
2417 } VkWriteDescriptorSet;
2418 
2419 typedef struct VkAttachmentDescription {
2420     VkAttachmentDescriptionFlags    flags;
2421     VkFormat                        format;
2422     VkSampleCountFlagBits           samples;
2423     VkAttachmentLoadOp              loadOp;
2424     VkAttachmentStoreOp             storeOp;
2425     VkAttachmentLoadOp              stencilLoadOp;
2426     VkAttachmentStoreOp             stencilStoreOp;
2427     VkImageLayout                   initialLayout;
2428     VkImageLayout                   finalLayout;
2429 } VkAttachmentDescription;
2430 
2431 typedef struct VkAttachmentReference {
2432     uint32_t         attachment;
2433     VkImageLayout    layout;
2434 } VkAttachmentReference;
2435 
2436 typedef struct VkFramebufferCreateInfo {
2437     VkStructureType             sType;
2438     const void*                 pNext;
2439     VkFramebufferCreateFlags    flags;
2440     VkRenderPass                renderPass;
2441     uint32_t                    attachmentCount;
2442     const VkImageView*          pAttachments;
2443     uint32_t                    width;
2444     uint32_t                    height;
2445     uint32_t                    layers;
2446 } VkFramebufferCreateInfo;
2447 
2448 typedef struct VkSubpassDescription {
2449     VkSubpassDescriptionFlags       flags;
2450     VkPipelineBindPoint             pipelineBindPoint;
2451     uint32_t                        inputAttachmentCount;
2452     const VkAttachmentReference*    pInputAttachments;
2453     uint32_t                        colorAttachmentCount;
2454     const VkAttachmentReference*    pColorAttachments;
2455     const VkAttachmentReference*    pResolveAttachments;
2456     const VkAttachmentReference*    pDepthStencilAttachment;
2457     uint32_t                        preserveAttachmentCount;
2458     const uint32_t*                 pPreserveAttachments;
2459 } VkSubpassDescription;
2460 
2461 typedef struct VkSubpassDependency {
2462     uint32_t                srcSubpass;
2463     uint32_t                dstSubpass;
2464     VkPipelineStageFlags    srcStageMask;
2465     VkPipelineStageFlags    dstStageMask;
2466     VkAccessFlags           srcAccessMask;
2467     VkAccessFlags           dstAccessMask;
2468     VkDependencyFlags       dependencyFlags;
2469 } VkSubpassDependency;
2470 
2471 typedef struct VkRenderPassCreateInfo {
2472     VkStructureType                   sType;
2473     const void*                       pNext;
2474     VkRenderPassCreateFlags           flags;
2475     uint32_t                          attachmentCount;
2476     const VkAttachmentDescription*    pAttachments;
2477     uint32_t                          subpassCount;
2478     const VkSubpassDescription*       pSubpasses;
2479     uint32_t                          dependencyCount;
2480     const VkSubpassDependency*        pDependencies;
2481 } VkRenderPassCreateInfo;
2482 
2483 typedef struct VkCommandPoolCreateInfo {
2484     VkStructureType             sType;
2485     const void*                 pNext;
2486     VkCommandPoolCreateFlags    flags;
2487     uint32_t                    queueFamilyIndex;
2488 } VkCommandPoolCreateInfo;
2489 
2490 typedef struct VkCommandBufferAllocateInfo {
2491     VkStructureType         sType;
2492     const void*             pNext;
2493     VkCommandPool           commandPool;
2494     VkCommandBufferLevel    level;
2495     uint32_t                commandBufferCount;
2496 } VkCommandBufferAllocateInfo;
2497 
2498 typedef struct VkCommandBufferInheritanceInfo {
2499     VkStructureType                  sType;
2500     const void*                      pNext;
2501     VkRenderPass                     renderPass;
2502     uint32_t                         subpass;
2503     VkFramebuffer                    framebuffer;
2504     VkBool32                         occlusionQueryEnable;
2505     VkQueryControlFlags              queryFlags;
2506     VkQueryPipelineStatisticFlags    pipelineStatistics;
2507 } VkCommandBufferInheritanceInfo;
2508 
2509 typedef struct VkCommandBufferBeginInfo {
2510     VkStructureType                          sType;
2511     const void*                              pNext;
2512     VkCommandBufferUsageFlags                flags;
2513     const VkCommandBufferInheritanceInfo*    pInheritanceInfo;
2514 } VkCommandBufferBeginInfo;
2515 
2516 typedef struct VkBufferCopy {
2517     VkDeviceSize    srcOffset;
2518     VkDeviceSize    dstOffset;
2519     VkDeviceSize    size;
2520 } VkBufferCopy;
2521 
2522 typedef struct VkImageSubresourceLayers {
2523     VkImageAspectFlags    aspectMask;
2524     uint32_t              mipLevel;
2525     uint32_t              baseArrayLayer;
2526     uint32_t              layerCount;
2527 } VkImageSubresourceLayers;
2528 
2529 typedef struct VkBufferImageCopy {
2530     VkDeviceSize                bufferOffset;
2531     uint32_t                    bufferRowLength;
2532     uint32_t                    bufferImageHeight;
2533     VkImageSubresourceLayers    imageSubresource;
2534     VkOffset3D                  imageOffset;
2535     VkExtent3D                  imageExtent;
2536 } VkBufferImageCopy;
2537 
2538 typedef union VkClearColorValue {
2539     float       float32[4];
2540     int32_t     int32[4];
2541     uint32_t    uint32[4];
2542 } VkClearColorValue;
2543 
2544 typedef struct VkClearDepthStencilValue {
2545     float       depth;
2546     uint32_t    stencil;
2547 } VkClearDepthStencilValue;
2548 
2549 typedef union VkClearValue {
2550     VkClearColorValue           color;
2551     VkClearDepthStencilValue    depthStencil;
2552 } VkClearValue;
2553 
2554 typedef struct VkClearAttachment {
2555     VkImageAspectFlags    aspectMask;
2556     uint32_t              colorAttachment;
2557     VkClearValue          clearValue;
2558 } VkClearAttachment;
2559 
2560 typedef struct VkClearRect {
2561     VkRect2D    rect;
2562     uint32_t    baseArrayLayer;
2563     uint32_t    layerCount;
2564 } VkClearRect;
2565 
2566 typedef struct VkImageBlit {
2567     VkImageSubresourceLayers    srcSubresource;
2568     VkOffset3D                  srcOffsets[2];
2569     VkImageSubresourceLayers    dstSubresource;
2570     VkOffset3D                  dstOffsets[2];
2571 } VkImageBlit;
2572 
2573 typedef struct VkImageCopy {
2574     VkImageSubresourceLayers    srcSubresource;
2575     VkOffset3D                  srcOffset;
2576     VkImageSubresourceLayers    dstSubresource;
2577     VkOffset3D                  dstOffset;
2578     VkExtent3D                  extent;
2579 } VkImageCopy;
2580 
2581 typedef struct VkImageResolve {
2582     VkImageSubresourceLayers    srcSubresource;
2583     VkOffset3D                  srcOffset;
2584     VkImageSubresourceLayers    dstSubresource;
2585     VkOffset3D                  dstOffset;
2586     VkExtent3D                  extent;
2587 } VkImageResolve;
2588 
2589 typedef struct VkRenderPassBeginInfo {
2590     VkStructureType        sType;
2591     const void*            pNext;
2592     VkRenderPass           renderPass;
2593     VkFramebuffer          framebuffer;
2594     VkRect2D               renderArea;
2595     uint32_t               clearValueCount;
2596     const VkClearValue*    pClearValues;
2597 } VkRenderPassBeginInfo;
2598 
2599 typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
2600 typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator);
2601 typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
2602 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
2603 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
2604 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
2605 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
2606 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
2607 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
2608 typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName);
2609 typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);
2610 typedef VkResult (VKAPI_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
2611 typedef void (VKAPI_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks* pAllocator);
2612 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
2613 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
2614 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties);
2615 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties);
2616 typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
2617 typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
2618 typedef VkResult (VKAPI_PTR *PFN_vkQueueWaitIdle)(VkQueue queue);
2619 typedef VkResult (VKAPI_PTR *PFN_vkDeviceWaitIdle)(VkDevice device);
2620 typedef VkResult (VKAPI_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
2621 typedef VkResult (VKAPI_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
2622 typedef void (VKAPI_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory);
2623 typedef VkResult (VKAPI_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
2624 typedef VkResult (VKAPI_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
2625 typedef void (VKAPI_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
2626 typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
2627 typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
2628 typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
2629 typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
2630 typedef VkResult (VKAPI_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
2631 typedef void (VKAPI_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
2632 typedef VkResult (VKAPI_PTR *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
2633 typedef VkResult (VKAPI_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);
2634 typedef VkResult (VKAPI_PTR *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
2635 typedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
2636 typedef void (VKAPI_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
2637 typedef VkResult (VKAPI_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
2638 typedef void (VKAPI_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
2639 typedef VkResult (VKAPI_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);
2640 typedef VkResult (VKAPI_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event);
2641 typedef VkResult (VKAPI_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event);
2642 typedef VkResult (VKAPI_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
2643 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);
2644 typedef VkResult (VKAPI_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
2645 typedef void (VKAPI_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
2646 typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
2647 typedef void (VKAPI_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
2648 typedef VkResult (VKAPI_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
2649 typedef void (VKAPI_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
2650 typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
2651 typedef VkResult (VKAPI_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
2652 typedef void (VKAPI_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
2653 typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
2654 typedef void (VKAPI_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
2655 typedef VkResult (VKAPI_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
2656 typedef VkResult (VKAPI_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
2657 typedef void (VKAPI_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
2658 typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
2659 typedef void (VKAPI_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
2660 typedef VkResult (VKAPI_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
2661 typedef void (VKAPI_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
2662 typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
2663 typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
2664 typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
2665 typedef VkResult (VKAPI_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
2666 typedef VkResult (VKAPI_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
2667 typedef VkResult (VKAPI_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
2668 typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
2669 typedef VkResult (VKAPI_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
2670 typedef void (VKAPI_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
2671 typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
2672 typedef void (VKAPI_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
2673 typedef void (VKAPI_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
2674 typedef VkResult (VKAPI_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
2675 typedef VkResult (VKAPI_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
2676 typedef VkResult (VKAPI_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
2677 typedef void (VKAPI_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
2678 typedef VkResult (VKAPI_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
2679 typedef VkResult (VKAPI_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer);
2680 typedef VkResult (VKAPI_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
2681 typedef void (VKAPI_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
2682 typedef void (VKAPI_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports);
2683 typedef void (VKAPI_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors);
2684 typedef void (VKAPI_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth);
2685 typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
2686 typedef void (VKAPI_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]);
2687 typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
2688 typedef void (VKAPI_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask);
2689 typedef void (VKAPI_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask);
2690 typedef void (VKAPI_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference);
2691 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);
2692 typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
2693 typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
2694 typedef void (VKAPI_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
2695 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
2696 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
2697 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
2698 typedef void (VKAPI_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
2699 typedef void (VKAPI_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
2700 typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
2701 typedef void (VKAPI_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
2702 typedef void (VKAPI_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
2703 typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
2704 typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
2705 typedef void (VKAPI_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);
2706 typedef void (VKAPI_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data);
2707 typedef void (VKAPI_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
2708 typedef void (VKAPI_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
2709 typedef void (VKAPI_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
2710 typedef void (VKAPI_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
2711 typedef void (VKAPI_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
2712 typedef void (VKAPI_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
2713 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);
2714 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);
2715 typedef void (VKAPI_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags);
2716 typedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query);
2717 typedef void (VKAPI_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);
2718 typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query);
2719 typedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
2720 typedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues);
2721 typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
2722 typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents);
2723 typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer);
2724 typedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
2725 
2726 #ifndef VK_NO_PROTOTYPES
2727 VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
2728     const VkInstanceCreateInfo*                 pCreateInfo,
2729     const VkAllocationCallbacks*                pAllocator,
2730     VkInstance*                                 pInstance);
2731 
2732 VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
2733     VkInstance                                  instance,
2734     const VkAllocationCallbacks*                pAllocator);
2735 
2736 VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices(
2737     VkInstance                                  instance,
2738     uint32_t*                                   pPhysicalDeviceCount,
2739     VkPhysicalDevice*                           pPhysicalDevices);
2740 
2741 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures(
2742     VkPhysicalDevice                            physicalDevice,
2743     VkPhysicalDeviceFeatures*                   pFeatures);
2744 
2745 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(
2746     VkPhysicalDevice                            physicalDevice,
2747     VkFormat                                    format,
2748     VkFormatProperties*                         pFormatProperties);
2749 
2750 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties(
2751     VkPhysicalDevice                            physicalDevice,
2752     VkFormat                                    format,
2753     VkImageType                                 type,
2754     VkImageTiling                               tiling,
2755     VkImageUsageFlags                           usage,
2756     VkImageCreateFlags                          flags,
2757     VkImageFormatProperties*                    pImageFormatProperties);
2758 
2759 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties(
2760     VkPhysicalDevice                            physicalDevice,
2761     VkPhysicalDeviceProperties*                 pProperties);
2762 
2763 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties(
2764     VkPhysicalDevice                            physicalDevice,
2765     uint32_t*                                   pQueueFamilyPropertyCount,
2766     VkQueueFamilyProperties*                    pQueueFamilyProperties);
2767 
2768 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(
2769     VkPhysicalDevice                            physicalDevice,
2770     VkPhysicalDeviceMemoryProperties*           pMemoryProperties);
2771 
2772 VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(
2773     VkInstance                                  instance,
2774     const char*                                 pName);
2775 
2776 VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(
2777     VkDevice                                    device,
2778     const char*                                 pName);
2779 
2780 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(
2781     VkPhysicalDevice                            physicalDevice,
2782     const VkDeviceCreateInfo*                   pCreateInfo,
2783     const VkAllocationCallbacks*                pAllocator,
2784     VkDevice*                                   pDevice);
2785 
2786 VKAPI_ATTR void VKAPI_CALL vkDestroyDevice(
2787     VkDevice                                    device,
2788     const VkAllocationCallbacks*                pAllocator);
2789 
2790 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties(
2791     const char*                                 pLayerName,
2792     uint32_t*                                   pPropertyCount,
2793     VkExtensionProperties*                      pProperties);
2794 
2795 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties(
2796     VkPhysicalDevice                            physicalDevice,
2797     const char*                                 pLayerName,
2798     uint32_t*                                   pPropertyCount,
2799     VkExtensionProperties*                      pProperties);
2800 
2801 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties(
2802     uint32_t*                                   pPropertyCount,
2803     VkLayerProperties*                          pProperties);
2804 
2805 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties(
2806     VkPhysicalDevice                            physicalDevice,
2807     uint32_t*                                   pPropertyCount,
2808     VkLayerProperties*                          pProperties);
2809 
2810 VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue(
2811     VkDevice                                    device,
2812     uint32_t                                    queueFamilyIndex,
2813     uint32_t                                    queueIndex,
2814     VkQueue*                                    pQueue);
2815 
2816 VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(
2817     VkQueue                                     queue,
2818     uint32_t                                    submitCount,
2819     const VkSubmitInfo*                         pSubmits,
2820     VkFence                                     fence);
2821 
2822 VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(
2823     VkQueue                                     queue);
2824 
2825 VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(
2826     VkDevice                                    device);
2827 
2828 VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(
2829     VkDevice                                    device,
2830     const VkMemoryAllocateInfo*                 pAllocateInfo,
2831     const VkAllocationCallbacks*                pAllocator,
2832     VkDeviceMemory*                             pMemory);
2833 
2834 VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(
2835     VkDevice                                    device,
2836     VkDeviceMemory                              memory,
2837     VkDeviceSize                                offset,
2838     VkDeviceSize                                size,
2839     VkMemoryMapFlags                            flags,
2840     void**                                      ppData);
2841 
2842 VKAPI_ATTR void VKAPI_CALL vkUnmapMemory(
2843     VkDevice                                    device,
2844     VkDeviceMemory                              memory);
2845 
2846 VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges(
2847     VkDevice                                    device,
2848     uint32_t                                    memoryRangeCount,
2849     const VkMappedMemoryRange*                  pMemoryRanges);
2850 
2851 VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(
2852     VkDevice                                    device,
2853     uint32_t                                    memoryRangeCount,
2854     const VkMappedMemoryRange*                  pMemoryRanges);
2855 
2856 VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment(
2857     VkDevice                                    device,
2858     VkDeviceMemory                              memory,
2859     VkDeviceSize*                               pCommittedMemoryInBytes);
2860 
2861 VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(
2862     VkDevice                                    device,
2863     VkBuffer                                    buffer,
2864     VkDeviceMemory                              memory,
2865     VkDeviceSize                                memoryOffset);
2866 
2867 VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(
2868     VkDevice                                    device,
2869     VkImage                                     image,
2870     VkDeviceMemory                              memory,
2871     VkDeviceSize                                memoryOffset);
2872 
2873 VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements(
2874     VkDevice                                    device,
2875     VkBuffer                                    buffer,
2876     VkMemoryRequirements*                       pMemoryRequirements);
2877 
2878 VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements(
2879     VkDevice                                    device,
2880     VkImage                                     image,
2881     VkMemoryRequirements*                       pMemoryRequirements);
2882 
2883 VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(
2884     VkDevice                                    device,
2885     const VkFenceCreateInfo*                    pCreateInfo,
2886     const VkAllocationCallbacks*                pAllocator,
2887     VkFence*                                    pFence);
2888 
2889 VKAPI_ATTR void VKAPI_CALL vkDestroyFence(
2890     VkDevice                                    device,
2891     VkFence                                     fence,
2892     const VkAllocationCallbacks*                pAllocator);
2893 
2894 VKAPI_ATTR VkResult VKAPI_CALL vkResetFences(
2895     VkDevice                                    device,
2896     uint32_t                                    fenceCount,
2897     const VkFence*                              pFences);
2898 
2899 VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(
2900     VkDevice                                    device,
2901     VkFence                                     fence);
2902 
2903 VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(
2904     VkDevice                                    device,
2905     uint32_t                                    fenceCount,
2906     const VkFence*                              pFences,
2907     VkBool32                                    waitAll,
2908     uint64_t                                    timeout);
2909 
2910 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore(
2911     VkDevice                                    device,
2912     const VkSemaphoreCreateInfo*                pCreateInfo,
2913     const VkAllocationCallbacks*                pAllocator,
2914     VkSemaphore*                                pSemaphore);
2915 
2916 VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore(
2917     VkDevice                                    device,
2918     VkSemaphore                                 semaphore,
2919     const VkAllocationCallbacks*                pAllocator);
2920 
2921 VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(
2922     VkDevice                                    device,
2923     const VkEventCreateInfo*                    pCreateInfo,
2924     const VkAllocationCallbacks*                pAllocator,
2925     VkEvent*                                    pEvent);
2926 
2927 VKAPI_ATTR void VKAPI_CALL vkDestroyEvent(
2928     VkDevice                                    device,
2929     VkEvent                                     event,
2930     const VkAllocationCallbacks*                pAllocator);
2931 
2932 VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus(
2933     VkDevice                                    device,
2934     VkEvent                                     event);
2935 
2936 VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent(
2937     VkDevice                                    device,
2938     VkEvent                                     event);
2939 
2940 VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent(
2941     VkDevice                                    device,
2942     VkEvent                                     event);
2943 
2944 VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool(
2945     VkDevice                                    device,
2946     const VkQueryPoolCreateInfo*                pCreateInfo,
2947     const VkAllocationCallbacks*                pAllocator,
2948     VkQueryPool*                                pQueryPool);
2949 
2950 VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults(
2951     VkDevice                                    device,
2952     VkQueryPool                                 queryPool,
2953     uint32_t                                    firstQuery,
2954     uint32_t                                    queryCount,
2955     size_t                                      dataSize,
2956     void*                                       pData,
2957     VkDeviceSize                                stride,
2958     VkQueryResultFlags                          flags);
2959 
2960 VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(
2961     VkDevice                                    device,
2962     const VkBufferCreateInfo*                   pCreateInfo,
2963     const VkAllocationCallbacks*                pAllocator,
2964     VkBuffer*                                   pBuffer);
2965 
2966 VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(
2967     VkDevice                                    device,
2968     VkBuffer                                    buffer,
2969     const VkAllocationCallbacks*                pAllocator);
2970 
2971 VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(
2972     VkDevice                                    device,
2973     const VkBufferViewCreateInfo*               pCreateInfo,
2974     const VkAllocationCallbacks*                pAllocator,
2975     VkBufferView*                               pView);
2976 
2977 VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView(
2978     VkDevice                                    device,
2979     VkBufferView                                bufferView,
2980     const VkAllocationCallbacks*                pAllocator);
2981 
2982 VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(
2983     VkDevice                                    device,
2984     const VkImageCreateInfo*                    pCreateInfo,
2985     const VkAllocationCallbacks*                pAllocator,
2986     VkImage*                                    pImage);
2987 
2988 VKAPI_ATTR void VKAPI_CALL vkDestroyImage(
2989     VkDevice                                    device,
2990     VkImage                                     image,
2991     const VkAllocationCallbacks*                pAllocator);
2992 
2993 VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout(
2994     VkDevice                                    device,
2995     VkImage                                     image,
2996     const VkImageSubresource*                   pSubresource,
2997     VkSubresourceLayout*                        pLayout);
2998 
2999 VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView(
3000     VkDevice                                    device,
3001     const VkImageViewCreateInfo*                pCreateInfo,
3002     const VkAllocationCallbacks*                pAllocator,
3003     VkImageView*                                pView);
3004 
3005 VKAPI_ATTR void VKAPI_CALL vkDestroyImageView(
3006     VkDevice                                    device,
3007     VkImageView                                 imageView,
3008     const VkAllocationCallbacks*                pAllocator);
3009 
3010 VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(
3011     VkDevice                                    device,
3012     const VkPipelineCacheCreateInfo*            pCreateInfo,
3013     const VkAllocationCallbacks*                pAllocator,
3014     VkPipelineCache*                            pPipelineCache);
3015 
3016 VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache(
3017     VkDevice                                    device,
3018     VkPipelineCache                             pipelineCache,
3019     const VkAllocationCallbacks*                pAllocator);
3020 
3021 VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(
3022     VkDevice                                    device,
3023     VkPipelineCache                             pipelineCache,
3024     uint32_t                                    createInfoCount,
3025     const VkGraphicsPipelineCreateInfo*         pCreateInfos,
3026     const VkAllocationCallbacks*                pAllocator,
3027     VkPipeline*                                 pPipelines);
3028 
3029 VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines(
3030     VkDevice                                    device,
3031     VkPipelineCache                             pipelineCache,
3032     uint32_t                                    createInfoCount,
3033     const VkComputePipelineCreateInfo*          pCreateInfos,
3034     const VkAllocationCallbacks*                pAllocator,
3035     VkPipeline*                                 pPipelines);
3036 
3037 VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline(
3038     VkDevice                                    device,
3039     VkPipeline                                  pipeline,
3040     const VkAllocationCallbacks*                pAllocator);
3041 
3042 VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout(
3043     VkDevice                                    device,
3044     const VkPipelineLayoutCreateInfo*           pCreateInfo,
3045     const VkAllocationCallbacks*                pAllocator,
3046     VkPipelineLayout*                           pPipelineLayout);
3047 
3048 VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout(
3049     VkDevice                                    device,
3050     VkPipelineLayout                            pipelineLayout,
3051     const VkAllocationCallbacks*                pAllocator);
3052 
3053 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler(
3054     VkDevice                                    device,
3055     const VkSamplerCreateInfo*                  pCreateInfo,
3056     const VkAllocationCallbacks*                pAllocator,
3057     VkSampler*                                  pSampler);
3058 
3059 VKAPI_ATTR void VKAPI_CALL vkDestroySampler(
3060     VkDevice                                    device,
3061     VkSampler                                   sampler,
3062     const VkAllocationCallbacks*                pAllocator);
3063 
3064 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout(
3065     VkDevice                                    device,
3066     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
3067     const VkAllocationCallbacks*                pAllocator,
3068     VkDescriptorSetLayout*                      pSetLayout);
3069 
3070 VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout(
3071     VkDevice                                    device,
3072     VkDescriptorSetLayout                       descriptorSetLayout,
3073     const VkAllocationCallbacks*                pAllocator);
3074 
3075 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool(
3076     VkDevice                                    device,
3077     const VkDescriptorPoolCreateInfo*           pCreateInfo,
3078     const VkAllocationCallbacks*                pAllocator,
3079     VkDescriptorPool*                           pDescriptorPool);
3080 
3081 VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool(
3082     VkDevice                                    device,
3083     VkDescriptorPool                            descriptorPool,
3084     VkDescriptorPoolResetFlags                  flags);
3085 
3086 VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(
3087     VkDevice                                    device,
3088     const VkDescriptorSetAllocateInfo*          pAllocateInfo,
3089     VkDescriptorSet*                            pDescriptorSets);
3090 
3091 VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets(
3092     VkDevice                                    device,
3093     VkDescriptorPool                            descriptorPool,
3094     uint32_t                                    descriptorSetCount,
3095     const VkDescriptorSet*                      pDescriptorSets);
3096 
3097 VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets(
3098     VkDevice                                    device,
3099     uint32_t                                    descriptorWriteCount,
3100     const VkWriteDescriptorSet*                 pDescriptorWrites,
3101     uint32_t                                    descriptorCopyCount,
3102     const VkCopyDescriptorSet*                  pDescriptorCopies);
3103 
3104 VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(
3105     VkDevice                                    device,
3106     const VkFramebufferCreateInfo*              pCreateInfo,
3107     const VkAllocationCallbacks*                pAllocator,
3108     VkFramebuffer*                              pFramebuffer);
3109 
3110 VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer(
3111     VkDevice                                    device,
3112     VkFramebuffer                               framebuffer,
3113     const VkAllocationCallbacks*                pAllocator);
3114 
3115 VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(
3116     VkDevice                                    device,
3117     const VkRenderPassCreateInfo*               pCreateInfo,
3118     const VkAllocationCallbacks*                pAllocator,
3119     VkRenderPass*                               pRenderPass);
3120 
3121 VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass(
3122     VkDevice                                    device,
3123     VkRenderPass                                renderPass,
3124     const VkAllocationCallbacks*                pAllocator);
3125 
3126 VKAPI_ATTR void VKAPI_CALL vkGetRenderAreaGranularity(
3127     VkDevice                                    device,
3128     VkRenderPass                                renderPass,
3129     VkExtent2D*                                 pGranularity);
3130 
3131 VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool(
3132     VkDevice                                    device,
3133     const VkCommandPoolCreateInfo*              pCreateInfo,
3134     const VkAllocationCallbacks*                pAllocator,
3135     VkCommandPool*                              pCommandPool);
3136 
3137 VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool(
3138     VkDevice                                    device,
3139     VkCommandPool                               commandPool,
3140     VkCommandPoolResetFlags                     flags);
3141 
3142 VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(
3143     VkDevice                                    device,
3144     const VkCommandBufferAllocateInfo*          pAllocateInfo,
3145     VkCommandBuffer*                            pCommandBuffers);
3146 
3147 VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers(
3148     VkDevice                                    device,
3149     VkCommandPool                               commandPool,
3150     uint32_t                                    commandBufferCount,
3151     const VkCommandBuffer*                      pCommandBuffers);
3152 
3153 VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(
3154     VkCommandBuffer                             commandBuffer,
3155     const VkCommandBufferBeginInfo*             pBeginInfo);
3156 
3157 VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer(
3158     VkCommandBuffer                             commandBuffer);
3159 
3160 VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer(
3161     VkCommandBuffer                             commandBuffer,
3162     VkCommandBufferResetFlags                   flags);
3163 
3164 VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(
3165     VkCommandBuffer                             commandBuffer,
3166     VkPipelineBindPoint                         pipelineBindPoint,
3167     VkPipeline                                  pipeline);
3168 
3169 VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(
3170     VkCommandBuffer                             commandBuffer,
3171     uint32_t                                    firstViewport,
3172     uint32_t                                    viewportCount,
3173     const VkViewport*                           pViewports);
3174 
3175 VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor(
3176     VkCommandBuffer                             commandBuffer,
3177     uint32_t                                    firstScissor,
3178     uint32_t                                    scissorCount,
3179     const VkRect2D*                             pScissors);
3180 
3181 VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth(
3182     VkCommandBuffer                             commandBuffer,
3183     float                                       lineWidth);
3184 
3185 VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias(
3186     VkCommandBuffer                             commandBuffer,
3187     float                                       depthBiasConstantFactor,
3188     float                                       depthBiasClamp,
3189     float                                       depthBiasSlopeFactor);
3190 
3191 VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants(
3192     VkCommandBuffer                             commandBuffer,
3193     const float                                 blendConstants[4]);
3194 
3195 VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds(
3196     VkCommandBuffer                             commandBuffer,
3197     float                                       minDepthBounds,
3198     float                                       maxDepthBounds);
3199 
3200 VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask(
3201     VkCommandBuffer                             commandBuffer,
3202     VkStencilFaceFlags                          faceMask,
3203     uint32_t                                    compareMask);
3204 
3205 VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask(
3206     VkCommandBuffer                             commandBuffer,
3207     VkStencilFaceFlags                          faceMask,
3208     uint32_t                                    writeMask);
3209 
3210 VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference(
3211     VkCommandBuffer                             commandBuffer,
3212     VkStencilFaceFlags                          faceMask,
3213     uint32_t                                    reference);
3214 
3215 VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(
3216     VkCommandBuffer                             commandBuffer,
3217     VkPipelineBindPoint                         pipelineBindPoint,
3218     VkPipelineLayout                            layout,
3219     uint32_t                                    firstSet,
3220     uint32_t                                    descriptorSetCount,
3221     const VkDescriptorSet*                      pDescriptorSets,
3222     uint32_t                                    dynamicOffsetCount,
3223     const uint32_t*                             pDynamicOffsets);
3224 
3225 VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(
3226     VkCommandBuffer                             commandBuffer,
3227     VkBuffer                                    buffer,
3228     VkDeviceSize                                offset,
3229     VkIndexType                                 indexType);
3230 
3231 VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(
3232     VkCommandBuffer                             commandBuffer,
3233     uint32_t                                    firstBinding,
3234     uint32_t                                    bindingCount,
3235     const VkBuffer*                             pBuffers,
3236     const VkDeviceSize*                         pOffsets);
3237 
3238 VKAPI_ATTR void VKAPI_CALL vkCmdDraw(
3239     VkCommandBuffer                             commandBuffer,
3240     uint32_t                                    vertexCount,
3241     uint32_t                                    instanceCount,
3242     uint32_t                                    firstVertex,
3243     uint32_t                                    firstInstance);
3244 
3245 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed(
3246     VkCommandBuffer                             commandBuffer,
3247     uint32_t                                    indexCount,
3248     uint32_t                                    instanceCount,
3249     uint32_t                                    firstIndex,
3250     int32_t                                     vertexOffset,
3251     uint32_t                                    firstInstance);
3252 
3253 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(
3254     VkCommandBuffer                             commandBuffer,
3255     VkBuffer                                    buffer,
3256     VkDeviceSize                                offset,
3257     uint32_t                                    drawCount,
3258     uint32_t                                    stride);
3259 
3260 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(
3261     VkCommandBuffer                             commandBuffer,
3262     VkBuffer                                    buffer,
3263     VkDeviceSize                                offset,
3264     uint32_t                                    drawCount,
3265     uint32_t                                    stride);
3266 
3267 VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(
3268     VkCommandBuffer                             commandBuffer,
3269     uint32_t                                    groupCountX,
3270     uint32_t                                    groupCountY,
3271     uint32_t                                    groupCountZ);
3272 
3273 VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(
3274     VkCommandBuffer                             commandBuffer,
3275     VkBuffer                                    buffer,
3276     VkDeviceSize                                offset);
3277 
3278 VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(
3279     VkCommandBuffer                             commandBuffer,
3280     VkBuffer                                    srcBuffer,
3281     VkBuffer                                    dstBuffer,
3282     uint32_t                                    regionCount,
3283     const VkBufferCopy*                         pRegions);
3284 
3285 VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(
3286     VkCommandBuffer                             commandBuffer,
3287     VkImage                                     srcImage,
3288     VkImageLayout                               srcImageLayout,
3289     VkImage                                     dstImage,
3290     VkImageLayout                               dstImageLayout,
3291     uint32_t                                    regionCount,
3292     const VkImageCopy*                          pRegions);
3293 
3294 VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(
3295     VkCommandBuffer                             commandBuffer,
3296     VkImage                                     srcImage,
3297     VkImageLayout                               srcImageLayout,
3298     VkImage                                     dstImage,
3299     VkImageLayout                               dstImageLayout,
3300     uint32_t                                    regionCount,
3301     const VkImageBlit*                          pRegions,
3302     VkFilter                                    filter);
3303 
3304 VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(
3305     VkCommandBuffer                             commandBuffer,
3306     VkBuffer                                    srcBuffer,
3307     VkImage                                     dstImage,
3308     VkImageLayout                               dstImageLayout,
3309     uint32_t                                    regionCount,
3310     const VkBufferImageCopy*                    pRegions);
3311 
3312 VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(
3313     VkCommandBuffer                             commandBuffer,
3314     VkImage                                     srcImage,
3315     VkImageLayout                               srcImageLayout,
3316     VkBuffer                                    dstBuffer,
3317     uint32_t                                    regionCount,
3318     const VkBufferImageCopy*                    pRegions);
3319 
3320 VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(
3321     VkCommandBuffer                             commandBuffer,
3322     VkBuffer                                    dstBuffer,
3323     VkDeviceSize                                dstOffset,
3324     VkDeviceSize                                dataSize,
3325     const void*                                 pData);
3326 
3327 VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(
3328     VkCommandBuffer                             commandBuffer,
3329     VkBuffer                                    dstBuffer,
3330     VkDeviceSize                                dstOffset,
3331     VkDeviceSize                                size,
3332     uint32_t                                    data);
3333 
3334 VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(
3335     VkCommandBuffer                             commandBuffer,
3336     VkImage                                     image,
3337     VkImageLayout                               imageLayout,
3338     const VkClearColorValue*                    pColor,
3339     uint32_t                                    rangeCount,
3340     const VkImageSubresourceRange*              pRanges);
3341 
3342 VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(
3343     VkCommandBuffer                             commandBuffer,
3344     VkImage                                     image,
3345     VkImageLayout                               imageLayout,
3346     const VkClearDepthStencilValue*             pDepthStencil,
3347     uint32_t                                    rangeCount,
3348     const VkImageSubresourceRange*              pRanges);
3349 
3350 VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments(
3351     VkCommandBuffer                             commandBuffer,
3352     uint32_t                                    attachmentCount,
3353     const VkClearAttachment*                    pAttachments,
3354     uint32_t                                    rectCount,
3355     const VkClearRect*                          pRects);
3356 
3357 VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(
3358     VkCommandBuffer                             commandBuffer,
3359     VkImage                                     srcImage,
3360     VkImageLayout                               srcImageLayout,
3361     VkImage                                     dstImage,
3362     VkImageLayout                               dstImageLayout,
3363     uint32_t                                    regionCount,
3364     const VkImageResolve*                       pRegions);
3365 
3366 VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(
3367     VkCommandBuffer                             commandBuffer,
3368     VkEvent                                     event,
3369     VkPipelineStageFlags                        stageMask);
3370 
3371 VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(
3372     VkCommandBuffer                             commandBuffer,
3373     VkEvent                                     event,
3374     VkPipelineStageFlags                        stageMask);
3375 
3376 VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents(
3377     VkCommandBuffer                             commandBuffer,
3378     uint32_t                                    eventCount,
3379     const VkEvent*                              pEvents,
3380     VkPipelineStageFlags                        srcStageMask,
3381     VkPipelineStageFlags                        dstStageMask,
3382     uint32_t                                    memoryBarrierCount,
3383     const VkMemoryBarrier*                      pMemoryBarriers,
3384     uint32_t                                    bufferMemoryBarrierCount,
3385     const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
3386     uint32_t                                    imageMemoryBarrierCount,
3387     const VkImageMemoryBarrier*                 pImageMemoryBarriers);
3388 
3389 VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier(
3390     VkCommandBuffer                             commandBuffer,
3391     VkPipelineStageFlags                        srcStageMask,
3392     VkPipelineStageFlags                        dstStageMask,
3393     VkDependencyFlags                           dependencyFlags,
3394     uint32_t                                    memoryBarrierCount,
3395     const VkMemoryBarrier*                      pMemoryBarriers,
3396     uint32_t                                    bufferMemoryBarrierCount,
3397     const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
3398     uint32_t                                    imageMemoryBarrierCount,
3399     const VkImageMemoryBarrier*                 pImageMemoryBarriers);
3400 
3401 VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(
3402     VkCommandBuffer                             commandBuffer,
3403     VkQueryPool                                 queryPool,
3404     uint32_t                                    query,
3405     VkQueryControlFlags                         flags);
3406 
3407 VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(
3408     VkCommandBuffer                             commandBuffer,
3409     VkQueryPool                                 queryPool,
3410     uint32_t                                    query);
3411 
3412 VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(
3413     VkCommandBuffer                             commandBuffer,
3414     VkQueryPool                                 queryPool,
3415     uint32_t                                    firstQuery,
3416     uint32_t                                    queryCount);
3417 
3418 VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(
3419     VkCommandBuffer                             commandBuffer,
3420     VkPipelineStageFlagBits                     pipelineStage,
3421     VkQueryPool                                 queryPool,
3422     uint32_t                                    query);
3423 
3424 VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(
3425     VkCommandBuffer                             commandBuffer,
3426     VkQueryPool                                 queryPool,
3427     uint32_t                                    firstQuery,
3428     uint32_t                                    queryCount,
3429     VkBuffer                                    dstBuffer,
3430     VkDeviceSize                                dstOffset,
3431     VkDeviceSize                                stride,
3432     VkQueryResultFlags                          flags);
3433 
3434 VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(
3435     VkCommandBuffer                             commandBuffer,
3436     VkPipelineLayout                            layout,
3437     VkShaderStageFlags                          stageFlags,
3438     uint32_t                                    offset,
3439     uint32_t                                    size,
3440     const void*                                 pValues);
3441 
3442 VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(
3443     VkCommandBuffer                             commandBuffer,
3444     const VkRenderPassBeginInfo*                pRenderPassBegin,
3445     VkSubpassContents                           contents);
3446 
3447 VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass(
3448     VkCommandBuffer                             commandBuffer,
3449     VkSubpassContents                           contents);
3450 
3451 VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass(
3452     VkCommandBuffer                             commandBuffer);
3453 
3454 VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(
3455     VkCommandBuffer                             commandBuffer,
3456     uint32_t                                    commandBufferCount,
3457     const VkCommandBuffer*                      pCommandBuffers);
3458 #endif
3459 
3460 
3461 #define VK_VERSION_1_1 1
3462 // Vulkan 1.1 version number
3463 #define VK_API_VERSION_1_1 VK_MAKE_API_VERSION(0, 1, 1, 0)// Patch version should always be set to 0
3464 
3465 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion)
3466 #define VK_MAX_DEVICE_GROUP_SIZE          32U
3467 #define VK_LUID_SIZE                      8U
3468 #define VK_QUEUE_FAMILY_EXTERNAL          (~1U)
3469 
3470 typedef enum VkPointClippingBehavior {
3471     VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0,
3472     VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1,
3473     VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF
3474 } VkPointClippingBehavior;
3475 
3476 typedef enum VkTessellationDomainOrigin {
3477     VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0,
3478     VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1,
3479     VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 0x7FFFFFFF
3480 } VkTessellationDomainOrigin;
3481 
3482 typedef enum VkSamplerYcbcrModelConversion {
3483     VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0,
3484     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1,
3485     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2,
3486     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3,
3487     VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4,
3488     VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 0x7FFFFFFF
3489 } VkSamplerYcbcrModelConversion;
3490 
3491 typedef enum VkSamplerYcbcrRange {
3492     VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0,
3493     VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1,
3494     VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 0x7FFFFFFF
3495 } VkSamplerYcbcrRange;
3496 
3497 typedef enum VkChromaLocation {
3498     VK_CHROMA_LOCATION_COSITED_EVEN = 0,
3499     VK_CHROMA_LOCATION_MIDPOINT = 1,
3500     VK_CHROMA_LOCATION_MAX_ENUM = 0x7FFFFFFF
3501 } VkChromaLocation;
3502 
3503 typedef enum VkSubgroupFeatureFlagBits {
3504     VK_SUBGROUP_FEATURE_BASIC_BIT = 0x00000001,
3505     VK_SUBGROUP_FEATURE_VOTE_BIT = 0x00000002,
3506     VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 0x00000004,
3507     VK_SUBGROUP_FEATURE_BALLOT_BIT = 0x00000008,
3508     VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 0x00000010,
3509     VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 0x00000020,
3510     VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 0x00000040,
3511     VK_SUBGROUP_FEATURE_QUAD_BIT = 0x00000080,
3512     VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
3513 } VkSubgroupFeatureFlagBits;
3514 typedef VkFlags VkSubgroupFeatureFlags;
3515 
3516 typedef enum VkPeerMemoryFeatureFlagBits {
3517     VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 0x00000001,
3518     VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 0x00000002,
3519     VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 0x00000004,
3520     VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 0x00000008,
3521     VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
3522 } VkPeerMemoryFeatureFlagBits;
3523 typedef VkFlags VkPeerMemoryFeatureFlags;
3524 
3525 typedef enum VkMemoryAllocateFlagBits {
3526     VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001,
3527     VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 0x00000002,
3528     VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000004,
3529     VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
3530 } VkMemoryAllocateFlagBits;
3531 typedef VkFlags VkMemoryAllocateFlags;
3532 
3533 typedef enum VkExternalMemoryHandleTypeFlagBits {
3534     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
3535     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
3536     VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
3537     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 0x00000008,
3538     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 0x00000010,
3539     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 0x00000020,
3540     VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 0x00000040,
3541     VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0x00000200,
3542     VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080,
3543     VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100,
3544     VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
3545 } VkExternalMemoryHandleTypeFlagBits;
3546 typedef VkFlags VkExternalMemoryHandleTypeFlags;
3547 
3548 typedef enum VkExternalMemoryFeatureFlagBits {
3549     VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 0x00000001,
3550     VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 0x00000002,
3551     VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 0x00000004,
3552     VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
3553 } VkExternalMemoryFeatureFlagBits;
3554 typedef VkFlags VkExternalMemoryFeatureFlags;
3555 
3556 typedef enum VkExternalFenceHandleTypeFlagBits {
3557     VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
3558     VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
3559     VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
3560     VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000008,
3561     VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
3562 } VkExternalFenceHandleTypeFlagBits;
3563 typedef VkFlags VkExternalFenceHandleTypeFlags;
3564 
3565 typedef enum VkExternalFenceFeatureFlagBits {
3566     VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 0x00000001,
3567     VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 0x00000002,
3568     VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
3569 } VkExternalFenceFeatureFlagBits;
3570 typedef VkFlags VkExternalFenceFeatureFlags;
3571 
3572 typedef enum VkFenceImportFlagBits {
3573     VK_FENCE_IMPORT_TEMPORARY_BIT = 0x00000001,
3574     VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
3575 } VkFenceImportFlagBits;
3576 typedef VkFlags VkFenceImportFlags;
3577 
3578 typedef enum VkSemaphoreImportFlagBits {
3579     VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 0x00000001,
3580     VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
3581 } VkSemaphoreImportFlagBits;
3582 typedef VkFlags VkSemaphoreImportFlags;
3583 
3584 typedef enum VkExternalSemaphoreHandleTypeFlagBits {
3585     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
3586     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
3587     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
3588     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 0x00000008,
3589     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000010,
3590     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
3591     VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
3592 } VkExternalSemaphoreHandleTypeFlagBits;
3593 typedef VkFlags VkExternalSemaphoreHandleTypeFlags;
3594 
3595 typedef enum VkExternalSemaphoreFeatureFlagBits {
3596     VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 0x00000001,
3597     VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 0x00000002,
3598     VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
3599 } VkExternalSemaphoreFeatureFlagBits;
3600 typedef VkFlags VkExternalSemaphoreFeatureFlags;
3601 typedef struct VkPhysicalDeviceSubgroupProperties {
3602     VkStructureType           sType;
3603     void*                     pNext;
3604     uint32_t                  subgroupSize;
3605     VkShaderStageFlags        supportedStages;
3606     VkSubgroupFeatureFlags    supportedOperations;
3607     VkBool32                  quadOperationsInAllStages;
3608 } VkPhysicalDeviceSubgroupProperties;
3609 
3610 typedef struct VkBindBufferMemoryInfo {
3611     VkStructureType    sType;
3612     const void*        pNext;
3613     VkBuffer           buffer;
3614     VkDeviceMemory     memory;
3615     VkDeviceSize       memoryOffset;
3616 } VkBindBufferMemoryInfo;
3617 
3618 typedef struct VkBindImageMemoryInfo {
3619     VkStructureType    sType;
3620     const void*        pNext;
3621     VkImage            image;
3622     VkDeviceMemory     memory;
3623     VkDeviceSize       memoryOffset;
3624 } VkBindImageMemoryInfo;
3625 
3626 typedef struct VkPhysicalDevice16BitStorageFeatures {
3627     VkStructureType    sType;
3628     void*              pNext;
3629     VkBool32           storageBuffer16BitAccess;
3630     VkBool32           uniformAndStorageBuffer16BitAccess;
3631     VkBool32           storagePushConstant16;
3632     VkBool32           storageInputOutput16;
3633 } VkPhysicalDevice16BitStorageFeatures;
3634 
3635 typedef struct VkMemoryDedicatedRequirements {
3636     VkStructureType    sType;
3637     void*              pNext;
3638     VkBool32           prefersDedicatedAllocation;
3639     VkBool32           requiresDedicatedAllocation;
3640 } VkMemoryDedicatedRequirements;
3641 
3642 typedef struct VkMemoryDedicatedAllocateInfo {
3643     VkStructureType    sType;
3644     const void*        pNext;
3645     VkImage            image;
3646     VkBuffer           buffer;
3647 } VkMemoryDedicatedAllocateInfo;
3648 
3649 typedef struct VkMemoryAllocateFlagsInfo {
3650     VkStructureType          sType;
3651     const void*              pNext;
3652     VkMemoryAllocateFlags    flags;
3653     uint32_t                 deviceMask;
3654 } VkMemoryAllocateFlagsInfo;
3655 
3656 typedef struct VkDeviceGroupRenderPassBeginInfo {
3657     VkStructureType    sType;
3658     const void*        pNext;
3659     uint32_t           deviceMask;
3660     uint32_t           deviceRenderAreaCount;
3661     const VkRect2D*    pDeviceRenderAreas;
3662 } VkDeviceGroupRenderPassBeginInfo;
3663 
3664 typedef struct VkDeviceGroupCommandBufferBeginInfo {
3665     VkStructureType    sType;
3666     const void*        pNext;
3667     uint32_t           deviceMask;
3668 } VkDeviceGroupCommandBufferBeginInfo;
3669 
3670 typedef struct VkDeviceGroupSubmitInfo {
3671     VkStructureType    sType;
3672     const void*        pNext;
3673     uint32_t           waitSemaphoreCount;
3674     const uint32_t*    pWaitSemaphoreDeviceIndices;
3675     uint32_t           commandBufferCount;
3676     const uint32_t*    pCommandBufferDeviceMasks;
3677     uint32_t           signalSemaphoreCount;
3678     const uint32_t*    pSignalSemaphoreDeviceIndices;
3679 } VkDeviceGroupSubmitInfo;
3680 
3681 typedef struct VkBindBufferMemoryDeviceGroupInfo {
3682     VkStructureType    sType;
3683     const void*        pNext;
3684     uint32_t           deviceIndexCount;
3685     const uint32_t*    pDeviceIndices;
3686 } VkBindBufferMemoryDeviceGroupInfo;
3687 
3688 typedef struct VkBindImageMemoryDeviceGroupInfo {
3689     VkStructureType    sType;
3690     const void*        pNext;
3691     uint32_t           deviceIndexCount;
3692     const uint32_t*    pDeviceIndices;
3693     uint32_t           splitInstanceBindRegionCount;
3694     const VkRect2D*    pSplitInstanceBindRegions;
3695 } VkBindImageMemoryDeviceGroupInfo;
3696 
3697 typedef struct VkPhysicalDeviceGroupProperties {
3698     VkStructureType     sType;
3699     void*               pNext;
3700     uint32_t            physicalDeviceCount;
3701     VkPhysicalDevice    physicalDevices[VK_MAX_DEVICE_GROUP_SIZE];
3702     VkBool32            subsetAllocation;
3703 } VkPhysicalDeviceGroupProperties;
3704 
3705 typedef struct VkDeviceGroupDeviceCreateInfo {
3706     VkStructureType            sType;
3707     const void*                pNext;
3708     uint32_t                   physicalDeviceCount;
3709     const VkPhysicalDevice*    pPhysicalDevices;
3710 } VkDeviceGroupDeviceCreateInfo;
3711 
3712 typedef struct VkBufferMemoryRequirementsInfo2 {
3713     VkStructureType    sType;
3714     const void*        pNext;
3715     VkBuffer           buffer;
3716 } VkBufferMemoryRequirementsInfo2;
3717 
3718 typedef struct VkImageMemoryRequirementsInfo2 {
3719     VkStructureType    sType;
3720     const void*        pNext;
3721     VkImage            image;
3722 } VkImageMemoryRequirementsInfo2;
3723 
3724 typedef struct VkMemoryRequirements2 {
3725     VkStructureType         sType;
3726     void*                   pNext;
3727     VkMemoryRequirements    memoryRequirements;
3728 } VkMemoryRequirements2;
3729 
3730 typedef struct VkPhysicalDeviceFeatures2 {
3731     VkStructureType             sType;
3732     void*                       pNext;
3733     VkPhysicalDeviceFeatures    features;
3734 } VkPhysicalDeviceFeatures2;
3735 
3736 typedef struct VkPhysicalDeviceProperties2 {
3737     VkStructureType               sType;
3738     void*                         pNext;
3739     VkPhysicalDeviceProperties    properties;
3740 } VkPhysicalDeviceProperties2;
3741 
3742 typedef struct VkFormatProperties2 {
3743     VkStructureType       sType;
3744     void*                 pNext;
3745     VkFormatProperties    formatProperties;
3746 } VkFormatProperties2;
3747 
3748 typedef struct VkImageFormatProperties2 {
3749     VkStructureType            sType;
3750     void*                      pNext;
3751     VkImageFormatProperties    imageFormatProperties;
3752 } VkImageFormatProperties2;
3753 
3754 typedef struct VkPhysicalDeviceImageFormatInfo2 {
3755     VkStructureType       sType;
3756     const void*           pNext;
3757     VkFormat              format;
3758     VkImageType           type;
3759     VkImageTiling         tiling;
3760     VkImageUsageFlags     usage;
3761     VkImageCreateFlags    flags;
3762 } VkPhysicalDeviceImageFormatInfo2;
3763 
3764 typedef struct VkQueueFamilyProperties2 {
3765     VkStructureType            sType;
3766     void*                      pNext;
3767     VkQueueFamilyProperties    queueFamilyProperties;
3768 } VkQueueFamilyProperties2;
3769 
3770 typedef struct VkPhysicalDeviceMemoryProperties2 {
3771     VkStructureType                     sType;
3772     void*                               pNext;
3773     VkPhysicalDeviceMemoryProperties    memoryProperties;
3774 } VkPhysicalDeviceMemoryProperties2;
3775 
3776 typedef struct VkPhysicalDevicePointClippingProperties {
3777     VkStructureType            sType;
3778     void*                      pNext;
3779     VkPointClippingBehavior    pointClippingBehavior;
3780 } VkPhysicalDevicePointClippingProperties;
3781 
3782 typedef struct VkInputAttachmentAspectReference {
3783     uint32_t              subpass;
3784     uint32_t              inputAttachmentIndex;
3785     VkImageAspectFlags    aspectMask;
3786 } VkInputAttachmentAspectReference;
3787 
3788 typedef struct VkRenderPassInputAttachmentAspectCreateInfo {
3789     VkStructureType                            sType;
3790     const void*                                pNext;
3791     uint32_t                                   aspectReferenceCount;
3792     const VkInputAttachmentAspectReference*    pAspectReferences;
3793 } VkRenderPassInputAttachmentAspectCreateInfo;
3794 
3795 typedef struct VkImageViewUsageCreateInfo {
3796     VkStructureType      sType;
3797     const void*          pNext;
3798     VkImageUsageFlags    usage;
3799 } VkImageViewUsageCreateInfo;
3800 
3801 typedef struct VkPipelineTessellationDomainOriginStateCreateInfo {
3802     VkStructureType               sType;
3803     const void*                   pNext;
3804     VkTessellationDomainOrigin    domainOrigin;
3805 } VkPipelineTessellationDomainOriginStateCreateInfo;
3806 
3807 typedef struct VkRenderPassMultiviewCreateInfo {
3808     VkStructureType    sType;
3809     const void*        pNext;
3810     uint32_t           subpassCount;
3811     const uint32_t*    pViewMasks;
3812     uint32_t           dependencyCount;
3813     const int32_t*     pViewOffsets;
3814     uint32_t           correlationMaskCount;
3815     const uint32_t*    pCorrelationMasks;
3816 } VkRenderPassMultiviewCreateInfo;
3817 
3818 typedef struct VkPhysicalDeviceMultiviewFeatures {
3819     VkStructureType    sType;
3820     void*              pNext;
3821     VkBool32           multiview;
3822     VkBool32           multiviewGeometryShader;
3823     VkBool32           multiviewTessellationShader;
3824 } VkPhysicalDeviceMultiviewFeatures;
3825 
3826 typedef struct VkPhysicalDeviceMultiviewProperties {
3827     VkStructureType    sType;
3828     void*              pNext;
3829     uint32_t           maxMultiviewViewCount;
3830     uint32_t           maxMultiviewInstanceIndex;
3831 } VkPhysicalDeviceMultiviewProperties;
3832 
3833 typedef struct VkPhysicalDeviceVariablePointersFeatures {
3834     VkStructureType    sType;
3835     void*              pNext;
3836     VkBool32           variablePointersStorageBuffer;
3837     VkBool32           variablePointers;
3838 } VkPhysicalDeviceVariablePointersFeatures;
3839 
3840 typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeatures;
3841 
3842 typedef struct VkPhysicalDeviceProtectedMemoryFeatures {
3843     VkStructureType    sType;
3844     void*              pNext;
3845     VkBool32           protectedMemory;
3846 } VkPhysicalDeviceProtectedMemoryFeatures;
3847 
3848 typedef struct VkPhysicalDeviceProtectedMemoryProperties {
3849     VkStructureType    sType;
3850     void*              pNext;
3851     VkBool32           protectedNoFault;
3852 } VkPhysicalDeviceProtectedMemoryProperties;
3853 
3854 typedef struct VkDeviceQueueInfo2 {
3855     VkStructureType             sType;
3856     const void*                 pNext;
3857     VkDeviceQueueCreateFlags    flags;
3858     uint32_t                    queueFamilyIndex;
3859     uint32_t                    queueIndex;
3860 } VkDeviceQueueInfo2;
3861 
3862 typedef struct VkProtectedSubmitInfo {
3863     VkStructureType    sType;
3864     const void*        pNext;
3865     VkBool32           protectedSubmit;
3866 } VkProtectedSubmitInfo;
3867 
3868 typedef struct VkSamplerYcbcrConversionCreateInfo {
3869     VkStructureType                  sType;
3870     const void*                      pNext;
3871     VkFormat                         format;
3872     VkSamplerYcbcrModelConversion    ycbcrModel;
3873     VkSamplerYcbcrRange              ycbcrRange;
3874     VkComponentMapping               components;
3875     VkChromaLocation                 xChromaOffset;
3876     VkChromaLocation                 yChromaOffset;
3877     VkFilter                         chromaFilter;
3878     VkBool32                         forceExplicitReconstruction;
3879 } VkSamplerYcbcrConversionCreateInfo;
3880 
3881 typedef struct VkSamplerYcbcrConversionInfo {
3882     VkStructureType             sType;
3883     const void*                 pNext;
3884     VkSamplerYcbcrConversion    conversion;
3885 } VkSamplerYcbcrConversionInfo;
3886 
3887 typedef struct VkBindImagePlaneMemoryInfo {
3888     VkStructureType          sType;
3889     const void*              pNext;
3890     VkImageAspectFlagBits    planeAspect;
3891 } VkBindImagePlaneMemoryInfo;
3892 
3893 typedef struct VkImagePlaneMemoryRequirementsInfo {
3894     VkStructureType          sType;
3895     const void*              pNext;
3896     VkImageAspectFlagBits    planeAspect;
3897 } VkImagePlaneMemoryRequirementsInfo;
3898 
3899 typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures {
3900     VkStructureType    sType;
3901     void*              pNext;
3902     VkBool32           samplerYcbcrConversion;
3903 } VkPhysicalDeviceSamplerYcbcrConversionFeatures;
3904 
3905 typedef struct VkSamplerYcbcrConversionImageFormatProperties {
3906     VkStructureType    sType;
3907     void*              pNext;
3908     uint32_t           combinedImageSamplerDescriptorCount;
3909 } VkSamplerYcbcrConversionImageFormatProperties;
3910 
3911 typedef struct VkExternalMemoryProperties {
3912     VkExternalMemoryFeatureFlags       externalMemoryFeatures;
3913     VkExternalMemoryHandleTypeFlags    exportFromImportedHandleTypes;
3914     VkExternalMemoryHandleTypeFlags    compatibleHandleTypes;
3915 } VkExternalMemoryProperties;
3916 
3917 typedef struct VkPhysicalDeviceExternalImageFormatInfo {
3918     VkStructureType                       sType;
3919     const void*                           pNext;
3920     VkExternalMemoryHandleTypeFlagBits    handleType;
3921 } VkPhysicalDeviceExternalImageFormatInfo;
3922 
3923 typedef struct VkExternalImageFormatProperties {
3924     VkStructureType               sType;
3925     void*                         pNext;
3926     VkExternalMemoryProperties    externalMemoryProperties;
3927 } VkExternalImageFormatProperties;
3928 
3929 typedef struct VkPhysicalDeviceExternalBufferInfo {
3930     VkStructureType                       sType;
3931     const void*                           pNext;
3932     VkBufferCreateFlags                   flags;
3933     VkBufferUsageFlags                    usage;
3934     VkExternalMemoryHandleTypeFlagBits    handleType;
3935 } VkPhysicalDeviceExternalBufferInfo;
3936 
3937 typedef struct VkExternalBufferProperties {
3938     VkStructureType               sType;
3939     void*                         pNext;
3940     VkExternalMemoryProperties    externalMemoryProperties;
3941 } VkExternalBufferProperties;
3942 
3943 typedef struct VkPhysicalDeviceIDProperties {
3944     VkStructureType    sType;
3945     void*              pNext;
3946     uint8_t            deviceUUID[VK_UUID_SIZE];
3947     uint8_t            driverUUID[VK_UUID_SIZE];
3948     uint8_t            deviceLUID[VK_LUID_SIZE];
3949     uint32_t           deviceNodeMask;
3950     VkBool32           deviceLUIDValid;
3951 } VkPhysicalDeviceIDProperties;
3952 
3953 typedef struct VkExternalMemoryImageCreateInfo {
3954     VkStructureType                    sType;
3955     const void*                        pNext;
3956     VkExternalMemoryHandleTypeFlags    handleTypes;
3957 } VkExternalMemoryImageCreateInfo;
3958 
3959 typedef struct VkExternalMemoryBufferCreateInfo {
3960     VkStructureType                    sType;
3961     const void*                        pNext;
3962     VkExternalMemoryHandleTypeFlags    handleTypes;
3963 } VkExternalMemoryBufferCreateInfo;
3964 
3965 typedef struct VkExportMemoryAllocateInfo {
3966     VkStructureType                    sType;
3967     const void*                        pNext;
3968     VkExternalMemoryHandleTypeFlags    handleTypes;
3969 } VkExportMemoryAllocateInfo;
3970 
3971 typedef struct VkPhysicalDeviceExternalFenceInfo {
3972     VkStructureType                      sType;
3973     const void*                          pNext;
3974     VkExternalFenceHandleTypeFlagBits    handleType;
3975 } VkPhysicalDeviceExternalFenceInfo;
3976 
3977 typedef struct VkExternalFenceProperties {
3978     VkStructureType                   sType;
3979     void*                             pNext;
3980     VkExternalFenceHandleTypeFlags    exportFromImportedHandleTypes;
3981     VkExternalFenceHandleTypeFlags    compatibleHandleTypes;
3982     VkExternalFenceFeatureFlags       externalFenceFeatures;
3983 } VkExternalFenceProperties;
3984 
3985 typedef struct VkExportFenceCreateInfo {
3986     VkStructureType                   sType;
3987     const void*                       pNext;
3988     VkExternalFenceHandleTypeFlags    handleTypes;
3989 } VkExportFenceCreateInfo;
3990 
3991 typedef struct VkExportSemaphoreCreateInfo {
3992     VkStructureType                       sType;
3993     const void*                           pNext;
3994     VkExternalSemaphoreHandleTypeFlags    handleTypes;
3995 } VkExportSemaphoreCreateInfo;
3996 
3997 typedef struct VkPhysicalDeviceExternalSemaphoreInfo {
3998     VkStructureType                          sType;
3999     const void*                              pNext;
4000     VkExternalSemaphoreHandleTypeFlagBits    handleType;
4001 } VkPhysicalDeviceExternalSemaphoreInfo;
4002 
4003 typedef struct VkExternalSemaphoreProperties {
4004     VkStructureType                       sType;
4005     void*                                 pNext;
4006     VkExternalSemaphoreHandleTypeFlags    exportFromImportedHandleTypes;
4007     VkExternalSemaphoreHandleTypeFlags    compatibleHandleTypes;
4008     VkExternalSemaphoreFeatureFlags       externalSemaphoreFeatures;
4009 } VkExternalSemaphoreProperties;
4010 
4011 typedef struct VkPhysicalDeviceMaintenance3Properties {
4012     VkStructureType    sType;
4013     void*              pNext;
4014     uint32_t           maxPerSetDescriptors;
4015     VkDeviceSize       maxMemoryAllocationSize;
4016 } VkPhysicalDeviceMaintenance3Properties;
4017 
4018 typedef struct VkDescriptorSetLayoutSupport {
4019     VkStructureType    sType;
4020     void*              pNext;
4021     VkBool32           supported;
4022 } VkDescriptorSetLayoutSupport;
4023 
4024 typedef struct VkPhysicalDeviceShaderDrawParametersFeatures {
4025     VkStructureType    sType;
4026     void*              pNext;
4027     VkBool32           shaderDrawParameters;
4028 } VkPhysicalDeviceShaderDrawParametersFeatures;
4029 
4030 typedef VkPhysicalDeviceShaderDrawParametersFeatures VkPhysicalDeviceShaderDrawParameterFeatures;
4031 
4032 typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceVersion)(uint32_t* pApiVersion);
4033 typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
4034 typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
4035 typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeatures)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
4036 typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMask)(VkCommandBuffer commandBuffer, uint32_t deviceMask);
4037 typedef void (VKAPI_PTR *PFN_vkCmdDispatchBase)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
4038 typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroups)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
4039 typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
4040 typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
4041 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
4042 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
4043 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
4044 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
4045 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
4046 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
4047 typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue2)(VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue);
4048 typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversion)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
4049 typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversion)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
4050 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
4051 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFenceProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
4052 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
4053 typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupport)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
4054 
4055 #ifndef VK_NO_PROTOTYPES
4056 VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceVersion(
4057     uint32_t*                                   pApiVersion);
4058 
4059 VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2(
4060     VkDevice                                    device,
4061     uint32_t                                    bindInfoCount,
4062     const VkBindBufferMemoryInfo*               pBindInfos);
4063 
4064 VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2(
4065     VkDevice                                    device,
4066     uint32_t                                    bindInfoCount,
4067     const VkBindImageMemoryInfo*                pBindInfos);
4068 
4069 VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeatures(
4070     VkDevice                                    device,
4071     uint32_t                                    heapIndex,
4072     uint32_t                                    localDeviceIndex,
4073     uint32_t                                    remoteDeviceIndex,
4074     VkPeerMemoryFeatureFlags*                   pPeerMemoryFeatures);
4075 
4076 VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMask(
4077     VkCommandBuffer                             commandBuffer,
4078     uint32_t                                    deviceMask);
4079 
4080 VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBase(
4081     VkCommandBuffer                             commandBuffer,
4082     uint32_t                                    baseGroupX,
4083     uint32_t                                    baseGroupY,
4084     uint32_t                                    baseGroupZ,
4085     uint32_t                                    groupCountX,
4086     uint32_t                                    groupCountY,
4087     uint32_t                                    groupCountZ);
4088 
4089 VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroups(
4090     VkInstance                                  instance,
4091     uint32_t*                                   pPhysicalDeviceGroupCount,
4092     VkPhysicalDeviceGroupProperties*            pPhysicalDeviceGroupProperties);
4093 
4094 VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2(
4095     VkDevice                                    device,
4096     const VkImageMemoryRequirementsInfo2*       pInfo,
4097     VkMemoryRequirements2*                      pMemoryRequirements);
4098 
4099 VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2(
4100     VkDevice                                    device,
4101     const VkBufferMemoryRequirementsInfo2*      pInfo,
4102     VkMemoryRequirements2*                      pMemoryRequirements);
4103 
4104 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2(
4105     VkPhysicalDevice                            physicalDevice,
4106     VkPhysicalDeviceFeatures2*                  pFeatures);
4107 
4108 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2(
4109     VkPhysicalDevice                            physicalDevice,
4110     VkPhysicalDeviceProperties2*                pProperties);
4111 
4112 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2(
4113     VkPhysicalDevice                            physicalDevice,
4114     VkFormat                                    format,
4115     VkFormatProperties2*                        pFormatProperties);
4116 
4117 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2(
4118     VkPhysicalDevice                            physicalDevice,
4119     const VkPhysicalDeviceImageFormatInfo2*     pImageFormatInfo,
4120     VkImageFormatProperties2*                   pImageFormatProperties);
4121 
4122 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2(
4123     VkPhysicalDevice                            physicalDevice,
4124     uint32_t*                                   pQueueFamilyPropertyCount,
4125     VkQueueFamilyProperties2*                   pQueueFamilyProperties);
4126 
4127 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2(
4128     VkPhysicalDevice                            physicalDevice,
4129     VkPhysicalDeviceMemoryProperties2*          pMemoryProperties);
4130 
4131 VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue2(
4132     VkDevice                                    device,
4133     const VkDeviceQueueInfo2*                   pQueueInfo,
4134     VkQueue*                                    pQueue);
4135 
4136 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversion(
4137     VkDevice                                    device,
4138     const VkSamplerYcbcrConversionCreateInfo*   pCreateInfo,
4139     const VkAllocationCallbacks*                pAllocator,
4140     VkSamplerYcbcrConversion*                   pYcbcrConversion);
4141 
4142 VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversion(
4143     VkDevice                                    device,
4144     VkSamplerYcbcrConversion                    ycbcrConversion,
4145     const VkAllocationCallbacks*                pAllocator);
4146 
4147 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferProperties(
4148     VkPhysicalDevice                            physicalDevice,
4149     const VkPhysicalDeviceExternalBufferInfo*   pExternalBufferInfo,
4150     VkExternalBufferProperties*                 pExternalBufferProperties);
4151 
4152 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFenceProperties(
4153     VkPhysicalDevice                            physicalDevice,
4154     const VkPhysicalDeviceExternalFenceInfo*    pExternalFenceInfo,
4155     VkExternalFenceProperties*                  pExternalFenceProperties);
4156 
4157 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphoreProperties(
4158     VkPhysicalDevice                            physicalDevice,
4159     const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
4160     VkExternalSemaphoreProperties*              pExternalSemaphoreProperties);
4161 
4162 VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupport(
4163     VkDevice                                    device,
4164     const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
4165     VkDescriptorSetLayoutSupport*               pSupport);
4166 #endif
4167 
4168 
4169 #define VK_VERSION_1_2 1
4170 // Vulkan 1.2 version number
4171 #define VK_API_VERSION_1_2 VK_MAKE_API_VERSION(0, 1, 2, 0)// Patch version should always be set to 0
4172 
4173 #define VK_MAX_DRIVER_NAME_SIZE           256U
4174 #define VK_MAX_DRIVER_INFO_SIZE           256U
4175 
4176 typedef enum VkDriverId {
4177     VK_DRIVER_ID_AMD_PROPRIETARY = 1,
4178     VK_DRIVER_ID_AMD_OPEN_SOURCE = 2,
4179     VK_DRIVER_ID_MESA_RADV = 3,
4180     VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4,
4181     VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5,
4182     VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6,
4183     VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7,
4184     VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8,
4185     VK_DRIVER_ID_ARM_PROPRIETARY = 9,
4186     VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10,
4187     VK_DRIVER_ID_GGP_PROPRIETARY = 11,
4188     VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12,
4189     VK_DRIVER_ID_MESA_LLVMPIPE = 13,
4190     VK_DRIVER_ID_MOLTENVK = 14,
4191     VK_DRIVER_ID_COREAVI_PROPRIETARY = 15,
4192     VK_DRIVER_ID_JUICE_PROPRIETARY = 16,
4193     VK_DRIVER_ID_VERISILICON_PROPRIETARY = 17,
4194     VK_DRIVER_ID_MESA_TURNIP = 18,
4195     VK_DRIVER_ID_MESA_V3DV = 19,
4196     VK_DRIVER_ID_MESA_PANVK = 20,
4197     VK_DRIVER_ID_SAMSUNG_PROPRIETARY = 21,
4198     VK_DRIVER_ID_MAX_ENUM = 0x7FFFFFFF
4199 } VkDriverId;
4200 
4201 typedef enum VkShaderFloatControlsIndependence {
4202     VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0,
4203     VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1,
4204     VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2,
4205     VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 0x7FFFFFFF
4206 } VkShaderFloatControlsIndependence;
4207 
4208 typedef enum VkSamplerReductionMode {
4209     VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0,
4210     VK_SAMPLER_REDUCTION_MODE_MIN = 1,
4211     VK_SAMPLER_REDUCTION_MODE_MAX = 2,
4212     VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 0x7FFFFFFF
4213 } VkSamplerReductionMode;
4214 
4215 typedef enum VkSemaphoreType {
4216     VK_SEMAPHORE_TYPE_BINARY = 0,
4217     VK_SEMAPHORE_TYPE_TIMELINE = 1,
4218     VK_SEMAPHORE_TYPE_MAX_ENUM = 0x7FFFFFFF
4219 } VkSemaphoreType;
4220 
4221 typedef enum VkResolveModeFlagBits {
4222     VK_RESOLVE_MODE_NONE = 0,
4223     VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 0x00000001,
4224     VK_RESOLVE_MODE_AVERAGE_BIT = 0x00000002,
4225     VK_RESOLVE_MODE_MIN_BIT = 0x00000004,
4226     VK_RESOLVE_MODE_MAX_BIT = 0x00000008,
4227     VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
4228 } VkResolveModeFlagBits;
4229 typedef VkFlags VkResolveModeFlags;
4230 
4231 typedef enum VkDescriptorBindingFlagBits {
4232     VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 0x00000001,
4233     VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 0x00000002,
4234     VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 0x00000004,
4235     VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 0x00000008,
4236     VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
4237 } VkDescriptorBindingFlagBits;
4238 typedef VkFlags VkDescriptorBindingFlags;
4239 
4240 typedef enum VkSemaphoreWaitFlagBits {
4241     VK_SEMAPHORE_WAIT_ANY_BIT = 0x00000001,
4242     VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
4243 } VkSemaphoreWaitFlagBits;
4244 typedef VkFlags VkSemaphoreWaitFlags;
4245 typedef struct VkPhysicalDeviceVulkan11Features {
4246     VkStructureType    sType;
4247     void*              pNext;
4248     VkBool32           storageBuffer16BitAccess;
4249     VkBool32           uniformAndStorageBuffer16BitAccess;
4250     VkBool32           storagePushConstant16;
4251     VkBool32           storageInputOutput16;
4252     VkBool32           multiview;
4253     VkBool32           multiviewGeometryShader;
4254     VkBool32           multiviewTessellationShader;
4255     VkBool32           variablePointersStorageBuffer;
4256     VkBool32           variablePointers;
4257     VkBool32           protectedMemory;
4258     VkBool32           samplerYcbcrConversion;
4259     VkBool32           shaderDrawParameters;
4260 } VkPhysicalDeviceVulkan11Features;
4261 
4262 typedef struct VkPhysicalDeviceVulkan11Properties {
4263     VkStructureType            sType;
4264     void*                      pNext;
4265     uint8_t                    deviceUUID[VK_UUID_SIZE];
4266     uint8_t                    driverUUID[VK_UUID_SIZE];
4267     uint8_t                    deviceLUID[VK_LUID_SIZE];
4268     uint32_t                   deviceNodeMask;
4269     VkBool32                   deviceLUIDValid;
4270     uint32_t                   subgroupSize;
4271     VkShaderStageFlags         subgroupSupportedStages;
4272     VkSubgroupFeatureFlags     subgroupSupportedOperations;
4273     VkBool32                   subgroupQuadOperationsInAllStages;
4274     VkPointClippingBehavior    pointClippingBehavior;
4275     uint32_t                   maxMultiviewViewCount;
4276     uint32_t                   maxMultiviewInstanceIndex;
4277     VkBool32                   protectedNoFault;
4278     uint32_t                   maxPerSetDescriptors;
4279     VkDeviceSize               maxMemoryAllocationSize;
4280 } VkPhysicalDeviceVulkan11Properties;
4281 
4282 typedef struct VkPhysicalDeviceVulkan12Features {
4283     VkStructureType    sType;
4284     void*              pNext;
4285     VkBool32           samplerMirrorClampToEdge;
4286     VkBool32           drawIndirectCount;
4287     VkBool32           storageBuffer8BitAccess;
4288     VkBool32           uniformAndStorageBuffer8BitAccess;
4289     VkBool32           storagePushConstant8;
4290     VkBool32           shaderBufferInt64Atomics;
4291     VkBool32           shaderSharedInt64Atomics;
4292     VkBool32           shaderFloat16;
4293     VkBool32           shaderInt8;
4294     VkBool32           descriptorIndexing;
4295     VkBool32           shaderInputAttachmentArrayDynamicIndexing;
4296     VkBool32           shaderUniformTexelBufferArrayDynamicIndexing;
4297     VkBool32           shaderStorageTexelBufferArrayDynamicIndexing;
4298     VkBool32           shaderUniformBufferArrayNonUniformIndexing;
4299     VkBool32           shaderSampledImageArrayNonUniformIndexing;
4300     VkBool32           shaderStorageBufferArrayNonUniformIndexing;
4301     VkBool32           shaderStorageImageArrayNonUniformIndexing;
4302     VkBool32           shaderInputAttachmentArrayNonUniformIndexing;
4303     VkBool32           shaderUniformTexelBufferArrayNonUniformIndexing;
4304     VkBool32           shaderStorageTexelBufferArrayNonUniformIndexing;
4305     VkBool32           descriptorBindingUniformBufferUpdateAfterBind;
4306     VkBool32           descriptorBindingSampledImageUpdateAfterBind;
4307     VkBool32           descriptorBindingStorageImageUpdateAfterBind;
4308     VkBool32           descriptorBindingStorageBufferUpdateAfterBind;
4309     VkBool32           descriptorBindingUniformTexelBufferUpdateAfterBind;
4310     VkBool32           descriptorBindingStorageTexelBufferUpdateAfterBind;
4311     VkBool32           descriptorBindingUpdateUnusedWhilePending;
4312     VkBool32           descriptorBindingPartiallyBound;
4313     VkBool32           descriptorBindingVariableDescriptorCount;
4314     VkBool32           runtimeDescriptorArray;
4315     VkBool32           samplerFilterMinmax;
4316     VkBool32           scalarBlockLayout;
4317     VkBool32           imagelessFramebuffer;
4318     VkBool32           uniformBufferStandardLayout;
4319     VkBool32           shaderSubgroupExtendedTypes;
4320     VkBool32           separateDepthStencilLayouts;
4321     VkBool32           hostQueryReset;
4322     VkBool32           timelineSemaphore;
4323     VkBool32           bufferDeviceAddress;
4324     VkBool32           bufferDeviceAddressCaptureReplay;
4325     VkBool32           bufferDeviceAddressMultiDevice;
4326     VkBool32           vulkanMemoryModel;
4327     VkBool32           vulkanMemoryModelDeviceScope;
4328     VkBool32           vulkanMemoryModelAvailabilityVisibilityChains;
4329     VkBool32           shaderOutputViewportIndex;
4330     VkBool32           shaderOutputLayer;
4331     VkBool32           subgroupBroadcastDynamicId;
4332 } VkPhysicalDeviceVulkan12Features;
4333 
4334 typedef struct VkConformanceVersion {
4335     uint8_t    major;
4336     uint8_t    minor;
4337     uint8_t    subminor;
4338     uint8_t    patch;
4339 } VkConformanceVersion;
4340 
4341 typedef struct VkPhysicalDeviceVulkan12Properties {
4342     VkStructureType                      sType;
4343     void*                                pNext;
4344     VkDriverId                           driverID;
4345     char                                 driverName[VK_MAX_DRIVER_NAME_SIZE];
4346     char                                 driverInfo[VK_MAX_DRIVER_INFO_SIZE];
4347     VkConformanceVersion                 conformanceVersion;
4348     VkShaderFloatControlsIndependence    denormBehaviorIndependence;
4349     VkShaderFloatControlsIndependence    roundingModeIndependence;
4350     VkBool32                             shaderSignedZeroInfNanPreserveFloat16;
4351     VkBool32                             shaderSignedZeroInfNanPreserveFloat32;
4352     VkBool32                             shaderSignedZeroInfNanPreserveFloat64;
4353     VkBool32                             shaderDenormPreserveFloat16;
4354     VkBool32                             shaderDenormPreserveFloat32;
4355     VkBool32                             shaderDenormPreserveFloat64;
4356     VkBool32                             shaderDenormFlushToZeroFloat16;
4357     VkBool32                             shaderDenormFlushToZeroFloat32;
4358     VkBool32                             shaderDenormFlushToZeroFloat64;
4359     VkBool32                             shaderRoundingModeRTEFloat16;
4360     VkBool32                             shaderRoundingModeRTEFloat32;
4361     VkBool32                             shaderRoundingModeRTEFloat64;
4362     VkBool32                             shaderRoundingModeRTZFloat16;
4363     VkBool32                             shaderRoundingModeRTZFloat32;
4364     VkBool32                             shaderRoundingModeRTZFloat64;
4365     uint32_t                             maxUpdateAfterBindDescriptorsInAllPools;
4366     VkBool32                             shaderUniformBufferArrayNonUniformIndexingNative;
4367     VkBool32                             shaderSampledImageArrayNonUniformIndexingNative;
4368     VkBool32                             shaderStorageBufferArrayNonUniformIndexingNative;
4369     VkBool32                             shaderStorageImageArrayNonUniformIndexingNative;
4370     VkBool32                             shaderInputAttachmentArrayNonUniformIndexingNative;
4371     VkBool32                             robustBufferAccessUpdateAfterBind;
4372     VkBool32                             quadDivergentImplicitLod;
4373     uint32_t                             maxPerStageDescriptorUpdateAfterBindSamplers;
4374     uint32_t                             maxPerStageDescriptorUpdateAfterBindUniformBuffers;
4375     uint32_t                             maxPerStageDescriptorUpdateAfterBindStorageBuffers;
4376     uint32_t                             maxPerStageDescriptorUpdateAfterBindSampledImages;
4377     uint32_t                             maxPerStageDescriptorUpdateAfterBindStorageImages;
4378     uint32_t                             maxPerStageDescriptorUpdateAfterBindInputAttachments;
4379     uint32_t                             maxPerStageUpdateAfterBindResources;
4380     uint32_t                             maxDescriptorSetUpdateAfterBindSamplers;
4381     uint32_t                             maxDescriptorSetUpdateAfterBindUniformBuffers;
4382     uint32_t                             maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
4383     uint32_t                             maxDescriptorSetUpdateAfterBindStorageBuffers;
4384     uint32_t                             maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
4385     uint32_t                             maxDescriptorSetUpdateAfterBindSampledImages;
4386     uint32_t                             maxDescriptorSetUpdateAfterBindStorageImages;
4387     uint32_t                             maxDescriptorSetUpdateAfterBindInputAttachments;
4388     VkResolveModeFlags                   supportedDepthResolveModes;
4389     VkResolveModeFlags                   supportedStencilResolveModes;
4390     VkBool32                             independentResolveNone;
4391     VkBool32                             independentResolve;
4392     VkBool32                             filterMinmaxSingleComponentFormats;
4393     VkBool32                             filterMinmaxImageComponentMapping;
4394     uint64_t                             maxTimelineSemaphoreValueDifference;
4395     VkSampleCountFlags                   framebufferIntegerColorSampleCounts;
4396 } VkPhysicalDeviceVulkan12Properties;
4397 
4398 typedef struct VkImageFormatListCreateInfo {
4399     VkStructureType    sType;
4400     const void*        pNext;
4401     uint32_t           viewFormatCount;
4402     const VkFormat*    pViewFormats;
4403 } VkImageFormatListCreateInfo;
4404 
4405 typedef struct VkAttachmentDescription2 {
4406     VkStructureType                 sType;
4407     const void*                     pNext;
4408     VkAttachmentDescriptionFlags    flags;
4409     VkFormat                        format;
4410     VkSampleCountFlagBits           samples;
4411     VkAttachmentLoadOp              loadOp;
4412     VkAttachmentStoreOp             storeOp;
4413     VkAttachmentLoadOp              stencilLoadOp;
4414     VkAttachmentStoreOp             stencilStoreOp;
4415     VkImageLayout                   initialLayout;
4416     VkImageLayout                   finalLayout;
4417 } VkAttachmentDescription2;
4418 
4419 typedef struct VkAttachmentReference2 {
4420     VkStructureType       sType;
4421     const void*           pNext;
4422     uint32_t              attachment;
4423     VkImageLayout         layout;
4424     VkImageAspectFlags    aspectMask;
4425 } VkAttachmentReference2;
4426 
4427 typedef struct VkSubpassDescription2 {
4428     VkStructureType                  sType;
4429     const void*                      pNext;
4430     VkSubpassDescriptionFlags        flags;
4431     VkPipelineBindPoint              pipelineBindPoint;
4432     uint32_t                         viewMask;
4433     uint32_t                         inputAttachmentCount;
4434     const VkAttachmentReference2*    pInputAttachments;
4435     uint32_t                         colorAttachmentCount;
4436     const VkAttachmentReference2*    pColorAttachments;
4437     const VkAttachmentReference2*    pResolveAttachments;
4438     const VkAttachmentReference2*    pDepthStencilAttachment;
4439     uint32_t                         preserveAttachmentCount;
4440     const uint32_t*                  pPreserveAttachments;
4441 } VkSubpassDescription2;
4442 
4443 typedef struct VkSubpassDependency2 {
4444     VkStructureType         sType;
4445     const void*             pNext;
4446     uint32_t                srcSubpass;
4447     uint32_t                dstSubpass;
4448     VkPipelineStageFlags    srcStageMask;
4449     VkPipelineStageFlags    dstStageMask;
4450     VkAccessFlags           srcAccessMask;
4451     VkAccessFlags           dstAccessMask;
4452     VkDependencyFlags       dependencyFlags;
4453     int32_t                 viewOffset;
4454 } VkSubpassDependency2;
4455 
4456 typedef struct VkRenderPassCreateInfo2 {
4457     VkStructureType                    sType;
4458     const void*                        pNext;
4459     VkRenderPassCreateFlags            flags;
4460     uint32_t                           attachmentCount;
4461     const VkAttachmentDescription2*    pAttachments;
4462     uint32_t                           subpassCount;
4463     const VkSubpassDescription2*       pSubpasses;
4464     uint32_t                           dependencyCount;
4465     const VkSubpassDependency2*        pDependencies;
4466     uint32_t                           correlatedViewMaskCount;
4467     const uint32_t*                    pCorrelatedViewMasks;
4468 } VkRenderPassCreateInfo2;
4469 
4470 typedef struct VkSubpassBeginInfo {
4471     VkStructureType      sType;
4472     const void*          pNext;
4473     VkSubpassContents    contents;
4474 } VkSubpassBeginInfo;
4475 
4476 typedef struct VkSubpassEndInfo {
4477     VkStructureType    sType;
4478     const void*        pNext;
4479 } VkSubpassEndInfo;
4480 
4481 typedef struct VkPhysicalDevice8BitStorageFeatures {
4482     VkStructureType    sType;
4483     void*              pNext;
4484     VkBool32           storageBuffer8BitAccess;
4485     VkBool32           uniformAndStorageBuffer8BitAccess;
4486     VkBool32           storagePushConstant8;
4487 } VkPhysicalDevice8BitStorageFeatures;
4488 
4489 typedef struct VkPhysicalDeviceDriverProperties {
4490     VkStructureType         sType;
4491     void*                   pNext;
4492     VkDriverId              driverID;
4493     char                    driverName[VK_MAX_DRIVER_NAME_SIZE];
4494     char                    driverInfo[VK_MAX_DRIVER_INFO_SIZE];
4495     VkConformanceVersion    conformanceVersion;
4496 } VkPhysicalDeviceDriverProperties;
4497 
4498 typedef struct VkPhysicalDeviceShaderAtomicInt64Features {
4499     VkStructureType    sType;
4500     void*              pNext;
4501     VkBool32           shaderBufferInt64Atomics;
4502     VkBool32           shaderSharedInt64Atomics;
4503 } VkPhysicalDeviceShaderAtomicInt64Features;
4504 
4505 typedef struct VkPhysicalDeviceShaderFloat16Int8Features {
4506     VkStructureType    sType;
4507     void*              pNext;
4508     VkBool32           shaderFloat16;
4509     VkBool32           shaderInt8;
4510 } VkPhysicalDeviceShaderFloat16Int8Features;
4511 
4512 typedef struct VkPhysicalDeviceFloatControlsProperties {
4513     VkStructureType                      sType;
4514     void*                                pNext;
4515     VkShaderFloatControlsIndependence    denormBehaviorIndependence;
4516     VkShaderFloatControlsIndependence    roundingModeIndependence;
4517     VkBool32                             shaderSignedZeroInfNanPreserveFloat16;
4518     VkBool32                             shaderSignedZeroInfNanPreserveFloat32;
4519     VkBool32                             shaderSignedZeroInfNanPreserveFloat64;
4520     VkBool32                             shaderDenormPreserveFloat16;
4521     VkBool32                             shaderDenormPreserveFloat32;
4522     VkBool32                             shaderDenormPreserveFloat64;
4523     VkBool32                             shaderDenormFlushToZeroFloat16;
4524     VkBool32                             shaderDenormFlushToZeroFloat32;
4525     VkBool32                             shaderDenormFlushToZeroFloat64;
4526     VkBool32                             shaderRoundingModeRTEFloat16;
4527     VkBool32                             shaderRoundingModeRTEFloat32;
4528     VkBool32                             shaderRoundingModeRTEFloat64;
4529     VkBool32                             shaderRoundingModeRTZFloat16;
4530     VkBool32                             shaderRoundingModeRTZFloat32;
4531     VkBool32                             shaderRoundingModeRTZFloat64;
4532 } VkPhysicalDeviceFloatControlsProperties;
4533 
4534 typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo {
4535     VkStructureType                    sType;
4536     const void*                        pNext;
4537     uint32_t                           bindingCount;
4538     const VkDescriptorBindingFlags*    pBindingFlags;
4539 } VkDescriptorSetLayoutBindingFlagsCreateInfo;
4540 
4541 typedef struct VkPhysicalDeviceDescriptorIndexingFeatures {
4542     VkStructureType    sType;
4543     void*              pNext;
4544     VkBool32           shaderInputAttachmentArrayDynamicIndexing;
4545     VkBool32           shaderUniformTexelBufferArrayDynamicIndexing;
4546     VkBool32           shaderStorageTexelBufferArrayDynamicIndexing;
4547     VkBool32           shaderUniformBufferArrayNonUniformIndexing;
4548     VkBool32           shaderSampledImageArrayNonUniformIndexing;
4549     VkBool32           shaderStorageBufferArrayNonUniformIndexing;
4550     VkBool32           shaderStorageImageArrayNonUniformIndexing;
4551     VkBool32           shaderInputAttachmentArrayNonUniformIndexing;
4552     VkBool32           shaderUniformTexelBufferArrayNonUniformIndexing;
4553     VkBool32           shaderStorageTexelBufferArrayNonUniformIndexing;
4554     VkBool32           descriptorBindingUniformBufferUpdateAfterBind;
4555     VkBool32           descriptorBindingSampledImageUpdateAfterBind;
4556     VkBool32           descriptorBindingStorageImageUpdateAfterBind;
4557     VkBool32           descriptorBindingStorageBufferUpdateAfterBind;
4558     VkBool32           descriptorBindingUniformTexelBufferUpdateAfterBind;
4559     VkBool32           descriptorBindingStorageTexelBufferUpdateAfterBind;
4560     VkBool32           descriptorBindingUpdateUnusedWhilePending;
4561     VkBool32           descriptorBindingPartiallyBound;
4562     VkBool32           descriptorBindingVariableDescriptorCount;
4563     VkBool32           runtimeDescriptorArray;
4564 } VkPhysicalDeviceDescriptorIndexingFeatures;
4565 
4566 typedef struct VkPhysicalDeviceDescriptorIndexingProperties {
4567     VkStructureType    sType;
4568     void*              pNext;
4569     uint32_t           maxUpdateAfterBindDescriptorsInAllPools;
4570     VkBool32           shaderUniformBufferArrayNonUniformIndexingNative;
4571     VkBool32           shaderSampledImageArrayNonUniformIndexingNative;
4572     VkBool32           shaderStorageBufferArrayNonUniformIndexingNative;
4573     VkBool32           shaderStorageImageArrayNonUniformIndexingNative;
4574     VkBool32           shaderInputAttachmentArrayNonUniformIndexingNative;
4575     VkBool32           robustBufferAccessUpdateAfterBind;
4576     VkBool32           quadDivergentImplicitLod;
4577     uint32_t           maxPerStageDescriptorUpdateAfterBindSamplers;
4578     uint32_t           maxPerStageDescriptorUpdateAfterBindUniformBuffers;
4579     uint32_t           maxPerStageDescriptorUpdateAfterBindStorageBuffers;
4580     uint32_t           maxPerStageDescriptorUpdateAfterBindSampledImages;
4581     uint32_t           maxPerStageDescriptorUpdateAfterBindStorageImages;
4582     uint32_t           maxPerStageDescriptorUpdateAfterBindInputAttachments;
4583     uint32_t           maxPerStageUpdateAfterBindResources;
4584     uint32_t           maxDescriptorSetUpdateAfterBindSamplers;
4585     uint32_t           maxDescriptorSetUpdateAfterBindUniformBuffers;
4586     uint32_t           maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
4587     uint32_t           maxDescriptorSetUpdateAfterBindStorageBuffers;
4588     uint32_t           maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
4589     uint32_t           maxDescriptorSetUpdateAfterBindSampledImages;
4590     uint32_t           maxDescriptorSetUpdateAfterBindStorageImages;
4591     uint32_t           maxDescriptorSetUpdateAfterBindInputAttachments;
4592 } VkPhysicalDeviceDescriptorIndexingProperties;
4593 
4594 typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo {
4595     VkStructureType    sType;
4596     const void*        pNext;
4597     uint32_t           descriptorSetCount;
4598     const uint32_t*    pDescriptorCounts;
4599 } VkDescriptorSetVariableDescriptorCountAllocateInfo;
4600 
4601 typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupport {
4602     VkStructureType    sType;
4603     void*              pNext;
4604     uint32_t           maxVariableDescriptorCount;
4605 } VkDescriptorSetVariableDescriptorCountLayoutSupport;
4606 
4607 typedef struct VkSubpassDescriptionDepthStencilResolve {
4608     VkStructureType                  sType;
4609     const void*                      pNext;
4610     VkResolveModeFlagBits            depthResolveMode;
4611     VkResolveModeFlagBits            stencilResolveMode;
4612     const VkAttachmentReference2*    pDepthStencilResolveAttachment;
4613 } VkSubpassDescriptionDepthStencilResolve;
4614 
4615 typedef struct VkPhysicalDeviceDepthStencilResolveProperties {
4616     VkStructureType       sType;
4617     void*                 pNext;
4618     VkResolveModeFlags    supportedDepthResolveModes;
4619     VkResolveModeFlags    supportedStencilResolveModes;
4620     VkBool32              independentResolveNone;
4621     VkBool32              independentResolve;
4622 } VkPhysicalDeviceDepthStencilResolveProperties;
4623 
4624 typedef struct VkPhysicalDeviceScalarBlockLayoutFeatures {
4625     VkStructureType    sType;
4626     void*              pNext;
4627     VkBool32           scalarBlockLayout;
4628 } VkPhysicalDeviceScalarBlockLayoutFeatures;
4629 
4630 typedef struct VkImageStencilUsageCreateInfo {
4631     VkStructureType      sType;
4632     const void*          pNext;
4633     VkImageUsageFlags    stencilUsage;
4634 } VkImageStencilUsageCreateInfo;
4635 
4636 typedef struct VkSamplerReductionModeCreateInfo {
4637     VkStructureType           sType;
4638     const void*               pNext;
4639     VkSamplerReductionMode    reductionMode;
4640 } VkSamplerReductionModeCreateInfo;
4641 
4642 typedef struct VkPhysicalDeviceSamplerFilterMinmaxProperties {
4643     VkStructureType    sType;
4644     void*              pNext;
4645     VkBool32           filterMinmaxSingleComponentFormats;
4646     VkBool32           filterMinmaxImageComponentMapping;
4647 } VkPhysicalDeviceSamplerFilterMinmaxProperties;
4648 
4649 typedef struct VkPhysicalDeviceVulkanMemoryModelFeatures {
4650     VkStructureType    sType;
4651     void*              pNext;
4652     VkBool32           vulkanMemoryModel;
4653     VkBool32           vulkanMemoryModelDeviceScope;
4654     VkBool32           vulkanMemoryModelAvailabilityVisibilityChains;
4655 } VkPhysicalDeviceVulkanMemoryModelFeatures;
4656 
4657 typedef struct VkPhysicalDeviceImagelessFramebufferFeatures {
4658     VkStructureType    sType;
4659     void*              pNext;
4660     VkBool32           imagelessFramebuffer;
4661 } VkPhysicalDeviceImagelessFramebufferFeatures;
4662 
4663 typedef struct VkFramebufferAttachmentImageInfo {
4664     VkStructureType       sType;
4665     const void*           pNext;
4666     VkImageCreateFlags    flags;
4667     VkImageUsageFlags     usage;
4668     uint32_t              width;
4669     uint32_t              height;
4670     uint32_t              layerCount;
4671     uint32_t              viewFormatCount;
4672     const VkFormat*       pViewFormats;
4673 } VkFramebufferAttachmentImageInfo;
4674 
4675 typedef struct VkFramebufferAttachmentsCreateInfo {
4676     VkStructureType                            sType;
4677     const void*                                pNext;
4678     uint32_t                                   attachmentImageInfoCount;
4679     const VkFramebufferAttachmentImageInfo*    pAttachmentImageInfos;
4680 } VkFramebufferAttachmentsCreateInfo;
4681 
4682 typedef struct VkRenderPassAttachmentBeginInfo {
4683     VkStructureType       sType;
4684     const void*           pNext;
4685     uint32_t              attachmentCount;
4686     const VkImageView*    pAttachments;
4687 } VkRenderPassAttachmentBeginInfo;
4688 
4689 typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures {
4690     VkStructureType    sType;
4691     void*              pNext;
4692     VkBool32           uniformBufferStandardLayout;
4693 } VkPhysicalDeviceUniformBufferStandardLayoutFeatures;
4694 
4695 typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures {
4696     VkStructureType    sType;
4697     void*              pNext;
4698     VkBool32           shaderSubgroupExtendedTypes;
4699 } VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures;
4700 
4701 typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures {
4702     VkStructureType    sType;
4703     void*              pNext;
4704     VkBool32           separateDepthStencilLayouts;
4705 } VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures;
4706 
4707 typedef struct VkAttachmentReferenceStencilLayout {
4708     VkStructureType    sType;
4709     void*              pNext;
4710     VkImageLayout      stencilLayout;
4711 } VkAttachmentReferenceStencilLayout;
4712 
4713 typedef struct VkAttachmentDescriptionStencilLayout {
4714     VkStructureType    sType;
4715     void*              pNext;
4716     VkImageLayout      stencilInitialLayout;
4717     VkImageLayout      stencilFinalLayout;
4718 } VkAttachmentDescriptionStencilLayout;
4719 
4720 typedef struct VkPhysicalDeviceHostQueryResetFeatures {
4721     VkStructureType    sType;
4722     void*              pNext;
4723     VkBool32           hostQueryReset;
4724 } VkPhysicalDeviceHostQueryResetFeatures;
4725 
4726 typedef struct VkPhysicalDeviceTimelineSemaphoreFeatures {
4727     VkStructureType    sType;
4728     void*              pNext;
4729     VkBool32           timelineSemaphore;
4730 } VkPhysicalDeviceTimelineSemaphoreFeatures;
4731 
4732 typedef struct VkPhysicalDeviceTimelineSemaphoreProperties {
4733     VkStructureType    sType;
4734     void*              pNext;
4735     uint64_t           maxTimelineSemaphoreValueDifference;
4736 } VkPhysicalDeviceTimelineSemaphoreProperties;
4737 
4738 typedef struct VkSemaphoreTypeCreateInfo {
4739     VkStructureType    sType;
4740     const void*        pNext;
4741     VkSemaphoreType    semaphoreType;
4742     uint64_t           initialValue;
4743 } VkSemaphoreTypeCreateInfo;
4744 
4745 typedef struct VkTimelineSemaphoreSubmitInfo {
4746     VkStructureType    sType;
4747     const void*        pNext;
4748     uint32_t           waitSemaphoreValueCount;
4749     const uint64_t*    pWaitSemaphoreValues;
4750     uint32_t           signalSemaphoreValueCount;
4751     const uint64_t*    pSignalSemaphoreValues;
4752 } VkTimelineSemaphoreSubmitInfo;
4753 
4754 typedef struct VkSemaphoreWaitInfo {
4755     VkStructureType         sType;
4756     const void*             pNext;
4757     VkSemaphoreWaitFlags    flags;
4758     uint32_t                semaphoreCount;
4759     const VkSemaphore*      pSemaphores;
4760     const uint64_t*         pValues;
4761 } VkSemaphoreWaitInfo;
4762 
4763 typedef struct VkSemaphoreSignalInfo {
4764     VkStructureType    sType;
4765     const void*        pNext;
4766     VkSemaphore        semaphore;
4767     uint64_t           value;
4768 } VkSemaphoreSignalInfo;
4769 
4770 typedef struct VkPhysicalDeviceBufferDeviceAddressFeatures {
4771     VkStructureType    sType;
4772     void*              pNext;
4773     VkBool32           bufferDeviceAddress;
4774     VkBool32           bufferDeviceAddressCaptureReplay;
4775     VkBool32           bufferDeviceAddressMultiDevice;
4776 } VkPhysicalDeviceBufferDeviceAddressFeatures;
4777 
4778 typedef struct VkBufferDeviceAddressInfo {
4779     VkStructureType    sType;
4780     const void*        pNext;
4781     VkBuffer           buffer;
4782 } VkBufferDeviceAddressInfo;
4783 
4784 typedef struct VkBufferOpaqueCaptureAddressCreateInfo {
4785     VkStructureType    sType;
4786     const void*        pNext;
4787     uint64_t           opaqueCaptureAddress;
4788 } VkBufferOpaqueCaptureAddressCreateInfo;
4789 
4790 typedef struct VkMemoryOpaqueCaptureAddressAllocateInfo {
4791     VkStructureType    sType;
4792     const void*        pNext;
4793     uint64_t           opaqueCaptureAddress;
4794 } VkMemoryOpaqueCaptureAddressAllocateInfo;
4795 
4796 typedef struct VkDeviceMemoryOpaqueCaptureAddressInfo {
4797     VkStructureType    sType;
4798     const void*        pNext;
4799     VkDeviceMemory     memory;
4800 } VkDeviceMemoryOpaqueCaptureAddressInfo;
4801 
4802 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
4803 typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
4804 typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
4805 typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo*      pRenderPassBegin, const VkSubpassBeginInfo*      pSubpassBeginInfo);
4806 typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo*      pSubpassBeginInfo, const VkSubpassEndInfo*        pSubpassEndInfo);
4807 typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo*        pSubpassEndInfo);
4808 typedef void (VKAPI_PTR *PFN_vkResetQueryPool)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);
4809 typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValue)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue);
4810 typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphores)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout);
4811 typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphore)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
4812 typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
4813 typedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
4814 typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddress)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
4815 
4816 #ifndef VK_NO_PROTOTYPES
4817 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCount(
4818     VkCommandBuffer                             commandBuffer,
4819     VkBuffer                                    buffer,
4820     VkDeviceSize                                offset,
4821     VkBuffer                                    countBuffer,
4822     VkDeviceSize                                countBufferOffset,
4823     uint32_t                                    maxDrawCount,
4824     uint32_t                                    stride);
4825 
4826 VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCount(
4827     VkCommandBuffer                             commandBuffer,
4828     VkBuffer                                    buffer,
4829     VkDeviceSize                                offset,
4830     VkBuffer                                    countBuffer,
4831     VkDeviceSize                                countBufferOffset,
4832     uint32_t                                    maxDrawCount,
4833     uint32_t                                    stride);
4834 
4835 VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2(
4836     VkDevice                                    device,
4837     const VkRenderPassCreateInfo2*              pCreateInfo,
4838     const VkAllocationCallbacks*                pAllocator,
4839     VkRenderPass*                               pRenderPass);
4840 
4841 VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2(
4842     VkCommandBuffer                             commandBuffer,
4843     const VkRenderPassBeginInfo*                pRenderPassBegin,
4844     const VkSubpassBeginInfo*                   pSubpassBeginInfo);
4845 
4846 VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2(
4847     VkCommandBuffer                             commandBuffer,
4848     const VkSubpassBeginInfo*                   pSubpassBeginInfo,
4849     const VkSubpassEndInfo*                     pSubpassEndInfo);
4850 
4851 VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2(
4852     VkCommandBuffer                             commandBuffer,
4853     const VkSubpassEndInfo*                     pSubpassEndInfo);
4854 
4855 VKAPI_ATTR void VKAPI_CALL vkResetQueryPool(
4856     VkDevice                                    device,
4857     VkQueryPool                                 queryPool,
4858     uint32_t                                    firstQuery,
4859     uint32_t                                    queryCount);
4860 
4861 VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValue(
4862     VkDevice                                    device,
4863     VkSemaphore                                 semaphore,
4864     uint64_t*                                   pValue);
4865 
4866 VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphores(
4867     VkDevice                                    device,
4868     const VkSemaphoreWaitInfo*                  pWaitInfo,
4869     uint64_t                                    timeout);
4870 
4871 VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphore(
4872     VkDevice                                    device,
4873     const VkSemaphoreSignalInfo*                pSignalInfo);
4874 
4875 VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddress(
4876     VkDevice                                    device,
4877     const VkBufferDeviceAddressInfo*            pInfo);
4878 
4879 VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddress(
4880     VkDevice                                    device,
4881     const VkBufferDeviceAddressInfo*            pInfo);
4882 
4883 VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddress(
4884     VkDevice                                    device,
4885     const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
4886 #endif
4887 
4888 
4889 #define VKSC_VERSION_1_0 1
4890 // Vulkan SC 1.0 version number
4891 #define VKSC_API_VERSION_1_0 VK_MAKE_API_VERSION(VKSC_API_VARIANT, 1, 0, 0)// Patch version should always be set to 0
4892 
4893 
4894 typedef enum VkFaultLevel {
4895     VK_FAULT_LEVEL_UNASSIGNED = 0,
4896     VK_FAULT_LEVEL_CRITICAL = 1,
4897     VK_FAULT_LEVEL_RECOVERABLE = 2,
4898     VK_FAULT_LEVEL_WARNING = 3,
4899     VK_FAULT_LEVEL_MAX_ENUM = 0x7FFFFFFF
4900 } VkFaultLevel;
4901 
4902 typedef enum VkFaultType {
4903     VK_FAULT_TYPE_INVALID = 0,
4904     VK_FAULT_TYPE_UNASSIGNED = 1,
4905     VK_FAULT_TYPE_IMPLEMENTATION = 2,
4906     VK_FAULT_TYPE_SYSTEM = 3,
4907     VK_FAULT_TYPE_PHYSICAL_DEVICE = 4,
4908     VK_FAULT_TYPE_COMMAND_BUFFER_FULL = 5,
4909     VK_FAULT_TYPE_INVALID_API_USAGE = 6,
4910     VK_FAULT_TYPE_MAX_ENUM = 0x7FFFFFFF
4911 } VkFaultType;
4912 
4913 typedef enum VkFaultQueryBehavior {
4914     VK_FAULT_QUERY_BEHAVIOR_GET_AND_CLEAR_ALL_FAULTS = 0,
4915     VK_FAULT_QUERY_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF
4916 } VkFaultQueryBehavior;
4917 
4918 typedef enum VkPipelineMatchControl {
4919     VK_PIPELINE_MATCH_CONTROL_APPLICATION_UUID_EXACT_MATCH = 0,
4920     VK_PIPELINE_MATCH_CONTROL_MAX_ENUM = 0x7FFFFFFF
4921 } VkPipelineMatchControl;
4922 
4923 typedef enum VkPipelineCacheValidationVersion {
4924     VK_PIPELINE_CACHE_VALIDATION_VERSION_SAFETY_CRITICAL_ONE = 1,
4925     VK_PIPELINE_CACHE_VALIDATION_VERSION_MAX_ENUM = 0x7FFFFFFF
4926 } VkPipelineCacheValidationVersion;
4927 typedef struct VkPhysicalDeviceVulkanSC10Features {
4928     VkStructureType    sType;
4929     void*              pNext;
4930     VkBool32           shaderAtomicInstructions;
4931 } VkPhysicalDeviceVulkanSC10Features;
4932 
4933 typedef struct VkPhysicalDeviceVulkanSC10Properties {
4934     VkStructureType    sType;
4935     void*              pNext;
4936     VkBool32           deviceNoDynamicHostAllocations;
4937     VkBool32           deviceDestroyFreesMemory;
4938     VkBool32           commandPoolMultipleCommandBuffersRecording;
4939     VkBool32           commandPoolResetCommandBuffer;
4940     VkBool32           commandBufferSimultaneousUse;
4941     VkBool32           secondaryCommandBufferNullOrImagelessFramebuffer;
4942     VkBool32           recycleDescriptorSetMemory;
4943     VkBool32           recyclePipelineMemory;
4944     uint32_t           maxRenderPassSubpasses;
4945     uint32_t           maxRenderPassDependencies;
4946     uint32_t           maxSubpassInputAttachments;
4947     uint32_t           maxSubpassPreserveAttachments;
4948     uint32_t           maxFramebufferAttachments;
4949     uint32_t           maxDescriptorSetLayoutBindings;
4950     uint32_t           maxQueryFaultCount;
4951     uint32_t           maxCallbackFaultCount;
4952     uint32_t           maxCommandPoolCommandBuffers;
4953     VkDeviceSize       maxCommandBufferSize;
4954 } VkPhysicalDeviceVulkanSC10Properties;
4955 
4956 typedef struct VkPipelinePoolSize {
4957     VkStructureType    sType;
4958     const void*        pNext;
4959     VkDeviceSize       poolEntrySize;
4960     uint32_t           poolEntryCount;
4961 } VkPipelinePoolSize;
4962 
4963 typedef struct VkDeviceObjectReservationCreateInfo {
4964     VkStructureType                     sType;
4965     const void*                         pNext;
4966     uint32_t                            pipelineCacheCreateInfoCount;
4967     const VkPipelineCacheCreateInfo*    pPipelineCacheCreateInfos;
4968     uint32_t                            pipelinePoolSizeCount;
4969     const VkPipelinePoolSize*           pPipelinePoolSizes;
4970     uint32_t                            semaphoreRequestCount;
4971     uint32_t                            commandBufferRequestCount;
4972     uint32_t                            fenceRequestCount;
4973     uint32_t                            deviceMemoryRequestCount;
4974     uint32_t                            bufferRequestCount;
4975     uint32_t                            imageRequestCount;
4976     uint32_t                            eventRequestCount;
4977     uint32_t                            queryPoolRequestCount;
4978     uint32_t                            bufferViewRequestCount;
4979     uint32_t                            imageViewRequestCount;
4980     uint32_t                            layeredImageViewRequestCount;
4981     uint32_t                            pipelineCacheRequestCount;
4982     uint32_t                            pipelineLayoutRequestCount;
4983     uint32_t                            renderPassRequestCount;
4984     uint32_t                            graphicsPipelineRequestCount;
4985     uint32_t                            computePipelineRequestCount;
4986     uint32_t                            descriptorSetLayoutRequestCount;
4987     uint32_t                            samplerRequestCount;
4988     uint32_t                            descriptorPoolRequestCount;
4989     uint32_t                            descriptorSetRequestCount;
4990     uint32_t                            framebufferRequestCount;
4991     uint32_t                            commandPoolRequestCount;
4992     uint32_t                            samplerYcbcrConversionRequestCount;
4993     uint32_t                            surfaceRequestCount;
4994     uint32_t                            swapchainRequestCount;
4995     uint32_t                            displayModeRequestCount;
4996     uint32_t                            subpassDescriptionRequestCount;
4997     uint32_t                            attachmentDescriptionRequestCount;
4998     uint32_t                            descriptorSetLayoutBindingRequestCount;
4999     uint32_t                            descriptorSetLayoutBindingLimit;
5000     uint32_t                            maxImageViewMipLevels;
5001     uint32_t                            maxImageViewArrayLayers;
5002     uint32_t                            maxLayeredImageViewMipLevels;
5003     uint32_t                            maxOcclusionQueriesPerPool;
5004     uint32_t                            maxPipelineStatisticsQueriesPerPool;
5005     uint32_t                            maxTimestampQueriesPerPool;
5006     uint32_t                            maxImmutableSamplersPerDescriptorSetLayout;
5007 } VkDeviceObjectReservationCreateInfo;
5008 
5009 typedef struct VkCommandPoolMemoryReservationCreateInfo {
5010     VkStructureType    sType;
5011     const void*        pNext;
5012     VkDeviceSize       commandPoolReservedSize;
5013     uint32_t           commandPoolMaxCommandBuffers;
5014 } VkCommandPoolMemoryReservationCreateInfo;
5015 
5016 typedef struct VkCommandPoolMemoryConsumption {
5017     VkStructureType    sType;
5018     void*              pNext;
5019     VkDeviceSize       commandPoolAllocated;
5020     VkDeviceSize       commandPoolReservedSize;
5021     VkDeviceSize       commandBufferAllocated;
5022 } VkCommandPoolMemoryConsumption;
5023 
5024 typedef struct VkFaultData {
5025     VkStructureType    sType;
5026     void*              pNext;
5027     VkFaultLevel       faultLevel;
5028     VkFaultType        faultType;
5029 } VkFaultData;
5030 
5031 typedef void (VKAPI_PTR *PFN_vkFaultCallbackFunction)(
5032     VkBool32                                    unrecordedFaults,
5033     uint32_t                                    faultCount,
5034     const VkFaultData*                          pFaults);
5035 
5036 typedef struct VkFaultCallbackInfo {
5037     VkStructureType                sType;
5038     void*                          pNext;
5039     uint32_t                       faultCount;
5040     VkFaultData*                   pFaults;
5041     PFN_vkFaultCallbackFunction    pfnFaultCallback;
5042 } VkFaultCallbackInfo;
5043 
5044 typedef struct VkPipelineOfflineCreateInfo {
5045     VkStructureType           sType;
5046     const void*               pNext;
5047     uint8_t                   pipelineIdentifier[VK_UUID_SIZE];
5048     VkPipelineMatchControl    matchControl;
5049     VkDeviceSize              poolEntrySize;
5050 } VkPipelineOfflineCreateInfo;
5051 
5052 typedef struct VkPipelineCacheStageValidationIndexEntry {
5053     uint64_t    codeSize;
5054     uint64_t    codeOffset;
5055 } VkPipelineCacheStageValidationIndexEntry;
5056 
5057 typedef struct VkPipelineCacheSafetyCriticalIndexEntry {
5058     uint8_t     pipelineIdentifier[VK_UUID_SIZE];
5059     uint64_t    pipelineMemorySize;
5060     uint64_t    jsonSize;
5061     uint64_t    jsonOffset;
5062     uint32_t    stageIndexCount;
5063     uint32_t    stageIndexStride;
5064     uint64_t    stageIndexOffset;
5065 } VkPipelineCacheSafetyCriticalIndexEntry;
5066 
5067 typedef struct VkPipelineCacheHeaderVersionSafetyCriticalOne {
5068     VkPipelineCacheHeaderVersionOne     headerVersionOne;
5069     VkPipelineCacheValidationVersion    validationVersion;
5070     uint32_t                            implementationData;
5071     uint32_t                            pipelineIndexCount;
5072     uint32_t                            pipelineIndexStride;
5073     uint64_t                            pipelineIndexOffset;
5074 } VkPipelineCacheHeaderVersionSafetyCriticalOne;
5075 
5076 typedef void (VKAPI_PTR *PFN_vkGetCommandPoolMemoryConsumption)(VkDevice device, VkCommandPool commandPool, VkCommandBuffer commandBuffer, VkCommandPoolMemoryConsumption* pConsumption);
5077 typedef VkResult (VKAPI_PTR *PFN_vkGetFaultData)(VkDevice device, VkFaultQueryBehavior faultQueryBehavior, VkBool32* pUnrecordedFaults, uint32_t* pFaultCount, VkFaultData* pFaults);
5078 
5079 #ifndef VK_NO_PROTOTYPES
5080 VKAPI_ATTR void VKAPI_CALL vkGetCommandPoolMemoryConsumption(
5081     VkDevice                                    device,
5082     VkCommandPool                               commandPool,
5083     VkCommandBuffer                             commandBuffer,
5084     VkCommandPoolMemoryConsumption*             pConsumption);
5085 
5086 VKAPI_ATTR VkResult VKAPI_CALL vkGetFaultData(
5087     VkDevice                                    device,
5088     VkFaultQueryBehavior                        faultQueryBehavior,
5089     VkBool32*                                   pUnrecordedFaults,
5090     uint32_t*                                   pFaultCount,
5091     VkFaultData*                                pFaults);
5092 #endif
5093 
5094 
5095 #define VK_KHR_surface 1
5096 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
5097 #define VK_KHR_SURFACE_SPEC_VERSION       25
5098 #define VK_KHR_SURFACE_EXTENSION_NAME     "VK_KHR_surface"
5099 
5100 typedef enum VkPresentModeKHR {
5101     VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
5102     VK_PRESENT_MODE_MAILBOX_KHR = 1,
5103     VK_PRESENT_MODE_FIFO_KHR = 2,
5104     VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,
5105     VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,
5106     VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,
5107     VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
5108 } VkPresentModeKHR;
5109 
5110 typedef enum VkColorSpaceKHR {
5111     VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,
5112     VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
5113     VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
5114     VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003,
5115     VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
5116     VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
5117     VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
5118     VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
5119     VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
5120     VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
5121     VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
5122     VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
5123     VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
5124     VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
5125     VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014,
5126     VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF
5127 } VkColorSpaceKHR;
5128 
5129 typedef enum VkSurfaceTransformFlagBitsKHR {
5130     VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
5131     VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
5132     VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
5133     VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
5134     VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
5135     VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
5136     VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
5137     VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
5138     VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
5139     VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
5140 } VkSurfaceTransformFlagBitsKHR;
5141 
5142 typedef enum VkCompositeAlphaFlagBitsKHR {
5143     VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
5144     VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
5145     VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
5146     VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
5147     VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
5148 } VkCompositeAlphaFlagBitsKHR;
5149 typedef VkFlags VkCompositeAlphaFlagsKHR;
5150 typedef VkFlags VkSurfaceTransformFlagsKHR;
5151 typedef struct VkSurfaceCapabilitiesKHR {
5152     uint32_t                         minImageCount;
5153     uint32_t                         maxImageCount;
5154     VkExtent2D                       currentExtent;
5155     VkExtent2D                       minImageExtent;
5156     VkExtent2D                       maxImageExtent;
5157     uint32_t                         maxImageArrayLayers;
5158     VkSurfaceTransformFlagsKHR       supportedTransforms;
5159     VkSurfaceTransformFlagBitsKHR    currentTransform;
5160     VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
5161     VkImageUsageFlags                supportedUsageFlags;
5162 } VkSurfaceCapabilitiesKHR;
5163 
5164 typedef struct VkSurfaceFormatKHR {
5165     VkFormat           format;
5166     VkColorSpaceKHR    colorSpace;
5167 } VkSurfaceFormatKHR;
5168 
5169 typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator);
5170 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
5171 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
5172 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
5173 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
5174 
5175 #ifndef VK_NO_PROTOTYPES
5176 VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
5177     VkInstance                                  instance,
5178     VkSurfaceKHR                                surface,
5179     const VkAllocationCallbacks*                pAllocator);
5180 
5181 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
5182     VkPhysicalDevice                            physicalDevice,
5183     uint32_t                                    queueFamilyIndex,
5184     VkSurfaceKHR                                surface,
5185     VkBool32*                                   pSupported);
5186 
5187 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
5188     VkPhysicalDevice                            physicalDevice,
5189     VkSurfaceKHR                                surface,
5190     VkSurfaceCapabilitiesKHR*                   pSurfaceCapabilities);
5191 
5192 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR(
5193     VkPhysicalDevice                            physicalDevice,
5194     VkSurfaceKHR                                surface,
5195     uint32_t*                                   pSurfaceFormatCount,
5196     VkSurfaceFormatKHR*                         pSurfaceFormats);
5197 
5198 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
5199     VkPhysicalDevice                            physicalDevice,
5200     VkSurfaceKHR                                surface,
5201     uint32_t*                                   pPresentModeCount,
5202     VkPresentModeKHR*                           pPresentModes);
5203 #endif
5204 
5205 
5206 #define VK_KHR_swapchain 1
5207 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
5208 #define VK_KHR_SWAPCHAIN_SPEC_VERSION     70
5209 #define VK_KHR_SWAPCHAIN_EXTENSION_NAME   "VK_KHR_swapchain"
5210 
5211 typedef enum VkSwapchainCreateFlagBitsKHR {
5212     VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0x00000001,
5213     VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0x00000002,
5214     VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 0x00000004,
5215     VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
5216 } VkSwapchainCreateFlagBitsKHR;
5217 typedef VkFlags VkSwapchainCreateFlagsKHR;
5218 
5219 typedef enum VkDeviceGroupPresentModeFlagBitsKHR {
5220     VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 0x00000001,
5221     VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 0x00000002,
5222     VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 0x00000004,
5223     VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 0x00000008,
5224     VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
5225 } VkDeviceGroupPresentModeFlagBitsKHR;
5226 typedef VkFlags VkDeviceGroupPresentModeFlagsKHR;
5227 typedef struct VkSwapchainCreateInfoKHR {
5228     VkStructureType                  sType;
5229     const void*                      pNext;
5230     VkSwapchainCreateFlagsKHR        flags;
5231     VkSurfaceKHR                     surface;
5232     uint32_t                         minImageCount;
5233     VkFormat                         imageFormat;
5234     VkColorSpaceKHR                  imageColorSpace;
5235     VkExtent2D                       imageExtent;
5236     uint32_t                         imageArrayLayers;
5237     VkImageUsageFlags                imageUsage;
5238     VkSharingMode                    imageSharingMode;
5239     uint32_t                         queueFamilyIndexCount;
5240     const uint32_t*                  pQueueFamilyIndices;
5241     VkSurfaceTransformFlagBitsKHR    preTransform;
5242     VkCompositeAlphaFlagBitsKHR      compositeAlpha;
5243     VkPresentModeKHR                 presentMode;
5244     VkBool32                         clipped;
5245     VkSwapchainKHR                   oldSwapchain;
5246 } VkSwapchainCreateInfoKHR;
5247 
5248 typedef struct VkPresentInfoKHR {
5249     VkStructureType          sType;
5250     const void*              pNext;
5251     uint32_t                 waitSemaphoreCount;
5252     const VkSemaphore*       pWaitSemaphores;
5253     uint32_t                 swapchainCount;
5254     const VkSwapchainKHR*    pSwapchains;
5255     const uint32_t*          pImageIndices;
5256     VkResult*                pResults;
5257 } VkPresentInfoKHR;
5258 
5259 typedef struct VkImageSwapchainCreateInfoKHR {
5260     VkStructureType    sType;
5261     const void*        pNext;
5262     VkSwapchainKHR     swapchain;
5263 } VkImageSwapchainCreateInfoKHR;
5264 
5265 typedef struct VkBindImageMemorySwapchainInfoKHR {
5266     VkStructureType    sType;
5267     const void*        pNext;
5268     VkSwapchainKHR     swapchain;
5269     uint32_t           imageIndex;
5270 } VkBindImageMemorySwapchainInfoKHR;
5271 
5272 typedef struct VkAcquireNextImageInfoKHR {
5273     VkStructureType    sType;
5274     const void*        pNext;
5275     VkSwapchainKHR     swapchain;
5276     uint64_t           timeout;
5277     VkSemaphore        semaphore;
5278     VkFence            fence;
5279     uint32_t           deviceMask;
5280 } VkAcquireNextImageInfoKHR;
5281 
5282 typedef struct VkDeviceGroupPresentCapabilitiesKHR {
5283     VkStructureType                     sType;
5284     void*                               pNext;
5285     uint32_t                            presentMask[VK_MAX_DEVICE_GROUP_SIZE];
5286     VkDeviceGroupPresentModeFlagsKHR    modes;
5287 } VkDeviceGroupPresentCapabilitiesKHR;
5288 
5289 typedef struct VkDeviceGroupPresentInfoKHR {
5290     VkStructureType                        sType;
5291     const void*                            pNext;
5292     uint32_t                               swapchainCount;
5293     const uint32_t*                        pDeviceMasks;
5294     VkDeviceGroupPresentModeFlagBitsKHR    mode;
5295 } VkDeviceGroupPresentInfoKHR;
5296 
5297 typedef struct VkDeviceGroupSwapchainCreateInfoKHR {
5298     VkStructureType                     sType;
5299     const void*                         pNext;
5300     VkDeviceGroupPresentModeFlagsKHR    modes;
5301 } VkDeviceGroupSwapchainCreateInfoKHR;
5302 
5303 typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain);
5304 typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages);
5305 typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex);
5306 typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR* pPresentInfo);
5307 typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHR)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
5308 typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes);
5309 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects);
5310 typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImage2KHR)(VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex);
5311 
5312 #ifndef VK_NO_PROTOTYPES
5313 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(
5314     VkDevice                                    device,
5315     const VkSwapchainCreateInfoKHR*             pCreateInfo,
5316     const VkAllocationCallbacks*                pAllocator,
5317     VkSwapchainKHR*                             pSwapchain);
5318 
5319 VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR(
5320     VkDevice                                    device,
5321     VkSwapchainKHR                              swapchain,
5322     uint32_t*                                   pSwapchainImageCount,
5323     VkImage*                                    pSwapchainImages);
5324 
5325 VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(
5326     VkDevice                                    device,
5327     VkSwapchainKHR                              swapchain,
5328     uint64_t                                    timeout,
5329     VkSemaphore                                 semaphore,
5330     VkFence                                     fence,
5331     uint32_t*                                   pImageIndex);
5332 
5333 VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
5334     VkQueue                                     queue,
5335     const VkPresentInfoKHR*                     pPresentInfo);
5336 
5337 VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupPresentCapabilitiesKHR(
5338     VkDevice                                    device,
5339     VkDeviceGroupPresentCapabilitiesKHR*        pDeviceGroupPresentCapabilities);
5340 
5341 VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHR(
5342     VkDevice                                    device,
5343     VkSurfaceKHR                                surface,
5344     VkDeviceGroupPresentModeFlagsKHR*           pModes);
5345 
5346 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHR(
5347     VkPhysicalDevice                            physicalDevice,
5348     VkSurfaceKHR                                surface,
5349     uint32_t*                                   pRectCount,
5350     VkRect2D*                                   pRects);
5351 
5352 VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHR(
5353     VkDevice                                    device,
5354     const VkAcquireNextImageInfoKHR*            pAcquireInfo,
5355     uint32_t*                                   pImageIndex);
5356 #endif
5357 
5358 
5359 #define VK_KHR_display 1
5360 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
5361 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
5362 #define VK_KHR_DISPLAY_SPEC_VERSION       23
5363 #define VK_KHR_DISPLAY_EXTENSION_NAME     "VK_KHR_display"
5364 typedef VkFlags VkDisplayModeCreateFlagsKHR;
5365 
5366 typedef enum VkDisplayPlaneAlphaFlagBitsKHR {
5367     VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
5368     VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
5369     VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
5370     VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
5371     VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
5372 } VkDisplayPlaneAlphaFlagBitsKHR;
5373 typedef VkFlags VkDisplayPlaneAlphaFlagsKHR;
5374 typedef VkFlags VkDisplaySurfaceCreateFlagsKHR;
5375 typedef struct VkDisplayModeParametersKHR {
5376     VkExtent2D    visibleRegion;
5377     uint32_t      refreshRate;
5378 } VkDisplayModeParametersKHR;
5379 
5380 typedef struct VkDisplayModeCreateInfoKHR {
5381     VkStructureType                sType;
5382     const void*                    pNext;
5383     VkDisplayModeCreateFlagsKHR    flags;
5384     VkDisplayModeParametersKHR     parameters;
5385 } VkDisplayModeCreateInfoKHR;
5386 
5387 typedef struct VkDisplayModePropertiesKHR {
5388     VkDisplayModeKHR              displayMode;
5389     VkDisplayModeParametersKHR    parameters;
5390 } VkDisplayModePropertiesKHR;
5391 
5392 typedef struct VkDisplayPlaneCapabilitiesKHR {
5393     VkDisplayPlaneAlphaFlagsKHR    supportedAlpha;
5394     VkOffset2D                     minSrcPosition;
5395     VkOffset2D                     maxSrcPosition;
5396     VkExtent2D                     minSrcExtent;
5397     VkExtent2D                     maxSrcExtent;
5398     VkOffset2D                     minDstPosition;
5399     VkOffset2D                     maxDstPosition;
5400     VkExtent2D                     minDstExtent;
5401     VkExtent2D                     maxDstExtent;
5402 } VkDisplayPlaneCapabilitiesKHR;
5403 
5404 typedef struct VkDisplayPlanePropertiesKHR {
5405     VkDisplayKHR    currentDisplay;
5406     uint32_t        currentStackIndex;
5407 } VkDisplayPlanePropertiesKHR;
5408 
5409 typedef struct VkDisplayPropertiesKHR {
5410     VkDisplayKHR                  display;
5411     const char*                   displayName;
5412     VkExtent2D                    physicalDimensions;
5413     VkExtent2D                    physicalResolution;
5414     VkSurfaceTransformFlagsKHR    supportedTransforms;
5415     VkBool32                      planeReorderPossible;
5416     VkBool32                      persistentContent;
5417 } VkDisplayPropertiesKHR;
5418 
5419 typedef struct VkDisplaySurfaceCreateInfoKHR {
5420     VkStructureType                   sType;
5421     const void*                       pNext;
5422     VkDisplaySurfaceCreateFlagsKHR    flags;
5423     VkDisplayModeKHR                  displayMode;
5424     uint32_t                          planeIndex;
5425     uint32_t                          planeStackIndex;
5426     VkSurfaceTransformFlagBitsKHR     transform;
5427     float                             globalAlpha;
5428     VkDisplayPlaneAlphaFlagBitsKHR    alphaMode;
5429     VkExtent2D                        imageExtent;
5430 } VkDisplaySurfaceCreateInfoKHR;
5431 
5432 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
5433 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
5434 typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays);
5435 typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
5436 typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
5437 typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
5438 typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
5439 
5440 #ifndef VK_NO_PROTOTYPES
5441 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR(
5442     VkPhysicalDevice                            physicalDevice,
5443     uint32_t*                                   pPropertyCount,
5444     VkDisplayPropertiesKHR*                     pProperties);
5445 
5446 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
5447     VkPhysicalDevice                            physicalDevice,
5448     uint32_t*                                   pPropertyCount,
5449     VkDisplayPlanePropertiesKHR*                pProperties);
5450 
5451 VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR(
5452     VkPhysicalDevice                            physicalDevice,
5453     uint32_t                                    planeIndex,
5454     uint32_t*                                   pDisplayCount,
5455     VkDisplayKHR*                               pDisplays);
5456 
5457 VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR(
5458     VkPhysicalDevice                            physicalDevice,
5459     VkDisplayKHR                                display,
5460     uint32_t*                                   pPropertyCount,
5461     VkDisplayModePropertiesKHR*                 pProperties);
5462 
5463 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR(
5464     VkPhysicalDevice                            physicalDevice,
5465     VkDisplayKHR                                display,
5466     const VkDisplayModeCreateInfoKHR*           pCreateInfo,
5467     const VkAllocationCallbacks*                pAllocator,
5468     VkDisplayModeKHR*                           pMode);
5469 
5470 VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR(
5471     VkPhysicalDevice                            physicalDevice,
5472     VkDisplayModeKHR                            mode,
5473     uint32_t                                    planeIndex,
5474     VkDisplayPlaneCapabilitiesKHR*              pCapabilities);
5475 
5476 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
5477     VkInstance                                  instance,
5478     const VkDisplaySurfaceCreateInfoKHR*        pCreateInfo,
5479     const VkAllocationCallbacks*                pAllocator,
5480     VkSurfaceKHR*                               pSurface);
5481 #endif
5482 
5483 
5484 #define VK_KHR_display_swapchain 1
5485 #define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 10
5486 #define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
5487 typedef struct VkDisplayPresentInfoKHR {
5488     VkStructureType    sType;
5489     const void*        pNext;
5490     VkRect2D           srcRect;
5491     VkRect2D           dstRect;
5492     VkBool32           persistent;
5493 } VkDisplayPresentInfoKHR;
5494 
5495 typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains);
5496 
5497 #ifndef VK_NO_PROTOTYPES
5498 VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR(
5499     VkDevice                                    device,
5500     uint32_t                                    swapchainCount,
5501     const VkSwapchainCreateInfoKHR*             pCreateInfos,
5502     const VkAllocationCallbacks*                pAllocator,
5503     VkSwapchainKHR*                             pSwapchains);
5504 #endif
5505 
5506 
5507 #define VK_KHR_external_memory_fd 1
5508 #define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1
5509 #define VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHR_external_memory_fd"
5510 typedef struct VkImportMemoryFdInfoKHR {
5511     VkStructureType                       sType;
5512     const void*                           pNext;
5513     VkExternalMemoryHandleTypeFlagBits    handleType;
5514     int                                   fd;
5515 } VkImportMemoryFdInfoKHR;
5516 
5517 typedef struct VkMemoryFdPropertiesKHR {
5518     VkStructureType    sType;
5519     void*              pNext;
5520     uint32_t           memoryTypeBits;
5521 } VkMemoryFdPropertiesKHR;
5522 
5523 typedef struct VkMemoryGetFdInfoKHR {
5524     VkStructureType                       sType;
5525     const void*                           pNext;
5526     VkDeviceMemory                        memory;
5527     VkExternalMemoryHandleTypeFlagBits    handleType;
5528 } VkMemoryGetFdInfoKHR;
5529 
5530 typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdKHR)(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd);
5531 typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdPropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties);
5532 
5533 #ifndef VK_NO_PROTOTYPES
5534 VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdKHR(
5535     VkDevice                                    device,
5536     const VkMemoryGetFdInfoKHR*                 pGetFdInfo,
5537     int*                                        pFd);
5538 
5539 VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHR(
5540     VkDevice                                    device,
5541     VkExternalMemoryHandleTypeFlagBits          handleType,
5542     int                                         fd,
5543     VkMemoryFdPropertiesKHR*                    pMemoryFdProperties);
5544 #endif
5545 
5546 
5547 #define VK_KHR_external_semaphore_fd 1
5548 #define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1
5549 #define VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHR_external_semaphore_fd"
5550 typedef struct VkImportSemaphoreFdInfoKHR {
5551     VkStructureType                          sType;
5552     const void*                              pNext;
5553     VkSemaphore                              semaphore;
5554     VkSemaphoreImportFlags                   flags;
5555     VkExternalSemaphoreHandleTypeFlagBits    handleType;
5556     int                                      fd;
5557 } VkImportSemaphoreFdInfoKHR;
5558 
5559 typedef struct VkSemaphoreGetFdInfoKHR {
5560     VkStructureType                          sType;
5561     const void*                              pNext;
5562     VkSemaphore                              semaphore;
5563     VkExternalSemaphoreHandleTypeFlagBits    handleType;
5564 } VkSemaphoreGetFdInfoKHR;
5565 
5566 typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreFdKHR)(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
5567 typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreFdKHR)(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd);
5568 
5569 #ifndef VK_NO_PROTOTYPES
5570 VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreFdKHR(
5571     VkDevice                                    device,
5572     const VkImportSemaphoreFdInfoKHR*           pImportSemaphoreFdInfo);
5573 
5574 VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHR(
5575     VkDevice                                    device,
5576     const VkSemaphoreGetFdInfoKHR*              pGetFdInfo,
5577     int*                                        pFd);
5578 #endif
5579 
5580 
5581 #define VK_KHR_incremental_present 1
5582 #define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 2
5583 #define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present"
5584 typedef struct VkRectLayerKHR {
5585     VkOffset2D    offset;
5586     VkExtent2D    extent;
5587     uint32_t      layer;
5588 } VkRectLayerKHR;
5589 
5590 typedef struct VkPresentRegionKHR {
5591     uint32_t                 rectangleCount;
5592     const VkRectLayerKHR*    pRectangles;
5593 } VkPresentRegionKHR;
5594 
5595 typedef struct VkPresentRegionsKHR {
5596     VkStructureType              sType;
5597     const void*                  pNext;
5598     uint32_t                     swapchainCount;
5599     const VkPresentRegionKHR*    pRegions;
5600 } VkPresentRegionsKHR;
5601 
5602 
5603 
5604 #define VK_KHR_shared_presentable_image 1
5605 #define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1
5606 #define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image"
5607 typedef struct VkSharedPresentSurfaceCapabilitiesKHR {
5608     VkStructureType      sType;
5609     void*                pNext;
5610     VkImageUsageFlags    sharedPresentSupportedUsageFlags;
5611 } VkSharedPresentSurfaceCapabilitiesKHR;
5612 
5613 typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainStatusKHR)(VkDevice device, VkSwapchainKHR swapchain);
5614 
5615 #ifndef VK_NO_PROTOTYPES
5616 VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainStatusKHR(
5617     VkDevice                                    device,
5618     VkSwapchainKHR                              swapchain);
5619 #endif
5620 
5621 
5622 #define VK_KHR_external_fence_fd 1
5623 #define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1
5624 #define VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME "VK_KHR_external_fence_fd"
5625 typedef struct VkImportFenceFdInfoKHR {
5626     VkStructureType                      sType;
5627     const void*                          pNext;
5628     VkFence                              fence;
5629     VkFenceImportFlags                   flags;
5630     VkExternalFenceHandleTypeFlagBits    handleType;
5631     int                                  fd;
5632 } VkImportFenceFdInfoKHR;
5633 
5634 typedef struct VkFenceGetFdInfoKHR {
5635     VkStructureType                      sType;
5636     const void*                          pNext;
5637     VkFence                              fence;
5638     VkExternalFenceHandleTypeFlagBits    handleType;
5639 } VkFenceGetFdInfoKHR;
5640 
5641 typedef VkResult (VKAPI_PTR *PFN_vkImportFenceFdKHR)(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
5642 typedef VkResult (VKAPI_PTR *PFN_vkGetFenceFdKHR)(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd);
5643 
5644 #ifndef VK_NO_PROTOTYPES
5645 VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceFdKHR(
5646     VkDevice                                    device,
5647     const VkImportFenceFdInfoKHR*               pImportFenceFdInfo);
5648 
5649 VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceFdKHR(
5650     VkDevice                                    device,
5651     const VkFenceGetFdInfoKHR*                  pGetFdInfo,
5652     int*                                        pFd);
5653 #endif
5654 
5655 
5656 #define VK_KHR_performance_query 1
5657 #define VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION 1
5658 #define VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME "VK_KHR_performance_query"
5659 
5660 typedef enum VkPerformanceCounterUnitKHR {
5661     VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0,
5662     VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1,
5663     VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2,
5664     VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3,
5665     VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4,
5666     VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5,
5667     VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6,
5668     VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7,
5669     VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8,
5670     VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9,
5671     VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10,
5672     VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 0x7FFFFFFF
5673 } VkPerformanceCounterUnitKHR;
5674 
5675 typedef enum VkPerformanceCounterScopeKHR {
5676     VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0,
5677     VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1,
5678     VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2,
5679     VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR,
5680     VK_QUERY_SCOPE_RENDER_PASS_KHR = VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR,
5681     VK_QUERY_SCOPE_COMMAND_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR,
5682     VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 0x7FFFFFFF
5683 } VkPerformanceCounterScopeKHR;
5684 
5685 typedef enum VkPerformanceCounterStorageKHR {
5686     VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0,
5687     VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1,
5688     VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2,
5689     VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3,
5690     VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4,
5691     VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5,
5692     VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 0x7FFFFFFF
5693 } VkPerformanceCounterStorageKHR;
5694 
5695 typedef enum VkPerformanceCounterDescriptionFlagBitsKHR {
5696     VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR = 0x00000001,
5697     VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR = 0x00000002,
5698     VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR,
5699     VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR,
5700     VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
5701 } VkPerformanceCounterDescriptionFlagBitsKHR;
5702 typedef VkFlags VkPerformanceCounterDescriptionFlagsKHR;
5703 
5704 typedef enum VkAcquireProfilingLockFlagBitsKHR {
5705     VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
5706 } VkAcquireProfilingLockFlagBitsKHR;
5707 typedef VkFlags VkAcquireProfilingLockFlagsKHR;
5708 typedef struct VkPhysicalDevicePerformanceQueryFeaturesKHR {
5709     VkStructureType    sType;
5710     void*              pNext;
5711     VkBool32           performanceCounterQueryPools;
5712     VkBool32           performanceCounterMultipleQueryPools;
5713 } VkPhysicalDevicePerformanceQueryFeaturesKHR;
5714 
5715 typedef struct VkPhysicalDevicePerformanceQueryPropertiesKHR {
5716     VkStructureType    sType;
5717     void*              pNext;
5718     VkBool32           allowCommandBufferQueryCopies;
5719 } VkPhysicalDevicePerformanceQueryPropertiesKHR;
5720 
5721 typedef struct VkPerformanceCounterKHR {
5722     VkStructureType                   sType;
5723     void*                             pNext;
5724     VkPerformanceCounterUnitKHR       unit;
5725     VkPerformanceCounterScopeKHR      scope;
5726     VkPerformanceCounterStorageKHR    storage;
5727     uint8_t                           uuid[VK_UUID_SIZE];
5728 } VkPerformanceCounterKHR;
5729 
5730 typedef struct VkPerformanceCounterDescriptionKHR {
5731     VkStructureType                            sType;
5732     void*                                      pNext;
5733     VkPerformanceCounterDescriptionFlagsKHR    flags;
5734     char                                       name[VK_MAX_DESCRIPTION_SIZE];
5735     char                                       category[VK_MAX_DESCRIPTION_SIZE];
5736     char                                       description[VK_MAX_DESCRIPTION_SIZE];
5737 } VkPerformanceCounterDescriptionKHR;
5738 
5739 typedef struct VkQueryPoolPerformanceCreateInfoKHR {
5740     VkStructureType    sType;
5741     const void*        pNext;
5742     uint32_t           queueFamilyIndex;
5743     uint32_t           counterIndexCount;
5744     const uint32_t*    pCounterIndices;
5745 } VkQueryPoolPerformanceCreateInfoKHR;
5746 
5747 typedef union VkPerformanceCounterResultKHR {
5748     int32_t     int32;
5749     int64_t     int64;
5750     uint32_t    uint32;
5751     uint64_t    uint64;
5752     float       float32;
5753     double      float64;
5754 } VkPerformanceCounterResultKHR;
5755 
5756 typedef struct VkAcquireProfilingLockInfoKHR {
5757     VkStructureType                   sType;
5758     const void*                       pNext;
5759     VkAcquireProfilingLockFlagsKHR    flags;
5760     uint64_t                          timeout;
5761 } VkAcquireProfilingLockInfoKHR;
5762 
5763 typedef struct VkPerformanceQuerySubmitInfoKHR {
5764     VkStructureType    sType;
5765     const void*        pNext;
5766     uint32_t           counterPassIndex;
5767 } VkPerformanceQuerySubmitInfoKHR;
5768 
5769 typedef struct VkPerformanceQueryReservationInfoKHR {
5770     VkStructureType    sType;
5771     const void*        pNext;
5772     uint32_t           maxPerformanceQueriesPerPool;
5773 } VkPerformanceQueryReservationInfoKHR;
5774 
5775 typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, uint32_t* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions);
5776 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)(VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, uint32_t* pNumPasses);
5777 typedef VkResult (VKAPI_PTR *PFN_vkAcquireProfilingLockKHR)(VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo);
5778 typedef void (VKAPI_PTR *PFN_vkReleaseProfilingLockKHR)(VkDevice device);
5779 
5780 #ifndef VK_NO_PROTOTYPES
5781 VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
5782     VkPhysicalDevice                            physicalDevice,
5783     uint32_t                                    queueFamilyIndex,
5784     uint32_t*                                   pCounterCount,
5785     VkPerformanceCounterKHR*                    pCounters,
5786     VkPerformanceCounterDescriptionKHR*         pCounterDescriptions);
5787 
5788 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
5789     VkPhysicalDevice                            physicalDevice,
5790     const VkQueryPoolPerformanceCreateInfoKHR*  pPerformanceQueryCreateInfo,
5791     uint32_t*                                   pNumPasses);
5792 
5793 VKAPI_ATTR VkResult VKAPI_CALL vkAcquireProfilingLockKHR(
5794     VkDevice                                    device,
5795     const VkAcquireProfilingLockInfoKHR*        pInfo);
5796 
5797 VKAPI_ATTR void VKAPI_CALL vkReleaseProfilingLockKHR(
5798     VkDevice                                    device);
5799 #endif
5800 
5801 
5802 #define VK_KHR_get_surface_capabilities2 1
5803 #define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1
5804 #define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2"
5805 typedef struct VkPhysicalDeviceSurfaceInfo2KHR {
5806     VkStructureType    sType;
5807     const void*        pNext;
5808     VkSurfaceKHR       surface;
5809 } VkPhysicalDeviceSurfaceInfo2KHR;
5810 
5811 typedef struct VkSurfaceCapabilities2KHR {
5812     VkStructureType             sType;
5813     void*                       pNext;
5814     VkSurfaceCapabilitiesKHR    surfaceCapabilities;
5815 } VkSurfaceCapabilities2KHR;
5816 
5817 typedef struct VkSurfaceFormat2KHR {
5818     VkStructureType       sType;
5819     void*                 pNext;
5820     VkSurfaceFormatKHR    surfaceFormat;
5821 } VkSurfaceFormat2KHR;
5822 
5823 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
5824 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats);
5825 
5826 #ifndef VK_NO_PROTOTYPES
5827 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2KHR(
5828     VkPhysicalDevice                            physicalDevice,
5829     const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
5830     VkSurfaceCapabilities2KHR*                  pSurfaceCapabilities);
5831 
5832 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormats2KHR(
5833     VkPhysicalDevice                            physicalDevice,
5834     const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
5835     uint32_t*                                   pSurfaceFormatCount,
5836     VkSurfaceFormat2KHR*                        pSurfaceFormats);
5837 #endif
5838 
5839 
5840 #define VK_KHR_get_display_properties2 1
5841 #define VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION 1
5842 #define VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_display_properties2"
5843 typedef struct VkDisplayProperties2KHR {
5844     VkStructureType           sType;
5845     void*                     pNext;
5846     VkDisplayPropertiesKHR    displayProperties;
5847 } VkDisplayProperties2KHR;
5848 
5849 typedef struct VkDisplayPlaneProperties2KHR {
5850     VkStructureType                sType;
5851     void*                          pNext;
5852     VkDisplayPlanePropertiesKHR    displayPlaneProperties;
5853 } VkDisplayPlaneProperties2KHR;
5854 
5855 typedef struct VkDisplayModeProperties2KHR {
5856     VkStructureType               sType;
5857     void*                         pNext;
5858     VkDisplayModePropertiesKHR    displayModeProperties;
5859 } VkDisplayModeProperties2KHR;
5860 
5861 typedef struct VkDisplayPlaneInfo2KHR {
5862     VkStructureType     sType;
5863     const void*         pNext;
5864     VkDisplayModeKHR    mode;
5865     uint32_t            planeIndex;
5866 } VkDisplayPlaneInfo2KHR;
5867 
5868 typedef struct VkDisplayPlaneCapabilities2KHR {
5869     VkStructureType                  sType;
5870     void*                            pNext;
5871     VkDisplayPlaneCapabilitiesKHR    capabilities;
5872 } VkDisplayPlaneCapabilities2KHR;
5873 
5874 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties);
5875 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties);
5876 typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModeProperties2KHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties);
5877 typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities);
5878 
5879 #ifndef VK_NO_PROTOTYPES
5880 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayProperties2KHR(
5881     VkPhysicalDevice                            physicalDevice,
5882     uint32_t*                                   pPropertyCount,
5883     VkDisplayProperties2KHR*                    pProperties);
5884 
5885 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
5886     VkPhysicalDevice                            physicalDevice,
5887     uint32_t*                                   pPropertyCount,
5888     VkDisplayPlaneProperties2KHR*               pProperties);
5889 
5890 VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModeProperties2KHR(
5891     VkPhysicalDevice                            physicalDevice,
5892     VkDisplayKHR                                display,
5893     uint32_t*                                   pPropertyCount,
5894     VkDisplayModeProperties2KHR*                pProperties);
5895 
5896 VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilities2KHR(
5897     VkPhysicalDevice                            physicalDevice,
5898     const VkDisplayPlaneInfo2KHR*               pDisplayPlaneInfo,
5899     VkDisplayPlaneCapabilities2KHR*             pCapabilities);
5900 #endif
5901 
5902 
5903 #define VK_KHR_shader_clock 1
5904 #define VK_KHR_SHADER_CLOCK_SPEC_VERSION  1
5905 #define VK_KHR_SHADER_CLOCK_EXTENSION_NAME "VK_KHR_shader_clock"
5906 typedef struct VkPhysicalDeviceShaderClockFeaturesKHR {
5907     VkStructureType    sType;
5908     void*              pNext;
5909     VkBool32           shaderSubgroupClock;
5910     VkBool32           shaderDeviceClock;
5911 } VkPhysicalDeviceShaderClockFeaturesKHR;
5912 
5913 
5914 
5915 #define VK_KHR_swapchain_mutable_format 1
5916 #define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION 1
5917 #define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME "VK_KHR_swapchain_mutable_format"
5918 
5919 
5920 #define VK_KHR_shader_terminate_invocation 1
5921 #define VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION 1
5922 #define VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME "VK_KHR_shader_terminate_invocation"
5923 typedef struct VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR {
5924     VkStructureType    sType;
5925     void*              pNext;
5926     VkBool32           shaderTerminateInvocation;
5927 } VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR;
5928 
5929 
5930 
5931 #define VK_KHR_fragment_shading_rate 1
5932 #define VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION 2
5933 #define VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME "VK_KHR_fragment_shading_rate"
5934 
5935 typedef enum VkFragmentShadingRateCombinerOpKHR {
5936     VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR = 0,
5937     VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR = 1,
5938     VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR = 2,
5939     VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR = 3,
5940     VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR = 4,
5941     VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_ENUM_KHR = 0x7FFFFFFF
5942 } VkFragmentShadingRateCombinerOpKHR;
5943 typedef struct VkFragmentShadingRateAttachmentInfoKHR {
5944     VkStructureType                  sType;
5945     const void*                      pNext;
5946     const VkAttachmentReference2*    pFragmentShadingRateAttachment;
5947     VkExtent2D                       shadingRateAttachmentTexelSize;
5948 } VkFragmentShadingRateAttachmentInfoKHR;
5949 
5950 typedef struct VkPipelineFragmentShadingRateStateCreateInfoKHR {
5951     VkStructureType                       sType;
5952     const void*                           pNext;
5953     VkExtent2D                            fragmentSize;
5954     VkFragmentShadingRateCombinerOpKHR    combinerOps[2];
5955 } VkPipelineFragmentShadingRateStateCreateInfoKHR;
5956 
5957 typedef struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR {
5958     VkStructureType    sType;
5959     void*              pNext;
5960     VkBool32           pipelineFragmentShadingRate;
5961     VkBool32           primitiveFragmentShadingRate;
5962     VkBool32           attachmentFragmentShadingRate;
5963 } VkPhysicalDeviceFragmentShadingRateFeaturesKHR;
5964 
5965 typedef struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR {
5966     VkStructureType          sType;
5967     void*                    pNext;
5968     VkExtent2D               minFragmentShadingRateAttachmentTexelSize;
5969     VkExtent2D               maxFragmentShadingRateAttachmentTexelSize;
5970     uint32_t                 maxFragmentShadingRateAttachmentTexelSizeAspectRatio;
5971     VkBool32                 primitiveFragmentShadingRateWithMultipleViewports;
5972     VkBool32                 layeredShadingRateAttachments;
5973     VkBool32                 fragmentShadingRateNonTrivialCombinerOps;
5974     VkExtent2D               maxFragmentSize;
5975     uint32_t                 maxFragmentSizeAspectRatio;
5976     uint32_t                 maxFragmentShadingRateCoverageSamples;
5977     VkSampleCountFlagBits    maxFragmentShadingRateRasterizationSamples;
5978     VkBool32                 fragmentShadingRateWithShaderDepthStencilWrites;
5979     VkBool32                 fragmentShadingRateWithSampleMask;
5980     VkBool32                 fragmentShadingRateWithShaderSampleMask;
5981     VkBool32                 fragmentShadingRateWithConservativeRasterization;
5982     VkBool32                 fragmentShadingRateWithFragmentShaderInterlock;
5983     VkBool32                 fragmentShadingRateWithCustomSampleLocations;
5984     VkBool32                 fragmentShadingRateStrictMultiplyCombiner;
5985 } VkPhysicalDeviceFragmentShadingRatePropertiesKHR;
5986 
5987 typedef struct VkPhysicalDeviceFragmentShadingRateKHR {
5988     VkStructureType       sType;
5989     void*                 pNext;
5990     VkSampleCountFlags    sampleCounts;
5991     VkExtent2D            fragmentSize;
5992 } VkPhysicalDeviceFragmentShadingRateKHR;
5993 
5994 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates);
5995 typedef void (VKAPI_PTR *PFN_vkCmdSetFragmentShadingRateKHR)(VkCommandBuffer           commandBuffer, const VkExtent2D*                           pFragmentSize, const VkFragmentShadingRateCombinerOpKHR    combinerOps[2]);
5996 
5997 #ifndef VK_NO_PROTOTYPES
5998 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceFragmentShadingRatesKHR(
5999     VkPhysicalDevice                            physicalDevice,
6000     uint32_t*                                   pFragmentShadingRateCount,
6001     VkPhysicalDeviceFragmentShadingRateKHR*     pFragmentShadingRates);
6002 
6003 VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateKHR(
6004     VkCommandBuffer                             commandBuffer,
6005     const VkExtent2D*                           pFragmentSize,
6006     const VkFragmentShadingRateCombinerOpKHR    combinerOps[2]);
6007 #endif
6008 
6009 
6010 #define VK_KHR_object_refresh 1
6011 #define VK_KHR_OBJECT_REFRESH_SPEC_VERSION 1
6012 #define VK_KHR_OBJECT_REFRESH_EXTENSION_NAME "VK_KHR_object_refresh"
6013 
6014 typedef enum VkRefreshObjectFlagBitsKHR {
6015     VK_REFRESH_OBJECT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
6016 } VkRefreshObjectFlagBitsKHR;
6017 typedef VkFlags VkRefreshObjectFlagsKHR;
6018 typedef struct VkRefreshObjectKHR {
6019     VkObjectType               objectType;
6020     uint64_t                   objectHandle;
6021     VkRefreshObjectFlagsKHR    flags;
6022 } VkRefreshObjectKHR;
6023 
6024 typedef struct VkRefreshObjectListKHR {
6025     VkStructureType              sType;
6026     const void*                  pNext;
6027     uint32_t                     objectCount;
6028     const VkRefreshObjectKHR*    pObjects;
6029 } VkRefreshObjectListKHR;
6030 
6031 typedef void (VKAPI_PTR *PFN_vkCmdRefreshObjectsKHR)(VkCommandBuffer commandBuffer, const VkRefreshObjectListKHR* pRefreshObjects);
6032 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceRefreshableObjectTypesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pRefreshableObjectTypeCount, VkObjectType* pRefreshableObjectTypes);
6033 
6034 #ifndef VK_NO_PROTOTYPES
6035 VKAPI_ATTR void VKAPI_CALL vkCmdRefreshObjectsKHR(
6036     VkCommandBuffer                             commandBuffer,
6037     const VkRefreshObjectListKHR*               pRefreshObjects);
6038 
6039 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceRefreshableObjectTypesKHR(
6040     VkPhysicalDevice                            physicalDevice,
6041     uint32_t*                                   pRefreshableObjectTypeCount,
6042     VkObjectType*                               pRefreshableObjectTypes);
6043 #endif
6044 
6045 
6046 #define VK_KHR_synchronization2 1
6047 typedef uint64_t VkFlags64;
6048 #define VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION 1
6049 #define VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME "VK_KHR_synchronization2"
6050 typedef VkFlags64 VkPipelineStageFlags2KHR;
6051 
6052 // Flag bits for VkPipelineStageFlagBits2KHR
6053 typedef VkFlags64 VkPipelineStageFlagBits2KHR;
6054 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_NONE_KHR = 0ULL;
6055 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR = 0x00000001ULL;
6056 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR = 0x00000002ULL;
6057 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR = 0x00000004ULL;
6058 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR = 0x00000008ULL;
6059 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR = 0x00000010ULL;
6060 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR = 0x00000020ULL;
6061 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR = 0x00000040ULL;
6062 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR = 0x00000080ULL;
6063 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR = 0x00000100ULL;
6064 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR = 0x00000200ULL;
6065 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR = 0x00000400ULL;
6066 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR = 0x00000800ULL;
6067 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR = 0x00001000ULL;
6068 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR = 0x00001000ULL;
6069 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR = 0x00002000ULL;
6070 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_HOST_BIT_KHR = 0x00004000ULL;
6071 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR = 0x00008000ULL;
6072 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR = 0x00010000ULL;
6073 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_COPY_BIT_KHR = 0x100000000ULL;
6074 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR = 0x200000000ULL;
6075 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_BLIT_BIT_KHR = 0x400000000ULL;
6076 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR = 0x800000000ULL;
6077 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR = 0x1000000000ULL;
6078 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR = 0x2000000000ULL;
6079 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR = 0x4000000000ULL;
6080 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000ULL;
6081 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000ULL;
6082 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV = 0x00020000ULL;
6083 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000ULL;
6084 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV = 0x00400000ULL;
6085 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000ULL;
6086 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR = 0x00200000ULL;
6087 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV = 0x00200000ULL;
6088 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 0x02000000ULL;
6089 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000ULL;
6090 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV = 0x00080000ULL;
6091 static const VkPipelineStageFlagBits2KHR VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV = 0x00100000ULL;
6092 
6093 typedef VkFlags64 VkAccessFlags2KHR;
6094 
6095 // Flag bits for VkAccessFlagBits2KHR
6096 typedef VkFlags64 VkAccessFlagBits2KHR;
6097 static const VkAccessFlagBits2KHR VK_ACCESS_2_NONE_KHR = 0ULL;
6098 static const VkAccessFlagBits2KHR VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR = 0x00000001ULL;
6099 static const VkAccessFlagBits2KHR VK_ACCESS_2_INDEX_READ_BIT_KHR = 0x00000002ULL;
6100 static const VkAccessFlagBits2KHR VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR = 0x00000004ULL;
6101 static const VkAccessFlagBits2KHR VK_ACCESS_2_UNIFORM_READ_BIT_KHR = 0x00000008ULL;
6102 static const VkAccessFlagBits2KHR VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR = 0x00000010ULL;
6103 static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_READ_BIT_KHR = 0x00000020ULL;
6104 static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_WRITE_BIT_KHR = 0x00000040ULL;
6105 static const VkAccessFlagBits2KHR VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR = 0x00000080ULL;
6106 static const VkAccessFlagBits2KHR VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR = 0x00000100ULL;
6107 static const VkAccessFlagBits2KHR VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR = 0x00000200ULL;
6108 static const VkAccessFlagBits2KHR VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR = 0x00000400ULL;
6109 static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFER_READ_BIT_KHR = 0x00000800ULL;
6110 static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR = 0x00001000ULL;
6111 static const VkAccessFlagBits2KHR VK_ACCESS_2_HOST_READ_BIT_KHR = 0x00002000ULL;
6112 static const VkAccessFlagBits2KHR VK_ACCESS_2_HOST_WRITE_BIT_KHR = 0x00004000ULL;
6113 static const VkAccessFlagBits2KHR VK_ACCESS_2_MEMORY_READ_BIT_KHR = 0x00008000ULL;
6114 static const VkAccessFlagBits2KHR VK_ACCESS_2_MEMORY_WRITE_BIT_KHR = 0x00010000ULL;
6115 static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR = 0x100000000ULL;
6116 static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR = 0x200000000ULL;
6117 static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR = 0x400000000ULL;
6118 static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000ULL;
6119 static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000ULL;
6120 static const VkAccessFlagBits2KHR VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000ULL;
6121 static const VkAccessFlagBits2KHR VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000ULL;
6122 static const VkAccessFlagBits2KHR VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000ULL;
6123 static const VkAccessFlagBits2KHR VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000ULL;
6124 static const VkAccessFlagBits2KHR VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000ULL;
6125 static const VkAccessFlagBits2KHR VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV = 0x00800000ULL;
6126 static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000ULL;
6127 static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000ULL;
6128 static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV = 0x00200000ULL;
6129 static const VkAccessFlagBits2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 0x00400000ULL;
6130 static const VkAccessFlagBits2KHR VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000ULL;
6131 static const VkAccessFlagBits2KHR VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000ULL;
6132 
6133 
6134 typedef enum VkSubmitFlagBitsKHR {
6135     VK_SUBMIT_PROTECTED_BIT_KHR = 0x00000001,
6136     VK_SUBMIT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
6137 } VkSubmitFlagBitsKHR;
6138 typedef VkFlags VkSubmitFlagsKHR;
6139 typedef struct VkMemoryBarrier2KHR {
6140     VkStructureType             sType;
6141     const void*                 pNext;
6142     VkPipelineStageFlags2KHR    srcStageMask;
6143     VkAccessFlags2KHR           srcAccessMask;
6144     VkPipelineStageFlags2KHR    dstStageMask;
6145     VkAccessFlags2KHR           dstAccessMask;
6146 } VkMemoryBarrier2KHR;
6147 
6148 typedef struct VkBufferMemoryBarrier2KHR {
6149     VkStructureType             sType;
6150     const void*                 pNext;
6151     VkPipelineStageFlags2KHR    srcStageMask;
6152     VkAccessFlags2KHR           srcAccessMask;
6153     VkPipelineStageFlags2KHR    dstStageMask;
6154     VkAccessFlags2KHR           dstAccessMask;
6155     uint32_t                    srcQueueFamilyIndex;
6156     uint32_t                    dstQueueFamilyIndex;
6157     VkBuffer                    buffer;
6158     VkDeviceSize                offset;
6159     VkDeviceSize                size;
6160 } VkBufferMemoryBarrier2KHR;
6161 
6162 typedef struct VkImageMemoryBarrier2KHR {
6163     VkStructureType             sType;
6164     const void*                 pNext;
6165     VkPipelineStageFlags2KHR    srcStageMask;
6166     VkAccessFlags2KHR           srcAccessMask;
6167     VkPipelineStageFlags2KHR    dstStageMask;
6168     VkAccessFlags2KHR           dstAccessMask;
6169     VkImageLayout               oldLayout;
6170     VkImageLayout               newLayout;
6171     uint32_t                    srcQueueFamilyIndex;
6172     uint32_t                    dstQueueFamilyIndex;
6173     VkImage                     image;
6174     VkImageSubresourceRange     subresourceRange;
6175 } VkImageMemoryBarrier2KHR;
6176 
6177 typedef struct VkDependencyInfoKHR {
6178     VkStructureType                     sType;
6179     const void*                         pNext;
6180     VkDependencyFlags                   dependencyFlags;
6181     uint32_t                            memoryBarrierCount;
6182     const VkMemoryBarrier2KHR*          pMemoryBarriers;
6183     uint32_t                            bufferMemoryBarrierCount;
6184     const VkBufferMemoryBarrier2KHR*    pBufferMemoryBarriers;
6185     uint32_t                            imageMemoryBarrierCount;
6186     const VkImageMemoryBarrier2KHR*     pImageMemoryBarriers;
6187 } VkDependencyInfoKHR;
6188 
6189 typedef struct VkSemaphoreSubmitInfoKHR {
6190     VkStructureType             sType;
6191     const void*                 pNext;
6192     VkSemaphore                 semaphore;
6193     uint64_t                    value;
6194     VkPipelineStageFlags2KHR    stageMask;
6195     uint32_t                    deviceIndex;
6196 } VkSemaphoreSubmitInfoKHR;
6197 
6198 typedef struct VkCommandBufferSubmitInfoKHR {
6199     VkStructureType    sType;
6200     const void*        pNext;
6201     VkCommandBuffer    commandBuffer;
6202     uint32_t           deviceMask;
6203 } VkCommandBufferSubmitInfoKHR;
6204 
6205 typedef struct VkSubmitInfo2KHR {
6206     VkStructureType                        sType;
6207     const void*                            pNext;
6208     VkSubmitFlagsKHR                       flags;
6209     uint32_t                               waitSemaphoreInfoCount;
6210     const VkSemaphoreSubmitInfoKHR*        pWaitSemaphoreInfos;
6211     uint32_t                               commandBufferInfoCount;
6212     const VkCommandBufferSubmitInfoKHR*    pCommandBufferInfos;
6213     uint32_t                               signalSemaphoreInfoCount;
6214     const VkSemaphoreSubmitInfoKHR*        pSignalSemaphoreInfos;
6215 } VkSubmitInfo2KHR;
6216 
6217 typedef struct VkPhysicalDeviceSynchronization2FeaturesKHR {
6218     VkStructureType    sType;
6219     void*              pNext;
6220     VkBool32           synchronization2;
6221 } VkPhysicalDeviceSynchronization2FeaturesKHR;
6222 
6223 typedef struct VkQueueFamilyCheckpointProperties2NV {
6224     VkStructureType             sType;
6225     void*                       pNext;
6226     VkPipelineStageFlags2KHR    checkpointExecutionStageMask;
6227 } VkQueueFamilyCheckpointProperties2NV;
6228 
6229 typedef struct VkCheckpointData2NV {
6230     VkStructureType             sType;
6231     void*                       pNext;
6232     VkPipelineStageFlags2KHR    stage;
6233     void*                       pCheckpointMarker;
6234 } VkCheckpointData2NV;
6235 
6236 typedef void (VKAPI_PTR *PFN_vkCmdSetEvent2KHR)(VkCommandBuffer                   commandBuffer, VkEvent                                             event, const VkDependencyInfoKHR*                          pDependencyInfo);
6237 typedef void (VKAPI_PTR *PFN_vkCmdResetEvent2KHR)(VkCommandBuffer                   commandBuffer, VkEvent                                             event, VkPipelineStageFlags2KHR            stageMask);
6238 typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents2KHR)(VkCommandBuffer                   commandBuffer, uint32_t                                            eventCount, const VkEvent*                     pEvents, const VkDependencyInfoKHR*         pDependencyInfos);
6239 typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier2KHR)(VkCommandBuffer                   commandBuffer, const VkDependencyInfoKHR*                                pDependencyInfo);
6240 typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp2KHR)(VkCommandBuffer                   commandBuffer, VkPipelineStageFlags2KHR            stage, VkQueryPool                                         queryPool, uint32_t                                            query);
6241 typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit2KHR)(VkQueue                           queue, uint32_t                            submitCount, const VkSubmitInfo2KHR*           pSubmits, VkFence           fence);
6242 typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarker2AMD)(VkCommandBuffer                   commandBuffer, VkPipelineStageFlags2KHR            stage, VkBuffer                                            dstBuffer, VkDeviceSize                                        dstOffset, uint32_t                                            marker);
6243 typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointData2NV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData);
6244 
6245 #ifndef VK_NO_PROTOTYPES
6246 VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent2KHR(
6247     VkCommandBuffer                             commandBuffer,
6248     VkEvent                                     event,
6249     const VkDependencyInfoKHR*                  pDependencyInfo);
6250 
6251 VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent2KHR(
6252     VkCommandBuffer                             commandBuffer,
6253     VkEvent                                     event,
6254     VkPipelineStageFlags2KHR                    stageMask);
6255 
6256 VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents2KHR(
6257     VkCommandBuffer                             commandBuffer,
6258     uint32_t                                    eventCount,
6259     const VkEvent*                              pEvents,
6260     const VkDependencyInfoKHR*                  pDependencyInfos);
6261 
6262 VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier2KHR(
6263     VkCommandBuffer                             commandBuffer,
6264     const VkDependencyInfoKHR*                  pDependencyInfo);
6265 
6266 VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp2KHR(
6267     VkCommandBuffer                             commandBuffer,
6268     VkPipelineStageFlags2KHR                    stage,
6269     VkQueryPool                                 queryPool,
6270     uint32_t                                    query);
6271 
6272 VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit2KHR(
6273     VkQueue                                     queue,
6274     uint32_t                                    submitCount,
6275     const VkSubmitInfo2KHR*                     pSubmits,
6276     VkFence                                     fence);
6277 
6278 VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarker2AMD(
6279     VkCommandBuffer                             commandBuffer,
6280     VkPipelineStageFlags2KHR                    stage,
6281     VkBuffer                                    dstBuffer,
6282     VkDeviceSize                                dstOffset,
6283     uint32_t                                    marker);
6284 
6285 VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointData2NV(
6286     VkQueue                                     queue,
6287     uint32_t*                                   pCheckpointDataCount,
6288     VkCheckpointData2NV*                        pCheckpointData);
6289 #endif
6290 
6291 
6292 #define VK_KHR_copy_commands2 1
6293 #define VK_KHR_COPY_COMMANDS_2_SPEC_VERSION 1
6294 #define VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME "VK_KHR_copy_commands2"
6295 typedef struct VkBufferCopy2KHR {
6296     VkStructureType    sType;
6297     const void*        pNext;
6298     VkDeviceSize       srcOffset;
6299     VkDeviceSize       dstOffset;
6300     VkDeviceSize       size;
6301 } VkBufferCopy2KHR;
6302 
6303 typedef struct VkCopyBufferInfo2KHR {
6304     VkStructureType            sType;
6305     const void*                pNext;
6306     VkBuffer                   srcBuffer;
6307     VkBuffer                   dstBuffer;
6308     uint32_t                   regionCount;
6309     const VkBufferCopy2KHR*    pRegions;
6310 } VkCopyBufferInfo2KHR;
6311 
6312 typedef struct VkImageCopy2KHR {
6313     VkStructureType             sType;
6314     const void*                 pNext;
6315     VkImageSubresourceLayers    srcSubresource;
6316     VkOffset3D                  srcOffset;
6317     VkImageSubresourceLayers    dstSubresource;
6318     VkOffset3D                  dstOffset;
6319     VkExtent3D                  extent;
6320 } VkImageCopy2KHR;
6321 
6322 typedef struct VkCopyImageInfo2KHR {
6323     VkStructureType           sType;
6324     const void*               pNext;
6325     VkImage                   srcImage;
6326     VkImageLayout             srcImageLayout;
6327     VkImage                   dstImage;
6328     VkImageLayout             dstImageLayout;
6329     uint32_t                  regionCount;
6330     const VkImageCopy2KHR*    pRegions;
6331 } VkCopyImageInfo2KHR;
6332 
6333 typedef struct VkBufferImageCopy2KHR {
6334     VkStructureType             sType;
6335     const void*                 pNext;
6336     VkDeviceSize                bufferOffset;
6337     uint32_t                    bufferRowLength;
6338     uint32_t                    bufferImageHeight;
6339     VkImageSubresourceLayers    imageSubresource;
6340     VkOffset3D                  imageOffset;
6341     VkExtent3D                  imageExtent;
6342 } VkBufferImageCopy2KHR;
6343 
6344 typedef struct VkCopyBufferToImageInfo2KHR {
6345     VkStructureType                 sType;
6346     const void*                     pNext;
6347     VkBuffer                        srcBuffer;
6348     VkImage                         dstImage;
6349     VkImageLayout                   dstImageLayout;
6350     uint32_t                        regionCount;
6351     const VkBufferImageCopy2KHR*    pRegions;
6352 } VkCopyBufferToImageInfo2KHR;
6353 
6354 typedef struct VkCopyImageToBufferInfo2KHR {
6355     VkStructureType                 sType;
6356     const void*                     pNext;
6357     VkImage                         srcImage;
6358     VkImageLayout                   srcImageLayout;
6359     VkBuffer                        dstBuffer;
6360     uint32_t                        regionCount;
6361     const VkBufferImageCopy2KHR*    pRegions;
6362 } VkCopyImageToBufferInfo2KHR;
6363 
6364 typedef struct VkImageBlit2KHR {
6365     VkStructureType             sType;
6366     const void*                 pNext;
6367     VkImageSubresourceLayers    srcSubresource;
6368     VkOffset3D                  srcOffsets[2];
6369     VkImageSubresourceLayers    dstSubresource;
6370     VkOffset3D                  dstOffsets[2];
6371 } VkImageBlit2KHR;
6372 
6373 typedef struct VkBlitImageInfo2KHR {
6374     VkStructureType           sType;
6375     const void*               pNext;
6376     VkImage                   srcImage;
6377     VkImageLayout             srcImageLayout;
6378     VkImage                   dstImage;
6379     VkImageLayout             dstImageLayout;
6380     uint32_t                  regionCount;
6381     const VkImageBlit2KHR*    pRegions;
6382     VkFilter                  filter;
6383 } VkBlitImageInfo2KHR;
6384 
6385 typedef struct VkImageResolve2KHR {
6386     VkStructureType             sType;
6387     const void*                 pNext;
6388     VkImageSubresourceLayers    srcSubresource;
6389     VkOffset3D                  srcOffset;
6390     VkImageSubresourceLayers    dstSubresource;
6391     VkOffset3D                  dstOffset;
6392     VkExtent3D                  extent;
6393 } VkImageResolve2KHR;
6394 
6395 typedef struct VkResolveImageInfo2KHR {
6396     VkStructureType              sType;
6397     const void*                  pNext;
6398     VkImage                      srcImage;
6399     VkImageLayout                srcImageLayout;
6400     VkImage                      dstImage;
6401     VkImageLayout                dstImageLayout;
6402     uint32_t                     regionCount;
6403     const VkImageResolve2KHR*    pRegions;
6404 } VkResolveImageInfo2KHR;
6405 
6406 typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2KHR* pCopyBufferInfo);
6407 typedef void (VKAPI_PTR *PFN_vkCmdCopyImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2KHR* pCopyImageInfo);
6408 typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo);
6409 typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo);
6410 typedef void (VKAPI_PTR *PFN_vkCmdBlitImage2KHR)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2KHR* pBlitImageInfo);
6411 typedef void (VKAPI_PTR *PFN_vkCmdResolveImage2KHR)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2KHR* pResolveImageInfo);
6412 
6413 #ifndef VK_NO_PROTOTYPES
6414 VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer2KHR(
6415     VkCommandBuffer                             commandBuffer,
6416     const VkCopyBufferInfo2KHR*                 pCopyBufferInfo);
6417 
6418 VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage2KHR(
6419     VkCommandBuffer                             commandBuffer,
6420     const VkCopyImageInfo2KHR*                  pCopyImageInfo);
6421 
6422 VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage2KHR(
6423     VkCommandBuffer                             commandBuffer,
6424     const VkCopyBufferToImageInfo2KHR*          pCopyBufferToImageInfo);
6425 
6426 VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer2KHR(
6427     VkCommandBuffer                             commandBuffer,
6428     const VkCopyImageToBufferInfo2KHR*          pCopyImageToBufferInfo);
6429 
6430 VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage2KHR(
6431     VkCommandBuffer                             commandBuffer,
6432     const VkBlitImageInfo2KHR*                  pBlitImageInfo);
6433 
6434 VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage2KHR(
6435     VkCommandBuffer                             commandBuffer,
6436     const VkResolveImageInfo2KHR*               pResolveImageInfo);
6437 #endif
6438 
6439 
6440 #define VK_EXT_depth_range_unrestricted 1
6441 #define VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION 1
6442 #define VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME "VK_EXT_depth_range_unrestricted"
6443 
6444 
6445 #define VK_EXT_texture_compression_astc_hdr 1
6446 #define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION 1
6447 #define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME "VK_EXT_texture_compression_astc_hdr"
6448 typedef struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT {
6449     VkStructureType    sType;
6450     void*              pNext;
6451     VkBool32           textureCompressionASTC_HDR;
6452 } VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT;
6453 
6454 
6455 
6456 #define VK_EXT_astc_decode_mode 1
6457 #define VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION 1
6458 #define VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME "VK_EXT_astc_decode_mode"
6459 typedef struct VkImageViewASTCDecodeModeEXT {
6460     VkStructureType    sType;
6461     const void*        pNext;
6462     VkFormat           decodeMode;
6463 } VkImageViewASTCDecodeModeEXT;
6464 
6465 typedef struct VkPhysicalDeviceASTCDecodeFeaturesEXT {
6466     VkStructureType    sType;
6467     void*              pNext;
6468     VkBool32           decodeModeSharedExponent;
6469 } VkPhysicalDeviceASTCDecodeFeaturesEXT;
6470 
6471 
6472 
6473 #define VK_EXT_direct_mode_display 1
6474 #define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1
6475 #define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display"
6476 typedef VkResult (VKAPI_PTR *PFN_vkReleaseDisplayEXT)(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
6477 
6478 #ifndef VK_NO_PROTOTYPES
6479 VKAPI_ATTR VkResult VKAPI_CALL vkReleaseDisplayEXT(
6480     VkPhysicalDevice                            physicalDevice,
6481     VkDisplayKHR                                display);
6482 #endif
6483 
6484 
6485 #define VK_EXT_display_surface_counter 1
6486 #define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1
6487 #define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter"
6488 
6489 typedef enum VkSurfaceCounterFlagBitsEXT {
6490     VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 0x00000001,
6491     VK_SURFACE_COUNTER_VBLANK_EXT = VK_SURFACE_COUNTER_VBLANK_BIT_EXT,
6492     VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
6493 } VkSurfaceCounterFlagBitsEXT;
6494 typedef VkFlags VkSurfaceCounterFlagsEXT;
6495 typedef struct VkSurfaceCapabilities2EXT {
6496     VkStructureType                  sType;
6497     void*                            pNext;
6498     uint32_t                         minImageCount;
6499     uint32_t                         maxImageCount;
6500     VkExtent2D                       currentExtent;
6501     VkExtent2D                       minImageExtent;
6502     VkExtent2D                       maxImageExtent;
6503     uint32_t                         maxImageArrayLayers;
6504     VkSurfaceTransformFlagsKHR       supportedTransforms;
6505     VkSurfaceTransformFlagBitsKHR    currentTransform;
6506     VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
6507     VkImageUsageFlags                supportedUsageFlags;
6508     VkSurfaceCounterFlagsEXT         supportedSurfaceCounters;
6509 } VkSurfaceCapabilities2EXT;
6510 
6511 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
6512 
6513 #ifndef VK_NO_PROTOTYPES
6514 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT(
6515     VkPhysicalDevice                            physicalDevice,
6516     VkSurfaceKHR                                surface,
6517     VkSurfaceCapabilities2EXT*                  pSurfaceCapabilities);
6518 #endif
6519 
6520 
6521 #define VK_EXT_display_control 1
6522 #define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1
6523 #define VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME "VK_EXT_display_control"
6524 
6525 typedef enum VkDisplayPowerStateEXT {
6526     VK_DISPLAY_POWER_STATE_OFF_EXT = 0,
6527     VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,
6528     VK_DISPLAY_POWER_STATE_ON_EXT = 2,
6529     VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 0x7FFFFFFF
6530 } VkDisplayPowerStateEXT;
6531 
6532 typedef enum VkDeviceEventTypeEXT {
6533     VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0,
6534     VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
6535 } VkDeviceEventTypeEXT;
6536 
6537 typedef enum VkDisplayEventTypeEXT {
6538     VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,
6539     VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
6540 } VkDisplayEventTypeEXT;
6541 typedef struct VkDisplayPowerInfoEXT {
6542     VkStructureType           sType;
6543     const void*               pNext;
6544     VkDisplayPowerStateEXT    powerState;
6545 } VkDisplayPowerInfoEXT;
6546 
6547 typedef struct VkDeviceEventInfoEXT {
6548     VkStructureType         sType;
6549     const void*             pNext;
6550     VkDeviceEventTypeEXT    deviceEvent;
6551 } VkDeviceEventInfoEXT;
6552 
6553 typedef struct VkDisplayEventInfoEXT {
6554     VkStructureType          sType;
6555     const void*              pNext;
6556     VkDisplayEventTypeEXT    displayEvent;
6557 } VkDisplayEventInfoEXT;
6558 
6559 typedef struct VkSwapchainCounterCreateInfoEXT {
6560     VkStructureType             sType;
6561     const void*                 pNext;
6562     VkSurfaceCounterFlagsEXT    surfaceCounters;
6563 } VkSwapchainCounterCreateInfoEXT;
6564 
6565 typedef VkResult (VKAPI_PTR *PFN_vkDisplayPowerControlEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
6566 typedef VkResult (VKAPI_PTR *PFN_vkRegisterDeviceEventEXT)(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
6567 typedef VkResult (VKAPI_PTR *PFN_vkRegisterDisplayEventEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
6568 typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainCounterEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue);
6569 
6570 #ifndef VK_NO_PROTOTYPES
6571 VKAPI_ATTR VkResult VKAPI_CALL vkDisplayPowerControlEXT(
6572     VkDevice                                    device,
6573     VkDisplayKHR                                display,
6574     const VkDisplayPowerInfoEXT*                pDisplayPowerInfo);
6575 
6576 VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDeviceEventEXT(
6577     VkDevice                                    device,
6578     const VkDeviceEventInfoEXT*                 pDeviceEventInfo,
6579     const VkAllocationCallbacks*                pAllocator,
6580     VkFence*                                    pFence);
6581 
6582 VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDisplayEventEXT(
6583     VkDevice                                    device,
6584     VkDisplayKHR                                display,
6585     const VkDisplayEventInfoEXT*                pDisplayEventInfo,
6586     const VkAllocationCallbacks*                pAllocator,
6587     VkFence*                                    pFence);
6588 
6589 VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainCounterEXT(
6590     VkDevice                                    device,
6591     VkSwapchainKHR                              swapchain,
6592     VkSurfaceCounterFlagBitsEXT                 counter,
6593     uint64_t*                                   pCounterValue);
6594 #endif
6595 
6596 
6597 #define VK_EXT_discard_rectangles 1
6598 #define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1
6599 #define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
6600 
6601 typedef enum VkDiscardRectangleModeEXT {
6602     VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,
6603     VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,
6604     VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
6605 } VkDiscardRectangleModeEXT;
6606 typedef VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT;
6607 typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT {
6608     VkStructureType    sType;
6609     void*              pNext;
6610     uint32_t           maxDiscardRectangles;
6611 } VkPhysicalDeviceDiscardRectanglePropertiesEXT;
6612 
6613 typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT {
6614     VkStructureType                                  sType;
6615     const void*                                      pNext;
6616     VkPipelineDiscardRectangleStateCreateFlagsEXT    flags;
6617     VkDiscardRectangleModeEXT                        discardRectangleMode;
6618     uint32_t                                         discardRectangleCount;
6619     const VkRect2D*                                  pDiscardRectangles;
6620 } VkPipelineDiscardRectangleStateCreateInfoEXT;
6621 
6622 typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEXT)(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles);
6623 
6624 #ifndef VK_NO_PROTOTYPES
6625 VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT(
6626     VkCommandBuffer                             commandBuffer,
6627     uint32_t                                    firstDiscardRectangle,
6628     uint32_t                                    discardRectangleCount,
6629     const VkRect2D*                             pDiscardRectangles);
6630 #endif
6631 
6632 
6633 #define VK_EXT_conservative_rasterization 1
6634 #define VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION 1
6635 #define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME "VK_EXT_conservative_rasterization"
6636 
6637 typedef enum VkConservativeRasterizationModeEXT {
6638     VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0,
6639     VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1,
6640     VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2,
6641     VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
6642 } VkConservativeRasterizationModeEXT;
6643 typedef VkFlags VkPipelineRasterizationConservativeStateCreateFlagsEXT;
6644 typedef struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT {
6645     VkStructureType    sType;
6646     void*              pNext;
6647     float              primitiveOverestimationSize;
6648     float              maxExtraPrimitiveOverestimationSize;
6649     float              extraPrimitiveOverestimationSizeGranularity;
6650     VkBool32           primitiveUnderestimation;
6651     VkBool32           conservativePointAndLineRasterization;
6652     VkBool32           degenerateTrianglesRasterized;
6653     VkBool32           degenerateLinesRasterized;
6654     VkBool32           fullyCoveredFragmentShaderInputVariable;
6655     VkBool32           conservativeRasterizationPostDepthCoverage;
6656 } VkPhysicalDeviceConservativeRasterizationPropertiesEXT;
6657 
6658 typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT {
6659     VkStructureType                                           sType;
6660     const void*                                               pNext;
6661     VkPipelineRasterizationConservativeStateCreateFlagsEXT    flags;
6662     VkConservativeRasterizationModeEXT                        conservativeRasterizationMode;
6663     float                                                     extraPrimitiveOverestimationSize;
6664 } VkPipelineRasterizationConservativeStateCreateInfoEXT;
6665 
6666 
6667 
6668 #define VK_EXT_depth_clip_enable 1
6669 #define VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION 1
6670 #define VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME "VK_EXT_depth_clip_enable"
6671 typedef VkFlags VkPipelineRasterizationDepthClipStateCreateFlagsEXT;
6672 typedef struct VkPhysicalDeviceDepthClipEnableFeaturesEXT {
6673     VkStructureType    sType;
6674     void*              pNext;
6675     VkBool32           depthClipEnable;
6676 } VkPhysicalDeviceDepthClipEnableFeaturesEXT;
6677 
6678 typedef struct VkPipelineRasterizationDepthClipStateCreateInfoEXT {
6679     VkStructureType                                        sType;
6680     const void*                                            pNext;
6681     VkPipelineRasterizationDepthClipStateCreateFlagsEXT    flags;
6682     VkBool32                                               depthClipEnable;
6683 } VkPipelineRasterizationDepthClipStateCreateInfoEXT;
6684 
6685 
6686 
6687 #define VK_EXT_swapchain_colorspace 1
6688 #define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 4
6689 #define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace"
6690 
6691 
6692 #define VK_EXT_hdr_metadata 1
6693 #define VK_EXT_HDR_METADATA_SPEC_VERSION  2
6694 #define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata"
6695 typedef struct VkXYColorEXT {
6696     float    x;
6697     float    y;
6698 } VkXYColorEXT;
6699 
6700 typedef struct VkHdrMetadataEXT {
6701     VkStructureType    sType;
6702     const void*        pNext;
6703     VkXYColorEXT       displayPrimaryRed;
6704     VkXYColorEXT       displayPrimaryGreen;
6705     VkXYColorEXT       displayPrimaryBlue;
6706     VkXYColorEXT       whitePoint;
6707     float              maxLuminance;
6708     float              minLuminance;
6709     float              maxContentLightLevel;
6710     float              maxFrameAverageLightLevel;
6711 } VkHdrMetadataEXT;
6712 
6713 typedef void (VKAPI_PTR *PFN_vkSetHdrMetadataEXT)(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata);
6714 
6715 #ifndef VK_NO_PROTOTYPES
6716 VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT(
6717     VkDevice                                    device,
6718     uint32_t                                    swapchainCount,
6719     const VkSwapchainKHR*                       pSwapchains,
6720     const VkHdrMetadataEXT*                     pMetadata);
6721 #endif
6722 
6723 
6724 #define VK_EXT_external_memory_dma_buf 1
6725 #define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1
6726 #define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME "VK_EXT_external_memory_dma_buf"
6727 
6728 
6729 #define VK_EXT_queue_family_foreign 1
6730 #define VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION 1
6731 #define VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME "VK_EXT_queue_family_foreign"
6732 #define VK_QUEUE_FAMILY_FOREIGN_EXT       (~2U)
6733 
6734 
6735 #define VK_EXT_debug_utils 1
6736 VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugUtilsMessengerEXT)
6737 #define VK_EXT_DEBUG_UTILS_SPEC_VERSION   2
6738 #define VK_EXT_DEBUG_UTILS_EXTENSION_NAME "VK_EXT_debug_utils"
6739 typedef VkFlags VkDebugUtilsMessengerCallbackDataFlagsEXT;
6740 
6741 typedef enum VkDebugUtilsMessageSeverityFlagBitsEXT {
6742     VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001,
6743     VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 0x00000010,
6744     VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0x00000100,
6745     VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0x00001000,
6746     VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
6747 } VkDebugUtilsMessageSeverityFlagBitsEXT;
6748 
6749 typedef enum VkDebugUtilsMessageTypeFlagBitsEXT {
6750     VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0x00000001,
6751     VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0x00000002,
6752     VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004,
6753     VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
6754 } VkDebugUtilsMessageTypeFlagBitsEXT;
6755 typedef VkFlags VkDebugUtilsMessageTypeFlagsEXT;
6756 typedef VkFlags VkDebugUtilsMessageSeverityFlagsEXT;
6757 typedef VkFlags VkDebugUtilsMessengerCreateFlagsEXT;
6758 typedef struct VkDebugUtilsLabelEXT {
6759     VkStructureType    sType;
6760     const void*        pNext;
6761     const char*        pLabelName;
6762     float              color[4];
6763 } VkDebugUtilsLabelEXT;
6764 
6765 typedef struct VkDebugUtilsObjectNameInfoEXT {
6766     VkStructureType    sType;
6767     const void*        pNext;
6768     VkObjectType       objectType;
6769     uint64_t           objectHandle;
6770     const char*        pObjectName;
6771 } VkDebugUtilsObjectNameInfoEXT;
6772 
6773 typedef struct VkDebugUtilsMessengerCallbackDataEXT {
6774     VkStructureType                              sType;
6775     const void*                                  pNext;
6776     VkDebugUtilsMessengerCallbackDataFlagsEXT    flags;
6777     const char*                                  pMessageIdName;
6778     int32_t                                      messageIdNumber;
6779     const char*                                  pMessage;
6780     uint32_t                                     queueLabelCount;
6781     const VkDebugUtilsLabelEXT*                  pQueueLabels;
6782     uint32_t                                     cmdBufLabelCount;
6783     const VkDebugUtilsLabelEXT*                  pCmdBufLabels;
6784     uint32_t                                     objectCount;
6785     const VkDebugUtilsObjectNameInfoEXT*         pObjects;
6786 } VkDebugUtilsMessengerCallbackDataEXT;
6787 
6788 typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)(
6789     VkDebugUtilsMessageSeverityFlagBitsEXT           messageSeverity,
6790     VkDebugUtilsMessageTypeFlagsEXT                  messageTypes,
6791     const VkDebugUtilsMessengerCallbackDataEXT*      pCallbackData,
6792     void*                                            pUserData);
6793 
6794 typedef struct VkDebugUtilsMessengerCreateInfoEXT {
6795     VkStructureType                         sType;
6796     const void*                             pNext;
6797     VkDebugUtilsMessengerCreateFlagsEXT     flags;
6798     VkDebugUtilsMessageSeverityFlagsEXT     messageSeverity;
6799     VkDebugUtilsMessageTypeFlagsEXT         messageType;
6800     PFN_vkDebugUtilsMessengerCallbackEXT    pfnUserCallback;
6801     void*                                   pUserData;
6802 } VkDebugUtilsMessengerCreateInfoEXT;
6803 
6804 typedef struct VkDebugUtilsObjectTagInfoEXT {
6805     VkStructureType    sType;
6806     const void*        pNext;
6807     VkObjectType       objectType;
6808     uint64_t           objectHandle;
6809     uint64_t           tagName;
6810     size_t             tagSize;
6811     const void*        pTag;
6812 } VkDebugUtilsObjectTagInfoEXT;
6813 
6814 typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectNameEXT)(VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo);
6815 typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectTagEXT)(VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo);
6816 typedef void (VKAPI_PTR *PFN_vkQueueBeginDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);
6817 typedef void (VKAPI_PTR *PFN_vkQueueEndDebugUtilsLabelEXT)(VkQueue queue);
6818 typedef void (VKAPI_PTR *PFN_vkQueueInsertDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);
6819 typedef void (VKAPI_PTR *PFN_vkCmdBeginDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);
6820 typedef void (VKAPI_PTR *PFN_vkCmdEndDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer);
6821 typedef void (VKAPI_PTR *PFN_vkCmdInsertDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);
6822 typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugUtilsMessengerEXT)(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger);
6823 typedef void (VKAPI_PTR *PFN_vkDestroyDebugUtilsMessengerEXT)(VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator);
6824 typedef void (VKAPI_PTR *PFN_vkSubmitDebugUtilsMessageEXT)(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
6825 
6826 #ifndef VK_NO_PROTOTYPES
6827 VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectNameEXT(
6828     VkDevice                                    device,
6829     const VkDebugUtilsObjectNameInfoEXT*        pNameInfo);
6830 
6831 VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectTagEXT(
6832     VkDevice                                    device,
6833     const VkDebugUtilsObjectTagInfoEXT*         pTagInfo);
6834 
6835 VKAPI_ATTR void VKAPI_CALL vkQueueBeginDebugUtilsLabelEXT(
6836     VkQueue                                     queue,
6837     const VkDebugUtilsLabelEXT*                 pLabelInfo);
6838 
6839 VKAPI_ATTR void VKAPI_CALL vkQueueEndDebugUtilsLabelEXT(
6840     VkQueue                                     queue);
6841 
6842 VKAPI_ATTR void VKAPI_CALL vkQueueInsertDebugUtilsLabelEXT(
6843     VkQueue                                     queue,
6844     const VkDebugUtilsLabelEXT*                 pLabelInfo);
6845 
6846 VKAPI_ATTR void VKAPI_CALL vkCmdBeginDebugUtilsLabelEXT(
6847     VkCommandBuffer                             commandBuffer,
6848     const VkDebugUtilsLabelEXT*                 pLabelInfo);
6849 
6850 VKAPI_ATTR void VKAPI_CALL vkCmdEndDebugUtilsLabelEXT(
6851     VkCommandBuffer                             commandBuffer);
6852 
6853 VKAPI_ATTR void VKAPI_CALL vkCmdInsertDebugUtilsLabelEXT(
6854     VkCommandBuffer                             commandBuffer,
6855     const VkDebugUtilsLabelEXT*                 pLabelInfo);
6856 
6857 VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugUtilsMessengerEXT(
6858     VkInstance                                  instance,
6859     const VkDebugUtilsMessengerCreateInfoEXT*   pCreateInfo,
6860     const VkAllocationCallbacks*                pAllocator,
6861     VkDebugUtilsMessengerEXT*                   pMessenger);
6862 
6863 VKAPI_ATTR void VKAPI_CALL vkDestroyDebugUtilsMessengerEXT(
6864     VkInstance                                  instance,
6865     VkDebugUtilsMessengerEXT                    messenger,
6866     const VkAllocationCallbacks*                pAllocator);
6867 
6868 VKAPI_ATTR void VKAPI_CALL vkSubmitDebugUtilsMessageEXT(
6869     VkInstance                                  instance,
6870     VkDebugUtilsMessageSeverityFlagBitsEXT      messageSeverity,
6871     VkDebugUtilsMessageTypeFlagsEXT             messageTypes,
6872     const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
6873 #endif
6874 
6875 
6876 #define VK_EXT_shader_stencil_export 1
6877 #define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1
6878 #define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME "VK_EXT_shader_stencil_export"
6879 
6880 
6881 #define VK_EXT_sample_locations 1
6882 #define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1
6883 #define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations"
6884 typedef struct VkSampleLocationEXT {
6885     float    x;
6886     float    y;
6887 } VkSampleLocationEXT;
6888 
6889 typedef struct VkSampleLocationsInfoEXT {
6890     VkStructureType               sType;
6891     const void*                   pNext;
6892     VkSampleCountFlagBits         sampleLocationsPerPixel;
6893     VkExtent2D                    sampleLocationGridSize;
6894     uint32_t                      sampleLocationsCount;
6895     const VkSampleLocationEXT*    pSampleLocations;
6896 } VkSampleLocationsInfoEXT;
6897 
6898 typedef struct VkAttachmentSampleLocationsEXT {
6899     uint32_t                    attachmentIndex;
6900     VkSampleLocationsInfoEXT    sampleLocationsInfo;
6901 } VkAttachmentSampleLocationsEXT;
6902 
6903 typedef struct VkSubpassSampleLocationsEXT {
6904     uint32_t                    subpassIndex;
6905     VkSampleLocationsInfoEXT    sampleLocationsInfo;
6906 } VkSubpassSampleLocationsEXT;
6907 
6908 typedef struct VkRenderPassSampleLocationsBeginInfoEXT {
6909     VkStructureType                          sType;
6910     const void*                              pNext;
6911     uint32_t                                 attachmentInitialSampleLocationsCount;
6912     const VkAttachmentSampleLocationsEXT*    pAttachmentInitialSampleLocations;
6913     uint32_t                                 postSubpassSampleLocationsCount;
6914     const VkSubpassSampleLocationsEXT*       pPostSubpassSampleLocations;
6915 } VkRenderPassSampleLocationsBeginInfoEXT;
6916 
6917 typedef struct VkPipelineSampleLocationsStateCreateInfoEXT {
6918     VkStructureType             sType;
6919     const void*                 pNext;
6920     VkBool32                    sampleLocationsEnable;
6921     VkSampleLocationsInfoEXT    sampleLocationsInfo;
6922 } VkPipelineSampleLocationsStateCreateInfoEXT;
6923 
6924 typedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT {
6925     VkStructureType       sType;
6926     void*                 pNext;
6927     VkSampleCountFlags    sampleLocationSampleCounts;
6928     VkExtent2D            maxSampleLocationGridSize;
6929     float                 sampleLocationCoordinateRange[2];
6930     uint32_t              sampleLocationSubPixelBits;
6931     VkBool32              variableSampleLocations;
6932 } VkPhysicalDeviceSampleLocationsPropertiesEXT;
6933 
6934 typedef struct VkMultisamplePropertiesEXT {
6935     VkStructureType    sType;
6936     void*              pNext;
6937     VkExtent2D         maxSampleLocationGridSize;
6938 } VkMultisamplePropertiesEXT;
6939 
6940 typedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEXT)(VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
6941 typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)(VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties);
6942 
6943 #ifndef VK_NO_PROTOTYPES
6944 VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleLocationsEXT(
6945     VkCommandBuffer                             commandBuffer,
6946     const VkSampleLocationsInfoEXT*             pSampleLocationsInfo);
6947 
6948 VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT(
6949     VkPhysicalDevice                            physicalDevice,
6950     VkSampleCountFlagBits                       samples,
6951     VkMultisamplePropertiesEXT*                 pMultisampleProperties);
6952 #endif
6953 
6954 
6955 #define VK_EXT_blend_operation_advanced 1
6956 #define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2
6957 #define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
6958 
6959 typedef enum VkBlendOverlapEXT {
6960     VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0,
6961     VK_BLEND_OVERLAP_DISJOINT_EXT = 1,
6962     VK_BLEND_OVERLAP_CONJOINT_EXT = 2,
6963     VK_BLEND_OVERLAP_MAX_ENUM_EXT = 0x7FFFFFFF
6964 } VkBlendOverlapEXT;
6965 typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
6966     VkStructureType    sType;
6967     void*              pNext;
6968     VkBool32           advancedBlendCoherentOperations;
6969 } VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
6970 
6971 typedef struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
6972     VkStructureType    sType;
6973     void*              pNext;
6974     uint32_t           advancedBlendMaxColorAttachments;
6975     VkBool32           advancedBlendIndependentBlend;
6976     VkBool32           advancedBlendNonPremultipliedSrcColor;
6977     VkBool32           advancedBlendNonPremultipliedDstColor;
6978     VkBool32           advancedBlendCorrelatedOverlap;
6979     VkBool32           advancedBlendAllOperations;
6980 } VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
6981 
6982 typedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT {
6983     VkStructureType      sType;
6984     const void*          pNext;
6985     VkBool32             srcPremultiplied;
6986     VkBool32             dstPremultiplied;
6987     VkBlendOverlapEXT    blendOverlap;
6988 } VkPipelineColorBlendAdvancedStateCreateInfoEXT;
6989 
6990 
6991 
6992 #define VK_EXT_post_depth_coverage 1
6993 #define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1
6994 #define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage"
6995 
6996 
6997 #define VK_EXT_image_drm_format_modifier 1
6998 #define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION 2
6999 #define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME "VK_EXT_image_drm_format_modifier"
7000 typedef VkFlags64 VkFormatFeatureFlags2KHR;
7001 
7002 // Flag bits for VkFormatFeatureFlagBits2KHR
7003 typedef VkFlags64 VkFormatFeatureFlagBits2KHR;
7004 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR = 0x00000001ULL;
7005 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR = 0x00000002ULL;
7006 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR = 0x00000004ULL;
7007 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR = 0x00000008ULL;
7008 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR = 0x00000010ULL;
7009 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR = 0x00000020ULL;
7010 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR = 0x00000040ULL;
7011 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR = 0x00000080ULL;
7012 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR = 0x00000100ULL;
7013 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR = 0x00000200ULL;
7014 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR = 0x00000400ULL;
7015 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR = 0x00000800ULL;
7016 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR = 0x00001000ULL;
7017 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 0x00002000ULL;
7018 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR = 0x00004000ULL;
7019 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR = 0x00008000ULL;
7020 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR = 0x00010000ULL;
7021 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 0x00020000ULL;
7022 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 0x00040000ULL;
7023 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 0x00080000ULL;
7024 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 0x00100000ULL;
7025 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 0x00200000ULL;
7026 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR = 0x00400000ULL;
7027 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR = 0x00800000ULL;
7028 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR = 0x80000000ULL;
7029 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR = 0x100000000ULL;
7030 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR = 0x200000000ULL;
7031 static const VkFormatFeatureFlagBits2KHR VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000ULL;
7032 
7033 typedef struct VkDrmFormatModifierPropertiesEXT {
7034     uint64_t                drmFormatModifier;
7035     uint32_t                drmFormatModifierPlaneCount;
7036     VkFormatFeatureFlags    drmFormatModifierTilingFeatures;
7037 } VkDrmFormatModifierPropertiesEXT;
7038 
7039 typedef struct VkDrmFormatModifierPropertiesListEXT {
7040     VkStructureType                      sType;
7041     void*                                pNext;
7042     uint32_t                             drmFormatModifierCount;
7043     VkDrmFormatModifierPropertiesEXT*    pDrmFormatModifierProperties;
7044 } VkDrmFormatModifierPropertiesListEXT;
7045 
7046 typedef struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT {
7047     VkStructureType    sType;
7048     const void*        pNext;
7049     uint64_t           drmFormatModifier;
7050     VkSharingMode      sharingMode;
7051     uint32_t           queueFamilyIndexCount;
7052     const uint32_t*    pQueueFamilyIndices;
7053 } VkPhysicalDeviceImageDrmFormatModifierInfoEXT;
7054 
7055 typedef struct VkImageDrmFormatModifierListCreateInfoEXT {
7056     VkStructureType    sType;
7057     const void*        pNext;
7058     uint32_t           drmFormatModifierCount;
7059     const uint64_t*    pDrmFormatModifiers;
7060 } VkImageDrmFormatModifierListCreateInfoEXT;
7061 
7062 typedef struct VkImageDrmFormatModifierExplicitCreateInfoEXT {
7063     VkStructureType               sType;
7064     const void*                   pNext;
7065     uint64_t                      drmFormatModifier;
7066     uint32_t                      drmFormatModifierPlaneCount;
7067     const VkSubresourceLayout*    pPlaneLayouts;
7068 } VkImageDrmFormatModifierExplicitCreateInfoEXT;
7069 
7070 typedef struct VkImageDrmFormatModifierPropertiesEXT {
7071     VkStructureType    sType;
7072     void*              pNext;
7073     uint64_t           drmFormatModifier;
7074 } VkImageDrmFormatModifierPropertiesEXT;
7075 
7076 typedef struct VkDrmFormatModifierProperties2EXT {
7077     uint64_t                    drmFormatModifier;
7078     uint32_t                    drmFormatModifierPlaneCount;
7079     VkFormatFeatureFlags2KHR    drmFormatModifierTilingFeatures;
7080 } VkDrmFormatModifierProperties2EXT;
7081 
7082 typedef struct VkDrmFormatModifierPropertiesList2EXT {
7083     VkStructureType                       sType;
7084     void*                                 pNext;
7085     uint32_t                              drmFormatModifierCount;
7086     VkDrmFormatModifierProperties2EXT*    pDrmFormatModifierProperties;
7087 } VkDrmFormatModifierPropertiesList2EXT;
7088 
7089 typedef VkResult (VKAPI_PTR *PFN_vkGetImageDrmFormatModifierPropertiesEXT)(VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties);
7090 
7091 #ifndef VK_NO_PROTOTYPES
7092 VKAPI_ATTR VkResult VKAPI_CALL vkGetImageDrmFormatModifierPropertiesEXT(
7093     VkDevice                                    device,
7094     VkImage                                     image,
7095     VkImageDrmFormatModifierPropertiesEXT*      pProperties);
7096 #endif
7097 
7098 
7099 #define VK_EXT_filter_cubic 1
7100 #define VK_EXT_FILTER_CUBIC_SPEC_VERSION  3
7101 #define VK_EXT_FILTER_CUBIC_EXTENSION_NAME "VK_EXT_filter_cubic"
7102 typedef struct VkPhysicalDeviceImageViewImageFormatInfoEXT {
7103     VkStructureType    sType;
7104     void*              pNext;
7105     VkImageViewType    imageViewType;
7106 } VkPhysicalDeviceImageViewImageFormatInfoEXT;
7107 
7108 typedef struct VkFilterCubicImageViewImageFormatPropertiesEXT {
7109     VkStructureType    sType;
7110     void*              pNext;
7111     VkBool32           filterCubic;
7112     VkBool32           filterCubicMinmax;
7113 } VkFilterCubicImageViewImageFormatPropertiesEXT;
7114 
7115 
7116 
7117 #define VK_EXT_global_priority 1
7118 #define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 2
7119 #define VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME "VK_EXT_global_priority"
7120 
7121 typedef enum VkQueueGlobalPriorityEXT {
7122     VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128,
7123     VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256,
7124     VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512,
7125     VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024,
7126     VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 0x7FFFFFFF
7127 } VkQueueGlobalPriorityEXT;
7128 typedef struct VkDeviceQueueGlobalPriorityCreateInfoEXT {
7129     VkStructureType             sType;
7130     const void*                 pNext;
7131     VkQueueGlobalPriorityEXT    globalPriority;
7132 } VkDeviceQueueGlobalPriorityCreateInfoEXT;
7133 
7134 
7135 
7136 #define VK_EXT_external_memory_host 1
7137 #define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1
7138 #define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host"
7139 typedef struct VkImportMemoryHostPointerInfoEXT {
7140     VkStructureType                       sType;
7141     const void*                           pNext;
7142     VkExternalMemoryHandleTypeFlagBits    handleType;
7143     void*                                 pHostPointer;
7144 } VkImportMemoryHostPointerInfoEXT;
7145 
7146 typedef struct VkMemoryHostPointerPropertiesEXT {
7147     VkStructureType    sType;
7148     void*              pNext;
7149     uint32_t           memoryTypeBits;
7150 } VkMemoryHostPointerPropertiesEXT;
7151 
7152 typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT {
7153     VkStructureType    sType;
7154     void*              pNext;
7155     VkDeviceSize       minImportedHostPointerAlignment;
7156 } VkPhysicalDeviceExternalMemoryHostPropertiesEXT;
7157 
7158 typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryHostPointerPropertiesEXT)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
7159 
7160 #ifndef VK_NO_PROTOTYPES
7161 VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryHostPointerPropertiesEXT(
7162     VkDevice                                    device,
7163     VkExternalMemoryHandleTypeFlagBits          handleType,
7164     const void*                                 pHostPointer,
7165     VkMemoryHostPointerPropertiesEXT*           pMemoryHostPointerProperties);
7166 #endif
7167 
7168 
7169 #define VK_EXT_calibrated_timestamps 1
7170 #define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 2
7171 #define VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME "VK_EXT_calibrated_timestamps"
7172 
7173 typedef enum VkTimeDomainEXT {
7174     VK_TIME_DOMAIN_DEVICE_EXT = 0,
7175     VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1,
7176     VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2,
7177     VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3,
7178     VK_TIME_DOMAIN_MAX_ENUM_EXT = 0x7FFFFFFF
7179 } VkTimeDomainEXT;
7180 typedef struct VkCalibratedTimestampInfoEXT {
7181     VkStructureType    sType;
7182     const void*        pNext;
7183     VkTimeDomainEXT    timeDomain;
7184 } VkCalibratedTimestampInfoEXT;
7185 
7186 typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)(VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains);
7187 typedef VkResult (VKAPI_PTR *PFN_vkGetCalibratedTimestampsEXT)(VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation);
7188 
7189 #ifndef VK_NO_PROTOTYPES
7190 VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
7191     VkPhysicalDevice                            physicalDevice,
7192     uint32_t*                                   pTimeDomainCount,
7193     VkTimeDomainEXT*                            pTimeDomains);
7194 
7195 VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsEXT(
7196     VkDevice                                    device,
7197     uint32_t                                    timestampCount,
7198     const VkCalibratedTimestampInfoEXT*         pTimestampInfos,
7199     uint64_t*                                   pTimestamps,
7200     uint64_t*                                   pMaxDeviation);
7201 #endif
7202 
7203 
7204 #define VK_EXT_vertex_attribute_divisor 1
7205 #define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 3
7206 #define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_EXT_vertex_attribute_divisor"
7207 typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT {
7208     VkStructureType    sType;
7209     void*              pNext;
7210     uint32_t           maxVertexAttribDivisor;
7211 } VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;
7212 
7213 typedef struct VkVertexInputBindingDivisorDescriptionEXT {
7214     uint32_t    binding;
7215     uint32_t    divisor;
7216 } VkVertexInputBindingDivisorDescriptionEXT;
7217 
7218 typedef struct VkPipelineVertexInputDivisorStateCreateInfoEXT {
7219     VkStructureType                                     sType;
7220     const void*                                         pNext;
7221     uint32_t                                            vertexBindingDivisorCount;
7222     const VkVertexInputBindingDivisorDescriptionEXT*    pVertexBindingDivisors;
7223 } VkPipelineVertexInputDivisorStateCreateInfoEXT;
7224 
7225 typedef struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT {
7226     VkStructureType    sType;
7227     void*              pNext;
7228     VkBool32           vertexAttributeInstanceRateDivisor;
7229     VkBool32           vertexAttributeInstanceRateZeroDivisor;
7230 } VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT;
7231 
7232 
7233 
7234 #define VK_EXT_pci_bus_info 1
7235 #define VK_EXT_PCI_BUS_INFO_SPEC_VERSION  2
7236 #define VK_EXT_PCI_BUS_INFO_EXTENSION_NAME "VK_EXT_pci_bus_info"
7237 typedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT {
7238     VkStructureType    sType;
7239     void*              pNext;
7240     uint32_t           pciDomain;
7241     uint32_t           pciBus;
7242     uint32_t           pciDevice;
7243     uint32_t           pciFunction;
7244 } VkPhysicalDevicePCIBusInfoPropertiesEXT;
7245 
7246 
7247 
7248 #define VK_EXT_subgroup_size_control 1
7249 #define VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION 2
7250 #define VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME "VK_EXT_subgroup_size_control"
7251 typedef struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT {
7252     VkStructureType    sType;
7253     void*              pNext;
7254     VkBool32           subgroupSizeControl;
7255     VkBool32           computeFullSubgroups;
7256 } VkPhysicalDeviceSubgroupSizeControlFeaturesEXT;
7257 
7258 typedef struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT {
7259     VkStructureType       sType;
7260     void*                 pNext;
7261     uint32_t              minSubgroupSize;
7262     uint32_t              maxSubgroupSize;
7263     uint32_t              maxComputeWorkgroupSubgroups;
7264     VkShaderStageFlags    requiredSubgroupSizeStages;
7265 } VkPhysicalDeviceSubgroupSizeControlPropertiesEXT;
7266 
7267 typedef struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT {
7268     VkStructureType    sType;
7269     void*              pNext;
7270     uint32_t           requiredSubgroupSize;
7271 } VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT;
7272 
7273 
7274 
7275 #define VK_EXT_shader_image_atomic_int64 1
7276 #define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION 1
7277 #define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME "VK_EXT_shader_image_atomic_int64"
7278 typedef struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
7279     VkStructureType    sType;
7280     void*              pNext;
7281     VkBool32           shaderImageInt64Atomics;
7282     VkBool32           sparseImageInt64Atomics;
7283 } VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
7284 
7285 
7286 
7287 #define VK_EXT_memory_budget 1
7288 #define VK_EXT_MEMORY_BUDGET_SPEC_VERSION 1
7289 #define VK_EXT_MEMORY_BUDGET_EXTENSION_NAME "VK_EXT_memory_budget"
7290 typedef struct VkPhysicalDeviceMemoryBudgetPropertiesEXT {
7291     VkStructureType    sType;
7292     void*              pNext;
7293     VkDeviceSize       heapBudget[VK_MAX_MEMORY_HEAPS];
7294     VkDeviceSize       heapUsage[VK_MAX_MEMORY_HEAPS];
7295 } VkPhysicalDeviceMemoryBudgetPropertiesEXT;
7296 
7297 
7298 
7299 #define VK_EXT_validation_features 1
7300 #define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 5
7301 #define VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME "VK_EXT_validation_features"
7302 
7303 typedef enum VkValidationFeatureEnableEXT {
7304     VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0,
7305     VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1,
7306     VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2,
7307     VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3,
7308     VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4,
7309     VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 0x7FFFFFFF
7310 } VkValidationFeatureEnableEXT;
7311 
7312 typedef enum VkValidationFeatureDisableEXT {
7313     VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0,
7314     VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1,
7315     VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2,
7316     VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3,
7317     VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4,
7318     VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5,
7319     VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6,
7320     VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT = 7,
7321     VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 0x7FFFFFFF
7322 } VkValidationFeatureDisableEXT;
7323 typedef struct VkValidationFeaturesEXT {
7324     VkStructureType                         sType;
7325     const void*                             pNext;
7326     uint32_t                                enabledValidationFeatureCount;
7327     const VkValidationFeatureEnableEXT*     pEnabledValidationFeatures;
7328     uint32_t                                disabledValidationFeatureCount;
7329     const VkValidationFeatureDisableEXT*    pDisabledValidationFeatures;
7330 } VkValidationFeaturesEXT;
7331 
7332 
7333 
7334 #define VK_EXT_fragment_shader_interlock 1
7335 #define VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION 1
7336 #define VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME "VK_EXT_fragment_shader_interlock"
7337 typedef struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT {
7338     VkStructureType    sType;
7339     void*              pNext;
7340     VkBool32           fragmentShaderSampleInterlock;
7341     VkBool32           fragmentShaderPixelInterlock;
7342     VkBool32           fragmentShaderShadingRateInterlock;
7343 } VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT;
7344 
7345 
7346 
7347 #define VK_EXT_ycbcr_image_arrays 1
7348 #define VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION 1
7349 #define VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME "VK_EXT_ycbcr_image_arrays"
7350 typedef struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT {
7351     VkStructureType    sType;
7352     void*              pNext;
7353     VkBool32           ycbcrImageArrays;
7354 } VkPhysicalDeviceYcbcrImageArraysFeaturesEXT;
7355 
7356 
7357 
7358 #define VK_EXT_headless_surface 1
7359 #define VK_EXT_HEADLESS_SURFACE_SPEC_VERSION 1
7360 #define VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME "VK_EXT_headless_surface"
7361 typedef VkFlags VkHeadlessSurfaceCreateFlagsEXT;
7362 typedef struct VkHeadlessSurfaceCreateInfoEXT {
7363     VkStructureType                    sType;
7364     const void*                        pNext;
7365     VkHeadlessSurfaceCreateFlagsEXT    flags;
7366 } VkHeadlessSurfaceCreateInfoEXT;
7367 
7368 typedef VkResult (VKAPI_PTR *PFN_vkCreateHeadlessSurfaceEXT)(VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
7369 
7370 #ifndef VK_NO_PROTOTYPES
7371 VKAPI_ATTR VkResult VKAPI_CALL vkCreateHeadlessSurfaceEXT(
7372     VkInstance                                  instance,
7373     const VkHeadlessSurfaceCreateInfoEXT*       pCreateInfo,
7374     const VkAllocationCallbacks*                pAllocator,
7375     VkSurfaceKHR*                               pSurface);
7376 #endif
7377 
7378 
7379 #define VK_EXT_line_rasterization 1
7380 #define VK_EXT_LINE_RASTERIZATION_SPEC_VERSION 1
7381 #define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME "VK_EXT_line_rasterization"
7382 
7383 typedef enum VkLineRasterizationModeEXT {
7384     VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0,
7385     VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1,
7386     VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2,
7387     VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3,
7388     VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
7389 } VkLineRasterizationModeEXT;
7390 typedef struct VkPhysicalDeviceLineRasterizationFeaturesEXT {
7391     VkStructureType    sType;
7392     void*              pNext;
7393     VkBool32           rectangularLines;
7394     VkBool32           bresenhamLines;
7395     VkBool32           smoothLines;
7396     VkBool32           stippledRectangularLines;
7397     VkBool32           stippledBresenhamLines;
7398     VkBool32           stippledSmoothLines;
7399 } VkPhysicalDeviceLineRasterizationFeaturesEXT;
7400 
7401 typedef struct VkPhysicalDeviceLineRasterizationPropertiesEXT {
7402     VkStructureType    sType;
7403     void*              pNext;
7404     uint32_t           lineSubPixelPrecisionBits;
7405 } VkPhysicalDeviceLineRasterizationPropertiesEXT;
7406 
7407 typedef struct VkPipelineRasterizationLineStateCreateInfoEXT {
7408     VkStructureType               sType;
7409     const void*                   pNext;
7410     VkLineRasterizationModeEXT    lineRasterizationMode;
7411     VkBool32                      stippledLineEnable;
7412     uint32_t                      lineStippleFactor;
7413     uint16_t                      lineStipplePattern;
7414 } VkPipelineRasterizationLineStateCreateInfoEXT;
7415 
7416 typedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleEXT)(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern);
7417 
7418 #ifndef VK_NO_PROTOTYPES
7419 VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleEXT(
7420     VkCommandBuffer                             commandBuffer,
7421     uint32_t                                    lineStippleFactor,
7422     uint16_t                                    lineStipplePattern);
7423 #endif
7424 
7425 
7426 #define VK_EXT_shader_atomic_float 1
7427 #define VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION 1
7428 #define VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME "VK_EXT_shader_atomic_float"
7429 typedef struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT {
7430     VkStructureType    sType;
7431     void*              pNext;
7432     VkBool32           shaderBufferFloat32Atomics;
7433     VkBool32           shaderBufferFloat32AtomicAdd;
7434     VkBool32           shaderBufferFloat64Atomics;
7435     VkBool32           shaderBufferFloat64AtomicAdd;
7436     VkBool32           shaderSharedFloat32Atomics;
7437     VkBool32           shaderSharedFloat32AtomicAdd;
7438     VkBool32           shaderSharedFloat64Atomics;
7439     VkBool32           shaderSharedFloat64AtomicAdd;
7440     VkBool32           shaderImageFloat32Atomics;
7441     VkBool32           shaderImageFloat32AtomicAdd;
7442     VkBool32           sparseImageFloat32Atomics;
7443     VkBool32           sparseImageFloat32AtomicAdd;
7444 } VkPhysicalDeviceShaderAtomicFloatFeaturesEXT;
7445 
7446 
7447 
7448 #define VK_EXT_index_type_uint8 1
7449 #define VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION 1
7450 #define VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME "VK_EXT_index_type_uint8"
7451 typedef struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT {
7452     VkStructureType    sType;
7453     void*              pNext;
7454     VkBool32           indexTypeUint8;
7455 } VkPhysicalDeviceIndexTypeUint8FeaturesEXT;
7456 
7457 
7458 
7459 #define VK_EXT_extended_dynamic_state 1
7460 #define VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION 1
7461 #define VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_extended_dynamic_state"
7462 typedef struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT {
7463     VkStructureType    sType;
7464     void*              pNext;
7465     VkBool32           extendedDynamicState;
7466 } VkPhysicalDeviceExtendedDynamicStateFeaturesEXT;
7467 
7468 typedef void (VKAPI_PTR *PFN_vkCmdSetCullModeEXT)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode);
7469 typedef void (VKAPI_PTR *PFN_vkCmdSetFrontFaceEXT)(VkCommandBuffer commandBuffer, VkFrontFace frontFace);
7470 typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveTopologyEXT)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology);
7471 typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports);
7472 typedef void (VKAPI_PTR *PFN_vkCmdSetScissorWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors);
7473 typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers2EXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides);
7474 typedef void (VKAPI_PTR *PFN_vkCmdSetDepthTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable);
7475 typedef void (VKAPI_PTR *PFN_vkCmdSetDepthWriteEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable);
7476 typedef void (VKAPI_PTR *PFN_vkCmdSetDepthCompareOpEXT)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp);
7477 typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBoundsTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable);
7478 typedef void (VKAPI_PTR *PFN_vkCmdSetStencilTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable);
7479 typedef void (VKAPI_PTR *PFN_vkCmdSetStencilOpEXT)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp);
7480 
7481 #ifndef VK_NO_PROTOTYPES
7482 VKAPI_ATTR void VKAPI_CALL vkCmdSetCullModeEXT(
7483     VkCommandBuffer                             commandBuffer,
7484     VkCullModeFlags                             cullMode);
7485 
7486 VKAPI_ATTR void VKAPI_CALL vkCmdSetFrontFaceEXT(
7487     VkCommandBuffer                             commandBuffer,
7488     VkFrontFace                                 frontFace);
7489 
7490 VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveTopologyEXT(
7491     VkCommandBuffer                             commandBuffer,
7492     VkPrimitiveTopology                         primitiveTopology);
7493 
7494 VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWithCountEXT(
7495     VkCommandBuffer                             commandBuffer,
7496     uint32_t                                    viewportCount,
7497     const VkViewport*                           pViewports);
7498 
7499 VKAPI_ATTR void VKAPI_CALL vkCmdSetScissorWithCountEXT(
7500     VkCommandBuffer                             commandBuffer,
7501     uint32_t                                    scissorCount,
7502     const VkRect2D*                             pScissors);
7503 
7504 VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers2EXT(
7505     VkCommandBuffer                             commandBuffer,
7506     uint32_t                                    firstBinding,
7507     uint32_t                                    bindingCount,
7508     const VkBuffer*                             pBuffers,
7509     const VkDeviceSize*                         pOffsets,
7510     const VkDeviceSize*                         pSizes,
7511     const VkDeviceSize*                         pStrides);
7512 
7513 VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthTestEnableEXT(
7514     VkCommandBuffer                             commandBuffer,
7515     VkBool32                                    depthTestEnable);
7516 
7517 VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthWriteEnableEXT(
7518     VkCommandBuffer                             commandBuffer,
7519     VkBool32                                    depthWriteEnable);
7520 
7521 VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthCompareOpEXT(
7522     VkCommandBuffer                             commandBuffer,
7523     VkCompareOp                                 depthCompareOp);
7524 
7525 VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBoundsTestEnableEXT(
7526     VkCommandBuffer                             commandBuffer,
7527     VkBool32                                    depthBoundsTestEnable);
7528 
7529 VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilTestEnableEXT(
7530     VkCommandBuffer                             commandBuffer,
7531     VkBool32                                    stencilTestEnable);
7532 
7533 VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilOpEXT(
7534     VkCommandBuffer                             commandBuffer,
7535     VkStencilFaceFlags                          faceMask,
7536     VkStencilOp                                 failOp,
7537     VkStencilOp                                 passOp,
7538     VkStencilOp                                 depthFailOp,
7539     VkCompareOp                                 compareOp);
7540 #endif
7541 
7542 
7543 #define VK_EXT_shader_demote_to_helper_invocation 1
7544 #define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION 1
7545 #define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME "VK_EXT_shader_demote_to_helper_invocation"
7546 typedef struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT {
7547     VkStructureType    sType;
7548     void*              pNext;
7549     VkBool32           shaderDemoteToHelperInvocation;
7550 } VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
7551 
7552 
7553 
7554 #define VK_EXT_texel_buffer_alignment 1
7555 #define VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION 1
7556 #define VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME "VK_EXT_texel_buffer_alignment"
7557 typedef struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT {
7558     VkStructureType    sType;
7559     void*              pNext;
7560     VkBool32           texelBufferAlignment;
7561 } VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT;
7562 
7563 typedef struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT {
7564     VkStructureType    sType;
7565     void*              pNext;
7566     VkDeviceSize       storageTexelBufferOffsetAlignmentBytes;
7567     VkBool32           storageTexelBufferOffsetSingleTexelAlignment;
7568     VkDeviceSize       uniformTexelBufferOffsetAlignmentBytes;
7569     VkBool32           uniformTexelBufferOffsetSingleTexelAlignment;
7570 } VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT;
7571 
7572 
7573 
7574 #define VK_EXT_robustness2 1
7575 #define VK_EXT_ROBUSTNESS_2_SPEC_VERSION  1
7576 #define VK_EXT_ROBUSTNESS_2_EXTENSION_NAME "VK_EXT_robustness2"
7577 typedef struct VkPhysicalDeviceRobustness2FeaturesEXT {
7578     VkStructureType    sType;
7579     void*              pNext;
7580     VkBool32           robustBufferAccess2;
7581     VkBool32           robustImageAccess2;
7582     VkBool32           nullDescriptor;
7583 } VkPhysicalDeviceRobustness2FeaturesEXT;
7584 
7585 typedef struct VkPhysicalDeviceRobustness2PropertiesEXT {
7586     VkStructureType    sType;
7587     void*              pNext;
7588     VkDeviceSize       robustStorageBufferAccessSizeAlignment;
7589     VkDeviceSize       robustUniformBufferAccessSizeAlignment;
7590 } VkPhysicalDeviceRobustness2PropertiesEXT;
7591 
7592 
7593 
7594 #define VK_EXT_custom_border_color 1
7595 #define VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION 12
7596 #define VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME "VK_EXT_custom_border_color"
7597 typedef struct VkSamplerCustomBorderColorCreateInfoEXT {
7598     VkStructureType      sType;
7599     const void*          pNext;
7600     VkClearColorValue    customBorderColor;
7601     VkFormat             format;
7602 } VkSamplerCustomBorderColorCreateInfoEXT;
7603 
7604 typedef struct VkPhysicalDeviceCustomBorderColorPropertiesEXT {
7605     VkStructureType    sType;
7606     void*              pNext;
7607     uint32_t           maxCustomBorderColorSamplers;
7608 } VkPhysicalDeviceCustomBorderColorPropertiesEXT;
7609 
7610 typedef struct VkPhysicalDeviceCustomBorderColorFeaturesEXT {
7611     VkStructureType    sType;
7612     void*              pNext;
7613     VkBool32           customBorderColors;
7614     VkBool32           customBorderColorWithoutFormat;
7615 } VkPhysicalDeviceCustomBorderColorFeaturesEXT;
7616 
7617 
7618 
7619 #define VK_EXT_ycbcr_2plane_444_formats 1
7620 #define VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION 1
7621 #define VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME "VK_EXT_ycbcr_2plane_444_formats"
7622 typedef struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
7623     VkStructureType    sType;
7624     void*              pNext;
7625     VkBool32           ycbcr2plane444Formats;
7626 } VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
7627 
7628 
7629 
7630 #define VK_EXT_image_robustness 1
7631 #define VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION 1
7632 #define VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME "VK_EXT_image_robustness"
7633 typedef struct VkPhysicalDeviceImageRobustnessFeaturesEXT {
7634     VkStructureType    sType;
7635     void*              pNext;
7636     VkBool32           robustImageAccess;
7637 } VkPhysicalDeviceImageRobustnessFeaturesEXT;
7638 
7639 
7640 
7641 #define VK_EXT_4444_formats 1
7642 #define VK_EXT_4444_FORMATS_SPEC_VERSION  1
7643 #define VK_EXT_4444_FORMATS_EXTENSION_NAME "VK_EXT_4444_formats"
7644 typedef struct VkPhysicalDevice4444FormatsFeaturesEXT {
7645     VkStructureType    sType;
7646     void*              pNext;
7647     VkBool32           formatA4R4G4B4;
7648     VkBool32           formatA4B4G4R4;
7649 } VkPhysicalDevice4444FormatsFeaturesEXT;
7650 
7651 
7652 
7653 #define VK_EXT_vertex_input_dynamic_state 1
7654 #define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION 2
7655 #define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_vertex_input_dynamic_state"
7656 typedef struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT {
7657     VkStructureType    sType;
7658     void*              pNext;
7659     VkBool32           vertexInputDynamicState;
7660 } VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT;
7661 
7662 typedef struct VkVertexInputBindingDescription2EXT {
7663     VkStructureType      sType;
7664     void*                pNext;
7665     uint32_t             binding;
7666     uint32_t             stride;
7667     VkVertexInputRate    inputRate;
7668     uint32_t             divisor;
7669 } VkVertexInputBindingDescription2EXT;
7670 
7671 typedef struct VkVertexInputAttributeDescription2EXT {
7672     VkStructureType    sType;
7673     void*              pNext;
7674     uint32_t           location;
7675     uint32_t           binding;
7676     VkFormat           format;
7677     uint32_t           offset;
7678 } VkVertexInputAttributeDescription2EXT;
7679 
7680 typedef void (VKAPI_PTR *PFN_vkCmdSetVertexInputEXT)(VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, uint32_t vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions);
7681 
7682 #ifndef VK_NO_PROTOTYPES
7683 VKAPI_ATTR void VKAPI_CALL vkCmdSetVertexInputEXT(
7684     VkCommandBuffer                             commandBuffer,
7685     uint32_t                                    vertexBindingDescriptionCount,
7686     const VkVertexInputBindingDescription2EXT*  pVertexBindingDescriptions,
7687     uint32_t                                    vertexAttributeDescriptionCount,
7688     const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions);
7689 #endif
7690 
7691 
7692 #define VK_EXT_extended_dynamic_state2 1
7693 #define VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION 1
7694 #define VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME "VK_EXT_extended_dynamic_state2"
7695 typedef struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT {
7696     VkStructureType    sType;
7697     void*              pNext;
7698     VkBool32           extendedDynamicState2;
7699     VkBool32           extendedDynamicState2LogicOp;
7700     VkBool32           extendedDynamicState2PatchControlPoints;
7701 } VkPhysicalDeviceExtendedDynamicState2FeaturesEXT;
7702 
7703 typedef void (VKAPI_PTR *PFN_vkCmdSetPatchControlPointsEXT)(VkCommandBuffer commandBuffer, uint32_t patchControlPoints);
7704 typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizerDiscardEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable);
7705 typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBiasEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable);
7706 typedef void (VKAPI_PTR *PFN_vkCmdSetLogicOpEXT)(VkCommandBuffer commandBuffer, VkLogicOp logicOp);
7707 typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveRestartEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable);
7708 
7709 #ifndef VK_NO_PROTOTYPES
7710 VKAPI_ATTR void VKAPI_CALL vkCmdSetPatchControlPointsEXT(
7711     VkCommandBuffer                             commandBuffer,
7712     uint32_t                                    patchControlPoints);
7713 
7714 VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizerDiscardEnableEXT(
7715     VkCommandBuffer                             commandBuffer,
7716     VkBool32                                    rasterizerDiscardEnable);
7717 
7718 VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBiasEnableEXT(
7719     VkCommandBuffer                             commandBuffer,
7720     VkBool32                                    depthBiasEnable);
7721 
7722 VKAPI_ATTR void VKAPI_CALL vkCmdSetLogicOpEXT(
7723     VkCommandBuffer                             commandBuffer,
7724     VkLogicOp                                   logicOp);
7725 
7726 VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveRestartEnableEXT(
7727     VkCommandBuffer                             commandBuffer,
7728     VkBool32                                    primitiveRestartEnable);
7729 #endif
7730 
7731 
7732 #define VK_EXT_color_write_enable 1
7733 #define VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION 1
7734 #define VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME "VK_EXT_color_write_enable"
7735 typedef struct VkPhysicalDeviceColorWriteEnableFeaturesEXT {
7736     VkStructureType    sType;
7737     void*              pNext;
7738     VkBool32           colorWriteEnable;
7739 } VkPhysicalDeviceColorWriteEnableFeaturesEXT;
7740 
7741 typedef struct VkPipelineColorWriteCreateInfoEXT {
7742     VkStructureType    sType;
7743     const void*        pNext;
7744     uint32_t           attachmentCount;
7745     const VkBool32*    pColorWriteEnables;
7746 } VkPipelineColorWriteCreateInfoEXT;
7747 
7748 typedef void                                    (VKAPI_PTR *PFN_vkCmdSetColorWriteEnableEXT)(VkCommandBuffer       commandBuffer, uint32_t                                attachmentCount, const VkBool32*   pColorWriteEnables);
7749 
7750 #ifndef VK_NO_PROTOTYPES
7751 VKAPI_ATTR void                                    VKAPI_CALL vkCmdSetColorWriteEnableEXT(
7752     VkCommandBuffer                             commandBuffer,
7753     uint32_t                                    attachmentCount,
7754     const VkBool32*                             pColorWriteEnables);
7755 #endif
7756 
7757 
7758 #define VK_EXT_application_parameters 1
7759 #define VK_EXT_APPLICATION_PARAMETERS_SPEC_VERSION 1
7760 #define VK_EXT_APPLICATION_PARAMETERS_EXTENSION_NAME "VK_EXT_application_parameters"
7761 typedef struct VkApplicationParametersEXT {
7762     VkStructureType    sType;
7763     const void*        pNext;
7764     uint32_t           vendorID;
7765     uint32_t           deviceID;
7766     uint32_t           key;
7767     uint64_t           value;
7768 } VkApplicationParametersEXT;
7769 
7770 
7771 #ifdef __cplusplus
7772 }
7773 #endif
7774 
7775 #endif
7776