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