1c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VULKAN_H_
2c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VULKAN_H_ 1
3c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifdef __cplusplus
5c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danielextern "C" {
6c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
7c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
8c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel/*
9c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel** Copyright (c) 2015-2017 The Khronos Group Inc.
10c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel**
11c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel** Licensed under the Apache License, Version 2.0 (the "License");
12c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel** you may not use this file except in compliance with the License.
13c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel** You may obtain a copy of the License at
14c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel**
15c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel**     http://www.apache.org/licenses/LICENSE-2.0
16c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel**
17c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel** Unless required by applicable law or agreed to in writing, software
18c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel** distributed under the License is distributed on an "AS IS" BASIS,
19c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel** See the License for the specific language governing permissions and
21c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel** limitations under the License.
22c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel*/
23c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
24c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel/*
25c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel** This header is generated from the Khronos Vulkan XML API Registry.
26c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel**
27c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel*/
28c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
29ec6ae52168ae4803c2312c362280f7f79e0d380eGreg Daniel/*
30ec6ae52168ae4803c2312c362280f7f79e0d380eGreg Daniel * Below this point is based on the original Khronos vulkan.h header, but simplified for use in Skia
31ec6ae52168ae4803c2312c362280f7f79e0d380eGreg Daniel * when we are not building with a Vulkan backend, but still need the type declarations for compiling.
32ec6ae52168ae4803c2312c362280f7f79e0d380eGreg Daniel */
33c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
34c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_VERSION_1_0 1
35c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#include "vk_platform.h"
36c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
37c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_MAKE_VERSION(major, minor, patch) \
38c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    (((major) << 22) | ((minor) << 12) | (patch))
39c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
40c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel// DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead.
41c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel//#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0)
42c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
43c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel// Vulkan 1.0 version number
44c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)
45c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
46c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22)
47c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff)
48c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff)
49c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel// Version of this file
50c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_HEADER_VERSION 46
51c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
52c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
53c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NULL_HANDLE 0
54c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
55c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
56c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
57c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
58c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
59c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
60c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#if !defined(VK_DEFINE_NON_DISPATCHABLE_HANDLE)
61c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
62c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
63c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#else
64c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel        #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
65c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
66c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
67c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
68c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
69c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
70c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef uint32_t VkFlags;
71c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef uint32_t VkBool32;
72c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef uint64_t VkDeviceSize;
73c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef uint32_t VkSampleMask;
74c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
75c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_HANDLE(VkInstance)
76c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_HANDLE(VkPhysicalDevice)
77c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_HANDLE(VkDevice)
78c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_HANDLE(VkQueue)
79c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore)
80c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_HANDLE(VkCommandBuffer)
81c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence)
82c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory)
83c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer)
84c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage)
85c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent)
86c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool)
87c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView)
88c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView)
89c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule)
90c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache)
91c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout)
92c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass)
93c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline)
94c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout)
95c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler)
96c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool)
97c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet)
98c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer)
99c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool)
100c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
101c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_LOD_CLAMP_NONE                 1000.0f
102c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_REMAINING_MIP_LEVELS           (~0U)
103c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_REMAINING_ARRAY_LAYERS         (~0U)
104c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_WHOLE_SIZE                     (~0ULL)
105c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_ATTACHMENT_UNUSED              (~0U)
106c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_TRUE                           1
107c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_FALSE                          0
108c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_QUEUE_FAMILY_IGNORED           (~0U)
109c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_SUBPASS_EXTERNAL               (~0U)
110c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE  256
111c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_UUID_SIZE                      16
112c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_MAX_MEMORY_TYPES               32
113c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_MAX_MEMORY_HEAPS               16
114c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_MAX_EXTENSION_NAME_SIZE        256
115c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_MAX_DESCRIPTION_SIZE           256
116c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
117c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
118c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkPipelineCacheHeaderVersion {
119c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
120c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_CACHE_HEADER_VERSION_BEGIN_RANGE = VK_PIPELINE_CACHE_HEADER_VERSION_ONE,
121c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_CACHE_HEADER_VERSION_END_RANGE = VK_PIPELINE_CACHE_HEADER_VERSION_ONE,
122c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_CACHE_HEADER_VERSION_RANGE_SIZE = (VK_PIPELINE_CACHE_HEADER_VERSION_ONE - VK_PIPELINE_CACHE_HEADER_VERSION_ONE + 1),
123c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF
124c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineCacheHeaderVersion;
125c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
126c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkResult {
127c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SUCCESS = 0,
128c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_NOT_READY = 1,
129c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_TIMEOUT = 2,
130c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EVENT_SET = 3,
131c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EVENT_RESET = 4,
132c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INCOMPLETE = 5,
133c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ERROR_OUT_OF_HOST_MEMORY = -1,
134c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
135c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ERROR_INITIALIZATION_FAILED = -3,
136c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ERROR_DEVICE_LOST = -4,
137c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ERROR_MEMORY_MAP_FAILED = -5,
138c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ERROR_LAYER_NOT_PRESENT = -6,
139c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ERROR_EXTENSION_NOT_PRESENT = -7,
140c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ERROR_FEATURE_NOT_PRESENT = -8,
141c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ERROR_INCOMPATIBLE_DRIVER = -9,
142c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ERROR_TOO_MANY_OBJECTS = -10,
143c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
144c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ERROR_FRAGMENTED_POOL = -12,
145c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ERROR_SURFACE_LOST_KHR = -1000000000,
146c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001,
147c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SUBOPTIMAL_KHR = 1000001003,
148c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ERROR_OUT_OF_DATE_KHR = -1000001004,
149c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001,
150c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ERROR_VALIDATION_FAILED_EXT = -1000011001,
151c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ERROR_INVALID_SHADER_NV = -1000012000,
152c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ERROR_OUT_OF_POOL_MEMORY_KHR = -1000069000,
153c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ERROR_INVALID_EXTERNAL_HANDLE_KHX = -1000072003,
154c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_RESULT_BEGIN_RANGE = VK_ERROR_FRAGMENTED_POOL,
155c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_RESULT_END_RANGE = VK_INCOMPLETE,
156c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FRAGMENTED_POOL + 1),
157c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_RESULT_MAX_ENUM = 0x7FFFFFFF
158c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkResult;
159c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
160c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkStructureType {
161c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
162c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
163c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
164c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
165c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
166c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
167c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
168c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
169c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
170c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
171c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
172c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
173c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
174c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
175c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
176c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
177c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
178c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
179c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
180c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
181c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
182c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
183c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
184c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
185c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
186c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
187c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
188c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
189c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
190c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
191c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
192c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
193c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
194c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
195c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
196c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
197c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
198c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
199c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
200c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
201c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
202c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
203c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
204c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
205c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
206c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
207c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
208c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
209c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
210c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
211c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
212c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
213c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
214c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000,
215c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
216c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
217c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
218c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000,
219c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
220c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
221c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
222c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,
223c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,
224c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,
225c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,
226c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
227c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
228c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
229c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX = 1000053000,
230c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX = 1000053001,
231c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX = 1000053002,
232c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
233c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,
234c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
235c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
236c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
237c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000,
238c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001,
239c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002,
240c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003,
241c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004,
242c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005,
243c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006,
244c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007,
245c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008,
246c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX = 1000060000,
247c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX = 1000060001,
248c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX = 1000060002,
249c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX = 1000060003,
250c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX = 1000060004,
251c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX = 1000060005,
252c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX = 1000060006,
253c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX = 1000060007,
254c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX = 1000060008,
255c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX = 1000060009,
256c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX = 1000060010,
257c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX = 1000060011,
258c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX = 1000060012,
259c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
260c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000,
261c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX = 1000070000,
262c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX = 1000070001,
263c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHX = 1000071000,
264c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHX = 1000071001,
265c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHX = 1000071002,
266c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHX = 1000071003,
267c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHX = 1000071004,
268c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHX = 1000071005,
269c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHX = 1000071006,
270c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHX = 1000071007,
271c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHX = 1000072000,
272c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHX = 1000072001,
273c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHX = 1000072002,
274c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHX = 1000073000,
275c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHX = 1000073001,
276c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHX = 1000073002,
277c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHX = 1000074000,
278c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHX = 1000074001,
279c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHX = 1000075000,
280c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHX = 1000076000,
281c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHX = 1000076001,
282c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHX = 1000077000,
283c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX = 1000078000,
284c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX = 1000078001,
285c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHX = 1000078002,
286c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHX = 1000079000,
287c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000,
288c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
289c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000,
290c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
291c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
292c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = 1000086002,
293c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = 1000086003,
294c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004,
295c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005,
296c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000,
297c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000,
298c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000,
299c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001,
300c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002,
301c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,
302c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000,
303c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000,
304c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000,
305c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,
306c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,
307c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
308c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000,
309c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000,
310c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
311c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO,
312c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
313c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
314c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkStructureType;
315c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
316c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkSystemAllocationScope {
317c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,
318c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,
319c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,
320c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,
321c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4,
322c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SYSTEM_ALLOCATION_SCOPE_BEGIN_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
323c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SYSTEM_ALLOCATION_SCOPE_END_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE,
324c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SYSTEM_ALLOCATION_SCOPE_RANGE_SIZE = (VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE - VK_SYSTEM_ALLOCATION_SCOPE_COMMAND + 1),
325c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF
326c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSystemAllocationScope;
327c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
328c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkInternalAllocationType {
329c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,
330c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INTERNAL_ALLOCATION_TYPE_BEGIN_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE,
331c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INTERNAL_ALLOCATION_TYPE_END_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE,
332c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INTERNAL_ALLOCATION_TYPE_RANGE_SIZE = (VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE - VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE + 1),
333c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF
334c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkInternalAllocationType;
335c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
336c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkFormat {
337c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_UNDEFINED = 0,
338c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R4G4_UNORM_PACK8 = 1,
339c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
340c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
341c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
342c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
343c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
344c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
345c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
346c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8_UNORM = 9,
347c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8_SNORM = 10,
348c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8_USCALED = 11,
349c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8_SSCALED = 12,
350c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8_UINT = 13,
351c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8_SINT = 14,
352c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8_SRGB = 15,
353c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8_UNORM = 16,
354c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8_SNORM = 17,
355c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8_USCALED = 18,
356c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8_SSCALED = 19,
357c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8_UINT = 20,
358c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8_SINT = 21,
359c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8_SRGB = 22,
360c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8B8_UNORM = 23,
361c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8B8_SNORM = 24,
362c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8B8_USCALED = 25,
363c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8B8_SSCALED = 26,
364c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8B8_UINT = 27,
365c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8B8_SINT = 28,
366c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8B8_SRGB = 29,
367c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_B8G8R8_UNORM = 30,
368c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_B8G8R8_SNORM = 31,
369c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_B8G8R8_USCALED = 32,
370c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_B8G8R8_SSCALED = 33,
371c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_B8G8R8_UINT = 34,
372c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_B8G8R8_SINT = 35,
373c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_B8G8R8_SRGB = 36,
374c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8B8A8_UNORM = 37,
375c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8B8A8_SNORM = 38,
376c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8B8A8_USCALED = 39,
377c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8B8A8_SSCALED = 40,
378c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8B8A8_UINT = 41,
379c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8B8A8_SINT = 42,
380c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R8G8B8A8_SRGB = 43,
381c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_B8G8R8A8_UNORM = 44,
382c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_B8G8R8A8_SNORM = 45,
383c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_B8G8R8A8_USCALED = 46,
384c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_B8G8R8A8_SSCALED = 47,
385c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_B8G8R8A8_UINT = 48,
386c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_B8G8R8A8_SINT = 49,
387c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_B8G8R8A8_SRGB = 50,
388c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
389c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
390c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
391c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
392c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
393c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
394c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
395c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
396c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
397c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
398c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
399c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
400c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
401c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
402c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
403c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
404c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
405c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
406c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
407c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16_UNORM = 70,
408c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16_SNORM = 71,
409c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16_USCALED = 72,
410c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16_SSCALED = 73,
411c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16_UINT = 74,
412c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16_SINT = 75,
413c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16_SFLOAT = 76,
414c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16_UNORM = 77,
415c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16_SNORM = 78,
416c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16_USCALED = 79,
417c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16_SSCALED = 80,
418c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16_UINT = 81,
419c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16_SINT = 82,
420c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16_SFLOAT = 83,
421c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16B16_UNORM = 84,
422c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16B16_SNORM = 85,
423c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16B16_USCALED = 86,
424c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16B16_SSCALED = 87,
425c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16B16_UINT = 88,
426c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16B16_SINT = 89,
427c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16B16_SFLOAT = 90,
428c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16B16A16_UNORM = 91,
429c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16B16A16_SNORM = 92,
430c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16B16A16_USCALED = 93,
431c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16B16A16_SSCALED = 94,
432c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16B16A16_UINT = 95,
433c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16B16A16_SINT = 96,
434c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R16G16B16A16_SFLOAT = 97,
435c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R32_UINT = 98,
436c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R32_SINT = 99,
437c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R32_SFLOAT = 100,
438c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R32G32_UINT = 101,
439c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R32G32_SINT = 102,
440c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R32G32_SFLOAT = 103,
441c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R32G32B32_UINT = 104,
442c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R32G32B32_SINT = 105,
443c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R32G32B32_SFLOAT = 106,
444c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R32G32B32A32_UINT = 107,
445c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R32G32B32A32_SINT = 108,
446c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R32G32B32A32_SFLOAT = 109,
447c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R64_UINT = 110,
448c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R64_SINT = 111,
449c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R64_SFLOAT = 112,
450c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R64G64_UINT = 113,
451c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R64G64_SINT = 114,
452c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R64G64_SFLOAT = 115,
453c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R64G64B64_UINT = 116,
454c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R64G64B64_SINT = 117,
455c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R64G64B64_SFLOAT = 118,
456c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R64G64B64A64_UINT = 119,
457c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R64G64B64A64_SINT = 120,
458c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_R64G64B64A64_SFLOAT = 121,
459c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
460c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
461c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_D16_UNORM = 124,
462c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
463c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_D32_SFLOAT = 126,
464c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_S8_UINT = 127,
465c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_D16_UNORM_S8_UINT = 128,
466c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_D24_UNORM_S8_UINT = 129,
467c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
468c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
469c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
470c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
471c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
472c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_BC2_UNORM_BLOCK = 135,
473c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_BC2_SRGB_BLOCK = 136,
474c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_BC3_UNORM_BLOCK = 137,
475c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_BC3_SRGB_BLOCK = 138,
476c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_BC4_UNORM_BLOCK = 139,
477c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_BC4_SNORM_BLOCK = 140,
478c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_BC5_UNORM_BLOCK = 141,
479c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_BC5_SNORM_BLOCK = 142,
480c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
481c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
482c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_BC7_UNORM_BLOCK = 145,
483c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_BC7_SRGB_BLOCK = 146,
484c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
485c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
486c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
487c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
488c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
489c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
490c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
491c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
492c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
493c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
494c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
495c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
496c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
497c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
498c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
499c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
500c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
501c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
502c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
503c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
504c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
505c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
506c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
507c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
508c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
509c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
510c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
511c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
512c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
513c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
514c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
515c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
516c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
517c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
518c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
519c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
520c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
521c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
522c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
523c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
524c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
525c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
526c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
527c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
528c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
529c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
530c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_BEGIN_RANGE = VK_FORMAT_UNDEFINED,
531c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_END_RANGE = VK_FORMAT_ASTC_12x12_SRGB_BLOCK,
532c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_RANGE_SIZE = (VK_FORMAT_ASTC_12x12_SRGB_BLOCK - VK_FORMAT_UNDEFINED + 1),
533c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_MAX_ENUM = 0x7FFFFFFF
534c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkFormat;
535c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
536c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkImageType {
537c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_TYPE_1D = 0,
538c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_TYPE_2D = 1,
539c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_TYPE_3D = 2,
540c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_TYPE_BEGIN_RANGE = VK_IMAGE_TYPE_1D,
541c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_TYPE_END_RANGE = VK_IMAGE_TYPE_3D,
542c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_TYPE_RANGE_SIZE = (VK_IMAGE_TYPE_3D - VK_IMAGE_TYPE_1D + 1),
543c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF
544c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImageType;
545c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
546c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkImageTiling {
547c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_TILING_OPTIMAL = 0,
548c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_TILING_LINEAR = 1,
549c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_TILING_BEGIN_RANGE = VK_IMAGE_TILING_OPTIMAL,
550c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_TILING_END_RANGE = VK_IMAGE_TILING_LINEAR,
551c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_TILING_RANGE_SIZE = (VK_IMAGE_TILING_LINEAR - VK_IMAGE_TILING_OPTIMAL + 1),
552c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF
553c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImageTiling;
554c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
555c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkPhysicalDeviceType {
556c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,
557c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,
558c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,
559c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,
560c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PHYSICAL_DEVICE_TYPE_CPU = 4,
561c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PHYSICAL_DEVICE_TYPE_BEGIN_RANGE = VK_PHYSICAL_DEVICE_TYPE_OTHER,
562c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PHYSICAL_DEVICE_TYPE_END_RANGE = VK_PHYSICAL_DEVICE_TYPE_CPU,
563c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PHYSICAL_DEVICE_TYPE_RANGE_SIZE = (VK_PHYSICAL_DEVICE_TYPE_CPU - VK_PHYSICAL_DEVICE_TYPE_OTHER + 1),
564c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF
565c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDeviceType;
566c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
567c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkQueryType {
568c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_TYPE_OCCLUSION = 0,
569c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
570c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_TYPE_TIMESTAMP = 2,
571c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION,
572c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_TYPE_END_RANGE = VK_QUERY_TYPE_TIMESTAMP,
573c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_TYPE_RANGE_SIZE = (VK_QUERY_TYPE_TIMESTAMP - VK_QUERY_TYPE_OCCLUSION + 1),
574c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF
575c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkQueryType;
576c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
577c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkSharingMode {
578c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SHARING_MODE_EXCLUSIVE = 0,
579c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SHARING_MODE_CONCURRENT = 1,
580c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SHARING_MODE_BEGIN_RANGE = VK_SHARING_MODE_EXCLUSIVE,
581c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SHARING_MODE_END_RANGE = VK_SHARING_MODE_CONCURRENT,
582c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SHARING_MODE_RANGE_SIZE = (VK_SHARING_MODE_CONCURRENT - VK_SHARING_MODE_EXCLUSIVE + 1),
583c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF
584c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSharingMode;
585c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
586c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkImageLayout {
587c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_LAYOUT_UNDEFINED = 0,
588c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_LAYOUT_GENERAL = 1,
589c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,
590c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
591c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
592c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,
593c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,
594c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
595c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
596c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
597c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED,
598c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_PREINITIALIZED,
599c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_LAYOUT_RANGE_SIZE = (VK_IMAGE_LAYOUT_PREINITIALIZED - VK_IMAGE_LAYOUT_UNDEFINED + 1),
600c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF
601c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImageLayout;
602c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
603c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkImageViewType {
604c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_VIEW_TYPE_1D = 0,
605c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_VIEW_TYPE_2D = 1,
606c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_VIEW_TYPE_3D = 2,
607c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_VIEW_TYPE_CUBE = 3,
608c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4,
609c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5,
610c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6,
611c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_VIEW_TYPE_BEGIN_RANGE = VK_IMAGE_VIEW_TYPE_1D,
612c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_VIEW_TYPE_END_RANGE = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY,
613c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_VIEW_TYPE_RANGE_SIZE = (VK_IMAGE_VIEW_TYPE_CUBE_ARRAY - VK_IMAGE_VIEW_TYPE_1D + 1),
614c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF
615c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImageViewType;
616c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
617c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkComponentSwizzle {
618c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPONENT_SWIZZLE_IDENTITY = 0,
619c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPONENT_SWIZZLE_ZERO = 1,
620c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPONENT_SWIZZLE_ONE = 2,
621c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPONENT_SWIZZLE_R = 3,
622c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPONENT_SWIZZLE_G = 4,
623c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPONENT_SWIZZLE_B = 5,
624c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPONENT_SWIZZLE_A = 6,
625c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPONENT_SWIZZLE_BEGIN_RANGE = VK_COMPONENT_SWIZZLE_IDENTITY,
626c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPONENT_SWIZZLE_END_RANGE = VK_COMPONENT_SWIZZLE_A,
627c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPONENT_SWIZZLE_RANGE_SIZE = (VK_COMPONENT_SWIZZLE_A - VK_COMPONENT_SWIZZLE_IDENTITY + 1),
628c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF
629c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkComponentSwizzle;
630c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
631c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkVertexInputRate {
632c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VERTEX_INPUT_RATE_VERTEX = 0,
633c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VERTEX_INPUT_RATE_INSTANCE = 1,
634c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VERTEX_INPUT_RATE_BEGIN_RANGE = VK_VERTEX_INPUT_RATE_VERTEX,
635c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VERTEX_INPUT_RATE_END_RANGE = VK_VERTEX_INPUT_RATE_INSTANCE,
636c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VERTEX_INPUT_RATE_RANGE_SIZE = (VK_VERTEX_INPUT_RATE_INSTANCE - VK_VERTEX_INPUT_RATE_VERTEX + 1),
637c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF
638c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkVertexInputRate;
639c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
640c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkPrimitiveTopology {
641c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
642c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,
643c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,
644c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,
645c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,
646c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,
647c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,
648c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
649c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
650c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
651c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,
652c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
653c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRIMITIVE_TOPOLOGY_END_RANGE = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST,
654c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRIMITIVE_TOPOLOGY_RANGE_SIZE = (VK_PRIMITIVE_TOPOLOGY_PATCH_LIST - VK_PRIMITIVE_TOPOLOGY_POINT_LIST + 1),
655c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF
656c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPrimitiveTopology;
657c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
658c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkPolygonMode {
659c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_POLYGON_MODE_FILL = 0,
660c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_POLYGON_MODE_LINE = 1,
661c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_POLYGON_MODE_POINT = 2,
662c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_POLYGON_MODE_BEGIN_RANGE = VK_POLYGON_MODE_FILL,
663c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_POLYGON_MODE_END_RANGE = VK_POLYGON_MODE_POINT,
664c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_POLYGON_MODE_RANGE_SIZE = (VK_POLYGON_MODE_POINT - VK_POLYGON_MODE_FILL + 1),
665c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF
666c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPolygonMode;
667c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
668c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkFrontFace {
669c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
670c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FRONT_FACE_CLOCKWISE = 1,
671c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FRONT_FACE_BEGIN_RANGE = VK_FRONT_FACE_COUNTER_CLOCKWISE,
672c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FRONT_FACE_END_RANGE = VK_FRONT_FACE_CLOCKWISE,
673c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FRONT_FACE_RANGE_SIZE = (VK_FRONT_FACE_CLOCKWISE - VK_FRONT_FACE_COUNTER_CLOCKWISE + 1),
674c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF
675c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkFrontFace;
676c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
677c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkCompareOp {
678c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPARE_OP_NEVER = 0,
679c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPARE_OP_LESS = 1,
680c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPARE_OP_EQUAL = 2,
681c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPARE_OP_LESS_OR_EQUAL = 3,
682c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPARE_OP_GREATER = 4,
683c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPARE_OP_NOT_EQUAL = 5,
684c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPARE_OP_GREATER_OR_EQUAL = 6,
685c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPARE_OP_ALWAYS = 7,
686c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPARE_OP_BEGIN_RANGE = VK_COMPARE_OP_NEVER,
687c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPARE_OP_END_RANGE = VK_COMPARE_OP_ALWAYS,
688c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPARE_OP_RANGE_SIZE = (VK_COMPARE_OP_ALWAYS - VK_COMPARE_OP_NEVER + 1),
689c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF
690c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkCompareOp;
691c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
692c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkStencilOp {
693c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STENCIL_OP_KEEP = 0,
694c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STENCIL_OP_ZERO = 1,
695c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STENCIL_OP_REPLACE = 2,
696c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,
697c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,
698c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STENCIL_OP_INVERT = 5,
699c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,
700c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STENCIL_OP_DECREMENT_AND_WRAP = 7,
701c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STENCIL_OP_BEGIN_RANGE = VK_STENCIL_OP_KEEP,
702c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STENCIL_OP_END_RANGE = VK_STENCIL_OP_DECREMENT_AND_WRAP,
703c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STENCIL_OP_RANGE_SIZE = (VK_STENCIL_OP_DECREMENT_AND_WRAP - VK_STENCIL_OP_KEEP + 1),
704c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF
705c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkStencilOp;
706c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
707c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkLogicOp {
708c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_LOGIC_OP_CLEAR = 0,
709c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_LOGIC_OP_AND = 1,
710c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_LOGIC_OP_AND_REVERSE = 2,
711c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_LOGIC_OP_COPY = 3,
712c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_LOGIC_OP_AND_INVERTED = 4,
713c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_LOGIC_OP_NO_OP = 5,
714c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_LOGIC_OP_XOR = 6,
715c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_LOGIC_OP_OR = 7,
716c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_LOGIC_OP_NOR = 8,
717c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_LOGIC_OP_EQUIVALENT = 9,
718c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_LOGIC_OP_INVERT = 10,
719c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_LOGIC_OP_OR_REVERSE = 11,
720c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_LOGIC_OP_COPY_INVERTED = 12,
721c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_LOGIC_OP_OR_INVERTED = 13,
722c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_LOGIC_OP_NAND = 14,
723c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_LOGIC_OP_SET = 15,
724c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_LOGIC_OP_BEGIN_RANGE = VK_LOGIC_OP_CLEAR,
725c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_LOGIC_OP_END_RANGE = VK_LOGIC_OP_SET,
726c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_LOGIC_OP_RANGE_SIZE = (VK_LOGIC_OP_SET - VK_LOGIC_OP_CLEAR + 1),
727c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF
728c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkLogicOp;
729c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
730c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkBlendFactor {
731c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_ZERO = 0,
732c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_ONE = 1,
733c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_SRC_COLOR = 2,
734c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,
735c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_DST_COLOR = 4,
736c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,
737c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_SRC_ALPHA = 6,
738c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,
739c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_DST_ALPHA = 8,
740c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,
741c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_CONSTANT_COLOR = 10,
742c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,
743c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,
744c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,
745c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,
746c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_SRC1_COLOR = 15,
747c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,
748c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_SRC1_ALPHA = 17,
749c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18,
750c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_BEGIN_RANGE = VK_BLEND_FACTOR_ZERO,
751c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_END_RANGE = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA,
752c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_RANGE_SIZE = (VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - VK_BLEND_FACTOR_ZERO + 1),
753c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF
754c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkBlendFactor;
755c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
756c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkBlendOp {
757c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_OP_ADD = 0,
758c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_OP_SUBTRACT = 1,
759c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_OP_REVERSE_SUBTRACT = 2,
760c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_OP_MIN = 3,
761c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_OP_MAX = 4,
762c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_OP_BEGIN_RANGE = VK_BLEND_OP_ADD,
763c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_OP_END_RANGE = VK_BLEND_OP_MAX,
764c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_OP_RANGE_SIZE = (VK_BLEND_OP_MAX - VK_BLEND_OP_ADD + 1),
765c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF
766c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkBlendOp;
767c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
768c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkDynamicState {
769c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DYNAMIC_STATE_VIEWPORT = 0,
770c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DYNAMIC_STATE_SCISSOR = 1,
771c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DYNAMIC_STATE_LINE_WIDTH = 2,
772c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DYNAMIC_STATE_DEPTH_BIAS = 3,
773c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,
774c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,
775c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,
776c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,
777c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
778c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000,
779c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
780c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DYNAMIC_STATE_BEGIN_RANGE = VK_DYNAMIC_STATE_VIEWPORT,
781c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DYNAMIC_STATE_END_RANGE = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
782c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DYNAMIC_STATE_RANGE_SIZE = (VK_DYNAMIC_STATE_STENCIL_REFERENCE - VK_DYNAMIC_STATE_VIEWPORT + 1),
783c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF
784c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDynamicState;
785c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
786c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkFilter {
787c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FILTER_NEAREST = 0,
788c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FILTER_LINEAR = 1,
789c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FILTER_CUBIC_IMG = 1000015000,
790c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FILTER_BEGIN_RANGE = VK_FILTER_NEAREST,
791c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FILTER_END_RANGE = VK_FILTER_LINEAR,
792c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FILTER_RANGE_SIZE = (VK_FILTER_LINEAR - VK_FILTER_NEAREST + 1),
793c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FILTER_MAX_ENUM = 0x7FFFFFFF
794c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkFilter;
795c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
796c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkSamplerMipmapMode {
797c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLER_MIPMAP_MODE_NEAREST = 0,
798c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLER_MIPMAP_MODE_LINEAR = 1,
799c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLER_MIPMAP_MODE_BEGIN_RANGE = VK_SAMPLER_MIPMAP_MODE_NEAREST,
800c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLER_MIPMAP_MODE_END_RANGE = VK_SAMPLER_MIPMAP_MODE_LINEAR,
801c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLER_MIPMAP_MODE_RANGE_SIZE = (VK_SAMPLER_MIPMAP_MODE_LINEAR - VK_SAMPLER_MIPMAP_MODE_NEAREST + 1),
802c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF
803c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSamplerMipmapMode;
804c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
805c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkSamplerAddressMode {
806c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
807c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
808c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
809c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
810c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
811c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE = VK_SAMPLER_ADDRESS_MODE_REPEAT,
812c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLER_ADDRESS_MODE_END_RANGE = VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER,
813c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLER_ADDRESS_MODE_RANGE_SIZE = (VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER - VK_SAMPLER_ADDRESS_MODE_REPEAT + 1),
814c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
815c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSamplerAddressMode;
816c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
817c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkBorderColor {
818c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
819c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,
820c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,
821c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,
822c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,
823c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5,
824c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BORDER_COLOR_BEGIN_RANGE = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
825c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BORDER_COLOR_END_RANGE = VK_BORDER_COLOR_INT_OPAQUE_WHITE,
826c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BORDER_COLOR_RANGE_SIZE = (VK_BORDER_COLOR_INT_OPAQUE_WHITE - VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK + 1),
827c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF
828c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkBorderColor;
829c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
830c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkDescriptorType {
831c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_TYPE_SAMPLER = 0,
832c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1,
833c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2,
834c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3,
835c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4,
836c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5,
837c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6,
838c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7,
839c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8,
840c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9,
841c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10,
842c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_TYPE_BEGIN_RANGE = VK_DESCRIPTOR_TYPE_SAMPLER,
843c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_TYPE_END_RANGE = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
844c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_TYPE_RANGE_SIZE = (VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT - VK_DESCRIPTOR_TYPE_SAMPLER + 1),
845c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF
846c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDescriptorType;
847c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
848c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkAttachmentLoadOp {
849c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ATTACHMENT_LOAD_OP_LOAD = 0,
850c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
851c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
852c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE = VK_ATTACHMENT_LOAD_OP_LOAD,
853c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ATTACHMENT_LOAD_OP_END_RANGE = VK_ATTACHMENT_LOAD_OP_DONT_CARE,
854c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ATTACHMENT_LOAD_OP_RANGE_SIZE = (VK_ATTACHMENT_LOAD_OP_DONT_CARE - VK_ATTACHMENT_LOAD_OP_LOAD + 1),
855c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF
856c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkAttachmentLoadOp;
857c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
858c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkAttachmentStoreOp {
859c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ATTACHMENT_STORE_OP_STORE = 0,
860c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,
861c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ATTACHMENT_STORE_OP_BEGIN_RANGE = VK_ATTACHMENT_STORE_OP_STORE,
862c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ATTACHMENT_STORE_OP_END_RANGE = VK_ATTACHMENT_STORE_OP_DONT_CARE,
863c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ATTACHMENT_STORE_OP_RANGE_SIZE = (VK_ATTACHMENT_STORE_OP_DONT_CARE - VK_ATTACHMENT_STORE_OP_STORE + 1),
864c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF
865c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkAttachmentStoreOp;
866c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
867c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkPipelineBindPoint {
868c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
869c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_BIND_POINT_COMPUTE = 1,
870c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_BIND_POINT_BEGIN_RANGE = VK_PIPELINE_BIND_POINT_GRAPHICS,
871c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_BIND_POINT_END_RANGE = VK_PIPELINE_BIND_POINT_COMPUTE,
872c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_BIND_POINT_RANGE_SIZE = (VK_PIPELINE_BIND_POINT_COMPUTE - VK_PIPELINE_BIND_POINT_GRAPHICS + 1),
873c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF
874c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineBindPoint;
875c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
876c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkCommandBufferLevel {
877c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
878c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,
879c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMMAND_BUFFER_LEVEL_BEGIN_RANGE = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
880c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMMAND_BUFFER_LEVEL_END_RANGE = VK_COMMAND_BUFFER_LEVEL_SECONDARY,
881c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMMAND_BUFFER_LEVEL_RANGE_SIZE = (VK_COMMAND_BUFFER_LEVEL_SECONDARY - VK_COMMAND_BUFFER_LEVEL_PRIMARY + 1),
882c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF
883c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkCommandBufferLevel;
884c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
885c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkIndexType {
886c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDEX_TYPE_UINT16 = 0,
887c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDEX_TYPE_UINT32 = 1,
888c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDEX_TYPE_BEGIN_RANGE = VK_INDEX_TYPE_UINT16,
889c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDEX_TYPE_END_RANGE = VK_INDEX_TYPE_UINT32,
890c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDEX_TYPE_RANGE_SIZE = (VK_INDEX_TYPE_UINT32 - VK_INDEX_TYPE_UINT16 + 1),
891c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF
892c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkIndexType;
893c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
894c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkSubpassContents {
895c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SUBPASS_CONTENTS_INLINE = 0,
896c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
897c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SUBPASS_CONTENTS_BEGIN_RANGE = VK_SUBPASS_CONTENTS_INLINE,
898c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SUBPASS_CONTENTS_END_RANGE = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS,
899c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SUBPASS_CONTENTS_RANGE_SIZE = (VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS - VK_SUBPASS_CONTENTS_INLINE + 1),
900c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF
901c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSubpassContents;
902c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
903c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkInstanceCreateFlags;
904c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
905c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkFormatFeatureFlagBits {
906c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
907c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002,
908c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004,
909c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008,
910c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010,
911c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020,
912c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040,
913c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080,
914c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100,
915c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200,
916c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400,
917c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800,
918c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
919c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
920c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 0x00004000,
921c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 0x00008000,
922c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FORMAT_FEATURE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
923c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkFormatFeatureFlagBits;
924c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkFormatFeatureFlags;
925c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
926c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkImageUsageFlagBits {
927c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001,
928c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002,
929c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004,
930c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008,
931c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010,
932c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020,
933c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040,
934c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080,
935c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
936c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImageUsageFlagBits;
937c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkImageUsageFlags;
938c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
939c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkImageCreateFlagBits {
940c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001,
941c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
942c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
943c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008,
944c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010,
945c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_CREATE_BIND_SFR_BIT_KHX = 0x00000040,
946c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 0x00000020,
947c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
948c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImageCreateFlagBits;
949c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkImageCreateFlags;
950c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
951c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkSampleCountFlagBits {
952c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLE_COUNT_1_BIT = 0x00000001,
953c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLE_COUNT_2_BIT = 0x00000002,
954c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLE_COUNT_4_BIT = 0x00000004,
955c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLE_COUNT_8_BIT = 0x00000008,
956c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLE_COUNT_16_BIT = 0x00000010,
957c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLE_COUNT_32_BIT = 0x00000020,
958c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLE_COUNT_64_BIT = 0x00000040,
959c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SAMPLE_COUNT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
960c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSampleCountFlagBits;
961c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkSampleCountFlags;
962c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
963c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkQueueFlagBits {
964c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUEUE_GRAPHICS_BIT = 0x00000001,
965c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUEUE_COMPUTE_BIT = 0x00000002,
966c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUEUE_TRANSFER_BIT = 0x00000004,
967c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
968c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUEUE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
969c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkQueueFlagBits;
970c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkQueueFlags;
971c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
972c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkMemoryPropertyFlagBits {
973c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
974c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
975c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
976c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
977c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
978c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_MEMORY_PROPERTY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
979c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkMemoryPropertyFlagBits;
980c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkMemoryPropertyFlags;
981c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
982c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkMemoryHeapFlagBits {
983c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
984c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX = 0x00000002,
985c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_MEMORY_HEAP_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
986c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkMemoryHeapFlagBits;
987c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkMemoryHeapFlags;
988c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkDeviceCreateFlags;
989c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkDeviceQueueCreateFlags;
990c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
991c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkPipelineStageFlagBits {
992c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001,
993c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002,
994c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004,
995c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008,
996c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010,
997c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020,
998c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040,
999c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080,
1000c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100,
1001c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200,
1002c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400,
1003c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800,
1004c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000,
1005c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
1006c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_STAGE_HOST_BIT = 0x00004000,
1007c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000,
1008c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000,
1009c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000,
1010c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1011c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineStageFlagBits;
1012c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkPipelineStageFlags;
1013c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkMemoryMapFlags;
1014c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1015c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkImageAspectFlagBits {
1016c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
1017c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
1018c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
1019c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
1020c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_IMAGE_ASPECT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1021c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImageAspectFlagBits;
1022c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkImageAspectFlags;
1023c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1024c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkSparseImageFormatFlagBits {
1025c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001,
1026c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
1027c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,
1028c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SPARSE_IMAGE_FORMAT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1029c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSparseImageFormatFlagBits;
1030c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkSparseImageFormatFlags;
1031c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1032c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkSparseMemoryBindFlagBits {
1033c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
1034c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SPARSE_MEMORY_BIND_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1035c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSparseMemoryBindFlagBits;
1036c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkSparseMemoryBindFlags;
1037c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1038c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkFenceCreateFlagBits {
1039c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
1040c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1041c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkFenceCreateFlagBits;
1042c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkFenceCreateFlags;
1043c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkSemaphoreCreateFlags;
1044c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkEventCreateFlags;
1045c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkQueryPoolCreateFlags;
1046c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1047c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkQueryPipelineStatisticFlagBits {
1048c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001,
1049c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002,
1050c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004,
1051c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008,
1052c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010,
1053c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020,
1054c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040,
1055c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080,
1056c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100,
1057c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200,
1058c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400,
1059c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_PIPELINE_STATISTIC_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1060c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkQueryPipelineStatisticFlagBits;
1061c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkQueryPipelineStatisticFlags;
1062c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1063c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkQueryResultFlagBits {
1064c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_RESULT_64_BIT = 0x00000001,
1065c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_RESULT_WAIT_BIT = 0x00000002,
1066c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004,
1067c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008,
1068c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_RESULT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1069c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkQueryResultFlagBits;
1070c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkQueryResultFlags;
1071c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1072c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkBufferCreateFlagBits {
1073c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,
1074c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
1075c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
1076c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BUFFER_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1077c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkBufferCreateFlagBits;
1078c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkBufferCreateFlags;
1079c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1080c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkBufferUsageFlagBits {
1081c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001,
1082c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002,
1083c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,
1084c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008,
1085c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010,
1086c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020,
1087c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
1088c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
1089c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
1090c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1091c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkBufferUsageFlagBits;
1092c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkBufferUsageFlags;
1093c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkBufferViewCreateFlags;
1094c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkImageViewCreateFlags;
1095c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkShaderModuleCreateFlags;
1096c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkPipelineCacheCreateFlags;
1097c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1098c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkPipelineCreateFlagBits {
1099c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
1100c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
1101c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
1102c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX = 0x00000008,
1103c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_CREATE_DISPATCH_BASE_KHX = 0x00000010,
1104c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1105c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineCreateFlagBits;
1106c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkPipelineCreateFlags;
1107c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkPipelineShaderStageCreateFlags;
1108c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1109c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkShaderStageFlagBits {
1110c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
1111c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
1112c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
1113c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
1114c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
1115c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
1116c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
1117c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
1118c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SHADER_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1119c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkShaderStageFlagBits;
1120c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkPipelineVertexInputStateCreateFlags;
1121c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkPipelineInputAssemblyStateCreateFlags;
1122c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkPipelineTessellationStateCreateFlags;
1123c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkPipelineViewportStateCreateFlags;
1124c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkPipelineRasterizationStateCreateFlags;
1125c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1126c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkCullModeFlagBits {
1127c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_CULL_MODE_NONE = 0,
1128c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_CULL_MODE_FRONT_BIT = 0x00000001,
1129c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_CULL_MODE_BACK_BIT = 0x00000002,
1130c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
1131c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_CULL_MODE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1132c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkCullModeFlagBits;
1133c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkCullModeFlags;
1134c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkPipelineMultisampleStateCreateFlags;
1135c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkPipelineDepthStencilStateCreateFlags;
1136c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkPipelineColorBlendStateCreateFlags;
1137c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1138c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkColorComponentFlagBits {
1139c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_COMPONENT_R_BIT = 0x00000001,
1140c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_COMPONENT_G_BIT = 0x00000002,
1141c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_COMPONENT_B_BIT = 0x00000004,
1142c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_COMPONENT_A_BIT = 0x00000008,
1143c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_COMPONENT_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1144c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkColorComponentFlagBits;
1145c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkColorComponentFlags;
1146c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkPipelineDynamicStateCreateFlags;
1147c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkPipelineLayoutCreateFlags;
1148c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkShaderStageFlags;
1149c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkSamplerCreateFlags;
1150c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1151c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkDescriptorSetLayoutCreateFlagBits {
1152c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
1153c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_SET_LAYOUT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1154c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDescriptorSetLayoutCreateFlagBits;
1155c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkDescriptorSetLayoutCreateFlags;
1156c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1157c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkDescriptorPoolCreateFlagBits {
1158c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
1159c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1160c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDescriptorPoolCreateFlagBits;
1161c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkDescriptorPoolCreateFlags;
1162c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkDescriptorPoolResetFlags;
1163c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkFramebufferCreateFlags;
1164c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkRenderPassCreateFlags;
1165c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1166c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkAttachmentDescriptionFlagBits {
1167c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
1168c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1169c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkAttachmentDescriptionFlagBits;
1170c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkAttachmentDescriptionFlags;
1171c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1172c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkSubpassDescriptionFlagBits {
1173c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001,
1174c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,
1175c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1176c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSubpassDescriptionFlagBits;
1177c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkSubpassDescriptionFlags;
1178c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1179c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkAccessFlagBits {
1180c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
1181c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ACCESS_INDEX_READ_BIT = 0x00000002,
1182c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
1183c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
1184c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
1185c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ACCESS_SHADER_READ_BIT = 0x00000020,
1186c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
1187c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
1188c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
1189c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
1190c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
1191c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
1192c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
1193c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ACCESS_HOST_READ_BIT = 0x00002000,
1194c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
1195c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
1196c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
1197c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000,
1198c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000,
1199c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1200c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkAccessFlagBits;
1201c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkAccessFlags;
1202c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1203c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkDependencyFlagBits {
1204c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
1205c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX = 0x00000002,
1206c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX = 0x00000004,
1207c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEPENDENCY_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1208c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDependencyFlagBits;
1209c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkDependencyFlags;
1210c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1211c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkCommandPoolCreateFlagBits {
1212c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001,
1213c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
1214c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMMAND_POOL_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1215c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkCommandPoolCreateFlagBits;
1216c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkCommandPoolCreateFlags;
1217c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1218c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkCommandPoolResetFlagBits {
1219c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
1220c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMMAND_POOL_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1221c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkCommandPoolResetFlagBits;
1222c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkCommandPoolResetFlags;
1223c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1224c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkCommandBufferUsageFlagBits {
1225c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
1226c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
1227c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
1228c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMMAND_BUFFER_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1229c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkCommandBufferUsageFlagBits;
1230c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkCommandBufferUsageFlags;
1231c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1232c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkQueryControlFlagBits {
1233c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
1234c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1235c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkQueryControlFlagBits;
1236c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkQueryControlFlags;
1237c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1238c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkCommandBufferResetFlagBits {
1239c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
1240c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMMAND_BUFFER_RESET_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1241c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkCommandBufferResetFlagBits;
1242c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkCommandBufferResetFlags;
1243c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1244c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkStencilFaceFlagBits {
1245c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
1246c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STENCIL_FACE_BACK_BIT = 0x00000002,
1247c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STENCIL_FRONT_AND_BACK = 0x00000003,
1248c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_STENCIL_FACE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF
1249c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkStencilFaceFlagBits;
1250c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkStencilFaceFlags;
1251c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1252c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(
1253c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                                       pUserData,
1254c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    size_t                                      size,
1255c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    size_t                                      alignment,
1256c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSystemAllocationScope                     allocationScope);
1257c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1258c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void* (VKAPI_PTR *PFN_vkReallocationFunction)(
1259c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                                       pUserData,
1260c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                                       pOriginal,
1261c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    size_t                                      size,
1262c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    size_t                                      alignment,
1263c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSystemAllocationScope                     allocationScope);
1264c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1265c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkFreeFunction)(
1266c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                                       pUserData,
1267c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                                       pMemory);
1268c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1269c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)(
1270c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                                       pUserData,
1271c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    size_t                                      size,
1272c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkInternalAllocationType                    allocationType,
1273c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSystemAllocationScope                     allocationScope);
1274c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1275c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)(
1276c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                                       pUserData,
1277c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    size_t                                      size,
1278c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkInternalAllocationType                    allocationType,
1279c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSystemAllocationScope                     allocationScope);
1280c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1281c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkVoidFunction)(void);
1282c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1283c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkApplicationInfo {
1284c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
1285c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
1286c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const char*        pApplicationName;
1287c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           applicationVersion;
1288c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const char*        pEngineName;
1289c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           engineVersion;
1290c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           apiVersion;
1291c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkApplicationInfo;
1292c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1293c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkInstanceCreateInfo {
1294c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType             sType;
1295c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                 pNext;
1296c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkInstanceCreateFlags       flags;
1297c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkApplicationInfo*    pApplicationInfo;
1298c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                    enabledLayerCount;
1299c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const char* const*          ppEnabledLayerNames;
1300c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                    enabledExtensionCount;
1301c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const char* const*          ppEnabledExtensionNames;
1302c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkInstanceCreateInfo;
1303c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1304c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkAllocationCallbacks {
1305c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                                   pUserData;
1306c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    PFN_vkAllocationFunction                pfnAllocation;
1307c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    PFN_vkReallocationFunction              pfnReallocation;
1308c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    PFN_vkFreeFunction                      pfnFree;
1309c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    PFN_vkInternalAllocationNotification    pfnInternalAllocation;
1310c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    PFN_vkInternalFreeNotification          pfnInternalFree;
1311c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkAllocationCallbacks;
1312c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1313c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPhysicalDeviceFeatures {
1314c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    robustBufferAccess;
1315c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    fullDrawIndexUint32;
1316c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    imageCubeArray;
1317c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    independentBlend;
1318c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    geometryShader;
1319c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    tessellationShader;
1320c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    sampleRateShading;
1321c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    dualSrcBlend;
1322c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    logicOp;
1323c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    multiDrawIndirect;
1324c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    drawIndirectFirstInstance;
1325c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    depthClamp;
1326c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    depthBiasClamp;
1327c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    fillModeNonSolid;
1328c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    depthBounds;
1329c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    wideLines;
1330c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    largePoints;
1331c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    alphaToOne;
1332c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    multiViewport;
1333c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    samplerAnisotropy;
1334c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    textureCompressionETC2;
1335c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    textureCompressionASTC_LDR;
1336c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    textureCompressionBC;
1337c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    occlusionQueryPrecise;
1338c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    pipelineStatisticsQuery;
1339c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    vertexPipelineStoresAndAtomics;
1340c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    fragmentStoresAndAtomics;
1341c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    shaderTessellationAndGeometryPointSize;
1342c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    shaderImageGatherExtended;
1343c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    shaderStorageImageExtendedFormats;
1344c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    shaderStorageImageMultisample;
1345c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    shaderStorageImageReadWithoutFormat;
1346c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    shaderStorageImageWriteWithoutFormat;
1347c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    shaderUniformBufferArrayDynamicIndexing;
1348c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    shaderSampledImageArrayDynamicIndexing;
1349c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    shaderStorageBufferArrayDynamicIndexing;
1350c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    shaderStorageImageArrayDynamicIndexing;
1351c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    shaderClipDistance;
1352c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    shaderCullDistance;
1353c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    shaderFloat64;
1354c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    shaderInt64;
1355c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    shaderInt16;
1356c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    shaderResourceResidency;
1357c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    shaderResourceMinLod;
1358c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    sparseBinding;
1359c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    sparseResidencyBuffer;
1360c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    sparseResidencyImage2D;
1361c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    sparseResidencyImage3D;
1362c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    sparseResidency2Samples;
1363c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    sparseResidency4Samples;
1364c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    sparseResidency8Samples;
1365c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    sparseResidency16Samples;
1366c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    sparseResidencyAliased;
1367c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    variableMultisampleRate;
1368c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    inheritedQueries;
1369c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDeviceFeatures;
1370c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1371c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkFormatProperties {
1372c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFormatFeatureFlags    linearTilingFeatures;
1373c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFormatFeatureFlags    optimalTilingFeatures;
1374c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFormatFeatureFlags    bufferFeatures;
1375c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkFormatProperties;
1376c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1377c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkExtent3D {
1378c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    width;
1379c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    height;
1380c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    depth;
1381c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkExtent3D;
1382c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1383c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkImageFormatProperties {
1384c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent3D            maxExtent;
1385c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxMipLevels;
1386c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxArrayLayers;
1387c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSampleCountFlags    sampleCounts;
1388c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize          maxResourceSize;
1389c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImageFormatProperties;
1390c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1391c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPhysicalDeviceLimits {
1392c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxImageDimension1D;
1393c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxImageDimension2D;
1394c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxImageDimension3D;
1395c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxImageDimensionCube;
1396c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxImageArrayLayers;
1397c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxTexelBufferElements;
1398c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxUniformBufferRange;
1399c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxStorageBufferRange;
1400c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxPushConstantsSize;
1401c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxMemoryAllocationCount;
1402c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxSamplerAllocationCount;
1403c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize          bufferImageGranularity;
1404c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize          sparseAddressSpaceSize;
1405c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxBoundDescriptorSets;
1406c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxPerStageDescriptorSamplers;
1407c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxPerStageDescriptorUniformBuffers;
1408c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxPerStageDescriptorStorageBuffers;
1409c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxPerStageDescriptorSampledImages;
1410c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxPerStageDescriptorStorageImages;
1411c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxPerStageDescriptorInputAttachments;
1412c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxPerStageResources;
1413c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxDescriptorSetSamplers;
1414c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxDescriptorSetUniformBuffers;
1415c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxDescriptorSetUniformBuffersDynamic;
1416c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxDescriptorSetStorageBuffers;
1417c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxDescriptorSetStorageBuffersDynamic;
1418c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxDescriptorSetSampledImages;
1419c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxDescriptorSetStorageImages;
1420c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxDescriptorSetInputAttachments;
1421c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxVertexInputAttributes;
1422c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxVertexInputBindings;
1423c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxVertexInputAttributeOffset;
1424c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxVertexInputBindingStride;
1425c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxVertexOutputComponents;
1426c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxTessellationGenerationLevel;
1427c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxTessellationPatchSize;
1428c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxTessellationControlPerVertexInputComponents;
1429c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxTessellationControlPerVertexOutputComponents;
1430c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxTessellationControlPerPatchOutputComponents;
1431c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxTessellationControlTotalOutputComponents;
1432c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxTessellationEvaluationInputComponents;
1433c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxTessellationEvaluationOutputComponents;
1434c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxGeometryShaderInvocations;
1435c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxGeometryInputComponents;
1436c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxGeometryOutputComponents;
1437c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxGeometryOutputVertices;
1438c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxGeometryTotalOutputComponents;
1439c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxFragmentInputComponents;
1440c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxFragmentOutputAttachments;
1441c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxFragmentDualSrcAttachments;
1442c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxFragmentCombinedOutputResources;
1443c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxComputeSharedMemorySize;
1444c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxComputeWorkGroupCount[3];
1445c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxComputeWorkGroupInvocations;
1446c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxComputeWorkGroupSize[3];
1447c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              subPixelPrecisionBits;
1448c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              subTexelPrecisionBits;
1449c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              mipmapPrecisionBits;
1450c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxDrawIndexedIndexValue;
1451c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxDrawIndirectCount;
1452c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                 maxSamplerLodBias;
1453c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                 maxSamplerAnisotropy;
1454c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxViewports;
1455c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxViewportDimensions[2];
1456c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                 viewportBoundsRange[2];
1457c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              viewportSubPixelBits;
1458c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    size_t                minMemoryMapAlignment;
1459c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize          minTexelBufferOffsetAlignment;
1460c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize          minUniformBufferOffsetAlignment;
1461c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize          minStorageBufferOffsetAlignment;
1462c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    int32_t               minTexelOffset;
1463c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxTexelOffset;
1464c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    int32_t               minTexelGatherOffset;
1465c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxTexelGatherOffset;
1466c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                 minInterpolationOffset;
1467c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                 maxInterpolationOffset;
1468c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              subPixelInterpolationOffsetBits;
1469c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxFramebufferWidth;
1470c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxFramebufferHeight;
1471c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxFramebufferLayers;
1472c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSampleCountFlags    framebufferColorSampleCounts;
1473c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSampleCountFlags    framebufferDepthSampleCounts;
1474c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSampleCountFlags    framebufferStencilSampleCounts;
1475c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSampleCountFlags    framebufferNoAttachmentsSampleCounts;
1476c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxColorAttachments;
1477c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSampleCountFlags    sampledImageColorSampleCounts;
1478c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSampleCountFlags    sampledImageIntegerSampleCounts;
1479c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSampleCountFlags    sampledImageDepthSampleCounts;
1480c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSampleCountFlags    sampledImageStencilSampleCounts;
1481c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSampleCountFlags    storageImageSampleCounts;
1482c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxSampleMaskWords;
1483c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32              timestampComputeAndGraphics;
1484c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                 timestampPeriod;
1485c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxClipDistances;
1486c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxCullDistances;
1487c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              maxCombinedClipAndCullDistances;
1488c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              discreteQueuePriorities;
1489c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                 pointSizeRange[2];
1490c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                 lineWidthRange[2];
1491c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                 pointSizeGranularity;
1492c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                 lineWidthGranularity;
1493c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32              strictLines;
1494c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32              standardSampleLocations;
1495c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize          optimalBufferCopyOffsetAlignment;
1496c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize          optimalBufferCopyRowPitchAlignment;
1497c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize          nonCoherentAtomSize;
1498c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDeviceLimits;
1499c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1500c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPhysicalDeviceSparseProperties {
1501c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    residencyStandard2DBlockShape;
1502c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    residencyStandard2DMultisampleBlockShape;
1503c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    residencyStandard3DBlockShape;
1504c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    residencyAlignedMipSize;
1505c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32    residencyNonResidentStrict;
1506c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDeviceSparseProperties;
1507c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1508c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPhysicalDeviceProperties {
1509c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                            apiVersion;
1510c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                            driverVersion;
1511c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                            vendorID;
1512c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                            deviceID;
1513c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDeviceType                deviceType;
1514c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    char                                deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
1515c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint8_t                             pipelineCacheUUID[VK_UUID_SIZE];
1516c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDeviceLimits              limits;
1517c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDeviceSparseProperties    sparseProperties;
1518c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDeviceProperties;
1519c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1520c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkQueueFamilyProperties {
1521c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueueFlags    queueFlags;
1522c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t        queueCount;
1523c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t        timestampValidBits;
1524c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent3D      minImageTransferGranularity;
1525c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkQueueFamilyProperties;
1526c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1527c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkMemoryType {
1528c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkMemoryPropertyFlags    propertyFlags;
1529c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                 heapIndex;
1530c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkMemoryType;
1531c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1532c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkMemoryHeap {
1533c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize         size;
1534c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkMemoryHeapFlags    flags;
1535c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkMemoryHeap;
1536c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1537c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPhysicalDeviceMemoryProperties {
1538c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t        memoryTypeCount;
1539c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkMemoryType    memoryTypes[VK_MAX_MEMORY_TYPES];
1540c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t        memoryHeapCount;
1541c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkMemoryHeap    memoryHeaps[VK_MAX_MEMORY_HEAPS];
1542c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDeviceMemoryProperties;
1543c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1544c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDeviceQueueCreateInfo {
1545c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType             sType;
1546c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                 pNext;
1547c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceQueueCreateFlags    flags;
1548c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                    queueFamilyIndex;
1549c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                    queueCount;
1550c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const float*                pQueuePriorities;
1551c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDeviceQueueCreateInfo;
1552c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1553c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDeviceCreateInfo {
1554c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                    sType;
1555c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                        pNext;
1556c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceCreateFlags                flags;
1557c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                           queueCreateInfoCount;
1558c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDeviceQueueCreateInfo*     pQueueCreateInfos;
1559c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                           enabledLayerCount;
1560c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const char* const*                 ppEnabledLayerNames;
1561c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                           enabledExtensionCount;
1562c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const char* const*                 ppEnabledExtensionNames;
1563c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPhysicalDeviceFeatures*    pEnabledFeatures;
1564c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDeviceCreateInfo;
1565c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1566c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkExtensionProperties {
1567c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    char        extensionName[VK_MAX_EXTENSION_NAME_SIZE];
1568c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    specVersion;
1569c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkExtensionProperties;
1570c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1571c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkLayerProperties {
1572c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    char        layerName[VK_MAX_EXTENSION_NAME_SIZE];
1573c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    specVersion;
1574c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    implementationVersion;
1575c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    char        description[VK_MAX_DESCRIPTION_SIZE];
1576c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkLayerProperties;
1577c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1578c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSubmitInfo {
1579c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                sType;
1580c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                    pNext;
1581c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                       waitSemaphoreCount;
1582c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSemaphore*             pWaitSemaphores;
1583c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPipelineStageFlags*    pWaitDstStageMask;
1584c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                       commandBufferCount;
1585c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkCommandBuffer*         pCommandBuffers;
1586c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                       signalSemaphoreCount;
1587c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSemaphore*             pSignalSemaphores;
1588c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSubmitInfo;
1589c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1590c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkMemoryAllocateInfo {
1591c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
1592c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
1593c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize       allocationSize;
1594c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           memoryTypeIndex;
1595c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkMemoryAllocateInfo;
1596c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1597c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkMappedMemoryRange {
1598c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
1599c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
1600c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceMemory     memory;
1601c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize       offset;
1602c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize       size;
1603c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkMappedMemoryRange;
1604c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1605c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkMemoryRequirements {
1606c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize    size;
1607c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize    alignment;
1608c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t        memoryTypeBits;
1609c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkMemoryRequirements;
1610c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1611c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSparseImageFormatProperties {
1612c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageAspectFlags          aspectMask;
1613c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent3D                  imageGranularity;
1614c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSparseImageFormatFlags    flags;
1615c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSparseImageFormatProperties;
1616c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1617c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSparseImageMemoryRequirements {
1618c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSparseImageFormatProperties    formatProperties;
1619c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                         imageMipTailFirstLod;
1620c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                     imageMipTailSize;
1621c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                     imageMipTailOffset;
1622c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                     imageMipTailStride;
1623c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSparseImageMemoryRequirements;
1624c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1625c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSparseMemoryBind {
1626c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize               resourceOffset;
1627c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize               size;
1628c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceMemory             memory;
1629c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize               memoryOffset;
1630c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSparseMemoryBindFlags    flags;
1631c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSparseMemoryBind;
1632c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1633c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSparseBufferMemoryBindInfo {
1634c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                     buffer;
1635c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                     bindCount;
1636c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSparseMemoryBind*    pBinds;
1637c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSparseBufferMemoryBindInfo;
1638c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1639c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSparseImageOpaqueMemoryBindInfo {
1640c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage                      image;
1641c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                     bindCount;
1642c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSparseMemoryBind*    pBinds;
1643c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSparseImageOpaqueMemoryBindInfo;
1644c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1645c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkImageSubresource {
1646c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageAspectFlags    aspectMask;
1647c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              mipLevel;
1648c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              arrayLayer;
1649c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImageSubresource;
1650c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1651c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkOffset3D {
1652c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    int32_t    x;
1653c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    int32_t    y;
1654c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    int32_t    z;
1655c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkOffset3D;
1656c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1657c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSparseImageMemoryBind {
1658c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageSubresource         subresource;
1659c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkOffset3D                 offset;
1660c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent3D                 extent;
1661c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceMemory             memory;
1662c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize               memoryOffset;
1663c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSparseMemoryBindFlags    flags;
1664c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSparseImageMemoryBind;
1665c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1666c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSparseImageMemoryBindInfo {
1667c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage                           image;
1668c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                          bindCount;
1669c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSparseImageMemoryBind*    pBinds;
1670c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSparseImageMemoryBindInfo;
1671c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1672c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkBindSparseInfo {
1673c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                             sType;
1674c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                                 pNext;
1675c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    waitSemaphoreCount;
1676c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSemaphore*                          pWaitSemaphores;
1677c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    bufferBindCount;
1678c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSparseBufferMemoryBindInfo*         pBufferBinds;
1679c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    imageOpaqueBindCount;
1680c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSparseImageOpaqueMemoryBindInfo*    pImageOpaqueBinds;
1681c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    imageBindCount;
1682c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSparseImageMemoryBindInfo*          pImageBinds;
1683c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    signalSemaphoreCount;
1684c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSemaphore*                          pSignalSemaphores;
1685c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkBindSparseInfo;
1686c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1687c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkFenceCreateInfo {
1688c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType       sType;
1689c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*           pNext;
1690c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFenceCreateFlags    flags;
1691c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkFenceCreateInfo;
1692c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1693c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSemaphoreCreateInfo {
1694c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType           sType;
1695c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*               pNext;
1696c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSemaphoreCreateFlags    flags;
1697c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSemaphoreCreateInfo;
1698c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1699c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkEventCreateInfo {
1700c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType       sType;
1701c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*           pNext;
1702c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkEventCreateFlags    flags;
1703c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkEventCreateInfo;
1704c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1705c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkQueryPoolCreateInfo {
1706c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                  sType;
1707c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                      pNext;
1708c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueryPoolCreateFlags           flags;
1709c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueryType                      queryType;
1710c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                         queryCount;
1711c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueryPipelineStatisticFlags    pipelineStatistics;
1712c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkQueryPoolCreateInfo;
1713c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1714c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkBufferCreateInfo {
1715c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType        sType;
1716c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*            pNext;
1717c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBufferCreateFlags    flags;
1718c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize           size;
1719c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBufferUsageFlags     usage;
1720c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSharingMode          sharingMode;
1721c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t               queueFamilyIndexCount;
1722c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const uint32_t*        pQueueFamilyIndices;
1723c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkBufferCreateInfo;
1724c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1725c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkBufferViewCreateInfo {
1726c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType            sType;
1727c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                pNext;
1728c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBufferViewCreateFlags    flags;
1729c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                   buffer;
1730c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFormat                   format;
1731c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize               offset;
1732c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize               range;
1733c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkBufferViewCreateInfo;
1734c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1735c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkImageCreateInfo {
1736c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType          sType;
1737c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*              pNext;
1738c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageCreateFlags       flags;
1739c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageType              imageType;
1740c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFormat                 format;
1741c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent3D               extent;
1742c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                 mipLevels;
1743c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                 arrayLayers;
1744c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSampleCountFlagBits    samples;
1745c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageTiling            tiling;
1746c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageUsageFlags        usage;
1747c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSharingMode            sharingMode;
1748c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                 queueFamilyIndexCount;
1749c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const uint32_t*          pQueueFamilyIndices;
1750c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageLayout            initialLayout;
1751c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImageCreateInfo;
1752c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1753c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSubresourceLayout {
1754c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize    offset;
1755c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize    size;
1756c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize    rowPitch;
1757c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize    arrayPitch;
1758c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize    depthPitch;
1759c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSubresourceLayout;
1760c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1761c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkComponentMapping {
1762c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkComponentSwizzle    r;
1763c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkComponentSwizzle    g;
1764c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkComponentSwizzle    b;
1765c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkComponentSwizzle    a;
1766c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkComponentMapping;
1767c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1768c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkImageSubresourceRange {
1769c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageAspectFlags    aspectMask;
1770c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              baseMipLevel;
1771c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              levelCount;
1772c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              baseArrayLayer;
1773c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              layerCount;
1774c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImageSubresourceRange;
1775c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1776c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkImageViewCreateInfo {
1777c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType            sType;
1778c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                pNext;
1779c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageViewCreateFlags     flags;
1780c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage                    image;
1781c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageViewType            viewType;
1782c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFormat                   format;
1783c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkComponentMapping         components;
1784c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageSubresourceRange    subresourceRange;
1785c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImageViewCreateInfo;
1786c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1787c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkShaderModuleCreateInfo {
1788c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType              sType;
1789c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                  pNext;
1790c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkShaderModuleCreateFlags    flags;
1791c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    size_t                       codeSize;
1792c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const uint32_t*              pCode;
1793c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkShaderModuleCreateInfo;
1794c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1795c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPipelineCacheCreateInfo {
1796c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType               sType;
1797c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                   pNext;
1798c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineCacheCreateFlags    flags;
1799c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    size_t                        initialDataSize;
1800c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                   pInitialData;
1801c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineCacheCreateInfo;
1802c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1803c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSpecializationMapEntry {
1804c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    constantID;
1805c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    offset;
1806c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    size_t      size;
1807c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSpecializationMapEntry;
1808c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1809c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSpecializationInfo {
1810c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                           mapEntryCount;
1811c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSpecializationMapEntry*    pMapEntries;
1812c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    size_t                             dataSize;
1813c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                        pData;
1814c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSpecializationInfo;
1815c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1816c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPipelineShaderStageCreateInfo {
1817c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                     sType;
1818c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                         pNext;
1819c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineShaderStageCreateFlags    flags;
1820c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkShaderStageFlagBits               stage;
1821c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkShaderModule                      module;
1822c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const char*                         pName;
1823c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSpecializationInfo*         pSpecializationInfo;
1824c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineShaderStageCreateInfo;
1825c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1826c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkVertexInputBindingDescription {
1827c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t             binding;
1828c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t             stride;
1829c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkVertexInputRate    inputRate;
1830c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkVertexInputBindingDescription;
1831c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1832c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkVertexInputAttributeDescription {
1833c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    location;
1834c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    binding;
1835c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFormat    format;
1836c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    offset;
1837c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkVertexInputAttributeDescription;
1838c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1839c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPipelineVertexInputStateCreateInfo {
1840c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                             sType;
1841c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                                 pNext;
1842c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineVertexInputStateCreateFlags       flags;
1843c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    vertexBindingDescriptionCount;
1844c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkVertexInputBindingDescription*      pVertexBindingDescriptions;
1845c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    vertexAttributeDescriptionCount;
1846c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkVertexInputAttributeDescription*    pVertexAttributeDescriptions;
1847c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineVertexInputStateCreateInfo;
1848c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1849c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPipelineInputAssemblyStateCreateInfo {
1850c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                            sType;
1851c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                                pNext;
1852c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineInputAssemblyStateCreateFlags    flags;
1853c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPrimitiveTopology                        topology;
1854c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                                   primitiveRestartEnable;
1855c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineInputAssemblyStateCreateInfo;
1856c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1857c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPipelineTessellationStateCreateInfo {
1858c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                           sType;
1859c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                               pNext;
1860c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineTessellationStateCreateFlags    flags;
1861c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                  patchControlPoints;
1862c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineTessellationStateCreateInfo;
1863c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1864c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkViewport {
1865c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float    x;
1866c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float    y;
1867c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float    width;
1868c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float    height;
1869c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float    minDepth;
1870c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float    maxDepth;
1871c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkViewport;
1872c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1873c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkOffset2D {
1874c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    int32_t    x;
1875c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    int32_t    y;
1876c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkOffset2D;
1877c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1878c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkExtent2D {
1879c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    width;
1880c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    height;
1881c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkExtent2D;
1882c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1883c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkRect2D {
1884c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkOffset2D    offset;
1885c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent2D    extent;
1886c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkRect2D;
1887c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1888c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPipelineViewportStateCreateInfo {
1889c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                       sType;
1890c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                           pNext;
1891c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineViewportStateCreateFlags    flags;
1892c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                              viewportCount;
1893c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkViewport*                     pViewports;
1894c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                              scissorCount;
1895c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkRect2D*                       pScissors;
1896c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineViewportStateCreateInfo;
1897c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1898c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPipelineRasterizationStateCreateInfo {
1899c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                            sType;
1900c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                                pNext;
1901c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineRasterizationStateCreateFlags    flags;
1902c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                                   depthClampEnable;
1903c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                                   rasterizerDiscardEnable;
1904c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPolygonMode                              polygonMode;
1905c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCullModeFlags                            cullMode;
1906c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFrontFace                                frontFace;
1907c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                                   depthBiasEnable;
1908c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                                      depthBiasConstantFactor;
1909c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                                      depthBiasClamp;
1910c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                                      depthBiasSlopeFactor;
1911c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                                      lineWidth;
1912c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineRasterizationStateCreateInfo;
1913c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1914c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPipelineMultisampleStateCreateInfo {
1915c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                          sType;
1916c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                              pNext;
1917c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineMultisampleStateCreateFlags    flags;
1918c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSampleCountFlagBits                    rasterizationSamples;
1919c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                                 sampleShadingEnable;
1920c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                                    minSampleShading;
1921c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSampleMask*                      pSampleMask;
1922c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                                 alphaToCoverageEnable;
1923c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                                 alphaToOneEnable;
1924c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineMultisampleStateCreateInfo;
1925c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1926c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkStencilOpState {
1927c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStencilOp    failOp;
1928c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStencilOp    passOp;
1929c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStencilOp    depthFailOp;
1930c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCompareOp    compareOp;
1931c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t       compareMask;
1932c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t       writeMask;
1933c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t       reference;
1934c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkStencilOpState;
1935c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1936c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPipelineDepthStencilStateCreateInfo {
1937c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                           sType;
1938c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                               pNext;
1939c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineDepthStencilStateCreateFlags    flags;
1940c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                                  depthTestEnable;
1941c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                                  depthWriteEnable;
1942c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCompareOp                               depthCompareOp;
1943c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                                  depthBoundsTestEnable;
1944c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                                  stencilTestEnable;
1945c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStencilOpState                          front;
1946c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStencilOpState                          back;
1947c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                                     minDepthBounds;
1948c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                                     maxDepthBounds;
1949c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineDepthStencilStateCreateInfo;
1950c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1951c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPipelineColorBlendAttachmentState {
1952c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                 blendEnable;
1953c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBlendFactor            srcColorBlendFactor;
1954c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBlendFactor            dstColorBlendFactor;
1955c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBlendOp                colorBlendOp;
1956c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBlendFactor            srcAlphaBlendFactor;
1957c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBlendFactor            dstAlphaBlendFactor;
1958c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBlendOp                alphaBlendOp;
1959c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkColorComponentFlags    colorWriteMask;
1960c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineColorBlendAttachmentState;
1961c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1962c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPipelineColorBlendStateCreateInfo {
1963c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                               sType;
1964c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                                   pNext;
1965c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineColorBlendStateCreateFlags          flags;
1966c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                                      logicOpEnable;
1967c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkLogicOp                                     logicOp;
1968c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                      attachmentCount;
1969c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPipelineColorBlendAttachmentState*    pAttachments;
1970c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                                         blendConstants[4];
1971c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineColorBlendStateCreateInfo;
1972c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1973c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPipelineDynamicStateCreateInfo {
1974c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                      sType;
1975c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                          pNext;
1976c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineDynamicStateCreateFlags    flags;
1977c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                             dynamicStateCount;
1978c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDynamicState*                pDynamicStates;
1979c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineDynamicStateCreateInfo;
1980c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
1981c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkGraphicsPipelineCreateInfo {
1982c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                                  sType;
1983c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                                      pNext;
1984c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineCreateFlags                            flags;
1985c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                         stageCount;
1986c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPipelineShaderStageCreateInfo*           pStages;
1987c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPipelineVertexInputStateCreateInfo*      pVertexInputState;
1988c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPipelineInputAssemblyStateCreateInfo*    pInputAssemblyState;
1989c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPipelineTessellationStateCreateInfo*     pTessellationState;
1990c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPipelineViewportStateCreateInfo*         pViewportState;
1991c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPipelineRasterizationStateCreateInfo*    pRasterizationState;
1992c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPipelineMultisampleStateCreateInfo*      pMultisampleState;
1993c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPipelineDepthStencilStateCreateInfo*     pDepthStencilState;
1994c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPipelineColorBlendStateCreateInfo*       pColorBlendState;
1995c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPipelineDynamicStateCreateInfo*          pDynamicState;
1996c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineLayout                                 layout;
1997c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkRenderPass                                     renderPass;
1998c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                         subpass;
1999c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipeline                                       basePipelineHandle;
2000c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    int32_t                                          basePipelineIndex;
2001c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkGraphicsPipelineCreateInfo;
2002c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2003c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkComputePipelineCreateInfo {
2004c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                    sType;
2005c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                        pNext;
2006c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineCreateFlags              flags;
2007c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineShaderStageCreateInfo    stage;
2008c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineLayout                   layout;
2009c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipeline                         basePipelineHandle;
2010c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    int32_t                            basePipelineIndex;
2011c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkComputePipelineCreateInfo;
2012c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2013c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPushConstantRange {
2014c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkShaderStageFlags    stageFlags;
2015c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              offset;
2016c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              size;
2017c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPushConstantRange;
2018c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2019c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPipelineLayoutCreateInfo {
2020c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                 sType;
2021c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                     pNext;
2022c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineLayoutCreateFlags     flags;
2023c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                        setLayoutCount;
2024c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDescriptorSetLayout*    pSetLayouts;
2025c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                        pushConstantRangeCount;
2026c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPushConstantRange*      pPushConstantRanges;
2027c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineLayoutCreateInfo;
2028c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2029c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSamplerCreateInfo {
2030c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType         sType;
2031c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*             pNext;
2032c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSamplerCreateFlags    flags;
2033c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFilter                magFilter;
2034c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFilter                minFilter;
2035c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSamplerMipmapMode     mipmapMode;
2036c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSamplerAddressMode    addressModeU;
2037c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSamplerAddressMode    addressModeV;
2038c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSamplerAddressMode    addressModeW;
2039c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                   mipLodBias;
2040c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                anisotropyEnable;
2041c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                   maxAnisotropy;
2042c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                compareEnable;
2043c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCompareOp             compareOp;
2044c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                   minLod;
2045c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                   maxLod;
2046c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBorderColor           borderColor;
2047c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                unnormalizedCoordinates;
2048c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSamplerCreateInfo;
2049c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2050c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDescriptorSetLayoutBinding {
2051c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              binding;
2052c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorType      descriptorType;
2053c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              descriptorCount;
2054c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkShaderStageFlags    stageFlags;
2055c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSampler*      pImmutableSamplers;
2056c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDescriptorSetLayoutBinding;
2057c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2058c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDescriptorSetLayoutCreateInfo {
2059c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                        sType;
2060c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                            pNext;
2061c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorSetLayoutCreateFlags       flags;
2062c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                               bindingCount;
2063c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDescriptorSetLayoutBinding*    pBindings;
2064c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDescriptorSetLayoutCreateInfo;
2065c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2066c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDescriptorPoolSize {
2067c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorType    type;
2068c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t            descriptorCount;
2069c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDescriptorPoolSize;
2070c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2071c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDescriptorPoolCreateInfo {
2072c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                sType;
2073c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                    pNext;
2074c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorPoolCreateFlags    flags;
2075c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                       maxSets;
2076c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                       poolSizeCount;
2077c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDescriptorPoolSize*    pPoolSizes;
2078c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDescriptorPoolCreateInfo;
2079c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2080c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDescriptorSetAllocateInfo {
2081c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                 sType;
2082c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                     pNext;
2083c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorPool                descriptorPool;
2084c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                        descriptorSetCount;
2085c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDescriptorSetLayout*    pSetLayouts;
2086c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDescriptorSetAllocateInfo;
2087c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2088c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDescriptorImageInfo {
2089c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSampler        sampler;
2090c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageView      imageView;
2091c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageLayout    imageLayout;
2092c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDescriptorImageInfo;
2093c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2094c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDescriptorBufferInfo {
2095c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer        buffer;
2096c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize    offset;
2097c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize    range;
2098c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDescriptorBufferInfo;
2099c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2100c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkWriteDescriptorSet {
2101c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                  sType;
2102c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                      pNext;
2103c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorSet                  dstSet;
2104c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                         dstBinding;
2105c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                         dstArrayElement;
2106c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                         descriptorCount;
2107c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorType                 descriptorType;
2108c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDescriptorImageInfo*     pImageInfo;
2109c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDescriptorBufferInfo*    pBufferInfo;
2110c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkBufferView*              pTexelBufferView;
2111c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkWriteDescriptorSet;
2112c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2113c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkCopyDescriptorSet {
2114c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
2115c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
2116c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorSet    srcSet;
2117c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           srcBinding;
2118c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           srcArrayElement;
2119c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorSet    dstSet;
2120c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           dstBinding;
2121c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           dstArrayElement;
2122c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           descriptorCount;
2123c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkCopyDescriptorSet;
2124c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2125c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkFramebufferCreateInfo {
2126c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType             sType;
2127c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                 pNext;
2128c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFramebufferCreateFlags    flags;
2129c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkRenderPass                renderPass;
2130c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                    attachmentCount;
2131c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkImageView*          pAttachments;
2132c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                    width;
2133c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                    height;
2134c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                    layers;
2135c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkFramebufferCreateInfo;
2136c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2137c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkAttachmentDescription {
2138c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkAttachmentDescriptionFlags    flags;
2139c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFormat                        format;
2140c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSampleCountFlagBits           samples;
2141c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkAttachmentLoadOp              loadOp;
2142c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkAttachmentStoreOp             storeOp;
2143c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkAttachmentLoadOp              stencilLoadOp;
2144c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkAttachmentStoreOp             stencilStoreOp;
2145c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageLayout                   initialLayout;
2146c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageLayout                   finalLayout;
2147c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkAttachmentDescription;
2148c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2149c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkAttachmentReference {
2150c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t         attachment;
2151c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageLayout    layout;
2152c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkAttachmentReference;
2153c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2154c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSubpassDescription {
2155c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSubpassDescriptionFlags       flags;
2156c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineBindPoint             pipelineBindPoint;
2157c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                        inputAttachmentCount;
2158c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAttachmentReference*    pInputAttachments;
2159c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                        colorAttachmentCount;
2160c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAttachmentReference*    pColorAttachments;
2161c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAttachmentReference*    pResolveAttachments;
2162c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAttachmentReference*    pDepthStencilAttachment;
2163c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                        preserveAttachmentCount;
2164c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const uint32_t*                 pPreserveAttachments;
2165c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSubpassDescription;
2166c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2167c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSubpassDependency {
2168c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                srcSubpass;
2169c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                dstSubpass;
2170c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineStageFlags    srcStageMask;
2171c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineStageFlags    dstStageMask;
2172c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkAccessFlags           srcAccessMask;
2173c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkAccessFlags           dstAccessMask;
2174c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDependencyFlags       dependencyFlags;
2175c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSubpassDependency;
2176c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2177c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkRenderPassCreateInfo {
2178c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                   sType;
2179c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                       pNext;
2180c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkRenderPassCreateFlags           flags;
2181c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                          attachmentCount;
2182c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAttachmentDescription*    pAttachments;
2183c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                          subpassCount;
2184c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSubpassDescription*       pSubpasses;
2185c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                          dependencyCount;
2186c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSubpassDependency*        pDependencies;
2187c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkRenderPassCreateInfo;
2188c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2189c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkCommandPoolCreateInfo {
2190c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType             sType;
2191c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                 pNext;
2192c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandPoolCreateFlags    flags;
2193c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                    queueFamilyIndex;
2194c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkCommandPoolCreateInfo;
2195c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2196c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkCommandBufferAllocateInfo {
2197c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType         sType;
2198c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*             pNext;
2199c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandPool           commandPool;
2200c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBufferLevel    level;
2201c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                commandBufferCount;
2202c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkCommandBufferAllocateInfo;
2203c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2204c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkCommandBufferInheritanceInfo {
2205c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                  sType;
2206c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                      pNext;
2207c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkRenderPass                     renderPass;
2208c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                         subpass;
2209c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFramebuffer                    framebuffer;
2210c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                         occlusionQueryEnable;
2211c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueryControlFlags              queryFlags;
2212c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueryPipelineStatisticFlags    pipelineStatistics;
2213c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkCommandBufferInheritanceInfo;
2214c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2215c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkCommandBufferBeginInfo {
2216c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                          sType;
2217c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                              pNext;
2218c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBufferUsageFlags                flags;
2219c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkCommandBufferInheritanceInfo*    pInheritanceInfo;
2220c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkCommandBufferBeginInfo;
2221c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2222c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkBufferCopy {
2223c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize    srcOffset;
2224c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize    dstOffset;
2225c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize    size;
2226c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkBufferCopy;
2227c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2228c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkImageSubresourceLayers {
2229c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageAspectFlags    aspectMask;
2230c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              mipLevel;
2231c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              baseArrayLayer;
2232c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              layerCount;
2233c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImageSubresourceLayers;
2234c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2235c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkImageCopy {
2236c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageSubresourceLayers    srcSubresource;
2237c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkOffset3D                  srcOffset;
2238c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageSubresourceLayers    dstSubresource;
2239c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkOffset3D                  dstOffset;
2240c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent3D                  extent;
2241c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImageCopy;
2242c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2243c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkImageBlit {
2244c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageSubresourceLayers    srcSubresource;
2245c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkOffset3D                  srcOffsets[2];
2246c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageSubresourceLayers    dstSubresource;
2247c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkOffset3D                  dstOffsets[2];
2248c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImageBlit;
2249c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2250c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkBufferImageCopy {
2251c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                bufferOffset;
2252c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                    bufferRowLength;
2253c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                    bufferImageHeight;
2254c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageSubresourceLayers    imageSubresource;
2255c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkOffset3D                  imageOffset;
2256c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent3D                  imageExtent;
2257c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkBufferImageCopy;
2258c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2259c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef union VkClearColorValue {
2260c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float       float32[4];
2261c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    int32_t     int32[4];
2262c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    uint32[4];
2263c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkClearColorValue;
2264c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2265c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkClearDepthStencilValue {
2266c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float       depth;
2267c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    stencil;
2268c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkClearDepthStencilValue;
2269c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2270c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef union VkClearValue {
2271c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkClearColorValue           color;
2272c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkClearDepthStencilValue    depthStencil;
2273c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkClearValue;
2274c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2275c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkClearAttachment {
2276c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageAspectFlags    aspectMask;
2277c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t              colorAttachment;
2278c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkClearValue          clearValue;
2279c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkClearAttachment;
2280c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2281c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkClearRect {
2282c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkRect2D    rect;
2283c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    baseArrayLayer;
2284c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    layerCount;
2285c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkClearRect;
2286c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2287c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkImageResolve {
2288c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageSubresourceLayers    srcSubresource;
2289c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkOffset3D                  srcOffset;
2290c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageSubresourceLayers    dstSubresource;
2291c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkOffset3D                  dstOffset;
2292c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent3D                  extent;
2293c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImageResolve;
2294c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2295c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkMemoryBarrier {
2296c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
2297c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
2298c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkAccessFlags      srcAccessMask;
2299c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkAccessFlags      dstAccessMask;
2300c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkMemoryBarrier;
2301c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2302c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkBufferMemoryBarrier {
2303c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
2304c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
2305c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkAccessFlags      srcAccessMask;
2306c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkAccessFlags      dstAccessMask;
2307c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           srcQueueFamilyIndex;
2308c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           dstQueueFamilyIndex;
2309c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer           buffer;
2310c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize       offset;
2311c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize       size;
2312c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkBufferMemoryBarrier;
2313c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2314c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkImageMemoryBarrier {
2315c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType            sType;
2316c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                pNext;
2317c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkAccessFlags              srcAccessMask;
2318c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkAccessFlags              dstAccessMask;
2319c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageLayout              oldLayout;
2320c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageLayout              newLayout;
2321c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                   srcQueueFamilyIndex;
2322c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                   dstQueueFamilyIndex;
2323c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage                    image;
2324c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageSubresourceRange    subresourceRange;
2325c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImageMemoryBarrier;
2326c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2327c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkRenderPassBeginInfo {
2328c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType        sType;
2329c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*            pNext;
2330c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkRenderPass           renderPass;
2331c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFramebuffer          framebuffer;
2332c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkRect2D               renderArea;
2333c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t               clearValueCount;
2334c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkClearValue*    pClearValues;
2335c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkRenderPassBeginInfo;
2336c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2337c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDispatchIndirectCommand {
2338c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    x;
2339c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    y;
2340c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    z;
2341c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDispatchIndirectCommand;
2342c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2343c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDrawIndexedIndirectCommand {
2344c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    indexCount;
2345c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    instanceCount;
2346c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    firstIndex;
2347c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    int32_t     vertexOffset;
2348c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    firstInstance;
2349c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDrawIndexedIndirectCommand;
2350c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2351c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDrawIndirectCommand {
2352c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    vertexCount;
2353c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    instanceCount;
2354c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    firstVertex;
2355c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    firstInstance;
2356c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDrawIndirectCommand;
2357c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2358c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2359c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
2360c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator);
2361c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
2362c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
2363c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
2364c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
2365c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
2366c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
2367c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
2368c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName);
2369c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);
2370c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
2371c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks* pAllocator);
2372c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
2373c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
2374c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties);
2375c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties);
2376c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
2377c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
2378c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkQueueWaitIdle)(VkQueue queue);
2379c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkDeviceWaitIdle)(VkDevice device);
2380c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
2381c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);
2382c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
2383c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory);
2384c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
2385c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
2386c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
2387c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
2388c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
2389c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
2390c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
2391c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
2392c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties);
2393c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
2394c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
2395c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
2396c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
2397c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);
2398c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
2399c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
2400c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
2401c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
2402c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
2403c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);
2404c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event);
2405c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event);
2406c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
2407c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator);
2408c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
2409c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
2410c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
2411c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
2412c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
2413c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
2414c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
2415c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
2416c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
2417c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
2418c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule);
2419c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator);
2420c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
2421c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
2422c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
2423c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
2424c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
2425c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
2426c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
2427c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
2428c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
2429c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
2430c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
2431c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
2432c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
2433c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
2434c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator);
2435c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
2436c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
2437c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
2438c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
2439c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
2440c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
2441c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
2442c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
2443c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
2444c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
2445c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator);
2446c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
2447c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
2448c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
2449c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
2450c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer);
2451c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
2452c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
2453c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports);
2454c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors);
2455c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth);
2456c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
2457c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]);
2458c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
2459c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask);
2460c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask);
2461c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference);
2462c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdBindDescriptorSets)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets);
2463c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
2464c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
2465c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
2466c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
2467c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
2468c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
2469c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
2470c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
2471c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
2472c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
2473c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
2474c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
2475c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
2476c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData);
2477c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data);
2478c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
2479c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
2480c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
2481c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
2482c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
2483c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
2484c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdWaitEvents)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);
2485c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier)(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers);
2486c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags);
2487c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query);
2488c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount);
2489c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query);
2490c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
2491c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues);
2492c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
2493c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents);
2494c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer);
2495c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
2496c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2497c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
2498c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
2499c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkInstanceCreateInfo*                 pCreateInfo,
2500c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2501c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkInstance*                                 pInstance);
2502c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2503c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
2504c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkInstance                                  instance,
2505c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2506c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2507c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices(
2508c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkInstance                                  instance,
2509c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pPhysicalDeviceCount,
2510c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice*                           pPhysicalDevices);
2511c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2512c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures(
2513c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
2514c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDeviceFeatures*                   pFeatures);
2515c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2516c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(
2517c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
2518c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFormat                                    format,
2519c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFormatProperties*                         pFormatProperties);
2520c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2521c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties(
2522c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
2523c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFormat                                    format,
2524c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageType                                 type,
2525c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageTiling                               tiling,
2526c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageUsageFlags                           usage,
2527c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageCreateFlags                          flags,
2528c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageFormatProperties*                    pImageFormatProperties);
2529c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2530c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties(
2531c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
2532c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDeviceProperties*                 pProperties);
2533c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2534c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties(
2535c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
2536c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pQueueFamilyPropertyCount,
2537c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueueFamilyProperties*                    pQueueFamilyProperties);
2538c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2539c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(
2540c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
2541c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDeviceMemoryProperties*           pMemoryProperties);
2542c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2543c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(
2544c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkInstance                                  instance,
2545c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const char*                                 pName);
2546c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2547c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(
2548c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2549c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const char*                                 pName);
2550c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2551c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(
2552c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
2553c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDeviceCreateInfo*                   pCreateInfo,
2554c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2555c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice*                                   pDevice);
2556c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2557c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyDevice(
2558c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2559c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2560c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2561c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties(
2562c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const char*                                 pLayerName,
2563c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pPropertyCount,
2564c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtensionProperties*                      pProperties);
2565c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2566c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties(
2567c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
2568c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const char*                                 pLayerName,
2569c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pPropertyCount,
2570c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtensionProperties*                      pProperties);
2571c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2572c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties(
2573c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pPropertyCount,
2574c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkLayerProperties*                          pProperties);
2575c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2576c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties(
2577c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
2578c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pPropertyCount,
2579c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkLayerProperties*                          pProperties);
2580c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2581c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue(
2582c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2583c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    queueFamilyIndex,
2584c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    queueIndex,
2585c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueue*                                    pQueue);
2586c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2587c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(
2588c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueue                                     queue,
2589c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    submitCount,
2590c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSubmitInfo*                         pSubmits,
2591c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFence                                     fence);
2592c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2593c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(
2594c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueue                                     queue);
2595c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2596c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(
2597c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device);
2598c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2599c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(
2600c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2601c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkMemoryAllocateInfo*                 pAllocateInfo,
2602c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2603c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceMemory*                             pMemory);
2604c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2605c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkFreeMemory(
2606c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2607c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceMemory                              memory,
2608c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2609c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2610c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(
2611c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2612c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceMemory                              memory,
2613c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                                offset,
2614c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                                size,
2615c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkMemoryMapFlags                            flags,
2616c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void**                                      ppData);
2617c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2618c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkUnmapMemory(
2619c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2620c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceMemory                              memory);
2621c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2622c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges(
2623c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2624c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    memoryRangeCount,
2625c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkMappedMemoryRange*                  pMemoryRanges);
2626c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2627c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(
2628c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2629c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    memoryRangeCount,
2630c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkMappedMemoryRange*                  pMemoryRanges);
2631c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2632c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment(
2633c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2634c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceMemory                              memory,
2635c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize*                               pCommittedMemoryInBytes);
2636c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2637c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(
2638c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2639c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                                    buffer,
2640c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceMemory                              memory,
2641c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                                memoryOffset);
2642c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2643c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(
2644c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2645c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage                                     image,
2646c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceMemory                              memory,
2647c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                                memoryOffset);
2648c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2649c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements(
2650c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2651c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                                    buffer,
2652c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkMemoryRequirements*                       pMemoryRequirements);
2653c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2654c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements(
2655c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2656c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage                                     image,
2657c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkMemoryRequirements*                       pMemoryRequirements);
2658c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2659c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements(
2660c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2661c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage                                     image,
2662c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pSparseMemoryRequirementCount,
2663c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSparseImageMemoryRequirements*            pSparseMemoryRequirements);
2664c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2665c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties(
2666c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
2667c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFormat                                    format,
2668c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageType                                 type,
2669c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSampleCountFlagBits                       samples,
2670c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageUsageFlags                           usage,
2671c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageTiling                               tiling,
2672c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pPropertyCount,
2673c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSparseImageFormatProperties*              pProperties);
2674c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2675c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse(
2676c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueue                                     queue,
2677c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    bindInfoCount,
2678c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkBindSparseInfo*                     pBindInfo,
2679c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFence                                     fence);
2680c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2681c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(
2682c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2683c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkFenceCreateInfo*                    pCreateInfo,
2684c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2685c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFence*                                    pFence);
2686c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2687c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyFence(
2688c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2689c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFence                                     fence,
2690c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2691c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2692c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkResetFences(
2693c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2694c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    fenceCount,
2695c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkFence*                              pFences);
2696c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2697c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(
2698c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2699c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFence                                     fence);
2700c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2701c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(
2702c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2703c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    fenceCount,
2704c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkFence*                              pFences,
2705c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                                    waitAll,
2706c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint64_t                                    timeout);
2707c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2708c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore(
2709c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2710c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSemaphoreCreateInfo*                pCreateInfo,
2711c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2712c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSemaphore*                                pSemaphore);
2713c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2714c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroySemaphore(
2715c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2716c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSemaphore                                 semaphore,
2717c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2718c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2719c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(
2720c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2721c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkEventCreateInfo*                    pCreateInfo,
2722c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2723c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkEvent*                                    pEvent);
2724c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2725c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyEvent(
2726c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2727c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkEvent                                     event,
2728c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2729c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2730c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus(
2731c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2732c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkEvent                                     event);
2733c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2734c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkSetEvent(
2735c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2736c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkEvent                                     event);
2737c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2738c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkResetEvent(
2739c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2740c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkEvent                                     event);
2741c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2742c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool(
2743c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2744c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkQueryPoolCreateInfo*                pCreateInfo,
2745c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2746c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueryPool*                                pQueryPool);
2747c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2748c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyQueryPool(
2749c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2750c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueryPool                                 queryPool,
2751c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2752c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2753c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults(
2754c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2755c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueryPool                                 queryPool,
2756c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    firstQuery,
2757c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    queryCount,
2758c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    size_t                                      dataSize,
2759c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                                       pData,
2760c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                                stride,
2761c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueryResultFlags                          flags);
2762c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2763c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(
2764c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2765c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkBufferCreateInfo*                   pCreateInfo,
2766c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2767c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer*                                   pBuffer);
2768c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2769c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(
2770c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2771c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                                    buffer,
2772c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2773c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2774c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(
2775c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2776c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkBufferViewCreateInfo*               pCreateInfo,
2777c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2778c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBufferView*                               pView);
2779c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2780c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyBufferView(
2781c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2782c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBufferView                                bufferView,
2783c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2784c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2785c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(
2786c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2787c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkImageCreateInfo*                    pCreateInfo,
2788c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2789c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage*                                    pImage);
2790c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2791c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyImage(
2792c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2793c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage                                     image,
2794c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2795c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2796c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout(
2797c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2798c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage                                     image,
2799c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkImageSubresource*                   pSubresource,
2800c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSubresourceLayout*                        pLayout);
2801c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2802c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView(
2803c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2804c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkImageViewCreateInfo*                pCreateInfo,
2805c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2806c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageView*                                pView);
2807c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2808c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyImageView(
2809c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2810c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageView                                 imageView,
2811c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2812c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2813c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderModule(
2814c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2815c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkShaderModuleCreateInfo*             pCreateInfo,
2816c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2817c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkShaderModule*                             pShaderModule);
2818c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2819c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule(
2820c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2821c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkShaderModule                              shaderModule,
2822c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2823c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2824c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(
2825c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2826c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPipelineCacheCreateInfo*            pCreateInfo,
2827c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2828c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineCache*                            pPipelineCache);
2829c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2830c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache(
2831c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2832c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineCache                             pipelineCache,
2833c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2834c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2835c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineCacheData(
2836c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2837c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineCache                             pipelineCache,
2838c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    size_t*                                     pDataSize,
2839c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                                       pData);
2840c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2841c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches(
2842c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2843c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineCache                             dstCache,
2844c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    srcCacheCount,
2845c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPipelineCache*                      pSrcCaches);
2846c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2847c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(
2848c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2849c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineCache                             pipelineCache,
2850c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    createInfoCount,
2851c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkGraphicsPipelineCreateInfo*         pCreateInfos,
2852c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2853c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipeline*                                 pPipelines);
2854c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2855c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines(
2856c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2857c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineCache                             pipelineCache,
2858c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    createInfoCount,
2859c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkComputePipelineCreateInfo*          pCreateInfos,
2860c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2861c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipeline*                                 pPipelines);
2862c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2863c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyPipeline(
2864c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2865c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipeline                                  pipeline,
2866c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2867c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2868c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout(
2869c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2870c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPipelineLayoutCreateInfo*           pCreateInfo,
2871c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2872c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineLayout*                           pPipelineLayout);
2873c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2874c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout(
2875c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2876c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineLayout                            pipelineLayout,
2877c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2878c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2879c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler(
2880c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2881c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSamplerCreateInfo*                  pCreateInfo,
2882c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2883c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSampler*                                  pSampler);
2884c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2885c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroySampler(
2886c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2887c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSampler                                   sampler,
2888c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2889c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2890c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout(
2891c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2892c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDescriptorSetLayoutCreateInfo*      pCreateInfo,
2893c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2894c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorSetLayout*                      pSetLayout);
2895c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2896c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout(
2897c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2898c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorSetLayout                       descriptorSetLayout,
2899c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2900c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2901c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool(
2902c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2903c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDescriptorPoolCreateInfo*           pCreateInfo,
2904c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2905c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorPool*                           pDescriptorPool);
2906c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2907c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorPool(
2908c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2909c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorPool                            descriptorPool,
2910c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2911c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2912c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool(
2913c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2914c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorPool                            descriptorPool,
2915c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorPoolResetFlags                  flags);
2916c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2917c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(
2918c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2919c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDescriptorSetAllocateInfo*          pAllocateInfo,
2920c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorSet*                            pDescriptorSets);
2921c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2922c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets(
2923c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2924c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorPool                            descriptorPool,
2925c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    descriptorSetCount,
2926c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDescriptorSet*                      pDescriptorSets);
2927c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2928c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets(
2929c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2930c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    descriptorWriteCount,
2931c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkWriteDescriptorSet*                 pDescriptorWrites,
2932c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    descriptorCopyCount,
2933c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkCopyDescriptorSet*                  pDescriptorCopies);
2934c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2935c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(
2936c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2937c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkFramebufferCreateInfo*              pCreateInfo,
2938c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2939c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFramebuffer*                              pFramebuffer);
2940c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2941c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer(
2942c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2943c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFramebuffer                               framebuffer,
2944c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2945c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2946c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(
2947c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2948c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkRenderPassCreateInfo*               pCreateInfo,
2949c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2950c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkRenderPass*                               pRenderPass);
2951c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2952c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass(
2953c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2954c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkRenderPass                                renderPass,
2955c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2956c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2957c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetRenderAreaGranularity(
2958c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2959c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkRenderPass                                renderPass,
2960c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent2D*                                 pGranularity);
2961c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2962c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool(
2963c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2964c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkCommandPoolCreateInfo*              pCreateInfo,
2965c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
2966c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandPool*                              pCommandPool);
2967c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2968c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyCommandPool(
2969c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2970c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandPool                               commandPool,
2971c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
2972c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2973c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool(
2974c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2975c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandPool                               commandPool,
2976c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandPoolResetFlags                     flags);
2977c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2978c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(
2979c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2980c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkCommandBufferAllocateInfo*          pAllocateInfo,
2981c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer*                            pCommandBuffers);
2982c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2983c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers(
2984c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
2985c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandPool                               commandPool,
2986c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    commandBufferCount,
2987c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkCommandBuffer*                      pCommandBuffers);
2988c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2989c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(
2990c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
2991c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkCommandBufferBeginInfo*             pBeginInfo);
2992c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2993c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer(
2994c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer);
2995c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
2996c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer(
2997c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
2998c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBufferResetFlags                   flags);
2999c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3000c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(
3001c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3002c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineBindPoint                         pipelineBindPoint,
3003c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipeline                                  pipeline);
3004c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3005c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(
3006c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3007c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    firstViewport,
3008c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    viewportCount,
3009c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkViewport*                           pViewports);
3010c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3011c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdSetScissor(
3012c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3013c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    firstScissor,
3014c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    scissorCount,
3015c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkRect2D*                             pScissors);
3016c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3017c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth(
3018c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3019c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                                       lineWidth);
3020c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3021c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias(
3022c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3023c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                                       depthBiasConstantFactor,
3024c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                                       depthBiasClamp,
3025c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                                       depthBiasSlopeFactor);
3026c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3027c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants(
3028c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3029c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const float                                 blendConstants[4]);
3030c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3031c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds(
3032c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3033c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                                       minDepthBounds,
3034c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                                       maxDepthBounds);
3035c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3036c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask(
3037c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3038c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStencilFaceFlags                          faceMask,
3039c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    compareMask);
3040c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3041c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask(
3042c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3043c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStencilFaceFlags                          faceMask,
3044c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    writeMask);
3045c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3046c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference(
3047c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3048c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStencilFaceFlags                          faceMask,
3049c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    reference);
3050c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3051c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(
3052c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3053c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineBindPoint                         pipelineBindPoint,
3054c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineLayout                            layout,
3055c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    firstSet,
3056c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    descriptorSetCount,
3057c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDescriptorSet*                      pDescriptorSets,
3058c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    dynamicOffsetCount,
3059c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const uint32_t*                             pDynamicOffsets);
3060c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3061c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(
3062c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3063c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                                    buffer,
3064c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                                offset,
3065c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkIndexType                                 indexType);
3066c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3067c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(
3068c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3069c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    firstBinding,
3070c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    bindingCount,
3071c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkBuffer*                             pBuffers,
3072c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDeviceSize*                         pOffsets);
3073c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3074c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdDraw(
3075c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3076c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    vertexCount,
3077c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    instanceCount,
3078c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    firstVertex,
3079c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    firstInstance);
3080c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3081c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed(
3082c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3083c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    indexCount,
3084c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    instanceCount,
3085c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    firstIndex,
3086c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    int32_t                                     vertexOffset,
3087c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    firstInstance);
3088c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3089c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(
3090c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3091c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                                    buffer,
3092c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                                offset,
3093c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    drawCount,
3094c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    stride);
3095c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3096c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(
3097c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3098c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                                    buffer,
3099c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                                offset,
3100c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    drawCount,
3101c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    stride);
3102c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3103c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdDispatch(
3104c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3105c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    groupCountX,
3106c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    groupCountY,
3107c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    groupCountZ);
3108c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3109c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(
3110c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3111c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                                    buffer,
3112c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                                offset);
3113c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3114c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(
3115c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3116c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                                    srcBuffer,
3117c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                                    dstBuffer,
3118c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    regionCount,
3119c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkBufferCopy*                         pRegions);
3120c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3121c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(
3122c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3123c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage                                     srcImage,
3124c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageLayout                               srcImageLayout,
3125c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage                                     dstImage,
3126c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageLayout                               dstImageLayout,
3127c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    regionCount,
3128c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkImageCopy*                          pRegions);
3129c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3130c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(
3131c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3132c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage                                     srcImage,
3133c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageLayout                               srcImageLayout,
3134c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage                                     dstImage,
3135c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageLayout                               dstImageLayout,
3136c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    regionCount,
3137c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkImageBlit*                          pRegions,
3138c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFilter                                    filter);
3139c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3140c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(
3141c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3142c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                                    srcBuffer,
3143c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage                                     dstImage,
3144c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageLayout                               dstImageLayout,
3145c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    regionCount,
3146c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkBufferImageCopy*                    pRegions);
3147c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3148c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(
3149c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3150c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage                                     srcImage,
3151c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageLayout                               srcImageLayout,
3152c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                                    dstBuffer,
3153c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    regionCount,
3154c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkBufferImageCopy*                    pRegions);
3155c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3156c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(
3157c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3158c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                                    dstBuffer,
3159c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                                dstOffset,
3160c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                                dataSize,
3161c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                                 pData);
3162c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3163c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(
3164c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3165c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                                    dstBuffer,
3166c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                                dstOffset,
3167c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                                size,
3168c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    data);
3169c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3170c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(
3171c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3172c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage                                     image,
3173c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageLayout                               imageLayout,
3174c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkClearColorValue*                    pColor,
3175c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    rangeCount,
3176c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkImageSubresourceRange*              pRanges);
3177c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3178c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(
3179c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3180c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage                                     image,
3181c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageLayout                               imageLayout,
3182c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkClearDepthStencilValue*             pDepthStencil,
3183c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    rangeCount,
3184c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkImageSubresourceRange*              pRanges);
3185c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3186c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments(
3187c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3188c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    attachmentCount,
3189c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkClearAttachment*                    pAttachments,
3190c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    rectCount,
3191c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkClearRect*                          pRects);
3192c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3193c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(
3194c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3195c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage                                     srcImage,
3196c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageLayout                               srcImageLayout,
3197c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage                                     dstImage,
3198c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageLayout                               dstImageLayout,
3199c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    regionCount,
3200c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkImageResolve*                       pRegions);
3201c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3202c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(
3203c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3204c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkEvent                                     event,
3205c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineStageFlags                        stageMask);
3206c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3207c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(
3208c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3209c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkEvent                                     event,
3210c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineStageFlags                        stageMask);
3211c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3212c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents(
3213c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3214c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    eventCount,
3215c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkEvent*                              pEvents,
3216c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineStageFlags                        srcStageMask,
3217c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineStageFlags                        dstStageMask,
3218c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    memoryBarrierCount,
3219c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkMemoryBarrier*                      pMemoryBarriers,
3220c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    bufferMemoryBarrierCount,
3221c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
3222c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    imageMemoryBarrierCount,
3223c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkImageMemoryBarrier*                 pImageMemoryBarriers);
3224c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3225c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier(
3226c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3227c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineStageFlags                        srcStageMask,
3228c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineStageFlags                        dstStageMask,
3229c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDependencyFlags                           dependencyFlags,
3230c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    memoryBarrierCount,
3231c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkMemoryBarrier*                      pMemoryBarriers,
3232c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    bufferMemoryBarrierCount,
3233c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkBufferMemoryBarrier*                pBufferMemoryBarriers,
3234c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    imageMemoryBarrierCount,
3235c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkImageMemoryBarrier*                 pImageMemoryBarriers);
3236c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3237c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(
3238c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3239c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueryPool                                 queryPool,
3240c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    query,
3241c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueryControlFlags                         flags);
3242c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3243c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(
3244c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3245c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueryPool                                 queryPool,
3246c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    query);
3247c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3248c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(
3249c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3250c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueryPool                                 queryPool,
3251c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    firstQuery,
3252c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    queryCount);
3253c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3254c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(
3255c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3256c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineStageFlagBits                     pipelineStage,
3257c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueryPool                                 queryPool,
3258c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    query);
3259c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3260c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(
3261c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3262c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueryPool                                 queryPool,
3263c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    firstQuery,
3264c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    queryCount,
3265c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                                    dstBuffer,
3266c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                                dstOffset,
3267c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                                stride,
3268c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueryResultFlags                          flags);
3269c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3270c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(
3271c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3272c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineLayout                            layout,
3273c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkShaderStageFlags                          stageFlags,
3274c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    offset,
3275c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    size,
3276c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                                 pValues);
3277c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3278c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(
3279c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3280c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkRenderPassBeginInfo*                pRenderPassBegin,
3281c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSubpassContents                           contents);
3282c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3283c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass(
3284c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3285c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSubpassContents                           contents);
3286c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3287c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass(
3288c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer);
3289c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3290c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(
3291c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3292c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    commandBufferCount,
3293c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkCommandBuffer*                      pCommandBuffers);
3294c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
3295c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3296c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_surface 1
3297c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
3298c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3299c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_SURFACE_SPEC_VERSION       25
3300c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_SURFACE_EXTENSION_NAME     "VK_KHR_surface"
3301c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_COLORSPACE_SRGB_NONLINEAR_KHR  VK_COLOR_SPACE_SRGB_NONLINEAR_KHR
3302c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3303c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3304c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkColorSpaceKHR {
3305c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0,
3306c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
3307c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
3308c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003,
3309c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
3310c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
3311c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
3312c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
3313c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
3314c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
3315c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
3316c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
3317c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
3318c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
3319c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_SPACE_BEGIN_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
3320c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_SPACE_END_RANGE_KHR = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR,
3321c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_SPACE_RANGE_SIZE_KHR = (VK_COLOR_SPACE_SRGB_NONLINEAR_KHR - VK_COLOR_SPACE_SRGB_NONLINEAR_KHR + 1),
3322c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COLOR_SPACE_MAX_ENUM_KHR = 0x7FFFFFFF
3323c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkColorSpaceKHR;
3324c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3325c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkPresentModeKHR {
3326c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
3327c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRESENT_MODE_MAILBOX_KHR = 1,
3328c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRESENT_MODE_FIFO_KHR = 2,
3329c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,
3330c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRESENT_MODE_BEGIN_RANGE_KHR = VK_PRESENT_MODE_IMMEDIATE_KHR,
3331c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRESENT_MODE_END_RANGE_KHR = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
3332c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRESENT_MODE_RANGE_SIZE_KHR = (VK_PRESENT_MODE_FIFO_RELAXED_KHR - VK_PRESENT_MODE_IMMEDIATE_KHR + 1),
3333c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PRESENT_MODE_MAX_ENUM_KHR = 0x7FFFFFFF
3334c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPresentModeKHR;
3335c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3336c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3337c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkSurfaceTransformFlagBitsKHR {
3338c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
3339c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
3340c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
3341c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
3342c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
3343c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
3344c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
3345c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
3346c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
3347c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SURFACE_TRANSFORM_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
3348c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSurfaceTransformFlagBitsKHR;
3349c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkSurfaceTransformFlagsKHR;
3350c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3351c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkCompositeAlphaFlagBitsKHR {
3352c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
3353c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
3354c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
3355c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
3356c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_COMPOSITE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
3357c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkCompositeAlphaFlagBitsKHR;
3358c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkCompositeAlphaFlagsKHR;
3359c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3360c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSurfaceCapabilitiesKHR {
3361c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                         minImageCount;
3362c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                         maxImageCount;
3363c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent2D                       currentExtent;
3364c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent2D                       minImageExtent;
3365c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent2D                       maxImageExtent;
3366c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                         maxImageArrayLayers;
3367c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceTransformFlagsKHR       supportedTransforms;
3368c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceTransformFlagBitsKHR    currentTransform;
3369c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
3370c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageUsageFlags                supportedUsageFlags;
3371c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSurfaceCapabilitiesKHR;
3372c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3373c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSurfaceFormatKHR {
3374c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFormat           format;
3375c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkColorSpaceKHR    colorSpace;
3376c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSurfaceFormatKHR;
3377c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3378c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3379c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator);
3380c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
3381c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
3382c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
3383c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
3384c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3385c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
3386c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
3387c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkInstance                                  instance,
3388c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceKHR                                surface,
3389c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
3390c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3391c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
3392c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
3393c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    queueFamilyIndex,
3394c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceKHR                                surface,
3395c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32*                                   pSupported);
3396c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3397c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
3398c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
3399c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceKHR                                surface,
3400c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceCapabilitiesKHR*                   pSurfaceCapabilities);
3401c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3402c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR(
3403c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
3404c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceKHR                                surface,
3405c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pSurfaceFormatCount,
3406c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceFormatKHR*                         pSurfaceFormats);
3407c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3408c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
3409c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
3410c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceKHR                                surface,
3411c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pPresentModeCount,
3412c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPresentModeKHR*                           pPresentModes);
3413c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
3414c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3415c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_swapchain 1
3416c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
3417c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3418c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_SWAPCHAIN_SPEC_VERSION     68
3419c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_SWAPCHAIN_EXTENSION_NAME   "VK_KHR_swapchain"
3420c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3421c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3422c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkSwapchainCreateFlagBitsKHR {
3423c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX = 0x00000001,
3424c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SWAPCHAIN_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
3425c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSwapchainCreateFlagBitsKHR;
3426c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkSwapchainCreateFlagsKHR;
3427c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3428c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSwapchainCreateInfoKHR {
3429c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                  sType;
3430c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                      pNext;
3431c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSwapchainCreateFlagsKHR        flags;
3432c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceKHR                     surface;
3433c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                         minImageCount;
3434c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFormat                         imageFormat;
3435c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkColorSpaceKHR                  imageColorSpace;
3436c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent2D                       imageExtent;
3437c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                         imageArrayLayers;
3438c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageUsageFlags                imageUsage;
3439c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSharingMode                    imageSharingMode;
3440c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                         queueFamilyIndexCount;
3441c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const uint32_t*                  pQueueFamilyIndices;
3442c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceTransformFlagBitsKHR    preTransform;
3443c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCompositeAlphaFlagBitsKHR      compositeAlpha;
3444c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPresentModeKHR                 presentMode;
3445c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                         clipped;
3446c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSwapchainKHR                   oldSwapchain;
3447c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSwapchainCreateInfoKHR;
3448c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3449c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPresentInfoKHR {
3450c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType          sType;
3451c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*              pNext;
3452c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                 waitSemaphoreCount;
3453c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSemaphore*       pWaitSemaphores;
3454c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                 swapchainCount;
3455c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSwapchainKHR*    pSwapchains;
3456c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const uint32_t*          pImageIndices;
3457c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkResult*                pResults;
3458c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPresentInfoKHR;
3459c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3460c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3461c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain);
3462c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator);
3463c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages);
3464c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex);
3465c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, const VkPresentInfoKHR* pPresentInfo);
3466c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3467c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
3468c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(
3469c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
3470c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSwapchainCreateInfoKHR*             pCreateInfo,
3471c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
3472c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSwapchainKHR*                             pSwapchain);
3473c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3474c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR(
3475c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
3476c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSwapchainKHR                              swapchain,
3477c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
3478c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3479c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR(
3480c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
3481c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSwapchainKHR                              swapchain,
3482c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pSwapchainImageCount,
3483c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage*                                    pSwapchainImages);
3484c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3485c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(
3486c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
3487c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSwapchainKHR                              swapchain,
3488c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint64_t                                    timeout,
3489c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSemaphore                                 semaphore,
3490c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFence                                     fence,
3491c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pImageIndex);
3492c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3493c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
3494c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueue                                     queue,
3495c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPresentInfoKHR*                     pPresentInfo);
3496c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
3497c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3498c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_display 1
3499c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
3500c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
3501c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3502c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_DISPLAY_SPEC_VERSION       21
3503c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_DISPLAY_EXTENSION_NAME     "VK_KHR_display"
3504c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3505c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3506c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkDisplayPlaneAlphaFlagBitsKHR {
3507c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
3508c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
3509c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
3510c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
3511c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISPLAY_PLANE_ALPHA_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF
3512c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDisplayPlaneAlphaFlagBitsKHR;
3513c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkDisplayPlaneAlphaFlagsKHR;
3514c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkDisplayModeCreateFlagsKHR;
3515c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkDisplaySurfaceCreateFlagsKHR;
3516c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3517c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDisplayPropertiesKHR {
3518c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayKHR                  display;
3519c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const char*                   displayName;
3520c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent2D                    physicalDimensions;
3521c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent2D                    physicalResolution;
3522c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceTransformFlagsKHR    supportedTransforms;
3523c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                      planeReorderPossible;
3524c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                      persistentContent;
3525c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDisplayPropertiesKHR;
3526c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3527c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDisplayModeParametersKHR {
3528c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent2D    visibleRegion;
3529c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t      refreshRate;
3530c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDisplayModeParametersKHR;
3531c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3532c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDisplayModePropertiesKHR {
3533c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayModeKHR              displayMode;
3534c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayModeParametersKHR    parameters;
3535c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDisplayModePropertiesKHR;
3536c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3537c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDisplayModeCreateInfoKHR {
3538c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                sType;
3539c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                    pNext;
3540c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayModeCreateFlagsKHR    flags;
3541c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayModeParametersKHR     parameters;
3542c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDisplayModeCreateInfoKHR;
3543c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3544c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDisplayPlaneCapabilitiesKHR {
3545c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayPlaneAlphaFlagsKHR    supportedAlpha;
3546c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkOffset2D                     minSrcPosition;
3547c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkOffset2D                     maxSrcPosition;
3548c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent2D                     minSrcExtent;
3549c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent2D                     maxSrcExtent;
3550c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkOffset2D                     minDstPosition;
3551c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkOffset2D                     maxDstPosition;
3552c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent2D                     minDstExtent;
3553c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent2D                     maxDstExtent;
3554c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDisplayPlaneCapabilitiesKHR;
3555c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3556c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDisplayPlanePropertiesKHR {
3557c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayKHR    currentDisplay;
3558c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t        currentStackIndex;
3559c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDisplayPlanePropertiesKHR;
3560c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3561c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDisplaySurfaceCreateInfoKHR {
3562c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                   sType;
3563c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                       pNext;
3564c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplaySurfaceCreateFlagsKHR    flags;
3565c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayModeKHR                  displayMode;
3566c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                          planeIndex;
3567c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                          planeStackIndex;
3568c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceTransformFlagBitsKHR     transform;
3569c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float                             globalAlpha;
3570c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayPlaneAlphaFlagBitsKHR    alphaMode;
3571c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent2D                        imageExtent;
3572c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDisplaySurfaceCreateInfoKHR;
3573c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3574c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3575c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
3576c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
3577c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays);
3578c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
3579c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode);
3580c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
3581c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface);
3582c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3583c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
3584c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR(
3585c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
3586c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pPropertyCount,
3587c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayPropertiesKHR*                     pProperties);
3588c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3589c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
3590c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
3591c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pPropertyCount,
3592c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayPlanePropertiesKHR*                pProperties);
3593c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3594c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR(
3595c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
3596c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    planeIndex,
3597c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pDisplayCount,
3598c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayKHR*                               pDisplays);
3599c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3600c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR(
3601c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
3602c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayKHR                                display,
3603c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pPropertyCount,
3604c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayModePropertiesKHR*                 pProperties);
3605c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3606c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR(
3607c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
3608c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayKHR                                display,
3609c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDisplayModeCreateInfoKHR*           pCreateInfo,
3610c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
3611c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayModeKHR*                           pMode);
3612c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3613c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR(
3614c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
3615c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayModeKHR                            mode,
3616c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    planeIndex,
3617c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayPlaneCapabilitiesKHR*              pCapabilities);
3618c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3619c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
3620c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkInstance                                  instance,
3621c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDisplaySurfaceCreateInfoKHR*        pCreateInfo,
3622c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
3623c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceKHR*                               pSurface);
3624c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
3625c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3626c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_display_swapchain 1
3627c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 9
3628c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
3629c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3630c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDisplayPresentInfoKHR {
3631c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
3632c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
3633c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkRect2D           srcRect;
3634c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkRect2D           dstRect;
3635c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32           persistent;
3636c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDisplayPresentInfoKHR;
3637c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3638c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3639c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)(VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains);
3640c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3641c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
3642c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR(
3643c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
3644c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    swapchainCount,
3645c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSwapchainCreateInfoKHR*             pCreateInfos,
3646c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
3647c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSwapchainKHR*                             pSwapchains);
3648c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
3649c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3650c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_sampler_mirror_clamp_to_edge 1
3651c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 1
3652c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_EXTENSION_NAME "VK_KHR_sampler_mirror_clamp_to_edge"
3653c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3654c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3655c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_get_physical_device_properties2 1
3656c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 1
3657c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2"
3658c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3659c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPhysicalDeviceFeatures2KHR {
3660c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType             sType;
3661c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                       pNext;
3662c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDeviceFeatures    features;
3663c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDeviceFeatures2KHR;
3664c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3665c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPhysicalDeviceProperties2KHR {
3666c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType               sType;
3667c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                         pNext;
3668c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDeviceProperties    properties;
3669c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDeviceProperties2KHR;
3670c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3671c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkFormatProperties2KHR {
3672c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType       sType;
3673c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                 pNext;
3674c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFormatProperties    formatProperties;
3675c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkFormatProperties2KHR;
3676c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3677c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkImageFormatProperties2KHR {
3678c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType            sType;
3679c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                      pNext;
3680c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageFormatProperties    imageFormatProperties;
3681c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImageFormatProperties2KHR;
3682c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3683c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPhysicalDeviceImageFormatInfo2KHR {
3684c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType       sType;
3685c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*           pNext;
3686c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFormat              format;
3687c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageType           type;
3688c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageTiling         tiling;
3689c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageUsageFlags     usage;
3690c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageCreateFlags    flags;
3691c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDeviceImageFormatInfo2KHR;
3692c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3693c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkQueueFamilyProperties2KHR {
3694c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType            sType;
3695c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                      pNext;
3696c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueueFamilyProperties    queueFamilyProperties;
3697c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkQueueFamilyProperties2KHR;
3698c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3699c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPhysicalDeviceMemoryProperties2KHR {
3700c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                     sType;
3701c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                               pNext;
3702c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDeviceMemoryProperties    memoryProperties;
3703c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDeviceMemoryProperties2KHR;
3704c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3705c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSparseImageFormatProperties2KHR {
3706c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                  sType;
3707c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                            pNext;
3708c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSparseImageFormatProperties    properties;
3709c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSparseImageFormatProperties2KHR;
3710c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3711c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPhysicalDeviceSparseImageFormatInfo2KHR {
3712c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType          sType;
3713c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*              pNext;
3714c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFormat                 format;
3715c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageType              type;
3716c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSampleCountFlagBits    samples;
3717c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageUsageFlags        usage;
3718c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageTiling            tiling;
3719c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDeviceSparseImageFormatInfo2KHR;
3720c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3721c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3722c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2KHR* pFeatures);
3723c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2KHR* pProperties);
3724c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties2KHR)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2KHR* pFormatProperties);
3725c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, VkImageFormatProperties2KHR* pImageFormatProperties);
3726c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2KHR* pQueueFamilyProperties);
3727c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties2KHR)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties);
3728c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2KHR* pProperties);
3729c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3730c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
3731c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2KHR(
3732c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
3733c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDeviceFeatures2KHR*               pFeatures);
3734c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3735c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2KHR(
3736c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
3737c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDeviceProperties2KHR*             pProperties);
3738c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3739c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2KHR(
3740c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
3741c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFormat                                    format,
3742c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFormatProperties2KHR*                     pFormatProperties);
3743c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3744c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2KHR(
3745c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
3746c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPhysicalDeviceImageFormatInfo2KHR*  pImageFormatInfo,
3747c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageFormatProperties2KHR*                pImageFormatProperties);
3748c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3749c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2KHR(
3750c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
3751c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pQueueFamilyPropertyCount,
3752c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkQueueFamilyProperties2KHR*                pQueueFamilyProperties);
3753c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3754c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2KHR(
3755c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
3756c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDeviceMemoryProperties2KHR*       pMemoryProperties);
3757c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3758c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
3759c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
3760c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo,
3761c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pPropertyCount,
3762c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSparseImageFormatProperties2KHR*          pProperties);
3763c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
3764c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3765c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_shader_draw_parameters 1
3766c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1
3767c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters"
3768c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3769c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3770c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_maintenance1 1
3771c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_MAINTENANCE1_SPEC_VERSION  1
3772c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_MAINTENANCE1_EXTENSION_NAME "VK_KHR_maintenance1"
3773c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3774c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkCommandPoolTrimFlagsKHR;
3775c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3776c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkTrimCommandPoolKHR)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlagsKHR flags);
3777c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3778c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
3779c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkTrimCommandPoolKHR(
3780c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
3781c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandPool                               commandPool,
3782c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandPoolTrimFlagsKHR                   flags);
3783c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
3784c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3785c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_push_descriptor 1
3786c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 1
3787c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor"
3788c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3789c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPhysicalDevicePushDescriptorPropertiesKHR {
3790c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
3791c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*              pNext;
3792c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           maxPushDescriptors;
3793c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDevicePushDescriptorPropertiesKHR;
3794c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3795c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3796c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetKHR)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites);
3797c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3798c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
3799c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetKHR(
3800c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3801c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineBindPoint                         pipelineBindPoint,
3802c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineLayout                            layout,
3803c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    set,
3804c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    descriptorWriteCount,
3805c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkWriteDescriptorSet*                 pDescriptorWrites);
3806c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
3807c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3808c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_incremental_present 1
3809c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1
3810c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present"
3811c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3812c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkRectLayerKHR {
3813c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkOffset2D    offset;
3814c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent2D    extent;
3815c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t      layer;
3816c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkRectLayerKHR;
3817c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3818c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPresentRegionKHR {
3819c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                 rectangleCount;
3820c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkRectLayerKHR*    pRectangles;
3821c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPresentRegionKHR;
3822c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3823c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPresentRegionsKHR {
3824c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType              sType;
3825c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                  pNext;
3826c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                     swapchainCount;
3827c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPresentRegionKHR*    pRegions;
3828c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPresentRegionsKHR;
3829c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3830c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3831c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3832c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_descriptor_update_template 1
3833c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplateKHR)
3834c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3835c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1
3836c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template"
3837c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3838c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3839c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkDescriptorUpdateTemplateTypeKHR {
3840c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0,
3841c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1,
3842c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_BEGIN_RANGE_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR,
3843c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_END_RANGE_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR,
3844c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_RANGE_SIZE_KHR = (VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR + 1),
3845c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM_KHR = 0x7FFFFFFF
3846c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDescriptorUpdateTemplateTypeKHR;
3847c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3848c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkDescriptorUpdateTemplateCreateFlagsKHR;
3849c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3850c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDescriptorUpdateTemplateEntryKHR {
3851c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t            dstBinding;
3852c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t            dstArrayElement;
3853c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t            descriptorCount;
3854c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorType    descriptorType;
3855c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    size_t              offset;
3856c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    size_t              stride;
3857c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDescriptorUpdateTemplateEntryKHR;
3858c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3859c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDescriptorUpdateTemplateCreateInfoKHR {
3860c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                              sType;
3861c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                                        pNext;
3862c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorUpdateTemplateCreateFlagsKHR     flags;
3863c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                     descriptorUpdateEntryCount;
3864c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDescriptorUpdateTemplateEntryKHR*    pDescriptorUpdateEntries;
3865c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorUpdateTemplateTypeKHR            templateType;
3866c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorSetLayout                        descriptorSetLayout;
3867c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineBindPoint                          pipelineBindPoint;
3868c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineLayout                             pipelineLayout;
3869c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                     set;
3870c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDescriptorUpdateTemplateCreateInfoKHR;
3871c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3872c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3873c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorUpdateTemplateKHR)(VkDevice device, const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate);
3874c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyDescriptorUpdateTemplateKHR)(VkDevice device, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator);
3875c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSetWithTemplateKHR)(VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, const void* pData);
3876c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdPushDescriptorSetWithTemplateKHR)(VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData);
3877c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3878c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
3879c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplateKHR(
3880c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
3881c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo,
3882c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
3883c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorUpdateTemplateKHR*              pDescriptorUpdateTemplate);
3884c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3885c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplateKHR(
3886c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
3887c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorUpdateTemplateKHR               descriptorUpdateTemplate,
3888c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
3889c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3890c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR(
3891c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
3892c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorSet                             descriptorSet,
3893c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorUpdateTemplateKHR               descriptorUpdateTemplate,
3894c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                                 pData);
3895c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3896c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR(
3897c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
3898c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorUpdateTemplateKHR               descriptorUpdateTemplate,
3899c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineLayout                            layout,
3900c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    set,
3901c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                                 pData);
3902c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
3903c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3904c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_debug_report 1
3905c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT)
3906c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3907c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_DEBUG_REPORT_SPEC_VERSION  6
3908c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_DEBUG_REPORT_EXTENSION_NAME "VK_EXT_debug_report"
3909c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT
3910c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3911c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3912c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkDebugReportObjectTypeEXT {
3913c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
3914c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
3915c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
3916c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,
3917c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,
3918c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,
3919c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,
3920c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,
3921c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,
3922c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,
3923c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,
3924c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,
3925c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,
3926c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,
3927c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,
3928c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,
3929c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,
3930c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,
3931c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,
3932c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,
3933c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,
3934c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,
3935c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,
3936c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,
3937c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,
3938c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,
3939c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
3940c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
3941c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28,
3942c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29,
3943c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,
3944c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31,
3945c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32,
3946c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000,
3947c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_BEGIN_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT,
3948c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_END_RANGE_EXT = VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT,
3949c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_RANGE_SIZE_EXT = (VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT - VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT + 1),
3950c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_OBJECT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
3951c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDebugReportObjectTypeEXT;
3952c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3953c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkDebugReportErrorEXT {
3954c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_ERROR_NONE_EXT = 0,
3955c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT = 1,
3956c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_ERROR_BEGIN_RANGE_EXT = VK_DEBUG_REPORT_ERROR_NONE_EXT,
3957c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_ERROR_END_RANGE_EXT = VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT,
3958c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_ERROR_RANGE_SIZE_EXT = (VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT - VK_DEBUG_REPORT_ERROR_NONE_EXT + 1),
3959c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_ERROR_MAX_ENUM_EXT = 0x7FFFFFFF
3960c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDebugReportErrorEXT;
3961c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3962c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3963c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkDebugReportFlagBitsEXT {
3964c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,
3965c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002,
3966c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004,
3967c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008,
3968c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010,
3969c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEBUG_REPORT_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
3970c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDebugReportFlagBitsEXT;
3971c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkDebugReportFlagsEXT;
3972c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3973c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkBool32 (VKAPI_PTR *PFN_vkDebugReportCallbackEXT)(
3974c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDebugReportFlagsEXT                       flags,
3975c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDebugReportObjectTypeEXT                  objectType,
3976c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint64_t                                    object,
3977c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    size_t                                      location,
3978c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    int32_t                                     messageCode,
3979c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const char*                                 pLayerPrefix,
3980c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const char*                                 pMessage,
3981c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                                       pUserData);
3982c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3983c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3984c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDebugReportCallbackCreateInfoEXT {
3985c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                 sType;
3986c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                     pNext;
3987c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDebugReportFlagsEXT           flags;
3988c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    PFN_vkDebugReportCallbackEXT    pfnCallback;
3989c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                           pUserData;
3990c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDebugReportCallbackCreateInfoEXT;
3991c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3992c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3993c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateDebugReportCallbackEXT)(VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback);
3994c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyDebugReportCallbackEXT)(VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator);
3995c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDebugReportMessageEXT)(VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage);
3996c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
3997c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
3998c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugReportCallbackEXT(
3999c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkInstance                                  instance,
4000c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDebugReportCallbackCreateInfoEXT*   pCreateInfo,
4001c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
4002c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDebugReportCallbackEXT*                   pCallback);
4003c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4004c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackEXT(
4005c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkInstance                                  instance,
4006c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDebugReportCallbackEXT                    callback,
4007c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
4008c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4009c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT(
4010c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkInstance                                  instance,
4011c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDebugReportFlagsEXT                       flags,
4012c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDebugReportObjectTypeEXT                  objectType,
4013c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint64_t                                    object,
4014c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    size_t                                      location,
4015c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    int32_t                                     messageCode,
4016c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const char*                                 pLayerPrefix,
4017c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const char*                                 pMessage);
4018c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
4019c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4020c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_glsl_shader 1
4021c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_GLSL_SHADER_SPEC_VERSION    1
4022c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_GLSL_SHADER_EXTENSION_NAME  "VK_NV_glsl_shader"
4023c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4024c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4025c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_IMG_filter_cubic 1
4026c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_IMG_FILTER_CUBIC_SPEC_VERSION  1
4027c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic"
4028c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4029c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4030c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_rasterization_order 1
4031c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1
4032c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME "VK_AMD_rasterization_order"
4033c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4034c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4035c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkRasterizationOrderAMD {
4036c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_RASTERIZATION_ORDER_STRICT_AMD = 0,
4037c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_RASTERIZATION_ORDER_RELAXED_AMD = 1,
4038c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_RASTERIZATION_ORDER_BEGIN_RANGE_AMD = VK_RASTERIZATION_ORDER_STRICT_AMD,
4039c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_RASTERIZATION_ORDER_END_RANGE_AMD = VK_RASTERIZATION_ORDER_RELAXED_AMD,
4040c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_RASTERIZATION_ORDER_RANGE_SIZE_AMD = (VK_RASTERIZATION_ORDER_RELAXED_AMD - VK_RASTERIZATION_ORDER_STRICT_AMD + 1),
4041c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF
4042c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkRasterizationOrderAMD;
4043c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4044c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPipelineRasterizationStateRasterizationOrderAMD {
4045c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType            sType;
4046c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                pNext;
4047c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkRasterizationOrderAMD    rasterizationOrder;
4048c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineRasterizationStateRasterizationOrderAMD;
4049c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4050c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4051c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4052c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_shader_trinary_minmax 1
4053c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1
4054c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax"
4055c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4056c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4057c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_shader_explicit_vertex_parameter 1
4058c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1
4059c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter"
4060c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4061c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4062c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_debug_marker 1
4063c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_DEBUG_MARKER_SPEC_VERSION  4
4064c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_DEBUG_MARKER_EXTENSION_NAME "VK_EXT_debug_marker"
4065c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4066c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDebugMarkerObjectNameInfoEXT {
4067c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType               sType;
4068c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                   pNext;
4069c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDebugReportObjectTypeEXT    objectType;
4070c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint64_t                      object;
4071c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const char*                   pObjectName;
4072c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDebugMarkerObjectNameInfoEXT;
4073c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4074c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDebugMarkerObjectTagInfoEXT {
4075c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType               sType;
4076c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                   pNext;
4077c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDebugReportObjectTypeEXT    objectType;
4078c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint64_t                      object;
4079c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint64_t                      tagName;
4080c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    size_t                        tagSize;
4081c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                   pTag;
4082c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDebugMarkerObjectTagInfoEXT;
4083c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4084c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDebugMarkerMarkerInfoEXT {
4085c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
4086c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
4087c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const char*        pMarkerName;
4088c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float              color[4];
4089c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDebugMarkerMarkerInfoEXT;
4090c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4091c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4092c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectTagEXT)(VkDevice device, VkDebugMarkerObjectTagInfoEXT* pTagInfo);
4093c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkDebugMarkerSetObjectNameEXT)(VkDevice device, VkDebugMarkerObjectNameInfoEXT* pNameInfo);
4094c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerBeginEXT)(VkCommandBuffer commandBuffer, VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
4095c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerEndEXT)(VkCommandBuffer commandBuffer);
4096c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdDebugMarkerInsertEXT)(VkCommandBuffer commandBuffer, VkDebugMarkerMarkerInfoEXT* pMarkerInfo);
4097c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4098c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
4099c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT(
4100c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
4101c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDebugMarkerObjectTagInfoEXT*              pTagInfo);
4102c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4103c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT(
4104c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
4105c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDebugMarkerObjectNameInfoEXT*             pNameInfo);
4106c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4107c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerBeginEXT(
4108c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
4109c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDebugMarkerMarkerInfoEXT*                 pMarkerInfo);
4110c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4111c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerEndEXT(
4112c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer);
4113c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4114c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT(
4115c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
4116c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDebugMarkerMarkerInfoEXT*                 pMarkerInfo);
4117c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
4118c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4119c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_gcn_shader 1
4120c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_GCN_SHADER_SPEC_VERSION    1
4121c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_GCN_SHADER_EXTENSION_NAME  "VK_AMD_gcn_shader"
4122c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4123c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4124c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_dedicated_allocation 1
4125c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1
4126c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation"
4127c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4128c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDedicatedAllocationImageCreateInfoNV {
4129c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
4130c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
4131c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32           dedicatedAllocation;
4132c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDedicatedAllocationImageCreateInfoNV;
4133c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4134c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDedicatedAllocationBufferCreateInfoNV {
4135c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
4136c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
4137c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32           dedicatedAllocation;
4138c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDedicatedAllocationBufferCreateInfoNV;
4139c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4140c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDedicatedAllocationMemoryAllocateInfoNV {
4141c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
4142c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
4143c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage            image;
4144c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer           buffer;
4145c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDedicatedAllocationMemoryAllocateInfoNV;
4146c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4147c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4148c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4149c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_draw_indirect_count 1
4150c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
4151c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count"
4152c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4153c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdDrawIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
4154c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirectCountAMD)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkBuffer countBuffer, VkDeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride);
4155c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4156c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
4157c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountAMD(
4158c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
4159c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                                    buffer,
4160c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                                offset,
4161c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                                    countBuffer,
4162c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                                countBufferOffset,
4163c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    maxDrawCount,
4164c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    stride);
4165c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4166c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD(
4167c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
4168c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                                    buffer,
4169c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                                offset,
4170c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                                    countBuffer,
4171c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                                countBufferOffset,
4172c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    maxDrawCount,
4173c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    stride);
4174c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
4175c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4176c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_negative_viewport_height 1
4177c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1
4178c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height"
4179c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4180c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4181c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_gpu_shader_half_float 1
4182c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 1
4183c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float"
4184c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4185c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4186c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_shader_ballot 1
4187c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1
4188c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot"
4189c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4190c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4191c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_multiview 1
4192c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_MULTIVIEW_SPEC_VERSION     1
4193c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_MULTIVIEW_EXTENSION_NAME   "VK_KHX_multiview"
4194c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4195c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkRenderPassMultiviewCreateInfoKHX {
4196c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
4197c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
4198c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           subpassCount;
4199c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const uint32_t*    pViewMasks;
4200c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           dependencyCount;
4201c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const int32_t*     pViewOffsets;
4202c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           correlationMaskCount;
4203c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const uint32_t*    pCorrelationMasks;
4204c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkRenderPassMultiviewCreateInfoKHX;
4205c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4206c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPhysicalDeviceMultiviewFeaturesKHX {
4207c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
4208c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*              pNext;
4209c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32           multiview;
4210c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32           multiviewGeometryShader;
4211c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32           multiviewTessellationShader;
4212c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDeviceMultiviewFeaturesKHX;
4213c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4214c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPhysicalDeviceMultiviewPropertiesKHX {
4215c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
4216c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*              pNext;
4217c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           maxMultiviewViewCount;
4218c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           maxMultiviewInstanceIndex;
4219c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDeviceMultiviewPropertiesKHX;
4220c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4221c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4222c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4223c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_IMG_format_pvrtc 1
4224c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_IMG_FORMAT_PVRTC_SPEC_VERSION  1
4225c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc"
4226c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4227c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4228c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_external_memory_capabilities 1
4229c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
4230c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities"
4231c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4232c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4233c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkExternalMemoryHandleTypeFlagBitsNV {
4234c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,
4235c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,
4236c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,
4237c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,
4238c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
4239c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkExternalMemoryHandleTypeFlagBitsNV;
4240c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkExternalMemoryHandleTypeFlagsNV;
4241c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4242c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkExternalMemoryFeatureFlagBitsNV {
4243c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001,
4244c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002,
4245c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004,
4246c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_NV = 0x7FFFFFFF
4247c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkExternalMemoryFeatureFlagBitsNV;
4248c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkExternalMemoryFeatureFlagsNV;
4249c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4250c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkExternalImageFormatPropertiesNV {
4251c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageFormatProperties              imageFormatProperties;
4252c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalMemoryFeatureFlagsNV       externalMemoryFeatures;
4253c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalMemoryHandleTypeFlagsNV    exportFromImportedHandleTypes;
4254c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalMemoryHandleTypeFlagsNV    compatibleHandleTypes;
4255c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkExternalImageFormatPropertiesNV;
4256c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4257c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4258c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkExternalMemoryHandleTypeFlagsNV externalHandleType, VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties);
4259c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4260c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
4261c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
4262c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
4263c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFormat                                    format,
4264c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageType                                 type,
4265c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageTiling                               tiling,
4266c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageUsageFlags                           usage,
4267c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageCreateFlags                          flags,
4268c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalMemoryHandleTypeFlagsNV           externalHandleType,
4269c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalImageFormatPropertiesNV*          pExternalImageFormatProperties);
4270c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
4271c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4272c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_external_memory 1
4273c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1
4274c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory"
4275c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4276c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkExternalMemoryImageCreateInfoNV {
4277c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                      sType;
4278c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                          pNext;
4279c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalMemoryHandleTypeFlagsNV    handleTypes;
4280c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkExternalMemoryImageCreateInfoNV;
4281c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4282c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkExportMemoryAllocateInfoNV {
4283c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                      sType;
4284c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                          pNext;
4285c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalMemoryHandleTypeFlagsNV    handleTypes;
4286c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkExportMemoryAllocateInfoNV;
4287c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4288c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4289c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4290c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_device_group 1
4291c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_MAX_DEVICE_GROUP_SIZE_KHX      32
4292c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_DEVICE_GROUP_SPEC_VERSION  1
4293c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_DEVICE_GROUP_EXTENSION_NAME "VK_KHX_device_group"
4294c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4295c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4296c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkPeerMemoryFeatureFlagBitsKHX {
4297c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX = 0x00000001,
4298c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX = 0x00000002,
4299c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX = 0x00000004,
4300c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX = 0x00000008,
4301c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_PEER_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_KHX = 0x7FFFFFFF
4302c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPeerMemoryFeatureFlagBitsKHX;
4303c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkPeerMemoryFeatureFlagsKHX;
4304c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4305c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkMemoryAllocateFlagBitsKHX {
4306c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX = 0x00000001,
4307c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_MEMORY_ALLOCATE_FLAG_BITS_MAX_ENUM_KHX = 0x7FFFFFFF
4308c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkMemoryAllocateFlagBitsKHX;
4309c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkMemoryAllocateFlagsKHX;
4310c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4311c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkDeviceGroupPresentModeFlagBitsKHX {
4312c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX = 0x00000001,
4313c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX = 0x00000002,
4314c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX = 0x00000004,
4315c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX = 0x00000008,
4316c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEVICE_GROUP_PRESENT_MODE_FLAG_BITS_MAX_ENUM_KHX = 0x7FFFFFFF
4317c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDeviceGroupPresentModeFlagBitsKHX;
4318c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkDeviceGroupPresentModeFlagsKHX;
4319c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4320c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkMemoryAllocateFlagsInfoKHX {
4321c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType             sType;
4322c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                 pNext;
4323c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkMemoryAllocateFlagsKHX    flags;
4324c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                    deviceMask;
4325c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkMemoryAllocateFlagsInfoKHX;
4326c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4327c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkBindBufferMemoryInfoKHX {
4328c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
4329c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
4330c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer           buffer;
4331c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceMemory     memory;
4332c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize       memoryOffset;
4333c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           deviceIndexCount;
4334c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const uint32_t*    pDeviceIndices;
4335c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkBindBufferMemoryInfoKHX;
4336c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4337c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkBindImageMemoryInfoKHX {
4338c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
4339c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
4340c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImage            image;
4341c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceMemory     memory;
4342c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize       memoryOffset;
4343c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           deviceIndexCount;
4344c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const uint32_t*    pDeviceIndices;
4345c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           SFRRectCount;
4346c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkRect2D*    pSFRRects;
4347c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkBindImageMemoryInfoKHX;
4348c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4349c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDeviceGroupRenderPassBeginInfoKHX {
4350c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
4351c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
4352c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           deviceMask;
4353c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           deviceRenderAreaCount;
4354c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkRect2D*    pDeviceRenderAreas;
4355c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDeviceGroupRenderPassBeginInfoKHX;
4356c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4357c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDeviceGroupCommandBufferBeginInfoKHX {
4358c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
4359c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
4360c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           deviceMask;
4361c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDeviceGroupCommandBufferBeginInfoKHX;
4362c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4363c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDeviceGroupSubmitInfoKHX {
4364c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
4365c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
4366c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           waitSemaphoreCount;
4367c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const uint32_t*    pWaitSemaphoreDeviceIndices;
4368c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           commandBufferCount;
4369c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const uint32_t*    pCommandBufferDeviceMasks;
4370c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           signalSemaphoreCount;
4371c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const uint32_t*    pSignalSemaphoreDeviceIndices;
4372c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDeviceGroupSubmitInfoKHX;
4373c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4374c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDeviceGroupBindSparseInfoKHX {
4375c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
4376c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
4377c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           resourceDeviceIndex;
4378c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           memoryDeviceIndex;
4379c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDeviceGroupBindSparseInfoKHX;
4380c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4381c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDeviceGroupPresentCapabilitiesKHX {
4382c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                     sType;
4383c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                         pNext;
4384c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                            presentMask[VK_MAX_DEVICE_GROUP_SIZE_KHX];
4385c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceGroupPresentModeFlagsKHX    modes;
4386c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDeviceGroupPresentCapabilitiesKHX;
4387c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4388c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkImageSwapchainCreateInfoKHX {
4389c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
4390c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
4391c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSwapchainKHR     swapchain;
4392c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImageSwapchainCreateInfoKHX;
4393c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4394c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkBindImageMemorySwapchainInfoKHX {
4395c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
4396c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
4397c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSwapchainKHR     swapchain;
4398c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           imageIndex;
4399c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkBindImageMemorySwapchainInfoKHX;
4400c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4401c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkAcquireNextImageInfoKHX {
4402c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
4403c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
4404c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSwapchainKHR     swapchain;
4405c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint64_t           timeout;
4406c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSemaphore        semaphore;
4407c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFence            fence;
4408c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           deviceMask;
4409c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkAcquireNextImageInfoKHX;
4410c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4411c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDeviceGroupPresentInfoKHX {
4412c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                        sType;
4413c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                            pNext;
4414c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                               swapchainCount;
4415c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const uint32_t*                        pDeviceMasks;
4416c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceGroupPresentModeFlagBitsKHX    mode;
4417c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDeviceGroupPresentInfoKHX;
4418c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4419c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDeviceGroupSwapchainCreateInfoKHX {
4420c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                     sType;
4421c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                         pNext;
4422c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceGroupPresentModeFlagsKHX    modes;
4423c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDeviceGroupSwapchainCreateInfoKHX;
4424c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4425c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4426c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetDeviceGroupPeerMemoryFeaturesKHX)(VkDevice device, uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VkPeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures);
4427c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory2KHX)(VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfoKHX* pBindInfos);
4428c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory2KHX)(VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfoKHX* pBindInfos);
4429c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdSetDeviceMaskKHX)(VkCommandBuffer commandBuffer, uint32_t deviceMask);
4430c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupPresentCapabilitiesKHX)(VkDevice device, VkDeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities);
4431c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetDeviceGroupSurfacePresentModesKHX)(VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHX* pModes);
4432c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImage2KHX)(VkDevice device, const VkAcquireNextImageInfoKHX* pAcquireInfo, uint32_t* pImageIndex);
4433c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdDispatchBaseKHX)(VkCommandBuffer commandBuffer, uint32_t baseGroupX, uint32_t baseGroupY, uint32_t baseGroupZ, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ);
4434c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDevicePresentRectanglesKHX)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects);
4435c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4436c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
4437c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeaturesKHX(
4438c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
4439c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    heapIndex,
4440c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    localDeviceIndex,
4441c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    remoteDeviceIndex,
4442c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPeerMemoryFeatureFlagsKHX*                pPeerMemoryFeatures);
4443c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4444c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2KHX(
4445c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
4446c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    bindInfoCount,
4447c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkBindBufferMemoryInfoKHX*            pBindInfos);
4448c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4449c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2KHX(
4450c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
4451c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    bindInfoCount,
4452c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkBindImageMemoryInfoKHX*             pBindInfos);
4453c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4454c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMaskKHX(
4455c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
4456c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    deviceMask);
4457c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4458c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupPresentCapabilitiesKHX(
4459c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
4460c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceGroupPresentCapabilitiesKHX*        pDeviceGroupPresentCapabilities);
4461c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4462c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHX(
4463c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
4464c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceKHR                                surface,
4465c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceGroupPresentModeFlagsKHX*           pModes);
4466c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4467c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHX(
4468c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
4469c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAcquireNextImageInfoKHX*            pAcquireInfo,
4470c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pImageIndex);
4471c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4472c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdDispatchBaseKHX(
4473c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
4474c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    baseGroupX,
4475c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    baseGroupY,
4476c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    baseGroupZ,
4477c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    groupCountX,
4478c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    groupCountY,
4479c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    groupCountZ);
4480c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4481c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHX(
4482c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
4483c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceKHR                                surface,
4484c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pRectCount,
4485c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkRect2D*                                   pRects);
4486c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
4487c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4488c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_validation_flags 1
4489c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 1
4490c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags"
4491c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4492c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4493c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkValidationCheckEXT {
4494c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VALIDATION_CHECK_ALL_EXT = 0,
4495c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VALIDATION_CHECK_BEGIN_RANGE_EXT = VK_VALIDATION_CHECK_ALL_EXT,
4496c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VALIDATION_CHECK_END_RANGE_EXT = VK_VALIDATION_CHECK_ALL_EXT,
4497c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VALIDATION_CHECK_RANGE_SIZE_EXT = (VK_VALIDATION_CHECK_ALL_EXT - VK_VALIDATION_CHECK_ALL_EXT + 1),
4498c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VALIDATION_CHECK_MAX_ENUM_EXT = 0x7FFFFFFF
4499c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkValidationCheckEXT;
4500c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4501c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkValidationFlagsEXT {
4502c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType          sType;
4503c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*              pNext;
4504c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                 disabledValidationCheckCount;
4505c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkValidationCheckEXT*    pDisabledValidationChecks;
4506c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkValidationFlagsEXT;
4507c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4508c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4509c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_shader_subgroup_ballot 1
4510c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1
4511c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot"
4512c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4513c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4514c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_shader_subgroup_vote 1
4515c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1
4516c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote"
4517c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4518c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4519c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_device_group_creation 1
4520c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_DEVICE_GROUP_CREATION_SPEC_VERSION 1
4521c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHX_device_group_creation"
4522c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4523c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPhysicalDeviceGroupPropertiesKHX {
4524c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType     sType;
4525c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*               pNext;
4526c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t            physicalDeviceCount;
4527c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice    physicalDevices[VK_MAX_DEVICE_GROUP_SIZE_KHX];
4528c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32            subsetAllocation;
4529c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDeviceGroupPropertiesKHX;
4530c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4531c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDeviceGroupDeviceCreateInfoKHX {
4532c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType            sType;
4533c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                pNext;
4534c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                   physicalDeviceCount;
4535c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPhysicalDevice*    pPhysicalDevices;
4536c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDeviceGroupDeviceCreateInfoKHX;
4537c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4538c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4539c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDeviceGroupsKHX)(VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties);
4540c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4541c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
4542c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroupsKHX(
4543c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkInstance                                  instance,
4544c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pPhysicalDeviceGroupCount,
4545c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDeviceGroupPropertiesKHX*         pPhysicalDeviceGroupProperties);
4546c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
4547c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4548c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_external_memory_capabilities 1
4549c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_LUID_SIZE_KHX                  8
4550c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
4551c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHX_external_memory_capabilities"
4552c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4553c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4554c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkExternalMemoryHandleTypeFlagBitsKHX {
4555c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHX = 0x00000001,
4556c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX = 0x00000002,
4557c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX = 0x00000004,
4558c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHX = 0x00000008,
4559c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHX = 0x00000010,
4560c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHX = 0x00000020,
4561c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHX = 0x00000040,
4562c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_KHX = 0x7FFFFFFF
4563c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkExternalMemoryHandleTypeFlagBitsKHX;
4564c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkExternalMemoryHandleTypeFlagsKHX;
4565c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4566c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkExternalMemoryFeatureFlagBitsKHX {
4567c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHX = 0x00000001,
4568c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHX = 0x00000002,
4569c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHX = 0x00000004,
4570c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_MEMORY_FEATURE_FLAG_BITS_MAX_ENUM_KHX = 0x7FFFFFFF
4571c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkExternalMemoryFeatureFlagBitsKHX;
4572c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkExternalMemoryFeatureFlagsKHX;
4573c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4574c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkExternalMemoryPropertiesKHX {
4575c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalMemoryFeatureFlagsKHX       externalMemoryFeatures;
4576c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalMemoryHandleTypeFlagsKHX    exportFromImportedHandleTypes;
4577c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalMemoryHandleTypeFlagsKHX    compatibleHandleTypes;
4578c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkExternalMemoryPropertiesKHX;
4579c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4580c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPhysicalDeviceExternalImageFormatInfoKHX {
4581c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                          sType;
4582c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                              pNext;
4583c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalMemoryHandleTypeFlagBitsKHX    handleType;
4584c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDeviceExternalImageFormatInfoKHX;
4585c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4586c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkExternalImageFormatPropertiesKHX {
4587c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                  sType;
4588c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                            pNext;
4589c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalMemoryPropertiesKHX    externalMemoryProperties;
4590c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkExternalImageFormatPropertiesKHX;
4591c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4592c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPhysicalDeviceExternalBufferInfoKHX {
4593c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                          sType;
4594c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                              pNext;
4595c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBufferCreateFlags                      flags;
4596c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBufferUsageFlags                       usage;
4597c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalMemoryHandleTypeFlagBitsKHX    handleType;
4598c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDeviceExternalBufferInfoKHX;
4599c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4600c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkExternalBufferPropertiesKHX {
4601c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                  sType;
4602c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                            pNext;
4603c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalMemoryPropertiesKHX    externalMemoryProperties;
4604c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkExternalBufferPropertiesKHX;
4605c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4606c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPhysicalDeviceIDPropertiesKHX {
4607c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
4608c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*              pNext;
4609c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint8_t            deviceUUID[VK_UUID_SIZE];
4610c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint8_t            driverUUID[VK_UUID_SIZE];
4611c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint8_t            deviceLUID[VK_LUID_SIZE_KHX];
4612c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32           deviceLUIDValid;
4613c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDeviceIDPropertiesKHX;
4614c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4615c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4616c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHX)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo, VkExternalBufferPropertiesKHX* pExternalBufferProperties);
4617c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4618c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
4619c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferPropertiesKHX(
4620c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
4621c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo,
4622c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalBufferPropertiesKHX*              pExternalBufferProperties);
4623c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
4624c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4625c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_external_memory 1
4626c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_EXTERNAL_MEMORY_SPEC_VERSION 1
4627c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHX_external_memory"
4628c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_QUEUE_FAMILY_EXTERNAL_KHX      (~0U-1)
4629c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4630c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkExternalMemoryImageCreateInfoKHX {
4631c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                       sType;
4632c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                           pNext;
4633c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalMemoryHandleTypeFlagsKHX    handleTypes;
4634c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkExternalMemoryImageCreateInfoKHX;
4635c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4636c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkExternalMemoryBufferCreateInfoKHX {
4637c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                       sType;
4638c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                           pNext;
4639c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalMemoryHandleTypeFlagsKHX    handleTypes;
4640c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkExternalMemoryBufferCreateInfoKHX;
4641c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4642c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkExportMemoryAllocateInfoKHX {
4643c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                       sType;
4644c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                           pNext;
4645c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalMemoryHandleTypeFlagsKHX    handleTypes;
4646c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkExportMemoryAllocateInfoKHX;
4647c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4648c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4649c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_external_memory_fd 1
4650c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_EXTERNAL_MEMORY_FD_SPEC_VERSION 1
4651c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHX_external_memory_fd"
4652c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4653c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkImportMemoryFdInfoKHX {
4654c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                          sType;
4655c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                              pNext;
4656c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalMemoryHandleTypeFlagBitsKHX    handleType;
4657c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    int                                      fd;
4658c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImportMemoryFdInfoKHX;
4659c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4660c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkMemoryFdPropertiesKHX {
4661c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
4662c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*              pNext;
4663c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           memoryTypeBits;
4664c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkMemoryFdPropertiesKHX;
4665c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4666c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4667c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdKHX)(VkDevice device, VkDeviceMemory memory, VkExternalMemoryHandleTypeFlagBitsKHX handleType, int* pFd);
4668c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetMemoryFdPropertiesKHX)(VkDevice device, VkExternalMemoryHandleTypeFlagBitsKHX handleType, int fd, VkMemoryFdPropertiesKHX* pMemoryFdProperties);
4669c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4670c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
4671c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdKHX(
4672c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
4673c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceMemory                              memory,
4674c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalMemoryHandleTypeFlagBitsKHX       handleType,
4675c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    int*                                        pFd);
4676c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4677c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHX(
4678c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
4679c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalMemoryHandleTypeFlagBitsKHX       handleType,
4680c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    int                                         fd,
4681c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkMemoryFdPropertiesKHX*                    pMemoryFdProperties);
4682c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
4683c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4684c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_external_semaphore_capabilities 1
4685c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1
4686c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHX_external_semaphore_capabilities"
4687c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4688c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4689c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkExternalSemaphoreHandleTypeFlagBitsKHX {
4690c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHX = 0x00000001,
4691c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX = 0x00000002,
4692c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX = 0x00000004,
4693c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHX = 0x00000008,
4694c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHX = 0x00000010,
4695c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FLAG_BITS_MAX_ENUM_KHX = 0x7FFFFFFF
4696c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkExternalSemaphoreHandleTypeFlagBitsKHX;
4697c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkExternalSemaphoreHandleTypeFlagsKHX;
4698c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4699c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkExternalSemaphoreFeatureFlagBitsKHX {
4700c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHX = 0x00000001,
4701c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHX = 0x00000002,
4702c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_EXTERNAL_SEMAPHORE_FEATURE_FLAG_BITS_MAX_ENUM_KHX = 0x7FFFFFFF
4703c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkExternalSemaphoreFeatureFlagBitsKHX;
4704c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkExternalSemaphoreFeatureFlagsKHX;
4705c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4706c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPhysicalDeviceExternalSemaphoreInfoKHX {
4707c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                             sType;
4708c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                                 pNext;
4709c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalSemaphoreHandleTypeFlagBitsKHX    handleType;
4710c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDeviceExternalSemaphoreInfoKHX;
4711c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4712c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkExternalSemaphorePropertiesKHX {
4713c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                          sType;
4714c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                                    pNext;
4715c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalSemaphoreHandleTypeFlagsKHX    exportFromImportedHandleTypes;
4716c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalSemaphoreHandleTypeFlagsKHX    compatibleHandleTypes;
4717c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalSemaphoreFeatureFlagsKHX       externalSemaphoreFeatures;
4718c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkExternalSemaphorePropertiesKHX;
4719c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4720c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4721c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHX)(VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo, VkExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties);
4722c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4723c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
4724c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphorePropertiesKHX(
4725c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
4726c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo,
4727c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalSemaphorePropertiesKHX*           pExternalSemaphoreProperties);
4728c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
4729c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4730c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_external_semaphore 1
4731c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
4732c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHX_external_semaphore"
4733c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4734c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkExportSemaphoreCreateInfoKHX {
4735c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                          sType;
4736c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                              pNext;
4737c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalSemaphoreHandleTypeFlagsKHX    handleTypes;
4738c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkExportSemaphoreCreateInfoKHX;
4739c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4740c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4741c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_external_semaphore_fd 1
4742c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1
4743c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_KHX_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHX_external_semaphore_fd"
4744c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4745c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkImportSemaphoreFdInfoKHX {
4746c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                             sType;
4747c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                                 pNext;
4748c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSemaphore                                 semaphore;
4749c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalSemaphoreHandleTypeFlagBitsKHX    handleType;
4750c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    int                                         fd;
4751c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkImportSemaphoreFdInfoKHX;
4752c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4753c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4754c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkImportSemaphoreFdKHX)(VkDevice device, const VkImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo);
4755c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetSemaphoreFdKHX)(VkDevice device, VkSemaphore semaphore, VkExternalSemaphoreHandleTypeFlagBitsKHX handleType, int* pFd);
4756c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4757c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
4758c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreFdKHX(
4759c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
4760c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkImportSemaphoreFdInfoKHX*           pImportSemaphoreFdInfo);
4761c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4762c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHX(
4763c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
4764c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSemaphore                                 semaphore,
4765c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExternalSemaphoreHandleTypeFlagBitsKHX    handleType,
4766c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    int*                                        pFd);
4767c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
4768c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4769c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NVX_device_generated_commands 1
4770c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkObjectTableNVX)
4771c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVK_DEFINE_NON_DISPATCHABLE_HANDLE(VkIndirectCommandsLayoutNVX)
4772c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4773c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 1
4774c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands"
4775c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4776c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4777c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkIndirectCommandsTokenTypeNVX {
4778c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDIRECT_COMMANDS_TOKEN_PIPELINE_NVX = 0,
4779c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDIRECT_COMMANDS_TOKEN_DESCRIPTOR_SET_NVX = 1,
4780c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDIRECT_COMMANDS_TOKEN_INDEX_BUFFER_NVX = 2,
4781c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDIRECT_COMMANDS_TOKEN_VERTEX_BUFFER_NVX = 3,
4782c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDIRECT_COMMANDS_TOKEN_PUSH_CONSTANT_NVX = 4,
4783c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDIRECT_COMMANDS_TOKEN_DRAW_INDEXED_NVX = 5,
4784c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDIRECT_COMMANDS_TOKEN_DRAW_NVX = 6,
4785c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDIRECT_COMMANDS_TOKEN_DISPATCH_NVX = 7,
4786c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDIRECT_COMMANDS_TOKEN_TYPE_BEGIN_RANGE_NVX = VK_INDIRECT_COMMANDS_TOKEN_PIPELINE_NVX,
4787c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDIRECT_COMMANDS_TOKEN_TYPE_END_RANGE_NVX = VK_INDIRECT_COMMANDS_TOKEN_DISPATCH_NVX,
4788c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDIRECT_COMMANDS_TOKEN_TYPE_RANGE_SIZE_NVX = (VK_INDIRECT_COMMANDS_TOKEN_DISPATCH_NVX - VK_INDIRECT_COMMANDS_TOKEN_PIPELINE_NVX + 1),
4789c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDIRECT_COMMANDS_TOKEN_TYPE_MAX_ENUM_NVX = 0x7FFFFFFF
4790c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkIndirectCommandsTokenTypeNVX;
4791c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4792c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkObjectEntryTypeNVX {
4793c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_OBJECT_ENTRY_DESCRIPTOR_SET_NVX = 0,
4794c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_OBJECT_ENTRY_PIPELINE_NVX = 1,
4795c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_OBJECT_ENTRY_INDEX_BUFFER_NVX = 2,
4796c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_OBJECT_ENTRY_VERTEX_BUFFER_NVX = 3,
4797c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX = 4,
4798c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_OBJECT_ENTRY_TYPE_BEGIN_RANGE_NVX = VK_OBJECT_ENTRY_DESCRIPTOR_SET_NVX,
4799c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_OBJECT_ENTRY_TYPE_END_RANGE_NVX = VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX,
4800c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_OBJECT_ENTRY_TYPE_RANGE_SIZE_NVX = (VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX - VK_OBJECT_ENTRY_DESCRIPTOR_SET_NVX + 1),
4801c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_OBJECT_ENTRY_TYPE_MAX_ENUM_NVX = 0x7FFFFFFF
4802c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkObjectEntryTypeNVX;
4803c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4804c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4805c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkIndirectCommandsLayoutUsageFlagBitsNVX {
4806c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = 0x00000001,
4807c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = 0x00000002,
4808c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = 0x00000004,
4809c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = 0x00000008,
4810c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_INDIRECT_COMMANDS_LAYOUT_USAGE_FLAG_BITS_MAX_ENUM_NVX = 0x7FFFFFFF
4811c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkIndirectCommandsLayoutUsageFlagBitsNVX;
4812c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkIndirectCommandsLayoutUsageFlagsNVX;
4813c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4814c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkObjectEntryUsageFlagBitsNVX {
4815c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = 0x00000001,
4816c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = 0x00000002,
4817c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_OBJECT_ENTRY_USAGE_FLAG_BITS_MAX_ENUM_NVX = 0x7FFFFFFF
4818c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkObjectEntryUsageFlagBitsNVX;
4819c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkObjectEntryUsageFlagsNVX;
4820c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4821c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDeviceGeneratedCommandsFeaturesNVX {
4822c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
4823c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
4824c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32           computeBindingPointSupport;
4825c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDeviceGeneratedCommandsFeaturesNVX;
4826c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4827c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDeviceGeneratedCommandsLimitsNVX {
4828c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
4829c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
4830c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           maxIndirectCommandsLayoutTokenCount;
4831c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           maxObjectEntryCounts;
4832c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           minSequenceCountBufferOffsetAlignment;
4833c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           minSequenceIndexBufferOffsetAlignment;
4834c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           minCommandsTokenBufferOffsetAlignment;
4835c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDeviceGeneratedCommandsLimitsNVX;
4836c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4837c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkIndirectCommandsTokenNVX {
4838c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkIndirectCommandsTokenTypeNVX    tokenType;
4839c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                          buffer;
4840c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                      offset;
4841c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkIndirectCommandsTokenNVX;
4842c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4843c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkIndirectCommandsLayoutTokenNVX {
4844c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkIndirectCommandsTokenTypeNVX    tokenType;
4845c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                          bindingUnit;
4846c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                          dynamicCount;
4847c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                          divisor;
4848c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkIndirectCommandsLayoutTokenNVX;
4849c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4850c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkIndirectCommandsLayoutCreateInfoNVX {
4851c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                            sType;
4852c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                                pNext;
4853c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineBindPoint                        pipelineBindPoint;
4854c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkIndirectCommandsLayoutUsageFlagsNVX      flags;
4855c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                   tokenCount;
4856c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkIndirectCommandsLayoutTokenNVX*    pTokens;
4857c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkIndirectCommandsLayoutCreateInfoNVX;
4858c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4859c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkCmdProcessCommandsInfoNVX {
4860c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                      sType;
4861c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                          pNext;
4862c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkObjectTableNVX                     objectTable;
4863c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkIndirectCommandsLayoutNVX          indirectCommandsLayout;
4864c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                             indirectCommandsTokenCount;
4865c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkIndirectCommandsTokenNVX*    pIndirectCommandsTokens;
4866c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                             maxSequencesCount;
4867c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                      targetCommandBuffer;
4868c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                             sequencesCountBuffer;
4869c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                         sequencesCountOffset;
4870c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                             sequencesIndexBuffer;
4871c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceSize                         sequencesIndexOffset;
4872c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkCmdProcessCommandsInfoNVX;
4873c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4874c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkCmdReserveSpaceForCommandsInfoNVX {
4875c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                sType;
4876c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                    pNext;
4877c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkObjectTableNVX               objectTable;
4878c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkIndirectCommandsLayoutNVX    indirectCommandsLayout;
4879c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                       maxSequencesCount;
4880c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkCmdReserveSpaceForCommandsInfoNVX;
4881c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4882c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkObjectTableCreateInfoNVX {
4883c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                      sType;
4884c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                          pNext;
4885c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                             objectCount;
4886c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkObjectEntryTypeNVX*          pObjectEntryTypes;
4887c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const uint32_t*                      pObjectEntryCounts;
4888c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkObjectEntryUsageFlagsNVX*    pObjectEntryUsageFlags;
4889c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                             maxUniformBuffersPerDescriptor;
4890c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                             maxStorageBuffersPerDescriptor;
4891c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                             maxStorageImagesPerDescriptor;
4892c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                             maxSampledImagesPerDescriptor;
4893c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                             maxPipelineLayouts;
4894c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkObjectTableCreateInfoNVX;
4895c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4896c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkObjectTableEntryNVX {
4897c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkObjectEntryTypeNVX          type;
4898c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkObjectEntryUsageFlagsNVX    flags;
4899c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkObjectTableEntryNVX;
4900c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4901c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkObjectTablePipelineEntryNVX {
4902c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkObjectEntryTypeNVX          type;
4903c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkObjectEntryUsageFlagsNVX    flags;
4904c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipeline                    pipeline;
4905c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkObjectTablePipelineEntryNVX;
4906c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4907c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkObjectTableDescriptorSetEntryNVX {
4908c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkObjectEntryTypeNVX          type;
4909c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkObjectEntryUsageFlagsNVX    flags;
4910c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineLayout              pipelineLayout;
4911c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDescriptorSet               descriptorSet;
4912c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkObjectTableDescriptorSetEntryNVX;
4913c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4914c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkObjectTableVertexBufferEntryNVX {
4915c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkObjectEntryTypeNVX          type;
4916c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkObjectEntryUsageFlagsNVX    flags;
4917c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                      buffer;
4918c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkObjectTableVertexBufferEntryNVX;
4919c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4920c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkObjectTableIndexBufferEntryNVX {
4921c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkObjectEntryTypeNVX          type;
4922c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkObjectEntryUsageFlagsNVX    flags;
4923c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBuffer                      buffer;
4924c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkIndexType                   indexType;
4925c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkObjectTableIndexBufferEntryNVX;
4926c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4927c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkObjectTablePushConstantEntryNVX {
4928c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkObjectEntryTypeNVX          type;
4929c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkObjectEntryUsageFlagsNVX    flags;
4930c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineLayout              pipelineLayout;
4931c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkShaderStageFlags            stageFlags;
4932c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkObjectTablePushConstantEntryNVX;
4933c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4934c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4935c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdProcessCommandsNVX)(VkCommandBuffer commandBuffer, const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo);
4936c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdReserveSpaceForCommandsNVX)(VkCommandBuffer commandBuffer, const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo);
4937c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateIndirectCommandsLayoutNVX)(VkDevice device, const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout);
4938c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyIndirectCommandsLayoutNVX)(VkDevice device, VkIndirectCommandsLayoutNVX indirectCommandsLayout, const VkAllocationCallbacks* pAllocator);
4939c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkCreateObjectTableNVX)(VkDevice device, const VkObjectTableCreateInfoNVX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkObjectTableNVX* pObjectTable);
4940c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkDestroyObjectTableNVX)(VkDevice device, VkObjectTableNVX objectTable, const VkAllocationCallbacks* pAllocator);
4941c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkRegisterObjectsNVX)(VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectTableEntryNVX* const*    ppObjectTableEntries, const uint32_t* pObjectIndices);
4942c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkUnregisterObjectsNVX)(VkDevice device, VkObjectTableNVX objectTable, uint32_t objectCount, const VkObjectEntryTypeNVX* pObjectEntryTypes, const uint32_t* pObjectIndices);
4943c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX)(VkPhysicalDevice physicalDevice, VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, VkDeviceGeneratedCommandsLimitsNVX* pLimits);
4944c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4945c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
4946c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdProcessCommandsNVX(
4947c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
4948c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkCmdProcessCommandsInfoNVX*          pProcessCommandsInfo);
4949c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4950c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdReserveSpaceForCommandsNVX(
4951c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
4952c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkCmdReserveSpaceForCommandsInfoNVX*  pReserveSpaceInfo);
4953c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4954c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutNVX(
4955c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
4956c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
4957c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
4958c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkIndirectCommandsLayoutNVX*                pIndirectCommandsLayout);
4959c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4960c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutNVX(
4961c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
4962c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkIndirectCommandsLayoutNVX                 indirectCommandsLayout,
4963c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
4964c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4965c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkCreateObjectTableNVX(
4966c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
4967c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkObjectTableCreateInfoNVX*           pCreateInfo,
4968c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
4969c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkObjectTableNVX*                           pObjectTable);
4970c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4971c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkDestroyObjectTableNVX(
4972c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
4973c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkObjectTableNVX                            objectTable,
4974c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator);
4975c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4976c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkRegisterObjectsNVX(
4977c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
4978c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkObjectTableNVX                            objectTable,
4979c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    objectCount,
4980c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkObjectTableEntryNVX* const*         ppObjectTableEntries,
4981c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const uint32_t*                             pObjectIndices);
4982c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4983c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkUnregisterObjectsNVX(
4984c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
4985c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkObjectTableNVX                            objectTable,
4986c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    objectCount,
4987c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkObjectEntryTypeNVX*                 pObjectEntryTypes,
4988c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const uint32_t*                             pObjectIndices);
4989c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4990c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
4991c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
4992c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceGeneratedCommandsFeaturesNVX*       pFeatures,
4993c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceGeneratedCommandsLimitsNVX*         pLimits);
4994c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
4995c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
4996c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_clip_space_w_scaling 1
4997c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1
4998c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling"
4999c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5000c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkViewportWScalingNV {
5001c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float    xcoeff;
5002c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float    ycoeff;
5003c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkViewportWScalingNV;
5004c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5005c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPipelineViewportWScalingStateCreateInfoNV {
5006c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                sType;
5007c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                    pNext;
5008c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32                       viewportWScalingEnable;
5009c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                       viewportCount;
5010c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkViewportWScalingNV*    pViewportWScalings;
5011c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineViewportWScalingStateCreateInfoNV;
5012c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5013c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5014c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdSetViewportWScalingNV)(VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings);
5015c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5016c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
5017c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWScalingNV(
5018c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
5019c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    firstViewport,
5020c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    viewportCount,
5021c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkViewportWScalingNV*                 pViewportWScalings);
5022c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
5023c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5024c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_direct_mode_display 1
5025c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1
5026c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display"
5027c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5028c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkReleaseDisplayEXT)(VkPhysicalDevice physicalDevice, VkDisplayKHR display);
5029c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5030c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
5031c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkReleaseDisplayEXT(
5032c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
5033c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayKHR                                display);
5034c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
5035c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5036c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_display_surface_counter 1
5037c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1
5038c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter"
5039c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5040c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5041c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkSurfaceCounterFlagBitsEXT {
5042c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SURFACE_COUNTER_VBLANK_EXT = 0x00000001,
5043c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_SURFACE_COUNTER_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF
5044c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSurfaceCounterFlagBitsEXT;
5045c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkSurfaceCounterFlagsEXT;
5046c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5047c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSurfaceCapabilities2EXT {
5048c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                  sType;
5049c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*                            pNext;
5050c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                         minImageCount;
5051c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                         maxImageCount;
5052c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent2D                       currentExtent;
5053c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent2D                       minImageExtent;
5054c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkExtent2D                       maxImageExtent;
5055c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                         maxImageArrayLayers;
5056c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceTransformFlagsKHR       supportedTransforms;
5057c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceTransformFlagBitsKHR    currentTransform;
5058c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCompositeAlphaFlagsKHR         supportedCompositeAlpha;
5059c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkImageUsageFlags                supportedUsageFlags;
5060c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceCounterFlagsEXT         supportedSurfaceCounters;
5061c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSurfaceCapabilities2EXT;
5062c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5063c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5064c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities);
5065c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5066c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
5067c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT(
5068c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPhysicalDevice                            physicalDevice,
5069c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceKHR                                surface,
5070c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceCapabilities2EXT*                  pSurfaceCapabilities);
5071c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
5072c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5073c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_display_control 1
5074c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1
5075c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_DISPLAY_CONTROL_EXTENSION_NAME "VK_EXT_display_control"
5076c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5077c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5078c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkDisplayPowerStateEXT {
5079c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISPLAY_POWER_STATE_OFF_EXT = 0,
5080c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,
5081c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISPLAY_POWER_STATE_ON_EXT = 2,
5082c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISPLAY_POWER_STATE_BEGIN_RANGE_EXT = VK_DISPLAY_POWER_STATE_OFF_EXT,
5083c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISPLAY_POWER_STATE_END_RANGE_EXT = VK_DISPLAY_POWER_STATE_ON_EXT,
5084c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISPLAY_POWER_STATE_RANGE_SIZE_EXT = (VK_DISPLAY_POWER_STATE_ON_EXT - VK_DISPLAY_POWER_STATE_OFF_EXT + 1),
5085c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISPLAY_POWER_STATE_MAX_ENUM_EXT = 0x7FFFFFFF
5086c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDisplayPowerStateEXT;
5087c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5088c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkDeviceEventTypeEXT {
5089c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0,
5090c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEVICE_EVENT_TYPE_BEGIN_RANGE_EXT = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT,
5091c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEVICE_EVENT_TYPE_END_RANGE_EXT = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT,
5092c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEVICE_EVENT_TYPE_RANGE_SIZE_EXT = (VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT - VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT + 1),
5093c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DEVICE_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
5094c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDeviceEventTypeEXT;
5095c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5096c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkDisplayEventTypeEXT {
5097c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,
5098c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISPLAY_EVENT_TYPE_BEGIN_RANGE_EXT = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT,
5099c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISPLAY_EVENT_TYPE_END_RANGE_EXT = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT,
5100c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISPLAY_EVENT_TYPE_RANGE_SIZE_EXT = (VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT - VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT + 1),
5101c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISPLAY_EVENT_TYPE_MAX_ENUM_EXT = 0x7FFFFFFF
5102c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDisplayEventTypeEXT;
5103c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5104c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDisplayPowerInfoEXT {
5105c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType           sType;
5106c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*               pNext;
5107c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayPowerStateEXT    powerState;
5108c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDisplayPowerInfoEXT;
5109c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5110c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDeviceEventInfoEXT {
5111c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType         sType;
5112c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*             pNext;
5113c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDeviceEventTypeEXT    deviceEvent;
5114c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDeviceEventInfoEXT;
5115c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5116c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkDisplayEventInfoEXT {
5117c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType          sType;
5118c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*              pNext;
5119c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayEventTypeEXT    displayEvent;
5120c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDisplayEventInfoEXT;
5121c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5122c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkSwapchainCounterCreateInfoEXT {
5123c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType             sType;
5124c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                 pNext;
5125c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceCounterFlagsEXT    surfaceCounters;
5126c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkSwapchainCounterCreateInfoEXT;
5127c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5128c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5129c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkDisplayPowerControlEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo);
5130c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkRegisterDeviceEventEXT)(VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
5131c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkRegisterDisplayEventEXT)(VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
5132c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainCounterEXT)(VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue);
5133c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5134c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
5135c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkDisplayPowerControlEXT(
5136c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
5137c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayKHR                                display,
5138c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDisplayPowerInfoEXT*                pDisplayPowerInfo);
5139c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5140c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkRegisterDeviceEventEXT(
5141c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
5142c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDeviceEventInfoEXT*                 pDeviceEventInfo,
5143c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
5144c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFence*                                    pFence);
5145c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5146c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkRegisterDisplayEventEXT(
5147c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
5148c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDisplayKHR                                display,
5149c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkDisplayEventInfoEXT*                pDisplayEventInfo,
5150c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkAllocationCallbacks*                pAllocator,
5151c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkFence*                                    pFence);
5152c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5153c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainCounterEXT(
5154c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
5155c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSwapchainKHR                              swapchain,
5156c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSurfaceCounterFlagBitsEXT                 counter,
5157c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint64_t*                                   pCounterValue);
5158c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
5159c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5160c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_GOOGLE_display_timing 1
5161c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1
5162c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing"
5163c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5164c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkRefreshCycleDurationGOOGLE {
5165c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint64_t    refreshDuration;
5166c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkRefreshCycleDurationGOOGLE;
5167c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5168c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPastPresentationTimingGOOGLE {
5169c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    presentID;
5170c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint64_t    desiredPresentTime;
5171c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint64_t    actualPresentTime;
5172c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint64_t    earliestPresentTime;
5173c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint64_t    presentMargin;
5174c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPastPresentationTimingGOOGLE;
5175c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5176c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPresentTimeGOOGLE {
5177c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t    presentID;
5178c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint64_t    desiredPresentTime;
5179c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPresentTimeGOOGLE;
5180c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5181c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPresentTimesInfoGOOGLE {
5182c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType               sType;
5183c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                   pNext;
5184c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                      swapchainCount;
5185c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkPresentTimeGOOGLE*    pTimes;
5186c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPresentTimesInfoGOOGLE;
5187c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5188c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5189c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetRefreshCycleDurationGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties);
5190c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkResult (VKAPI_PTR *PFN_vkGetPastPresentationTimingGOOGLE)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings);
5191c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5192c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
5193c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetRefreshCycleDurationGOOGLE(
5194c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
5195c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSwapchainKHR                              swapchain,
5196c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkRefreshCycleDurationGOOGLE*               pDisplayTimingProperties);
5197c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5198c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingGOOGLE(
5199c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
5200c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkSwapchainKHR                              swapchain,
5201c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t*                                   pPresentationTimingCount,
5202c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPastPresentationTimingGOOGLE*             pPresentationTimings);
5203c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
5204c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5205c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_sample_mask_override_coverage 1
5206c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1
5207c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage"
5208c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5209c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5210c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_geometry_shader_passthrough 1
5211c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1
5212c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough"
5213c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5214c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5215c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_viewport_array2 1
5216c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION 1
5217c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME "VK_NV_viewport_array2"
5218c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5219c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5220c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NVX_multiview_per_view_attributes 1
5221c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1
5222c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes"
5223c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5224c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
5225c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
5226c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*              pNext;
5227c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkBool32           perViewPositionAllComponents;
5228c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX;
5229c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5230c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5231c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5232c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_viewport_swizzle 1
5233c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1
5234c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle"
5235c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5236c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5237c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkViewportCoordinateSwizzleNV {
5238c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0,
5239c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1,
5240c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2,
5241c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3,
5242c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4,
5243c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5,
5244c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6,
5245c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7,
5246c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VIEWPORT_COORDINATE_SWIZZLE_BEGIN_RANGE_NV = VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV,
5247c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VIEWPORT_COORDINATE_SWIZZLE_END_RANGE_NV = VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV,
5248c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VIEWPORT_COORDINATE_SWIZZLE_RANGE_SIZE_NV = (VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV - VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV + 1),
5249c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_VIEWPORT_COORDINATE_SWIZZLE_MAX_ENUM_NV = 0x7FFFFFFF
5250c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkViewportCoordinateSwizzleNV;
5251c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5252c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV;
5253c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5254c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkViewportSwizzleNV {
5255c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkViewportCoordinateSwizzleNV    x;
5256c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkViewportCoordinateSwizzleNV    y;
5257c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkViewportCoordinateSwizzleNV    z;
5258c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkViewportCoordinateSwizzleNV    w;
5259c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkViewportSwizzleNV;
5260c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5261c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPipelineViewportSwizzleStateCreateInfoNV {
5262c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                                sType;
5263c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                                    pNext;
5264c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineViewportSwizzleStateCreateFlagsNV    flags;
5265c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                       viewportCount;
5266c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkViewportSwizzleNV*                     pViewportSwizzles;
5267c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineViewportSwizzleStateCreateInfoNV;
5268c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5269c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5270c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5271c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_discard_rectangles 1
5272c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1
5273c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
5274c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5275c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5276c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef enum VkDiscardRectangleModeEXT {
5277c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,
5278c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,
5279c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISCARD_RECTANGLE_MODE_BEGIN_RANGE_EXT = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT,
5280c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISCARD_RECTANGLE_MODE_END_RANGE_EXT = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT,
5281c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISCARD_RECTANGLE_MODE_RANGE_SIZE_EXT = (VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT - VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT + 1),
5282c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VK_DISCARD_RECTANGLE_MODE_MAX_ENUM_EXT = 0x7FFFFFFF
5283c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkDiscardRectangleModeEXT;
5284c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5285c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT;
5286c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5287c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPhysicalDeviceDiscardRectanglePropertiesEXT {
5288c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
5289c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    void*              pNext;
5290c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t           maxDiscardRectangles;
5291c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPhysicalDeviceDiscardRectanglePropertiesEXT;
5292c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5293c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkPipelineDiscardRectangleStateCreateInfoEXT {
5294c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType                                  sType;
5295c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*                                      pNext;
5296c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkPipelineDiscardRectangleStateCreateFlagsEXT    flags;
5297c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDiscardRectangleModeEXT                        discardRectangleMode;
5298c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                         discardRectangleCount;
5299c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkRect2D*                                  pDiscardRectangles;
5300c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkPipelineDiscardRectangleStateCreateInfoEXT;
5301c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5302c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5303c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkCmdSetDiscardRectangleEXT)(VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles);
5304c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5305c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
5306c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT(
5307c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkCommandBuffer                             commandBuffer,
5308c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    firstDiscardRectangle,
5309c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    discardRectangleCount,
5310c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkRect2D*                             pDiscardRectangles);
5311c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
5312c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5313c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_swapchain_colorspace 1
5314c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 2
5315c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace"
5316c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5317c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5318c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_hdr_metadata 1
5319c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_HDR_METADATA_SPEC_VERSION  1
5320c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata"
5321c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5322c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkXYColorEXT {
5323c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float    x;
5324c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float    y;
5325c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkXYColorEXT;
5326c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5327c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef struct VkHdrMetadataEXT {
5328c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkStructureType    sType;
5329c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const void*        pNext;
5330c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkXYColorEXT       displayPrimaryRed;
5331c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkXYColorEXT       displayPrimaryGreen;
5332c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkXYColorEXT       displayPrimaryBlue;
5333c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkXYColorEXT       whitePoint;
5334c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float              maxLuminance;
5335c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float              minLuminance;
5336c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float              maxContentLightLevel;
5337c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    float              maxFrameAverageLightLevel;
5338c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel} VkHdrMetadataEXT;
5339c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5340c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5341c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Danieltypedef void (VKAPI_PTR *PFN_vkSetHdrMetadataEXT)(VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata);
5342c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5343c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifndef VK_NO_PROTOTYPES
5344c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg DanielVKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT(
5345c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    VkDevice                                    device,
5346c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    uint32_t                                    swapchainCount,
5347c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkSwapchainKHR*                       pSwapchains,
5348c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel    const VkHdrMetadataEXT*                     pMetadata);
5349c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
5350c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5351c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#ifdef __cplusplus
5352c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel}
5353c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
5354c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel
5355c819e66993f1d66dbbd6c64e70ed897e889e4d32Greg Daniel#endif
5356