1#ifndef VULKAN_CORE_H_
2#define VULKAN_CORE_H_ 1
3
4/*
5** Copyright 2015-2024 The Khronos Group Inc.
6**
7** SPDX-License-Identifier: Apache-2.0
8*/
9
10/*
11** This header is generated from the Khronos Vulkan XML API Registry.
12**
13*/
14
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20
21
22// VK_VERSION_1_0 is a preprocessor guard. Do not pass it to API calls.
23#define VK_VERSION_1_0 1
24#include "vk_platform.h"
25
26#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
27
28
29#ifndef VK_USE_64_BIT_PTR_DEFINES
30    #if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) || (defined(__riscv) && __riscv_xlen == 64)
31        #define VK_USE_64_BIT_PTR_DEFINES 1
32    #else
33        #define VK_USE_64_BIT_PTR_DEFINES 0
34    #endif
35#endif
36
37
38#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE
39    #if (VK_USE_64_BIT_PTR_DEFINES==1)
40        #if (defined(__cplusplus) && (__cplusplus >= 201103L)) || (defined(_MSVC_LANG) && (_MSVC_LANG >= 201103L))
41            #define VK_NULL_HANDLE nullptr
42        #else
43            #define VK_NULL_HANDLE ((void*)0)
44        #endif
45    #else
46        #define VK_NULL_HANDLE 0ULL
47    #endif
48#endif
49#ifndef VK_NULL_HANDLE
50    #define VK_NULL_HANDLE 0
51#endif
52
53
54#ifndef VK_DEFINE_NON_DISPATCHABLE_HANDLE
55    #if (VK_USE_64_BIT_PTR_DEFINES==1)
56        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
57    #else
58        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
59    #endif
60#endif
61
62#define VK_MAKE_API_VERSION(variant, major, minor, patch) \
63    ((((uint32_t)(variant)) << 29U) | (((uint32_t)(major)) << 22U) | (((uint32_t)(minor)) << 12U) | ((uint32_t)(patch)))
64
65// 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.
66//#define VK_API_VERSION VK_MAKE_API_VERSION(0, 1, 0, 0) // Patch version should always be set to 0
67
68// Vulkan 1.0 version number
69#define VK_API_VERSION_1_0 VK_MAKE_API_VERSION(0, 1, 0, 0)// Patch version should always be set to 0
70
71// Version of this file
72#define VK_HEADER_VERSION 275
73
74// Complete version of this file
75#define VK_HEADER_VERSION_COMPLETE VK_MAKE_API_VERSION(0, 1, 3, VK_HEADER_VERSION)
76
77// DEPRECATED: This define is deprecated. VK_MAKE_API_VERSION should be used instead.
78#define VK_MAKE_VERSION(major, minor, patch) \
79    ((((uint32_t)(major)) << 22U) | (((uint32_t)(minor)) << 12U) | ((uint32_t)(patch)))
80
81// DEPRECATED: This define is deprecated. VK_API_VERSION_MAJOR should be used instead.
82#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22U)
83
84// DEPRECATED: This define is deprecated. VK_API_VERSION_MINOR should be used instead.
85#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12U) & 0x3FFU)
86
87// DEPRECATED: This define is deprecated. VK_API_VERSION_PATCH should be used instead.
88#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU)
89
90#define VK_API_VERSION_VARIANT(version) ((uint32_t)(version) >> 29U)
91#define VK_API_VERSION_MAJOR(version) (((uint32_t)(version) >> 22U) & 0x7FU)
92#define VK_API_VERSION_MINOR(version) (((uint32_t)(version) >> 12U) & 0x3FFU)
93#define VK_API_VERSION_PATCH(version) ((uint32_t)(version) & 0xFFFU)
94typedef uint32_t VkBool32;
95typedef uint64_t VkDeviceAddress;
96typedef uint64_t VkDeviceSize;
97typedef uint32_t VkFlags;
98typedef uint32_t VkSampleMask;
99VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer)
100VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage)
101VK_DEFINE_HANDLE(VkInstance)
102VK_DEFINE_HANDLE(VkPhysicalDevice)
103VK_DEFINE_HANDLE(VkDevice)
104VK_DEFINE_HANDLE(VkQueue)
105VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore)
106VK_DEFINE_HANDLE(VkCommandBuffer)
107VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence)
108VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory)
109VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent)
110VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool)
111VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView)
112VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView)
113VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule)
114VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache)
115VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout)
116VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline)
117VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass)
118VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout)
119VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler)
120VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet)
121VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool)
122VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer)
123VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool)
124#define VK_ATTACHMENT_UNUSED              (~0U)
125#define VK_FALSE                          0U
126#define VK_LOD_CLAMP_NONE                 1000.0F
127#define VK_QUEUE_FAMILY_IGNORED           (~0U)
128#define VK_REMAINING_ARRAY_LAYERS         (~0U)
129#define VK_REMAINING_MIP_LEVELS           (~0U)
130#define VK_SUBPASS_EXTERNAL               (~0U)
131#define VK_TRUE                           1U
132#define VK_WHOLE_SIZE                     (~0ULL)
133#define VK_MAX_MEMORY_TYPES               32U
134#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE  256U
135#define VK_UUID_SIZE                      16U
136#define VK_MAX_EXTENSION_NAME_SIZE        256U
137#define VK_MAX_DESCRIPTION_SIZE           256U
138#define VK_MAX_MEMORY_HEAPS               16U
139
140typedef enum VkResult {
141    VK_SUCCESS = 0,
142    VK_NOT_READY = 1,
143    VK_TIMEOUT = 2,
144    VK_EVENT_SET = 3,
145    VK_EVENT_RESET = 4,
146    VK_INCOMPLETE = 5,
147    VK_ERROR_OUT_OF_HOST_MEMORY = -1,
148    VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
149    VK_ERROR_INITIALIZATION_FAILED = -3,
150    VK_ERROR_DEVICE_LOST = -4,
151    VK_ERROR_MEMORY_MAP_FAILED = -5,
152    VK_ERROR_LAYER_NOT_PRESENT = -6,
153    VK_ERROR_EXTENSION_NOT_PRESENT = -7,
154    VK_ERROR_FEATURE_NOT_PRESENT = -8,
155    VK_ERROR_INCOMPATIBLE_DRIVER = -9,
156    VK_ERROR_TOO_MANY_OBJECTS = -10,
157    VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
158    VK_ERROR_FRAGMENTED_POOL = -12,
159    VK_ERROR_UNKNOWN = -13,
160    VK_ERROR_OUT_OF_POOL_MEMORY = -1000069000,
161    VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003,
162    VK_ERROR_FRAGMENTATION = -1000161000,
163    VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000,
164    VK_PIPELINE_COMPILE_REQUIRED = 1000297000,
165    VK_ERROR_SURFACE_LOST_KHR = -1000000000,
166    VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
167    VK_SUBOPTIMAL_KHR = 1000001003,
168    VK_ERROR_OUT_OF_DATE_KHR = -1000001004,
169    VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
170    VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
171    VK_ERROR_INVALID_SHADER_NV = -1000012000,
172    VK_ERROR_IMAGE_USAGE_NOT_SUPPORTED_KHR = -1000023000,
173    VK_ERROR_VIDEO_PICTURE_LAYOUT_NOT_SUPPORTED_KHR = -1000023001,
174    VK_ERROR_VIDEO_PROFILE_OPERATION_NOT_SUPPORTED_KHR = -1000023002,
175    VK_ERROR_VIDEO_PROFILE_FORMAT_NOT_SUPPORTED_KHR = -1000023003,
176    VK_ERROR_VIDEO_PROFILE_CODEC_NOT_SUPPORTED_KHR = -1000023004,
177    VK_ERROR_VIDEO_STD_VERSION_NOT_SUPPORTED_KHR = -1000023005,
178    VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000,
179    VK_ERROR_NOT_PERMITTED_KHR = -1000174001,
180    VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000,
181    VK_THREAD_IDLE_KHR = 1000268000,
182    VK_THREAD_DONE_KHR = 1000268001,
183    VK_OPERATION_DEFERRED_KHR = 1000268002,
184    VK_OPERATION_NOT_DEFERRED_KHR = 1000268003,
185    VK_ERROR_INVALID_VIDEO_STD_PARAMETERS_KHR = -1000299000,
186    VK_ERROR_COMPRESSION_EXHAUSTED_EXT = -1000338000,
187    VK_ERROR_INCOMPATIBLE_SHADER_BINARY_EXT = 1000482000,
188    VK_ERROR_OUT_OF_POOL_MEMORY_KHR = VK_ERROR_OUT_OF_POOL_MEMORY,
189    VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = VK_ERROR_INVALID_EXTERNAL_HANDLE,
190    VK_ERROR_FRAGMENTATION_EXT = VK_ERROR_FRAGMENTATION,
191    VK_ERROR_NOT_PERMITTED_EXT = VK_ERROR_NOT_PERMITTED_KHR,
192    VK_ERROR_INVALID_DEVICE_ADDRESS_EXT = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
193    VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS,
194    VK_PIPELINE_COMPILE_REQUIRED_EXT = VK_PIPELINE_COMPILE_REQUIRED,
195    VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = VK_PIPELINE_COMPILE_REQUIRED,
196    VK_RESULT_MAX_ENUM = 0x7FFFFFFF
197} VkResult;
198
199typedef enum VkStructureType {
200    VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
201    VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
202    VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
203    VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
204    VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
205    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
206    VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
207    VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
208    VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
209    VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
210    VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
211    VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
212    VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
213    VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
214    VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
215    VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
216    VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
217    VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
218    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
219    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
220    VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
221    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
222    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
223    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
224    VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
225    VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
226    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
227    VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
228    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
229    VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
230    VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
231    VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
232    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
233    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
234    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
235    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
236    VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
237    VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
238    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
239    VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
240    VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
241    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
242    VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
243    VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
244    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
245    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
246    VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
247    VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
248    VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
249    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000,
250    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000,
251    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001,
252    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000,
253    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000,
254    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001,
255    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000,
256    VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003,
257    VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004,
258    VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005,
259    VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006,
260    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013,
261    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014,
262    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000,
263    VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001,
264    VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000,
265    VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001,
266    VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002,
267    VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003,
268    VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004,
269    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000,
270    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001,
271    VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002,
272    VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003,
273    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004,
274    VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005,
275    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006,
276    VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007,
277    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008,
278    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000,
279    VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001,
280    VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002,
281    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003,
282    VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000,
283    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001,
284    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002,
285    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000,
286    VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000,
287    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001,
288    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002,
289    VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003,
290    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000,
291    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001,
292    VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002,
293    VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003,
294    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004,
295    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005,
296    VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000,
297    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000,
298    VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001,
299    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002,
300    VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003,
301    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004,
302    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000,
303    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001,
304    VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002,
305    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000,
306    VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001,
307    VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000,
308    VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000,
309    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000,
310    VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001,
311    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000,
312    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001,
313    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000,
314    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49,
315    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50,
316    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51,
317    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52,
318    VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000,
319    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000,
320    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001,
321    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002,
322    VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003,
323    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004,
324    VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005,
325    VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006,
326    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000,
327    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000,
328    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000,
329    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000,
330    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000,
331    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000,
332    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001,
333    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002,
334    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003,
335    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004,
336    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000,
337    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001,
338    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000,
339    VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000,
340    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000,
341    VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001,
342    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000,
343    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000,
344    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001,
345    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002,
346    VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003,
347    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000,
348    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000,
349    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000,
350    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001,
351    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002,
352    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000,
353    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000,
354    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001,
355    VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002,
356    VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003,
357    VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004,
358    VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005,
359    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000,
360    VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001,
361    VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002,
362    VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003,
363    VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004,
364    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_FEATURES = 53,
365    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_3_PROPERTIES = 54,
366    VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO = 1000192000,
367    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES = 1000215000,
368    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES = 1000245000,
369    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES = 1000276000,
370    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES = 1000295000,
371    VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO = 1000295001,
372    VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO = 1000295002,
373    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES = 1000297000,
374    VK_STRUCTURE_TYPE_MEMORY_BARRIER_2 = 1000314000,
375    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2 = 1000314001,
376    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2 = 1000314002,
377    VK_STRUCTURE_TYPE_DEPENDENCY_INFO = 1000314003,
378    VK_STRUCTURE_TYPE_SUBMIT_INFO_2 = 1000314004,
379    VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO = 1000314005,
380    VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO = 1000314006,
381    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES = 1000314007,
382    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES = 1000325000,
383    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES = 1000335000,
384    VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2 = 1000337000,
385    VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2 = 1000337001,
386    VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2 = 1000337002,
387    VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2 = 1000337003,
388    VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2 = 1000337004,
389    VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2 = 1000337005,
390    VK_STRUCTURE_TYPE_BUFFER_COPY_2 = 1000337006,
391    VK_STRUCTURE_TYPE_IMAGE_COPY_2 = 1000337007,
392    VK_STRUCTURE_TYPE_IMAGE_BLIT_2 = 1000337008,
393    VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2 = 1000337009,
394    VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2 = 1000337010,
395    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES = 1000225000,
396    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO = 1000225001,
397    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES = 1000225002,
398    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES = 1000138000,
399    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES = 1000138001,
400    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK = 1000138002,
401    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO = 1000138003,
402    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES = 1000066000,
403    VK_STRUCTURE_TYPE_RENDERING_INFO = 1000044000,
404    VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO = 1000044001,
405    VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO = 1000044002,
406    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES = 1000044003,
407    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO = 1000044004,
408    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES = 1000280000,
409    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES = 1000280001,
410    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES = 1000281001,
411    VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3 = 1000360000,
412    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES = 1000413000,
413    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES = 1000413001,
414    VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS = 1000413002,
415    VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS = 1000413003,
416    VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
417    VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
418    VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007,
419    VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008,
420    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009,
421    VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010,
422    VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011,
423    VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012,
424    VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
425    VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
426    VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000,
427    VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
428    VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
429    VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
430    VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
431    VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
432    VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
433    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,
434    VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,
435    VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,
436    VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,
437    VK_STRUCTURE_TYPE_VIDEO_PROFILE_INFO_KHR = 1000023000,
438    VK_STRUCTURE_TYPE_VIDEO_CAPABILITIES_KHR = 1000023001,
439    VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR = 1000023002,
440    VK_STRUCTURE_TYPE_VIDEO_SESSION_MEMORY_REQUIREMENTS_KHR = 1000023003,
441    VK_STRUCTURE_TYPE_BIND_VIDEO_SESSION_MEMORY_INFO_KHR = 1000023004,
442    VK_STRUCTURE_TYPE_VIDEO_SESSION_CREATE_INFO_KHR = 1000023005,
443    VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000023006,
444    VK_STRUCTURE_TYPE_VIDEO_SESSION_PARAMETERS_UPDATE_INFO_KHR = 1000023007,
445    VK_STRUCTURE_TYPE_VIDEO_BEGIN_CODING_INFO_KHR = 1000023008,
446    VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR = 1000023009,
447    VK_STRUCTURE_TYPE_VIDEO_CODING_CONTROL_INFO_KHR = 1000023010,
448    VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR = 1000023011,
449    VK_STRUCTURE_TYPE_QUEUE_FAMILY_VIDEO_PROPERTIES_KHR = 1000023012,
450    VK_STRUCTURE_TYPE_VIDEO_PROFILE_LIST_INFO_KHR = 1000023013,
451    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_FORMAT_INFO_KHR = 1000023014,
452    VK_STRUCTURE_TYPE_VIDEO_FORMAT_PROPERTIES_KHR = 1000023015,
453    VK_STRUCTURE_TYPE_QUEUE_FAMILY_QUERY_RESULT_STATUS_PROPERTIES_KHR = 1000023016,
454    VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR = 1000024000,
455    VK_STRUCTURE_TYPE_VIDEO_DECODE_CAPABILITIES_KHR = 1000024001,
456    VK_STRUCTURE_TYPE_VIDEO_DECODE_USAGE_INFO_KHR = 1000024002,
457    VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
458    VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
459    VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
460    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000,
461    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001,
462    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002,
463    VK_STRUCTURE_TYPE_CU_MODULE_CREATE_INFO_NVX = 1000029000,
464    VK_STRUCTURE_TYPE_CU_FUNCTION_CREATE_INFO_NVX = 1000029001,
465    VK_STRUCTURE_TYPE_CU_LAUNCH_INFO_NVX = 1000029002,
466    VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000,
467    VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001,
468    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_CAPABILITIES_KHR = 1000038000,
469    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000038001,
470    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000038002,
471    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PICTURE_INFO_KHR = 1000038003,
472    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_DPB_SLOT_INFO_KHR = 1000038004,
473    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_NALU_SLICE_INFO_KHR = 1000038005,
474    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_GOP_REMAINING_FRAME_INFO_KHR = 1000038006,
475    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_PROFILE_INFO_KHR = 1000038007,
476    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_INFO_KHR = 1000038008,
477    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_RATE_CONTROL_LAYER_INFO_KHR = 1000038009,
478    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_CREATE_INFO_KHR = 1000038010,
479    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_QUALITY_LEVEL_PROPERTIES_KHR = 1000038011,
480    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_GET_INFO_KHR = 1000038012,
481    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H264_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000038013,
482    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_CAPABILITIES_KHR = 1000039000,
483    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000039001,
484    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000039002,
485    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PICTURE_INFO_KHR = 1000039003,
486    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_DPB_SLOT_INFO_KHR = 1000039004,
487    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_NALU_SLICE_SEGMENT_INFO_KHR = 1000039005,
488    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_GOP_REMAINING_FRAME_INFO_KHR = 1000039006,
489    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_PROFILE_INFO_KHR = 1000039007,
490    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_INFO_KHR = 1000039009,
491    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_RATE_CONTROL_LAYER_INFO_KHR = 1000039010,
492    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_CREATE_INFO_KHR = 1000039011,
493    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_QUALITY_LEVEL_PROPERTIES_KHR = 1000039012,
494    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_GET_INFO_KHR = 1000039013,
495    VK_STRUCTURE_TYPE_VIDEO_ENCODE_H265_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000039014,
496    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_CAPABILITIES_KHR = 1000040000,
497    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PICTURE_INFO_KHR = 1000040001,
498    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_PROFILE_INFO_KHR = 1000040003,
499    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000040004,
500    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR = 1000040005,
501    VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_DPB_SLOT_INFO_KHR = 1000040006,
502    VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000,
503    VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000044006,
504    VK_STRUCTURE_TYPE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_INFO_EXT = 1000044007,
505    VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD = 1000044008,
506    VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_ATTRIBUTES_INFO_NVX = 1000044009,
507    VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000,
508    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000,
509    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
510    VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,
511    VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
512    VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
513    VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
514    VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
515    VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000,
516    VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000,
517    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001,
518    VK_STRUCTURE_TYPE_PIPELINE_ROBUSTNESS_CREATE_INFO_EXT = 1000068000,
519    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_FEATURES_EXT = 1000068001,
520    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_ROBUSTNESS_PROPERTIES_EXT = 1000068002,
521    VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000,
522    VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001,
523    VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002,
524    VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003,
525    VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000,
526    VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001,
527    VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002,
528    VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000,
529    VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000,
530    VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001,
531    VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002,
532    VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003,
533    VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000,
534    VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001,
535    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000,
536    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000,
537    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001,
538    VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002,
539    VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
540    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000,
541    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000,
542    VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000,
543    VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001,
544    VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002,
545    VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,
546    VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000,
547    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000,
548    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000,
549    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,
550    VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,
551    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000,
552    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001,
553    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000,
554    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001,
555    VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
556    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RELAXED_LINE_RASTERIZATION_FEATURES_IMG = 1000110000,
557    VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
558    VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000,
559    VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001,
560    VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002,
561    VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000,
562    VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001,
563    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000,
564    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001,
565    VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002,
566    VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003,
567    VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004,
568    VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005,
569    VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006,
570    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,
571    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001,
572    VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002,
573    VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000,
574    VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001,
575    VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002,
576    VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003,
577    VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004,
578    VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000,
579    VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000,
580    VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000,
581    VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001,
582    VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002,
583    VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003,
584    VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004,
585    VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000,
586    VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001,
587    VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002,
588    VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003,
589    VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004,
590    VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005,
591    VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_2_ANDROID = 1000129006,
592#ifdef VK_ENABLE_BETA_EXTENSIONS
593    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_FEATURES_AMDX = 1000134000,
594#endif
595#ifdef VK_ENABLE_BETA_EXTENSIONS
596    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ENQUEUE_PROPERTIES_AMDX = 1000134001,
597#endif
598#ifdef VK_ENABLE_BETA_EXTENSIONS
599    VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_SCRATCH_SIZE_AMDX = 1000134002,
600#endif
601#ifdef VK_ENABLE_BETA_EXTENSIONS
602    VK_STRUCTURE_TYPE_EXECUTION_GRAPH_PIPELINE_CREATE_INFO_AMDX = 1000134003,
603#endif
604#ifdef VK_ENABLE_BETA_EXTENSIONS
605    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_NODE_CREATE_INFO_AMDX = 1000134004,
606#endif
607    VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000,
608    VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001,
609    VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002,
610    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003,
611    VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004,
612    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000,
613    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001,
614    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
615    VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000,
616    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000150007,
617    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000,
618    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002,
619    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003,
620    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004,
621    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005,
622    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006,
623    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR = 1000150009,
624    VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010,
625    VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011,
626    VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012,
627    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR = 1000150013,
628    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR = 1000150014,
629    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017,
630    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR = 1000150020,
631    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR = 1000347000,
632    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR = 1000347001,
633    VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015,
634    VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016,
635    VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018,
636    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR = 1000348013,
637    VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000,
638    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000,
639    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001,
640    VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000,
641    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002,
642    VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003,
643    VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004,
644    VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005,
645    VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_2_EXT = 1000158006,
646    VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,
647    VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
648#ifdef VK_ENABLE_BETA_EXTENSIONS
649    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR = 1000163000,
650#endif
651#ifdef VK_ENABLE_BETA_EXTENSIONS
652    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_PROPERTIES_KHR = 1000163001,
653#endif
654    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000,
655    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001,
656    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002,
657    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005,
658    VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV = 1000165000,
659    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV = 1000165001,
660    VK_STRUCTURE_TYPE_GEOMETRY_NV = 1000165003,
661    VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV = 1000165004,
662    VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV = 1000165005,
663    VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV = 1000165006,
664    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV = 1000165007,
665    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV = 1000165008,
666    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV = 1000165009,
667    VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV = 1000165011,
668    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV = 1000165012,
669    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000,
670    VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001,
671    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_IMAGE_FORMAT_INFO_EXT = 1000170000,
672    VK_STRUCTURE_TYPE_FILTER_CUBIC_IMAGE_VIEW_IMAGE_FORMAT_PROPERTIES_EXT = 1000170001,
673    VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000,
674    VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001,
675    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,
676    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000,
677    VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000,
678    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000,
679    VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_CAPABILITIES_KHR = 1000187000,
680    VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_CREATE_INFO_KHR = 1000187001,
681    VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_SESSION_PARAMETERS_ADD_INFO_KHR = 1000187002,
682    VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PROFILE_INFO_KHR = 1000187003,
683    VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_PICTURE_INFO_KHR = 1000187004,
684    VK_STRUCTURE_TYPE_VIDEO_DECODE_H265_DPB_SLOT_INFO_KHR = 1000187005,
685    VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR = 1000174000,
686    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR = 1000388000,
687    VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR = 1000388001,
688    VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000,
689    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000,
690    VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000,
691    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000,
692    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000,
693    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001,
694    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000,
695    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000,
696    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002,
697    VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000,
698    VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001,
699    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000,
700    VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000,
701    VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001,
702    VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002,
703    VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003,
704    VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004,
705    VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005,
706    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000,
707    VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000,
708    VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001,
709    VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000,
710    VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000,
711    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000,
712    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001,
713    VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002,
714    VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000226000,
715    VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR = 1000226001,
716    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR = 1000226002,
717    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR = 1000226003,
718    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = 1000226004,
719    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000,
720    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000,
721    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = 1000234000,
722    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000,
723    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000,
724    VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001,
725    VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000,
726    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000,
727    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000,
728    VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002,
729    VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000,
730    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_WAIT_FEATURES_KHR = 1000248000,
731    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000,
732    VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001,
733    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002,
734    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000,
735    VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001,
736    VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002,
737    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000,
738    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000,
739    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_FEATURES_EXT = 1000254000,
740    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_PROVOKING_VERTEX_STATE_CREATE_INFO_EXT = 1000254001,
741    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROVOKING_VERTEX_PROPERTIES_EXT = 1000254002,
742    VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000,
743    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002,
744    VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001,
745    VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000,
746    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000,
747    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001,
748    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002,
749    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000,
750    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000,
751    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000,
752    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000,
753    VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001,
754    VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002,
755    VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003,
756    VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004,
757    VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005,
758    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_FEATURES_EXT = 1000270000,
759    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_IMAGE_COPY_PROPERTIES_EXT = 1000270001,
760    VK_STRUCTURE_TYPE_MEMORY_TO_IMAGE_COPY_EXT = 1000270002,
761    VK_STRUCTURE_TYPE_IMAGE_TO_MEMORY_COPY_EXT = 1000270003,
762    VK_STRUCTURE_TYPE_COPY_IMAGE_TO_MEMORY_INFO_EXT = 1000270004,
763    VK_STRUCTURE_TYPE_COPY_MEMORY_TO_IMAGE_INFO_EXT = 1000270005,
764    VK_STRUCTURE_TYPE_HOST_IMAGE_LAYOUT_TRANSITION_INFO_EXT = 1000270006,
765    VK_STRUCTURE_TYPE_COPY_IMAGE_TO_IMAGE_INFO_EXT = 1000270007,
766    VK_STRUCTURE_TYPE_SUBRESOURCE_HOST_MEMCPY_SIZE_EXT = 1000270008,
767    VK_STRUCTURE_TYPE_HOST_IMAGE_COPY_DEVICE_PERFORMANCE_QUERY_EXT = 1000270009,
768    VK_STRUCTURE_TYPE_MEMORY_MAP_INFO_KHR = 1000271000,
769    VK_STRUCTURE_TYPE_MEMORY_UNMAP_INFO_KHR = 1000271001,
770    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_2_FEATURES_EXT = 1000273000,
771    VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_EXT = 1000274000,
772    VK_STRUCTURE_TYPE_SURFACE_PRESENT_SCALING_CAPABILITIES_EXT = 1000274001,
773    VK_STRUCTURE_TYPE_SURFACE_PRESENT_MODE_COMPATIBILITY_EXT = 1000274002,
774    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SWAPCHAIN_MAINTENANCE_1_FEATURES_EXT = 1000275000,
775    VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_FENCE_INFO_EXT = 1000275001,
776    VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODES_CREATE_INFO_EXT = 1000275002,
777    VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_MODE_INFO_EXT = 1000275003,
778    VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_SCALING_CREATE_INFO_EXT = 1000275004,
779    VK_STRUCTURE_TYPE_RELEASE_SWAPCHAIN_IMAGES_INFO_EXT = 1000275005,
780    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000,
781    VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001,
782    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002,
783    VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003,
784    VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004,
785    VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005,
786    VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006,
787    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007,
788    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INHERITED_VIEWPORT_SCISSOR_FEATURES_NV = 1000278000,
789    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_VIEWPORT_SCISSOR_INFO_NV = 1000278001,
790    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000,
791    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000,
792    VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001,
793    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_BIAS_CONTROL_FEATURES_EXT = 1000283000,
794    VK_STRUCTURE_TYPE_DEPTH_BIAS_INFO_EXT = 1000283001,
795    VK_STRUCTURE_TYPE_DEPTH_BIAS_REPRESENTATION_INFO_EXT = 1000283002,
796    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT = 1000284000,
797    VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT = 1000284001,
798    VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT = 1000284002,
799    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000,
800    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001,
801    VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000,
802    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001,
803    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002,
804    VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000,
805    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_BARRIER_FEATURES_NV = 1000292000,
806    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_PRESENT_BARRIER_NV = 1000292001,
807    VK_STRUCTURE_TYPE_SWAPCHAIN_PRESENT_BARRIER_CREATE_INFO_NV = 1000292002,
808    VK_STRUCTURE_TYPE_PRESENT_ID_KHR = 1000294000,
809    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENT_ID_FEATURES_KHR = 1000294001,
810    VK_STRUCTURE_TYPE_VIDEO_ENCODE_INFO_KHR = 1000299000,
811    VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_INFO_KHR = 1000299001,
812    VK_STRUCTURE_TYPE_VIDEO_ENCODE_RATE_CONTROL_LAYER_INFO_KHR = 1000299002,
813    VK_STRUCTURE_TYPE_VIDEO_ENCODE_CAPABILITIES_KHR = 1000299003,
814    VK_STRUCTURE_TYPE_VIDEO_ENCODE_USAGE_INFO_KHR = 1000299004,
815    VK_STRUCTURE_TYPE_QUERY_POOL_VIDEO_ENCODE_FEEDBACK_CREATE_INFO_KHR = 1000299005,
816    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299006,
817    VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_PROPERTIES_KHR = 1000299007,
818    VK_STRUCTURE_TYPE_VIDEO_ENCODE_QUALITY_LEVEL_INFO_KHR = 1000299008,
819    VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_GET_INFO_KHR = 1000299009,
820    VK_STRUCTURE_TYPE_VIDEO_ENCODE_SESSION_PARAMETERS_FEEDBACK_INFO_KHR = 1000299010,
821    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000,
822    VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001,
823    VK_STRUCTURE_TYPE_CUDA_MODULE_CREATE_INFO_NV = 1000307000,
824    VK_STRUCTURE_TYPE_CUDA_FUNCTION_CREATE_INFO_NV = 1000307001,
825    VK_STRUCTURE_TYPE_CUDA_LAUNCH_INFO_NV = 1000307002,
826    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_FEATURES_NV = 1000307003,
827    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUDA_KERNEL_LAUNCH_PROPERTIES_NV = 1000307004,
828    VK_STRUCTURE_TYPE_QUERY_LOW_LATENCY_SUPPORT_NV = 1000310000,
829    VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECT_CREATE_INFO_EXT = 1000311000,
830    VK_STRUCTURE_TYPE_EXPORT_METAL_OBJECTS_INFO_EXT = 1000311001,
831    VK_STRUCTURE_TYPE_EXPORT_METAL_DEVICE_INFO_EXT = 1000311002,
832    VK_STRUCTURE_TYPE_EXPORT_METAL_COMMAND_QUEUE_INFO_EXT = 1000311003,
833    VK_STRUCTURE_TYPE_EXPORT_METAL_BUFFER_INFO_EXT = 1000311004,
834    VK_STRUCTURE_TYPE_IMPORT_METAL_BUFFER_INFO_EXT = 1000311005,
835    VK_STRUCTURE_TYPE_EXPORT_METAL_TEXTURE_INFO_EXT = 1000311006,
836    VK_STRUCTURE_TYPE_IMPORT_METAL_TEXTURE_INFO_EXT = 1000311007,
837    VK_STRUCTURE_TYPE_EXPORT_METAL_IO_SURFACE_INFO_EXT = 1000311008,
838    VK_STRUCTURE_TYPE_IMPORT_METAL_IO_SURFACE_INFO_EXT = 1000311009,
839    VK_STRUCTURE_TYPE_EXPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311010,
840    VK_STRUCTURE_TYPE_IMPORT_METAL_SHARED_EVENT_INFO_EXT = 1000311011,
841    VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008,
842    VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009,
843    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_PROPERTIES_EXT = 1000316000,
844    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_DENSITY_MAP_PROPERTIES_EXT = 1000316001,
845    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_BUFFER_FEATURES_EXT = 1000316002,
846    VK_STRUCTURE_TYPE_DESCRIPTOR_ADDRESS_INFO_EXT = 1000316003,
847    VK_STRUCTURE_TYPE_DESCRIPTOR_GET_INFO_EXT = 1000316004,
848    VK_STRUCTURE_TYPE_BUFFER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316005,
849    VK_STRUCTURE_TYPE_IMAGE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316006,
850    VK_STRUCTURE_TYPE_IMAGE_VIEW_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316007,
851    VK_STRUCTURE_TYPE_SAMPLER_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316008,
852    VK_STRUCTURE_TYPE_OPAQUE_CAPTURE_DESCRIPTOR_DATA_CREATE_INFO_EXT = 1000316010,
853    VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_INFO_EXT = 1000316011,
854    VK_STRUCTURE_TYPE_DESCRIPTOR_BUFFER_BINDING_PUSH_DESCRIPTOR_BUFFER_HANDLE_EXT = 1000316012,
855    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CAPTURE_DESCRIPTOR_DATA_INFO_EXT = 1000316009,
856    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_FEATURES_EXT = 1000320000,
857    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GRAPHICS_PIPELINE_LIBRARY_PROPERTIES_EXT = 1000320001,
858    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_LIBRARY_CREATE_INFO_EXT = 1000320002,
859    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_FEATURES_AMD = 1000321000,
860    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR = 1000203000,
861    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_PROPERTIES_KHR = 1000322000,
862    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_FEATURES_KHR = 1000323000,
863    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV = 1000326000,
864    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV = 1000326001,
865    VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV = 1000326002,
866    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_MOTION_TRIANGLES_DATA_NV = 1000327000,
867    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MOTION_BLUR_FEATURES_NV = 1000327001,
868    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MOTION_INFO_NV = 1000327002,
869    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_EXT = 1000328000,
870    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_EXT = 1000328001,
871    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_2_PLANE_444_FORMATS_FEATURES_EXT = 1000330000,
872    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000,
873    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001,
874    VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM = 1000333000,
875    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000,
876    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_FEATURES_EXT = 1000338000,
877    VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_CONTROL_EXT = 1000338001,
878    VK_STRUCTURE_TYPE_IMAGE_COMPRESSION_PROPERTIES_EXT = 1000338004,
879    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_FEATURES_EXT = 1000339000,
880    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000,
881    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FAULT_FEATURES_EXT = 1000341000,
882    VK_STRUCTURE_TYPE_DEVICE_FAULT_COUNTS_EXT = 1000341001,
883    VK_STRUCTURE_TYPE_DEVICE_FAULT_INFO_EXT = 1000341002,
884    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RGBA10X6_FORMATS_FEATURES_EXT = 1000344000,
885    VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000,
886    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_INPUT_DYNAMIC_STATE_FEATURES_EXT = 1000352000,
887    VK_STRUCTURE_TYPE_VERTEX_INPUT_BINDING_DESCRIPTION_2_EXT = 1000352001,
888    VK_STRUCTURE_TYPE_VERTEX_INPUT_ATTRIBUTE_DESCRIPTION_2_EXT = 1000352002,
889    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRM_PROPERTIES_EXT = 1000353000,
890    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ADDRESS_BINDING_REPORT_FEATURES_EXT = 1000354000,
891    VK_STRUCTURE_TYPE_DEVICE_ADDRESS_BINDING_CALLBACK_DATA_EXT = 1000354001,
892    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_CONTROL_FEATURES_EXT = 1000355000,
893    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_DEPTH_CLIP_CONTROL_CREATE_INFO_EXT = 1000355001,
894    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVE_TOPOLOGY_LIST_RESTART_FEATURES_EXT = 1000356000,
895    VK_STRUCTURE_TYPE_IMPORT_MEMORY_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364000,
896    VK_STRUCTURE_TYPE_MEMORY_ZIRCON_HANDLE_PROPERTIES_FUCHSIA = 1000364001,
897    VK_STRUCTURE_TYPE_MEMORY_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000364002,
898    VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365000,
899    VK_STRUCTURE_TYPE_SEMAPHORE_GET_ZIRCON_HANDLE_INFO_FUCHSIA = 1000365001,
900    VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CREATE_INFO_FUCHSIA = 1000366000,
901    VK_STRUCTURE_TYPE_IMPORT_MEMORY_BUFFER_COLLECTION_FUCHSIA = 1000366001,
902    VK_STRUCTURE_TYPE_BUFFER_COLLECTION_IMAGE_CREATE_INFO_FUCHSIA = 1000366002,
903    VK_STRUCTURE_TYPE_BUFFER_COLLECTION_PROPERTIES_FUCHSIA = 1000366003,
904    VK_STRUCTURE_TYPE_BUFFER_CONSTRAINTS_INFO_FUCHSIA = 1000366004,
905    VK_STRUCTURE_TYPE_BUFFER_COLLECTION_BUFFER_CREATE_INFO_FUCHSIA = 1000366005,
906    VK_STRUCTURE_TYPE_IMAGE_CONSTRAINTS_INFO_FUCHSIA = 1000366006,
907    VK_STRUCTURE_TYPE_IMAGE_FORMAT_CONSTRAINTS_INFO_FUCHSIA = 1000366007,
908    VK_STRUCTURE_TYPE_SYSMEM_COLOR_SPACE_FUCHSIA = 1000366008,
909    VK_STRUCTURE_TYPE_BUFFER_COLLECTION_CONSTRAINTS_INFO_FUCHSIA = 1000366009,
910    VK_STRUCTURE_TYPE_SUBPASS_SHADING_PIPELINE_CREATE_INFO_HUAWEI = 1000369000,
911    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_FEATURES_HUAWEI = 1000369001,
912    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_SHADING_PROPERTIES_HUAWEI = 1000369002,
913    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INVOCATION_MASK_FEATURES_HUAWEI = 1000370000,
914    VK_STRUCTURE_TYPE_MEMORY_GET_REMOTE_ADDRESS_INFO_NV = 1000371000,
915    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_RDMA_FEATURES_NV = 1000371001,
916    VK_STRUCTURE_TYPE_PIPELINE_PROPERTIES_IDENTIFIER_EXT = 1000372000,
917    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROPERTIES_FEATURES_EXT = 1000372001,
918    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAME_BOUNDARY_FEATURES_EXT = 1000375000,
919    VK_STRUCTURE_TYPE_FRAME_BOUNDARY_EXT = 1000375001,
920    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_FEATURES_EXT = 1000376000,
921    VK_STRUCTURE_TYPE_SUBPASS_RESOLVE_PERFORMANCE_QUERY_EXT = 1000376001,
922    VK_STRUCTURE_TYPE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_INFO_EXT = 1000376002,
923    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_2_FEATURES_EXT = 1000377000,
924    VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX = 1000378000,
925    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COLOR_WRITE_ENABLE_FEATURES_EXT = 1000381000,
926    VK_STRUCTURE_TYPE_PIPELINE_COLOR_WRITE_CREATE_INFO_EXT = 1000381001,
927    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIMITIVES_GENERATED_QUERY_FEATURES_EXT = 1000382000,
928    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_MAINTENANCE_1_FEATURES_KHR = 1000386000,
929    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_VIEW_MIN_LOD_FEATURES_EXT = 1000391000,
930    VK_STRUCTURE_TYPE_IMAGE_VIEW_MIN_LOD_CREATE_INFO_EXT = 1000391001,
931    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_FEATURES_EXT = 1000392000,
932    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTI_DRAW_PROPERTIES_EXT = 1000392001,
933    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_2D_VIEW_OF_3D_FEATURES_EXT = 1000393000,
934    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_FEATURES_EXT = 1000395000,
935    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TILE_IMAGE_PROPERTIES_EXT = 1000395001,
936    VK_STRUCTURE_TYPE_MICROMAP_BUILD_INFO_EXT = 1000396000,
937    VK_STRUCTURE_TYPE_MICROMAP_VERSION_INFO_EXT = 1000396001,
938    VK_STRUCTURE_TYPE_COPY_MICROMAP_INFO_EXT = 1000396002,
939    VK_STRUCTURE_TYPE_COPY_MICROMAP_TO_MEMORY_INFO_EXT = 1000396003,
940    VK_STRUCTURE_TYPE_COPY_MEMORY_TO_MICROMAP_INFO_EXT = 1000396004,
941    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_FEATURES_EXT = 1000396005,
942    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPACITY_MICROMAP_PROPERTIES_EXT = 1000396006,
943    VK_STRUCTURE_TYPE_MICROMAP_CREATE_INFO_EXT = 1000396007,
944    VK_STRUCTURE_TYPE_MICROMAP_BUILD_SIZES_INFO_EXT = 1000396008,
945    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_OPACITY_MICROMAP_EXT = 1000396009,
946#ifdef VK_ENABLE_BETA_EXTENSIONS
947    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_FEATURES_NV = 1000397000,
948#endif
949#ifdef VK_ENABLE_BETA_EXTENSIONS
950    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISPLACEMENT_MICROMAP_PROPERTIES_NV = 1000397001,
951#endif
952#ifdef VK_ENABLE_BETA_EXTENSIONS
953    VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_TRIANGLES_DISPLACEMENT_MICROMAP_NV = 1000397002,
954#endif
955    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_FEATURES_HUAWEI = 1000404000,
956    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_PROPERTIES_HUAWEI = 1000404001,
957    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CLUSTER_CULLING_SHADER_VRS_FEATURES_HUAWEI = 1000404002,
958    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BORDER_COLOR_SWIZZLE_FEATURES_EXT = 1000411000,
959    VK_STRUCTURE_TYPE_SAMPLER_BORDER_COLOR_COMPONENT_MAPPING_CREATE_INFO_EXT = 1000411001,
960    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PAGEABLE_DEVICE_LOCAL_MEMORY_FEATURES_EXT = 1000412000,
961    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_ARM = 1000415000,
962    VK_STRUCTURE_TYPE_DEVICE_QUEUE_SHADER_CORE_CONTROL_CREATE_INFO_ARM = 1000417000,
963    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_FEATURES_ARM = 1000417001,
964    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_PROPERTIES_ARM = 1000417002,
965    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_SLICED_VIEW_OF_3D_FEATURES_EXT = 1000418000,
966    VK_STRUCTURE_TYPE_IMAGE_VIEW_SLICED_CREATE_INFO_EXT = 1000418001,
967    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_SET_HOST_MAPPING_FEATURES_VALVE = 1000420000,
968    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_BINDING_REFERENCE_VALVE = 1000420001,
969    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_HOST_MAPPING_INFO_VALVE = 1000420002,
970    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLAMP_ZERO_ONE_FEATURES_EXT = 1000421000,
971    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NON_SEAMLESS_CUBE_MAP_FEATURES_EXT = 1000422000,
972    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_FEATURES_ARM = 1000424000,
973    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RENDER_PASS_STRIPED_PROPERTIES_ARM = 1000424001,
974    VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_BEGIN_INFO_ARM = 1000424002,
975    VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_INFO_ARM = 1000424003,
976    VK_STRUCTURE_TYPE_RENDER_PASS_STRIPE_SUBMIT_INFO_ARM = 1000424004,
977    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_FEATURES_QCOM = 1000425000,
978    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_OFFSET_PROPERTIES_QCOM = 1000425001,
979    VK_STRUCTURE_TYPE_SUBPASS_FRAGMENT_DENSITY_MAP_OFFSET_END_INFO_QCOM = 1000425002,
980    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_FEATURES_NV = 1000426000,
981    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COPY_MEMORY_INDIRECT_PROPERTIES_NV = 1000426001,
982    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_FEATURES_NV = 1000427000,
983    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_DECOMPRESSION_PROPERTIES_NV = 1000427001,
984    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_COMPUTE_FEATURES_NV = 1000428000,
985    VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_INDIRECT_BUFFER_INFO_NV = 1000428001,
986    VK_STRUCTURE_TYPE_PIPELINE_INDIRECT_DEVICE_ADDRESS_INFO_NV = 1000428002,
987    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINEAR_COLOR_ATTACHMENT_FEATURES_NV = 1000430000,
988    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_FEATURES_EXT = 1000437000,
989    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_FEATURES_QCOM = 1000440000,
990    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_PROPERTIES_QCOM = 1000440001,
991    VK_STRUCTURE_TYPE_IMAGE_VIEW_SAMPLE_WEIGHT_CREATE_INFO_QCOM = 1000440002,
992    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_FEATURES_EXT = 1000451000,
993    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_NESTED_COMMAND_BUFFER_PROPERTIES_EXT = 1000451001,
994    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXT = 1000453000,
995    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_FEATURES_EXT = 1000455000,
996    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_3_PROPERTIES_EXT = 1000455001,
997    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT = 1000458000,
998    VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_CONTROL_EXT = 1000458001,
999    VK_STRUCTURE_TYPE_RENDER_PASS_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000458002,
1000    VK_STRUCTURE_TYPE_RENDER_PASS_SUBPASS_FEEDBACK_CREATE_INFO_EXT = 1000458003,
1001    VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_INFO_LUNARG = 1000459000,
1002    VK_STRUCTURE_TYPE_DIRECT_DRIVER_LOADING_LIST_LUNARG = 1000459001,
1003    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_FEATURES_EXT = 1000462000,
1004    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_MODULE_IDENTIFIER_PROPERTIES_EXT = 1000462001,
1005    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_MODULE_IDENTIFIER_CREATE_INFO_EXT = 1000462002,
1006    VK_STRUCTURE_TYPE_SHADER_MODULE_IDENTIFIER_EXT = 1000462003,
1007    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT = 1000342000,
1008    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_FEATURES_NV = 1000464000,
1009    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_OPTICAL_FLOW_PROPERTIES_NV = 1000464001,
1010    VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_INFO_NV = 1000464002,
1011    VK_STRUCTURE_TYPE_OPTICAL_FLOW_IMAGE_FORMAT_PROPERTIES_NV = 1000464003,
1012    VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_INFO_NV = 1000464004,
1013    VK_STRUCTURE_TYPE_OPTICAL_FLOW_EXECUTE_INFO_NV = 1000464005,
1014    VK_STRUCTURE_TYPE_OPTICAL_FLOW_SESSION_CREATE_PRIVATE_DATA_INFO_NV = 1000464010,
1015    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LEGACY_DITHERING_FEATURES_EXT = 1000465000,
1016    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_PROTECTED_ACCESS_FEATURES_EXT = 1000466000,
1017    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_FEATURES_ANDROID = 1000468000,
1018    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468001,
1019    VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_RESOLVE_PROPERTIES_ANDROID = 1000468002,
1020    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_FEATURES_KHR = 1000470000,
1021    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_5_PROPERTIES_KHR = 1000470001,
1022    VK_STRUCTURE_TYPE_RENDERING_AREA_INFO_KHR = 1000470003,
1023    VK_STRUCTURE_TYPE_DEVICE_IMAGE_SUBRESOURCE_INFO_KHR = 1000470004,
1024    VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR = 1000338002,
1025    VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR = 1000338003,
1026    VK_STRUCTURE_TYPE_PIPELINE_CREATE_FLAGS_2_CREATE_INFO_KHR = 1000470005,
1027    VK_STRUCTURE_TYPE_BUFFER_USAGE_FLAGS_2_CREATE_INFO_KHR = 1000470006,
1028    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_POSITION_FETCH_FEATURES_KHR = 1000481000,
1029    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_FEATURES_EXT = 1000482000,
1030    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_OBJECT_PROPERTIES_EXT = 1000482001,
1031    VK_STRUCTURE_TYPE_SHADER_CREATE_INFO_EXT = 1000482002,
1032    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TILE_PROPERTIES_FEATURES_QCOM = 1000484000,
1033    VK_STRUCTURE_TYPE_TILE_PROPERTIES_QCOM = 1000484001,
1034    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_AMIGO_PROFILING_FEATURES_SEC = 1000485000,
1035    VK_STRUCTURE_TYPE_AMIGO_PROFILING_SUBMIT_INFO_SEC = 1000485001,
1036    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_VIEWPORTS_FEATURES_QCOM = 1000488000,
1037    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_FEATURES_NV = 1000490000,
1038    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_INVOCATION_REORDER_PROPERTIES_NV = 1000490001,
1039    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_FEATURES_NV = 1000492000,
1040    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_SPARSE_ADDRESS_SPACE_PROPERTIES_NV = 1000492001,
1041    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT = 1000351000,
1042    VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT = 1000351002,
1043    VK_STRUCTURE_TYPE_LAYER_SETTINGS_CREATE_INFO_EXT = 1000496000,
1044    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_FEATURES_ARM = 1000497000,
1045    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_BUILTINS_PROPERTIES_ARM = 1000497001,
1046    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_LIBRARY_GROUP_HANDLES_FEATURES_EXT = 1000498000,
1047    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_FEATURES_EXT = 1000499000,
1048    VK_STRUCTURE_TYPE_LATENCY_SLEEP_MODE_INFO_NV = 1000505000,
1049    VK_STRUCTURE_TYPE_LATENCY_SLEEP_INFO_NV = 1000505001,
1050    VK_STRUCTURE_TYPE_SET_LATENCY_MARKER_INFO_NV = 1000505002,
1051    VK_STRUCTURE_TYPE_GET_LATENCY_MARKER_INFO_NV = 1000505003,
1052    VK_STRUCTURE_TYPE_LATENCY_TIMINGS_FRAME_REPORT_NV = 1000505004,
1053    VK_STRUCTURE_TYPE_LATENCY_SUBMISSION_PRESENT_ID_NV = 1000505005,
1054    VK_STRUCTURE_TYPE_OUT_OF_BAND_QUEUE_TYPE_INFO_NV = 1000505006,
1055    VK_STRUCTURE_TYPE_SWAPCHAIN_LATENCY_CREATE_INFO_NV = 1000505007,
1056    VK_STRUCTURE_TYPE_LATENCY_SURFACE_CAPABILITIES_NV = 1000505008,
1057    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_KHR = 1000506000,
1058    VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506001,
1059    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_KHR = 1000506002,
1060    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_RENDER_AREAS_FEATURES_QCOM = 1000510000,
1061    VK_STRUCTURE_TYPE_MULTIVIEW_PER_VIEW_RENDER_AREAS_RENDER_PASS_BEGIN_INFO_QCOM = 1000510001,
1062    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VIDEO_MAINTENANCE_1_FEATURES_KHR = 1000515000,
1063    VK_STRUCTURE_TYPE_VIDEO_INLINE_QUERY_INFO_KHR = 1000515001,
1064    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PER_STAGE_DESCRIPTOR_SET_FEATURES_NV = 1000516000,
1065    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_FEATURES_QCOM = 1000518000,
1066    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_PROCESSING_2_PROPERTIES_QCOM = 1000518001,
1067    VK_STRUCTURE_TYPE_SAMPLER_BLOCK_MATCH_WINDOW_CREATE_INFO_QCOM = 1000518002,
1068    VK_STRUCTURE_TYPE_SAMPLER_CUBIC_WEIGHTS_CREATE_INFO_QCOM = 1000519000,
1069    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_WEIGHTS_FEATURES_QCOM = 1000519001,
1070    VK_STRUCTURE_TYPE_BLIT_IMAGE_CUBIC_WEIGHTS_INFO_QCOM = 1000519002,
1071    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_DEGAMMA_FEATURES_QCOM = 1000520000,
1072    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_YCBCR_DEGAMMA_CREATE_INFO_QCOM = 1000520001,
1073    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUBIC_CLAMP_FEATURES_QCOM = 1000521000,
1074    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_FEATURES_EXT = 1000524000,
1075    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_KHR = 1000525000,
1076    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR = 1000190001,
1077    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR = 1000190002,
1078    VK_STRUCTURE_TYPE_SCREEN_BUFFER_PROPERTIES_QNX = 1000529000,
1079    VK_STRUCTURE_TYPE_SCREEN_BUFFER_FORMAT_PROPERTIES_QNX = 1000529001,
1080    VK_STRUCTURE_TYPE_IMPORT_SCREEN_BUFFER_INFO_QNX = 1000529002,
1081    VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_QNX = 1000529003,
1082    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_SCREEN_BUFFER_FEATURES_QNX = 1000529004,
1083    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LAYERED_DRIVER_PROPERTIES_MSFT = 1000530000,
1084    VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR = 1000184000,
1085    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_FEATURES_KHR = 1000545000,
1086    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_6_PROPERTIES_KHR = 1000545001,
1087    VK_STRUCTURE_TYPE_BIND_MEMORY_STATUS_KHR = 1000545002,
1088    VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_SETS_INFO_KHR = 1000545003,
1089    VK_STRUCTURE_TYPE_PUSH_CONSTANTS_INFO_KHR = 1000545004,
1090    VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_INFO_KHR = 1000545005,
1091    VK_STRUCTURE_TYPE_PUSH_DESCRIPTOR_SET_WITH_TEMPLATE_INFO_KHR = 1000545006,
1092    VK_STRUCTURE_TYPE_SET_DESCRIPTOR_BUFFER_OFFSETS_INFO_EXT = 1000545007,
1093    VK_STRUCTURE_TYPE_BIND_DESCRIPTOR_BUFFER_EMBEDDED_SAMPLERS_INFO_EXT = 1000545008,
1094    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_POOL_OVERALLOCATION_FEATURES_NV = 1000546000,
1095    // ---- OHOS Add----
1096    VK_STRUCTURE_TYPE_SURFACE_CREATE_INFO_OHOS = 1000685000,
1097    VK_STRUCTURE_TYPE_NATIVE_BUFFER_OHOS = 1000453001,
1098    VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_OHOS = 1000453002,
1099    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_OHOS = 1000453003,
1100    VK_STRUCTURE_TYPE_NATIVE_BUFFER_USAGE_OHOS = 1000452000,
1101    VK_STRUCTURE_TYPE_NATIVE_BUFFER_PROPERTIES_OHOS = 1000452001,
1102    VK_STRUCTURE_TYPE_NATIVE_BUFFER_FORMAT_PROPERTIES_OHOS = 1000452002,
1103    VK_STRUCTURE_TYPE_IMPORT_NATIVE_BUFFER_INFO_OHOS = 1000452003,
1104    VK_STRUCTURE_TYPE_MEMORY_GET_NATIVE_BUFFER_INFO_OHOS = 1000452004,
1105    VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_OHOS = 1000452005,
1106    // ---- OHOS Add----
1107    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
1108    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES,
1109    VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT,
1110    VK_STRUCTURE_TYPE_RENDERING_INFO_KHR = VK_STRUCTURE_TYPE_RENDERING_INFO,
1111    VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO_KHR = VK_STRUCTURE_TYPE_RENDERING_ATTACHMENT_INFO,
1112    VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_RENDERING_CREATE_INFO,
1113    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DYNAMIC_RENDERING_FEATURES,
1114    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO_KHR = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDERING_INFO,
1115    VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_NV = VK_STRUCTURE_TYPE_ATTACHMENT_SAMPLE_COUNT_INFO_AMD,
1116    VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO,
1117    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES,
1118    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES,
1119    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2,
1120    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2,
1121    VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2,
1122    VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2,
1123    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2,
1124    VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2,
1125    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2,
1126    VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2,
1127    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2,
1128    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO,
1129    VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO,
1130    VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO,
1131    VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO,
1132    VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO,
1133    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO,
1134    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO,
1135    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES,
1136    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES,
1137    VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO,
1138    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO,
1139    VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES,
1140    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO,
1141    VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES,
1142    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES,
1143    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO,
1144    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO,
1145    VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO,
1146    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO,
1147    VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES,
1148    VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO,
1149    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
1150    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES,
1151    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES,
1152    VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO,
1153    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT,
1154    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES,
1155    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO,
1156    VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO,
1157    VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO,
1158    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2,
1159    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2,
1160    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2,
1161    VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2,
1162    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2,
1163    VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO,
1164    VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR = VK_STRUCTURE_TYPE_SUBPASS_END_INFO,
1165    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO,
1166    VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES,
1167    VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO,
1168    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES,
1169    VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO,
1170    VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO,
1171    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO,
1172    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES,
1173    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR,
1174    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS,
1175    VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO,
1176    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES,
1177    VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO,
1178    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES,
1179    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES,
1180    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK,
1181    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO,
1182    VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2,
1183    VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2,
1184    VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2,
1185    VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2,
1186    VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2,
1187    VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO,
1188    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO,
1189    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO,
1190    VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO,
1191    VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO,
1192    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES,
1193    VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES,
1194    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO,
1195    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO,
1196    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO,
1197    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES,
1198    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES,
1199    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO,
1200    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT,
1201    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES,
1202    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT,
1203    VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_KHR,
1204    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES,
1205    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES,
1206    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES,
1207    VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_KHR,
1208    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_KHR,
1209    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_KHR,
1210    VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO,
1211    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES,
1212    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES,
1213    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES,
1214    VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE,
1215    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_KHR,
1216    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES,
1217    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES,
1218    VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO,
1219    VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO,
1220    VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO,
1221    VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO,
1222    VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL,
1223    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES,
1224    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES,
1225    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES,
1226    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES,
1227    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO,
1228    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES,
1229    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES,
1230    VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT,
1231    VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT,
1232    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT,
1233    VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
1234    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES,
1235    VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO,
1236    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES,
1237    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES,
1238    VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO,
1239    VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO,
1240    VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO,
1241    VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO,
1242    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES,
1243    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES,
1244    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_FEATURES,
1245    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_DOT_PRODUCT_PROPERTIES,
1246    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES,
1247    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES,
1248    VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO,
1249    VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO,
1250    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES,
1251    VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_MEMORY_BARRIER_2,
1252    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2,
1253    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2,
1254    VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR = VK_STRUCTURE_TYPE_DEPENDENCY_INFO,
1255    VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR = VK_STRUCTURE_TYPE_SUBMIT_INFO_2,
1256    VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO,
1257    VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR = VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO,
1258    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES,
1259    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES,
1260    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES,
1261    VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2,
1262    VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2,
1263    VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2,
1264    VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2,
1265    VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2,
1266    VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR = VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2,
1267    VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR = VK_STRUCTURE_TYPE_BUFFER_COPY_2,
1268    VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR = VK_STRUCTURE_TYPE_IMAGE_COPY_2,
1269    VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR = VK_STRUCTURE_TYPE_IMAGE_BLIT_2,
1270    VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR = VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2,
1271    VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR = VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2,
1272    VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_EXT = VK_STRUCTURE_TYPE_SUBRESOURCE_LAYOUT_2_KHR,
1273    VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_EXT = VK_STRUCTURE_TYPE_IMAGE_SUBRESOURCE_2_KHR,
1274    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_ARM = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_FEATURES_EXT,
1275    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_EXT,
1276    VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_EXT,
1277    VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3_KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_3,
1278    VK_STRUCTURE_TYPE_PIPELINE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR,
1279    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GLOBAL_PRIORITY_QUERY_FEATURES_KHR,
1280    VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_EXT = VK_STRUCTURE_TYPE_QUEUE_FAMILY_GLOBAL_PRIORITY_PROPERTIES_KHR,
1281    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_FEATURES,
1282    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES_KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_4_PROPERTIES,
1283    VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_DEVICE_BUFFER_MEMORY_REQUIREMENTS,
1284    VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS_KHR = VK_STRUCTURE_TYPE_DEVICE_IMAGE_MEMORY_REQUIREMENTS,
1285    VK_STRUCTURE_TYPE_SHADER_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO,
1286    VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
1287} VkStructureType;
1288
1289typedef enum VkPipelineCacheHeaderVersion {
1290    VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
1291    VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF
1292} VkPipelineCacheHeaderVersion;
1293
1294typedef enum VkImageLayout {
1295    VK_IMAGE_LAYOUT_UNDEFINED = 0,
1296    VK_IMAGE_LAYOUT_GENERAL = 1,
1297    VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,
1298    VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
1299    VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
1300    VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,
1301    VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,
1302    VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
1303    VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
1304    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000,
1305    VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001,
1306    VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL = 1000241000,
1307    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL = 1000241001,
1308    VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL = 1000241002,
1309    VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL = 1000241003,
1310    VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL = 1000314000,
1311    VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL = 1000314001,
1312    VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
1313    VK_IMAGE_LAYOUT_VIDEO_DECODE_DST_KHR = 1000024000,
1314    VK_IMAGE_LAYOUT_VIDEO_DECODE_SRC_KHR = 1000024001,
1315    VK_IMAGE_LAYOUT_VIDEO_DECODE_DPB_KHR = 1000024002,
1316    VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
1317    VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000,
1318    VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = 1000164003,
1319    VK_IMAGE_LAYOUT_VIDEO_ENCODE_DST_KHR = 1000299000,
1320    VK_IMAGE_LAYOUT_VIDEO_ENCODE_SRC_KHR = 1000299001,
1321    VK_IMAGE_LAYOUT_VIDEO_ENCODE_DPB_KHR = 1000299002,
1322    VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_OPTIMAL_EXT = 1000339000,
1323    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL,
1324    VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL,
1325    VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR,
1326    VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL,
1327    VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL,
1328    VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL,
1329    VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL,
1330    VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR = VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL,
1331    VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL,
1332    VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF
1333} VkImageLayout;
1334
1335typedef enum VkObjectType {
1336    VK_OBJECT_TYPE_UNKNOWN = 0,
1337    VK_OBJECT_TYPE_INSTANCE = 1,
1338    VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,
1339    VK_OBJECT_TYPE_DEVICE = 3,
1340    VK_OBJECT_TYPE_QUEUE = 4,
1341    VK_OBJECT_TYPE_SEMAPHORE = 5,
1342    VK_OBJECT_TYPE_COMMAND_BUFFER = 6,
1343    VK_OBJECT_TYPE_FENCE = 7,
1344    VK_OBJECT_TYPE_DEVICE_MEMORY = 8,
1345    VK_OBJECT_TYPE_BUFFER = 9,
1346    VK_OBJECT_TYPE_IMAGE = 10,
1347    VK_OBJECT_TYPE_EVENT = 11,
1348    VK_OBJECT_TYPE_QUERY_POOL = 12,
1349    VK_OBJECT_TYPE_BUFFER_VIEW = 13,
1350    VK_OBJECT_TYPE_IMAGE_VIEW = 14,
1351    VK_OBJECT_TYPE_SHADER_MODULE = 15,
1352    VK_OBJECT_TYPE_PIPELINE_CACHE = 16,
1353    VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,
1354    VK_OBJECT_TYPE_RENDER_PASS = 18,
1355    VK_OBJECT_TYPE_PIPELINE = 19,
1356    VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,
1357    VK_OBJECT_TYPE_SAMPLER = 21,
1358    VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,
1359    VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,
1360    VK_OBJECT_TYPE_FRAMEBUFFER = 24,
1361    VK_OBJECT_TYPE_COMMAND_POOL = 25,
1362    VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000,
1363    VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000,
1364    VK_OBJECT_TYPE_PRIVATE_DATA_SLOT = 1000295000,
1365    VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,
1366    VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,
1367    VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000,
1368    VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001,
1369    VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000,
1370    VK_OBJECT_TYPE_VIDEO_SESSION_KHR = 1000023000,
1371    VK_OBJECT_TYPE_VIDEO_SESSION_PARAMETERS_KHR = 1000023001,
1372    VK_OBJECT_TYPE_CU_MODULE_NVX = 1000029000,
1373    VK_OBJECT_TYPE_CU_FUNCTION_NVX = 1000029001,
1374    VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000,
1375    VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000,
1376    VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000,
1377    VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000,
1378    VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000,
1379    VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000,
1380    VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000,
1381    VK_OBJECT_TYPE_CUDA_MODULE_NV = 1000307000,
1382    VK_OBJECT_TYPE_CUDA_FUNCTION_NV = 1000307001,
1383    VK_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA = 1000366000,
1384    VK_OBJECT_TYPE_MICROMAP_EXT = 1000396000,
1385    VK_OBJECT_TYPE_OPTICAL_FLOW_SESSION_NV = 1000464000,
1386    VK_OBJECT_TYPE_SHADER_EXT = 1000482000,
1387    VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE,
1388    VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION,
1389    VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = VK_OBJECT_TYPE_PRIVATE_DATA_SLOT,
1390    VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF
1391} VkObjectType;
1392
1393typedef enum VkVendorId {
1394    VK_VENDOR_ID_VIV = 0x10001,
1395    VK_VENDOR_ID_VSI = 0x10002,
1396    VK_VENDOR_ID_KAZAN = 0x10003,
1397    VK_VENDOR_ID_CODEPLAY = 0x10004,
1398    VK_VENDOR_ID_MESA = 0x10005,
1399    VK_VENDOR_ID_POCL = 0x10006,
1400    VK_VENDOR_ID_MOBILEYE = 0x10007,
1401    VK_VENDOR_ID_MAX_ENUM = 0x7FFFFFFF
1402} VkVendorId;
1403
1404typedef enum VkSystemAllocationScope {
1405    VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,
1406    VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,
1407    VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,
1408    VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,
1409    VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4,
1410    VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF
1411} VkSystemAllocationScope;
1412
1413typedef enum VkInternalAllocationType {
1414    VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,
1415    VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF
1416} VkInternalAllocationType;
1417
1418typedef enum VkFormat {
1419    VK_FORMAT_UNDEFINED = 0,
1420    VK_FORMAT_R4G4_UNORM_PACK8 = 1,
1421    VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
1422    VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
1423    VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
1424    VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
1425    VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
1426    VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
1427    VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
1428    VK_FORMAT_R8_UNORM = 9,
1429    VK_FORMAT_R8_SNORM = 10,
1430    VK_FORMAT_R8_USCALED = 11,
1431    VK_FORMAT_R8_SSCALED = 12,
1432    VK_FORMAT_R8_UINT = 13,
1433    VK_FORMAT_R8_SINT = 14,
1434    VK_FORMAT_R8_SRGB = 15,
1435    VK_FORMAT_R8G8_UNORM = 16,
1436    VK_FORMAT_R8G8_SNORM = 17,
1437    VK_FORMAT_R8G8_USCALED = 18,
1438    VK_FORMAT_R8G8_SSCALED = 19,
1439    VK_FORMAT_R8G8_UINT = 20,
1440    VK_FORMAT_R8G8_SINT = 21,
1441    VK_FORMAT_R8G8_SRGB = 22,
1442    VK_FORMAT_R8G8B8_UNORM = 23,
1443    VK_FORMAT_R8G8B8_SNORM = 24,
1444    VK_FORMAT_R8G8B8_USCALED = 25,
1445    VK_FORMAT_R8G8B8_SSCALED = 26,
1446    VK_FORMAT_R8G8B8_UINT = 27,
1447    VK_FORMAT_R8G8B8_SINT = 28,
1448    VK_FORMAT_R8G8B8_SRGB = 29,
1449    VK_FORMAT_B8G8R8_UNORM = 30,
1450    VK_FORMAT_B8G8R8_SNORM = 31,
1451    VK_FORMAT_B8G8R8_USCALED = 32,
1452    VK_FORMAT_B8G8R8_SSCALED = 33,
1453    VK_FORMAT_B8G8R8_UINT = 34,
1454    VK_FORMAT_B8G8R8_SINT = 35,
1455    VK_FORMAT_B8G8R8_SRGB = 36,
1456    VK_FORMAT_R8G8B8A8_UNORM = 37,
1457    VK_FORMAT_R8G8B8A8_SNORM = 38,
1458    VK_FORMAT_R8G8B8A8_USCALED = 39,
1459    VK_FORMAT_R8G8B8A8_SSCALED = 40,
1460    VK_FORMAT_R8G8B8A8_UINT = 41,
1461    VK_FORMAT_R8G8B8A8_SINT = 42,
1462    VK_FORMAT_R8G8B8A8_SRGB = 43,
1463    VK_FORMAT_B8G8R8A8_UNORM = 44,
1464    VK_FORMAT_B8G8R8A8_SNORM = 45,
1465    VK_FORMAT_B8G8R8A8_USCALED = 46,
1466    VK_FORMAT_B8G8R8A8_SSCALED = 47,
1467    VK_FORMAT_B8G8R8A8_UINT = 48,
1468    VK_FORMAT_B8G8R8A8_SINT = 49,
1469    VK_FORMAT_B8G8R8A8_SRGB = 50,
1470    VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
1471    VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
1472    VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
1473    VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
1474    VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
1475    VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
1476    VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
1477    VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
1478    VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
1479    VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
1480    VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
1481    VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
1482    VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
1483    VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
1484    VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
1485    VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
1486    VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
1487    VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
1488    VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
1489    VK_FORMAT_R16_UNORM = 70,
1490    VK_FORMAT_R16_SNORM = 71,
1491    VK_FORMAT_R16_USCALED = 72,
1492    VK_FORMAT_R16_SSCALED = 73,
1493    VK_FORMAT_R16_UINT = 74,
1494    VK_FORMAT_R16_SINT = 75,
1495    VK_FORMAT_R16_SFLOAT = 76,
1496    VK_FORMAT_R16G16_UNORM = 77,
1497    VK_FORMAT_R16G16_SNORM = 78,
1498    VK_FORMAT_R16G16_USCALED = 79,
1499    VK_FORMAT_R16G16_SSCALED = 80,
1500    VK_FORMAT_R16G16_UINT = 81,
1501    VK_FORMAT_R16G16_SINT = 82,
1502    VK_FORMAT_R16G16_SFLOAT = 83,
1503    VK_FORMAT_R16G16B16_UNORM = 84,
1504    VK_FORMAT_R16G16B16_SNORM = 85,
1505    VK_FORMAT_R16G16B16_USCALED = 86,
1506    VK_FORMAT_R16G16B16_SSCALED = 87,
1507    VK_FORMAT_R16G16B16_UINT = 88,
1508    VK_FORMAT_R16G16B16_SINT = 89,
1509    VK_FORMAT_R16G16B16_SFLOAT = 90,
1510    VK_FORMAT_R16G16B16A16_UNORM = 91,
1511    VK_FORMAT_R16G16B16A16_SNORM = 92,
1512    VK_FORMAT_R16G16B16A16_USCALED = 93,
1513    VK_FORMAT_R16G16B16A16_SSCALED = 94,
1514    VK_FORMAT_R16G16B16A16_UINT = 95,
1515    VK_FORMAT_R16G16B16A16_SINT = 96,
1516    VK_FORMAT_R16G16B16A16_SFLOAT = 97,
1517    VK_FORMAT_R32_UINT = 98,
1518    VK_FORMAT_R32_SINT = 99,
1519    VK_FORMAT_R32_SFLOAT = 100,
1520    VK_FORMAT_R32G32_UINT = 101,
1521    VK_FORMAT_R32G32_SINT = 102,
1522    VK_FORMAT_R32G32_SFLOAT = 103,
1523    VK_FORMAT_R32G32B32_UINT = 104,
1524    VK_FORMAT_R32G32B32_SINT = 105,
1525    VK_FORMAT_R32G32B32_SFLOAT = 106,
1526    VK_FORMAT_R32G32B32A32_UINT = 107,
1527    VK_FORMAT_R32G32B32A32_SINT = 108,
1528    VK_FORMAT_R32G32B32A32_SFLOAT = 109,
1529    VK_FORMAT_R64_UINT = 110,
1530    VK_FORMAT_R64_SINT = 111,
1531    VK_FORMAT_R64_SFLOAT = 112,
1532    VK_FORMAT_R64G64_UINT = 113,
1533    VK_FORMAT_R64G64_SINT = 114,
1534    VK_FORMAT_R64G64_SFLOAT = 115,
1535    VK_FORMAT_R64G64B64_UINT = 116,
1536    VK_FORMAT_R64G64B64_SINT = 117,
1537    VK_FORMAT_R64G64B64_SFLOAT = 118,
1538    VK_FORMAT_R64G64B64A64_UINT = 119,
1539    VK_FORMAT_R64G64B64A64_SINT = 120,
1540    VK_FORMAT_R64G64B64A64_SFLOAT = 121,
1541    VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
1542    VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
1543    VK_FORMAT_D16_UNORM = 124,
1544    VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
1545    VK_FORMAT_D32_SFLOAT = 126,
1546    VK_FORMAT_S8_UINT = 127,
1547    VK_FORMAT_D16_UNORM_S8_UINT = 128,
1548    VK_FORMAT_D24_UNORM_S8_UINT = 129,
1549    VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
1550    VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
1551    VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
1552    VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
1553    VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
1554    VK_FORMAT_BC2_UNORM_BLOCK = 135,
1555    VK_FORMAT_BC2_SRGB_BLOCK = 136,
1556    VK_FORMAT_BC3_UNORM_BLOCK = 137,
1557    VK_FORMAT_BC3_SRGB_BLOCK = 138,
1558    VK_FORMAT_BC4_UNORM_BLOCK = 139,
1559    VK_FORMAT_BC4_SNORM_BLOCK = 140,
1560    VK_FORMAT_BC5_UNORM_BLOCK = 141,
1561    VK_FORMAT_BC5_SNORM_BLOCK = 142,
1562    VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
1563    VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
1564    VK_FORMAT_BC7_UNORM_BLOCK = 145,
1565    VK_FORMAT_BC7_SRGB_BLOCK = 146,
1566    VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
1567    VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
1568    VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
1569    VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
1570    VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
1571    VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
1572    VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
1573    VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
1574    VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
1575    VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
1576    VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
1577    VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
1578    VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
1579    VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
1580    VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
1581    VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
1582    VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
1583    VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
1584    VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
1585    VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
1586    VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
1587    VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
1588    VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
1589    VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
1590    VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
1591    VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
1592    VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
1593    VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
1594    VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
1595    VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
1596    VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
1597    VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
1598    VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
1599    VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
1600    VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
1601    VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
1602    VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
1603    VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
1604    VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000,
1605    VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001,
1606    VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002,
1607    VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003,
1608    VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004,
1609    VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005,
1610    VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006,
1611    VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007,
1612    VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008,
1613    VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009,
1614    VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010,
1615    VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011,
1616    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012,
1617    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013,
1618    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014,
1619    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015,
1620    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016,
1621    VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017,
1622    VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018,
1623    VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019,
1624    VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020,
1625    VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021,
1626    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022,
1627    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023,
1628    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024,
1629    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025,
1630    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026,
1631    VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027,
1632    VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028,
1633    VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029,
1634    VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030,
1635    VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031,
1636    VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032,
1637    VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033,
1638    VK_FORMAT_G8_B8R8_2PLANE_444_UNORM = 1000330000,
1639    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16 = 1000330001,
1640    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16 = 1000330002,
1641    VK_FORMAT_G16_B16R16_2PLANE_444_UNORM = 1000330003,
1642    VK_FORMAT_A4R4G4B4_UNORM_PACK16 = 1000340000,
1643    VK_FORMAT_A4B4G4R4_UNORM_PACK16 = 1000340001,
1644    VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK = 1000066000,
1645    VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK = 1000066001,
1646    VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK = 1000066002,
1647    VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK = 1000066003,
1648    VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK = 1000066004,
1649    VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK = 1000066005,
1650    VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK = 1000066006,
1651    VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK = 1000066007,
1652    VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK = 1000066008,
1653    VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK = 1000066009,
1654    VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK = 1000066010,
1655    VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK = 1000066011,
1656    VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK = 1000066012,
1657    VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK = 1000066013,
1658    VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
1659    VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
1660    VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
1661    VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
1662    VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
1663    VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
1664    VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
1665    VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
1666    VK_FORMAT_R16G16_S10_5_NV = 1000464000,
1667    VK_FORMAT_A1B5G5R5_UNORM_PACK16_KHR = 1000470000,
1668    VK_FORMAT_A8_UNORM_KHR = 1000470001,
1669    VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK,
1670    VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK,
1671    VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK,
1672    VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK,
1673    VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK,
1674    VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK,
1675    VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK,
1676    VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK,
1677    VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK,
1678    VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK,
1679    VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK,
1680    VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK,
1681    VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK,
1682    VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK,
1683    VK_FORMAT_G8B8G8R8_422_UNORM_KHR = VK_FORMAT_G8B8G8R8_422_UNORM,
1684    VK_FORMAT_B8G8R8G8_422_UNORM_KHR = VK_FORMAT_B8G8R8G8_422_UNORM,
1685    VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM,
1686    VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM,
1687    VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM,
1688    VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM,
1689    VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM,
1690    VK_FORMAT_R10X6_UNORM_PACK16_KHR = VK_FORMAT_R10X6_UNORM_PACK16,
1691    VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16,
1692    VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16,
1693    VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16,
1694    VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16,
1695    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16,
1696    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16,
1697    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16,
1698    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16,
1699    VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16,
1700    VK_FORMAT_R12X4_UNORM_PACK16_KHR = VK_FORMAT_R12X4_UNORM_PACK16,
1701    VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16,
1702    VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16,
1703    VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16,
1704    VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16,
1705    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16,
1706    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16,
1707    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16,
1708    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16,
1709    VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16,
1710    VK_FORMAT_G16B16G16R16_422_UNORM_KHR = VK_FORMAT_G16B16G16R16_422_UNORM,
1711    VK_FORMAT_B16G16R16G16_422_UNORM_KHR = VK_FORMAT_B16G16R16G16_422_UNORM,
1712    VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM,
1713    VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM,
1714    VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM,
1715    VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM,
1716    VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM,
1717    VK_FORMAT_G8_B8R8_2PLANE_444_UNORM_EXT = VK_FORMAT_G8_B8R8_2PLANE_444_UNORM,
1718    VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16_EXT = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_444_UNORM_3PACK16,
1719    VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16_EXT = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_444_UNORM_3PACK16,
1720    VK_FORMAT_G16_B16R16_2PLANE_444_UNORM_EXT = VK_FORMAT_G16_B16R16_2PLANE_444_UNORM,
1721    VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = VK_FORMAT_A4R4G4B4_UNORM_PACK16,
1722    VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = VK_FORMAT_A4B4G4R4_UNORM_PACK16,
1723    VK_FORMAT_MAX_ENUM = 0x7FFFFFFF
1724} VkFormat;
1725
1726typedef enum VkImageTiling {
1727    VK_IMAGE_TILING_OPTIMAL = 0,
1728    VK_IMAGE_TILING_LINEAR = 1,
1729    VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT = 1000158000,
1730    VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF
1731} VkImageTiling;
1732
1733typedef enum VkImageType {
1734    VK_IMAGE_TYPE_1D = 0,
1735    VK_IMAGE_TYPE_2D = 1,
1736    VK_IMAGE_TYPE_3D = 2,
1737    VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF
1738} VkImageType;
1739
1740typedef enum VkPhysicalDeviceType {
1741    VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,
1742    VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,
1743    VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,
1744    VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,
1745    VK_PHYSICAL_DEVICE_TYPE_CPU = 4,
1746    VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF
1747} VkPhysicalDeviceType;
1748
1749typedef enum VkQueryType {
1750    VK_QUERY_TYPE_OCCLUSION = 0,
1751    VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
1752    VK_QUERY_TYPE_TIMESTAMP = 2,
1753    VK_QUERY_TYPE_RESULT_STATUS_ONLY_KHR = 1000023000,
1754    VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004,
1755    VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000,
1756    VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000150000,
1757    VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150001,
1758    VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000,
1759    VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000,
1760    VK_QUERY_TYPE_VIDEO_ENCODE_FEEDBACK_KHR = 1000299000,
1761    VK_QUERY_TYPE_MESH_PRIMITIVES_GENERATED_EXT = 1000328000,
1762    VK_QUERY_TYPE_PRIMITIVES_GENERATED_EXT = 1000382000,
1763    VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_BOTTOM_LEVEL_POINTERS_KHR = 1000386000,
1764    VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SIZE_KHR = 1000386001,
1765    VK_QUERY_TYPE_MICROMAP_SERIALIZATION_SIZE_EXT = 1000396000,
1766    VK_QUERY_TYPE_MICROMAP_COMPACTED_SIZE_EXT = 1000396001,
1767    VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF
1768} VkQueryType;
1769
1770typedef enum VkSharingMode {
1771    VK_SHARING_MODE_EXCLUSIVE = 0,
1772    VK_SHARING_MODE_CONCURRENT = 1,
1773    VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF
1774} VkSharingMode;
1775
1776typedef enum VkComponentSwizzle {
1777    VK_COMPONENT_SWIZZLE_IDENTITY = 0,
1778    VK_COMPONENT_SWIZZLE_ZERO = 1,
1779    VK_COMPONENT_SWIZZLE_ONE = 2,
1780    VK_COMPONENT_SWIZZLE_R = 3,
1781    VK_COMPONENT_SWIZZLE_G = 4,
1782    VK_COMPONENT_SWIZZLE_B = 5,
1783    VK_COMPONENT_SWIZZLE_A = 6,
1784    VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF
1785} VkComponentSwizzle;
1786
1787typedef enum VkImageViewType {
1788    VK_IMAGE_VIEW_TYPE_1D = 0,
1789    VK_IMAGE_VIEW_TYPE_2D = 1,
1790    VK_IMAGE_VIEW_TYPE_3D = 2,
1791    VK_IMAGE_VIEW_TYPE_CUBE = 3,
1792    VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4,
1793    VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5,
1794    VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6,
1795    VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF
1796} VkImageViewType;
1797
1798typedef enum VkBlendFactor {
1799    VK_BLEND_FACTOR_ZERO = 0,
1800    VK_BLEND_FACTOR_ONE = 1,
1801    VK_BLEND_FACTOR_SRC_COLOR = 2,
1802    VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,
1803    VK_BLEND_FACTOR_DST_COLOR = 4,
1804    VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,
1805    VK_BLEND_FACTOR_SRC_ALPHA = 6,
1806    VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,
1807    VK_BLEND_FACTOR_DST_ALPHA = 8,
1808    VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,
1809    VK_BLEND_FACTOR_CONSTANT_COLOR = 10,
1810    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,
1811    VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,
1812    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,
1813    VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,
1814    VK_BLEND_FACTOR_SRC1_COLOR = 15,
1815    VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,
1816    VK_BLEND_FACTOR_SRC1_ALPHA = 17,
1817    VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18,
1818    VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF
1819} VkBlendFactor;
1820
1821typedef enum VkBlendOp {
1822    VK_BLEND_OP_ADD = 0,
1823    VK_BLEND_OP_SUBTRACT = 1,
1824    VK_BLEND_OP_REVERSE_SUBTRACT = 2,
1825    VK_BLEND_OP_MIN = 3,
1826    VK_BLEND_OP_MAX = 4,
1827    VK_BLEND_OP_ZERO_EXT = 1000148000,
1828    VK_BLEND_OP_SRC_EXT = 1000148001,
1829    VK_BLEND_OP_DST_EXT = 1000148002,
1830    VK_BLEND_OP_SRC_OVER_EXT = 1000148003,
1831    VK_BLEND_OP_DST_OVER_EXT = 1000148004,
1832    VK_BLEND_OP_SRC_IN_EXT = 1000148005,
1833    VK_BLEND_OP_DST_IN_EXT = 1000148006,
1834    VK_BLEND_OP_SRC_OUT_EXT = 1000148007,
1835    VK_BLEND_OP_DST_OUT_EXT = 1000148008,
1836    VK_BLEND_OP_SRC_ATOP_EXT = 1000148009,
1837    VK_BLEND_OP_DST_ATOP_EXT = 1000148010,
1838    VK_BLEND_OP_XOR_EXT = 1000148011,
1839    VK_BLEND_OP_MULTIPLY_EXT = 1000148012,
1840    VK_BLEND_OP_SCREEN_EXT = 1000148013,
1841    VK_BLEND_OP_OVERLAY_EXT = 1000148014,
1842    VK_BLEND_OP_DARKEN_EXT = 1000148015,
1843    VK_BLEND_OP_LIGHTEN_EXT = 1000148016,
1844    VK_BLEND_OP_COLORDODGE_EXT = 1000148017,
1845    VK_BLEND_OP_COLORBURN_EXT = 1000148018,
1846    VK_BLEND_OP_HARDLIGHT_EXT = 1000148019,
1847    VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020,
1848    VK_BLEND_OP_DIFFERENCE_EXT = 1000148021,
1849    VK_BLEND_OP_EXCLUSION_EXT = 1000148022,
1850    VK_BLEND_OP_INVERT_EXT = 1000148023,
1851    VK_BLEND_OP_INVERT_RGB_EXT = 1000148024,
1852    VK_BLEND_OP_LINEARDODGE_EXT = 1000148025,
1853    VK_BLEND_OP_LINEARBURN_EXT = 1000148026,
1854    VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027,
1855    VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028,
1856    VK_BLEND_OP_PINLIGHT_EXT = 1000148029,
1857    VK_BLEND_OP_HARDMIX_EXT = 1000148030,
1858    VK_BLEND_OP_HSL_HUE_EXT = 1000148031,
1859    VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032,
1860    VK_BLEND_OP_HSL_COLOR_EXT = 1000148033,
1861    VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034,
1862    VK_BLEND_OP_PLUS_EXT = 1000148035,
1863    VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036,
1864    VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037,
1865    VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038,
1866    VK_BLEND_OP_MINUS_EXT = 1000148039,
1867    VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040,
1868    VK_BLEND_OP_CONTRAST_EXT = 1000148041,
1869    VK_BLEND_OP_INVERT_OVG_EXT = 1000148042,
1870    VK_BLEND_OP_RED_EXT = 1000148043,
1871    VK_BLEND_OP_GREEN_EXT = 1000148044,
1872    VK_BLEND_OP_BLUE_EXT = 1000148045,
1873    VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF
1874} VkBlendOp;
1875
1876typedef enum VkCompareOp {
1877    VK_COMPARE_OP_NEVER = 0,
1878    VK_COMPARE_OP_LESS = 1,
1879    VK_COMPARE_OP_EQUAL = 2,
1880    VK_COMPARE_OP_LESS_OR_EQUAL = 3,
1881    VK_COMPARE_OP_GREATER = 4,
1882    VK_COMPARE_OP_NOT_EQUAL = 5,
1883    VK_COMPARE_OP_GREATER_OR_EQUAL = 6,
1884    VK_COMPARE_OP_ALWAYS = 7,
1885    VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF
1886} VkCompareOp;
1887
1888typedef enum VkDynamicState {
1889    VK_DYNAMIC_STATE_VIEWPORT = 0,
1890    VK_DYNAMIC_STATE_SCISSOR = 1,
1891    VK_DYNAMIC_STATE_LINE_WIDTH = 2,
1892    VK_DYNAMIC_STATE_DEPTH_BIAS = 3,
1893    VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,
1894    VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,
1895    VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,
1896    VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,
1897    VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
1898    VK_DYNAMIC_STATE_CULL_MODE = 1000267000,
1899    VK_DYNAMIC_STATE_FRONT_FACE = 1000267001,
1900    VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY = 1000267002,
1901    VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT = 1000267003,
1902    VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT = 1000267004,
1903    VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE = 1000267005,
1904    VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE = 1000267006,
1905    VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE = 1000267007,
1906    VK_DYNAMIC_STATE_DEPTH_COMPARE_OP = 1000267008,
1907    VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE = 1000267009,
1908    VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE = 1000267010,
1909    VK_DYNAMIC_STATE_STENCIL_OP = 1000267011,
1910    VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE = 1000377001,
1911    VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE = 1000377002,
1912    VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE = 1000377004,
1913    VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000,
1914    VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
1915    VK_DYNAMIC_STATE_DISCARD_RECTANGLE_ENABLE_EXT = 1000099001,
1916    VK_DYNAMIC_STATE_DISCARD_RECTANGLE_MODE_EXT = 1000099002,
1917    VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000,
1918    VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR = 1000347000,
1919    VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004,
1920    VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006,
1921    VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_ENABLE_NV = 1000205000,
1922    VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001,
1923    VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR = 1000226000,
1924    VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000,
1925    VK_DYNAMIC_STATE_VERTEX_INPUT_EXT = 1000352000,
1926    VK_DYNAMIC_STATE_PATCH_CONTROL_POINTS_EXT = 1000377000,
1927    VK_DYNAMIC_STATE_LOGIC_OP_EXT = 1000377003,
1928    VK_DYNAMIC_STATE_COLOR_WRITE_ENABLE_EXT = 1000381000,
1929    VK_DYNAMIC_STATE_TESSELLATION_DOMAIN_ORIGIN_EXT = 1000455002,
1930    VK_DYNAMIC_STATE_DEPTH_CLAMP_ENABLE_EXT = 1000455003,
1931    VK_DYNAMIC_STATE_POLYGON_MODE_EXT = 1000455004,
1932    VK_DYNAMIC_STATE_RASTERIZATION_SAMPLES_EXT = 1000455005,
1933    VK_DYNAMIC_STATE_SAMPLE_MASK_EXT = 1000455006,
1934    VK_DYNAMIC_STATE_ALPHA_TO_COVERAGE_ENABLE_EXT = 1000455007,
1935    VK_DYNAMIC_STATE_ALPHA_TO_ONE_ENABLE_EXT = 1000455008,
1936    VK_DYNAMIC_STATE_LOGIC_OP_ENABLE_EXT = 1000455009,
1937    VK_DYNAMIC_STATE_COLOR_BLEND_ENABLE_EXT = 1000455010,
1938    VK_DYNAMIC_STATE_COLOR_BLEND_EQUATION_EXT = 1000455011,
1939    VK_DYNAMIC_STATE_COLOR_WRITE_MASK_EXT = 1000455012,
1940    VK_DYNAMIC_STATE_RASTERIZATION_STREAM_EXT = 1000455013,
1941    VK_DYNAMIC_STATE_CONSERVATIVE_RASTERIZATION_MODE_EXT = 1000455014,
1942    VK_DYNAMIC_STATE_EXTRA_PRIMITIVE_OVERESTIMATION_SIZE_EXT = 1000455015,
1943    VK_DYNAMIC_STATE_DEPTH_CLIP_ENABLE_EXT = 1000455016,
1944    VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_ENABLE_EXT = 1000455017,
1945    VK_DYNAMIC_STATE_COLOR_BLEND_ADVANCED_EXT = 1000455018,
1946    VK_DYNAMIC_STATE_PROVOKING_VERTEX_MODE_EXT = 1000455019,
1947    VK_DYNAMIC_STATE_LINE_RASTERIZATION_MODE_EXT = 1000455020,
1948    VK_DYNAMIC_STATE_LINE_STIPPLE_ENABLE_EXT = 1000455021,
1949    VK_DYNAMIC_STATE_DEPTH_CLIP_NEGATIVE_ONE_TO_ONE_EXT = 1000455022,
1950    VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_ENABLE_NV = 1000455023,
1951    VK_DYNAMIC_STATE_VIEWPORT_SWIZZLE_NV = 1000455024,
1952    VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_ENABLE_NV = 1000455025,
1953    VK_DYNAMIC_STATE_COVERAGE_TO_COLOR_LOCATION_NV = 1000455026,
1954    VK_DYNAMIC_STATE_COVERAGE_MODULATION_MODE_NV = 1000455027,
1955    VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_ENABLE_NV = 1000455028,
1956    VK_DYNAMIC_STATE_COVERAGE_MODULATION_TABLE_NV = 1000455029,
1957    VK_DYNAMIC_STATE_SHADING_RATE_IMAGE_ENABLE_NV = 1000455030,
1958    VK_DYNAMIC_STATE_REPRESENTATIVE_FRAGMENT_TEST_ENABLE_NV = 1000455031,
1959    VK_DYNAMIC_STATE_COVERAGE_REDUCTION_MODE_NV = 1000455032,
1960    VK_DYNAMIC_STATE_ATTACHMENT_FEEDBACK_LOOP_ENABLE_EXT = 1000524000,
1961    VK_DYNAMIC_STATE_CULL_MODE_EXT = VK_DYNAMIC_STATE_CULL_MODE,
1962    VK_DYNAMIC_STATE_FRONT_FACE_EXT = VK_DYNAMIC_STATE_FRONT_FACE,
1963    VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY,
1964    VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT,
1965    VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT,
1966    VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE,
1967    VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE,
1968    VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE,
1969    VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = VK_DYNAMIC_STATE_DEPTH_COMPARE_OP,
1970    VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE,
1971    VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE,
1972    VK_DYNAMIC_STATE_STENCIL_OP_EXT = VK_DYNAMIC_STATE_STENCIL_OP,
1973    VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE_EXT = VK_DYNAMIC_STATE_RASTERIZER_DISCARD_ENABLE,
1974    VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE_EXT = VK_DYNAMIC_STATE_DEPTH_BIAS_ENABLE,
1975    VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE_EXT = VK_DYNAMIC_STATE_PRIMITIVE_RESTART_ENABLE,
1976    VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF
1977} VkDynamicState;
1978
1979typedef enum VkFrontFace {
1980    VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
1981    VK_FRONT_FACE_CLOCKWISE = 1,
1982    VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF
1983} VkFrontFace;
1984
1985typedef enum VkVertexInputRate {
1986    VK_VERTEX_INPUT_RATE_VERTEX = 0,
1987    VK_VERTEX_INPUT_RATE_INSTANCE = 1,
1988    VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF
1989} VkVertexInputRate;
1990
1991typedef enum VkPrimitiveTopology {
1992    VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
1993    VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,
1994    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,
1995    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,
1996    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,
1997    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,
1998    VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,
1999    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
2000    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
2001    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
2002    VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,
2003    VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF
2004} VkPrimitiveTopology;
2005
2006typedef enum VkPolygonMode {
2007    VK_POLYGON_MODE_FILL = 0,
2008    VK_POLYGON_MODE_LINE = 1,
2009    VK_POLYGON_MODE_POINT = 2,
2010    VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000,
2011    VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF
2012} VkPolygonMode;
2013
2014typedef enum VkStencilOp {
2015    VK_STENCIL_OP_KEEP = 0,
2016    VK_STENCIL_OP_ZERO = 1,
2017    VK_STENCIL_OP_REPLACE = 2,
2018    VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,
2019    VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,
2020    VK_STENCIL_OP_INVERT = 5,
2021    VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,
2022    VK_STENCIL_OP_DECREMENT_AND_WRAP = 7,
2023    VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF
2024} VkStencilOp;
2025
2026typedef enum VkLogicOp {
2027    VK_LOGIC_OP_CLEAR = 0,
2028    VK_LOGIC_OP_AND = 1,
2029    VK_LOGIC_OP_AND_REVERSE = 2,
2030    VK_LOGIC_OP_COPY = 3,
2031    VK_LOGIC_OP_AND_INVERTED = 4,
2032    VK_LOGIC_OP_NO_OP = 5,
2033    VK_LOGIC_OP_XOR = 6,
2034    VK_LOGIC_OP_OR = 7,
2035    VK_LOGIC_OP_NOR = 8,
2036    VK_LOGIC_OP_EQUIVALENT = 9,
2037    VK_LOGIC_OP_INVERT = 10,
2038    VK_LOGIC_OP_OR_REVERSE = 11,
2039    VK_LOGIC_OP_COPY_INVERTED = 12,
2040    VK_LOGIC_OP_OR_INVERTED = 13,
2041    VK_LOGIC_OP_NAND = 14,
2042    VK_LOGIC_OP_SET = 15,
2043    VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF
2044} VkLogicOp;
2045
2046typedef enum VkBorderColor {
2047    VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
2048    VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,
2049    VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,
2050    VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,
2051    VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,
2052    VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5,
2053    VK_BORDER_COLOR_FLOAT_CUSTOM_EXT = 1000287003,
2054    VK_BORDER_COLOR_INT_CUSTOM_EXT = 1000287004,
2055    VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF
2056} VkBorderColor;
2057
2058typedef enum VkFilter {
2059    VK_FILTER_NEAREST = 0,
2060    VK_FILTER_LINEAR = 1,
2061    VK_FILTER_CUBIC_EXT = 1000015000,
2062    VK_FILTER_CUBIC_IMG = VK_FILTER_CUBIC_EXT,
2063    VK_FILTER_MAX_ENUM = 0x7FFFFFFF
2064} VkFilter;
2065
2066typedef enum VkSamplerAddressMode {
2067    VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
2068    VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
2069    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
2070    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
2071    VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
2072    VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE_KHR = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE,
2073    VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
2074} VkSamplerAddressMode;
2075
2076typedef enum VkSamplerMipmapMode {
2077    VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,
2078    VK_SAMPLER_MIPMAP_MODE_LINEAR = 1,
2079    VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF
2080} VkSamplerMipmapMode;
2081
2082typedef enum VkDescriptorType {
2083    VK_DESCRIPTOR_TYPE_SAMPLER = 0,
2084    VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1,
2085    VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2,
2086    VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3,
2087    VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4,
2088    VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5,
2089    VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6,
2090    VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7,
2091    VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8,
2092    VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9,
2093    VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10,
2094    VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK = 1000138000,
2095    VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000,
2096    VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000,
2097    VK_DESCRIPTOR_TYPE_SAMPLE_WEIGHT_IMAGE_QCOM = 1000440000,
2098    VK_DESCRIPTOR_TYPE_BLOCK_MATCH_IMAGE_QCOM = 1000440001,
2099    VK_DESCRIPTOR_TYPE_MUTABLE_EXT = 1000351000,
2100    VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT = VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK,
2101    VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = VK_DESCRIPTOR_TYPE_MUTABLE_EXT,
2102    VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF
2103} VkDescriptorType;
2104
2105typedef enum VkAttachmentLoadOp {
2106    VK_ATTACHMENT_LOAD_OP_LOAD = 0,
2107    VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
2108    VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
2109    VK_ATTACHMENT_LOAD_OP_NONE_EXT = 1000400000,
2110    VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF
2111} VkAttachmentLoadOp;
2112
2113typedef enum VkAttachmentStoreOp {
2114    VK_ATTACHMENT_STORE_OP_STORE = 0,
2115    VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,
2116    VK_ATTACHMENT_STORE_OP_NONE = 1000301000,
2117    VK_ATTACHMENT_STORE_OP_NONE_KHR = VK_ATTACHMENT_STORE_OP_NONE,
2118    VK_ATTACHMENT_STORE_OP_NONE_QCOM = VK_ATTACHMENT_STORE_OP_NONE,
2119    VK_ATTACHMENT_STORE_OP_NONE_EXT = VK_ATTACHMENT_STORE_OP_NONE,
2120    VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF
2121} VkAttachmentStoreOp;
2122
2123typedef enum VkPipelineBindPoint {
2124    VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
2125    VK_PIPELINE_BIND_POINT_COMPUTE = 1,
2126#ifdef VK_ENABLE_BETA_EXTENSIONS
2127    VK_PIPELINE_BIND_POINT_EXECUTION_GRAPH_AMDX = 1000134000,
2128#endif
2129    VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000,
2130    VK_PIPELINE_BIND_POINT_SUBPASS_SHADING_HUAWEI = 1000369003,
2131    VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR,
2132    VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF
2133} VkPipelineBindPoint;
2134
2135typedef enum VkCommandBufferLevel {
2136    VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
2137    VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,
2138    VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF
2139} VkCommandBufferLevel;
2140
2141typedef enum VkIndexType {
2142    VK_INDEX_TYPE_UINT16 = 0,
2143    VK_INDEX_TYPE_UINT32 = 1,
2144    VK_INDEX_TYPE_NONE_KHR = 1000165000,
2145    VK_INDEX_TYPE_UINT8_EXT = 1000265000,
2146    VK_INDEX_TYPE_NONE_NV = VK_INDEX_TYPE_NONE_KHR,
2147    VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF
2148} VkIndexType;
2149
2150typedef enum VkSubpassContents {
2151    VK_SUBPASS_CONTENTS_INLINE = 0,
2152    VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
2153    VK_SUBPASS_CONTENTS_INLINE_AND_SECONDARY_COMMAND_BUFFERS_EXT = 1000451000,
2154    VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF
2155} VkSubpassContents;
2156
2157typedef enum VkAccessFlagBits {
2158    VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
2159    VK_ACCESS_INDEX_READ_BIT = 0x00000002,
2160    VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
2161    VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
2162    VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
2163    VK_ACCESS_SHADER_READ_BIT = 0x00000020,
2164    VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
2165    VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
2166    VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
2167    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
2168    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
2169    VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
2170    VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
2171    VK_ACCESS_HOST_READ_BIT = 0x00002000,
2172    VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
2173    VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
2174    VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
2175    VK_ACCESS_NONE = 0,
2176    VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000,
2177    VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000,
2178    VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000,
2179    VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000,
2180    VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000,
2181    VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000,
2182    VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000,
2183    VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000,
2184    VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000,
2185    VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000,
2186    VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000,
2187    VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV = VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR,
2188    VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_KHR,
2189    VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR,
2190    VK_ACCESS_NONE_KHR = VK_ACCESS_NONE,
2191    VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2192} VkAccessFlagBits;
2193typedef VkFlags VkAccessFlags;
2194
2195typedef enum VkImageAspectFlagBits {
2196    VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
2197    VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
2198    VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
2199    VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
2200    VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010,
2201    VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020,
2202    VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040,
2203    VK_IMAGE_ASPECT_NONE = 0,
2204    VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT = 0x00000080,
2205    VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT = 0x00000100,
2206    VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT = 0x00000200,
2207    VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT = 0x00000400,
2208    VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = VK_IMAGE_ASPECT_PLANE_0_BIT,
2209    VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = VK_IMAGE_ASPECT_PLANE_1_BIT,
2210    VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = VK_IMAGE_ASPECT_PLANE_2_BIT,
2211    VK_IMAGE_ASPECT_NONE_KHR = VK_IMAGE_ASPECT_NONE,
2212    VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2213} VkImageAspectFlagBits;
2214typedef VkFlags VkImageAspectFlags;
2215
2216typedef enum VkFormatFeatureFlagBits {
2217    VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
2218    VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002,
2219    VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004,
2220    VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008,
2221    VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010,
2222    VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020,
2223    VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040,
2224    VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080,
2225    VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100,
2226    VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200,
2227    VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400,
2228    VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800,
2229    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
2230    VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 0x00004000,
2231    VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 0x00008000,
2232    VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000,
2233    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000,
2234    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000,
2235    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000,
2236    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000,
2237    VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000,
2238    VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000,
2239    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000,
2240    VK_FORMAT_FEATURE_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000,
2241    VK_FORMAT_FEATURE_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000,
2242    VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000,
2243    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 0x00002000,
2244    VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000,
2245    VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000,
2246    VK_FORMAT_FEATURE_VIDEO_ENCODE_INPUT_BIT_KHR = 0x08000000,
2247    VK_FORMAT_FEATURE_VIDEO_ENCODE_DPB_BIT_KHR = 0x10000000,
2248    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT,
2249    VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT,
2250    VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT,
2251    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT,
2252    VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT,
2253    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT,
2254    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT,
2255    VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT,
2256    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,
2257    VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = VK_FORMAT_FEATURE_DISJOINT_BIT,
2258    VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT,
2259    VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2260} VkFormatFeatureFlagBits;
2261typedef VkFlags VkFormatFeatureFlags;
2262
2263typedef enum VkImageCreateFlagBits {
2264    VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001,
2265    VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
2266    VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
2267    VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008,
2268    VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010,
2269    VK_IMAGE_CREATE_ALIAS_BIT = 0x00000400,
2270    VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 0x00000040,
2271    VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 0x00000020,
2272    VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 0x00000080,
2273    VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 0x00000100,
2274    VK_IMAGE_CREATE_PROTECTED_BIT = 0x00000800,
2275    VK_IMAGE_CREATE_DISJOINT_BIT = 0x00000200,
2276    VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV = 0x00002000,
2277    VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000,
2278    VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 0x00004000,
2279    VK_IMAGE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0x00010000,
2280    VK_IMAGE_CREATE_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_BIT_EXT = 0x00040000,
2281    VK_IMAGE_CREATE_2D_VIEW_COMPATIBLE_BIT_EXT = 0x00020000,
2282    VK_IMAGE_CREATE_FRAGMENT_DENSITY_MAP_OFFSET_BIT_QCOM = 0x00008000,
2283    VK_IMAGE_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 0x00100000,
2284    VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT,
2285    VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT,
2286    VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT,
2287    VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT,
2288    VK_IMAGE_CREATE_DISJOINT_BIT_KHR = VK_IMAGE_CREATE_DISJOINT_BIT,
2289    VK_IMAGE_CREATE_ALIAS_BIT_KHR = VK_IMAGE_CREATE_ALIAS_BIT,
2290    VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2291} VkImageCreateFlagBits;
2292typedef VkFlags VkImageCreateFlags;
2293
2294typedef enum VkSampleCountFlagBits {
2295    VK_SAMPLE_COUNT_1_BIT = 0x00000001,
2296    VK_SAMPLE_COUNT_2_BIT = 0x00000002,
2297    VK_SAMPLE_COUNT_4_BIT = 0x00000004,
2298    VK_SAMPLE_COUNT_8_BIT = 0x00000008,
2299    VK_SAMPLE_COUNT_16_BIT = 0x00000010,
2300    VK_SAMPLE_COUNT_32_BIT = 0x00000020,
2301    VK_SAMPLE_COUNT_64_BIT = 0x00000040,
2302    VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2303} VkSampleCountFlagBits;
2304typedef VkFlags VkSampleCountFlags;
2305
2306typedef enum VkImageUsageFlagBits {
2307    VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001,
2308    VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002,
2309    VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004,
2310    VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008,
2311    VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010,
2312    VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020,
2313    VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040,
2314    VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080,
2315    VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0x00000400,
2316    VK_IMAGE_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0x00000800,
2317    VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR = 0x00001000,
2318    VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x00000200,
2319    VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00000100,
2320    VK_IMAGE_USAGE_HOST_TRANSFER_BIT_EXT = 0x00400000,
2321    VK_IMAGE_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0x00002000,
2322    VK_IMAGE_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0x00004000,
2323    VK_IMAGE_USAGE_VIDEO_ENCODE_DPB_BIT_KHR = 0x00008000,
2324    VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x00080000,
2325    VK_IMAGE_USAGE_INVOCATION_MASK_BIT_HUAWEI = 0x00040000,
2326    VK_IMAGE_USAGE_SAMPLE_WEIGHT_BIT_QCOM = 0x00100000,
2327    VK_IMAGE_USAGE_SAMPLE_BLOCK_MATCH_BIT_QCOM = 0x00200000,
2328    VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV = VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,
2329    VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2330} VkImageUsageFlagBits;
2331typedef VkFlags VkImageUsageFlags;
2332
2333typedef enum VkInstanceCreateFlagBits {
2334    VK_INSTANCE_CREATE_ENUMERATE_PORTABILITY_BIT_KHR = 0x00000001,
2335    VK_INSTANCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2336} VkInstanceCreateFlagBits;
2337typedef VkFlags VkInstanceCreateFlags;
2338
2339typedef enum VkMemoryHeapFlagBits {
2340    VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
2341    VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 0x00000002,
2342    VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = VK_MEMORY_HEAP_MULTI_INSTANCE_BIT,
2343    VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2344} VkMemoryHeapFlagBits;
2345typedef VkFlags VkMemoryHeapFlags;
2346
2347typedef enum VkMemoryPropertyFlagBits {
2348    VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
2349    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
2350    VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
2351    VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
2352    VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
2353    VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020,
2354    VK_MEMORY_PROPERTY_DEVICE_COHERENT_BIT_AMD = 0x00000040,
2355    VK_MEMORY_PROPERTY_DEVICE_UNCACHED_BIT_AMD = 0x00000080,
2356    VK_MEMORY_PROPERTY_RDMA_CAPABLE_BIT_NV = 0x00000100,
2357    VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2358} VkMemoryPropertyFlagBits;
2359typedef VkFlags VkMemoryPropertyFlags;
2360
2361typedef enum VkQueueFlagBits {
2362    VK_QUEUE_GRAPHICS_BIT = 0x00000001,
2363    VK_QUEUE_COMPUTE_BIT = 0x00000002,
2364    VK_QUEUE_TRANSFER_BIT = 0x00000004,
2365    VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
2366    VK_QUEUE_PROTECTED_BIT = 0x00000010,
2367    VK_QUEUE_VIDEO_DECODE_BIT_KHR = 0x00000020,
2368    VK_QUEUE_VIDEO_ENCODE_BIT_KHR = 0x00000040,
2369    VK_QUEUE_OPTICAL_FLOW_BIT_NV = 0x00000100,
2370    VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2371} VkQueueFlagBits;
2372typedef VkFlags VkQueueFlags;
2373typedef VkFlags VkDeviceCreateFlags;
2374
2375typedef enum VkDeviceQueueCreateFlagBits {
2376    VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 0x00000001,
2377    VK_DEVICE_QUEUE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2378} VkDeviceQueueCreateFlagBits;
2379typedef VkFlags VkDeviceQueueCreateFlags;
2380
2381typedef enum VkPipelineStageFlagBits {
2382    VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001,
2383    VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002,
2384    VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004,
2385    VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008,
2386    VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010,
2387    VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020,
2388    VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040,
2389    VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080,
2390    VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100,
2391    VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200,
2392    VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400,
2393    VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800,
2394    VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000,
2395    VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
2396    VK_PIPELINE_STAGE_HOST_BIT = 0x00004000,
2397    VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000,
2398    VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000,
2399    VK_PIPELINE_STAGE_NONE = 0,
2400    VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000,
2401    VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000,
2402    VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000,
2403    VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR = 0x00200000,
2404    VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000,
2405    VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000,
2406    VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 0x00020000,
2407    VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT = 0x00080000,
2408    VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT = 0x00100000,
2409    VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV = VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,
2410    VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV = VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR,
2411    VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV = VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_KHR,
2412    VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = VK_PIPELINE_STAGE_TASK_SHADER_BIT_EXT,
2413    VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = VK_PIPELINE_STAGE_MESH_SHADER_BIT_EXT,
2414    VK_PIPELINE_STAGE_NONE_KHR = VK_PIPELINE_STAGE_NONE,
2415    VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2416} VkPipelineStageFlagBits;
2417typedef VkFlags VkPipelineStageFlags;
2418typedef VkFlags VkMemoryMapFlags;
2419
2420typedef enum VkSparseMemoryBindFlagBits {
2421    VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
2422    VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2423} VkSparseMemoryBindFlagBits;
2424typedef VkFlags VkSparseMemoryBindFlags;
2425
2426typedef enum VkSparseImageFormatFlagBits {
2427    VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001,
2428    VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
2429    VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,
2430    VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2431} VkSparseImageFormatFlagBits;
2432typedef VkFlags VkSparseImageFormatFlags;
2433
2434typedef enum VkFenceCreateFlagBits {
2435    VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
2436    VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2437} VkFenceCreateFlagBits;
2438typedef VkFlags VkFenceCreateFlags;
2439typedef VkFlags VkSemaphoreCreateFlags;
2440
2441typedef enum VkEventCreateFlagBits {
2442    VK_EVENT_CREATE_DEVICE_ONLY_BIT = 0x00000001,
2443    VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR = VK_EVENT_CREATE_DEVICE_ONLY_BIT,
2444    VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2445} VkEventCreateFlagBits;
2446typedef VkFlags VkEventCreateFlags;
2447
2448typedef enum VkQueryPipelineStatisticFlagBits {
2449    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001,
2450    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002,
2451    VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004,
2452    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008,
2453    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010,
2454    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020,
2455    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040,
2456    VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080,
2457    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100,
2458    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200,
2459    VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400,
2460    VK_QUERY_PIPELINE_STATISTIC_TASK_SHADER_INVOCATIONS_BIT_EXT = 0x00000800,
2461    VK_QUERY_PIPELINE_STATISTIC_MESH_SHADER_INVOCATIONS_BIT_EXT = 0x00001000,
2462    VK_QUERY_PIPELINE_STATISTIC_CLUSTER_CULLING_SHADER_INVOCATIONS_BIT_HUAWEI = 0x00002000,
2463    VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2464} VkQueryPipelineStatisticFlagBits;
2465typedef VkFlags VkQueryPipelineStatisticFlags;
2466typedef VkFlags VkQueryPoolCreateFlags;
2467
2468typedef enum VkQueryResultFlagBits {
2469    VK_QUERY_RESULT_64_BIT = 0x00000001,
2470    VK_QUERY_RESULT_WAIT_BIT = 0x00000002,
2471    VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004,
2472    VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008,
2473    VK_QUERY_RESULT_WITH_STATUS_BIT_KHR = 0x00000010,
2474    VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2475} VkQueryResultFlagBits;
2476typedef VkFlags VkQueryResultFlags;
2477
2478typedef enum VkBufferCreateFlagBits {
2479    VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,
2480    VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
2481    VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
2482    VK_BUFFER_CREATE_PROTECTED_BIT = 0x00000008,
2483    VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000010,
2484    VK_BUFFER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0x00000020,
2485    VK_BUFFER_CREATE_VIDEO_PROFILE_INDEPENDENT_BIT_KHR = 0x00000040,
2486    VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
2487    VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_BUFFER_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
2488    VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2489} VkBufferCreateFlagBits;
2490typedef VkFlags VkBufferCreateFlags;
2491
2492typedef enum VkBufferUsageFlagBits {
2493    VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001,
2494    VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002,
2495    VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,
2496    VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008,
2497    VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010,
2498    VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020,
2499    VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
2500    VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
2501    VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
2502    VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT = 0x00020000,
2503    VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR = 0x00002000,
2504    VK_BUFFER_USAGE_VIDEO_DECODE_DST_BIT_KHR = 0x00004000,
2505    VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800,
2506    VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000,
2507    VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200,
2508#ifdef VK_ENABLE_BETA_EXTENSIONS
2509    VK_BUFFER_USAGE_EXECUTION_GRAPH_SCRATCH_BIT_AMDX = 0x02000000,
2510#endif
2511    VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = 0x00080000,
2512    VK_BUFFER_USAGE_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR = 0x00100000,
2513    VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR = 0x00000400,
2514    VK_BUFFER_USAGE_VIDEO_ENCODE_DST_BIT_KHR = 0x00008000,
2515    VK_BUFFER_USAGE_VIDEO_ENCODE_SRC_BIT_KHR = 0x00010000,
2516    VK_BUFFER_USAGE_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 0x00200000,
2517    VK_BUFFER_USAGE_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 0x00400000,
2518    VK_BUFFER_USAGE_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 0x04000000,
2519    VK_BUFFER_USAGE_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 0x00800000,
2520    VK_BUFFER_USAGE_MICROMAP_STORAGE_BIT_EXT = 0x01000000,
2521    VK_BUFFER_USAGE_RAY_TRACING_BIT_NV = VK_BUFFER_USAGE_SHADER_BINDING_TABLE_BIT_KHR,
2522    VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
2523    VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT,
2524    VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2525} VkBufferUsageFlagBits;
2526typedef VkFlags VkBufferUsageFlags;
2527typedef VkFlags VkBufferViewCreateFlags;
2528
2529typedef enum VkImageViewCreateFlagBits {
2530    VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 0x00000001,
2531    VK_IMAGE_VIEW_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0x00000004,
2532    VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT = 0x00000002,
2533    VK_IMAGE_VIEW_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2534} VkImageViewCreateFlagBits;
2535typedef VkFlags VkImageViewCreateFlags;
2536typedef VkFlags VkShaderModuleCreateFlags;
2537
2538typedef enum VkPipelineCacheCreateFlagBits {
2539    VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT = 0x00000001,
2540    VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT,
2541    VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2542} VkPipelineCacheCreateFlagBits;
2543typedef VkFlags VkPipelineCacheCreateFlags;
2544
2545typedef enum VkColorComponentFlagBits {
2546    VK_COLOR_COMPONENT_R_BIT = 0x00000001,
2547    VK_COLOR_COMPONENT_G_BIT = 0x00000002,
2548    VK_COLOR_COMPONENT_B_BIT = 0x00000004,
2549    VK_COLOR_COMPONENT_A_BIT = 0x00000008,
2550    VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2551} VkColorComponentFlagBits;
2552typedef VkFlags VkColorComponentFlags;
2553
2554typedef enum VkPipelineCreateFlagBits {
2555    VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
2556    VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
2557    VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
2558    VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008,
2559    VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 0x00000010,
2560    VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT = 0x00000100,
2561    VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT = 0x00000200,
2562    VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00200000,
2563    VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0x00400000,
2564    VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 0x00004000,
2565    VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 0x00008000,
2566    VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 0x00010000,
2567    VK_PIPELINE_CREATE_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 0x00020000,
2568    VK_PIPELINE_CREATE_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 0x00001000,
2569    VK_PIPELINE_CREATE_RAY_TRACING_SKIP_AABBS_BIT_KHR = 0x00002000,
2570    VK_PIPELINE_CREATE_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = 0x00080000,
2571    VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV = 0x00000020,
2572    VK_PIPELINE_CREATE_CAPTURE_STATISTICS_BIT_KHR = 0x00000040,
2573    VK_PIPELINE_CREATE_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 0x00000080,
2574    VK_PIPELINE_CREATE_INDIRECT_BINDABLE_BIT_NV = 0x00040000,
2575    VK_PIPELINE_CREATE_LIBRARY_BIT_KHR = 0x00000800,
2576    VK_PIPELINE_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 0x20000000,
2577    VK_PIPELINE_CREATE_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT = 0x00800000,
2578    VK_PIPELINE_CREATE_LINK_TIME_OPTIMIZATION_BIT_EXT = 0x00000400,
2579    VK_PIPELINE_CREATE_RAY_TRACING_ALLOW_MOTION_BIT_NV = 0x00100000,
2580    VK_PIPELINE_CREATE_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x02000000,
2581    VK_PIPELINE_CREATE_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x04000000,
2582    VK_PIPELINE_CREATE_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 0x01000000,
2583#ifdef VK_ENABLE_BETA_EXTENSIONS
2584    VK_PIPELINE_CREATE_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV = 0x10000000,
2585#endif
2586    VK_PIPELINE_CREATE_NO_PROTECTED_ACCESS_BIT_EXT = 0x08000000,
2587    VK_PIPELINE_CREATE_PROTECTED_ACCESS_ONLY_BIT_EXT = 0x40000000,
2588    VK_PIPELINE_CREATE_DISPATCH_BASE = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT,
2589    VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = VK_PIPELINE_CREATE_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR,
2590    VK_PIPELINE_RASTERIZATION_STATE_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = VK_PIPELINE_CREATE_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT,
2591    VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT,
2592    VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = VK_PIPELINE_CREATE_DISPATCH_BASE,
2593    VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT,
2594    VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT,
2595    VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2596} VkPipelineCreateFlagBits;
2597typedef VkFlags VkPipelineCreateFlags;
2598
2599typedef enum VkPipelineShaderStageCreateFlagBits {
2600    VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT = 0x00000001,
2601    VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT = 0x00000002,
2602    VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT,
2603    VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT,
2604    VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2605} VkPipelineShaderStageCreateFlagBits;
2606typedef VkFlags VkPipelineShaderStageCreateFlags;
2607
2608typedef enum VkShaderStageFlagBits {
2609    VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
2610    VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
2611    VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
2612    VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
2613    VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
2614    VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
2615    VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
2616    VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
2617    VK_SHADER_STAGE_RAYGEN_BIT_KHR = 0x00000100,
2618    VK_SHADER_STAGE_ANY_HIT_BIT_KHR = 0x00000200,
2619    VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR = 0x00000400,
2620    VK_SHADER_STAGE_MISS_BIT_KHR = 0x00000800,
2621    VK_SHADER_STAGE_INTERSECTION_BIT_KHR = 0x00001000,
2622    VK_SHADER_STAGE_CALLABLE_BIT_KHR = 0x00002000,
2623    VK_SHADER_STAGE_TASK_BIT_EXT = 0x00000040,
2624    VK_SHADER_STAGE_MESH_BIT_EXT = 0x00000080,
2625    VK_SHADER_STAGE_SUBPASS_SHADING_BIT_HUAWEI = 0x00004000,
2626    VK_SHADER_STAGE_CLUSTER_CULLING_BIT_HUAWEI = 0x00080000,
2627    VK_SHADER_STAGE_RAYGEN_BIT_NV = VK_SHADER_STAGE_RAYGEN_BIT_KHR,
2628    VK_SHADER_STAGE_ANY_HIT_BIT_NV = VK_SHADER_STAGE_ANY_HIT_BIT_KHR,
2629    VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV = VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR,
2630    VK_SHADER_STAGE_MISS_BIT_NV = VK_SHADER_STAGE_MISS_BIT_KHR,
2631    VK_SHADER_STAGE_INTERSECTION_BIT_NV = VK_SHADER_STAGE_INTERSECTION_BIT_KHR,
2632    VK_SHADER_STAGE_CALLABLE_BIT_NV = VK_SHADER_STAGE_CALLABLE_BIT_KHR,
2633    VK_SHADER_STAGE_TASK_BIT_NV = VK_SHADER_STAGE_TASK_BIT_EXT,
2634    VK_SHADER_STAGE_MESH_BIT_NV = VK_SHADER_STAGE_MESH_BIT_EXT,
2635    VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2636} VkShaderStageFlagBits;
2637
2638typedef enum VkCullModeFlagBits {
2639    VK_CULL_MODE_NONE = 0,
2640    VK_CULL_MODE_FRONT_BIT = 0x00000001,
2641    VK_CULL_MODE_BACK_BIT = 0x00000002,
2642    VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
2643    VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2644} VkCullModeFlagBits;
2645typedef VkFlags VkCullModeFlags;
2646typedef VkFlags VkPipelineVertexInputStateCreateFlags;
2647typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;
2648typedef VkFlags VkPipelineTessellationStateCreateFlags;
2649typedef VkFlags VkPipelineViewportStateCreateFlags;
2650typedef VkFlags VkPipelineRasterizationStateCreateFlags;
2651typedef VkFlags VkPipelineMultisampleStateCreateFlags;
2652
2653typedef enum VkPipelineDepthStencilStateCreateFlagBits {
2654    VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 0x00000001,
2655    VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 0x00000002,
2656    VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM = VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT,
2657    VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM = VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT,
2658    VK_PIPELINE_DEPTH_STENCIL_STATE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2659} VkPipelineDepthStencilStateCreateFlagBits;
2660typedef VkFlags VkPipelineDepthStencilStateCreateFlags;
2661
2662typedef enum VkPipelineColorBlendStateCreateFlagBits {
2663    VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT = 0x00000001,
2664    VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_ARM = VK_PIPELINE_COLOR_BLEND_STATE_CREATE_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_BIT_EXT,
2665    VK_PIPELINE_COLOR_BLEND_STATE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2666} VkPipelineColorBlendStateCreateFlagBits;
2667typedef VkFlags VkPipelineColorBlendStateCreateFlags;
2668typedef VkFlags VkPipelineDynamicStateCreateFlags;
2669
2670typedef enum VkPipelineLayoutCreateFlagBits {
2671    VK_PIPELINE_LAYOUT_CREATE_INDEPENDENT_SETS_BIT_EXT = 0x00000002,
2672    VK_PIPELINE_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2673} VkPipelineLayoutCreateFlagBits;
2674typedef VkFlags VkPipelineLayoutCreateFlags;
2675typedef VkFlags VkShaderStageFlags;
2676
2677typedef enum VkSamplerCreateFlagBits {
2678    VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 0x00000001,
2679    VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 0x00000002,
2680    VK_SAMPLER_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0x00000008,
2681    VK_SAMPLER_CREATE_NON_SEAMLESS_CUBE_MAP_BIT_EXT = 0x00000004,
2682    VK_SAMPLER_CREATE_IMAGE_PROCESSING_BIT_QCOM = 0x00000010,
2683    VK_SAMPLER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2684} VkSamplerCreateFlagBits;
2685typedef VkFlags VkSamplerCreateFlags;
2686
2687typedef enum VkDescriptorPoolCreateFlagBits {
2688    VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
2689    VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT = 0x00000002,
2690    VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT = 0x00000004,
2691    VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_SETS_BIT_NV = 0x00000008,
2692    VK_DESCRIPTOR_POOL_CREATE_ALLOW_OVERALLOCATION_POOLS_BIT_NV = 0x00000010,
2693    VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT,
2694    VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE = VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_EXT,
2695    VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2696} VkDescriptorPoolCreateFlagBits;
2697typedef VkFlags VkDescriptorPoolCreateFlags;
2698typedef VkFlags VkDescriptorPoolResetFlags;
2699
2700typedef enum VkDescriptorSetLayoutCreateFlagBits {
2701    VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT = 0x00000002,
2702    VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
2703    VK_DESCRIPTOR_SET_LAYOUT_CREATE_DESCRIPTOR_BUFFER_BIT_EXT = 0x00000010,
2704    VK_DESCRIPTOR_SET_LAYOUT_CREATE_EMBEDDED_IMMUTABLE_SAMPLERS_BIT_EXT = 0x00000020,
2705    VK_DESCRIPTOR_SET_LAYOUT_CREATE_INDIRECT_BINDABLE_BIT_NV = 0x00000080,
2706    VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT = 0x00000004,
2707    VK_DESCRIPTOR_SET_LAYOUT_CREATE_PER_STAGE_BIT_NV = 0x00000040,
2708    VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT,
2709    VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE = VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_EXT,
2710    VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2711} VkDescriptorSetLayoutCreateFlagBits;
2712typedef VkFlags VkDescriptorSetLayoutCreateFlags;
2713
2714typedef enum VkAttachmentDescriptionFlagBits {
2715    VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
2716    VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2717} VkAttachmentDescriptionFlagBits;
2718typedef VkFlags VkAttachmentDescriptionFlags;
2719
2720typedef enum VkDependencyFlagBits {
2721    VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
2722    VK_DEPENDENCY_DEVICE_GROUP_BIT = 0x00000004,
2723    VK_DEPENDENCY_VIEW_LOCAL_BIT = 0x00000002,
2724    VK_DEPENDENCY_FEEDBACK_LOOP_BIT_EXT = 0x00000008,
2725    VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = VK_DEPENDENCY_VIEW_LOCAL_BIT,
2726    VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = VK_DEPENDENCY_DEVICE_GROUP_BIT,
2727    VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2728} VkDependencyFlagBits;
2729typedef VkFlags VkDependencyFlags;
2730
2731typedef enum VkFramebufferCreateFlagBits {
2732    VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT = 0x00000001,
2733    VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT,
2734    VK_FRAMEBUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2735} VkFramebufferCreateFlagBits;
2736typedef VkFlags VkFramebufferCreateFlags;
2737
2738typedef enum VkRenderPassCreateFlagBits {
2739    VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM = 0x00000002,
2740    VK_RENDER_PASS_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2741} VkRenderPassCreateFlagBits;
2742typedef VkFlags VkRenderPassCreateFlags;
2743
2744typedef enum VkSubpassDescriptionFlagBits {
2745    VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001,
2746    VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,
2747    VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM = 0x00000004,
2748    VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 0x00000008,
2749    VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT = 0x00000010,
2750    VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT = 0x00000020,
2751    VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT = 0x00000040,
2752    VK_SUBPASS_DESCRIPTION_ENABLE_LEGACY_DITHERING_BIT_EXT = 0x00000080,
2753    VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_ARM = VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_COLOR_ACCESS_BIT_EXT,
2754    VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_ARM = VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_DEPTH_ACCESS_BIT_EXT,
2755    VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_ARM = VK_SUBPASS_DESCRIPTION_RASTERIZATION_ORDER_ATTACHMENT_STENCIL_ACCESS_BIT_EXT,
2756    VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2757} VkSubpassDescriptionFlagBits;
2758typedef VkFlags VkSubpassDescriptionFlags;
2759
2760typedef enum VkCommandPoolCreateFlagBits {
2761    VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001,
2762    VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
2763    VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 0x00000004,
2764    VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2765} VkCommandPoolCreateFlagBits;
2766typedef VkFlags VkCommandPoolCreateFlags;
2767
2768typedef enum VkCommandPoolResetFlagBits {
2769    VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
2770    VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2771} VkCommandPoolResetFlagBits;
2772typedef VkFlags VkCommandPoolResetFlags;
2773
2774typedef enum VkCommandBufferUsageFlagBits {
2775    VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
2776    VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
2777    VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
2778    VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2779} VkCommandBufferUsageFlagBits;
2780typedef VkFlags VkCommandBufferUsageFlags;
2781
2782typedef enum VkQueryControlFlagBits {
2783    VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
2784    VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2785} VkQueryControlFlagBits;
2786typedef VkFlags VkQueryControlFlags;
2787
2788typedef enum VkCommandBufferResetFlagBits {
2789    VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
2790    VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2791} VkCommandBufferResetFlagBits;
2792typedef VkFlags VkCommandBufferResetFlags;
2793
2794typedef enum VkStencilFaceFlagBits {
2795    VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
2796    VK_STENCIL_FACE_BACK_BIT = 0x00000002,
2797    VK_STENCIL_FACE_FRONT_AND_BACK = 0x00000003,
2798    VK_STENCIL_FRONT_AND_BACK = VK_STENCIL_FACE_FRONT_AND_BACK,
2799    VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
2800} VkStencilFaceFlagBits;
2801typedef VkFlags VkStencilFaceFlags;
2802typedef struct VkExtent2D {
2803    uint32_t    width;
2804    uint32_t    height;
2805} VkExtent2D;
2806
2807typedef struct VkExtent3D {
2808    uint32_t    width;
2809    uint32_t    height;
2810    uint32_t    depth;
2811} VkExtent3D;
2812
2813typedef struct VkOffset2D {
2814    int32_t    x;
2815    int32_t    y;
2816} VkOffset2D;
2817
2818typedef struct VkOffset3D {
2819    int32_t    x;
2820    int32_t    y;
2821    int32_t    z;
2822} VkOffset3D;
2823
2824typedef struct VkRect2D {
2825    VkOffset2D    offset;
2826    VkExtent2D    extent;
2827} VkRect2D;
2828
2829typedef struct VkBaseInStructure {
2830    VkStructureType                    sType;
2831    const struct VkBaseInStructure*    pNext;
2832} VkBaseInStructure;
2833
2834typedef struct VkBaseOutStructure {
2835    VkStructureType               sType;
2836    struct VkBaseOutStructure*    pNext;
2837} VkBaseOutStructure;
2838
2839typedef struct VkBufferMemoryBarrier {
2840    VkStructureType    sType;
2841    const void*        pNext;
2842    VkAccessFlags      srcAccessMask;
2843    VkAccessFlags      dstAccessMask;
2844    uint32_t           srcQueueFamilyIndex;
2845    uint32_t           dstQueueFamilyIndex;
2846    VkBuffer           buffer;
2847    VkDeviceSize       offset;
2848    VkDeviceSize       size;
2849} VkBufferMemoryBarrier;
2850
2851typedef struct VkDispatchIndirectCommand {
2852    uint32_t    x;
2853    uint32_t    y;
2854    uint32_t    z;
2855} VkDispatchIndirectCommand;
2856
2857typedef struct VkDrawIndexedIndirectCommand {
2858    uint32_t    indexCount;
2859    uint32_t    instanceCount;
2860    uint32_t    firstIndex;
2861    int32_t     vertexOffset;
2862    uint32_t    firstInstance;
2863} VkDrawIndexedIndirectCommand;
2864
2865typedef struct VkDrawIndirectCommand {
2866    uint32_t    vertexCount;
2867    uint32_t    instanceCount;
2868    uint32_t    firstVertex;
2869    uint32_t    firstInstance;
2870} VkDrawIndirectCommand;
2871
2872typedef struct VkImageSubresourceRange {
2873    VkImageAspectFlags    aspectMask;
2874    uint32_t              baseMipLevel;
2875    uint32_t              levelCount;
2876    uint32_t              baseArrayLayer;
2877    uint32_t              layerCount;
2878} VkImageSubresourceRange;
2879
2880typedef struct VkImageMemoryBarrier {
2881    VkStructureType            sType;
2882    const void*                pNext;
2883    VkAccessFlags              srcAccessMask;
2884    VkAccessFlags              dstAccessMask;
2885    VkImageLayout              oldLayout;
2886    VkImageLayout              newLayout;
2887    uint32_t                   srcQueueFamilyIndex;
2888    uint32_t                   dstQueueFamilyIndex;
2889    VkImage                    image;
2890    VkImageSubresourceRange    subresourceRange;
2891} VkImageMemoryBarrier;
2892
2893typedef struct VkMemoryBarrier {
2894    VkStructureType    sType;
2895    const void*        pNext;
2896    VkAccessFlags      srcAccessMask;
2897    VkAccessFlags      dstAccessMask;
2898} VkMemoryBarrier;
2899
2900typedef struct VkPipelineCacheHeaderVersionOne {
2901    uint32_t                        headerSize;
2902    VkPipelineCacheHeaderVersion    headerVersion;
2903    uint32_t                        vendorID;
2904    uint32_t                        deviceID;
2905    uint8_t                         pipelineCacheUUID[VK_UUID_SIZE];
2906} VkPipelineCacheHeaderVersionOne;
2907
2908typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(
2909    void*                                       pUserData,
2910    size_t                                      size,
2911    size_t                                      alignment,
2912    VkSystemAllocationScope                     allocationScope);
2913
2914typedef void (VKAPI_PTR *PFN_vkFreeFunction)(
2915    void*                                       pUserData,
2916    void*                                       pMemory);
2917
2918typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)(
2919    void*                                       pUserData,
2920    size_t                                      size,
2921    VkInternalAllocationType                    allocationType,
2922    VkSystemAllocationScope                     allocationScope);
2923
2924typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)(
2925    void*                                       pUserData,
2926    size_t                                      size,
2927    VkInternalAllocationType                    allocationType,
2928    VkSystemAllocationScope                     allocationScope);
2929
2930typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)(
2931    void*                                       pUserData,
2932    void*                                       pOriginal,
2933    size_t                                      size,
2934    size_t                                      alignment,
2935    VkSystemAllocationScope                     allocationScope);
2936
2937typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void);
2938typedef struct VkAllocationCallbacks {
2939    void*                                   pUserData;
2940    PFN_vkAllocationFunction                pfnAllocation;
2941    PFN_vkReallocationFunction              pfnReallocation;
2942    PFN_vkFreeFunction                      pfnFree;
2943    PFN_vkInternalAllocationNotification    pfnInternalAllocation;
2944    PFN_vkInternalFreeNotification          pfnInternalFree;
2945} VkAllocationCallbacks;
2946
2947typedef struct VkApplicationInfo {
2948    VkStructureType    sType;
2949    const void*        pNext;
2950    const char*        pApplicationName;
2951    uint32_t           applicationVersion;
2952    const char*        pEngineName;
2953    uint32_t           engineVersion;
2954    uint32_t           apiVersion;
2955} VkApplicationInfo;
2956
2957typedef struct VkFormatProperties {
2958    VkFormatFeatureFlags    linearTilingFeatures;
2959    VkFormatFeatureFlags    optimalTilingFeatures;
2960    VkFormatFeatureFlags    bufferFeatures;
2961} VkFormatProperties;
2962
2963typedef struct VkImageFormatProperties {
2964    VkExtent3D            maxExtent;
2965    uint32_t              maxMipLevels;
2966    uint32_t              maxArrayLayers;
2967    VkSampleCountFlags    sampleCounts;
2968    VkDeviceSize          maxResourceSize;
2969} VkImageFormatProperties;
2970
2971typedef struct VkInstanceCreateInfo {
2972    VkStructureType             sType;
2973    const void*                 pNext;
2974    VkInstanceCreateFlags       flags;
2975    const VkApplicationInfo*    pApplicationInfo;
2976    uint32_t                    enabledLayerCount;
2977    const char* const*          ppEnabledLayerNames;
2978    uint32_t                    enabledExtensionCount;
2979    const char* const*          ppEnabledExtensionNames;
2980} VkInstanceCreateInfo;
2981
2982typedef struct VkMemoryHeap {
2983    VkDeviceSize         size;
2984    VkMemoryHeapFlags    flags;
2985} VkMemoryHeap;
2986
2987typedef struct VkMemoryType {
2988    VkMemoryPropertyFlags    propertyFlags;
2989    uint32_t                 heapIndex;
2990} VkMemoryType;
2991
2992typedef struct VkPhysicalDeviceFeatures {
2993    VkBool32    robustBufferAccess;
2994    VkBool32    fullDrawIndexUint32;
2995    VkBool32    imageCubeArray;
2996    VkBool32    independentBlend;
2997    VkBool32    geometryShader;
2998    VkBool32    tessellationShader;
2999    VkBool32    sampleRateShading;
3000    VkBool32    dualSrcBlend;
3001    VkBool32    logicOp;
3002    VkBool32    multiDrawIndirect;
3003    VkBool32    drawIndirectFirstInstance;
3004    VkBool32    depthClamp;
3005    VkBool32    depthBiasClamp;
3006    VkBool32    fillModeNonSolid;
3007    VkBool32    depthBounds;
3008    VkBool32    wideLines;
3009    VkBool32    largePoints;
3010    VkBool32    alphaToOne;
3011    VkBool32    multiViewport;
3012    VkBool32    samplerAnisotropy;
3013    VkBool32    textureCompressionETC2;
3014    VkBool32    textureCompressionASTC_LDR;
3015    VkBool32    textureCompressionBC;
3016    VkBool32    occlusionQueryPrecise;
3017    VkBool32    pipelineStatisticsQuery;
3018    VkBool32    vertexPipelineStoresAndAtomics;
3019    VkBool32    fragmentStoresAndAtomics;
3020    VkBool32    shaderTessellationAndGeometryPointSize;
3021    VkBool32    shaderImageGatherExtended;
3022    VkBool32    shaderStorageImageExtendedFormats;
3023    VkBool32    shaderStorageImageMultisample;
3024    VkBool32    shaderStorageImageReadWithoutFormat;
3025    VkBool32    shaderStorageImageWriteWithoutFormat;
3026    VkBool32    shaderUniformBufferArrayDynamicIndexing;
3027    VkBool32    shaderSampledImageArrayDynamicIndexing;
3028    VkBool32    shaderStorageBufferArrayDynamicIndexing;
3029    VkBool32    shaderStorageImageArrayDynamicIndexing;
3030    VkBool32    shaderClipDistance;
3031    VkBool32    shaderCullDistance;
3032    VkBool32    shaderFloat64;
3033    VkBool32    shaderInt64;
3034    VkBool32    shaderInt16;
3035    VkBool32    shaderResourceResidency;
3036    VkBool32    shaderResourceMinLod;
3037    VkBool32    sparseBinding;
3038    VkBool32    sparseResidencyBuffer;
3039    VkBool32    sparseResidencyImage2D;
3040    VkBool32    sparseResidencyImage3D;
3041    VkBool32    sparseResidency2Samples;
3042    VkBool32    sparseResidency4Samples;
3043    VkBool32    sparseResidency8Samples;
3044    VkBool32    sparseResidency16Samples;
3045    VkBool32    sparseResidencyAliased;
3046    VkBool32    variableMultisampleRate;
3047    VkBool32    inheritedQueries;
3048} VkPhysicalDeviceFeatures;
3049
3050typedef struct VkPhysicalDeviceLimits {
3051    uint32_t              maxImageDimension1D;
3052    uint32_t              maxImageDimension2D;
3053    uint32_t              maxImageDimension3D;
3054    uint32_t              maxImageDimensionCube;
3055    uint32_t              maxImageArrayLayers;
3056    uint32_t              maxTexelBufferElements;
3057    uint32_t              maxUniformBufferRange;
3058    uint32_t              maxStorageBufferRange;
3059    uint32_t              maxPushConstantsSize;
3060    uint32_t              maxMemoryAllocationCount;
3061    uint32_t              maxSamplerAllocationCount;
3062    VkDeviceSize          bufferImageGranularity;
3063    VkDeviceSize          sparseAddressSpaceSize;
3064    uint32_t              maxBoundDescriptorSets;
3065    uint32_t              maxPerStageDescriptorSamplers;
3066    uint32_t              maxPerStageDescriptorUniformBuffers;
3067    uint32_t              maxPerStageDescriptorStorageBuffers;
3068    uint32_t              maxPerStageDescriptorSampledImages;
3069    uint32_t              maxPerStageDescriptorStorageImages;
3070    uint32_t              maxPerStageDescriptorInputAttachments;
3071    uint32_t              maxPerStageResources;
3072    uint32_t              maxDescriptorSetSamplers;
3073    uint32_t              maxDescriptorSetUniformBuffers;
3074    uint32_t              maxDescriptorSetUniformBuffersDynamic;
3075    uint32_t              maxDescriptorSetStorageBuffers;
3076    uint32_t              maxDescriptorSetStorageBuffersDynamic;
3077    uint32_t              maxDescriptorSetSampledImages;
3078    uint32_t              maxDescriptorSetStorageImages;
3079    uint32_t              maxDescriptorSetInputAttachments;
3080    uint32_t              maxVertexInputAttributes;
3081    uint32_t              maxVertexInputBindings;
3082    uint32_t              maxVertexInputAttributeOffset;
3083    uint32_t              maxVertexInputBindingStride;
3084    uint32_t              maxVertexOutputComponents;
3085    uint32_t              maxTessellationGenerationLevel;
3086    uint32_t              maxTessellationPatchSize;
3087    uint32_t              maxTessellationControlPerVertexInputComponents;
3088    uint32_t              maxTessellationControlPerVertexOutputComponents;
3089    uint32_t              maxTessellationControlPerPatchOutputComponents;
3090    uint32_t              maxTessellationControlTotalOutputComponents;
3091    uint32_t              maxTessellationEvaluationInputComponents;
3092    uint32_t              maxTessellationEvaluationOutputComponents;
3093    uint32_t              maxGeometryShaderInvocations;
3094    uint32_t              maxGeometryInputComponents;
3095    uint32_t              maxGeometryOutputComponents;
3096    uint32_t              maxGeometryOutputVertices;
3097    uint32_t              maxGeometryTotalOutputComponents;
3098    uint32_t              maxFragmentInputComponents;
3099    uint32_t              maxFragmentOutputAttachments;
3100    uint32_t              maxFragmentDualSrcAttachments;
3101    uint32_t              maxFragmentCombinedOutputResources;
3102    uint32_t              maxComputeSharedMemorySize;
3103    uint32_t              maxComputeWorkGroupCount[3];
3104    uint32_t              maxComputeWorkGroupInvocations;
3105    uint32_t              maxComputeWorkGroupSize[3];
3106    uint32_t              subPixelPrecisionBits;
3107    uint32_t              subTexelPrecisionBits;
3108    uint32_t              mipmapPrecisionBits;
3109    uint32_t              maxDrawIndexedIndexValue;
3110    uint32_t              maxDrawIndirectCount;
3111    float                 maxSamplerLodBias;
3112    float                 maxSamplerAnisotropy;
3113    uint32_t              maxViewports;
3114    uint32_t              maxViewportDimensions[2];
3115    float                 viewportBoundsRange[2];
3116    uint32_t              viewportSubPixelBits;
3117    size_t                minMemoryMapAlignment;
3118    VkDeviceSize          minTexelBufferOffsetAlignment;
3119    VkDeviceSize          minUniformBufferOffsetAlignment;
3120    VkDeviceSize          minStorageBufferOffsetAlignment;
3121    int32_t               minTexelOffset;
3122    uint32_t              maxTexelOffset;
3123    int32_t               minTexelGatherOffset;
3124    uint32_t              maxTexelGatherOffset;
3125    float                 minInterpolationOffset;
3126    float                 maxInterpolationOffset;
3127    uint32_t              subPixelInterpolationOffsetBits;
3128    uint32_t              maxFramebufferWidth;
3129    uint32_t              maxFramebufferHeight;
3130    uint32_t              maxFramebufferLayers;
3131    VkSampleCountFlags    framebufferColorSampleCounts;
3132    VkSampleCountFlags    framebufferDepthSampleCounts;
3133    VkSampleCountFlags    framebufferStencilSampleCounts;
3134    VkSampleCountFlags    framebufferNoAttachmentsSampleCounts;
3135    uint32_t              maxColorAttachments;
3136    VkSampleCountFlags    sampledImageColorSampleCounts;
3137    VkSampleCountFlags    sampledImageIntegerSampleCounts;
3138    VkSampleCountFlags    sampledImageDepthSampleCounts;
3139    VkSampleCountFlags    sampledImageStencilSampleCounts;
3140    VkSampleCountFlags    storageImageSampleCounts;
3141    uint32_t              maxSampleMaskWords;
3142    VkBool32              timestampComputeAndGraphics;
3143    float                 timestampPeriod;
3144    uint32_t              maxClipDistances;
3145    uint32_t              maxCullDistances;
3146    uint32_t              maxCombinedClipAndCullDistances;
3147    uint32_t              discreteQueuePriorities;
3148    float                 pointSizeRange[2];
3149    float                 lineWidthRange[2];
3150    float                 pointSizeGranularity;
3151    float                 lineWidthGranularity;
3152    VkBool32              strictLines;
3153    VkBool32              standardSampleLocations;
3154    VkDeviceSize          optimalBufferCopyOffsetAlignment;
3155    VkDeviceSize          optimalBufferCopyRowPitchAlignment;
3156    VkDeviceSize          nonCoherentAtomSize;
3157} VkPhysicalDeviceLimits;
3158
3159typedef struct VkPhysicalDeviceMemoryProperties {
3160    uint32_t        memoryTypeCount;
3161    VkMemoryType    memoryTypes[VK_MAX_MEMORY_TYPES];
3162    uint32_t        memoryHeapCount;
3163    VkMemoryHeap    memoryHeaps[VK_MAX_MEMORY_HEAPS];
3164} VkPhysicalDeviceMemoryProperties;
3165
3166typedef struct VkPhysicalDeviceSparseProperties {
3167    VkBool32    residencyStandard2DBlockShape;
3168    VkBool32    residencyStandard2DMultisampleBlockShape;
3169    VkBool32    residencyStandard3DBlockShape;
3170    VkBool32    residencyAlignedMipSize;
3171    VkBool32    residencyNonResidentStrict;
3172} VkPhysicalDeviceSparseProperties;
3173
3174typedef struct VkPhysicalDeviceProperties {
3175    uint32_t                            apiVersion;
3176    uint32_t                            driverVersion;
3177    uint32_t                            vendorID;
3178    uint32_t                            deviceID;
3179    VkPhysicalDeviceType                deviceType;
3180    char                                deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
3181    uint8_t                             pipelineCacheUUID[VK_UUID_SIZE];
3182    VkPhysicalDeviceLimits              limits;
3183    VkPhysicalDeviceSparseProperties    sparseProperties;
3184} VkPhysicalDeviceProperties;
3185
3186typedef struct VkQueueFamilyProperties {
3187    VkQueueFlags    queueFlags;
3188    uint32_t        queueCount;
3189    uint32_t        timestampValidBits;
3190    VkExtent3D      minImageTransferGranularity;
3191} VkQueueFamilyProperties;
3192
3193typedef struct VkDeviceQueueCreateInfo {
3194    VkStructureType             sType;
3195    const void*                 pNext;
3196    VkDeviceQueueCreateFlags    flags;
3197    uint32_t                    queueFamilyIndex;
3198    uint32_t                    queueCount;
3199    const float*                pQueuePriorities;
3200} VkDeviceQueueCreateInfo;
3201
3202typedef struct VkDeviceCreateInfo {
3203    VkStructureType                    sType;
3204    const void*                        pNext;
3205    VkDeviceCreateFlags                flags;
3206    uint32_t                           queueCreateInfoCount;
3207    const VkDeviceQueueCreateInfo*     pQueueCreateInfos;
3208    uint32_t                           enabledLayerCount;
3209    const char* const*                 ppEnabledLayerNames;
3210    uint32_t                           enabledExtensionCount;
3211    const char* const*                 ppEnabledExtensionNames;
3212    const VkPhysicalDeviceFeatures*    pEnabledFeatures;
3213} VkDeviceCreateInfo;
3214
3215typedef struct VkExtensionProperties {
3216    char        extensionName[VK_MAX_EXTENSION_NAME_SIZE];
3217    uint32_t    specVersion;
3218} VkExtensionProperties;
3219
3220typedef struct VkLayerProperties {
3221    char        layerName[VK_MAX_EXTENSION_NAME_SIZE];
3222    uint32_t    specVersion;
3223    uint32_t    implementationVersion;
3224    char        description[VK_MAX_DESCRIPTION_SIZE];
3225} VkLayerProperties;
3226
3227typedef struct VkSubmitInfo {
3228    VkStructureType                sType;
3229    const void*                    pNext;
3230    uint32_t                       waitSemaphoreCount;
3231    const VkSemaphore*             pWaitSemaphores;
3232    const VkPipelineStageFlags*    pWaitDstStageMask;
3233    uint32_t                       commandBufferCount;
3234    const VkCommandBuffer*         pCommandBuffers;
3235    uint32_t                       signalSemaphoreCount;
3236    const VkSemaphore*             pSignalSemaphores;
3237} VkSubmitInfo;
3238
3239typedef struct VkMappedMemoryRange {
3240    VkStructureType    sType;
3241    const void*        pNext;
3242    VkDeviceMemory     memory;
3243    VkDeviceSize       offset;
3244    VkDeviceSize       size;
3245} VkMappedMemoryRange;
3246
3247typedef struct VkMemoryAllocateInfo {
3248    VkStructureType    sType;
3249    const void*        pNext;
3250    VkDeviceSize       allocationSize;
3251    uint32_t           memoryTypeIndex;
3252} VkMemoryAllocateInfo;
3253
3254typedef struct VkMemoryRequirements {
3255    VkDeviceSize    size;
3256    VkDeviceSize    alignment;
3257    uint32_t        memoryTypeBits;
3258} VkMemoryRequirements;
3259
3260typedef struct VkSparseMemoryBind {
3261    VkDeviceSize               resourceOffset;
3262    VkDeviceSize               size;
3263    VkDeviceMemory             memory;
3264    VkDeviceSize               memoryOffset;
3265    VkSparseMemoryBindFlags    flags;
3266} VkSparseMemoryBind;
3267
3268typedef struct VkSparseBufferMemoryBindInfo {
3269    VkBuffer                     buffer;
3270    uint32_t                     bindCount;
3271    const VkSparseMemoryBind*    pBinds;
3272} VkSparseBufferMemoryBindInfo;
3273
3274typedef struct VkSparseImageOpaqueMemoryBindInfo {
3275    VkImage                      image;
3276    uint32_t                     bindCount;
3277    const VkSparseMemoryBind*    pBinds;
3278} VkSparseImageOpaqueMemoryBindInfo;
3279
3280typedef struct VkImageSubresource {
3281    VkImageAspectFlags    aspectMask;
3282    uint32_t              mipLevel;
3283    uint32_t              arrayLayer;
3284} VkImageSubresource;
3285
3286typedef struct VkSparseImageMemoryBind {
3287    VkImageSubresource         subresource;
3288    VkOffset3D                 offset;
3289    VkExtent3D                 extent;
3290    VkDeviceMemory             memory;
3291    VkDeviceSize               memoryOffset;
3292    VkSparseMemoryBindFlags    flags;
3293} VkSparseImageMemoryBind;
3294
3295typedef struct VkSparseImageMemoryBindInfo {
3296    VkImage                           image;
3297    uint32_t                          bindCount;
3298    const VkSparseImageMemoryBind*    pBinds;
3299} VkSparseImageMemoryBindInfo;
3300
3301typedef struct VkBindSparseInfo {
3302    VkStructureType                             sType;
3303    const void*                                 pNext;
3304    uint32_t                                    waitSemaphoreCount;
3305    const VkSemaphore*                          pWaitSemaphores;
3306    uint32_t                                    bufferBindCount;
3307    const VkSparseBufferMemoryBindInfo*         pBufferBinds;
3308    uint32_t                                    imageOpaqueBindCount;
3309    const VkSparseImageOpaqueMemoryBindInfo*    pImageOpaqueBinds;
3310    uint32_t                                    imageBindCount;
3311    const VkSparseImageMemoryBindInfo*          pImageBinds;
3312    uint32_t                                    signalSemaphoreCount;
3313    const VkSemaphore*                          pSignalSemaphores;
3314} VkBindSparseInfo;
3315
3316typedef struct VkSparseImageFormatProperties {
3317    VkImageAspectFlags          aspectMask;
3318    VkExtent3D                  imageGranularity;
3319    VkSparseImageFormatFlags    flags;
3320} VkSparseImageFormatProperties;
3321
3322typedef struct VkSparseImageMemoryRequirements {
3323    VkSparseImageFormatProperties    formatProperties;
3324    uint32_t                         imageMipTailFirstLod;
3325    VkDeviceSize                     imageMipTailSize;
3326    VkDeviceSize                     imageMipTailOffset;
3327    VkDeviceSize                     imageMipTailStride;
3328} VkSparseImageMemoryRequirements;
3329
3330typedef struct VkFenceCreateInfo {
3331    VkStructureType       sType;
3332    const void*           pNext;
3333    VkFenceCreateFlags    flags;
3334} VkFenceCreateInfo;
3335
3336typedef struct VkSemaphoreCreateInfo {
3337    VkStructureType           sType;
3338    const void*               pNext;
3339    VkSemaphoreCreateFlags    flags;
3340} VkSemaphoreCreateInfo;
3341
3342typedef struct VkEventCreateInfo {
3343    VkStructureType       sType;
3344    const void*           pNext;
3345    VkEventCreateFlags    flags;
3346} VkEventCreateInfo;
3347
3348typedef struct VkQueryPoolCreateInfo {
3349    VkStructureType                  sType;
3350    const void*                      pNext;
3351    VkQueryPoolCreateFlags           flags;
3352    VkQueryType                      queryType;
3353    uint32_t                         queryCount;
3354    VkQueryPipelineStatisticFlags    pipelineStatistics;
3355} VkQueryPoolCreateInfo;
3356
3357typedef struct VkBufferCreateInfo {
3358    VkStructureType        sType;
3359    const void*            pNext;
3360    VkBufferCreateFlags    flags;
3361    VkDeviceSize           size;
3362    VkBufferUsageFlags     usage;
3363    VkSharingMode          sharingMode;
3364    uint32_t               queueFamilyIndexCount;
3365    const uint32_t*        pQueueFamilyIndices;
3366} VkBufferCreateInfo;
3367
3368typedef struct VkBufferViewCreateInfo {
3369    VkStructureType            sType;
3370    const void*                pNext;
3371    VkBufferViewCreateFlags    flags;
3372    VkBuffer                   buffer;
3373    VkFormat                   format;
3374    VkDeviceSize               offset;
3375    VkDeviceSize               range;
3376} VkBufferViewCreateInfo;
3377
3378typedef struct VkImageCreateInfo {
3379    VkStructureType          sType;
3380    const void*              pNext;
3381    VkImageCreateFlags       flags;
3382    VkImageType              imageType;
3383    VkFormat                 format;
3384    VkExtent3D               extent;
3385    uint32_t                 mipLevels;
3386    uint32_t                 arrayLayers;
3387    VkSampleCountFlagBits    samples;
3388    VkImageTiling            tiling;
3389    VkImageUsageFlags        usage;
3390    VkSharingMode            sharingMode;
3391    uint32_t                 queueFamilyIndexCount;
3392    const uint32_t*          pQueueFamilyIndices;
3393    VkImageLayout            initialLayout;
3394} VkImageCreateInfo;
3395
3396typedef struct VkSubresourceLayout {
3397    VkDeviceSize    offset;
3398    VkDeviceSize    size;
3399    VkDeviceSize    rowPitch;
3400    VkDeviceSize    arrayPitch;
3401    VkDeviceSize    depthPitch;
3402} VkSubresourceLayout;
3403
3404typedef struct VkComponentMapping {
3405    VkComponentSwizzle    r;
3406    VkComponentSwizzle    g;
3407    VkComponentSwizzle    b;
3408    VkComponentSwizzle    a;
3409} VkComponentMapping;
3410
3411typedef struct VkImageViewCreateInfo {
3412    VkStructureType            sType;
3413    const void*                pNext;
3414    VkImageViewCreateFlags     flags;
3415    VkImage                    image;
3416    VkImageViewType            viewType;
3417    VkFormat                   format;
3418    VkComponentMapping         components;
3419    VkImageSubresourceRange    subresourceRange;
3420} VkImageViewCreateInfo;
3421
3422typedef struct VkShaderModuleCreateInfo {
3423    VkStructureType              sType;
3424    const void*                  pNext;
3425    VkShaderModuleCreateFlags    flags;
3426    size_t                       codeSize;
3427    const uint32_t*              pCode;
3428} VkShaderModuleCreateInfo;
3429
3430typedef struct VkPipelineCacheCreateInfo {
3431    VkStructureType               sType;
3432    const void*                   pNext;
3433    VkPipelineCacheCreateFlags    flags;
3434    size_t                        initialDataSize;
3435    const void*                   pInitialData;
3436} VkPipelineCacheCreateInfo;
3437
3438typedef struct VkSpecializationMapEntry {
3439    uint32_t    constantID;
3440    uint32_t    offset;
3441    size_t      size;
3442} VkSpecializationMapEntry;
3443
3444typedef struct VkSpecializationInfo {
3445    uint32_t                           mapEntryCount;
3446    const VkSpecializationMapEntry*    pMapEntries;
3447    size_t                             dataSize;
3448    const void*                        pData;
3449} VkSpecializationInfo;
3450
3451typedef struct VkPipelineShaderStageCreateInfo {
3452    VkStructureType                     sType;
3453    const void*                         pNext;
3454    VkPipelineShaderStageCreateFlags    flags;
3455    VkShaderStageFlagBits               stage;
3456    VkShaderModule                      module;
3457    const char*                         pName;
3458    const VkSpecializationInfo*         pSpecializationInfo;
3459} VkPipelineShaderStageCreateInfo;
3460
3461typedef struct VkComputePipelineCreateInfo {
3462    VkStructureType                    sType;
3463    const void*                        pNext;
3464    VkPipelineCreateFlags              flags;
3465    VkPipelineShaderStageCreateInfo    stage;
3466    VkPipelineLayout                   layout;
3467    VkPipeline                         basePipelineHandle;
3468    int32_t                            basePipelineIndex;
3469} VkComputePipelineCreateInfo;
3470
3471typedef struct VkVertexInputBindingDescription {
3472    uint32_t             binding;
3473    uint32_t             stride;
3474    VkVertexInputRate    inputRate;
3475} VkVertexInputBindingDescription;
3476
3477typedef struct VkVertexInputAttributeDescription {
3478    uint32_t    location;
3479    uint32_t    binding;
3480    VkFormat    format;
3481    uint32_t    offset;
3482} VkVertexInputAttributeDescription;
3483
3484typedef struct VkPipelineVertexInputStateCreateInfo {
3485    VkStructureType                             sType;
3486    const void*                                 pNext;
3487    VkPipelineVertexInputStateCreateFlags       flags;
3488    uint32_t                                    vertexBindingDescriptionCount;
3489    const VkVertexInputBindingDescription*      pVertexBindingDescriptions;
3490    uint32_t                                    vertexAttributeDescriptionCount;
3491    const VkVertexInputAttributeDescription*    pVertexAttributeDescriptions;
3492} VkPipelineVertexInputStateCreateInfo;
3493
3494typedef struct VkPipelineInputAssemblyStateCreateInfo {
3495    VkStructureType                            sType;
3496    const void*                                pNext;
3497    VkPipelineInputAssemblyStateCreateFlags    flags;
3498    VkPrimitiveTopology                        topology;
3499    VkBool32                                   primitiveRestartEnable;
3500} VkPipelineInputAssemblyStateCreateInfo;
3501
3502typedef struct VkPipelineTessellationStateCreateInfo {
3503    VkStructureType                           sType;
3504    const void*                               pNext;
3505    VkPipelineTessellationStateCreateFlags    flags;
3506    uint32_t                                  patchControlPoints;
3507} VkPipelineTessellationStateCreateInfo;
3508
3509typedef struct VkViewport {
3510    float    x;
3511    float    y;
3512    float    width;
3513    float    height;
3514    float    minDepth;
3515    float    maxDepth;
3516} VkViewport;
3517
3518typedef struct VkPipelineViewportStateCreateInfo {
3519    VkStructureType                       sType;
3520    const void*                           pNext;
3521    VkPipelineViewportStateCreateFlags    flags;
3522    uint32_t                              viewportCount;
3523    const VkViewport*                     pViewports;
3524    uint32_t                              scissorCount;
3525    const VkRect2D*                       pScissors;
3526} VkPipelineViewportStateCreateInfo;
3527
3528typedef struct VkPipelineRasterizationStateCreateInfo {
3529    VkStructureType                            sType;
3530    const void*                                pNext;
3531    VkPipelineRasterizationStateCreateFlags    flags;
3532    VkBool32                                   depthClampEnable;
3533    VkBool32                                   rasterizerDiscardEnable;
3534    VkPolygonMode                              polygonMode;
3535    VkCullModeFlags                            cullMode;
3536    VkFrontFace                                frontFace;
3537    VkBool32                                   depthBiasEnable;
3538    float                                      depthBiasConstantFactor;
3539    float                                      depthBiasClamp;
3540    float                                      depthBiasSlopeFactor;
3541    float                                      lineWidth;
3542} VkPipelineRasterizationStateCreateInfo;
3543
3544typedef struct VkPipelineMultisampleStateCreateInfo {
3545    VkStructureType                          sType;
3546    const void*                              pNext;
3547    VkPipelineMultisampleStateCreateFlags    flags;
3548    VkSampleCountFlagBits                    rasterizationSamples;
3549    VkBool32                                 sampleShadingEnable;
3550    float                                    minSampleShading;
3551    const VkSampleMask*                      pSampleMask;
3552    VkBool32                                 alphaToCoverageEnable;
3553    VkBool32                                 alphaToOneEnable;
3554} VkPipelineMultisampleStateCreateInfo;
3555
3556typedef struct VkStencilOpState {
3557    VkStencilOp    failOp;
3558    VkStencilOp    passOp;
3559    VkStencilOp    depthFailOp;
3560    VkCompareOp    compareOp;
3561    uint32_t       compareMask;
3562    uint32_t       writeMask;
3563    uint32_t       reference;
3564} VkStencilOpState;
3565
3566typedef struct VkPipelineDepthStencilStateCreateInfo {
3567    VkStructureType                           sType;
3568    const void*                               pNext;
3569    VkPipelineDepthStencilStateCreateFlags    flags;
3570    VkBool32                                  depthTestEnable;
3571    VkBool32                                  depthWriteEnable;
3572    VkCompareOp                               depthCompareOp;
3573    VkBool32                                  depthBoundsTestEnable;
3574    VkBool32                                  stencilTestEnable;
3575    VkStencilOpState                          front;
3576    VkStencilOpState                          back;
3577    float                                     minDepthBounds;
3578    float                                     maxDepthBounds;
3579} VkPipelineDepthStencilStateCreateInfo;
3580
3581typedef struct VkPipelineColorBlendAttachmentState {
3582    VkBool32                 blendEnable;
3583    VkBlendFactor            srcColorBlendFactor;
3584    VkBlendFactor            dstColorBlendFactor;
3585    VkBlendOp                colorBlendOp;
3586    VkBlendFactor            srcAlphaBlendFactor;
3587    VkBlendFactor            dstAlphaBlendFactor;
3588    VkBlendOp                alphaBlendOp;
3589    VkColorComponentFlags    colorWriteMask;
3590} VkPipelineColorBlendAttachmentState;
3591
3592typedef struct VkPipelineColorBlendStateCreateInfo {
3593    VkStructureType                               sType;
3594    const void*                                   pNext;
3595    VkPipelineColorBlendStateCreateFlags          flags;
3596    VkBool32                                      logicOpEnable;
3597    VkLogicOp                                     logicOp;
3598    uint32_t                                      attachmentCount;
3599    const VkPipelineColorBlendAttachmentState*    pAttachments;
3600    float                                         blendConstants[4];
3601} VkPipelineColorBlendStateCreateInfo;
3602
3603typedef struct VkPipelineDynamicStateCreateInfo {
3604    VkStructureType                      sType;
3605    const void*                          pNext;
3606    VkPipelineDynamicStateCreateFlags    flags;
3607    uint32_t                             dynamicStateCount;
3608    const VkDynamicState*                pDynamicStates;
3609} VkPipelineDynamicStateCreateInfo;
3610
3611typedef struct VkGraphicsPipelineCreateInfo {
3612    VkStructureType                                  sType;
3613    const void*                                      pNext;
3614    VkPipelineCreateFlags                            flags;
3615    uint32_t                                         stageCount;
3616    const VkPipelineShaderStageCreateInfo*           pStages;
3617    const VkPipelineVertexInputStateCreateInfo*      pVertexInputState;
3618    const VkPipelineInputAssemblyStateCreateInfo*    pInputAssemblyState;
3619    const VkPipelineTessellationStateCreateInfo*     pTessellationState;
3620    const VkPipelineViewportStateCreateInfo*         pViewportState;
3621    const VkPipelineRasterizationStateCreateInfo*    pRasterizationState;
3622    const VkPipelineMultisampleStateCreateInfo*      pMultisampleState;
3623    const VkPipelineDepthStencilStateCreateInfo*     pDepthStencilState;
3624    const VkPipelineColorBlendStateCreateInfo*       pColorBlendState;
3625    const VkPipelineDynamicStateCreateInfo*          pDynamicState;
3626    VkPipelineLayout                                 layout;
3627    VkRenderPass                                     renderPass;
3628    uint32_t                                         subpass;
3629    VkPipeline                                       basePipelineHandle;
3630    int32_t                                          basePipelineIndex;
3631} VkGraphicsPipelineCreateInfo;
3632
3633typedef struct VkPushConstantRange {
3634    VkShaderStageFlags    stageFlags;
3635    uint32_t              offset;
3636    uint32_t              size;
3637} VkPushConstantRange;
3638
3639typedef struct VkPipelineLayoutCreateInfo {
3640    VkStructureType                 sType;
3641    const void*                     pNext;
3642    VkPipelineLayoutCreateFlags     flags;
3643    uint32_t                        setLayoutCount;
3644    const VkDescriptorSetLayout*    pSetLayouts;
3645    uint32_t                        pushConstantRangeCount;
3646    const VkPushConstantRange*      pPushConstantRanges;
3647} VkPipelineLayoutCreateInfo;
3648
3649typedef struct VkSamplerCreateInfo {
3650    VkStructureType         sType;
3651    const void*             pNext;
3652    VkSamplerCreateFlags    flags;
3653    VkFilter                magFilter;
3654    VkFilter                minFilter;
3655    VkSamplerMipmapMode     mipmapMode;
3656    VkSamplerAddressMode    addressModeU;
3657    VkSamplerAddressMode    addressModeV;
3658    VkSamplerAddressMode    addressModeW;
3659    float                   mipLodBias;
3660    VkBool32                anisotropyEnable;
3661    float                   maxAnisotropy;
3662    VkBool32                compareEnable;
3663    VkCompareOp             compareOp;
3664    float                   minLod;
3665    float                   maxLod;
3666    VkBorderColor           borderColor;
3667    VkBool32                unnormalizedCoordinates;
3668} VkSamplerCreateInfo;
3669
3670typedef struct VkCopyDescriptorSet {
3671    VkStructureType    sType;
3672    const void*        pNext;
3673    VkDescriptorSet    srcSet;
3674    uint32_t           srcBinding;
3675    uint32_t           srcArrayElement;
3676    VkDescriptorSet    dstSet;
3677    uint32_t           dstBinding;
3678    uint32_t           dstArrayElement;
3679    uint32_t           descriptorCount;
3680} VkCopyDescriptorSet;
3681
3682typedef struct VkDescriptorBufferInfo {
3683    VkBuffer        buffer;
3684    VkDeviceSize    offset;
3685    VkDeviceSize    range;
3686} VkDescriptorBufferInfo;
3687
3688typedef struct VkDescriptorImageInfo {
3689    VkSampler        sampler;
3690    VkImageView      imageView;
3691    VkImageLayout    imageLayout;
3692} VkDescriptorImageInfo;
3693
3694typedef struct VkDescriptorPoolSize {
3695    VkDescriptorType    type;
3696    uint32_t            descriptorCount;
3697} VkDescriptorPoolSize;
3698
3699typedef struct VkDescriptorPoolCreateInfo {
3700    VkStructureType                sType;
3701    const void*                    pNext;
3702    VkDescriptorPoolCreateFlags    flags;
3703    uint32_t                       maxSets;
3704    uint32_t                       poolSizeCount;
3705    const VkDescriptorPoolSize*    pPoolSizes;
3706} VkDescriptorPoolCreateInfo;
3707
3708typedef struct VkDescriptorSetAllocateInfo {
3709    VkStructureType                 sType;
3710    const void*                     pNext;
3711    VkDescriptorPool                descriptorPool;
3712    uint32_t                        descriptorSetCount;
3713    const VkDescriptorSetLayout*    pSetLayouts;
3714} VkDescriptorSetAllocateInfo;
3715
3716typedef struct VkDescriptorSetLayoutBinding {
3717    uint32_t              binding;
3718    VkDescriptorType      descriptorType;
3719    uint32_t              descriptorCount;
3720    VkShaderStageFlags    stageFlags;
3721    const VkSampler*      pImmutableSamplers;
3722} VkDescriptorSetLayoutBinding;
3723
3724typedef struct VkDescriptorSetLayoutCreateInfo {
3725    VkStructureType                        sType;
3726    const void*                            pNext;
3727    VkDescriptorSetLayoutCreateFlags       flags;
3728    uint32_t                               bindingCount;
3729    const VkDescriptorSetLayoutBinding*    pBindings;
3730} VkDescriptorSetLayoutCreateInfo;
3731
3732typedef struct VkWriteDescriptorSet {
3733    VkStructureType                  sType;
3734    const void*                      pNext;
3735    VkDescriptorSet                  dstSet;
3736    uint32_t                         dstBinding;
3737    uint32_t                         dstArrayElement;
3738    uint32_t                         descriptorCount;
3739    VkDescriptorType                 descriptorType;
3740    const VkDescriptorImageInfo*     pImageInfo;
3741    const VkDescriptorBufferInfo*    pBufferInfo;
3742    const VkBufferView*              pTexelBufferView;
3743} VkWriteDescriptorSet;
3744
3745typedef struct VkAttachmentDescription {
3746    VkAttachmentDescriptionFlags    flags;
3747    VkFormat                        format;
3748    VkSampleCountFlagBits           samples;
3749    VkAttachmentLoadOp              loadOp;
3750    VkAttachmentStoreOp             storeOp;
3751    VkAttachmentLoadOp              stencilLoadOp;
3752    VkAttachmentStoreOp             stencilStoreOp;
3753    VkImageLayout                   initialLayout;
3754    VkImageLayout                   finalLayout;
3755} VkAttachmentDescription;
3756
3757typedef struct VkAttachmentReference {
3758    uint32_t         attachment;
3759    VkImageLayout    layout;
3760} VkAttachmentReference;
3761
3762typedef struct VkFramebufferCreateInfo {
3763    VkStructureType             sType;
3764    const void*                 pNext;
3765    VkFramebufferCreateFlags    flags;
3766    VkRenderPass                renderPass;
3767    uint32_t                    attachmentCount;
3768    const VkImageView*          pAttachments;
3769    uint32_t                    width;
3770    uint32_t                    height;
3771    uint32_t                    layers;
3772} VkFramebufferCreateInfo;
3773
3774typedef struct VkSubpassDescription {
3775    VkSubpassDescriptionFlags       flags;
3776    VkPipelineBindPoint             pipelineBindPoint;
3777    uint32_t                        inputAttachmentCount;
3778    const VkAttachmentReference*    pInputAttachments;
3779    uint32_t                        colorAttachmentCount;
3780    const VkAttachmentReference*    pColorAttachments;
3781    const VkAttachmentReference*    pResolveAttachments;
3782    const VkAttachmentReference*    pDepthStencilAttachment;
3783    uint32_t                        preserveAttachmentCount;
3784    const uint32_t*                 pPreserveAttachments;
3785} VkSubpassDescription;
3786
3787typedef struct VkSubpassDependency {
3788    uint32_t                srcSubpass;
3789    uint32_t                dstSubpass;
3790    VkPipelineStageFlags    srcStageMask;
3791    VkPipelineStageFlags    dstStageMask;
3792    VkAccessFlags           srcAccessMask;
3793    VkAccessFlags           dstAccessMask;
3794    VkDependencyFlags       dependencyFlags;
3795} VkSubpassDependency;
3796
3797typedef struct VkRenderPassCreateInfo {
3798    VkStructureType                   sType;
3799    const void*                       pNext;
3800    VkRenderPassCreateFlags           flags;
3801    uint32_t                          attachmentCount;
3802    const VkAttachmentDescription*    pAttachments;
3803    uint32_t                          subpassCount;
3804    const VkSubpassDescription*       pSubpasses;
3805    uint32_t                          dependencyCount;
3806    const VkSubpassDependency*        pDependencies;
3807} VkRenderPassCreateInfo;
3808
3809typedef struct VkCommandPoolCreateInfo {
3810    VkStructureType             sType;
3811    const void*                 pNext;
3812    VkCommandPoolCreateFlags    flags;
3813    uint32_t                    queueFamilyIndex;
3814} VkCommandPoolCreateInfo;
3815
3816typedef struct VkCommandBufferAllocateInfo {
3817    VkStructureType         sType;
3818    const void*             pNext;
3819    VkCommandPool           commandPool;
3820    VkCommandBufferLevel    level;
3821    uint32_t                commandBufferCount;
3822} VkCommandBufferAllocateInfo;
3823
3824typedef struct VkCommandBufferInheritanceInfo {
3825    VkStructureType                  sType;
3826    const void*                      pNext;
3827    VkRenderPass                     renderPass;
3828    uint32_t                         subpass;
3829    VkFramebuffer                    framebuffer;
3830    VkBool32                         occlusionQueryEnable;
3831    VkQueryControlFlags              queryFlags;
3832    VkQueryPipelineStatisticFlags    pipelineStatistics;
3833} VkCommandBufferInheritanceInfo;
3834
3835typedef struct VkCommandBufferBeginInfo {
3836    VkStructureType                          sType;
3837    const void*                              pNext;
3838    VkCommandBufferUsageFlags                flags;
3839    const VkCommandBufferInheritanceInfo*    pInheritanceInfo;
3840} VkCommandBufferBeginInfo;
3841
3842typedef struct VkBufferCopy {
3843    VkDeviceSize    srcOffset;
3844    VkDeviceSize    dstOffset;
3845    VkDeviceSize    size;
3846} VkBufferCopy;
3847
3848typedef struct VkImageSubresourceLayers {
3849    VkImageAspectFlags    aspectMask;
3850    uint32_t              mipLevel;
3851    uint32_t              baseArrayLayer;
3852    uint32_t              layerCount;
3853} VkImageSubresourceLayers;
3854
3855typedef struct VkBufferImageCopy {
3856    VkDeviceSize                bufferOffset;
3857    uint32_t                    bufferRowLength;
3858    uint32_t                    bufferImageHeight;
3859    VkImageSubresourceLayers    imageSubresource;
3860    VkOffset3D                  imageOffset;
3861    VkExtent3D                  imageExtent;
3862} VkBufferImageCopy;
3863
3864typedef union VkClearColorValue {
3865    float       float32[4];
3866    int32_t     int32[4];
3867    uint32_t    uint32[4];
3868} VkClearColorValue;
3869
3870typedef struct VkClearDepthStencilValue {
3871    float       depth;
3872    uint32_t    stencil;
3873} VkClearDepthStencilValue;
3874
3875typedef union VkClearValue {
3876    VkClearColorValue           color;
3877    VkClearDepthStencilValue    depthStencil;
3878} VkClearValue;
3879
3880typedef struct VkClearAttachment {
3881    VkImageAspectFlags    aspectMask;
3882    uint32_t              colorAttachment;
3883    VkClearValue          clearValue;
3884} VkClearAttachment;
3885
3886typedef struct VkClearRect {
3887    VkRect2D    rect;
3888    uint32_t    baseArrayLayer;
3889    uint32_t    layerCount;
3890} VkClearRect;
3891
3892typedef struct VkImageBlit {
3893    VkImageSubresourceLayers    srcSubresource;
3894    VkOffset3D                  srcOffsets[2];
3895    VkImageSubresourceLayers    dstSubresource;
3896    VkOffset3D                  dstOffsets[2];
3897} VkImageBlit;
3898
3899typedef struct VkImageCopy {
3900    VkImageSubresourceLayers    srcSubresource;
3901    VkOffset3D                  srcOffset;
3902    VkImageSubresourceLayers    dstSubresource;
3903    VkOffset3D                  dstOffset;
3904    VkExtent3D                  extent;
3905} VkImageCopy;
3906
3907typedef struct VkImageResolve {
3908    VkImageSubresourceLayers    srcSubresource;
3909    VkOffset3D                  srcOffset;
3910    VkImageSubresourceLayers    dstSubresource;
3911    VkOffset3D                  dstOffset;
3912    VkExtent3D                  extent;
3913} VkImageResolve;
3914
3915typedef struct VkRenderPassBeginInfo {
3916    VkStructureType        sType;
3917    const void*            pNext;
3918    VkRenderPass           renderPass;
3919    VkFramebuffer          framebuffer;
3920    VkRect2D               renderArea;
3921    uint32_t               clearValueCount;
3922    const VkClearValue*    pClearValues;
3923} VkRenderPassBeginInfo;
3924
3925typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
3926typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator);
3927typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
3928typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
3929typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
3930typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
3931typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
3932typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
3933typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
3934typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName);
3935typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);
3936typedef VkResult (VKAPI_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
3937typedef void (VKAPI_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks* pAllocator);
3938typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
3939typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
3940typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties);
3941typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties);
3942typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
3943typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
3944typedef VkResult (VKAPI_PTR *PFN_vkQueueWaitIdle)(VkQueue queue);
3945typedef VkResult (VKAPI_PTR *PFN_vkDeviceWaitIdle)(VkDevice device);
3946typedef VkResult (VKAPI_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
3947typedef void (VKAPI_PTR *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);
3948typedef VkResult (VKAPI_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
3949typedef void (VKAPI_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory);
3950typedef VkResult (VKAPI_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
3951typedef VkResult (VKAPI_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
3952typedef void (VKAPI_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
3953typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
3954typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
3955typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
3956typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
3957typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
3958typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties);
3959typedef VkResult (VKAPI_PTR *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
3960typedef VkResult (VKAPI_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
3961typedef void (VKAPI_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
3962typedef VkResult (VKAPI_PTR *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
3963typedef VkResult (VKAPI_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);
3964typedef VkResult (VKAPI_PTR *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
3965typedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
3966typedef void (VKAPI_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
3967typedef VkResult (VKAPI_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
3968typedef void (VKAPI_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
3969typedef VkResult (VKAPI_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);
3970typedef VkResult (VKAPI_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event);
3971typedef VkResult (VKAPI_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event);
3972typedef VkResult (VKAPI_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
3973typedef void (VKAPI_PTR *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator);
3974typedef VkResult (VKAPI_PTR *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
3975typedef VkResult (VKAPI_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
3976typedef void (VKAPI_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
3977typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
3978typedef void (VKAPI_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
3979typedef VkResult (VKAPI_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
3980typedef void (VKAPI_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
3981typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
3982typedef VkResult (VKAPI_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
3983typedef void (VKAPI_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
3984typedef VkResult (VKAPI_PTR *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule);
3985typedef void (VKAPI_PTR *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator);
3986typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
3987typedef void (VKAPI_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
3988typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
3989typedef VkResult (VKAPI_PTR *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
3990typedef VkResult (VKAPI_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
3991typedef VkResult (VKAPI_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
3992typedef void (VKAPI_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
3993typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
3994typedef void (VKAPI_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
3995typedef VkResult (VKAPI_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
3996typedef void (VKAPI_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
3997typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
3998typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
3999typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
4000typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator);
4001typedef VkResult (VKAPI_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
4002typedef VkResult (VKAPI_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
4003typedef VkResult (VKAPI_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
4004typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
4005typedef VkResult (VKAPI_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
4006typedef void (VKAPI_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
4007typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
4008typedef void (VKAPI_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
4009typedef void (VKAPI_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
4010typedef VkResult (VKAPI_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
4011typedef void (VKAPI_PTR *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator);
4012typedef VkResult (VKAPI_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
4013typedef VkResult (VKAPI_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
4014typedef void (VKAPI_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
4015typedef VkResult (VKAPI_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
4016typedef VkResult (VKAPI_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer);
4017typedef VkResult (VKAPI_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
4018typedef void (VKAPI_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
4019typedef void (VKAPI_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports);
4020typedef void (VKAPI_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors);
4021typedef void (VKAPI_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth);
4022typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
4023typedef void (VKAPI_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]);
4024typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
4025typedef void (VKAPI_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask);
4026typedef void (VKAPI_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask);
4027typedef void (VKAPI_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference);
4028typedef 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);
4029typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
4030typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
4031typedef void (VKAPI_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
4032typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
4033typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
4034typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
4035typedef void (VKAPI_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
4036typedef void (VKAPI_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
4037typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
4038typedef void (VKAPI_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
4039typedef void (VKAPI_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
4040typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
4041typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
4042typedef void (VKAPI_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);
4043typedef void (VKAPI_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data);
4044typedef void (VKAPI_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
4045typedef void (VKAPI_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
4046typedef void (VKAPI_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
4047typedef void (VKAPI_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
4048typedef void (VKAPI_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
4049typedef void (VKAPI_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
4050typedef 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);
4051typedef 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);
4052typedef void (VKAPI_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags);
4053typedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query);
4054typedef void (VKAPI_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);
4055typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query);
4056typedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
4057typedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues);
4058typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
4059typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents);
4060typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer);
4061typedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
4062
4063#ifndef VK_NO_PROTOTYPES
4064VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
4065    const VkInstanceCreateInfo*                 pCreateInfo,
4066    const VkAllocationCallbacks*                pAllocator,
4067    VkInstance*                                 pInstance);
4068
4069VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
4070    VkInstance                                  instance,
4071    const VkAllocationCallbacks*                pAllocator);
4072
4073VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices(
4074    VkInstance                                  instance,
4075    uint32_t*                                   pPhysicalDeviceCount,
4076    VkPhysicalDevice*                           pPhysicalDevices);
4077
4078VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures(
4079    VkPhysicalDevice                            physicalDevice,
4080    VkPhysicalDeviceFeatures*                   pFeatures);
4081
4082VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(
4083    VkPhysicalDevice                            physicalDevice,
4084    VkFormat                                    format,
4085    VkFormatProperties*                         pFormatProperties);
4086
4087VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties(
4088    VkPhysicalDevice                            physicalDevice,
4089    VkFormat                                    format,
4090    VkImageType                                 type,
4091    VkImageTiling                               tiling,
4092    VkImageUsageFlags                           usage,
4093    VkImageCreateFlags                          flags,
4094    VkImageFormatProperties*                    pImageFormatProperties);
4095
4096VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties(
4097    VkPhysicalDevice                            physicalDevice,
4098    VkPhysicalDeviceProperties*                 pProperties);
4099
4100VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties(
4101    VkPhysicalDevice                            physicalDevice,
4102    uint32_t*                                   pQueueFamilyPropertyCount,
4103    VkQueueFamilyProperties*                    pQueueFamilyProperties);
4104
4105VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(
4106    VkPhysicalDevice                            physicalDevice,
4107    VkPhysicalDeviceMemoryProperties*           pMemoryProperties);
4108
4109VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(
4110    VkInstance                                  instance,
4111    const char*                                 pName);
4112
4113VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(
4114    VkDevice                                    device,
4115    const char*                                 pName);
4116
4117VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(
4118    VkPhysicalDevice                            physicalDevice,
4119    const VkDeviceCreateInfo*                   pCreateInfo,
4120    const VkAllocationCallbacks*                pAllocator,
4121    VkDevice*                                   pDevice);
4122
4123VKAPI_ATTR void VKAPI_CALL vkDestroyDevice(
4124    VkDevice                                    device,
4125    const VkAllocationCallbacks*                pAllocator);
4126
4127VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties(
4128    const char*                                 pLayerName,
4129    uint32_t*                                   pPropertyCount,
4130    VkExtensionProperties*                      pProperties);
4131
4132VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties(
4133    VkPhysicalDevice                            physicalDevice,
4134    const char*                                 pLayerName,
4135    uint32_t*                                   pPropertyCount,
4136    VkExtensionProperties*                      pProperties);
4137
4138VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties(
4139    uint32_t*                                   pPropertyCount,
4140    VkLayerProperties*                          pProperties);
4141
4142VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties(
4143    VkPhysicalDevice                            physicalDevice,
4144    uint32_t*                                   pPropertyCount,
4145    VkLayerProperties*                          pProperties);
4146
4147VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue(
4148    VkDevice                                    device,
4149    uint32_t                                    queueFamilyIndex,
4150    uint32_t                                    queueIndex,
4151    VkQueue*                                    pQueue);
4152
4153VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(
4154    VkQueue                                     queue,
4155    uint32_t                                    submitCount,
4156    const VkSubmitInfo*                         pSubmits,
4157    VkFence                                     fence);
4158
4159VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(
4160    VkQueue                                     queue);
4161
4162VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(
4163    VkDevice                                    device);
4164
4165VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(
4166    VkDevice                                    device,
4167    const VkMemoryAllocateInfo*                 pAllocateInfo,
4168    const VkAllocationCallbacks*                pAllocator,
4169    VkDeviceMemory*                             pMemory);
4170
4171VKAPI_ATTR void VKAPI_CALL vkFreeMemory(
4172    VkDevice                                    device,
4173    VkDeviceMemory                              memory,
4174    const VkAllocationCallbacks*                pAllocator);
4175
4176VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(
4177    VkDevice                                    device,
4178    VkDeviceMemory                              memory,
4179    VkDeviceSize                                offset,
4180    VkDeviceSize                                size,
4181    VkMemoryMapFlags                            flags,
4182    void**                                      ppData);
4183
4184VKAPI_ATTR void VKAPI_CALL vkUnmapMemory(
4185    VkDevice                                    device,
4186    VkDeviceMemory                              memory);
4187
4188VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges(
4189    VkDevice                                    device,
4190    uint32_t                                    memoryRangeCount,
4191    const VkMappedMemoryRange*                  pMemoryRanges);
4192
4193VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(
4194    VkDevice                                    device,
4195    uint32_t                                    memoryRangeCount,
4196    const VkMappedMemoryRange*                  pMemoryRanges);
4197
4198VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment(
4199    VkDevice                                    device,
4200    VkDeviceMemory                              memory,
4201    VkDeviceSize*                               pCommittedMemoryInBytes);
4202
4203VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(
4204    VkDevice                                    device,
4205    VkBuffer                                    buffer,
4206    VkDeviceMemory                              memory,
4207    VkDeviceSize                                memoryOffset);
4208
4209VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(
4210    VkDevice                                    device,
4211    VkImage                                     image,
4212    VkDeviceMemory                              memory,
4213    VkDeviceSize                                memoryOffset);
4214
4215VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements(
4216    VkDevice                                    device,
4217    VkBuffer                                    buffer,
4218    VkMemoryRequirements*                       pMemoryRequirements);
4219
4220VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements(
4221    VkDevice                                    device,
4222    VkImage                                     image,
4223    VkMemoryRequirements*                       pMemoryRequirements);
4224
4225VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements(
4226    VkDevice                                    device,
4227    VkImage                                     image,
4228    uint32_t*                                   pSparseMemoryRequirementCount,
4229    VkSparseImageMemoryRequirements*            pSparseMemoryRequirements);
4230
4231VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties(
4232    VkPhysicalDevice                            physicalDevice,
4233    VkFormat                                    format,
4234    VkImageType                                 type,
4235    VkSampleCountFlagBits                       samples,
4236    VkImageUsageFlags                           usage,
4237    VkImageTiling                               tiling,
4238    uint32_t*                                   pPropertyCount,
4239    VkSparseImageFormatProperties*              pProperties);
4240
4241VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse(
4242    VkQueue                                     queue,
4243    uint32_t                                    bindInfoCount,
4244    const VkBindSparseInfo*                     pBindInfo,
4245    VkFence                                     fence);
4246
4247VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(
4248    VkDevice                                    device,
4249    const VkFenceCreateInfo*                    pCreateInfo,
4250    const VkAllocationCallbacks*                pAllocator,
4251    VkFence*                                    pFence);
4252
4253VKAPI_ATTR void VKAPI_CALL vkDestroyFence(
4254    VkDevice                                    device,
4255    VkFence                                     fence,
4256    const VkAllocationCallbacks*                pAllocator);
4257
4258VKAPI_ATTR VkResult VKAPI_CALL vkResetFences(
4259    VkDevice                                    device,
4260    uint32_t                                    fenceCount,
4261    const VkFence*                              pFences);
4262
4263VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(
4264    VkDevice                                    device,
4265    VkFence                                     fence);
4266
4267VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(
4268    VkDevice                                    device,
4269    uint32_t                                    fenceCount,
4270    const VkFence*                              pFences,
4271    VkBool32                                    waitAll,
4272    uint64_t                                    timeout);
4273
4274VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore(
4275    VkDevice                                    device,
4276    const VkSemaphoreCreateInfo*                pCreateInfo,
4277    const VkAllocationCallbacks*                pAllocator,
4278    VkSemaphore*                                pSemaphore);
4279
4280VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore(
4281    VkDevice                                    device,
4282    VkSemaphore                                 semaphore,
4283    const VkAllocationCallbacks*                pAllocator);
4284
4285VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(
4286    VkDevice                                    device,
4287    const VkEventCreateInfo*                    pCreateInfo,
4288    const VkAllocationCallbacks*                pAllocator,
4289    VkEvent*                                    pEvent);
4290
4291VKAPI_ATTR void VKAPI_CALL vkDestroyEvent(
4292    VkDevice                                    device,
4293    VkEvent                                     event,
4294    const VkAllocationCallbacks*                pAllocator);
4295
4296VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus(
4297    VkDevice                                    device,
4298    VkEvent                                     event);
4299
4300VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent(
4301    VkDevice                                    device,
4302    VkEvent                                     event);
4303
4304VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent(
4305    VkDevice                                    device,
4306    VkEvent                                     event);
4307
4308VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool(
4309    VkDevice                                    device,
4310    const VkQueryPoolCreateInfo*                pCreateInfo,
4311    const VkAllocationCallbacks*                pAllocator,
4312    VkQueryPool*                                pQueryPool);
4313
4314VKAPI_ATTR void VKAPI_CALL vkDestroyQueryPool(
4315    VkDevice                                    device,
4316    VkQueryPool                                 queryPool,
4317    const VkAllocationCallbacks*                pAllocator);
4318
4319VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults(
4320    VkDevice                                    device,
4321    VkQueryPool                                 queryPool,
4322    uint32_t                                    firstQuery,
4323    uint32_t                                    queryCount,
4324    size_t                                      dataSize,
4325    void*                                       pData,
4326    VkDeviceSize                                stride,
4327    VkQueryResultFlags                          flags);
4328
4329VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(
4330    VkDevice                                    device,
4331    const VkBufferCreateInfo*                   pCreateInfo,
4332    const VkAllocationCallbacks*                pAllocator,
4333    VkBuffer*                                   pBuffer);
4334
4335VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(
4336    VkDevice                                    device,
4337    VkBuffer                                    buffer,
4338    const VkAllocationCallbacks*                pAllocator);
4339
4340VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(
4341    VkDevice                                    device,
4342    const VkBufferViewCreateInfo*               pCreateInfo,
4343    const VkAllocationCallbacks*                pAllocator,
4344    VkBufferView*                               pView);
4345
4346VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView(
4347    VkDevice                                    device,
4348    VkBufferView                                bufferView,
4349    const VkAllocationCallbacks*                pAllocator);
4350
4351VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(
4352    VkDevice                                    device,
4353    const VkImageCreateInfo*                    pCreateInfo,
4354    const VkAllocationCallbacks*                pAllocator,
4355    VkImage*                                    pImage);
4356
4357VKAPI_ATTR void VKAPI_CALL vkDestroyImage(
4358    VkDevice                                    device,
4359    VkImage                                     image,
4360    const VkAllocationCallbacks*                pAllocator);
4361
4362VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout(
4363    VkDevice                                    device,
4364    VkImage                                     image,
4365    const VkImageSubresource*                   pSubresource,
4366    VkSubresourceLayout*                        pLayout);
4367
4368VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView(
4369    VkDevice                                    device,
4370    const VkImageViewCreateInfo*                pCreateInfo,
4371    const VkAllocationCallbacks*                pAllocator,
4372    VkImageView*                                pView);
4373
4374VKAPI_ATTR void VKAPI_CALL vkDestroyImageView(
4375    VkDevice                                    device,
4376    VkImageView                                 imageView,
4377    const VkAllocationCallbacks*                pAllocator);
4378
4379VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderModule(
4380    VkDevice                                    device,
4381    const VkShaderModuleCreateInfo*             pCreateInfo,
4382    const VkAllocationCallbacks*                pAllocator,
4383    VkShaderModule*                             pShaderModule);
4384
4385VKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule(
4386    VkDevice                                    device,
4387    VkShaderModule                              shaderModule,
4388    const VkAllocationCallbacks*                pAllocator);
4389
4390VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(
4391    VkDevice                                    device,
4392    const VkPipelineCacheCreateInfo*            pCreateInfo,
4393    const VkAllocationCallbacks*                pAllocator,
4394    VkPipelineCache*                            pPipelineCache);
4395
4396VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache(
4397    VkDevice                                    device,
4398    VkPipelineCache                             pipelineCache,
4399    const VkAllocationCallbacks*                pAllocator);
4400
4401VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineCacheData(
4402    VkDevice                                    device,
4403    VkPipelineCache                             pipelineCache,
4404    size_t*                                     pDataSize,
4405    void*                                       pData);
4406
4407VKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches(
4408    VkDevice                                    device,
4409    VkPipelineCache                             dstCache,
4410    uint32_t                                    srcCacheCount,
4411    const VkPipelineCache*                      pSrcCaches);
4412
4413VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(
4414    VkDevice                                    device,
4415    VkPipelineCache                             pipelineCache,
4416    uint32_t                                    createInfoCount,
4417    const VkGraphicsPipelineCreateInfo*         pCreateInfos,
4418    const VkAllocationCallbacks*                pAllocator,
4419    VkPipeline*                                 pPipelines);
4420
4421VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines(
4422    VkDevice                                    device,
4423    VkPipelineCache                             pipelineCache,
4424    uint32_t                                    createInfoCount,
4425    const VkComputePipelineCreateInfo*          pCreateInfos,
4426    const VkAllocationCallbacks*                pAllocator,
4427    VkPipeline*                                 pPipelines);
4428
4429VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline(
4430    VkDevice                                    device,
4431    VkPipeline                                  pipeline,
4432    const VkAllocationCallbacks*                pAllocator);
4433
4434VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout(
4435    VkDevice                                    device,
4436    const VkPipelineLayoutCreateInfo*           pCreateInfo,
4437    const VkAllocationCallbacks*                pAllocator,
4438    VkPipelineLayout*                           pPipelineLayout);
4439
4440VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout(
4441    VkDevice                                    device,
4442    VkPipelineLayout                            pipelineLayout,
4443    const VkAllocationCallbacks*                pAllocator);
4444
4445VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler(
4446    VkDevice                                    device,
4447    const VkSamplerCreateInfo*                  pCreateInfo,
4448    const VkAllocationCallbacks*                pAllocator,
4449    VkSampler*                                  pSampler);
4450
4451VKAPI_ATTR void VKAPI_CALL vkDestroySampler(
4452    VkDevice                                    device,
4453    VkSampler                                   sampler,
4454    const VkAllocationCallbacks*                pAllocator);
4455
4456VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout(
4457    VkDevice                                    device,
4458    const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
4459    const VkAllocationCallbacks*                pAllocator,
4460    VkDescriptorSetLayout*                      pSetLayout);
4461
4462VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout(
4463    VkDevice                                    device,
4464    VkDescriptorSetLayout                       descriptorSetLayout,
4465    const VkAllocationCallbacks*                pAllocator);
4466
4467VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool(
4468    VkDevice                                    device,
4469    const VkDescriptorPoolCreateInfo*           pCreateInfo,
4470    const VkAllocationCallbacks*                pAllocator,
4471    VkDescriptorPool*                           pDescriptorPool);
4472
4473VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorPool(
4474    VkDevice                                    device,
4475    VkDescriptorPool                            descriptorPool,
4476    const VkAllocationCallbacks*                pAllocator);
4477
4478VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool(
4479    VkDevice                                    device,
4480    VkDescriptorPool                            descriptorPool,
4481    VkDescriptorPoolResetFlags                  flags);
4482
4483VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(
4484    VkDevice                                    device,
4485    const VkDescriptorSetAllocateInfo*          pAllocateInfo,
4486    VkDescriptorSet*                            pDescriptorSets);
4487
4488VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets(
4489    VkDevice                                    device,
4490    VkDescriptorPool                            descriptorPool,
4491    uint32_t                                    descriptorSetCount,
4492    const VkDescriptorSet*                      pDescriptorSets);
4493
4494VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets(
4495    VkDevice                                    device,
4496    uint32_t                                    descriptorWriteCount,
4497    const VkWriteDescriptorSet*                 pDescriptorWrites,
4498    uint32_t                                    descriptorCopyCount,
4499    const VkCopyDescriptorSet*                  pDescriptorCopies);
4500
4501VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(
4502    VkDevice                                    device,
4503    const VkFramebufferCreateInfo*              pCreateInfo,
4504    const VkAllocationCallbacks*                pAllocator,
4505    VkFramebuffer*                              pFramebuffer);
4506
4507VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer(
4508    VkDevice                                    device,
4509    VkFramebuffer                               framebuffer,
4510    const VkAllocationCallbacks*                pAllocator);
4511
4512VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(
4513    VkDevice                                    device,
4514    const VkRenderPassCreateInfo*               pCreateInfo,
4515    const VkAllocationCallbacks*                pAllocator,
4516    VkRenderPass*                               pRenderPass);
4517
4518VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass(
4519    VkDevice                                    device,
4520    VkRenderPass                                renderPass,
4521    const VkAllocationCallbacks*                pAllocator);
4522
4523VKAPI_ATTR void VKAPI_CALL vkGetRenderAreaGranularity(
4524    VkDevice                                    device,
4525    VkRenderPass                                renderPass,
4526    VkExtent2D*                                 pGranularity);
4527
4528VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool(
4529    VkDevice                                    device,
4530    const VkCommandPoolCreateInfo*              pCreateInfo,
4531    const VkAllocationCallbacks*                pAllocator,
4532    VkCommandPool*                              pCommandPool);
4533
4534VKAPI_ATTR void VKAPI_CALL vkDestroyCommandPool(
4535    VkDevice                                    device,
4536    VkCommandPool                               commandPool,
4537    const VkAllocationCallbacks*                pAllocator);
4538
4539VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool(
4540    VkDevice                                    device,
4541    VkCommandPool                               commandPool,
4542    VkCommandPoolResetFlags                     flags);
4543
4544VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(
4545    VkDevice                                    device,
4546    const VkCommandBufferAllocateInfo*          pAllocateInfo,
4547    VkCommandBuffer*                            pCommandBuffers);
4548
4549VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers(
4550    VkDevice                                    device,
4551    VkCommandPool                               commandPool,
4552    uint32_t                                    commandBufferCount,
4553    const VkCommandBuffer*                      pCommandBuffers);
4554
4555VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(
4556    VkCommandBuffer                             commandBuffer,
4557    const VkCommandBufferBeginInfo*             pBeginInfo);
4558
4559VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer(
4560    VkCommandBuffer                             commandBuffer);
4561
4562VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer(
4563    VkCommandBuffer                             commandBuffer,
4564    VkCommandBufferResetFlags                   flags);
4565
4566VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(
4567    VkCommandBuffer                             commandBuffer,
4568    VkPipelineBindPoint                         pipelineBindPoint,
4569    VkPipeline                                  pipeline);
4570
4571VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(
4572    VkCommandBuffer                             commandBuffer,
4573    uint32_t                                    firstViewport,
4574    uint32_t                                    viewportCount,
4575    const VkViewport*                           pViewports);
4576
4577VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor(
4578    VkCommandBuffer                             commandBuffer,
4579    uint32_t                                    firstScissor,
4580    uint32_t                                    scissorCount,
4581    const VkRect2D*                             pScissors);
4582
4583VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth(
4584    VkCommandBuffer                             commandBuffer,
4585    float                                       lineWidth);
4586
4587VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias(
4588    VkCommandBuffer                             commandBuffer,
4589    float                                       depthBiasConstantFactor,
4590    float                                       depthBiasClamp,
4591    float                                       depthBiasSlopeFactor);
4592
4593VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants(
4594    VkCommandBuffer                             commandBuffer,
4595    const float                                 blendConstants[4]);
4596
4597VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds(
4598    VkCommandBuffer                             commandBuffer,
4599    float                                       minDepthBounds,
4600    float                                       maxDepthBounds);
4601
4602VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask(
4603    VkCommandBuffer                             commandBuffer,
4604    VkStencilFaceFlags                          faceMask,
4605    uint32_t                                    compareMask);
4606
4607VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask(
4608    VkCommandBuffer                             commandBuffer,
4609    VkStencilFaceFlags                          faceMask,
4610    uint32_t                                    writeMask);
4611
4612VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference(
4613    VkCommandBuffer                             commandBuffer,
4614    VkStencilFaceFlags                          faceMask,
4615    uint32_t                                    reference);
4616
4617VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(
4618    VkCommandBuffer                             commandBuffer,
4619    VkPipelineBindPoint                         pipelineBindPoint,
4620    VkPipelineLayout                            layout,
4621    uint32_t                                    firstSet,
4622    uint32_t                                    descriptorSetCount,
4623    const VkDescriptorSet*                      pDescriptorSets,
4624    uint32_t                                    dynamicOffsetCount,
4625    const uint32_t*                             pDynamicOffsets);
4626
4627VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(
4628    VkCommandBuffer                             commandBuffer,
4629    VkBuffer                                    buffer,
4630    VkDeviceSize                                offset,
4631    VkIndexType                                 indexType);
4632
4633VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(
4634    VkCommandBuffer                             commandBuffer,
4635    uint32_t                                    firstBinding,
4636    uint32_t                                    bindingCount,
4637    const VkBuffer*                             pBuffers,
4638    const VkDeviceSize*                         pOffsets);
4639
4640VKAPI_ATTR void VKAPI_CALL vkCmdDraw(
4641    VkCommandBuffer                             commandBuffer,
4642    uint32_t                                    vertexCount,
4643    uint32_t                                    instanceCount,
4644    uint32_t                                    firstVertex,
4645    uint32_t                                    firstInstance);
4646
4647VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed(
4648    VkCommandBuffer                             commandBuffer,
4649    uint32_t                                    indexCount,
4650    uint32_t                                    instanceCount,
4651    uint32_t                                    firstIndex,
4652    int32_t                                     vertexOffset,
4653    uint32_t                                    firstInstance);
4654
4655VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(
4656    VkCommandBuffer                             commandBuffer,
4657    VkBuffer                                    buffer,
4658    VkDeviceSize                                offset,
4659    uint32_t                                    drawCount,
4660    uint32_t                                    stride);
4661
4662VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(
4663    VkCommandBuffer                             commandBuffer,
4664    VkBuffer                                    buffer,
4665    VkDeviceSize                                offset,
4666    uint32_t                                    drawCount,
4667    uint32_t                                    stride);
4668
4669VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(
4670    VkCommandBuffer                             commandBuffer,
4671    uint32_t                                    groupCountX,
4672    uint32_t                                    groupCountY,
4673    uint32_t                                    groupCountZ);
4674
4675VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(
4676    VkCommandBuffer                             commandBuffer,
4677    VkBuffer                                    buffer,
4678    VkDeviceSize                                offset);
4679
4680VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(
4681    VkCommandBuffer                             commandBuffer,
4682    VkBuffer                                    srcBuffer,
4683    VkBuffer                                    dstBuffer,
4684    uint32_t                                    regionCount,
4685    const VkBufferCopy*                         pRegions);
4686
4687VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(
4688    VkCommandBuffer                             commandBuffer,
4689    VkImage                                     srcImage,
4690    VkImageLayout                               srcImageLayout,
4691    VkImage                                     dstImage,
4692    VkImageLayout                               dstImageLayout,
4693    uint32_t                                    regionCount,
4694    const VkImageCopy*                          pRegions);
4695
4696VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(
4697    VkCommandBuffer                             commandBuffer,
4698    VkImage                                     srcImage,
4699    VkImageLayout                               srcImageLayout,
4700    VkImage                                     dstImage,
4701    VkImageLayout                               dstImageLayout,
4702    uint32_t                                    regionCount,
4703    const VkImageBlit*                          pRegions,
4704    VkFilter                                    filter);
4705
4706VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(
4707    VkCommandBuffer                             commandBuffer,
4708    VkBuffer                                    srcBuffer,
4709    VkImage                                     dstImage,
4710    VkImageLayout                               dstImageLayout,
4711    uint32_t                                    regionCount,
4712    const VkBufferImageCopy*                    pRegions);
4713
4714VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(
4715    VkCommandBuffer                             commandBuffer,
4716    VkImage                                     srcImage,
4717    VkImageLayout                               srcImageLayout,
4718    VkBuffer                                    dstBuffer,
4719    uint32_t                                    regionCount,
4720    const VkBufferImageCopy*                    pRegions);
4721
4722VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(
4723    VkCommandBuffer                             commandBuffer,
4724    VkBuffer                                    dstBuffer,
4725    VkDeviceSize                                dstOffset,
4726    VkDeviceSize                                dataSize,
4727    const void*                                 pData);
4728
4729VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(
4730    VkCommandBuffer                             commandBuffer,
4731    VkBuffer                                    dstBuffer,
4732    VkDeviceSize                                dstOffset,
4733    VkDeviceSize                                size,
4734    uint32_t                                    data);
4735
4736VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(
4737    VkCommandBuffer                             commandBuffer,
4738    VkImage                                     image,
4739    VkImageLayout                               imageLayout,
4740    const VkClearColorValue*                    pColor,
4741    uint32_t                                    rangeCount,
4742    const VkImageSubresourceRange*              pRanges);
4743
4744VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(
4745    VkCommandBuffer                             commandBuffer,
4746    VkImage                                     image,
4747    VkImageLayout                               imageLayout,
4748    const VkClearDepthStencilValue*             pDepthStencil,
4749    uint32_t                                    rangeCount,
4750    const VkImageSubresourceRange*              pRanges);
4751
4752VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments(
4753    VkCommandBuffer                             commandBuffer,
4754    uint32_t                                    attachmentCount,
4755    const VkClearAttachment*                    pAttachments,
4756    uint32_t                                    rectCount,
4757    const VkClearRect*                          pRects);
4758
4759VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(
4760    VkCommandBuffer                             commandBuffer,
4761    VkImage                                     srcImage,
4762    VkImageLayout                               srcImageLayout,
4763    VkImage                                     dstImage,
4764    VkImageLayout                               dstImageLayout,
4765    uint32_t                                    regionCount,
4766    const VkImageResolve*                       pRegions);
4767
4768VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(
4769    VkCommandBuffer                             commandBuffer,
4770    VkEvent                                     event,
4771    VkPipelineStageFlags                        stageMask);
4772
4773VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(
4774    VkCommandBuffer                             commandBuffer,
4775    VkEvent                                     event,
4776    VkPipelineStageFlags                        stageMask);
4777
4778VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents(
4779    VkCommandBuffer                             commandBuffer,
4780    uint32_t                                    eventCount,
4781    const VkEvent*                              pEvents,
4782    VkPipelineStageFlags                        srcStageMask,
4783    VkPipelineStageFlags                        dstStageMask,
4784    uint32_t                                    memoryBarrierCount,
4785    const VkMemoryBarrier*                      pMemoryBarriers,
4786    uint32_t                                    bufferMemoryBarrierCount,
4787    const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
4788    uint32_t                                    imageMemoryBarrierCount,
4789    const VkImageMemoryBarrier*                 pImageMemoryBarriers);
4790
4791VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier(
4792    VkCommandBuffer                             commandBuffer,
4793    VkPipelineStageFlags                        srcStageMask,
4794    VkPipelineStageFlags                        dstStageMask,
4795    VkDependencyFlags                           dependencyFlags,
4796    uint32_t                                    memoryBarrierCount,
4797    const VkMemoryBarrier*                      pMemoryBarriers,
4798    uint32_t                                    bufferMemoryBarrierCount,
4799    const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
4800    uint32_t                                    imageMemoryBarrierCount,
4801    const VkImageMemoryBarrier*                 pImageMemoryBarriers);
4802
4803VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(
4804    VkCommandBuffer                             commandBuffer,
4805    VkQueryPool                                 queryPool,
4806    uint32_t                                    query,
4807    VkQueryControlFlags                         flags);
4808
4809VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(
4810    VkCommandBuffer                             commandBuffer,
4811    VkQueryPool                                 queryPool,
4812    uint32_t                                    query);
4813
4814VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(
4815    VkCommandBuffer                             commandBuffer,
4816    VkQueryPool                                 queryPool,
4817    uint32_t                                    firstQuery,
4818    uint32_t                                    queryCount);
4819
4820VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(
4821    VkCommandBuffer                             commandBuffer,
4822    VkPipelineStageFlagBits                     pipelineStage,
4823    VkQueryPool                                 queryPool,
4824    uint32_t                                    query);
4825
4826VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(
4827    VkCommandBuffer                             commandBuffer,
4828    VkQueryPool                                 queryPool,
4829    uint32_t                                    firstQuery,
4830    uint32_t                                    queryCount,
4831    VkBuffer                                    dstBuffer,
4832    VkDeviceSize                                dstOffset,
4833    VkDeviceSize                                stride,
4834    VkQueryResultFlags                          flags);
4835
4836VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(
4837    VkCommandBuffer                             commandBuffer,
4838    VkPipelineLayout                            layout,
4839    VkShaderStageFlags                          stageFlags,
4840    uint32_t                                    offset,
4841    uint32_t                                    size,
4842    const void*                                 pValues);
4843
4844VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(
4845    VkCommandBuffer                             commandBuffer,
4846    const VkRenderPassBeginInfo*                pRenderPassBegin,
4847    VkSubpassContents                           contents);
4848
4849VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass(
4850    VkCommandBuffer                             commandBuffer,
4851    VkSubpassContents                           contents);
4852
4853VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass(
4854    VkCommandBuffer                             commandBuffer);
4855
4856VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(
4857    VkCommandBuffer                             commandBuffer,
4858    uint32_t                                    commandBufferCount,
4859    const VkCommandBuffer*                      pCommandBuffers);
4860#endif
4861
4862
4863// VK_VERSION_1_1 is a preprocessor guard. Do not pass it to API calls.
4864#define VK_VERSION_1_1 1
4865// Vulkan 1.1 version number
4866#define VK_API_VERSION_1_1 VK_MAKE_API_VERSION(0, 1, 1, 0)// Patch version should always be set to 0
4867
4868VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion)
4869VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplate)
4870#define VK_MAX_DEVICE_GROUP_SIZE          32U
4871#define VK_LUID_SIZE                      8U
4872#define VK_QUEUE_FAMILY_EXTERNAL          (~1U)
4873
4874typedef enum VkPointClippingBehavior {
4875    VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0,
4876    VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1,
4877    VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES,
4878    VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY,
4879    VK_POINT_CLIPPING_BEHAVIOR_MAX_ENUM = 0x7FFFFFFF
4880} VkPointClippingBehavior;
4881
4882typedef enum VkTessellationDomainOrigin {
4883    VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0,
4884    VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1,
4885    VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT,
4886    VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT,
4887    VK_TESSELLATION_DOMAIN_ORIGIN_MAX_ENUM = 0x7FFFFFFF
4888} VkTessellationDomainOrigin;
4889
4890typedef enum VkSamplerYcbcrModelConversion {
4891    VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0,
4892    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1,
4893    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2,
4894    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3,
4895    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4,
4896    VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY,
4897    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY,
4898    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709,
4899    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601,
4900    VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020,
4901    VK_SAMPLER_YCBCR_MODEL_CONVERSION_MAX_ENUM = 0x7FFFFFFF
4902} VkSamplerYcbcrModelConversion;
4903
4904typedef enum VkSamplerYcbcrRange {
4905    VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0,
4906    VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1,
4907    VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_FULL,
4908    VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW,
4909    VK_SAMPLER_YCBCR_RANGE_MAX_ENUM = 0x7FFFFFFF
4910} VkSamplerYcbcrRange;
4911
4912typedef enum VkChromaLocation {
4913    VK_CHROMA_LOCATION_COSITED_EVEN = 0,
4914    VK_CHROMA_LOCATION_MIDPOINT = 1,
4915    VK_CHROMA_LOCATION_COSITED_EVEN_KHR = VK_CHROMA_LOCATION_COSITED_EVEN,
4916    VK_CHROMA_LOCATION_MIDPOINT_KHR = VK_CHROMA_LOCATION_MIDPOINT,
4917    VK_CHROMA_LOCATION_MAX_ENUM = 0x7FFFFFFF
4918} VkChromaLocation;
4919
4920typedef enum VkDescriptorUpdateTemplateType {
4921    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0,
4922    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1,
4923    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET,
4924    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 0x7FFFFFFF
4925} VkDescriptorUpdateTemplateType;
4926
4927typedef enum VkSubgroupFeatureFlagBits {
4928    VK_SUBGROUP_FEATURE_BASIC_BIT = 0x00000001,
4929    VK_SUBGROUP_FEATURE_VOTE_BIT = 0x00000002,
4930    VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 0x00000004,
4931    VK_SUBGROUP_FEATURE_BALLOT_BIT = 0x00000008,
4932    VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 0x00000010,
4933    VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 0x00000020,
4934    VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 0x00000040,
4935    VK_SUBGROUP_FEATURE_QUAD_BIT = 0x00000080,
4936    VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV = 0x00000100,
4937    VK_SUBGROUP_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
4938} VkSubgroupFeatureFlagBits;
4939typedef VkFlags VkSubgroupFeatureFlags;
4940
4941typedef enum VkPeerMemoryFeatureFlagBits {
4942    VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 0x00000001,
4943    VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 0x00000002,
4944    VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 0x00000004,
4945    VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 0x00000008,
4946    VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT,
4947    VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT,
4948    VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT,
4949    VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT,
4950    VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
4951} VkPeerMemoryFeatureFlagBits;
4952typedef VkFlags VkPeerMemoryFeatureFlags;
4953
4954typedef enum VkMemoryAllocateFlagBits {
4955    VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001,
4956    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT = 0x00000002,
4957    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT = 0x00000004,
4958    VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT,
4959    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT,
4960    VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT,
4961    VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
4962} VkMemoryAllocateFlagBits;
4963typedef VkFlags VkMemoryAllocateFlags;
4964typedef VkFlags VkCommandPoolTrimFlags;
4965typedef VkFlags VkDescriptorUpdateTemplateCreateFlags;
4966
4967typedef enum VkExternalMemoryHandleTypeFlagBits {
4968    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
4969    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
4970    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
4971    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 0x00000008,
4972    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 0x00000010,
4973    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 0x00000020,
4974    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 0x00000040,
4975    VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0x00000200,
4976    VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 0x00000400,
4977    VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080,
4978    VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100,
4979    VK_EXTERNAL_MEMORY_HANDLE_TYPE_ZIRCON_VMO_BIT_FUCHSIA = 0x00000800,
4980    VK_EXTERNAL_MEMORY_HANDLE_TYPE_RDMA_ADDRESS_BIT_NV = 0x00001000,
4981    VK_EXTERNAL_MEMORY_HANDLE_TYPE_SCREEN_BUFFER_BIT_QNX = 0x00004000,
4982    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OHOS_NATIVE_BUFFER_BIT_OHOS = 0x00002000,
4983    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT,
4984    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT,
4985    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
4986    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT,
4987    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT,
4988    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT,
4989    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT,
4990    VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
4991} VkExternalMemoryHandleTypeFlagBits;
4992typedef VkFlags VkExternalMemoryHandleTypeFlags;
4993
4994typedef enum VkExternalMemoryFeatureFlagBits {
4995    VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 0x00000001,
4996    VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 0x00000002,
4997    VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 0x00000004,
4998    VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT,
4999    VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT,
5000    VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT,
5001    VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
5002} VkExternalMemoryFeatureFlagBits;
5003typedef VkFlags VkExternalMemoryFeatureFlags;
5004
5005typedef enum VkExternalFenceHandleTypeFlagBits {
5006    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
5007    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
5008    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
5009    VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000008,
5010    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT,
5011    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
5012    VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
5013    VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT,
5014    VK_EXTERNAL_FENCE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
5015} VkExternalFenceHandleTypeFlagBits;
5016typedef VkFlags VkExternalFenceHandleTypeFlags;
5017
5018typedef enum VkExternalFenceFeatureFlagBits {
5019    VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 0x00000001,
5020    VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 0x00000002,
5021    VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT,
5022    VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT,
5023    VK_EXTERNAL_FENCE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
5024} VkExternalFenceFeatureFlagBits;
5025typedef VkFlags VkExternalFenceFeatureFlags;
5026
5027typedef enum VkFenceImportFlagBits {
5028    VK_FENCE_IMPORT_TEMPORARY_BIT = 0x00000001,
5029    VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = VK_FENCE_IMPORT_TEMPORARY_BIT,
5030    VK_FENCE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
5031} VkFenceImportFlagBits;
5032typedef VkFlags VkFenceImportFlags;
5033
5034typedef enum VkSemaphoreImportFlagBits {
5035    VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 0x00000001,
5036    VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT,
5037    VK_SEMAPHORE_IMPORT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
5038} VkSemaphoreImportFlagBits;
5039typedef VkFlags VkSemaphoreImportFlags;
5040
5041typedef enum VkExternalSemaphoreHandleTypeFlagBits {
5042    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
5043    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
5044    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
5045    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 0x00000008,
5046    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000010,
5047    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_ZIRCON_EVENT_BIT_FUCHSIA = 0x00000080,
5048    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
5049    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT,
5050    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT,
5051    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT,
5052    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT,
5053    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT_KHR = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT,
5054    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
5055} VkExternalSemaphoreHandleTypeFlagBits;
5056typedef VkFlags VkExternalSemaphoreHandleTypeFlags;
5057
5058typedef enum VkExternalSemaphoreFeatureFlagBits {
5059    VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 0x00000001,
5060    VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 0x00000002,
5061    VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT,
5062    VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT,
5063    VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
5064} VkExternalSemaphoreFeatureFlagBits;
5065typedef VkFlags VkExternalSemaphoreFeatureFlags;
5066typedef struct VkPhysicalDeviceSubgroupProperties {
5067    VkStructureType           sType;
5068    void*                     pNext;
5069    uint32_t                  subgroupSize;
5070    VkShaderStageFlags        supportedStages;
5071    VkSubgroupFeatureFlags    supportedOperations;
5072    VkBool32                  quadOperationsInAllStages;
5073} VkPhysicalDeviceSubgroupProperties;
5074
5075typedef struct VkBindBufferMemoryInfo {
5076    VkStructureType    sType;
5077    const void*        pNext;
5078    VkBuffer           buffer;
5079    VkDeviceMemory     memory;
5080    VkDeviceSize       memoryOffset;
5081} VkBindBufferMemoryInfo;
5082
5083typedef struct VkBindImageMemoryInfo {
5084    VkStructureType    sType;
5085    const void*        pNext;
5086    VkImage            image;
5087    VkDeviceMemory     memory;
5088    VkDeviceSize       memoryOffset;
5089} VkBindImageMemoryInfo;
5090
5091typedef struct VkPhysicalDevice16BitStorageFeatures {
5092    VkStructureType    sType;
5093    void*              pNext;
5094    VkBool32           storageBuffer16BitAccess;
5095    VkBool32           uniformAndStorageBuffer16BitAccess;
5096    VkBool32           storagePushConstant16;
5097    VkBool32           storageInputOutput16;
5098} VkPhysicalDevice16BitStorageFeatures;
5099
5100typedef struct VkMemoryDedicatedRequirements {
5101    VkStructureType    sType;
5102    void*              pNext;
5103    VkBool32           prefersDedicatedAllocation;
5104    VkBool32           requiresDedicatedAllocation;
5105} VkMemoryDedicatedRequirements;
5106
5107typedef struct VkMemoryDedicatedAllocateInfo {
5108    VkStructureType    sType;
5109    const void*        pNext;
5110    VkImage            image;
5111    VkBuffer           buffer;
5112} VkMemoryDedicatedAllocateInfo;
5113
5114typedef struct VkMemoryAllocateFlagsInfo {
5115    VkStructureType          sType;
5116    const void*              pNext;
5117    VkMemoryAllocateFlags    flags;
5118    uint32_t                 deviceMask;
5119} VkMemoryAllocateFlagsInfo;
5120
5121typedef struct VkDeviceGroupRenderPassBeginInfo {
5122    VkStructureType    sType;
5123    const void*        pNext;
5124    uint32_t           deviceMask;
5125    uint32_t           deviceRenderAreaCount;
5126    const VkRect2D*    pDeviceRenderAreas;
5127} VkDeviceGroupRenderPassBeginInfo;
5128
5129typedef struct VkDeviceGroupCommandBufferBeginInfo {
5130    VkStructureType    sType;
5131    const void*        pNext;
5132    uint32_t           deviceMask;
5133} VkDeviceGroupCommandBufferBeginInfo;
5134
5135typedef struct VkDeviceGroupSubmitInfo {
5136    VkStructureType    sType;
5137    const void*        pNext;
5138    uint32_t           waitSemaphoreCount;
5139    const uint32_t*    pWaitSemaphoreDeviceIndices;
5140    uint32_t           commandBufferCount;
5141    const uint32_t*    pCommandBufferDeviceMasks;
5142    uint32_t           signalSemaphoreCount;
5143    const uint32_t*    pSignalSemaphoreDeviceIndices;
5144} VkDeviceGroupSubmitInfo;
5145
5146typedef struct VkDeviceGroupBindSparseInfo {
5147    VkStructureType    sType;
5148    const void*        pNext;
5149    uint32_t           resourceDeviceIndex;
5150    uint32_t           memoryDeviceIndex;
5151} VkDeviceGroupBindSparseInfo;
5152
5153typedef struct VkBindBufferMemoryDeviceGroupInfo {
5154    VkStructureType    sType;
5155    const void*        pNext;
5156    uint32_t           deviceIndexCount;
5157    const uint32_t*    pDeviceIndices;
5158} VkBindBufferMemoryDeviceGroupInfo;
5159
5160typedef struct VkBindImageMemoryDeviceGroupInfo {
5161    VkStructureType    sType;
5162    const void*        pNext;
5163    uint32_t           deviceIndexCount;
5164    const uint32_t*    pDeviceIndices;
5165    uint32_t           splitInstanceBindRegionCount;
5166    const VkRect2D*    pSplitInstanceBindRegions;
5167} VkBindImageMemoryDeviceGroupInfo;
5168
5169typedef struct VkPhysicalDeviceGroupProperties {
5170    VkStructureType     sType;
5171    void*               pNext;
5172    uint32_t            physicalDeviceCount;
5173    VkPhysicalDevice    physicalDevices[VK_MAX_DEVICE_GROUP_SIZE];
5174    VkBool32            subsetAllocation;
5175} VkPhysicalDeviceGroupProperties;
5176
5177typedef struct VkDeviceGroupDeviceCreateInfo {
5178    VkStructureType            sType;
5179    const void*                pNext;
5180    uint32_t                   physicalDeviceCount;
5181    const VkPhysicalDevice*    pPhysicalDevices;
5182} VkDeviceGroupDeviceCreateInfo;
5183
5184typedef struct VkBufferMemoryRequirementsInfo2 {
5185    VkStructureType    sType;
5186    const void*        pNext;
5187    VkBuffer           buffer;
5188} VkBufferMemoryRequirementsInfo2;
5189
5190typedef struct VkImageMemoryRequirementsInfo2 {
5191    VkStructureType    sType;
5192    const void*        pNext;
5193    VkImage            image;
5194} VkImageMemoryRequirementsInfo2;
5195
5196typedef struct VkImageSparseMemoryRequirementsInfo2 {
5197    VkStructureType    sType;
5198    const void*        pNext;
5199    VkImage            image;
5200} VkImageSparseMemoryRequirementsInfo2;
5201
5202typedef struct VkMemoryRequirements2 {
5203    VkStructureType         sType;
5204    void*                   pNext;
5205    VkMemoryRequirements    memoryRequirements;
5206} VkMemoryRequirements2;
5207
5208typedef struct VkSparseImageMemoryRequirements2 {
5209    VkStructureType                    sType;
5210    void*                              pNext;
5211    VkSparseImageMemoryRequirements    memoryRequirements;
5212} VkSparseImageMemoryRequirements2;
5213
5214typedef struct VkPhysicalDeviceFeatures2 {
5215    VkStructureType             sType;
5216    void*                       pNext;
5217    VkPhysicalDeviceFeatures    features;
5218} VkPhysicalDeviceFeatures2;
5219
5220typedef struct VkPhysicalDeviceProperties2 {
5221    VkStructureType               sType;
5222    void*                         pNext;
5223    VkPhysicalDeviceProperties    properties;
5224} VkPhysicalDeviceProperties2;
5225
5226typedef struct VkFormatProperties2 {
5227    VkStructureType       sType;
5228    void*                 pNext;
5229    VkFormatProperties    formatProperties;
5230} VkFormatProperties2;
5231
5232typedef struct VkImageFormatProperties2 {
5233    VkStructureType            sType;
5234    void*                      pNext;
5235    VkImageFormatProperties    imageFormatProperties;
5236} VkImageFormatProperties2;
5237
5238typedef struct VkPhysicalDeviceImageFormatInfo2 {
5239    VkStructureType       sType;
5240    const void*           pNext;
5241    VkFormat              format;
5242    VkImageType           type;
5243    VkImageTiling         tiling;
5244    VkImageUsageFlags     usage;
5245    VkImageCreateFlags    flags;
5246} VkPhysicalDeviceImageFormatInfo2;
5247
5248typedef struct VkQueueFamilyProperties2 {
5249    VkStructureType            sType;
5250    void*                      pNext;
5251    VkQueueFamilyProperties    queueFamilyProperties;
5252} VkQueueFamilyProperties2;
5253
5254typedef struct VkPhysicalDeviceMemoryProperties2 {
5255    VkStructureType                     sType;
5256    void*                               pNext;
5257    VkPhysicalDeviceMemoryProperties    memoryProperties;
5258} VkPhysicalDeviceMemoryProperties2;
5259
5260typedef struct VkSparseImageFormatProperties2 {
5261    VkStructureType                  sType;
5262    void*                            pNext;
5263    VkSparseImageFormatProperties    properties;
5264} VkSparseImageFormatProperties2;
5265
5266typedef struct VkPhysicalDeviceSparseImageFormatInfo2 {
5267    VkStructureType          sType;
5268    const void*              pNext;
5269    VkFormat                 format;
5270    VkImageType              type;
5271    VkSampleCountFlagBits    samples;
5272    VkImageUsageFlags        usage;
5273    VkImageTiling            tiling;
5274} VkPhysicalDeviceSparseImageFormatInfo2;
5275
5276typedef struct VkPhysicalDevicePointClippingProperties {
5277    VkStructureType            sType;
5278    void*                      pNext;
5279    VkPointClippingBehavior    pointClippingBehavior;
5280} VkPhysicalDevicePointClippingProperties;
5281
5282typedef struct VkInputAttachmentAspectReference {
5283    uint32_t              subpass;
5284    uint32_t              inputAttachmentIndex;
5285    VkImageAspectFlags    aspectMask;
5286} VkInputAttachmentAspectReference;
5287
5288typedef struct VkRenderPassInputAttachmentAspectCreateInfo {
5289    VkStructureType                            sType;
5290    const void*                                pNext;
5291    uint32_t                                   aspectReferenceCount;
5292    const VkInputAttachmentAspectReference*    pAspectReferences;
5293} VkRenderPassInputAttachmentAspectCreateInfo;
5294
5295typedef struct VkImageViewUsageCreateInfo {
5296    VkStructureType      sType;
5297    const void*          pNext;
5298    VkImageUsageFlags    usage;
5299} VkImageViewUsageCreateInfo;
5300
5301typedef struct VkPipelineTessellationDomainOriginStateCreateInfo {
5302    VkStructureType               sType;
5303    const void*                   pNext;
5304    VkTessellationDomainOrigin    domainOrigin;
5305} VkPipelineTessellationDomainOriginStateCreateInfo;
5306
5307typedef struct VkRenderPassMultiviewCreateInfo {
5308    VkStructureType    sType;
5309    const void*        pNext;
5310    uint32_t           subpassCount;
5311    const uint32_t*    pViewMasks;
5312    uint32_t           dependencyCount;
5313    const int32_t*     pViewOffsets;
5314    uint32_t           correlationMaskCount;
5315    const uint32_t*    pCorrelationMasks;
5316} VkRenderPassMultiviewCreateInfo;
5317
5318typedef struct VkPhysicalDeviceMultiviewFeatures {
5319    VkStructureType    sType;
5320    void*              pNext;
5321    VkBool32           multiview;
5322    VkBool32           multiviewGeometryShader;
5323    VkBool32           multiviewTessellationShader;
5324} VkPhysicalDeviceMultiviewFeatures;
5325
5326typedef struct VkPhysicalDeviceMultiviewProperties {
5327    VkStructureType    sType;
5328    void*              pNext;
5329    uint32_t           maxMultiviewViewCount;
5330    uint32_t           maxMultiviewInstanceIndex;
5331} VkPhysicalDeviceMultiviewProperties;
5332
5333typedef struct VkPhysicalDeviceVariablePointersFeatures {
5334    VkStructureType    sType;
5335    void*              pNext;
5336    VkBool32           variablePointersStorageBuffer;
5337    VkBool32           variablePointers;
5338} VkPhysicalDeviceVariablePointersFeatures;
5339
5340typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeatures;
5341
5342typedef struct VkPhysicalDeviceProtectedMemoryFeatures {
5343    VkStructureType    sType;
5344    void*              pNext;
5345    VkBool32           protectedMemory;
5346} VkPhysicalDeviceProtectedMemoryFeatures;
5347
5348typedef struct VkPhysicalDeviceProtectedMemoryProperties {
5349    VkStructureType    sType;
5350    void*              pNext;
5351    VkBool32           protectedNoFault;
5352} VkPhysicalDeviceProtectedMemoryProperties;
5353
5354typedef struct VkDeviceQueueInfo2 {
5355    VkStructureType             sType;
5356    const void*                 pNext;
5357    VkDeviceQueueCreateFlags    flags;
5358    uint32_t                    queueFamilyIndex;
5359    uint32_t                    queueIndex;
5360} VkDeviceQueueInfo2;
5361
5362typedef struct VkProtectedSubmitInfo {
5363    VkStructureType    sType;
5364    const void*        pNext;
5365    VkBool32           protectedSubmit;
5366} VkProtectedSubmitInfo;
5367
5368typedef struct VkSamplerYcbcrConversionCreateInfo {
5369    VkStructureType                  sType;
5370    const void*                      pNext;
5371    VkFormat                         format;
5372    VkSamplerYcbcrModelConversion    ycbcrModel;
5373    VkSamplerYcbcrRange              ycbcrRange;
5374    VkComponentMapping               components;
5375    VkChromaLocation                 xChromaOffset;
5376    VkChromaLocation                 yChromaOffset;
5377    VkFilter                         chromaFilter;
5378    VkBool32                         forceExplicitReconstruction;
5379} VkSamplerYcbcrConversionCreateInfo;
5380
5381typedef struct VkSamplerYcbcrConversionInfo {
5382    VkStructureType             sType;
5383    const void*                 pNext;
5384    VkSamplerYcbcrConversion    conversion;
5385} VkSamplerYcbcrConversionInfo;
5386
5387typedef struct VkBindImagePlaneMemoryInfo {
5388    VkStructureType          sType;
5389    const void*              pNext;
5390    VkImageAspectFlagBits    planeAspect;
5391} VkBindImagePlaneMemoryInfo;
5392
5393typedef struct VkImagePlaneMemoryRequirementsInfo {
5394    VkStructureType          sType;
5395    const void*              pNext;
5396    VkImageAspectFlagBits    planeAspect;
5397} VkImagePlaneMemoryRequirementsInfo;
5398
5399typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures {
5400    VkStructureType    sType;
5401    void*              pNext;
5402    VkBool32           samplerYcbcrConversion;
5403} VkPhysicalDeviceSamplerYcbcrConversionFeatures;
5404
5405typedef struct VkSamplerYcbcrConversionImageFormatProperties {
5406    VkStructureType    sType;
5407    void*              pNext;
5408    uint32_t           combinedImageSamplerDescriptorCount;
5409} VkSamplerYcbcrConversionImageFormatProperties;
5410
5411typedef struct VkDescriptorUpdateTemplateEntry {
5412    uint32_t            dstBinding;
5413    uint32_t            dstArrayElement;
5414    uint32_t            descriptorCount;
5415    VkDescriptorType    descriptorType;
5416    size_t              offset;
5417    size_t              stride;
5418} VkDescriptorUpdateTemplateEntry;
5419
5420typedef struct VkDescriptorUpdateTemplateCreateInfo {
5421    VkStructureType                           sType;
5422    const void*                               pNext;
5423    VkDescriptorUpdateTemplateCreateFlags     flags;
5424    uint32_t                                  descriptorUpdateEntryCount;
5425    const VkDescriptorUpdateTemplateEntry*    pDescriptorUpdateEntries;
5426    VkDescriptorUpdateTemplateType            templateType;
5427    VkDescriptorSetLayout                     descriptorSetLayout;
5428    VkPipelineBindPoint                       pipelineBindPoint;
5429    VkPipelineLayout                          pipelineLayout;
5430    uint32_t                                  set;
5431} VkDescriptorUpdateTemplateCreateInfo;
5432
5433typedef struct VkExternalMemoryProperties {
5434    VkExternalMemoryFeatureFlags       externalMemoryFeatures;
5435    VkExternalMemoryHandleTypeFlags    exportFromImportedHandleTypes;
5436    VkExternalMemoryHandleTypeFlags    compatibleHandleTypes;
5437} VkExternalMemoryProperties;
5438
5439typedef struct VkPhysicalDeviceExternalImageFormatInfo {
5440    VkStructureType                       sType;
5441    const void*                           pNext;
5442    VkExternalMemoryHandleTypeFlagBits    handleType;
5443} VkPhysicalDeviceExternalImageFormatInfo;
5444
5445typedef struct VkExternalImageFormatProperties {
5446    VkStructureType               sType;
5447    void*                         pNext;
5448    VkExternalMemoryProperties    externalMemoryProperties;
5449} VkExternalImageFormatProperties;
5450
5451typedef struct VkPhysicalDeviceExternalBufferInfo {
5452    VkStructureType                       sType;
5453    const void*                           pNext;
5454    VkBufferCreateFlags                   flags;
5455    VkBufferUsageFlags                    usage;
5456    VkExternalMemoryHandleTypeFlagBits    handleType;
5457} VkPhysicalDeviceExternalBufferInfo;
5458
5459typedef struct VkExternalBufferProperties {
5460    VkStructureType               sType;
5461    void*                         pNext;
5462    VkExternalMemoryProperties    externalMemoryProperties;
5463} VkExternalBufferProperties;
5464
5465typedef struct VkPhysicalDeviceIDProperties {
5466    VkStructureType    sType;
5467    void*              pNext;
5468    uint8_t            deviceUUID[VK_UUID_SIZE];
5469    uint8_t            driverUUID[VK_UUID_SIZE];
5470    uint8_t            deviceLUID[VK_LUID_SIZE];
5471    uint32_t           deviceNodeMask;
5472    VkBool32           deviceLUIDValid;
5473} VkPhysicalDeviceIDProperties;
5474
5475typedef struct VkExternalMemoryImageCreateInfo {
5476    VkStructureType                    sType;
5477    const void*                        pNext;
5478    VkExternalMemoryHandleTypeFlags    handleTypes;
5479} VkExternalMemoryImageCreateInfo;
5480
5481typedef struct VkExternalMemoryBufferCreateInfo {
5482    VkStructureType                    sType;
5483    const void*                        pNext;
5484    VkExternalMemoryHandleTypeFlags    handleTypes;
5485} VkExternalMemoryBufferCreateInfo;
5486
5487typedef struct VkExportMemoryAllocateInfo {
5488    VkStructureType                    sType;
5489    const void*                        pNext;
5490    VkExternalMemoryHandleTypeFlags    handleTypes;
5491} VkExportMemoryAllocateInfo;
5492
5493typedef struct VkPhysicalDeviceExternalFenceInfo {
5494    VkStructureType                      sType;
5495    const void*                          pNext;
5496    VkExternalFenceHandleTypeFlagBits    handleType;
5497} VkPhysicalDeviceExternalFenceInfo;
5498
5499typedef struct VkExternalFenceProperties {
5500    VkStructureType                   sType;
5501    void*                             pNext;
5502    VkExternalFenceHandleTypeFlags    exportFromImportedHandleTypes;
5503    VkExternalFenceHandleTypeFlags    compatibleHandleTypes;
5504    VkExternalFenceFeatureFlags       externalFenceFeatures;
5505} VkExternalFenceProperties;
5506
5507typedef struct VkExportFenceCreateInfo {
5508    VkStructureType                   sType;
5509    const void*                       pNext;
5510    VkExternalFenceHandleTypeFlags    handleTypes;
5511} VkExportFenceCreateInfo;
5512
5513typedef struct VkExportSemaphoreCreateInfo {
5514    VkStructureType                       sType;
5515    const void*                           pNext;
5516    VkExternalSemaphoreHandleTypeFlags    handleTypes;
5517} VkExportSemaphoreCreateInfo;
5518
5519typedef struct VkPhysicalDeviceExternalSemaphoreInfo {
5520    VkStructureType                          sType;
5521    const void*                              pNext;
5522    VkExternalSemaphoreHandleTypeFlagBits    handleType;
5523} VkPhysicalDeviceExternalSemaphoreInfo;
5524
5525typedef struct VkExternalSemaphoreProperties {
5526    VkStructureType                       sType;
5527    void*                                 pNext;
5528    VkExternalSemaphoreHandleTypeFlags    exportFromImportedHandleTypes;
5529    VkExternalSemaphoreHandleTypeFlags    compatibleHandleTypes;
5530    VkExternalSemaphoreFeatureFlags       externalSemaphoreFeatures;
5531} VkExternalSemaphoreProperties;
5532
5533typedef struct VkPhysicalDeviceMaintenance3Properties {
5534    VkStructureType    sType;
5535    void*              pNext;
5536    uint32_t           maxPerSetDescriptors;
5537    VkDeviceSize       maxMemoryAllocationSize;
5538} VkPhysicalDeviceMaintenance3Properties;
5539
5540typedef struct VkDescriptorSetLayoutSupport {
5541    VkStructureType    sType;
5542    void*              pNext;
5543    VkBool32           supported;
5544} VkDescriptorSetLayoutSupport;
5545
5546typedef struct VkPhysicalDeviceShaderDrawParametersFeatures {
5547    VkStructureType    sType;
5548    void*              pNext;
5549    VkBool32           shaderDrawParameters;
5550} VkPhysicalDeviceShaderDrawParametersFeatures;
5551
5552typedef VkPhysicalDeviceShaderDrawParametersFeatures VkPhysicalDeviceShaderDrawParameterFeatures;
5553
5554typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceVersion)(uint32_t* pApiVersion);
5555typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
5556typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
5557typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeatures)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
5558typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMask)(VkCommandBuffer commandBuffer, uint32_t deviceMask);
5559typedef 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);
5560typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroups)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
5561typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
5562typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
5563typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
5564typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
5565typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
5566typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
5567typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
5568typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
5569typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
5570typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
5571typedef void (VKAPI_PTR *PFN_vkTrimCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);
5572typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue2)(VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue);
5573typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversion)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
5574typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversion)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
5575typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplate)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
5576typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplate)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
5577typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplate)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
5578typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
5579typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFenceProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
5580typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphoreProperties)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
5581typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupport)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
5582
5583#ifndef VK_NO_PROTOTYPES
5584VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceVersion(
5585    uint32_t*                                   pApiVersion);
5586
5587VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2(
5588    VkDevice                                    device,
5589    uint32_t                                    bindInfoCount,
5590    const VkBindBufferMemoryInfo*               pBindInfos);
5591
5592VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2(
5593    VkDevice                                    device,
5594    uint32_t                                    bindInfoCount,
5595    const VkBindImageMemoryInfo*                pBindInfos);
5596
5597VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeatures(
5598    VkDevice                                    device,
5599    uint32_t                                    heapIndex,
5600    uint32_t                                    localDeviceIndex,
5601    uint32_t                                    remoteDeviceIndex,
5602    VkPeerMemoryFeatureFlags*                   pPeerMemoryFeatures);
5603
5604VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMask(
5605    VkCommandBuffer                             commandBuffer,
5606    uint32_t                                    deviceMask);
5607
5608VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBase(
5609    VkCommandBuffer                             commandBuffer,
5610    uint32_t                                    baseGroupX,
5611    uint32_t                                    baseGroupY,
5612    uint32_t                                    baseGroupZ,
5613    uint32_t                                    groupCountX,
5614    uint32_t                                    groupCountY,
5615    uint32_t                                    groupCountZ);
5616
5617VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroups(
5618    VkInstance                                  instance,
5619    uint32_t*                                   pPhysicalDeviceGroupCount,
5620    VkPhysicalDeviceGroupProperties*            pPhysicalDeviceGroupProperties);
5621
5622VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2(
5623    VkDevice                                    device,
5624    const VkImageMemoryRequirementsInfo2*       pInfo,
5625    VkMemoryRequirements2*                      pMemoryRequirements);
5626
5627VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2(
5628    VkDevice                                    device,
5629    const VkBufferMemoryRequirementsInfo2*      pInfo,
5630    VkMemoryRequirements2*                      pMemoryRequirements);
5631
5632VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2(
5633    VkDevice                                    device,
5634    const VkImageSparseMemoryRequirementsInfo2* pInfo,
5635    uint32_t*                                   pSparseMemoryRequirementCount,
5636    VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements);
5637
5638VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2(
5639    VkPhysicalDevice                            physicalDevice,
5640    VkPhysicalDeviceFeatures2*                  pFeatures);
5641
5642VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2(
5643    VkPhysicalDevice                            physicalDevice,
5644    VkPhysicalDeviceProperties2*                pProperties);
5645
5646VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2(
5647    VkPhysicalDevice                            physicalDevice,
5648    VkFormat                                    format,
5649    VkFormatProperties2*                        pFormatProperties);
5650
5651VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2(
5652    VkPhysicalDevice                            physicalDevice,
5653    const VkPhysicalDeviceImageFormatInfo2*     pImageFormatInfo,
5654    VkImageFormatProperties2*                   pImageFormatProperties);
5655
5656VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2(
5657    VkPhysicalDevice                            physicalDevice,
5658    uint32_t*                                   pQueueFamilyPropertyCount,
5659    VkQueueFamilyProperties2*                   pQueueFamilyProperties);
5660
5661VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2(
5662    VkPhysicalDevice                            physicalDevice,
5663    VkPhysicalDeviceMemoryProperties2*          pMemoryProperties);
5664
5665VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2(
5666    VkPhysicalDevice                            physicalDevice,
5667    const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
5668    uint32_t*                                   pPropertyCount,
5669    VkSparseImageFormatProperties2*             pProperties);
5670
5671VKAPI_ATTR void VKAPI_CALL vkTrimCommandPool(
5672    VkDevice                                    device,
5673    VkCommandPool                               commandPool,
5674    VkCommandPoolTrimFlags                      flags);
5675
5676VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue2(
5677    VkDevice                                    device,
5678    const VkDeviceQueueInfo2*                   pQueueInfo,
5679    VkQueue*                                    pQueue);
5680
5681VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversion(
5682    VkDevice                                    device,
5683    const VkSamplerYcbcrConversionCreateInfo*   pCreateInfo,
5684    const VkAllocationCallbacks*                pAllocator,
5685    VkSamplerYcbcrConversion*                   pYcbcrConversion);
5686
5687VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversion(
5688    VkDevice                                    device,
5689    VkSamplerYcbcrConversion                    ycbcrConversion,
5690    const VkAllocationCallbacks*                pAllocator);
5691
5692VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplate(
5693    VkDevice                                    device,
5694    const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
5695    const VkAllocationCallbacks*                pAllocator,
5696    VkDescriptorUpdateTemplate*                 pDescriptorUpdateTemplate);
5697
5698VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplate(
5699    VkDevice                                    device,
5700    VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
5701    const VkAllocationCallbacks*                pAllocator);
5702
5703VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplate(
5704    VkDevice                                    device,
5705    VkDescriptorSet                             descriptorSet,
5706    VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
5707    const void*                                 pData);
5708
5709VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferProperties(
5710    VkPhysicalDevice                            physicalDevice,
5711    const VkPhysicalDeviceExternalBufferInfo*   pExternalBufferInfo,
5712    VkExternalBufferProperties*                 pExternalBufferProperties);
5713
5714VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFenceProperties(
5715    VkPhysicalDevice                            physicalDevice,
5716    const VkPhysicalDeviceExternalFenceInfo*    pExternalFenceInfo,
5717    VkExternalFenceProperties*                  pExternalFenceProperties);
5718
5719VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphoreProperties(
5720    VkPhysicalDevice                            physicalDevice,
5721    const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
5722    VkExternalSemaphoreProperties*              pExternalSemaphoreProperties);
5723
5724VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupport(
5725    VkDevice                                    device,
5726    const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
5727    VkDescriptorSetLayoutSupport*               pSupport);
5728#endif
5729
5730
5731// VK_VERSION_1_2 is a preprocessor guard. Do not pass it to API calls.
5732#define VK_VERSION_1_2 1
5733// Vulkan 1.2 version number
5734#define VK_API_VERSION_1_2 VK_MAKE_API_VERSION(0, 1, 2, 0)// Patch version should always be set to 0
5735
5736#define VK_MAX_DRIVER_NAME_SIZE           256U
5737#define VK_MAX_DRIVER_INFO_SIZE           256U
5738
5739typedef enum VkDriverId {
5740    VK_DRIVER_ID_AMD_PROPRIETARY = 1,
5741    VK_DRIVER_ID_AMD_OPEN_SOURCE = 2,
5742    VK_DRIVER_ID_MESA_RADV = 3,
5743    VK_DRIVER_ID_NVIDIA_PROPRIETARY = 4,
5744    VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS = 5,
5745    VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA = 6,
5746    VK_DRIVER_ID_IMAGINATION_PROPRIETARY = 7,
5747    VK_DRIVER_ID_QUALCOMM_PROPRIETARY = 8,
5748    VK_DRIVER_ID_ARM_PROPRIETARY = 9,
5749    VK_DRIVER_ID_GOOGLE_SWIFTSHADER = 10,
5750    VK_DRIVER_ID_GGP_PROPRIETARY = 11,
5751    VK_DRIVER_ID_BROADCOM_PROPRIETARY = 12,
5752    VK_DRIVER_ID_MESA_LLVMPIPE = 13,
5753    VK_DRIVER_ID_MOLTENVK = 14,
5754    VK_DRIVER_ID_COREAVI_PROPRIETARY = 15,
5755    VK_DRIVER_ID_JUICE_PROPRIETARY = 16,
5756    VK_DRIVER_ID_VERISILICON_PROPRIETARY = 17,
5757    VK_DRIVER_ID_MESA_TURNIP = 18,
5758    VK_DRIVER_ID_MESA_V3DV = 19,
5759    VK_DRIVER_ID_MESA_PANVK = 20,
5760    VK_DRIVER_ID_SAMSUNG_PROPRIETARY = 21,
5761    VK_DRIVER_ID_MESA_VENUS = 22,
5762    VK_DRIVER_ID_MESA_DOZEN = 23,
5763    VK_DRIVER_ID_MESA_NVK = 24,
5764    VK_DRIVER_ID_IMAGINATION_OPEN_SOURCE_MESA = 25,
5765    VK_DRIVER_ID_MESA_AGXV = 26,
5766    VK_DRIVER_ID_AMD_PROPRIETARY_KHR = VK_DRIVER_ID_AMD_PROPRIETARY,
5767    VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR = VK_DRIVER_ID_AMD_OPEN_SOURCE,
5768    VK_DRIVER_ID_MESA_RADV_KHR = VK_DRIVER_ID_MESA_RADV,
5769    VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR = VK_DRIVER_ID_NVIDIA_PROPRIETARY,
5770    VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS,
5771    VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA,
5772    VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR = VK_DRIVER_ID_IMAGINATION_PROPRIETARY,
5773    VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR = VK_DRIVER_ID_QUALCOMM_PROPRIETARY,
5774    VK_DRIVER_ID_ARM_PROPRIETARY_KHR = VK_DRIVER_ID_ARM_PROPRIETARY,
5775    VK_DRIVER_ID_GOOGLE_SWIFTSHADER_KHR = VK_DRIVER_ID_GOOGLE_SWIFTSHADER,
5776    VK_DRIVER_ID_GGP_PROPRIETARY_KHR = VK_DRIVER_ID_GGP_PROPRIETARY,
5777    VK_DRIVER_ID_BROADCOM_PROPRIETARY_KHR = VK_DRIVER_ID_BROADCOM_PROPRIETARY,
5778    VK_DRIVER_ID_MAX_ENUM = 0x7FFFFFFF
5779} VkDriverId;
5780
5781typedef enum VkShaderFloatControlsIndependence {
5782    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY = 0,
5783    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL = 1,
5784    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE = 2,
5785    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY,
5786    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL,
5787    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE_KHR = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE,
5788    VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_MAX_ENUM = 0x7FFFFFFF
5789} VkShaderFloatControlsIndependence;
5790
5791typedef enum VkSamplerReductionMode {
5792    VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0,
5793    VK_SAMPLER_REDUCTION_MODE_MIN = 1,
5794    VK_SAMPLER_REDUCTION_MODE_MAX = 2,
5795    VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_RANGECLAMP_QCOM = 1000521000,
5796    VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE,
5797    VK_SAMPLER_REDUCTION_MODE_MIN_EXT = VK_SAMPLER_REDUCTION_MODE_MIN,
5798    VK_SAMPLER_REDUCTION_MODE_MAX_EXT = VK_SAMPLER_REDUCTION_MODE_MAX,
5799    VK_SAMPLER_REDUCTION_MODE_MAX_ENUM = 0x7FFFFFFF
5800} VkSamplerReductionMode;
5801
5802typedef enum VkSemaphoreType {
5803    VK_SEMAPHORE_TYPE_BINARY = 0,
5804    VK_SEMAPHORE_TYPE_TIMELINE = 1,
5805    VK_SEMAPHORE_TYPE_BINARY_KHR = VK_SEMAPHORE_TYPE_BINARY,
5806    VK_SEMAPHORE_TYPE_TIMELINE_KHR = VK_SEMAPHORE_TYPE_TIMELINE,
5807    VK_SEMAPHORE_TYPE_MAX_ENUM = 0x7FFFFFFF
5808} VkSemaphoreType;
5809
5810typedef enum VkResolveModeFlagBits {
5811    VK_RESOLVE_MODE_NONE = 0,
5812    VK_RESOLVE_MODE_SAMPLE_ZERO_BIT = 0x00000001,
5813    VK_RESOLVE_MODE_AVERAGE_BIT = 0x00000002,
5814    VK_RESOLVE_MODE_MIN_BIT = 0x00000004,
5815    VK_RESOLVE_MODE_MAX_BIT = 0x00000008,
5816    VK_RESOLVE_MODE_EXTERNAL_FORMAT_DOWNSAMPLE_ANDROID = 0x00000010,
5817    VK_RESOLVE_MODE_NONE_KHR = VK_RESOLVE_MODE_NONE,
5818    VK_RESOLVE_MODE_SAMPLE_ZERO_BIT_KHR = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT,
5819    VK_RESOLVE_MODE_AVERAGE_BIT_KHR = VK_RESOLVE_MODE_AVERAGE_BIT,
5820    VK_RESOLVE_MODE_MIN_BIT_KHR = VK_RESOLVE_MODE_MIN_BIT,
5821    VK_RESOLVE_MODE_MAX_BIT_KHR = VK_RESOLVE_MODE_MAX_BIT,
5822    VK_RESOLVE_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
5823} VkResolveModeFlagBits;
5824typedef VkFlags VkResolveModeFlags;
5825
5826typedef enum VkDescriptorBindingFlagBits {
5827    VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT = 0x00000001,
5828    VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT = 0x00000002,
5829    VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT = 0x00000004,
5830    VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT = 0x00000008,
5831    VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT,
5832    VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT,
5833    VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT,
5834    VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT,
5835    VK_DESCRIPTOR_BINDING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
5836} VkDescriptorBindingFlagBits;
5837typedef VkFlags VkDescriptorBindingFlags;
5838
5839typedef enum VkSemaphoreWaitFlagBits {
5840    VK_SEMAPHORE_WAIT_ANY_BIT = 0x00000001,
5841    VK_SEMAPHORE_WAIT_ANY_BIT_KHR = VK_SEMAPHORE_WAIT_ANY_BIT,
5842    VK_SEMAPHORE_WAIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
5843} VkSemaphoreWaitFlagBits;
5844typedef VkFlags VkSemaphoreWaitFlags;
5845typedef struct VkPhysicalDeviceVulkan11Features {
5846    VkStructureType    sType;
5847    void*              pNext;
5848    VkBool32           storageBuffer16BitAccess;
5849    VkBool32           uniformAndStorageBuffer16BitAccess;
5850    VkBool32           storagePushConstant16;
5851    VkBool32           storageInputOutput16;
5852    VkBool32           multiview;
5853    VkBool32           multiviewGeometryShader;
5854    VkBool32           multiviewTessellationShader;
5855    VkBool32           variablePointersStorageBuffer;
5856    VkBool32           variablePointers;
5857    VkBool32           protectedMemory;
5858    VkBool32           samplerYcbcrConversion;
5859    VkBool32           shaderDrawParameters;
5860} VkPhysicalDeviceVulkan11Features;
5861
5862typedef struct VkPhysicalDeviceVulkan11Properties {
5863    VkStructureType            sType;
5864    void*                      pNext;
5865    uint8_t                    deviceUUID[VK_UUID_SIZE];
5866    uint8_t                    driverUUID[VK_UUID_SIZE];
5867    uint8_t                    deviceLUID[VK_LUID_SIZE];
5868    uint32_t                   deviceNodeMask;
5869    VkBool32                   deviceLUIDValid;
5870    uint32_t                   subgroupSize;
5871    VkShaderStageFlags         subgroupSupportedStages;
5872    VkSubgroupFeatureFlags     subgroupSupportedOperations;
5873    VkBool32                   subgroupQuadOperationsInAllStages;
5874    VkPointClippingBehavior    pointClippingBehavior;
5875    uint32_t                   maxMultiviewViewCount;
5876    uint32_t                   maxMultiviewInstanceIndex;
5877    VkBool32                   protectedNoFault;
5878    uint32_t                   maxPerSetDescriptors;
5879    VkDeviceSize               maxMemoryAllocationSize;
5880} VkPhysicalDeviceVulkan11Properties;
5881
5882typedef struct VkPhysicalDeviceVulkan12Features {
5883    VkStructureType    sType;
5884    void*              pNext;
5885    VkBool32           samplerMirrorClampToEdge;
5886    VkBool32           drawIndirectCount;
5887    VkBool32           storageBuffer8BitAccess;
5888    VkBool32           uniformAndStorageBuffer8BitAccess;
5889    VkBool32           storagePushConstant8;
5890    VkBool32           shaderBufferInt64Atomics;
5891    VkBool32           shaderSharedInt64Atomics;
5892    VkBool32           shaderFloat16;
5893    VkBool32           shaderInt8;
5894    VkBool32           descriptorIndexing;
5895    VkBool32           shaderInputAttachmentArrayDynamicIndexing;
5896    VkBool32           shaderUniformTexelBufferArrayDynamicIndexing;
5897    VkBool32           shaderStorageTexelBufferArrayDynamicIndexing;
5898    VkBool32           shaderUniformBufferArrayNonUniformIndexing;
5899    VkBool32           shaderSampledImageArrayNonUniformIndexing;
5900    VkBool32           shaderStorageBufferArrayNonUniformIndexing;
5901    VkBool32           shaderStorageImageArrayNonUniformIndexing;
5902    VkBool32           shaderInputAttachmentArrayNonUniformIndexing;
5903    VkBool32           shaderUniformTexelBufferArrayNonUniformIndexing;
5904    VkBool32           shaderStorageTexelBufferArrayNonUniformIndexing;
5905    VkBool32           descriptorBindingUniformBufferUpdateAfterBind;
5906    VkBool32           descriptorBindingSampledImageUpdateAfterBind;
5907    VkBool32           descriptorBindingStorageImageUpdateAfterBind;
5908    VkBool32           descriptorBindingStorageBufferUpdateAfterBind;
5909    VkBool32           descriptorBindingUniformTexelBufferUpdateAfterBind;
5910    VkBool32           descriptorBindingStorageTexelBufferUpdateAfterBind;
5911    VkBool32           descriptorBindingUpdateUnusedWhilePending;
5912    VkBool32           descriptorBindingPartiallyBound;
5913    VkBool32           descriptorBindingVariableDescriptorCount;
5914    VkBool32           runtimeDescriptorArray;
5915    VkBool32           samplerFilterMinmax;
5916    VkBool32           scalarBlockLayout;
5917    VkBool32           imagelessFramebuffer;
5918    VkBool32           uniformBufferStandardLayout;
5919    VkBool32           shaderSubgroupExtendedTypes;
5920    VkBool32           separateDepthStencilLayouts;
5921    VkBool32           hostQueryReset;
5922    VkBool32           timelineSemaphore;
5923    VkBool32           bufferDeviceAddress;
5924    VkBool32           bufferDeviceAddressCaptureReplay;
5925    VkBool32           bufferDeviceAddressMultiDevice;
5926    VkBool32           vulkanMemoryModel;
5927    VkBool32           vulkanMemoryModelDeviceScope;
5928    VkBool32           vulkanMemoryModelAvailabilityVisibilityChains;
5929    VkBool32           shaderOutputViewportIndex;
5930    VkBool32           shaderOutputLayer;
5931    VkBool32           subgroupBroadcastDynamicId;
5932} VkPhysicalDeviceVulkan12Features;
5933
5934typedef struct VkConformanceVersion {
5935    uint8_t    major;
5936    uint8_t    minor;
5937    uint8_t    subminor;
5938    uint8_t    patch;
5939} VkConformanceVersion;
5940
5941typedef struct VkPhysicalDeviceVulkan12Properties {
5942    VkStructureType                      sType;
5943    void*                                pNext;
5944    VkDriverId                           driverID;
5945    char                                 driverName[VK_MAX_DRIVER_NAME_SIZE];
5946    char                                 driverInfo[VK_MAX_DRIVER_INFO_SIZE];
5947    VkConformanceVersion                 conformanceVersion;
5948    VkShaderFloatControlsIndependence    denormBehaviorIndependence;
5949    VkShaderFloatControlsIndependence    roundingModeIndependence;
5950    VkBool32                             shaderSignedZeroInfNanPreserveFloat16;
5951    VkBool32                             shaderSignedZeroInfNanPreserveFloat32;
5952    VkBool32                             shaderSignedZeroInfNanPreserveFloat64;
5953    VkBool32                             shaderDenormPreserveFloat16;
5954    VkBool32                             shaderDenormPreserveFloat32;
5955    VkBool32                             shaderDenormPreserveFloat64;
5956    VkBool32                             shaderDenormFlushToZeroFloat16;
5957    VkBool32                             shaderDenormFlushToZeroFloat32;
5958    VkBool32                             shaderDenormFlushToZeroFloat64;
5959    VkBool32                             shaderRoundingModeRTEFloat16;
5960    VkBool32                             shaderRoundingModeRTEFloat32;
5961    VkBool32                             shaderRoundingModeRTEFloat64;
5962    VkBool32                             shaderRoundingModeRTZFloat16;
5963    VkBool32                             shaderRoundingModeRTZFloat32;
5964    VkBool32                             shaderRoundingModeRTZFloat64;
5965    uint32_t                             maxUpdateAfterBindDescriptorsInAllPools;
5966    VkBool32                             shaderUniformBufferArrayNonUniformIndexingNative;
5967    VkBool32                             shaderSampledImageArrayNonUniformIndexingNative;
5968    VkBool32                             shaderStorageBufferArrayNonUniformIndexingNative;
5969    VkBool32                             shaderStorageImageArrayNonUniformIndexingNative;
5970    VkBool32                             shaderInputAttachmentArrayNonUniformIndexingNative;
5971    VkBool32                             robustBufferAccessUpdateAfterBind;
5972    VkBool32                             quadDivergentImplicitLod;
5973    uint32_t                             maxPerStageDescriptorUpdateAfterBindSamplers;
5974    uint32_t                             maxPerStageDescriptorUpdateAfterBindUniformBuffers;
5975    uint32_t                             maxPerStageDescriptorUpdateAfterBindStorageBuffers;
5976    uint32_t                             maxPerStageDescriptorUpdateAfterBindSampledImages;
5977    uint32_t                             maxPerStageDescriptorUpdateAfterBindStorageImages;
5978    uint32_t                             maxPerStageDescriptorUpdateAfterBindInputAttachments;
5979    uint32_t                             maxPerStageUpdateAfterBindResources;
5980    uint32_t                             maxDescriptorSetUpdateAfterBindSamplers;
5981    uint32_t                             maxDescriptorSetUpdateAfterBindUniformBuffers;
5982    uint32_t                             maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
5983    uint32_t                             maxDescriptorSetUpdateAfterBindStorageBuffers;
5984    uint32_t                             maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
5985    uint32_t                             maxDescriptorSetUpdateAfterBindSampledImages;
5986    uint32_t                             maxDescriptorSetUpdateAfterBindStorageImages;
5987    uint32_t                             maxDescriptorSetUpdateAfterBindInputAttachments;
5988    VkResolveModeFlags                   supportedDepthResolveModes;
5989    VkResolveModeFlags                   supportedStencilResolveModes;
5990    VkBool32                             independentResolveNone;
5991    VkBool32                             independentResolve;
5992    VkBool32                             filterMinmaxSingleComponentFormats;
5993    VkBool32                             filterMinmaxImageComponentMapping;
5994    uint64_t                             maxTimelineSemaphoreValueDifference;
5995    VkSampleCountFlags                   framebufferIntegerColorSampleCounts;
5996} VkPhysicalDeviceVulkan12Properties;
5997
5998typedef struct VkImageFormatListCreateInfo {
5999    VkStructureType    sType;
6000    const void*        pNext;
6001    uint32_t           viewFormatCount;
6002    const VkFormat*    pViewFormats;
6003} VkImageFormatListCreateInfo;
6004
6005typedef struct VkAttachmentDescription2 {
6006    VkStructureType                 sType;
6007    const void*                     pNext;
6008    VkAttachmentDescriptionFlags    flags;
6009    VkFormat                        format;
6010    VkSampleCountFlagBits           samples;
6011    VkAttachmentLoadOp              loadOp;
6012    VkAttachmentStoreOp             storeOp;
6013    VkAttachmentLoadOp              stencilLoadOp;
6014    VkAttachmentStoreOp             stencilStoreOp;
6015    VkImageLayout                   initialLayout;
6016    VkImageLayout                   finalLayout;
6017} VkAttachmentDescription2;
6018
6019typedef struct VkAttachmentReference2 {
6020    VkStructureType       sType;
6021    const void*           pNext;
6022    uint32_t              attachment;
6023    VkImageLayout         layout;
6024    VkImageAspectFlags    aspectMask;
6025} VkAttachmentReference2;
6026
6027typedef struct VkSubpassDescription2 {
6028    VkStructureType                  sType;
6029    const void*                      pNext;
6030    VkSubpassDescriptionFlags        flags;
6031    VkPipelineBindPoint              pipelineBindPoint;
6032    uint32_t                         viewMask;
6033    uint32_t                         inputAttachmentCount;
6034    const VkAttachmentReference2*    pInputAttachments;
6035    uint32_t                         colorAttachmentCount;
6036    const VkAttachmentReference2*    pColorAttachments;
6037    const VkAttachmentReference2*    pResolveAttachments;
6038    const VkAttachmentReference2*    pDepthStencilAttachment;
6039    uint32_t                         preserveAttachmentCount;
6040    const uint32_t*                  pPreserveAttachments;
6041} VkSubpassDescription2;
6042
6043typedef struct VkSubpassDependency2 {
6044    VkStructureType         sType;
6045    const void*             pNext;
6046    uint32_t                srcSubpass;
6047    uint32_t                dstSubpass;
6048    VkPipelineStageFlags    srcStageMask;
6049    VkPipelineStageFlags    dstStageMask;
6050    VkAccessFlags           srcAccessMask;
6051    VkAccessFlags           dstAccessMask;
6052    VkDependencyFlags       dependencyFlags;
6053    int32_t                 viewOffset;
6054} VkSubpassDependency2;
6055
6056typedef struct VkRenderPassCreateInfo2 {
6057    VkStructureType                    sType;
6058    const void*                        pNext;
6059    VkRenderPassCreateFlags            flags;
6060    uint32_t                           attachmentCount;
6061    const VkAttachmentDescription2*    pAttachments;
6062    uint32_t                           subpassCount;
6063    const VkSubpassDescription2*       pSubpasses;
6064    uint32_t                           dependencyCount;
6065    const VkSubpassDependency2*        pDependencies;
6066    uint32_t                           correlatedViewMaskCount;
6067    const uint32_t*                    pCorrelatedViewMasks;
6068} VkRenderPassCreateInfo2;
6069
6070typedef struct VkSubpassBeginInfo {
6071    VkStructureType      sType;
6072    const void*          pNext;
6073    VkSubpassContents    contents;
6074} VkSubpassBeginInfo;
6075
6076typedef struct VkSubpassEndInfo {
6077    VkStructureType    sType;
6078    const void*        pNext;
6079} VkSubpassEndInfo;
6080
6081typedef struct VkPhysicalDevice8BitStorageFeatures {
6082    VkStructureType    sType;
6083    void*              pNext;
6084    VkBool32           storageBuffer8BitAccess;
6085    VkBool32           uniformAndStorageBuffer8BitAccess;
6086    VkBool32           storagePushConstant8;
6087} VkPhysicalDevice8BitStorageFeatures;
6088
6089typedef struct VkPhysicalDeviceDriverProperties {
6090    VkStructureType         sType;
6091    void*                   pNext;
6092    VkDriverId              driverID;
6093    char                    driverName[VK_MAX_DRIVER_NAME_SIZE];
6094    char                    driverInfo[VK_MAX_DRIVER_INFO_SIZE];
6095    VkConformanceVersion    conformanceVersion;
6096} VkPhysicalDeviceDriverProperties;
6097
6098typedef struct VkPhysicalDeviceShaderAtomicInt64Features {
6099    VkStructureType    sType;
6100    void*              pNext;
6101    VkBool32           shaderBufferInt64Atomics;
6102    VkBool32           shaderSharedInt64Atomics;
6103} VkPhysicalDeviceShaderAtomicInt64Features;
6104
6105typedef struct VkPhysicalDeviceShaderFloat16Int8Features {
6106    VkStructureType    sType;
6107    void*              pNext;
6108    VkBool32           shaderFloat16;
6109    VkBool32           shaderInt8;
6110} VkPhysicalDeviceShaderFloat16Int8Features;
6111
6112typedef struct VkPhysicalDeviceFloatControlsProperties {
6113    VkStructureType                      sType;
6114    void*                                pNext;
6115    VkShaderFloatControlsIndependence    denormBehaviorIndependence;
6116    VkShaderFloatControlsIndependence    roundingModeIndependence;
6117    VkBool32                             shaderSignedZeroInfNanPreserveFloat16;
6118    VkBool32                             shaderSignedZeroInfNanPreserveFloat32;
6119    VkBool32                             shaderSignedZeroInfNanPreserveFloat64;
6120    VkBool32                             shaderDenormPreserveFloat16;
6121    VkBool32                             shaderDenormPreserveFloat32;
6122    VkBool32                             shaderDenormPreserveFloat64;
6123    VkBool32                             shaderDenormFlushToZeroFloat16;
6124    VkBool32                             shaderDenormFlushToZeroFloat32;
6125    VkBool32                             shaderDenormFlushToZeroFloat64;
6126    VkBool32                             shaderRoundingModeRTEFloat16;
6127    VkBool32                             shaderRoundingModeRTEFloat32;
6128    VkBool32                             shaderRoundingModeRTEFloat64;
6129    VkBool32                             shaderRoundingModeRTZFloat16;
6130    VkBool32                             shaderRoundingModeRTZFloat32;
6131    VkBool32                             shaderRoundingModeRTZFloat64;
6132} VkPhysicalDeviceFloatControlsProperties;
6133
6134typedef struct VkDescriptorSetLayoutBindingFlagsCreateInfo {
6135    VkStructureType                    sType;
6136    const void*                        pNext;
6137    uint32_t                           bindingCount;
6138    const VkDescriptorBindingFlags*    pBindingFlags;
6139} VkDescriptorSetLayoutBindingFlagsCreateInfo;
6140
6141typedef struct VkPhysicalDeviceDescriptorIndexingFeatures {
6142    VkStructureType    sType;
6143    void*              pNext;
6144    VkBool32           shaderInputAttachmentArrayDynamicIndexing;
6145    VkBool32           shaderUniformTexelBufferArrayDynamicIndexing;
6146    VkBool32           shaderStorageTexelBufferArrayDynamicIndexing;
6147    VkBool32           shaderUniformBufferArrayNonUniformIndexing;
6148    VkBool32           shaderSampledImageArrayNonUniformIndexing;
6149    VkBool32           shaderStorageBufferArrayNonUniformIndexing;
6150    VkBool32           shaderStorageImageArrayNonUniformIndexing;
6151    VkBool32           shaderInputAttachmentArrayNonUniformIndexing;
6152    VkBool32           shaderUniformTexelBufferArrayNonUniformIndexing;
6153    VkBool32           shaderStorageTexelBufferArrayNonUniformIndexing;
6154    VkBool32           descriptorBindingUniformBufferUpdateAfterBind;
6155    VkBool32           descriptorBindingSampledImageUpdateAfterBind;
6156    VkBool32           descriptorBindingStorageImageUpdateAfterBind;
6157    VkBool32           descriptorBindingStorageBufferUpdateAfterBind;
6158    VkBool32           descriptorBindingUniformTexelBufferUpdateAfterBind;
6159    VkBool32           descriptorBindingStorageTexelBufferUpdateAfterBind;
6160    VkBool32           descriptorBindingUpdateUnusedWhilePending;
6161    VkBool32           descriptorBindingPartiallyBound;
6162    VkBool32           descriptorBindingVariableDescriptorCount;
6163    VkBool32           runtimeDescriptorArray;
6164} VkPhysicalDeviceDescriptorIndexingFeatures;
6165
6166typedef struct VkPhysicalDeviceDescriptorIndexingProperties {
6167    VkStructureType    sType;
6168    void*              pNext;
6169    uint32_t           maxUpdateAfterBindDescriptorsInAllPools;
6170    VkBool32           shaderUniformBufferArrayNonUniformIndexingNative;
6171    VkBool32           shaderSampledImageArrayNonUniformIndexingNative;
6172    VkBool32           shaderStorageBufferArrayNonUniformIndexingNative;
6173    VkBool32           shaderStorageImageArrayNonUniformIndexingNative;
6174    VkBool32           shaderInputAttachmentArrayNonUniformIndexingNative;
6175    VkBool32           robustBufferAccessUpdateAfterBind;
6176    VkBool32           quadDivergentImplicitLod;
6177    uint32_t           maxPerStageDescriptorUpdateAfterBindSamplers;
6178    uint32_t           maxPerStageDescriptorUpdateAfterBindUniformBuffers;
6179    uint32_t           maxPerStageDescriptorUpdateAfterBindStorageBuffers;
6180    uint32_t           maxPerStageDescriptorUpdateAfterBindSampledImages;
6181    uint32_t           maxPerStageDescriptorUpdateAfterBindStorageImages;
6182    uint32_t           maxPerStageDescriptorUpdateAfterBindInputAttachments;
6183    uint32_t           maxPerStageUpdateAfterBindResources;
6184    uint32_t           maxDescriptorSetUpdateAfterBindSamplers;
6185    uint32_t           maxDescriptorSetUpdateAfterBindUniformBuffers;
6186    uint32_t           maxDescriptorSetUpdateAfterBindUniformBuffersDynamic;
6187    uint32_t           maxDescriptorSetUpdateAfterBindStorageBuffers;
6188    uint32_t           maxDescriptorSetUpdateAfterBindStorageBuffersDynamic;
6189    uint32_t           maxDescriptorSetUpdateAfterBindSampledImages;
6190    uint32_t           maxDescriptorSetUpdateAfterBindStorageImages;
6191    uint32_t           maxDescriptorSetUpdateAfterBindInputAttachments;
6192} VkPhysicalDeviceDescriptorIndexingProperties;
6193
6194typedef struct VkDescriptorSetVariableDescriptorCountAllocateInfo {
6195    VkStructureType    sType;
6196    const void*        pNext;
6197    uint32_t           descriptorSetCount;
6198    const uint32_t*    pDescriptorCounts;
6199} VkDescriptorSetVariableDescriptorCountAllocateInfo;
6200
6201typedef struct VkDescriptorSetVariableDescriptorCountLayoutSupport {
6202    VkStructureType    sType;
6203    void*              pNext;
6204    uint32_t           maxVariableDescriptorCount;
6205} VkDescriptorSetVariableDescriptorCountLayoutSupport;
6206
6207typedef struct VkSubpassDescriptionDepthStencilResolve {
6208    VkStructureType                  sType;
6209    const void*                      pNext;
6210    VkResolveModeFlagBits            depthResolveMode;
6211    VkResolveModeFlagBits            stencilResolveMode;
6212    const VkAttachmentReference2*    pDepthStencilResolveAttachment;
6213} VkSubpassDescriptionDepthStencilResolve;
6214
6215typedef struct VkPhysicalDeviceDepthStencilResolveProperties {
6216    VkStructureType       sType;
6217    void*                 pNext;
6218    VkResolveModeFlags    supportedDepthResolveModes;
6219    VkResolveModeFlags    supportedStencilResolveModes;
6220    VkBool32              independentResolveNone;
6221    VkBool32              independentResolve;
6222} VkPhysicalDeviceDepthStencilResolveProperties;
6223
6224typedef struct VkPhysicalDeviceScalarBlockLayoutFeatures {
6225    VkStructureType    sType;
6226    void*              pNext;
6227    VkBool32           scalarBlockLayout;
6228} VkPhysicalDeviceScalarBlockLayoutFeatures;
6229
6230typedef struct VkImageStencilUsageCreateInfo {
6231    VkStructureType      sType;
6232    const void*          pNext;
6233    VkImageUsageFlags    stencilUsage;
6234} VkImageStencilUsageCreateInfo;
6235
6236typedef struct VkSamplerReductionModeCreateInfo {
6237    VkStructureType           sType;
6238    const void*               pNext;
6239    VkSamplerReductionMode    reductionMode;
6240} VkSamplerReductionModeCreateInfo;
6241
6242typedef struct VkPhysicalDeviceSamplerFilterMinmaxProperties {
6243    VkStructureType    sType;
6244    void*              pNext;
6245    VkBool32           filterMinmaxSingleComponentFormats;
6246    VkBool32           filterMinmaxImageComponentMapping;
6247} VkPhysicalDeviceSamplerFilterMinmaxProperties;
6248
6249typedef struct VkPhysicalDeviceVulkanMemoryModelFeatures {
6250    VkStructureType    sType;
6251    void*              pNext;
6252    VkBool32           vulkanMemoryModel;
6253    VkBool32           vulkanMemoryModelDeviceScope;
6254    VkBool32           vulkanMemoryModelAvailabilityVisibilityChains;
6255} VkPhysicalDeviceVulkanMemoryModelFeatures;
6256
6257typedef struct VkPhysicalDeviceImagelessFramebufferFeatures {
6258    VkStructureType    sType;
6259    void*              pNext;
6260    VkBool32           imagelessFramebuffer;
6261} VkPhysicalDeviceImagelessFramebufferFeatures;
6262
6263typedef struct VkFramebufferAttachmentImageInfo {
6264    VkStructureType       sType;
6265    const void*           pNext;
6266    VkImageCreateFlags    flags;
6267    VkImageUsageFlags     usage;
6268    uint32_t              width;
6269    uint32_t              height;
6270    uint32_t              layerCount;
6271    uint32_t              viewFormatCount;
6272    const VkFormat*       pViewFormats;
6273} VkFramebufferAttachmentImageInfo;
6274
6275typedef struct VkFramebufferAttachmentsCreateInfo {
6276    VkStructureType                            sType;
6277    const void*                                pNext;
6278    uint32_t                                   attachmentImageInfoCount;
6279    const VkFramebufferAttachmentImageInfo*    pAttachmentImageInfos;
6280} VkFramebufferAttachmentsCreateInfo;
6281
6282typedef struct VkRenderPassAttachmentBeginInfo {
6283    VkStructureType       sType;
6284    const void*           pNext;
6285    uint32_t              attachmentCount;
6286    const VkImageView*    pAttachments;
6287} VkRenderPassAttachmentBeginInfo;
6288
6289typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures {
6290    VkStructureType    sType;
6291    void*              pNext;
6292    VkBool32           uniformBufferStandardLayout;
6293} VkPhysicalDeviceUniformBufferStandardLayoutFeatures;
6294
6295typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures {
6296    VkStructureType    sType;
6297    void*              pNext;
6298    VkBool32           shaderSubgroupExtendedTypes;
6299} VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures;
6300
6301typedef struct VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures {
6302    VkStructureType    sType;
6303    void*              pNext;
6304    VkBool32           separateDepthStencilLayouts;
6305} VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures;
6306
6307typedef struct VkAttachmentReferenceStencilLayout {
6308    VkStructureType    sType;
6309    void*              pNext;
6310    VkImageLayout      stencilLayout;
6311} VkAttachmentReferenceStencilLayout;
6312
6313typedef struct VkAttachmentDescriptionStencilLayout {
6314    VkStructureType    sType;
6315    void*              pNext;
6316    VkImageLayout      stencilInitialLayout;
6317    VkImageLayout      stencilFinalLayout;
6318} VkAttachmentDescriptionStencilLayout;
6319
6320typedef struct VkPhysicalDeviceHostQueryResetFeatures {
6321    VkStructureType    sType;
6322    void*              pNext;
6323    VkBool32           hostQueryReset;
6324} VkPhysicalDeviceHostQueryResetFeatures;
6325
6326typedef struct VkPhysicalDeviceTimelineSemaphoreFeatures {
6327    VkStructureType    sType;
6328    void*              pNext;
6329    VkBool32           timelineSemaphore;
6330} VkPhysicalDeviceTimelineSemaphoreFeatures;
6331
6332typedef struct VkPhysicalDeviceTimelineSemaphoreProperties {
6333    VkStructureType    sType;
6334    void*              pNext;
6335    uint64_t           maxTimelineSemaphoreValueDifference;
6336} VkPhysicalDeviceTimelineSemaphoreProperties;
6337
6338typedef struct VkSemaphoreTypeCreateInfo {
6339    VkStructureType    sType;
6340    const void*        pNext;
6341    VkSemaphoreType    semaphoreType;
6342    uint64_t           initialValue;
6343} VkSemaphoreTypeCreateInfo;
6344
6345typedef struct VkTimelineSemaphoreSubmitInfo {
6346    VkStructureType    sType;
6347    const void*        pNext;
6348    uint32_t           waitSemaphoreValueCount;
6349    const uint64_t*    pWaitSemaphoreValues;
6350    uint32_t           signalSemaphoreValueCount;
6351    const uint64_t*    pSignalSemaphoreValues;
6352} VkTimelineSemaphoreSubmitInfo;
6353
6354typedef struct VkSemaphoreWaitInfo {
6355    VkStructureType         sType;
6356    const void*             pNext;
6357    VkSemaphoreWaitFlags    flags;
6358    uint32_t                semaphoreCount;
6359    const VkSemaphore*      pSemaphores;
6360    const uint64_t*         pValues;
6361} VkSemaphoreWaitInfo;
6362
6363typedef struct VkSemaphoreSignalInfo {
6364    VkStructureType    sType;
6365    const void*        pNext;
6366    VkSemaphore        semaphore;
6367    uint64_t           value;
6368} VkSemaphoreSignalInfo;
6369
6370typedef struct VkPhysicalDeviceBufferDeviceAddressFeatures {
6371    VkStructureType    sType;
6372    void*              pNext;
6373    VkBool32           bufferDeviceAddress;
6374    VkBool32           bufferDeviceAddressCaptureReplay;
6375    VkBool32           bufferDeviceAddressMultiDevice;
6376} VkPhysicalDeviceBufferDeviceAddressFeatures;
6377
6378typedef struct VkBufferDeviceAddressInfo {
6379    VkStructureType    sType;
6380    const void*        pNext;
6381    VkBuffer           buffer;
6382} VkBufferDeviceAddressInfo;
6383
6384typedef struct VkBufferOpaqueCaptureAddressCreateInfo {
6385    VkStructureType    sType;
6386    const void*        pNext;
6387    uint64_t           opaqueCaptureAddress;
6388} VkBufferOpaqueCaptureAddressCreateInfo;
6389
6390typedef struct VkMemoryOpaqueCaptureAddressAllocateInfo {
6391    VkStructureType    sType;
6392    const void*        pNext;
6393    uint64_t           opaqueCaptureAddress;
6394} VkMemoryOpaqueCaptureAddressAllocateInfo;
6395
6396typedef struct VkDeviceMemoryOpaqueCaptureAddressInfo {
6397    VkStructureType    sType;
6398    const void*        pNext;
6399    VkDeviceMemory     memory;
6400} VkDeviceMemoryOpaqueCaptureAddressInfo;
6401
6402typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
6403typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCount)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
6404typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
6405typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo*      pRenderPassBegin, const VkSubpassBeginInfo*      pSubpassBeginInfo);
6406typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo*      pSubpassBeginInfo, const VkSubpassEndInfo*        pSubpassEndInfo);
6407typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo*        pSubpassEndInfo);
6408typedef void (VKAPI_PTR *PFN_vkResetQueryPool)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);
6409typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValue)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue);
6410typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphores)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout);
6411typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphore)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
6412typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
6413typedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddress)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
6414typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddress)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
6415
6416#ifndef VK_NO_PROTOTYPES
6417VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCount(
6418    VkCommandBuffer                             commandBuffer,
6419    VkBuffer                                    buffer,
6420    VkDeviceSize                                offset,
6421    VkBuffer                                    countBuffer,
6422    VkDeviceSize                                countBufferOffset,
6423    uint32_t                                    maxDrawCount,
6424    uint32_t                                    stride);
6425
6426VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCount(
6427    VkCommandBuffer                             commandBuffer,
6428    VkBuffer                                    buffer,
6429    VkDeviceSize                                offset,
6430    VkBuffer                                    countBuffer,
6431    VkDeviceSize                                countBufferOffset,
6432    uint32_t                                    maxDrawCount,
6433    uint32_t                                    stride);
6434
6435VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2(
6436    VkDevice                                    device,
6437    const VkRenderPassCreateInfo2*              pCreateInfo,
6438    const VkAllocationCallbacks*                pAllocator,
6439    VkRenderPass*                               pRenderPass);
6440
6441VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2(
6442    VkCommandBuffer                             commandBuffer,
6443    const VkRenderPassBeginInfo*                pRenderPassBegin,
6444    const VkSubpassBeginInfo*                   pSubpassBeginInfo);
6445
6446VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2(
6447    VkCommandBuffer                             commandBuffer,
6448    const VkSubpassBeginInfo*                   pSubpassBeginInfo,
6449    const VkSubpassEndInfo*                     pSubpassEndInfo);
6450
6451VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2(
6452    VkCommandBuffer                             commandBuffer,
6453    const VkSubpassEndInfo*                     pSubpassEndInfo);
6454
6455VKAPI_ATTR void VKAPI_CALL vkResetQueryPool(
6456    VkDevice                                    device,
6457    VkQueryPool                                 queryPool,
6458    uint32_t                                    firstQuery,
6459    uint32_t                                    queryCount);
6460
6461VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValue(
6462    VkDevice                                    device,
6463    VkSemaphore                                 semaphore,
6464    uint64_t*                                   pValue);
6465
6466VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphores(
6467    VkDevice                                    device,
6468    const VkSemaphoreWaitInfo*                  pWaitInfo,
6469    uint64_t                                    timeout);
6470
6471VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphore(
6472    VkDevice                                    device,
6473    const VkSemaphoreSignalInfo*                pSignalInfo);
6474
6475VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddress(
6476    VkDevice                                    device,
6477    const VkBufferDeviceAddressInfo*            pInfo);
6478
6479VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddress(
6480    VkDevice                                    device,
6481    const VkBufferDeviceAddressInfo*            pInfo);
6482
6483VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddress(
6484    VkDevice                                    device,
6485    const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
6486#endif
6487
6488
6489// VK_VERSION_1_3 is a preprocessor guard. Do not pass it to API calls.
6490#define VK_VERSION_1_3 1
6491// Vulkan 1.3 version number
6492#define VK_API_VERSION_1_3 VK_MAKE_API_VERSION(0, 1, 3, 0)// Patch version should always be set to 0
6493
6494typedef uint64_t VkFlags64;
6495VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPrivateDataSlot)
6496
6497typedef enum VkPipelineCreationFeedbackFlagBits {
6498    VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT = 0x00000001,
6499    VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT = 0x00000002,
6500    VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT = 0x00000004,
6501    VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT,
6502    VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT,
6503    VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT,
6504    VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
6505} VkPipelineCreationFeedbackFlagBits;
6506typedef VkFlags VkPipelineCreationFeedbackFlags;
6507
6508typedef enum VkToolPurposeFlagBits {
6509    VK_TOOL_PURPOSE_VALIDATION_BIT = 0x00000001,
6510    VK_TOOL_PURPOSE_PROFILING_BIT = 0x00000002,
6511    VK_TOOL_PURPOSE_TRACING_BIT = 0x00000004,
6512    VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT = 0x00000008,
6513    VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT = 0x00000010,
6514    VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 0x00000020,
6515    VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 0x00000040,
6516    VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = VK_TOOL_PURPOSE_VALIDATION_BIT,
6517    VK_TOOL_PURPOSE_PROFILING_BIT_EXT = VK_TOOL_PURPOSE_PROFILING_BIT,
6518    VK_TOOL_PURPOSE_TRACING_BIT_EXT = VK_TOOL_PURPOSE_TRACING_BIT,
6519    VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT,
6520    VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT,
6521    VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
6522} VkToolPurposeFlagBits;
6523typedef VkFlags VkToolPurposeFlags;
6524typedef VkFlags VkPrivateDataSlotCreateFlags;
6525typedef VkFlags64 VkPipelineStageFlags2;
6526
6527// Flag bits for VkPipelineStageFlagBits2
6528typedef VkFlags64 VkPipelineStageFlagBits2;
6529static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_NONE = 0ULL;
6530static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_NONE_KHR = 0ULL;
6531static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT = 0x00000001ULL;
6532static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR = 0x00000001ULL;
6533static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT = 0x00000002ULL;
6534static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR = 0x00000002ULL;
6535static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT = 0x00000004ULL;
6536static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR = 0x00000004ULL;
6537static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT = 0x00000008ULL;
6538static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR = 0x00000008ULL;
6539static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010ULL;
6540static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR = 0x00000010ULL;
6541static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020ULL;
6542static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR = 0x00000020ULL;
6543static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT = 0x00000040ULL;
6544static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR = 0x00000040ULL;
6545static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT = 0x00000080ULL;
6546static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR = 0x00000080ULL;
6547static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT = 0x00000100ULL;
6548static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR = 0x00000100ULL;
6549static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT = 0x00000200ULL;
6550static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR = 0x00000200ULL;
6551static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400ULL;
6552static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR = 0x00000400ULL;
6553static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT = 0x00000800ULL;
6554static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR = 0x00000800ULL;
6555static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT = 0x00001000ULL;
6556static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR = 0x00001000ULL;
6557static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFER_BIT = 0x00001000ULL;
6558static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR = 0x00001000ULL;
6559static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT = 0x00002000ULL;
6560static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR = 0x00002000ULL;
6561static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_HOST_BIT = 0x00004000ULL;
6562static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_HOST_BIT_KHR = 0x00004000ULL;
6563static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT = 0x00008000ULL;
6564static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR = 0x00008000ULL;
6565static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT = 0x00010000ULL;
6566static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR = 0x00010000ULL;
6567static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_BIT = 0x100000000ULL;
6568static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COPY_BIT_KHR = 0x100000000ULL;
6569static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RESOLVE_BIT = 0x200000000ULL;
6570static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR = 0x200000000ULL;
6571static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BLIT_BIT = 0x400000000ULL;
6572static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_BLIT_BIT_KHR = 0x400000000ULL;
6573static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLEAR_BIT = 0x800000000ULL;
6574static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR = 0x800000000ULL;
6575static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT = 0x1000000000ULL;
6576static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR = 0x1000000000ULL;
6577static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT = 0x2000000000ULL;
6578static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR = 0x2000000000ULL;
6579static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT = 0x4000000000ULL;
6580static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR = 0x4000000000ULL;
6581static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR = 0x04000000ULL;
6582static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_VIDEO_ENCODE_BIT_KHR = 0x08000000ULL;
6583static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000ULL;
6584static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000ULL;
6585static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV = 0x00020000ULL;
6586static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000ULL;
6587static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV = 0x00400000ULL;
6588static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000ULL;
6589static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR = 0x00200000ULL;
6590static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV = 0x00200000ULL;
6591static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 0x02000000ULL;
6592static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000ULL;
6593static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV = 0x00080000ULL;
6594static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV = 0x00100000ULL;
6595static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_EXT = 0x00080000ULL;
6596static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_EXT = 0x00100000ULL;
6597static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SUBPASS_SHADER_BIT_HUAWEI = 0x8000000000ULL;
6598static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_SUBPASS_SHADING_BIT_HUAWEI = 0x8000000000ULL;
6599static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_INVOCATION_MASK_BIT_HUAWEI = 0x10000000000ULL;
6600static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_COPY_BIT_KHR = 0x10000000ULL;
6601static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_MICROMAP_BUILD_BIT_EXT = 0x40000000ULL;
6602static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_CLUSTER_CULLING_SHADER_BIT_HUAWEI = 0x20000000000ULL;
6603static const VkPipelineStageFlagBits2 VK_PIPELINE_STAGE_2_OPTICAL_FLOW_BIT_NV = 0x20000000ULL;
6604
6605typedef VkFlags64 VkAccessFlags2;
6606
6607// Flag bits for VkAccessFlagBits2
6608typedef VkFlags64 VkAccessFlagBits2;
6609static const VkAccessFlagBits2 VK_ACCESS_2_NONE = 0ULL;
6610static const VkAccessFlagBits2 VK_ACCESS_2_NONE_KHR = 0ULL;
6611static const VkAccessFlagBits2 VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT = 0x00000001ULL;
6612static const VkAccessFlagBits2 VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR = 0x00000001ULL;
6613static const VkAccessFlagBits2 VK_ACCESS_2_INDEX_READ_BIT = 0x00000002ULL;
6614static const VkAccessFlagBits2 VK_ACCESS_2_INDEX_READ_BIT_KHR = 0x00000002ULL;
6615static const VkAccessFlagBits2 VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004ULL;
6616static const VkAccessFlagBits2 VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR = 0x00000004ULL;
6617static const VkAccessFlagBits2 VK_ACCESS_2_UNIFORM_READ_BIT = 0x00000008ULL;
6618static const VkAccessFlagBits2 VK_ACCESS_2_UNIFORM_READ_BIT_KHR = 0x00000008ULL;
6619static const VkAccessFlagBits2 VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT = 0x00000010ULL;
6620static const VkAccessFlagBits2 VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR = 0x00000010ULL;
6621static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_READ_BIT = 0x00000020ULL;
6622static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_READ_BIT_KHR = 0x00000020ULL;
6623static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_WRITE_BIT = 0x00000040ULL;
6624static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_WRITE_BIT_KHR = 0x00000040ULL;
6625static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT = 0x00000080ULL;
6626static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR = 0x00000080ULL;
6627static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100ULL;
6628static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR = 0x00000100ULL;
6629static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200ULL;
6630static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR = 0x00000200ULL;
6631static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400ULL;
6632static const VkAccessFlagBits2 VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR = 0x00000400ULL;
6633static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_READ_BIT = 0x00000800ULL;
6634static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_READ_BIT_KHR = 0x00000800ULL;
6635static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_WRITE_BIT = 0x00001000ULL;
6636static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR = 0x00001000ULL;
6637static const VkAccessFlagBits2 VK_ACCESS_2_HOST_READ_BIT = 0x00002000ULL;
6638static const VkAccessFlagBits2 VK_ACCESS_2_HOST_READ_BIT_KHR = 0x00002000ULL;
6639static const VkAccessFlagBits2 VK_ACCESS_2_HOST_WRITE_BIT = 0x00004000ULL;
6640static const VkAccessFlagBits2 VK_ACCESS_2_HOST_WRITE_BIT_KHR = 0x00004000ULL;
6641static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_READ_BIT = 0x00008000ULL;
6642static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_READ_BIT_KHR = 0x00008000ULL;
6643static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_WRITE_BIT = 0x00010000ULL;
6644static const VkAccessFlagBits2 VK_ACCESS_2_MEMORY_WRITE_BIT_KHR = 0x00010000ULL;
6645static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_SAMPLED_READ_BIT = 0x100000000ULL;
6646static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR = 0x100000000ULL;
6647static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT = 0x200000000ULL;
6648static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR = 0x200000000ULL;
6649static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT = 0x400000000ULL;
6650static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR = 0x400000000ULL;
6651static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_DECODE_READ_BIT_KHR = 0x800000000ULL;
6652static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR = 0x1000000000ULL;
6653static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_ENCODE_READ_BIT_KHR = 0x2000000000ULL;
6654static const VkAccessFlagBits2 VK_ACCESS_2_VIDEO_ENCODE_WRITE_BIT_KHR = 0x4000000000ULL;
6655static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000ULL;
6656static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000ULL;
6657static const VkAccessFlagBits2 VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000ULL;
6658static const VkAccessFlagBits2 VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000ULL;
6659static const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000ULL;
6660static const VkAccessFlagBits2 VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000ULL;
6661static const VkAccessFlagBits2 VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000ULL;
6662static const VkAccessFlagBits2 VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV = 0x00800000ULL;
6663static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000ULL;
6664static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000ULL;
6665static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV = 0x00200000ULL;
6666static const VkAccessFlagBits2 VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 0x00400000ULL;
6667static const VkAccessFlagBits2 VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000ULL;
6668static const VkAccessFlagBits2 VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000ULL;
6669static const VkAccessFlagBits2 VK_ACCESS_2_DESCRIPTOR_BUFFER_READ_BIT_EXT = 0x20000000000ULL;
6670static const VkAccessFlagBits2 VK_ACCESS_2_INVOCATION_MASK_READ_BIT_HUAWEI = 0x8000000000ULL;
6671static const VkAccessFlagBits2 VK_ACCESS_2_SHADER_BINDING_TABLE_READ_BIT_KHR = 0x10000000000ULL;
6672static const VkAccessFlagBits2 VK_ACCESS_2_MICROMAP_READ_BIT_EXT = 0x100000000000ULL;
6673static const VkAccessFlagBits2 VK_ACCESS_2_MICROMAP_WRITE_BIT_EXT = 0x200000000000ULL;
6674static const VkAccessFlagBits2 VK_ACCESS_2_OPTICAL_FLOW_READ_BIT_NV = 0x40000000000ULL;
6675static const VkAccessFlagBits2 VK_ACCESS_2_OPTICAL_FLOW_WRITE_BIT_NV = 0x80000000000ULL;
6676
6677
6678typedef enum VkSubmitFlagBits {
6679    VK_SUBMIT_PROTECTED_BIT = 0x00000001,
6680    VK_SUBMIT_PROTECTED_BIT_KHR = VK_SUBMIT_PROTECTED_BIT,
6681    VK_SUBMIT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
6682} VkSubmitFlagBits;
6683typedef VkFlags VkSubmitFlags;
6684
6685typedef enum VkRenderingFlagBits {
6686    VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT = 0x00000001,
6687    VK_RENDERING_SUSPENDING_BIT = 0x00000002,
6688    VK_RENDERING_RESUMING_BIT = 0x00000004,
6689    VK_RENDERING_CONTENTS_INLINE_BIT_EXT = 0x00000010,
6690    VK_RENDERING_ENABLE_LEGACY_DITHERING_BIT_EXT = 0x00000008,
6691    VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT_KHR = VK_RENDERING_CONTENTS_SECONDARY_COMMAND_BUFFERS_BIT,
6692    VK_RENDERING_SUSPENDING_BIT_KHR = VK_RENDERING_SUSPENDING_BIT,
6693    VK_RENDERING_RESUMING_BIT_KHR = VK_RENDERING_RESUMING_BIT,
6694    VK_RENDERING_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
6695} VkRenderingFlagBits;
6696typedef VkFlags VkRenderingFlags;
6697typedef VkFlags64 VkFormatFeatureFlags2;
6698
6699// Flag bits for VkFormatFeatureFlagBits2
6700typedef VkFlags64 VkFormatFeatureFlagBits2;
6701static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT = 0x00000001ULL;
6702static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT_KHR = 0x00000001ULL;
6703static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT = 0x00000002ULL;
6704static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_BIT_KHR = 0x00000002ULL;
6705static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004ULL;
6706static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_IMAGE_ATOMIC_BIT_KHR = 0x00000004ULL;
6707static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008ULL;
6708static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR = 0x00000008ULL;
6709static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT = 0x00000010ULL;
6710static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_BIT_KHR = 0x00000010ULL;
6711static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020ULL;
6712static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_TEXEL_BUFFER_ATOMIC_BIT_KHR = 0x00000020ULL;
6713static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT = 0x00000040ULL;
6714static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VERTEX_BUFFER_BIT_KHR = 0x00000040ULL;
6715static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT = 0x00000080ULL;
6716static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BIT_KHR = 0x00000080ULL;
6717static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100ULL;
6718static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COLOR_ATTACHMENT_BLEND_BIT_KHR = 0x00000100ULL;
6719static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200ULL;
6720static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DEPTH_STENCIL_ATTACHMENT_BIT_KHR = 0x00000200ULL;
6721static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_SRC_BIT = 0x00000400ULL;
6722static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_SRC_BIT_KHR = 0x00000400ULL;
6723static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_DST_BIT = 0x00000800ULL;
6724static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLIT_DST_BIT_KHR = 0x00000800ULL;
6725static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000ULL;
6726static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_LINEAR_BIT_KHR = 0x00001000ULL;
6727static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT = 0x00002000ULL;
6728static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = 0x00002000ULL;
6729static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT = 0x00004000ULL;
6730static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_SRC_BIT_KHR = 0x00004000ULL;
6731static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT = 0x00008000ULL;
6732static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_TRANSFER_DST_BIT_KHR = 0x00008000ULL;
6733static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT = 0x00010000ULL;
6734static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_FILTER_MINMAX_BIT_KHR = 0x00010000ULL;
6735static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000ULL;
6736static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 0x00020000ULL;
6737static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000ULL;
6738static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 0x00040000ULL;
6739static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000ULL;
6740static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 0x00080000ULL;
6741static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000ULL;
6742static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 0x00100000ULL;
6743static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000ULL;
6744static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 0x00200000ULL;
6745static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DISJOINT_BIT = 0x00400000ULL;
6746static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_DISJOINT_BIT_KHR = 0x00400000ULL;
6747static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT = 0x00800000ULL;
6748static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_COSITED_CHROMA_SAMPLES_BIT_KHR = 0x00800000ULL;
6749static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT = 0x80000000ULL;
6750static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_READ_WITHOUT_FORMAT_BIT_KHR = 0x80000000ULL;
6751static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT = 0x100000000ULL;
6752static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_STORAGE_WRITE_WITHOUT_FORMAT_BIT_KHR = 0x100000000ULL;
6753static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT = 0x200000000ULL;
6754static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_DEPTH_COMPARISON_BIT_KHR = 0x200000000ULL;
6755static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_DECODE_OUTPUT_BIT_KHR = 0x02000000ULL;
6756static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_DECODE_DPB_BIT_KHR = 0x04000000ULL;
6757static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000ULL;
6758static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000ULL;
6759static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000ULL;
6760static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_HOST_IMAGE_TRANSFER_BIT_EXT = 0x400000000000ULL;
6761static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_INPUT_BIT_KHR = 0x08000000ULL;
6762static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_VIDEO_ENCODE_DPB_BIT_KHR = 0x10000000ULL;
6763static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_LINEAR_COLOR_ATTACHMENT_BIT_NV = 0x4000000000ULL;
6764static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_WEIGHT_IMAGE_BIT_QCOM = 0x400000000ULL;
6765static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_WEIGHT_SAMPLED_IMAGE_BIT_QCOM = 0x800000000ULL;
6766static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BLOCK_MATCHING_BIT_QCOM = 0x1000000000ULL;
6767static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_BOX_FILTER_SAMPLED_BIT_QCOM = 0x2000000000ULL;
6768static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_OPTICAL_FLOW_IMAGE_BIT_NV = 0x10000000000ULL;
6769static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_OPTICAL_FLOW_VECTOR_BIT_NV = 0x20000000000ULL;
6770static const VkFormatFeatureFlagBits2 VK_FORMAT_FEATURE_2_OPTICAL_FLOW_COST_BIT_NV = 0x40000000000ULL;
6771
6772typedef struct VkPhysicalDeviceVulkan13Features {
6773    VkStructureType    sType;
6774    void*              pNext;
6775    VkBool32           robustImageAccess;
6776    VkBool32           inlineUniformBlock;
6777    VkBool32           descriptorBindingInlineUniformBlockUpdateAfterBind;
6778    VkBool32           pipelineCreationCacheControl;
6779    VkBool32           privateData;
6780    VkBool32           shaderDemoteToHelperInvocation;
6781    VkBool32           shaderTerminateInvocation;
6782    VkBool32           subgroupSizeControl;
6783    VkBool32           computeFullSubgroups;
6784    VkBool32           synchronization2;
6785    VkBool32           textureCompressionASTC_HDR;
6786    VkBool32           shaderZeroInitializeWorkgroupMemory;
6787    VkBool32           dynamicRendering;
6788    VkBool32           shaderIntegerDotProduct;
6789    VkBool32           maintenance4;
6790} VkPhysicalDeviceVulkan13Features;
6791
6792typedef struct VkPhysicalDeviceVulkan13Properties {
6793    VkStructureType       sType;
6794    void*                 pNext;
6795    uint32_t              minSubgroupSize;
6796    uint32_t              maxSubgroupSize;
6797    uint32_t              maxComputeWorkgroupSubgroups;
6798    VkShaderStageFlags    requiredSubgroupSizeStages;
6799    uint32_t              maxInlineUniformBlockSize;
6800    uint32_t              maxPerStageDescriptorInlineUniformBlocks;
6801    uint32_t              maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks;
6802    uint32_t              maxDescriptorSetInlineUniformBlocks;
6803    uint32_t              maxDescriptorSetUpdateAfterBindInlineUniformBlocks;
6804    uint32_t              maxInlineUniformTotalSize;
6805    VkBool32              integerDotProduct8BitUnsignedAccelerated;
6806    VkBool32              integerDotProduct8BitSignedAccelerated;
6807    VkBool32              integerDotProduct8BitMixedSignednessAccelerated;
6808    VkBool32              integerDotProduct4x8BitPackedUnsignedAccelerated;
6809    VkBool32              integerDotProduct4x8BitPackedSignedAccelerated;
6810    VkBool32              integerDotProduct4x8BitPackedMixedSignednessAccelerated;
6811    VkBool32              integerDotProduct16BitUnsignedAccelerated;
6812    VkBool32              integerDotProduct16BitSignedAccelerated;
6813    VkBool32              integerDotProduct16BitMixedSignednessAccelerated;
6814    VkBool32              integerDotProduct32BitUnsignedAccelerated;
6815    VkBool32              integerDotProduct32BitSignedAccelerated;
6816    VkBool32              integerDotProduct32BitMixedSignednessAccelerated;
6817    VkBool32              integerDotProduct64BitUnsignedAccelerated;
6818    VkBool32              integerDotProduct64BitSignedAccelerated;
6819    VkBool32              integerDotProduct64BitMixedSignednessAccelerated;
6820    VkBool32              integerDotProductAccumulatingSaturating8BitUnsignedAccelerated;
6821    VkBool32              integerDotProductAccumulatingSaturating8BitSignedAccelerated;
6822    VkBool32              integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated;
6823    VkBool32              integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated;
6824    VkBool32              integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated;
6825    VkBool32              integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated;
6826    VkBool32              integerDotProductAccumulatingSaturating16BitUnsignedAccelerated;
6827    VkBool32              integerDotProductAccumulatingSaturating16BitSignedAccelerated;
6828    VkBool32              integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated;
6829    VkBool32              integerDotProductAccumulatingSaturating32BitUnsignedAccelerated;
6830    VkBool32              integerDotProductAccumulatingSaturating32BitSignedAccelerated;
6831    VkBool32              integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated;
6832    VkBool32              integerDotProductAccumulatingSaturating64BitUnsignedAccelerated;
6833    VkBool32              integerDotProductAccumulatingSaturating64BitSignedAccelerated;
6834    VkBool32              integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated;
6835    VkDeviceSize          storageTexelBufferOffsetAlignmentBytes;
6836    VkBool32              storageTexelBufferOffsetSingleTexelAlignment;
6837    VkDeviceSize          uniformTexelBufferOffsetAlignmentBytes;
6838    VkBool32              uniformTexelBufferOffsetSingleTexelAlignment;
6839    VkDeviceSize          maxBufferSize;
6840} VkPhysicalDeviceVulkan13Properties;
6841
6842typedef struct VkPipelineCreationFeedback {
6843    VkPipelineCreationFeedbackFlags    flags;
6844    uint64_t                           duration;
6845} VkPipelineCreationFeedback;
6846
6847typedef struct VkPipelineCreationFeedbackCreateInfo {
6848    VkStructureType                sType;
6849    const void*                    pNext;
6850    VkPipelineCreationFeedback*    pPipelineCreationFeedback;
6851    uint32_t                       pipelineStageCreationFeedbackCount;
6852    VkPipelineCreationFeedback*    pPipelineStageCreationFeedbacks;
6853} VkPipelineCreationFeedbackCreateInfo;
6854
6855typedef struct VkPhysicalDeviceShaderTerminateInvocationFeatures {
6856    VkStructureType    sType;
6857    void*              pNext;
6858    VkBool32           shaderTerminateInvocation;
6859} VkPhysicalDeviceShaderTerminateInvocationFeatures;
6860
6861typedef struct VkPhysicalDeviceToolProperties {
6862    VkStructureType       sType;
6863    void*                 pNext;
6864    char                  name[VK_MAX_EXTENSION_NAME_SIZE];
6865    char                  version[VK_MAX_EXTENSION_NAME_SIZE];
6866    VkToolPurposeFlags    purposes;
6867    char                  description[VK_MAX_DESCRIPTION_SIZE];
6868    char                  layer[VK_MAX_EXTENSION_NAME_SIZE];
6869} VkPhysicalDeviceToolProperties;
6870
6871typedef struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures {
6872    VkStructureType    sType;
6873    void*              pNext;
6874    VkBool32           shaderDemoteToHelperInvocation;
6875} VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures;
6876
6877typedef struct VkPhysicalDevicePrivateDataFeatures {
6878    VkStructureType    sType;
6879    void*              pNext;
6880    VkBool32           privateData;
6881} VkPhysicalDevicePrivateDataFeatures;
6882
6883typedef struct VkDevicePrivateDataCreateInfo {
6884    VkStructureType    sType;
6885    const void*        pNext;
6886    uint32_t           privateDataSlotRequestCount;
6887} VkDevicePrivateDataCreateInfo;
6888
6889typedef struct VkPrivateDataSlotCreateInfo {
6890    VkStructureType                 sType;
6891    const void*                     pNext;
6892    VkPrivateDataSlotCreateFlags    flags;
6893} VkPrivateDataSlotCreateInfo;
6894
6895typedef struct VkPhysicalDevicePipelineCreationCacheControlFeatures {
6896    VkStructureType    sType;
6897    void*              pNext;
6898    VkBool32           pipelineCreationCacheControl;
6899} VkPhysicalDevicePipelineCreationCacheControlFeatures;
6900
6901typedef struct VkMemoryBarrier2 {
6902    VkStructureType          sType;
6903    const void*              pNext;
6904    VkPipelineStageFlags2    srcStageMask;
6905    VkAccessFlags2           srcAccessMask;
6906    VkPipelineStageFlags2    dstStageMask;
6907    VkAccessFlags2           dstAccessMask;
6908} VkMemoryBarrier2;
6909
6910typedef struct VkBufferMemoryBarrier2 {
6911    VkStructureType          sType;
6912    const void*              pNext;
6913    VkPipelineStageFlags2    srcStageMask;
6914    VkAccessFlags2           srcAccessMask;
6915    VkPipelineStageFlags2    dstStageMask;
6916    VkAccessFlags2           dstAccessMask;
6917    uint32_t                 srcQueueFamilyIndex;
6918    uint32_t                 dstQueueFamilyIndex;
6919    VkBuffer                 buffer;
6920    VkDeviceSize             offset;
6921    VkDeviceSize             size;
6922} VkBufferMemoryBarrier2;
6923
6924typedef struct VkImageMemoryBarrier2 {
6925    VkStructureType            sType;
6926    const void*                pNext;
6927    VkPipelineStageFlags2      srcStageMask;
6928    VkAccessFlags2             srcAccessMask;
6929    VkPipelineStageFlags2      dstStageMask;
6930    VkAccessFlags2             dstAccessMask;
6931    VkImageLayout              oldLayout;
6932    VkImageLayout              newLayout;
6933    uint32_t                   srcQueueFamilyIndex;
6934    uint32_t                   dstQueueFamilyIndex;
6935    VkImage                    image;
6936    VkImageSubresourceRange    subresourceRange;
6937} VkImageMemoryBarrier2;
6938
6939typedef struct VkDependencyInfo {
6940    VkStructureType                  sType;
6941    const void*                      pNext;
6942    VkDependencyFlags                dependencyFlags;
6943    uint32_t                         memoryBarrierCount;
6944    const VkMemoryBarrier2*          pMemoryBarriers;
6945    uint32_t                         bufferMemoryBarrierCount;
6946    const VkBufferMemoryBarrier2*    pBufferMemoryBarriers;
6947    uint32_t                         imageMemoryBarrierCount;
6948    const VkImageMemoryBarrier2*     pImageMemoryBarriers;
6949} VkDependencyInfo;
6950
6951typedef struct VkSemaphoreSubmitInfo {
6952    VkStructureType          sType;
6953    const void*              pNext;
6954    VkSemaphore              semaphore;
6955    uint64_t                 value;
6956    VkPipelineStageFlags2    stageMask;
6957    uint32_t                 deviceIndex;
6958} VkSemaphoreSubmitInfo;
6959
6960typedef struct VkCommandBufferSubmitInfo {
6961    VkStructureType    sType;
6962    const void*        pNext;
6963    VkCommandBuffer    commandBuffer;
6964    uint32_t           deviceMask;
6965} VkCommandBufferSubmitInfo;
6966
6967typedef struct VkSubmitInfo2 {
6968    VkStructureType                     sType;
6969    const void*                         pNext;
6970    VkSubmitFlags                       flags;
6971    uint32_t                            waitSemaphoreInfoCount;
6972    const VkSemaphoreSubmitInfo*        pWaitSemaphoreInfos;
6973    uint32_t                            commandBufferInfoCount;
6974    const VkCommandBufferSubmitInfo*    pCommandBufferInfos;
6975    uint32_t                            signalSemaphoreInfoCount;
6976    const VkSemaphoreSubmitInfo*        pSignalSemaphoreInfos;
6977} VkSubmitInfo2;
6978
6979typedef struct VkPhysicalDeviceSynchronization2Features {
6980    VkStructureType    sType;
6981    void*              pNext;
6982    VkBool32           synchronization2;
6983} VkPhysicalDeviceSynchronization2Features;
6984
6985typedef struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures {
6986    VkStructureType    sType;
6987    void*              pNext;
6988    VkBool32           shaderZeroInitializeWorkgroupMemory;
6989} VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures;
6990
6991typedef struct VkPhysicalDeviceImageRobustnessFeatures {
6992    VkStructureType    sType;
6993    void*              pNext;
6994    VkBool32           robustImageAccess;
6995} VkPhysicalDeviceImageRobustnessFeatures;
6996
6997typedef struct VkBufferCopy2 {
6998    VkStructureType    sType;
6999    const void*        pNext;
7000    VkDeviceSize       srcOffset;
7001    VkDeviceSize       dstOffset;
7002    VkDeviceSize       size;
7003} VkBufferCopy2;
7004
7005typedef struct VkCopyBufferInfo2 {
7006    VkStructureType         sType;
7007    const void*             pNext;
7008    VkBuffer                srcBuffer;
7009    VkBuffer                dstBuffer;
7010    uint32_t                regionCount;
7011    const VkBufferCopy2*    pRegions;
7012} VkCopyBufferInfo2;
7013
7014typedef struct VkImageCopy2 {
7015    VkStructureType             sType;
7016    const void*                 pNext;
7017    VkImageSubresourceLayers    srcSubresource;
7018    VkOffset3D                  srcOffset;
7019    VkImageSubresourceLayers    dstSubresource;
7020    VkOffset3D                  dstOffset;
7021    VkExtent3D                  extent;
7022} VkImageCopy2;
7023
7024typedef struct VkCopyImageInfo2 {
7025    VkStructureType        sType;
7026    const void*            pNext;
7027    VkImage                srcImage;
7028    VkImageLayout          srcImageLayout;
7029    VkImage                dstImage;
7030    VkImageLayout          dstImageLayout;
7031    uint32_t               regionCount;
7032    const VkImageCopy2*    pRegions;
7033} VkCopyImageInfo2;
7034
7035typedef struct VkBufferImageCopy2 {
7036    VkStructureType             sType;
7037    const void*                 pNext;
7038    VkDeviceSize                bufferOffset;
7039    uint32_t                    bufferRowLength;
7040    uint32_t                    bufferImageHeight;
7041    VkImageSubresourceLayers    imageSubresource;
7042    VkOffset3D                  imageOffset;
7043    VkExtent3D                  imageExtent;
7044} VkBufferImageCopy2;
7045
7046typedef struct VkCopyBufferToImageInfo2 {
7047    VkStructureType              sType;
7048    const void*                  pNext;
7049    VkBuffer                     srcBuffer;
7050    VkImage                      dstImage;
7051    VkImageLayout                dstImageLayout;
7052    uint32_t                     regionCount;
7053    const VkBufferImageCopy2*    pRegions;
7054} VkCopyBufferToImageInfo2;
7055
7056typedef struct VkCopyImageToBufferInfo2 {
7057    VkStructureType              sType;
7058    const void*                  pNext;
7059    VkImage                      srcImage;
7060    VkImageLayout                srcImageLayout;
7061    VkBuffer                     dstBuffer;
7062    uint32_t                     regionCount;
7063    const VkBufferImageCopy2*    pRegions;
7064} VkCopyImageToBufferInfo2;
7065
7066typedef struct VkImageBlit2 {
7067    VkStructureType             sType;
7068    const void*                 pNext;
7069    VkImageSubresourceLayers    srcSubresource;
7070    VkOffset3D                  srcOffsets[2];
7071    VkImageSubresourceLayers    dstSubresource;
7072    VkOffset3D                  dstOffsets[2];
7073} VkImageBlit2;
7074
7075typedef struct VkBlitImageInfo2 {
7076    VkStructureType        sType;
7077    const void*            pNext;
7078    VkImage                srcImage;
7079    VkImageLayout          srcImageLayout;
7080    VkImage                dstImage;
7081    VkImageLayout          dstImageLayout;
7082    uint32_t               regionCount;
7083    const VkImageBlit2*    pRegions;
7084    VkFilter               filter;
7085} VkBlitImageInfo2;
7086
7087typedef struct VkImageResolve2 {
7088    VkStructureType             sType;
7089    const void*                 pNext;
7090    VkImageSubresourceLayers    srcSubresource;
7091    VkOffset3D                  srcOffset;
7092    VkImageSubresourceLayers    dstSubresource;
7093    VkOffset3D                  dstOffset;
7094    VkExtent3D                  extent;
7095} VkImageResolve2;
7096
7097typedef struct VkResolveImageInfo2 {
7098    VkStructureType           sType;
7099    const void*               pNext;
7100    VkImage                   srcImage;
7101    VkImageLayout             srcImageLayout;
7102    VkImage                   dstImage;
7103    VkImageLayout             dstImageLayout;
7104    uint32_t                  regionCount;
7105    const VkImageResolve2*    pRegions;
7106} VkResolveImageInfo2;
7107
7108typedef struct VkPhysicalDeviceSubgroupSizeControlFeatures {
7109    VkStructureType    sType;
7110    void*              pNext;
7111    VkBool32           subgroupSizeControl;
7112    VkBool32           computeFullSubgroups;
7113} VkPhysicalDeviceSubgroupSizeControlFeatures;
7114
7115typedef struct VkPhysicalDeviceSubgroupSizeControlProperties {
7116    VkStructureType       sType;
7117    void*                 pNext;
7118    uint32_t              minSubgroupSize;
7119    uint32_t              maxSubgroupSize;
7120    uint32_t              maxComputeWorkgroupSubgroups;
7121    VkShaderStageFlags    requiredSubgroupSizeStages;
7122} VkPhysicalDeviceSubgroupSizeControlProperties;
7123
7124typedef struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfo {
7125    VkStructureType    sType;
7126    void*              pNext;
7127    uint32_t           requiredSubgroupSize;
7128} VkPipelineShaderStageRequiredSubgroupSizeCreateInfo;
7129
7130typedef struct VkPhysicalDeviceInlineUniformBlockFeatures {
7131    VkStructureType    sType;
7132    void*              pNext;
7133    VkBool32           inlineUniformBlock;
7134    VkBool32           descriptorBindingInlineUniformBlockUpdateAfterBind;
7135} VkPhysicalDeviceInlineUniformBlockFeatures;
7136
7137typedef struct VkPhysicalDeviceInlineUniformBlockProperties {
7138    VkStructureType    sType;
7139    void*              pNext;
7140    uint32_t           maxInlineUniformBlockSize;
7141    uint32_t           maxPerStageDescriptorInlineUniformBlocks;
7142    uint32_t           maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks;
7143    uint32_t           maxDescriptorSetInlineUniformBlocks;
7144    uint32_t           maxDescriptorSetUpdateAfterBindInlineUniformBlocks;
7145} VkPhysicalDeviceInlineUniformBlockProperties;
7146
7147typedef struct VkWriteDescriptorSetInlineUniformBlock {
7148    VkStructureType    sType;
7149    const void*        pNext;
7150    uint32_t           dataSize;
7151    const void*        pData;
7152} VkWriteDescriptorSetInlineUniformBlock;
7153
7154typedef struct VkDescriptorPoolInlineUniformBlockCreateInfo {
7155    VkStructureType    sType;
7156    const void*        pNext;
7157    uint32_t           maxInlineUniformBlockBindings;
7158} VkDescriptorPoolInlineUniformBlockCreateInfo;
7159
7160typedef struct VkPhysicalDeviceTextureCompressionASTCHDRFeatures {
7161    VkStructureType    sType;
7162    void*              pNext;
7163    VkBool32           textureCompressionASTC_HDR;
7164} VkPhysicalDeviceTextureCompressionASTCHDRFeatures;
7165
7166typedef struct VkRenderingAttachmentInfo {
7167    VkStructureType          sType;
7168    const void*              pNext;
7169    VkImageView              imageView;
7170    VkImageLayout            imageLayout;
7171    VkResolveModeFlagBits    resolveMode;
7172    VkImageView              resolveImageView;
7173    VkImageLayout            resolveImageLayout;
7174    VkAttachmentLoadOp       loadOp;
7175    VkAttachmentStoreOp      storeOp;
7176    VkClearValue             clearValue;
7177} VkRenderingAttachmentInfo;
7178
7179typedef struct VkRenderingInfo {
7180    VkStructureType                     sType;
7181    const void*                         pNext;
7182    VkRenderingFlags                    flags;
7183    VkRect2D                            renderArea;
7184    uint32_t                            layerCount;
7185    uint32_t                            viewMask;
7186    uint32_t                            colorAttachmentCount;
7187    const VkRenderingAttachmentInfo*    pColorAttachments;
7188    const VkRenderingAttachmentInfo*    pDepthAttachment;
7189    const VkRenderingAttachmentInfo*    pStencilAttachment;
7190} VkRenderingInfo;
7191
7192typedef struct VkPipelineRenderingCreateInfo {
7193    VkStructureType    sType;
7194    const void*        pNext;
7195    uint32_t           viewMask;
7196    uint32_t           colorAttachmentCount;
7197    const VkFormat*    pColorAttachmentFormats;
7198    VkFormat           depthAttachmentFormat;
7199    VkFormat           stencilAttachmentFormat;
7200} VkPipelineRenderingCreateInfo;
7201
7202typedef struct VkPhysicalDeviceDynamicRenderingFeatures {
7203    VkStructureType    sType;
7204    void*              pNext;
7205    VkBool32           dynamicRendering;
7206} VkPhysicalDeviceDynamicRenderingFeatures;
7207
7208typedef struct VkCommandBufferInheritanceRenderingInfo {
7209    VkStructureType          sType;
7210    const void*              pNext;
7211    VkRenderingFlags         flags;
7212    uint32_t                 viewMask;
7213    uint32_t                 colorAttachmentCount;
7214    const VkFormat*          pColorAttachmentFormats;
7215    VkFormat                 depthAttachmentFormat;
7216    VkFormat                 stencilAttachmentFormat;
7217    VkSampleCountFlagBits    rasterizationSamples;
7218} VkCommandBufferInheritanceRenderingInfo;
7219
7220typedef struct VkPhysicalDeviceShaderIntegerDotProductFeatures {
7221    VkStructureType    sType;
7222    void*              pNext;
7223    VkBool32           shaderIntegerDotProduct;
7224} VkPhysicalDeviceShaderIntegerDotProductFeatures;
7225
7226typedef struct VkPhysicalDeviceShaderIntegerDotProductProperties {
7227    VkStructureType    sType;
7228    void*              pNext;
7229    VkBool32           integerDotProduct8BitUnsignedAccelerated;
7230    VkBool32           integerDotProduct8BitSignedAccelerated;
7231    VkBool32           integerDotProduct8BitMixedSignednessAccelerated;
7232    VkBool32           integerDotProduct4x8BitPackedUnsignedAccelerated;
7233    VkBool32           integerDotProduct4x8BitPackedSignedAccelerated;
7234    VkBool32           integerDotProduct4x8BitPackedMixedSignednessAccelerated;
7235    VkBool32           integerDotProduct16BitUnsignedAccelerated;
7236    VkBool32           integerDotProduct16BitSignedAccelerated;
7237    VkBool32           integerDotProduct16BitMixedSignednessAccelerated;
7238    VkBool32           integerDotProduct32BitUnsignedAccelerated;
7239    VkBool32           integerDotProduct32BitSignedAccelerated;
7240    VkBool32           integerDotProduct32BitMixedSignednessAccelerated;
7241    VkBool32           integerDotProduct64BitUnsignedAccelerated;
7242    VkBool32           integerDotProduct64BitSignedAccelerated;
7243    VkBool32           integerDotProduct64BitMixedSignednessAccelerated;
7244    VkBool32           integerDotProductAccumulatingSaturating8BitUnsignedAccelerated;
7245    VkBool32           integerDotProductAccumulatingSaturating8BitSignedAccelerated;
7246    VkBool32           integerDotProductAccumulatingSaturating8BitMixedSignednessAccelerated;
7247    VkBool32           integerDotProductAccumulatingSaturating4x8BitPackedUnsignedAccelerated;
7248    VkBool32           integerDotProductAccumulatingSaturating4x8BitPackedSignedAccelerated;
7249    VkBool32           integerDotProductAccumulatingSaturating4x8BitPackedMixedSignednessAccelerated;
7250    VkBool32           integerDotProductAccumulatingSaturating16BitUnsignedAccelerated;
7251    VkBool32           integerDotProductAccumulatingSaturating16BitSignedAccelerated;
7252    VkBool32           integerDotProductAccumulatingSaturating16BitMixedSignednessAccelerated;
7253    VkBool32           integerDotProductAccumulatingSaturating32BitUnsignedAccelerated;
7254    VkBool32           integerDotProductAccumulatingSaturating32BitSignedAccelerated;
7255    VkBool32           integerDotProductAccumulatingSaturating32BitMixedSignednessAccelerated;
7256    VkBool32           integerDotProductAccumulatingSaturating64BitUnsignedAccelerated;
7257    VkBool32           integerDotProductAccumulatingSaturating64BitSignedAccelerated;
7258    VkBool32           integerDotProductAccumulatingSaturating64BitMixedSignednessAccelerated;
7259} VkPhysicalDeviceShaderIntegerDotProductProperties;
7260
7261typedef struct VkPhysicalDeviceTexelBufferAlignmentProperties {
7262    VkStructureType    sType;
7263    void*              pNext;
7264    VkDeviceSize       storageTexelBufferOffsetAlignmentBytes;
7265    VkBool32           storageTexelBufferOffsetSingleTexelAlignment;
7266    VkDeviceSize       uniformTexelBufferOffsetAlignmentBytes;
7267    VkBool32           uniformTexelBufferOffsetSingleTexelAlignment;
7268} VkPhysicalDeviceTexelBufferAlignmentProperties;
7269
7270typedef struct VkFormatProperties3 {
7271    VkStructureType          sType;
7272    void*                    pNext;
7273    VkFormatFeatureFlags2    linearTilingFeatures;
7274    VkFormatFeatureFlags2    optimalTilingFeatures;
7275    VkFormatFeatureFlags2    bufferFeatures;
7276} VkFormatProperties3;
7277
7278typedef struct VkPhysicalDeviceMaintenance4Features {
7279    VkStructureType    sType;
7280    void*              pNext;
7281    VkBool32           maintenance4;
7282} VkPhysicalDeviceMaintenance4Features;
7283
7284typedef struct VkPhysicalDeviceMaintenance4Properties {
7285    VkStructureType    sType;
7286    void*              pNext;
7287    VkDeviceSize       maxBufferSize;
7288} VkPhysicalDeviceMaintenance4Properties;
7289
7290typedef struct VkDeviceBufferMemoryRequirements {
7291    VkStructureType              sType;
7292    const void*                  pNext;
7293    const VkBufferCreateInfo*    pCreateInfo;
7294} VkDeviceBufferMemoryRequirements;
7295
7296typedef struct VkDeviceImageMemoryRequirements {
7297    VkStructureType             sType;
7298    const void*                 pNext;
7299    const VkImageCreateInfo*    pCreateInfo;
7300    VkImageAspectFlagBits       planeAspect;
7301} VkDeviceImageMemoryRequirements;
7302
7303typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceToolProperties)(VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolProperties* pToolProperties);
7304typedef VkResult (VKAPI_PTR *PFN_vkCreatePrivateDataSlot)(VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlot* pPrivateDataSlot);
7305typedef void (VKAPI_PTR *PFN_vkDestroyPrivateDataSlot)(VkDevice device, VkPrivateDataSlot privateDataSlot, const VkAllocationCallbacks* pAllocator);
7306typedef VkResult (VKAPI_PTR *PFN_vkSetPrivateData)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t data);
7307typedef void (VKAPI_PTR *PFN_vkGetPrivateData)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t* pData);
7308typedef void (VKAPI_PTR *PFN_vkCmdSetEvent2)(VkCommandBuffer                   commandBuffer, VkEvent                                             event, const VkDependencyInfo*                             pDependencyInfo);
7309typedef void (VKAPI_PTR *PFN_vkCmdResetEvent2)(VkCommandBuffer                   commandBuffer, VkEvent                                             event, VkPipelineStageFlags2               stageMask);
7310typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents2)(VkCommandBuffer                   commandBuffer, uint32_t                                            eventCount, const VkEvent*                     pEvents, const VkDependencyInfo*            pDependencyInfos);
7311typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier2)(VkCommandBuffer                   commandBuffer, const VkDependencyInfo*                             pDependencyInfo);
7312typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp2)(VkCommandBuffer                   commandBuffer, VkPipelineStageFlags2               stage, VkQueryPool                                         queryPool, uint32_t                                            query);
7313typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit2)(VkQueue                           queue, uint32_t                            submitCount, const VkSubmitInfo2*              pSubmits, VkFence           fence);
7314typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer2)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo);
7315typedef void (VKAPI_PTR *PFN_vkCmdCopyImage2)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo);
7316typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage2)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo);
7317typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo);
7318typedef void (VKAPI_PTR *PFN_vkCmdBlitImage2)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo);
7319typedef void (VKAPI_PTR *PFN_vkCmdResolveImage2)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo);
7320typedef void (VKAPI_PTR *PFN_vkCmdBeginRendering)(VkCommandBuffer                   commandBuffer, const VkRenderingInfo*                              pRenderingInfo);
7321typedef void (VKAPI_PTR *PFN_vkCmdEndRendering)(VkCommandBuffer                   commandBuffer);
7322typedef void (VKAPI_PTR *PFN_vkCmdSetCullMode)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode);
7323typedef void (VKAPI_PTR *PFN_vkCmdSetFrontFace)(VkCommandBuffer commandBuffer, VkFrontFace frontFace);
7324typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveTopology)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology);
7325typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCount)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports);
7326typedef void (VKAPI_PTR *PFN_vkCmdSetScissorWithCount)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors);
7327typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers2)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides);
7328typedef void (VKAPI_PTR *PFN_vkCmdSetDepthTestEnable)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable);
7329typedef void (VKAPI_PTR *PFN_vkCmdSetDepthWriteEnable)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable);
7330typedef void (VKAPI_PTR *PFN_vkCmdSetDepthCompareOp)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp);
7331typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBoundsTestEnable)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable);
7332typedef void (VKAPI_PTR *PFN_vkCmdSetStencilTestEnable)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable);
7333typedef void (VKAPI_PTR *PFN_vkCmdSetStencilOp)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp);
7334typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizerDiscardEnable)(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable);
7335typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBiasEnable)(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable);
7336typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveRestartEnable)(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable);
7337typedef void (VKAPI_PTR *PFN_vkGetDeviceBufferMemoryRequirements)(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements);
7338typedef void (VKAPI_PTR *PFN_vkGetDeviceImageMemoryRequirements)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements);
7339typedef void (VKAPI_PTR *PFN_vkGetDeviceImageSparseMemoryRequirements)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
7340
7341#ifndef VK_NO_PROTOTYPES
7342VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceToolProperties(
7343    VkPhysicalDevice                            physicalDevice,
7344    uint32_t*                                   pToolCount,
7345    VkPhysicalDeviceToolProperties*             pToolProperties);
7346
7347VKAPI_ATTR VkResult VKAPI_CALL vkCreatePrivateDataSlot(
7348    VkDevice                                    device,
7349    const VkPrivateDataSlotCreateInfo*          pCreateInfo,
7350    const VkAllocationCallbacks*                pAllocator,
7351    VkPrivateDataSlot*                          pPrivateDataSlot);
7352
7353VKAPI_ATTR void VKAPI_CALL vkDestroyPrivateDataSlot(
7354    VkDevice                                    device,
7355    VkPrivateDataSlot                           privateDataSlot,
7356    const VkAllocationCallbacks*                pAllocator);
7357
7358VKAPI_ATTR VkResult VKAPI_CALL vkSetPrivateData(
7359    VkDevice                                    device,
7360    VkObjectType                                objectType,
7361    uint64_t                                    objectHandle,
7362    VkPrivateDataSlot                           privateDataSlot,
7363    uint64_t                                    data);
7364
7365VKAPI_ATTR void VKAPI_CALL vkGetPrivateData(
7366    VkDevice                                    device,
7367    VkObjectType                                objectType,
7368    uint64_t                                    objectHandle,
7369    VkPrivateDataSlot                           privateDataSlot,
7370    uint64_t*                                   pData);
7371
7372VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent2(
7373    VkCommandBuffer                             commandBuffer,
7374    VkEvent                                     event,
7375    const VkDependencyInfo*                     pDependencyInfo);
7376
7377VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent2(
7378    VkCommandBuffer                             commandBuffer,
7379    VkEvent                                     event,
7380    VkPipelineStageFlags2                       stageMask);
7381
7382VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents2(
7383    VkCommandBuffer                             commandBuffer,
7384    uint32_t                                    eventCount,
7385    const VkEvent*                              pEvents,
7386    const VkDependencyInfo*                     pDependencyInfos);
7387
7388VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier2(
7389    VkCommandBuffer                             commandBuffer,
7390    const VkDependencyInfo*                     pDependencyInfo);
7391
7392VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp2(
7393    VkCommandBuffer                             commandBuffer,
7394    VkPipelineStageFlags2                       stage,
7395    VkQueryPool                                 queryPool,
7396    uint32_t                                    query);
7397
7398VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit2(
7399    VkQueue                                     queue,
7400    uint32_t                                    submitCount,
7401    const VkSubmitInfo2*                        pSubmits,
7402    VkFence                                     fence);
7403
7404VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer2(
7405    VkCommandBuffer                             commandBuffer,
7406    const VkCopyBufferInfo2*                    pCopyBufferInfo);
7407
7408VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage2(
7409    VkCommandBuffer                             commandBuffer,
7410    const VkCopyImageInfo2*                     pCopyImageInfo);
7411
7412VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage2(
7413    VkCommandBuffer                             commandBuffer,
7414    const VkCopyBufferToImageInfo2*             pCopyBufferToImageInfo);
7415
7416VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer2(
7417    VkCommandBuffer                             commandBuffer,
7418    const VkCopyImageToBufferInfo2*             pCopyImageToBufferInfo);
7419
7420VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage2(
7421    VkCommandBuffer                             commandBuffer,
7422    const VkBlitImageInfo2*                     pBlitImageInfo);
7423
7424VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage2(
7425    VkCommandBuffer                             commandBuffer,
7426    const VkResolveImageInfo2*                  pResolveImageInfo);
7427
7428VKAPI_ATTR void VKAPI_CALL vkCmdBeginRendering(
7429    VkCommandBuffer                             commandBuffer,
7430    const VkRenderingInfo*                      pRenderingInfo);
7431
7432VKAPI_ATTR void VKAPI_CALL vkCmdEndRendering(
7433    VkCommandBuffer                             commandBuffer);
7434
7435VKAPI_ATTR void VKAPI_CALL vkCmdSetCullMode(
7436    VkCommandBuffer                             commandBuffer,
7437    VkCullModeFlags                             cullMode);
7438
7439VKAPI_ATTR void VKAPI_CALL vkCmdSetFrontFace(
7440    VkCommandBuffer                             commandBuffer,
7441    VkFrontFace                                 frontFace);
7442
7443VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveTopology(
7444    VkCommandBuffer                             commandBuffer,
7445    VkPrimitiveTopology                         primitiveTopology);
7446
7447VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWithCount(
7448    VkCommandBuffer                             commandBuffer,
7449    uint32_t                                    viewportCount,
7450    const VkViewport*                           pViewports);
7451
7452VKAPI_ATTR void VKAPI_CALL vkCmdSetScissorWithCount(
7453    VkCommandBuffer                             commandBuffer,
7454    uint32_t                                    scissorCount,
7455    const VkRect2D*                             pScissors);
7456
7457VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers2(
7458    VkCommandBuffer                             commandBuffer,
7459    uint32_t                                    firstBinding,
7460    uint32_t                                    bindingCount,
7461    const VkBuffer*                             pBuffers,
7462    const VkDeviceSize*                         pOffsets,
7463    const VkDeviceSize*                         pSizes,
7464    const VkDeviceSize*                         pStrides);
7465
7466VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthTestEnable(
7467    VkCommandBuffer                             commandBuffer,
7468    VkBool32                                    depthTestEnable);
7469
7470VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthWriteEnable(
7471    VkCommandBuffer                             commandBuffer,
7472    VkBool32                                    depthWriteEnable);
7473
7474VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthCompareOp(
7475    VkCommandBuffer                             commandBuffer,
7476    VkCompareOp                                 depthCompareOp);
7477
7478VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBoundsTestEnable(
7479    VkCommandBuffer                             commandBuffer,
7480    VkBool32                                    depthBoundsTestEnable);
7481
7482VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilTestEnable(
7483    VkCommandBuffer                             commandBuffer,
7484    VkBool32                                    stencilTestEnable);
7485
7486VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilOp(
7487    VkCommandBuffer                             commandBuffer,
7488    VkStencilFaceFlags                          faceMask,
7489    VkStencilOp                                 failOp,
7490    VkStencilOp                                 passOp,
7491    VkStencilOp                                 depthFailOp,
7492    VkCompareOp                                 compareOp);
7493
7494VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizerDiscardEnable(
7495    VkCommandBuffer                             commandBuffer,
7496    VkBool32                                    rasterizerDiscardEnable);
7497
7498VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBiasEnable(
7499    VkCommandBuffer                             commandBuffer,
7500    VkBool32                                    depthBiasEnable);
7501
7502VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveRestartEnable(
7503    VkCommandBuffer                             commandBuffer,
7504    VkBool32                                    primitiveRestartEnable);
7505
7506VKAPI_ATTR void VKAPI_CALL vkGetDeviceBufferMemoryRequirements(
7507    VkDevice                                    device,
7508    const VkDeviceBufferMemoryRequirements*     pInfo,
7509    VkMemoryRequirements2*                      pMemoryRequirements);
7510
7511VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageMemoryRequirements(
7512    VkDevice                                    device,
7513    const VkDeviceImageMemoryRequirements*      pInfo,
7514    VkMemoryRequirements2*                      pMemoryRequirements);
7515
7516VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageSparseMemoryRequirements(
7517    VkDevice                                    device,
7518    const VkDeviceImageMemoryRequirements*      pInfo,
7519    uint32_t*                                   pSparseMemoryRequirementCount,
7520    VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements);
7521#endif
7522
7523
7524// VK_KHR_surface is a preprocessor guard. Do not pass it to API calls.
7525#define VK_KHR_surface 1
7526VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
7527#define VK_KHR_SURFACE_SPEC_VERSION       25
7528#define VK_KHR_SURFACE_EXTENSION_NAME     "VK_KHR_surface"
7529
7530typedef enum VkPresentModeKHR {
7531    VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
7532    VK_PRESENT_MODE_MAILBOX_KHR = 1,
7533    VK_PRESENT_MODE_FIFO_KHR = 2,
7534    VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,
7535    VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,
7536    VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,
7537    VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
7538} VkPresentModeKHR;
7539
7540typedef enum VkColorSpaceKHR {
7541    VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,
7542    VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
7543    VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
7544    VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT = 1000104003,
7545    VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
7546    VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
7547    VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
7548    VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
7549    VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
7550    VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
7551    VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
7552    VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
7553    VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
7554    VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
7555    VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014,
7556    VK_COLOR_SPACE_DISPLAY_NATIVE_AMD = 1000213000,
7557    VK_COLORSPACE_SRGB_NONLINEAR_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
7558    VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = VK_COLOR_SPACE_DISPLAY_P3_LINEAR_EXT,
7559    VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF
7560} VkColorSpaceKHR;
7561
7562typedef enum VkSurfaceTransformFlagBitsKHR {
7563    VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
7564    VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
7565    VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
7566    VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
7567    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
7568    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
7569    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
7570    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
7571    VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
7572    VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
7573} VkSurfaceTransformFlagBitsKHR;
7574
7575typedef enum VkCompositeAlphaFlagBitsKHR {
7576    VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
7577    VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
7578    VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
7579    VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
7580    VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
7581} VkCompositeAlphaFlagBitsKHR;
7582typedef VkFlags VkCompositeAlphaFlagsKHR;
7583typedef VkFlags VkSurfaceTransformFlagsKHR;
7584typedef struct VkSurfaceCapabilitiesKHR {
7585    uint32_t                         minImageCount;
7586    uint32_t                         maxImageCount;
7587    VkExtent2D                       currentExtent;
7588    VkExtent2D                       minImageExtent;
7589    VkExtent2D                       maxImageExtent;
7590    uint32_t                         maxImageArrayLayers;
7591    VkSurfaceTransformFlagsKHR       supportedTransforms;
7592    VkSurfaceTransformFlagBitsKHR    currentTransform;
7593    VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
7594    VkImageUsageFlags                supportedUsageFlags;
7595} VkSurfaceCapabilitiesKHR;
7596
7597typedef struct VkSurfaceFormatKHR {
7598    VkFormat           format;
7599    VkColorSpaceKHR    colorSpace;
7600} VkSurfaceFormatKHR;
7601
7602typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator);
7603typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
7604typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
7605typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
7606typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
7607
7608#ifndef VK_NO_PROTOTYPES
7609VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
7610    VkInstance                                  instance,
7611    VkSurfaceKHR                                surface,
7612    const VkAllocationCallbacks*                pAllocator);
7613
7614VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
7615    VkPhysicalDevice                            physicalDevice,
7616    uint32_t                                    queueFamilyIndex,
7617    VkSurfaceKHR                                surface,
7618    VkBool32*                                   pSupported);
7619
7620VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
7621    VkPhysicalDevice                            physicalDevice,
7622    VkSurfaceKHR                                surface,
7623    VkSurfaceCapabilitiesKHR*                   pSurfaceCapabilities);
7624
7625VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR(
7626    VkPhysicalDevice                            physicalDevice,
7627    VkSurfaceKHR                                surface,
7628    uint32_t*                                   pSurfaceFormatCount,
7629    VkSurfaceFormatKHR*                         pSurfaceFormats);
7630
7631VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
7632    VkPhysicalDevice                            physicalDevice,
7633    VkSurfaceKHR                                surface,
7634    uint32_t*                                   pPresentModeCount,
7635    VkPresentModeKHR*                           pPresentModes);
7636#endif
7637
7638
7639// VK_KHR_swapchain is a preprocessor guard. Do not pass it to API calls.
7640#define VK_KHR_swapchain 1
7641VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
7642#define VK_KHR_SWAPCHAIN_SPEC_VERSION     70
7643#define VK_KHR_SWAPCHAIN_EXTENSION_NAME   "VK_KHR_swapchain"
7644
7645typedef enum VkSwapchainCreateFlagBitsKHR {
7646    VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0x00000001,
7647    VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0x00000002,
7648    VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR = 0x00000004,
7649    VK_SWAPCHAIN_CREATE_DEFERRED_MEMORY_ALLOCATION_BIT_EXT = 0x00000008,
7650    VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
7651} VkSwapchainCreateFlagBitsKHR;
7652typedef VkFlags VkSwapchainCreateFlagsKHR;
7653
7654typedef enum VkDeviceGroupPresentModeFlagBitsKHR {
7655    VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 0x00000001,
7656    VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 0x00000002,
7657    VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 0x00000004,
7658    VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 0x00000008,
7659    VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
7660} VkDeviceGroupPresentModeFlagBitsKHR;
7661typedef VkFlags VkDeviceGroupPresentModeFlagsKHR;
7662typedef struct VkSwapchainCreateInfoKHR {
7663    VkStructureType                  sType;
7664    const void*                      pNext;
7665    VkSwapchainCreateFlagsKHR        flags;
7666    VkSurfaceKHR                     surface;
7667    uint32_t                         minImageCount;
7668    VkFormat                         imageFormat;
7669    VkColorSpaceKHR                  imageColorSpace;
7670    VkExtent2D                       imageExtent;
7671    uint32_t                         imageArrayLayers;
7672    VkImageUsageFlags                imageUsage;
7673    VkSharingMode                    imageSharingMode;
7674    uint32_t                         queueFamilyIndexCount;
7675    const uint32_t*                  pQueueFamilyIndices;
7676    VkSurfaceTransformFlagBitsKHR    preTransform;
7677    VkCompositeAlphaFlagBitsKHR      compositeAlpha;
7678    VkPresentModeKHR                 presentMode;
7679    VkBool32                         clipped;
7680    VkSwapchainKHR                   oldSwapchain;
7681} VkSwapchainCreateInfoKHR;
7682
7683typedef struct VkPresentInfoKHR {
7684    VkStructureType          sType;
7685    const void*              pNext;
7686    uint32_t                 waitSemaphoreCount;
7687    const VkSemaphore*       pWaitSemaphores;
7688    uint32_t                 swapchainCount;
7689    const VkSwapchainKHR*    pSwapchains;
7690    const uint32_t*          pImageIndices;
7691    VkResult*                pResults;
7692} VkPresentInfoKHR;
7693
7694typedef struct VkImageSwapchainCreateInfoKHR {
7695    VkStructureType    sType;
7696    const void*        pNext;
7697    VkSwapchainKHR     swapchain;
7698} VkImageSwapchainCreateInfoKHR;
7699
7700typedef struct VkBindImageMemorySwapchainInfoKHR {
7701    VkStructureType    sType;
7702    const void*        pNext;
7703    VkSwapchainKHR     swapchain;
7704    uint32_t           imageIndex;
7705} VkBindImageMemorySwapchainInfoKHR;
7706
7707typedef struct VkAcquireNextImageInfoKHR {
7708    VkStructureType    sType;
7709    const void*        pNext;
7710    VkSwapchainKHR     swapchain;
7711    uint64_t           timeout;
7712    VkSemaphore        semaphore;
7713    VkFence            fence;
7714    uint32_t           deviceMask;
7715} VkAcquireNextImageInfoKHR;
7716
7717typedef struct VkDeviceGroupPresentCapabilitiesKHR {
7718    VkStructureType                     sType;
7719    void*                               pNext;
7720    uint32_t                            presentMask[VK_MAX_DEVICE_GROUP_SIZE];
7721    VkDeviceGroupPresentModeFlagsKHR    modes;
7722} VkDeviceGroupPresentCapabilitiesKHR;
7723
7724typedef struct VkDeviceGroupPresentInfoKHR {
7725    VkStructureType                        sType;
7726    const void*                            pNext;
7727    uint32_t                               swapchainCount;
7728    const uint32_t*                        pDeviceMasks;
7729    VkDeviceGroupPresentModeFlagBitsKHR    mode;
7730} VkDeviceGroupPresentInfoKHR;
7731
7732typedef struct VkDeviceGroupSwapchainCreateInfoKHR {
7733    VkStructureType                     sType;
7734    const void*                         pNext;
7735    VkDeviceGroupPresentModeFlagsKHR    modes;
7736} VkDeviceGroupSwapchainCreateInfoKHR;
7737
7738typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain);
7739typedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator);
7740typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages);
7741typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex);
7742typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR* pPresentInfo);
7743typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHR)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities);
7744typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHR)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes);
7745typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects);
7746typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImage2KHR)(VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex);
7747
7748#ifndef VK_NO_PROTOTYPES
7749VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(
7750    VkDevice                                    device,
7751    const VkSwapchainCreateInfoKHR*             pCreateInfo,
7752    const VkAllocationCallbacks*                pAllocator,
7753    VkSwapchainKHR*                             pSwapchain);
7754
7755VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR(
7756    VkDevice                                    device,
7757    VkSwapchainKHR                              swapchain,
7758    const VkAllocationCallbacks*                pAllocator);
7759
7760VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR(
7761    VkDevice                                    device,
7762    VkSwapchainKHR                              swapchain,
7763    uint32_t*                                   pSwapchainImageCount,
7764    VkImage*                                    pSwapchainImages);
7765
7766VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(
7767    VkDevice                                    device,
7768    VkSwapchainKHR                              swapchain,
7769    uint64_t                                    timeout,
7770    VkSemaphore                                 semaphore,
7771    VkFence                                     fence,
7772    uint32_t*                                   pImageIndex);
7773
7774VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
7775    VkQueue                                     queue,
7776    const VkPresentInfoKHR*                     pPresentInfo);
7777
7778VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupPresentCapabilitiesKHR(
7779    VkDevice                                    device,
7780    VkDeviceGroupPresentCapabilitiesKHR*        pDeviceGroupPresentCapabilities);
7781
7782VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHR(
7783    VkDevice                                    device,
7784    VkSurfaceKHR                                surface,
7785    VkDeviceGroupPresentModeFlagsKHR*           pModes);
7786
7787VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHR(
7788    VkPhysicalDevice                            physicalDevice,
7789    VkSurfaceKHR                                surface,
7790    uint32_t*                                   pRectCount,
7791    VkRect2D*                                   pRects);
7792
7793VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHR(
7794    VkDevice                                    device,
7795    const VkAcquireNextImageInfoKHR*            pAcquireInfo,
7796    uint32_t*                                   pImageIndex);
7797#endif
7798
7799
7800// VK_KHR_display is a preprocessor guard. Do not pass it to API calls.
7801#define VK_KHR_display 1
7802VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
7803VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
7804#define VK_KHR_DISPLAY_SPEC_VERSION       23
7805#define VK_KHR_DISPLAY_EXTENSION_NAME     "VK_KHR_display"
7806typedef VkFlags VkDisplayModeCreateFlagsKHR;
7807
7808typedef enum VkDisplayPlaneAlphaFlagBitsKHR {
7809    VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
7810    VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
7811    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
7812    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
7813    VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
7814} VkDisplayPlaneAlphaFlagBitsKHR;
7815typedef VkFlags VkDisplayPlaneAlphaFlagsKHR;
7816typedef VkFlags VkDisplaySurfaceCreateFlagsKHR;
7817typedef struct VkDisplayModeParametersKHR {
7818    VkExtent2D    visibleRegion;
7819    uint32_t      refreshRate;
7820} VkDisplayModeParametersKHR;
7821
7822typedef struct VkDisplayModeCreateInfoKHR {
7823    VkStructureType                sType;
7824    const void*                    pNext;
7825    VkDisplayModeCreateFlagsKHR    flags;
7826    VkDisplayModeParametersKHR     parameters;
7827} VkDisplayModeCreateInfoKHR;
7828
7829typedef struct VkDisplayModePropertiesKHR {
7830    VkDisplayModeKHR              displayMode;
7831    VkDisplayModeParametersKHR    parameters;
7832} VkDisplayModePropertiesKHR;
7833
7834typedef struct VkDisplayPlaneCapabilitiesKHR {
7835    VkDisplayPlaneAlphaFlagsKHR    supportedAlpha;
7836    VkOffset2D                     minSrcPosition;
7837    VkOffset2D                     maxSrcPosition;
7838    VkExtent2D                     minSrcExtent;
7839    VkExtent2D                     maxSrcExtent;
7840    VkOffset2D                     minDstPosition;
7841    VkOffset2D                     maxDstPosition;
7842    VkExtent2D                     minDstExtent;
7843    VkExtent2D                     maxDstExtent;
7844} VkDisplayPlaneCapabilitiesKHR;
7845
7846typedef struct VkDisplayPlanePropertiesKHR {
7847    VkDisplayKHR    currentDisplay;
7848    uint32_t        currentStackIndex;
7849} VkDisplayPlanePropertiesKHR;
7850
7851typedef struct VkDisplayPropertiesKHR {
7852    VkDisplayKHR                  display;
7853    const char*                   displayName;
7854    VkExtent2D                    physicalDimensions;
7855    VkExtent2D                    physicalResolution;
7856    VkSurfaceTransformFlagsKHR    supportedTransforms;
7857    VkBool32                      planeReorderPossible;
7858    VkBool32                      persistentContent;
7859} VkDisplayPropertiesKHR;
7860
7861typedef struct VkDisplaySurfaceCreateInfoKHR {
7862    VkStructureType                   sType;
7863    const void*                       pNext;
7864    VkDisplaySurfaceCreateFlagsKHR    flags;
7865    VkDisplayModeKHR                  displayMode;
7866    uint32_t                          planeIndex;
7867    uint32_t                          planeStackIndex;
7868    VkSurfaceTransformFlagBitsKHR     transform;
7869    float                             globalAlpha;
7870    VkDisplayPlaneAlphaFlagBitsKHR    alphaMode;
7871    VkExtent2D                        imageExtent;
7872} VkDisplaySurfaceCreateInfoKHR;
7873
7874typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
7875typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
7876typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays);
7877typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
7878typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
7879typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
7880typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
7881
7882#ifndef VK_NO_PROTOTYPES
7883VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR(
7884    VkPhysicalDevice                            physicalDevice,
7885    uint32_t*                                   pPropertyCount,
7886    VkDisplayPropertiesKHR*                     pProperties);
7887
7888VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
7889    VkPhysicalDevice                            physicalDevice,
7890    uint32_t*                                   pPropertyCount,
7891    VkDisplayPlanePropertiesKHR*                pProperties);
7892
7893VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR(
7894    VkPhysicalDevice                            physicalDevice,
7895    uint32_t                                    planeIndex,
7896    uint32_t*                                   pDisplayCount,
7897    VkDisplayKHR*                               pDisplays);
7898
7899VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR(
7900    VkPhysicalDevice                            physicalDevice,
7901    VkDisplayKHR                                display,
7902    uint32_t*                                   pPropertyCount,
7903    VkDisplayModePropertiesKHR*                 pProperties);
7904
7905VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR(
7906    VkPhysicalDevice                            physicalDevice,
7907    VkDisplayKHR                                display,
7908    const VkDisplayModeCreateInfoKHR*           pCreateInfo,
7909    const VkAllocationCallbacks*                pAllocator,
7910    VkDisplayModeKHR*                           pMode);
7911
7912VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR(
7913    VkPhysicalDevice                            physicalDevice,
7914    VkDisplayModeKHR                            mode,
7915    uint32_t                                    planeIndex,
7916    VkDisplayPlaneCapabilitiesKHR*              pCapabilities);
7917
7918VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
7919    VkInstance                                  instance,
7920    const VkDisplaySurfaceCreateInfoKHR*        pCreateInfo,
7921    const VkAllocationCallbacks*                pAllocator,
7922    VkSurfaceKHR*                               pSurface);
7923#endif
7924
7925
7926// VK_KHR_display_swapchain is a preprocessor guard. Do not pass it to API calls.
7927#define VK_KHR_display_swapchain 1
7928#define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 10
7929#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
7930typedef struct VkDisplayPresentInfoKHR {
7931    VkStructureType    sType;
7932    const void*        pNext;
7933    VkRect2D           srcRect;
7934    VkRect2D           dstRect;
7935    VkBool32           persistent;
7936} VkDisplayPresentInfoKHR;
7937
7938typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains);
7939
7940#ifndef VK_NO_PROTOTYPES
7941VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR(
7942    VkDevice                                    device,
7943    uint32_t                                    swapchainCount,
7944    const VkSwapchainCreateInfoKHR*             pCreateInfos,
7945    const VkAllocationCallbacks*                pAllocator,
7946    VkSwapchainKHR*                             pSwapchains);
7947#endif
7948
7949
7950// VK_KHR_sampler_mirror_clamp_to_edge is a preprocessor guard. Do not pass it to API calls.
7951#define VK_KHR_sampler_mirror_clamp_to_edge 1
7952#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 3
7953#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME "VK_KHR_sampler_mirror_clamp_to_edge"
7954
7955
7956// VK_KHR_video_queue is a preprocessor guard. Do not pass it to API calls.
7957#define VK_KHR_video_queue 1
7958VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionKHR)
7959VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkVideoSessionParametersKHR)
7960#define VK_KHR_VIDEO_QUEUE_SPEC_VERSION   8
7961#define VK_KHR_VIDEO_QUEUE_EXTENSION_NAME "VK_KHR_video_queue"
7962
7963typedef enum VkQueryResultStatusKHR {
7964    VK_QUERY_RESULT_STATUS_ERROR_KHR = -1,
7965    VK_QUERY_RESULT_STATUS_NOT_READY_KHR = 0,
7966    VK_QUERY_RESULT_STATUS_COMPLETE_KHR = 1,
7967    VK_QUERY_RESULT_STATUS_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_KHR = -1000299000,
7968    VK_QUERY_RESULT_STATUS_MAX_ENUM_KHR = 0x7FFFFFFF
7969} VkQueryResultStatusKHR;
7970
7971typedef enum VkVideoCodecOperationFlagBitsKHR {
7972    VK_VIDEO_CODEC_OPERATION_NONE_KHR = 0,
7973    VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_KHR = 0x00010000,
7974    VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_KHR = 0x00020000,
7975    VK_VIDEO_CODEC_OPERATION_DECODE_H264_BIT_KHR = 0x00000001,
7976    VK_VIDEO_CODEC_OPERATION_DECODE_H265_BIT_KHR = 0x00000002,
7977    VK_VIDEO_CODEC_OPERATION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
7978} VkVideoCodecOperationFlagBitsKHR;
7979typedef VkFlags VkVideoCodecOperationFlagsKHR;
7980
7981typedef enum VkVideoChromaSubsamplingFlagBitsKHR {
7982    VK_VIDEO_CHROMA_SUBSAMPLING_INVALID_KHR = 0,
7983    VK_VIDEO_CHROMA_SUBSAMPLING_MONOCHROME_BIT_KHR = 0x00000001,
7984    VK_VIDEO_CHROMA_SUBSAMPLING_420_BIT_KHR = 0x00000002,
7985    VK_VIDEO_CHROMA_SUBSAMPLING_422_BIT_KHR = 0x00000004,
7986    VK_VIDEO_CHROMA_SUBSAMPLING_444_BIT_KHR = 0x00000008,
7987    VK_VIDEO_CHROMA_SUBSAMPLING_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
7988} VkVideoChromaSubsamplingFlagBitsKHR;
7989typedef VkFlags VkVideoChromaSubsamplingFlagsKHR;
7990
7991typedef enum VkVideoComponentBitDepthFlagBitsKHR {
7992    VK_VIDEO_COMPONENT_BIT_DEPTH_INVALID_KHR = 0,
7993    VK_VIDEO_COMPONENT_BIT_DEPTH_8_BIT_KHR = 0x00000001,
7994    VK_VIDEO_COMPONENT_BIT_DEPTH_10_BIT_KHR = 0x00000004,
7995    VK_VIDEO_COMPONENT_BIT_DEPTH_12_BIT_KHR = 0x00000010,
7996    VK_VIDEO_COMPONENT_BIT_DEPTH_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
7997} VkVideoComponentBitDepthFlagBitsKHR;
7998typedef VkFlags VkVideoComponentBitDepthFlagsKHR;
7999
8000typedef enum VkVideoCapabilityFlagBitsKHR {
8001    VK_VIDEO_CAPABILITY_PROTECTED_CONTENT_BIT_KHR = 0x00000001,
8002    VK_VIDEO_CAPABILITY_SEPARATE_REFERENCE_IMAGES_BIT_KHR = 0x00000002,
8003    VK_VIDEO_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
8004} VkVideoCapabilityFlagBitsKHR;
8005typedef VkFlags VkVideoCapabilityFlagsKHR;
8006
8007typedef enum VkVideoSessionCreateFlagBitsKHR {
8008    VK_VIDEO_SESSION_CREATE_PROTECTED_CONTENT_BIT_KHR = 0x00000001,
8009    VK_VIDEO_SESSION_CREATE_ALLOW_ENCODE_PARAMETER_OPTIMIZATIONS_BIT_KHR = 0x00000002,
8010    VK_VIDEO_SESSION_CREATE_INLINE_QUERIES_BIT_KHR = 0x00000004,
8011    VK_VIDEO_SESSION_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
8012} VkVideoSessionCreateFlagBitsKHR;
8013typedef VkFlags VkVideoSessionCreateFlagsKHR;
8014typedef VkFlags VkVideoSessionParametersCreateFlagsKHR;
8015typedef VkFlags VkVideoBeginCodingFlagsKHR;
8016typedef VkFlags VkVideoEndCodingFlagsKHR;
8017
8018typedef enum VkVideoCodingControlFlagBitsKHR {
8019    VK_VIDEO_CODING_CONTROL_RESET_BIT_KHR = 0x00000001,
8020    VK_VIDEO_CODING_CONTROL_ENCODE_RATE_CONTROL_BIT_KHR = 0x00000002,
8021    VK_VIDEO_CODING_CONTROL_ENCODE_QUALITY_LEVEL_BIT_KHR = 0x00000004,
8022    VK_VIDEO_CODING_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
8023} VkVideoCodingControlFlagBitsKHR;
8024typedef VkFlags VkVideoCodingControlFlagsKHR;
8025typedef struct VkQueueFamilyQueryResultStatusPropertiesKHR {
8026    VkStructureType    sType;
8027    void*              pNext;
8028    VkBool32           queryResultStatusSupport;
8029} VkQueueFamilyQueryResultStatusPropertiesKHR;
8030
8031typedef struct VkQueueFamilyVideoPropertiesKHR {
8032    VkStructureType                  sType;
8033    void*                            pNext;
8034    VkVideoCodecOperationFlagsKHR    videoCodecOperations;
8035} VkQueueFamilyVideoPropertiesKHR;
8036
8037typedef struct VkVideoProfileInfoKHR {
8038    VkStructureType                     sType;
8039    const void*                         pNext;
8040    VkVideoCodecOperationFlagBitsKHR    videoCodecOperation;
8041    VkVideoChromaSubsamplingFlagsKHR    chromaSubsampling;
8042    VkVideoComponentBitDepthFlagsKHR    lumaBitDepth;
8043    VkVideoComponentBitDepthFlagsKHR    chromaBitDepth;
8044} VkVideoProfileInfoKHR;
8045
8046typedef struct VkVideoProfileListInfoKHR {
8047    VkStructureType                 sType;
8048    const void*                     pNext;
8049    uint32_t                        profileCount;
8050    const VkVideoProfileInfoKHR*    pProfiles;
8051} VkVideoProfileListInfoKHR;
8052
8053typedef struct VkVideoCapabilitiesKHR {
8054    VkStructureType              sType;
8055    void*                        pNext;
8056    VkVideoCapabilityFlagsKHR    flags;
8057    VkDeviceSize                 minBitstreamBufferOffsetAlignment;
8058    VkDeviceSize                 minBitstreamBufferSizeAlignment;
8059    VkExtent2D                   pictureAccessGranularity;
8060    VkExtent2D                   minCodedExtent;
8061    VkExtent2D                   maxCodedExtent;
8062    uint32_t                     maxDpbSlots;
8063    uint32_t                     maxActiveReferencePictures;
8064    VkExtensionProperties        stdHeaderVersion;
8065} VkVideoCapabilitiesKHR;
8066
8067typedef struct VkPhysicalDeviceVideoFormatInfoKHR {
8068    VkStructureType      sType;
8069    const void*          pNext;
8070    VkImageUsageFlags    imageUsage;
8071} VkPhysicalDeviceVideoFormatInfoKHR;
8072
8073typedef struct VkVideoFormatPropertiesKHR {
8074    VkStructureType       sType;
8075    void*                 pNext;
8076    VkFormat              format;
8077    VkComponentMapping    componentMapping;
8078    VkImageCreateFlags    imageCreateFlags;
8079    VkImageType           imageType;
8080    VkImageTiling         imageTiling;
8081    VkImageUsageFlags     imageUsageFlags;
8082} VkVideoFormatPropertiesKHR;
8083
8084typedef struct VkVideoPictureResourceInfoKHR {
8085    VkStructureType    sType;
8086    const void*        pNext;
8087    VkOffset2D         codedOffset;
8088    VkExtent2D         codedExtent;
8089    uint32_t           baseArrayLayer;
8090    VkImageView        imageViewBinding;
8091} VkVideoPictureResourceInfoKHR;
8092
8093typedef struct VkVideoReferenceSlotInfoKHR {
8094    VkStructureType                         sType;
8095    const void*                             pNext;
8096    int32_t                                 slotIndex;
8097    const VkVideoPictureResourceInfoKHR*    pPictureResource;
8098} VkVideoReferenceSlotInfoKHR;
8099
8100typedef struct VkVideoSessionMemoryRequirementsKHR {
8101    VkStructureType         sType;
8102    void*                   pNext;
8103    uint32_t                memoryBindIndex;
8104    VkMemoryRequirements    memoryRequirements;
8105} VkVideoSessionMemoryRequirementsKHR;
8106
8107typedef struct VkBindVideoSessionMemoryInfoKHR {
8108    VkStructureType    sType;
8109    const void*        pNext;
8110    uint32_t           memoryBindIndex;
8111    VkDeviceMemory     memory;
8112    VkDeviceSize       memoryOffset;
8113    VkDeviceSize       memorySize;
8114} VkBindVideoSessionMemoryInfoKHR;
8115
8116typedef struct VkVideoSessionCreateInfoKHR {
8117    VkStructureType                 sType;
8118    const void*                     pNext;
8119    uint32_t                        queueFamilyIndex;
8120    VkVideoSessionCreateFlagsKHR    flags;
8121    const VkVideoProfileInfoKHR*    pVideoProfile;
8122    VkFormat                        pictureFormat;
8123    VkExtent2D                      maxCodedExtent;
8124    VkFormat                        referencePictureFormat;
8125    uint32_t                        maxDpbSlots;
8126    uint32_t                        maxActiveReferencePictures;
8127    const VkExtensionProperties*    pStdHeaderVersion;
8128} VkVideoSessionCreateInfoKHR;
8129
8130typedef struct VkVideoSessionParametersCreateInfoKHR {
8131    VkStructureType                           sType;
8132    const void*                               pNext;
8133    VkVideoSessionParametersCreateFlagsKHR    flags;
8134    VkVideoSessionParametersKHR               videoSessionParametersTemplate;
8135    VkVideoSessionKHR                         videoSession;
8136} VkVideoSessionParametersCreateInfoKHR;
8137
8138typedef struct VkVideoSessionParametersUpdateInfoKHR {
8139    VkStructureType    sType;
8140    const void*        pNext;
8141    uint32_t           updateSequenceCount;
8142} VkVideoSessionParametersUpdateInfoKHR;
8143
8144typedef struct VkVideoBeginCodingInfoKHR {
8145    VkStructureType                       sType;
8146    const void*                           pNext;
8147    VkVideoBeginCodingFlagsKHR            flags;
8148    VkVideoSessionKHR                     videoSession;
8149    VkVideoSessionParametersKHR           videoSessionParameters;
8150    uint32_t                              referenceSlotCount;
8151    const VkVideoReferenceSlotInfoKHR*    pReferenceSlots;
8152} VkVideoBeginCodingInfoKHR;
8153
8154typedef struct VkVideoEndCodingInfoKHR {
8155    VkStructureType             sType;
8156    const void*                 pNext;
8157    VkVideoEndCodingFlagsKHR    flags;
8158} VkVideoEndCodingInfoKHR;
8159
8160typedef struct VkVideoCodingControlInfoKHR {
8161    VkStructureType                 sType;
8162    const void*                     pNext;
8163    VkVideoCodingControlFlagsKHR    flags;
8164} VkVideoCodingControlInfoKHR;
8165
8166typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoCapabilitiesKHR)(VkPhysicalDevice physicalDevice, const VkVideoProfileInfoKHR* pVideoProfile, VkVideoCapabilitiesKHR* pCapabilities);
8167typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoFormatPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoFormatInfoKHR* pVideoFormatInfo, uint32_t* pVideoFormatPropertyCount, VkVideoFormatPropertiesKHR* pVideoFormatProperties);
8168typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionKHR)(VkDevice device, const VkVideoSessionCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionKHR* pVideoSession);
8169typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionKHR)(VkDevice device, VkVideoSessionKHR videoSession, const VkAllocationCallbacks* pAllocator);
8170typedef VkResult (VKAPI_PTR *PFN_vkGetVideoSessionMemoryRequirementsKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t* pMemoryRequirementsCount, VkVideoSessionMemoryRequirementsKHR* pMemoryRequirements);
8171typedef VkResult (VKAPI_PTR *PFN_vkBindVideoSessionMemoryKHR)(VkDevice device, VkVideoSessionKHR videoSession, uint32_t bindSessionMemoryInfoCount, const VkBindVideoSessionMemoryInfoKHR* pBindSessionMemoryInfos);
8172typedef VkResult (VKAPI_PTR *PFN_vkCreateVideoSessionParametersKHR)(VkDevice device, const VkVideoSessionParametersCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkVideoSessionParametersKHR* pVideoSessionParameters);
8173typedef VkResult (VKAPI_PTR *PFN_vkUpdateVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
8174typedef void (VKAPI_PTR *PFN_vkDestroyVideoSessionParametersKHR)(VkDevice device, VkVideoSessionParametersKHR videoSessionParameters, const VkAllocationCallbacks* pAllocator);
8175typedef void (VKAPI_PTR *PFN_vkCmdBeginVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoBeginCodingInfoKHR* pBeginInfo);
8176typedef void (VKAPI_PTR *PFN_vkCmdEndVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoEndCodingInfoKHR* pEndCodingInfo);
8177typedef void (VKAPI_PTR *PFN_vkCmdControlVideoCodingKHR)(VkCommandBuffer commandBuffer, const VkVideoCodingControlInfoKHR* pCodingControlInfo);
8178
8179#ifndef VK_NO_PROTOTYPES
8180VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoCapabilitiesKHR(
8181    VkPhysicalDevice                            physicalDevice,
8182    const VkVideoProfileInfoKHR*                pVideoProfile,
8183    VkVideoCapabilitiesKHR*                     pCapabilities);
8184
8185VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoFormatPropertiesKHR(
8186    VkPhysicalDevice                            physicalDevice,
8187    const VkPhysicalDeviceVideoFormatInfoKHR*   pVideoFormatInfo,
8188    uint32_t*                                   pVideoFormatPropertyCount,
8189    VkVideoFormatPropertiesKHR*                 pVideoFormatProperties);
8190
8191VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionKHR(
8192    VkDevice                                    device,
8193    const VkVideoSessionCreateInfoKHR*          pCreateInfo,
8194    const VkAllocationCallbacks*                pAllocator,
8195    VkVideoSessionKHR*                          pVideoSession);
8196
8197VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionKHR(
8198    VkDevice                                    device,
8199    VkVideoSessionKHR                           videoSession,
8200    const VkAllocationCallbacks*                pAllocator);
8201
8202VKAPI_ATTR VkResult VKAPI_CALL vkGetVideoSessionMemoryRequirementsKHR(
8203    VkDevice                                    device,
8204    VkVideoSessionKHR                           videoSession,
8205    uint32_t*                                   pMemoryRequirementsCount,
8206    VkVideoSessionMemoryRequirementsKHR*        pMemoryRequirements);
8207
8208VKAPI_ATTR VkResult VKAPI_CALL vkBindVideoSessionMemoryKHR(
8209    VkDevice                                    device,
8210    VkVideoSessionKHR                           videoSession,
8211    uint32_t                                    bindSessionMemoryInfoCount,
8212    const VkBindVideoSessionMemoryInfoKHR*      pBindSessionMemoryInfos);
8213
8214VKAPI_ATTR VkResult VKAPI_CALL vkCreateVideoSessionParametersKHR(
8215    VkDevice                                    device,
8216    const VkVideoSessionParametersCreateInfoKHR* pCreateInfo,
8217    const VkAllocationCallbacks*                pAllocator,
8218    VkVideoSessionParametersKHR*                pVideoSessionParameters);
8219
8220VKAPI_ATTR VkResult VKAPI_CALL vkUpdateVideoSessionParametersKHR(
8221    VkDevice                                    device,
8222    VkVideoSessionParametersKHR                 videoSessionParameters,
8223    const VkVideoSessionParametersUpdateInfoKHR* pUpdateInfo);
8224
8225VKAPI_ATTR void VKAPI_CALL vkDestroyVideoSessionParametersKHR(
8226    VkDevice                                    device,
8227    VkVideoSessionParametersKHR                 videoSessionParameters,
8228    const VkAllocationCallbacks*                pAllocator);
8229
8230VKAPI_ATTR void VKAPI_CALL vkCmdBeginVideoCodingKHR(
8231    VkCommandBuffer                             commandBuffer,
8232    const VkVideoBeginCodingInfoKHR*            pBeginInfo);
8233
8234VKAPI_ATTR void VKAPI_CALL vkCmdEndVideoCodingKHR(
8235    VkCommandBuffer                             commandBuffer,
8236    const VkVideoEndCodingInfoKHR*              pEndCodingInfo);
8237
8238VKAPI_ATTR void VKAPI_CALL vkCmdControlVideoCodingKHR(
8239    VkCommandBuffer                             commandBuffer,
8240    const VkVideoCodingControlInfoKHR*          pCodingControlInfo);
8241#endif
8242
8243
8244// VK_KHR_video_decode_queue is a preprocessor guard. Do not pass it to API calls.
8245#define VK_KHR_video_decode_queue 1
8246#define VK_KHR_VIDEO_DECODE_QUEUE_SPEC_VERSION 8
8247#define VK_KHR_VIDEO_DECODE_QUEUE_EXTENSION_NAME "VK_KHR_video_decode_queue"
8248
8249typedef enum VkVideoDecodeCapabilityFlagBitsKHR {
8250    VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_COINCIDE_BIT_KHR = 0x00000001,
8251    VK_VIDEO_DECODE_CAPABILITY_DPB_AND_OUTPUT_DISTINCT_BIT_KHR = 0x00000002,
8252    VK_VIDEO_DECODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
8253} VkVideoDecodeCapabilityFlagBitsKHR;
8254typedef VkFlags VkVideoDecodeCapabilityFlagsKHR;
8255
8256typedef enum VkVideoDecodeUsageFlagBitsKHR {
8257    VK_VIDEO_DECODE_USAGE_DEFAULT_KHR = 0,
8258    VK_VIDEO_DECODE_USAGE_TRANSCODING_BIT_KHR = 0x00000001,
8259    VK_VIDEO_DECODE_USAGE_OFFLINE_BIT_KHR = 0x00000002,
8260    VK_VIDEO_DECODE_USAGE_STREAMING_BIT_KHR = 0x00000004,
8261    VK_VIDEO_DECODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
8262} VkVideoDecodeUsageFlagBitsKHR;
8263typedef VkFlags VkVideoDecodeUsageFlagsKHR;
8264typedef VkFlags VkVideoDecodeFlagsKHR;
8265typedef struct VkVideoDecodeCapabilitiesKHR {
8266    VkStructureType                    sType;
8267    void*                              pNext;
8268    VkVideoDecodeCapabilityFlagsKHR    flags;
8269} VkVideoDecodeCapabilitiesKHR;
8270
8271typedef struct VkVideoDecodeUsageInfoKHR {
8272    VkStructureType               sType;
8273    const void*                   pNext;
8274    VkVideoDecodeUsageFlagsKHR    videoUsageHints;
8275} VkVideoDecodeUsageInfoKHR;
8276
8277typedef struct VkVideoDecodeInfoKHR {
8278    VkStructureType                       sType;
8279    const void*                           pNext;
8280    VkVideoDecodeFlagsKHR                 flags;
8281    VkBuffer                              srcBuffer;
8282    VkDeviceSize                          srcBufferOffset;
8283    VkDeviceSize                          srcBufferRange;
8284    VkVideoPictureResourceInfoKHR         dstPictureResource;
8285    const VkVideoReferenceSlotInfoKHR*    pSetupReferenceSlot;
8286    uint32_t                              referenceSlotCount;
8287    const VkVideoReferenceSlotInfoKHR*    pReferenceSlots;
8288} VkVideoDecodeInfoKHR;
8289
8290typedef void (VKAPI_PTR *PFN_vkCmdDecodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoDecodeInfoKHR* pDecodeInfo);
8291
8292#ifndef VK_NO_PROTOTYPES
8293VKAPI_ATTR void VKAPI_CALL vkCmdDecodeVideoKHR(
8294    VkCommandBuffer                             commandBuffer,
8295    const VkVideoDecodeInfoKHR*                 pDecodeInfo);
8296#endif
8297
8298
8299// VK_KHR_video_encode_h264 is a preprocessor guard. Do not pass it to API calls.
8300#define VK_KHR_video_encode_h264 1
8301#include "vk_video/vulkan_video_codec_h264std.h"
8302#include "vk_video/vulkan_video_codec_h264std_encode.h"
8303#define VK_KHR_VIDEO_ENCODE_H264_SPEC_VERSION 14
8304#define VK_KHR_VIDEO_ENCODE_H264_EXTENSION_NAME "VK_KHR_video_encode_h264"
8305
8306typedef enum VkVideoEncodeH264CapabilityFlagBitsKHR {
8307    VK_VIDEO_ENCODE_H264_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 0x00000001,
8308    VK_VIDEO_ENCODE_H264_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 0x00000002,
8309    VK_VIDEO_ENCODE_H264_CAPABILITY_ROW_UNALIGNED_SLICE_BIT_KHR = 0x00000004,
8310    VK_VIDEO_ENCODE_H264_CAPABILITY_DIFFERENT_SLICE_TYPE_BIT_KHR = 0x00000008,
8311    VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 0x00000010,
8312    VK_VIDEO_ENCODE_H264_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 0x00000020,
8313    VK_VIDEO_ENCODE_H264_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 0x00000040,
8314    VK_VIDEO_ENCODE_H264_CAPABILITY_PER_SLICE_CONSTANT_QP_BIT_KHR = 0x00000080,
8315    VK_VIDEO_ENCODE_H264_CAPABILITY_GENERATE_PREFIX_NALU_BIT_KHR = 0x00000100,
8316    VK_VIDEO_ENCODE_H264_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
8317} VkVideoEncodeH264CapabilityFlagBitsKHR;
8318typedef VkFlags VkVideoEncodeH264CapabilityFlagsKHR;
8319
8320typedef enum VkVideoEncodeH264StdFlagBitsKHR {
8321    VK_VIDEO_ENCODE_H264_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 0x00000001,
8322    VK_VIDEO_ENCODE_H264_STD_QPPRIME_Y_ZERO_TRANSFORM_BYPASS_FLAG_SET_BIT_KHR = 0x00000002,
8323    VK_VIDEO_ENCODE_H264_STD_SCALING_MATRIX_PRESENT_FLAG_SET_BIT_KHR = 0x00000004,
8324    VK_VIDEO_ENCODE_H264_STD_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 0x00000008,
8325    VK_VIDEO_ENCODE_H264_STD_SECOND_CHROMA_QP_INDEX_OFFSET_BIT_KHR = 0x00000010,
8326    VK_VIDEO_ENCODE_H264_STD_PIC_INIT_QP_MINUS26_BIT_KHR = 0x00000020,
8327    VK_VIDEO_ENCODE_H264_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 0x00000040,
8328    VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_EXPLICIT_BIT_KHR = 0x00000080,
8329    VK_VIDEO_ENCODE_H264_STD_WEIGHTED_BIPRED_IDC_IMPLICIT_BIT_KHR = 0x00000100,
8330    VK_VIDEO_ENCODE_H264_STD_TRANSFORM_8X8_MODE_FLAG_SET_BIT_KHR = 0x00000200,
8331    VK_VIDEO_ENCODE_H264_STD_DIRECT_SPATIAL_MV_PRED_FLAG_UNSET_BIT_KHR = 0x00000400,
8332    VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_UNSET_BIT_KHR = 0x00000800,
8333    VK_VIDEO_ENCODE_H264_STD_ENTROPY_CODING_MODE_FLAG_SET_BIT_KHR = 0x00001000,
8334    VK_VIDEO_ENCODE_H264_STD_DIRECT_8X8_INFERENCE_FLAG_UNSET_BIT_KHR = 0x00002000,
8335    VK_VIDEO_ENCODE_H264_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 0x00004000,
8336    VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_DISABLED_BIT_KHR = 0x00008000,
8337    VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_ENABLED_BIT_KHR = 0x00010000,
8338    VK_VIDEO_ENCODE_H264_STD_DEBLOCKING_FILTER_PARTIAL_BIT_KHR = 0x00020000,
8339    VK_VIDEO_ENCODE_H264_STD_SLICE_QP_DELTA_BIT_KHR = 0x00080000,
8340    VK_VIDEO_ENCODE_H264_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 0x00100000,
8341    VK_VIDEO_ENCODE_H264_STD_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
8342} VkVideoEncodeH264StdFlagBitsKHR;
8343typedef VkFlags VkVideoEncodeH264StdFlagsKHR;
8344
8345typedef enum VkVideoEncodeH264RateControlFlagBitsKHR {
8346    VK_VIDEO_ENCODE_H264_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 0x00000001,
8347    VK_VIDEO_ENCODE_H264_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 0x00000002,
8348    VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 0x00000004,
8349    VK_VIDEO_ENCODE_H264_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 0x00000008,
8350    VK_VIDEO_ENCODE_H264_RATE_CONTROL_TEMPORAL_LAYER_PATTERN_DYADIC_BIT_KHR = 0x00000010,
8351    VK_VIDEO_ENCODE_H264_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
8352} VkVideoEncodeH264RateControlFlagBitsKHR;
8353typedef VkFlags VkVideoEncodeH264RateControlFlagsKHR;
8354typedef struct VkVideoEncodeH264CapabilitiesKHR {
8355    VkStructureType                        sType;
8356    void*                                  pNext;
8357    VkVideoEncodeH264CapabilityFlagsKHR    flags;
8358    StdVideoH264LevelIdc                   maxLevelIdc;
8359    uint32_t                               maxSliceCount;
8360    uint32_t                               maxPPictureL0ReferenceCount;
8361    uint32_t                               maxBPictureL0ReferenceCount;
8362    uint32_t                               maxL1ReferenceCount;
8363    uint32_t                               maxTemporalLayerCount;
8364    VkBool32                               expectDyadicTemporalLayerPattern;
8365    int32_t                                minQp;
8366    int32_t                                maxQp;
8367    VkBool32                               prefersGopRemainingFrames;
8368    VkBool32                               requiresGopRemainingFrames;
8369    VkVideoEncodeH264StdFlagsKHR           stdSyntaxFlags;
8370} VkVideoEncodeH264CapabilitiesKHR;
8371
8372typedef struct VkVideoEncodeH264QpKHR {
8373    int32_t    qpI;
8374    int32_t    qpP;
8375    int32_t    qpB;
8376} VkVideoEncodeH264QpKHR;
8377
8378typedef struct VkVideoEncodeH264QualityLevelPropertiesKHR {
8379    VkStructureType                         sType;
8380    void*                                   pNext;
8381    VkVideoEncodeH264RateControlFlagsKHR    preferredRateControlFlags;
8382    uint32_t                                preferredGopFrameCount;
8383    uint32_t                                preferredIdrPeriod;
8384    uint32_t                                preferredConsecutiveBFrameCount;
8385    uint32_t                                preferredTemporalLayerCount;
8386    VkVideoEncodeH264QpKHR                  preferredConstantQp;
8387    uint32_t                                preferredMaxL0ReferenceCount;
8388    uint32_t                                preferredMaxL1ReferenceCount;
8389    VkBool32                                preferredStdEntropyCodingModeFlag;
8390} VkVideoEncodeH264QualityLevelPropertiesKHR;
8391
8392typedef struct VkVideoEncodeH264SessionCreateInfoKHR {
8393    VkStructureType         sType;
8394    const void*             pNext;
8395    VkBool32                useMaxLevelIdc;
8396    StdVideoH264LevelIdc    maxLevelIdc;
8397} VkVideoEncodeH264SessionCreateInfoKHR;
8398
8399typedef struct VkVideoEncodeH264SessionParametersAddInfoKHR {
8400    VkStructureType                            sType;
8401    const void*                                pNext;
8402    uint32_t                                   stdSPSCount;
8403    const StdVideoH264SequenceParameterSet*    pStdSPSs;
8404    uint32_t                                   stdPPSCount;
8405    const StdVideoH264PictureParameterSet*     pStdPPSs;
8406} VkVideoEncodeH264SessionParametersAddInfoKHR;
8407
8408typedef struct VkVideoEncodeH264SessionParametersCreateInfoKHR {
8409    VkStructureType                                        sType;
8410    const void*                                            pNext;
8411    uint32_t                                               maxStdSPSCount;
8412    uint32_t                                               maxStdPPSCount;
8413    const VkVideoEncodeH264SessionParametersAddInfoKHR*    pParametersAddInfo;
8414} VkVideoEncodeH264SessionParametersCreateInfoKHR;
8415
8416typedef struct VkVideoEncodeH264SessionParametersGetInfoKHR {
8417    VkStructureType    sType;
8418    const void*        pNext;
8419    VkBool32           writeStdSPS;
8420    VkBool32           writeStdPPS;
8421    uint32_t           stdSPSId;
8422    uint32_t           stdPPSId;
8423} VkVideoEncodeH264SessionParametersGetInfoKHR;
8424
8425typedef struct VkVideoEncodeH264SessionParametersFeedbackInfoKHR {
8426    VkStructureType    sType;
8427    void*              pNext;
8428    VkBool32           hasStdSPSOverrides;
8429    VkBool32           hasStdPPSOverrides;
8430} VkVideoEncodeH264SessionParametersFeedbackInfoKHR;
8431
8432typedef struct VkVideoEncodeH264NaluSliceInfoKHR {
8433    VkStructureType                         sType;
8434    const void*                             pNext;
8435    int32_t                                 constantQp;
8436    const StdVideoEncodeH264SliceHeader*    pStdSliceHeader;
8437} VkVideoEncodeH264NaluSliceInfoKHR;
8438
8439typedef struct VkVideoEncodeH264PictureInfoKHR {
8440    VkStructureType                             sType;
8441    const void*                                 pNext;
8442    uint32_t                                    naluSliceEntryCount;
8443    const VkVideoEncodeH264NaluSliceInfoKHR*    pNaluSliceEntries;
8444    const StdVideoEncodeH264PictureInfo*        pStdPictureInfo;
8445    VkBool32                                    generatePrefixNalu;
8446} VkVideoEncodeH264PictureInfoKHR;
8447
8448typedef struct VkVideoEncodeH264DpbSlotInfoKHR {
8449    VkStructureType                           sType;
8450    const void*                               pNext;
8451    const StdVideoEncodeH264ReferenceInfo*    pStdReferenceInfo;
8452} VkVideoEncodeH264DpbSlotInfoKHR;
8453
8454typedef struct VkVideoEncodeH264ProfileInfoKHR {
8455    VkStructureType           sType;
8456    const void*               pNext;
8457    StdVideoH264ProfileIdc    stdProfileIdc;
8458} VkVideoEncodeH264ProfileInfoKHR;
8459
8460typedef struct VkVideoEncodeH264RateControlInfoKHR {
8461    VkStructureType                         sType;
8462    const void*                             pNext;
8463    VkVideoEncodeH264RateControlFlagsKHR    flags;
8464    uint32_t                                gopFrameCount;
8465    uint32_t                                idrPeriod;
8466    uint32_t                                consecutiveBFrameCount;
8467    uint32_t                                temporalLayerCount;
8468} VkVideoEncodeH264RateControlInfoKHR;
8469
8470typedef struct VkVideoEncodeH264FrameSizeKHR {
8471    uint32_t    frameISize;
8472    uint32_t    framePSize;
8473    uint32_t    frameBSize;
8474} VkVideoEncodeH264FrameSizeKHR;
8475
8476typedef struct VkVideoEncodeH264RateControlLayerInfoKHR {
8477    VkStructureType                  sType;
8478    const void*                      pNext;
8479    VkBool32                         useMinQp;
8480    VkVideoEncodeH264QpKHR           minQp;
8481    VkBool32                         useMaxQp;
8482    VkVideoEncodeH264QpKHR           maxQp;
8483    VkBool32                         useMaxFrameSize;
8484    VkVideoEncodeH264FrameSizeKHR    maxFrameSize;
8485} VkVideoEncodeH264RateControlLayerInfoKHR;
8486
8487typedef struct VkVideoEncodeH264GopRemainingFrameInfoKHR {
8488    VkStructureType    sType;
8489    const void*        pNext;
8490    VkBool32           useGopRemainingFrames;
8491    uint32_t           gopRemainingI;
8492    uint32_t           gopRemainingP;
8493    uint32_t           gopRemainingB;
8494} VkVideoEncodeH264GopRemainingFrameInfoKHR;
8495
8496
8497
8498// VK_KHR_video_encode_h265 is a preprocessor guard. Do not pass it to API calls.
8499#define VK_KHR_video_encode_h265 1
8500#include "vk_video/vulkan_video_codec_h265std.h"
8501#include "vk_video/vulkan_video_codec_h265std_encode.h"
8502#define VK_KHR_VIDEO_ENCODE_H265_SPEC_VERSION 14
8503#define VK_KHR_VIDEO_ENCODE_H265_EXTENSION_NAME "VK_KHR_video_encode_h265"
8504
8505typedef enum VkVideoEncodeH265CapabilityFlagBitsKHR {
8506    VK_VIDEO_ENCODE_H265_CAPABILITY_HRD_COMPLIANCE_BIT_KHR = 0x00000001,
8507    VK_VIDEO_ENCODE_H265_CAPABILITY_PREDICTION_WEIGHT_TABLE_GENERATED_BIT_KHR = 0x00000002,
8508    VK_VIDEO_ENCODE_H265_CAPABILITY_ROW_UNALIGNED_SLICE_SEGMENT_BIT_KHR = 0x00000004,
8509    VK_VIDEO_ENCODE_H265_CAPABILITY_DIFFERENT_SLICE_SEGMENT_TYPE_BIT_KHR = 0x00000008,
8510    VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L0_LIST_BIT_KHR = 0x00000010,
8511    VK_VIDEO_ENCODE_H265_CAPABILITY_B_FRAME_IN_L1_LIST_BIT_KHR = 0x00000020,
8512    VK_VIDEO_ENCODE_H265_CAPABILITY_PER_PICTURE_TYPE_MIN_MAX_QP_BIT_KHR = 0x00000040,
8513    VK_VIDEO_ENCODE_H265_CAPABILITY_PER_SLICE_SEGMENT_CONSTANT_QP_BIT_KHR = 0x00000080,
8514    VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_TILES_PER_SLICE_SEGMENT_BIT_KHR = 0x00000100,
8515    VK_VIDEO_ENCODE_H265_CAPABILITY_MULTIPLE_SLICE_SEGMENTS_PER_TILE_BIT_KHR = 0x00000200,
8516    VK_VIDEO_ENCODE_H265_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
8517} VkVideoEncodeH265CapabilityFlagBitsKHR;
8518typedef VkFlags VkVideoEncodeH265CapabilityFlagsKHR;
8519
8520typedef enum VkVideoEncodeH265StdFlagBitsKHR {
8521    VK_VIDEO_ENCODE_H265_STD_SEPARATE_COLOR_PLANE_FLAG_SET_BIT_KHR = 0x00000001,
8522    VK_VIDEO_ENCODE_H265_STD_SAMPLE_ADAPTIVE_OFFSET_ENABLED_FLAG_SET_BIT_KHR = 0x00000002,
8523    VK_VIDEO_ENCODE_H265_STD_SCALING_LIST_DATA_PRESENT_FLAG_SET_BIT_KHR = 0x00000004,
8524    VK_VIDEO_ENCODE_H265_STD_PCM_ENABLED_FLAG_SET_BIT_KHR = 0x00000008,
8525    VK_VIDEO_ENCODE_H265_STD_SPS_TEMPORAL_MVP_ENABLED_FLAG_SET_BIT_KHR = 0x00000010,
8526    VK_VIDEO_ENCODE_H265_STD_INIT_QP_MINUS26_BIT_KHR = 0x00000020,
8527    VK_VIDEO_ENCODE_H265_STD_WEIGHTED_PRED_FLAG_SET_BIT_KHR = 0x00000040,
8528    VK_VIDEO_ENCODE_H265_STD_WEIGHTED_BIPRED_FLAG_SET_BIT_KHR = 0x00000080,
8529    VK_VIDEO_ENCODE_H265_STD_LOG2_PARALLEL_MERGE_LEVEL_MINUS2_BIT_KHR = 0x00000100,
8530    VK_VIDEO_ENCODE_H265_STD_SIGN_DATA_HIDING_ENABLED_FLAG_SET_BIT_KHR = 0x00000200,
8531    VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_SET_BIT_KHR = 0x00000400,
8532    VK_VIDEO_ENCODE_H265_STD_TRANSFORM_SKIP_ENABLED_FLAG_UNSET_BIT_KHR = 0x00000800,
8533    VK_VIDEO_ENCODE_H265_STD_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT_FLAG_SET_BIT_KHR = 0x00001000,
8534    VK_VIDEO_ENCODE_H265_STD_TRANSQUANT_BYPASS_ENABLED_FLAG_SET_BIT_KHR = 0x00002000,
8535    VK_VIDEO_ENCODE_H265_STD_CONSTRAINED_INTRA_PRED_FLAG_SET_BIT_KHR = 0x00004000,
8536    VK_VIDEO_ENCODE_H265_STD_ENTROPY_CODING_SYNC_ENABLED_FLAG_SET_BIT_KHR = 0x00008000,
8537    VK_VIDEO_ENCODE_H265_STD_DEBLOCKING_FILTER_OVERRIDE_ENABLED_FLAG_SET_BIT_KHR = 0x00010000,
8538    VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENTS_ENABLED_FLAG_SET_BIT_KHR = 0x00020000,
8539    VK_VIDEO_ENCODE_H265_STD_DEPENDENT_SLICE_SEGMENT_FLAG_SET_BIT_KHR = 0x00040000,
8540    VK_VIDEO_ENCODE_H265_STD_SLICE_QP_DELTA_BIT_KHR = 0x00080000,
8541    VK_VIDEO_ENCODE_H265_STD_DIFFERENT_SLICE_QP_DELTA_BIT_KHR = 0x00100000,
8542    VK_VIDEO_ENCODE_H265_STD_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
8543} VkVideoEncodeH265StdFlagBitsKHR;
8544typedef VkFlags VkVideoEncodeH265StdFlagsKHR;
8545
8546typedef enum VkVideoEncodeH265CtbSizeFlagBitsKHR {
8547    VK_VIDEO_ENCODE_H265_CTB_SIZE_16_BIT_KHR = 0x00000001,
8548    VK_VIDEO_ENCODE_H265_CTB_SIZE_32_BIT_KHR = 0x00000002,
8549    VK_VIDEO_ENCODE_H265_CTB_SIZE_64_BIT_KHR = 0x00000004,
8550    VK_VIDEO_ENCODE_H265_CTB_SIZE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
8551} VkVideoEncodeH265CtbSizeFlagBitsKHR;
8552typedef VkFlags VkVideoEncodeH265CtbSizeFlagsKHR;
8553
8554typedef enum VkVideoEncodeH265TransformBlockSizeFlagBitsKHR {
8555    VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_4_BIT_KHR = 0x00000001,
8556    VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_8_BIT_KHR = 0x00000002,
8557    VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_16_BIT_KHR = 0x00000004,
8558    VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_32_BIT_KHR = 0x00000008,
8559    VK_VIDEO_ENCODE_H265_TRANSFORM_BLOCK_SIZE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
8560} VkVideoEncodeH265TransformBlockSizeFlagBitsKHR;
8561typedef VkFlags VkVideoEncodeH265TransformBlockSizeFlagsKHR;
8562
8563typedef enum VkVideoEncodeH265RateControlFlagBitsKHR {
8564    VK_VIDEO_ENCODE_H265_RATE_CONTROL_ATTEMPT_HRD_COMPLIANCE_BIT_KHR = 0x00000001,
8565    VK_VIDEO_ENCODE_H265_RATE_CONTROL_REGULAR_GOP_BIT_KHR = 0x00000002,
8566    VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_FLAT_BIT_KHR = 0x00000004,
8567    VK_VIDEO_ENCODE_H265_RATE_CONTROL_REFERENCE_PATTERN_DYADIC_BIT_KHR = 0x00000008,
8568    VK_VIDEO_ENCODE_H265_RATE_CONTROL_TEMPORAL_SUB_LAYER_PATTERN_DYADIC_BIT_KHR = 0x00000010,
8569    VK_VIDEO_ENCODE_H265_RATE_CONTROL_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
8570} VkVideoEncodeH265RateControlFlagBitsKHR;
8571typedef VkFlags VkVideoEncodeH265RateControlFlagsKHR;
8572typedef struct VkVideoEncodeH265CapabilitiesKHR {
8573    VkStructureType                                sType;
8574    void*                                          pNext;
8575    VkVideoEncodeH265CapabilityFlagsKHR            flags;
8576    StdVideoH265LevelIdc                           maxLevelIdc;
8577    uint32_t                                       maxSliceSegmentCount;
8578    VkExtent2D                                     maxTiles;
8579    VkVideoEncodeH265CtbSizeFlagsKHR               ctbSizes;
8580    VkVideoEncodeH265TransformBlockSizeFlagsKHR    transformBlockSizes;
8581    uint32_t                                       maxPPictureL0ReferenceCount;
8582    uint32_t                                       maxBPictureL0ReferenceCount;
8583    uint32_t                                       maxL1ReferenceCount;
8584    uint32_t                                       maxSubLayerCount;
8585    VkBool32                                       expectDyadicTemporalSubLayerPattern;
8586    int32_t                                        minQp;
8587    int32_t                                        maxQp;
8588    VkBool32                                       prefersGopRemainingFrames;
8589    VkBool32                                       requiresGopRemainingFrames;
8590    VkVideoEncodeH265StdFlagsKHR                   stdSyntaxFlags;
8591} VkVideoEncodeH265CapabilitiesKHR;
8592
8593typedef struct VkVideoEncodeH265SessionCreateInfoKHR {
8594    VkStructureType         sType;
8595    const void*             pNext;
8596    VkBool32                useMaxLevelIdc;
8597    StdVideoH265LevelIdc    maxLevelIdc;
8598} VkVideoEncodeH265SessionCreateInfoKHR;
8599
8600typedef struct VkVideoEncodeH265QpKHR {
8601    int32_t    qpI;
8602    int32_t    qpP;
8603    int32_t    qpB;
8604} VkVideoEncodeH265QpKHR;
8605
8606typedef struct VkVideoEncodeH265QualityLevelPropertiesKHR {
8607    VkStructureType                         sType;
8608    void*                                   pNext;
8609    VkVideoEncodeH265RateControlFlagsKHR    preferredRateControlFlags;
8610    uint32_t                                preferredGopFrameCount;
8611    uint32_t                                preferredIdrPeriod;
8612    uint32_t                                preferredConsecutiveBFrameCount;
8613    uint32_t                                preferredSubLayerCount;
8614    VkVideoEncodeH265QpKHR                  preferredConstantQp;
8615    uint32_t                                preferredMaxL0ReferenceCount;
8616    uint32_t                                preferredMaxL1ReferenceCount;
8617} VkVideoEncodeH265QualityLevelPropertiesKHR;
8618
8619typedef struct VkVideoEncodeH265SessionParametersAddInfoKHR {
8620    VkStructureType                            sType;
8621    const void*                                pNext;
8622    uint32_t                                   stdVPSCount;
8623    const StdVideoH265VideoParameterSet*       pStdVPSs;
8624    uint32_t                                   stdSPSCount;
8625    const StdVideoH265SequenceParameterSet*    pStdSPSs;
8626    uint32_t                                   stdPPSCount;
8627    const StdVideoH265PictureParameterSet*     pStdPPSs;
8628} VkVideoEncodeH265SessionParametersAddInfoKHR;
8629
8630typedef struct VkVideoEncodeH265SessionParametersCreateInfoKHR {
8631    VkStructureType                                        sType;
8632    const void*                                            pNext;
8633    uint32_t                                               maxStdVPSCount;
8634    uint32_t                                               maxStdSPSCount;
8635    uint32_t                                               maxStdPPSCount;
8636    const VkVideoEncodeH265SessionParametersAddInfoKHR*    pParametersAddInfo;
8637} VkVideoEncodeH265SessionParametersCreateInfoKHR;
8638
8639typedef struct VkVideoEncodeH265SessionParametersGetInfoKHR {
8640    VkStructureType    sType;
8641    const void*        pNext;
8642    VkBool32           writeStdVPS;
8643    VkBool32           writeStdSPS;
8644    VkBool32           writeStdPPS;
8645    uint32_t           stdVPSId;
8646    uint32_t           stdSPSId;
8647    uint32_t           stdPPSId;
8648} VkVideoEncodeH265SessionParametersGetInfoKHR;
8649
8650typedef struct VkVideoEncodeH265SessionParametersFeedbackInfoKHR {
8651    VkStructureType    sType;
8652    void*              pNext;
8653    VkBool32           hasStdVPSOverrides;
8654    VkBool32           hasStdSPSOverrides;
8655    VkBool32           hasStdPPSOverrides;
8656} VkVideoEncodeH265SessionParametersFeedbackInfoKHR;
8657
8658typedef struct VkVideoEncodeH265NaluSliceSegmentInfoKHR {
8659    VkStructureType                                sType;
8660    const void*                                    pNext;
8661    int32_t                                        constantQp;
8662    const StdVideoEncodeH265SliceSegmentHeader*    pStdSliceSegmentHeader;
8663} VkVideoEncodeH265NaluSliceSegmentInfoKHR;
8664
8665typedef struct VkVideoEncodeH265PictureInfoKHR {
8666    VkStructureType                                    sType;
8667    const void*                                        pNext;
8668    uint32_t                                           naluSliceSegmentEntryCount;
8669    const VkVideoEncodeH265NaluSliceSegmentInfoKHR*    pNaluSliceSegmentEntries;
8670    const StdVideoEncodeH265PictureInfo*               pStdPictureInfo;
8671} VkVideoEncodeH265PictureInfoKHR;
8672
8673typedef struct VkVideoEncodeH265DpbSlotInfoKHR {
8674    VkStructureType                           sType;
8675    const void*                               pNext;
8676    const StdVideoEncodeH265ReferenceInfo*    pStdReferenceInfo;
8677} VkVideoEncodeH265DpbSlotInfoKHR;
8678
8679typedef struct VkVideoEncodeH265ProfileInfoKHR {
8680    VkStructureType           sType;
8681    const void*               pNext;
8682    StdVideoH265ProfileIdc    stdProfileIdc;
8683} VkVideoEncodeH265ProfileInfoKHR;
8684
8685typedef struct VkVideoEncodeH265RateControlInfoKHR {
8686    VkStructureType                         sType;
8687    const void*                             pNext;
8688    VkVideoEncodeH265RateControlFlagsKHR    flags;
8689    uint32_t                                gopFrameCount;
8690    uint32_t                                idrPeriod;
8691    uint32_t                                consecutiveBFrameCount;
8692    uint32_t                                subLayerCount;
8693} VkVideoEncodeH265RateControlInfoKHR;
8694
8695typedef struct VkVideoEncodeH265FrameSizeKHR {
8696    uint32_t    frameISize;
8697    uint32_t    framePSize;
8698    uint32_t    frameBSize;
8699} VkVideoEncodeH265FrameSizeKHR;
8700
8701typedef struct VkVideoEncodeH265RateControlLayerInfoKHR {
8702    VkStructureType                  sType;
8703    const void*                      pNext;
8704    VkBool32                         useMinQp;
8705    VkVideoEncodeH265QpKHR           minQp;
8706    VkBool32                         useMaxQp;
8707    VkVideoEncodeH265QpKHR           maxQp;
8708    VkBool32                         useMaxFrameSize;
8709    VkVideoEncodeH265FrameSizeKHR    maxFrameSize;
8710} VkVideoEncodeH265RateControlLayerInfoKHR;
8711
8712typedef struct VkVideoEncodeH265GopRemainingFrameInfoKHR {
8713    VkStructureType    sType;
8714    const void*        pNext;
8715    VkBool32           useGopRemainingFrames;
8716    uint32_t           gopRemainingI;
8717    uint32_t           gopRemainingP;
8718    uint32_t           gopRemainingB;
8719} VkVideoEncodeH265GopRemainingFrameInfoKHR;
8720
8721
8722
8723// VK_KHR_video_decode_h264 is a preprocessor guard. Do not pass it to API calls.
8724#define VK_KHR_video_decode_h264 1
8725#include "vk_video/vulkan_video_codec_h264std_decode.h"
8726#define VK_KHR_VIDEO_DECODE_H264_SPEC_VERSION 9
8727#define VK_KHR_VIDEO_DECODE_H264_EXTENSION_NAME "VK_KHR_video_decode_h264"
8728
8729typedef enum VkVideoDecodeH264PictureLayoutFlagBitsKHR {
8730    VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_PROGRESSIVE_KHR = 0,
8731    VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_INTERLEAVED_LINES_BIT_KHR = 0x00000001,
8732    VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_INTERLACED_SEPARATE_PLANES_BIT_KHR = 0x00000002,
8733    VK_VIDEO_DECODE_H264_PICTURE_LAYOUT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
8734} VkVideoDecodeH264PictureLayoutFlagBitsKHR;
8735typedef VkFlags VkVideoDecodeH264PictureLayoutFlagsKHR;
8736typedef struct VkVideoDecodeH264ProfileInfoKHR {
8737    VkStructureType                              sType;
8738    const void*                                  pNext;
8739    StdVideoH264ProfileIdc                       stdProfileIdc;
8740    VkVideoDecodeH264PictureLayoutFlagBitsKHR    pictureLayout;
8741} VkVideoDecodeH264ProfileInfoKHR;
8742
8743typedef struct VkVideoDecodeH264CapabilitiesKHR {
8744    VkStructureType         sType;
8745    void*                   pNext;
8746    StdVideoH264LevelIdc    maxLevelIdc;
8747    VkOffset2D              fieldOffsetGranularity;
8748} VkVideoDecodeH264CapabilitiesKHR;
8749
8750typedef struct VkVideoDecodeH264SessionParametersAddInfoKHR {
8751    VkStructureType                            sType;
8752    const void*                                pNext;
8753    uint32_t                                   stdSPSCount;
8754    const StdVideoH264SequenceParameterSet*    pStdSPSs;
8755    uint32_t                                   stdPPSCount;
8756    const StdVideoH264PictureParameterSet*     pStdPPSs;
8757} VkVideoDecodeH264SessionParametersAddInfoKHR;
8758
8759typedef struct VkVideoDecodeH264SessionParametersCreateInfoKHR {
8760    VkStructureType                                        sType;
8761    const void*                                            pNext;
8762    uint32_t                                               maxStdSPSCount;
8763    uint32_t                                               maxStdPPSCount;
8764    const VkVideoDecodeH264SessionParametersAddInfoKHR*    pParametersAddInfo;
8765} VkVideoDecodeH264SessionParametersCreateInfoKHR;
8766
8767typedef struct VkVideoDecodeH264PictureInfoKHR {
8768    VkStructureType                         sType;
8769    const void*                             pNext;
8770    const StdVideoDecodeH264PictureInfo*    pStdPictureInfo;
8771    uint32_t                                sliceCount;
8772    const uint32_t*                         pSliceOffsets;
8773} VkVideoDecodeH264PictureInfoKHR;
8774
8775typedef struct VkVideoDecodeH264DpbSlotInfoKHR {
8776    VkStructureType                           sType;
8777    const void*                               pNext;
8778    const StdVideoDecodeH264ReferenceInfo*    pStdReferenceInfo;
8779} VkVideoDecodeH264DpbSlotInfoKHR;
8780
8781
8782
8783// VK_KHR_dynamic_rendering is a preprocessor guard. Do not pass it to API calls.
8784#define VK_KHR_dynamic_rendering 1
8785#define VK_KHR_DYNAMIC_RENDERING_SPEC_VERSION 1
8786#define VK_KHR_DYNAMIC_RENDERING_EXTENSION_NAME "VK_KHR_dynamic_rendering"
8787typedef VkRenderingFlags VkRenderingFlagsKHR;
8788
8789typedef VkRenderingFlagBits VkRenderingFlagBitsKHR;
8790
8791typedef VkRenderingInfo VkRenderingInfoKHR;
8792
8793typedef VkRenderingAttachmentInfo VkRenderingAttachmentInfoKHR;
8794
8795typedef VkPipelineRenderingCreateInfo VkPipelineRenderingCreateInfoKHR;
8796
8797typedef VkPhysicalDeviceDynamicRenderingFeatures VkPhysicalDeviceDynamicRenderingFeaturesKHR;
8798
8799typedef VkCommandBufferInheritanceRenderingInfo VkCommandBufferInheritanceRenderingInfoKHR;
8800
8801typedef struct VkRenderingFragmentShadingRateAttachmentInfoKHR {
8802    VkStructureType    sType;
8803    const void*        pNext;
8804    VkImageView        imageView;
8805    VkImageLayout      imageLayout;
8806    VkExtent2D         shadingRateAttachmentTexelSize;
8807} VkRenderingFragmentShadingRateAttachmentInfoKHR;
8808
8809typedef struct VkRenderingFragmentDensityMapAttachmentInfoEXT {
8810    VkStructureType    sType;
8811    const void*        pNext;
8812    VkImageView        imageView;
8813    VkImageLayout      imageLayout;
8814} VkRenderingFragmentDensityMapAttachmentInfoEXT;
8815
8816typedef struct VkAttachmentSampleCountInfoAMD {
8817    VkStructureType                 sType;
8818    const void*                     pNext;
8819    uint32_t                        colorAttachmentCount;
8820    const VkSampleCountFlagBits*    pColorAttachmentSamples;
8821    VkSampleCountFlagBits           depthStencilAttachmentSamples;
8822} VkAttachmentSampleCountInfoAMD;
8823
8824typedef VkAttachmentSampleCountInfoAMD VkAttachmentSampleCountInfoNV;
8825
8826typedef struct VkMultiviewPerViewAttributesInfoNVX {
8827    VkStructureType    sType;
8828    const void*        pNext;
8829    VkBool32           perViewAttributes;
8830    VkBool32           perViewAttributesPositionXOnly;
8831} VkMultiviewPerViewAttributesInfoNVX;
8832
8833typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderingKHR)(VkCommandBuffer                   commandBuffer, const VkRenderingInfo*                              pRenderingInfo);
8834typedef void (VKAPI_PTR *PFN_vkCmdEndRenderingKHR)(VkCommandBuffer                   commandBuffer);
8835
8836#ifndef VK_NO_PROTOTYPES
8837VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderingKHR(
8838    VkCommandBuffer                             commandBuffer,
8839    const VkRenderingInfo*                      pRenderingInfo);
8840
8841VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderingKHR(
8842    VkCommandBuffer                             commandBuffer);
8843#endif
8844
8845
8846// VK_KHR_multiview is a preprocessor guard. Do not pass it to API calls.
8847#define VK_KHR_multiview 1
8848#define VK_KHR_MULTIVIEW_SPEC_VERSION     1
8849#define VK_KHR_MULTIVIEW_EXTENSION_NAME   "VK_KHR_multiview"
8850typedef VkRenderPassMultiviewCreateInfo VkRenderPassMultiviewCreateInfoKHR;
8851
8852typedef VkPhysicalDeviceMultiviewFeatures VkPhysicalDeviceMultiviewFeaturesKHR;
8853
8854typedef VkPhysicalDeviceMultiviewProperties VkPhysicalDeviceMultiviewPropertiesKHR;
8855
8856
8857
8858// VK_KHR_get_physical_device_properties2 is a preprocessor guard. Do not pass it to API calls.
8859#define VK_KHR_get_physical_device_properties2 1
8860#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 2
8861#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2"
8862typedef VkPhysicalDeviceFeatures2 VkPhysicalDeviceFeatures2KHR;
8863
8864typedef VkPhysicalDeviceProperties2 VkPhysicalDeviceProperties2KHR;
8865
8866typedef VkFormatProperties2 VkFormatProperties2KHR;
8867
8868typedef VkImageFormatProperties2 VkImageFormatProperties2KHR;
8869
8870typedef VkPhysicalDeviceImageFormatInfo2 VkPhysicalDeviceImageFormatInfo2KHR;
8871
8872typedef VkQueueFamilyProperties2 VkQueueFamilyProperties2KHR;
8873
8874typedef VkPhysicalDeviceMemoryProperties2 VkPhysicalDeviceMemoryProperties2KHR;
8875
8876typedef VkSparseImageFormatProperties2 VkSparseImageFormatProperties2KHR;
8877
8878typedef VkPhysicalDeviceSparseImageFormatInfo2 VkPhysicalDeviceSparseImageFormatInfo2KHR;
8879
8880typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures);
8881typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties);
8882typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2KHR)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties);
8883typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties);
8884typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties);
8885typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties);
8886typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties);
8887
8888#ifndef VK_NO_PROTOTYPES
8889VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2KHR(
8890    VkPhysicalDevice                            physicalDevice,
8891    VkPhysicalDeviceFeatures2*                  pFeatures);
8892
8893VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2KHR(
8894    VkPhysicalDevice                            physicalDevice,
8895    VkPhysicalDeviceProperties2*                pProperties);
8896
8897VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2KHR(
8898    VkPhysicalDevice                            physicalDevice,
8899    VkFormat                                    format,
8900    VkFormatProperties2*                        pFormatProperties);
8901
8902VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2KHR(
8903    VkPhysicalDevice                            physicalDevice,
8904    const VkPhysicalDeviceImageFormatInfo2*     pImageFormatInfo,
8905    VkImageFormatProperties2*                   pImageFormatProperties);
8906
8907VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2KHR(
8908    VkPhysicalDevice                            physicalDevice,
8909    uint32_t*                                   pQueueFamilyPropertyCount,
8910    VkQueueFamilyProperties2*                   pQueueFamilyProperties);
8911
8912VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2KHR(
8913    VkPhysicalDevice                            physicalDevice,
8914    VkPhysicalDeviceMemoryProperties2*          pMemoryProperties);
8915
8916VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
8917    VkPhysicalDevice                            physicalDevice,
8918    const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
8919    uint32_t*                                   pPropertyCount,
8920    VkSparseImageFormatProperties2*             pProperties);
8921#endif
8922
8923
8924// VK_KHR_device_group is a preprocessor guard. Do not pass it to API calls.
8925#define VK_KHR_device_group 1
8926#define VK_KHR_DEVICE_GROUP_SPEC_VERSION  4
8927#define VK_KHR_DEVICE_GROUP_EXTENSION_NAME "VK_KHR_device_group"
8928typedef VkPeerMemoryFeatureFlags VkPeerMemoryFeatureFlagsKHR;
8929
8930typedef VkPeerMemoryFeatureFlagBits VkPeerMemoryFeatureFlagBitsKHR;
8931
8932typedef VkMemoryAllocateFlags VkMemoryAllocateFlagsKHR;
8933
8934typedef VkMemoryAllocateFlagBits VkMemoryAllocateFlagBitsKHR;
8935
8936typedef VkMemoryAllocateFlagsInfo VkMemoryAllocateFlagsInfoKHR;
8937
8938typedef VkDeviceGroupRenderPassBeginInfo VkDeviceGroupRenderPassBeginInfoKHR;
8939
8940typedef VkDeviceGroupCommandBufferBeginInfo VkDeviceGroupCommandBufferBeginInfoKHR;
8941
8942typedef VkDeviceGroupSubmitInfo VkDeviceGroupSubmitInfoKHR;
8943
8944typedef VkDeviceGroupBindSparseInfo VkDeviceGroupBindSparseInfoKHR;
8945
8946typedef VkBindBufferMemoryDeviceGroupInfo VkBindBufferMemoryDeviceGroupInfoKHR;
8947
8948typedef VkBindImageMemoryDeviceGroupInfo VkBindImageMemoryDeviceGroupInfoKHR;
8949
8950typedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlags* pPeerMemoryFeatures);
8951typedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMaskKHR)(VkCommandBuffer commandBuffer, uint32_t deviceMask);
8952typedef 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);
8953
8954#ifndef VK_NO_PROTOTYPES
8955VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeaturesKHR(
8956    VkDevice                                    device,
8957    uint32_t                                    heapIndex,
8958    uint32_t                                    localDeviceIndex,
8959    uint32_t                                    remoteDeviceIndex,
8960    VkPeerMemoryFeatureFlags*                   pPeerMemoryFeatures);
8961
8962VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMaskKHR(
8963    VkCommandBuffer                             commandBuffer,
8964    uint32_t                                    deviceMask);
8965
8966VKAPI_ATTR void VKAPI_CALL vkCmdDispatchBaseKHR(
8967    VkCommandBuffer                             commandBuffer,
8968    uint32_t                                    baseGroupX,
8969    uint32_t                                    baseGroupY,
8970    uint32_t                                    baseGroupZ,
8971    uint32_t                                    groupCountX,
8972    uint32_t                                    groupCountY,
8973    uint32_t                                    groupCountZ);
8974#endif
8975
8976
8977// VK_KHR_shader_draw_parameters is a preprocessor guard. Do not pass it to API calls.
8978#define VK_KHR_shader_draw_parameters 1
8979#define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1
8980#define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters"
8981
8982
8983// VK_KHR_maintenance1 is a preprocessor guard. Do not pass it to API calls.
8984#define VK_KHR_maintenance1 1
8985#define VK_KHR_MAINTENANCE_1_SPEC_VERSION 2
8986#define VK_KHR_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_maintenance1"
8987#define VK_KHR_MAINTENANCE1_SPEC_VERSION  VK_KHR_MAINTENANCE_1_SPEC_VERSION
8988#define VK_KHR_MAINTENANCE1_EXTENSION_NAME VK_KHR_MAINTENANCE_1_EXTENSION_NAME
8989typedef VkCommandPoolTrimFlags VkCommandPoolTrimFlagsKHR;
8990
8991typedef void (VKAPI_PTR *PFN_vkTrimCommandPoolKHR)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags);
8992
8993#ifndef VK_NO_PROTOTYPES
8994VKAPI_ATTR void VKAPI_CALL vkTrimCommandPoolKHR(
8995    VkDevice                                    device,
8996    VkCommandPool                               commandPool,
8997    VkCommandPoolTrimFlags                      flags);
8998#endif
8999
9000
9001// VK_KHR_device_group_creation is a preprocessor guard. Do not pass it to API calls.
9002#define VK_KHR_device_group_creation 1
9003#define VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION 1
9004#define VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHR_device_group_creation"
9005#define VK_MAX_DEVICE_GROUP_SIZE_KHR      VK_MAX_DEVICE_GROUP_SIZE
9006typedef VkPhysicalDeviceGroupProperties VkPhysicalDeviceGroupPropertiesKHR;
9007
9008typedef VkDeviceGroupDeviceCreateInfo VkDeviceGroupDeviceCreateInfoKHR;
9009
9010typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroupsKHR)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties);
9011
9012#ifndef VK_NO_PROTOTYPES
9013VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroupsKHR(
9014    VkInstance                                  instance,
9015    uint32_t*                                   pPhysicalDeviceGroupCount,
9016    VkPhysicalDeviceGroupProperties*            pPhysicalDeviceGroupProperties);
9017#endif
9018
9019
9020// VK_KHR_external_memory_capabilities is a preprocessor guard. Do not pass it to API calls.
9021#define VK_KHR_external_memory_capabilities 1
9022#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
9023#define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_memory_capabilities"
9024#define VK_LUID_SIZE_KHR                  VK_LUID_SIZE
9025typedef VkExternalMemoryHandleTypeFlags VkExternalMemoryHandleTypeFlagsKHR;
9026
9027typedef VkExternalMemoryHandleTypeFlagBits VkExternalMemoryHandleTypeFlagBitsKHR;
9028
9029typedef VkExternalMemoryFeatureFlags VkExternalMemoryFeatureFlagsKHR;
9030
9031typedef VkExternalMemoryFeatureFlagBits VkExternalMemoryFeatureFlagBitsKHR;
9032
9033typedef VkExternalMemoryProperties VkExternalMemoryPropertiesKHR;
9034
9035typedef VkPhysicalDeviceExternalImageFormatInfo VkPhysicalDeviceExternalImageFormatInfoKHR;
9036
9037typedef VkExternalImageFormatProperties VkExternalImageFormatPropertiesKHR;
9038
9039typedef VkPhysicalDeviceExternalBufferInfo VkPhysicalDeviceExternalBufferInfoKHR;
9040
9041typedef VkExternalBufferProperties VkExternalBufferPropertiesKHR;
9042
9043typedef VkPhysicalDeviceIDProperties VkPhysicalDeviceIDPropertiesKHR;
9044
9045typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties);
9046
9047#ifndef VK_NO_PROTOTYPES
9048VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferPropertiesKHR(
9049    VkPhysicalDevice                            physicalDevice,
9050    const VkPhysicalDeviceExternalBufferInfo*   pExternalBufferInfo,
9051    VkExternalBufferProperties*                 pExternalBufferProperties);
9052#endif
9053
9054
9055// VK_KHR_external_memory is a preprocessor guard. Do not pass it to API calls.
9056#define VK_KHR_external_memory 1
9057#define VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION 1
9058#define VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHR_external_memory"
9059#define VK_QUEUE_FAMILY_EXTERNAL_KHR      VK_QUEUE_FAMILY_EXTERNAL
9060typedef VkExternalMemoryImageCreateInfo VkExternalMemoryImageCreateInfoKHR;
9061
9062typedef VkExternalMemoryBufferCreateInfo VkExternalMemoryBufferCreateInfoKHR;
9063
9064typedef VkExportMemoryAllocateInfo VkExportMemoryAllocateInfoKHR;
9065
9066
9067
9068// VK_KHR_external_memory_fd is a preprocessor guard. Do not pass it to API calls.
9069#define VK_KHR_external_memory_fd 1
9070#define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1
9071#define VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHR_external_memory_fd"
9072typedef struct VkImportMemoryFdInfoKHR {
9073    VkStructureType                       sType;
9074    const void*                           pNext;
9075    VkExternalMemoryHandleTypeFlagBits    handleType;
9076    int                                   fd;
9077} VkImportMemoryFdInfoKHR;
9078
9079typedef struct VkMemoryFdPropertiesKHR {
9080    VkStructureType    sType;
9081    void*              pNext;
9082    uint32_t           memoryTypeBits;
9083} VkMemoryFdPropertiesKHR;
9084
9085typedef struct VkMemoryGetFdInfoKHR {
9086    VkStructureType                       sType;
9087    const void*                           pNext;
9088    VkDeviceMemory                        memory;
9089    VkExternalMemoryHandleTypeFlagBits    handleType;
9090} VkMemoryGetFdInfoKHR;
9091
9092typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdKHR)(VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd);
9093typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdPropertiesKHR)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties);
9094
9095#ifndef VK_NO_PROTOTYPES
9096VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdKHR(
9097    VkDevice                                    device,
9098    const VkMemoryGetFdInfoKHR*                 pGetFdInfo,
9099    int*                                        pFd);
9100
9101VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHR(
9102    VkDevice                                    device,
9103    VkExternalMemoryHandleTypeFlagBits          handleType,
9104    int                                         fd,
9105    VkMemoryFdPropertiesKHR*                    pMemoryFdProperties);
9106#endif
9107
9108
9109// VK_KHR_external_semaphore_capabilities is a preprocessor guard. Do not pass it to API calls.
9110#define VK_KHR_external_semaphore_capabilities 1
9111#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1
9112#define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_semaphore_capabilities"
9113typedef VkExternalSemaphoreHandleTypeFlags VkExternalSemaphoreHandleTypeFlagsKHR;
9114
9115typedef VkExternalSemaphoreHandleTypeFlagBits VkExternalSemaphoreHandleTypeFlagBitsKHR;
9116
9117typedef VkExternalSemaphoreFeatureFlags VkExternalSemaphoreFeatureFlagsKHR;
9118
9119typedef VkExternalSemaphoreFeatureFlagBits VkExternalSemaphoreFeatureFlagBitsKHR;
9120
9121typedef VkPhysicalDeviceExternalSemaphoreInfo VkPhysicalDeviceExternalSemaphoreInfoKHR;
9122
9123typedef VkExternalSemaphoreProperties VkExternalSemaphorePropertiesKHR;
9124
9125typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties);
9126
9127#ifndef VK_NO_PROTOTYPES
9128VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
9129    VkPhysicalDevice                            physicalDevice,
9130    const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
9131    VkExternalSemaphoreProperties*              pExternalSemaphoreProperties);
9132#endif
9133
9134
9135// VK_KHR_external_semaphore is a preprocessor guard. Do not pass it to API calls.
9136#define VK_KHR_external_semaphore 1
9137#define VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
9138#define VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHR_external_semaphore"
9139typedef VkSemaphoreImportFlags VkSemaphoreImportFlagsKHR;
9140
9141typedef VkSemaphoreImportFlagBits VkSemaphoreImportFlagBitsKHR;
9142
9143typedef VkExportSemaphoreCreateInfo VkExportSemaphoreCreateInfoKHR;
9144
9145
9146
9147// VK_KHR_external_semaphore_fd is a preprocessor guard. Do not pass it to API calls.
9148#define VK_KHR_external_semaphore_fd 1
9149#define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1
9150#define VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHR_external_semaphore_fd"
9151typedef struct VkImportSemaphoreFdInfoKHR {
9152    VkStructureType                          sType;
9153    const void*                              pNext;
9154    VkSemaphore                              semaphore;
9155    VkSemaphoreImportFlags                   flags;
9156    VkExternalSemaphoreHandleTypeFlagBits    handleType;
9157    int                                      fd;
9158} VkImportSemaphoreFdInfoKHR;
9159
9160typedef struct VkSemaphoreGetFdInfoKHR {
9161    VkStructureType                          sType;
9162    const void*                              pNext;
9163    VkSemaphore                              semaphore;
9164    VkExternalSemaphoreHandleTypeFlagBits    handleType;
9165} VkSemaphoreGetFdInfoKHR;
9166
9167typedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreFdKHR)(VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo);
9168typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreFdKHR)(VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd);
9169
9170#ifndef VK_NO_PROTOTYPES
9171VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreFdKHR(
9172    VkDevice                                    device,
9173    const VkImportSemaphoreFdInfoKHR*           pImportSemaphoreFdInfo);
9174
9175VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHR(
9176    VkDevice                                    device,
9177    const VkSemaphoreGetFdInfoKHR*              pGetFdInfo,
9178    int*                                        pFd);
9179#endif
9180
9181
9182// VK_KHR_push_descriptor is a preprocessor guard. Do not pass it to API calls.
9183#define VK_KHR_push_descriptor 1
9184#define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 2
9185#define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor"
9186typedef struct VkPhysicalDevicePushDescriptorPropertiesKHR {
9187    VkStructureType    sType;
9188    void*              pNext;
9189    uint32_t           maxPushDescriptors;
9190} VkPhysicalDevicePushDescriptorPropertiesKHR;
9191
9192typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetKHR)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites);
9193typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplateKHR)(VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData);
9194
9195#ifndef VK_NO_PROTOTYPES
9196VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetKHR(
9197    VkCommandBuffer                             commandBuffer,
9198    VkPipelineBindPoint                         pipelineBindPoint,
9199    VkPipelineLayout                            layout,
9200    uint32_t                                    set,
9201    uint32_t                                    descriptorWriteCount,
9202    const VkWriteDescriptorSet*                 pDescriptorWrites);
9203
9204VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR(
9205    VkCommandBuffer                             commandBuffer,
9206    VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
9207    VkPipelineLayout                            layout,
9208    uint32_t                                    set,
9209    const void*                                 pData);
9210#endif
9211
9212
9213// VK_KHR_shader_float16_int8 is a preprocessor guard. Do not pass it to API calls.
9214#define VK_KHR_shader_float16_int8 1
9215#define VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION 1
9216#define VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME "VK_KHR_shader_float16_int8"
9217typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceShaderFloat16Int8FeaturesKHR;
9218
9219typedef VkPhysicalDeviceShaderFloat16Int8Features VkPhysicalDeviceFloat16Int8FeaturesKHR;
9220
9221
9222
9223// VK_KHR_16bit_storage is a preprocessor guard. Do not pass it to API calls.
9224#define VK_KHR_16bit_storage 1
9225#define VK_KHR_16BIT_STORAGE_SPEC_VERSION 1
9226#define VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage"
9227typedef VkPhysicalDevice16BitStorageFeatures VkPhysicalDevice16BitStorageFeaturesKHR;
9228
9229
9230
9231// VK_KHR_incremental_present is a preprocessor guard. Do not pass it to API calls.
9232#define VK_KHR_incremental_present 1
9233#define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 2
9234#define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present"
9235typedef struct VkRectLayerKHR {
9236    VkOffset2D    offset;
9237    VkExtent2D    extent;
9238    uint32_t      layer;
9239} VkRectLayerKHR;
9240
9241typedef struct VkPresentRegionKHR {
9242    uint32_t                 rectangleCount;
9243    const VkRectLayerKHR*    pRectangles;
9244} VkPresentRegionKHR;
9245
9246typedef struct VkPresentRegionsKHR {
9247    VkStructureType              sType;
9248    const void*                  pNext;
9249    uint32_t                     swapchainCount;
9250    const VkPresentRegionKHR*    pRegions;
9251} VkPresentRegionsKHR;
9252
9253
9254
9255// VK_KHR_descriptor_update_template is a preprocessor guard. Do not pass it to API calls.
9256#define VK_KHR_descriptor_update_template 1
9257typedef VkDescriptorUpdateTemplate VkDescriptorUpdateTemplateKHR;
9258
9259#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1
9260#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template"
9261typedef VkDescriptorUpdateTemplateType VkDescriptorUpdateTemplateTypeKHR;
9262
9263typedef VkDescriptorUpdateTemplateCreateFlags VkDescriptorUpdateTemplateCreateFlagsKHR;
9264
9265typedef VkDescriptorUpdateTemplateEntry VkDescriptorUpdateTemplateEntryKHR;
9266
9267typedef VkDescriptorUpdateTemplateCreateInfo VkDescriptorUpdateTemplateCreateInfoKHR;
9268
9269typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplateKHR)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate);
9270typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplateKHR)(VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
9271typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplateKHR)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData);
9272
9273#ifndef VK_NO_PROTOTYPES
9274VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplateKHR(
9275    VkDevice                                    device,
9276    const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
9277    const VkAllocationCallbacks*                pAllocator,
9278    VkDescriptorUpdateTemplate*                 pDescriptorUpdateTemplate);
9279
9280VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplateKHR(
9281    VkDevice                                    device,
9282    VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
9283    const VkAllocationCallbacks*                pAllocator);
9284
9285VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR(
9286    VkDevice                                    device,
9287    VkDescriptorSet                             descriptorSet,
9288    VkDescriptorUpdateTemplate                  descriptorUpdateTemplate,
9289    const void*                                 pData);
9290#endif
9291
9292
9293// VK_KHR_imageless_framebuffer is a preprocessor guard. Do not pass it to API calls.
9294#define VK_KHR_imageless_framebuffer 1
9295#define VK_KHR_IMAGELESS_FRAMEBUFFER_SPEC_VERSION 1
9296#define VK_KHR_IMAGELESS_FRAMEBUFFER_EXTENSION_NAME "VK_KHR_imageless_framebuffer"
9297typedef VkPhysicalDeviceImagelessFramebufferFeatures VkPhysicalDeviceImagelessFramebufferFeaturesKHR;
9298
9299typedef VkFramebufferAttachmentsCreateInfo VkFramebufferAttachmentsCreateInfoKHR;
9300
9301typedef VkFramebufferAttachmentImageInfo VkFramebufferAttachmentImageInfoKHR;
9302
9303typedef VkRenderPassAttachmentBeginInfo VkRenderPassAttachmentBeginInfoKHR;
9304
9305
9306
9307// VK_KHR_create_renderpass2 is a preprocessor guard. Do not pass it to API calls.
9308#define VK_KHR_create_renderpass2 1
9309#define VK_KHR_CREATE_RENDERPASS_2_SPEC_VERSION 1
9310#define VK_KHR_CREATE_RENDERPASS_2_EXTENSION_NAME "VK_KHR_create_renderpass2"
9311typedef VkRenderPassCreateInfo2 VkRenderPassCreateInfo2KHR;
9312
9313typedef VkAttachmentDescription2 VkAttachmentDescription2KHR;
9314
9315typedef VkAttachmentReference2 VkAttachmentReference2KHR;
9316
9317typedef VkSubpassDescription2 VkSubpassDescription2KHR;
9318
9319typedef VkSubpassDependency2 VkSubpassDependency2KHR;
9320
9321typedef VkSubpassBeginInfo VkSubpassBeginInfoKHR;
9322
9323typedef VkSubpassEndInfo VkSubpassEndInfoKHR;
9324
9325typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass2KHR)(VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
9326typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo*      pRenderPassBegin, const VkSubpassBeginInfo*      pSubpassBeginInfo);
9327typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassBeginInfo*      pSubpassBeginInfo, const VkSubpassEndInfo*        pSubpassEndInfo);
9328typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass2KHR)(VkCommandBuffer commandBuffer, const VkSubpassEndInfo*        pSubpassEndInfo);
9329
9330#ifndef VK_NO_PROTOTYPES
9331VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2KHR(
9332    VkDevice                                    device,
9333    const VkRenderPassCreateInfo2*              pCreateInfo,
9334    const VkAllocationCallbacks*                pAllocator,
9335    VkRenderPass*                               pRenderPass);
9336
9337VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2KHR(
9338    VkCommandBuffer                             commandBuffer,
9339    const VkRenderPassBeginInfo*                pRenderPassBegin,
9340    const VkSubpassBeginInfo*                   pSubpassBeginInfo);
9341
9342VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2KHR(
9343    VkCommandBuffer                             commandBuffer,
9344    const VkSubpassBeginInfo*                   pSubpassBeginInfo,
9345    const VkSubpassEndInfo*                     pSubpassEndInfo);
9346
9347VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2KHR(
9348    VkCommandBuffer                             commandBuffer,
9349    const VkSubpassEndInfo*                     pSubpassEndInfo);
9350#endif
9351
9352
9353// VK_KHR_shared_presentable_image is a preprocessor guard. Do not pass it to API calls.
9354#define VK_KHR_shared_presentable_image 1
9355#define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1
9356#define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image"
9357typedef struct VkSharedPresentSurfaceCapabilitiesKHR {
9358    VkStructureType      sType;
9359    void*                pNext;
9360    VkImageUsageFlags    sharedPresentSupportedUsageFlags;
9361} VkSharedPresentSurfaceCapabilitiesKHR;
9362
9363typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainStatusKHR)(VkDevice device, VkSwapchainKHR swapchain);
9364
9365#ifndef VK_NO_PROTOTYPES
9366VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainStatusKHR(
9367    VkDevice                                    device,
9368    VkSwapchainKHR                              swapchain);
9369#endif
9370
9371
9372// VK_KHR_external_fence_capabilities is a preprocessor guard. Do not pass it to API calls.
9373#define VK_KHR_external_fence_capabilities 1
9374#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION 1
9375#define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_fence_capabilities"
9376typedef VkExternalFenceHandleTypeFlags VkExternalFenceHandleTypeFlagsKHR;
9377
9378typedef VkExternalFenceHandleTypeFlagBits VkExternalFenceHandleTypeFlagBitsKHR;
9379
9380typedef VkExternalFenceFeatureFlags VkExternalFenceFeatureFlagsKHR;
9381
9382typedef VkExternalFenceFeatureFlagBits VkExternalFenceFeatureFlagBitsKHR;
9383
9384typedef VkPhysicalDeviceExternalFenceInfo VkPhysicalDeviceExternalFenceInfoKHR;
9385
9386typedef VkExternalFenceProperties VkExternalFencePropertiesKHR;
9387
9388typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties);
9389
9390#ifndef VK_NO_PROTOTYPES
9391VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFencePropertiesKHR(
9392    VkPhysicalDevice                            physicalDevice,
9393    const VkPhysicalDeviceExternalFenceInfo*    pExternalFenceInfo,
9394    VkExternalFenceProperties*                  pExternalFenceProperties);
9395#endif
9396
9397
9398// VK_KHR_external_fence is a preprocessor guard. Do not pass it to API calls.
9399#define VK_KHR_external_fence 1
9400#define VK_KHR_EXTERNAL_FENCE_SPEC_VERSION 1
9401#define VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME "VK_KHR_external_fence"
9402typedef VkFenceImportFlags VkFenceImportFlagsKHR;
9403
9404typedef VkFenceImportFlagBits VkFenceImportFlagBitsKHR;
9405
9406typedef VkExportFenceCreateInfo VkExportFenceCreateInfoKHR;
9407
9408
9409
9410// VK_KHR_external_fence_fd is a preprocessor guard. Do not pass it to API calls.
9411#define VK_KHR_external_fence_fd 1
9412#define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1
9413#define VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME "VK_KHR_external_fence_fd"
9414typedef struct VkImportFenceFdInfoKHR {
9415    VkStructureType                      sType;
9416    const void*                          pNext;
9417    VkFence                              fence;
9418    VkFenceImportFlags                   flags;
9419    VkExternalFenceHandleTypeFlagBits    handleType;
9420    int                                  fd;
9421} VkImportFenceFdInfoKHR;
9422
9423typedef struct VkFenceGetFdInfoKHR {
9424    VkStructureType                      sType;
9425    const void*                          pNext;
9426    VkFence                              fence;
9427    VkExternalFenceHandleTypeFlagBits    handleType;
9428} VkFenceGetFdInfoKHR;
9429
9430typedef VkResult (VKAPI_PTR *PFN_vkImportFenceFdKHR)(VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo);
9431typedef VkResult (VKAPI_PTR *PFN_vkGetFenceFdKHR)(VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd);
9432
9433#ifndef VK_NO_PROTOTYPES
9434VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceFdKHR(
9435    VkDevice                                    device,
9436    const VkImportFenceFdInfoKHR*               pImportFenceFdInfo);
9437
9438VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceFdKHR(
9439    VkDevice                                    device,
9440    const VkFenceGetFdInfoKHR*                  pGetFdInfo,
9441    int*                                        pFd);
9442#endif
9443
9444
9445// VK_KHR_performance_query is a preprocessor guard. Do not pass it to API calls.
9446#define VK_KHR_performance_query 1
9447#define VK_KHR_PERFORMANCE_QUERY_SPEC_VERSION 1
9448#define VK_KHR_PERFORMANCE_QUERY_EXTENSION_NAME "VK_KHR_performance_query"
9449
9450typedef enum VkPerformanceCounterUnitKHR {
9451    VK_PERFORMANCE_COUNTER_UNIT_GENERIC_KHR = 0,
9452    VK_PERFORMANCE_COUNTER_UNIT_PERCENTAGE_KHR = 1,
9453    VK_PERFORMANCE_COUNTER_UNIT_NANOSECONDS_KHR = 2,
9454    VK_PERFORMANCE_COUNTER_UNIT_BYTES_KHR = 3,
9455    VK_PERFORMANCE_COUNTER_UNIT_BYTES_PER_SECOND_KHR = 4,
9456    VK_PERFORMANCE_COUNTER_UNIT_KELVIN_KHR = 5,
9457    VK_PERFORMANCE_COUNTER_UNIT_WATTS_KHR = 6,
9458    VK_PERFORMANCE_COUNTER_UNIT_VOLTS_KHR = 7,
9459    VK_PERFORMANCE_COUNTER_UNIT_AMPS_KHR = 8,
9460    VK_PERFORMANCE_COUNTER_UNIT_HERTZ_KHR = 9,
9461    VK_PERFORMANCE_COUNTER_UNIT_CYCLES_KHR = 10,
9462    VK_PERFORMANCE_COUNTER_UNIT_MAX_ENUM_KHR = 0x7FFFFFFF
9463} VkPerformanceCounterUnitKHR;
9464
9465typedef enum VkPerformanceCounterScopeKHR {
9466    VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR = 0,
9467    VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR = 1,
9468    VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR = 2,
9469    VK_QUERY_SCOPE_COMMAND_BUFFER_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR,
9470    VK_QUERY_SCOPE_RENDER_PASS_KHR = VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR,
9471    VK_QUERY_SCOPE_COMMAND_KHR = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR,
9472    VK_PERFORMANCE_COUNTER_SCOPE_MAX_ENUM_KHR = 0x7FFFFFFF
9473} VkPerformanceCounterScopeKHR;
9474
9475typedef enum VkPerformanceCounterStorageKHR {
9476    VK_PERFORMANCE_COUNTER_STORAGE_INT32_KHR = 0,
9477    VK_PERFORMANCE_COUNTER_STORAGE_INT64_KHR = 1,
9478    VK_PERFORMANCE_COUNTER_STORAGE_UINT32_KHR = 2,
9479    VK_PERFORMANCE_COUNTER_STORAGE_UINT64_KHR = 3,
9480    VK_PERFORMANCE_COUNTER_STORAGE_FLOAT32_KHR = 4,
9481    VK_PERFORMANCE_COUNTER_STORAGE_FLOAT64_KHR = 5,
9482    VK_PERFORMANCE_COUNTER_STORAGE_MAX_ENUM_KHR = 0x7FFFFFFF
9483} VkPerformanceCounterStorageKHR;
9484
9485typedef enum VkPerformanceCounterDescriptionFlagBitsKHR {
9486    VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR = 0x00000001,
9487    VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR = 0x00000002,
9488    VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR,
9489    VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_KHR = VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR,
9490    VK_PERFORMANCE_COUNTER_DESCRIPTION_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
9491} VkPerformanceCounterDescriptionFlagBitsKHR;
9492typedef VkFlags VkPerformanceCounterDescriptionFlagsKHR;
9493
9494typedef enum VkAcquireProfilingLockFlagBitsKHR {
9495    VK_ACQUIRE_PROFILING_LOCK_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
9496} VkAcquireProfilingLockFlagBitsKHR;
9497typedef VkFlags VkAcquireProfilingLockFlagsKHR;
9498typedef struct VkPhysicalDevicePerformanceQueryFeaturesKHR {
9499    VkStructureType    sType;
9500    void*              pNext;
9501    VkBool32           performanceCounterQueryPools;
9502    VkBool32           performanceCounterMultipleQueryPools;
9503} VkPhysicalDevicePerformanceQueryFeaturesKHR;
9504
9505typedef struct VkPhysicalDevicePerformanceQueryPropertiesKHR {
9506    VkStructureType    sType;
9507    void*              pNext;
9508    VkBool32           allowCommandBufferQueryCopies;
9509} VkPhysicalDevicePerformanceQueryPropertiesKHR;
9510
9511typedef struct VkPerformanceCounterKHR {
9512    VkStructureType                   sType;
9513    void*                             pNext;
9514    VkPerformanceCounterUnitKHR       unit;
9515    VkPerformanceCounterScopeKHR      scope;
9516    VkPerformanceCounterStorageKHR    storage;
9517    uint8_t                           uuid[VK_UUID_SIZE];
9518} VkPerformanceCounterKHR;
9519
9520typedef struct VkPerformanceCounterDescriptionKHR {
9521    VkStructureType                            sType;
9522    void*                                      pNext;
9523    VkPerformanceCounterDescriptionFlagsKHR    flags;
9524    char                                       name[VK_MAX_DESCRIPTION_SIZE];
9525    char                                       category[VK_MAX_DESCRIPTION_SIZE];
9526    char                                       description[VK_MAX_DESCRIPTION_SIZE];
9527} VkPerformanceCounterDescriptionKHR;
9528
9529typedef struct VkQueryPoolPerformanceCreateInfoKHR {
9530    VkStructureType    sType;
9531    const void*        pNext;
9532    uint32_t           queueFamilyIndex;
9533    uint32_t           counterIndexCount;
9534    const uint32_t*    pCounterIndices;
9535} VkQueryPoolPerformanceCreateInfoKHR;
9536
9537typedef union VkPerformanceCounterResultKHR {
9538    int32_t     int32;
9539    int64_t     int64;
9540    uint32_t    uint32;
9541    uint64_t    uint64;
9542    float       float32;
9543    double      float64;
9544} VkPerformanceCounterResultKHR;
9545
9546typedef struct VkAcquireProfilingLockInfoKHR {
9547    VkStructureType                   sType;
9548    const void*                       pNext;
9549    VkAcquireProfilingLockFlagsKHR    flags;
9550    uint64_t                          timeout;
9551} VkAcquireProfilingLockInfoKHR;
9552
9553typedef struct VkPerformanceQuerySubmitInfoKHR {
9554    VkStructureType    sType;
9555    const void*        pNext;
9556    uint32_t           counterPassIndex;
9557} VkPerformanceQuerySubmitInfoKHR;
9558
9559typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, uint32_t* pCounterCount, VkPerformanceCounterKHR* pCounters, VkPerformanceCounterDescriptionKHR* pCounterDescriptions);
9560typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR)(VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, uint32_t* pNumPasses);
9561typedef VkResult (VKAPI_PTR *PFN_vkAcquireProfilingLockKHR)(VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo);
9562typedef void (VKAPI_PTR *PFN_vkReleaseProfilingLockKHR)(VkDevice device);
9563
9564#ifndef VK_NO_PROTOTYPES
9565VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR(
9566    VkPhysicalDevice                            physicalDevice,
9567    uint32_t                                    queueFamilyIndex,
9568    uint32_t*                                   pCounterCount,
9569    VkPerformanceCounterKHR*                    pCounters,
9570    VkPerformanceCounterDescriptionKHR*         pCounterDescriptions);
9571
9572VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR(
9573    VkPhysicalDevice                            physicalDevice,
9574    const VkQueryPoolPerformanceCreateInfoKHR*  pPerformanceQueryCreateInfo,
9575    uint32_t*                                   pNumPasses);
9576
9577VKAPI_ATTR VkResult VKAPI_CALL vkAcquireProfilingLockKHR(
9578    VkDevice                                    device,
9579    const VkAcquireProfilingLockInfoKHR*        pInfo);
9580
9581VKAPI_ATTR void VKAPI_CALL vkReleaseProfilingLockKHR(
9582    VkDevice                                    device);
9583#endif
9584
9585
9586// VK_KHR_maintenance2 is a preprocessor guard. Do not pass it to API calls.
9587#define VK_KHR_maintenance2 1
9588#define VK_KHR_MAINTENANCE_2_SPEC_VERSION 1
9589#define VK_KHR_MAINTENANCE_2_EXTENSION_NAME "VK_KHR_maintenance2"
9590#define VK_KHR_MAINTENANCE2_SPEC_VERSION  VK_KHR_MAINTENANCE_2_SPEC_VERSION
9591#define VK_KHR_MAINTENANCE2_EXTENSION_NAME VK_KHR_MAINTENANCE_2_EXTENSION_NAME
9592typedef VkPointClippingBehavior VkPointClippingBehaviorKHR;
9593
9594typedef VkTessellationDomainOrigin VkTessellationDomainOriginKHR;
9595
9596typedef VkPhysicalDevicePointClippingProperties VkPhysicalDevicePointClippingPropertiesKHR;
9597
9598typedef VkRenderPassInputAttachmentAspectCreateInfo VkRenderPassInputAttachmentAspectCreateInfoKHR;
9599
9600typedef VkInputAttachmentAspectReference VkInputAttachmentAspectReferenceKHR;
9601
9602typedef VkImageViewUsageCreateInfo VkImageViewUsageCreateInfoKHR;
9603
9604typedef VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellationDomainOriginStateCreateInfoKHR;
9605
9606
9607
9608// VK_KHR_get_surface_capabilities2 is a preprocessor guard. Do not pass it to API calls.
9609#define VK_KHR_get_surface_capabilities2 1
9610#define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1
9611#define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2"
9612typedef struct VkPhysicalDeviceSurfaceInfo2KHR {
9613    VkStructureType    sType;
9614    const void*        pNext;
9615    VkSurfaceKHR       surface;
9616} VkPhysicalDeviceSurfaceInfo2KHR;
9617
9618typedef struct VkSurfaceCapabilities2KHR {
9619    VkStructureType             sType;
9620    void*                       pNext;
9621    VkSurfaceCapabilitiesKHR    surfaceCapabilities;
9622} VkSurfaceCapabilities2KHR;
9623
9624typedef struct VkSurfaceFormat2KHR {
9625    VkStructureType       sType;
9626    void*                 pNext;
9627    VkSurfaceFormatKHR    surfaceFormat;
9628} VkSurfaceFormat2KHR;
9629
9630typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities);
9631typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormats2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats);
9632
9633#ifndef VK_NO_PROTOTYPES
9634VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2KHR(
9635    VkPhysicalDevice                            physicalDevice,
9636    const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
9637    VkSurfaceCapabilities2KHR*                  pSurfaceCapabilities);
9638
9639VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormats2KHR(
9640    VkPhysicalDevice                            physicalDevice,
9641    const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo,
9642    uint32_t*                                   pSurfaceFormatCount,
9643    VkSurfaceFormat2KHR*                        pSurfaceFormats);
9644#endif
9645
9646
9647// VK_KHR_variable_pointers is a preprocessor guard. Do not pass it to API calls.
9648#define VK_KHR_variable_pointers 1
9649#define VK_KHR_VARIABLE_POINTERS_SPEC_VERSION 1
9650#define VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME "VK_KHR_variable_pointers"
9651typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeaturesKHR;
9652
9653typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointersFeaturesKHR;
9654
9655
9656
9657// VK_KHR_get_display_properties2 is a preprocessor guard. Do not pass it to API calls.
9658#define VK_KHR_get_display_properties2 1
9659#define VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION 1
9660#define VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_display_properties2"
9661typedef struct VkDisplayProperties2KHR {
9662    VkStructureType           sType;
9663    void*                     pNext;
9664    VkDisplayPropertiesKHR    displayProperties;
9665} VkDisplayProperties2KHR;
9666
9667typedef struct VkDisplayPlaneProperties2KHR {
9668    VkStructureType                sType;
9669    void*                          pNext;
9670    VkDisplayPlanePropertiesKHR    displayPlaneProperties;
9671} VkDisplayPlaneProperties2KHR;
9672
9673typedef struct VkDisplayModeProperties2KHR {
9674    VkStructureType               sType;
9675    void*                         pNext;
9676    VkDisplayModePropertiesKHR    displayModeProperties;
9677} VkDisplayModeProperties2KHR;
9678
9679typedef struct VkDisplayPlaneInfo2KHR {
9680    VkStructureType     sType;
9681    const void*         pNext;
9682    VkDisplayModeKHR    mode;
9683    uint32_t            planeIndex;
9684} VkDisplayPlaneInfo2KHR;
9685
9686typedef struct VkDisplayPlaneCapabilities2KHR {
9687    VkStructureType                  sType;
9688    void*                            pNext;
9689    VkDisplayPlaneCapabilitiesKHR    capabilities;
9690} VkDisplayPlaneCapabilities2KHR;
9691
9692typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties);
9693typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties);
9694typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModeProperties2KHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties);
9695typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilities2KHR)(VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities);
9696
9697#ifndef VK_NO_PROTOTYPES
9698VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayProperties2KHR(
9699    VkPhysicalDevice                            physicalDevice,
9700    uint32_t*                                   pPropertyCount,
9701    VkDisplayProperties2KHR*                    pProperties);
9702
9703VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlaneProperties2KHR(
9704    VkPhysicalDevice                            physicalDevice,
9705    uint32_t*                                   pPropertyCount,
9706    VkDisplayPlaneProperties2KHR*               pProperties);
9707
9708VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModeProperties2KHR(
9709    VkPhysicalDevice                            physicalDevice,
9710    VkDisplayKHR                                display,
9711    uint32_t*                                   pPropertyCount,
9712    VkDisplayModeProperties2KHR*                pProperties);
9713
9714VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilities2KHR(
9715    VkPhysicalDevice                            physicalDevice,
9716    const VkDisplayPlaneInfo2KHR*               pDisplayPlaneInfo,
9717    VkDisplayPlaneCapabilities2KHR*             pCapabilities);
9718#endif
9719
9720
9721// VK_KHR_dedicated_allocation is a preprocessor guard. Do not pass it to API calls.
9722#define VK_KHR_dedicated_allocation 1
9723#define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3
9724#define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation"
9725typedef VkMemoryDedicatedRequirements VkMemoryDedicatedRequirementsKHR;
9726
9727typedef VkMemoryDedicatedAllocateInfo VkMemoryDedicatedAllocateInfoKHR;
9728
9729
9730
9731// VK_KHR_storage_buffer_storage_class is a preprocessor guard. Do not pass it to API calls.
9732#define VK_KHR_storage_buffer_storage_class 1
9733#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION 1
9734#define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME "VK_KHR_storage_buffer_storage_class"
9735
9736
9737// VK_KHR_relaxed_block_layout is a preprocessor guard. Do not pass it to API calls.
9738#define VK_KHR_relaxed_block_layout 1
9739#define VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION 1
9740#define VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME "VK_KHR_relaxed_block_layout"
9741
9742
9743// VK_KHR_get_memory_requirements2 is a preprocessor guard. Do not pass it to API calls.
9744#define VK_KHR_get_memory_requirements2 1
9745#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_SPEC_VERSION 1
9746#define VK_KHR_GET_MEMORY_REQUIREMENTS_2_EXTENSION_NAME "VK_KHR_get_memory_requirements2"
9747typedef VkBufferMemoryRequirementsInfo2 VkBufferMemoryRequirementsInfo2KHR;
9748
9749typedef VkImageMemoryRequirementsInfo2 VkImageMemoryRequirementsInfo2KHR;
9750
9751typedef VkImageSparseMemoryRequirementsInfo2 VkImageSparseMemoryRequirementsInfo2KHR;
9752
9753typedef VkMemoryRequirements2 VkMemoryRequirements2KHR;
9754
9755typedef VkSparseImageMemoryRequirements2 VkSparseImageMemoryRequirements2KHR;
9756
9757typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements2KHR)(VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
9758typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements2KHR)(VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements);
9759typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements2KHR)(VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
9760
9761#ifndef VK_NO_PROTOTYPES
9762VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2KHR(
9763    VkDevice                                    device,
9764    const VkImageMemoryRequirementsInfo2*       pInfo,
9765    VkMemoryRequirements2*                      pMemoryRequirements);
9766
9767VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2KHR(
9768    VkDevice                                    device,
9769    const VkBufferMemoryRequirementsInfo2*      pInfo,
9770    VkMemoryRequirements2*                      pMemoryRequirements);
9771
9772VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2KHR(
9773    VkDevice                                    device,
9774    const VkImageSparseMemoryRequirementsInfo2* pInfo,
9775    uint32_t*                                   pSparseMemoryRequirementCount,
9776    VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements);
9777#endif
9778
9779
9780// VK_KHR_image_format_list is a preprocessor guard. Do not pass it to API calls.
9781#define VK_KHR_image_format_list 1
9782#define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1
9783#define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME "VK_KHR_image_format_list"
9784typedef VkImageFormatListCreateInfo VkImageFormatListCreateInfoKHR;
9785
9786
9787
9788// VK_KHR_sampler_ycbcr_conversion is a preprocessor guard. Do not pass it to API calls.
9789#define VK_KHR_sampler_ycbcr_conversion 1
9790typedef VkSamplerYcbcrConversion VkSamplerYcbcrConversionKHR;
9791
9792#define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 14
9793#define VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME "VK_KHR_sampler_ycbcr_conversion"
9794typedef VkSamplerYcbcrModelConversion VkSamplerYcbcrModelConversionKHR;
9795
9796typedef VkSamplerYcbcrRange VkSamplerYcbcrRangeKHR;
9797
9798typedef VkChromaLocation VkChromaLocationKHR;
9799
9800typedef VkSamplerYcbcrConversionCreateInfo VkSamplerYcbcrConversionCreateInfoKHR;
9801
9802typedef VkSamplerYcbcrConversionInfo VkSamplerYcbcrConversionInfoKHR;
9803
9804typedef VkBindImagePlaneMemoryInfo VkBindImagePlaneMemoryInfoKHR;
9805
9806typedef VkImagePlaneMemoryRequirementsInfo VkImagePlaneMemoryRequirementsInfoKHR;
9807
9808typedef VkPhysicalDeviceSamplerYcbcrConversionFeatures VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR;
9809
9810typedef VkSamplerYcbcrConversionImageFormatProperties VkSamplerYcbcrConversionImageFormatPropertiesKHR;
9811
9812typedef VkResult (VKAPI_PTR *PFN_vkCreateSamplerYcbcrConversionKHR)(VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion);
9813typedef void (VKAPI_PTR *PFN_vkDestroySamplerYcbcrConversionKHR)(VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator);
9814
9815#ifndef VK_NO_PROTOTYPES
9816VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversionKHR(
9817    VkDevice                                    device,
9818    const VkSamplerYcbcrConversionCreateInfo*   pCreateInfo,
9819    const VkAllocationCallbacks*                pAllocator,
9820    VkSamplerYcbcrConversion*                   pYcbcrConversion);
9821
9822VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversionKHR(
9823    VkDevice                                    device,
9824    VkSamplerYcbcrConversion                    ycbcrConversion,
9825    const VkAllocationCallbacks*                pAllocator);
9826#endif
9827
9828
9829// VK_KHR_bind_memory2 is a preprocessor guard. Do not pass it to API calls.
9830#define VK_KHR_bind_memory2 1
9831#define VK_KHR_BIND_MEMORY_2_SPEC_VERSION 1
9832#define VK_KHR_BIND_MEMORY_2_EXTENSION_NAME "VK_KHR_bind_memory2"
9833typedef VkBindBufferMemoryInfo VkBindBufferMemoryInfoKHR;
9834
9835typedef VkBindImageMemoryInfo VkBindImageMemoryInfoKHR;
9836
9837typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos);
9838typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2KHR)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos);
9839
9840#ifndef VK_NO_PROTOTYPES
9841VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2KHR(
9842    VkDevice                                    device,
9843    uint32_t                                    bindInfoCount,
9844    const VkBindBufferMemoryInfo*               pBindInfos);
9845
9846VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2KHR(
9847    VkDevice                                    device,
9848    uint32_t                                    bindInfoCount,
9849    const VkBindImageMemoryInfo*                pBindInfos);
9850#endif
9851
9852
9853// VK_KHR_maintenance3 is a preprocessor guard. Do not pass it to API calls.
9854#define VK_KHR_maintenance3 1
9855#define VK_KHR_MAINTENANCE_3_SPEC_VERSION 1
9856#define VK_KHR_MAINTENANCE_3_EXTENSION_NAME "VK_KHR_maintenance3"
9857#define VK_KHR_MAINTENANCE3_SPEC_VERSION  VK_KHR_MAINTENANCE_3_SPEC_VERSION
9858#define VK_KHR_MAINTENANCE3_EXTENSION_NAME VK_KHR_MAINTENANCE_3_EXTENSION_NAME
9859typedef VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3PropertiesKHR;
9860
9861typedef VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupportKHR;
9862
9863typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupportKHR)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport);
9864
9865#ifndef VK_NO_PROTOTYPES
9866VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupportKHR(
9867    VkDevice                                    device,
9868    const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
9869    VkDescriptorSetLayoutSupport*               pSupport);
9870#endif
9871
9872
9873// VK_KHR_draw_indirect_count is a preprocessor guard. Do not pass it to API calls.
9874#define VK_KHR_draw_indirect_count 1
9875#define VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
9876#define VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_KHR_draw_indirect_count"
9877typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
9878typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountKHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
9879
9880#ifndef VK_NO_PROTOTYPES
9881VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountKHR(
9882    VkCommandBuffer                             commandBuffer,
9883    VkBuffer                                    buffer,
9884    VkDeviceSize                                offset,
9885    VkBuffer                                    countBuffer,
9886    VkDeviceSize                                countBufferOffset,
9887    uint32_t                                    maxDrawCount,
9888    uint32_t                                    stride);
9889
9890VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR(
9891    VkCommandBuffer                             commandBuffer,
9892    VkBuffer                                    buffer,
9893    VkDeviceSize                                offset,
9894    VkBuffer                                    countBuffer,
9895    VkDeviceSize                                countBufferOffset,
9896    uint32_t                                    maxDrawCount,
9897    uint32_t                                    stride);
9898#endif
9899
9900
9901// VK_KHR_shader_subgroup_extended_types is a preprocessor guard. Do not pass it to API calls.
9902#define VK_KHR_shader_subgroup_extended_types 1
9903#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_SPEC_VERSION 1
9904#define VK_KHR_SHADER_SUBGROUP_EXTENDED_TYPES_EXTENSION_NAME "VK_KHR_shader_subgroup_extended_types"
9905typedef VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures VkPhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR;
9906
9907
9908
9909// VK_KHR_8bit_storage is a preprocessor guard. Do not pass it to API calls.
9910#define VK_KHR_8bit_storage 1
9911#define VK_KHR_8BIT_STORAGE_SPEC_VERSION  1
9912#define VK_KHR_8BIT_STORAGE_EXTENSION_NAME "VK_KHR_8bit_storage"
9913typedef VkPhysicalDevice8BitStorageFeatures VkPhysicalDevice8BitStorageFeaturesKHR;
9914
9915
9916
9917// VK_KHR_shader_atomic_int64 is a preprocessor guard. Do not pass it to API calls.
9918#define VK_KHR_shader_atomic_int64 1
9919#define VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION 1
9920#define VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME "VK_KHR_shader_atomic_int64"
9921typedef VkPhysicalDeviceShaderAtomicInt64Features VkPhysicalDeviceShaderAtomicInt64FeaturesKHR;
9922
9923
9924
9925// VK_KHR_shader_clock is a preprocessor guard. Do not pass it to API calls.
9926#define VK_KHR_shader_clock 1
9927#define VK_KHR_SHADER_CLOCK_SPEC_VERSION  1
9928#define VK_KHR_SHADER_CLOCK_EXTENSION_NAME "VK_KHR_shader_clock"
9929typedef struct VkPhysicalDeviceShaderClockFeaturesKHR {
9930    VkStructureType    sType;
9931    void*              pNext;
9932    VkBool32           shaderSubgroupClock;
9933    VkBool32           shaderDeviceClock;
9934} VkPhysicalDeviceShaderClockFeaturesKHR;
9935
9936
9937
9938// VK_KHR_video_decode_h265 is a preprocessor guard. Do not pass it to API calls.
9939#define VK_KHR_video_decode_h265 1
9940#include "vk_video/vulkan_video_codec_h265std_decode.h"
9941#define VK_KHR_VIDEO_DECODE_H265_SPEC_VERSION 8
9942#define VK_KHR_VIDEO_DECODE_H265_EXTENSION_NAME "VK_KHR_video_decode_h265"
9943typedef struct VkVideoDecodeH265ProfileInfoKHR {
9944    VkStructureType           sType;
9945    const void*               pNext;
9946    StdVideoH265ProfileIdc    stdProfileIdc;
9947} VkVideoDecodeH265ProfileInfoKHR;
9948
9949typedef struct VkVideoDecodeH265CapabilitiesKHR {
9950    VkStructureType         sType;
9951    void*                   pNext;
9952    StdVideoH265LevelIdc    maxLevelIdc;
9953} VkVideoDecodeH265CapabilitiesKHR;
9954
9955typedef struct VkVideoDecodeH265SessionParametersAddInfoKHR {
9956    VkStructureType                            sType;
9957    const void*                                pNext;
9958    uint32_t                                   stdVPSCount;
9959    const StdVideoH265VideoParameterSet*       pStdVPSs;
9960    uint32_t                                   stdSPSCount;
9961    const StdVideoH265SequenceParameterSet*    pStdSPSs;
9962    uint32_t                                   stdPPSCount;
9963    const StdVideoH265PictureParameterSet*     pStdPPSs;
9964} VkVideoDecodeH265SessionParametersAddInfoKHR;
9965
9966typedef struct VkVideoDecodeH265SessionParametersCreateInfoKHR {
9967    VkStructureType                                        sType;
9968    const void*                                            pNext;
9969    uint32_t                                               maxStdVPSCount;
9970    uint32_t                                               maxStdSPSCount;
9971    uint32_t                                               maxStdPPSCount;
9972    const VkVideoDecodeH265SessionParametersAddInfoKHR*    pParametersAddInfo;
9973} VkVideoDecodeH265SessionParametersCreateInfoKHR;
9974
9975typedef struct VkVideoDecodeH265PictureInfoKHR {
9976    VkStructureType                         sType;
9977    const void*                             pNext;
9978    const StdVideoDecodeH265PictureInfo*    pStdPictureInfo;
9979    uint32_t                                sliceSegmentCount;
9980    const uint32_t*                         pSliceSegmentOffsets;
9981} VkVideoDecodeH265PictureInfoKHR;
9982
9983typedef struct VkVideoDecodeH265DpbSlotInfoKHR {
9984    VkStructureType                           sType;
9985    const void*                               pNext;
9986    const StdVideoDecodeH265ReferenceInfo*    pStdReferenceInfo;
9987} VkVideoDecodeH265DpbSlotInfoKHR;
9988
9989
9990
9991// VK_KHR_global_priority is a preprocessor guard. Do not pass it to API calls.
9992#define VK_KHR_global_priority 1
9993#define VK_MAX_GLOBAL_PRIORITY_SIZE_KHR   16U
9994#define VK_KHR_GLOBAL_PRIORITY_SPEC_VERSION 1
9995#define VK_KHR_GLOBAL_PRIORITY_EXTENSION_NAME "VK_KHR_global_priority"
9996
9997typedef enum VkQueueGlobalPriorityKHR {
9998    VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR = 128,
9999    VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR = 256,
10000    VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR = 512,
10001    VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR = 1024,
10002    VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = VK_QUEUE_GLOBAL_PRIORITY_LOW_KHR,
10003    VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_KHR,
10004    VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = VK_QUEUE_GLOBAL_PRIORITY_HIGH_KHR,
10005    VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_KHR,
10006    VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_KHR = 0x7FFFFFFF
10007} VkQueueGlobalPriorityKHR;
10008typedef struct VkDeviceQueueGlobalPriorityCreateInfoKHR {
10009    VkStructureType             sType;
10010    const void*                 pNext;
10011    VkQueueGlobalPriorityKHR    globalPriority;
10012} VkDeviceQueueGlobalPriorityCreateInfoKHR;
10013
10014typedef struct VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR {
10015    VkStructureType    sType;
10016    void*              pNext;
10017    VkBool32           globalPriorityQuery;
10018} VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR;
10019
10020typedef struct VkQueueFamilyGlobalPriorityPropertiesKHR {
10021    VkStructureType             sType;
10022    void*                       pNext;
10023    uint32_t                    priorityCount;
10024    VkQueueGlobalPriorityKHR    priorities[VK_MAX_GLOBAL_PRIORITY_SIZE_KHR];
10025} VkQueueFamilyGlobalPriorityPropertiesKHR;
10026
10027
10028
10029// VK_KHR_driver_properties is a preprocessor guard. Do not pass it to API calls.
10030#define VK_KHR_driver_properties 1
10031#define VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION 1
10032#define VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME "VK_KHR_driver_properties"
10033#define VK_MAX_DRIVER_NAME_SIZE_KHR       VK_MAX_DRIVER_NAME_SIZE
10034#define VK_MAX_DRIVER_INFO_SIZE_KHR       VK_MAX_DRIVER_INFO_SIZE
10035typedef VkDriverId VkDriverIdKHR;
10036
10037typedef VkConformanceVersion VkConformanceVersionKHR;
10038
10039typedef VkPhysicalDeviceDriverProperties VkPhysicalDeviceDriverPropertiesKHR;
10040
10041
10042
10043// VK_KHR_shader_float_controls is a preprocessor guard. Do not pass it to API calls.
10044#define VK_KHR_shader_float_controls 1
10045#define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 4
10046#define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls"
10047typedef VkShaderFloatControlsIndependence VkShaderFloatControlsIndependenceKHR;
10048
10049typedef VkPhysicalDeviceFloatControlsProperties VkPhysicalDeviceFloatControlsPropertiesKHR;
10050
10051
10052
10053// VK_KHR_depth_stencil_resolve is a preprocessor guard. Do not pass it to API calls.
10054#define VK_KHR_depth_stencil_resolve 1
10055#define VK_KHR_DEPTH_STENCIL_RESOLVE_SPEC_VERSION 1
10056#define VK_KHR_DEPTH_STENCIL_RESOLVE_EXTENSION_NAME "VK_KHR_depth_stencil_resolve"
10057typedef VkResolveModeFlagBits VkResolveModeFlagBitsKHR;
10058
10059typedef VkResolveModeFlags VkResolveModeFlagsKHR;
10060
10061typedef VkSubpassDescriptionDepthStencilResolve VkSubpassDescriptionDepthStencilResolveKHR;
10062
10063typedef VkPhysicalDeviceDepthStencilResolveProperties VkPhysicalDeviceDepthStencilResolvePropertiesKHR;
10064
10065
10066
10067// VK_KHR_swapchain_mutable_format is a preprocessor guard. Do not pass it to API calls.
10068#define VK_KHR_swapchain_mutable_format 1
10069#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION 1
10070#define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME "VK_KHR_swapchain_mutable_format"
10071
10072
10073// VK_KHR_timeline_semaphore is a preprocessor guard. Do not pass it to API calls.
10074#define VK_KHR_timeline_semaphore 1
10075#define VK_KHR_TIMELINE_SEMAPHORE_SPEC_VERSION 2
10076#define VK_KHR_TIMELINE_SEMAPHORE_EXTENSION_NAME "VK_KHR_timeline_semaphore"
10077typedef VkSemaphoreType VkSemaphoreTypeKHR;
10078
10079typedef VkSemaphoreWaitFlagBits VkSemaphoreWaitFlagBitsKHR;
10080
10081typedef VkSemaphoreWaitFlags VkSemaphoreWaitFlagsKHR;
10082
10083typedef VkPhysicalDeviceTimelineSemaphoreFeatures VkPhysicalDeviceTimelineSemaphoreFeaturesKHR;
10084
10085typedef VkPhysicalDeviceTimelineSemaphoreProperties VkPhysicalDeviceTimelineSemaphorePropertiesKHR;
10086
10087typedef VkSemaphoreTypeCreateInfo VkSemaphoreTypeCreateInfoKHR;
10088
10089typedef VkTimelineSemaphoreSubmitInfo VkTimelineSemaphoreSubmitInfoKHR;
10090
10091typedef VkSemaphoreWaitInfo VkSemaphoreWaitInfoKHR;
10092
10093typedef VkSemaphoreSignalInfo VkSemaphoreSignalInfoKHR;
10094
10095typedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreCounterValueKHR)(VkDevice device, VkSemaphore semaphore, uint64_t* pValue);
10096typedef VkResult (VKAPI_PTR *PFN_vkWaitSemaphoresKHR)(VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout);
10097typedef VkResult (VKAPI_PTR *PFN_vkSignalSemaphoreKHR)(VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo);
10098
10099#ifndef VK_NO_PROTOTYPES
10100VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValueKHR(
10101    VkDevice                                    device,
10102    VkSemaphore                                 semaphore,
10103    uint64_t*                                   pValue);
10104
10105VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphoresKHR(
10106    VkDevice                                    device,
10107    const VkSemaphoreWaitInfo*                  pWaitInfo,
10108    uint64_t                                    timeout);
10109
10110VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphoreKHR(
10111    VkDevice                                    device,
10112    const VkSemaphoreSignalInfo*                pSignalInfo);
10113#endif
10114
10115
10116// VK_KHR_vulkan_memory_model is a preprocessor guard. Do not pass it to API calls.
10117#define VK_KHR_vulkan_memory_model 1
10118#define VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION 3
10119#define VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME "VK_KHR_vulkan_memory_model"
10120typedef VkPhysicalDeviceVulkanMemoryModelFeatures VkPhysicalDeviceVulkanMemoryModelFeaturesKHR;
10121
10122
10123
10124// VK_KHR_shader_terminate_invocation is a preprocessor guard. Do not pass it to API calls.
10125#define VK_KHR_shader_terminate_invocation 1
10126#define VK_KHR_SHADER_TERMINATE_INVOCATION_SPEC_VERSION 1
10127#define VK_KHR_SHADER_TERMINATE_INVOCATION_EXTENSION_NAME "VK_KHR_shader_terminate_invocation"
10128typedef VkPhysicalDeviceShaderTerminateInvocationFeatures VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR;
10129
10130
10131
10132// VK_KHR_fragment_shading_rate is a preprocessor guard. Do not pass it to API calls.
10133#define VK_KHR_fragment_shading_rate 1
10134#define VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION 2
10135#define VK_KHR_FRAGMENT_SHADING_RATE_EXTENSION_NAME "VK_KHR_fragment_shading_rate"
10136
10137typedef enum VkFragmentShadingRateCombinerOpKHR {
10138    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_KEEP_KHR = 0,
10139    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_REPLACE_KHR = 1,
10140    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MIN_KHR = 2,
10141    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_KHR = 3,
10142    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MUL_KHR = 4,
10143    VK_FRAGMENT_SHADING_RATE_COMBINER_OP_MAX_ENUM_KHR = 0x7FFFFFFF
10144} VkFragmentShadingRateCombinerOpKHR;
10145typedef struct VkFragmentShadingRateAttachmentInfoKHR {
10146    VkStructureType                  sType;
10147    const void*                      pNext;
10148    const VkAttachmentReference2*    pFragmentShadingRateAttachment;
10149    VkExtent2D                       shadingRateAttachmentTexelSize;
10150} VkFragmentShadingRateAttachmentInfoKHR;
10151
10152typedef struct VkPipelineFragmentShadingRateStateCreateInfoKHR {
10153    VkStructureType                       sType;
10154    const void*                           pNext;
10155    VkExtent2D                            fragmentSize;
10156    VkFragmentShadingRateCombinerOpKHR    combinerOps[2];
10157} VkPipelineFragmentShadingRateStateCreateInfoKHR;
10158
10159typedef struct VkPhysicalDeviceFragmentShadingRateFeaturesKHR {
10160    VkStructureType    sType;
10161    void*              pNext;
10162    VkBool32           pipelineFragmentShadingRate;
10163    VkBool32           primitiveFragmentShadingRate;
10164    VkBool32           attachmentFragmentShadingRate;
10165} VkPhysicalDeviceFragmentShadingRateFeaturesKHR;
10166
10167typedef struct VkPhysicalDeviceFragmentShadingRatePropertiesKHR {
10168    VkStructureType          sType;
10169    void*                    pNext;
10170    VkExtent2D               minFragmentShadingRateAttachmentTexelSize;
10171    VkExtent2D               maxFragmentShadingRateAttachmentTexelSize;
10172    uint32_t                 maxFragmentShadingRateAttachmentTexelSizeAspectRatio;
10173    VkBool32                 primitiveFragmentShadingRateWithMultipleViewports;
10174    VkBool32                 layeredShadingRateAttachments;
10175    VkBool32                 fragmentShadingRateNonTrivialCombinerOps;
10176    VkExtent2D               maxFragmentSize;
10177    uint32_t                 maxFragmentSizeAspectRatio;
10178    uint32_t                 maxFragmentShadingRateCoverageSamples;
10179    VkSampleCountFlagBits    maxFragmentShadingRateRasterizationSamples;
10180    VkBool32                 fragmentShadingRateWithShaderDepthStencilWrites;
10181    VkBool32                 fragmentShadingRateWithSampleMask;
10182    VkBool32                 fragmentShadingRateWithShaderSampleMask;
10183    VkBool32                 fragmentShadingRateWithConservativeRasterization;
10184    VkBool32                 fragmentShadingRateWithFragmentShaderInterlock;
10185    VkBool32                 fragmentShadingRateWithCustomSampleLocations;
10186    VkBool32                 fragmentShadingRateStrictMultiplyCombiner;
10187} VkPhysicalDeviceFragmentShadingRatePropertiesKHR;
10188
10189typedef struct VkPhysicalDeviceFragmentShadingRateKHR {
10190    VkStructureType       sType;
10191    void*                 pNext;
10192    VkSampleCountFlags    sampleCounts;
10193    VkExtent2D            fragmentSize;
10194} VkPhysicalDeviceFragmentShadingRateKHR;
10195
10196typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates);
10197typedef void (VKAPI_PTR *PFN_vkCmdSetFragmentShadingRateKHR)(VkCommandBuffer           commandBuffer, const VkExtent2D*                           pFragmentSize, const VkFragmentShadingRateCombinerOpKHR    combinerOps[2]);
10198
10199#ifndef VK_NO_PROTOTYPES
10200VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceFragmentShadingRatesKHR(
10201    VkPhysicalDevice                            physicalDevice,
10202    uint32_t*                                   pFragmentShadingRateCount,
10203    VkPhysicalDeviceFragmentShadingRateKHR*     pFragmentShadingRates);
10204
10205VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateKHR(
10206    VkCommandBuffer                             commandBuffer,
10207    const VkExtent2D*                           pFragmentSize,
10208    const VkFragmentShadingRateCombinerOpKHR    combinerOps[2]);
10209#endif
10210
10211
10212// VK_KHR_spirv_1_4 is a preprocessor guard. Do not pass it to API calls.
10213#define VK_KHR_spirv_1_4 1
10214#define VK_KHR_SPIRV_1_4_SPEC_VERSION     1
10215#define VK_KHR_SPIRV_1_4_EXTENSION_NAME   "VK_KHR_spirv_1_4"
10216
10217
10218// VK_KHR_surface_protected_capabilities is a preprocessor guard. Do not pass it to API calls.
10219#define VK_KHR_surface_protected_capabilities 1
10220#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_SPEC_VERSION 1
10221#define VK_KHR_SURFACE_PROTECTED_CAPABILITIES_EXTENSION_NAME "VK_KHR_surface_protected_capabilities"
10222typedef struct VkSurfaceProtectedCapabilitiesKHR {
10223    VkStructureType    sType;
10224    const void*        pNext;
10225    VkBool32           supportsProtected;
10226} VkSurfaceProtectedCapabilitiesKHR;
10227
10228
10229
10230// VK_KHR_separate_depth_stencil_layouts is a preprocessor guard. Do not pass it to API calls.
10231#define VK_KHR_separate_depth_stencil_layouts 1
10232#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_SPEC_VERSION 1
10233#define VK_KHR_SEPARATE_DEPTH_STENCIL_LAYOUTS_EXTENSION_NAME "VK_KHR_separate_depth_stencil_layouts"
10234typedef VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures VkPhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR;
10235
10236typedef VkAttachmentReferenceStencilLayout VkAttachmentReferenceStencilLayoutKHR;
10237
10238typedef VkAttachmentDescriptionStencilLayout VkAttachmentDescriptionStencilLayoutKHR;
10239
10240
10241
10242// VK_KHR_present_wait is a preprocessor guard. Do not pass it to API calls.
10243#define VK_KHR_present_wait 1
10244#define VK_KHR_PRESENT_WAIT_SPEC_VERSION  1
10245#define VK_KHR_PRESENT_WAIT_EXTENSION_NAME "VK_KHR_present_wait"
10246typedef struct VkPhysicalDevicePresentWaitFeaturesKHR {
10247    VkStructureType    sType;
10248    void*              pNext;
10249    VkBool32           presentWait;
10250} VkPhysicalDevicePresentWaitFeaturesKHR;
10251
10252typedef VkResult (VKAPI_PTR *PFN_vkWaitForPresentKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t presentId, uint64_t timeout);
10253
10254#ifndef VK_NO_PROTOTYPES
10255VKAPI_ATTR VkResult VKAPI_CALL vkWaitForPresentKHR(
10256    VkDevice                                    device,
10257    VkSwapchainKHR                              swapchain,
10258    uint64_t                                    presentId,
10259    uint64_t                                    timeout);
10260#endif
10261
10262
10263// VK_KHR_uniform_buffer_standard_layout is a preprocessor guard. Do not pass it to API calls.
10264#define VK_KHR_uniform_buffer_standard_layout 1
10265#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_SPEC_VERSION 1
10266#define VK_KHR_UNIFORM_BUFFER_STANDARD_LAYOUT_EXTENSION_NAME "VK_KHR_uniform_buffer_standard_layout"
10267typedef VkPhysicalDeviceUniformBufferStandardLayoutFeatures VkPhysicalDeviceUniformBufferStandardLayoutFeaturesKHR;
10268
10269
10270
10271// VK_KHR_buffer_device_address is a preprocessor guard. Do not pass it to API calls.
10272#define VK_KHR_buffer_device_address 1
10273#define VK_KHR_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 1
10274#define VK_KHR_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_KHR_buffer_device_address"
10275typedef VkPhysicalDeviceBufferDeviceAddressFeatures VkPhysicalDeviceBufferDeviceAddressFeaturesKHR;
10276
10277typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoKHR;
10278
10279typedef VkBufferOpaqueCaptureAddressCreateInfo VkBufferOpaqueCaptureAddressCreateInfoKHR;
10280
10281typedef VkMemoryOpaqueCaptureAddressAllocateInfo VkMemoryOpaqueCaptureAddressAllocateInfoKHR;
10282
10283typedef VkDeviceMemoryOpaqueCaptureAddressInfo VkDeviceMemoryOpaqueCaptureAddressInfoKHR;
10284
10285typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
10286typedef uint64_t (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureAddressKHR)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
10287typedef uint64_t (VKAPI_PTR *PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR)(VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
10288
10289#ifndef VK_NO_PROTOTYPES
10290VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressKHR(
10291    VkDevice                                    device,
10292    const VkBufferDeviceAddressInfo*            pInfo);
10293
10294VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddressKHR(
10295    VkDevice                                    device,
10296    const VkBufferDeviceAddressInfo*            pInfo);
10297
10298VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddressKHR(
10299    VkDevice                                    device,
10300    const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo);
10301#endif
10302
10303
10304// VK_KHR_deferred_host_operations is a preprocessor guard. Do not pass it to API calls.
10305#define VK_KHR_deferred_host_operations 1
10306VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeferredOperationKHR)
10307#define VK_KHR_DEFERRED_HOST_OPERATIONS_SPEC_VERSION 4
10308#define VK_KHR_DEFERRED_HOST_OPERATIONS_EXTENSION_NAME "VK_KHR_deferred_host_operations"
10309typedef VkResult (VKAPI_PTR *PFN_vkCreateDeferredOperationKHR)(VkDevice device, const VkAllocationCallbacks* pAllocator, VkDeferredOperationKHR* pDeferredOperation);
10310typedef void (VKAPI_PTR *PFN_vkDestroyDeferredOperationKHR)(VkDevice device, VkDeferredOperationKHR operation, const VkAllocationCallbacks* pAllocator);
10311typedef uint32_t (VKAPI_PTR *PFN_vkGetDeferredOperationMaxConcurrencyKHR)(VkDevice device, VkDeferredOperationKHR operation);
10312typedef VkResult (VKAPI_PTR *PFN_vkGetDeferredOperationResultKHR)(VkDevice device, VkDeferredOperationKHR operation);
10313typedef VkResult (VKAPI_PTR *PFN_vkDeferredOperationJoinKHR)(VkDevice device, VkDeferredOperationKHR operation);
10314
10315#ifndef VK_NO_PROTOTYPES
10316VKAPI_ATTR VkResult VKAPI_CALL vkCreateDeferredOperationKHR(
10317    VkDevice                                    device,
10318    const VkAllocationCallbacks*                pAllocator,
10319    VkDeferredOperationKHR*                     pDeferredOperation);
10320
10321VKAPI_ATTR void VKAPI_CALL vkDestroyDeferredOperationKHR(
10322    VkDevice                                    device,
10323    VkDeferredOperationKHR                      operation,
10324    const VkAllocationCallbacks*                pAllocator);
10325
10326VKAPI_ATTR uint32_t VKAPI_CALL vkGetDeferredOperationMaxConcurrencyKHR(
10327    VkDevice                                    device,
10328    VkDeferredOperationKHR                      operation);
10329
10330VKAPI_ATTR VkResult VKAPI_CALL vkGetDeferredOperationResultKHR(
10331    VkDevice                                    device,
10332    VkDeferredOperationKHR                      operation);
10333
10334VKAPI_ATTR VkResult VKAPI_CALL vkDeferredOperationJoinKHR(
10335    VkDevice                                    device,
10336    VkDeferredOperationKHR                      operation);
10337#endif
10338
10339
10340// VK_KHR_pipeline_executable_properties is a preprocessor guard. Do not pass it to API calls.
10341#define VK_KHR_pipeline_executable_properties 1
10342#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_SPEC_VERSION 1
10343#define VK_KHR_PIPELINE_EXECUTABLE_PROPERTIES_EXTENSION_NAME "VK_KHR_pipeline_executable_properties"
10344
10345typedef enum VkPipelineExecutableStatisticFormatKHR {
10346    VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_BOOL32_KHR = 0,
10347    VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_INT64_KHR = 1,
10348    VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_UINT64_KHR = 2,
10349    VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_FLOAT64_KHR = 3,
10350    VK_PIPELINE_EXECUTABLE_STATISTIC_FORMAT_MAX_ENUM_KHR = 0x7FFFFFFF
10351} VkPipelineExecutableStatisticFormatKHR;
10352typedef struct VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR {
10353    VkStructureType    sType;
10354    void*              pNext;
10355    VkBool32           pipelineExecutableInfo;
10356} VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR;
10357
10358typedef struct VkPipelineInfoKHR {
10359    VkStructureType    sType;
10360    const void*        pNext;
10361    VkPipeline         pipeline;
10362} VkPipelineInfoKHR;
10363
10364typedef struct VkPipelineExecutablePropertiesKHR {
10365    VkStructureType       sType;
10366    void*                 pNext;
10367    VkShaderStageFlags    stages;
10368    char                  name[VK_MAX_DESCRIPTION_SIZE];
10369    char                  description[VK_MAX_DESCRIPTION_SIZE];
10370    uint32_t              subgroupSize;
10371} VkPipelineExecutablePropertiesKHR;
10372
10373typedef struct VkPipelineExecutableInfoKHR {
10374    VkStructureType    sType;
10375    const void*        pNext;
10376    VkPipeline         pipeline;
10377    uint32_t           executableIndex;
10378} VkPipelineExecutableInfoKHR;
10379
10380typedef union VkPipelineExecutableStatisticValueKHR {
10381    VkBool32    b32;
10382    int64_t     i64;
10383    uint64_t    u64;
10384    double      f64;
10385} VkPipelineExecutableStatisticValueKHR;
10386
10387typedef struct VkPipelineExecutableStatisticKHR {
10388    VkStructureType                           sType;
10389    void*                                     pNext;
10390    char                                      name[VK_MAX_DESCRIPTION_SIZE];
10391    char                                      description[VK_MAX_DESCRIPTION_SIZE];
10392    VkPipelineExecutableStatisticFormatKHR    format;
10393    VkPipelineExecutableStatisticValueKHR     value;
10394} VkPipelineExecutableStatisticKHR;
10395
10396typedef struct VkPipelineExecutableInternalRepresentationKHR {
10397    VkStructureType    sType;
10398    void*              pNext;
10399    char               name[VK_MAX_DESCRIPTION_SIZE];
10400    char               description[VK_MAX_DESCRIPTION_SIZE];
10401    VkBool32           isText;
10402    size_t             dataSize;
10403    void*              pData;
10404} VkPipelineExecutableInternalRepresentationKHR;
10405
10406typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutablePropertiesKHR)(VkDevice                        device, const VkPipelineInfoKHR*        pPipelineInfo, uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties);
10407typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableStatisticsKHR)(VkDevice                        device, const VkPipelineExecutableInfoKHR*  pExecutableInfo, uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics);
10408typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineExecutableInternalRepresentationsKHR)(VkDevice                        device, const VkPipelineExecutableInfoKHR*  pExecutableInfo, uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations);
10409
10410#ifndef VK_NO_PROTOTYPES
10411VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutablePropertiesKHR(
10412    VkDevice                                    device,
10413    const VkPipelineInfoKHR*                    pPipelineInfo,
10414    uint32_t*                                   pExecutableCount,
10415    VkPipelineExecutablePropertiesKHR*          pProperties);
10416
10417VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableStatisticsKHR(
10418    VkDevice                                    device,
10419    const VkPipelineExecutableInfoKHR*          pExecutableInfo,
10420    uint32_t*                                   pStatisticCount,
10421    VkPipelineExecutableStatisticKHR*           pStatistics);
10422
10423VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableInternalRepresentationsKHR(
10424    VkDevice                                    device,
10425    const VkPipelineExecutableInfoKHR*          pExecutableInfo,
10426    uint32_t*                                   pInternalRepresentationCount,
10427    VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations);
10428#endif
10429
10430
10431// VK_KHR_map_memory2 is a preprocessor guard. Do not pass it to API calls.
10432#define VK_KHR_map_memory2 1
10433#define VK_KHR_MAP_MEMORY_2_SPEC_VERSION  1
10434#define VK_KHR_MAP_MEMORY_2_EXTENSION_NAME "VK_KHR_map_memory2"
10435typedef VkFlags VkMemoryUnmapFlagsKHR;
10436typedef struct VkMemoryMapInfoKHR {
10437    VkStructureType     sType;
10438    const void*         pNext;
10439    VkMemoryMapFlags    flags;
10440    VkDeviceMemory      memory;
10441    VkDeviceSize        offset;
10442    VkDeviceSize        size;
10443} VkMemoryMapInfoKHR;
10444
10445typedef struct VkMemoryUnmapInfoKHR {
10446    VkStructureType          sType;
10447    const void*              pNext;
10448    VkMemoryUnmapFlagsKHR    flags;
10449    VkDeviceMemory           memory;
10450} VkMemoryUnmapInfoKHR;
10451
10452typedef VkResult (VKAPI_PTR *PFN_vkMapMemory2KHR)(VkDevice device, const VkMemoryMapInfoKHR* pMemoryMapInfo, void** ppData);
10453typedef VkResult (VKAPI_PTR *PFN_vkUnmapMemory2KHR)(VkDevice device, const VkMemoryUnmapInfoKHR* pMemoryUnmapInfo);
10454
10455#ifndef VK_NO_PROTOTYPES
10456VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory2KHR(
10457    VkDevice                                    device,
10458    const VkMemoryMapInfoKHR*                   pMemoryMapInfo,
10459    void**                                      ppData);
10460
10461VKAPI_ATTR VkResult VKAPI_CALL vkUnmapMemory2KHR(
10462    VkDevice                                    device,
10463    const VkMemoryUnmapInfoKHR*                 pMemoryUnmapInfo);
10464#endif
10465
10466
10467// VK_KHR_shader_integer_dot_product is a preprocessor guard. Do not pass it to API calls.
10468#define VK_KHR_shader_integer_dot_product 1
10469#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_SPEC_VERSION 1
10470#define VK_KHR_SHADER_INTEGER_DOT_PRODUCT_EXTENSION_NAME "VK_KHR_shader_integer_dot_product"
10471typedef VkPhysicalDeviceShaderIntegerDotProductFeatures VkPhysicalDeviceShaderIntegerDotProductFeaturesKHR;
10472
10473typedef VkPhysicalDeviceShaderIntegerDotProductProperties VkPhysicalDeviceShaderIntegerDotProductPropertiesKHR;
10474
10475
10476
10477// VK_KHR_pipeline_library is a preprocessor guard. Do not pass it to API calls.
10478#define VK_KHR_pipeline_library 1
10479#define VK_KHR_PIPELINE_LIBRARY_SPEC_VERSION 1
10480#define VK_KHR_PIPELINE_LIBRARY_EXTENSION_NAME "VK_KHR_pipeline_library"
10481typedef struct VkPipelineLibraryCreateInfoKHR {
10482    VkStructureType      sType;
10483    const void*          pNext;
10484    uint32_t             libraryCount;
10485    const VkPipeline*    pLibraries;
10486} VkPipelineLibraryCreateInfoKHR;
10487
10488
10489
10490// VK_KHR_shader_non_semantic_info is a preprocessor guard. Do not pass it to API calls.
10491#define VK_KHR_shader_non_semantic_info 1
10492#define VK_KHR_SHADER_NON_SEMANTIC_INFO_SPEC_VERSION 1
10493#define VK_KHR_SHADER_NON_SEMANTIC_INFO_EXTENSION_NAME "VK_KHR_shader_non_semantic_info"
10494
10495
10496// VK_KHR_present_id is a preprocessor guard. Do not pass it to API calls.
10497#define VK_KHR_present_id 1
10498#define VK_KHR_PRESENT_ID_SPEC_VERSION    1
10499#define VK_KHR_PRESENT_ID_EXTENSION_NAME  "VK_KHR_present_id"
10500typedef struct VkPresentIdKHR {
10501    VkStructureType    sType;
10502    const void*        pNext;
10503    uint32_t           swapchainCount;
10504    const uint64_t*    pPresentIds;
10505} VkPresentIdKHR;
10506
10507typedef struct VkPhysicalDevicePresentIdFeaturesKHR {
10508    VkStructureType    sType;
10509    void*              pNext;
10510    VkBool32           presentId;
10511} VkPhysicalDevicePresentIdFeaturesKHR;
10512
10513
10514
10515// VK_KHR_video_encode_queue is a preprocessor guard. Do not pass it to API calls.
10516#define VK_KHR_video_encode_queue 1
10517#define VK_KHR_VIDEO_ENCODE_QUEUE_SPEC_VERSION 12
10518#define VK_KHR_VIDEO_ENCODE_QUEUE_EXTENSION_NAME "VK_KHR_video_encode_queue"
10519
10520typedef enum VkVideoEncodeTuningModeKHR {
10521    VK_VIDEO_ENCODE_TUNING_MODE_DEFAULT_KHR = 0,
10522    VK_VIDEO_ENCODE_TUNING_MODE_HIGH_QUALITY_KHR = 1,
10523    VK_VIDEO_ENCODE_TUNING_MODE_LOW_LATENCY_KHR = 2,
10524    VK_VIDEO_ENCODE_TUNING_MODE_ULTRA_LOW_LATENCY_KHR = 3,
10525    VK_VIDEO_ENCODE_TUNING_MODE_LOSSLESS_KHR = 4,
10526    VK_VIDEO_ENCODE_TUNING_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
10527} VkVideoEncodeTuningModeKHR;
10528typedef VkFlags VkVideoEncodeFlagsKHR;
10529
10530typedef enum VkVideoEncodeCapabilityFlagBitsKHR {
10531    VK_VIDEO_ENCODE_CAPABILITY_PRECEDING_EXTERNALLY_ENCODED_BYTES_BIT_KHR = 0x00000001,
10532    VK_VIDEO_ENCODE_CAPABILITY_INSUFFICIENT_BITSTREAM_BUFFER_RANGE_DETECTION_BIT_KHR = 0x00000002,
10533    VK_VIDEO_ENCODE_CAPABILITY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
10534} VkVideoEncodeCapabilityFlagBitsKHR;
10535typedef VkFlags VkVideoEncodeCapabilityFlagsKHR;
10536
10537typedef enum VkVideoEncodeRateControlModeFlagBitsKHR {
10538    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DEFAULT_KHR = 0,
10539    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_DISABLED_BIT_KHR = 0x00000001,
10540    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_CBR_BIT_KHR = 0x00000002,
10541    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_VBR_BIT_KHR = 0x00000004,
10542    VK_VIDEO_ENCODE_RATE_CONTROL_MODE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
10543} VkVideoEncodeRateControlModeFlagBitsKHR;
10544typedef VkFlags VkVideoEncodeRateControlModeFlagsKHR;
10545
10546typedef enum VkVideoEncodeFeedbackFlagBitsKHR {
10547    VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BUFFER_OFFSET_BIT_KHR = 0x00000001,
10548    VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_BYTES_WRITTEN_BIT_KHR = 0x00000002,
10549    VK_VIDEO_ENCODE_FEEDBACK_BITSTREAM_HAS_OVERRIDES_BIT_KHR = 0x00000004,
10550    VK_VIDEO_ENCODE_FEEDBACK_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
10551} VkVideoEncodeFeedbackFlagBitsKHR;
10552typedef VkFlags VkVideoEncodeFeedbackFlagsKHR;
10553
10554typedef enum VkVideoEncodeUsageFlagBitsKHR {
10555    VK_VIDEO_ENCODE_USAGE_DEFAULT_KHR = 0,
10556    VK_VIDEO_ENCODE_USAGE_TRANSCODING_BIT_KHR = 0x00000001,
10557    VK_VIDEO_ENCODE_USAGE_STREAMING_BIT_KHR = 0x00000002,
10558    VK_VIDEO_ENCODE_USAGE_RECORDING_BIT_KHR = 0x00000004,
10559    VK_VIDEO_ENCODE_USAGE_CONFERENCING_BIT_KHR = 0x00000008,
10560    VK_VIDEO_ENCODE_USAGE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
10561} VkVideoEncodeUsageFlagBitsKHR;
10562typedef VkFlags VkVideoEncodeUsageFlagsKHR;
10563
10564typedef enum VkVideoEncodeContentFlagBitsKHR {
10565    VK_VIDEO_ENCODE_CONTENT_DEFAULT_KHR = 0,
10566    VK_VIDEO_ENCODE_CONTENT_CAMERA_BIT_KHR = 0x00000001,
10567    VK_VIDEO_ENCODE_CONTENT_DESKTOP_BIT_KHR = 0x00000002,
10568    VK_VIDEO_ENCODE_CONTENT_RENDERED_BIT_KHR = 0x00000004,
10569    VK_VIDEO_ENCODE_CONTENT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
10570} VkVideoEncodeContentFlagBitsKHR;
10571typedef VkFlags VkVideoEncodeContentFlagsKHR;
10572typedef VkFlags VkVideoEncodeRateControlFlagsKHR;
10573typedef struct VkVideoEncodeInfoKHR {
10574    VkStructureType                       sType;
10575    const void*                           pNext;
10576    VkVideoEncodeFlagsKHR                 flags;
10577    VkBuffer                              dstBuffer;
10578    VkDeviceSize                          dstBufferOffset;
10579    VkDeviceSize                          dstBufferRange;
10580    VkVideoPictureResourceInfoKHR         srcPictureResource;
10581    const VkVideoReferenceSlotInfoKHR*    pSetupReferenceSlot;
10582    uint32_t                              referenceSlotCount;
10583    const VkVideoReferenceSlotInfoKHR*    pReferenceSlots;
10584    uint32_t                              precedingExternallyEncodedBytes;
10585} VkVideoEncodeInfoKHR;
10586
10587typedef struct VkVideoEncodeCapabilitiesKHR {
10588    VkStructureType                         sType;
10589    void*                                   pNext;
10590    VkVideoEncodeCapabilityFlagsKHR         flags;
10591    VkVideoEncodeRateControlModeFlagsKHR    rateControlModes;
10592    uint32_t                                maxRateControlLayers;
10593    uint64_t                                maxBitrate;
10594    uint32_t                                maxQualityLevels;
10595    VkExtent2D                              encodeInputPictureGranularity;
10596    VkVideoEncodeFeedbackFlagsKHR           supportedEncodeFeedbackFlags;
10597} VkVideoEncodeCapabilitiesKHR;
10598
10599typedef struct VkQueryPoolVideoEncodeFeedbackCreateInfoKHR {
10600    VkStructureType                  sType;
10601    const void*                      pNext;
10602    VkVideoEncodeFeedbackFlagsKHR    encodeFeedbackFlags;
10603} VkQueryPoolVideoEncodeFeedbackCreateInfoKHR;
10604
10605typedef struct VkVideoEncodeUsageInfoKHR {
10606    VkStructureType                 sType;
10607    const void*                     pNext;
10608    VkVideoEncodeUsageFlagsKHR      videoUsageHints;
10609    VkVideoEncodeContentFlagsKHR    videoContentHints;
10610    VkVideoEncodeTuningModeKHR      tuningMode;
10611} VkVideoEncodeUsageInfoKHR;
10612
10613typedef struct VkVideoEncodeRateControlLayerInfoKHR {
10614    VkStructureType    sType;
10615    const void*        pNext;
10616    uint64_t           averageBitrate;
10617    uint64_t           maxBitrate;
10618    uint32_t           frameRateNumerator;
10619    uint32_t           frameRateDenominator;
10620} VkVideoEncodeRateControlLayerInfoKHR;
10621
10622typedef struct VkVideoEncodeRateControlInfoKHR {
10623    VkStructureType                                sType;
10624    const void*                                    pNext;
10625    VkVideoEncodeRateControlFlagsKHR               flags;
10626    VkVideoEncodeRateControlModeFlagBitsKHR        rateControlMode;
10627    uint32_t                                       layerCount;
10628    const VkVideoEncodeRateControlLayerInfoKHR*    pLayers;
10629    uint32_t                                       virtualBufferSizeInMs;
10630    uint32_t                                       initialVirtualBufferSizeInMs;
10631} VkVideoEncodeRateControlInfoKHR;
10632
10633typedef struct VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR {
10634    VkStructureType                 sType;
10635    const void*                     pNext;
10636    const VkVideoProfileInfoKHR*    pVideoProfile;
10637    uint32_t                        qualityLevel;
10638} VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR;
10639
10640typedef struct VkVideoEncodeQualityLevelPropertiesKHR {
10641    VkStructureType                            sType;
10642    void*                                      pNext;
10643    VkVideoEncodeRateControlModeFlagBitsKHR    preferredRateControlMode;
10644    uint32_t                                   preferredRateControlLayerCount;
10645} VkVideoEncodeQualityLevelPropertiesKHR;
10646
10647typedef struct VkVideoEncodeQualityLevelInfoKHR {
10648    VkStructureType    sType;
10649    const void*        pNext;
10650    uint32_t           qualityLevel;
10651} VkVideoEncodeQualityLevelInfoKHR;
10652
10653typedef struct VkVideoEncodeSessionParametersGetInfoKHR {
10654    VkStructureType                sType;
10655    const void*                    pNext;
10656    VkVideoSessionParametersKHR    videoSessionParameters;
10657} VkVideoEncodeSessionParametersGetInfoKHR;
10658
10659typedef struct VkVideoEncodeSessionParametersFeedbackInfoKHR {
10660    VkStructureType    sType;
10661    void*              pNext;
10662    VkBool32           hasOverrides;
10663} VkVideoEncodeSessionParametersFeedbackInfoKHR;
10664
10665typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR* pQualityLevelInfo, VkVideoEncodeQualityLevelPropertiesKHR* pQualityLevelProperties);
10666typedef VkResult (VKAPI_PTR *PFN_vkGetEncodedVideoSessionParametersKHR)(VkDevice device, const VkVideoEncodeSessionParametersGetInfoKHR* pVideoSessionParametersInfo, VkVideoEncodeSessionParametersFeedbackInfoKHR* pFeedbackInfo, size_t* pDataSize, void* pData);
10667typedef void (VKAPI_PTR *PFN_vkCmdEncodeVideoKHR)(VkCommandBuffer commandBuffer, const VkVideoEncodeInfoKHR* pEncodeInfo);
10668
10669#ifndef VK_NO_PROTOTYPES
10670VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceVideoEncodeQualityLevelPropertiesKHR(
10671    VkPhysicalDevice                            physicalDevice,
10672    const VkPhysicalDeviceVideoEncodeQualityLevelInfoKHR* pQualityLevelInfo,
10673    VkVideoEncodeQualityLevelPropertiesKHR*     pQualityLevelProperties);
10674
10675VKAPI_ATTR VkResult VKAPI_CALL vkGetEncodedVideoSessionParametersKHR(
10676    VkDevice                                    device,
10677    const VkVideoEncodeSessionParametersGetInfoKHR* pVideoSessionParametersInfo,
10678    VkVideoEncodeSessionParametersFeedbackInfoKHR* pFeedbackInfo,
10679    size_t*                                     pDataSize,
10680    void*                                       pData);
10681
10682VKAPI_ATTR void VKAPI_CALL vkCmdEncodeVideoKHR(
10683    VkCommandBuffer                             commandBuffer,
10684    const VkVideoEncodeInfoKHR*                 pEncodeInfo);
10685#endif
10686
10687
10688// VK_KHR_synchronization2 is a preprocessor guard. Do not pass it to API calls.
10689#define VK_KHR_synchronization2 1
10690#define VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION 1
10691#define VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME "VK_KHR_synchronization2"
10692typedef VkPipelineStageFlags2 VkPipelineStageFlags2KHR;
10693
10694typedef VkPipelineStageFlagBits2 VkPipelineStageFlagBits2KHR;
10695
10696typedef VkAccessFlags2 VkAccessFlags2KHR;
10697
10698typedef VkAccessFlagBits2 VkAccessFlagBits2KHR;
10699
10700typedef VkSubmitFlagBits VkSubmitFlagBitsKHR;
10701
10702typedef VkSubmitFlags VkSubmitFlagsKHR;
10703
10704typedef VkMemoryBarrier2 VkMemoryBarrier2KHR;
10705
10706typedef VkBufferMemoryBarrier2 VkBufferMemoryBarrier2KHR;
10707
10708typedef VkImageMemoryBarrier2 VkImageMemoryBarrier2KHR;
10709
10710typedef VkDependencyInfo VkDependencyInfoKHR;
10711
10712typedef VkSubmitInfo2 VkSubmitInfo2KHR;
10713
10714typedef VkSemaphoreSubmitInfo VkSemaphoreSubmitInfoKHR;
10715
10716typedef VkCommandBufferSubmitInfo VkCommandBufferSubmitInfoKHR;
10717
10718typedef VkPhysicalDeviceSynchronization2Features VkPhysicalDeviceSynchronization2FeaturesKHR;
10719
10720typedef struct VkQueueFamilyCheckpointProperties2NV {
10721    VkStructureType          sType;
10722    void*                    pNext;
10723    VkPipelineStageFlags2    checkpointExecutionStageMask;
10724} VkQueueFamilyCheckpointProperties2NV;
10725
10726typedef struct VkCheckpointData2NV {
10727    VkStructureType          sType;
10728    void*                    pNext;
10729    VkPipelineStageFlags2    stage;
10730    void*                    pCheckpointMarker;
10731} VkCheckpointData2NV;
10732
10733typedef void (VKAPI_PTR *PFN_vkCmdSetEvent2KHR)(VkCommandBuffer                   commandBuffer, VkEvent                                             event, const VkDependencyInfo*                             pDependencyInfo);
10734typedef void (VKAPI_PTR *PFN_vkCmdResetEvent2KHR)(VkCommandBuffer                   commandBuffer, VkEvent                                             event, VkPipelineStageFlags2               stageMask);
10735typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents2KHR)(VkCommandBuffer                   commandBuffer, uint32_t                                            eventCount, const VkEvent*                     pEvents, const VkDependencyInfo*            pDependencyInfos);
10736typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier2KHR)(VkCommandBuffer                   commandBuffer, const VkDependencyInfo*                             pDependencyInfo);
10737typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp2KHR)(VkCommandBuffer                   commandBuffer, VkPipelineStageFlags2               stage, VkQueryPool                                         queryPool, uint32_t                                            query);
10738typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit2KHR)(VkQueue                           queue, uint32_t                            submitCount, const VkSubmitInfo2*              pSubmits, VkFence           fence);
10739typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarker2AMD)(VkCommandBuffer                   commandBuffer, VkPipelineStageFlags2               stage, VkBuffer                                            dstBuffer, VkDeviceSize                                        dstOffset, uint32_t                                            marker);
10740typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointData2NV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData);
10741
10742#ifndef VK_NO_PROTOTYPES
10743VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent2KHR(
10744    VkCommandBuffer                             commandBuffer,
10745    VkEvent                                     event,
10746    const VkDependencyInfo*                     pDependencyInfo);
10747
10748VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent2KHR(
10749    VkCommandBuffer                             commandBuffer,
10750    VkEvent                                     event,
10751    VkPipelineStageFlags2                       stageMask);
10752
10753VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents2KHR(
10754    VkCommandBuffer                             commandBuffer,
10755    uint32_t                                    eventCount,
10756    const VkEvent*                              pEvents,
10757    const VkDependencyInfo*                     pDependencyInfos);
10758
10759VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier2KHR(
10760    VkCommandBuffer                             commandBuffer,
10761    const VkDependencyInfo*                     pDependencyInfo);
10762
10763VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp2KHR(
10764    VkCommandBuffer                             commandBuffer,
10765    VkPipelineStageFlags2                       stage,
10766    VkQueryPool                                 queryPool,
10767    uint32_t                                    query);
10768
10769VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit2KHR(
10770    VkQueue                                     queue,
10771    uint32_t                                    submitCount,
10772    const VkSubmitInfo2*                        pSubmits,
10773    VkFence                                     fence);
10774
10775VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarker2AMD(
10776    VkCommandBuffer                             commandBuffer,
10777    VkPipelineStageFlags2                       stage,
10778    VkBuffer                                    dstBuffer,
10779    VkDeviceSize                                dstOffset,
10780    uint32_t                                    marker);
10781
10782VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointData2NV(
10783    VkQueue                                     queue,
10784    uint32_t*                                   pCheckpointDataCount,
10785    VkCheckpointData2NV*                        pCheckpointData);
10786#endif
10787
10788
10789// VK_KHR_fragment_shader_barycentric is a preprocessor guard. Do not pass it to API calls.
10790#define VK_KHR_fragment_shader_barycentric 1
10791#define VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1
10792#define VK_KHR_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME "VK_KHR_fragment_shader_barycentric"
10793typedef struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR {
10794    VkStructureType    sType;
10795    void*              pNext;
10796    VkBool32           fragmentShaderBarycentric;
10797} VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR;
10798
10799typedef struct VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR {
10800    VkStructureType    sType;
10801    void*              pNext;
10802    VkBool32           triStripVertexOrderIndependentOfProvokingVertex;
10803} VkPhysicalDeviceFragmentShaderBarycentricPropertiesKHR;
10804
10805
10806
10807// VK_KHR_shader_subgroup_uniform_control_flow is a preprocessor guard. Do not pass it to API calls.
10808#define VK_KHR_shader_subgroup_uniform_control_flow 1
10809#define VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_SPEC_VERSION 1
10810#define VK_KHR_SHADER_SUBGROUP_UNIFORM_CONTROL_FLOW_EXTENSION_NAME "VK_KHR_shader_subgroup_uniform_control_flow"
10811typedef struct VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR {
10812    VkStructureType    sType;
10813    void*              pNext;
10814    VkBool32           shaderSubgroupUniformControlFlow;
10815} VkPhysicalDeviceShaderSubgroupUniformControlFlowFeaturesKHR;
10816
10817
10818
10819// VK_KHR_zero_initialize_workgroup_memory is a preprocessor guard. Do not pass it to API calls.
10820#define VK_KHR_zero_initialize_workgroup_memory 1
10821#define VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_SPEC_VERSION 1
10822#define VK_KHR_ZERO_INITIALIZE_WORKGROUP_MEMORY_EXTENSION_NAME "VK_KHR_zero_initialize_workgroup_memory"
10823typedef VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeatures VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR;
10824
10825
10826
10827// VK_KHR_workgroup_memory_explicit_layout is a preprocessor guard. Do not pass it to API calls.
10828#define VK_KHR_workgroup_memory_explicit_layout 1
10829#define VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_SPEC_VERSION 1
10830#define VK_KHR_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_EXTENSION_NAME "VK_KHR_workgroup_memory_explicit_layout"
10831typedef struct VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR {
10832    VkStructureType    sType;
10833    void*              pNext;
10834    VkBool32           workgroupMemoryExplicitLayout;
10835    VkBool32           workgroupMemoryExplicitLayoutScalarBlockLayout;
10836    VkBool32           workgroupMemoryExplicitLayout8BitAccess;
10837    VkBool32           workgroupMemoryExplicitLayout16BitAccess;
10838} VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR;
10839
10840
10841
10842// VK_KHR_copy_commands2 is a preprocessor guard. Do not pass it to API calls.
10843#define VK_KHR_copy_commands2 1
10844#define VK_KHR_COPY_COMMANDS_2_SPEC_VERSION 1
10845#define VK_KHR_COPY_COMMANDS_2_EXTENSION_NAME "VK_KHR_copy_commands2"
10846typedef VkCopyBufferInfo2 VkCopyBufferInfo2KHR;
10847
10848typedef VkCopyImageInfo2 VkCopyImageInfo2KHR;
10849
10850typedef VkCopyBufferToImageInfo2 VkCopyBufferToImageInfo2KHR;
10851
10852typedef VkCopyImageToBufferInfo2 VkCopyImageToBufferInfo2KHR;
10853
10854typedef VkBlitImageInfo2 VkBlitImageInfo2KHR;
10855
10856typedef VkResolveImageInfo2 VkResolveImageInfo2KHR;
10857
10858typedef VkBufferCopy2 VkBufferCopy2KHR;
10859
10860typedef VkImageCopy2 VkImageCopy2KHR;
10861
10862typedef VkImageBlit2 VkImageBlit2KHR;
10863
10864typedef VkBufferImageCopy2 VkBufferImageCopy2KHR;
10865
10866typedef VkImageResolve2 VkImageResolve2KHR;
10867
10868typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2* pCopyBufferInfo);
10869typedef void (VKAPI_PTR *PFN_vkCmdCopyImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2* pCopyImageInfo);
10870typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2* pCopyBufferToImageInfo);
10871typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2* pCopyImageToBufferInfo);
10872typedef void (VKAPI_PTR *PFN_vkCmdBlitImage2KHR)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2* pBlitImageInfo);
10873typedef void (VKAPI_PTR *PFN_vkCmdResolveImage2KHR)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2* pResolveImageInfo);
10874
10875#ifndef VK_NO_PROTOTYPES
10876VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer2KHR(
10877    VkCommandBuffer                             commandBuffer,
10878    const VkCopyBufferInfo2*                    pCopyBufferInfo);
10879
10880VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage2KHR(
10881    VkCommandBuffer                             commandBuffer,
10882    const VkCopyImageInfo2*                     pCopyImageInfo);
10883
10884VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage2KHR(
10885    VkCommandBuffer                             commandBuffer,
10886    const VkCopyBufferToImageInfo2*             pCopyBufferToImageInfo);
10887
10888VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer2KHR(
10889    VkCommandBuffer                             commandBuffer,
10890    const VkCopyImageToBufferInfo2*             pCopyImageToBufferInfo);
10891
10892VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage2KHR(
10893    VkCommandBuffer                             commandBuffer,
10894    const VkBlitImageInfo2*                     pBlitImageInfo);
10895
10896VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage2KHR(
10897    VkCommandBuffer                             commandBuffer,
10898    const VkResolveImageInfo2*                  pResolveImageInfo);
10899#endif
10900
10901
10902// VK_KHR_format_feature_flags2 is a preprocessor guard. Do not pass it to API calls.
10903#define VK_KHR_format_feature_flags2 1
10904#define VK_KHR_FORMAT_FEATURE_FLAGS_2_SPEC_VERSION 2
10905#define VK_KHR_FORMAT_FEATURE_FLAGS_2_EXTENSION_NAME "VK_KHR_format_feature_flags2"
10906typedef VkFormatFeatureFlags2 VkFormatFeatureFlags2KHR;
10907
10908typedef VkFormatFeatureFlagBits2 VkFormatFeatureFlagBits2KHR;
10909
10910typedef VkFormatProperties3 VkFormatProperties3KHR;
10911
10912
10913
10914// VK_KHR_ray_tracing_maintenance1 is a preprocessor guard. Do not pass it to API calls.
10915#define VK_KHR_ray_tracing_maintenance1 1
10916#define VK_KHR_RAY_TRACING_MAINTENANCE_1_SPEC_VERSION 1
10917#define VK_KHR_RAY_TRACING_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_ray_tracing_maintenance1"
10918typedef struct VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR {
10919    VkStructureType    sType;
10920    void*              pNext;
10921    VkBool32           rayTracingMaintenance1;
10922    VkBool32           rayTracingPipelineTraceRaysIndirect2;
10923} VkPhysicalDeviceRayTracingMaintenance1FeaturesKHR;
10924
10925typedef struct VkTraceRaysIndirectCommand2KHR {
10926    VkDeviceAddress    raygenShaderRecordAddress;
10927    VkDeviceSize       raygenShaderRecordSize;
10928    VkDeviceAddress    missShaderBindingTableAddress;
10929    VkDeviceSize       missShaderBindingTableSize;
10930    VkDeviceSize       missShaderBindingTableStride;
10931    VkDeviceAddress    hitShaderBindingTableAddress;
10932    VkDeviceSize       hitShaderBindingTableSize;
10933    VkDeviceSize       hitShaderBindingTableStride;
10934    VkDeviceAddress    callableShaderBindingTableAddress;
10935    VkDeviceSize       callableShaderBindingTableSize;
10936    VkDeviceSize       callableShaderBindingTableStride;
10937    uint32_t           width;
10938    uint32_t           height;
10939    uint32_t           depth;
10940} VkTraceRaysIndirectCommand2KHR;
10941
10942typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysIndirect2KHR)(VkCommandBuffer commandBuffer, VkDeviceAddress indirectDeviceAddress);
10943
10944#ifndef VK_NO_PROTOTYPES
10945VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysIndirect2KHR(
10946    VkCommandBuffer                             commandBuffer,
10947    VkDeviceAddress                             indirectDeviceAddress);
10948#endif
10949
10950
10951// VK_KHR_portability_enumeration is a preprocessor guard. Do not pass it to API calls.
10952#define VK_KHR_portability_enumeration 1
10953#define VK_KHR_PORTABILITY_ENUMERATION_SPEC_VERSION 1
10954#define VK_KHR_PORTABILITY_ENUMERATION_EXTENSION_NAME "VK_KHR_portability_enumeration"
10955
10956
10957// VK_KHR_maintenance4 is a preprocessor guard. Do not pass it to API calls.
10958#define VK_KHR_maintenance4 1
10959#define VK_KHR_MAINTENANCE_4_SPEC_VERSION 2
10960#define VK_KHR_MAINTENANCE_4_EXTENSION_NAME "VK_KHR_maintenance4"
10961typedef VkPhysicalDeviceMaintenance4Features VkPhysicalDeviceMaintenance4FeaturesKHR;
10962
10963typedef VkPhysicalDeviceMaintenance4Properties VkPhysicalDeviceMaintenance4PropertiesKHR;
10964
10965typedef VkDeviceBufferMemoryRequirements VkDeviceBufferMemoryRequirementsKHR;
10966
10967typedef VkDeviceImageMemoryRequirements VkDeviceImageMemoryRequirementsKHR;
10968
10969typedef void (VKAPI_PTR *PFN_vkGetDeviceBufferMemoryRequirementsKHR)(VkDevice device, const VkDeviceBufferMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements);
10970typedef void (VKAPI_PTR *PFN_vkGetDeviceImageMemoryRequirementsKHR)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, VkMemoryRequirements2* pMemoryRequirements);
10971typedef void (VKAPI_PTR *PFN_vkGetDeviceImageSparseMemoryRequirementsKHR)(VkDevice device, const VkDeviceImageMemoryRequirements* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements);
10972
10973#ifndef VK_NO_PROTOTYPES
10974VKAPI_ATTR void VKAPI_CALL vkGetDeviceBufferMemoryRequirementsKHR(
10975    VkDevice                                    device,
10976    const VkDeviceBufferMemoryRequirements*     pInfo,
10977    VkMemoryRequirements2*                      pMemoryRequirements);
10978
10979VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageMemoryRequirementsKHR(
10980    VkDevice                                    device,
10981    const VkDeviceImageMemoryRequirements*      pInfo,
10982    VkMemoryRequirements2*                      pMemoryRequirements);
10983
10984VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageSparseMemoryRequirementsKHR(
10985    VkDevice                                    device,
10986    const VkDeviceImageMemoryRequirements*      pInfo,
10987    uint32_t*                                   pSparseMemoryRequirementCount,
10988    VkSparseImageMemoryRequirements2*           pSparseMemoryRequirements);
10989#endif
10990
10991
10992// VK_KHR_maintenance5 is a preprocessor guard. Do not pass it to API calls.
10993#define VK_KHR_maintenance5 1
10994#define VK_KHR_MAINTENANCE_5_SPEC_VERSION 1
10995#define VK_KHR_MAINTENANCE_5_EXTENSION_NAME "VK_KHR_maintenance5"
10996typedef VkFlags64 VkPipelineCreateFlags2KHR;
10997
10998// Flag bits for VkPipelineCreateFlagBits2KHR
10999typedef VkFlags64 VkPipelineCreateFlagBits2KHR;
11000static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_DISABLE_OPTIMIZATION_BIT_KHR = 0x00000001ULL;
11001static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_ALLOW_DERIVATIVES_BIT_KHR = 0x00000002ULL;
11002static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_DERIVATIVE_BIT_KHR = 0x00000004ULL;
11003static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 0x00000008ULL;
11004static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_DISPATCH_BASE_BIT_KHR = 0x00000010ULL;
11005static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_DEFER_COMPILE_BIT_NV = 0x00000020ULL;
11006static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_CAPTURE_STATISTICS_BIT_KHR = 0x00000040ULL;
11007static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_CAPTURE_INTERNAL_REPRESENTATIONS_BIT_KHR = 0x00000080ULL;
11008static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_KHR = 0x00000100ULL;
11009static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_EARLY_RETURN_ON_FAILURE_BIT_KHR = 0x00000200ULL;
11010static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_LINK_TIME_OPTIMIZATION_BIT_EXT = 0x00000400ULL;
11011static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RETAIN_LINK_TIME_OPTIMIZATION_INFO_BIT_EXT = 0x00800000ULL;
11012static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_LIBRARY_BIT_KHR = 0x00000800ULL;
11013static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_TRIANGLES_BIT_KHR = 0x00001000ULL;
11014static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_SKIP_AABBS_BIT_KHR = 0x00002000ULL;
11015static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_ANY_HIT_SHADERS_BIT_KHR = 0x00004000ULL;
11016static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_CLOSEST_HIT_SHADERS_BIT_KHR = 0x00008000ULL;
11017static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_MISS_SHADERS_BIT_KHR = 0x00010000ULL;
11018static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_NO_NULL_INTERSECTION_SHADERS_BIT_KHR = 0x00020000ULL;
11019static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_SHADER_GROUP_HANDLE_CAPTURE_REPLAY_BIT_KHR = 0x00080000ULL;
11020static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_INDIRECT_BINDABLE_BIT_NV = 0x00040000ULL;
11021static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_ALLOW_MOTION_BIT_NV = 0x00100000ULL;
11022static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00200000ULL;
11023static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RENDERING_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0x00400000ULL;
11024static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_OPACITY_MICROMAP_BIT_EXT = 0x01000000ULL;
11025static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_COLOR_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x02000000ULL;
11026static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_DEPTH_STENCIL_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT = 0x04000000ULL;
11027static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_NO_PROTECTED_ACCESS_BIT_EXT = 0x08000000ULL;
11028static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_PROTECTED_ACCESS_ONLY_BIT_EXT = 0x40000000ULL;
11029static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_RAY_TRACING_DISPLACEMENT_MICROMAP_BIT_NV = 0x10000000ULL;
11030static const VkPipelineCreateFlagBits2KHR VK_PIPELINE_CREATE_2_DESCRIPTOR_BUFFER_BIT_EXT = 0x20000000ULL;
11031
11032typedef VkFlags64 VkBufferUsageFlags2KHR;
11033
11034// Flag bits for VkBufferUsageFlagBits2KHR
11035typedef VkFlags64 VkBufferUsageFlagBits2KHR;
11036static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_TRANSFER_SRC_BIT_KHR = 0x00000001ULL;
11037static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_TRANSFER_DST_BIT_KHR = 0x00000002ULL;
11038static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_UNIFORM_TEXEL_BUFFER_BIT_KHR = 0x00000004ULL;
11039static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_STORAGE_TEXEL_BUFFER_BIT_KHR = 0x00000008ULL;
11040static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_UNIFORM_BUFFER_BIT_KHR = 0x00000010ULL;
11041static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_STORAGE_BUFFER_BIT_KHR = 0x00000020ULL;
11042static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_INDEX_BUFFER_BIT_KHR = 0x00000040ULL;
11043static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_VERTEX_BUFFER_BIT_KHR = 0x00000080ULL;
11044static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_INDIRECT_BUFFER_BIT_KHR = 0x00000100ULL;
11045static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_EXECUTION_GRAPH_SCRATCH_BIT_AMDX = 0x02000000ULL;
11046static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200ULL;
11047static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_SHADER_BINDING_TABLE_BIT_KHR = 0x00000400ULL;
11048static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_RAY_TRACING_BIT_NV = 0x00000400ULL;
11049static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800ULL;
11050static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000ULL;
11051static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_VIDEO_DECODE_SRC_BIT_KHR = 0x00002000ULL;
11052static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_VIDEO_DECODE_DST_BIT_KHR = 0x00004000ULL;
11053#ifdef VK_ENABLE_BETA_EXTENSIONS
11054static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_VIDEO_ENCODE_DST_BIT_KHR = 0x00008000ULL;
11055#endif
11056#ifdef VK_ENABLE_BETA_EXTENSIONS
11057static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_VIDEO_ENCODE_SRC_BIT_KHR = 0x00010000ULL;
11058#endif
11059static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_SHADER_DEVICE_ADDRESS_BIT_KHR = 0x00020000ULL;
11060static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_BUILD_INPUT_READ_ONLY_BIT_KHR = 0x00080000ULL;
11061static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_ACCELERATION_STRUCTURE_STORAGE_BIT_KHR = 0x00100000ULL;
11062static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_SAMPLER_DESCRIPTOR_BUFFER_BIT_EXT = 0x00200000ULL;
11063static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_RESOURCE_DESCRIPTOR_BUFFER_BIT_EXT = 0x00400000ULL;
11064static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_PUSH_DESCRIPTORS_DESCRIPTOR_BUFFER_BIT_EXT = 0x04000000ULL;
11065static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_MICROMAP_BUILD_INPUT_READ_ONLY_BIT_EXT = 0x00800000ULL;
11066static const VkBufferUsageFlagBits2KHR VK_BUFFER_USAGE_2_MICROMAP_STORAGE_BIT_EXT = 0x01000000ULL;
11067
11068typedef struct VkPhysicalDeviceMaintenance5FeaturesKHR {
11069    VkStructureType    sType;
11070    void*              pNext;
11071    VkBool32           maintenance5;
11072} VkPhysicalDeviceMaintenance5FeaturesKHR;
11073
11074typedef struct VkPhysicalDeviceMaintenance5PropertiesKHR {
11075    VkStructureType    sType;
11076    void*              pNext;
11077    VkBool32           earlyFragmentMultisampleCoverageAfterSampleCounting;
11078    VkBool32           earlyFragmentSampleMaskTestBeforeSampleCounting;
11079    VkBool32           depthStencilSwizzleOneSupport;
11080    VkBool32           polygonModePointSize;
11081    VkBool32           nonStrictSinglePixelWideLinesUseParallelogram;
11082    VkBool32           nonStrictWideLinesUseParallelogram;
11083} VkPhysicalDeviceMaintenance5PropertiesKHR;
11084
11085typedef struct VkRenderingAreaInfoKHR {
11086    VkStructureType    sType;
11087    const void*        pNext;
11088    uint32_t           viewMask;
11089    uint32_t           colorAttachmentCount;
11090    const VkFormat*    pColorAttachmentFormats;
11091    VkFormat           depthAttachmentFormat;
11092    VkFormat           stencilAttachmentFormat;
11093} VkRenderingAreaInfoKHR;
11094
11095typedef struct VkImageSubresource2KHR {
11096    VkStructureType       sType;
11097    void*                 pNext;
11098    VkImageSubresource    imageSubresource;
11099} VkImageSubresource2KHR;
11100
11101typedef struct VkDeviceImageSubresourceInfoKHR {
11102    VkStructureType                  sType;
11103    const void*                      pNext;
11104    const VkImageCreateInfo*         pCreateInfo;
11105    const VkImageSubresource2KHR*    pSubresource;
11106} VkDeviceImageSubresourceInfoKHR;
11107
11108typedef struct VkSubresourceLayout2KHR {
11109    VkStructureType        sType;
11110    void*                  pNext;
11111    VkSubresourceLayout    subresourceLayout;
11112} VkSubresourceLayout2KHR;
11113
11114typedef struct VkPipelineCreateFlags2CreateInfoKHR {
11115    VkStructureType              sType;
11116    const void*                  pNext;
11117    VkPipelineCreateFlags2KHR    flags;
11118} VkPipelineCreateFlags2CreateInfoKHR;
11119
11120typedef struct VkBufferUsageFlags2CreateInfoKHR {
11121    VkStructureType           sType;
11122    const void*               pNext;
11123    VkBufferUsageFlags2KHR    usage;
11124} VkBufferUsageFlags2CreateInfoKHR;
11125
11126typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer2KHR)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkDeviceSize size, VkIndexType indexType);
11127typedef void (VKAPI_PTR *PFN_vkGetRenderingAreaGranularityKHR)(VkDevice device, const VkRenderingAreaInfoKHR* pRenderingAreaInfo, VkExtent2D* pGranularity);
11128typedef void (VKAPI_PTR *PFN_vkGetDeviceImageSubresourceLayoutKHR)(VkDevice device, const VkDeviceImageSubresourceInfoKHR* pInfo, VkSubresourceLayout2KHR* pLayout);
11129typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout2KHR)(VkDevice device, VkImage image, const VkImageSubresource2KHR* pSubresource, VkSubresourceLayout2KHR* pLayout);
11130
11131#ifndef VK_NO_PROTOTYPES
11132VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer2KHR(
11133    VkCommandBuffer                             commandBuffer,
11134    VkBuffer                                    buffer,
11135    VkDeviceSize                                offset,
11136    VkDeviceSize                                size,
11137    VkIndexType                                 indexType);
11138
11139VKAPI_ATTR void VKAPI_CALL vkGetRenderingAreaGranularityKHR(
11140    VkDevice                                    device,
11141    const VkRenderingAreaInfoKHR*               pRenderingAreaInfo,
11142    VkExtent2D*                                 pGranularity);
11143
11144VKAPI_ATTR void VKAPI_CALL vkGetDeviceImageSubresourceLayoutKHR(
11145    VkDevice                                    device,
11146    const VkDeviceImageSubresourceInfoKHR*      pInfo,
11147    VkSubresourceLayout2KHR*                    pLayout);
11148
11149VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout2KHR(
11150    VkDevice                                    device,
11151    VkImage                                     image,
11152    const VkImageSubresource2KHR*               pSubresource,
11153    VkSubresourceLayout2KHR*                    pLayout);
11154#endif
11155
11156
11157// VK_KHR_ray_tracing_position_fetch is a preprocessor guard. Do not pass it to API calls.
11158#define VK_KHR_ray_tracing_position_fetch 1
11159#define VK_KHR_RAY_TRACING_POSITION_FETCH_SPEC_VERSION 1
11160#define VK_KHR_RAY_TRACING_POSITION_FETCH_EXTENSION_NAME "VK_KHR_ray_tracing_position_fetch"
11161typedef struct VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR {
11162    VkStructureType    sType;
11163    void*              pNext;
11164    VkBool32           rayTracingPositionFetch;
11165} VkPhysicalDeviceRayTracingPositionFetchFeaturesKHR;
11166
11167
11168
11169// VK_KHR_cooperative_matrix is a preprocessor guard. Do not pass it to API calls.
11170#define VK_KHR_cooperative_matrix 1
11171#define VK_KHR_COOPERATIVE_MATRIX_SPEC_VERSION 2
11172#define VK_KHR_COOPERATIVE_MATRIX_EXTENSION_NAME "VK_KHR_cooperative_matrix"
11173
11174typedef enum VkComponentTypeKHR {
11175    VK_COMPONENT_TYPE_FLOAT16_KHR = 0,
11176    VK_COMPONENT_TYPE_FLOAT32_KHR = 1,
11177    VK_COMPONENT_TYPE_FLOAT64_KHR = 2,
11178    VK_COMPONENT_TYPE_SINT8_KHR = 3,
11179    VK_COMPONENT_TYPE_SINT16_KHR = 4,
11180    VK_COMPONENT_TYPE_SINT32_KHR = 5,
11181    VK_COMPONENT_TYPE_SINT64_KHR = 6,
11182    VK_COMPONENT_TYPE_UINT8_KHR = 7,
11183    VK_COMPONENT_TYPE_UINT16_KHR = 8,
11184    VK_COMPONENT_TYPE_UINT32_KHR = 9,
11185    VK_COMPONENT_TYPE_UINT64_KHR = 10,
11186    VK_COMPONENT_TYPE_FLOAT16_NV = VK_COMPONENT_TYPE_FLOAT16_KHR,
11187    VK_COMPONENT_TYPE_FLOAT32_NV = VK_COMPONENT_TYPE_FLOAT32_KHR,
11188    VK_COMPONENT_TYPE_FLOAT64_NV = VK_COMPONENT_TYPE_FLOAT64_KHR,
11189    VK_COMPONENT_TYPE_SINT8_NV = VK_COMPONENT_TYPE_SINT8_KHR,
11190    VK_COMPONENT_TYPE_SINT16_NV = VK_COMPONENT_TYPE_SINT16_KHR,
11191    VK_COMPONENT_TYPE_SINT32_NV = VK_COMPONENT_TYPE_SINT32_KHR,
11192    VK_COMPONENT_TYPE_SINT64_NV = VK_COMPONENT_TYPE_SINT64_KHR,
11193    VK_COMPONENT_TYPE_UINT8_NV = VK_COMPONENT_TYPE_UINT8_KHR,
11194    VK_COMPONENT_TYPE_UINT16_NV = VK_COMPONENT_TYPE_UINT16_KHR,
11195    VK_COMPONENT_TYPE_UINT32_NV = VK_COMPONENT_TYPE_UINT32_KHR,
11196    VK_COMPONENT_TYPE_UINT64_NV = VK_COMPONENT_TYPE_UINT64_KHR,
11197    VK_COMPONENT_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
11198} VkComponentTypeKHR;
11199
11200typedef enum VkScopeKHR {
11201    VK_SCOPE_DEVICE_KHR = 1,
11202    VK_SCOPE_WORKGROUP_KHR = 2,
11203    VK_SCOPE_SUBGROUP_KHR = 3,
11204    VK_SCOPE_QUEUE_FAMILY_KHR = 5,
11205    VK_SCOPE_DEVICE_NV = VK_SCOPE_DEVICE_KHR,
11206    VK_SCOPE_WORKGROUP_NV = VK_SCOPE_WORKGROUP_KHR,
11207    VK_SCOPE_SUBGROUP_NV = VK_SCOPE_SUBGROUP_KHR,
11208    VK_SCOPE_QUEUE_FAMILY_NV = VK_SCOPE_QUEUE_FAMILY_KHR,
11209    VK_SCOPE_MAX_ENUM_KHR = 0x7FFFFFFF
11210} VkScopeKHR;
11211typedef struct VkCooperativeMatrixPropertiesKHR {
11212    VkStructureType       sType;
11213    void*                 pNext;
11214    uint32_t              MSize;
11215    uint32_t              NSize;
11216    uint32_t              KSize;
11217    VkComponentTypeKHR    AType;
11218    VkComponentTypeKHR    BType;
11219    VkComponentTypeKHR    CType;
11220    VkComponentTypeKHR    ResultType;
11221    VkBool32              saturatingAccumulation;
11222    VkScopeKHR            scope;
11223} VkCooperativeMatrixPropertiesKHR;
11224
11225typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesKHR {
11226    VkStructureType    sType;
11227    void*              pNext;
11228    VkBool32           cooperativeMatrix;
11229    VkBool32           cooperativeMatrixRobustBufferAccess;
11230} VkPhysicalDeviceCooperativeMatrixFeaturesKHR;
11231
11232typedef struct VkPhysicalDeviceCooperativeMatrixPropertiesKHR {
11233    VkStructureType       sType;
11234    void*                 pNext;
11235    VkShaderStageFlags    cooperativeMatrixSupportedStages;
11236} VkPhysicalDeviceCooperativeMatrixPropertiesKHR;
11237
11238typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesKHR* pProperties);
11239
11240#ifndef VK_NO_PROTOTYPES
11241VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCooperativeMatrixPropertiesKHR(
11242    VkPhysicalDevice                            physicalDevice,
11243    uint32_t*                                   pPropertyCount,
11244    VkCooperativeMatrixPropertiesKHR*           pProperties);
11245#endif
11246
11247
11248// VK_KHR_video_maintenance1 is a preprocessor guard. Do not pass it to API calls.
11249#define VK_KHR_video_maintenance1 1
11250#define VK_KHR_VIDEO_MAINTENANCE_1_SPEC_VERSION 1
11251#define VK_KHR_VIDEO_MAINTENANCE_1_EXTENSION_NAME "VK_KHR_video_maintenance1"
11252typedef struct VkPhysicalDeviceVideoMaintenance1FeaturesKHR {
11253    VkStructureType    sType;
11254    void*              pNext;
11255    VkBool32           videoMaintenance1;
11256} VkPhysicalDeviceVideoMaintenance1FeaturesKHR;
11257
11258typedef struct VkVideoInlineQueryInfoKHR {
11259    VkStructureType    sType;
11260    const void*        pNext;
11261    VkQueryPool        queryPool;
11262    uint32_t           firstQuery;
11263    uint32_t           queryCount;
11264} VkVideoInlineQueryInfoKHR;
11265
11266
11267
11268// VK_KHR_vertex_attribute_divisor is a preprocessor guard. Do not pass it to API calls.
11269#define VK_KHR_vertex_attribute_divisor 1
11270#define VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 1
11271#define VK_KHR_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_KHR_vertex_attribute_divisor"
11272typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR {
11273    VkStructureType    sType;
11274    void*              pNext;
11275    uint32_t           maxVertexAttribDivisor;
11276    VkBool32           supportsNonZeroFirstInstance;
11277} VkPhysicalDeviceVertexAttributeDivisorPropertiesKHR;
11278
11279typedef struct VkVertexInputBindingDivisorDescriptionKHR {
11280    uint32_t    binding;
11281    uint32_t    divisor;
11282} VkVertexInputBindingDivisorDescriptionKHR;
11283
11284typedef struct VkPipelineVertexInputDivisorStateCreateInfoKHR {
11285    VkStructureType                                     sType;
11286    const void*                                         pNext;
11287    uint32_t                                            vertexBindingDivisorCount;
11288    const VkVertexInputBindingDivisorDescriptionKHR*    pVertexBindingDivisors;
11289} VkPipelineVertexInputDivisorStateCreateInfoKHR;
11290
11291typedef struct VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR {
11292    VkStructureType    sType;
11293    void*              pNext;
11294    VkBool32           vertexAttributeInstanceRateDivisor;
11295    VkBool32           vertexAttributeInstanceRateZeroDivisor;
11296} VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR;
11297
11298
11299
11300// VK_KHR_calibrated_timestamps is a preprocessor guard. Do not pass it to API calls.
11301#define VK_KHR_calibrated_timestamps 1
11302#define VK_KHR_CALIBRATED_TIMESTAMPS_SPEC_VERSION 1
11303#define VK_KHR_CALIBRATED_TIMESTAMPS_EXTENSION_NAME "VK_KHR_calibrated_timestamps"
11304
11305typedef enum VkTimeDomainKHR {
11306    VK_TIME_DOMAIN_DEVICE_KHR = 0,
11307    VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR = 1,
11308    VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR = 2,
11309    VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR = 3,
11310    VK_TIME_DOMAIN_DEVICE_EXT = VK_TIME_DOMAIN_DEVICE_KHR,
11311    VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = VK_TIME_DOMAIN_CLOCK_MONOTONIC_KHR,
11312    VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_KHR,
11313    VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_KHR,
11314    VK_TIME_DOMAIN_MAX_ENUM_KHR = 0x7FFFFFFF
11315} VkTimeDomainKHR;
11316typedef struct VkCalibratedTimestampInfoKHR {
11317    VkStructureType    sType;
11318    const void*        pNext;
11319    VkTimeDomainKHR    timeDomain;
11320} VkCalibratedTimestampInfoKHR;
11321
11322typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsKHR)(VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainKHR* pTimeDomains);
11323typedef VkResult (VKAPI_PTR *PFN_vkGetCalibratedTimestampsKHR)(VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoKHR* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation);
11324
11325#ifndef VK_NO_PROTOTYPES
11326VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCalibrateableTimeDomainsKHR(
11327    VkPhysicalDevice                            physicalDevice,
11328    uint32_t*                                   pTimeDomainCount,
11329    VkTimeDomainKHR*                            pTimeDomains);
11330
11331VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsKHR(
11332    VkDevice                                    device,
11333    uint32_t                                    timestampCount,
11334    const VkCalibratedTimestampInfoKHR*         pTimestampInfos,
11335    uint64_t*                                   pTimestamps,
11336    uint64_t*                                   pMaxDeviation);
11337#endif
11338
11339
11340// VK_KHR_maintenance6 is a preprocessor guard. Do not pass it to API calls.
11341#define VK_KHR_maintenance6 1
11342#define VK_KHR_MAINTENANCE_6_SPEC_VERSION 1
11343#define VK_KHR_MAINTENANCE_6_EXTENSION_NAME "VK_KHR_maintenance6"
11344typedef struct VkPhysicalDeviceMaintenance6FeaturesKHR {
11345    VkStructureType    sType;
11346    void*              pNext;
11347    VkBool32           maintenance6;
11348} VkPhysicalDeviceMaintenance6FeaturesKHR;
11349
11350typedef struct VkPhysicalDeviceMaintenance6PropertiesKHR {
11351    VkStructureType    sType;
11352    void*              pNext;
11353    VkBool32           blockTexelViewCompatibleMultipleLayers;
11354    uint32_t           maxCombinedImageSamplerDescriptorCount;
11355    VkBool32           fragmentShadingRateClampCombinerInputs;
11356} VkPhysicalDeviceMaintenance6PropertiesKHR;
11357
11358typedef struct VkBindMemoryStatusKHR {
11359    VkStructureType    sType;
11360    const void*        pNext;
11361    VkResult*          pResult;
11362} VkBindMemoryStatusKHR;
11363
11364typedef struct VkBindDescriptorSetsInfoKHR {
11365    VkStructureType           sType;
11366    const void*               pNext;
11367    VkShaderStageFlags        stageFlags;
11368    VkPipelineLayout          layout;
11369    uint32_t                  firstSet;
11370    uint32_t                  descriptorSetCount;
11371    const VkDescriptorSet*    pDescriptorSets;
11372    uint32_t                  dynamicOffsetCount;
11373    const uint32_t*           pDynamicOffsets;
11374} VkBindDescriptorSetsInfoKHR;
11375
11376typedef struct VkPushConstantsInfoKHR {
11377    VkStructureType       sType;
11378    const void*           pNext;
11379    VkPipelineLayout      layout;
11380    VkShaderStageFlags    stageFlags;
11381    uint32_t              offset;
11382    uint32_t              size;
11383    const void*           pValues;
11384} VkPushConstantsInfoKHR;
11385
11386typedef struct VkPushDescriptorSetInfoKHR {
11387    VkStructureType                sType;
11388    const void*                    pNext;
11389    VkShaderStageFlags             stageFlags;
11390    VkPipelineLayout               layout;
11391    uint32_t                       set;
11392    uint32_t                       descriptorWriteCount;
11393    const VkWriteDescriptorSet*    pDescriptorWrites;
11394} VkPushDescriptorSetInfoKHR;
11395
11396typedef struct VkPushDescriptorSetWithTemplateInfoKHR {
11397    VkStructureType               sType;
11398    const void*                   pNext;
11399    VkDescriptorUpdateTemplate    descriptorUpdateTemplate;
11400    VkPipelineLayout              layout;
11401    uint32_t                      set;
11402    const void*                   pData;
11403} VkPushDescriptorSetWithTemplateInfoKHR;
11404
11405typedef struct VkSetDescriptorBufferOffsetsInfoEXT {
11406    VkStructureType        sType;
11407    const void*            pNext;
11408    VkShaderStageFlags     stageFlags;
11409    VkPipelineLayout       layout;
11410    uint32_t               firstSet;
11411    uint32_t               setCount;
11412    const uint32_t*        pBufferIndices;
11413    const VkDeviceSize*    pOffsets;
11414} VkSetDescriptorBufferOffsetsInfoEXT;
11415
11416typedef struct VkBindDescriptorBufferEmbeddedSamplersInfoEXT {
11417    VkStructureType       sType;
11418    const void*           pNext;
11419    VkShaderStageFlags    stageFlags;
11420    VkPipelineLayout      layout;
11421    uint32_t              set;
11422} VkBindDescriptorBufferEmbeddedSamplersInfoEXT;
11423
11424typedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorSets2KHR)(VkCommandBuffer commandBuffer, const VkBindDescriptorSetsInfoKHR* pBindDescriptorSetsInfo);
11425typedef void (VKAPI_PTR *PFN_vkCmdPushConstants2KHR)(VkCommandBuffer commandBuffer, const VkPushConstantsInfoKHR* pPushConstantsInfo);
11426typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSet2KHR)(VkCommandBuffer commandBuffer, const VkPushDescriptorSetInfoKHR* pPushDescriptorSetInfo);
11427typedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplate2KHR)(VkCommandBuffer commandBuffer, const VkPushDescriptorSetWithTemplateInfoKHR* pPushDescriptorSetWithTemplateInfo);
11428typedef void (VKAPI_PTR *PFN_vkCmdSetDescriptorBufferOffsets2EXT)(VkCommandBuffer commandBuffer, const VkSetDescriptorBufferOffsetsInfoEXT* pSetDescriptorBufferOffsetsInfo);
11429typedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorBufferEmbeddedSamplers2EXT)(VkCommandBuffer commandBuffer, const VkBindDescriptorBufferEmbeddedSamplersInfoEXT* pBindDescriptorBufferEmbeddedSamplersInfo);
11430
11431#ifndef VK_NO_PROTOTYPES
11432VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets2KHR(
11433    VkCommandBuffer                             commandBuffer,
11434    const VkBindDescriptorSetsInfoKHR*          pBindDescriptorSetsInfo);
11435
11436VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants2KHR(
11437    VkCommandBuffer                             commandBuffer,
11438    const VkPushConstantsInfoKHR*               pPushConstantsInfo);
11439
11440VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSet2KHR(
11441    VkCommandBuffer                             commandBuffer,
11442    const VkPushDescriptorSetInfoKHR*           pPushDescriptorSetInfo);
11443
11444VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplate2KHR(
11445    VkCommandBuffer                             commandBuffer,
11446    const VkPushDescriptorSetWithTemplateInfoKHR* pPushDescriptorSetWithTemplateInfo);
11447
11448VKAPI_ATTR void VKAPI_CALL vkCmdSetDescriptorBufferOffsets2EXT(
11449    VkCommandBuffer                             commandBuffer,
11450    const VkSetDescriptorBufferOffsetsInfoEXT*  pSetDescriptorBufferOffsetsInfo);
11451
11452VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorBufferEmbeddedSamplers2EXT(
11453    VkCommandBuffer                             commandBuffer,
11454    const VkBindDescriptorBufferEmbeddedSamplersInfoEXT* pBindDescriptorBufferEmbeddedSamplersInfo);
11455#endif
11456
11457
11458// VK_EXT_debug_report is a preprocessor guard. Do not pass it to API calls.
11459#define VK_EXT_debug_report 1
11460VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
11461#define VK_EXT_DEBUG_REPORT_SPEC_VERSION  10
11462#define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report"
11463
11464typedef enum VkDebugReportObjectTypeEXT {
11465    VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
11466    VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
11467    VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
11468    VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,
11469    VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,
11470    VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,
11471    VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,
11472    VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,
11473    VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,
11474    VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,
11475    VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,
11476    VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,
11477    VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,
11478    VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,
11479    VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,
11480    VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,
11481    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,
11482    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,
11483    VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,
11484    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,
11485    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,
11486    VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,
11487    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,
11488    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,
11489    VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,
11490    VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,
11491    VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
11492    VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
11493    VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28,
11494    VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29,
11495    VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,
11496    VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33,
11497    VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT = 1000156000,
11498    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT = 1000085000,
11499    VK_DEBUG_REPORT_OBJECT_TYPE_CU_MODULE_NVX_EXT = 1000029000,
11500    VK_DEBUG_REPORT_OBJECT_TYPE_CU_FUNCTION_NVX_EXT = 1000029001,
11501    VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT = 1000150000,
11502    VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000,
11503    VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_MODULE_NV_EXT = 1000307000,
11504    VK_DEBUG_REPORT_OBJECT_TYPE_CUDA_FUNCTION_NV_EXT = 1000307001,
11505    VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_COLLECTION_FUCHSIA_EXT = 1000366000,
11506    VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT,
11507    VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT,
11508    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT,
11509    VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT,
11510    VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
11511} VkDebugReportObjectTypeEXT;
11512
11513typedef enum VkDebugReportFlagBitsEXT {
11514    VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,
11515    VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002,
11516    VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004,
11517    VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008,
11518    VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010,
11519    VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
11520} VkDebugReportFlagBitsEXT;
11521typedef VkFlags VkDebugReportFlagsEXT;
11522typedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)(
11523    VkDebugReportFlagsEXT                       flags,
11524    VkDebugReportObjectTypeEXT                  objectType,
11525    uint64_t                                    object,
11526    size_t                                      location,
11527    int32_t                                     messageCode,
11528    const char*                                 pLayerPrefix,
11529    const char*                                 pMessage,
11530    void*                                       pUserData);
11531
11532typedef struct VkDebugReportCallbackCreateInfoEXT {
11533    VkStructureType                 sType;
11534    const void*                     pNext;
11535    VkDebugReportFlagsEXT           flags;
11536    PFN_vkDebugReportCallbackEXT    pfnCallback;
11537    void*                           pUserData;
11538} VkDebugReportCallbackCreateInfoEXT;
11539
11540typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugReportCallbackEXT)(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback);
11541typedef void (VKAPI_PTR *PFN_vkDestroyDebugReportCallbackEXT)(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator);
11542typedef 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);
11543
11544#ifndef VK_NO_PROTOTYPES
11545VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugReportCallbackEXT(
11546    VkInstance                                  instance,
11547    const VkDebugReportCallbackCreateInfoEXT*   pCreateInfo,
11548    const VkAllocationCallbacks*                pAllocator,
11549    VkDebugReportCallbackEXT*                   pCallback);
11550
11551VKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackEXT(
11552    VkInstance                                  instance,
11553    VkDebugReportCallbackEXT                    callback,
11554    const VkAllocationCallbacks*                pAllocator);
11555
11556VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT(
11557    VkInstance                                  instance,
11558    VkDebugReportFlagsEXT                       flags,
11559    VkDebugReportObjectTypeEXT                  objectType,
11560    uint64_t                                    object,
11561    size_t                                      location,
11562    int32_t                                     messageCode,
11563    const char*                                 pLayerPrefix,
11564    const char*                                 pMessage);
11565#endif
11566
11567
11568// VK_NV_glsl_shader is a preprocessor guard. Do not pass it to API calls.
11569#define VK_NV_glsl_shader 1
11570#define VK_NV_GLSL_SHADER_SPEC_VERSION    1
11571#define VK_NV_GLSL_SHADER_EXTENSION_NAME  "VK_NV_glsl_shader"
11572
11573
11574// VK_EXT_depth_range_unrestricted is a preprocessor guard. Do not pass it to API calls.
11575#define VK_EXT_depth_range_unrestricted 1
11576#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION 1
11577#define VK_EXT_DEPTH_RANGE_UNRESTRICTED_EXTENSION_NAME "VK_EXT_depth_range_unrestricted"
11578
11579
11580// VK_IMG_filter_cubic is a preprocessor guard. Do not pass it to API calls.
11581#define VK_IMG_filter_cubic 1
11582#define VK_IMG_FILTER_CUBIC_SPEC_VERSION  1
11583#define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic"
11584
11585
11586// VK_AMD_rasterization_order is a preprocessor guard. Do not pass it to API calls.
11587#define VK_AMD_rasterization_order 1
11588#define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1
11589#define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME "VK_AMD_rasterization_order"
11590
11591typedef enum VkRasterizationOrderAMD {
11592    VK_RASTERIZATION_ORDER_STRICT_AMD = 0,
11593    VK_RASTERIZATION_ORDER_RELAXED_AMD = 1,
11594    VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF
11595} VkRasterizationOrderAMD;
11596typedef struct VkPipelineRasterizationStateRasterizationOrderAMD {
11597    VkStructureType            sType;
11598    const void*                pNext;
11599    VkRasterizationOrderAMD    rasterizationOrder;
11600} VkPipelineRasterizationStateRasterizationOrderAMD;
11601
11602
11603
11604// VK_AMD_shader_trinary_minmax is a preprocessor guard. Do not pass it to API calls.
11605#define VK_AMD_shader_trinary_minmax 1
11606#define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1
11607#define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax"
11608
11609
11610// VK_AMD_shader_explicit_vertex_parameter is a preprocessor guard. Do not pass it to API calls.
11611#define VK_AMD_shader_explicit_vertex_parameter 1
11612#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1
11613#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter"
11614
11615
11616// VK_EXT_debug_marker is a preprocessor guard. Do not pass it to API calls.
11617#define VK_EXT_debug_marker 1
11618#define VK_EXT_DEBUG_MARKER_SPEC_VERSION  4
11619#define VK_EXT_DEBUG_MARKER_EXTENSION_NAME "VK_EXT_debug_marker"
11620typedef struct VkDebugMarkerObjectNameInfoEXT {
11621    VkStructureType               sType;
11622    const void*                   pNext;
11623    VkDebugReportObjectTypeEXT    objectType;
11624    uint64_t                      object;
11625    const char*                   pObjectName;
11626} VkDebugMarkerObjectNameInfoEXT;
11627
11628typedef struct VkDebugMarkerObjectTagInfoEXT {
11629    VkStructureType               sType;
11630    const void*                   pNext;
11631    VkDebugReportObjectTypeEXT    objectType;
11632    uint64_t                      object;
11633    uint64_t                      tagName;
11634    size_t                        tagSize;
11635    const void*                   pTag;
11636} VkDebugMarkerObjectTagInfoEXT;
11637
11638typedef struct VkDebugMarkerMarkerInfoEXT {
11639    VkStructureType    sType;
11640    const void*        pNext;
11641    const char*        pMarkerName;
11642    float              color[4];
11643} VkDebugMarkerMarkerInfoEXT;
11644
11645typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectTagEXT)(VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo);
11646typedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectNameEXT)(VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo);
11647typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
11648typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerEndEXT)(VkCommandBuffer commandBuffer);
11649typedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
11650
11651#ifndef VK_NO_PROTOTYPES
11652VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT(
11653    VkDevice                                    device,
11654    const VkDebugMarkerObjectTagInfoEXT*        pTagInfo);
11655
11656VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT(
11657    VkDevice                                    device,
11658    const VkDebugMarkerObjectNameInfoEXT*       pNameInfo);
11659
11660VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerBeginEXT(
11661    VkCommandBuffer                             commandBuffer,
11662    const VkDebugMarkerMarkerInfoEXT*           pMarkerInfo);
11663
11664VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerEndEXT(
11665    VkCommandBuffer                             commandBuffer);
11666
11667VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT(
11668    VkCommandBuffer                             commandBuffer,
11669    const VkDebugMarkerMarkerInfoEXT*           pMarkerInfo);
11670#endif
11671
11672
11673// VK_AMD_gcn_shader is a preprocessor guard. Do not pass it to API calls.
11674#define VK_AMD_gcn_shader 1
11675#define VK_AMD_GCN_SHADER_SPEC_VERSION    1
11676#define VK_AMD_GCN_SHADER_EXTENSION_NAME  "VK_AMD_gcn_shader"
11677
11678
11679// VK_NV_dedicated_allocation is a preprocessor guard. Do not pass it to API calls.
11680#define VK_NV_dedicated_allocation 1
11681#define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1
11682#define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation"
11683typedef struct VkDedicatedAllocationImageCreateInfoNV {
11684    VkStructureType    sType;
11685    const void*        pNext;
11686    VkBool32           dedicatedAllocation;
11687} VkDedicatedAllocationImageCreateInfoNV;
11688
11689typedef struct VkDedicatedAllocationBufferCreateInfoNV {
11690    VkStructureType    sType;
11691    const void*        pNext;
11692    VkBool32           dedicatedAllocation;
11693} VkDedicatedAllocationBufferCreateInfoNV;
11694
11695typedef struct VkDedicatedAllocationMemoryAllocateInfoNV {
11696    VkStructureType    sType;
11697    const void*        pNext;
11698    VkImage            image;
11699    VkBuffer           buffer;
11700} VkDedicatedAllocationMemoryAllocateInfoNV;
11701
11702
11703
11704// VK_EXT_transform_feedback is a preprocessor guard. Do not pass it to API calls.
11705#define VK_EXT_transform_feedback 1
11706#define VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION 1
11707#define VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME "VK_EXT_transform_feedback"
11708typedef VkFlags VkPipelineRasterizationStateStreamCreateFlagsEXT;
11709typedef struct VkPhysicalDeviceTransformFeedbackFeaturesEXT {
11710    VkStructureType    sType;
11711    void*              pNext;
11712    VkBool32           transformFeedback;
11713    VkBool32           geometryStreams;
11714} VkPhysicalDeviceTransformFeedbackFeaturesEXT;
11715
11716typedef struct VkPhysicalDeviceTransformFeedbackPropertiesEXT {
11717    VkStructureType    sType;
11718    void*              pNext;
11719    uint32_t           maxTransformFeedbackStreams;
11720    uint32_t           maxTransformFeedbackBuffers;
11721    VkDeviceSize       maxTransformFeedbackBufferSize;
11722    uint32_t           maxTransformFeedbackStreamDataSize;
11723    uint32_t           maxTransformFeedbackBufferDataSize;
11724    uint32_t           maxTransformFeedbackBufferDataStride;
11725    VkBool32           transformFeedbackQueries;
11726    VkBool32           transformFeedbackStreamsLinesTriangles;
11727    VkBool32           transformFeedbackRasterizationStreamSelect;
11728    VkBool32           transformFeedbackDraw;
11729} VkPhysicalDeviceTransformFeedbackPropertiesEXT;
11730
11731typedef struct VkPipelineRasterizationStateStreamCreateInfoEXT {
11732    VkStructureType                                     sType;
11733    const void*                                         pNext;
11734    VkPipelineRasterizationStateStreamCreateFlagsEXT    flags;
11735    uint32_t                                            rasterizationStream;
11736} VkPipelineRasterizationStateStreamCreateInfoEXT;
11737
11738typedef void (VKAPI_PTR *PFN_vkCmdBindTransformFeedbackBuffersEXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes);
11739typedef void (VKAPI_PTR *PFN_vkCmdBeginTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets);
11740typedef void (VKAPI_PTR *PFN_vkCmdEndTransformFeedbackEXT)(VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets);
11741typedef void (VKAPI_PTR *PFN_vkCmdBeginQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags, uint32_t index);
11742typedef void (VKAPI_PTR *PFN_vkCmdEndQueryIndexedEXT)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index);
11743typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectByteCountEXT)(VkCommandBuffer commandBuffer, uint32_t instanceCount, uint32_t firstInstance, VkBuffer counterBuffer, VkDeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride);
11744
11745#ifndef VK_NO_PROTOTYPES
11746VKAPI_ATTR void VKAPI_CALL vkCmdBindTransformFeedbackBuffersEXT(
11747    VkCommandBuffer                             commandBuffer,
11748    uint32_t                                    firstBinding,
11749    uint32_t                                    bindingCount,
11750    const VkBuffer*                             pBuffers,
11751    const VkDeviceSize*                         pOffsets,
11752    const VkDeviceSize*                         pSizes);
11753
11754VKAPI_ATTR void VKAPI_CALL vkCmdBeginTransformFeedbackEXT(
11755    VkCommandBuffer                             commandBuffer,
11756    uint32_t                                    firstCounterBuffer,
11757    uint32_t                                    counterBufferCount,
11758    const VkBuffer*                             pCounterBuffers,
11759    const VkDeviceSize*                         pCounterBufferOffsets);
11760
11761VKAPI_ATTR void VKAPI_CALL vkCmdEndTransformFeedbackEXT(
11762    VkCommandBuffer                             commandBuffer,
11763    uint32_t                                    firstCounterBuffer,
11764    uint32_t                                    counterBufferCount,
11765    const VkBuffer*                             pCounterBuffers,
11766    const VkDeviceSize*                         pCounterBufferOffsets);
11767
11768VKAPI_ATTR void VKAPI_CALL vkCmdBeginQueryIndexedEXT(
11769    VkCommandBuffer                             commandBuffer,
11770    VkQueryPool                                 queryPool,
11771    uint32_t                                    query,
11772    VkQueryControlFlags                         flags,
11773    uint32_t                                    index);
11774
11775VKAPI_ATTR void VKAPI_CALL vkCmdEndQueryIndexedEXT(
11776    VkCommandBuffer                             commandBuffer,
11777    VkQueryPool                                 queryPool,
11778    uint32_t                                    query,
11779    uint32_t                                    index);
11780
11781VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectByteCountEXT(
11782    VkCommandBuffer                             commandBuffer,
11783    uint32_t                                    instanceCount,
11784    uint32_t                                    firstInstance,
11785    VkBuffer                                    counterBuffer,
11786    VkDeviceSize                                counterBufferOffset,
11787    uint32_t                                    counterOffset,
11788    uint32_t                                    vertexStride);
11789#endif
11790
11791
11792// VK_NVX_binary_import is a preprocessor guard. Do not pass it to API calls.
11793#define VK_NVX_binary_import 1
11794VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCuModuleNVX)
11795VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCuFunctionNVX)
11796#define VK_NVX_BINARY_IMPORT_SPEC_VERSION 1
11797#define VK_NVX_BINARY_IMPORT_EXTENSION_NAME "VK_NVX_binary_import"
11798typedef struct VkCuModuleCreateInfoNVX {
11799    VkStructureType    sType;
11800    const void*        pNext;
11801    size_t             dataSize;
11802    const void*        pData;
11803} VkCuModuleCreateInfoNVX;
11804
11805typedef struct VkCuFunctionCreateInfoNVX {
11806    VkStructureType    sType;
11807    const void*        pNext;
11808    VkCuModuleNVX      module;
11809    const char*        pName;
11810} VkCuFunctionCreateInfoNVX;
11811
11812typedef struct VkCuLaunchInfoNVX {
11813    VkStructureType        sType;
11814    const void*            pNext;
11815    VkCuFunctionNVX        function;
11816    uint32_t               gridDimX;
11817    uint32_t               gridDimY;
11818    uint32_t               gridDimZ;
11819    uint32_t               blockDimX;
11820    uint32_t               blockDimY;
11821    uint32_t               blockDimZ;
11822    uint32_t               sharedMemBytes;
11823    size_t                 paramCount;
11824    const void* const *    pParams;
11825    size_t                 extraCount;
11826    const void* const *    pExtras;
11827} VkCuLaunchInfoNVX;
11828
11829typedef VkResult (VKAPI_PTR *PFN_vkCreateCuModuleNVX)(VkDevice device, const VkCuModuleCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuModuleNVX* pModule);
11830typedef VkResult (VKAPI_PTR *PFN_vkCreateCuFunctionNVX)(VkDevice device, const VkCuFunctionCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCuFunctionNVX* pFunction);
11831typedef void (VKAPI_PTR *PFN_vkDestroyCuModuleNVX)(VkDevice device, VkCuModuleNVX module, const VkAllocationCallbacks* pAllocator);
11832typedef void (VKAPI_PTR *PFN_vkDestroyCuFunctionNVX)(VkDevice device, VkCuFunctionNVX function, const VkAllocationCallbacks* pAllocator);
11833typedef void (VKAPI_PTR *PFN_vkCmdCuLaunchKernelNVX)(VkCommandBuffer commandBuffer, const VkCuLaunchInfoNVX* pLaunchInfo);
11834
11835#ifndef VK_NO_PROTOTYPES
11836VKAPI_ATTR VkResult VKAPI_CALL vkCreateCuModuleNVX(
11837    VkDevice                                    device,
11838    const VkCuModuleCreateInfoNVX*              pCreateInfo,
11839    const VkAllocationCallbacks*                pAllocator,
11840    VkCuModuleNVX*                              pModule);
11841
11842VKAPI_ATTR VkResult VKAPI_CALL vkCreateCuFunctionNVX(
11843    VkDevice                                    device,
11844    const VkCuFunctionCreateInfoNVX*            pCreateInfo,
11845    const VkAllocationCallbacks*                pAllocator,
11846    VkCuFunctionNVX*                            pFunction);
11847
11848VKAPI_ATTR void VKAPI_CALL vkDestroyCuModuleNVX(
11849    VkDevice                                    device,
11850    VkCuModuleNVX                               module,
11851    const VkAllocationCallbacks*                pAllocator);
11852
11853VKAPI_ATTR void VKAPI_CALL vkDestroyCuFunctionNVX(
11854    VkDevice                                    device,
11855    VkCuFunctionNVX                             function,
11856    const VkAllocationCallbacks*                pAllocator);
11857
11858VKAPI_ATTR void VKAPI_CALL vkCmdCuLaunchKernelNVX(
11859    VkCommandBuffer                             commandBuffer,
11860    const VkCuLaunchInfoNVX*                    pLaunchInfo);
11861#endif
11862
11863
11864// VK_NVX_image_view_handle is a preprocessor guard. Do not pass it to API calls.
11865#define VK_NVX_image_view_handle 1
11866#define VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION 2
11867#define VK_NVX_IMAGE_VIEW_HANDLE_EXTENSION_NAME "VK_NVX_image_view_handle"
11868typedef struct VkImageViewHandleInfoNVX {
11869    VkStructureType     sType;
11870    const void*         pNext;
11871    VkImageView         imageView;
11872    VkDescriptorType    descriptorType;
11873    VkSampler           sampler;
11874} VkImageViewHandleInfoNVX;
11875
11876typedef struct VkImageViewAddressPropertiesNVX {
11877    VkStructureType    sType;
11878    void*              pNext;
11879    VkDeviceAddress    deviceAddress;
11880    VkDeviceSize       size;
11881} VkImageViewAddressPropertiesNVX;
11882
11883typedef uint32_t (VKAPI_PTR *PFN_vkGetImageViewHandleNVX)(VkDevice device, const VkImageViewHandleInfoNVX* pInfo);
11884typedef VkResult (VKAPI_PTR *PFN_vkGetImageViewAddressNVX)(VkDevice device, VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties);
11885
11886#ifndef VK_NO_PROTOTYPES
11887VKAPI_ATTR uint32_t VKAPI_CALL vkGetImageViewHandleNVX(
11888    VkDevice                                    device,
11889    const VkImageViewHandleInfoNVX*             pInfo);
11890
11891VKAPI_ATTR VkResult VKAPI_CALL vkGetImageViewAddressNVX(
11892    VkDevice                                    device,
11893    VkImageView                                 imageView,
11894    VkImageViewAddressPropertiesNVX*            pProperties);
11895#endif
11896
11897
11898// VK_AMD_draw_indirect_count is a preprocessor guard. Do not pass it to API calls.
11899#define VK_AMD_draw_indirect_count 1
11900#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 2
11901#define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count"
11902typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
11903typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
11904
11905#ifndef VK_NO_PROTOTYPES
11906VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountAMD(
11907    VkCommandBuffer                             commandBuffer,
11908    VkBuffer                                    buffer,
11909    VkDeviceSize                                offset,
11910    VkBuffer                                    countBuffer,
11911    VkDeviceSize                                countBufferOffset,
11912    uint32_t                                    maxDrawCount,
11913    uint32_t                                    stride);
11914
11915VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD(
11916    VkCommandBuffer                             commandBuffer,
11917    VkBuffer                                    buffer,
11918    VkDeviceSize                                offset,
11919    VkBuffer                                    countBuffer,
11920    VkDeviceSize                                countBufferOffset,
11921    uint32_t                                    maxDrawCount,
11922    uint32_t                                    stride);
11923#endif
11924
11925
11926// VK_AMD_negative_viewport_height is a preprocessor guard. Do not pass it to API calls.
11927#define VK_AMD_negative_viewport_height 1
11928#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1
11929#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height"
11930
11931
11932// VK_AMD_gpu_shader_half_float is a preprocessor guard. Do not pass it to API calls.
11933#define VK_AMD_gpu_shader_half_float 1
11934#define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 2
11935#define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float"
11936
11937
11938// VK_AMD_shader_ballot is a preprocessor guard. Do not pass it to API calls.
11939#define VK_AMD_shader_ballot 1
11940#define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1
11941#define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot"
11942
11943
11944// VK_AMD_texture_gather_bias_lod is a preprocessor guard. Do not pass it to API calls.
11945#define VK_AMD_texture_gather_bias_lod 1
11946#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1
11947#define VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME "VK_AMD_texture_gather_bias_lod"
11948typedef struct VkTextureLODGatherFormatPropertiesAMD {
11949    VkStructureType    sType;
11950    void*              pNext;
11951    VkBool32           supportsTextureGatherLODBiasAMD;
11952} VkTextureLODGatherFormatPropertiesAMD;
11953
11954
11955
11956// VK_AMD_shader_info is a preprocessor guard. Do not pass it to API calls.
11957#define VK_AMD_shader_info 1
11958#define VK_AMD_SHADER_INFO_SPEC_VERSION   1
11959#define VK_AMD_SHADER_INFO_EXTENSION_NAME "VK_AMD_shader_info"
11960
11961typedef enum VkShaderInfoTypeAMD {
11962    VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0,
11963    VK_SHADER_INFO_TYPE_BINARY_AMD = 1,
11964    VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2,
11965    VK_SHADER_INFO_TYPE_MAX_ENUM_AMD = 0x7FFFFFFF
11966} VkShaderInfoTypeAMD;
11967typedef struct VkShaderResourceUsageAMD {
11968    uint32_t    numUsedVgprs;
11969    uint32_t    numUsedSgprs;
11970    uint32_t    ldsSizePerLocalWorkGroup;
11971    size_t      ldsUsageSizeInBytes;
11972    size_t      scratchMemUsageInBytes;
11973} VkShaderResourceUsageAMD;
11974
11975typedef struct VkShaderStatisticsInfoAMD {
11976    VkShaderStageFlags          shaderStageMask;
11977    VkShaderResourceUsageAMD    resourceUsage;
11978    uint32_t                    numPhysicalVgprs;
11979    uint32_t                    numPhysicalSgprs;
11980    uint32_t                    numAvailableVgprs;
11981    uint32_t                    numAvailableSgprs;
11982    uint32_t                    computeWorkGroupSize[3];
11983} VkShaderStatisticsInfoAMD;
11984
11985typedef VkResult (VKAPI_PTR *PFN_vkGetShaderInfoAMD)(VkDevice device, VkPipeline pipeline, VkShaderStageFlagBits shaderStage, VkShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo);
11986
11987#ifndef VK_NO_PROTOTYPES
11988VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInfoAMD(
11989    VkDevice                                    device,
11990    VkPipeline                                  pipeline,
11991    VkShaderStageFlagBits                       shaderStage,
11992    VkShaderInfoTypeAMD                         infoType,
11993    size_t*                                     pInfoSize,
11994    void*                                       pInfo);
11995#endif
11996
11997
11998// VK_AMD_shader_image_load_store_lod is a preprocessor guard. Do not pass it to API calls.
11999#define VK_AMD_shader_image_load_store_lod 1
12000#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1
12001#define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME "VK_AMD_shader_image_load_store_lod"
12002
12003
12004// VK_NV_corner_sampled_image is a preprocessor guard. Do not pass it to API calls.
12005#define VK_NV_corner_sampled_image 1
12006#define VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION 2
12007#define VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME "VK_NV_corner_sampled_image"
12008typedef struct VkPhysicalDeviceCornerSampledImageFeaturesNV {
12009    VkStructureType    sType;
12010    void*              pNext;
12011    VkBool32           cornerSampledImage;
12012} VkPhysicalDeviceCornerSampledImageFeaturesNV;
12013
12014
12015
12016// VK_IMG_format_pvrtc is a preprocessor guard. Do not pass it to API calls.
12017#define VK_IMG_format_pvrtc 1
12018#define VK_IMG_FORMAT_PVRTC_SPEC_VERSION  1
12019#define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc"
12020
12021
12022// VK_NV_external_memory_capabilities is a preprocessor guard. Do not pass it to API calls.
12023#define VK_NV_external_memory_capabilities 1
12024#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
12025#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities"
12026
12027typedef enum VkExternalMemoryHandleTypeFlagBitsNV {
12028    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,
12029    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,
12030    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,
12031    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,
12032    VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
12033} VkExternalMemoryHandleTypeFlagBitsNV;
12034typedef VkFlags VkExternalMemoryHandleTypeFlagsNV;
12035
12036typedef enum VkExternalMemoryFeatureFlagBitsNV {
12037    VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001,
12038    VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002,
12039    VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004,
12040    VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
12041} VkExternalMemoryFeatureFlagBitsNV;
12042typedef VkFlags VkExternalMemoryFeatureFlagsNV;
12043typedef struct VkExternalImageFormatPropertiesNV {
12044    VkImageFormatProperties              imageFormatProperties;
12045    VkExternalMemoryFeatureFlagsNV       externalMemoryFeatures;
12046    VkExternalMemoryHandleTypeFlagsNV    exportFromImportedHandleTypes;
12047    VkExternalMemoryHandleTypeFlagsNV    compatibleHandleTypes;
12048} VkExternalImageFormatPropertiesNV;
12049
12050typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
12051
12052#ifndef VK_NO_PROTOTYPES
12053VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
12054    VkPhysicalDevice                            physicalDevice,
12055    VkFormat                                    format,
12056    VkImageType                                 type,
12057    VkImageTiling                               tiling,
12058    VkImageUsageFlags                           usage,
12059    VkImageCreateFlags                          flags,
12060    VkExternalMemoryHandleTypeFlagsNV           externalHandleType,
12061    VkExternalImageFormatPropertiesNV*          pExternalImageFormatProperties);
12062#endif
12063
12064
12065// VK_NV_external_memory is a preprocessor guard. Do not pass it to API calls.
12066#define VK_NV_external_memory 1
12067#define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1
12068#define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory"
12069typedef struct VkExternalMemoryImageCreateInfoNV {
12070    VkStructureType                      sType;
12071    const void*                          pNext;
12072    VkExternalMemoryHandleTypeFlagsNV    handleTypes;
12073} VkExternalMemoryImageCreateInfoNV;
12074
12075typedef struct VkExportMemoryAllocateInfoNV {
12076    VkStructureType                      sType;
12077    const void*                          pNext;
12078    VkExternalMemoryHandleTypeFlagsNV    handleTypes;
12079} VkExportMemoryAllocateInfoNV;
12080
12081
12082
12083// VK_EXT_validation_flags is a preprocessor guard. Do not pass it to API calls.
12084#define VK_EXT_validation_flags 1
12085#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 3
12086#define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags"
12087
12088typedef enum VkValidationCheckEXT {
12089    VK_VALIDATION_CHECK_ALL_EXT = 0,
12090    VK_VALIDATION_CHECK_SHADERS_EXT = 1,
12091    VK_VALIDATION_CHECK_MAX_ENUM_EXT = 0x7FFFFFFF
12092} VkValidationCheckEXT;
12093typedef struct VkValidationFlagsEXT {
12094    VkStructureType                sType;
12095    const void*                    pNext;
12096    uint32_t                       disabledValidationCheckCount;
12097    const VkValidationCheckEXT*    pDisabledValidationChecks;
12098} VkValidationFlagsEXT;
12099
12100
12101
12102// VK_EXT_shader_subgroup_ballot is a preprocessor guard. Do not pass it to API calls.
12103#define VK_EXT_shader_subgroup_ballot 1
12104#define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1
12105#define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot"
12106
12107
12108// VK_EXT_shader_subgroup_vote is a preprocessor guard. Do not pass it to API calls.
12109#define VK_EXT_shader_subgroup_vote 1
12110#define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1
12111#define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote"
12112
12113
12114// VK_EXT_texture_compression_astc_hdr is a preprocessor guard. Do not pass it to API calls.
12115#define VK_EXT_texture_compression_astc_hdr 1
12116#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_SPEC_VERSION 1
12117#define VK_EXT_TEXTURE_COMPRESSION_ASTC_HDR_EXTENSION_NAME "VK_EXT_texture_compression_astc_hdr"
12118typedef VkPhysicalDeviceTextureCompressionASTCHDRFeatures VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT;
12119
12120
12121
12122// VK_EXT_astc_decode_mode is a preprocessor guard. Do not pass it to API calls.
12123#define VK_EXT_astc_decode_mode 1
12124#define VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION 1
12125#define VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME "VK_EXT_astc_decode_mode"
12126typedef struct VkImageViewASTCDecodeModeEXT {
12127    VkStructureType    sType;
12128    const void*        pNext;
12129    VkFormat           decodeMode;
12130} VkImageViewASTCDecodeModeEXT;
12131
12132typedef struct VkPhysicalDeviceASTCDecodeFeaturesEXT {
12133    VkStructureType    sType;
12134    void*              pNext;
12135    VkBool32           decodeModeSharedExponent;
12136} VkPhysicalDeviceASTCDecodeFeaturesEXT;
12137
12138
12139
12140// VK_EXT_pipeline_robustness is a preprocessor guard. Do not pass it to API calls.
12141#define VK_EXT_pipeline_robustness 1
12142#define VK_EXT_PIPELINE_ROBUSTNESS_SPEC_VERSION 1
12143#define VK_EXT_PIPELINE_ROBUSTNESS_EXTENSION_NAME "VK_EXT_pipeline_robustness"
12144
12145typedef enum VkPipelineRobustnessBufferBehaviorEXT {
12146    VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DEVICE_DEFAULT_EXT = 0,
12147    VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_DISABLED_EXT = 1,
12148    VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_EXT = 2,
12149    VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_ROBUST_BUFFER_ACCESS_2_EXT = 3,
12150    VK_PIPELINE_ROBUSTNESS_BUFFER_BEHAVIOR_MAX_ENUM_EXT = 0x7FFFFFFF
12151} VkPipelineRobustnessBufferBehaviorEXT;
12152
12153typedef enum VkPipelineRobustnessImageBehaviorEXT {
12154    VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DEVICE_DEFAULT_EXT = 0,
12155    VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_DISABLED_EXT = 1,
12156    VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_EXT = 2,
12157    VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_ROBUST_IMAGE_ACCESS_2_EXT = 3,
12158    VK_PIPELINE_ROBUSTNESS_IMAGE_BEHAVIOR_MAX_ENUM_EXT = 0x7FFFFFFF
12159} VkPipelineRobustnessImageBehaviorEXT;
12160typedef struct VkPhysicalDevicePipelineRobustnessFeaturesEXT {
12161    VkStructureType    sType;
12162    void*              pNext;
12163    VkBool32           pipelineRobustness;
12164} VkPhysicalDevicePipelineRobustnessFeaturesEXT;
12165
12166typedef struct VkPhysicalDevicePipelineRobustnessPropertiesEXT {
12167    VkStructureType                          sType;
12168    void*                                    pNext;
12169    VkPipelineRobustnessBufferBehaviorEXT    defaultRobustnessStorageBuffers;
12170    VkPipelineRobustnessBufferBehaviorEXT    defaultRobustnessUniformBuffers;
12171    VkPipelineRobustnessBufferBehaviorEXT    defaultRobustnessVertexInputs;
12172    VkPipelineRobustnessImageBehaviorEXT     defaultRobustnessImages;
12173} VkPhysicalDevicePipelineRobustnessPropertiesEXT;
12174
12175typedef struct VkPipelineRobustnessCreateInfoEXT {
12176    VkStructureType                          sType;
12177    const void*                              pNext;
12178    VkPipelineRobustnessBufferBehaviorEXT    storageBuffers;
12179    VkPipelineRobustnessBufferBehaviorEXT    uniformBuffers;
12180    VkPipelineRobustnessBufferBehaviorEXT    vertexInputs;
12181    VkPipelineRobustnessImageBehaviorEXT     images;
12182} VkPipelineRobustnessCreateInfoEXT;
12183
12184
12185
12186// VK_EXT_conditional_rendering is a preprocessor guard. Do not pass it to API calls.
12187#define VK_EXT_conditional_rendering 1
12188#define VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION 2
12189#define VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME "VK_EXT_conditional_rendering"
12190
12191typedef enum VkConditionalRenderingFlagBitsEXT {
12192    VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 0x00000001,
12193    VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
12194} VkConditionalRenderingFlagBitsEXT;
12195typedef VkFlags VkConditionalRenderingFlagsEXT;
12196typedef struct VkConditionalRenderingBeginInfoEXT {
12197    VkStructureType                   sType;
12198    const void*                       pNext;
12199    VkBuffer                          buffer;
12200    VkDeviceSize                      offset;
12201    VkConditionalRenderingFlagsEXT    flags;
12202} VkConditionalRenderingBeginInfoEXT;
12203
12204typedef struct VkPhysicalDeviceConditionalRenderingFeaturesEXT {
12205    VkStructureType    sType;
12206    void*              pNext;
12207    VkBool32           conditionalRendering;
12208    VkBool32           inheritedConditionalRendering;
12209} VkPhysicalDeviceConditionalRenderingFeaturesEXT;
12210
12211typedef struct VkCommandBufferInheritanceConditionalRenderingInfoEXT {
12212    VkStructureType    sType;
12213    const void*        pNext;
12214    VkBool32           conditionalRenderingEnable;
12215} VkCommandBufferInheritanceConditionalRenderingInfoEXT;
12216
12217typedef void (VKAPI_PTR *PFN_vkCmdBeginConditionalRenderingEXT)(VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin);
12218typedef void (VKAPI_PTR *PFN_vkCmdEndConditionalRenderingEXT)(VkCommandBuffer commandBuffer);
12219
12220#ifndef VK_NO_PROTOTYPES
12221VKAPI_ATTR void VKAPI_CALL vkCmdBeginConditionalRenderingEXT(
12222    VkCommandBuffer                             commandBuffer,
12223    const VkConditionalRenderingBeginInfoEXT*   pConditionalRenderingBegin);
12224
12225VKAPI_ATTR void VKAPI_CALL vkCmdEndConditionalRenderingEXT(
12226    VkCommandBuffer                             commandBuffer);
12227#endif
12228
12229
12230// VK_NV_clip_space_w_scaling is a preprocessor guard. Do not pass it to API calls.
12231#define VK_NV_clip_space_w_scaling 1
12232#define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1
12233#define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling"
12234typedef struct VkViewportWScalingNV {
12235    float    xcoeff;
12236    float    ycoeff;
12237} VkViewportWScalingNV;
12238
12239typedef struct VkPipelineViewportWScalingStateCreateInfoNV {
12240    VkStructureType                sType;
12241    const void*                    pNext;
12242    VkBool32                       viewportWScalingEnable;
12243    uint32_t                       viewportCount;
12244    const VkViewportWScalingNV*    pViewportWScalings;
12245} VkPipelineViewportWScalingStateCreateInfoNV;
12246
12247typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings);
12248
12249#ifndef VK_NO_PROTOTYPES
12250VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWScalingNV(
12251    VkCommandBuffer                             commandBuffer,
12252    uint32_t                                    firstViewport,
12253    uint32_t                                    viewportCount,
12254    const VkViewportWScalingNV*                 pViewportWScalings);
12255#endif
12256
12257
12258// VK_EXT_direct_mode_display is a preprocessor guard. Do not pass it to API calls.
12259#define VK_EXT_direct_mode_display 1
12260#define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1
12261#define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display"
12262typedef VkResult (VKAPI_PTR *PFN_vkReleaseDisplayEXT)(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
12263
12264#ifndef VK_NO_PROTOTYPES
12265VKAPI_ATTR VkResult VKAPI_CALL vkReleaseDisplayEXT(
12266    VkPhysicalDevice                            physicalDevice,
12267    VkDisplayKHR                                display);
12268#endif
12269
12270
12271// VK_EXT_display_surface_counter is a preprocessor guard. Do not pass it to API calls.
12272#define VK_EXT_display_surface_counter 1
12273#define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1
12274#define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter"
12275
12276typedef enum VkSurfaceCounterFlagBitsEXT {
12277    VK_SURFACE_COUNTER_VBLANK_BIT_EXT = 0x00000001,
12278    VK_SURFACE_COUNTER_VBLANK_EXT = VK_SURFACE_COUNTER_VBLANK_BIT_EXT,
12279    VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
12280} VkSurfaceCounterFlagBitsEXT;
12281typedef VkFlags VkSurfaceCounterFlagsEXT;
12282typedef struct VkSurfaceCapabilities2EXT {
12283    VkStructureType                  sType;
12284    void*                            pNext;
12285    uint32_t                         minImageCount;
12286    uint32_t                         maxImageCount;
12287    VkExtent2D                       currentExtent;
12288    VkExtent2D                       minImageExtent;
12289    VkExtent2D                       maxImageExtent;
12290    uint32_t                         maxImageArrayLayers;
12291    VkSurfaceTransformFlagsKHR       supportedTransforms;
12292    VkSurfaceTransformFlagBitsKHR    currentTransform;
12293    VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
12294    VkImageUsageFlags                supportedUsageFlags;
12295    VkSurfaceCounterFlagsEXT         supportedSurfaceCounters;
12296} VkSurfaceCapabilities2EXT;
12297
12298typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
12299
12300#ifndef VK_NO_PROTOTYPES
12301VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT(
12302    VkPhysicalDevice                            physicalDevice,
12303    VkSurfaceKHR                                surface,
12304    VkSurfaceCapabilities2EXT*                  pSurfaceCapabilities);
12305#endif
12306
12307
12308// VK_EXT_display_control is a preprocessor guard. Do not pass it to API calls.
12309#define VK_EXT_display_control 1
12310#define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1
12311#define VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME "VK_EXT_display_control"
12312
12313typedef enum VkDisplayPowerStateEXT {
12314    VK_DISPLAY_POWER_STATE_OFF_EXT = 0,
12315    VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,
12316    VK_DISPLAY_POWER_STATE_ON_EXT = 2,
12317    VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 0x7FFFFFFF
12318} VkDisplayPowerStateEXT;
12319
12320typedef enum VkDeviceEventTypeEXT {
12321    VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0,
12322    VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
12323} VkDeviceEventTypeEXT;
12324
12325typedef enum VkDisplayEventTypeEXT {
12326    VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,
12327    VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
12328} VkDisplayEventTypeEXT;
12329typedef struct VkDisplayPowerInfoEXT {
12330    VkStructureType           sType;
12331    const void*               pNext;
12332    VkDisplayPowerStateEXT    powerState;
12333} VkDisplayPowerInfoEXT;
12334
12335typedef struct VkDeviceEventInfoEXT {
12336    VkStructureType         sType;
12337    const void*             pNext;
12338    VkDeviceEventTypeEXT    deviceEvent;
12339} VkDeviceEventInfoEXT;
12340
12341typedef struct VkDisplayEventInfoEXT {
12342    VkStructureType          sType;
12343    const void*              pNext;
12344    VkDisplayEventTypeEXT    displayEvent;
12345} VkDisplayEventInfoEXT;
12346
12347typedef struct VkSwapchainCounterCreateInfoEXT {
12348    VkStructureType             sType;
12349    const void*                 pNext;
12350    VkSurfaceCounterFlagsEXT    surfaceCounters;
12351} VkSwapchainCounterCreateInfoEXT;
12352
12353typedef VkResult (VKAPI_PTR *PFN_vkDisplayPowerControlEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
12354typedef VkResult (VKAPI_PTR *PFN_vkRegisterDeviceEventEXT)(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
12355typedef VkResult (VKAPI_PTR *PFN_vkRegisterDisplayEventEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
12356typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainCounterEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue);
12357
12358#ifndef VK_NO_PROTOTYPES
12359VKAPI_ATTR VkResult VKAPI_CALL vkDisplayPowerControlEXT(
12360    VkDevice                                    device,
12361    VkDisplayKHR                                display,
12362    const VkDisplayPowerInfoEXT*                pDisplayPowerInfo);
12363
12364VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDeviceEventEXT(
12365    VkDevice                                    device,
12366    const VkDeviceEventInfoEXT*                 pDeviceEventInfo,
12367    const VkAllocationCallbacks*                pAllocator,
12368    VkFence*                                    pFence);
12369
12370VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDisplayEventEXT(
12371    VkDevice                                    device,
12372    VkDisplayKHR                                display,
12373    const VkDisplayEventInfoEXT*                pDisplayEventInfo,
12374    const VkAllocationCallbacks*                pAllocator,
12375    VkFence*                                    pFence);
12376
12377VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainCounterEXT(
12378    VkDevice                                    device,
12379    VkSwapchainKHR                              swapchain,
12380    VkSurfaceCounterFlagBitsEXT                 counter,
12381    uint64_t*                                   pCounterValue);
12382#endif
12383
12384
12385// VK_GOOGLE_display_timing is a preprocessor guard. Do not pass it to API calls.
12386#define VK_GOOGLE_display_timing 1
12387#define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1
12388#define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing"
12389typedef struct VkRefreshCycleDurationGOOGLE {
12390    uint64_t    refreshDuration;
12391} VkRefreshCycleDurationGOOGLE;
12392
12393typedef struct VkPastPresentationTimingGOOGLE {
12394    uint32_t    presentID;
12395    uint64_t    desiredPresentTime;
12396    uint64_t    actualPresentTime;
12397    uint64_t    earliestPresentTime;
12398    uint64_t    presentMargin;
12399} VkPastPresentationTimingGOOGLE;
12400
12401typedef struct VkPresentTimeGOOGLE {
12402    uint32_t    presentID;
12403    uint64_t    desiredPresentTime;
12404} VkPresentTimeGOOGLE;
12405
12406typedef struct VkPresentTimesInfoGOOGLE {
12407    VkStructureType               sType;
12408    const void*                   pNext;
12409    uint32_t                      swapchainCount;
12410    const VkPresentTimeGOOGLE*    pTimes;
12411} VkPresentTimesInfoGOOGLE;
12412
12413typedef VkResult (VKAPI_PTR *PFN_vkGetRefreshCycleDurationGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
12414typedef VkResult (VKAPI_PTR *PFN_vkGetPastPresentationTimingGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings);
12415
12416#ifndef VK_NO_PROTOTYPES
12417VKAPI_ATTR VkResult VKAPI_CALL vkGetRefreshCycleDurationGOOGLE(
12418    VkDevice                                    device,
12419    VkSwapchainKHR                              swapchain,
12420    VkRefreshCycleDurationGOOGLE*               pDisplayTimingProperties);
12421
12422VKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingGOOGLE(
12423    VkDevice                                    device,
12424    VkSwapchainKHR                              swapchain,
12425    uint32_t*                                   pPresentationTimingCount,
12426    VkPastPresentationTimingGOOGLE*             pPresentationTimings);
12427#endif
12428
12429
12430// VK_NV_sample_mask_override_coverage is a preprocessor guard. Do not pass it to API calls.
12431#define VK_NV_sample_mask_override_coverage 1
12432#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1
12433#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage"
12434
12435
12436// VK_NV_geometry_shader_passthrough is a preprocessor guard. Do not pass it to API calls.
12437#define VK_NV_geometry_shader_passthrough 1
12438#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1
12439#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough"
12440
12441
12442// VK_NV_viewport_array2 is a preprocessor guard. Do not pass it to API calls.
12443#define VK_NV_viewport_array2 1
12444#define VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION 1
12445#define VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME "VK_NV_viewport_array2"
12446#define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION VK_NV_VIEWPORT_ARRAY_2_SPEC_VERSION
12447#define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME VK_NV_VIEWPORT_ARRAY_2_EXTENSION_NAME
12448
12449
12450// VK_NVX_multiview_per_view_attributes is a preprocessor guard. Do not pass it to API calls.
12451#define VK_NVX_multiview_per_view_attributes 1
12452#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1
12453#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes"
12454typedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
12455    VkStructureType    sType;
12456    void*              pNext;
12457    VkBool32           perViewPositionAllComponents;
12458} VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
12459
12460
12461
12462// VK_NV_viewport_swizzle is a preprocessor guard. Do not pass it to API calls.
12463#define VK_NV_viewport_swizzle 1
12464#define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1
12465#define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle"
12466
12467typedef enum VkViewportCoordinateSwizzleNV {
12468    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0,
12469    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1,
12470    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2,
12471    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3,
12472    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4,
12473    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5,
12474    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6,
12475    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7,
12476    VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 0x7FFFFFFF
12477} VkViewportCoordinateSwizzleNV;
12478typedef VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV;
12479typedef struct VkViewportSwizzleNV {
12480    VkViewportCoordinateSwizzleNV    x;
12481    VkViewportCoordinateSwizzleNV    y;
12482    VkViewportCoordinateSwizzleNV    z;
12483    VkViewportCoordinateSwizzleNV    w;
12484} VkViewportSwizzleNV;
12485
12486typedef struct VkPipelineViewportSwizzleStateCreateInfoNV {
12487    VkStructureType                                sType;
12488    const void*                                    pNext;
12489    VkPipelineViewportSwizzleStateCreateFlagsNV    flags;
12490    uint32_t                                       viewportCount;
12491    const VkViewportSwizzleNV*                     pViewportSwizzles;
12492} VkPipelineViewportSwizzleStateCreateInfoNV;
12493
12494
12495
12496// VK_EXT_discard_rectangles is a preprocessor guard. Do not pass it to API calls.
12497#define VK_EXT_discard_rectangles 1
12498#define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 2
12499#define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
12500
12501typedef enum VkDiscardRectangleModeEXT {
12502    VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,
12503    VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,
12504    VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
12505} VkDiscardRectangleModeEXT;
12506typedef VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT;
12507typedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT {
12508    VkStructureType    sType;
12509    void*              pNext;
12510    uint32_t           maxDiscardRectangles;
12511} VkPhysicalDeviceDiscardRectanglePropertiesEXT;
12512
12513typedef struct VkPipelineDiscardRectangleStateCreateInfoEXT {
12514    VkStructureType                                  sType;
12515    const void*                                      pNext;
12516    VkPipelineDiscardRectangleStateCreateFlagsEXT    flags;
12517    VkDiscardRectangleModeEXT                        discardRectangleMode;
12518    uint32_t                                         discardRectangleCount;
12519    const VkRect2D*                                  pDiscardRectangles;
12520} VkPipelineDiscardRectangleStateCreateInfoEXT;
12521
12522typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEXT)(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles);
12523typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 discardRectangleEnable);
12524typedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleModeEXT)(VkCommandBuffer commandBuffer, VkDiscardRectangleModeEXT discardRectangleMode);
12525
12526#ifndef VK_NO_PROTOTYPES
12527VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT(
12528    VkCommandBuffer                             commandBuffer,
12529    uint32_t                                    firstDiscardRectangle,
12530    uint32_t                                    discardRectangleCount,
12531    const VkRect2D*                             pDiscardRectangles);
12532
12533VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEnableEXT(
12534    VkCommandBuffer                             commandBuffer,
12535    VkBool32                                    discardRectangleEnable);
12536
12537VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleModeEXT(
12538    VkCommandBuffer                             commandBuffer,
12539    VkDiscardRectangleModeEXT                   discardRectangleMode);
12540#endif
12541
12542
12543// VK_EXT_conservative_rasterization is a preprocessor guard. Do not pass it to API calls.
12544#define VK_EXT_conservative_rasterization 1
12545#define VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION 1
12546#define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME "VK_EXT_conservative_rasterization"
12547
12548typedef enum VkConservativeRasterizationModeEXT {
12549    VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0,
12550    VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1,
12551    VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2,
12552    VK_CONSERVATIVE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
12553} VkConservativeRasterizationModeEXT;
12554typedef VkFlags VkPipelineRasterizationConservativeStateCreateFlagsEXT;
12555typedef struct VkPhysicalDeviceConservativeRasterizationPropertiesEXT {
12556    VkStructureType    sType;
12557    void*              pNext;
12558    float              primitiveOverestimationSize;
12559    float              maxExtraPrimitiveOverestimationSize;
12560    float              extraPrimitiveOverestimationSizeGranularity;
12561    VkBool32           primitiveUnderestimation;
12562    VkBool32           conservativePointAndLineRasterization;
12563    VkBool32           degenerateTrianglesRasterized;
12564    VkBool32           degenerateLinesRasterized;
12565    VkBool32           fullyCoveredFragmentShaderInputVariable;
12566    VkBool32           conservativeRasterizationPostDepthCoverage;
12567} VkPhysicalDeviceConservativeRasterizationPropertiesEXT;
12568
12569typedef struct VkPipelineRasterizationConservativeStateCreateInfoEXT {
12570    VkStructureType                                           sType;
12571    const void*                                               pNext;
12572    VkPipelineRasterizationConservativeStateCreateFlagsEXT    flags;
12573    VkConservativeRasterizationModeEXT                        conservativeRasterizationMode;
12574    float                                                     extraPrimitiveOverestimationSize;
12575} VkPipelineRasterizationConservativeStateCreateInfoEXT;
12576
12577
12578
12579// VK_EXT_depth_clip_enable is a preprocessor guard. Do not pass it to API calls.
12580#define VK_EXT_depth_clip_enable 1
12581#define VK_EXT_DEPTH_CLIP_ENABLE_SPEC_VERSION 1
12582#define VK_EXT_DEPTH_CLIP_ENABLE_EXTENSION_NAME "VK_EXT_depth_clip_enable"
12583typedef VkFlags VkPipelineRasterizationDepthClipStateCreateFlagsEXT;
12584typedef struct VkPhysicalDeviceDepthClipEnableFeaturesEXT {
12585    VkStructureType    sType;
12586    void*              pNext;
12587    VkBool32           depthClipEnable;
12588} VkPhysicalDeviceDepthClipEnableFeaturesEXT;
12589
12590typedef struct VkPipelineRasterizationDepthClipStateCreateInfoEXT {
12591    VkStructureType                                        sType;
12592    const void*                                            pNext;
12593    VkPipelineRasterizationDepthClipStateCreateFlagsEXT    flags;
12594    VkBool32                                               depthClipEnable;
12595} VkPipelineRasterizationDepthClipStateCreateInfoEXT;
12596
12597
12598
12599// VK_EXT_swapchain_colorspace is a preprocessor guard. Do not pass it to API calls.
12600#define VK_EXT_swapchain_colorspace 1
12601#define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 4
12602#define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace"
12603
12604
12605// VK_EXT_hdr_metadata is a preprocessor guard. Do not pass it to API calls.
12606#define VK_EXT_hdr_metadata 1
12607#define VK_EXT_HDR_METADATA_SPEC_VERSION  2
12608#define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata"
12609typedef struct VkXYColorEXT {
12610    float    x;
12611    float    y;
12612} VkXYColorEXT;
12613
12614typedef struct VkHdrMetadataEXT {
12615    VkStructureType    sType;
12616    const void*        pNext;
12617    VkXYColorEXT       displayPrimaryRed;
12618    VkXYColorEXT       displayPrimaryGreen;
12619    VkXYColorEXT       displayPrimaryBlue;
12620    VkXYColorEXT       whitePoint;
12621    float              maxLuminance;
12622    float              minLuminance;
12623    float              maxContentLightLevel;
12624    float              maxFrameAverageLightLevel;
12625} VkHdrMetadataEXT;
12626
12627typedef void (VKAPI_PTR *PFN_vkSetHdrMetadataEXT)(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata);
12628
12629#ifndef VK_NO_PROTOTYPES
12630VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT(
12631    VkDevice                                    device,
12632    uint32_t                                    swapchainCount,
12633    const VkSwapchainKHR*                       pSwapchains,
12634    const VkHdrMetadataEXT*                     pMetadata);
12635#endif
12636
12637
12638// VK_IMG_relaxed_line_rasterization is a preprocessor guard. Do not pass it to API calls.
12639#define VK_IMG_relaxed_line_rasterization 1
12640#define VK_IMG_RELAXED_LINE_RASTERIZATION_SPEC_VERSION 1
12641#define VK_IMG_RELAXED_LINE_RASTERIZATION_EXTENSION_NAME "VK_IMG_relaxed_line_rasterization"
12642typedef struct VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG {
12643    VkStructureType    sType;
12644    void*              pNext;
12645    VkBool32           relaxedLineRasterization;
12646} VkPhysicalDeviceRelaxedLineRasterizationFeaturesIMG;
12647
12648
12649
12650// VK_EXT_external_memory_dma_buf is a preprocessor guard. Do not pass it to API calls.
12651#define VK_EXT_external_memory_dma_buf 1
12652#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1
12653#define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME "VK_EXT_external_memory_dma_buf"
12654
12655
12656// VK_EXT_queue_family_foreign is a preprocessor guard. Do not pass it to API calls.
12657#define VK_EXT_queue_family_foreign 1
12658#define VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION 1
12659#define VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME "VK_EXT_queue_family_foreign"
12660#define VK_QUEUE_FAMILY_FOREIGN_EXT       (~2U)
12661
12662
12663// VK_EXT_debug_utils is a preprocessor guard. Do not pass it to API calls.
12664#define VK_EXT_debug_utils 1
12665VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugUtilsMessengerEXT)
12666#define VK_EXT_DEBUG_UTILS_SPEC_VERSION   2
12667#define VK_EXT_DEBUG_UTILS_EXTENSION_NAME "VK_EXT_debug_utils"
12668typedef VkFlags VkDebugUtilsMessengerCallbackDataFlagsEXT;
12669
12670typedef enum VkDebugUtilsMessageSeverityFlagBitsEXT {
12671    VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001,
12672    VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 0x00000010,
12673    VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0x00000100,
12674    VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0x00001000,
12675    VK_DEBUG_UTILS_MESSAGE_SEVERITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
12676} VkDebugUtilsMessageSeverityFlagBitsEXT;
12677
12678typedef enum VkDebugUtilsMessageTypeFlagBitsEXT {
12679    VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0x00000001,
12680    VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0x00000002,
12681    VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004,
12682    VK_DEBUG_UTILS_MESSAGE_TYPE_DEVICE_ADDRESS_BINDING_BIT_EXT = 0x00000008,
12683    VK_DEBUG_UTILS_MESSAGE_TYPE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
12684} VkDebugUtilsMessageTypeFlagBitsEXT;
12685typedef VkFlags VkDebugUtilsMessageTypeFlagsEXT;
12686typedef VkFlags VkDebugUtilsMessageSeverityFlagsEXT;
12687typedef VkFlags VkDebugUtilsMessengerCreateFlagsEXT;
12688typedef struct VkDebugUtilsLabelEXT {
12689    VkStructureType    sType;
12690    const void*        pNext;
12691    const char*        pLabelName;
12692    float              color[4];
12693} VkDebugUtilsLabelEXT;
12694
12695typedef struct VkDebugUtilsObjectNameInfoEXT {
12696    VkStructureType    sType;
12697    const void*        pNext;
12698    VkObjectType       objectType;
12699    uint64_t           objectHandle;
12700    const char*        pObjectName;
12701} VkDebugUtilsObjectNameInfoEXT;
12702
12703typedef struct VkDebugUtilsMessengerCallbackDataEXT {
12704    VkStructureType                              sType;
12705    const void*                                  pNext;
12706    VkDebugUtilsMessengerCallbackDataFlagsEXT    flags;
12707    const char*                                  pMessageIdName;
12708    int32_t                                      messageIdNumber;
12709    const char*                                  pMessage;
12710    uint32_t                                     queueLabelCount;
12711    const VkDebugUtilsLabelEXT*                  pQueueLabels;
12712    uint32_t                                     cmdBufLabelCount;
12713    const VkDebugUtilsLabelEXT*                  pCmdBufLabels;
12714    uint32_t                                     objectCount;
12715    const VkDebugUtilsObjectNameInfoEXT*         pObjects;
12716} VkDebugUtilsMessengerCallbackDataEXT;
12717
12718typedef VkBool32 (VKAPI_PTR *PFN_vkDebugUtilsMessengerCallbackEXT)(
12719    VkDebugUtilsMessageSeverityFlagBitsEXT           messageSeverity,
12720    VkDebugUtilsMessageTypeFlagsEXT                  messageTypes,
12721    const VkDebugUtilsMessengerCallbackDataEXT*      pCallbackData,
12722    void*                                            pUserData);
12723
12724typedef struct VkDebugUtilsMessengerCreateInfoEXT {
12725    VkStructureType                         sType;
12726    const void*                             pNext;
12727    VkDebugUtilsMessengerCreateFlagsEXT     flags;
12728    VkDebugUtilsMessageSeverityFlagsEXT     messageSeverity;
12729    VkDebugUtilsMessageTypeFlagsEXT         messageType;
12730    PFN_vkDebugUtilsMessengerCallbackEXT    pfnUserCallback;
12731    void*                                   pUserData;
12732} VkDebugUtilsMessengerCreateInfoEXT;
12733
12734typedef struct VkDebugUtilsObjectTagInfoEXT {
12735    VkStructureType    sType;
12736    const void*        pNext;
12737    VkObjectType       objectType;
12738    uint64_t           objectHandle;
12739    uint64_t           tagName;
12740    size_t             tagSize;
12741    const void*        pTag;
12742} VkDebugUtilsObjectTagInfoEXT;
12743
12744typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectNameEXT)(VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo);
12745typedef VkResult (VKAPI_PTR *PFN_vkSetDebugUtilsObjectTagEXT)(VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo);
12746typedef void (VKAPI_PTR *PFN_vkQueueBeginDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);
12747typedef void (VKAPI_PTR *PFN_vkQueueEndDebugUtilsLabelEXT)(VkQueue queue);
12748typedef void (VKAPI_PTR *PFN_vkQueueInsertDebugUtilsLabelEXT)(VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo);
12749typedef void (VKAPI_PTR *PFN_vkCmdBeginDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);
12750typedef void (VKAPI_PTR *PFN_vkCmdEndDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer);
12751typedef void (VKAPI_PTR *PFN_vkCmdInsertDebugUtilsLabelEXT)(VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo);
12752typedef VkResult (VKAPI_PTR *PFN_vkCreateDebugUtilsMessengerEXT)(VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger);
12753typedef void (VKAPI_PTR *PFN_vkDestroyDebugUtilsMessengerEXT)(VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator);
12754typedef void (VKAPI_PTR *PFN_vkSubmitDebugUtilsMessageEXT)(VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
12755
12756#ifndef VK_NO_PROTOTYPES
12757VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectNameEXT(
12758    VkDevice                                    device,
12759    const VkDebugUtilsObjectNameInfoEXT*        pNameInfo);
12760
12761VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectTagEXT(
12762    VkDevice                                    device,
12763    const VkDebugUtilsObjectTagInfoEXT*         pTagInfo);
12764
12765VKAPI_ATTR void VKAPI_CALL vkQueueBeginDebugUtilsLabelEXT(
12766    VkQueue                                     queue,
12767    const VkDebugUtilsLabelEXT*                 pLabelInfo);
12768
12769VKAPI_ATTR void VKAPI_CALL vkQueueEndDebugUtilsLabelEXT(
12770    VkQueue                                     queue);
12771
12772VKAPI_ATTR void VKAPI_CALL vkQueueInsertDebugUtilsLabelEXT(
12773    VkQueue                                     queue,
12774    const VkDebugUtilsLabelEXT*                 pLabelInfo);
12775
12776VKAPI_ATTR void VKAPI_CALL vkCmdBeginDebugUtilsLabelEXT(
12777    VkCommandBuffer                             commandBuffer,
12778    const VkDebugUtilsLabelEXT*                 pLabelInfo);
12779
12780VKAPI_ATTR void VKAPI_CALL vkCmdEndDebugUtilsLabelEXT(
12781    VkCommandBuffer                             commandBuffer);
12782
12783VKAPI_ATTR void VKAPI_CALL vkCmdInsertDebugUtilsLabelEXT(
12784    VkCommandBuffer                             commandBuffer,
12785    const VkDebugUtilsLabelEXT*                 pLabelInfo);
12786
12787VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugUtilsMessengerEXT(
12788    VkInstance                                  instance,
12789    const VkDebugUtilsMessengerCreateInfoEXT*   pCreateInfo,
12790    const VkAllocationCallbacks*                pAllocator,
12791    VkDebugUtilsMessengerEXT*                   pMessenger);
12792
12793VKAPI_ATTR void VKAPI_CALL vkDestroyDebugUtilsMessengerEXT(
12794    VkInstance                                  instance,
12795    VkDebugUtilsMessengerEXT                    messenger,
12796    const VkAllocationCallbacks*                pAllocator);
12797
12798VKAPI_ATTR void VKAPI_CALL vkSubmitDebugUtilsMessageEXT(
12799    VkInstance                                  instance,
12800    VkDebugUtilsMessageSeverityFlagBitsEXT      messageSeverity,
12801    VkDebugUtilsMessageTypeFlagsEXT             messageTypes,
12802    const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData);
12803#endif
12804
12805
12806// VK_EXT_sampler_filter_minmax is a preprocessor guard. Do not pass it to API calls.
12807#define VK_EXT_sampler_filter_minmax 1
12808#define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 2
12809#define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
12810typedef VkSamplerReductionMode VkSamplerReductionModeEXT;
12811
12812typedef VkSamplerReductionModeCreateInfo VkSamplerReductionModeCreateInfoEXT;
12813
12814typedef VkPhysicalDeviceSamplerFilterMinmaxProperties VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT;
12815
12816
12817
12818// VK_AMD_gpu_shader_int16 is a preprocessor guard. Do not pass it to API calls.
12819#define VK_AMD_gpu_shader_int16 1
12820#define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 2
12821#define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME "VK_AMD_gpu_shader_int16"
12822
12823
12824// VK_AMD_mixed_attachment_samples is a preprocessor guard. Do not pass it to API calls.
12825#define VK_AMD_mixed_attachment_samples 1
12826#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION 1
12827#define VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME "VK_AMD_mixed_attachment_samples"
12828
12829
12830// VK_AMD_shader_fragment_mask is a preprocessor guard. Do not pass it to API calls.
12831#define VK_AMD_shader_fragment_mask 1
12832#define VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION 1
12833#define VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME "VK_AMD_shader_fragment_mask"
12834
12835
12836// VK_EXT_inline_uniform_block is a preprocessor guard. Do not pass it to API calls.
12837#define VK_EXT_inline_uniform_block 1
12838#define VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION 1
12839#define VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME "VK_EXT_inline_uniform_block"
12840typedef VkPhysicalDeviceInlineUniformBlockFeatures VkPhysicalDeviceInlineUniformBlockFeaturesEXT;
12841
12842typedef VkPhysicalDeviceInlineUniformBlockProperties VkPhysicalDeviceInlineUniformBlockPropertiesEXT;
12843
12844typedef VkWriteDescriptorSetInlineUniformBlock VkWriteDescriptorSetInlineUniformBlockEXT;
12845
12846typedef VkDescriptorPoolInlineUniformBlockCreateInfo VkDescriptorPoolInlineUniformBlockCreateInfoEXT;
12847
12848
12849
12850// VK_EXT_shader_stencil_export is a preprocessor guard. Do not pass it to API calls.
12851#define VK_EXT_shader_stencil_export 1
12852#define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1
12853#define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME "VK_EXT_shader_stencil_export"
12854
12855
12856// VK_EXT_sample_locations is a preprocessor guard. Do not pass it to API calls.
12857#define VK_EXT_sample_locations 1
12858#define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1
12859#define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations"
12860typedef struct VkSampleLocationEXT {
12861    float    x;
12862    float    y;
12863} VkSampleLocationEXT;
12864
12865typedef struct VkSampleLocationsInfoEXT {
12866    VkStructureType               sType;
12867    const void*                   pNext;
12868    VkSampleCountFlagBits         sampleLocationsPerPixel;
12869    VkExtent2D                    sampleLocationGridSize;
12870    uint32_t                      sampleLocationsCount;
12871    const VkSampleLocationEXT*    pSampleLocations;
12872} VkSampleLocationsInfoEXT;
12873
12874typedef struct VkAttachmentSampleLocationsEXT {
12875    uint32_t                    attachmentIndex;
12876    VkSampleLocationsInfoEXT    sampleLocationsInfo;
12877} VkAttachmentSampleLocationsEXT;
12878
12879typedef struct VkSubpassSampleLocationsEXT {
12880    uint32_t                    subpassIndex;
12881    VkSampleLocationsInfoEXT    sampleLocationsInfo;
12882} VkSubpassSampleLocationsEXT;
12883
12884typedef struct VkRenderPassSampleLocationsBeginInfoEXT {
12885    VkStructureType                          sType;
12886    const void*                              pNext;
12887    uint32_t                                 attachmentInitialSampleLocationsCount;
12888    const VkAttachmentSampleLocationsEXT*    pAttachmentInitialSampleLocations;
12889    uint32_t                                 postSubpassSampleLocationsCount;
12890    const VkSubpassSampleLocationsEXT*       pPostSubpassSampleLocations;
12891} VkRenderPassSampleLocationsBeginInfoEXT;
12892
12893typedef struct VkPipelineSampleLocationsStateCreateInfoEXT {
12894    VkStructureType             sType;
12895    const void*                 pNext;
12896    VkBool32                    sampleLocationsEnable;
12897    VkSampleLocationsInfoEXT    sampleLocationsInfo;
12898} VkPipelineSampleLocationsStateCreateInfoEXT;
12899
12900typedef struct VkPhysicalDeviceSampleLocationsPropertiesEXT {
12901    VkStructureType       sType;
12902    void*                 pNext;
12903    VkSampleCountFlags    sampleLocationSampleCounts;
12904    VkExtent2D            maxSampleLocationGridSize;
12905    float                 sampleLocationCoordinateRange[2];
12906    uint32_t              sampleLocationSubPixelBits;
12907    VkBool32              variableSampleLocations;
12908} VkPhysicalDeviceSampleLocationsPropertiesEXT;
12909
12910typedef struct VkMultisamplePropertiesEXT {
12911    VkStructureType    sType;
12912    void*              pNext;
12913    VkExtent2D         maxSampleLocationGridSize;
12914} VkMultisamplePropertiesEXT;
12915
12916typedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEXT)(VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo);
12917typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT)(VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties);
12918
12919#ifndef VK_NO_PROTOTYPES
12920VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleLocationsEXT(
12921    VkCommandBuffer                             commandBuffer,
12922    const VkSampleLocationsInfoEXT*             pSampleLocationsInfo);
12923
12924VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT(
12925    VkPhysicalDevice                            physicalDevice,
12926    VkSampleCountFlagBits                       samples,
12927    VkMultisamplePropertiesEXT*                 pMultisampleProperties);
12928#endif
12929
12930
12931// VK_EXT_blend_operation_advanced is a preprocessor guard. Do not pass it to API calls.
12932#define VK_EXT_blend_operation_advanced 1
12933#define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2
12934#define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
12935
12936typedef enum VkBlendOverlapEXT {
12937    VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0,
12938    VK_BLEND_OVERLAP_DISJOINT_EXT = 1,
12939    VK_BLEND_OVERLAP_CONJOINT_EXT = 2,
12940    VK_BLEND_OVERLAP_MAX_ENUM_EXT = 0x7FFFFFFF
12941} VkBlendOverlapEXT;
12942typedef struct VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
12943    VkStructureType    sType;
12944    void*              pNext;
12945    VkBool32           advancedBlendCoherentOperations;
12946} VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT;
12947
12948typedef struct VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
12949    VkStructureType    sType;
12950    void*              pNext;
12951    uint32_t           advancedBlendMaxColorAttachments;
12952    VkBool32           advancedBlendIndependentBlend;
12953    VkBool32           advancedBlendNonPremultipliedSrcColor;
12954    VkBool32           advancedBlendNonPremultipliedDstColor;
12955    VkBool32           advancedBlendCorrelatedOverlap;
12956    VkBool32           advancedBlendAllOperations;
12957} VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT;
12958
12959typedef struct VkPipelineColorBlendAdvancedStateCreateInfoEXT {
12960    VkStructureType      sType;
12961    const void*          pNext;
12962    VkBool32             srcPremultiplied;
12963    VkBool32             dstPremultiplied;
12964    VkBlendOverlapEXT    blendOverlap;
12965} VkPipelineColorBlendAdvancedStateCreateInfoEXT;
12966
12967
12968
12969// VK_NV_fragment_coverage_to_color is a preprocessor guard. Do not pass it to API calls.
12970#define VK_NV_fragment_coverage_to_color 1
12971#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1
12972#define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME "VK_NV_fragment_coverage_to_color"
12973typedef VkFlags VkPipelineCoverageToColorStateCreateFlagsNV;
12974typedef struct VkPipelineCoverageToColorStateCreateInfoNV {
12975    VkStructureType                                sType;
12976    const void*                                    pNext;
12977    VkPipelineCoverageToColorStateCreateFlagsNV    flags;
12978    VkBool32                                       coverageToColorEnable;
12979    uint32_t                                       coverageToColorLocation;
12980} VkPipelineCoverageToColorStateCreateInfoNV;
12981
12982
12983
12984// VK_NV_framebuffer_mixed_samples is a preprocessor guard. Do not pass it to API calls.
12985#define VK_NV_framebuffer_mixed_samples 1
12986#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1
12987#define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME "VK_NV_framebuffer_mixed_samples"
12988
12989typedef enum VkCoverageModulationModeNV {
12990    VK_COVERAGE_MODULATION_MODE_NONE_NV = 0,
12991    VK_COVERAGE_MODULATION_MODE_RGB_NV = 1,
12992    VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2,
12993    VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3,
12994    VK_COVERAGE_MODULATION_MODE_MAX_ENUM_NV = 0x7FFFFFFF
12995} VkCoverageModulationModeNV;
12996typedef VkFlags VkPipelineCoverageModulationStateCreateFlagsNV;
12997typedef struct VkPipelineCoverageModulationStateCreateInfoNV {
12998    VkStructureType                                   sType;
12999    const void*                                       pNext;
13000    VkPipelineCoverageModulationStateCreateFlagsNV    flags;
13001    VkCoverageModulationModeNV                        coverageModulationMode;
13002    VkBool32                                          coverageModulationTableEnable;
13003    uint32_t                                          coverageModulationTableCount;
13004    const float*                                      pCoverageModulationTable;
13005} VkPipelineCoverageModulationStateCreateInfoNV;
13006
13007
13008
13009// VK_NV_fill_rectangle is a preprocessor guard. Do not pass it to API calls.
13010#define VK_NV_fill_rectangle 1
13011#define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1
13012#define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle"
13013
13014
13015// VK_NV_shader_sm_builtins is a preprocessor guard. Do not pass it to API calls.
13016#define VK_NV_shader_sm_builtins 1
13017#define VK_NV_SHADER_SM_BUILTINS_SPEC_VERSION 1
13018#define VK_NV_SHADER_SM_BUILTINS_EXTENSION_NAME "VK_NV_shader_sm_builtins"
13019typedef struct VkPhysicalDeviceShaderSMBuiltinsPropertiesNV {
13020    VkStructureType    sType;
13021    void*              pNext;
13022    uint32_t           shaderSMCount;
13023    uint32_t           shaderWarpsPerSM;
13024} VkPhysicalDeviceShaderSMBuiltinsPropertiesNV;
13025
13026typedef struct VkPhysicalDeviceShaderSMBuiltinsFeaturesNV {
13027    VkStructureType    sType;
13028    void*              pNext;
13029    VkBool32           shaderSMBuiltins;
13030} VkPhysicalDeviceShaderSMBuiltinsFeaturesNV;
13031
13032
13033
13034// VK_EXT_post_depth_coverage is a preprocessor guard. Do not pass it to API calls.
13035#define VK_EXT_post_depth_coverage 1
13036#define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1
13037#define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage"
13038
13039
13040// VK_EXT_image_drm_format_modifier is a preprocessor guard. Do not pass it to API calls.
13041#define VK_EXT_image_drm_format_modifier 1
13042#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION 2
13043#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME "VK_EXT_image_drm_format_modifier"
13044typedef struct VkDrmFormatModifierPropertiesEXT {
13045    uint64_t                drmFormatModifier;
13046    uint32_t                drmFormatModifierPlaneCount;
13047    VkFormatFeatureFlags    drmFormatModifierTilingFeatures;
13048} VkDrmFormatModifierPropertiesEXT;
13049
13050typedef struct VkDrmFormatModifierPropertiesListEXT {
13051    VkStructureType                      sType;
13052    void*                                pNext;
13053    uint32_t                             drmFormatModifierCount;
13054    VkDrmFormatModifierPropertiesEXT*    pDrmFormatModifierProperties;
13055} VkDrmFormatModifierPropertiesListEXT;
13056
13057typedef struct VkPhysicalDeviceImageDrmFormatModifierInfoEXT {
13058    VkStructureType    sType;
13059    const void*        pNext;
13060    uint64_t           drmFormatModifier;
13061    VkSharingMode      sharingMode;
13062    uint32_t           queueFamilyIndexCount;
13063    const uint32_t*    pQueueFamilyIndices;
13064} VkPhysicalDeviceImageDrmFormatModifierInfoEXT;
13065
13066typedef struct VkImageDrmFormatModifierListCreateInfoEXT {
13067    VkStructureType    sType;
13068    const void*        pNext;
13069    uint32_t           drmFormatModifierCount;
13070    const uint64_t*    pDrmFormatModifiers;
13071} VkImageDrmFormatModifierListCreateInfoEXT;
13072
13073typedef struct VkImageDrmFormatModifierExplicitCreateInfoEXT {
13074    VkStructureType               sType;
13075    const void*                   pNext;
13076    uint64_t                      drmFormatModifier;
13077    uint32_t                      drmFormatModifierPlaneCount;
13078    const VkSubresourceLayout*    pPlaneLayouts;
13079} VkImageDrmFormatModifierExplicitCreateInfoEXT;
13080
13081typedef struct VkImageDrmFormatModifierPropertiesEXT {
13082    VkStructureType    sType;
13083    void*              pNext;
13084    uint64_t           drmFormatModifier;
13085} VkImageDrmFormatModifierPropertiesEXT;
13086
13087typedef struct VkDrmFormatModifierProperties2EXT {
13088    uint64_t                 drmFormatModifier;
13089    uint32_t                 drmFormatModifierPlaneCount;
13090    VkFormatFeatureFlags2    drmFormatModifierTilingFeatures;
13091} VkDrmFormatModifierProperties2EXT;
13092
13093typedef struct VkDrmFormatModifierPropertiesList2EXT {
13094    VkStructureType                       sType;
13095    void*                                 pNext;
13096    uint32_t                              drmFormatModifierCount;
13097    VkDrmFormatModifierProperties2EXT*    pDrmFormatModifierProperties;
13098} VkDrmFormatModifierPropertiesList2EXT;
13099
13100typedef VkResult (VKAPI_PTR *PFN_vkGetImageDrmFormatModifierPropertiesEXT)(VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties);
13101
13102#ifndef VK_NO_PROTOTYPES
13103VKAPI_ATTR VkResult VKAPI_CALL vkGetImageDrmFormatModifierPropertiesEXT(
13104    VkDevice                                    device,
13105    VkImage                                     image,
13106    VkImageDrmFormatModifierPropertiesEXT*      pProperties);
13107#endif
13108
13109
13110// VK_EXT_validation_cache is a preprocessor guard. Do not pass it to API calls.
13111#define VK_EXT_validation_cache 1
13112VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkValidationCacheEXT)
13113#define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1
13114#define VK_EXT_VALIDATION_CACHE_EXTENSION_NAME "VK_EXT_validation_cache"
13115
13116typedef enum VkValidationCacheHeaderVersionEXT {
13117    VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1,
13118    VK_VALIDATION_CACHE_HEADER_VERSION_MAX_ENUM_EXT = 0x7FFFFFFF
13119} VkValidationCacheHeaderVersionEXT;
13120typedef VkFlags VkValidationCacheCreateFlagsEXT;
13121typedef struct VkValidationCacheCreateInfoEXT {
13122    VkStructureType                    sType;
13123    const void*                        pNext;
13124    VkValidationCacheCreateFlagsEXT    flags;
13125    size_t                             initialDataSize;
13126    const void*                        pInitialData;
13127} VkValidationCacheCreateInfoEXT;
13128
13129typedef struct VkShaderModuleValidationCacheCreateInfoEXT {
13130    VkStructureType         sType;
13131    const void*             pNext;
13132    VkValidationCacheEXT    validationCache;
13133} VkShaderModuleValidationCacheCreateInfoEXT;
13134
13135typedef VkResult (VKAPI_PTR *PFN_vkCreateValidationCacheEXT)(VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache);
13136typedef void (VKAPI_PTR *PFN_vkDestroyValidationCacheEXT)(VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator);
13137typedef VkResult (VKAPI_PTR *PFN_vkMergeValidationCachesEXT)(VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches);
13138typedef VkResult (VKAPI_PTR *PFN_vkGetValidationCacheDataEXT)(VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData);
13139
13140#ifndef VK_NO_PROTOTYPES
13141VKAPI_ATTR VkResult VKAPI_CALL vkCreateValidationCacheEXT(
13142    VkDevice                                    device,
13143    const VkValidationCacheCreateInfoEXT*       pCreateInfo,
13144    const VkAllocationCallbacks*                pAllocator,
13145    VkValidationCacheEXT*                       pValidationCache);
13146
13147VKAPI_ATTR void VKAPI_CALL vkDestroyValidationCacheEXT(
13148    VkDevice                                    device,
13149    VkValidationCacheEXT                        validationCache,
13150    const VkAllocationCallbacks*                pAllocator);
13151
13152VKAPI_ATTR VkResult VKAPI_CALL vkMergeValidationCachesEXT(
13153    VkDevice                                    device,
13154    VkValidationCacheEXT                        dstCache,
13155    uint32_t                                    srcCacheCount,
13156    const VkValidationCacheEXT*                 pSrcCaches);
13157
13158VKAPI_ATTR VkResult VKAPI_CALL vkGetValidationCacheDataEXT(
13159    VkDevice                                    device,
13160    VkValidationCacheEXT                        validationCache,
13161    size_t*                                     pDataSize,
13162    void*                                       pData);
13163#endif
13164
13165
13166// VK_EXT_descriptor_indexing is a preprocessor guard. Do not pass it to API calls.
13167#define VK_EXT_descriptor_indexing 1
13168#define VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION 2
13169#define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing"
13170typedef VkDescriptorBindingFlagBits VkDescriptorBindingFlagBitsEXT;
13171
13172typedef VkDescriptorBindingFlags VkDescriptorBindingFlagsEXT;
13173
13174typedef VkDescriptorSetLayoutBindingFlagsCreateInfo VkDescriptorSetLayoutBindingFlagsCreateInfoEXT;
13175
13176typedef VkPhysicalDeviceDescriptorIndexingFeatures VkPhysicalDeviceDescriptorIndexingFeaturesEXT;
13177
13178typedef VkPhysicalDeviceDescriptorIndexingProperties VkPhysicalDeviceDescriptorIndexingPropertiesEXT;
13179
13180typedef VkDescriptorSetVariableDescriptorCountAllocateInfo VkDescriptorSetVariableDescriptorCountAllocateInfoEXT;
13181
13182typedef VkDescriptorSetVariableDescriptorCountLayoutSupport VkDescriptorSetVariableDescriptorCountLayoutSupportEXT;
13183
13184
13185
13186// VK_EXT_shader_viewport_index_layer is a preprocessor guard. Do not pass it to API calls.
13187#define VK_EXT_shader_viewport_index_layer 1
13188#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION 1
13189#define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME "VK_EXT_shader_viewport_index_layer"
13190
13191
13192// VK_NV_shading_rate_image is a preprocessor guard. Do not pass it to API calls.
13193#define VK_NV_shading_rate_image 1
13194#define VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION 3
13195#define VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME "VK_NV_shading_rate_image"
13196
13197typedef enum VkShadingRatePaletteEntryNV {
13198    VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV = 0,
13199    VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV = 1,
13200    VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV = 2,
13201    VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV = 3,
13202    VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV = 4,
13203    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV = 5,
13204    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV = 6,
13205    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV = 7,
13206    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV = 8,
13207    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV = 9,
13208    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV = 10,
13209    VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV = 11,
13210    VK_SHADING_RATE_PALETTE_ENTRY_MAX_ENUM_NV = 0x7FFFFFFF
13211} VkShadingRatePaletteEntryNV;
13212
13213typedef enum VkCoarseSampleOrderTypeNV {
13214    VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV = 0,
13215    VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV = 1,
13216    VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV = 2,
13217    VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV = 3,
13218    VK_COARSE_SAMPLE_ORDER_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
13219} VkCoarseSampleOrderTypeNV;
13220typedef struct VkShadingRatePaletteNV {
13221    uint32_t                              shadingRatePaletteEntryCount;
13222    const VkShadingRatePaletteEntryNV*    pShadingRatePaletteEntries;
13223} VkShadingRatePaletteNV;
13224
13225typedef struct VkPipelineViewportShadingRateImageStateCreateInfoNV {
13226    VkStructureType                  sType;
13227    const void*                      pNext;
13228    VkBool32                         shadingRateImageEnable;
13229    uint32_t                         viewportCount;
13230    const VkShadingRatePaletteNV*    pShadingRatePalettes;
13231} VkPipelineViewportShadingRateImageStateCreateInfoNV;
13232
13233typedef struct VkPhysicalDeviceShadingRateImageFeaturesNV {
13234    VkStructureType    sType;
13235    void*              pNext;
13236    VkBool32           shadingRateImage;
13237    VkBool32           shadingRateCoarseSampleOrder;
13238} VkPhysicalDeviceShadingRateImageFeaturesNV;
13239
13240typedef struct VkPhysicalDeviceShadingRateImagePropertiesNV {
13241    VkStructureType    sType;
13242    void*              pNext;
13243    VkExtent2D         shadingRateTexelSize;
13244    uint32_t           shadingRatePaletteSize;
13245    uint32_t           shadingRateMaxCoarseSamples;
13246} VkPhysicalDeviceShadingRateImagePropertiesNV;
13247
13248typedef struct VkCoarseSampleLocationNV {
13249    uint32_t    pixelX;
13250    uint32_t    pixelY;
13251    uint32_t    sample;
13252} VkCoarseSampleLocationNV;
13253
13254typedef struct VkCoarseSampleOrderCustomNV {
13255    VkShadingRatePaletteEntryNV        shadingRate;
13256    uint32_t                           sampleCount;
13257    uint32_t                           sampleLocationCount;
13258    const VkCoarseSampleLocationNV*    pSampleLocations;
13259} VkCoarseSampleOrderCustomNV;
13260
13261typedef struct VkPipelineViewportCoarseSampleOrderStateCreateInfoNV {
13262    VkStructureType                       sType;
13263    const void*                           pNext;
13264    VkCoarseSampleOrderTypeNV             sampleOrderType;
13265    uint32_t                              customSampleOrderCount;
13266    const VkCoarseSampleOrderCustomNV*    pCustomSampleOrders;
13267} VkPipelineViewportCoarseSampleOrderStateCreateInfoNV;
13268
13269typedef void (VKAPI_PTR *PFN_vkCmdBindShadingRateImageNV)(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout);
13270typedef void (VKAPI_PTR *PFN_vkCmdSetViewportShadingRatePaletteNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes);
13271typedef void (VKAPI_PTR *PFN_vkCmdSetCoarseSampleOrderNV)(VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders);
13272
13273#ifndef VK_NO_PROTOTYPES
13274VKAPI_ATTR void VKAPI_CALL vkCmdBindShadingRateImageNV(
13275    VkCommandBuffer                             commandBuffer,
13276    VkImageView                                 imageView,
13277    VkImageLayout                               imageLayout);
13278
13279VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportShadingRatePaletteNV(
13280    VkCommandBuffer                             commandBuffer,
13281    uint32_t                                    firstViewport,
13282    uint32_t                                    viewportCount,
13283    const VkShadingRatePaletteNV*               pShadingRatePalettes);
13284
13285VKAPI_ATTR void VKAPI_CALL vkCmdSetCoarseSampleOrderNV(
13286    VkCommandBuffer                             commandBuffer,
13287    VkCoarseSampleOrderTypeNV                   sampleOrderType,
13288    uint32_t                                    customSampleOrderCount,
13289    const VkCoarseSampleOrderCustomNV*          pCustomSampleOrders);
13290#endif
13291
13292
13293// VK_NV_ray_tracing is a preprocessor guard. Do not pass it to API calls.
13294#define VK_NV_ray_tracing 1
13295VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureNV)
13296#define VK_NV_RAY_TRACING_SPEC_VERSION    3
13297#define VK_NV_RAY_TRACING_EXTENSION_NAME  "VK_NV_ray_tracing"
13298#define VK_SHADER_UNUSED_KHR              (~0U)
13299#define VK_SHADER_UNUSED_NV               VK_SHADER_UNUSED_KHR
13300
13301typedef enum VkRayTracingShaderGroupTypeKHR {
13302    VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR = 0,
13303    VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR = 1,
13304    VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR = 2,
13305    VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR,
13306    VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR,
13307    VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV = VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR,
13308    VK_RAY_TRACING_SHADER_GROUP_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
13309} VkRayTracingShaderGroupTypeKHR;
13310typedef VkRayTracingShaderGroupTypeKHR VkRayTracingShaderGroupTypeNV;
13311
13312
13313typedef enum VkGeometryTypeKHR {
13314    VK_GEOMETRY_TYPE_TRIANGLES_KHR = 0,
13315    VK_GEOMETRY_TYPE_AABBS_KHR = 1,
13316    VK_GEOMETRY_TYPE_INSTANCES_KHR = 2,
13317    VK_GEOMETRY_TYPE_TRIANGLES_NV = VK_GEOMETRY_TYPE_TRIANGLES_KHR,
13318    VK_GEOMETRY_TYPE_AABBS_NV = VK_GEOMETRY_TYPE_AABBS_KHR,
13319    VK_GEOMETRY_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
13320} VkGeometryTypeKHR;
13321typedef VkGeometryTypeKHR VkGeometryTypeNV;
13322
13323
13324typedef enum VkAccelerationStructureTypeKHR {
13325    VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR = 0,
13326    VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR = 1,
13327    VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR = 2,
13328    VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR,
13329    VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR,
13330    VK_ACCELERATION_STRUCTURE_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
13331} VkAccelerationStructureTypeKHR;
13332typedef VkAccelerationStructureTypeKHR VkAccelerationStructureTypeNV;
13333
13334
13335typedef enum VkCopyAccelerationStructureModeKHR {
13336    VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR = 0,
13337    VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR = 1,
13338    VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR = 2,
13339    VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR = 3,
13340    VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR,
13341    VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV = VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR,
13342    VK_COPY_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
13343} VkCopyAccelerationStructureModeKHR;
13344typedef VkCopyAccelerationStructureModeKHR VkCopyAccelerationStructureModeNV;
13345
13346
13347typedef enum VkAccelerationStructureMemoryRequirementsTypeNV {
13348    VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV = 0,
13349    VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV = 1,
13350    VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV = 2,
13351    VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
13352} VkAccelerationStructureMemoryRequirementsTypeNV;
13353
13354typedef enum VkGeometryFlagBitsKHR {
13355    VK_GEOMETRY_OPAQUE_BIT_KHR = 0x00000001,
13356    VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR = 0x00000002,
13357    VK_GEOMETRY_OPAQUE_BIT_NV = VK_GEOMETRY_OPAQUE_BIT_KHR,
13358    VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV = VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR,
13359    VK_GEOMETRY_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
13360} VkGeometryFlagBitsKHR;
13361typedef VkFlags VkGeometryFlagsKHR;
13362typedef VkGeometryFlagsKHR VkGeometryFlagsNV;
13363
13364typedef VkGeometryFlagBitsKHR VkGeometryFlagBitsNV;
13365
13366
13367typedef enum VkGeometryInstanceFlagBitsKHR {
13368    VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR = 0x00000001,
13369    VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR = 0x00000002,
13370    VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 0x00000004,
13371    VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 0x00000008,
13372    VK_GEOMETRY_INSTANCE_FORCE_OPACITY_MICROMAP_2_STATE_EXT = 0x00000010,
13373    VK_GEOMETRY_INSTANCE_DISABLE_OPACITY_MICROMAPS_EXT = 0x00000020,
13374    VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR = VK_GEOMETRY_INSTANCE_TRIANGLE_FLIP_FACING_BIT_KHR,
13375    VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV = VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR,
13376    VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR,
13377    VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV = VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR,
13378    VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV = VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR,
13379    VK_GEOMETRY_INSTANCE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
13380} VkGeometryInstanceFlagBitsKHR;
13381typedef VkFlags VkGeometryInstanceFlagsKHR;
13382typedef VkGeometryInstanceFlagsKHR VkGeometryInstanceFlagsNV;
13383
13384typedef VkGeometryInstanceFlagBitsKHR VkGeometryInstanceFlagBitsNV;
13385
13386
13387typedef enum VkBuildAccelerationStructureFlagBitsKHR {
13388    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR = 0x00000001,
13389    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR = 0x00000002,
13390    VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR = 0x00000004,
13391    VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR = 0x00000008,
13392    VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR = 0x00000010,
13393    VK_BUILD_ACCELERATION_STRUCTURE_MOTION_BIT_NV = 0x00000020,
13394    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_UPDATE_EXT = 0x00000040,
13395    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISABLE_OPACITY_MICROMAPS_EXT = 0x00000080,
13396    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_OPACITY_MICROMAP_DATA_UPDATE_EXT = 0x00000100,
13397#ifdef VK_ENABLE_BETA_EXTENSIONS
13398    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DISPLACEMENT_MICROMAP_UPDATE_NV = 0x00000200,
13399#endif
13400    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_DATA_ACCESS_KHR = 0x00000800,
13401    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR,
13402    VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR,
13403    VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR,
13404    VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR,
13405    VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV = VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR,
13406    VK_BUILD_ACCELERATION_STRUCTURE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
13407} VkBuildAccelerationStructureFlagBitsKHR;
13408typedef VkFlags VkBuildAccelerationStructureFlagsKHR;
13409typedef VkBuildAccelerationStructureFlagsKHR VkBuildAccelerationStructureFlagsNV;
13410
13411typedef VkBuildAccelerationStructureFlagBitsKHR VkBuildAccelerationStructureFlagBitsNV;
13412
13413typedef struct VkRayTracingShaderGroupCreateInfoNV {
13414    VkStructureType                   sType;
13415    const void*                       pNext;
13416    VkRayTracingShaderGroupTypeKHR    type;
13417    uint32_t                          generalShader;
13418    uint32_t                          closestHitShader;
13419    uint32_t                          anyHitShader;
13420    uint32_t                          intersectionShader;
13421} VkRayTracingShaderGroupCreateInfoNV;
13422
13423typedef struct VkRayTracingPipelineCreateInfoNV {
13424    VkStructureType                               sType;
13425    const void*                                   pNext;
13426    VkPipelineCreateFlags                         flags;
13427    uint32_t                                      stageCount;
13428    const VkPipelineShaderStageCreateInfo*        pStages;
13429    uint32_t                                      groupCount;
13430    const VkRayTracingShaderGroupCreateInfoNV*    pGroups;
13431    uint32_t                                      maxRecursionDepth;
13432    VkPipelineLayout                              layout;
13433    VkPipeline                                    basePipelineHandle;
13434    int32_t                                       basePipelineIndex;
13435} VkRayTracingPipelineCreateInfoNV;
13436
13437typedef struct VkGeometryTrianglesNV {
13438    VkStructureType    sType;
13439    const void*        pNext;
13440    VkBuffer           vertexData;
13441    VkDeviceSize       vertexOffset;
13442    uint32_t           vertexCount;
13443    VkDeviceSize       vertexStride;
13444    VkFormat           vertexFormat;
13445    VkBuffer           indexData;
13446    VkDeviceSize       indexOffset;
13447    uint32_t           indexCount;
13448    VkIndexType        indexType;
13449    VkBuffer           transformData;
13450    VkDeviceSize       transformOffset;
13451} VkGeometryTrianglesNV;
13452
13453typedef struct VkGeometryAABBNV {
13454    VkStructureType    sType;
13455    const void*        pNext;
13456    VkBuffer           aabbData;
13457    uint32_t           numAABBs;
13458    uint32_t           stride;
13459    VkDeviceSize       offset;
13460} VkGeometryAABBNV;
13461
13462typedef struct VkGeometryDataNV {
13463    VkGeometryTrianglesNV    triangles;
13464    VkGeometryAABBNV         aabbs;
13465} VkGeometryDataNV;
13466
13467typedef struct VkGeometryNV {
13468    VkStructureType       sType;
13469    const void*           pNext;
13470    VkGeometryTypeKHR     geometryType;
13471    VkGeometryDataNV      geometry;
13472    VkGeometryFlagsKHR    flags;
13473} VkGeometryNV;
13474
13475typedef struct VkAccelerationStructureInfoNV {
13476    VkStructureType                        sType;
13477    const void*                            pNext;
13478    VkAccelerationStructureTypeNV          type;
13479    VkBuildAccelerationStructureFlagsNV    flags;
13480    uint32_t                               instanceCount;
13481    uint32_t                               geometryCount;
13482    const VkGeometryNV*                    pGeometries;
13483} VkAccelerationStructureInfoNV;
13484
13485typedef struct VkAccelerationStructureCreateInfoNV {
13486    VkStructureType                  sType;
13487    const void*                      pNext;
13488    VkDeviceSize                     compactedSize;
13489    VkAccelerationStructureInfoNV    info;
13490} VkAccelerationStructureCreateInfoNV;
13491
13492typedef struct VkBindAccelerationStructureMemoryInfoNV {
13493    VkStructureType              sType;
13494    const void*                  pNext;
13495    VkAccelerationStructureNV    accelerationStructure;
13496    VkDeviceMemory               memory;
13497    VkDeviceSize                 memoryOffset;
13498    uint32_t                     deviceIndexCount;
13499    const uint32_t*              pDeviceIndices;
13500} VkBindAccelerationStructureMemoryInfoNV;
13501
13502typedef struct VkWriteDescriptorSetAccelerationStructureNV {
13503    VkStructureType                     sType;
13504    const void*                         pNext;
13505    uint32_t                            accelerationStructureCount;
13506    const VkAccelerationStructureNV*    pAccelerationStructures;
13507} VkWriteDescriptorSetAccelerationStructureNV;
13508
13509typedef struct VkAccelerationStructureMemoryRequirementsInfoNV {
13510    VkStructureType                                    sType;
13511    const void*                                        pNext;
13512    VkAccelerationStructureMemoryRequirementsTypeNV    type;
13513    VkAccelerationStructureNV                          accelerationStructure;
13514} VkAccelerationStructureMemoryRequirementsInfoNV;
13515
13516typedef struct VkPhysicalDeviceRayTracingPropertiesNV {
13517    VkStructureType    sType;
13518    void*              pNext;
13519    uint32_t           shaderGroupHandleSize;
13520    uint32_t           maxRecursionDepth;
13521    uint32_t           maxShaderGroupStride;
13522    uint32_t           shaderGroupBaseAlignment;
13523    uint64_t           maxGeometryCount;
13524    uint64_t           maxInstanceCount;
13525    uint64_t           maxTriangleCount;
13526    uint32_t           maxDescriptorSetAccelerationStructures;
13527} VkPhysicalDeviceRayTracingPropertiesNV;
13528
13529typedef struct VkTransformMatrixKHR {
13530    float    matrix[3][4];
13531} VkTransformMatrixKHR;
13532
13533typedef VkTransformMatrixKHR VkTransformMatrixNV;
13534
13535typedef struct VkAabbPositionsKHR {
13536    float    minX;
13537    float    minY;
13538    float    minZ;
13539    float    maxX;
13540    float    maxY;
13541    float    maxZ;
13542} VkAabbPositionsKHR;
13543
13544typedef VkAabbPositionsKHR VkAabbPositionsNV;
13545
13546typedef struct VkAccelerationStructureInstanceKHR {
13547    VkTransformMatrixKHR          transform;
13548    uint32_t                      instanceCustomIndex:24;
13549    uint32_t                      mask:8;
13550    uint32_t                      instanceShaderBindingTableRecordOffset:24;
13551    VkGeometryInstanceFlagsKHR    flags:8;
13552    uint64_t                      accelerationStructureReference;
13553} VkAccelerationStructureInstanceKHR;
13554
13555typedef VkAccelerationStructureInstanceKHR VkAccelerationStructureInstanceNV;
13556
13557typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureNV)(VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure);
13558typedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator);
13559typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureMemoryRequirementsNV)(VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements);
13560typedef VkResult (VKAPI_PTR *PFN_vkBindAccelerationStructureMemoryNV)(VkDevice device, uint32_t bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos);
13561typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructureNV)(VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* pInfo, VkBuffer instanceData, VkDeviceSize instanceOffset, VkBool32 update, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkBuffer scratch, VkDeviceSize scratchOffset);
13562typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureNV)(VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeKHR mode);
13563typedef 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);
13564typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesNV)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
13565typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData);
13566typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupHandlesNV)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData);
13567typedef VkResult (VKAPI_PTR *PFN_vkGetAccelerationStructureHandleNV)(VkDevice device, VkAccelerationStructureNV accelerationStructure, size_t dataSize, void* pData);
13568typedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructuresPropertiesNV)(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery);
13569typedef VkResult (VKAPI_PTR *PFN_vkCompileDeferredNV)(VkDevice device, VkPipeline pipeline, uint32_t shader);
13570
13571#ifndef VK_NO_PROTOTYPES
13572VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureNV(
13573    VkDevice                                    device,
13574    const VkAccelerationStructureCreateInfoNV*  pCreateInfo,
13575    const VkAllocationCallbacks*                pAllocator,
13576    VkAccelerationStructureNV*                  pAccelerationStructure);
13577
13578VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureNV(
13579    VkDevice                                    device,
13580    VkAccelerationStructureNV                   accelerationStructure,
13581    const VkAllocationCallbacks*                pAllocator);
13582
13583VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsNV(
13584    VkDevice                                    device,
13585    const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo,
13586    VkMemoryRequirements2KHR*                   pMemoryRequirements);
13587
13588VKAPI_ATTR VkResult VKAPI_CALL vkBindAccelerationStructureMemoryNV(
13589    VkDevice                                    device,
13590    uint32_t                                    bindInfoCount,
13591    const VkBindAccelerationStructureMemoryInfoNV* pBindInfos);
13592
13593VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructureNV(
13594    VkCommandBuffer                             commandBuffer,
13595    const VkAccelerationStructureInfoNV*        pInfo,
13596    VkBuffer                                    instanceData,
13597    VkDeviceSize                                instanceOffset,
13598    VkBool32                                    update,
13599    VkAccelerationStructureNV                   dst,
13600    VkAccelerationStructureNV                   src,
13601    VkBuffer                                    scratch,
13602    VkDeviceSize                                scratchOffset);
13603
13604VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureNV(
13605    VkCommandBuffer                             commandBuffer,
13606    VkAccelerationStructureNV                   dst,
13607    VkAccelerationStructureNV                   src,
13608    VkCopyAccelerationStructureModeKHR          mode);
13609
13610VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysNV(
13611    VkCommandBuffer                             commandBuffer,
13612    VkBuffer                                    raygenShaderBindingTableBuffer,
13613    VkDeviceSize                                raygenShaderBindingOffset,
13614    VkBuffer                                    missShaderBindingTableBuffer,
13615    VkDeviceSize                                missShaderBindingOffset,
13616    VkDeviceSize                                missShaderBindingStride,
13617    VkBuffer                                    hitShaderBindingTableBuffer,
13618    VkDeviceSize                                hitShaderBindingOffset,
13619    VkDeviceSize                                hitShaderBindingStride,
13620    VkBuffer                                    callableShaderBindingTableBuffer,
13621    VkDeviceSize                                callableShaderBindingOffset,
13622    VkDeviceSize                                callableShaderBindingStride,
13623    uint32_t                                    width,
13624    uint32_t                                    height,
13625    uint32_t                                    depth);
13626
13627VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesNV(
13628    VkDevice                                    device,
13629    VkPipelineCache                             pipelineCache,
13630    uint32_t                                    createInfoCount,
13631    const VkRayTracingPipelineCreateInfoNV*     pCreateInfos,
13632    const VkAllocationCallbacks*                pAllocator,
13633    VkPipeline*                                 pPipelines);
13634
13635VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesKHR(
13636    VkDevice                                    device,
13637    VkPipeline                                  pipeline,
13638    uint32_t                                    firstGroup,
13639    uint32_t                                    groupCount,
13640    size_t                                      dataSize,
13641    void*                                       pData);
13642
13643VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesNV(
13644    VkDevice                                    device,
13645    VkPipeline                                  pipeline,
13646    uint32_t                                    firstGroup,
13647    uint32_t                                    groupCount,
13648    size_t                                      dataSize,
13649    void*                                       pData);
13650
13651VKAPI_ATTR VkResult VKAPI_CALL vkGetAccelerationStructureHandleNV(
13652    VkDevice                                    device,
13653    VkAccelerationStructureNV                   accelerationStructure,
13654    size_t                                      dataSize,
13655    void*                                       pData);
13656
13657VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesNV(
13658    VkCommandBuffer                             commandBuffer,
13659    uint32_t                                    accelerationStructureCount,
13660    const VkAccelerationStructureNV*            pAccelerationStructures,
13661    VkQueryType                                 queryType,
13662    VkQueryPool                                 queryPool,
13663    uint32_t                                    firstQuery);
13664
13665VKAPI_ATTR VkResult VKAPI_CALL vkCompileDeferredNV(
13666    VkDevice                                    device,
13667    VkPipeline                                  pipeline,
13668    uint32_t                                    shader);
13669#endif
13670
13671
13672// VK_NV_representative_fragment_test is a preprocessor guard. Do not pass it to API calls.
13673#define VK_NV_representative_fragment_test 1
13674#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION 2
13675#define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME "VK_NV_representative_fragment_test"
13676typedef struct VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV {
13677    VkStructureType    sType;
13678    void*              pNext;
13679    VkBool32           representativeFragmentTest;
13680} VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV;
13681
13682typedef struct VkPipelineRepresentativeFragmentTestStateCreateInfoNV {
13683    VkStructureType    sType;
13684    const void*        pNext;
13685    VkBool32           representativeFragmentTestEnable;
13686} VkPipelineRepresentativeFragmentTestStateCreateInfoNV;
13687
13688
13689
13690// VK_EXT_filter_cubic is a preprocessor guard. Do not pass it to API calls.
13691#define VK_EXT_filter_cubic 1
13692#define VK_EXT_FILTER_CUBIC_SPEC_VERSION  3
13693#define VK_EXT_FILTER_CUBIC_EXTENSION_NAME "VK_EXT_filter_cubic"
13694typedef struct VkPhysicalDeviceImageViewImageFormatInfoEXT {
13695    VkStructureType    sType;
13696    void*              pNext;
13697    VkImageViewType    imageViewType;
13698} VkPhysicalDeviceImageViewImageFormatInfoEXT;
13699
13700typedef struct VkFilterCubicImageViewImageFormatPropertiesEXT {
13701    VkStructureType    sType;
13702    void*              pNext;
13703    VkBool32           filterCubic;
13704    VkBool32           filterCubicMinmax;
13705} VkFilterCubicImageViewImageFormatPropertiesEXT;
13706
13707
13708
13709// VK_QCOM_render_pass_shader_resolve is a preprocessor guard. Do not pass it to API calls.
13710#define VK_QCOM_render_pass_shader_resolve 1
13711#define VK_QCOM_RENDER_PASS_SHADER_RESOLVE_SPEC_VERSION 4
13712#define VK_QCOM_RENDER_PASS_SHADER_RESOLVE_EXTENSION_NAME "VK_QCOM_render_pass_shader_resolve"
13713
13714
13715// VK_EXT_global_priority is a preprocessor guard. Do not pass it to API calls.
13716#define VK_EXT_global_priority 1
13717#define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 2
13718#define VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME "VK_EXT_global_priority"
13719typedef VkQueueGlobalPriorityKHR VkQueueGlobalPriorityEXT;
13720
13721typedef VkDeviceQueueGlobalPriorityCreateInfoKHR VkDeviceQueueGlobalPriorityCreateInfoEXT;
13722
13723
13724
13725// VK_EXT_external_memory_host is a preprocessor guard. Do not pass it to API calls.
13726#define VK_EXT_external_memory_host 1
13727#define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1
13728#define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host"
13729typedef struct VkImportMemoryHostPointerInfoEXT {
13730    VkStructureType                       sType;
13731    const void*                           pNext;
13732    VkExternalMemoryHandleTypeFlagBits    handleType;
13733    void*                                 pHostPointer;
13734} VkImportMemoryHostPointerInfoEXT;
13735
13736typedef struct VkMemoryHostPointerPropertiesEXT {
13737    VkStructureType    sType;
13738    void*              pNext;
13739    uint32_t           memoryTypeBits;
13740} VkMemoryHostPointerPropertiesEXT;
13741
13742typedef struct VkPhysicalDeviceExternalMemoryHostPropertiesEXT {
13743    VkStructureType    sType;
13744    void*              pNext;
13745    VkDeviceSize       minImportedHostPointerAlignment;
13746} VkPhysicalDeviceExternalMemoryHostPropertiesEXT;
13747
13748typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryHostPointerPropertiesEXT)(VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties);
13749
13750#ifndef VK_NO_PROTOTYPES
13751VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryHostPointerPropertiesEXT(
13752    VkDevice                                    device,
13753    VkExternalMemoryHandleTypeFlagBits          handleType,
13754    const void*                                 pHostPointer,
13755    VkMemoryHostPointerPropertiesEXT*           pMemoryHostPointerProperties);
13756#endif
13757
13758
13759// VK_AMD_buffer_marker is a preprocessor guard. Do not pass it to API calls.
13760#define VK_AMD_buffer_marker 1
13761#define VK_AMD_BUFFER_MARKER_SPEC_VERSION 1
13762#define VK_AMD_BUFFER_MARKER_EXTENSION_NAME "VK_AMD_buffer_marker"
13763typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarkerAMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker);
13764
13765#ifndef VK_NO_PROTOTYPES
13766VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarkerAMD(
13767    VkCommandBuffer                             commandBuffer,
13768    VkPipelineStageFlagBits                     pipelineStage,
13769    VkBuffer                                    dstBuffer,
13770    VkDeviceSize                                dstOffset,
13771    uint32_t                                    marker);
13772#endif
13773
13774
13775// VK_AMD_pipeline_compiler_control is a preprocessor guard. Do not pass it to API calls.
13776#define VK_AMD_pipeline_compiler_control 1
13777#define VK_AMD_PIPELINE_COMPILER_CONTROL_SPEC_VERSION 1
13778#define VK_AMD_PIPELINE_COMPILER_CONTROL_EXTENSION_NAME "VK_AMD_pipeline_compiler_control"
13779
13780typedef enum VkPipelineCompilerControlFlagBitsAMD {
13781    VK_PIPELINE_COMPILER_CONTROL_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF
13782} VkPipelineCompilerControlFlagBitsAMD;
13783typedef VkFlags VkPipelineCompilerControlFlagsAMD;
13784typedef struct VkPipelineCompilerControlCreateInfoAMD {
13785    VkStructureType                      sType;
13786    const void*                          pNext;
13787    VkPipelineCompilerControlFlagsAMD    compilerControlFlags;
13788} VkPipelineCompilerControlCreateInfoAMD;
13789
13790
13791
13792// VK_EXT_calibrated_timestamps is a preprocessor guard. Do not pass it to API calls.
13793#define VK_EXT_calibrated_timestamps 1
13794#define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 2
13795#define VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME "VK_EXT_calibrated_timestamps"
13796typedef VkTimeDomainKHR VkTimeDomainEXT;
13797
13798typedef VkCalibratedTimestampInfoKHR VkCalibratedTimestampInfoEXT;
13799
13800typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)(VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainKHR* pTimeDomains);
13801typedef VkResult (VKAPI_PTR *PFN_vkGetCalibratedTimestampsEXT)(VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoKHR* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation);
13802
13803#ifndef VK_NO_PROTOTYPES
13804VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCalibrateableTimeDomainsEXT(
13805    VkPhysicalDevice                            physicalDevice,
13806    uint32_t*                                   pTimeDomainCount,
13807    VkTimeDomainKHR*                            pTimeDomains);
13808
13809VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsEXT(
13810    VkDevice                                    device,
13811    uint32_t                                    timestampCount,
13812    const VkCalibratedTimestampInfoKHR*         pTimestampInfos,
13813    uint64_t*                                   pTimestamps,
13814    uint64_t*                                   pMaxDeviation);
13815#endif
13816
13817
13818// VK_AMD_shader_core_properties is a preprocessor guard. Do not pass it to API calls.
13819#define VK_AMD_shader_core_properties 1
13820#define VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION 2
13821#define VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_AMD_shader_core_properties"
13822typedef struct VkPhysicalDeviceShaderCorePropertiesAMD {
13823    VkStructureType    sType;
13824    void*              pNext;
13825    uint32_t           shaderEngineCount;
13826    uint32_t           shaderArraysPerEngineCount;
13827    uint32_t           computeUnitsPerShaderArray;
13828    uint32_t           simdPerComputeUnit;
13829    uint32_t           wavefrontsPerSimd;
13830    uint32_t           wavefrontSize;
13831    uint32_t           sgprsPerSimd;
13832    uint32_t           minSgprAllocation;
13833    uint32_t           maxSgprAllocation;
13834    uint32_t           sgprAllocationGranularity;
13835    uint32_t           vgprsPerSimd;
13836    uint32_t           minVgprAllocation;
13837    uint32_t           maxVgprAllocation;
13838    uint32_t           vgprAllocationGranularity;
13839} VkPhysicalDeviceShaderCorePropertiesAMD;
13840
13841
13842
13843// VK_AMD_memory_overallocation_behavior is a preprocessor guard. Do not pass it to API calls.
13844#define VK_AMD_memory_overallocation_behavior 1
13845#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION 1
13846#define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME "VK_AMD_memory_overallocation_behavior"
13847
13848typedef enum VkMemoryOverallocationBehaviorAMD {
13849    VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD = 0,
13850    VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD = 1,
13851    VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD = 2,
13852    VK_MEMORY_OVERALLOCATION_BEHAVIOR_MAX_ENUM_AMD = 0x7FFFFFFF
13853} VkMemoryOverallocationBehaviorAMD;
13854typedef struct VkDeviceMemoryOverallocationCreateInfoAMD {
13855    VkStructureType                      sType;
13856    const void*                          pNext;
13857    VkMemoryOverallocationBehaviorAMD    overallocationBehavior;
13858} VkDeviceMemoryOverallocationCreateInfoAMD;
13859
13860
13861
13862// VK_EXT_vertex_attribute_divisor is a preprocessor guard. Do not pass it to API calls.
13863#define VK_EXT_vertex_attribute_divisor 1
13864#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 3
13865#define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_EXT_vertex_attribute_divisor"
13866typedef struct VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT {
13867    VkStructureType    sType;
13868    void*              pNext;
13869    uint32_t           maxVertexAttribDivisor;
13870} VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT;
13871
13872typedef VkVertexInputBindingDivisorDescriptionKHR VkVertexInputBindingDivisorDescriptionEXT;
13873
13874typedef VkPipelineVertexInputDivisorStateCreateInfoKHR VkPipelineVertexInputDivisorStateCreateInfoEXT;
13875
13876typedef VkPhysicalDeviceVertexAttributeDivisorFeaturesKHR VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT;
13877
13878
13879
13880// VK_EXT_pipeline_creation_feedback is a preprocessor guard. Do not pass it to API calls.
13881#define VK_EXT_pipeline_creation_feedback 1
13882#define VK_EXT_PIPELINE_CREATION_FEEDBACK_SPEC_VERSION 1
13883#define VK_EXT_PIPELINE_CREATION_FEEDBACK_EXTENSION_NAME "VK_EXT_pipeline_creation_feedback"
13884typedef VkPipelineCreationFeedbackFlagBits VkPipelineCreationFeedbackFlagBitsEXT;
13885
13886typedef VkPipelineCreationFeedbackFlags VkPipelineCreationFeedbackFlagsEXT;
13887
13888typedef VkPipelineCreationFeedbackCreateInfo VkPipelineCreationFeedbackCreateInfoEXT;
13889
13890typedef VkPipelineCreationFeedback VkPipelineCreationFeedbackEXT;
13891
13892
13893
13894// VK_NV_shader_subgroup_partitioned is a preprocessor guard. Do not pass it to API calls.
13895#define VK_NV_shader_subgroup_partitioned 1
13896#define VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION 1
13897#define VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME "VK_NV_shader_subgroup_partitioned"
13898
13899
13900// VK_NV_compute_shader_derivatives is a preprocessor guard. Do not pass it to API calls.
13901#define VK_NV_compute_shader_derivatives 1
13902#define VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION 1
13903#define VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME "VK_NV_compute_shader_derivatives"
13904typedef struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV {
13905    VkStructureType    sType;
13906    void*              pNext;
13907    VkBool32           computeDerivativeGroupQuads;
13908    VkBool32           computeDerivativeGroupLinear;
13909} VkPhysicalDeviceComputeShaderDerivativesFeaturesNV;
13910
13911
13912
13913// VK_NV_mesh_shader is a preprocessor guard. Do not pass it to API calls.
13914#define VK_NV_mesh_shader 1
13915#define VK_NV_MESH_SHADER_SPEC_VERSION    1
13916#define VK_NV_MESH_SHADER_EXTENSION_NAME  "VK_NV_mesh_shader"
13917typedef struct VkPhysicalDeviceMeshShaderFeaturesNV {
13918    VkStructureType    sType;
13919    void*              pNext;
13920    VkBool32           taskShader;
13921    VkBool32           meshShader;
13922} VkPhysicalDeviceMeshShaderFeaturesNV;
13923
13924typedef struct VkPhysicalDeviceMeshShaderPropertiesNV {
13925    VkStructureType    sType;
13926    void*              pNext;
13927    uint32_t           maxDrawMeshTasksCount;
13928    uint32_t           maxTaskWorkGroupInvocations;
13929    uint32_t           maxTaskWorkGroupSize[3];
13930    uint32_t           maxTaskTotalMemorySize;
13931    uint32_t           maxTaskOutputCount;
13932    uint32_t           maxMeshWorkGroupInvocations;
13933    uint32_t           maxMeshWorkGroupSize[3];
13934    uint32_t           maxMeshTotalMemorySize;
13935    uint32_t           maxMeshOutputVertices;
13936    uint32_t           maxMeshOutputPrimitives;
13937    uint32_t           maxMeshMultiviewViewCount;
13938    uint32_t           meshOutputPerVertexGranularity;
13939    uint32_t           meshOutputPerPrimitiveGranularity;
13940} VkPhysicalDeviceMeshShaderPropertiesNV;
13941
13942typedef struct VkDrawMeshTasksIndirectCommandNV {
13943    uint32_t    taskCount;
13944    uint32_t    firstTask;
13945} VkDrawMeshTasksIndirectCommandNV;
13946
13947typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksNV)(VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask);
13948typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
13949typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectCountNV)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
13950
13951#ifndef VK_NO_PROTOTYPES
13952VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksNV(
13953    VkCommandBuffer                             commandBuffer,
13954    uint32_t                                    taskCount,
13955    uint32_t                                    firstTask);
13956
13957VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectNV(
13958    VkCommandBuffer                             commandBuffer,
13959    VkBuffer                                    buffer,
13960    VkDeviceSize                                offset,
13961    uint32_t                                    drawCount,
13962    uint32_t                                    stride);
13963
13964VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectCountNV(
13965    VkCommandBuffer                             commandBuffer,
13966    VkBuffer                                    buffer,
13967    VkDeviceSize                                offset,
13968    VkBuffer                                    countBuffer,
13969    VkDeviceSize                                countBufferOffset,
13970    uint32_t                                    maxDrawCount,
13971    uint32_t                                    stride);
13972#endif
13973
13974
13975// VK_NV_fragment_shader_barycentric is a preprocessor guard. Do not pass it to API calls.
13976#define VK_NV_fragment_shader_barycentric 1
13977#define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1
13978#define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME "VK_NV_fragment_shader_barycentric"
13979typedef VkPhysicalDeviceFragmentShaderBarycentricFeaturesKHR VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV;
13980
13981
13982
13983// VK_NV_shader_image_footprint is a preprocessor guard. Do not pass it to API calls.
13984#define VK_NV_shader_image_footprint 1
13985#define VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION 2
13986#define VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME "VK_NV_shader_image_footprint"
13987typedef struct VkPhysicalDeviceShaderImageFootprintFeaturesNV {
13988    VkStructureType    sType;
13989    void*              pNext;
13990    VkBool32           imageFootprint;
13991} VkPhysicalDeviceShaderImageFootprintFeaturesNV;
13992
13993
13994
13995// VK_NV_scissor_exclusive is a preprocessor guard. Do not pass it to API calls.
13996#define VK_NV_scissor_exclusive 1
13997#define VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION 2
13998#define VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME "VK_NV_scissor_exclusive"
13999typedef struct VkPipelineViewportExclusiveScissorStateCreateInfoNV {
14000    VkStructureType    sType;
14001    const void*        pNext;
14002    uint32_t           exclusiveScissorCount;
14003    const VkRect2D*    pExclusiveScissors;
14004} VkPipelineViewportExclusiveScissorStateCreateInfoNV;
14005
14006typedef struct VkPhysicalDeviceExclusiveScissorFeaturesNV {
14007    VkStructureType    sType;
14008    void*              pNext;
14009    VkBool32           exclusiveScissor;
14010} VkPhysicalDeviceExclusiveScissorFeaturesNV;
14011
14012typedef void (VKAPI_PTR *PFN_vkCmdSetExclusiveScissorEnableNV)(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VkBool32* pExclusiveScissorEnables);
14013typedef void (VKAPI_PTR *PFN_vkCmdSetExclusiveScissorNV)(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VkRect2D* pExclusiveScissors);
14014
14015#ifndef VK_NO_PROTOTYPES
14016VKAPI_ATTR void VKAPI_CALL vkCmdSetExclusiveScissorEnableNV(
14017    VkCommandBuffer                             commandBuffer,
14018    uint32_t                                    firstExclusiveScissor,
14019    uint32_t                                    exclusiveScissorCount,
14020    const VkBool32*                             pExclusiveScissorEnables);
14021
14022VKAPI_ATTR void VKAPI_CALL vkCmdSetExclusiveScissorNV(
14023    VkCommandBuffer                             commandBuffer,
14024    uint32_t                                    firstExclusiveScissor,
14025    uint32_t                                    exclusiveScissorCount,
14026    const VkRect2D*                             pExclusiveScissors);
14027#endif
14028
14029
14030// VK_NV_device_diagnostic_checkpoints is a preprocessor guard. Do not pass it to API calls.
14031#define VK_NV_device_diagnostic_checkpoints 1
14032#define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION 2
14033#define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME "VK_NV_device_diagnostic_checkpoints"
14034typedef struct VkQueueFamilyCheckpointPropertiesNV {
14035    VkStructureType         sType;
14036    void*                   pNext;
14037    VkPipelineStageFlags    checkpointExecutionStageMask;
14038} VkQueueFamilyCheckpointPropertiesNV;
14039
14040typedef struct VkCheckpointDataNV {
14041    VkStructureType            sType;
14042    void*                      pNext;
14043    VkPipelineStageFlagBits    stage;
14044    void*                      pCheckpointMarker;
14045} VkCheckpointDataNV;
14046
14047typedef void (VKAPI_PTR *PFN_vkCmdSetCheckpointNV)(VkCommandBuffer commandBuffer, const void* pCheckpointMarker);
14048typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointDataNV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData);
14049
14050#ifndef VK_NO_PROTOTYPES
14051VKAPI_ATTR void VKAPI_CALL vkCmdSetCheckpointNV(
14052    VkCommandBuffer                             commandBuffer,
14053    const void*                                 pCheckpointMarker);
14054
14055VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointDataNV(
14056    VkQueue                                     queue,
14057    uint32_t*                                   pCheckpointDataCount,
14058    VkCheckpointDataNV*                         pCheckpointData);
14059#endif
14060
14061
14062// VK_INTEL_shader_integer_functions2 is a preprocessor guard. Do not pass it to API calls.
14063#define VK_INTEL_shader_integer_functions2 1
14064#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_SPEC_VERSION 1
14065#define VK_INTEL_SHADER_INTEGER_FUNCTIONS_2_EXTENSION_NAME "VK_INTEL_shader_integer_functions2"
14066typedef struct VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL {
14067    VkStructureType    sType;
14068    void*              pNext;
14069    VkBool32           shaderIntegerFunctions2;
14070} VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL;
14071
14072
14073
14074// VK_INTEL_performance_query is a preprocessor guard. Do not pass it to API calls.
14075#define VK_INTEL_performance_query 1
14076VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPerformanceConfigurationINTEL)
14077#define VK_INTEL_PERFORMANCE_QUERY_SPEC_VERSION 2
14078#define VK_INTEL_PERFORMANCE_QUERY_EXTENSION_NAME "VK_INTEL_performance_query"
14079
14080typedef enum VkPerformanceConfigurationTypeINTEL {
14081    VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL = 0,
14082    VK_PERFORMANCE_CONFIGURATION_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF
14083} VkPerformanceConfigurationTypeINTEL;
14084
14085typedef enum VkQueryPoolSamplingModeINTEL {
14086    VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL = 0,
14087    VK_QUERY_POOL_SAMPLING_MODE_MAX_ENUM_INTEL = 0x7FFFFFFF
14088} VkQueryPoolSamplingModeINTEL;
14089
14090typedef enum VkPerformanceOverrideTypeINTEL {
14091    VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL = 0,
14092    VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL = 1,
14093    VK_PERFORMANCE_OVERRIDE_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF
14094} VkPerformanceOverrideTypeINTEL;
14095
14096typedef enum VkPerformanceParameterTypeINTEL {
14097    VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL = 0,
14098    VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL = 1,
14099    VK_PERFORMANCE_PARAMETER_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF
14100} VkPerformanceParameterTypeINTEL;
14101
14102typedef enum VkPerformanceValueTypeINTEL {
14103    VK_PERFORMANCE_VALUE_TYPE_UINT32_INTEL = 0,
14104    VK_PERFORMANCE_VALUE_TYPE_UINT64_INTEL = 1,
14105    VK_PERFORMANCE_VALUE_TYPE_FLOAT_INTEL = 2,
14106    VK_PERFORMANCE_VALUE_TYPE_BOOL_INTEL = 3,
14107    VK_PERFORMANCE_VALUE_TYPE_STRING_INTEL = 4,
14108    VK_PERFORMANCE_VALUE_TYPE_MAX_ENUM_INTEL = 0x7FFFFFFF
14109} VkPerformanceValueTypeINTEL;
14110typedef union VkPerformanceValueDataINTEL {
14111    uint32_t       value32;
14112    uint64_t       value64;
14113    float          valueFloat;
14114    VkBool32       valueBool;
14115    const char*    valueString;
14116} VkPerformanceValueDataINTEL;
14117
14118typedef struct VkPerformanceValueINTEL {
14119    VkPerformanceValueTypeINTEL    type;
14120    VkPerformanceValueDataINTEL    data;
14121} VkPerformanceValueINTEL;
14122
14123typedef struct VkInitializePerformanceApiInfoINTEL {
14124    VkStructureType    sType;
14125    const void*        pNext;
14126    void*              pUserData;
14127} VkInitializePerformanceApiInfoINTEL;
14128
14129typedef struct VkQueryPoolPerformanceQueryCreateInfoINTEL {
14130    VkStructureType                 sType;
14131    const void*                     pNext;
14132    VkQueryPoolSamplingModeINTEL    performanceCountersSampling;
14133} VkQueryPoolPerformanceQueryCreateInfoINTEL;
14134
14135typedef VkQueryPoolPerformanceQueryCreateInfoINTEL VkQueryPoolCreateInfoINTEL;
14136
14137typedef struct VkPerformanceMarkerInfoINTEL {
14138    VkStructureType    sType;
14139    const void*        pNext;
14140    uint64_t           marker;
14141} VkPerformanceMarkerInfoINTEL;
14142
14143typedef struct VkPerformanceStreamMarkerInfoINTEL {
14144    VkStructureType    sType;
14145    const void*        pNext;
14146    uint32_t           marker;
14147} VkPerformanceStreamMarkerInfoINTEL;
14148
14149typedef struct VkPerformanceOverrideInfoINTEL {
14150    VkStructureType                   sType;
14151    const void*                       pNext;
14152    VkPerformanceOverrideTypeINTEL    type;
14153    VkBool32                          enable;
14154    uint64_t                          parameter;
14155} VkPerformanceOverrideInfoINTEL;
14156
14157typedef struct VkPerformanceConfigurationAcquireInfoINTEL {
14158    VkStructureType                        sType;
14159    const void*                            pNext;
14160    VkPerformanceConfigurationTypeINTEL    type;
14161} VkPerformanceConfigurationAcquireInfoINTEL;
14162
14163typedef VkResult (VKAPI_PTR *PFN_vkInitializePerformanceApiINTEL)(VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo);
14164typedef void (VKAPI_PTR *PFN_vkUninitializePerformanceApiINTEL)(VkDevice device);
14165typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceMarkerINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo);
14166typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceStreamMarkerINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo);
14167typedef VkResult (VKAPI_PTR *PFN_vkCmdSetPerformanceOverrideINTEL)(VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo);
14168typedef VkResult (VKAPI_PTR *PFN_vkAcquirePerformanceConfigurationINTEL)(VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration);
14169typedef VkResult (VKAPI_PTR *PFN_vkReleasePerformanceConfigurationINTEL)(VkDevice device, VkPerformanceConfigurationINTEL configuration);
14170typedef VkResult (VKAPI_PTR *PFN_vkQueueSetPerformanceConfigurationINTEL)(VkQueue queue, VkPerformanceConfigurationINTEL configuration);
14171typedef VkResult (VKAPI_PTR *PFN_vkGetPerformanceParameterINTEL)(VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue);
14172
14173#ifndef VK_NO_PROTOTYPES
14174VKAPI_ATTR VkResult VKAPI_CALL vkInitializePerformanceApiINTEL(
14175    VkDevice                                    device,
14176    const VkInitializePerformanceApiInfoINTEL*  pInitializeInfo);
14177
14178VKAPI_ATTR void VKAPI_CALL vkUninitializePerformanceApiINTEL(
14179    VkDevice                                    device);
14180
14181VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceMarkerINTEL(
14182    VkCommandBuffer                             commandBuffer,
14183    const VkPerformanceMarkerInfoINTEL*         pMarkerInfo);
14184
14185VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceStreamMarkerINTEL(
14186    VkCommandBuffer                             commandBuffer,
14187    const VkPerformanceStreamMarkerInfoINTEL*   pMarkerInfo);
14188
14189VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceOverrideINTEL(
14190    VkCommandBuffer                             commandBuffer,
14191    const VkPerformanceOverrideInfoINTEL*       pOverrideInfo);
14192
14193VKAPI_ATTR VkResult VKAPI_CALL vkAcquirePerformanceConfigurationINTEL(
14194    VkDevice                                    device,
14195    const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo,
14196    VkPerformanceConfigurationINTEL*            pConfiguration);
14197
14198VKAPI_ATTR VkResult VKAPI_CALL vkReleasePerformanceConfigurationINTEL(
14199    VkDevice                                    device,
14200    VkPerformanceConfigurationINTEL             configuration);
14201
14202VKAPI_ATTR VkResult VKAPI_CALL vkQueueSetPerformanceConfigurationINTEL(
14203    VkQueue                                     queue,
14204    VkPerformanceConfigurationINTEL             configuration);
14205
14206VKAPI_ATTR VkResult VKAPI_CALL vkGetPerformanceParameterINTEL(
14207    VkDevice                                    device,
14208    VkPerformanceParameterTypeINTEL             parameter,
14209    VkPerformanceValueINTEL*                    pValue);
14210#endif
14211
14212
14213// VK_EXT_pci_bus_info is a preprocessor guard. Do not pass it to API calls.
14214#define VK_EXT_pci_bus_info 1
14215#define VK_EXT_PCI_BUS_INFO_SPEC_VERSION  2
14216#define VK_EXT_PCI_BUS_INFO_EXTENSION_NAME "VK_EXT_pci_bus_info"
14217typedef struct VkPhysicalDevicePCIBusInfoPropertiesEXT {
14218    VkStructureType    sType;
14219    void*              pNext;
14220    uint32_t           pciDomain;
14221    uint32_t           pciBus;
14222    uint32_t           pciDevice;
14223    uint32_t           pciFunction;
14224} VkPhysicalDevicePCIBusInfoPropertiesEXT;
14225
14226
14227
14228// VK_AMD_display_native_hdr is a preprocessor guard. Do not pass it to API calls.
14229#define VK_AMD_display_native_hdr 1
14230#define VK_AMD_DISPLAY_NATIVE_HDR_SPEC_VERSION 1
14231#define VK_AMD_DISPLAY_NATIVE_HDR_EXTENSION_NAME "VK_AMD_display_native_hdr"
14232typedef struct VkDisplayNativeHdrSurfaceCapabilitiesAMD {
14233    VkStructureType    sType;
14234    void*              pNext;
14235    VkBool32           localDimmingSupport;
14236} VkDisplayNativeHdrSurfaceCapabilitiesAMD;
14237
14238typedef struct VkSwapchainDisplayNativeHdrCreateInfoAMD {
14239    VkStructureType    sType;
14240    const void*        pNext;
14241    VkBool32           localDimmingEnable;
14242} VkSwapchainDisplayNativeHdrCreateInfoAMD;
14243
14244typedef void (VKAPI_PTR *PFN_vkSetLocalDimmingAMD)(VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable);
14245
14246#ifndef VK_NO_PROTOTYPES
14247VKAPI_ATTR void VKAPI_CALL vkSetLocalDimmingAMD(
14248    VkDevice                                    device,
14249    VkSwapchainKHR                              swapChain,
14250    VkBool32                                    localDimmingEnable);
14251#endif
14252
14253
14254// VK_EXT_fragment_density_map is a preprocessor guard. Do not pass it to API calls.
14255#define VK_EXT_fragment_density_map 1
14256#define VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION 2
14257#define VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME "VK_EXT_fragment_density_map"
14258typedef struct VkPhysicalDeviceFragmentDensityMapFeaturesEXT {
14259    VkStructureType    sType;
14260    void*              pNext;
14261    VkBool32           fragmentDensityMap;
14262    VkBool32           fragmentDensityMapDynamic;
14263    VkBool32           fragmentDensityMapNonSubsampledImages;
14264} VkPhysicalDeviceFragmentDensityMapFeaturesEXT;
14265
14266typedef struct VkPhysicalDeviceFragmentDensityMapPropertiesEXT {
14267    VkStructureType    sType;
14268    void*              pNext;
14269    VkExtent2D         minFragmentDensityTexelSize;
14270    VkExtent2D         maxFragmentDensityTexelSize;
14271    VkBool32           fragmentDensityInvocations;
14272} VkPhysicalDeviceFragmentDensityMapPropertiesEXT;
14273
14274typedef struct VkRenderPassFragmentDensityMapCreateInfoEXT {
14275    VkStructureType          sType;
14276    const void*              pNext;
14277    VkAttachmentReference    fragmentDensityMapAttachment;
14278} VkRenderPassFragmentDensityMapCreateInfoEXT;
14279
14280
14281
14282// VK_EXT_scalar_block_layout is a preprocessor guard. Do not pass it to API calls.
14283#define VK_EXT_scalar_block_layout 1
14284#define VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION 1
14285#define VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME "VK_EXT_scalar_block_layout"
14286typedef VkPhysicalDeviceScalarBlockLayoutFeatures VkPhysicalDeviceScalarBlockLayoutFeaturesEXT;
14287
14288
14289
14290// VK_GOOGLE_hlsl_functionality1 is a preprocessor guard. Do not pass it to API calls.
14291#define VK_GOOGLE_hlsl_functionality1 1
14292#define VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION 1
14293#define VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME "VK_GOOGLE_hlsl_functionality1"
14294#define VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION VK_GOOGLE_HLSL_FUNCTIONALITY_1_SPEC_VERSION
14295#define VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME VK_GOOGLE_HLSL_FUNCTIONALITY_1_EXTENSION_NAME
14296
14297
14298// VK_GOOGLE_decorate_string is a preprocessor guard. Do not pass it to API calls.
14299#define VK_GOOGLE_decorate_string 1
14300#define VK_GOOGLE_DECORATE_STRING_SPEC_VERSION 1
14301#define VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME "VK_GOOGLE_decorate_string"
14302
14303
14304// VK_EXT_subgroup_size_control is a preprocessor guard. Do not pass it to API calls.
14305#define VK_EXT_subgroup_size_control 1
14306#define VK_EXT_SUBGROUP_SIZE_CONTROL_SPEC_VERSION 2
14307#define VK_EXT_SUBGROUP_SIZE_CONTROL_EXTENSION_NAME "VK_EXT_subgroup_size_control"
14308typedef VkPhysicalDeviceSubgroupSizeControlFeatures VkPhysicalDeviceSubgroupSizeControlFeaturesEXT;
14309
14310typedef VkPhysicalDeviceSubgroupSizeControlProperties VkPhysicalDeviceSubgroupSizeControlPropertiesEXT;
14311
14312typedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfo VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT;
14313
14314
14315
14316// VK_AMD_shader_core_properties2 is a preprocessor guard. Do not pass it to API calls.
14317#define VK_AMD_shader_core_properties2 1
14318#define VK_AMD_SHADER_CORE_PROPERTIES_2_SPEC_VERSION 1
14319#define VK_AMD_SHADER_CORE_PROPERTIES_2_EXTENSION_NAME "VK_AMD_shader_core_properties2"
14320
14321typedef enum VkShaderCorePropertiesFlagBitsAMD {
14322    VK_SHADER_CORE_PROPERTIES_FLAG_BITS_MAX_ENUM_AMD = 0x7FFFFFFF
14323} VkShaderCorePropertiesFlagBitsAMD;
14324typedef VkFlags VkShaderCorePropertiesFlagsAMD;
14325typedef struct VkPhysicalDeviceShaderCoreProperties2AMD {
14326    VkStructureType                   sType;
14327    void*                             pNext;
14328    VkShaderCorePropertiesFlagsAMD    shaderCoreFeatures;
14329    uint32_t                          activeComputeUnitCount;
14330} VkPhysicalDeviceShaderCoreProperties2AMD;
14331
14332
14333
14334// VK_AMD_device_coherent_memory is a preprocessor guard. Do not pass it to API calls.
14335#define VK_AMD_device_coherent_memory 1
14336#define VK_AMD_DEVICE_COHERENT_MEMORY_SPEC_VERSION 1
14337#define VK_AMD_DEVICE_COHERENT_MEMORY_EXTENSION_NAME "VK_AMD_device_coherent_memory"
14338typedef struct VkPhysicalDeviceCoherentMemoryFeaturesAMD {
14339    VkStructureType    sType;
14340    void*              pNext;
14341    VkBool32           deviceCoherentMemory;
14342} VkPhysicalDeviceCoherentMemoryFeaturesAMD;
14343
14344
14345
14346// VK_EXT_shader_image_atomic_int64 is a preprocessor guard. Do not pass it to API calls.
14347#define VK_EXT_shader_image_atomic_int64 1
14348#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_SPEC_VERSION 1
14349#define VK_EXT_SHADER_IMAGE_ATOMIC_INT64_EXTENSION_NAME "VK_EXT_shader_image_atomic_int64"
14350typedef struct VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT {
14351    VkStructureType    sType;
14352    void*              pNext;
14353    VkBool32           shaderImageInt64Atomics;
14354    VkBool32           sparseImageInt64Atomics;
14355} VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT;
14356
14357
14358
14359// VK_EXT_memory_budget is a preprocessor guard. Do not pass it to API calls.
14360#define VK_EXT_memory_budget 1
14361#define VK_EXT_MEMORY_BUDGET_SPEC_VERSION 1
14362#define VK_EXT_MEMORY_BUDGET_EXTENSION_NAME "VK_EXT_memory_budget"
14363typedef struct VkPhysicalDeviceMemoryBudgetPropertiesEXT {
14364    VkStructureType    sType;
14365    void*              pNext;
14366    VkDeviceSize       heapBudget[VK_MAX_MEMORY_HEAPS];
14367    VkDeviceSize       heapUsage[VK_MAX_MEMORY_HEAPS];
14368} VkPhysicalDeviceMemoryBudgetPropertiesEXT;
14369
14370
14371
14372// VK_EXT_memory_priority is a preprocessor guard. Do not pass it to API calls.
14373#define VK_EXT_memory_priority 1
14374#define VK_EXT_MEMORY_PRIORITY_SPEC_VERSION 1
14375#define VK_EXT_MEMORY_PRIORITY_EXTENSION_NAME "VK_EXT_memory_priority"
14376typedef struct VkPhysicalDeviceMemoryPriorityFeaturesEXT {
14377    VkStructureType    sType;
14378    void*              pNext;
14379    VkBool32           memoryPriority;
14380} VkPhysicalDeviceMemoryPriorityFeaturesEXT;
14381
14382typedef struct VkMemoryPriorityAllocateInfoEXT {
14383    VkStructureType    sType;
14384    const void*        pNext;
14385    float              priority;
14386} VkMemoryPriorityAllocateInfoEXT;
14387
14388
14389
14390// VK_NV_dedicated_allocation_image_aliasing is a preprocessor guard. Do not pass it to API calls.
14391#define VK_NV_dedicated_allocation_image_aliasing 1
14392#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_SPEC_VERSION 1
14393#define VK_NV_DEDICATED_ALLOCATION_IMAGE_ALIASING_EXTENSION_NAME "VK_NV_dedicated_allocation_image_aliasing"
14394typedef struct VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV {
14395    VkStructureType    sType;
14396    void*              pNext;
14397    VkBool32           dedicatedAllocationImageAliasing;
14398} VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV;
14399
14400
14401
14402// VK_EXT_buffer_device_address is a preprocessor guard. Do not pass it to API calls.
14403#define VK_EXT_buffer_device_address 1
14404#define VK_EXT_BUFFER_DEVICE_ADDRESS_SPEC_VERSION 2
14405#define VK_EXT_BUFFER_DEVICE_ADDRESS_EXTENSION_NAME "VK_EXT_buffer_device_address"
14406typedef struct VkPhysicalDeviceBufferDeviceAddressFeaturesEXT {
14407    VkStructureType    sType;
14408    void*              pNext;
14409    VkBool32           bufferDeviceAddress;
14410    VkBool32           bufferDeviceAddressCaptureReplay;
14411    VkBool32           bufferDeviceAddressMultiDevice;
14412} VkPhysicalDeviceBufferDeviceAddressFeaturesEXT;
14413
14414typedef VkPhysicalDeviceBufferDeviceAddressFeaturesEXT VkPhysicalDeviceBufferAddressFeaturesEXT;
14415
14416typedef VkBufferDeviceAddressInfo VkBufferDeviceAddressInfoEXT;
14417
14418typedef struct VkBufferDeviceAddressCreateInfoEXT {
14419    VkStructureType    sType;
14420    const void*        pNext;
14421    VkDeviceAddress    deviceAddress;
14422} VkBufferDeviceAddressCreateInfoEXT;
14423
14424typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetBufferDeviceAddressEXT)(VkDevice device, const VkBufferDeviceAddressInfo* pInfo);
14425
14426#ifndef VK_NO_PROTOTYPES
14427VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressEXT(
14428    VkDevice                                    device,
14429    const VkBufferDeviceAddressInfo*            pInfo);
14430#endif
14431
14432
14433// VK_EXT_tooling_info is a preprocessor guard. Do not pass it to API calls.
14434#define VK_EXT_tooling_info 1
14435#define VK_EXT_TOOLING_INFO_SPEC_VERSION  1
14436#define VK_EXT_TOOLING_INFO_EXTENSION_NAME "VK_EXT_tooling_info"
14437typedef VkToolPurposeFlagBits VkToolPurposeFlagBitsEXT;
14438
14439typedef VkToolPurposeFlags VkToolPurposeFlagsEXT;
14440
14441typedef VkPhysicalDeviceToolProperties VkPhysicalDeviceToolPropertiesEXT;
14442
14443typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceToolPropertiesEXT)(VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolProperties* pToolProperties);
14444
14445#ifndef VK_NO_PROTOTYPES
14446VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceToolPropertiesEXT(
14447    VkPhysicalDevice                            physicalDevice,
14448    uint32_t*                                   pToolCount,
14449    VkPhysicalDeviceToolProperties*             pToolProperties);
14450#endif
14451
14452
14453// VK_EXT_separate_stencil_usage is a preprocessor guard. Do not pass it to API calls.
14454#define VK_EXT_separate_stencil_usage 1
14455#define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1
14456#define VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME "VK_EXT_separate_stencil_usage"
14457typedef VkImageStencilUsageCreateInfo VkImageStencilUsageCreateInfoEXT;
14458
14459
14460
14461// VK_EXT_validation_features is a preprocessor guard. Do not pass it to API calls.
14462#define VK_EXT_validation_features 1
14463#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 6
14464#define VK_EXT_VALIDATION_FEATURES_EXTENSION_NAME "VK_EXT_validation_features"
14465
14466typedef enum VkValidationFeatureEnableEXT {
14467    VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_EXT = 0,
14468    VK_VALIDATION_FEATURE_ENABLE_GPU_ASSISTED_RESERVE_BINDING_SLOT_EXT = 1,
14469    VK_VALIDATION_FEATURE_ENABLE_BEST_PRACTICES_EXT = 2,
14470    VK_VALIDATION_FEATURE_ENABLE_DEBUG_PRINTF_EXT = 3,
14471    VK_VALIDATION_FEATURE_ENABLE_SYNCHRONIZATION_VALIDATION_EXT = 4,
14472    VK_VALIDATION_FEATURE_ENABLE_MAX_ENUM_EXT = 0x7FFFFFFF
14473} VkValidationFeatureEnableEXT;
14474
14475typedef enum VkValidationFeatureDisableEXT {
14476    VK_VALIDATION_FEATURE_DISABLE_ALL_EXT = 0,
14477    VK_VALIDATION_FEATURE_DISABLE_SHADERS_EXT = 1,
14478    VK_VALIDATION_FEATURE_DISABLE_THREAD_SAFETY_EXT = 2,
14479    VK_VALIDATION_FEATURE_DISABLE_API_PARAMETERS_EXT = 3,
14480    VK_VALIDATION_FEATURE_DISABLE_OBJECT_LIFETIMES_EXT = 4,
14481    VK_VALIDATION_FEATURE_DISABLE_CORE_CHECKS_EXT = 5,
14482    VK_VALIDATION_FEATURE_DISABLE_UNIQUE_HANDLES_EXT = 6,
14483    VK_VALIDATION_FEATURE_DISABLE_SHADER_VALIDATION_CACHE_EXT = 7,
14484    VK_VALIDATION_FEATURE_DISABLE_MAX_ENUM_EXT = 0x7FFFFFFF
14485} VkValidationFeatureDisableEXT;
14486typedef struct VkValidationFeaturesEXT {
14487    VkStructureType                         sType;
14488    const void*                             pNext;
14489    uint32_t                                enabledValidationFeatureCount;
14490    const VkValidationFeatureEnableEXT*     pEnabledValidationFeatures;
14491    uint32_t                                disabledValidationFeatureCount;
14492    const VkValidationFeatureDisableEXT*    pDisabledValidationFeatures;
14493} VkValidationFeaturesEXT;
14494
14495
14496
14497// VK_NV_cooperative_matrix is a preprocessor guard. Do not pass it to API calls.
14498#define VK_NV_cooperative_matrix 1
14499#define VK_NV_COOPERATIVE_MATRIX_SPEC_VERSION 1
14500#define VK_NV_COOPERATIVE_MATRIX_EXTENSION_NAME "VK_NV_cooperative_matrix"
14501typedef VkComponentTypeKHR VkComponentTypeNV;
14502
14503typedef VkScopeKHR VkScopeNV;
14504
14505typedef struct VkCooperativeMatrixPropertiesNV {
14506    VkStructureType      sType;
14507    void*                pNext;
14508    uint32_t             MSize;
14509    uint32_t             NSize;
14510    uint32_t             KSize;
14511    VkComponentTypeNV    AType;
14512    VkComponentTypeNV    BType;
14513    VkComponentTypeNV    CType;
14514    VkComponentTypeNV    DType;
14515    VkScopeNV            scope;
14516} VkCooperativeMatrixPropertiesNV;
14517
14518typedef struct VkPhysicalDeviceCooperativeMatrixFeaturesNV {
14519    VkStructureType    sType;
14520    void*              pNext;
14521    VkBool32           cooperativeMatrix;
14522    VkBool32           cooperativeMatrixRobustBufferAccess;
14523} VkPhysicalDeviceCooperativeMatrixFeaturesNV;
14524
14525typedef struct VkPhysicalDeviceCooperativeMatrixPropertiesNV {
14526    VkStructureType       sType;
14527    void*                 pNext;
14528    VkShaderStageFlags    cooperativeMatrixSupportedStages;
14529} VkPhysicalDeviceCooperativeMatrixPropertiesNV;
14530
14531typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties);
14532
14533#ifndef VK_NO_PROTOTYPES
14534VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCooperativeMatrixPropertiesNV(
14535    VkPhysicalDevice                            physicalDevice,
14536    uint32_t*                                   pPropertyCount,
14537    VkCooperativeMatrixPropertiesNV*            pProperties);
14538#endif
14539
14540
14541// VK_NV_coverage_reduction_mode is a preprocessor guard. Do not pass it to API calls.
14542#define VK_NV_coverage_reduction_mode 1
14543#define VK_NV_COVERAGE_REDUCTION_MODE_SPEC_VERSION 1
14544#define VK_NV_COVERAGE_REDUCTION_MODE_EXTENSION_NAME "VK_NV_coverage_reduction_mode"
14545
14546typedef enum VkCoverageReductionModeNV {
14547    VK_COVERAGE_REDUCTION_MODE_MERGE_NV = 0,
14548    VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV = 1,
14549    VK_COVERAGE_REDUCTION_MODE_MAX_ENUM_NV = 0x7FFFFFFF
14550} VkCoverageReductionModeNV;
14551typedef VkFlags VkPipelineCoverageReductionStateCreateFlagsNV;
14552typedef struct VkPhysicalDeviceCoverageReductionModeFeaturesNV {
14553    VkStructureType    sType;
14554    void*              pNext;
14555    VkBool32           coverageReductionMode;
14556} VkPhysicalDeviceCoverageReductionModeFeaturesNV;
14557
14558typedef struct VkPipelineCoverageReductionStateCreateInfoNV {
14559    VkStructureType                                  sType;
14560    const void*                                      pNext;
14561    VkPipelineCoverageReductionStateCreateFlagsNV    flags;
14562    VkCoverageReductionModeNV                        coverageReductionMode;
14563} VkPipelineCoverageReductionStateCreateInfoNV;
14564
14565typedef struct VkFramebufferMixedSamplesCombinationNV {
14566    VkStructureType              sType;
14567    void*                        pNext;
14568    VkCoverageReductionModeNV    coverageReductionMode;
14569    VkSampleCountFlagBits        rasterizationSamples;
14570    VkSampleCountFlags           depthStencilSamples;
14571    VkSampleCountFlags           colorSamples;
14572} VkFramebufferMixedSamplesCombinationNV;
14573
14574typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV)(VkPhysicalDevice physicalDevice, uint32_t* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations);
14575
14576#ifndef VK_NO_PROTOTYPES
14577VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV(
14578    VkPhysicalDevice                            physicalDevice,
14579    uint32_t*                                   pCombinationCount,
14580    VkFramebufferMixedSamplesCombinationNV*     pCombinations);
14581#endif
14582
14583
14584// VK_EXT_fragment_shader_interlock is a preprocessor guard. Do not pass it to API calls.
14585#define VK_EXT_fragment_shader_interlock 1
14586#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_SPEC_VERSION 1
14587#define VK_EXT_FRAGMENT_SHADER_INTERLOCK_EXTENSION_NAME "VK_EXT_fragment_shader_interlock"
14588typedef struct VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT {
14589    VkStructureType    sType;
14590    void*              pNext;
14591    VkBool32           fragmentShaderSampleInterlock;
14592    VkBool32           fragmentShaderPixelInterlock;
14593    VkBool32           fragmentShaderShadingRateInterlock;
14594} VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT;
14595
14596
14597
14598// VK_EXT_ycbcr_image_arrays is a preprocessor guard. Do not pass it to API calls.
14599#define VK_EXT_ycbcr_image_arrays 1
14600#define VK_EXT_YCBCR_IMAGE_ARRAYS_SPEC_VERSION 1
14601#define VK_EXT_YCBCR_IMAGE_ARRAYS_EXTENSION_NAME "VK_EXT_ycbcr_image_arrays"
14602typedef struct VkPhysicalDeviceYcbcrImageArraysFeaturesEXT {
14603    VkStructureType    sType;
14604    void*              pNext;
14605    VkBool32           ycbcrImageArrays;
14606} VkPhysicalDeviceYcbcrImageArraysFeaturesEXT;
14607
14608
14609
14610// VK_EXT_provoking_vertex is a preprocessor guard. Do not pass it to API calls.
14611#define VK_EXT_provoking_vertex 1
14612#define VK_EXT_PROVOKING_VERTEX_SPEC_VERSION 1
14613#define VK_EXT_PROVOKING_VERTEX_EXTENSION_NAME "VK_EXT_provoking_vertex"
14614
14615typedef enum VkProvokingVertexModeEXT {
14616    VK_PROVOKING_VERTEX_MODE_FIRST_VERTEX_EXT = 0,
14617    VK_PROVOKING_VERTEX_MODE_LAST_VERTEX_EXT = 1,
14618    VK_PROVOKING_VERTEX_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
14619} VkProvokingVertexModeEXT;
14620typedef struct VkPhysicalDeviceProvokingVertexFeaturesEXT {
14621    VkStructureType    sType;
14622    void*              pNext;
14623    VkBool32           provokingVertexLast;
14624    VkBool32           transformFeedbackPreservesProvokingVertex;
14625} VkPhysicalDeviceProvokingVertexFeaturesEXT;
14626
14627typedef struct VkPhysicalDeviceProvokingVertexPropertiesEXT {
14628    VkStructureType    sType;
14629    void*              pNext;
14630    VkBool32           provokingVertexModePerPipeline;
14631    VkBool32           transformFeedbackPreservesTriangleFanProvokingVertex;
14632} VkPhysicalDeviceProvokingVertexPropertiesEXT;
14633
14634typedef struct VkPipelineRasterizationProvokingVertexStateCreateInfoEXT {
14635    VkStructureType             sType;
14636    const void*                 pNext;
14637    VkProvokingVertexModeEXT    provokingVertexMode;
14638} VkPipelineRasterizationProvokingVertexStateCreateInfoEXT;
14639
14640
14641
14642// VK_EXT_headless_surface is a preprocessor guard. Do not pass it to API calls.
14643#define VK_EXT_headless_surface 1
14644#define VK_EXT_HEADLESS_SURFACE_SPEC_VERSION 1
14645#define VK_EXT_HEADLESS_SURFACE_EXTENSION_NAME "VK_EXT_headless_surface"
14646typedef VkFlags VkHeadlessSurfaceCreateFlagsEXT;
14647typedef struct VkHeadlessSurfaceCreateInfoEXT {
14648    VkStructureType                    sType;
14649    const void*                        pNext;
14650    VkHeadlessSurfaceCreateFlagsEXT    flags;
14651} VkHeadlessSurfaceCreateInfoEXT;
14652
14653typedef VkResult (VKAPI_PTR *PFN_vkCreateHeadlessSurfaceEXT)(VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
14654
14655#ifndef VK_NO_PROTOTYPES
14656VKAPI_ATTR VkResult VKAPI_CALL vkCreateHeadlessSurfaceEXT(
14657    VkInstance                                  instance,
14658    const VkHeadlessSurfaceCreateInfoEXT*       pCreateInfo,
14659    const VkAllocationCallbacks*                pAllocator,
14660    VkSurfaceKHR*                               pSurface);
14661#endif
14662
14663
14664// VK_EXT_line_rasterization is a preprocessor guard. Do not pass it to API calls.
14665#define VK_EXT_line_rasterization 1
14666#define VK_EXT_LINE_RASTERIZATION_SPEC_VERSION 1
14667#define VK_EXT_LINE_RASTERIZATION_EXTENSION_NAME "VK_EXT_line_rasterization"
14668
14669typedef enum VkLineRasterizationModeEXT {
14670    VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0,
14671    VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1,
14672    VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2,
14673    VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3,
14674    VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
14675} VkLineRasterizationModeEXT;
14676typedef struct VkPhysicalDeviceLineRasterizationFeaturesEXT {
14677    VkStructureType    sType;
14678    void*              pNext;
14679    VkBool32           rectangularLines;
14680    VkBool32           bresenhamLines;
14681    VkBool32           smoothLines;
14682    VkBool32           stippledRectangularLines;
14683    VkBool32           stippledBresenhamLines;
14684    VkBool32           stippledSmoothLines;
14685} VkPhysicalDeviceLineRasterizationFeaturesEXT;
14686
14687typedef struct VkPhysicalDeviceLineRasterizationPropertiesEXT {
14688    VkStructureType    sType;
14689    void*              pNext;
14690    uint32_t           lineSubPixelPrecisionBits;
14691} VkPhysicalDeviceLineRasterizationPropertiesEXT;
14692
14693typedef struct VkPipelineRasterizationLineStateCreateInfoEXT {
14694    VkStructureType               sType;
14695    const void*                   pNext;
14696    VkLineRasterizationModeEXT    lineRasterizationMode;
14697    VkBool32                      stippledLineEnable;
14698    uint32_t                      lineStippleFactor;
14699    uint16_t                      lineStipplePattern;
14700} VkPipelineRasterizationLineStateCreateInfoEXT;
14701
14702typedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleEXT)(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern);
14703
14704#ifndef VK_NO_PROTOTYPES
14705VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleEXT(
14706    VkCommandBuffer                             commandBuffer,
14707    uint32_t                                    lineStippleFactor,
14708    uint16_t                                    lineStipplePattern);
14709#endif
14710
14711
14712// VK_EXT_shader_atomic_float is a preprocessor guard. Do not pass it to API calls.
14713#define VK_EXT_shader_atomic_float 1
14714#define VK_EXT_SHADER_ATOMIC_FLOAT_SPEC_VERSION 1
14715#define VK_EXT_SHADER_ATOMIC_FLOAT_EXTENSION_NAME "VK_EXT_shader_atomic_float"
14716typedef struct VkPhysicalDeviceShaderAtomicFloatFeaturesEXT {
14717    VkStructureType    sType;
14718    void*              pNext;
14719    VkBool32           shaderBufferFloat32Atomics;
14720    VkBool32           shaderBufferFloat32AtomicAdd;
14721    VkBool32           shaderBufferFloat64Atomics;
14722    VkBool32           shaderBufferFloat64AtomicAdd;
14723    VkBool32           shaderSharedFloat32Atomics;
14724    VkBool32           shaderSharedFloat32AtomicAdd;
14725    VkBool32           shaderSharedFloat64Atomics;
14726    VkBool32           shaderSharedFloat64AtomicAdd;
14727    VkBool32           shaderImageFloat32Atomics;
14728    VkBool32           shaderImageFloat32AtomicAdd;
14729    VkBool32           sparseImageFloat32Atomics;
14730    VkBool32           sparseImageFloat32AtomicAdd;
14731} VkPhysicalDeviceShaderAtomicFloatFeaturesEXT;
14732
14733
14734
14735// VK_EXT_host_query_reset is a preprocessor guard. Do not pass it to API calls.
14736#define VK_EXT_host_query_reset 1
14737#define VK_EXT_HOST_QUERY_RESET_SPEC_VERSION 1
14738#define VK_EXT_HOST_QUERY_RESET_EXTENSION_NAME "VK_EXT_host_query_reset"
14739typedef VkPhysicalDeviceHostQueryResetFeatures VkPhysicalDeviceHostQueryResetFeaturesEXT;
14740
14741typedef void (VKAPI_PTR *PFN_vkResetQueryPoolEXT)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);
14742
14743#ifndef VK_NO_PROTOTYPES
14744VKAPI_ATTR void VKAPI_CALL vkResetQueryPoolEXT(
14745    VkDevice                                    device,
14746    VkQueryPool                                 queryPool,
14747    uint32_t                                    firstQuery,
14748    uint32_t                                    queryCount);
14749#endif
14750
14751
14752// VK_EXT_index_type_uint8 is a preprocessor guard. Do not pass it to API calls.
14753#define VK_EXT_index_type_uint8 1
14754#define VK_EXT_INDEX_TYPE_UINT8_SPEC_VERSION 1
14755#define VK_EXT_INDEX_TYPE_UINT8_EXTENSION_NAME "VK_EXT_index_type_uint8"
14756typedef struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT {
14757    VkStructureType    sType;
14758    void*              pNext;
14759    VkBool32           indexTypeUint8;
14760} VkPhysicalDeviceIndexTypeUint8FeaturesEXT;
14761
14762
14763
14764// VK_EXT_extended_dynamic_state is a preprocessor guard. Do not pass it to API calls.
14765#define VK_EXT_extended_dynamic_state 1
14766#define VK_EXT_EXTENDED_DYNAMIC_STATE_SPEC_VERSION 1
14767#define VK_EXT_EXTENDED_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_extended_dynamic_state"
14768typedef struct VkPhysicalDeviceExtendedDynamicStateFeaturesEXT {
14769    VkStructureType    sType;
14770    void*              pNext;
14771    VkBool32           extendedDynamicState;
14772} VkPhysicalDeviceExtendedDynamicStateFeaturesEXT;
14773
14774typedef void (VKAPI_PTR *PFN_vkCmdSetCullModeEXT)(VkCommandBuffer commandBuffer, VkCullModeFlags cullMode);
14775typedef void (VKAPI_PTR *PFN_vkCmdSetFrontFaceEXT)(VkCommandBuffer commandBuffer, VkFrontFace frontFace);
14776typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveTopologyEXT)(VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology);
14777typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports);
14778typedef void (VKAPI_PTR *PFN_vkCmdSetScissorWithCountEXT)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors);
14779typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers2EXT)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides);
14780typedef void (VKAPI_PTR *PFN_vkCmdSetDepthTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthTestEnable);
14781typedef void (VKAPI_PTR *PFN_vkCmdSetDepthWriteEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable);
14782typedef void (VKAPI_PTR *PFN_vkCmdSetDepthCompareOpEXT)(VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp);
14783typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBoundsTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable);
14784typedef void (VKAPI_PTR *PFN_vkCmdSetStencilTestEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable);
14785typedef void (VKAPI_PTR *PFN_vkCmdSetStencilOpEXT)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, VkStencilOp failOp, VkStencilOp passOp, VkStencilOp depthFailOp, VkCompareOp compareOp);
14786
14787#ifndef VK_NO_PROTOTYPES
14788VKAPI_ATTR void VKAPI_CALL vkCmdSetCullModeEXT(
14789    VkCommandBuffer                             commandBuffer,
14790    VkCullModeFlags                             cullMode);
14791
14792VKAPI_ATTR void VKAPI_CALL vkCmdSetFrontFaceEXT(
14793    VkCommandBuffer                             commandBuffer,
14794    VkFrontFace                                 frontFace);
14795
14796VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveTopologyEXT(
14797    VkCommandBuffer                             commandBuffer,
14798    VkPrimitiveTopology                         primitiveTopology);
14799
14800VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWithCountEXT(
14801    VkCommandBuffer                             commandBuffer,
14802    uint32_t                                    viewportCount,
14803    const VkViewport*                           pViewports);
14804
14805VKAPI_ATTR void VKAPI_CALL vkCmdSetScissorWithCountEXT(
14806    VkCommandBuffer                             commandBuffer,
14807    uint32_t                                    scissorCount,
14808    const VkRect2D*                             pScissors);
14809
14810VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers2EXT(
14811    VkCommandBuffer                             commandBuffer,
14812    uint32_t                                    firstBinding,
14813    uint32_t                                    bindingCount,
14814    const VkBuffer*                             pBuffers,
14815    const VkDeviceSize*                         pOffsets,
14816    const VkDeviceSize*                         pSizes,
14817    const VkDeviceSize*                         pStrides);
14818
14819VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthTestEnableEXT(
14820    VkCommandBuffer                             commandBuffer,
14821    VkBool32                                    depthTestEnable);
14822
14823VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthWriteEnableEXT(
14824    VkCommandBuffer                             commandBuffer,
14825    VkBool32                                    depthWriteEnable);
14826
14827VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthCompareOpEXT(
14828    VkCommandBuffer                             commandBuffer,
14829    VkCompareOp                                 depthCompareOp);
14830
14831VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBoundsTestEnableEXT(
14832    VkCommandBuffer                             commandBuffer,
14833    VkBool32                                    depthBoundsTestEnable);
14834
14835VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilTestEnableEXT(
14836    VkCommandBuffer                             commandBuffer,
14837    VkBool32                                    stencilTestEnable);
14838
14839VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilOpEXT(
14840    VkCommandBuffer                             commandBuffer,
14841    VkStencilFaceFlags                          faceMask,
14842    VkStencilOp                                 failOp,
14843    VkStencilOp                                 passOp,
14844    VkStencilOp                                 depthFailOp,
14845    VkCompareOp                                 compareOp);
14846#endif
14847
14848
14849// VK_EXT_host_image_copy is a preprocessor guard. Do not pass it to API calls.
14850#define VK_EXT_host_image_copy 1
14851#define VK_EXT_HOST_IMAGE_COPY_SPEC_VERSION 1
14852#define VK_EXT_HOST_IMAGE_COPY_EXTENSION_NAME "VK_EXT_host_image_copy"
14853
14854typedef enum VkHostImageCopyFlagBitsEXT {
14855    VK_HOST_IMAGE_COPY_MEMCPY_EXT = 0x00000001,
14856    VK_HOST_IMAGE_COPY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
14857} VkHostImageCopyFlagBitsEXT;
14858typedef VkFlags VkHostImageCopyFlagsEXT;
14859typedef struct VkPhysicalDeviceHostImageCopyFeaturesEXT {
14860    VkStructureType    sType;
14861    void*              pNext;
14862    VkBool32           hostImageCopy;
14863} VkPhysicalDeviceHostImageCopyFeaturesEXT;
14864
14865typedef struct VkPhysicalDeviceHostImageCopyPropertiesEXT {
14866    VkStructureType    sType;
14867    void*              pNext;
14868    uint32_t           copySrcLayoutCount;
14869    VkImageLayout*     pCopySrcLayouts;
14870    uint32_t           copyDstLayoutCount;
14871    VkImageLayout*     pCopyDstLayouts;
14872    uint8_t            optimalTilingLayoutUUID[VK_UUID_SIZE];
14873    VkBool32           identicalMemoryTypeRequirements;
14874} VkPhysicalDeviceHostImageCopyPropertiesEXT;
14875
14876typedef struct VkMemoryToImageCopyEXT {
14877    VkStructureType             sType;
14878    const void*                 pNext;
14879    const void*                 pHostPointer;
14880    uint32_t                    memoryRowLength;
14881    uint32_t                    memoryImageHeight;
14882    VkImageSubresourceLayers    imageSubresource;
14883    VkOffset3D                  imageOffset;
14884    VkExtent3D                  imageExtent;
14885} VkMemoryToImageCopyEXT;
14886
14887typedef struct VkImageToMemoryCopyEXT {
14888    VkStructureType             sType;
14889    const void*                 pNext;
14890    void*                       pHostPointer;
14891    uint32_t                    memoryRowLength;
14892    uint32_t                    memoryImageHeight;
14893    VkImageSubresourceLayers    imageSubresource;
14894    VkOffset3D                  imageOffset;
14895    VkExtent3D                  imageExtent;
14896} VkImageToMemoryCopyEXT;
14897
14898typedef struct VkCopyMemoryToImageInfoEXT {
14899    VkStructureType                  sType;
14900    const void*                      pNext;
14901    VkHostImageCopyFlagsEXT          flags;
14902    VkImage                          dstImage;
14903    VkImageLayout                    dstImageLayout;
14904    uint32_t                         regionCount;
14905    const VkMemoryToImageCopyEXT*    pRegions;
14906} VkCopyMemoryToImageInfoEXT;
14907
14908typedef struct VkCopyImageToMemoryInfoEXT {
14909    VkStructureType                  sType;
14910    const void*                      pNext;
14911    VkHostImageCopyFlagsEXT          flags;
14912    VkImage                          srcImage;
14913    VkImageLayout                    srcImageLayout;
14914    uint32_t                         regionCount;
14915    const VkImageToMemoryCopyEXT*    pRegions;
14916} VkCopyImageToMemoryInfoEXT;
14917
14918typedef struct VkCopyImageToImageInfoEXT {
14919    VkStructureType            sType;
14920    const void*                pNext;
14921    VkHostImageCopyFlagsEXT    flags;
14922    VkImage                    srcImage;
14923    VkImageLayout              srcImageLayout;
14924    VkImage                    dstImage;
14925    VkImageLayout              dstImageLayout;
14926    uint32_t                   regionCount;
14927    const VkImageCopy2*        pRegions;
14928} VkCopyImageToImageInfoEXT;
14929
14930typedef struct VkHostImageLayoutTransitionInfoEXT {
14931    VkStructureType            sType;
14932    const void*                pNext;
14933    VkImage                    image;
14934    VkImageLayout              oldLayout;
14935    VkImageLayout              newLayout;
14936    VkImageSubresourceRange    subresourceRange;
14937} VkHostImageLayoutTransitionInfoEXT;
14938
14939typedef struct VkSubresourceHostMemcpySizeEXT {
14940    VkStructureType    sType;
14941    void*              pNext;
14942    VkDeviceSize       size;
14943} VkSubresourceHostMemcpySizeEXT;
14944
14945typedef struct VkHostImageCopyDevicePerformanceQueryEXT {
14946    VkStructureType    sType;
14947    void*              pNext;
14948    VkBool32           optimalDeviceAccess;
14949    VkBool32           identicalMemoryLayout;
14950} VkHostImageCopyDevicePerformanceQueryEXT;
14951
14952typedef VkSubresourceLayout2KHR VkSubresourceLayout2EXT;
14953
14954typedef VkImageSubresource2KHR VkImageSubresource2EXT;
14955
14956typedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToImageEXT)(VkDevice device, const VkCopyMemoryToImageInfoEXT* pCopyMemoryToImageInfo);
14957typedef VkResult (VKAPI_PTR *PFN_vkCopyImageToMemoryEXT)(VkDevice device, const VkCopyImageToMemoryInfoEXT* pCopyImageToMemoryInfo);
14958typedef VkResult (VKAPI_PTR *PFN_vkCopyImageToImageEXT)(VkDevice device, const VkCopyImageToImageInfoEXT* pCopyImageToImageInfo);
14959typedef VkResult (VKAPI_PTR *PFN_vkTransitionImageLayoutEXT)(VkDevice device, uint32_t transitionCount, const VkHostImageLayoutTransitionInfoEXT* pTransitions);
14960typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout2EXT)(VkDevice device, VkImage image, const VkImageSubresource2KHR* pSubresource, VkSubresourceLayout2KHR* pLayout);
14961
14962#ifndef VK_NO_PROTOTYPES
14963VKAPI_ATTR VkResult VKAPI_CALL vkCopyMemoryToImageEXT(
14964    VkDevice                                    device,
14965    const VkCopyMemoryToImageInfoEXT*           pCopyMemoryToImageInfo);
14966
14967VKAPI_ATTR VkResult VKAPI_CALL vkCopyImageToMemoryEXT(
14968    VkDevice                                    device,
14969    const VkCopyImageToMemoryInfoEXT*           pCopyImageToMemoryInfo);
14970
14971VKAPI_ATTR VkResult VKAPI_CALL vkCopyImageToImageEXT(
14972    VkDevice                                    device,
14973    const VkCopyImageToImageInfoEXT*            pCopyImageToImageInfo);
14974
14975VKAPI_ATTR VkResult VKAPI_CALL vkTransitionImageLayoutEXT(
14976    VkDevice                                    device,
14977    uint32_t                                    transitionCount,
14978    const VkHostImageLayoutTransitionInfoEXT*   pTransitions);
14979
14980VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout2EXT(
14981    VkDevice                                    device,
14982    VkImage                                     image,
14983    const VkImageSubresource2KHR*               pSubresource,
14984    VkSubresourceLayout2KHR*                    pLayout);
14985#endif
14986
14987
14988// VK_EXT_shader_atomic_float2 is a preprocessor guard. Do not pass it to API calls.
14989#define VK_EXT_shader_atomic_float2 1
14990#define VK_EXT_SHADER_ATOMIC_FLOAT_2_SPEC_VERSION 1
14991#define VK_EXT_SHADER_ATOMIC_FLOAT_2_EXTENSION_NAME "VK_EXT_shader_atomic_float2"
14992typedef struct VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT {
14993    VkStructureType    sType;
14994    void*              pNext;
14995    VkBool32           shaderBufferFloat16Atomics;
14996    VkBool32           shaderBufferFloat16AtomicAdd;
14997    VkBool32           shaderBufferFloat16AtomicMinMax;
14998    VkBool32           shaderBufferFloat32AtomicMinMax;
14999    VkBool32           shaderBufferFloat64AtomicMinMax;
15000    VkBool32           shaderSharedFloat16Atomics;
15001    VkBool32           shaderSharedFloat16AtomicAdd;
15002    VkBool32           shaderSharedFloat16AtomicMinMax;
15003    VkBool32           shaderSharedFloat32AtomicMinMax;
15004    VkBool32           shaderSharedFloat64AtomicMinMax;
15005    VkBool32           shaderImageFloat32AtomicMinMax;
15006    VkBool32           sparseImageFloat32AtomicMinMax;
15007} VkPhysicalDeviceShaderAtomicFloat2FeaturesEXT;
15008
15009
15010
15011// VK_EXT_surface_maintenance1 is a preprocessor guard. Do not pass it to API calls.
15012#define VK_EXT_surface_maintenance1 1
15013#define VK_EXT_SURFACE_MAINTENANCE_1_SPEC_VERSION 1
15014#define VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME "VK_EXT_surface_maintenance1"
15015
15016typedef enum VkPresentScalingFlagBitsEXT {
15017    VK_PRESENT_SCALING_ONE_TO_ONE_BIT_EXT = 0x00000001,
15018    VK_PRESENT_SCALING_ASPECT_RATIO_STRETCH_BIT_EXT = 0x00000002,
15019    VK_PRESENT_SCALING_STRETCH_BIT_EXT = 0x00000004,
15020    VK_PRESENT_SCALING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
15021} VkPresentScalingFlagBitsEXT;
15022typedef VkFlags VkPresentScalingFlagsEXT;
15023
15024typedef enum VkPresentGravityFlagBitsEXT {
15025    VK_PRESENT_GRAVITY_MIN_BIT_EXT = 0x00000001,
15026    VK_PRESENT_GRAVITY_MAX_BIT_EXT = 0x00000002,
15027    VK_PRESENT_GRAVITY_CENTERED_BIT_EXT = 0x00000004,
15028    VK_PRESENT_GRAVITY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
15029} VkPresentGravityFlagBitsEXT;
15030typedef VkFlags VkPresentGravityFlagsEXT;
15031typedef struct VkSurfacePresentModeEXT {
15032    VkStructureType     sType;
15033    void*               pNext;
15034    VkPresentModeKHR    presentMode;
15035} VkSurfacePresentModeEXT;
15036
15037typedef struct VkSurfacePresentScalingCapabilitiesEXT {
15038    VkStructureType             sType;
15039    void*                       pNext;
15040    VkPresentScalingFlagsEXT    supportedPresentScaling;
15041    VkPresentGravityFlagsEXT    supportedPresentGravityX;
15042    VkPresentGravityFlagsEXT    supportedPresentGravityY;
15043    VkExtent2D                  minScaledImageExtent;
15044    VkExtent2D                  maxScaledImageExtent;
15045} VkSurfacePresentScalingCapabilitiesEXT;
15046
15047typedef struct VkSurfacePresentModeCompatibilityEXT {
15048    VkStructureType      sType;
15049    void*                pNext;
15050    uint32_t             presentModeCount;
15051    VkPresentModeKHR*    pPresentModes;
15052} VkSurfacePresentModeCompatibilityEXT;
15053
15054
15055
15056// VK_EXT_swapchain_maintenance1 is a preprocessor guard. Do not pass it to API calls.
15057#define VK_EXT_swapchain_maintenance1 1
15058#define VK_EXT_SWAPCHAIN_MAINTENANCE_1_SPEC_VERSION 1
15059#define VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME "VK_EXT_swapchain_maintenance1"
15060typedef struct VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT {
15061    VkStructureType    sType;
15062    void*              pNext;
15063    VkBool32           swapchainMaintenance1;
15064} VkPhysicalDeviceSwapchainMaintenance1FeaturesEXT;
15065
15066typedef struct VkSwapchainPresentFenceInfoEXT {
15067    VkStructureType    sType;
15068    const void*        pNext;
15069    uint32_t           swapchainCount;
15070    const VkFence*     pFences;
15071} VkSwapchainPresentFenceInfoEXT;
15072
15073typedef struct VkSwapchainPresentModesCreateInfoEXT {
15074    VkStructureType            sType;
15075    const void*                pNext;
15076    uint32_t                   presentModeCount;
15077    const VkPresentModeKHR*    pPresentModes;
15078} VkSwapchainPresentModesCreateInfoEXT;
15079
15080typedef struct VkSwapchainPresentModeInfoEXT {
15081    VkStructureType            sType;
15082    const void*                pNext;
15083    uint32_t                   swapchainCount;
15084    const VkPresentModeKHR*    pPresentModes;
15085} VkSwapchainPresentModeInfoEXT;
15086
15087typedef struct VkSwapchainPresentScalingCreateInfoEXT {
15088    VkStructureType             sType;
15089    const void*                 pNext;
15090    VkPresentScalingFlagsEXT    scalingBehavior;
15091    VkPresentGravityFlagsEXT    presentGravityX;
15092    VkPresentGravityFlagsEXT    presentGravityY;
15093} VkSwapchainPresentScalingCreateInfoEXT;
15094
15095typedef struct VkReleaseSwapchainImagesInfoEXT {
15096    VkStructureType    sType;
15097    const void*        pNext;
15098    VkSwapchainKHR     swapchain;
15099    uint32_t           imageIndexCount;
15100    const uint32_t*    pImageIndices;
15101} VkReleaseSwapchainImagesInfoEXT;
15102
15103typedef VkResult (VKAPI_PTR *PFN_vkReleaseSwapchainImagesEXT)(VkDevice device, const VkReleaseSwapchainImagesInfoEXT* pReleaseInfo);
15104
15105#ifndef VK_NO_PROTOTYPES
15106VKAPI_ATTR VkResult VKAPI_CALL vkReleaseSwapchainImagesEXT(
15107    VkDevice                                    device,
15108    const VkReleaseSwapchainImagesInfoEXT*      pReleaseInfo);
15109#endif
15110
15111
15112// VK_EXT_shader_demote_to_helper_invocation is a preprocessor guard. Do not pass it to API calls.
15113#define VK_EXT_shader_demote_to_helper_invocation 1
15114#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_SPEC_VERSION 1
15115#define VK_EXT_SHADER_DEMOTE_TO_HELPER_INVOCATION_EXTENSION_NAME "VK_EXT_shader_demote_to_helper_invocation"
15116typedef VkPhysicalDeviceShaderDemoteToHelperInvocationFeatures VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT;
15117
15118
15119
15120// VK_NV_device_generated_commands is a preprocessor guard. Do not pass it to API calls.
15121#define VK_NV_device_generated_commands 1
15122VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNV)
15123#define VK_NV_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3
15124#define VK_NV_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NV_device_generated_commands"
15125
15126typedef enum VkIndirectCommandsTokenTypeNV {
15127    VK_INDIRECT_COMMANDS_TOKEN_TYPE_SHADER_GROUP_NV = 0,
15128    VK_INDIRECT_COMMANDS_TOKEN_TYPE_STATE_FLAGS_NV = 1,
15129    VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NV = 2,
15130    VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NV = 3,
15131    VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NV = 4,
15132    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NV = 5,
15133    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NV = 6,
15134    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_TASKS_NV = 7,
15135    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_MESH_TASKS_NV = 1000328000,
15136    VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NV = 1000428003,
15137    VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NV = 1000428004,
15138    VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
15139} VkIndirectCommandsTokenTypeNV;
15140
15141typedef enum VkIndirectStateFlagBitsNV {
15142    VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV = 0x00000001,
15143    VK_INDIRECT_STATE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
15144} VkIndirectStateFlagBitsNV;
15145typedef VkFlags VkIndirectStateFlagsNV;
15146
15147typedef enum VkIndirectCommandsLayoutUsageFlagBitsNV {
15148    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EXPLICIT_PREPROCESS_BIT_NV = 0x00000001,
15149    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NV = 0x00000002,
15150    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NV = 0x00000004,
15151    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
15152} VkIndirectCommandsLayoutUsageFlagBitsNV;
15153typedef VkFlags VkIndirectCommandsLayoutUsageFlagsNV;
15154typedef struct VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV {
15155    VkStructureType    sType;
15156    void*              pNext;
15157    uint32_t           maxGraphicsShaderGroupCount;
15158    uint32_t           maxIndirectSequenceCount;
15159    uint32_t           maxIndirectCommandsTokenCount;
15160    uint32_t           maxIndirectCommandsStreamCount;
15161    uint32_t           maxIndirectCommandsTokenOffset;
15162    uint32_t           maxIndirectCommandsStreamStride;
15163    uint32_t           minSequencesCountBufferOffsetAlignment;
15164    uint32_t           minSequencesIndexBufferOffsetAlignment;
15165    uint32_t           minIndirectCommandsBufferOffsetAlignment;
15166} VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV;
15167
15168typedef struct VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV {
15169    VkStructureType    sType;
15170    void*              pNext;
15171    VkBool32           deviceGeneratedCommands;
15172} VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV;
15173
15174typedef struct VkGraphicsShaderGroupCreateInfoNV {
15175    VkStructureType                                 sType;
15176    const void*                                     pNext;
15177    uint32_t                                        stageCount;
15178    const VkPipelineShaderStageCreateInfo*          pStages;
15179    const VkPipelineVertexInputStateCreateInfo*     pVertexInputState;
15180    const VkPipelineTessellationStateCreateInfo*    pTessellationState;
15181} VkGraphicsShaderGroupCreateInfoNV;
15182
15183typedef struct VkGraphicsPipelineShaderGroupsCreateInfoNV {
15184    VkStructureType                             sType;
15185    const void*                                 pNext;
15186    uint32_t                                    groupCount;
15187    const VkGraphicsShaderGroupCreateInfoNV*    pGroups;
15188    uint32_t                                    pipelineCount;
15189    const VkPipeline*                           pPipelines;
15190} VkGraphicsPipelineShaderGroupsCreateInfoNV;
15191
15192typedef struct VkBindShaderGroupIndirectCommandNV {
15193    uint32_t    groupIndex;
15194} VkBindShaderGroupIndirectCommandNV;
15195
15196typedef struct VkBindIndexBufferIndirectCommandNV {
15197    VkDeviceAddress    bufferAddress;
15198    uint32_t           size;
15199    VkIndexType        indexType;
15200} VkBindIndexBufferIndirectCommandNV;
15201
15202typedef struct VkBindVertexBufferIndirectCommandNV {
15203    VkDeviceAddress    bufferAddress;
15204    uint32_t           size;
15205    uint32_t           stride;
15206} VkBindVertexBufferIndirectCommandNV;
15207
15208typedef struct VkSetStateFlagsIndirectCommandNV {
15209    uint32_t    data;
15210} VkSetStateFlagsIndirectCommandNV;
15211
15212typedef struct VkIndirectCommandsStreamNV {
15213    VkBuffer        buffer;
15214    VkDeviceSize    offset;
15215} VkIndirectCommandsStreamNV;
15216
15217typedef struct VkIndirectCommandsLayoutTokenNV {
15218    VkStructureType                  sType;
15219    const void*                      pNext;
15220    VkIndirectCommandsTokenTypeNV    tokenType;
15221    uint32_t                         stream;
15222    uint32_t                         offset;
15223    uint32_t                         vertexBindingUnit;
15224    VkBool32                         vertexDynamicStride;
15225    VkPipelineLayout                 pushconstantPipelineLayout;
15226    VkShaderStageFlags               pushconstantShaderStageFlags;
15227    uint32_t                         pushconstantOffset;
15228    uint32_t                         pushconstantSize;
15229    VkIndirectStateFlagsNV           indirectStateFlags;
15230    uint32_t                         indexTypeCount;
15231    const VkIndexType*               pIndexTypes;
15232    const uint32_t*                  pIndexTypeValues;
15233} VkIndirectCommandsLayoutTokenNV;
15234
15235typedef struct VkIndirectCommandsLayoutCreateInfoNV {
15236    VkStructureType                           sType;
15237    const void*                               pNext;
15238    VkIndirectCommandsLayoutUsageFlagsNV      flags;
15239    VkPipelineBindPoint                       pipelineBindPoint;
15240    uint32_t                                  tokenCount;
15241    const VkIndirectCommandsLayoutTokenNV*    pTokens;
15242    uint32_t                                  streamCount;
15243    const uint32_t*                           pStreamStrides;
15244} VkIndirectCommandsLayoutCreateInfoNV;
15245
15246typedef struct VkGeneratedCommandsInfoNV {
15247    VkStructureType                      sType;
15248    const void*                          pNext;
15249    VkPipelineBindPoint                  pipelineBindPoint;
15250    VkPipeline                           pipeline;
15251    VkIndirectCommandsLayoutNV           indirectCommandsLayout;
15252    uint32_t                             streamCount;
15253    const VkIndirectCommandsStreamNV*    pStreams;
15254    uint32_t                             sequencesCount;
15255    VkBuffer                             preprocessBuffer;
15256    VkDeviceSize                         preprocessOffset;
15257    VkDeviceSize                         preprocessSize;
15258    VkBuffer                             sequencesCountBuffer;
15259    VkDeviceSize                         sequencesCountOffset;
15260    VkBuffer                             sequencesIndexBuffer;
15261    VkDeviceSize                         sequencesIndexOffset;
15262} VkGeneratedCommandsInfoNV;
15263
15264typedef struct VkGeneratedCommandsMemoryRequirementsInfoNV {
15265    VkStructureType               sType;
15266    const void*                   pNext;
15267    VkPipelineBindPoint           pipelineBindPoint;
15268    VkPipeline                    pipeline;
15269    VkIndirectCommandsLayoutNV    indirectCommandsLayout;
15270    uint32_t                      maxSequencesCount;
15271} VkGeneratedCommandsMemoryRequirementsInfoNV;
15272
15273typedef void (VKAPI_PTR *PFN_vkGetGeneratedCommandsMemoryRequirementsNV)(VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2* pMemoryRequirements);
15274typedef void (VKAPI_PTR *PFN_vkCmdPreprocessGeneratedCommandsNV)(VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo);
15275typedef void (VKAPI_PTR *PFN_vkCmdExecuteGeneratedCommandsNV)(VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo);
15276typedef void (VKAPI_PTR *PFN_vkCmdBindPipelineShaderGroupNV)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline, uint32_t groupIndex);
15277typedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectCommandsLayoutNV)(VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout);
15278typedef void (VKAPI_PTR *PFN_vkDestroyIndirectCommandsLayoutNV)(VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, const VkAllocationCallbacks* pAllocator);
15279
15280#ifndef VK_NO_PROTOTYPES
15281VKAPI_ATTR void VKAPI_CALL vkGetGeneratedCommandsMemoryRequirementsNV(
15282    VkDevice                                    device,
15283    const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo,
15284    VkMemoryRequirements2*                      pMemoryRequirements);
15285
15286VKAPI_ATTR void VKAPI_CALL vkCmdPreprocessGeneratedCommandsNV(
15287    VkCommandBuffer                             commandBuffer,
15288    const VkGeneratedCommandsInfoNV*            pGeneratedCommandsInfo);
15289
15290VKAPI_ATTR void VKAPI_CALL vkCmdExecuteGeneratedCommandsNV(
15291    VkCommandBuffer                             commandBuffer,
15292    VkBool32                                    isPreprocessed,
15293    const VkGeneratedCommandsInfoNV*            pGeneratedCommandsInfo);
15294
15295VKAPI_ATTR void VKAPI_CALL vkCmdBindPipelineShaderGroupNV(
15296    VkCommandBuffer                             commandBuffer,
15297    VkPipelineBindPoint                         pipelineBindPoint,
15298    VkPipeline                                  pipeline,
15299    uint32_t                                    groupIndex);
15300
15301VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutNV(
15302    VkDevice                                    device,
15303    const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo,
15304    const VkAllocationCallbacks*                pAllocator,
15305    VkIndirectCommandsLayoutNV*                 pIndirectCommandsLayout);
15306
15307VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutNV(
15308    VkDevice                                    device,
15309    VkIndirectCommandsLayoutNV                  indirectCommandsLayout,
15310    const VkAllocationCallbacks*                pAllocator);
15311#endif
15312
15313
15314// VK_NV_inherited_viewport_scissor is a preprocessor guard. Do not pass it to API calls.
15315#define VK_NV_inherited_viewport_scissor 1
15316#define VK_NV_INHERITED_VIEWPORT_SCISSOR_SPEC_VERSION 1
15317#define VK_NV_INHERITED_VIEWPORT_SCISSOR_EXTENSION_NAME "VK_NV_inherited_viewport_scissor"
15318typedef struct VkPhysicalDeviceInheritedViewportScissorFeaturesNV {
15319    VkStructureType    sType;
15320    void*              pNext;
15321    VkBool32           inheritedViewportScissor2D;
15322} VkPhysicalDeviceInheritedViewportScissorFeaturesNV;
15323
15324typedef struct VkCommandBufferInheritanceViewportScissorInfoNV {
15325    VkStructureType      sType;
15326    const void*          pNext;
15327    VkBool32             viewportScissor2D;
15328    uint32_t             viewportDepthCount;
15329    const VkViewport*    pViewportDepths;
15330} VkCommandBufferInheritanceViewportScissorInfoNV;
15331
15332
15333
15334// VK_EXT_texel_buffer_alignment is a preprocessor guard. Do not pass it to API calls.
15335#define VK_EXT_texel_buffer_alignment 1
15336#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_SPEC_VERSION 1
15337#define VK_EXT_TEXEL_BUFFER_ALIGNMENT_EXTENSION_NAME "VK_EXT_texel_buffer_alignment"
15338typedef struct VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT {
15339    VkStructureType    sType;
15340    void*              pNext;
15341    VkBool32           texelBufferAlignment;
15342} VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT;
15343
15344typedef VkPhysicalDeviceTexelBufferAlignmentProperties VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT;
15345
15346
15347
15348// VK_QCOM_render_pass_transform is a preprocessor guard. Do not pass it to API calls.
15349#define VK_QCOM_render_pass_transform 1
15350#define VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION 4
15351#define VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME "VK_QCOM_render_pass_transform"
15352typedef struct VkRenderPassTransformBeginInfoQCOM {
15353    VkStructureType                  sType;
15354    void*                            pNext;
15355    VkSurfaceTransformFlagBitsKHR    transform;
15356} VkRenderPassTransformBeginInfoQCOM;
15357
15358typedef struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM {
15359    VkStructureType                  sType;
15360    void*                            pNext;
15361    VkSurfaceTransformFlagBitsKHR    transform;
15362    VkRect2D                         renderArea;
15363} VkCommandBufferInheritanceRenderPassTransformInfoQCOM;
15364
15365
15366
15367// VK_EXT_depth_bias_control is a preprocessor guard. Do not pass it to API calls.
15368#define VK_EXT_depth_bias_control 1
15369#define VK_EXT_DEPTH_BIAS_CONTROL_SPEC_VERSION 1
15370#define VK_EXT_DEPTH_BIAS_CONTROL_EXTENSION_NAME "VK_EXT_depth_bias_control"
15371
15372typedef enum VkDepthBiasRepresentationEXT {
15373    VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORMAT_EXT = 0,
15374    VK_DEPTH_BIAS_REPRESENTATION_LEAST_REPRESENTABLE_VALUE_FORCE_UNORM_EXT = 1,
15375    VK_DEPTH_BIAS_REPRESENTATION_FLOAT_EXT = 2,
15376    VK_DEPTH_BIAS_REPRESENTATION_MAX_ENUM_EXT = 0x7FFFFFFF
15377} VkDepthBiasRepresentationEXT;
15378typedef struct VkPhysicalDeviceDepthBiasControlFeaturesEXT {
15379    VkStructureType    sType;
15380    void*              pNext;
15381    VkBool32           depthBiasControl;
15382    VkBool32           leastRepresentableValueForceUnormRepresentation;
15383    VkBool32           floatRepresentation;
15384    VkBool32           depthBiasExact;
15385} VkPhysicalDeviceDepthBiasControlFeaturesEXT;
15386
15387typedef struct VkDepthBiasInfoEXT {
15388    VkStructureType    sType;
15389    const void*        pNext;
15390    float              depthBiasConstantFactor;
15391    float              depthBiasClamp;
15392    float              depthBiasSlopeFactor;
15393} VkDepthBiasInfoEXT;
15394
15395typedef struct VkDepthBiasRepresentationInfoEXT {
15396    VkStructureType                 sType;
15397    const void*                     pNext;
15398    VkDepthBiasRepresentationEXT    depthBiasRepresentation;
15399    VkBool32                        depthBiasExact;
15400} VkDepthBiasRepresentationInfoEXT;
15401
15402typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias2EXT)(VkCommandBuffer commandBuffer, const VkDepthBiasInfoEXT*         pDepthBiasInfo);
15403
15404#ifndef VK_NO_PROTOTYPES
15405VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias2EXT(
15406    VkCommandBuffer                             commandBuffer,
15407    const VkDepthBiasInfoEXT*                   pDepthBiasInfo);
15408#endif
15409
15410
15411// VK_EXT_device_memory_report is a preprocessor guard. Do not pass it to API calls.
15412#define VK_EXT_device_memory_report 1
15413#define VK_EXT_DEVICE_MEMORY_REPORT_SPEC_VERSION 2
15414#define VK_EXT_DEVICE_MEMORY_REPORT_EXTENSION_NAME "VK_EXT_device_memory_report"
15415
15416typedef enum VkDeviceMemoryReportEventTypeEXT {
15417    VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATE_EXT = 0,
15418    VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_FREE_EXT = 1,
15419    VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_IMPORT_EXT = 2,
15420    VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_UNIMPORT_EXT = 3,
15421    VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_ALLOCATION_FAILED_EXT = 4,
15422    VK_DEVICE_MEMORY_REPORT_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
15423} VkDeviceMemoryReportEventTypeEXT;
15424typedef VkFlags VkDeviceMemoryReportFlagsEXT;
15425typedef struct VkPhysicalDeviceDeviceMemoryReportFeaturesEXT {
15426    VkStructureType    sType;
15427    void*              pNext;
15428    VkBool32           deviceMemoryReport;
15429} VkPhysicalDeviceDeviceMemoryReportFeaturesEXT;
15430
15431typedef struct VkDeviceMemoryReportCallbackDataEXT {
15432    VkStructureType                     sType;
15433    void*                               pNext;
15434    VkDeviceMemoryReportFlagsEXT        flags;
15435    VkDeviceMemoryReportEventTypeEXT    type;
15436    uint64_t                            memoryObjectId;
15437    VkDeviceSize                        size;
15438    VkObjectType                        objectType;
15439    uint64_t                            objectHandle;
15440    uint32_t                            heapIndex;
15441} VkDeviceMemoryReportCallbackDataEXT;
15442
15443typedef void (VKAPI_PTR *PFN_vkDeviceMemoryReportCallbackEXT)(
15444    const VkDeviceMemoryReportCallbackDataEXT*  pCallbackData,
15445    void*                                       pUserData);
15446
15447typedef struct VkDeviceDeviceMemoryReportCreateInfoEXT {
15448    VkStructureType                        sType;
15449    const void*                            pNext;
15450    VkDeviceMemoryReportFlagsEXT           flags;
15451    PFN_vkDeviceMemoryReportCallbackEXT    pfnUserCallback;
15452    void*                                  pUserData;
15453} VkDeviceDeviceMemoryReportCreateInfoEXT;
15454
15455
15456
15457// VK_EXT_acquire_drm_display is a preprocessor guard. Do not pass it to API calls.
15458#define VK_EXT_acquire_drm_display 1
15459#define VK_EXT_ACQUIRE_DRM_DISPLAY_SPEC_VERSION 1
15460#define VK_EXT_ACQUIRE_DRM_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_drm_display"
15461typedef VkResult (VKAPI_PTR *PFN_vkAcquireDrmDisplayEXT)(VkPhysicalDevice physicalDevice, int32_t drmFd, VkDisplayKHR display);
15462typedef VkResult (VKAPI_PTR *PFN_vkGetDrmDisplayEXT)(VkPhysicalDevice physicalDevice, int32_t drmFd, uint32_t connectorId, VkDisplayKHR* display);
15463
15464#ifndef VK_NO_PROTOTYPES
15465VKAPI_ATTR VkResult VKAPI_CALL vkAcquireDrmDisplayEXT(
15466    VkPhysicalDevice                            physicalDevice,
15467    int32_t                                     drmFd,
15468    VkDisplayKHR                                display);
15469
15470VKAPI_ATTR VkResult VKAPI_CALL vkGetDrmDisplayEXT(
15471    VkPhysicalDevice                            physicalDevice,
15472    int32_t                                     drmFd,
15473    uint32_t                                    connectorId,
15474    VkDisplayKHR*                               display);
15475#endif
15476
15477
15478// VK_EXT_robustness2 is a preprocessor guard. Do not pass it to API calls.
15479#define VK_EXT_robustness2 1
15480#define VK_EXT_ROBUSTNESS_2_SPEC_VERSION  1
15481#define VK_EXT_ROBUSTNESS_2_EXTENSION_NAME "VK_EXT_robustness2"
15482typedef struct VkPhysicalDeviceRobustness2FeaturesEXT {
15483    VkStructureType    sType;
15484    void*              pNext;
15485    VkBool32           robustBufferAccess2;
15486    VkBool32           robustImageAccess2;
15487    VkBool32           nullDescriptor;
15488} VkPhysicalDeviceRobustness2FeaturesEXT;
15489
15490typedef struct VkPhysicalDeviceRobustness2PropertiesEXT {
15491    VkStructureType    sType;
15492    void*              pNext;
15493    VkDeviceSize       robustStorageBufferAccessSizeAlignment;
15494    VkDeviceSize       robustUniformBufferAccessSizeAlignment;
15495} VkPhysicalDeviceRobustness2PropertiesEXT;
15496
15497
15498
15499// VK_EXT_custom_border_color is a preprocessor guard. Do not pass it to API calls.
15500#define VK_EXT_custom_border_color 1
15501#define VK_EXT_CUSTOM_BORDER_COLOR_SPEC_VERSION 12
15502#define VK_EXT_CUSTOM_BORDER_COLOR_EXTENSION_NAME "VK_EXT_custom_border_color"
15503typedef struct VkSamplerCustomBorderColorCreateInfoEXT {
15504    VkStructureType      sType;
15505    const void*          pNext;
15506    VkClearColorValue    customBorderColor;
15507    VkFormat             format;
15508} VkSamplerCustomBorderColorCreateInfoEXT;
15509
15510typedef struct VkPhysicalDeviceCustomBorderColorPropertiesEXT {
15511    VkStructureType    sType;
15512    void*              pNext;
15513    uint32_t           maxCustomBorderColorSamplers;
15514} VkPhysicalDeviceCustomBorderColorPropertiesEXT;
15515
15516typedef struct VkPhysicalDeviceCustomBorderColorFeaturesEXT {
15517    VkStructureType    sType;
15518    void*              pNext;
15519    VkBool32           customBorderColors;
15520    VkBool32           customBorderColorWithoutFormat;
15521} VkPhysicalDeviceCustomBorderColorFeaturesEXT;
15522
15523
15524
15525// VK_GOOGLE_user_type is a preprocessor guard. Do not pass it to API calls.
15526#define VK_GOOGLE_user_type 1
15527#define VK_GOOGLE_USER_TYPE_SPEC_VERSION  1
15528#define VK_GOOGLE_USER_TYPE_EXTENSION_NAME "VK_GOOGLE_user_type"
15529
15530
15531// VK_NV_present_barrier is a preprocessor guard. Do not pass it to API calls.
15532#define VK_NV_present_barrier 1
15533#define VK_NV_PRESENT_BARRIER_SPEC_VERSION 1
15534#define VK_NV_PRESENT_BARRIER_EXTENSION_NAME "VK_NV_present_barrier"
15535typedef struct VkPhysicalDevicePresentBarrierFeaturesNV {
15536    VkStructureType    sType;
15537    void*              pNext;
15538    VkBool32           presentBarrier;
15539} VkPhysicalDevicePresentBarrierFeaturesNV;
15540
15541typedef struct VkSurfaceCapabilitiesPresentBarrierNV {
15542    VkStructureType    sType;
15543    void*              pNext;
15544    VkBool32           presentBarrierSupported;
15545} VkSurfaceCapabilitiesPresentBarrierNV;
15546
15547typedef struct VkSwapchainPresentBarrierCreateInfoNV {
15548    VkStructureType    sType;
15549    void*              pNext;
15550    VkBool32           presentBarrierEnable;
15551} VkSwapchainPresentBarrierCreateInfoNV;
15552
15553
15554
15555// VK_EXT_private_data is a preprocessor guard. Do not pass it to API calls.
15556#define VK_EXT_private_data 1
15557typedef VkPrivateDataSlot VkPrivateDataSlotEXT;
15558
15559#define VK_EXT_PRIVATE_DATA_SPEC_VERSION  1
15560#define VK_EXT_PRIVATE_DATA_EXTENSION_NAME "VK_EXT_private_data"
15561typedef VkPrivateDataSlotCreateFlags VkPrivateDataSlotCreateFlagsEXT;
15562
15563typedef VkPhysicalDevicePrivateDataFeatures VkPhysicalDevicePrivateDataFeaturesEXT;
15564
15565typedef VkDevicePrivateDataCreateInfo VkDevicePrivateDataCreateInfoEXT;
15566
15567typedef VkPrivateDataSlotCreateInfo VkPrivateDataSlotCreateInfoEXT;
15568
15569typedef VkResult (VKAPI_PTR *PFN_vkCreatePrivateDataSlotEXT)(VkDevice device, const VkPrivateDataSlotCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlot* pPrivateDataSlot);
15570typedef void (VKAPI_PTR *PFN_vkDestroyPrivateDataSlotEXT)(VkDevice device, VkPrivateDataSlot privateDataSlot, const VkAllocationCallbacks* pAllocator);
15571typedef VkResult (VKAPI_PTR *PFN_vkSetPrivateDataEXT)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t data);
15572typedef void (VKAPI_PTR *PFN_vkGetPrivateDataEXT)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlot privateDataSlot, uint64_t* pData);
15573
15574#ifndef VK_NO_PROTOTYPES
15575VKAPI_ATTR VkResult VKAPI_CALL vkCreatePrivateDataSlotEXT(
15576    VkDevice                                    device,
15577    const VkPrivateDataSlotCreateInfo*          pCreateInfo,
15578    const VkAllocationCallbacks*                pAllocator,
15579    VkPrivateDataSlot*                          pPrivateDataSlot);
15580
15581VKAPI_ATTR void VKAPI_CALL vkDestroyPrivateDataSlotEXT(
15582    VkDevice                                    device,
15583    VkPrivateDataSlot                           privateDataSlot,
15584    const VkAllocationCallbacks*                pAllocator);
15585
15586VKAPI_ATTR VkResult VKAPI_CALL vkSetPrivateDataEXT(
15587    VkDevice                                    device,
15588    VkObjectType                                objectType,
15589    uint64_t                                    objectHandle,
15590    VkPrivateDataSlot                           privateDataSlot,
15591    uint64_t                                    data);
15592
15593VKAPI_ATTR void VKAPI_CALL vkGetPrivateDataEXT(
15594    VkDevice                                    device,
15595    VkObjectType                                objectType,
15596    uint64_t                                    objectHandle,
15597    VkPrivateDataSlot                           privateDataSlot,
15598    uint64_t*                                   pData);
15599#endif
15600
15601
15602// VK_EXT_pipeline_creation_cache_control is a preprocessor guard. Do not pass it to API calls.
15603#define VK_EXT_pipeline_creation_cache_control 1
15604#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_SPEC_VERSION 3
15605#define VK_EXT_PIPELINE_CREATION_CACHE_CONTROL_EXTENSION_NAME "VK_EXT_pipeline_creation_cache_control"
15606typedef VkPhysicalDevicePipelineCreationCacheControlFeatures VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT;
15607
15608
15609
15610// VK_NV_device_diagnostics_config is a preprocessor guard. Do not pass it to API calls.
15611#define VK_NV_device_diagnostics_config 1
15612#define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION 2
15613#define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_EXTENSION_NAME "VK_NV_device_diagnostics_config"
15614
15615typedef enum VkDeviceDiagnosticsConfigFlagBitsNV {
15616    VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_DEBUG_INFO_BIT_NV = 0x00000001,
15617    VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_RESOURCE_TRACKING_BIT_NV = 0x00000002,
15618    VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_AUTOMATIC_CHECKPOINTS_BIT_NV = 0x00000004,
15619    VK_DEVICE_DIAGNOSTICS_CONFIG_ENABLE_SHADER_ERROR_REPORTING_BIT_NV = 0x00000008,
15620    VK_DEVICE_DIAGNOSTICS_CONFIG_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
15621} VkDeviceDiagnosticsConfigFlagBitsNV;
15622typedef VkFlags VkDeviceDiagnosticsConfigFlagsNV;
15623typedef struct VkPhysicalDeviceDiagnosticsConfigFeaturesNV {
15624    VkStructureType    sType;
15625    void*              pNext;
15626    VkBool32           diagnosticsConfig;
15627} VkPhysicalDeviceDiagnosticsConfigFeaturesNV;
15628
15629typedef struct VkDeviceDiagnosticsConfigCreateInfoNV {
15630    VkStructureType                     sType;
15631    const void*                         pNext;
15632    VkDeviceDiagnosticsConfigFlagsNV    flags;
15633} VkDeviceDiagnosticsConfigCreateInfoNV;
15634
15635
15636
15637// VK_QCOM_render_pass_store_ops is a preprocessor guard. Do not pass it to API calls.
15638#define VK_QCOM_render_pass_store_ops 1
15639#define VK_QCOM_RENDER_PASS_STORE_OPS_SPEC_VERSION 2
15640#define VK_QCOM_RENDER_PASS_STORE_OPS_EXTENSION_NAME "VK_QCOM_render_pass_store_ops"
15641
15642
15643// VK_NV_cuda_kernel_launch is a preprocessor guard. Do not pass it to API calls.
15644#define VK_NV_cuda_kernel_launch 1
15645VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCudaModuleNV)
15646VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCudaFunctionNV)
15647#define VK_NV_CUDA_KERNEL_LAUNCH_SPEC_VERSION 2
15648#define VK_NV_CUDA_KERNEL_LAUNCH_EXTENSION_NAME "VK_NV_cuda_kernel_launch"
15649typedef struct VkCudaModuleCreateInfoNV {
15650    VkStructureType    sType;
15651    const void*        pNext;
15652    size_t             dataSize;
15653    const void*        pData;
15654} VkCudaModuleCreateInfoNV;
15655
15656typedef struct VkCudaFunctionCreateInfoNV {
15657    VkStructureType    sType;
15658    const void*        pNext;
15659    VkCudaModuleNV     module;
15660    const char*        pName;
15661} VkCudaFunctionCreateInfoNV;
15662
15663typedef struct VkCudaLaunchInfoNV {
15664    VkStructureType        sType;
15665    const void*            pNext;
15666    VkCudaFunctionNV       function;
15667    uint32_t               gridDimX;
15668    uint32_t               gridDimY;
15669    uint32_t               gridDimZ;
15670    uint32_t               blockDimX;
15671    uint32_t               blockDimY;
15672    uint32_t               blockDimZ;
15673    uint32_t               sharedMemBytes;
15674    size_t                 paramCount;
15675    const void* const *    pParams;
15676    size_t                 extraCount;
15677    const void* const *    pExtras;
15678} VkCudaLaunchInfoNV;
15679
15680typedef struct VkPhysicalDeviceCudaKernelLaunchFeaturesNV {
15681    VkStructureType    sType;
15682    void*              pNext;
15683    VkBool32           cudaKernelLaunchFeatures;
15684} VkPhysicalDeviceCudaKernelLaunchFeaturesNV;
15685
15686typedef struct VkPhysicalDeviceCudaKernelLaunchPropertiesNV {
15687    VkStructureType    sType;
15688    void*              pNext;
15689    uint32_t           computeCapabilityMinor;
15690    uint32_t           computeCapabilityMajor;
15691} VkPhysicalDeviceCudaKernelLaunchPropertiesNV;
15692
15693typedef VkResult (VKAPI_PTR *PFN_vkCreateCudaModuleNV)(VkDevice device, const VkCudaModuleCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCudaModuleNV* pModule);
15694typedef VkResult (VKAPI_PTR *PFN_vkGetCudaModuleCacheNV)(VkDevice device, VkCudaModuleNV module, size_t* pCacheSize, void* pCacheData);
15695typedef VkResult (VKAPI_PTR *PFN_vkCreateCudaFunctionNV)(VkDevice device, const VkCudaFunctionCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCudaFunctionNV* pFunction);
15696typedef void (VKAPI_PTR *PFN_vkDestroyCudaModuleNV)(VkDevice device, VkCudaModuleNV module, const VkAllocationCallbacks* pAllocator);
15697typedef void (VKAPI_PTR *PFN_vkDestroyCudaFunctionNV)(VkDevice device, VkCudaFunctionNV function, const VkAllocationCallbacks* pAllocator);
15698typedef void (VKAPI_PTR *PFN_vkCmdCudaLaunchKernelNV)(VkCommandBuffer commandBuffer, const VkCudaLaunchInfoNV* pLaunchInfo);
15699
15700#ifndef VK_NO_PROTOTYPES
15701VKAPI_ATTR VkResult VKAPI_CALL vkCreateCudaModuleNV(
15702    VkDevice                                    device,
15703    const VkCudaModuleCreateInfoNV*             pCreateInfo,
15704    const VkAllocationCallbacks*                pAllocator,
15705    VkCudaModuleNV*                             pModule);
15706
15707VKAPI_ATTR VkResult VKAPI_CALL vkGetCudaModuleCacheNV(
15708    VkDevice                                    device,
15709    VkCudaModuleNV                              module,
15710    size_t*                                     pCacheSize,
15711    void*                                       pCacheData);
15712
15713VKAPI_ATTR VkResult VKAPI_CALL vkCreateCudaFunctionNV(
15714    VkDevice                                    device,
15715    const VkCudaFunctionCreateInfoNV*           pCreateInfo,
15716    const VkAllocationCallbacks*                pAllocator,
15717    VkCudaFunctionNV*                           pFunction);
15718
15719VKAPI_ATTR void VKAPI_CALL vkDestroyCudaModuleNV(
15720    VkDevice                                    device,
15721    VkCudaModuleNV                              module,
15722    const VkAllocationCallbacks*                pAllocator);
15723
15724VKAPI_ATTR void VKAPI_CALL vkDestroyCudaFunctionNV(
15725    VkDevice                                    device,
15726    VkCudaFunctionNV                            function,
15727    const VkAllocationCallbacks*                pAllocator);
15728
15729VKAPI_ATTR void VKAPI_CALL vkCmdCudaLaunchKernelNV(
15730    VkCommandBuffer                             commandBuffer,
15731    const VkCudaLaunchInfoNV*                   pLaunchInfo);
15732#endif
15733
15734
15735// VK_NV_low_latency is a preprocessor guard. Do not pass it to API calls.
15736#define VK_NV_low_latency 1
15737#define VK_NV_LOW_LATENCY_SPEC_VERSION    1
15738#define VK_NV_LOW_LATENCY_EXTENSION_NAME  "VK_NV_low_latency"
15739typedef struct VkQueryLowLatencySupportNV {
15740    VkStructureType    sType;
15741    const void*        pNext;
15742    void*              pQueriedLowLatencyData;
15743} VkQueryLowLatencySupportNV;
15744
15745
15746
15747// VK_EXT_descriptor_buffer is a preprocessor guard. Do not pass it to API calls.
15748#define VK_EXT_descriptor_buffer 1
15749VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureKHR)
15750#define VK_EXT_DESCRIPTOR_BUFFER_SPEC_VERSION 1
15751#define VK_EXT_DESCRIPTOR_BUFFER_EXTENSION_NAME "VK_EXT_descriptor_buffer"
15752typedef struct VkPhysicalDeviceDescriptorBufferPropertiesEXT {
15753    VkStructureType    sType;
15754    void*              pNext;
15755    VkBool32           combinedImageSamplerDescriptorSingleArray;
15756    VkBool32           bufferlessPushDescriptors;
15757    VkBool32           allowSamplerImageViewPostSubmitCreation;
15758    VkDeviceSize       descriptorBufferOffsetAlignment;
15759    uint32_t           maxDescriptorBufferBindings;
15760    uint32_t           maxResourceDescriptorBufferBindings;
15761    uint32_t           maxSamplerDescriptorBufferBindings;
15762    uint32_t           maxEmbeddedImmutableSamplerBindings;
15763    uint32_t           maxEmbeddedImmutableSamplers;
15764    size_t             bufferCaptureReplayDescriptorDataSize;
15765    size_t             imageCaptureReplayDescriptorDataSize;
15766    size_t             imageViewCaptureReplayDescriptorDataSize;
15767    size_t             samplerCaptureReplayDescriptorDataSize;
15768    size_t             accelerationStructureCaptureReplayDescriptorDataSize;
15769    size_t             samplerDescriptorSize;
15770    size_t             combinedImageSamplerDescriptorSize;
15771    size_t             sampledImageDescriptorSize;
15772    size_t             storageImageDescriptorSize;
15773    size_t             uniformTexelBufferDescriptorSize;
15774    size_t             robustUniformTexelBufferDescriptorSize;
15775    size_t             storageTexelBufferDescriptorSize;
15776    size_t             robustStorageTexelBufferDescriptorSize;
15777    size_t             uniformBufferDescriptorSize;
15778    size_t             robustUniformBufferDescriptorSize;
15779    size_t             storageBufferDescriptorSize;
15780    size_t             robustStorageBufferDescriptorSize;
15781    size_t             inputAttachmentDescriptorSize;
15782    size_t             accelerationStructureDescriptorSize;
15783    VkDeviceSize       maxSamplerDescriptorBufferRange;
15784    VkDeviceSize       maxResourceDescriptorBufferRange;
15785    VkDeviceSize       samplerDescriptorBufferAddressSpaceSize;
15786    VkDeviceSize       resourceDescriptorBufferAddressSpaceSize;
15787    VkDeviceSize       descriptorBufferAddressSpaceSize;
15788} VkPhysicalDeviceDescriptorBufferPropertiesEXT;
15789
15790typedef struct VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT {
15791    VkStructureType    sType;
15792    void*              pNext;
15793    size_t             combinedImageSamplerDensityMapDescriptorSize;
15794} VkPhysicalDeviceDescriptorBufferDensityMapPropertiesEXT;
15795
15796typedef struct VkPhysicalDeviceDescriptorBufferFeaturesEXT {
15797    VkStructureType    sType;
15798    void*              pNext;
15799    VkBool32           descriptorBuffer;
15800    VkBool32           descriptorBufferCaptureReplay;
15801    VkBool32           descriptorBufferImageLayoutIgnored;
15802    VkBool32           descriptorBufferPushDescriptors;
15803} VkPhysicalDeviceDescriptorBufferFeaturesEXT;
15804
15805typedef struct VkDescriptorAddressInfoEXT {
15806    VkStructureType    sType;
15807    void*              pNext;
15808    VkDeviceAddress    address;
15809    VkDeviceSize       range;
15810    VkFormat           format;
15811} VkDescriptorAddressInfoEXT;
15812
15813typedef struct VkDescriptorBufferBindingInfoEXT {
15814    VkStructureType       sType;
15815    void*                 pNext;
15816    VkDeviceAddress       address;
15817    VkBufferUsageFlags    usage;
15818} VkDescriptorBufferBindingInfoEXT;
15819
15820typedef struct VkDescriptorBufferBindingPushDescriptorBufferHandleEXT {
15821    VkStructureType    sType;
15822    void*              pNext;
15823    VkBuffer           buffer;
15824} VkDescriptorBufferBindingPushDescriptorBufferHandleEXT;
15825
15826typedef union VkDescriptorDataEXT {
15827    const VkSampler*                     pSampler;
15828    const VkDescriptorImageInfo*         pCombinedImageSampler;
15829    const VkDescriptorImageInfo*         pInputAttachmentImage;
15830    const VkDescriptorImageInfo*         pSampledImage;
15831    const VkDescriptorImageInfo*         pStorageImage;
15832    const VkDescriptorAddressInfoEXT*    pUniformTexelBuffer;
15833    const VkDescriptorAddressInfoEXT*    pStorageTexelBuffer;
15834    const VkDescriptorAddressInfoEXT*    pUniformBuffer;
15835    const VkDescriptorAddressInfoEXT*    pStorageBuffer;
15836    VkDeviceAddress                      accelerationStructure;
15837} VkDescriptorDataEXT;
15838
15839typedef struct VkDescriptorGetInfoEXT {
15840    VkStructureType        sType;
15841    const void*            pNext;
15842    VkDescriptorType       type;
15843    VkDescriptorDataEXT    data;
15844} VkDescriptorGetInfoEXT;
15845
15846typedef struct VkBufferCaptureDescriptorDataInfoEXT {
15847    VkStructureType    sType;
15848    const void*        pNext;
15849    VkBuffer           buffer;
15850} VkBufferCaptureDescriptorDataInfoEXT;
15851
15852typedef struct VkImageCaptureDescriptorDataInfoEXT {
15853    VkStructureType    sType;
15854    const void*        pNext;
15855    VkImage            image;
15856} VkImageCaptureDescriptorDataInfoEXT;
15857
15858typedef struct VkImageViewCaptureDescriptorDataInfoEXT {
15859    VkStructureType    sType;
15860    const void*        pNext;
15861    VkImageView        imageView;
15862} VkImageViewCaptureDescriptorDataInfoEXT;
15863
15864typedef struct VkSamplerCaptureDescriptorDataInfoEXT {
15865    VkStructureType    sType;
15866    const void*        pNext;
15867    VkSampler          sampler;
15868} VkSamplerCaptureDescriptorDataInfoEXT;
15869
15870typedef struct VkOpaqueCaptureDescriptorDataCreateInfoEXT {
15871    VkStructureType    sType;
15872    const void*        pNext;
15873    const void*        opaqueCaptureDescriptorData;
15874} VkOpaqueCaptureDescriptorDataCreateInfoEXT;
15875
15876typedef struct VkAccelerationStructureCaptureDescriptorDataInfoEXT {
15877    VkStructureType               sType;
15878    const void*                   pNext;
15879    VkAccelerationStructureKHR    accelerationStructure;
15880    VkAccelerationStructureNV     accelerationStructureNV;
15881} VkAccelerationStructureCaptureDescriptorDataInfoEXT;
15882
15883typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSizeEXT)(VkDevice device, VkDescriptorSetLayout layout, VkDeviceSize* pLayoutSizeInBytes);
15884typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutBindingOffsetEXT)(VkDevice device, VkDescriptorSetLayout layout, uint32_t binding, VkDeviceSize* pOffset);
15885typedef void (VKAPI_PTR *PFN_vkGetDescriptorEXT)(VkDevice device, const VkDescriptorGetInfoEXT* pDescriptorInfo, size_t dataSize, void* pDescriptor);
15886typedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorBuffersEXT)(VkCommandBuffer commandBuffer, uint32_t bufferCount, const VkDescriptorBufferBindingInfoEXT* pBindingInfos);
15887typedef void (VKAPI_PTR *PFN_vkCmdSetDescriptorBufferOffsetsEXT)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t setCount, const uint32_t* pBufferIndices, const VkDeviceSize* pOffsets);
15888typedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorBufferEmbeddedSamplersEXT)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set);
15889typedef VkResult (VKAPI_PTR *PFN_vkGetBufferOpaqueCaptureDescriptorDataEXT)(VkDevice device, const VkBufferCaptureDescriptorDataInfoEXT* pInfo, void* pData);
15890typedef VkResult (VKAPI_PTR *PFN_vkGetImageOpaqueCaptureDescriptorDataEXT)(VkDevice device, const VkImageCaptureDescriptorDataInfoEXT* pInfo, void* pData);
15891typedef VkResult (VKAPI_PTR *PFN_vkGetImageViewOpaqueCaptureDescriptorDataEXT)(VkDevice device, const VkImageViewCaptureDescriptorDataInfoEXT* pInfo, void* pData);
15892typedef VkResult (VKAPI_PTR *PFN_vkGetSamplerOpaqueCaptureDescriptorDataEXT)(VkDevice device, const VkSamplerCaptureDescriptorDataInfoEXT* pInfo, void* pData);
15893typedef VkResult (VKAPI_PTR *PFN_vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT)(VkDevice device, const VkAccelerationStructureCaptureDescriptorDataInfoEXT* pInfo, void* pData);
15894
15895#ifndef VK_NO_PROTOTYPES
15896VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSizeEXT(
15897    VkDevice                                    device,
15898    VkDescriptorSetLayout                       layout,
15899    VkDeviceSize*                               pLayoutSizeInBytes);
15900
15901VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutBindingOffsetEXT(
15902    VkDevice                                    device,
15903    VkDescriptorSetLayout                       layout,
15904    uint32_t                                    binding,
15905    VkDeviceSize*                               pOffset);
15906
15907VKAPI_ATTR void VKAPI_CALL vkGetDescriptorEXT(
15908    VkDevice                                    device,
15909    const VkDescriptorGetInfoEXT*               pDescriptorInfo,
15910    size_t                                      dataSize,
15911    void*                                       pDescriptor);
15912
15913VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorBuffersEXT(
15914    VkCommandBuffer                             commandBuffer,
15915    uint32_t                                    bufferCount,
15916    const VkDescriptorBufferBindingInfoEXT*     pBindingInfos);
15917
15918VKAPI_ATTR void VKAPI_CALL vkCmdSetDescriptorBufferOffsetsEXT(
15919    VkCommandBuffer                             commandBuffer,
15920    VkPipelineBindPoint                         pipelineBindPoint,
15921    VkPipelineLayout                            layout,
15922    uint32_t                                    firstSet,
15923    uint32_t                                    setCount,
15924    const uint32_t*                             pBufferIndices,
15925    const VkDeviceSize*                         pOffsets);
15926
15927VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorBufferEmbeddedSamplersEXT(
15928    VkCommandBuffer                             commandBuffer,
15929    VkPipelineBindPoint                         pipelineBindPoint,
15930    VkPipelineLayout                            layout,
15931    uint32_t                                    set);
15932
15933VKAPI_ATTR VkResult VKAPI_CALL vkGetBufferOpaqueCaptureDescriptorDataEXT(
15934    VkDevice                                    device,
15935    const VkBufferCaptureDescriptorDataInfoEXT* pInfo,
15936    void*                                       pData);
15937
15938VKAPI_ATTR VkResult VKAPI_CALL vkGetImageOpaqueCaptureDescriptorDataEXT(
15939    VkDevice                                    device,
15940    const VkImageCaptureDescriptorDataInfoEXT*  pInfo,
15941    void*                                       pData);
15942
15943VKAPI_ATTR VkResult VKAPI_CALL vkGetImageViewOpaqueCaptureDescriptorDataEXT(
15944    VkDevice                                    device,
15945    const VkImageViewCaptureDescriptorDataInfoEXT* pInfo,
15946    void*                                       pData);
15947
15948VKAPI_ATTR VkResult VKAPI_CALL vkGetSamplerOpaqueCaptureDescriptorDataEXT(
15949    VkDevice                                    device,
15950    const VkSamplerCaptureDescriptorDataInfoEXT* pInfo,
15951    void*                                       pData);
15952
15953VKAPI_ATTR VkResult VKAPI_CALL vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT(
15954    VkDevice                                    device,
15955    const VkAccelerationStructureCaptureDescriptorDataInfoEXT* pInfo,
15956    void*                                       pData);
15957#endif
15958
15959
15960// VK_EXT_graphics_pipeline_library is a preprocessor guard. Do not pass it to API calls.
15961#define VK_EXT_graphics_pipeline_library 1
15962#define VK_EXT_GRAPHICS_PIPELINE_LIBRARY_SPEC_VERSION 1
15963#define VK_EXT_GRAPHICS_PIPELINE_LIBRARY_EXTENSION_NAME "VK_EXT_graphics_pipeline_library"
15964
15965typedef enum VkGraphicsPipelineLibraryFlagBitsEXT {
15966    VK_GRAPHICS_PIPELINE_LIBRARY_VERTEX_INPUT_INTERFACE_BIT_EXT = 0x00000001,
15967    VK_GRAPHICS_PIPELINE_LIBRARY_PRE_RASTERIZATION_SHADERS_BIT_EXT = 0x00000002,
15968    VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_SHADER_BIT_EXT = 0x00000004,
15969    VK_GRAPHICS_PIPELINE_LIBRARY_FRAGMENT_OUTPUT_INTERFACE_BIT_EXT = 0x00000008,
15970    VK_GRAPHICS_PIPELINE_LIBRARY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
15971} VkGraphicsPipelineLibraryFlagBitsEXT;
15972typedef VkFlags VkGraphicsPipelineLibraryFlagsEXT;
15973typedef struct VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT {
15974    VkStructureType    sType;
15975    void*              pNext;
15976    VkBool32           graphicsPipelineLibrary;
15977} VkPhysicalDeviceGraphicsPipelineLibraryFeaturesEXT;
15978
15979typedef struct VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT {
15980    VkStructureType    sType;
15981    void*              pNext;
15982    VkBool32           graphicsPipelineLibraryFastLinking;
15983    VkBool32           graphicsPipelineLibraryIndependentInterpolationDecoration;
15984} VkPhysicalDeviceGraphicsPipelineLibraryPropertiesEXT;
15985
15986typedef struct VkGraphicsPipelineLibraryCreateInfoEXT {
15987    VkStructureType                      sType;
15988    const void*                          pNext;
15989    VkGraphicsPipelineLibraryFlagsEXT    flags;
15990} VkGraphicsPipelineLibraryCreateInfoEXT;
15991
15992
15993
15994// VK_AMD_shader_early_and_late_fragment_tests is a preprocessor guard. Do not pass it to API calls.
15995#define VK_AMD_shader_early_and_late_fragment_tests 1
15996#define VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_SPEC_VERSION 1
15997#define VK_AMD_SHADER_EARLY_AND_LATE_FRAGMENT_TESTS_EXTENSION_NAME "VK_AMD_shader_early_and_late_fragment_tests"
15998typedef struct VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD {
15999    VkStructureType    sType;
16000    void*              pNext;
16001    VkBool32           shaderEarlyAndLateFragmentTests;
16002} VkPhysicalDeviceShaderEarlyAndLateFragmentTestsFeaturesAMD;
16003
16004
16005
16006// VK_NV_fragment_shading_rate_enums is a preprocessor guard. Do not pass it to API calls.
16007#define VK_NV_fragment_shading_rate_enums 1
16008#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_SPEC_VERSION 1
16009#define VK_NV_FRAGMENT_SHADING_RATE_ENUMS_EXTENSION_NAME "VK_NV_fragment_shading_rate_enums"
16010
16011typedef enum VkFragmentShadingRateTypeNV {
16012    VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV = 0,
16013    VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV = 1,
16014    VK_FRAGMENT_SHADING_RATE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
16015} VkFragmentShadingRateTypeNV;
16016
16017typedef enum VkFragmentShadingRateNV {
16018    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_PIXEL_NV = 0,
16019    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_1X2_PIXELS_NV = 1,
16020    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X1_PIXELS_NV = 4,
16021    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X2_PIXELS_NV = 5,
16022    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_2X4_PIXELS_NV = 6,
16023    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X2_PIXELS_NV = 9,
16024    VK_FRAGMENT_SHADING_RATE_1_INVOCATION_PER_4X4_PIXELS_NV = 10,
16025    VK_FRAGMENT_SHADING_RATE_2_INVOCATIONS_PER_PIXEL_NV = 11,
16026    VK_FRAGMENT_SHADING_RATE_4_INVOCATIONS_PER_PIXEL_NV = 12,
16027    VK_FRAGMENT_SHADING_RATE_8_INVOCATIONS_PER_PIXEL_NV = 13,
16028    VK_FRAGMENT_SHADING_RATE_16_INVOCATIONS_PER_PIXEL_NV = 14,
16029    VK_FRAGMENT_SHADING_RATE_NO_INVOCATIONS_NV = 15,
16030    VK_FRAGMENT_SHADING_RATE_MAX_ENUM_NV = 0x7FFFFFFF
16031} VkFragmentShadingRateNV;
16032typedef struct VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV {
16033    VkStructureType    sType;
16034    void*              pNext;
16035    VkBool32           fragmentShadingRateEnums;
16036    VkBool32           supersampleFragmentShadingRates;
16037    VkBool32           noInvocationFragmentShadingRates;
16038} VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV;
16039
16040typedef struct VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV {
16041    VkStructureType          sType;
16042    void*                    pNext;
16043    VkSampleCountFlagBits    maxFragmentShadingRateInvocationCount;
16044} VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV;
16045
16046typedef struct VkPipelineFragmentShadingRateEnumStateCreateInfoNV {
16047    VkStructureType                       sType;
16048    const void*                           pNext;
16049    VkFragmentShadingRateTypeNV           shadingRateType;
16050    VkFragmentShadingRateNV               shadingRate;
16051    VkFragmentShadingRateCombinerOpKHR    combinerOps[2];
16052} VkPipelineFragmentShadingRateEnumStateCreateInfoNV;
16053
16054typedef void (VKAPI_PTR *PFN_vkCmdSetFragmentShadingRateEnumNV)(VkCommandBuffer           commandBuffer, VkFragmentShadingRateNV                     shadingRate, const VkFragmentShadingRateCombinerOpKHR    combinerOps[2]);
16055
16056#ifndef VK_NO_PROTOTYPES
16057VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateEnumNV(
16058    VkCommandBuffer                             commandBuffer,
16059    VkFragmentShadingRateNV                     shadingRate,
16060    const VkFragmentShadingRateCombinerOpKHR    combinerOps[2]);
16061#endif
16062
16063
16064// VK_NV_ray_tracing_motion_blur is a preprocessor guard. Do not pass it to API calls.
16065#define VK_NV_ray_tracing_motion_blur 1
16066#define VK_NV_RAY_TRACING_MOTION_BLUR_SPEC_VERSION 1
16067#define VK_NV_RAY_TRACING_MOTION_BLUR_EXTENSION_NAME "VK_NV_ray_tracing_motion_blur"
16068
16069typedef enum VkAccelerationStructureMotionInstanceTypeNV {
16070    VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_STATIC_NV = 0,
16071    VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MATRIX_MOTION_NV = 1,
16072    VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_SRT_MOTION_NV = 2,
16073    VK_ACCELERATION_STRUCTURE_MOTION_INSTANCE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
16074} VkAccelerationStructureMotionInstanceTypeNV;
16075typedef VkFlags VkAccelerationStructureMotionInfoFlagsNV;
16076typedef VkFlags VkAccelerationStructureMotionInstanceFlagsNV;
16077typedef union VkDeviceOrHostAddressConstKHR {
16078    VkDeviceAddress    deviceAddress;
16079    const void*        hostAddress;
16080} VkDeviceOrHostAddressConstKHR;
16081
16082typedef struct VkAccelerationStructureGeometryMotionTrianglesDataNV {
16083    VkStructureType                  sType;
16084    const void*                      pNext;
16085    VkDeviceOrHostAddressConstKHR    vertexData;
16086} VkAccelerationStructureGeometryMotionTrianglesDataNV;
16087
16088typedef struct VkAccelerationStructureMotionInfoNV {
16089    VkStructureType                             sType;
16090    const void*                                 pNext;
16091    uint32_t                                    maxInstances;
16092    VkAccelerationStructureMotionInfoFlagsNV    flags;
16093} VkAccelerationStructureMotionInfoNV;
16094
16095typedef struct VkAccelerationStructureMatrixMotionInstanceNV {
16096    VkTransformMatrixKHR          transformT0;
16097    VkTransformMatrixKHR          transformT1;
16098    uint32_t                      instanceCustomIndex:24;
16099    uint32_t                      mask:8;
16100    uint32_t                      instanceShaderBindingTableRecordOffset:24;
16101    VkGeometryInstanceFlagsKHR    flags:8;
16102    uint64_t                      accelerationStructureReference;
16103} VkAccelerationStructureMatrixMotionInstanceNV;
16104
16105typedef struct VkSRTDataNV {
16106    float    sx;
16107    float    a;
16108    float    b;
16109    float    pvx;
16110    float    sy;
16111    float    c;
16112    float    pvy;
16113    float    sz;
16114    float    pvz;
16115    float    qx;
16116    float    qy;
16117    float    qz;
16118    float    qw;
16119    float    tx;
16120    float    ty;
16121    float    tz;
16122} VkSRTDataNV;
16123
16124typedef struct VkAccelerationStructureSRTMotionInstanceNV {
16125    VkSRTDataNV                   transformT0;
16126    VkSRTDataNV                   transformT1;
16127    uint32_t                      instanceCustomIndex:24;
16128    uint32_t                      mask:8;
16129    uint32_t                      instanceShaderBindingTableRecordOffset:24;
16130    VkGeometryInstanceFlagsKHR    flags:8;
16131    uint64_t                      accelerationStructureReference;
16132} VkAccelerationStructureSRTMotionInstanceNV;
16133
16134typedef union VkAccelerationStructureMotionInstanceDataNV {
16135    VkAccelerationStructureInstanceKHR               staticInstance;
16136    VkAccelerationStructureMatrixMotionInstanceNV    matrixMotionInstance;
16137    VkAccelerationStructureSRTMotionInstanceNV       srtMotionInstance;
16138} VkAccelerationStructureMotionInstanceDataNV;
16139
16140typedef struct VkAccelerationStructureMotionInstanceNV {
16141    VkAccelerationStructureMotionInstanceTypeNV     type;
16142    VkAccelerationStructureMotionInstanceFlagsNV    flags;
16143    VkAccelerationStructureMotionInstanceDataNV     data;
16144} VkAccelerationStructureMotionInstanceNV;
16145
16146typedef struct VkPhysicalDeviceRayTracingMotionBlurFeaturesNV {
16147    VkStructureType    sType;
16148    void*              pNext;
16149    VkBool32           rayTracingMotionBlur;
16150    VkBool32           rayTracingMotionBlurPipelineTraceRaysIndirect;
16151} VkPhysicalDeviceRayTracingMotionBlurFeaturesNV;
16152
16153
16154
16155// VK_EXT_ycbcr_2plane_444_formats is a preprocessor guard. Do not pass it to API calls.
16156#define VK_EXT_ycbcr_2plane_444_formats 1
16157#define VK_EXT_YCBCR_2PLANE_444_FORMATS_SPEC_VERSION 1
16158#define VK_EXT_YCBCR_2PLANE_444_FORMATS_EXTENSION_NAME "VK_EXT_ycbcr_2plane_444_formats"
16159typedef struct VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT {
16160    VkStructureType    sType;
16161    void*              pNext;
16162    VkBool32           ycbcr2plane444Formats;
16163} VkPhysicalDeviceYcbcr2Plane444FormatsFeaturesEXT;
16164
16165
16166
16167// VK_EXT_fragment_density_map2 is a preprocessor guard. Do not pass it to API calls.
16168#define VK_EXT_fragment_density_map2 1
16169#define VK_EXT_FRAGMENT_DENSITY_MAP_2_SPEC_VERSION 1
16170#define VK_EXT_FRAGMENT_DENSITY_MAP_2_EXTENSION_NAME "VK_EXT_fragment_density_map2"
16171typedef struct VkPhysicalDeviceFragmentDensityMap2FeaturesEXT {
16172    VkStructureType    sType;
16173    void*              pNext;
16174    VkBool32           fragmentDensityMapDeferred;
16175} VkPhysicalDeviceFragmentDensityMap2FeaturesEXT;
16176
16177typedef struct VkPhysicalDeviceFragmentDensityMap2PropertiesEXT {
16178    VkStructureType    sType;
16179    void*              pNext;
16180    VkBool32           subsampledLoads;
16181    VkBool32           subsampledCoarseReconstructionEarlyAccess;
16182    uint32_t           maxSubsampledArrayLayers;
16183    uint32_t           maxDescriptorSetSubsampledSamplers;
16184} VkPhysicalDeviceFragmentDensityMap2PropertiesEXT;
16185
16186
16187
16188// VK_QCOM_rotated_copy_commands is a preprocessor guard. Do not pass it to API calls.
16189#define VK_QCOM_rotated_copy_commands 1
16190#define VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION 2
16191#define VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME "VK_QCOM_rotated_copy_commands"
16192typedef struct VkCopyCommandTransformInfoQCOM {
16193    VkStructureType                  sType;
16194    const void*                      pNext;
16195    VkSurfaceTransformFlagBitsKHR    transform;
16196} VkCopyCommandTransformInfoQCOM;
16197
16198
16199
16200// VK_EXT_image_robustness is a preprocessor guard. Do not pass it to API calls.
16201#define VK_EXT_image_robustness 1
16202#define VK_EXT_IMAGE_ROBUSTNESS_SPEC_VERSION 1
16203#define VK_EXT_IMAGE_ROBUSTNESS_EXTENSION_NAME "VK_EXT_image_robustness"
16204typedef VkPhysicalDeviceImageRobustnessFeatures VkPhysicalDeviceImageRobustnessFeaturesEXT;
16205
16206
16207
16208// VK_EXT_image_compression_control is a preprocessor guard. Do not pass it to API calls.
16209#define VK_EXT_image_compression_control 1
16210#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SPEC_VERSION 1
16211#define VK_EXT_IMAGE_COMPRESSION_CONTROL_EXTENSION_NAME "VK_EXT_image_compression_control"
16212
16213typedef enum VkImageCompressionFlagBitsEXT {
16214    VK_IMAGE_COMPRESSION_DEFAULT_EXT = 0,
16215    VK_IMAGE_COMPRESSION_FIXED_RATE_DEFAULT_EXT = 0x00000001,
16216    VK_IMAGE_COMPRESSION_FIXED_RATE_EXPLICIT_EXT = 0x00000002,
16217    VK_IMAGE_COMPRESSION_DISABLED_EXT = 0x00000004,
16218    VK_IMAGE_COMPRESSION_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
16219} VkImageCompressionFlagBitsEXT;
16220typedef VkFlags VkImageCompressionFlagsEXT;
16221
16222typedef enum VkImageCompressionFixedRateFlagBitsEXT {
16223    VK_IMAGE_COMPRESSION_FIXED_RATE_NONE_EXT = 0,
16224    VK_IMAGE_COMPRESSION_FIXED_RATE_1BPC_BIT_EXT = 0x00000001,
16225    VK_IMAGE_COMPRESSION_FIXED_RATE_2BPC_BIT_EXT = 0x00000002,
16226    VK_IMAGE_COMPRESSION_FIXED_RATE_3BPC_BIT_EXT = 0x00000004,
16227    VK_IMAGE_COMPRESSION_FIXED_RATE_4BPC_BIT_EXT = 0x00000008,
16228    VK_IMAGE_COMPRESSION_FIXED_RATE_5BPC_BIT_EXT = 0x00000010,
16229    VK_IMAGE_COMPRESSION_FIXED_RATE_6BPC_BIT_EXT = 0x00000020,
16230    VK_IMAGE_COMPRESSION_FIXED_RATE_7BPC_BIT_EXT = 0x00000040,
16231    VK_IMAGE_COMPRESSION_FIXED_RATE_8BPC_BIT_EXT = 0x00000080,
16232    VK_IMAGE_COMPRESSION_FIXED_RATE_9BPC_BIT_EXT = 0x00000100,
16233    VK_IMAGE_COMPRESSION_FIXED_RATE_10BPC_BIT_EXT = 0x00000200,
16234    VK_IMAGE_COMPRESSION_FIXED_RATE_11BPC_BIT_EXT = 0x00000400,
16235    VK_IMAGE_COMPRESSION_FIXED_RATE_12BPC_BIT_EXT = 0x00000800,
16236    VK_IMAGE_COMPRESSION_FIXED_RATE_13BPC_BIT_EXT = 0x00001000,
16237    VK_IMAGE_COMPRESSION_FIXED_RATE_14BPC_BIT_EXT = 0x00002000,
16238    VK_IMAGE_COMPRESSION_FIXED_RATE_15BPC_BIT_EXT = 0x00004000,
16239    VK_IMAGE_COMPRESSION_FIXED_RATE_16BPC_BIT_EXT = 0x00008000,
16240    VK_IMAGE_COMPRESSION_FIXED_RATE_17BPC_BIT_EXT = 0x00010000,
16241    VK_IMAGE_COMPRESSION_FIXED_RATE_18BPC_BIT_EXT = 0x00020000,
16242    VK_IMAGE_COMPRESSION_FIXED_RATE_19BPC_BIT_EXT = 0x00040000,
16243    VK_IMAGE_COMPRESSION_FIXED_RATE_20BPC_BIT_EXT = 0x00080000,
16244    VK_IMAGE_COMPRESSION_FIXED_RATE_21BPC_BIT_EXT = 0x00100000,
16245    VK_IMAGE_COMPRESSION_FIXED_RATE_22BPC_BIT_EXT = 0x00200000,
16246    VK_IMAGE_COMPRESSION_FIXED_RATE_23BPC_BIT_EXT = 0x00400000,
16247    VK_IMAGE_COMPRESSION_FIXED_RATE_24BPC_BIT_EXT = 0x00800000,
16248    VK_IMAGE_COMPRESSION_FIXED_RATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
16249} VkImageCompressionFixedRateFlagBitsEXT;
16250typedef VkFlags VkImageCompressionFixedRateFlagsEXT;
16251typedef struct VkPhysicalDeviceImageCompressionControlFeaturesEXT {
16252    VkStructureType    sType;
16253    void*              pNext;
16254    VkBool32           imageCompressionControl;
16255} VkPhysicalDeviceImageCompressionControlFeaturesEXT;
16256
16257typedef struct VkImageCompressionControlEXT {
16258    VkStructureType                         sType;
16259    const void*                             pNext;
16260    VkImageCompressionFlagsEXT              flags;
16261    uint32_t                                compressionControlPlaneCount;
16262    VkImageCompressionFixedRateFlagsEXT*    pFixedRateFlags;
16263} VkImageCompressionControlEXT;
16264
16265typedef struct VkImageCompressionPropertiesEXT {
16266    VkStructureType                        sType;
16267    void*                                  pNext;
16268    VkImageCompressionFlagsEXT             imageCompressionFlags;
16269    VkImageCompressionFixedRateFlagsEXT    imageCompressionFixedRateFlags;
16270} VkImageCompressionPropertiesEXT;
16271
16272
16273
16274// VK_EXT_attachment_feedback_loop_layout is a preprocessor guard. Do not pass it to API calls.
16275#define VK_EXT_attachment_feedback_loop_layout 1
16276#define VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_SPEC_VERSION 2
16277#define VK_EXT_ATTACHMENT_FEEDBACK_LOOP_LAYOUT_EXTENSION_NAME "VK_EXT_attachment_feedback_loop_layout"
16278typedef struct VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT {
16279    VkStructureType    sType;
16280    void*              pNext;
16281    VkBool32           attachmentFeedbackLoopLayout;
16282} VkPhysicalDeviceAttachmentFeedbackLoopLayoutFeaturesEXT;
16283
16284
16285
16286// VK_EXT_4444_formats is a preprocessor guard. Do not pass it to API calls.
16287#define VK_EXT_4444_formats 1
16288#define VK_EXT_4444_FORMATS_SPEC_VERSION  1
16289#define VK_EXT_4444_FORMATS_EXTENSION_NAME "VK_EXT_4444_formats"
16290typedef struct VkPhysicalDevice4444FormatsFeaturesEXT {
16291    VkStructureType    sType;
16292    void*              pNext;
16293    VkBool32           formatA4R4G4B4;
16294    VkBool32           formatA4B4G4R4;
16295} VkPhysicalDevice4444FormatsFeaturesEXT;
16296
16297
16298
16299// VK_EXT_device_fault is a preprocessor guard. Do not pass it to API calls.
16300#define VK_EXT_device_fault 1
16301#define VK_EXT_DEVICE_FAULT_SPEC_VERSION  2
16302#define VK_EXT_DEVICE_FAULT_EXTENSION_NAME "VK_EXT_device_fault"
16303
16304typedef enum VkDeviceFaultAddressTypeEXT {
16305    VK_DEVICE_FAULT_ADDRESS_TYPE_NONE_EXT = 0,
16306    VK_DEVICE_FAULT_ADDRESS_TYPE_READ_INVALID_EXT = 1,
16307    VK_DEVICE_FAULT_ADDRESS_TYPE_WRITE_INVALID_EXT = 2,
16308    VK_DEVICE_FAULT_ADDRESS_TYPE_EXECUTE_INVALID_EXT = 3,
16309    VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_UNKNOWN_EXT = 4,
16310    VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_INVALID_EXT = 5,
16311    VK_DEVICE_FAULT_ADDRESS_TYPE_INSTRUCTION_POINTER_FAULT_EXT = 6,
16312    VK_DEVICE_FAULT_ADDRESS_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
16313} VkDeviceFaultAddressTypeEXT;
16314
16315typedef enum VkDeviceFaultVendorBinaryHeaderVersionEXT {
16316    VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_ONE_EXT = 1,
16317    VK_DEVICE_FAULT_VENDOR_BINARY_HEADER_VERSION_MAX_ENUM_EXT = 0x7FFFFFFF
16318} VkDeviceFaultVendorBinaryHeaderVersionEXT;
16319typedef struct VkPhysicalDeviceFaultFeaturesEXT {
16320    VkStructureType    sType;
16321    void*              pNext;
16322    VkBool32           deviceFault;
16323    VkBool32           deviceFaultVendorBinary;
16324} VkPhysicalDeviceFaultFeaturesEXT;
16325
16326typedef struct VkDeviceFaultCountsEXT {
16327    VkStructureType    sType;
16328    void*              pNext;
16329    uint32_t           addressInfoCount;
16330    uint32_t           vendorInfoCount;
16331    VkDeviceSize       vendorBinarySize;
16332} VkDeviceFaultCountsEXT;
16333
16334typedef struct VkDeviceFaultAddressInfoEXT {
16335    VkDeviceFaultAddressTypeEXT    addressType;
16336    VkDeviceAddress                reportedAddress;
16337    VkDeviceSize                   addressPrecision;
16338} VkDeviceFaultAddressInfoEXT;
16339
16340typedef struct VkDeviceFaultVendorInfoEXT {
16341    char        description[VK_MAX_DESCRIPTION_SIZE];
16342    uint64_t    vendorFaultCode;
16343    uint64_t    vendorFaultData;
16344} VkDeviceFaultVendorInfoEXT;
16345
16346typedef struct VkDeviceFaultInfoEXT {
16347    VkStructureType                 sType;
16348    void*                           pNext;
16349    char                            description[VK_MAX_DESCRIPTION_SIZE];
16350    VkDeviceFaultAddressInfoEXT*    pAddressInfos;
16351    VkDeviceFaultVendorInfoEXT*     pVendorInfos;
16352    void*                           pVendorBinaryData;
16353} VkDeviceFaultInfoEXT;
16354
16355typedef struct VkDeviceFaultVendorBinaryHeaderVersionOneEXT {
16356    uint32_t                                     headerSize;
16357    VkDeviceFaultVendorBinaryHeaderVersionEXT    headerVersion;
16358    uint32_t                                     vendorID;
16359    uint32_t                                     deviceID;
16360    uint32_t                                     driverVersion;
16361    uint8_t                                      pipelineCacheUUID[VK_UUID_SIZE];
16362    uint32_t                                     applicationNameOffset;
16363    uint32_t                                     applicationVersion;
16364    uint32_t                                     engineNameOffset;
16365    uint32_t                                     engineVersion;
16366    uint32_t                                     apiVersion;
16367} VkDeviceFaultVendorBinaryHeaderVersionOneEXT;
16368
16369typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceFaultInfoEXT)(VkDevice device, VkDeviceFaultCountsEXT* pFaultCounts, VkDeviceFaultInfoEXT* pFaultInfo);
16370
16371#ifndef VK_NO_PROTOTYPES
16372VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceFaultInfoEXT(
16373    VkDevice                                    device,
16374    VkDeviceFaultCountsEXT*                     pFaultCounts,
16375    VkDeviceFaultInfoEXT*                       pFaultInfo);
16376#endif
16377
16378
16379// VK_ARM_rasterization_order_attachment_access is a preprocessor guard. Do not pass it to API calls.
16380#define VK_ARM_rasterization_order_attachment_access 1
16381#define VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION 1
16382#define VK_ARM_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME "VK_ARM_rasterization_order_attachment_access"
16383typedef struct VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT {
16384    VkStructureType    sType;
16385    void*              pNext;
16386    VkBool32           rasterizationOrderColorAttachmentAccess;
16387    VkBool32           rasterizationOrderDepthAttachmentAccess;
16388    VkBool32           rasterizationOrderStencilAttachmentAccess;
16389} VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT;
16390
16391typedef VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesEXT VkPhysicalDeviceRasterizationOrderAttachmentAccessFeaturesARM;
16392
16393
16394
16395// VK_EXT_rgba10x6_formats is a preprocessor guard. Do not pass it to API calls.
16396#define VK_EXT_rgba10x6_formats 1
16397#define VK_EXT_RGBA10X6_FORMATS_SPEC_VERSION 1
16398#define VK_EXT_RGBA10X6_FORMATS_EXTENSION_NAME "VK_EXT_rgba10x6_formats"
16399typedef struct VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT {
16400    VkStructureType    sType;
16401    void*              pNext;
16402    VkBool32           formatRgba10x6WithoutYCbCrSampler;
16403} VkPhysicalDeviceRGBA10X6FormatsFeaturesEXT;
16404
16405
16406
16407// VK_VALVE_mutable_descriptor_type is a preprocessor guard. Do not pass it to API calls.
16408#define VK_VALVE_mutable_descriptor_type 1
16409#define VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION 1
16410#define VK_VALVE_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME "VK_VALVE_mutable_descriptor_type"
16411typedef struct VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT {
16412    VkStructureType    sType;
16413    void*              pNext;
16414    VkBool32           mutableDescriptorType;
16415} VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT;
16416
16417typedef VkPhysicalDeviceMutableDescriptorTypeFeaturesEXT VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE;
16418
16419typedef struct VkMutableDescriptorTypeListEXT {
16420    uint32_t                   descriptorTypeCount;
16421    const VkDescriptorType*    pDescriptorTypes;
16422} VkMutableDescriptorTypeListEXT;
16423
16424typedef VkMutableDescriptorTypeListEXT VkMutableDescriptorTypeListVALVE;
16425
16426typedef struct VkMutableDescriptorTypeCreateInfoEXT {
16427    VkStructureType                          sType;
16428    const void*                              pNext;
16429    uint32_t                                 mutableDescriptorTypeListCount;
16430    const VkMutableDescriptorTypeListEXT*    pMutableDescriptorTypeLists;
16431} VkMutableDescriptorTypeCreateInfoEXT;
16432
16433typedef VkMutableDescriptorTypeCreateInfoEXT VkMutableDescriptorTypeCreateInfoVALVE;
16434
16435
16436
16437// VK_EXT_vertex_input_dynamic_state is a preprocessor guard. Do not pass it to API calls.
16438#define VK_EXT_vertex_input_dynamic_state 1
16439#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_SPEC_VERSION 2
16440#define VK_EXT_VERTEX_INPUT_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_vertex_input_dynamic_state"
16441typedef struct VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT {
16442    VkStructureType    sType;
16443    void*              pNext;
16444    VkBool32           vertexInputDynamicState;
16445} VkPhysicalDeviceVertexInputDynamicStateFeaturesEXT;
16446
16447typedef struct VkVertexInputBindingDescription2EXT {
16448    VkStructureType      sType;
16449    void*                pNext;
16450    uint32_t             binding;
16451    uint32_t             stride;
16452    VkVertexInputRate    inputRate;
16453    uint32_t             divisor;
16454} VkVertexInputBindingDescription2EXT;
16455
16456typedef struct VkVertexInputAttributeDescription2EXT {
16457    VkStructureType    sType;
16458    void*              pNext;
16459    uint32_t           location;
16460    uint32_t           binding;
16461    VkFormat           format;
16462    uint32_t           offset;
16463} VkVertexInputAttributeDescription2EXT;
16464
16465typedef void (VKAPI_PTR *PFN_vkCmdSetVertexInputEXT)(VkCommandBuffer commandBuffer, uint32_t vertexBindingDescriptionCount, const VkVertexInputBindingDescription2EXT* pVertexBindingDescriptions, uint32_t vertexAttributeDescriptionCount, const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions);
16466
16467#ifndef VK_NO_PROTOTYPES
16468VKAPI_ATTR void VKAPI_CALL vkCmdSetVertexInputEXT(
16469    VkCommandBuffer                             commandBuffer,
16470    uint32_t                                    vertexBindingDescriptionCount,
16471    const VkVertexInputBindingDescription2EXT*  pVertexBindingDescriptions,
16472    uint32_t                                    vertexAttributeDescriptionCount,
16473    const VkVertexInputAttributeDescription2EXT* pVertexAttributeDescriptions);
16474#endif
16475
16476
16477// VK_EXT_physical_device_drm is a preprocessor guard. Do not pass it to API calls.
16478#define VK_EXT_physical_device_drm 1
16479#define VK_EXT_PHYSICAL_DEVICE_DRM_SPEC_VERSION 1
16480#define VK_EXT_PHYSICAL_DEVICE_DRM_EXTENSION_NAME "VK_EXT_physical_device_drm"
16481typedef struct VkPhysicalDeviceDrmPropertiesEXT {
16482    VkStructureType    sType;
16483    void*              pNext;
16484    VkBool32           hasPrimary;
16485    VkBool32           hasRender;
16486    int64_t            primaryMajor;
16487    int64_t            primaryMinor;
16488    int64_t            renderMajor;
16489    int64_t            renderMinor;
16490} VkPhysicalDeviceDrmPropertiesEXT;
16491
16492
16493
16494// VK_EXT_device_address_binding_report is a preprocessor guard. Do not pass it to API calls.
16495#define VK_EXT_device_address_binding_report 1
16496#define VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_SPEC_VERSION 1
16497#define VK_EXT_DEVICE_ADDRESS_BINDING_REPORT_EXTENSION_NAME "VK_EXT_device_address_binding_report"
16498
16499typedef enum VkDeviceAddressBindingTypeEXT {
16500    VK_DEVICE_ADDRESS_BINDING_TYPE_BIND_EXT = 0,
16501    VK_DEVICE_ADDRESS_BINDING_TYPE_UNBIND_EXT = 1,
16502    VK_DEVICE_ADDRESS_BINDING_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
16503} VkDeviceAddressBindingTypeEXT;
16504
16505typedef enum VkDeviceAddressBindingFlagBitsEXT {
16506    VK_DEVICE_ADDRESS_BINDING_INTERNAL_OBJECT_BIT_EXT = 0x00000001,
16507    VK_DEVICE_ADDRESS_BINDING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
16508} VkDeviceAddressBindingFlagBitsEXT;
16509typedef VkFlags VkDeviceAddressBindingFlagsEXT;
16510typedef struct VkPhysicalDeviceAddressBindingReportFeaturesEXT {
16511    VkStructureType    sType;
16512    void*              pNext;
16513    VkBool32           reportAddressBinding;
16514} VkPhysicalDeviceAddressBindingReportFeaturesEXT;
16515
16516typedef struct VkDeviceAddressBindingCallbackDataEXT {
16517    VkStructureType                   sType;
16518    void*                             pNext;
16519    VkDeviceAddressBindingFlagsEXT    flags;
16520    VkDeviceAddress                   baseAddress;
16521    VkDeviceSize                      size;
16522    VkDeviceAddressBindingTypeEXT     bindingType;
16523} VkDeviceAddressBindingCallbackDataEXT;
16524
16525
16526
16527// VK_EXT_depth_clip_control is a preprocessor guard. Do not pass it to API calls.
16528#define VK_EXT_depth_clip_control 1
16529#define VK_EXT_DEPTH_CLIP_CONTROL_SPEC_VERSION 1
16530#define VK_EXT_DEPTH_CLIP_CONTROL_EXTENSION_NAME "VK_EXT_depth_clip_control"
16531typedef struct VkPhysicalDeviceDepthClipControlFeaturesEXT {
16532    VkStructureType    sType;
16533    void*              pNext;
16534    VkBool32           depthClipControl;
16535} VkPhysicalDeviceDepthClipControlFeaturesEXT;
16536
16537typedef struct VkPipelineViewportDepthClipControlCreateInfoEXT {
16538    VkStructureType    sType;
16539    const void*        pNext;
16540    VkBool32           negativeOneToOne;
16541} VkPipelineViewportDepthClipControlCreateInfoEXT;
16542
16543
16544
16545// VK_EXT_primitive_topology_list_restart is a preprocessor guard. Do not pass it to API calls.
16546#define VK_EXT_primitive_topology_list_restart 1
16547#define VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_SPEC_VERSION 1
16548#define VK_EXT_PRIMITIVE_TOPOLOGY_LIST_RESTART_EXTENSION_NAME "VK_EXT_primitive_topology_list_restart"
16549typedef struct VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT {
16550    VkStructureType    sType;
16551    void*              pNext;
16552    VkBool32           primitiveTopologyListRestart;
16553    VkBool32           primitiveTopologyPatchListRestart;
16554} VkPhysicalDevicePrimitiveTopologyListRestartFeaturesEXT;
16555
16556
16557
16558// VK_HUAWEI_subpass_shading is a preprocessor guard. Do not pass it to API calls.
16559#define VK_HUAWEI_subpass_shading 1
16560#define VK_HUAWEI_SUBPASS_SHADING_SPEC_VERSION 3
16561#define VK_HUAWEI_SUBPASS_SHADING_EXTENSION_NAME "VK_HUAWEI_subpass_shading"
16562typedef struct VkSubpassShadingPipelineCreateInfoHUAWEI {
16563    VkStructureType    sType;
16564    void*              pNext;
16565    VkRenderPass       renderPass;
16566    uint32_t           subpass;
16567} VkSubpassShadingPipelineCreateInfoHUAWEI;
16568
16569typedef struct VkPhysicalDeviceSubpassShadingFeaturesHUAWEI {
16570    VkStructureType    sType;
16571    void*              pNext;
16572    VkBool32           subpassShading;
16573} VkPhysicalDeviceSubpassShadingFeaturesHUAWEI;
16574
16575typedef struct VkPhysicalDeviceSubpassShadingPropertiesHUAWEI {
16576    VkStructureType    sType;
16577    void*              pNext;
16578    uint32_t           maxSubpassShadingWorkgroupSizeAspectRatio;
16579} VkPhysicalDeviceSubpassShadingPropertiesHUAWEI;
16580
16581typedef VkResult (VKAPI_PTR *PFN_vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI)(VkDevice device, VkRenderPass renderpass, VkExtent2D* pMaxWorkgroupSize);
16582typedef void (VKAPI_PTR *PFN_vkCmdSubpassShadingHUAWEI)(VkCommandBuffer commandBuffer);
16583
16584#ifndef VK_NO_PROTOTYPES
16585VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceSubpassShadingMaxWorkgroupSizeHUAWEI(
16586    VkDevice                                    device,
16587    VkRenderPass                                renderpass,
16588    VkExtent2D*                                 pMaxWorkgroupSize);
16589
16590VKAPI_ATTR void VKAPI_CALL vkCmdSubpassShadingHUAWEI(
16591    VkCommandBuffer                             commandBuffer);
16592#endif
16593
16594
16595// VK_HUAWEI_invocation_mask is a preprocessor guard. Do not pass it to API calls.
16596#define VK_HUAWEI_invocation_mask 1
16597#define VK_HUAWEI_INVOCATION_MASK_SPEC_VERSION 1
16598#define VK_HUAWEI_INVOCATION_MASK_EXTENSION_NAME "VK_HUAWEI_invocation_mask"
16599typedef struct VkPhysicalDeviceInvocationMaskFeaturesHUAWEI {
16600    VkStructureType    sType;
16601    void*              pNext;
16602    VkBool32           invocationMask;
16603} VkPhysicalDeviceInvocationMaskFeaturesHUAWEI;
16604
16605typedef void (VKAPI_PTR *PFN_vkCmdBindInvocationMaskHUAWEI)(VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout);
16606
16607#ifndef VK_NO_PROTOTYPES
16608VKAPI_ATTR void VKAPI_CALL vkCmdBindInvocationMaskHUAWEI(
16609    VkCommandBuffer                             commandBuffer,
16610    VkImageView                                 imageView,
16611    VkImageLayout                               imageLayout);
16612#endif
16613
16614
16615// VK_NV_external_memory_rdma is a preprocessor guard. Do not pass it to API calls.
16616#define VK_NV_external_memory_rdma 1
16617typedef void* VkRemoteAddressNV;
16618#define VK_NV_EXTERNAL_MEMORY_RDMA_SPEC_VERSION 1
16619#define VK_NV_EXTERNAL_MEMORY_RDMA_EXTENSION_NAME "VK_NV_external_memory_rdma"
16620typedef struct VkMemoryGetRemoteAddressInfoNV {
16621    VkStructureType                       sType;
16622    const void*                           pNext;
16623    VkDeviceMemory                        memory;
16624    VkExternalMemoryHandleTypeFlagBits    handleType;
16625} VkMemoryGetRemoteAddressInfoNV;
16626
16627typedef struct VkPhysicalDeviceExternalMemoryRDMAFeaturesNV {
16628    VkStructureType    sType;
16629    void*              pNext;
16630    VkBool32           externalMemoryRDMA;
16631} VkPhysicalDeviceExternalMemoryRDMAFeaturesNV;
16632
16633typedef VkResult (VKAPI_PTR *PFN_vkGetMemoryRemoteAddressNV)(VkDevice device, const VkMemoryGetRemoteAddressInfoNV* pMemoryGetRemoteAddressInfo, VkRemoteAddressNV* pAddress);
16634
16635#ifndef VK_NO_PROTOTYPES
16636VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryRemoteAddressNV(
16637    VkDevice                                    device,
16638    const VkMemoryGetRemoteAddressInfoNV*       pMemoryGetRemoteAddressInfo,
16639    VkRemoteAddressNV*                          pAddress);
16640#endif
16641
16642
16643// VK_EXT_pipeline_properties is a preprocessor guard. Do not pass it to API calls.
16644#define VK_EXT_pipeline_properties 1
16645#define VK_EXT_PIPELINE_PROPERTIES_SPEC_VERSION 1
16646#define VK_EXT_PIPELINE_PROPERTIES_EXTENSION_NAME "VK_EXT_pipeline_properties"
16647typedef VkPipelineInfoKHR VkPipelineInfoEXT;
16648
16649typedef struct VkPipelinePropertiesIdentifierEXT {
16650    VkStructureType    sType;
16651    void*              pNext;
16652    uint8_t            pipelineIdentifier[VK_UUID_SIZE];
16653} VkPipelinePropertiesIdentifierEXT;
16654
16655typedef struct VkPhysicalDevicePipelinePropertiesFeaturesEXT {
16656    VkStructureType    sType;
16657    void*              pNext;
16658    VkBool32           pipelinePropertiesIdentifier;
16659} VkPhysicalDevicePipelinePropertiesFeaturesEXT;
16660
16661typedef VkResult (VKAPI_PTR *PFN_vkGetPipelinePropertiesEXT)(VkDevice device, const VkPipelineInfoEXT* pPipelineInfo, VkBaseOutStructure* pPipelineProperties);
16662
16663#ifndef VK_NO_PROTOTYPES
16664VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelinePropertiesEXT(
16665    VkDevice                                    device,
16666    const VkPipelineInfoEXT*                    pPipelineInfo,
16667    VkBaseOutStructure*                         pPipelineProperties);
16668#endif
16669
16670
16671// VK_EXT_frame_boundary is a preprocessor guard. Do not pass it to API calls.
16672#define VK_EXT_frame_boundary 1
16673#define VK_EXT_FRAME_BOUNDARY_SPEC_VERSION 1
16674#define VK_EXT_FRAME_BOUNDARY_EXTENSION_NAME "VK_EXT_frame_boundary"
16675
16676typedef enum VkFrameBoundaryFlagBitsEXT {
16677    VK_FRAME_BOUNDARY_FRAME_END_BIT_EXT = 0x00000001,
16678    VK_FRAME_BOUNDARY_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
16679} VkFrameBoundaryFlagBitsEXT;
16680typedef VkFlags VkFrameBoundaryFlagsEXT;
16681typedef struct VkPhysicalDeviceFrameBoundaryFeaturesEXT {
16682    VkStructureType    sType;
16683    void*              pNext;
16684    VkBool32           frameBoundary;
16685} VkPhysicalDeviceFrameBoundaryFeaturesEXT;
16686
16687typedef struct VkFrameBoundaryEXT {
16688    VkStructureType            sType;
16689    const void*                pNext;
16690    VkFrameBoundaryFlagsEXT    flags;
16691    uint64_t                   frameID;
16692    uint32_t                   imageCount;
16693    const VkImage*             pImages;
16694    uint32_t                   bufferCount;
16695    const VkBuffer*            pBuffers;
16696    uint64_t                   tagName;
16697    size_t                     tagSize;
16698    const void*                pTag;
16699} VkFrameBoundaryEXT;
16700
16701
16702
16703// VK_EXT_multisampled_render_to_single_sampled is a preprocessor guard. Do not pass it to API calls.
16704#define VK_EXT_multisampled_render_to_single_sampled 1
16705#define VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_SPEC_VERSION 1
16706#define VK_EXT_MULTISAMPLED_RENDER_TO_SINGLE_SAMPLED_EXTENSION_NAME "VK_EXT_multisampled_render_to_single_sampled"
16707typedef struct VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT {
16708    VkStructureType    sType;
16709    void*              pNext;
16710    VkBool32           multisampledRenderToSingleSampled;
16711} VkPhysicalDeviceMultisampledRenderToSingleSampledFeaturesEXT;
16712
16713typedef struct VkSubpassResolvePerformanceQueryEXT {
16714    VkStructureType    sType;
16715    void*              pNext;
16716    VkBool32           optimal;
16717} VkSubpassResolvePerformanceQueryEXT;
16718
16719typedef struct VkMultisampledRenderToSingleSampledInfoEXT {
16720    VkStructureType          sType;
16721    const void*              pNext;
16722    VkBool32                 multisampledRenderToSingleSampledEnable;
16723    VkSampleCountFlagBits    rasterizationSamples;
16724} VkMultisampledRenderToSingleSampledInfoEXT;
16725
16726
16727
16728// VK_EXT_extended_dynamic_state2 is a preprocessor guard. Do not pass it to API calls.
16729#define VK_EXT_extended_dynamic_state2 1
16730#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_SPEC_VERSION 1
16731#define VK_EXT_EXTENDED_DYNAMIC_STATE_2_EXTENSION_NAME "VK_EXT_extended_dynamic_state2"
16732typedef struct VkPhysicalDeviceExtendedDynamicState2FeaturesEXT {
16733    VkStructureType    sType;
16734    void*              pNext;
16735    VkBool32           extendedDynamicState2;
16736    VkBool32           extendedDynamicState2LogicOp;
16737    VkBool32           extendedDynamicState2PatchControlPoints;
16738} VkPhysicalDeviceExtendedDynamicState2FeaturesEXT;
16739
16740typedef void (VKAPI_PTR *PFN_vkCmdSetPatchControlPointsEXT)(VkCommandBuffer commandBuffer, uint32_t patchControlPoints);
16741typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizerDiscardEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 rasterizerDiscardEnable);
16742typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBiasEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthBiasEnable);
16743typedef void (VKAPI_PTR *PFN_vkCmdSetLogicOpEXT)(VkCommandBuffer commandBuffer, VkLogicOp logicOp);
16744typedef void (VKAPI_PTR *PFN_vkCmdSetPrimitiveRestartEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 primitiveRestartEnable);
16745
16746#ifndef VK_NO_PROTOTYPES
16747VKAPI_ATTR void VKAPI_CALL vkCmdSetPatchControlPointsEXT(
16748    VkCommandBuffer                             commandBuffer,
16749    uint32_t                                    patchControlPoints);
16750
16751VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizerDiscardEnableEXT(
16752    VkCommandBuffer                             commandBuffer,
16753    VkBool32                                    rasterizerDiscardEnable);
16754
16755VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBiasEnableEXT(
16756    VkCommandBuffer                             commandBuffer,
16757    VkBool32                                    depthBiasEnable);
16758
16759VKAPI_ATTR void VKAPI_CALL vkCmdSetLogicOpEXT(
16760    VkCommandBuffer                             commandBuffer,
16761    VkLogicOp                                   logicOp);
16762
16763VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveRestartEnableEXT(
16764    VkCommandBuffer                             commandBuffer,
16765    VkBool32                                    primitiveRestartEnable);
16766#endif
16767
16768
16769// VK_EXT_color_write_enable is a preprocessor guard. Do not pass it to API calls.
16770#define VK_EXT_color_write_enable 1
16771#define VK_EXT_COLOR_WRITE_ENABLE_SPEC_VERSION 1
16772#define VK_EXT_COLOR_WRITE_ENABLE_EXTENSION_NAME "VK_EXT_color_write_enable"
16773typedef struct VkPhysicalDeviceColorWriteEnableFeaturesEXT {
16774    VkStructureType    sType;
16775    void*              pNext;
16776    VkBool32           colorWriteEnable;
16777} VkPhysicalDeviceColorWriteEnableFeaturesEXT;
16778
16779typedef struct VkPipelineColorWriteCreateInfoEXT {
16780    VkStructureType    sType;
16781    const void*        pNext;
16782    uint32_t           attachmentCount;
16783    const VkBool32*    pColorWriteEnables;
16784} VkPipelineColorWriteCreateInfoEXT;
16785
16786typedef void                                    (VKAPI_PTR *PFN_vkCmdSetColorWriteEnableEXT)(VkCommandBuffer       commandBuffer, uint32_t                                attachmentCount, const VkBool32*   pColorWriteEnables);
16787
16788#ifndef VK_NO_PROTOTYPES
16789VKAPI_ATTR void                                    VKAPI_CALL vkCmdSetColorWriteEnableEXT(
16790    VkCommandBuffer                             commandBuffer,
16791    uint32_t                                    attachmentCount,
16792    const VkBool32*                             pColorWriteEnables);
16793#endif
16794
16795
16796// VK_EXT_primitives_generated_query is a preprocessor guard. Do not pass it to API calls.
16797#define VK_EXT_primitives_generated_query 1
16798#define VK_EXT_PRIMITIVES_GENERATED_QUERY_SPEC_VERSION 1
16799#define VK_EXT_PRIMITIVES_GENERATED_QUERY_EXTENSION_NAME "VK_EXT_primitives_generated_query"
16800typedef struct VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT {
16801    VkStructureType    sType;
16802    void*              pNext;
16803    VkBool32           primitivesGeneratedQuery;
16804    VkBool32           primitivesGeneratedQueryWithRasterizerDiscard;
16805    VkBool32           primitivesGeneratedQueryWithNonZeroStreams;
16806} VkPhysicalDevicePrimitivesGeneratedQueryFeaturesEXT;
16807
16808
16809
16810// VK_EXT_global_priority_query is a preprocessor guard. Do not pass it to API calls.
16811#define VK_EXT_global_priority_query 1
16812#define VK_EXT_GLOBAL_PRIORITY_QUERY_SPEC_VERSION 1
16813#define VK_EXT_GLOBAL_PRIORITY_QUERY_EXTENSION_NAME "VK_EXT_global_priority_query"
16814#define VK_MAX_GLOBAL_PRIORITY_SIZE_EXT   VK_MAX_GLOBAL_PRIORITY_SIZE_KHR
16815typedef VkPhysicalDeviceGlobalPriorityQueryFeaturesKHR VkPhysicalDeviceGlobalPriorityQueryFeaturesEXT;
16816
16817typedef VkQueueFamilyGlobalPriorityPropertiesKHR VkQueueFamilyGlobalPriorityPropertiesEXT;
16818
16819
16820
16821// VK_EXT_image_view_min_lod is a preprocessor guard. Do not pass it to API calls.
16822#define VK_EXT_image_view_min_lod 1
16823#define VK_EXT_IMAGE_VIEW_MIN_LOD_SPEC_VERSION 1
16824#define VK_EXT_IMAGE_VIEW_MIN_LOD_EXTENSION_NAME "VK_EXT_image_view_min_lod"
16825typedef struct VkPhysicalDeviceImageViewMinLodFeaturesEXT {
16826    VkStructureType    sType;
16827    void*              pNext;
16828    VkBool32           minLod;
16829} VkPhysicalDeviceImageViewMinLodFeaturesEXT;
16830
16831typedef struct VkImageViewMinLodCreateInfoEXT {
16832    VkStructureType    sType;
16833    const void*        pNext;
16834    float              minLod;
16835} VkImageViewMinLodCreateInfoEXT;
16836
16837
16838
16839// VK_EXT_multi_draw is a preprocessor guard. Do not pass it to API calls.
16840#define VK_EXT_multi_draw 1
16841#define VK_EXT_MULTI_DRAW_SPEC_VERSION    1
16842#define VK_EXT_MULTI_DRAW_EXTENSION_NAME  "VK_EXT_multi_draw"
16843typedef struct VkPhysicalDeviceMultiDrawFeaturesEXT {
16844    VkStructureType    sType;
16845    void*              pNext;
16846    VkBool32           multiDraw;
16847} VkPhysicalDeviceMultiDrawFeaturesEXT;
16848
16849typedef struct VkPhysicalDeviceMultiDrawPropertiesEXT {
16850    VkStructureType    sType;
16851    void*              pNext;
16852    uint32_t           maxMultiDrawCount;
16853} VkPhysicalDeviceMultiDrawPropertiesEXT;
16854
16855typedef struct VkMultiDrawInfoEXT {
16856    uint32_t    firstVertex;
16857    uint32_t    vertexCount;
16858} VkMultiDrawInfoEXT;
16859
16860typedef struct VkMultiDrawIndexedInfoEXT {
16861    uint32_t    firstIndex;
16862    uint32_t    indexCount;
16863    int32_t     vertexOffset;
16864} VkMultiDrawIndexedInfoEXT;
16865
16866typedef void (VKAPI_PTR *PFN_vkCmdDrawMultiEXT)(VkCommandBuffer commandBuffer, uint32_t drawCount, const VkMultiDrawInfoEXT* pVertexInfo, uint32_t instanceCount, uint32_t firstInstance, uint32_t stride);
16867typedef void (VKAPI_PTR *PFN_vkCmdDrawMultiIndexedEXT)(VkCommandBuffer commandBuffer, uint32_t drawCount, const VkMultiDrawIndexedInfoEXT* pIndexInfo, uint32_t instanceCount, uint32_t firstInstance, uint32_t stride, const int32_t* pVertexOffset);
16868
16869#ifndef VK_NO_PROTOTYPES
16870VKAPI_ATTR void VKAPI_CALL vkCmdDrawMultiEXT(
16871    VkCommandBuffer                             commandBuffer,
16872    uint32_t                                    drawCount,
16873    const VkMultiDrawInfoEXT*                   pVertexInfo,
16874    uint32_t                                    instanceCount,
16875    uint32_t                                    firstInstance,
16876    uint32_t                                    stride);
16877
16878VKAPI_ATTR void VKAPI_CALL vkCmdDrawMultiIndexedEXT(
16879    VkCommandBuffer                             commandBuffer,
16880    uint32_t                                    drawCount,
16881    const VkMultiDrawIndexedInfoEXT*            pIndexInfo,
16882    uint32_t                                    instanceCount,
16883    uint32_t                                    firstInstance,
16884    uint32_t                                    stride,
16885    const int32_t*                              pVertexOffset);
16886#endif
16887
16888
16889// VK_EXT_image_2d_view_of_3d is a preprocessor guard. Do not pass it to API calls.
16890#define VK_EXT_image_2d_view_of_3d 1
16891#define VK_EXT_IMAGE_2D_VIEW_OF_3D_SPEC_VERSION 1
16892#define VK_EXT_IMAGE_2D_VIEW_OF_3D_EXTENSION_NAME "VK_EXT_image_2d_view_of_3d"
16893typedef struct VkPhysicalDeviceImage2DViewOf3DFeaturesEXT {
16894    VkStructureType    sType;
16895    void*              pNext;
16896    VkBool32           image2DViewOf3D;
16897    VkBool32           sampler2DViewOf3D;
16898} VkPhysicalDeviceImage2DViewOf3DFeaturesEXT;
16899
16900
16901
16902// VK_EXT_shader_tile_image is a preprocessor guard. Do not pass it to API calls.
16903#define VK_EXT_shader_tile_image 1
16904#define VK_EXT_SHADER_TILE_IMAGE_SPEC_VERSION 1
16905#define VK_EXT_SHADER_TILE_IMAGE_EXTENSION_NAME "VK_EXT_shader_tile_image"
16906typedef struct VkPhysicalDeviceShaderTileImageFeaturesEXT {
16907    VkStructureType    sType;
16908    void*              pNext;
16909    VkBool32           shaderTileImageColorReadAccess;
16910    VkBool32           shaderTileImageDepthReadAccess;
16911    VkBool32           shaderTileImageStencilReadAccess;
16912} VkPhysicalDeviceShaderTileImageFeaturesEXT;
16913
16914typedef struct VkPhysicalDeviceShaderTileImagePropertiesEXT {
16915    VkStructureType    sType;
16916    void*              pNext;
16917    VkBool32           shaderTileImageCoherentReadAccelerated;
16918    VkBool32           shaderTileImageReadSampleFromPixelRateInvocation;
16919    VkBool32           shaderTileImageReadFromHelperInvocation;
16920} VkPhysicalDeviceShaderTileImagePropertiesEXT;
16921
16922
16923
16924// VK_EXT_opacity_micromap is a preprocessor guard. Do not pass it to API calls.
16925#define VK_EXT_opacity_micromap 1
16926VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkMicromapEXT)
16927#define VK_EXT_OPACITY_MICROMAP_SPEC_VERSION 2
16928#define VK_EXT_OPACITY_MICROMAP_EXTENSION_NAME "VK_EXT_opacity_micromap"
16929
16930typedef enum VkMicromapTypeEXT {
16931    VK_MICROMAP_TYPE_OPACITY_MICROMAP_EXT = 0,
16932#ifdef VK_ENABLE_BETA_EXTENSIONS
16933    VK_MICROMAP_TYPE_DISPLACEMENT_MICROMAP_NV = 1000397000,
16934#endif
16935    VK_MICROMAP_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
16936} VkMicromapTypeEXT;
16937
16938typedef enum VkBuildMicromapModeEXT {
16939    VK_BUILD_MICROMAP_MODE_BUILD_EXT = 0,
16940    VK_BUILD_MICROMAP_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
16941} VkBuildMicromapModeEXT;
16942
16943typedef enum VkCopyMicromapModeEXT {
16944    VK_COPY_MICROMAP_MODE_CLONE_EXT = 0,
16945    VK_COPY_MICROMAP_MODE_SERIALIZE_EXT = 1,
16946    VK_COPY_MICROMAP_MODE_DESERIALIZE_EXT = 2,
16947    VK_COPY_MICROMAP_MODE_COMPACT_EXT = 3,
16948    VK_COPY_MICROMAP_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
16949} VkCopyMicromapModeEXT;
16950
16951typedef enum VkOpacityMicromapFormatEXT {
16952    VK_OPACITY_MICROMAP_FORMAT_2_STATE_EXT = 1,
16953    VK_OPACITY_MICROMAP_FORMAT_4_STATE_EXT = 2,
16954    VK_OPACITY_MICROMAP_FORMAT_MAX_ENUM_EXT = 0x7FFFFFFF
16955} VkOpacityMicromapFormatEXT;
16956
16957typedef enum VkOpacityMicromapSpecialIndexEXT {
16958    VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_TRANSPARENT_EXT = -1,
16959    VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_OPAQUE_EXT = -2,
16960    VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_TRANSPARENT_EXT = -3,
16961    VK_OPACITY_MICROMAP_SPECIAL_INDEX_FULLY_UNKNOWN_OPAQUE_EXT = -4,
16962    VK_OPACITY_MICROMAP_SPECIAL_INDEX_MAX_ENUM_EXT = 0x7FFFFFFF
16963} VkOpacityMicromapSpecialIndexEXT;
16964
16965typedef enum VkAccelerationStructureCompatibilityKHR {
16966    VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR = 0,
16967    VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR = 1,
16968    VK_ACCELERATION_STRUCTURE_COMPATIBILITY_MAX_ENUM_KHR = 0x7FFFFFFF
16969} VkAccelerationStructureCompatibilityKHR;
16970
16971typedef enum VkAccelerationStructureBuildTypeKHR {
16972    VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_KHR = 0,
16973    VK_ACCELERATION_STRUCTURE_BUILD_TYPE_DEVICE_KHR = 1,
16974    VK_ACCELERATION_STRUCTURE_BUILD_TYPE_HOST_OR_DEVICE_KHR = 2,
16975    VK_ACCELERATION_STRUCTURE_BUILD_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
16976} VkAccelerationStructureBuildTypeKHR;
16977
16978typedef enum VkBuildMicromapFlagBitsEXT {
16979    VK_BUILD_MICROMAP_PREFER_FAST_TRACE_BIT_EXT = 0x00000001,
16980    VK_BUILD_MICROMAP_PREFER_FAST_BUILD_BIT_EXT = 0x00000002,
16981    VK_BUILD_MICROMAP_ALLOW_COMPACTION_BIT_EXT = 0x00000004,
16982    VK_BUILD_MICROMAP_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
16983} VkBuildMicromapFlagBitsEXT;
16984typedef VkFlags VkBuildMicromapFlagsEXT;
16985
16986typedef enum VkMicromapCreateFlagBitsEXT {
16987    VK_MICROMAP_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_EXT = 0x00000001,
16988    VK_MICROMAP_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
16989} VkMicromapCreateFlagBitsEXT;
16990typedef VkFlags VkMicromapCreateFlagsEXT;
16991typedef struct VkMicromapUsageEXT {
16992    uint32_t    count;
16993    uint32_t    subdivisionLevel;
16994    uint32_t    format;
16995} VkMicromapUsageEXT;
16996
16997typedef union VkDeviceOrHostAddressKHR {
16998    VkDeviceAddress    deviceAddress;
16999    void*              hostAddress;
17000} VkDeviceOrHostAddressKHR;
17001
17002typedef struct VkMicromapBuildInfoEXT {
17003    VkStructureType                     sType;
17004    const void*                         pNext;
17005    VkMicromapTypeEXT                   type;
17006    VkBuildMicromapFlagsEXT             flags;
17007    VkBuildMicromapModeEXT              mode;
17008    VkMicromapEXT                       dstMicromap;
17009    uint32_t                            usageCountsCount;
17010    const VkMicromapUsageEXT*           pUsageCounts;
17011    const VkMicromapUsageEXT* const*    ppUsageCounts;
17012    VkDeviceOrHostAddressConstKHR       data;
17013    VkDeviceOrHostAddressKHR            scratchData;
17014    VkDeviceOrHostAddressConstKHR       triangleArray;
17015    VkDeviceSize                        triangleArrayStride;
17016} VkMicromapBuildInfoEXT;
17017
17018typedef struct VkMicromapCreateInfoEXT {
17019    VkStructureType             sType;
17020    const void*                 pNext;
17021    VkMicromapCreateFlagsEXT    createFlags;
17022    VkBuffer                    buffer;
17023    VkDeviceSize                offset;
17024    VkDeviceSize                size;
17025    VkMicromapTypeEXT           type;
17026    VkDeviceAddress             deviceAddress;
17027} VkMicromapCreateInfoEXT;
17028
17029typedef struct VkPhysicalDeviceOpacityMicromapFeaturesEXT {
17030    VkStructureType    sType;
17031    void*              pNext;
17032    VkBool32           micromap;
17033    VkBool32           micromapCaptureReplay;
17034    VkBool32           micromapHostCommands;
17035} VkPhysicalDeviceOpacityMicromapFeaturesEXT;
17036
17037typedef struct VkPhysicalDeviceOpacityMicromapPropertiesEXT {
17038    VkStructureType    sType;
17039    void*              pNext;
17040    uint32_t           maxOpacity2StateSubdivisionLevel;
17041    uint32_t           maxOpacity4StateSubdivisionLevel;
17042} VkPhysicalDeviceOpacityMicromapPropertiesEXT;
17043
17044typedef struct VkMicromapVersionInfoEXT {
17045    VkStructureType    sType;
17046    const void*        pNext;
17047    const uint8_t*     pVersionData;
17048} VkMicromapVersionInfoEXT;
17049
17050typedef struct VkCopyMicromapToMemoryInfoEXT {
17051    VkStructureType             sType;
17052    const void*                 pNext;
17053    VkMicromapEXT               src;
17054    VkDeviceOrHostAddressKHR    dst;
17055    VkCopyMicromapModeEXT       mode;
17056} VkCopyMicromapToMemoryInfoEXT;
17057
17058typedef struct VkCopyMemoryToMicromapInfoEXT {
17059    VkStructureType                  sType;
17060    const void*                      pNext;
17061    VkDeviceOrHostAddressConstKHR    src;
17062    VkMicromapEXT                    dst;
17063    VkCopyMicromapModeEXT            mode;
17064} VkCopyMemoryToMicromapInfoEXT;
17065
17066typedef struct VkCopyMicromapInfoEXT {
17067    VkStructureType          sType;
17068    const void*              pNext;
17069    VkMicromapEXT            src;
17070    VkMicromapEXT            dst;
17071    VkCopyMicromapModeEXT    mode;
17072} VkCopyMicromapInfoEXT;
17073
17074typedef struct VkMicromapBuildSizesInfoEXT {
17075    VkStructureType    sType;
17076    const void*        pNext;
17077    VkDeviceSize       micromapSize;
17078    VkDeviceSize       buildScratchSize;
17079    VkBool32           discardable;
17080} VkMicromapBuildSizesInfoEXT;
17081
17082typedef struct VkAccelerationStructureTrianglesOpacityMicromapEXT {
17083    VkStructureType                     sType;
17084    void*                               pNext;
17085    VkIndexType                         indexType;
17086    VkDeviceOrHostAddressConstKHR       indexBuffer;
17087    VkDeviceSize                        indexStride;
17088    uint32_t                            baseTriangle;
17089    uint32_t                            usageCountsCount;
17090    const VkMicromapUsageEXT*           pUsageCounts;
17091    const VkMicromapUsageEXT* const*    ppUsageCounts;
17092    VkMicromapEXT                       micromap;
17093} VkAccelerationStructureTrianglesOpacityMicromapEXT;
17094
17095typedef struct VkMicromapTriangleEXT {
17096    uint32_t    dataOffset;
17097    uint16_t    subdivisionLevel;
17098    uint16_t    format;
17099} VkMicromapTriangleEXT;
17100
17101typedef VkResult (VKAPI_PTR *PFN_vkCreateMicromapEXT)(VkDevice                                           device, const VkMicromapCreateInfoEXT*        pCreateInfo, const VkAllocationCallbacks*       pAllocator, VkMicromapEXT*                        pMicromap);
17102typedef void (VKAPI_PTR *PFN_vkDestroyMicromapEXT)(VkDevice device, VkMicromapEXT micromap, const VkAllocationCallbacks* pAllocator);
17103typedef void (VKAPI_PTR *PFN_vkCmdBuildMicromapsEXT)(VkCommandBuffer                                    commandBuffer, uint32_t infoCount, const VkMicromapBuildInfoEXT* pInfos);
17104typedef VkResult (VKAPI_PTR *PFN_vkBuildMicromapsEXT)(VkDevice                                           device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount, const VkMicromapBuildInfoEXT* pInfos);
17105typedef VkResult (VKAPI_PTR *PFN_vkCopyMicromapEXT)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMicromapInfoEXT* pInfo);
17106typedef VkResult (VKAPI_PTR *PFN_vkCopyMicromapToMemoryEXT)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMicromapToMemoryInfoEXT* pInfo);
17107typedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToMicromapEXT)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToMicromapInfoEXT* pInfo);
17108typedef VkResult (VKAPI_PTR *PFN_vkWriteMicromapsPropertiesEXT)(VkDevice device, uint32_t micromapCount, const VkMicromapEXT* pMicromaps, VkQueryType  queryType, size_t       dataSize, void* pData, size_t stride);
17109typedef void (VKAPI_PTR *PFN_vkCmdCopyMicromapEXT)(VkCommandBuffer commandBuffer, const VkCopyMicromapInfoEXT* pInfo);
17110typedef void (VKAPI_PTR *PFN_vkCmdCopyMicromapToMemoryEXT)(VkCommandBuffer commandBuffer, const VkCopyMicromapToMemoryInfoEXT* pInfo);
17111typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToMicromapEXT)(VkCommandBuffer commandBuffer, const VkCopyMemoryToMicromapInfoEXT* pInfo);
17112typedef void (VKAPI_PTR *PFN_vkCmdWriteMicromapsPropertiesEXT)(VkCommandBuffer commandBuffer, uint32_t micromapCount, const VkMicromapEXT* pMicromaps, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery);
17113typedef void (VKAPI_PTR *PFN_vkGetDeviceMicromapCompatibilityEXT)(VkDevice device, const VkMicromapVersionInfoEXT* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility);
17114typedef void (VKAPI_PTR *PFN_vkGetMicromapBuildSizesEXT)(VkDevice                                            device, VkAccelerationStructureBuildTypeKHR                 buildType, const VkMicromapBuildInfoEXT*  pBuildInfo, VkMicromapBuildSizesInfoEXT*           pSizeInfo);
17115
17116#ifndef VK_NO_PROTOTYPES
17117VKAPI_ATTR VkResult VKAPI_CALL vkCreateMicromapEXT(
17118    VkDevice                                    device,
17119    const VkMicromapCreateInfoEXT*              pCreateInfo,
17120    const VkAllocationCallbacks*                pAllocator,
17121    VkMicromapEXT*                              pMicromap);
17122
17123VKAPI_ATTR void VKAPI_CALL vkDestroyMicromapEXT(
17124    VkDevice                                    device,
17125    VkMicromapEXT                               micromap,
17126    const VkAllocationCallbacks*                pAllocator);
17127
17128VKAPI_ATTR void VKAPI_CALL vkCmdBuildMicromapsEXT(
17129    VkCommandBuffer                             commandBuffer,
17130    uint32_t                                    infoCount,
17131    const VkMicromapBuildInfoEXT*               pInfos);
17132
17133VKAPI_ATTR VkResult VKAPI_CALL vkBuildMicromapsEXT(
17134    VkDevice                                    device,
17135    VkDeferredOperationKHR                      deferredOperation,
17136    uint32_t                                    infoCount,
17137    const VkMicromapBuildInfoEXT*               pInfos);
17138
17139VKAPI_ATTR VkResult VKAPI_CALL vkCopyMicromapEXT(
17140    VkDevice                                    device,
17141    VkDeferredOperationKHR                      deferredOperation,
17142    const VkCopyMicromapInfoEXT*                pInfo);
17143
17144VKAPI_ATTR VkResult VKAPI_CALL vkCopyMicromapToMemoryEXT(
17145    VkDevice                                    device,
17146    VkDeferredOperationKHR                      deferredOperation,
17147    const VkCopyMicromapToMemoryInfoEXT*        pInfo);
17148
17149VKAPI_ATTR VkResult VKAPI_CALL vkCopyMemoryToMicromapEXT(
17150    VkDevice                                    device,
17151    VkDeferredOperationKHR                      deferredOperation,
17152    const VkCopyMemoryToMicromapInfoEXT*        pInfo);
17153
17154VKAPI_ATTR VkResult VKAPI_CALL vkWriteMicromapsPropertiesEXT(
17155    VkDevice                                    device,
17156    uint32_t                                    micromapCount,
17157    const VkMicromapEXT*                        pMicromaps,
17158    VkQueryType                                 queryType,
17159    size_t                                      dataSize,
17160    void*                                       pData,
17161    size_t                                      stride);
17162
17163VKAPI_ATTR void VKAPI_CALL vkCmdCopyMicromapEXT(
17164    VkCommandBuffer                             commandBuffer,
17165    const VkCopyMicromapInfoEXT*                pInfo);
17166
17167VKAPI_ATTR void VKAPI_CALL vkCmdCopyMicromapToMemoryEXT(
17168    VkCommandBuffer                             commandBuffer,
17169    const VkCopyMicromapToMemoryInfoEXT*        pInfo);
17170
17171VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToMicromapEXT(
17172    VkCommandBuffer                             commandBuffer,
17173    const VkCopyMemoryToMicromapInfoEXT*        pInfo);
17174
17175VKAPI_ATTR void VKAPI_CALL vkCmdWriteMicromapsPropertiesEXT(
17176    VkCommandBuffer                             commandBuffer,
17177    uint32_t                                    micromapCount,
17178    const VkMicromapEXT*                        pMicromaps,
17179    VkQueryType                                 queryType,
17180    VkQueryPool                                 queryPool,
17181    uint32_t                                    firstQuery);
17182
17183VKAPI_ATTR void VKAPI_CALL vkGetDeviceMicromapCompatibilityEXT(
17184    VkDevice                                    device,
17185    const VkMicromapVersionInfoEXT*             pVersionInfo,
17186    VkAccelerationStructureCompatibilityKHR*    pCompatibility);
17187
17188VKAPI_ATTR void VKAPI_CALL vkGetMicromapBuildSizesEXT(
17189    VkDevice                                    device,
17190    VkAccelerationStructureBuildTypeKHR         buildType,
17191    const VkMicromapBuildInfoEXT*               pBuildInfo,
17192    VkMicromapBuildSizesInfoEXT*                pSizeInfo);
17193#endif
17194
17195
17196// VK_EXT_load_store_op_none is a preprocessor guard. Do not pass it to API calls.
17197#define VK_EXT_load_store_op_none 1
17198#define VK_EXT_LOAD_STORE_OP_NONE_SPEC_VERSION 1
17199#define VK_EXT_LOAD_STORE_OP_NONE_EXTENSION_NAME "VK_EXT_load_store_op_none"
17200
17201
17202// VK_HUAWEI_cluster_culling_shader is a preprocessor guard. Do not pass it to API calls.
17203#define VK_HUAWEI_cluster_culling_shader 1
17204#define VK_HUAWEI_CLUSTER_CULLING_SHADER_SPEC_VERSION 3
17205#define VK_HUAWEI_CLUSTER_CULLING_SHADER_EXTENSION_NAME "VK_HUAWEI_cluster_culling_shader"
17206typedef struct VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI {
17207    VkStructureType    sType;
17208    void*              pNext;
17209    VkBool32           clustercullingShader;
17210    VkBool32           multiviewClusterCullingShader;
17211} VkPhysicalDeviceClusterCullingShaderFeaturesHUAWEI;
17212
17213typedef struct VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI {
17214    VkStructureType    sType;
17215    void*              pNext;
17216    uint32_t           maxWorkGroupCount[3];
17217    uint32_t           maxWorkGroupSize[3];
17218    uint32_t           maxOutputClusterCount;
17219    VkDeviceSize       indirectBufferOffsetAlignment;
17220} VkPhysicalDeviceClusterCullingShaderPropertiesHUAWEI;
17221
17222typedef struct VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI {
17223    VkStructureType    sType;
17224    void*              pNext;
17225    VkBool32           clusterShadingRate;
17226} VkPhysicalDeviceClusterCullingShaderVrsFeaturesHUAWEI;
17227
17228typedef void (VKAPI_PTR *PFN_vkCmdDrawClusterHUAWEI)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
17229typedef void (VKAPI_PTR *PFN_vkCmdDrawClusterIndirectHUAWEI)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
17230
17231#ifndef VK_NO_PROTOTYPES
17232VKAPI_ATTR void VKAPI_CALL vkCmdDrawClusterHUAWEI(
17233    VkCommandBuffer                             commandBuffer,
17234    uint32_t                                    groupCountX,
17235    uint32_t                                    groupCountY,
17236    uint32_t                                    groupCountZ);
17237
17238VKAPI_ATTR void VKAPI_CALL vkCmdDrawClusterIndirectHUAWEI(
17239    VkCommandBuffer                             commandBuffer,
17240    VkBuffer                                    buffer,
17241    VkDeviceSize                                offset);
17242#endif
17243
17244
17245// VK_EXT_border_color_swizzle is a preprocessor guard. Do not pass it to API calls.
17246#define VK_EXT_border_color_swizzle 1
17247#define VK_EXT_BORDER_COLOR_SWIZZLE_SPEC_VERSION 1
17248#define VK_EXT_BORDER_COLOR_SWIZZLE_EXTENSION_NAME "VK_EXT_border_color_swizzle"
17249typedef struct VkPhysicalDeviceBorderColorSwizzleFeaturesEXT {
17250    VkStructureType    sType;
17251    void*              pNext;
17252    VkBool32           borderColorSwizzle;
17253    VkBool32           borderColorSwizzleFromImage;
17254} VkPhysicalDeviceBorderColorSwizzleFeaturesEXT;
17255
17256typedef struct VkSamplerBorderColorComponentMappingCreateInfoEXT {
17257    VkStructureType       sType;
17258    const void*           pNext;
17259    VkComponentMapping    components;
17260    VkBool32              srgb;
17261} VkSamplerBorderColorComponentMappingCreateInfoEXT;
17262
17263
17264
17265// VK_EXT_pageable_device_local_memory is a preprocessor guard. Do not pass it to API calls.
17266#define VK_EXT_pageable_device_local_memory 1
17267#define VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_SPEC_VERSION 1
17268#define VK_EXT_PAGEABLE_DEVICE_LOCAL_MEMORY_EXTENSION_NAME "VK_EXT_pageable_device_local_memory"
17269typedef struct VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT {
17270    VkStructureType    sType;
17271    void*              pNext;
17272    VkBool32           pageableDeviceLocalMemory;
17273} VkPhysicalDevicePageableDeviceLocalMemoryFeaturesEXT;
17274
17275typedef void (VKAPI_PTR *PFN_vkSetDeviceMemoryPriorityEXT)(VkDevice       device, VkDeviceMemory memory, float          priority);
17276
17277#ifndef VK_NO_PROTOTYPES
17278VKAPI_ATTR void VKAPI_CALL vkSetDeviceMemoryPriorityEXT(
17279    VkDevice                                    device,
17280    VkDeviceMemory                              memory,
17281    float                                       priority);
17282#endif
17283
17284
17285// VK_ARM_shader_core_properties is a preprocessor guard. Do not pass it to API calls.
17286#define VK_ARM_shader_core_properties 1
17287#define VK_ARM_SHADER_CORE_PROPERTIES_SPEC_VERSION 1
17288#define VK_ARM_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_ARM_shader_core_properties"
17289typedef struct VkPhysicalDeviceShaderCorePropertiesARM {
17290    VkStructureType    sType;
17291    void*              pNext;
17292    uint32_t           pixelRate;
17293    uint32_t           texelRate;
17294    uint32_t           fmaRate;
17295} VkPhysicalDeviceShaderCorePropertiesARM;
17296
17297
17298
17299// VK_ARM_scheduling_controls is a preprocessor guard. Do not pass it to API calls.
17300#define VK_ARM_scheduling_controls 1
17301#define VK_ARM_SCHEDULING_CONTROLS_SPEC_VERSION 1
17302#define VK_ARM_SCHEDULING_CONTROLS_EXTENSION_NAME "VK_ARM_scheduling_controls"
17303typedef VkFlags64 VkPhysicalDeviceSchedulingControlsFlagsARM;
17304
17305// Flag bits for VkPhysicalDeviceSchedulingControlsFlagBitsARM
17306typedef VkFlags64 VkPhysicalDeviceSchedulingControlsFlagBitsARM;
17307static const VkPhysicalDeviceSchedulingControlsFlagBitsARM VK_PHYSICAL_DEVICE_SCHEDULING_CONTROLS_SHADER_CORE_COUNT_ARM = 0x00000001ULL;
17308
17309typedef struct VkDeviceQueueShaderCoreControlCreateInfoARM {
17310    VkStructureType    sType;
17311    void*              pNext;
17312    uint32_t           shaderCoreCount;
17313} VkDeviceQueueShaderCoreControlCreateInfoARM;
17314
17315typedef struct VkPhysicalDeviceSchedulingControlsFeaturesARM {
17316    VkStructureType    sType;
17317    void*              pNext;
17318    VkBool32           schedulingControls;
17319} VkPhysicalDeviceSchedulingControlsFeaturesARM;
17320
17321typedef struct VkPhysicalDeviceSchedulingControlsPropertiesARM {
17322    VkStructureType                               sType;
17323    void*                                         pNext;
17324    VkPhysicalDeviceSchedulingControlsFlagsARM    schedulingControlsFlags;
17325} VkPhysicalDeviceSchedulingControlsPropertiesARM;
17326
17327
17328
17329// VK_EXT_image_sliced_view_of_3d is a preprocessor guard. Do not pass it to API calls.
17330#define VK_EXT_image_sliced_view_of_3d 1
17331#define VK_EXT_IMAGE_SLICED_VIEW_OF_3D_SPEC_VERSION 1
17332#define VK_EXT_IMAGE_SLICED_VIEW_OF_3D_EXTENSION_NAME "VK_EXT_image_sliced_view_of_3d"
17333#define VK_REMAINING_3D_SLICES_EXT        (~0U)
17334typedef struct VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT {
17335    VkStructureType    sType;
17336    void*              pNext;
17337    VkBool32           imageSlicedViewOf3D;
17338} VkPhysicalDeviceImageSlicedViewOf3DFeaturesEXT;
17339
17340typedef struct VkImageViewSlicedCreateInfoEXT {
17341    VkStructureType    sType;
17342    const void*        pNext;
17343    uint32_t           sliceOffset;
17344    uint32_t           sliceCount;
17345} VkImageViewSlicedCreateInfoEXT;
17346
17347
17348
17349// VK_VALVE_descriptor_set_host_mapping is a preprocessor guard. Do not pass it to API calls.
17350#define VK_VALVE_descriptor_set_host_mapping 1
17351#define VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_SPEC_VERSION 1
17352#define VK_VALVE_DESCRIPTOR_SET_HOST_MAPPING_EXTENSION_NAME "VK_VALVE_descriptor_set_host_mapping"
17353typedef struct VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE {
17354    VkStructureType    sType;
17355    void*              pNext;
17356    VkBool32           descriptorSetHostMapping;
17357} VkPhysicalDeviceDescriptorSetHostMappingFeaturesVALVE;
17358
17359typedef struct VkDescriptorSetBindingReferenceVALVE {
17360    VkStructureType          sType;
17361    const void*              pNext;
17362    VkDescriptorSetLayout    descriptorSetLayout;
17363    uint32_t                 binding;
17364} VkDescriptorSetBindingReferenceVALVE;
17365
17366typedef struct VkDescriptorSetLayoutHostMappingInfoVALVE {
17367    VkStructureType    sType;
17368    void*              pNext;
17369    size_t             descriptorOffset;
17370    uint32_t           descriptorSize;
17371} VkDescriptorSetLayoutHostMappingInfoVALVE;
17372
17373typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutHostMappingInfoVALVE)(VkDevice device, const VkDescriptorSetBindingReferenceVALVE* pBindingReference, VkDescriptorSetLayoutHostMappingInfoVALVE* pHostMapping);
17374typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetHostMappingVALVE)(VkDevice device, VkDescriptorSet descriptorSet, void** ppData);
17375
17376#ifndef VK_NO_PROTOTYPES
17377VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutHostMappingInfoVALVE(
17378    VkDevice                                    device,
17379    const VkDescriptorSetBindingReferenceVALVE* pBindingReference,
17380    VkDescriptorSetLayoutHostMappingInfoVALVE*  pHostMapping);
17381
17382VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetHostMappingVALVE(
17383    VkDevice                                    device,
17384    VkDescriptorSet                             descriptorSet,
17385    void**                                      ppData);
17386#endif
17387
17388
17389// VK_EXT_depth_clamp_zero_one is a preprocessor guard. Do not pass it to API calls.
17390#define VK_EXT_depth_clamp_zero_one 1
17391#define VK_EXT_DEPTH_CLAMP_ZERO_ONE_SPEC_VERSION 1
17392#define VK_EXT_DEPTH_CLAMP_ZERO_ONE_EXTENSION_NAME "VK_EXT_depth_clamp_zero_one"
17393typedef struct VkPhysicalDeviceDepthClampZeroOneFeaturesEXT {
17394    VkStructureType    sType;
17395    void*              pNext;
17396    VkBool32           depthClampZeroOne;
17397} VkPhysicalDeviceDepthClampZeroOneFeaturesEXT;
17398
17399
17400
17401// VK_EXT_non_seamless_cube_map is a preprocessor guard. Do not pass it to API calls.
17402#define VK_EXT_non_seamless_cube_map 1
17403#define VK_EXT_NON_SEAMLESS_CUBE_MAP_SPEC_VERSION 1
17404#define VK_EXT_NON_SEAMLESS_CUBE_MAP_EXTENSION_NAME "VK_EXT_non_seamless_cube_map"
17405typedef struct VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT {
17406    VkStructureType    sType;
17407    void*              pNext;
17408    VkBool32           nonSeamlessCubeMap;
17409} VkPhysicalDeviceNonSeamlessCubeMapFeaturesEXT;
17410
17411
17412
17413// VK_ARM_render_pass_striped is a preprocessor guard. Do not pass it to API calls.
17414#define VK_ARM_render_pass_striped 1
17415#define VK_ARM_RENDER_PASS_STRIPED_SPEC_VERSION 1
17416#define VK_ARM_RENDER_PASS_STRIPED_EXTENSION_NAME "VK_ARM_render_pass_striped"
17417typedef struct VkPhysicalDeviceRenderPassStripedFeaturesARM {
17418    VkStructureType    sType;
17419    void*              pNext;
17420    VkBool32           renderPassStriped;
17421} VkPhysicalDeviceRenderPassStripedFeaturesARM;
17422
17423typedef struct VkPhysicalDeviceRenderPassStripedPropertiesARM {
17424    VkStructureType    sType;
17425    void*              pNext;
17426    VkExtent2D         renderPassStripeGranularity;
17427    uint32_t           maxRenderPassStripes;
17428} VkPhysicalDeviceRenderPassStripedPropertiesARM;
17429
17430typedef struct VkRenderPassStripeInfoARM {
17431    VkStructureType    sType;
17432    const void*        pNext;
17433    VkRect2D           stripeArea;
17434} VkRenderPassStripeInfoARM;
17435
17436typedef struct VkRenderPassStripeBeginInfoARM {
17437    VkStructureType                     sType;
17438    const void*                         pNext;
17439    uint32_t                            stripeInfoCount;
17440    const VkRenderPassStripeInfoARM*    pStripeInfos;
17441} VkRenderPassStripeBeginInfoARM;
17442
17443typedef struct VkRenderPassStripeSubmitInfoARM {
17444    VkStructureType                 sType;
17445    const void*                     pNext;
17446    uint32_t                        stripeSemaphoreInfoCount;
17447    const VkSemaphoreSubmitInfo*    pStripeSemaphoreInfos;
17448} VkRenderPassStripeSubmitInfoARM;
17449
17450
17451
17452// VK_QCOM_fragment_density_map_offset is a preprocessor guard. Do not pass it to API calls.
17453#define VK_QCOM_fragment_density_map_offset 1
17454#define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_SPEC_VERSION 1
17455#define VK_QCOM_FRAGMENT_DENSITY_MAP_OFFSET_EXTENSION_NAME "VK_QCOM_fragment_density_map_offset"
17456typedef struct VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM {
17457    VkStructureType    sType;
17458    void*              pNext;
17459    VkBool32           fragmentDensityMapOffset;
17460} VkPhysicalDeviceFragmentDensityMapOffsetFeaturesQCOM;
17461
17462typedef struct VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM {
17463    VkStructureType    sType;
17464    void*              pNext;
17465    VkExtent2D         fragmentDensityOffsetGranularity;
17466} VkPhysicalDeviceFragmentDensityMapOffsetPropertiesQCOM;
17467
17468typedef struct VkSubpassFragmentDensityMapOffsetEndInfoQCOM {
17469    VkStructureType      sType;
17470    const void*          pNext;
17471    uint32_t             fragmentDensityOffsetCount;
17472    const VkOffset2D*    pFragmentDensityOffsets;
17473} VkSubpassFragmentDensityMapOffsetEndInfoQCOM;
17474
17475
17476
17477// VK_NV_copy_memory_indirect is a preprocessor guard. Do not pass it to API calls.
17478#define VK_NV_copy_memory_indirect 1
17479#define VK_NV_COPY_MEMORY_INDIRECT_SPEC_VERSION 1
17480#define VK_NV_COPY_MEMORY_INDIRECT_EXTENSION_NAME "VK_NV_copy_memory_indirect"
17481typedef struct VkCopyMemoryIndirectCommandNV {
17482    VkDeviceAddress    srcAddress;
17483    VkDeviceAddress    dstAddress;
17484    VkDeviceSize       size;
17485} VkCopyMemoryIndirectCommandNV;
17486
17487typedef struct VkCopyMemoryToImageIndirectCommandNV {
17488    VkDeviceAddress             srcAddress;
17489    uint32_t                    bufferRowLength;
17490    uint32_t                    bufferImageHeight;
17491    VkImageSubresourceLayers    imageSubresource;
17492    VkOffset3D                  imageOffset;
17493    VkExtent3D                  imageExtent;
17494} VkCopyMemoryToImageIndirectCommandNV;
17495
17496typedef struct VkPhysicalDeviceCopyMemoryIndirectFeaturesNV {
17497    VkStructureType    sType;
17498    void*              pNext;
17499    VkBool32           indirectCopy;
17500} VkPhysicalDeviceCopyMemoryIndirectFeaturesNV;
17501
17502typedef struct VkPhysicalDeviceCopyMemoryIndirectPropertiesNV {
17503    VkStructureType    sType;
17504    void*              pNext;
17505    VkQueueFlags       supportedQueues;
17506} VkPhysicalDeviceCopyMemoryIndirectPropertiesNV;
17507
17508typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryIndirectNV)(VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress, uint32_t copyCount, uint32_t stride);
17509typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToImageIndirectNV)(VkCommandBuffer commandBuffer, VkDeviceAddress copyBufferAddress, uint32_t copyCount, uint32_t stride, VkImage dstImage, VkImageLayout dstImageLayout, const VkImageSubresourceLayers* pImageSubresources);
17510
17511#ifndef VK_NO_PROTOTYPES
17512VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryIndirectNV(
17513    VkCommandBuffer                             commandBuffer,
17514    VkDeviceAddress                             copyBufferAddress,
17515    uint32_t                                    copyCount,
17516    uint32_t                                    stride);
17517
17518VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToImageIndirectNV(
17519    VkCommandBuffer                             commandBuffer,
17520    VkDeviceAddress                             copyBufferAddress,
17521    uint32_t                                    copyCount,
17522    uint32_t                                    stride,
17523    VkImage                                     dstImage,
17524    VkImageLayout                               dstImageLayout,
17525    const VkImageSubresourceLayers*             pImageSubresources);
17526#endif
17527
17528
17529// VK_NV_memory_decompression is a preprocessor guard. Do not pass it to API calls.
17530#define VK_NV_memory_decompression 1
17531#define VK_NV_MEMORY_DECOMPRESSION_SPEC_VERSION 1
17532#define VK_NV_MEMORY_DECOMPRESSION_EXTENSION_NAME "VK_NV_memory_decompression"
17533
17534// Flag bits for VkMemoryDecompressionMethodFlagBitsNV
17535typedef VkFlags64 VkMemoryDecompressionMethodFlagBitsNV;
17536static const VkMemoryDecompressionMethodFlagBitsNV VK_MEMORY_DECOMPRESSION_METHOD_GDEFLATE_1_0_BIT_NV = 0x00000001ULL;
17537
17538typedef VkFlags64 VkMemoryDecompressionMethodFlagsNV;
17539typedef struct VkDecompressMemoryRegionNV {
17540    VkDeviceAddress                       srcAddress;
17541    VkDeviceAddress                       dstAddress;
17542    VkDeviceSize                          compressedSize;
17543    VkDeviceSize                          decompressedSize;
17544    VkMemoryDecompressionMethodFlagsNV    decompressionMethod;
17545} VkDecompressMemoryRegionNV;
17546
17547typedef struct VkPhysicalDeviceMemoryDecompressionFeaturesNV {
17548    VkStructureType    sType;
17549    void*              pNext;
17550    VkBool32           memoryDecompression;
17551} VkPhysicalDeviceMemoryDecompressionFeaturesNV;
17552
17553typedef struct VkPhysicalDeviceMemoryDecompressionPropertiesNV {
17554    VkStructureType                       sType;
17555    void*                                 pNext;
17556    VkMemoryDecompressionMethodFlagsNV    decompressionMethods;
17557    uint64_t                              maxDecompressionIndirectCount;
17558} VkPhysicalDeviceMemoryDecompressionPropertiesNV;
17559
17560typedef void (VKAPI_PTR *PFN_vkCmdDecompressMemoryNV)(VkCommandBuffer commandBuffer, uint32_t decompressRegionCount, const VkDecompressMemoryRegionNV* pDecompressMemoryRegions);
17561typedef void (VKAPI_PTR *PFN_vkCmdDecompressMemoryIndirectCountNV)(VkCommandBuffer commandBuffer, VkDeviceAddress indirectCommandsAddress, VkDeviceAddress indirectCommandsCountAddress, uint32_t stride);
17562
17563#ifndef VK_NO_PROTOTYPES
17564VKAPI_ATTR void VKAPI_CALL vkCmdDecompressMemoryNV(
17565    VkCommandBuffer                             commandBuffer,
17566    uint32_t                                    decompressRegionCount,
17567    const VkDecompressMemoryRegionNV*           pDecompressMemoryRegions);
17568
17569VKAPI_ATTR void VKAPI_CALL vkCmdDecompressMemoryIndirectCountNV(
17570    VkCommandBuffer                             commandBuffer,
17571    VkDeviceAddress                             indirectCommandsAddress,
17572    VkDeviceAddress                             indirectCommandsCountAddress,
17573    uint32_t                                    stride);
17574#endif
17575
17576
17577// VK_NV_device_generated_commands_compute is a preprocessor guard. Do not pass it to API calls.
17578#define VK_NV_device_generated_commands_compute 1
17579#define VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_SPEC_VERSION 2
17580#define VK_NV_DEVICE_GENERATED_COMMANDS_COMPUTE_EXTENSION_NAME "VK_NV_device_generated_commands_compute"
17581typedef struct VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV {
17582    VkStructureType    sType;
17583    void*              pNext;
17584    VkBool32           deviceGeneratedCompute;
17585    VkBool32           deviceGeneratedComputePipelines;
17586    VkBool32           deviceGeneratedComputeCaptureReplay;
17587} VkPhysicalDeviceDeviceGeneratedCommandsComputeFeaturesNV;
17588
17589typedef struct VkComputePipelineIndirectBufferInfoNV {
17590    VkStructureType    sType;
17591    const void*        pNext;
17592    VkDeviceAddress    deviceAddress;
17593    VkDeviceSize       size;
17594    VkDeviceAddress    pipelineDeviceAddressCaptureReplay;
17595} VkComputePipelineIndirectBufferInfoNV;
17596
17597typedef struct VkPipelineIndirectDeviceAddressInfoNV {
17598    VkStructureType        sType;
17599    const void*            pNext;
17600    VkPipelineBindPoint    pipelineBindPoint;
17601    VkPipeline             pipeline;
17602} VkPipelineIndirectDeviceAddressInfoNV;
17603
17604typedef struct VkBindPipelineIndirectCommandNV {
17605    VkDeviceAddress    pipelineAddress;
17606} VkBindPipelineIndirectCommandNV;
17607
17608typedef void (VKAPI_PTR *PFN_vkGetPipelineIndirectMemoryRequirementsNV)(VkDevice device, const VkComputePipelineCreateInfo* pCreateInfo, VkMemoryRequirements2* pMemoryRequirements);
17609typedef void (VKAPI_PTR *PFN_vkCmdUpdatePipelineIndirectBufferNV)(VkCommandBuffer commandBuffer, VkPipelineBindPoint           pipelineBindPoint, VkPipeline                    pipeline);
17610typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetPipelineIndirectDeviceAddressNV)(VkDevice device, const VkPipelineIndirectDeviceAddressInfoNV* pInfo);
17611
17612#ifndef VK_NO_PROTOTYPES
17613VKAPI_ATTR void VKAPI_CALL vkGetPipelineIndirectMemoryRequirementsNV(
17614    VkDevice                                    device,
17615    const VkComputePipelineCreateInfo*          pCreateInfo,
17616    VkMemoryRequirements2*                      pMemoryRequirements);
17617
17618VKAPI_ATTR void VKAPI_CALL vkCmdUpdatePipelineIndirectBufferNV(
17619    VkCommandBuffer                             commandBuffer,
17620    VkPipelineBindPoint                         pipelineBindPoint,
17621    VkPipeline                                  pipeline);
17622
17623VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetPipelineIndirectDeviceAddressNV(
17624    VkDevice                                    device,
17625    const VkPipelineIndirectDeviceAddressInfoNV* pInfo);
17626#endif
17627
17628
17629// VK_NV_linear_color_attachment is a preprocessor guard. Do not pass it to API calls.
17630#define VK_NV_linear_color_attachment 1
17631#define VK_NV_LINEAR_COLOR_ATTACHMENT_SPEC_VERSION 1
17632#define VK_NV_LINEAR_COLOR_ATTACHMENT_EXTENSION_NAME "VK_NV_linear_color_attachment"
17633typedef struct VkPhysicalDeviceLinearColorAttachmentFeaturesNV {
17634    VkStructureType    sType;
17635    void*              pNext;
17636    VkBool32           linearColorAttachment;
17637} VkPhysicalDeviceLinearColorAttachmentFeaturesNV;
17638
17639
17640
17641// VK_GOOGLE_surfaceless_query is a preprocessor guard. Do not pass it to API calls.
17642#define VK_GOOGLE_surfaceless_query 1
17643#define VK_GOOGLE_SURFACELESS_QUERY_SPEC_VERSION 2
17644#define VK_GOOGLE_SURFACELESS_QUERY_EXTENSION_NAME "VK_GOOGLE_surfaceless_query"
17645
17646
17647// VK_EXT_image_compression_control_swapchain is a preprocessor guard. Do not pass it to API calls.
17648#define VK_EXT_image_compression_control_swapchain 1
17649#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_SPEC_VERSION 1
17650#define VK_EXT_IMAGE_COMPRESSION_CONTROL_SWAPCHAIN_EXTENSION_NAME "VK_EXT_image_compression_control_swapchain"
17651typedef struct VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT {
17652    VkStructureType    sType;
17653    void*              pNext;
17654    VkBool32           imageCompressionControlSwapchain;
17655} VkPhysicalDeviceImageCompressionControlSwapchainFeaturesEXT;
17656
17657
17658
17659// VK_QCOM_image_processing is a preprocessor guard. Do not pass it to API calls.
17660#define VK_QCOM_image_processing 1
17661#define VK_QCOM_IMAGE_PROCESSING_SPEC_VERSION 1
17662#define VK_QCOM_IMAGE_PROCESSING_EXTENSION_NAME "VK_QCOM_image_processing"
17663typedef struct VkImageViewSampleWeightCreateInfoQCOM {
17664    VkStructureType    sType;
17665    const void*        pNext;
17666    VkOffset2D         filterCenter;
17667    VkExtent2D         filterSize;
17668    uint32_t           numPhases;
17669} VkImageViewSampleWeightCreateInfoQCOM;
17670
17671typedef struct VkPhysicalDeviceImageProcessingFeaturesQCOM {
17672    VkStructureType    sType;
17673    void*              pNext;
17674    VkBool32           textureSampleWeighted;
17675    VkBool32           textureBoxFilter;
17676    VkBool32           textureBlockMatch;
17677} VkPhysicalDeviceImageProcessingFeaturesQCOM;
17678
17679typedef struct VkPhysicalDeviceImageProcessingPropertiesQCOM {
17680    VkStructureType    sType;
17681    void*              pNext;
17682    uint32_t           maxWeightFilterPhases;
17683    VkExtent2D         maxWeightFilterDimension;
17684    VkExtent2D         maxBlockMatchRegion;
17685    VkExtent2D         maxBoxFilterBlockSize;
17686} VkPhysicalDeviceImageProcessingPropertiesQCOM;
17687
17688
17689
17690// VK_EXT_nested_command_buffer is a preprocessor guard. Do not pass it to API calls.
17691#define VK_EXT_nested_command_buffer 1
17692#define VK_EXT_NESTED_COMMAND_BUFFER_SPEC_VERSION 1
17693#define VK_EXT_NESTED_COMMAND_BUFFER_EXTENSION_NAME "VK_EXT_nested_command_buffer"
17694typedef struct VkPhysicalDeviceNestedCommandBufferFeaturesEXT {
17695    VkStructureType    sType;
17696    void*              pNext;
17697    VkBool32           nestedCommandBuffer;
17698    VkBool32           nestedCommandBufferRendering;
17699    VkBool32           nestedCommandBufferSimultaneousUse;
17700} VkPhysicalDeviceNestedCommandBufferFeaturesEXT;
17701
17702typedef struct VkPhysicalDeviceNestedCommandBufferPropertiesEXT {
17703    VkStructureType    sType;
17704    void*              pNext;
17705    uint32_t           maxCommandBufferNestingLevel;
17706} VkPhysicalDeviceNestedCommandBufferPropertiesEXT;
17707
17708
17709
17710// VK_EXT_external_memory_acquire_unmodified is a preprocessor guard. Do not pass it to API calls.
17711#define VK_EXT_external_memory_acquire_unmodified 1
17712#define VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_SPEC_VERSION 1
17713#define VK_EXT_EXTERNAL_MEMORY_ACQUIRE_UNMODIFIED_EXTENSION_NAME "VK_EXT_external_memory_acquire_unmodified"
17714typedef struct VkExternalMemoryAcquireUnmodifiedEXT {
17715    VkStructureType    sType;
17716    const void*        pNext;
17717    VkBool32           acquireUnmodifiedMemory;
17718} VkExternalMemoryAcquireUnmodifiedEXT;
17719
17720
17721
17722// VK_EXT_extended_dynamic_state3 is a preprocessor guard. Do not pass it to API calls.
17723#define VK_EXT_extended_dynamic_state3 1
17724#define VK_EXT_EXTENDED_DYNAMIC_STATE_3_SPEC_VERSION 2
17725#define VK_EXT_EXTENDED_DYNAMIC_STATE_3_EXTENSION_NAME "VK_EXT_extended_dynamic_state3"
17726typedef struct VkPhysicalDeviceExtendedDynamicState3FeaturesEXT {
17727    VkStructureType    sType;
17728    void*              pNext;
17729    VkBool32           extendedDynamicState3TessellationDomainOrigin;
17730    VkBool32           extendedDynamicState3DepthClampEnable;
17731    VkBool32           extendedDynamicState3PolygonMode;
17732    VkBool32           extendedDynamicState3RasterizationSamples;
17733    VkBool32           extendedDynamicState3SampleMask;
17734    VkBool32           extendedDynamicState3AlphaToCoverageEnable;
17735    VkBool32           extendedDynamicState3AlphaToOneEnable;
17736    VkBool32           extendedDynamicState3LogicOpEnable;
17737    VkBool32           extendedDynamicState3ColorBlendEnable;
17738    VkBool32           extendedDynamicState3ColorBlendEquation;
17739    VkBool32           extendedDynamicState3ColorWriteMask;
17740    VkBool32           extendedDynamicState3RasterizationStream;
17741    VkBool32           extendedDynamicState3ConservativeRasterizationMode;
17742    VkBool32           extendedDynamicState3ExtraPrimitiveOverestimationSize;
17743    VkBool32           extendedDynamicState3DepthClipEnable;
17744    VkBool32           extendedDynamicState3SampleLocationsEnable;
17745    VkBool32           extendedDynamicState3ColorBlendAdvanced;
17746    VkBool32           extendedDynamicState3ProvokingVertexMode;
17747    VkBool32           extendedDynamicState3LineRasterizationMode;
17748    VkBool32           extendedDynamicState3LineStippleEnable;
17749    VkBool32           extendedDynamicState3DepthClipNegativeOneToOne;
17750    VkBool32           extendedDynamicState3ViewportWScalingEnable;
17751    VkBool32           extendedDynamicState3ViewportSwizzle;
17752    VkBool32           extendedDynamicState3CoverageToColorEnable;
17753    VkBool32           extendedDynamicState3CoverageToColorLocation;
17754    VkBool32           extendedDynamicState3CoverageModulationMode;
17755    VkBool32           extendedDynamicState3CoverageModulationTableEnable;
17756    VkBool32           extendedDynamicState3CoverageModulationTable;
17757    VkBool32           extendedDynamicState3CoverageReductionMode;
17758    VkBool32           extendedDynamicState3RepresentativeFragmentTestEnable;
17759    VkBool32           extendedDynamicState3ShadingRateImageEnable;
17760} VkPhysicalDeviceExtendedDynamicState3FeaturesEXT;
17761
17762typedef struct VkPhysicalDeviceExtendedDynamicState3PropertiesEXT {
17763    VkStructureType    sType;
17764    void*              pNext;
17765    VkBool32           dynamicPrimitiveTopologyUnrestricted;
17766} VkPhysicalDeviceExtendedDynamicState3PropertiesEXT;
17767
17768typedef struct VkColorBlendEquationEXT {
17769    VkBlendFactor    srcColorBlendFactor;
17770    VkBlendFactor    dstColorBlendFactor;
17771    VkBlendOp        colorBlendOp;
17772    VkBlendFactor    srcAlphaBlendFactor;
17773    VkBlendFactor    dstAlphaBlendFactor;
17774    VkBlendOp        alphaBlendOp;
17775} VkColorBlendEquationEXT;
17776
17777typedef struct VkColorBlendAdvancedEXT {
17778    VkBlendOp            advancedBlendOp;
17779    VkBool32             srcPremultiplied;
17780    VkBool32             dstPremultiplied;
17781    VkBlendOverlapEXT    blendOverlap;
17782    VkBool32             clampResults;
17783} VkColorBlendAdvancedEXT;
17784
17785typedef void (VKAPI_PTR *PFN_vkCmdSetTessellationDomainOriginEXT)(VkCommandBuffer commandBuffer, VkTessellationDomainOrigin domainOrigin);
17786typedef void (VKAPI_PTR *PFN_vkCmdSetDepthClampEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthClampEnable);
17787typedef void (VKAPI_PTR *PFN_vkCmdSetPolygonModeEXT)(VkCommandBuffer commandBuffer, VkPolygonMode polygonMode);
17788typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizationSamplesEXT)(VkCommandBuffer commandBuffer, VkSampleCountFlagBits  rasterizationSamples);
17789typedef void (VKAPI_PTR *PFN_vkCmdSetSampleMaskEXT)(VkCommandBuffer commandBuffer, VkSampleCountFlagBits  samples, const VkSampleMask*    pSampleMask);
17790typedef void (VKAPI_PTR *PFN_vkCmdSetAlphaToCoverageEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 alphaToCoverageEnable);
17791typedef void (VKAPI_PTR *PFN_vkCmdSetAlphaToOneEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 alphaToOneEnable);
17792typedef void (VKAPI_PTR *PFN_vkCmdSetLogicOpEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 logicOpEnable);
17793typedef void (VKAPI_PTR *PFN_vkCmdSetColorBlendEnableEXT)(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkBool32* pColorBlendEnables);
17794typedef void (VKAPI_PTR *PFN_vkCmdSetColorBlendEquationEXT)(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkColorBlendEquationEXT* pColorBlendEquations);
17795typedef void (VKAPI_PTR *PFN_vkCmdSetColorWriteMaskEXT)(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkColorComponentFlags* pColorWriteMasks);
17796typedef void (VKAPI_PTR *PFN_vkCmdSetRasterizationStreamEXT)(VkCommandBuffer commandBuffer, uint32_t rasterizationStream);
17797typedef void (VKAPI_PTR *PFN_vkCmdSetConservativeRasterizationModeEXT)(VkCommandBuffer commandBuffer, VkConservativeRasterizationModeEXT conservativeRasterizationMode);
17798typedef void (VKAPI_PTR *PFN_vkCmdSetExtraPrimitiveOverestimationSizeEXT)(VkCommandBuffer commandBuffer, float extraPrimitiveOverestimationSize);
17799typedef void (VKAPI_PTR *PFN_vkCmdSetDepthClipEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 depthClipEnable);
17800typedef void (VKAPI_PTR *PFN_vkCmdSetSampleLocationsEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 sampleLocationsEnable);
17801typedef void (VKAPI_PTR *PFN_vkCmdSetColorBlendAdvancedEXT)(VkCommandBuffer commandBuffer, uint32_t firstAttachment, uint32_t attachmentCount, const VkColorBlendAdvancedEXT* pColorBlendAdvanced);
17802typedef void (VKAPI_PTR *PFN_vkCmdSetProvokingVertexModeEXT)(VkCommandBuffer commandBuffer, VkProvokingVertexModeEXT provokingVertexMode);
17803typedef void (VKAPI_PTR *PFN_vkCmdSetLineRasterizationModeEXT)(VkCommandBuffer commandBuffer, VkLineRasterizationModeEXT lineRasterizationMode);
17804typedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleEnableEXT)(VkCommandBuffer commandBuffer, VkBool32 stippledLineEnable);
17805typedef void (VKAPI_PTR *PFN_vkCmdSetDepthClipNegativeOneToOneEXT)(VkCommandBuffer commandBuffer, VkBool32 negativeOneToOne);
17806typedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingEnableNV)(VkCommandBuffer commandBuffer, VkBool32 viewportWScalingEnable);
17807typedef void (VKAPI_PTR *PFN_vkCmdSetViewportSwizzleNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportSwizzleNV* pViewportSwizzles);
17808typedef void (VKAPI_PTR *PFN_vkCmdSetCoverageToColorEnableNV)(VkCommandBuffer commandBuffer, VkBool32 coverageToColorEnable);
17809typedef void (VKAPI_PTR *PFN_vkCmdSetCoverageToColorLocationNV)(VkCommandBuffer commandBuffer, uint32_t coverageToColorLocation);
17810typedef void (VKAPI_PTR *PFN_vkCmdSetCoverageModulationModeNV)(VkCommandBuffer commandBuffer, VkCoverageModulationModeNV coverageModulationMode);
17811typedef void (VKAPI_PTR *PFN_vkCmdSetCoverageModulationTableEnableNV)(VkCommandBuffer commandBuffer, VkBool32 coverageModulationTableEnable);
17812typedef void (VKAPI_PTR *PFN_vkCmdSetCoverageModulationTableNV)(VkCommandBuffer commandBuffer, uint32_t coverageModulationTableCount, const float* pCoverageModulationTable);
17813typedef void (VKAPI_PTR *PFN_vkCmdSetShadingRateImageEnableNV)(VkCommandBuffer commandBuffer, VkBool32 shadingRateImageEnable);
17814typedef void (VKAPI_PTR *PFN_vkCmdSetRepresentativeFragmentTestEnableNV)(VkCommandBuffer commandBuffer, VkBool32 representativeFragmentTestEnable);
17815typedef void (VKAPI_PTR *PFN_vkCmdSetCoverageReductionModeNV)(VkCommandBuffer commandBuffer, VkCoverageReductionModeNV coverageReductionMode);
17816
17817#ifndef VK_NO_PROTOTYPES
17818VKAPI_ATTR void VKAPI_CALL vkCmdSetTessellationDomainOriginEXT(
17819    VkCommandBuffer                             commandBuffer,
17820    VkTessellationDomainOrigin                  domainOrigin);
17821
17822VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthClampEnableEXT(
17823    VkCommandBuffer                             commandBuffer,
17824    VkBool32                                    depthClampEnable);
17825
17826VKAPI_ATTR void VKAPI_CALL vkCmdSetPolygonModeEXT(
17827    VkCommandBuffer                             commandBuffer,
17828    VkPolygonMode                               polygonMode);
17829
17830VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizationSamplesEXT(
17831    VkCommandBuffer                             commandBuffer,
17832    VkSampleCountFlagBits                       rasterizationSamples);
17833
17834VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleMaskEXT(
17835    VkCommandBuffer                             commandBuffer,
17836    VkSampleCountFlagBits                       samples,
17837    const VkSampleMask*                         pSampleMask);
17838
17839VKAPI_ATTR void VKAPI_CALL vkCmdSetAlphaToCoverageEnableEXT(
17840    VkCommandBuffer                             commandBuffer,
17841    VkBool32                                    alphaToCoverageEnable);
17842
17843VKAPI_ATTR void VKAPI_CALL vkCmdSetAlphaToOneEnableEXT(
17844    VkCommandBuffer                             commandBuffer,
17845    VkBool32                                    alphaToOneEnable);
17846
17847VKAPI_ATTR void VKAPI_CALL vkCmdSetLogicOpEnableEXT(
17848    VkCommandBuffer                             commandBuffer,
17849    VkBool32                                    logicOpEnable);
17850
17851VKAPI_ATTR void VKAPI_CALL vkCmdSetColorBlendEnableEXT(
17852    VkCommandBuffer                             commandBuffer,
17853    uint32_t                                    firstAttachment,
17854    uint32_t                                    attachmentCount,
17855    const VkBool32*                             pColorBlendEnables);
17856
17857VKAPI_ATTR void VKAPI_CALL vkCmdSetColorBlendEquationEXT(
17858    VkCommandBuffer                             commandBuffer,
17859    uint32_t                                    firstAttachment,
17860    uint32_t                                    attachmentCount,
17861    const VkColorBlendEquationEXT*              pColorBlendEquations);
17862
17863VKAPI_ATTR void VKAPI_CALL vkCmdSetColorWriteMaskEXT(
17864    VkCommandBuffer                             commandBuffer,
17865    uint32_t                                    firstAttachment,
17866    uint32_t                                    attachmentCount,
17867    const VkColorComponentFlags*                pColorWriteMasks);
17868
17869VKAPI_ATTR void VKAPI_CALL vkCmdSetRasterizationStreamEXT(
17870    VkCommandBuffer                             commandBuffer,
17871    uint32_t                                    rasterizationStream);
17872
17873VKAPI_ATTR void VKAPI_CALL vkCmdSetConservativeRasterizationModeEXT(
17874    VkCommandBuffer                             commandBuffer,
17875    VkConservativeRasterizationModeEXT          conservativeRasterizationMode);
17876
17877VKAPI_ATTR void VKAPI_CALL vkCmdSetExtraPrimitiveOverestimationSizeEXT(
17878    VkCommandBuffer                             commandBuffer,
17879    float                                       extraPrimitiveOverestimationSize);
17880
17881VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthClipEnableEXT(
17882    VkCommandBuffer                             commandBuffer,
17883    VkBool32                                    depthClipEnable);
17884
17885VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleLocationsEnableEXT(
17886    VkCommandBuffer                             commandBuffer,
17887    VkBool32                                    sampleLocationsEnable);
17888
17889VKAPI_ATTR void VKAPI_CALL vkCmdSetColorBlendAdvancedEXT(
17890    VkCommandBuffer                             commandBuffer,
17891    uint32_t                                    firstAttachment,
17892    uint32_t                                    attachmentCount,
17893    const VkColorBlendAdvancedEXT*              pColorBlendAdvanced);
17894
17895VKAPI_ATTR void VKAPI_CALL vkCmdSetProvokingVertexModeEXT(
17896    VkCommandBuffer                             commandBuffer,
17897    VkProvokingVertexModeEXT                    provokingVertexMode);
17898
17899VKAPI_ATTR void VKAPI_CALL vkCmdSetLineRasterizationModeEXT(
17900    VkCommandBuffer                             commandBuffer,
17901    VkLineRasterizationModeEXT                  lineRasterizationMode);
17902
17903VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleEnableEXT(
17904    VkCommandBuffer                             commandBuffer,
17905    VkBool32                                    stippledLineEnable);
17906
17907VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthClipNegativeOneToOneEXT(
17908    VkCommandBuffer                             commandBuffer,
17909    VkBool32                                    negativeOneToOne);
17910
17911VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWScalingEnableNV(
17912    VkCommandBuffer                             commandBuffer,
17913    VkBool32                                    viewportWScalingEnable);
17914
17915VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportSwizzleNV(
17916    VkCommandBuffer                             commandBuffer,
17917    uint32_t                                    firstViewport,
17918    uint32_t                                    viewportCount,
17919    const VkViewportSwizzleNV*                  pViewportSwizzles);
17920
17921VKAPI_ATTR void VKAPI_CALL vkCmdSetCoverageToColorEnableNV(
17922    VkCommandBuffer                             commandBuffer,
17923    VkBool32                                    coverageToColorEnable);
17924
17925VKAPI_ATTR void VKAPI_CALL vkCmdSetCoverageToColorLocationNV(
17926    VkCommandBuffer                             commandBuffer,
17927    uint32_t                                    coverageToColorLocation);
17928
17929VKAPI_ATTR void VKAPI_CALL vkCmdSetCoverageModulationModeNV(
17930    VkCommandBuffer                             commandBuffer,
17931    VkCoverageModulationModeNV                  coverageModulationMode);
17932
17933VKAPI_ATTR void VKAPI_CALL vkCmdSetCoverageModulationTableEnableNV(
17934    VkCommandBuffer                             commandBuffer,
17935    VkBool32                                    coverageModulationTableEnable);
17936
17937VKAPI_ATTR void VKAPI_CALL vkCmdSetCoverageModulationTableNV(
17938    VkCommandBuffer                             commandBuffer,
17939    uint32_t                                    coverageModulationTableCount,
17940    const float*                                pCoverageModulationTable);
17941
17942VKAPI_ATTR void VKAPI_CALL vkCmdSetShadingRateImageEnableNV(
17943    VkCommandBuffer                             commandBuffer,
17944    VkBool32                                    shadingRateImageEnable);
17945
17946VKAPI_ATTR void VKAPI_CALL vkCmdSetRepresentativeFragmentTestEnableNV(
17947    VkCommandBuffer                             commandBuffer,
17948    VkBool32                                    representativeFragmentTestEnable);
17949
17950VKAPI_ATTR void VKAPI_CALL vkCmdSetCoverageReductionModeNV(
17951    VkCommandBuffer                             commandBuffer,
17952    VkCoverageReductionModeNV                   coverageReductionMode);
17953#endif
17954
17955
17956// VK_EXT_subpass_merge_feedback is a preprocessor guard. Do not pass it to API calls.
17957#define VK_EXT_subpass_merge_feedback 1
17958#define VK_EXT_SUBPASS_MERGE_FEEDBACK_SPEC_VERSION 2
17959#define VK_EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME "VK_EXT_subpass_merge_feedback"
17960
17961typedef enum VkSubpassMergeStatusEXT {
17962    VK_SUBPASS_MERGE_STATUS_MERGED_EXT = 0,
17963    VK_SUBPASS_MERGE_STATUS_DISALLOWED_EXT = 1,
17964    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SIDE_EFFECTS_EXT = 2,
17965    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SAMPLES_MISMATCH_EXT = 3,
17966    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_VIEWS_MISMATCH_EXT = 4,
17967    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_ALIASING_EXT = 5,
17968    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPENDENCIES_EXT = 6,
17969    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT = 7,
17970    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT = 8,
17971    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_INSUFFICIENT_STORAGE_EXT = 9,
17972    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_DEPTH_STENCIL_COUNT_EXT = 10,
17973    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT = 11,
17974    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_SINGLE_SUBPASS_EXT = 12,
17975    VK_SUBPASS_MERGE_STATUS_NOT_MERGED_UNSPECIFIED_EXT = 13,
17976    VK_SUBPASS_MERGE_STATUS_MAX_ENUM_EXT = 0x7FFFFFFF
17977} VkSubpassMergeStatusEXT;
17978typedef struct VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
17979    VkStructureType    sType;
17980    void*              pNext;
17981    VkBool32           subpassMergeFeedback;
17982} VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT;
17983
17984typedef struct VkRenderPassCreationControlEXT {
17985    VkStructureType    sType;
17986    const void*        pNext;
17987    VkBool32           disallowMerging;
17988} VkRenderPassCreationControlEXT;
17989
17990typedef struct VkRenderPassCreationFeedbackInfoEXT {
17991    uint32_t    postMergeSubpassCount;
17992} VkRenderPassCreationFeedbackInfoEXT;
17993
17994typedef struct VkRenderPassCreationFeedbackCreateInfoEXT {
17995    VkStructureType                         sType;
17996    const void*                             pNext;
17997    VkRenderPassCreationFeedbackInfoEXT*    pRenderPassFeedback;
17998} VkRenderPassCreationFeedbackCreateInfoEXT;
17999
18000typedef struct VkRenderPassSubpassFeedbackInfoEXT {
18001    VkSubpassMergeStatusEXT    subpassMergeStatus;
18002    char                       description[VK_MAX_DESCRIPTION_SIZE];
18003    uint32_t                   postMergeIndex;
18004} VkRenderPassSubpassFeedbackInfoEXT;
18005
18006typedef struct VkRenderPassSubpassFeedbackCreateInfoEXT {
18007    VkStructureType                        sType;
18008    const void*                            pNext;
18009    VkRenderPassSubpassFeedbackInfoEXT*    pSubpassFeedback;
18010} VkRenderPassSubpassFeedbackCreateInfoEXT;
18011
18012
18013
18014// VK_LUNARG_direct_driver_loading is a preprocessor guard. Do not pass it to API calls.
18015#define VK_LUNARG_direct_driver_loading 1
18016#define VK_LUNARG_DIRECT_DRIVER_LOADING_SPEC_VERSION 1
18017#define VK_LUNARG_DIRECT_DRIVER_LOADING_EXTENSION_NAME "VK_LUNARG_direct_driver_loading"
18018
18019typedef enum VkDirectDriverLoadingModeLUNARG {
18020    VK_DIRECT_DRIVER_LOADING_MODE_EXCLUSIVE_LUNARG = 0,
18021    VK_DIRECT_DRIVER_LOADING_MODE_INCLUSIVE_LUNARG = 1,
18022    VK_DIRECT_DRIVER_LOADING_MODE_MAX_ENUM_LUNARG = 0x7FFFFFFF
18023} VkDirectDriverLoadingModeLUNARG;
18024typedef VkFlags VkDirectDriverLoadingFlagsLUNARG;
18025typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddrLUNARG)(
18026    VkInstance instance, const char* pName);
18027
18028typedef struct VkDirectDriverLoadingInfoLUNARG {
18029    VkStructureType                     sType;
18030    void*                               pNext;
18031    VkDirectDriverLoadingFlagsLUNARG    flags;
18032    PFN_vkGetInstanceProcAddrLUNARG     pfnGetInstanceProcAddr;
18033} VkDirectDriverLoadingInfoLUNARG;
18034
18035typedef struct VkDirectDriverLoadingListLUNARG {
18036    VkStructureType                           sType;
18037    const void*                               pNext;
18038    VkDirectDriverLoadingModeLUNARG           mode;
18039    uint32_t                                  driverCount;
18040    const VkDirectDriverLoadingInfoLUNARG*    pDrivers;
18041} VkDirectDriverLoadingListLUNARG;
18042
18043
18044
18045// VK_EXT_shader_module_identifier is a preprocessor guard. Do not pass it to API calls.
18046#define VK_EXT_shader_module_identifier 1
18047#define VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT 32U
18048#define VK_EXT_SHADER_MODULE_IDENTIFIER_SPEC_VERSION 1
18049#define VK_EXT_SHADER_MODULE_IDENTIFIER_EXTENSION_NAME "VK_EXT_shader_module_identifier"
18050typedef struct VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT {
18051    VkStructureType    sType;
18052    void*              pNext;
18053    VkBool32           shaderModuleIdentifier;
18054} VkPhysicalDeviceShaderModuleIdentifierFeaturesEXT;
18055
18056typedef struct VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT {
18057    VkStructureType    sType;
18058    void*              pNext;
18059    uint8_t            shaderModuleIdentifierAlgorithmUUID[VK_UUID_SIZE];
18060} VkPhysicalDeviceShaderModuleIdentifierPropertiesEXT;
18061
18062typedef struct VkPipelineShaderStageModuleIdentifierCreateInfoEXT {
18063    VkStructureType    sType;
18064    const void*        pNext;
18065    uint32_t           identifierSize;
18066    const uint8_t*     pIdentifier;
18067} VkPipelineShaderStageModuleIdentifierCreateInfoEXT;
18068
18069typedef struct VkShaderModuleIdentifierEXT {
18070    VkStructureType    sType;
18071    void*              pNext;
18072    uint32_t           identifierSize;
18073    uint8_t            identifier[VK_MAX_SHADER_MODULE_IDENTIFIER_SIZE_EXT];
18074} VkShaderModuleIdentifierEXT;
18075
18076typedef void (VKAPI_PTR *PFN_vkGetShaderModuleIdentifierEXT)(VkDevice device, VkShaderModule shaderModule, VkShaderModuleIdentifierEXT* pIdentifier);
18077typedef void (VKAPI_PTR *PFN_vkGetShaderModuleCreateInfoIdentifierEXT)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, VkShaderModuleIdentifierEXT* pIdentifier);
18078
18079#ifndef VK_NO_PROTOTYPES
18080VKAPI_ATTR void VKAPI_CALL vkGetShaderModuleIdentifierEXT(
18081    VkDevice                                    device,
18082    VkShaderModule                              shaderModule,
18083    VkShaderModuleIdentifierEXT*                pIdentifier);
18084
18085VKAPI_ATTR void VKAPI_CALL vkGetShaderModuleCreateInfoIdentifierEXT(
18086    VkDevice                                    device,
18087    const VkShaderModuleCreateInfo*             pCreateInfo,
18088    VkShaderModuleIdentifierEXT*                pIdentifier);
18089#endif
18090
18091
18092// VK_EXT_rasterization_order_attachment_access is a preprocessor guard. Do not pass it to API calls.
18093#define VK_EXT_rasterization_order_attachment_access 1
18094#define VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_SPEC_VERSION 1
18095#define VK_EXT_RASTERIZATION_ORDER_ATTACHMENT_ACCESS_EXTENSION_NAME "VK_EXT_rasterization_order_attachment_access"
18096
18097
18098// VK_NV_optical_flow is a preprocessor guard. Do not pass it to API calls.
18099#define VK_NV_optical_flow 1
18100VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkOpticalFlowSessionNV)
18101#define VK_NV_OPTICAL_FLOW_SPEC_VERSION   1
18102#define VK_NV_OPTICAL_FLOW_EXTENSION_NAME "VK_NV_optical_flow"
18103
18104typedef enum VkOpticalFlowPerformanceLevelNV {
18105    VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_UNKNOWN_NV = 0,
18106    VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_SLOW_NV = 1,
18107    VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MEDIUM_NV = 2,
18108    VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_FAST_NV = 3,
18109    VK_OPTICAL_FLOW_PERFORMANCE_LEVEL_MAX_ENUM_NV = 0x7FFFFFFF
18110} VkOpticalFlowPerformanceLevelNV;
18111
18112typedef enum VkOpticalFlowSessionBindingPointNV {
18113    VK_OPTICAL_FLOW_SESSION_BINDING_POINT_UNKNOWN_NV = 0,
18114    VK_OPTICAL_FLOW_SESSION_BINDING_POINT_INPUT_NV = 1,
18115    VK_OPTICAL_FLOW_SESSION_BINDING_POINT_REFERENCE_NV = 2,
18116    VK_OPTICAL_FLOW_SESSION_BINDING_POINT_HINT_NV = 3,
18117    VK_OPTICAL_FLOW_SESSION_BINDING_POINT_FLOW_VECTOR_NV = 4,
18118    VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_FLOW_VECTOR_NV = 5,
18119    VK_OPTICAL_FLOW_SESSION_BINDING_POINT_COST_NV = 6,
18120    VK_OPTICAL_FLOW_SESSION_BINDING_POINT_BACKWARD_COST_NV = 7,
18121    VK_OPTICAL_FLOW_SESSION_BINDING_POINT_GLOBAL_FLOW_NV = 8,
18122    VK_OPTICAL_FLOW_SESSION_BINDING_POINT_MAX_ENUM_NV = 0x7FFFFFFF
18123} VkOpticalFlowSessionBindingPointNV;
18124
18125typedef enum VkOpticalFlowGridSizeFlagBitsNV {
18126    VK_OPTICAL_FLOW_GRID_SIZE_UNKNOWN_NV = 0,
18127    VK_OPTICAL_FLOW_GRID_SIZE_1X1_BIT_NV = 0x00000001,
18128    VK_OPTICAL_FLOW_GRID_SIZE_2X2_BIT_NV = 0x00000002,
18129    VK_OPTICAL_FLOW_GRID_SIZE_4X4_BIT_NV = 0x00000004,
18130    VK_OPTICAL_FLOW_GRID_SIZE_8X8_BIT_NV = 0x00000008,
18131    VK_OPTICAL_FLOW_GRID_SIZE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
18132} VkOpticalFlowGridSizeFlagBitsNV;
18133typedef VkFlags   VkOpticalFlowGridSizeFlagsNV;
18134
18135typedef enum VkOpticalFlowUsageFlagBitsNV {
18136    VK_OPTICAL_FLOW_USAGE_UNKNOWN_NV = 0,
18137    VK_OPTICAL_FLOW_USAGE_INPUT_BIT_NV = 0x00000001,
18138    VK_OPTICAL_FLOW_USAGE_OUTPUT_BIT_NV = 0x00000002,
18139    VK_OPTICAL_FLOW_USAGE_HINT_BIT_NV = 0x00000004,
18140    VK_OPTICAL_FLOW_USAGE_COST_BIT_NV = 0x00000008,
18141    VK_OPTICAL_FLOW_USAGE_GLOBAL_FLOW_BIT_NV = 0x00000010,
18142    VK_OPTICAL_FLOW_USAGE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
18143} VkOpticalFlowUsageFlagBitsNV;
18144typedef VkFlags   VkOpticalFlowUsageFlagsNV;
18145
18146typedef enum VkOpticalFlowSessionCreateFlagBitsNV {
18147    VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_HINT_BIT_NV = 0x00000001,
18148    VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_COST_BIT_NV = 0x00000002,
18149    VK_OPTICAL_FLOW_SESSION_CREATE_ENABLE_GLOBAL_FLOW_BIT_NV = 0x00000004,
18150    VK_OPTICAL_FLOW_SESSION_CREATE_ALLOW_REGIONS_BIT_NV = 0x00000008,
18151    VK_OPTICAL_FLOW_SESSION_CREATE_BOTH_DIRECTIONS_BIT_NV = 0x00000010,
18152    VK_OPTICAL_FLOW_SESSION_CREATE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
18153} VkOpticalFlowSessionCreateFlagBitsNV;
18154typedef VkFlags   VkOpticalFlowSessionCreateFlagsNV;
18155
18156typedef enum VkOpticalFlowExecuteFlagBitsNV {
18157    VK_OPTICAL_FLOW_EXECUTE_DISABLE_TEMPORAL_HINTS_BIT_NV = 0x00000001,
18158    VK_OPTICAL_FLOW_EXECUTE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
18159} VkOpticalFlowExecuteFlagBitsNV;
18160typedef VkFlags   VkOpticalFlowExecuteFlagsNV;
18161typedef struct VkPhysicalDeviceOpticalFlowFeaturesNV {
18162    VkStructureType    sType;
18163    void*              pNext;
18164    VkBool32           opticalFlow;
18165} VkPhysicalDeviceOpticalFlowFeaturesNV;
18166
18167typedef struct VkPhysicalDeviceOpticalFlowPropertiesNV {
18168    VkStructureType                 sType;
18169    void*                           pNext;
18170    VkOpticalFlowGridSizeFlagsNV    supportedOutputGridSizes;
18171    VkOpticalFlowGridSizeFlagsNV    supportedHintGridSizes;
18172    VkBool32                        hintSupported;
18173    VkBool32                        costSupported;
18174    VkBool32                        bidirectionalFlowSupported;
18175    VkBool32                        globalFlowSupported;
18176    uint32_t                        minWidth;
18177    uint32_t                        minHeight;
18178    uint32_t                        maxWidth;
18179    uint32_t                        maxHeight;
18180    uint32_t                        maxNumRegionsOfInterest;
18181} VkPhysicalDeviceOpticalFlowPropertiesNV;
18182
18183typedef struct VkOpticalFlowImageFormatInfoNV {
18184    VkStructureType              sType;
18185    const void*                  pNext;
18186    VkOpticalFlowUsageFlagsNV    usage;
18187} VkOpticalFlowImageFormatInfoNV;
18188
18189typedef struct VkOpticalFlowImageFormatPropertiesNV {
18190    VkStructureType    sType;
18191    const void*        pNext;
18192    VkFormat           format;
18193} VkOpticalFlowImageFormatPropertiesNV;
18194
18195typedef struct VkOpticalFlowSessionCreateInfoNV {
18196    VkStructureType                      sType;
18197    void*                                pNext;
18198    uint32_t                             width;
18199    uint32_t                             height;
18200    VkFormat                             imageFormat;
18201    VkFormat                             flowVectorFormat;
18202    VkFormat                             costFormat;
18203    VkOpticalFlowGridSizeFlagsNV         outputGridSize;
18204    VkOpticalFlowGridSizeFlagsNV         hintGridSize;
18205    VkOpticalFlowPerformanceLevelNV      performanceLevel;
18206    VkOpticalFlowSessionCreateFlagsNV    flags;
18207} VkOpticalFlowSessionCreateInfoNV;
18208
18209typedef struct VkOpticalFlowSessionCreatePrivateDataInfoNV {
18210    VkStructureType    sType;
18211    void*              pNext;
18212    uint32_t           id;
18213    uint32_t           size;
18214    const void*        pPrivateData;
18215} VkOpticalFlowSessionCreatePrivateDataInfoNV;
18216
18217typedef struct VkOpticalFlowExecuteInfoNV {
18218    VkStructureType                sType;
18219    void*                          pNext;
18220    VkOpticalFlowExecuteFlagsNV    flags;
18221    uint32_t                       regionCount;
18222    const VkRect2D*                pRegions;
18223} VkOpticalFlowExecuteInfoNV;
18224
18225typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceOpticalFlowImageFormatsNV)(VkPhysicalDevice physicalDevice, const VkOpticalFlowImageFormatInfoNV* pOpticalFlowImageFormatInfo, uint32_t* pFormatCount, VkOpticalFlowImageFormatPropertiesNV* pImageFormatProperties);
18226typedef VkResult (VKAPI_PTR *PFN_vkCreateOpticalFlowSessionNV)(VkDevice device, const VkOpticalFlowSessionCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkOpticalFlowSessionNV* pSession);
18227typedef void (VKAPI_PTR *PFN_vkDestroyOpticalFlowSessionNV)(VkDevice device, VkOpticalFlowSessionNV session, const VkAllocationCallbacks* pAllocator);
18228typedef VkResult (VKAPI_PTR *PFN_vkBindOpticalFlowSessionImageNV)(VkDevice device, VkOpticalFlowSessionNV session, VkOpticalFlowSessionBindingPointNV bindingPoint, VkImageView view, VkImageLayout layout);
18229typedef void (VKAPI_PTR *PFN_vkCmdOpticalFlowExecuteNV)(VkCommandBuffer commandBuffer, VkOpticalFlowSessionNV session, const VkOpticalFlowExecuteInfoNV* pExecuteInfo);
18230
18231#ifndef VK_NO_PROTOTYPES
18232VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceOpticalFlowImageFormatsNV(
18233    VkPhysicalDevice                            physicalDevice,
18234    const VkOpticalFlowImageFormatInfoNV*       pOpticalFlowImageFormatInfo,
18235    uint32_t*                                   pFormatCount,
18236    VkOpticalFlowImageFormatPropertiesNV*       pImageFormatProperties);
18237
18238VKAPI_ATTR VkResult VKAPI_CALL vkCreateOpticalFlowSessionNV(
18239    VkDevice                                    device,
18240    const VkOpticalFlowSessionCreateInfoNV*     pCreateInfo,
18241    const VkAllocationCallbacks*                pAllocator,
18242    VkOpticalFlowSessionNV*                     pSession);
18243
18244VKAPI_ATTR void VKAPI_CALL vkDestroyOpticalFlowSessionNV(
18245    VkDevice                                    device,
18246    VkOpticalFlowSessionNV                      session,
18247    const VkAllocationCallbacks*                pAllocator);
18248
18249VKAPI_ATTR VkResult VKAPI_CALL vkBindOpticalFlowSessionImageNV(
18250    VkDevice                                    device,
18251    VkOpticalFlowSessionNV                      session,
18252    VkOpticalFlowSessionBindingPointNV          bindingPoint,
18253    VkImageView                                 view,
18254    VkImageLayout                               layout);
18255
18256VKAPI_ATTR void VKAPI_CALL vkCmdOpticalFlowExecuteNV(
18257    VkCommandBuffer                             commandBuffer,
18258    VkOpticalFlowSessionNV                      session,
18259    const VkOpticalFlowExecuteInfoNV*           pExecuteInfo);
18260#endif
18261
18262
18263// VK_EXT_legacy_dithering is a preprocessor guard. Do not pass it to API calls.
18264#define VK_EXT_legacy_dithering 1
18265#define VK_EXT_LEGACY_DITHERING_SPEC_VERSION 1
18266#define VK_EXT_LEGACY_DITHERING_EXTENSION_NAME "VK_EXT_legacy_dithering"
18267typedef struct VkPhysicalDeviceLegacyDitheringFeaturesEXT {
18268    VkStructureType    sType;
18269    void*              pNext;
18270    VkBool32           legacyDithering;
18271} VkPhysicalDeviceLegacyDitheringFeaturesEXT;
18272
18273
18274
18275// VK_EXT_pipeline_protected_access is a preprocessor guard. Do not pass it to API calls.
18276#define VK_EXT_pipeline_protected_access 1
18277#define VK_EXT_PIPELINE_PROTECTED_ACCESS_SPEC_VERSION 1
18278#define VK_EXT_PIPELINE_PROTECTED_ACCESS_EXTENSION_NAME "VK_EXT_pipeline_protected_access"
18279typedef struct VkPhysicalDevicePipelineProtectedAccessFeaturesEXT {
18280    VkStructureType    sType;
18281    void*              pNext;
18282    VkBool32           pipelineProtectedAccess;
18283} VkPhysicalDevicePipelineProtectedAccessFeaturesEXT;
18284
18285
18286
18287// VK_EXT_shader_object is a preprocessor guard. Do not pass it to API calls.
18288#define VK_EXT_shader_object 1
18289VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderEXT)
18290#define VK_EXT_SHADER_OBJECT_SPEC_VERSION 1
18291#define VK_EXT_SHADER_OBJECT_EXTENSION_NAME "VK_EXT_shader_object"
18292
18293typedef enum VkShaderCodeTypeEXT {
18294    VK_SHADER_CODE_TYPE_BINARY_EXT = 0,
18295    VK_SHADER_CODE_TYPE_SPIRV_EXT = 1,
18296    VK_SHADER_CODE_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
18297} VkShaderCodeTypeEXT;
18298
18299typedef enum VkShaderCreateFlagBitsEXT {
18300    VK_SHADER_CREATE_LINK_STAGE_BIT_EXT = 0x00000001,
18301    VK_SHADER_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 0x00000002,
18302    VK_SHADER_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 0x00000004,
18303    VK_SHADER_CREATE_NO_TASK_SHADER_BIT_EXT = 0x00000008,
18304    VK_SHADER_CREATE_DISPATCH_BASE_BIT_EXT = 0x00000010,
18305    VK_SHADER_CREATE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_EXT = 0x00000020,
18306    VK_SHADER_CREATE_FRAGMENT_DENSITY_MAP_ATTACHMENT_BIT_EXT = 0x00000040,
18307    VK_SHADER_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
18308} VkShaderCreateFlagBitsEXT;
18309typedef VkFlags VkShaderCreateFlagsEXT;
18310typedef struct VkPhysicalDeviceShaderObjectFeaturesEXT {
18311    VkStructureType    sType;
18312    void*              pNext;
18313    VkBool32           shaderObject;
18314} VkPhysicalDeviceShaderObjectFeaturesEXT;
18315
18316typedef struct VkPhysicalDeviceShaderObjectPropertiesEXT {
18317    VkStructureType    sType;
18318    void*              pNext;
18319    uint8_t            shaderBinaryUUID[VK_UUID_SIZE];
18320    uint32_t           shaderBinaryVersion;
18321} VkPhysicalDeviceShaderObjectPropertiesEXT;
18322
18323typedef struct VkShaderCreateInfoEXT {
18324    VkStructureType                 sType;
18325    const void*                     pNext;
18326    VkShaderCreateFlagsEXT          flags;
18327    VkShaderStageFlagBits           stage;
18328    VkShaderStageFlags              nextStage;
18329    VkShaderCodeTypeEXT             codeType;
18330    size_t                          codeSize;
18331    const void*                     pCode;
18332    const char*                     pName;
18333    uint32_t                        setLayoutCount;
18334    const VkDescriptorSetLayout*    pSetLayouts;
18335    uint32_t                        pushConstantRangeCount;
18336    const VkPushConstantRange*      pPushConstantRanges;
18337    const VkSpecializationInfo*     pSpecializationInfo;
18338} VkShaderCreateInfoEXT;
18339
18340typedef VkPipelineShaderStageRequiredSubgroupSizeCreateInfo VkShaderRequiredSubgroupSizeCreateInfoEXT;
18341
18342typedef VkResult (VKAPI_PTR *PFN_vkCreateShadersEXT)(VkDevice device, uint32_t createInfoCount, const VkShaderCreateInfoEXT* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkShaderEXT* pShaders);
18343typedef void (VKAPI_PTR *PFN_vkDestroyShaderEXT)(VkDevice device, VkShaderEXT shader, const VkAllocationCallbacks* pAllocator);
18344typedef VkResult (VKAPI_PTR *PFN_vkGetShaderBinaryDataEXT)(VkDevice device, VkShaderEXT shader, size_t* pDataSize, void* pData);
18345typedef void (VKAPI_PTR *PFN_vkCmdBindShadersEXT)(VkCommandBuffer commandBuffer, uint32_t stageCount, const VkShaderStageFlagBits* pStages, const VkShaderEXT* pShaders);
18346
18347#ifndef VK_NO_PROTOTYPES
18348VKAPI_ATTR VkResult VKAPI_CALL vkCreateShadersEXT(
18349    VkDevice                                    device,
18350    uint32_t                                    createInfoCount,
18351    const VkShaderCreateInfoEXT*                pCreateInfos,
18352    const VkAllocationCallbacks*                pAllocator,
18353    VkShaderEXT*                                pShaders);
18354
18355VKAPI_ATTR void VKAPI_CALL vkDestroyShaderEXT(
18356    VkDevice                                    device,
18357    VkShaderEXT                                 shader,
18358    const VkAllocationCallbacks*                pAllocator);
18359
18360VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderBinaryDataEXT(
18361    VkDevice                                    device,
18362    VkShaderEXT                                 shader,
18363    size_t*                                     pDataSize,
18364    void*                                       pData);
18365
18366VKAPI_ATTR void VKAPI_CALL vkCmdBindShadersEXT(
18367    VkCommandBuffer                             commandBuffer,
18368    uint32_t                                    stageCount,
18369    const VkShaderStageFlagBits*                pStages,
18370    const VkShaderEXT*                          pShaders);
18371#endif
18372
18373
18374// VK_QCOM_tile_properties is a preprocessor guard. Do not pass it to API calls.
18375#define VK_QCOM_tile_properties 1
18376#define VK_QCOM_TILE_PROPERTIES_SPEC_VERSION 1
18377#define VK_QCOM_TILE_PROPERTIES_EXTENSION_NAME "VK_QCOM_tile_properties"
18378typedef struct VkPhysicalDeviceTilePropertiesFeaturesQCOM {
18379    VkStructureType    sType;
18380    void*              pNext;
18381    VkBool32           tileProperties;
18382} VkPhysicalDeviceTilePropertiesFeaturesQCOM;
18383
18384typedef struct VkTilePropertiesQCOM {
18385    VkStructureType    sType;
18386    void*              pNext;
18387    VkExtent3D         tileSize;
18388    VkExtent2D         apronSize;
18389    VkOffset2D         origin;
18390} VkTilePropertiesQCOM;
18391
18392typedef VkResult (VKAPI_PTR *PFN_vkGetFramebufferTilePropertiesQCOM)(VkDevice device, VkFramebuffer framebuffer, uint32_t* pPropertiesCount, VkTilePropertiesQCOM* pProperties);
18393typedef VkResult (VKAPI_PTR *PFN_vkGetDynamicRenderingTilePropertiesQCOM)(VkDevice device, const VkRenderingInfo* pRenderingInfo, VkTilePropertiesQCOM* pProperties);
18394
18395#ifndef VK_NO_PROTOTYPES
18396VKAPI_ATTR VkResult VKAPI_CALL vkGetFramebufferTilePropertiesQCOM(
18397    VkDevice                                    device,
18398    VkFramebuffer                               framebuffer,
18399    uint32_t*                                   pPropertiesCount,
18400    VkTilePropertiesQCOM*                       pProperties);
18401
18402VKAPI_ATTR VkResult VKAPI_CALL vkGetDynamicRenderingTilePropertiesQCOM(
18403    VkDevice                                    device,
18404    const VkRenderingInfo*                      pRenderingInfo,
18405    VkTilePropertiesQCOM*                       pProperties);
18406#endif
18407
18408
18409// VK_SEC_amigo_profiling is a preprocessor guard. Do not pass it to API calls.
18410#define VK_SEC_amigo_profiling 1
18411#define VK_SEC_AMIGO_PROFILING_SPEC_VERSION 1
18412#define VK_SEC_AMIGO_PROFILING_EXTENSION_NAME "VK_SEC_amigo_profiling"
18413typedef struct VkPhysicalDeviceAmigoProfilingFeaturesSEC {
18414    VkStructureType    sType;
18415    void*              pNext;
18416    VkBool32           amigoProfiling;
18417} VkPhysicalDeviceAmigoProfilingFeaturesSEC;
18418
18419typedef struct VkAmigoProfilingSubmitInfoSEC {
18420    VkStructureType    sType;
18421    const void*        pNext;
18422    uint64_t           firstDrawTimestamp;
18423    uint64_t           swapBufferTimestamp;
18424} VkAmigoProfilingSubmitInfoSEC;
18425
18426
18427
18428// VK_QCOM_multiview_per_view_viewports is a preprocessor guard. Do not pass it to API calls.
18429#define VK_QCOM_multiview_per_view_viewports 1
18430#define VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_SPEC_VERSION 1
18431#define VK_QCOM_MULTIVIEW_PER_VIEW_VIEWPORTS_EXTENSION_NAME "VK_QCOM_multiview_per_view_viewports"
18432typedef struct VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM {
18433    VkStructureType    sType;
18434    void*              pNext;
18435    VkBool32           multiviewPerViewViewports;
18436} VkPhysicalDeviceMultiviewPerViewViewportsFeaturesQCOM;
18437
18438
18439
18440// VK_NV_ray_tracing_invocation_reorder is a preprocessor guard. Do not pass it to API calls.
18441#define VK_NV_ray_tracing_invocation_reorder 1
18442#define VK_NV_RAY_TRACING_INVOCATION_REORDER_SPEC_VERSION 1
18443#define VK_NV_RAY_TRACING_INVOCATION_REORDER_EXTENSION_NAME "VK_NV_ray_tracing_invocation_reorder"
18444
18445typedef enum VkRayTracingInvocationReorderModeNV {
18446    VK_RAY_TRACING_INVOCATION_REORDER_MODE_NONE_NV = 0,
18447    VK_RAY_TRACING_INVOCATION_REORDER_MODE_REORDER_NV = 1,
18448    VK_RAY_TRACING_INVOCATION_REORDER_MODE_MAX_ENUM_NV = 0x7FFFFFFF
18449} VkRayTracingInvocationReorderModeNV;
18450typedef struct VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV {
18451    VkStructureType                        sType;
18452    void*                                  pNext;
18453    VkRayTracingInvocationReorderModeNV    rayTracingInvocationReorderReorderingHint;
18454} VkPhysicalDeviceRayTracingInvocationReorderPropertiesNV;
18455
18456typedef struct VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV {
18457    VkStructureType    sType;
18458    void*              pNext;
18459    VkBool32           rayTracingInvocationReorder;
18460} VkPhysicalDeviceRayTracingInvocationReorderFeaturesNV;
18461
18462
18463
18464// VK_NV_extended_sparse_address_space is a preprocessor guard. Do not pass it to API calls.
18465#define VK_NV_extended_sparse_address_space 1
18466#define VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_SPEC_VERSION 1
18467#define VK_NV_EXTENDED_SPARSE_ADDRESS_SPACE_EXTENSION_NAME "VK_NV_extended_sparse_address_space"
18468typedef struct VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV {
18469    VkStructureType    sType;
18470    void*              pNext;
18471    VkBool32           extendedSparseAddressSpace;
18472} VkPhysicalDeviceExtendedSparseAddressSpaceFeaturesNV;
18473
18474typedef struct VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV {
18475    VkStructureType       sType;
18476    void*                 pNext;
18477    VkDeviceSize          extendedSparseAddressSpaceSize;
18478    VkImageUsageFlags     extendedSparseImageUsageFlags;
18479    VkBufferUsageFlags    extendedSparseBufferUsageFlags;
18480} VkPhysicalDeviceExtendedSparseAddressSpacePropertiesNV;
18481
18482
18483
18484// VK_EXT_mutable_descriptor_type is a preprocessor guard. Do not pass it to API calls.
18485#define VK_EXT_mutable_descriptor_type 1
18486#define VK_EXT_MUTABLE_DESCRIPTOR_TYPE_SPEC_VERSION 1
18487#define VK_EXT_MUTABLE_DESCRIPTOR_TYPE_EXTENSION_NAME "VK_EXT_mutable_descriptor_type"
18488
18489
18490// VK_EXT_layer_settings is a preprocessor guard. Do not pass it to API calls.
18491#define VK_EXT_layer_settings 1
18492#define VK_EXT_LAYER_SETTINGS_SPEC_VERSION 2
18493#define VK_EXT_LAYER_SETTINGS_EXTENSION_NAME "VK_EXT_layer_settings"
18494
18495typedef enum VkLayerSettingTypeEXT {
18496    VK_LAYER_SETTING_TYPE_BOOL32_EXT = 0,
18497    VK_LAYER_SETTING_TYPE_INT32_EXT = 1,
18498    VK_LAYER_SETTING_TYPE_INT64_EXT = 2,
18499    VK_LAYER_SETTING_TYPE_UINT32_EXT = 3,
18500    VK_LAYER_SETTING_TYPE_UINT64_EXT = 4,
18501    VK_LAYER_SETTING_TYPE_FLOAT32_EXT = 5,
18502    VK_LAYER_SETTING_TYPE_FLOAT64_EXT = 6,
18503    VK_LAYER_SETTING_TYPE_STRING_EXT = 7,
18504    VK_LAYER_SETTING_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
18505} VkLayerSettingTypeEXT;
18506typedef struct VkLayerSettingEXT {
18507    const char*              pLayerName;
18508    const char*              pSettingName;
18509    VkLayerSettingTypeEXT    type;
18510    uint32_t                 valueCount;
18511    const void*              pValues;
18512} VkLayerSettingEXT;
18513
18514typedef struct VkLayerSettingsCreateInfoEXT {
18515    VkStructureType             sType;
18516    const void*                 pNext;
18517    uint32_t                    settingCount;
18518    const VkLayerSettingEXT*    pSettings;
18519} VkLayerSettingsCreateInfoEXT;
18520
18521
18522
18523// VK_ARM_shader_core_builtins is a preprocessor guard. Do not pass it to API calls.
18524#define VK_ARM_shader_core_builtins 1
18525#define VK_ARM_SHADER_CORE_BUILTINS_SPEC_VERSION 2
18526#define VK_ARM_SHADER_CORE_BUILTINS_EXTENSION_NAME "VK_ARM_shader_core_builtins"
18527typedef struct VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM {
18528    VkStructureType    sType;
18529    void*              pNext;
18530    VkBool32           shaderCoreBuiltins;
18531} VkPhysicalDeviceShaderCoreBuiltinsFeaturesARM;
18532
18533typedef struct VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM {
18534    VkStructureType    sType;
18535    void*              pNext;
18536    uint64_t           shaderCoreMask;
18537    uint32_t           shaderCoreCount;
18538    uint32_t           shaderWarpsPerCore;
18539} VkPhysicalDeviceShaderCoreBuiltinsPropertiesARM;
18540
18541
18542
18543// VK_EXT_pipeline_library_group_handles is a preprocessor guard. Do not pass it to API calls.
18544#define VK_EXT_pipeline_library_group_handles 1
18545#define VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_SPEC_VERSION 1
18546#define VK_EXT_PIPELINE_LIBRARY_GROUP_HANDLES_EXTENSION_NAME "VK_EXT_pipeline_library_group_handles"
18547typedef struct VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT {
18548    VkStructureType    sType;
18549    void*              pNext;
18550    VkBool32           pipelineLibraryGroupHandles;
18551} VkPhysicalDevicePipelineLibraryGroupHandlesFeaturesEXT;
18552
18553
18554
18555// VK_EXT_dynamic_rendering_unused_attachments is a preprocessor guard. Do not pass it to API calls.
18556#define VK_EXT_dynamic_rendering_unused_attachments 1
18557#define VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_SPEC_VERSION 1
18558#define VK_EXT_DYNAMIC_RENDERING_UNUSED_ATTACHMENTS_EXTENSION_NAME "VK_EXT_dynamic_rendering_unused_attachments"
18559typedef struct VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT {
18560    VkStructureType    sType;
18561    void*              pNext;
18562    VkBool32           dynamicRenderingUnusedAttachments;
18563} VkPhysicalDeviceDynamicRenderingUnusedAttachmentsFeaturesEXT;
18564
18565
18566
18567// VK_NV_low_latency2 is a preprocessor guard. Do not pass it to API calls.
18568#define VK_NV_low_latency2 1
18569#define VK_NV_LOW_LATENCY_2_SPEC_VERSION  2
18570#define VK_NV_LOW_LATENCY_2_EXTENSION_NAME "VK_NV_low_latency2"
18571
18572typedef enum VkLatencyMarkerNV {
18573    VK_LATENCY_MARKER_SIMULATION_START_NV = 0,
18574    VK_LATENCY_MARKER_SIMULATION_END_NV = 1,
18575    VK_LATENCY_MARKER_RENDERSUBMIT_START_NV = 2,
18576    VK_LATENCY_MARKER_RENDERSUBMIT_END_NV = 3,
18577    VK_LATENCY_MARKER_PRESENT_START_NV = 4,
18578    VK_LATENCY_MARKER_PRESENT_END_NV = 5,
18579    VK_LATENCY_MARKER_INPUT_SAMPLE_NV = 6,
18580    VK_LATENCY_MARKER_TRIGGER_FLASH_NV = 7,
18581    VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_START_NV = 8,
18582    VK_LATENCY_MARKER_OUT_OF_BAND_RENDERSUBMIT_END_NV = 9,
18583    VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_START_NV = 10,
18584    VK_LATENCY_MARKER_OUT_OF_BAND_PRESENT_END_NV = 11,
18585    VK_LATENCY_MARKER_MAX_ENUM_NV = 0x7FFFFFFF
18586} VkLatencyMarkerNV;
18587
18588typedef enum VkOutOfBandQueueTypeNV {
18589    VK_OUT_OF_BAND_QUEUE_TYPE_RENDER_NV = 0,
18590    VK_OUT_OF_BAND_QUEUE_TYPE_PRESENT_NV = 1,
18591    VK_OUT_OF_BAND_QUEUE_TYPE_MAX_ENUM_NV = 0x7FFFFFFF
18592} VkOutOfBandQueueTypeNV;
18593typedef struct VkLatencySleepModeInfoNV {
18594    VkStructureType    sType;
18595    const void*        pNext;
18596    VkBool32           lowLatencyMode;
18597    VkBool32           lowLatencyBoost;
18598    uint32_t           minimumIntervalUs;
18599} VkLatencySleepModeInfoNV;
18600
18601typedef struct VkLatencySleepInfoNV {
18602    VkStructureType    sType;
18603    const void*        pNext;
18604    VkSemaphore        signalSemaphore;
18605    uint64_t           value;
18606} VkLatencySleepInfoNV;
18607
18608typedef struct VkSetLatencyMarkerInfoNV {
18609    VkStructureType      sType;
18610    const void*          pNext;
18611    uint64_t             presentID;
18612    VkLatencyMarkerNV    marker;
18613} VkSetLatencyMarkerInfoNV;
18614
18615typedef struct VkLatencyTimingsFrameReportNV {
18616    VkStructureType    sType;
18617    const void*        pNext;
18618    uint64_t           presentID;
18619    uint64_t           inputSampleTimeUs;
18620    uint64_t           simStartTimeUs;
18621    uint64_t           simEndTimeUs;
18622    uint64_t           renderSubmitStartTimeUs;
18623    uint64_t           renderSubmitEndTimeUs;
18624    uint64_t           presentStartTimeUs;
18625    uint64_t           presentEndTimeUs;
18626    uint64_t           driverStartTimeUs;
18627    uint64_t           driverEndTimeUs;
18628    uint64_t           osRenderQueueStartTimeUs;
18629    uint64_t           osRenderQueueEndTimeUs;
18630    uint64_t           gpuRenderStartTimeUs;
18631    uint64_t           gpuRenderEndTimeUs;
18632} VkLatencyTimingsFrameReportNV;
18633
18634typedef struct VkGetLatencyMarkerInfoNV {
18635    VkStructureType                   sType;
18636    const void*                       pNext;
18637    uint32_t                          timingCount;
18638    VkLatencyTimingsFrameReportNV*    pTimings;
18639} VkGetLatencyMarkerInfoNV;
18640
18641typedef struct VkLatencySubmissionPresentIdNV {
18642    VkStructureType    sType;
18643    const void*        pNext;
18644    uint64_t           presentID;
18645} VkLatencySubmissionPresentIdNV;
18646
18647typedef struct VkSwapchainLatencyCreateInfoNV {
18648    VkStructureType    sType;
18649    const void*        pNext;
18650    VkBool32           latencyModeEnable;
18651} VkSwapchainLatencyCreateInfoNV;
18652
18653typedef struct VkOutOfBandQueueTypeInfoNV {
18654    VkStructureType           sType;
18655    const void*               pNext;
18656    VkOutOfBandQueueTypeNV    queueType;
18657} VkOutOfBandQueueTypeInfoNV;
18658
18659typedef struct VkLatencySurfaceCapabilitiesNV {
18660    VkStructureType      sType;
18661    const void*          pNext;
18662    uint32_t             presentModeCount;
18663    VkPresentModeKHR*    pPresentModes;
18664} VkLatencySurfaceCapabilitiesNV;
18665
18666typedef VkResult (VKAPI_PTR *PFN_vkSetLatencySleepModeNV)(VkDevice device, VkSwapchainKHR swapchain, const VkLatencySleepModeInfoNV* pSleepModeInfo);
18667typedef VkResult (VKAPI_PTR *PFN_vkLatencySleepNV)(VkDevice device, VkSwapchainKHR swapchain, const VkLatencySleepInfoNV* pSleepInfo);
18668typedef void (VKAPI_PTR *PFN_vkSetLatencyMarkerNV)(VkDevice device, VkSwapchainKHR swapchain, const VkSetLatencyMarkerInfoNV* pLatencyMarkerInfo);
18669typedef void (VKAPI_PTR *PFN_vkGetLatencyTimingsNV)(VkDevice device, VkSwapchainKHR swapchain, VkGetLatencyMarkerInfoNV* pLatencyMarkerInfo);
18670typedef void (VKAPI_PTR *PFN_vkQueueNotifyOutOfBandNV)(VkQueue queue, const VkOutOfBandQueueTypeInfoNV* pQueueTypeInfo);
18671
18672#ifndef VK_NO_PROTOTYPES
18673VKAPI_ATTR VkResult VKAPI_CALL vkSetLatencySleepModeNV(
18674    VkDevice                                    device,
18675    VkSwapchainKHR                              swapchain,
18676    const VkLatencySleepModeInfoNV*             pSleepModeInfo);
18677
18678VKAPI_ATTR VkResult VKAPI_CALL vkLatencySleepNV(
18679    VkDevice                                    device,
18680    VkSwapchainKHR                              swapchain,
18681    const VkLatencySleepInfoNV*                 pSleepInfo);
18682
18683VKAPI_ATTR void VKAPI_CALL vkSetLatencyMarkerNV(
18684    VkDevice                                    device,
18685    VkSwapchainKHR                              swapchain,
18686    const VkSetLatencyMarkerInfoNV*             pLatencyMarkerInfo);
18687
18688VKAPI_ATTR void VKAPI_CALL vkGetLatencyTimingsNV(
18689    VkDevice                                    device,
18690    VkSwapchainKHR                              swapchain,
18691    VkGetLatencyMarkerInfoNV*                   pLatencyMarkerInfo);
18692
18693VKAPI_ATTR void VKAPI_CALL vkQueueNotifyOutOfBandNV(
18694    VkQueue                                     queue,
18695    const VkOutOfBandQueueTypeInfoNV*           pQueueTypeInfo);
18696#endif
18697
18698
18699// VK_QCOM_multiview_per_view_render_areas is a preprocessor guard. Do not pass it to API calls.
18700#define VK_QCOM_multiview_per_view_render_areas 1
18701#define VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_SPEC_VERSION 1
18702#define VK_QCOM_MULTIVIEW_PER_VIEW_RENDER_AREAS_EXTENSION_NAME "VK_QCOM_multiview_per_view_render_areas"
18703typedef struct VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM {
18704    VkStructureType    sType;
18705    void*              pNext;
18706    VkBool32           multiviewPerViewRenderAreas;
18707} VkPhysicalDeviceMultiviewPerViewRenderAreasFeaturesQCOM;
18708
18709typedef struct VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM {
18710    VkStructureType    sType;
18711    const void*        pNext;
18712    uint32_t           perViewRenderAreaCount;
18713    const VkRect2D*    pPerViewRenderAreas;
18714} VkMultiviewPerViewRenderAreasRenderPassBeginInfoQCOM;
18715
18716
18717
18718// VK_NV_per_stage_descriptor_set is a preprocessor guard. Do not pass it to API calls.
18719#define VK_NV_per_stage_descriptor_set 1
18720#define VK_NV_PER_STAGE_DESCRIPTOR_SET_SPEC_VERSION 1
18721#define VK_NV_PER_STAGE_DESCRIPTOR_SET_EXTENSION_NAME "VK_NV_per_stage_descriptor_set"
18722typedef struct VkPhysicalDevicePerStageDescriptorSetFeaturesNV {
18723    VkStructureType    sType;
18724    void*              pNext;
18725    VkBool32           perStageDescriptorSet;
18726    VkBool32           dynamicPipelineLayout;
18727} VkPhysicalDevicePerStageDescriptorSetFeaturesNV;
18728
18729
18730
18731// VK_QCOM_image_processing2 is a preprocessor guard. Do not pass it to API calls.
18732#define VK_QCOM_image_processing2 1
18733#define VK_QCOM_IMAGE_PROCESSING_2_SPEC_VERSION 1
18734#define VK_QCOM_IMAGE_PROCESSING_2_EXTENSION_NAME "VK_QCOM_image_processing2"
18735
18736typedef enum VkBlockMatchWindowCompareModeQCOM {
18737    VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MIN_QCOM = 0,
18738    VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_QCOM = 1,
18739    VK_BLOCK_MATCH_WINDOW_COMPARE_MODE_MAX_ENUM_QCOM = 0x7FFFFFFF
18740} VkBlockMatchWindowCompareModeQCOM;
18741typedef struct VkPhysicalDeviceImageProcessing2FeaturesQCOM {
18742    VkStructureType    sType;
18743    void*              pNext;
18744    VkBool32           textureBlockMatch2;
18745} VkPhysicalDeviceImageProcessing2FeaturesQCOM;
18746
18747typedef struct VkPhysicalDeviceImageProcessing2PropertiesQCOM {
18748    VkStructureType    sType;
18749    void*              pNext;
18750    VkExtent2D         maxBlockMatchWindow;
18751} VkPhysicalDeviceImageProcessing2PropertiesQCOM;
18752
18753typedef struct VkSamplerBlockMatchWindowCreateInfoQCOM {
18754    VkStructureType                      sType;
18755    const void*                          pNext;
18756    VkExtent2D                           windowExtent;
18757    VkBlockMatchWindowCompareModeQCOM    windowCompareMode;
18758} VkSamplerBlockMatchWindowCreateInfoQCOM;
18759
18760
18761
18762// VK_QCOM_filter_cubic_weights is a preprocessor guard. Do not pass it to API calls.
18763#define VK_QCOM_filter_cubic_weights 1
18764#define VK_QCOM_FILTER_CUBIC_WEIGHTS_SPEC_VERSION 1
18765#define VK_QCOM_FILTER_CUBIC_WEIGHTS_EXTENSION_NAME "VK_QCOM_filter_cubic_weights"
18766
18767typedef enum VkCubicFilterWeightsQCOM {
18768    VK_CUBIC_FILTER_WEIGHTS_CATMULL_ROM_QCOM = 0,
18769    VK_CUBIC_FILTER_WEIGHTS_ZERO_TANGENT_CARDINAL_QCOM = 1,
18770    VK_CUBIC_FILTER_WEIGHTS_B_SPLINE_QCOM = 2,
18771    VK_CUBIC_FILTER_WEIGHTS_MITCHELL_NETRAVALI_QCOM = 3,
18772    VK_CUBIC_FILTER_WEIGHTS_MAX_ENUM_QCOM = 0x7FFFFFFF
18773} VkCubicFilterWeightsQCOM;
18774typedef struct VkPhysicalDeviceCubicWeightsFeaturesQCOM {
18775    VkStructureType    sType;
18776    void*              pNext;
18777    VkBool32           selectableCubicWeights;
18778} VkPhysicalDeviceCubicWeightsFeaturesQCOM;
18779
18780typedef struct VkSamplerCubicWeightsCreateInfoQCOM {
18781    VkStructureType             sType;
18782    const void*                 pNext;
18783    VkCubicFilterWeightsQCOM    cubicWeights;
18784} VkSamplerCubicWeightsCreateInfoQCOM;
18785
18786typedef struct VkBlitImageCubicWeightsInfoQCOM {
18787    VkStructureType             sType;
18788    const void*                 pNext;
18789    VkCubicFilterWeightsQCOM    cubicWeights;
18790} VkBlitImageCubicWeightsInfoQCOM;
18791
18792
18793
18794// VK_QCOM_ycbcr_degamma is a preprocessor guard. Do not pass it to API calls.
18795#define VK_QCOM_ycbcr_degamma 1
18796#define VK_QCOM_YCBCR_DEGAMMA_SPEC_VERSION 1
18797#define VK_QCOM_YCBCR_DEGAMMA_EXTENSION_NAME "VK_QCOM_ycbcr_degamma"
18798typedef struct VkPhysicalDeviceYcbcrDegammaFeaturesQCOM {
18799    VkStructureType    sType;
18800    void*              pNext;
18801    VkBool32           ycbcrDegamma;
18802} VkPhysicalDeviceYcbcrDegammaFeaturesQCOM;
18803
18804typedef struct VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM {
18805    VkStructureType    sType;
18806    void*              pNext;
18807    VkBool32           enableYDegamma;
18808    VkBool32           enableCbCrDegamma;
18809} VkSamplerYcbcrConversionYcbcrDegammaCreateInfoQCOM;
18810
18811
18812
18813// VK_QCOM_filter_cubic_clamp is a preprocessor guard. Do not pass it to API calls.
18814#define VK_QCOM_filter_cubic_clamp 1
18815#define VK_QCOM_FILTER_CUBIC_CLAMP_SPEC_VERSION 1
18816#define VK_QCOM_FILTER_CUBIC_CLAMP_EXTENSION_NAME "VK_QCOM_filter_cubic_clamp"
18817typedef struct VkPhysicalDeviceCubicClampFeaturesQCOM {
18818    VkStructureType    sType;
18819    void*              pNext;
18820    VkBool32           cubicRangeClamp;
18821} VkPhysicalDeviceCubicClampFeaturesQCOM;
18822
18823
18824
18825// VK_EXT_attachment_feedback_loop_dynamic_state is a preprocessor guard. Do not pass it to API calls.
18826#define VK_EXT_attachment_feedback_loop_dynamic_state 1
18827#define VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_SPEC_VERSION 1
18828#define VK_EXT_ATTACHMENT_FEEDBACK_LOOP_DYNAMIC_STATE_EXTENSION_NAME "VK_EXT_attachment_feedback_loop_dynamic_state"
18829typedef struct VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT {
18830    VkStructureType    sType;
18831    void*              pNext;
18832    VkBool32           attachmentFeedbackLoopDynamicState;
18833} VkPhysicalDeviceAttachmentFeedbackLoopDynamicStateFeaturesEXT;
18834
18835typedef void (VKAPI_PTR *PFN_vkCmdSetAttachmentFeedbackLoopEnableEXT)(VkCommandBuffer commandBuffer, VkImageAspectFlags aspectMask);
18836
18837#ifndef VK_NO_PROTOTYPES
18838VKAPI_ATTR void VKAPI_CALL vkCmdSetAttachmentFeedbackLoopEnableEXT(
18839    VkCommandBuffer                             commandBuffer,
18840    VkImageAspectFlags                          aspectMask);
18841#endif
18842
18843
18844// VK_MSFT_layered_driver is a preprocessor guard. Do not pass it to API calls.
18845#define VK_MSFT_layered_driver 1
18846#define VK_MSFT_LAYERED_DRIVER_SPEC_VERSION 1
18847#define VK_MSFT_LAYERED_DRIVER_EXTENSION_NAME "VK_MSFT_layered_driver"
18848
18849typedef enum VkLayeredDriverUnderlyingApiMSFT {
18850    VK_LAYERED_DRIVER_UNDERLYING_API_NONE_MSFT = 0,
18851    VK_LAYERED_DRIVER_UNDERLYING_API_D3D12_MSFT = 1,
18852    VK_LAYERED_DRIVER_UNDERLYING_API_MAX_ENUM_MSFT = 0x7FFFFFFF
18853} VkLayeredDriverUnderlyingApiMSFT;
18854typedef struct VkPhysicalDeviceLayeredDriverPropertiesMSFT {
18855    VkStructureType                     sType;
18856    void*                               pNext;
18857    VkLayeredDriverUnderlyingApiMSFT    underlyingAPI;
18858} VkPhysicalDeviceLayeredDriverPropertiesMSFT;
18859
18860
18861
18862// VK_NV_descriptor_pool_overallocation is a preprocessor guard. Do not pass it to API calls.
18863#define VK_NV_descriptor_pool_overallocation 1
18864#define VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_SPEC_VERSION 1
18865#define VK_NV_DESCRIPTOR_POOL_OVERALLOCATION_EXTENSION_NAME "VK_NV_descriptor_pool_overallocation"
18866typedef struct VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV {
18867    VkStructureType    sType;
18868    void*              pNext;
18869    VkBool32           descriptorPoolOverallocation;
18870} VkPhysicalDeviceDescriptorPoolOverallocationFeaturesNV;
18871
18872
18873
18874// VK_KHR_acceleration_structure is a preprocessor guard. Do not pass it to API calls.
18875#define VK_KHR_acceleration_structure 1
18876#define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 13
18877#define VK_KHR_ACCELERATION_STRUCTURE_EXTENSION_NAME "VK_KHR_acceleration_structure"
18878
18879typedef enum VkBuildAccelerationStructureModeKHR {
18880    VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR = 0,
18881    VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR = 1,
18882    VK_BUILD_ACCELERATION_STRUCTURE_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
18883} VkBuildAccelerationStructureModeKHR;
18884
18885typedef enum VkAccelerationStructureCreateFlagBitsKHR {
18886    VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 0x00000001,
18887    VK_ACCELERATION_STRUCTURE_CREATE_DESCRIPTOR_BUFFER_CAPTURE_REPLAY_BIT_EXT = 0x00000008,
18888    VK_ACCELERATION_STRUCTURE_CREATE_MOTION_BIT_NV = 0x00000004,
18889    VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
18890} VkAccelerationStructureCreateFlagBitsKHR;
18891typedef VkFlags VkAccelerationStructureCreateFlagsKHR;
18892typedef struct VkAccelerationStructureBuildRangeInfoKHR {
18893    uint32_t    primitiveCount;
18894    uint32_t    primitiveOffset;
18895    uint32_t    firstVertex;
18896    uint32_t    transformOffset;
18897} VkAccelerationStructureBuildRangeInfoKHR;
18898
18899typedef struct VkAccelerationStructureGeometryTrianglesDataKHR {
18900    VkStructureType                  sType;
18901    const void*                      pNext;
18902    VkFormat                         vertexFormat;
18903    VkDeviceOrHostAddressConstKHR    vertexData;
18904    VkDeviceSize                     vertexStride;
18905    uint32_t                         maxVertex;
18906    VkIndexType                      indexType;
18907    VkDeviceOrHostAddressConstKHR    indexData;
18908    VkDeviceOrHostAddressConstKHR    transformData;
18909} VkAccelerationStructureGeometryTrianglesDataKHR;
18910
18911typedef struct VkAccelerationStructureGeometryAabbsDataKHR {
18912    VkStructureType                  sType;
18913    const void*                      pNext;
18914    VkDeviceOrHostAddressConstKHR    data;
18915    VkDeviceSize                     stride;
18916} VkAccelerationStructureGeometryAabbsDataKHR;
18917
18918typedef struct VkAccelerationStructureGeometryInstancesDataKHR {
18919    VkStructureType                  sType;
18920    const void*                      pNext;
18921    VkBool32                         arrayOfPointers;
18922    VkDeviceOrHostAddressConstKHR    data;
18923} VkAccelerationStructureGeometryInstancesDataKHR;
18924
18925typedef union VkAccelerationStructureGeometryDataKHR {
18926    VkAccelerationStructureGeometryTrianglesDataKHR    triangles;
18927    VkAccelerationStructureGeometryAabbsDataKHR        aabbs;
18928    VkAccelerationStructureGeometryInstancesDataKHR    instances;
18929} VkAccelerationStructureGeometryDataKHR;
18930
18931typedef struct VkAccelerationStructureGeometryKHR {
18932    VkStructureType                           sType;
18933    const void*                               pNext;
18934    VkGeometryTypeKHR                         geometryType;
18935    VkAccelerationStructureGeometryDataKHR    geometry;
18936    VkGeometryFlagsKHR                        flags;
18937} VkAccelerationStructureGeometryKHR;
18938
18939typedef struct VkAccelerationStructureBuildGeometryInfoKHR {
18940    VkStructureType                                     sType;
18941    const void*                                         pNext;
18942    VkAccelerationStructureTypeKHR                      type;
18943    VkBuildAccelerationStructureFlagsKHR                flags;
18944    VkBuildAccelerationStructureModeKHR                 mode;
18945    VkAccelerationStructureKHR                          srcAccelerationStructure;
18946    VkAccelerationStructureKHR                          dstAccelerationStructure;
18947    uint32_t                                            geometryCount;
18948    const VkAccelerationStructureGeometryKHR*           pGeometries;
18949    const VkAccelerationStructureGeometryKHR* const*    ppGeometries;
18950    VkDeviceOrHostAddressKHR                            scratchData;
18951} VkAccelerationStructureBuildGeometryInfoKHR;
18952
18953typedef struct VkAccelerationStructureCreateInfoKHR {
18954    VkStructureType                          sType;
18955    const void*                              pNext;
18956    VkAccelerationStructureCreateFlagsKHR    createFlags;
18957    VkBuffer                                 buffer;
18958    VkDeviceSize                             offset;
18959    VkDeviceSize                             size;
18960    VkAccelerationStructureTypeKHR           type;
18961    VkDeviceAddress                          deviceAddress;
18962} VkAccelerationStructureCreateInfoKHR;
18963
18964typedef struct VkWriteDescriptorSetAccelerationStructureKHR {
18965    VkStructureType                      sType;
18966    const void*                          pNext;
18967    uint32_t                             accelerationStructureCount;
18968    const VkAccelerationStructureKHR*    pAccelerationStructures;
18969} VkWriteDescriptorSetAccelerationStructureKHR;
18970
18971typedef struct VkPhysicalDeviceAccelerationStructureFeaturesKHR {
18972    VkStructureType    sType;
18973    void*              pNext;
18974    VkBool32           accelerationStructure;
18975    VkBool32           accelerationStructureCaptureReplay;
18976    VkBool32           accelerationStructureIndirectBuild;
18977    VkBool32           accelerationStructureHostCommands;
18978    VkBool32           descriptorBindingAccelerationStructureUpdateAfterBind;
18979} VkPhysicalDeviceAccelerationStructureFeaturesKHR;
18980
18981typedef struct VkPhysicalDeviceAccelerationStructurePropertiesKHR {
18982    VkStructureType    sType;
18983    void*              pNext;
18984    uint64_t           maxGeometryCount;
18985    uint64_t           maxInstanceCount;
18986    uint64_t           maxPrimitiveCount;
18987    uint32_t           maxPerStageDescriptorAccelerationStructures;
18988    uint32_t           maxPerStageDescriptorUpdateAfterBindAccelerationStructures;
18989    uint32_t           maxDescriptorSetAccelerationStructures;
18990    uint32_t           maxDescriptorSetUpdateAfterBindAccelerationStructures;
18991    uint32_t           minAccelerationStructureScratchOffsetAlignment;
18992} VkPhysicalDeviceAccelerationStructurePropertiesKHR;
18993
18994typedef struct VkAccelerationStructureDeviceAddressInfoKHR {
18995    VkStructureType               sType;
18996    const void*                   pNext;
18997    VkAccelerationStructureKHR    accelerationStructure;
18998} VkAccelerationStructureDeviceAddressInfoKHR;
18999
19000typedef struct VkAccelerationStructureVersionInfoKHR {
19001    VkStructureType    sType;
19002    const void*        pNext;
19003    const uint8_t*     pVersionData;
19004} VkAccelerationStructureVersionInfoKHR;
19005
19006typedef struct VkCopyAccelerationStructureToMemoryInfoKHR {
19007    VkStructureType                       sType;
19008    const void*                           pNext;
19009    VkAccelerationStructureKHR            src;
19010    VkDeviceOrHostAddressKHR              dst;
19011    VkCopyAccelerationStructureModeKHR    mode;
19012} VkCopyAccelerationStructureToMemoryInfoKHR;
19013
19014typedef struct VkCopyMemoryToAccelerationStructureInfoKHR {
19015    VkStructureType                       sType;
19016    const void*                           pNext;
19017    VkDeviceOrHostAddressConstKHR         src;
19018    VkAccelerationStructureKHR            dst;
19019    VkCopyAccelerationStructureModeKHR    mode;
19020} VkCopyMemoryToAccelerationStructureInfoKHR;
19021
19022typedef struct VkCopyAccelerationStructureInfoKHR {
19023    VkStructureType                       sType;
19024    const void*                           pNext;
19025    VkAccelerationStructureKHR            src;
19026    VkAccelerationStructureKHR            dst;
19027    VkCopyAccelerationStructureModeKHR    mode;
19028} VkCopyAccelerationStructureInfoKHR;
19029
19030typedef struct VkAccelerationStructureBuildSizesInfoKHR {
19031    VkStructureType    sType;
19032    const void*        pNext;
19033    VkDeviceSize       accelerationStructureSize;
19034    VkDeviceSize       updateScratchSize;
19035    VkDeviceSize       buildScratchSize;
19036} VkAccelerationStructureBuildSizesInfoKHR;
19037
19038typedef VkResult (VKAPI_PTR *PFN_vkCreateAccelerationStructureKHR)(VkDevice                                           device, const VkAccelerationStructureCreateInfoKHR*        pCreateInfo, const VkAllocationCallbacks*       pAllocator, VkAccelerationStructureKHR*                        pAccelerationStructure);
19039typedef void (VKAPI_PTR *PFN_vkDestroyAccelerationStructureKHR)(VkDevice device, VkAccelerationStructureKHR accelerationStructure, const VkAllocationCallbacks* pAllocator);
19040typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructuresKHR)(VkCommandBuffer                                    commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos);
19041typedef void (VKAPI_PTR *PFN_vkCmdBuildAccelerationStructuresIndirectKHR)(VkCommandBuffer                  commandBuffer, uint32_t                                           infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkDeviceAddress*             pIndirectDeviceAddresses, const uint32_t*                    pIndirectStrides, const uint32_t* const*             ppMaxPrimitiveCounts);
19042typedef VkResult (VKAPI_PTR *PFN_vkBuildAccelerationStructuresKHR)(VkDevice                                           device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos);
19043typedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureInfoKHR* pInfo);
19044typedef VkResult (VKAPI_PTR *PFN_vkCopyAccelerationStructureToMemoryKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
19045typedef VkResult (VKAPI_PTR *PFN_vkCopyMemoryToAccelerationStructureKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
19046typedef VkResult (VKAPI_PTR *PFN_vkWriteAccelerationStructuresPropertiesKHR)(VkDevice device, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType  queryType, size_t       dataSize, void* pData, size_t stride);
19047typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureKHR)(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo);
19048typedef void (VKAPI_PTR *PFN_vkCmdCopyAccelerationStructureToMemoryKHR)(VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
19049typedef void (VKAPI_PTR *PFN_vkCmdCopyMemoryToAccelerationStructureKHR)(VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
19050typedef VkDeviceAddress (VKAPI_PTR *PFN_vkGetAccelerationStructureDeviceAddressKHR)(VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo);
19051typedef void (VKAPI_PTR *PFN_vkCmdWriteAccelerationStructuresPropertiesKHR)(VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery);
19052typedef void (VKAPI_PTR *PFN_vkGetDeviceAccelerationStructureCompatibilityKHR)(VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility);
19053typedef void (VKAPI_PTR *PFN_vkGetAccelerationStructureBuildSizesKHR)(VkDevice                                            device, VkAccelerationStructureBuildTypeKHR                 buildType, const VkAccelerationStructureBuildGeometryInfoKHR*  pBuildInfo, const uint32_t*  pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR*           pSizeInfo);
19054
19055#ifndef VK_NO_PROTOTYPES
19056VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureKHR(
19057    VkDevice                                    device,
19058    const VkAccelerationStructureCreateInfoKHR* pCreateInfo,
19059    const VkAllocationCallbacks*                pAllocator,
19060    VkAccelerationStructureKHR*                 pAccelerationStructure);
19061
19062VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureKHR(
19063    VkDevice                                    device,
19064    VkAccelerationStructureKHR                  accelerationStructure,
19065    const VkAllocationCallbacks*                pAllocator);
19066
19067VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructuresKHR(
19068    VkCommandBuffer                             commandBuffer,
19069    uint32_t                                    infoCount,
19070    const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
19071    const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos);
19072
19073VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructuresIndirectKHR(
19074    VkCommandBuffer                             commandBuffer,
19075    uint32_t                                    infoCount,
19076    const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
19077    const VkDeviceAddress*                      pIndirectDeviceAddresses,
19078    const uint32_t*                             pIndirectStrides,
19079    const uint32_t* const*                      ppMaxPrimitiveCounts);
19080
19081VKAPI_ATTR VkResult VKAPI_CALL vkBuildAccelerationStructuresKHR(
19082    VkDevice                                    device,
19083    VkDeferredOperationKHR                      deferredOperation,
19084    uint32_t                                    infoCount,
19085    const VkAccelerationStructureBuildGeometryInfoKHR* pInfos,
19086    const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos);
19087
19088VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureKHR(
19089    VkDevice                                    device,
19090    VkDeferredOperationKHR                      deferredOperation,
19091    const VkCopyAccelerationStructureInfoKHR*   pInfo);
19092
19093VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureToMemoryKHR(
19094    VkDevice                                    device,
19095    VkDeferredOperationKHR                      deferredOperation,
19096    const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
19097
19098VKAPI_ATTR VkResult VKAPI_CALL vkCopyMemoryToAccelerationStructureKHR(
19099    VkDevice                                    device,
19100    VkDeferredOperationKHR                      deferredOperation,
19101    const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
19102
19103VKAPI_ATTR VkResult VKAPI_CALL vkWriteAccelerationStructuresPropertiesKHR(
19104    VkDevice                                    device,
19105    uint32_t                                    accelerationStructureCount,
19106    const VkAccelerationStructureKHR*           pAccelerationStructures,
19107    VkQueryType                                 queryType,
19108    size_t                                      dataSize,
19109    void*                                       pData,
19110    size_t                                      stride);
19111
19112VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureKHR(
19113    VkCommandBuffer                             commandBuffer,
19114    const VkCopyAccelerationStructureInfoKHR*   pInfo);
19115
19116VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureToMemoryKHR(
19117    VkCommandBuffer                             commandBuffer,
19118    const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo);
19119
19120VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToAccelerationStructureKHR(
19121    VkCommandBuffer                             commandBuffer,
19122    const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo);
19123
19124VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetAccelerationStructureDeviceAddressKHR(
19125    VkDevice                                    device,
19126    const VkAccelerationStructureDeviceAddressInfoKHR* pInfo);
19127
19128VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesKHR(
19129    VkCommandBuffer                             commandBuffer,
19130    uint32_t                                    accelerationStructureCount,
19131    const VkAccelerationStructureKHR*           pAccelerationStructures,
19132    VkQueryType                                 queryType,
19133    VkQueryPool                                 queryPool,
19134    uint32_t                                    firstQuery);
19135
19136VKAPI_ATTR void VKAPI_CALL vkGetDeviceAccelerationStructureCompatibilityKHR(
19137    VkDevice                                    device,
19138    const VkAccelerationStructureVersionInfoKHR* pVersionInfo,
19139    VkAccelerationStructureCompatibilityKHR*    pCompatibility);
19140
19141VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureBuildSizesKHR(
19142    VkDevice                                    device,
19143    VkAccelerationStructureBuildTypeKHR         buildType,
19144    const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo,
19145    const uint32_t*                             pMaxPrimitiveCounts,
19146    VkAccelerationStructureBuildSizesInfoKHR*   pSizeInfo);
19147#endif
19148
19149
19150// VK_KHR_ray_tracing_pipeline is a preprocessor guard. Do not pass it to API calls.
19151#define VK_KHR_ray_tracing_pipeline 1
19152#define VK_KHR_RAY_TRACING_PIPELINE_SPEC_VERSION 1
19153#define VK_KHR_RAY_TRACING_PIPELINE_EXTENSION_NAME "VK_KHR_ray_tracing_pipeline"
19154
19155typedef enum VkShaderGroupShaderKHR {
19156    VK_SHADER_GROUP_SHADER_GENERAL_KHR = 0,
19157    VK_SHADER_GROUP_SHADER_CLOSEST_HIT_KHR = 1,
19158    VK_SHADER_GROUP_SHADER_ANY_HIT_KHR = 2,
19159    VK_SHADER_GROUP_SHADER_INTERSECTION_KHR = 3,
19160    VK_SHADER_GROUP_SHADER_MAX_ENUM_KHR = 0x7FFFFFFF
19161} VkShaderGroupShaderKHR;
19162typedef struct VkRayTracingShaderGroupCreateInfoKHR {
19163    VkStructureType                   sType;
19164    const void*                       pNext;
19165    VkRayTracingShaderGroupTypeKHR    type;
19166    uint32_t                          generalShader;
19167    uint32_t                          closestHitShader;
19168    uint32_t                          anyHitShader;
19169    uint32_t                          intersectionShader;
19170    const void*                       pShaderGroupCaptureReplayHandle;
19171} VkRayTracingShaderGroupCreateInfoKHR;
19172
19173typedef struct VkRayTracingPipelineInterfaceCreateInfoKHR {
19174    VkStructureType    sType;
19175    const void*        pNext;
19176    uint32_t           maxPipelineRayPayloadSize;
19177    uint32_t           maxPipelineRayHitAttributeSize;
19178} VkRayTracingPipelineInterfaceCreateInfoKHR;
19179
19180typedef struct VkRayTracingPipelineCreateInfoKHR {
19181    VkStructureType                                      sType;
19182    const void*                                          pNext;
19183    VkPipelineCreateFlags                                flags;
19184    uint32_t                                             stageCount;
19185    const VkPipelineShaderStageCreateInfo*               pStages;
19186    uint32_t                                             groupCount;
19187    const VkRayTracingShaderGroupCreateInfoKHR*          pGroups;
19188    uint32_t                                             maxPipelineRayRecursionDepth;
19189    const VkPipelineLibraryCreateInfoKHR*                pLibraryInfo;
19190    const VkRayTracingPipelineInterfaceCreateInfoKHR*    pLibraryInterface;
19191    const VkPipelineDynamicStateCreateInfo*              pDynamicState;
19192    VkPipelineLayout                                     layout;
19193    VkPipeline                                           basePipelineHandle;
19194    int32_t                                              basePipelineIndex;
19195} VkRayTracingPipelineCreateInfoKHR;
19196
19197typedef struct VkPhysicalDeviceRayTracingPipelineFeaturesKHR {
19198    VkStructureType    sType;
19199    void*              pNext;
19200    VkBool32           rayTracingPipeline;
19201    VkBool32           rayTracingPipelineShaderGroupHandleCaptureReplay;
19202    VkBool32           rayTracingPipelineShaderGroupHandleCaptureReplayMixed;
19203    VkBool32           rayTracingPipelineTraceRaysIndirect;
19204    VkBool32           rayTraversalPrimitiveCulling;
19205} VkPhysicalDeviceRayTracingPipelineFeaturesKHR;
19206
19207typedef struct VkPhysicalDeviceRayTracingPipelinePropertiesKHR {
19208    VkStructureType    sType;
19209    void*              pNext;
19210    uint32_t           shaderGroupHandleSize;
19211    uint32_t           maxRayRecursionDepth;
19212    uint32_t           maxShaderGroupStride;
19213    uint32_t           shaderGroupBaseAlignment;
19214    uint32_t           shaderGroupHandleCaptureReplaySize;
19215    uint32_t           maxRayDispatchInvocationCount;
19216    uint32_t           shaderGroupHandleAlignment;
19217    uint32_t           maxRayHitAttributeSize;
19218} VkPhysicalDeviceRayTracingPipelinePropertiesKHR;
19219
19220typedef struct VkStridedDeviceAddressRegionKHR {
19221    VkDeviceAddress    deviceAddress;
19222    VkDeviceSize       stride;
19223    VkDeviceSize       size;
19224} VkStridedDeviceAddressRegionKHR;
19225
19226typedef struct VkTraceRaysIndirectCommandKHR {
19227    uint32_t    width;
19228    uint32_t    height;
19229    uint32_t    depth;
19230} VkTraceRaysIndirectCommandKHR;
19231
19232typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysKHR)(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width, uint32_t height, uint32_t depth);
19233typedef VkResult (VKAPI_PTR *PFN_vkCreateRayTracingPipelinesKHR)(VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
19234typedef VkResult (VKAPI_PTR *PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR)(VkDevice device, VkPipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData);
19235typedef void (VKAPI_PTR *PFN_vkCmdTraceRaysIndirectKHR)(VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress);
19236typedef VkDeviceSize (VKAPI_PTR *PFN_vkGetRayTracingShaderGroupStackSizeKHR)(VkDevice device, VkPipeline pipeline, uint32_t group, VkShaderGroupShaderKHR groupShader);
19237typedef void (VKAPI_PTR *PFN_vkCmdSetRayTracingPipelineStackSizeKHR)(VkCommandBuffer commandBuffer, uint32_t pipelineStackSize);
19238
19239#ifndef VK_NO_PROTOTYPES
19240VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysKHR(
19241    VkCommandBuffer                             commandBuffer,
19242    const VkStridedDeviceAddressRegionKHR*      pRaygenShaderBindingTable,
19243    const VkStridedDeviceAddressRegionKHR*      pMissShaderBindingTable,
19244    const VkStridedDeviceAddressRegionKHR*      pHitShaderBindingTable,
19245    const VkStridedDeviceAddressRegionKHR*      pCallableShaderBindingTable,
19246    uint32_t                                    width,
19247    uint32_t                                    height,
19248    uint32_t                                    depth);
19249
19250VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesKHR(
19251    VkDevice                                    device,
19252    VkDeferredOperationKHR                      deferredOperation,
19253    VkPipelineCache                             pipelineCache,
19254    uint32_t                                    createInfoCount,
19255    const VkRayTracingPipelineCreateInfoKHR*    pCreateInfos,
19256    const VkAllocationCallbacks*                pAllocator,
19257    VkPipeline*                                 pPipelines);
19258
19259VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingCaptureReplayShaderGroupHandlesKHR(
19260    VkDevice                                    device,
19261    VkPipeline                                  pipeline,
19262    uint32_t                                    firstGroup,
19263    uint32_t                                    groupCount,
19264    size_t                                      dataSize,
19265    void*                                       pData);
19266
19267VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysIndirectKHR(
19268    VkCommandBuffer                             commandBuffer,
19269    const VkStridedDeviceAddressRegionKHR*      pRaygenShaderBindingTable,
19270    const VkStridedDeviceAddressRegionKHR*      pMissShaderBindingTable,
19271    const VkStridedDeviceAddressRegionKHR*      pHitShaderBindingTable,
19272    const VkStridedDeviceAddressRegionKHR*      pCallableShaderBindingTable,
19273    VkDeviceAddress                             indirectDeviceAddress);
19274
19275VKAPI_ATTR VkDeviceSize VKAPI_CALL vkGetRayTracingShaderGroupStackSizeKHR(
19276    VkDevice                                    device,
19277    VkPipeline                                  pipeline,
19278    uint32_t                                    group,
19279    VkShaderGroupShaderKHR                      groupShader);
19280
19281VKAPI_ATTR void VKAPI_CALL vkCmdSetRayTracingPipelineStackSizeKHR(
19282    VkCommandBuffer                             commandBuffer,
19283    uint32_t                                    pipelineStackSize);
19284#endif
19285
19286
19287// VK_KHR_ray_query is a preprocessor guard. Do not pass it to API calls.
19288#define VK_KHR_ray_query 1
19289#define VK_KHR_RAY_QUERY_SPEC_VERSION     1
19290#define VK_KHR_RAY_QUERY_EXTENSION_NAME   "VK_KHR_ray_query"
19291typedef struct VkPhysicalDeviceRayQueryFeaturesKHR {
19292    VkStructureType    sType;
19293    void*              pNext;
19294    VkBool32           rayQuery;
19295} VkPhysicalDeviceRayQueryFeaturesKHR;
19296
19297
19298
19299// VK_EXT_mesh_shader is a preprocessor guard. Do not pass it to API calls.
19300#define VK_EXT_mesh_shader 1
19301#define VK_EXT_MESH_SHADER_SPEC_VERSION   1
19302#define VK_EXT_MESH_SHADER_EXTENSION_NAME "VK_EXT_mesh_shader"
19303typedef struct VkPhysicalDeviceMeshShaderFeaturesEXT {
19304    VkStructureType    sType;
19305    void*              pNext;
19306    VkBool32           taskShader;
19307    VkBool32           meshShader;
19308    VkBool32           multiviewMeshShader;
19309    VkBool32           primitiveFragmentShadingRateMeshShader;
19310    VkBool32           meshShaderQueries;
19311} VkPhysicalDeviceMeshShaderFeaturesEXT;
19312
19313typedef struct VkPhysicalDeviceMeshShaderPropertiesEXT {
19314    VkStructureType    sType;
19315    void*              pNext;
19316    uint32_t           maxTaskWorkGroupTotalCount;
19317    uint32_t           maxTaskWorkGroupCount[3];
19318    uint32_t           maxTaskWorkGroupInvocations;
19319    uint32_t           maxTaskWorkGroupSize[3];
19320    uint32_t           maxTaskPayloadSize;
19321    uint32_t           maxTaskSharedMemorySize;
19322    uint32_t           maxTaskPayloadAndSharedMemorySize;
19323    uint32_t           maxMeshWorkGroupTotalCount;
19324    uint32_t           maxMeshWorkGroupCount[3];
19325    uint32_t           maxMeshWorkGroupInvocations;
19326    uint32_t           maxMeshWorkGroupSize[3];
19327    uint32_t           maxMeshSharedMemorySize;
19328    uint32_t           maxMeshPayloadAndSharedMemorySize;
19329    uint32_t           maxMeshOutputMemorySize;
19330    uint32_t           maxMeshPayloadAndOutputMemorySize;
19331    uint32_t           maxMeshOutputComponents;
19332    uint32_t           maxMeshOutputVertices;
19333    uint32_t           maxMeshOutputPrimitives;
19334    uint32_t           maxMeshOutputLayers;
19335    uint32_t           maxMeshMultiviewViewCount;
19336    uint32_t           meshOutputPerVertexGranularity;
19337    uint32_t           meshOutputPerPrimitiveGranularity;
19338    uint32_t           maxPreferredTaskWorkGroupInvocations;
19339    uint32_t           maxPreferredMeshWorkGroupInvocations;
19340    VkBool32           prefersLocalInvocationVertexOutput;
19341    VkBool32           prefersLocalInvocationPrimitiveOutput;
19342    VkBool32           prefersCompactVertexOutput;
19343    VkBool32           prefersCompactPrimitiveOutput;
19344} VkPhysicalDeviceMeshShaderPropertiesEXT;
19345
19346typedef struct VkDrawMeshTasksIndirectCommandEXT {
19347    uint32_t    groupCountX;
19348    uint32_t    groupCountY;
19349    uint32_t    groupCountZ;
19350} VkDrawMeshTasksIndirectCommandEXT;
19351
19352typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksEXT)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
19353typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectEXT)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
19354typedef void (VKAPI_PTR *PFN_vkCmdDrawMeshTasksIndirectCountEXT)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
19355
19356#ifndef VK_NO_PROTOTYPES
19357VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksEXT(
19358    VkCommandBuffer                             commandBuffer,
19359    uint32_t                                    groupCountX,
19360    uint32_t                                    groupCountY,
19361    uint32_t                                    groupCountZ);
19362
19363VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectEXT(
19364    VkCommandBuffer                             commandBuffer,
19365    VkBuffer                                    buffer,
19366    VkDeviceSize                                offset,
19367    uint32_t                                    drawCount,
19368    uint32_t                                    stride);
19369
19370VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectCountEXT(
19371    VkCommandBuffer                             commandBuffer,
19372    VkBuffer                                    buffer,
19373    VkDeviceSize                                offset,
19374    VkBuffer                                    countBuffer,
19375    VkDeviceSize                                countBufferOffset,
19376    uint32_t                                    maxDrawCount,
19377    uint32_t                                    stride);
19378#endif
19379
19380#ifdef __cplusplus
19381}
19382#endif
19383
19384#endif
19385