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