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