blob: 2791b8a820176b37db185bb90f1a0355a66ab678 [file] [log] [blame]
Jesse Halldc6d36c2015-11-29 19:12:15 -08001#ifndef __vulkan_h_
2#define __vulkan_h_ 1
Jesse Hall04f4f472015-08-16 19:51:04 -07003
4#ifdef __cplusplus
5extern "C" {
6#endif
7
8/*
9** Copyright (c) 2015 The Khronos Group Inc.
10**
11** Permission is hereby granted, free of charge, to any person obtaining a
12** copy of this software and/or associated documentation files (the
13** "Materials"), to deal in the Materials without restriction, including
14** without limitation the rights to use, copy, modify, merge, publish,
15** distribute, sublicense, and/or sell copies of the Materials, and to
16** permit persons to whom the Materials are furnished to do so, subject to
17** the following conditions:
18**
19** The above copyright notice and this permission notice shall be included
20** in all copies or substantial portions of the Materials.
21**
22** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
25** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
26** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
27** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
28** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
29*/
30
31/*
32** This header is generated from the Khronos Vulkan XML API Registry.
33**
34*/
35
36
37#define VK_VERSION_1_0 1
38#include "vk_platform.h"
39
40#define VK_MAKE_VERSION(major, minor, patch) \
41 ((major << 22) | (minor << 12) | patch)
42
43// Vulkan API version supported by this file
Jesse Halle1b12782015-11-30 11:27:32 -080044#define VK_API_VERSION VK_MAKE_VERSION(0, 204, 0)
Jesse Hall5ae3abb2015-10-08 14:00:22 -070045
46
Jesse Halla3a7a1d2015-11-24 11:37:23 -080047#define VK_NULL_HANDLE 0
Jesse Halla9e57032015-11-30 01:03:10 -080048
Jesse Hall04f4f472015-08-16 19:51:04 -070049
50
Jesse Hall3fbc8562015-11-29 22:10:52 -080051#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object;
Jesse Hall04f4f472015-08-16 19:51:04 -070052
53
Jesse Halla3a7a1d2015-11-24 11:37:23 -080054#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__)
Jesse Hall3fbc8562015-11-29 22:10:52 -080055 #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object;
Jesse Hall04f4f472015-08-16 19:51:04 -070056#else
Jesse Hall3fbc8562015-11-29 22:10:52 -080057 #define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object;
Jesse Hall04f4f472015-08-16 19:51:04 -070058#endif
Jesse Halla9e57032015-11-30 01:03:10 -080059
Jesse Hall04f4f472015-08-16 19:51:04 -070060
61
Jesse Hall5ae3abb2015-10-08 14:00:22 -070062typedef uint32_t VkFlags;
Jesse Halla6429252015-11-29 18:59:42 -080063typedef uint32_t VkBool32;
Jesse Hall5ae3abb2015-10-08 14:00:22 -070064typedef uint64_t VkDeviceSize;
65typedef uint32_t VkSampleMask;
Jesse Hall04f4f472015-08-16 19:51:04 -070066
67VK_DEFINE_HANDLE(VkInstance)
68VK_DEFINE_HANDLE(VkPhysicalDevice)
69VK_DEFINE_HANDLE(VkDevice)
70VK_DEFINE_HANDLE(VkQueue)
Jesse Hall3fbc8562015-11-29 22:10:52 -080071VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSemaphore)
72VK_DEFINE_HANDLE(VkCommandBuffer)
73VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFence)
74VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDeviceMemory)
75VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer)
76VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage)
77VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkEvent)
78VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool)
79VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView)
80VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView)
81VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule)
Jesse Hall3fbc8562015-11-29 22:10:52 -080082VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache)
83VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout)
84VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass)
85VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline)
86VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout)
87VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler)
88VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool)
89VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet)
90VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer)
91VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool)
Jesse Hall04f4f472015-08-16 19:51:04 -070092
Jesse Hall5ae3abb2015-10-08 14:00:22 -070093#define VK_LOD_CLAMP_NONE 1000.0f
94#define VK_REMAINING_MIP_LEVELS (~0U)
95#define VK_REMAINING_ARRAY_LAYERS (~0U)
96#define VK_WHOLE_SIZE (~0ULL)
97#define VK_ATTACHMENT_UNUSED (~0U)
98#define VK_TRUE 1
99#define VK_FALSE 0
100#define VK_QUEUE_FAMILY_IGNORED (~0U)
101#define VK_SUBPASS_EXTERNAL (~0U)
Jesse Hall65ab5522015-11-30 00:07:16 -0800102#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256
103#define VK_UUID_SIZE 16
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700104#define VK_MAX_MEMORY_TYPES 32
105#define VK_MAX_MEMORY_HEAPS 16
Jesse Hall65ab5522015-11-30 00:07:16 -0800106#define VK_MAX_EXTENSION_NAME_SIZE 256
107#define VK_MAX_DESCRIPTION_SIZE 256
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700108
Jesse Hall04f4f472015-08-16 19:51:04 -0700109
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800110typedef enum VkResult {
Jesse Hall04f4f472015-08-16 19:51:04 -0700111 VK_SUCCESS = 0,
Jesse Halla15a4bf2015-11-19 22:48:02 -0800112 VK_NOT_READY = 1,
113 VK_TIMEOUT = 2,
114 VK_EVENT_SET = 3,
115 VK_EVENT_RESET = 4,
116 VK_INCOMPLETE = 5,
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700117 VK_ERROR_OUT_OF_HOST_MEMORY = -1,
118 VK_ERROR_OUT_OF_DEVICE_MEMORY = -2,
Jesse Hall04f4f472015-08-16 19:51:04 -0700119 VK_ERROR_INITIALIZATION_FAILED = -3,
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700120 VK_ERROR_DEVICE_LOST = -4,
121 VK_ERROR_MEMORY_MAP_FAILED = -5,
122 VK_ERROR_LAYER_NOT_PRESENT = -6,
123 VK_ERROR_EXTENSION_NOT_PRESENT = -7,
Jesse Hall606a54e2015-11-19 22:17:28 -0800124 VK_ERROR_FEATURE_NOT_PRESENT = -8,
125 VK_ERROR_INCOMPATIBLE_DRIVER = -9,
Jesse Hall091ed9e2015-11-30 00:55:29 -0800126 VK_ERROR_TOO_MANY_OBJECTS = -10,
Jesse Halla9e57032015-11-30 01:03:10 -0800127 VK_ERROR_FORMAT_NOT_SUPPORTED = -11,
128 VK_RESULT_BEGIN_RANGE = VK_ERROR_FORMAT_NOT_SUPPORTED,
Jesse Hall04f4f472015-08-16 19:51:04 -0700129 VK_RESULT_END_RANGE = VK_INCOMPLETE,
Jesse Halla9e57032015-11-30 01:03:10 -0800130 VK_RESULT_RANGE_SIZE = (VK_INCOMPLETE - VK_ERROR_FORMAT_NOT_SUPPORTED + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700131 VK_RESULT_MAX_ENUM = 0x7FFFFFFF
132} VkResult;
133
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800134typedef enum VkStructureType {
Jesse Hall04f4f472015-08-16 19:51:04 -0700135 VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
Jesse Hallc7467b72015-11-29 21:05:26 -0800136 VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
137 VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
138 VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
139 VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
140 VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO = 5,
141 VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
142 VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
143 VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
144 VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700145 VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
Jesse Hallc7467b72015-11-29 21:05:26 -0800146 VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
147 VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
148 VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
149 VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
150 VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
151 VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800152 VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
153 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
154 VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
155 VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
156 VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
157 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
158 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
159 VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
160 VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
161 VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
162 VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
163 VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
164 VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
165 VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
166 VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
167 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
168 VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
169 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOC_INFO = 34,
170 VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
171 VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
172 VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
173 VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
174 VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
175 VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOC_INFO = 40,
176 VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 41,
177 VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 42,
178 VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 43,
179 VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 44,
180 VK_STRUCTURE_TYPE_MEMORY_BARRIER = 45,
181 VK_STRUCTURE_TYPE_LAYER_INSTANCE_CREATE_INFO = 46,
182 VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO = 47,
Jesse Hall04f4f472015-08-16 19:51:04 -0700183 VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
Jesse Hallc7467b72015-11-29 21:05:26 -0800184 VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800185 VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LAYER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700186 VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF
187} VkStructureType;
188
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800189typedef enum VkSystemAllocationScope {
190 VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800191 VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 1,
192 VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 2,
193 VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 3,
194 VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 4,
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800195 VK_SYSTEM_ALLOCATION_SCOPE_BEGIN_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_COMMAND,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800196 VK_SYSTEM_ALLOCATION_SCOPE_END_RANGE = VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE,
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800197 VK_SYSTEM_ALLOCATION_SCOPE_RANGE_SIZE = (VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE - VK_SYSTEM_ALLOCATION_SCOPE_COMMAND + 1),
Jesse Hall3fbc8562015-11-29 22:10:52 -0800198 VK_SYSTEM_ALLOCATION_SCOPE_MAX_ENUM = 0x7FFFFFFF
199} VkSystemAllocationScope;
Jesse Hall03b6fe12015-11-24 12:44:21 -0800200
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800201typedef enum VkInternalAllocationType {
Jesse Hall3fbc8562015-11-29 22:10:52 -0800202 VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0,
203 VK_INTERNAL_ALLOCATION_TYPE_BEGIN_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE,
204 VK_INTERNAL_ALLOCATION_TYPE_END_RANGE = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE,
205 VK_INTERNAL_ALLOCATION_TYPE_RANGE_SIZE = (VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE - VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE + 1),
206 VK_INTERNAL_ALLOCATION_TYPE_MAX_ENUM = 0x7FFFFFFF
207} VkInternalAllocationType;
Jesse Hall04f4f472015-08-16 19:51:04 -0700208
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800209typedef enum VkFormat {
Jesse Hall04f4f472015-08-16 19:51:04 -0700210 VK_FORMAT_UNDEFINED = 0,
211 VK_FORMAT_R4G4_UNORM = 1,
212 VK_FORMAT_R4G4_USCALED = 2,
213 VK_FORMAT_R4G4B4A4_UNORM = 3,
214 VK_FORMAT_R4G4B4A4_USCALED = 4,
215 VK_FORMAT_R5G6B5_UNORM = 5,
216 VK_FORMAT_R5G6B5_USCALED = 6,
217 VK_FORMAT_R5G5B5A1_UNORM = 7,
218 VK_FORMAT_R5G5B5A1_USCALED = 8,
219 VK_FORMAT_R8_UNORM = 9,
220 VK_FORMAT_R8_SNORM = 10,
221 VK_FORMAT_R8_USCALED = 11,
222 VK_FORMAT_R8_SSCALED = 12,
223 VK_FORMAT_R8_UINT = 13,
224 VK_FORMAT_R8_SINT = 14,
225 VK_FORMAT_R8_SRGB = 15,
226 VK_FORMAT_R8G8_UNORM = 16,
227 VK_FORMAT_R8G8_SNORM = 17,
228 VK_FORMAT_R8G8_USCALED = 18,
229 VK_FORMAT_R8G8_SSCALED = 19,
230 VK_FORMAT_R8G8_UINT = 20,
231 VK_FORMAT_R8G8_SINT = 21,
232 VK_FORMAT_R8G8_SRGB = 22,
233 VK_FORMAT_R8G8B8_UNORM = 23,
234 VK_FORMAT_R8G8B8_SNORM = 24,
235 VK_FORMAT_R8G8B8_USCALED = 25,
236 VK_FORMAT_R8G8B8_SSCALED = 26,
237 VK_FORMAT_R8G8B8_UINT = 27,
238 VK_FORMAT_R8G8B8_SINT = 28,
239 VK_FORMAT_R8G8B8_SRGB = 29,
240 VK_FORMAT_R8G8B8A8_UNORM = 30,
241 VK_FORMAT_R8G8B8A8_SNORM = 31,
242 VK_FORMAT_R8G8B8A8_USCALED = 32,
243 VK_FORMAT_R8G8B8A8_SSCALED = 33,
244 VK_FORMAT_R8G8B8A8_UINT = 34,
245 VK_FORMAT_R8G8B8A8_SINT = 35,
246 VK_FORMAT_R8G8B8A8_SRGB = 36,
247 VK_FORMAT_R10G10B10A2_UNORM = 37,
248 VK_FORMAT_R10G10B10A2_SNORM = 38,
249 VK_FORMAT_R10G10B10A2_USCALED = 39,
250 VK_FORMAT_R10G10B10A2_SSCALED = 40,
251 VK_FORMAT_R10G10B10A2_UINT = 41,
252 VK_FORMAT_R10G10B10A2_SINT = 42,
253 VK_FORMAT_R16_UNORM = 43,
254 VK_FORMAT_R16_SNORM = 44,
255 VK_FORMAT_R16_USCALED = 45,
256 VK_FORMAT_R16_SSCALED = 46,
257 VK_FORMAT_R16_UINT = 47,
258 VK_FORMAT_R16_SINT = 48,
259 VK_FORMAT_R16_SFLOAT = 49,
260 VK_FORMAT_R16G16_UNORM = 50,
261 VK_FORMAT_R16G16_SNORM = 51,
262 VK_FORMAT_R16G16_USCALED = 52,
263 VK_FORMAT_R16G16_SSCALED = 53,
264 VK_FORMAT_R16G16_UINT = 54,
265 VK_FORMAT_R16G16_SINT = 55,
266 VK_FORMAT_R16G16_SFLOAT = 56,
267 VK_FORMAT_R16G16B16_UNORM = 57,
268 VK_FORMAT_R16G16B16_SNORM = 58,
269 VK_FORMAT_R16G16B16_USCALED = 59,
270 VK_FORMAT_R16G16B16_SSCALED = 60,
271 VK_FORMAT_R16G16B16_UINT = 61,
272 VK_FORMAT_R16G16B16_SINT = 62,
273 VK_FORMAT_R16G16B16_SFLOAT = 63,
274 VK_FORMAT_R16G16B16A16_UNORM = 64,
275 VK_FORMAT_R16G16B16A16_SNORM = 65,
276 VK_FORMAT_R16G16B16A16_USCALED = 66,
277 VK_FORMAT_R16G16B16A16_SSCALED = 67,
278 VK_FORMAT_R16G16B16A16_UINT = 68,
279 VK_FORMAT_R16G16B16A16_SINT = 69,
280 VK_FORMAT_R16G16B16A16_SFLOAT = 70,
281 VK_FORMAT_R32_UINT = 71,
282 VK_FORMAT_R32_SINT = 72,
283 VK_FORMAT_R32_SFLOAT = 73,
284 VK_FORMAT_R32G32_UINT = 74,
285 VK_FORMAT_R32G32_SINT = 75,
286 VK_FORMAT_R32G32_SFLOAT = 76,
287 VK_FORMAT_R32G32B32_UINT = 77,
288 VK_FORMAT_R32G32B32_SINT = 78,
289 VK_FORMAT_R32G32B32_SFLOAT = 79,
290 VK_FORMAT_R32G32B32A32_UINT = 80,
291 VK_FORMAT_R32G32B32A32_SINT = 81,
292 VK_FORMAT_R32G32B32A32_SFLOAT = 82,
293 VK_FORMAT_R64_SFLOAT = 83,
294 VK_FORMAT_R64G64_SFLOAT = 84,
295 VK_FORMAT_R64G64B64_SFLOAT = 85,
296 VK_FORMAT_R64G64B64A64_SFLOAT = 86,
297 VK_FORMAT_R11G11B10_UFLOAT = 87,
298 VK_FORMAT_R9G9B9E5_UFLOAT = 88,
299 VK_FORMAT_D16_UNORM = 89,
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700300 VK_FORMAT_D24_UNORM_X8 = 90,
Jesse Hall04f4f472015-08-16 19:51:04 -0700301 VK_FORMAT_D32_SFLOAT = 91,
302 VK_FORMAT_S8_UINT = 92,
303 VK_FORMAT_D16_UNORM_S8_UINT = 93,
304 VK_FORMAT_D24_UNORM_S8_UINT = 94,
305 VK_FORMAT_D32_SFLOAT_S8_UINT = 95,
306 VK_FORMAT_BC1_RGB_UNORM = 96,
307 VK_FORMAT_BC1_RGB_SRGB = 97,
308 VK_FORMAT_BC1_RGBA_UNORM = 98,
309 VK_FORMAT_BC1_RGBA_SRGB = 99,
310 VK_FORMAT_BC2_UNORM = 100,
311 VK_FORMAT_BC2_SRGB = 101,
312 VK_FORMAT_BC3_UNORM = 102,
313 VK_FORMAT_BC3_SRGB = 103,
314 VK_FORMAT_BC4_UNORM = 104,
315 VK_FORMAT_BC4_SNORM = 105,
316 VK_FORMAT_BC5_UNORM = 106,
317 VK_FORMAT_BC5_SNORM = 107,
318 VK_FORMAT_BC6H_UFLOAT = 108,
319 VK_FORMAT_BC6H_SFLOAT = 109,
320 VK_FORMAT_BC7_UNORM = 110,
321 VK_FORMAT_BC7_SRGB = 111,
322 VK_FORMAT_ETC2_R8G8B8_UNORM = 112,
323 VK_FORMAT_ETC2_R8G8B8_SRGB = 113,
324 VK_FORMAT_ETC2_R8G8B8A1_UNORM = 114,
325 VK_FORMAT_ETC2_R8G8B8A1_SRGB = 115,
326 VK_FORMAT_ETC2_R8G8B8A8_UNORM = 116,
327 VK_FORMAT_ETC2_R8G8B8A8_SRGB = 117,
328 VK_FORMAT_EAC_R11_UNORM = 118,
329 VK_FORMAT_EAC_R11_SNORM = 119,
330 VK_FORMAT_EAC_R11G11_UNORM = 120,
331 VK_FORMAT_EAC_R11G11_SNORM = 121,
332 VK_FORMAT_ASTC_4x4_UNORM = 122,
333 VK_FORMAT_ASTC_4x4_SRGB = 123,
334 VK_FORMAT_ASTC_5x4_UNORM = 124,
335 VK_FORMAT_ASTC_5x4_SRGB = 125,
336 VK_FORMAT_ASTC_5x5_UNORM = 126,
337 VK_FORMAT_ASTC_5x5_SRGB = 127,
338 VK_FORMAT_ASTC_6x5_UNORM = 128,
339 VK_FORMAT_ASTC_6x5_SRGB = 129,
340 VK_FORMAT_ASTC_6x6_UNORM = 130,
341 VK_FORMAT_ASTC_6x6_SRGB = 131,
342 VK_FORMAT_ASTC_8x5_UNORM = 132,
343 VK_FORMAT_ASTC_8x5_SRGB = 133,
344 VK_FORMAT_ASTC_8x6_UNORM = 134,
345 VK_FORMAT_ASTC_8x6_SRGB = 135,
346 VK_FORMAT_ASTC_8x8_UNORM = 136,
347 VK_FORMAT_ASTC_8x8_SRGB = 137,
348 VK_FORMAT_ASTC_10x5_UNORM = 138,
349 VK_FORMAT_ASTC_10x5_SRGB = 139,
350 VK_FORMAT_ASTC_10x6_UNORM = 140,
351 VK_FORMAT_ASTC_10x6_SRGB = 141,
352 VK_FORMAT_ASTC_10x8_UNORM = 142,
353 VK_FORMAT_ASTC_10x8_SRGB = 143,
354 VK_FORMAT_ASTC_10x10_UNORM = 144,
355 VK_FORMAT_ASTC_10x10_SRGB = 145,
356 VK_FORMAT_ASTC_12x10_UNORM = 146,
357 VK_FORMAT_ASTC_12x10_SRGB = 147,
358 VK_FORMAT_ASTC_12x12_UNORM = 148,
359 VK_FORMAT_ASTC_12x12_SRGB = 149,
360 VK_FORMAT_B4G4R4A4_UNORM = 150,
361 VK_FORMAT_B5G5R5A1_UNORM = 151,
362 VK_FORMAT_B5G6R5_UNORM = 152,
363 VK_FORMAT_B5G6R5_USCALED = 153,
364 VK_FORMAT_B8G8R8_UNORM = 154,
365 VK_FORMAT_B8G8R8_SNORM = 155,
366 VK_FORMAT_B8G8R8_USCALED = 156,
367 VK_FORMAT_B8G8R8_SSCALED = 157,
368 VK_FORMAT_B8G8R8_UINT = 158,
369 VK_FORMAT_B8G8R8_SINT = 159,
370 VK_FORMAT_B8G8R8_SRGB = 160,
371 VK_FORMAT_B8G8R8A8_UNORM = 161,
372 VK_FORMAT_B8G8R8A8_SNORM = 162,
373 VK_FORMAT_B8G8R8A8_USCALED = 163,
374 VK_FORMAT_B8G8R8A8_SSCALED = 164,
375 VK_FORMAT_B8G8R8A8_UINT = 165,
376 VK_FORMAT_B8G8R8A8_SINT = 166,
377 VK_FORMAT_B8G8R8A8_SRGB = 167,
378 VK_FORMAT_B10G10R10A2_UNORM = 168,
379 VK_FORMAT_B10G10R10A2_SNORM = 169,
380 VK_FORMAT_B10G10R10A2_USCALED = 170,
381 VK_FORMAT_B10G10R10A2_SSCALED = 171,
382 VK_FORMAT_B10G10R10A2_UINT = 172,
383 VK_FORMAT_B10G10R10A2_SINT = 173,
384 VK_FORMAT_BEGIN_RANGE = VK_FORMAT_UNDEFINED,
385 VK_FORMAT_END_RANGE = VK_FORMAT_B10G10R10A2_SINT,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800386 VK_FORMAT_RANGE_SIZE = (VK_FORMAT_B10G10R10A2_SINT - VK_FORMAT_UNDEFINED + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700387 VK_FORMAT_MAX_ENUM = 0x7FFFFFFF
388} VkFormat;
389
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800390typedef enum VkImageType {
Jesse Hall04f4f472015-08-16 19:51:04 -0700391 VK_IMAGE_TYPE_1D = 0,
392 VK_IMAGE_TYPE_2D = 1,
393 VK_IMAGE_TYPE_3D = 2,
394 VK_IMAGE_TYPE_BEGIN_RANGE = VK_IMAGE_TYPE_1D,
395 VK_IMAGE_TYPE_END_RANGE = VK_IMAGE_TYPE_3D,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800396 VK_IMAGE_TYPE_RANGE_SIZE = (VK_IMAGE_TYPE_3D - VK_IMAGE_TYPE_1D + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700397 VK_IMAGE_TYPE_MAX_ENUM = 0x7FFFFFFF
398} VkImageType;
399
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800400typedef enum VkImageTiling {
Jesse Hallc7467b72015-11-29 21:05:26 -0800401 VK_IMAGE_TILING_OPTIMAL = 0,
402 VK_IMAGE_TILING_LINEAR = 1,
403 VK_IMAGE_TILING_BEGIN_RANGE = VK_IMAGE_TILING_OPTIMAL,
404 VK_IMAGE_TILING_END_RANGE = VK_IMAGE_TILING_LINEAR,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800405 VK_IMAGE_TILING_RANGE_SIZE = (VK_IMAGE_TILING_LINEAR - VK_IMAGE_TILING_OPTIMAL + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700406 VK_IMAGE_TILING_MAX_ENUM = 0x7FFFFFFF
407} VkImageTiling;
408
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800409typedef enum VkPhysicalDeviceType {
Jesse Hall04f4f472015-08-16 19:51:04 -0700410 VK_PHYSICAL_DEVICE_TYPE_OTHER = 0,
411 VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 1,
412 VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 2,
413 VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 3,
414 VK_PHYSICAL_DEVICE_TYPE_CPU = 4,
415 VK_PHYSICAL_DEVICE_TYPE_BEGIN_RANGE = VK_PHYSICAL_DEVICE_TYPE_OTHER,
416 VK_PHYSICAL_DEVICE_TYPE_END_RANGE = VK_PHYSICAL_DEVICE_TYPE_CPU,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800417 VK_PHYSICAL_DEVICE_TYPE_RANGE_SIZE = (VK_PHYSICAL_DEVICE_TYPE_CPU - VK_PHYSICAL_DEVICE_TYPE_OTHER + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700418 VK_PHYSICAL_DEVICE_TYPE_MAX_ENUM = 0x7FFFFFFF
419} VkPhysicalDeviceType;
420
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800421typedef enum VkQueryType {
Jesse Hall04f4f472015-08-16 19:51:04 -0700422 VK_QUERY_TYPE_OCCLUSION = 0,
423 VK_QUERY_TYPE_PIPELINE_STATISTICS = 1,
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800424 VK_QUERY_TYPE_TIMESTAMP = 2,
Jesse Hall04f4f472015-08-16 19:51:04 -0700425 VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_TYPE_OCCLUSION,
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800426 VK_QUERY_TYPE_END_RANGE = VK_QUERY_TYPE_TIMESTAMP,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800427 VK_QUERY_TYPE_RANGE_SIZE = (VK_QUERY_TYPE_TIMESTAMP - VK_QUERY_TYPE_OCCLUSION + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700428 VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF
429} VkQueryType;
430
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800431typedef enum VkSharingMode {
Jesse Hall04f4f472015-08-16 19:51:04 -0700432 VK_SHARING_MODE_EXCLUSIVE = 0,
433 VK_SHARING_MODE_CONCURRENT = 1,
434 VK_SHARING_MODE_BEGIN_RANGE = VK_SHARING_MODE_EXCLUSIVE,
435 VK_SHARING_MODE_END_RANGE = VK_SHARING_MODE_CONCURRENT,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800436 VK_SHARING_MODE_RANGE_SIZE = (VK_SHARING_MODE_CONCURRENT - VK_SHARING_MODE_EXCLUSIVE + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700437 VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF
438} VkSharingMode;
439
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800440typedef enum VkImageLayout {
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700441 VK_IMAGE_LAYOUT_UNDEFINED = 0,
442 VK_IMAGE_LAYOUT_GENERAL = 1,
443 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 2,
444 VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 3,
445 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 4,
446 VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 5,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800447 VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 6,
448 VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 7,
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700449 VK_IMAGE_LAYOUT_PREINITIALIZED = 8,
450 VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED,
451 VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_PREINITIALIZED,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800452 VK_IMAGE_LAYOUT_RANGE_SIZE = (VK_IMAGE_LAYOUT_PREINITIALIZED - VK_IMAGE_LAYOUT_UNDEFINED + 1),
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700453 VK_IMAGE_LAYOUT_MAX_ENUM = 0x7FFFFFFF
454} VkImageLayout;
Jesse Hall04f4f472015-08-16 19:51:04 -0700455
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800456typedef enum VkImageViewType {
Jesse Hall04f4f472015-08-16 19:51:04 -0700457 VK_IMAGE_VIEW_TYPE_1D = 0,
458 VK_IMAGE_VIEW_TYPE_2D = 1,
459 VK_IMAGE_VIEW_TYPE_3D = 2,
460 VK_IMAGE_VIEW_TYPE_CUBE = 3,
461 VK_IMAGE_VIEW_TYPE_1D_ARRAY = 4,
462 VK_IMAGE_VIEW_TYPE_2D_ARRAY = 5,
463 VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 6,
464 VK_IMAGE_VIEW_TYPE_BEGIN_RANGE = VK_IMAGE_VIEW_TYPE_1D,
465 VK_IMAGE_VIEW_TYPE_END_RANGE = VK_IMAGE_VIEW_TYPE_CUBE_ARRAY,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800466 VK_IMAGE_VIEW_TYPE_RANGE_SIZE = (VK_IMAGE_VIEW_TYPE_CUBE_ARRAY - VK_IMAGE_VIEW_TYPE_1D + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700467 VK_IMAGE_VIEW_TYPE_MAX_ENUM = 0x7FFFFFFF
468} VkImageViewType;
469
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800470typedef enum VkComponentSwizzle {
Jesse Hall65ab5522015-11-30 00:07:16 -0800471 VK_COMPONENT_SWIZZLE_IDENTITY = 0,
472 VK_COMPONENT_SWIZZLE_ZERO = 1,
473 VK_COMPONENT_SWIZZLE_ONE = 2,
474 VK_COMPONENT_SWIZZLE_R = 3,
475 VK_COMPONENT_SWIZZLE_G = 4,
476 VK_COMPONENT_SWIZZLE_B = 5,
477 VK_COMPONENT_SWIZZLE_A = 6,
478 VK_COMPONENT_SWIZZLE_BEGIN_RANGE = VK_COMPONENT_SWIZZLE_IDENTITY,
479 VK_COMPONENT_SWIZZLE_END_RANGE = VK_COMPONENT_SWIZZLE_A,
480 VK_COMPONENT_SWIZZLE_RANGE_SIZE = (VK_COMPONENT_SWIZZLE_A - VK_COMPONENT_SWIZZLE_IDENTITY + 1),
481 VK_COMPONENT_SWIZZLE_MAX_ENUM = 0x7FFFFFFF
482} VkComponentSwizzle;
Jesse Hall04f4f472015-08-16 19:51:04 -0700483
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800484typedef enum VkVertexInputRate {
Jesse Hall65ab5522015-11-30 00:07:16 -0800485 VK_VERTEX_INPUT_RATE_VERTEX = 0,
486 VK_VERTEX_INPUT_RATE_INSTANCE = 1,
487 VK_VERTEX_INPUT_RATE_BEGIN_RANGE = VK_VERTEX_INPUT_RATE_VERTEX,
488 VK_VERTEX_INPUT_RATE_END_RANGE = VK_VERTEX_INPUT_RATE_INSTANCE,
489 VK_VERTEX_INPUT_RATE_RANGE_SIZE = (VK_VERTEX_INPUT_RATE_INSTANCE - VK_VERTEX_INPUT_RATE_VERTEX + 1),
490 VK_VERTEX_INPUT_RATE_MAX_ENUM = 0x7FFFFFFF
491} VkVertexInputRate;
Jesse Hall04f4f472015-08-16 19:51:04 -0700492
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800493typedef enum VkPrimitiveTopology {
Jesse Hall04f4f472015-08-16 19:51:04 -0700494 VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0,
495 VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 1,
496 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 2,
497 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 3,
498 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 4,
499 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 5,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800500 VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 6,
501 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 7,
502 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 8,
503 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 9,
Jesse Hall091ed9e2015-11-30 00:55:29 -0800504 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 10,
Jesse Hall04f4f472015-08-16 19:51:04 -0700505 VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE = VK_PRIMITIVE_TOPOLOGY_POINT_LIST,
Jesse Hall091ed9e2015-11-30 00:55:29 -0800506 VK_PRIMITIVE_TOPOLOGY_END_RANGE = VK_PRIMITIVE_TOPOLOGY_PATCH_LIST,
507 VK_PRIMITIVE_TOPOLOGY_RANGE_SIZE = (VK_PRIMITIVE_TOPOLOGY_PATCH_LIST - VK_PRIMITIVE_TOPOLOGY_POINT_LIST + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700508 VK_PRIMITIVE_TOPOLOGY_MAX_ENUM = 0x7FFFFFFF
509} VkPrimitiveTopology;
510
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800511typedef enum VkPolygonMode {
Jesse Hall65ab5522015-11-30 00:07:16 -0800512 VK_POLYGON_MODE_FILL = 0,
513 VK_POLYGON_MODE_LINE = 1,
514 VK_POLYGON_MODE_POINT = 2,
515 VK_POLYGON_MODE_BEGIN_RANGE = VK_POLYGON_MODE_FILL,
516 VK_POLYGON_MODE_END_RANGE = VK_POLYGON_MODE_POINT,
517 VK_POLYGON_MODE_RANGE_SIZE = (VK_POLYGON_MODE_POINT - VK_POLYGON_MODE_FILL + 1),
518 VK_POLYGON_MODE_MAX_ENUM = 0x7FFFFFFF
519} VkPolygonMode;
Jesse Hall04f4f472015-08-16 19:51:04 -0700520
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800521typedef enum VkFrontFace {
Jesse Hall3fbc8562015-11-29 22:10:52 -0800522 VK_FRONT_FACE_COUNTER_CLOCKWISE = 0,
523 VK_FRONT_FACE_CLOCKWISE = 1,
524 VK_FRONT_FACE_BEGIN_RANGE = VK_FRONT_FACE_COUNTER_CLOCKWISE,
525 VK_FRONT_FACE_END_RANGE = VK_FRONT_FACE_CLOCKWISE,
526 VK_FRONT_FACE_RANGE_SIZE = (VK_FRONT_FACE_CLOCKWISE - VK_FRONT_FACE_COUNTER_CLOCKWISE + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700527 VK_FRONT_FACE_MAX_ENUM = 0x7FFFFFFF
528} VkFrontFace;
529
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800530typedef enum VkCompareOp {
Jesse Hall04f4f472015-08-16 19:51:04 -0700531 VK_COMPARE_OP_NEVER = 0,
532 VK_COMPARE_OP_LESS = 1,
533 VK_COMPARE_OP_EQUAL = 2,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800534 VK_COMPARE_OP_LESS_OR_EQUAL = 3,
Jesse Hall04f4f472015-08-16 19:51:04 -0700535 VK_COMPARE_OP_GREATER = 4,
536 VK_COMPARE_OP_NOT_EQUAL = 5,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800537 VK_COMPARE_OP_GREATER_OR_EQUAL = 6,
Jesse Hall04f4f472015-08-16 19:51:04 -0700538 VK_COMPARE_OP_ALWAYS = 7,
539 VK_COMPARE_OP_BEGIN_RANGE = VK_COMPARE_OP_NEVER,
540 VK_COMPARE_OP_END_RANGE = VK_COMPARE_OP_ALWAYS,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800541 VK_COMPARE_OP_RANGE_SIZE = (VK_COMPARE_OP_ALWAYS - VK_COMPARE_OP_NEVER + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700542 VK_COMPARE_OP_MAX_ENUM = 0x7FFFFFFF
543} VkCompareOp;
544
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800545typedef enum VkStencilOp {
Jesse Hall04f4f472015-08-16 19:51:04 -0700546 VK_STENCIL_OP_KEEP = 0,
547 VK_STENCIL_OP_ZERO = 1,
548 VK_STENCIL_OP_REPLACE = 2,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800549 VK_STENCIL_OP_INCREMENT_AND_CLAMP = 3,
550 VK_STENCIL_OP_DECREMENT_AND_CLAMP = 4,
Jesse Hall04f4f472015-08-16 19:51:04 -0700551 VK_STENCIL_OP_INVERT = 5,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800552 VK_STENCIL_OP_INCREMENT_AND_WRAP = 6,
553 VK_STENCIL_OP_DECREMENT_AND_WRAP = 7,
Jesse Hall04f4f472015-08-16 19:51:04 -0700554 VK_STENCIL_OP_BEGIN_RANGE = VK_STENCIL_OP_KEEP,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800555 VK_STENCIL_OP_END_RANGE = VK_STENCIL_OP_DECREMENT_AND_WRAP,
556 VK_STENCIL_OP_RANGE_SIZE = (VK_STENCIL_OP_DECREMENT_AND_WRAP - VK_STENCIL_OP_KEEP + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700557 VK_STENCIL_OP_MAX_ENUM = 0x7FFFFFFF
558} VkStencilOp;
559
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800560typedef enum VkLogicOp {
Jesse Hall04f4f472015-08-16 19:51:04 -0700561 VK_LOGIC_OP_CLEAR = 0,
562 VK_LOGIC_OP_AND = 1,
563 VK_LOGIC_OP_AND_REVERSE = 2,
564 VK_LOGIC_OP_COPY = 3,
565 VK_LOGIC_OP_AND_INVERTED = 4,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800566 VK_LOGIC_OP_NO_OP = 5,
Jesse Hall04f4f472015-08-16 19:51:04 -0700567 VK_LOGIC_OP_XOR = 6,
568 VK_LOGIC_OP_OR = 7,
569 VK_LOGIC_OP_NOR = 8,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800570 VK_LOGIC_OP_EQUIVALENT = 9,
Jesse Hall04f4f472015-08-16 19:51:04 -0700571 VK_LOGIC_OP_INVERT = 10,
572 VK_LOGIC_OP_OR_REVERSE = 11,
573 VK_LOGIC_OP_COPY_INVERTED = 12,
574 VK_LOGIC_OP_OR_INVERTED = 13,
575 VK_LOGIC_OP_NAND = 14,
576 VK_LOGIC_OP_SET = 15,
577 VK_LOGIC_OP_BEGIN_RANGE = VK_LOGIC_OP_CLEAR,
578 VK_LOGIC_OP_END_RANGE = VK_LOGIC_OP_SET,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800579 VK_LOGIC_OP_RANGE_SIZE = (VK_LOGIC_OP_SET - VK_LOGIC_OP_CLEAR + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700580 VK_LOGIC_OP_MAX_ENUM = 0x7FFFFFFF
581} VkLogicOp;
582
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800583typedef enum VkBlendFactor {
Jesse Hall65ab5522015-11-30 00:07:16 -0800584 VK_BLEND_FACTOR_ZERO = 0,
585 VK_BLEND_FACTOR_ONE = 1,
586 VK_BLEND_FACTOR_SRC_COLOR = 2,
587 VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 3,
588 VK_BLEND_FACTOR_DST_COLOR = 4,
589 VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 5,
590 VK_BLEND_FACTOR_SRC_ALPHA = 6,
591 VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 7,
592 VK_BLEND_FACTOR_DST_ALPHA = 8,
593 VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 9,
594 VK_BLEND_FACTOR_CONSTANT_COLOR = 10,
595 VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 11,
596 VK_BLEND_FACTOR_CONSTANT_ALPHA = 12,
597 VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 13,
598 VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 14,
599 VK_BLEND_FACTOR_SRC1_COLOR = 15,
600 VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 16,
601 VK_BLEND_FACTOR_SRC1_ALPHA = 17,
602 VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 18,
603 VK_BLEND_FACTOR_BEGIN_RANGE = VK_BLEND_FACTOR_ZERO,
604 VK_BLEND_FACTOR_END_RANGE = VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA,
605 VK_BLEND_FACTOR_RANGE_SIZE = (VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA - VK_BLEND_FACTOR_ZERO + 1),
606 VK_BLEND_FACTOR_MAX_ENUM = 0x7FFFFFFF
607} VkBlendFactor;
Jesse Hall04f4f472015-08-16 19:51:04 -0700608
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800609typedef enum VkBlendOp {
Jesse Hall04f4f472015-08-16 19:51:04 -0700610 VK_BLEND_OP_ADD = 0,
611 VK_BLEND_OP_SUBTRACT = 1,
612 VK_BLEND_OP_REVERSE_SUBTRACT = 2,
613 VK_BLEND_OP_MIN = 3,
614 VK_BLEND_OP_MAX = 4,
615 VK_BLEND_OP_BEGIN_RANGE = VK_BLEND_OP_ADD,
616 VK_BLEND_OP_END_RANGE = VK_BLEND_OP_MAX,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800617 VK_BLEND_OP_RANGE_SIZE = (VK_BLEND_OP_MAX - VK_BLEND_OP_ADD + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700618 VK_BLEND_OP_MAX_ENUM = 0x7FFFFFFF
619} VkBlendOp;
620
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800621typedef enum VkDynamicState {
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700622 VK_DYNAMIC_STATE_VIEWPORT = 0,
623 VK_DYNAMIC_STATE_SCISSOR = 1,
624 VK_DYNAMIC_STATE_LINE_WIDTH = 2,
625 VK_DYNAMIC_STATE_DEPTH_BIAS = 3,
626 VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4,
627 VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5,
628 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6,
629 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7,
630 VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8,
631 VK_DYNAMIC_STATE_BEGIN_RANGE = VK_DYNAMIC_STATE_VIEWPORT,
632 VK_DYNAMIC_STATE_END_RANGE = VK_DYNAMIC_STATE_STENCIL_REFERENCE,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800633 VK_DYNAMIC_STATE_RANGE_SIZE = (VK_DYNAMIC_STATE_STENCIL_REFERENCE - VK_DYNAMIC_STATE_VIEWPORT + 1),
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700634 VK_DYNAMIC_STATE_MAX_ENUM = 0x7FFFFFFF
635} VkDynamicState;
636
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800637typedef enum VkFilter {
Jesse Hall23ff73f2015-11-29 14:36:39 -0800638 VK_FILTER_NEAREST = 0,
639 VK_FILTER_LINEAR = 1,
640 VK_FILTER_BEGIN_RANGE = VK_FILTER_NEAREST,
641 VK_FILTER_END_RANGE = VK_FILTER_LINEAR,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800642 VK_FILTER_RANGE_SIZE = (VK_FILTER_LINEAR - VK_FILTER_NEAREST + 1),
Jesse Hall23ff73f2015-11-29 14:36:39 -0800643 VK_FILTER_MAX_ENUM = 0x7FFFFFFF
644} VkFilter;
Jesse Hall04f4f472015-08-16 19:51:04 -0700645
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800646typedef enum VkSamplerMipmapMode {
Jesse Hall23ff73f2015-11-29 14:36:39 -0800647 VK_SAMPLER_MIPMAP_MODE_BASE = 0,
648 VK_SAMPLER_MIPMAP_MODE_NEAREST = 1,
649 VK_SAMPLER_MIPMAP_MODE_LINEAR = 2,
650 VK_SAMPLER_MIPMAP_MODE_BEGIN_RANGE = VK_SAMPLER_MIPMAP_MODE_BASE,
651 VK_SAMPLER_MIPMAP_MODE_END_RANGE = VK_SAMPLER_MIPMAP_MODE_LINEAR,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800652 VK_SAMPLER_MIPMAP_MODE_RANGE_SIZE = (VK_SAMPLER_MIPMAP_MODE_LINEAR - VK_SAMPLER_MIPMAP_MODE_BASE + 1),
Jesse Hall23ff73f2015-11-29 14:36:39 -0800653 VK_SAMPLER_MIPMAP_MODE_MAX_ENUM = 0x7FFFFFFF
654} VkSamplerMipmapMode;
Jesse Hall04f4f472015-08-16 19:51:04 -0700655
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800656typedef enum VkSamplerAddressMode {
Jesse Hallc7467b72015-11-29 21:05:26 -0800657 VK_SAMPLER_ADDRESS_MODE_REPEAT = 0,
658 VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 1,
659 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 2,
660 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 3,
661 VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 4,
662 VK_SAMPLER_ADDRESS_MODE_BEGIN_RANGE = VK_SAMPLER_ADDRESS_MODE_REPEAT,
663 VK_SAMPLER_ADDRESS_MODE_END_RANGE = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800664 VK_SAMPLER_ADDRESS_MODE_RANGE_SIZE = (VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE - VK_SAMPLER_ADDRESS_MODE_REPEAT + 1),
Jesse Hall23ff73f2015-11-29 14:36:39 -0800665 VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF
666} VkSamplerAddressMode;
Jesse Hall04f4f472015-08-16 19:51:04 -0700667
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800668typedef enum VkBorderColor {
Jesse Hall04f4f472015-08-16 19:51:04 -0700669 VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0,
670 VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 1,
671 VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 2,
672 VK_BORDER_COLOR_INT_OPAQUE_BLACK = 3,
673 VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 4,
674 VK_BORDER_COLOR_INT_OPAQUE_WHITE = 5,
675 VK_BORDER_COLOR_BEGIN_RANGE = VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK,
676 VK_BORDER_COLOR_END_RANGE = VK_BORDER_COLOR_INT_OPAQUE_WHITE,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800677 VK_BORDER_COLOR_RANGE_SIZE = (VK_BORDER_COLOR_INT_OPAQUE_WHITE - VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700678 VK_BORDER_COLOR_MAX_ENUM = 0x7FFFFFFF
679} VkBorderColor;
680
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800681typedef enum VkDescriptorType {
Jesse Hall04f4f472015-08-16 19:51:04 -0700682 VK_DESCRIPTOR_TYPE_SAMPLER = 0,
683 VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 1,
684 VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 2,
685 VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 3,
686 VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 4,
687 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 5,
688 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 6,
689 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 7,
690 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 8,
691 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 9,
692 VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 10,
693 VK_DESCRIPTOR_TYPE_BEGIN_RANGE = VK_DESCRIPTOR_TYPE_SAMPLER,
694 VK_DESCRIPTOR_TYPE_END_RANGE = VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800695 VK_DESCRIPTOR_TYPE_RANGE_SIZE = (VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT - VK_DESCRIPTOR_TYPE_SAMPLER + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700696 VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF
697} VkDescriptorType;
698
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800699typedef enum VkAttachmentLoadOp {
Jesse Hall04f4f472015-08-16 19:51:04 -0700700 VK_ATTACHMENT_LOAD_OP_LOAD = 0,
701 VK_ATTACHMENT_LOAD_OP_CLEAR = 1,
702 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 2,
703 VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE = VK_ATTACHMENT_LOAD_OP_LOAD,
704 VK_ATTACHMENT_LOAD_OP_END_RANGE = VK_ATTACHMENT_LOAD_OP_DONT_CARE,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800705 VK_ATTACHMENT_LOAD_OP_RANGE_SIZE = (VK_ATTACHMENT_LOAD_OP_DONT_CARE - VK_ATTACHMENT_LOAD_OP_LOAD + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700706 VK_ATTACHMENT_LOAD_OP_MAX_ENUM = 0x7FFFFFFF
707} VkAttachmentLoadOp;
708
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800709typedef enum VkAttachmentStoreOp {
Jesse Hall04f4f472015-08-16 19:51:04 -0700710 VK_ATTACHMENT_STORE_OP_STORE = 0,
711 VK_ATTACHMENT_STORE_OP_DONT_CARE = 1,
712 VK_ATTACHMENT_STORE_OP_BEGIN_RANGE = VK_ATTACHMENT_STORE_OP_STORE,
713 VK_ATTACHMENT_STORE_OP_END_RANGE = VK_ATTACHMENT_STORE_OP_DONT_CARE,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800714 VK_ATTACHMENT_STORE_OP_RANGE_SIZE = (VK_ATTACHMENT_STORE_OP_DONT_CARE - VK_ATTACHMENT_STORE_OP_STORE + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700715 VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF
716} VkAttachmentStoreOp;
717
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800718typedef enum VkPipelineBindPoint {
Jesse Hallc7467b72015-11-29 21:05:26 -0800719 VK_PIPELINE_BIND_POINT_GRAPHICS = 0,
720 VK_PIPELINE_BIND_POINT_COMPUTE = 1,
721 VK_PIPELINE_BIND_POINT_BEGIN_RANGE = VK_PIPELINE_BIND_POINT_GRAPHICS,
722 VK_PIPELINE_BIND_POINT_END_RANGE = VK_PIPELINE_BIND_POINT_COMPUTE,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800723 VK_PIPELINE_BIND_POINT_RANGE_SIZE = (VK_PIPELINE_BIND_POINT_COMPUTE - VK_PIPELINE_BIND_POINT_GRAPHICS + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700724 VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF
725} VkPipelineBindPoint;
726
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800727typedef enum VkCommandBufferLevel {
Jesse Hall3fbc8562015-11-29 22:10:52 -0800728 VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0,
729 VK_COMMAND_BUFFER_LEVEL_SECONDARY = 1,
730 VK_COMMAND_BUFFER_LEVEL_BEGIN_RANGE = VK_COMMAND_BUFFER_LEVEL_PRIMARY,
731 VK_COMMAND_BUFFER_LEVEL_END_RANGE = VK_COMMAND_BUFFER_LEVEL_SECONDARY,
732 VK_COMMAND_BUFFER_LEVEL_RANGE_SIZE = (VK_COMMAND_BUFFER_LEVEL_SECONDARY - VK_COMMAND_BUFFER_LEVEL_PRIMARY + 1),
733 VK_COMMAND_BUFFER_LEVEL_MAX_ENUM = 0x7FFFFFFF
734} VkCommandBufferLevel;
Jesse Hall04f4f472015-08-16 19:51:04 -0700735
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800736typedef enum VkIndexType {
Jesse Hall04f4f472015-08-16 19:51:04 -0700737 VK_INDEX_TYPE_UINT16 = 0,
738 VK_INDEX_TYPE_UINT32 = 1,
739 VK_INDEX_TYPE_BEGIN_RANGE = VK_INDEX_TYPE_UINT16,
740 VK_INDEX_TYPE_END_RANGE = VK_INDEX_TYPE_UINT32,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800741 VK_INDEX_TYPE_RANGE_SIZE = (VK_INDEX_TYPE_UINT32 - VK_INDEX_TYPE_UINT16 + 1),
Jesse Hall04f4f472015-08-16 19:51:04 -0700742 VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF
743} VkIndexType;
744
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800745typedef enum VkSubpassContents {
Jesse Hall65ab5522015-11-30 00:07:16 -0800746 VK_SUBPASS_CONTENTS_INLINE = 0,
747 VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1,
748 VK_SUBPASS_CONTENTS_BEGIN_RANGE = VK_SUBPASS_CONTENTS_INLINE,
749 VK_SUBPASS_CONTENTS_END_RANGE = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS,
750 VK_SUBPASS_CONTENTS_RANGE_SIZE = (VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS - VK_SUBPASS_CONTENTS_INLINE + 1),
751 VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF
752} VkSubpassContents;
Jesse Hall04f4f472015-08-16 19:51:04 -0700753
Jesse Halla6429252015-11-29 18:59:42 -0800754typedef VkFlags VkInstanceCreateFlags;
Jesse Hall04f4f472015-08-16 19:51:04 -0700755
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800756typedef enum VkFormatFeatureFlagBits {
Jesse Hall04f4f472015-08-16 19:51:04 -0700757 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001,
758 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002,
759 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004,
760 VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008,
761 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010,
762 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020,
763 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040,
764 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080,
765 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100,
766 VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800767 VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400,
768 VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800,
Jesse Hall04f4f472015-08-16 19:51:04 -0700769} VkFormatFeatureFlagBits;
770typedef VkFlags VkFormatFeatureFlags;
771
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800772typedef enum VkImageUsageFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -0800773 VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001,
774 VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002,
Jesse Hall04f4f472015-08-16 19:51:04 -0700775 VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004,
776 VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008,
777 VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010,
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700778 VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020,
Jesse Hall04f4f472015-08-16 19:51:04 -0700779 VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040,
780 VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080,
781} VkImageUsageFlagBits;
782typedef VkFlags VkImageUsageFlags;
783
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800784typedef enum VkImageCreateFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700785 VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001,
786 VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
787 VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
788 VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008,
789 VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010,
790} VkImageCreateFlagBits;
791typedef VkFlags VkImageCreateFlags;
792
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800793typedef enum VkSampleCountFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700794 VK_SAMPLE_COUNT_1_BIT = 0x00000001,
795 VK_SAMPLE_COUNT_2_BIT = 0x00000002,
796 VK_SAMPLE_COUNT_4_BIT = 0x00000004,
797 VK_SAMPLE_COUNT_8_BIT = 0x00000008,
798 VK_SAMPLE_COUNT_16_BIT = 0x00000010,
799 VK_SAMPLE_COUNT_32_BIT = 0x00000020,
800 VK_SAMPLE_COUNT_64_BIT = 0x00000040,
801} VkSampleCountFlagBits;
802typedef VkFlags VkSampleCountFlags;
803
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800804typedef enum VkQueueFlagBits {
Jesse Hall04f4f472015-08-16 19:51:04 -0700805 VK_QUEUE_GRAPHICS_BIT = 0x00000001,
806 VK_QUEUE_COMPUTE_BIT = 0x00000002,
Jesse Hall65ab5522015-11-30 00:07:16 -0800807 VK_QUEUE_TRANSFER_BIT = 0x00000004,
Jesse Hallb00daad2015-11-29 19:46:20 -0800808 VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008,
Jesse Hall04f4f472015-08-16 19:51:04 -0700809} VkQueueFlagBits;
810typedef VkFlags VkQueueFlags;
811
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800812typedef enum VkMemoryPropertyFlagBits {
Jesse Halld1af8122015-11-29 23:50:38 -0800813 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
814 VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
815 VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
816 VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
817 VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
Jesse Hall04f4f472015-08-16 19:51:04 -0700818} VkMemoryPropertyFlagBits;
819typedef VkFlags VkMemoryPropertyFlags;
820
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800821typedef enum VkMemoryHeapFlagBits {
Jesse Halld1af8122015-11-29 23:50:38 -0800822 VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
Jesse Hall04f4f472015-08-16 19:51:04 -0700823} VkMemoryHeapFlagBits;
824typedef VkFlags VkMemoryHeapFlags;
Jesse Halla6429252015-11-29 18:59:42 -0800825typedef VkFlags VkDeviceCreateFlags;
826typedef VkFlags VkDeviceQueueCreateFlags;
Jesse Hall04f4f472015-08-16 19:51:04 -0700827typedef VkFlags VkMemoryMapFlags;
828
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800829typedef enum VkImageAspectFlagBits {
Jesse Halla15a4bf2015-11-19 22:48:02 -0800830 VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
831 VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
832 VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
833 VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
834} VkImageAspectFlagBits;
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800835typedef VkFlags VkImageAspectFlags;
Jesse Halla15a4bf2015-11-19 22:48:02 -0800836
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800837typedef enum VkSparseImageFormatFlagBits {
Jesse Hallb00daad2015-11-29 19:46:20 -0800838 VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001,
839 VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002,
840 VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004,
Jesse Hall04f4f472015-08-16 19:51:04 -0700841} VkSparseImageFormatFlagBits;
842typedef VkFlags VkSparseImageFormatFlags;
Jesse Hall091ed9e2015-11-30 00:55:29 -0800843
844typedef enum VkSparseMemoryBindFlagBits {
845 VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
846} VkSparseMemoryBindFlagBits;
Jesse Hall04f4f472015-08-16 19:51:04 -0700847typedef VkFlags VkSparseMemoryBindFlags;
848
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800849typedef enum VkFenceCreateFlagBits {
Jesse Hall04f4f472015-08-16 19:51:04 -0700850 VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
851} VkFenceCreateFlagBits;
852typedef VkFlags VkFenceCreateFlags;
853typedef VkFlags VkSemaphoreCreateFlags;
854typedef VkFlags VkEventCreateFlags;
Jesse Halla6429252015-11-29 18:59:42 -0800855typedef VkFlags VkQueryPoolCreateFlags;
Jesse Hall04f4f472015-08-16 19:51:04 -0700856
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800857typedef enum VkQueryPipelineStatisticFlagBits {
Jesse Hallae38f732015-11-19 21:32:50 -0800858 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001,
859 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002,
860 VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004,
861 VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008,
862 VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010,
863 VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020,
864 VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040,
865 VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080,
866 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100,
867 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200,
868 VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400,
Jesse Hall04f4f472015-08-16 19:51:04 -0700869} VkQueryPipelineStatisticFlagBits;
870typedef VkFlags VkQueryPipelineStatisticFlags;
871
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800872typedef enum VkQueryResultFlagBits {
Jesse Hall04f4f472015-08-16 19:51:04 -0700873 VK_QUERY_RESULT_DEFAULT = 0,
874 VK_QUERY_RESULT_64_BIT = 0x00000001,
875 VK_QUERY_RESULT_WAIT_BIT = 0x00000002,
876 VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004,
877 VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008,
878} VkQueryResultFlagBits;
879typedef VkFlags VkQueryResultFlags;
880
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800881typedef enum VkBufferCreateFlagBits {
Jesse Halla6429252015-11-29 18:59:42 -0800882 VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001,
883 VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002,
884 VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004,
885} VkBufferCreateFlagBits;
886typedef VkFlags VkBufferCreateFlags;
887
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800888typedef enum VkBufferUsageFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -0800889 VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001,
890 VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002,
Jesse Hall04f4f472015-08-16 19:51:04 -0700891 VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004,
892 VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008,
893 VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010,
894 VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020,
895 VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040,
896 VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080,
897 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100,
898} VkBufferUsageFlagBits;
899typedef VkFlags VkBufferUsageFlags;
Jesse Halla6429252015-11-29 18:59:42 -0800900typedef VkFlags VkBufferViewCreateFlags;
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700901typedef VkFlags VkImageViewCreateFlags;
Jesse Hall04f4f472015-08-16 19:51:04 -0700902typedef VkFlags VkShaderModuleCreateFlags;
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800903typedef VkFlags VkPipelineCacheCreateFlags;
Jesse Hall04f4f472015-08-16 19:51:04 -0700904
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800905typedef enum VkPipelineCreateFlagBits {
906 VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
907 VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
908 VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
909} VkPipelineCreateFlagBits;
910typedef VkFlags VkPipelineCreateFlags;
911typedef VkFlags VkPipelineShaderStageCreateFlags;
912
913typedef enum VkShaderStageFlagBits {
Jesse Halla15a4bf2015-11-19 22:48:02 -0800914 VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
915 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
916 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
917 VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
918 VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
919 VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
Jesse Hallc7467b72015-11-29 21:05:26 -0800920 VK_SHADER_STAGE_ALL_GRAPHICS = 0x1F,
Jesse Halla15a4bf2015-11-19 22:48:02 -0800921 VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
922} VkShaderStageFlagBits;
Jesse Halla6429252015-11-29 18:59:42 -0800923typedef VkFlags VkPipelineVertexInputStateCreateFlags;
924typedef VkFlags VkPipelineInputAssemblyStateCreateFlags;
925typedef VkFlags VkPipelineTesselationStateCreateFlags;
926typedef VkFlags VkPipelineViewportStateCreateFlags;
Jesse Hall3fbc8562015-11-29 22:10:52 -0800927typedef VkFlags VkPipelineRasterizationStateCreateFlags;
Jesse Hallc7467b72015-11-29 21:05:26 -0800928
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800929typedef enum VkCullModeFlagBits {
Jesse Hallc7467b72015-11-29 21:05:26 -0800930 VK_CULL_MODE_NONE = 0,
931 VK_CULL_MODE_FRONT_BIT = 0x00000001,
932 VK_CULL_MODE_BACK_BIT = 0x00000002,
933 VK_CULL_MODE_FRONT_AND_BACK = 0x3,
934} VkCullModeFlagBits;
935typedef VkFlags VkCullModeFlags;
Jesse Halla6429252015-11-29 18:59:42 -0800936typedef VkFlags VkPipelineMultisampleStateCreateFlags;
937typedef VkFlags VkPipelineDepthStencilStateCreateFlags;
938typedef VkFlags VkPipelineColorBlendStateCreateFlags;
Jesse Halla15a4bf2015-11-19 22:48:02 -0800939
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800940typedef enum VkColorComponentFlagBits {
Jesse Hall65ab5522015-11-30 00:07:16 -0800941 VK_COLOR_COMPONENT_R_BIT = 0x00000001,
942 VK_COLOR_COMPONENT_G_BIT = 0x00000002,
943 VK_COLOR_COMPONENT_B_BIT = 0x00000004,
944 VK_COLOR_COMPONENT_A_BIT = 0x00000008,
945} VkColorComponentFlagBits;
946typedef VkFlags VkColorComponentFlags;
Jesse Halla6429252015-11-29 18:59:42 -0800947typedef VkFlags VkPipelineDynamicStateCreateFlags;
948typedef VkFlags VkPipelineLayoutCreateFlags;
Jesse Hall04f4f472015-08-16 19:51:04 -0700949typedef VkFlags VkShaderStageFlags;
Jesse Halla6429252015-11-29 18:59:42 -0800950typedef VkFlags VkSamplerCreateFlags;
951typedef VkFlags VkDescriptorSetLayoutCreateFlags;
Jesse Hall04f4f472015-08-16 19:51:04 -0700952
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800953typedef enum VkDescriptorPoolCreateFlagBits {
Jesse Hallfbf97b02015-11-20 14:17:03 -0800954 VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
955} VkDescriptorPoolCreateFlagBits;
956typedef VkFlags VkDescriptorPoolCreateFlags;
957typedef VkFlags VkDescriptorPoolResetFlags;
Jesse Halla6429252015-11-29 18:59:42 -0800958typedef VkFlags VkFramebufferCreateFlags;
959typedef VkFlags VkRenderPassCreateFlags;
Jesse Hallfbf97b02015-11-20 14:17:03 -0800960
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800961typedef enum VkAttachmentDescriptionFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700962 VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001,
963} VkAttachmentDescriptionFlagBits;
964typedef VkFlags VkAttachmentDescriptionFlags;
Jesse Hall04f4f472015-08-16 19:51:04 -0700965typedef VkFlags VkSubpassDescriptionFlags;
966
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800967typedef enum VkPipelineStageFlagBits {
Jesse Hall04f4f472015-08-16 19:51:04 -0700968 VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001,
969 VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002,
970 VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004,
971 VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008,
Jesse Hallae38f732015-11-19 21:32:50 -0800972 VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010,
973 VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020,
Jesse Hall04f4f472015-08-16 19:51:04 -0700974 VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040,
975 VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080,
976 VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100,
977 VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200,
978 VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400,
979 VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800,
980 VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000,
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700981 VK_PIPELINE_STAGE_HOST_BIT = 0x00002000,
Jesse Hall091ed9e2015-11-30 00:55:29 -0800982 VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00004000,
983 VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00008000,
Jesse Hall04f4f472015-08-16 19:51:04 -0700984} VkPipelineStageFlagBits;
985typedef VkFlags VkPipelineStageFlags;
986
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800987typedef enum VkAccessFlagBits {
988 VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
989 VK_ACCESS_INDEX_READ_BIT = 0x00000002,
990 VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
991 VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
992 VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
993 VK_ACCESS_SHADER_READ_BIT = 0x00000020,
994 VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
995 VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
996 VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
997 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
998 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
999 VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
1000 VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
1001 VK_ACCESS_HOST_READ_BIT = 0x00002000,
1002 VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
1003 VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
1004 VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
1005} VkAccessFlagBits;
1006typedef VkFlags VkAccessFlags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001007
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001008typedef enum VkDependencyFlagBits {
Jesse Halldc6d36c2015-11-29 19:12:15 -08001009 VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
1010} VkDependencyFlagBits;
1011typedef VkFlags VkDependencyFlags;
1012
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001013typedef enum VkCommandPoolCreateFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -08001014 VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001,
1015 VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002,
1016} VkCommandPoolCreateFlagBits;
1017typedef VkFlags VkCommandPoolCreateFlags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001018
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001019typedef enum VkCommandPoolResetFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -08001020 VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
1021} VkCommandPoolResetFlagBits;
1022typedef VkFlags VkCommandPoolResetFlags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001023
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001024typedef enum VkCommandBufferUsageFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -08001025 VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
1026 VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
1027 VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
1028} VkCommandBufferUsageFlagBits;
1029typedef VkFlags VkCommandBufferUsageFlags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001030
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001031typedef enum VkCommandBufferResetFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -08001032 VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001,
1033} VkCommandBufferResetFlagBits;
1034typedef VkFlags VkCommandBufferResetFlags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001035
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001036typedef enum VkStencilFaceFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001037 VK_STENCIL_FACE_NONE = 0,
1038 VK_STENCIL_FACE_FRONT_BIT = 0x00000001,
1039 VK_STENCIL_FACE_BACK_BIT = 0x00000002,
Jesse Hallc7467b72015-11-29 21:05:26 -08001040 VK_STENCIL_FRONT_AND_BACK = 0x3,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001041} VkStencilFaceFlagBits;
1042typedef VkFlags VkStencilFaceFlags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001043
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001044typedef enum VkQueryControlFlagBits {
Jesse Hall65ab5522015-11-30 00:07:16 -08001045 VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
Jesse Hall04f4f472015-08-16 19:51:04 -07001046} VkQueryControlFlagBits;
1047typedef VkFlags VkQueryControlFlags;
1048
Jesse Halle1b12782015-11-30 11:27:32 -08001049typedef void* (VKAPI_PTR *PFN_vkAllocationFunction)(
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001050 void* pUserData,
1051 size_t size,
1052 size_t alignment,
1053 VkSystemAllocationScope allocationScope);
Jesse Hall03b6fe12015-11-24 12:44:21 -08001054
Jesse Halle1b12782015-11-30 11:27:32 -08001055typedef void* (VKAPI_PTR *PFN_vkReallocationFunction)(
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001056 void* pUserData,
1057 void* pOriginal,
1058 size_t size,
1059 size_t alignment,
1060 VkSystemAllocationScope allocationScope);
Jesse Hall04f4f472015-08-16 19:51:04 -07001061
Jesse Halle1b12782015-11-30 11:27:32 -08001062typedef void (VKAPI_PTR *PFN_vkFreeFunction)(
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001063 void* pUserData,
1064 void* pMemory);
Jesse Hall04f4f472015-08-16 19:51:04 -07001065
Jesse Halle1b12782015-11-30 11:27:32 -08001066typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)(
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001067 void* pUserData,
1068 size_t size,
1069 VkInternalAllocationType allocationType,
1070 VkSystemAllocationScope allocationScope);
Jesse Hall03b6fe12015-11-24 12:44:21 -08001071
Jesse Halle1b12782015-11-30 11:27:32 -08001072typedef void (VKAPI_PTR *PFN_vkInternalFreeNotification)(
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001073 void* pUserData,
1074 size_t size,
1075 VkInternalAllocationType allocationType,
1076 VkSystemAllocationScope allocationScope);
Jesse Hall03b6fe12015-11-24 12:44:21 -08001077
Jesse Halle1b12782015-11-30 11:27:32 -08001078typedef void (VKAPI_PTR *PFN_vkVoidFunction)(void);
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001079
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001080typedef struct VkApplicationInfo {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001081 VkStructureType sType;
1082 const void* pNext;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001083 const char* pApplicationName;
1084 uint32_t applicationVersion;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001085 const char* pEngineName;
1086 uint32_t engineVersion;
1087 uint32_t apiVersion;
1088} VkApplicationInfo;
1089
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001090typedef struct VkInstanceCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001091 VkStructureType sType;
1092 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001093 VkInstanceCreateFlags flags;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001094 const VkApplicationInfo* pApplicationInfo;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001095 uint32_t enabledLayerNameCount;
Jesse Hall04f4f472015-08-16 19:51:04 -07001096 const char*const* ppEnabledLayerNames;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001097 uint32_t enabledExtensionNameCount;
Jesse Hall04f4f472015-08-16 19:51:04 -07001098 const char*const* ppEnabledExtensionNames;
1099} VkInstanceCreateInfo;
1100
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001101typedef struct VkAllocationCallbacks {
Jesse Hall03b6fe12015-11-24 12:44:21 -08001102 void* pUserData;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001103 PFN_vkAllocationFunction pfnAllocation;
1104 PFN_vkReallocationFunction pfnReallocation;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001105 PFN_vkFreeFunction pfnFree;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001106 PFN_vkInternalAllocationNotification pfnInternalAllocation;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001107 PFN_vkInternalFreeNotification pfnInternalFree;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001108} VkAllocationCallbacks;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001109
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001110typedef struct VkPhysicalDeviceFeatures {
Jesse Hall04f4f472015-08-16 19:51:04 -07001111 VkBool32 robustBufferAccess;
1112 VkBool32 fullDrawIndexUint32;
1113 VkBool32 imageCubeArray;
1114 VkBool32 independentBlend;
1115 VkBool32 geometryShader;
1116 VkBool32 tessellationShader;
1117 VkBool32 sampleRateShading;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001118 VkBool32 dualSrcBlend;
Jesse Hall04f4f472015-08-16 19:51:04 -07001119 VkBool32 logicOp;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001120 VkBool32 multiDrawIndirect;
Jesse Hallae38f732015-11-19 21:32:50 -08001121 VkBool32 depthClamp;
Jesse Hall04f4f472015-08-16 19:51:04 -07001122 VkBool32 depthBiasClamp;
1123 VkBool32 fillModeNonSolid;
1124 VkBool32 depthBounds;
1125 VkBool32 wideLines;
1126 VkBool32 largePoints;
Jesse Hallfbf97b02015-11-20 14:17:03 -08001127 VkBool32 alphaToOne;
1128 VkBool32 multiViewport;
1129 VkBool32 samplerAnisotropy;
Jesse Hall04f4f472015-08-16 19:51:04 -07001130 VkBool32 textureCompressionETC2;
1131 VkBool32 textureCompressionASTC_LDR;
1132 VkBool32 textureCompressionBC;
Jesse Hall65ab5522015-11-30 00:07:16 -08001133 VkBool32 occlusionQueryPrecise;
Jesse Hall04f4f472015-08-16 19:51:04 -07001134 VkBool32 pipelineStatisticsQuery;
Jesse Halldc6d36c2015-11-29 19:12:15 -08001135 VkBool32 vertexPipelineStoresAndAtomics;
1136 VkBool32 fragmentStoresAndAtomics;
1137 VkBool32 shaderTessellationAndGeometryPointSize;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001138 VkBool32 shaderImageGatherExtended;
Jesse Hall04f4f472015-08-16 19:51:04 -07001139 VkBool32 shaderStorageImageExtendedFormats;
1140 VkBool32 shaderStorageImageMultisample;
Jesse Halld1af8122015-11-29 23:50:38 -08001141 VkBool32 shaderStorageImageReadWithoutFormat;
1142 VkBool32 shaderStorageImageWriteWithoutFormat;
Jesse Hall04f4f472015-08-16 19:51:04 -07001143 VkBool32 shaderUniformBufferArrayDynamicIndexing;
1144 VkBool32 shaderSampledImageArrayDynamicIndexing;
1145 VkBool32 shaderStorageBufferArrayDynamicIndexing;
1146 VkBool32 shaderStorageImageArrayDynamicIndexing;
1147 VkBool32 shaderClipDistance;
1148 VkBool32 shaderCullDistance;
1149 VkBool32 shaderFloat64;
1150 VkBool32 shaderInt64;
Jesse Hall04f4f472015-08-16 19:51:04 -07001151 VkBool32 shaderInt16;
1152 VkBool32 shaderResourceResidency;
Jesse Hall65ab5522015-11-30 00:07:16 -08001153 VkBool32 shaderResourceMinLod;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001154 VkBool32 sparseBinding;
Jesse Hall04f4f472015-08-16 19:51:04 -07001155 VkBool32 sparseResidencyBuffer;
1156 VkBool32 sparseResidencyImage2D;
1157 VkBool32 sparseResidencyImage3D;
1158 VkBool32 sparseResidency2Samples;
1159 VkBool32 sparseResidency4Samples;
1160 VkBool32 sparseResidency8Samples;
1161 VkBool32 sparseResidency16Samples;
Jesse Hall04f4f472015-08-16 19:51:04 -07001162 VkBool32 sparseResidencyAliased;
Jesse Halld1af8122015-11-29 23:50:38 -08001163 VkBool32 variableMultisampleRate;
Jesse Hall04f4f472015-08-16 19:51:04 -07001164} VkPhysicalDeviceFeatures;
1165
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001166typedef struct VkFormatProperties {
Jesse Hall04f4f472015-08-16 19:51:04 -07001167 VkFormatFeatureFlags linearTilingFeatures;
1168 VkFormatFeatureFlags optimalTilingFeatures;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001169 VkFormatFeatureFlags bufferFeatures;
Jesse Hall04f4f472015-08-16 19:51:04 -07001170} VkFormatProperties;
1171
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001172typedef struct VkExtent3D {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001173 int32_t width;
1174 int32_t height;
1175 int32_t depth;
1176} VkExtent3D;
1177
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001178typedef struct VkImageFormatProperties {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001179 VkExtent3D maxExtent;
1180 uint32_t maxMipLevels;
Jesse Halla15a4bf2015-11-19 22:48:02 -08001181 uint32_t maxArrayLayers;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001182 VkSampleCountFlags sampleCounts;
1183 VkDeviceSize maxResourceSize;
Jesse Hall04f4f472015-08-16 19:51:04 -07001184} VkImageFormatProperties;
1185
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001186typedef struct VkPhysicalDeviceLimits {
Jesse Hall04f4f472015-08-16 19:51:04 -07001187 uint32_t maxImageDimension1D;
1188 uint32_t maxImageDimension2D;
1189 uint32_t maxImageDimension3D;
1190 uint32_t maxImageDimensionCube;
1191 uint32_t maxImageArrayLayers;
Jesse Hallb00daad2015-11-29 19:46:20 -08001192 uint32_t maxTexelBufferElements;
Jesse Hallfbf97b02015-11-20 14:17:03 -08001193 uint32_t maxUniformBufferRange;
1194 uint32_t maxStorageBufferRange;
Jesse Hall04f4f472015-08-16 19:51:04 -07001195 uint32_t maxPushConstantsSize;
1196 uint32_t maxMemoryAllocationCount;
Jesse Hall091ed9e2015-11-30 00:55:29 -08001197 uint32_t maxSamplerAllocationCount;
Jesse Hall04f4f472015-08-16 19:51:04 -07001198 VkDeviceSize bufferImageGranularity;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001199 VkDeviceSize sparseAddressSpaceSize;
Jesse Hall04f4f472015-08-16 19:51:04 -07001200 uint32_t maxBoundDescriptorSets;
Jesse Hall04f4f472015-08-16 19:51:04 -07001201 uint32_t maxPerStageDescriptorSamplers;
1202 uint32_t maxPerStageDescriptorUniformBuffers;
1203 uint32_t maxPerStageDescriptorStorageBuffers;
1204 uint32_t maxPerStageDescriptorSampledImages;
1205 uint32_t maxPerStageDescriptorStorageImages;
Jesse Halle1b12782015-11-30 11:27:32 -08001206 uint32_t maxPerStageDescriptorInputAttachments;
Jesse Hall04f4f472015-08-16 19:51:04 -07001207 uint32_t maxDescriptorSetSamplers;
1208 uint32_t maxDescriptorSetUniformBuffers;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001209 uint32_t maxDescriptorSetUniformBuffersDynamic;
Jesse Hall04f4f472015-08-16 19:51:04 -07001210 uint32_t maxDescriptorSetStorageBuffers;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001211 uint32_t maxDescriptorSetStorageBuffersDynamic;
Jesse Hall04f4f472015-08-16 19:51:04 -07001212 uint32_t maxDescriptorSetSampledImages;
1213 uint32_t maxDescriptorSetStorageImages;
Jesse Halle1b12782015-11-30 11:27:32 -08001214 uint32_t maxDescriptorSetInputAttachments;
Jesse Hall04f4f472015-08-16 19:51:04 -07001215 uint32_t maxVertexInputAttributes;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001216 uint32_t maxVertexInputBindings;
Jesse Hall04f4f472015-08-16 19:51:04 -07001217 uint32_t maxVertexInputAttributeOffset;
1218 uint32_t maxVertexInputBindingStride;
1219 uint32_t maxVertexOutputComponents;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001220 uint32_t maxTessellationGenerationLevel;
Jesse Hallae38f732015-11-19 21:32:50 -08001221 uint32_t maxTessellationPatchSize;
1222 uint32_t maxTessellationControlPerVertexInputComponents;
1223 uint32_t maxTessellationControlPerVertexOutputComponents;
1224 uint32_t maxTessellationControlPerPatchOutputComponents;
1225 uint32_t maxTessellationControlTotalOutputComponents;
1226 uint32_t maxTessellationEvaluationInputComponents;
1227 uint32_t maxTessellationEvaluationOutputComponents;
Jesse Hall04f4f472015-08-16 19:51:04 -07001228 uint32_t maxGeometryShaderInvocations;
1229 uint32_t maxGeometryInputComponents;
1230 uint32_t maxGeometryOutputComponents;
1231 uint32_t maxGeometryOutputVertices;
1232 uint32_t maxGeometryTotalOutputComponents;
1233 uint32_t maxFragmentInputComponents;
Jesse Hallfbf97b02015-11-20 14:17:03 -08001234 uint32_t maxFragmentOutputAttachments;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001235 uint32_t maxFragmentDualSrcAttachments;
Jesse Hall04f4f472015-08-16 19:51:04 -07001236 uint32_t maxFragmentCombinedOutputResources;
1237 uint32_t maxComputeSharedMemorySize;
1238 uint32_t maxComputeWorkGroupCount[3];
1239 uint32_t maxComputeWorkGroupInvocations;
1240 uint32_t maxComputeWorkGroupSize[3];
1241 uint32_t subPixelPrecisionBits;
1242 uint32_t subTexelPrecisionBits;
1243 uint32_t mipmapPrecisionBits;
1244 uint32_t maxDrawIndexedIndexValue;
1245 uint32_t maxDrawIndirectInstanceCount;
Jesse Hall04f4f472015-08-16 19:51:04 -07001246 float maxSamplerLodBias;
1247 float maxSamplerAnisotropy;
1248 uint32_t maxViewports;
Jesse Hall04f4f472015-08-16 19:51:04 -07001249 uint32_t maxViewportDimensions[2];
1250 float viewportBoundsRange[2];
1251 uint32_t viewportSubPixelBits;
Jesse Halldc6d36c2015-11-29 19:12:15 -08001252 size_t minMemoryMapAlignment;
1253 VkDeviceSize minTexelBufferOffsetAlignment;
1254 VkDeviceSize minUniformBufferOffsetAlignment;
1255 VkDeviceSize minStorageBufferOffsetAlignment;
Jesse Hallfbf97b02015-11-20 14:17:03 -08001256 int32_t minTexelOffset;
Jesse Hall04f4f472015-08-16 19:51:04 -07001257 uint32_t maxTexelOffset;
Jesse Hallfbf97b02015-11-20 14:17:03 -08001258 int32_t minTexelGatherOffset;
Jesse Hall04f4f472015-08-16 19:51:04 -07001259 uint32_t maxTexelGatherOffset;
1260 float minInterpolationOffset;
1261 float maxInterpolationOffset;
1262 uint32_t subPixelInterpolationOffsetBits;
1263 uint32_t maxFramebufferWidth;
1264 uint32_t maxFramebufferHeight;
1265 uint32_t maxFramebufferLayers;
Jesse Hall091ed9e2015-11-30 00:55:29 -08001266 VkSampleCountFlags framebufferColorSampleCounts;
1267 VkSampleCountFlags framebufferDepthSampleCounts;
1268 VkSampleCountFlags framebufferStencilSampleCounts;
1269 VkSampleCountFlags framebufferNoAttachmentsSampleCounts;
Jesse Hall04f4f472015-08-16 19:51:04 -07001270 uint32_t maxColorAttachments;
Jesse Hall091ed9e2015-11-30 00:55:29 -08001271 VkSampleCountFlags sampledImageColorSampleCounts;
1272 VkSampleCountFlags sampledImageIntegerSampleCounts;
1273 VkSampleCountFlags sampledImageDepthSampleCounts;
1274 VkSampleCountFlags sampledImageStencilSampleCounts;
1275 VkSampleCountFlags storageImageSampleCounts;
Jesse Hall04f4f472015-08-16 19:51:04 -07001276 uint32_t maxSampleMaskWords;
Jesse Halla9bb62b2015-11-21 19:31:56 -08001277 float timestampPeriod;
Jesse Hall04f4f472015-08-16 19:51:04 -07001278 uint32_t maxClipDistances;
1279 uint32_t maxCullDistances;
1280 uint32_t maxCombinedClipAndCullDistances;
Jesse Hallfbf97b02015-11-20 14:17:03 -08001281 uint32_t discreteQueuePriorities;
Jesse Hall04f4f472015-08-16 19:51:04 -07001282 float pointSizeRange[2];
1283 float lineWidthRange[2];
1284 float pointSizeGranularity;
1285 float lineWidthGranularity;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001286 VkBool32 strictLines;
Jesse Hall091ed9e2015-11-30 00:55:29 -08001287 VkBool32 standardSampleLocations;
Jesse Hall65ab5522015-11-30 00:07:16 -08001288 VkDeviceSize optimalBufferCopyOffsetAlignment;
1289 VkDeviceSize optimalBufferCopyRowPitchAlignment;
Jesse Hall04f4f472015-08-16 19:51:04 -07001290} VkPhysicalDeviceLimits;
1291
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001292typedef struct VkPhysicalDeviceSparseProperties {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001293 VkBool32 residencyStandard2DBlockShape;
Jesse Hallb00daad2015-11-29 19:46:20 -08001294 VkBool32 residencyStandard2DMultisampleBlockShape;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001295 VkBool32 residencyStandard3DBlockShape;
1296 VkBool32 residencyAlignedMipSize;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001297 VkBool32 residencyNonResidentStrict;
1298} VkPhysicalDeviceSparseProperties;
1299
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001300typedef struct VkPhysicalDeviceProperties {
Jesse Hall04f4f472015-08-16 19:51:04 -07001301 uint32_t apiVersion;
1302 uint32_t driverVersion;
Jesse Hall65ab5522015-11-30 00:07:16 -08001303 uint32_t vendorID;
1304 uint32_t deviceID;
Jesse Hall04f4f472015-08-16 19:51:04 -07001305 VkPhysicalDeviceType deviceType;
Jesse Hall65ab5522015-11-30 00:07:16 -08001306 char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE];
1307 uint8_t pipelineCacheUUID[VK_UUID_SIZE];
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001308 VkPhysicalDeviceLimits limits;
1309 VkPhysicalDeviceSparseProperties sparseProperties;
Jesse Hall04f4f472015-08-16 19:51:04 -07001310} VkPhysicalDeviceProperties;
1311
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001312typedef struct VkQueueFamilyProperties {
Jesse Hall04f4f472015-08-16 19:51:04 -07001313 VkQueueFlags queueFlags;
1314 uint32_t queueCount;
Jesse Hallacfa5342015-11-19 21:51:33 -08001315 uint32_t timestampValidBits;
Jesse Hall65ab5522015-11-30 00:07:16 -08001316 VkExtent3D minImageTransferGranularity;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001317} VkQueueFamilyProperties;
Jesse Hall04f4f472015-08-16 19:51:04 -07001318
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001319typedef struct VkMemoryType {
Jesse Hall04f4f472015-08-16 19:51:04 -07001320 VkMemoryPropertyFlags propertyFlags;
1321 uint32_t heapIndex;
1322} VkMemoryType;
1323
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001324typedef struct VkMemoryHeap {
Jesse Hall04f4f472015-08-16 19:51:04 -07001325 VkDeviceSize size;
1326 VkMemoryHeapFlags flags;
1327} VkMemoryHeap;
1328
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001329typedef struct VkPhysicalDeviceMemoryProperties {
Jesse Hall04f4f472015-08-16 19:51:04 -07001330 uint32_t memoryTypeCount;
1331 VkMemoryType memoryTypes[VK_MAX_MEMORY_TYPES];
1332 uint32_t memoryHeapCount;
1333 VkMemoryHeap memoryHeaps[VK_MAX_MEMORY_HEAPS];
1334} VkPhysicalDeviceMemoryProperties;
1335
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001336typedef struct VkDeviceQueueCreateInfo {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001337 VkStructureType sType;
1338 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001339 VkDeviceQueueCreateFlags flags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001340 uint32_t queueFamilyIndex;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001341 uint32_t queuePriorityCount;
Jesse Hallfbf97b02015-11-20 14:17:03 -08001342 const float* pQueuePriorities;
Jesse Hall04f4f472015-08-16 19:51:04 -07001343} VkDeviceQueueCreateInfo;
1344
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001345typedef struct VkDeviceCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001346 VkStructureType sType;
1347 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001348 VkDeviceCreateFlags flags;
Jesse Hallae38f732015-11-19 21:32:50 -08001349 uint32_t requestedQueueCount;
Jesse Hall04f4f472015-08-16 19:51:04 -07001350 const VkDeviceQueueCreateInfo* pRequestedQueues;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001351 uint32_t enabledLayerNameCount;
Jesse Hall04f4f472015-08-16 19:51:04 -07001352 const char*const* ppEnabledLayerNames;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001353 uint32_t enabledExtensionNameCount;
Jesse Hall04f4f472015-08-16 19:51:04 -07001354 const char*const* ppEnabledExtensionNames;
1355 const VkPhysicalDeviceFeatures* pEnabledFeatures;
Jesse Hall04f4f472015-08-16 19:51:04 -07001356} VkDeviceCreateInfo;
1357
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001358typedef struct VkExtensionProperties {
Jesse Hall65ab5522015-11-30 00:07:16 -08001359 char extensionName[VK_MAX_EXTENSION_NAME_SIZE];
Jesse Hall04f4f472015-08-16 19:51:04 -07001360 uint32_t specVersion;
1361} VkExtensionProperties;
1362
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001363typedef struct VkLayerProperties {
Jesse Hall65ab5522015-11-30 00:07:16 -08001364 char layerName[VK_MAX_EXTENSION_NAME_SIZE];
Jesse Hall04f4f472015-08-16 19:51:04 -07001365 uint32_t specVersion;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001366 uint32_t implementationVersion;
Jesse Hall65ab5522015-11-30 00:07:16 -08001367 char description[VK_MAX_DESCRIPTION_SIZE];
Jesse Hall04f4f472015-08-16 19:51:04 -07001368} VkLayerProperties;
1369
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001370typedef struct VkSubmitInfo {
Jesse Hall03b6fe12015-11-24 12:44:21 -08001371 VkStructureType sType;
1372 const void* pNext;
1373 uint32_t waitSemaphoreCount;
Jesse Halla366a512015-11-19 22:30:07 -08001374 const VkSemaphore* pWaitSemaphores;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001375 uint32_t commandBufferCount;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001376 const VkCommandBuffer* pCommandBuffers;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001377 uint32_t signalSemaphoreCount;
Jesse Halla366a512015-11-19 22:30:07 -08001378 const VkSemaphore* pSignalSemaphores;
1379} VkSubmitInfo;
1380
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001381typedef struct VkMemoryAllocateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001382 VkStructureType sType;
1383 const void* pNext;
1384 VkDeviceSize allocationSize;
1385 uint32_t memoryTypeIndex;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001386} VkMemoryAllocateInfo;
Jesse Hall04f4f472015-08-16 19:51:04 -07001387
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001388typedef struct VkMappedMemoryRange {
Jesse Hall04f4f472015-08-16 19:51:04 -07001389 VkStructureType sType;
1390 const void* pNext;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001391 VkDeviceMemory memory;
Jesse Hall04f4f472015-08-16 19:51:04 -07001392 VkDeviceSize offset;
1393 VkDeviceSize size;
1394} VkMappedMemoryRange;
1395
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001396typedef struct VkMemoryRequirements {
Jesse Hall04f4f472015-08-16 19:51:04 -07001397 VkDeviceSize size;
1398 VkDeviceSize alignment;
1399 uint32_t memoryTypeBits;
1400} VkMemoryRequirements;
1401
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001402typedef struct VkSparseImageFormatProperties {
1403 VkImageAspectFlags aspectMask;
Jesse Hall04f4f472015-08-16 19:51:04 -07001404 VkExtent3D imageGranularity;
1405 VkSparseImageFormatFlags flags;
1406} VkSparseImageFormatProperties;
1407
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001408typedef struct VkSparseImageMemoryRequirements {
Jesse Hallb00daad2015-11-29 19:46:20 -08001409 VkSparseImageFormatProperties formatProperties;
Jesse Hall65ab5522015-11-30 00:07:16 -08001410 uint32_t imageMipTailStartLod;
Jesse Hall04f4f472015-08-16 19:51:04 -07001411 VkDeviceSize imageMipTailSize;
1412 VkDeviceSize imageMipTailOffset;
1413 VkDeviceSize imageMipTailStride;
1414} VkSparseImageMemoryRequirements;
1415
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001416typedef struct VkSparseMemoryBind {
Jesse Hallb00daad2015-11-29 19:46:20 -08001417 VkDeviceSize resourceOffset;
1418 VkDeviceSize size;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001419 VkDeviceMemory memory;
1420 VkDeviceSize memoryOffset;
Jesse Hall04f4f472015-08-16 19:51:04 -07001421 VkSparseMemoryBindFlags flags;
Jesse Halla6429252015-11-29 18:59:42 -08001422} VkSparseMemoryBind;
1423
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001424typedef struct VkSparseBufferMemoryBindInfo {
Jesse Halla6429252015-11-29 18:59:42 -08001425 VkBuffer buffer;
1426 uint32_t bindCount;
1427 const VkSparseMemoryBind* pBinds;
1428} VkSparseBufferMemoryBindInfo;
1429
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001430typedef struct VkSparseImageOpaqueMemoryBindInfo {
Jesse Halla6429252015-11-29 18:59:42 -08001431 VkImage image;
1432 uint32_t bindCount;
1433 const VkSparseMemoryBind* pBinds;
1434} VkSparseImageOpaqueMemoryBindInfo;
Jesse Hall04f4f472015-08-16 19:51:04 -07001435
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001436typedef struct VkImageSubresource {
1437 VkImageAspectFlags aspectMask;
Jesse Hall04f4f472015-08-16 19:51:04 -07001438 uint32_t mipLevel;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001439 uint32_t arrayLayer;
Jesse Hall04f4f472015-08-16 19:51:04 -07001440} VkImageSubresource;
1441
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001442typedef struct VkOffset3D {
Jesse Hall04f4f472015-08-16 19:51:04 -07001443 int32_t x;
1444 int32_t y;
1445 int32_t z;
1446} VkOffset3D;
1447
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001448typedef struct VkSparseImageMemoryBind {
Jesse Hall04f4f472015-08-16 19:51:04 -07001449 VkImageSubresource subresource;
1450 VkOffset3D offset;
1451 VkExtent3D extent;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001452 VkDeviceMemory memory;
1453 VkDeviceSize memoryOffset;
Jesse Hall04f4f472015-08-16 19:51:04 -07001454 VkSparseMemoryBindFlags flags;
Jesse Halla6429252015-11-29 18:59:42 -08001455} VkSparseImageMemoryBind;
1456
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001457typedef struct VkSparseImageMemoryBindInfo {
Jesse Halla6429252015-11-29 18:59:42 -08001458 VkImage image;
1459 uint32_t bindCount;
1460 const VkSparseImageMemoryBind* pBinds;
Jesse Hall04f4f472015-08-16 19:51:04 -07001461} VkSparseImageMemoryBindInfo;
1462
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001463typedef struct VkBindSparseInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001464 VkStructureType sType;
1465 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001466 uint32_t waitSemaphoreCount;
1467 const VkSemaphore* pWaitSemaphores;
1468 uint32_t bufferBindCount;
1469 const VkSparseBufferMemoryBindInfo* pBufferBinds;
1470 uint32_t imageOpaqueBindCount;
1471 const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds;
1472 uint32_t imageBindCount;
1473 const VkSparseImageMemoryBindInfo* pImageBinds;
1474 uint32_t signalSemaphoreCount;
1475 const VkSemaphore* pSignalSemaphores;
1476} VkBindSparseInfo;
1477
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001478typedef struct VkFenceCreateInfo {
Jesse Halla6429252015-11-29 18:59:42 -08001479 VkStructureType sType;
1480 const void* pNext;
Jesse Hall04f4f472015-08-16 19:51:04 -07001481 VkFenceCreateFlags flags;
1482} VkFenceCreateInfo;
1483
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001484typedef struct VkSemaphoreCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001485 VkStructureType sType;
1486 const void* pNext;
1487 VkSemaphoreCreateFlags flags;
1488} VkSemaphoreCreateInfo;
1489
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001490typedef struct VkEventCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001491 VkStructureType sType;
1492 const void* pNext;
1493 VkEventCreateFlags flags;
1494} VkEventCreateInfo;
1495
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001496typedef struct VkQueryPoolCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001497 VkStructureType sType;
1498 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001499 VkQueryPoolCreateFlags flags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001500 VkQueryType queryType;
Jesse Hall65ab5522015-11-30 00:07:16 -08001501 uint32_t entryCount;
Jesse Hall04f4f472015-08-16 19:51:04 -07001502 VkQueryPipelineStatisticFlags pipelineStatistics;
1503} VkQueryPoolCreateInfo;
1504
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001505typedef struct VkBufferCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001506 VkStructureType sType;
1507 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001508 VkBufferCreateFlags flags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001509 VkDeviceSize size;
1510 VkBufferUsageFlags usage;
Jesse Hall04f4f472015-08-16 19:51:04 -07001511 VkSharingMode sharingMode;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001512 uint32_t queueFamilyIndexCount;
Jesse Hall04f4f472015-08-16 19:51:04 -07001513 const uint32_t* pQueueFamilyIndices;
1514} VkBufferCreateInfo;
1515
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001516typedef struct VkBufferViewCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001517 VkStructureType sType;
1518 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001519 VkBufferViewCreateFlags flags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001520 VkBuffer buffer;
Jesse Hall04f4f472015-08-16 19:51:04 -07001521 VkFormat format;
1522 VkDeviceSize offset;
1523 VkDeviceSize range;
1524} VkBufferViewCreateInfo;
1525
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001526typedef struct VkImageCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001527 VkStructureType sType;
1528 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001529 VkImageCreateFlags flags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001530 VkImageType imageType;
1531 VkFormat format;
1532 VkExtent3D extent;
1533 uint32_t mipLevels;
Jesse Halla15a4bf2015-11-19 22:48:02 -08001534 uint32_t arrayLayers;
Jesse Hall091ed9e2015-11-30 00:55:29 -08001535 VkSampleCountFlagBits samples;
Jesse Hall04f4f472015-08-16 19:51:04 -07001536 VkImageTiling tiling;
1537 VkImageUsageFlags usage;
Jesse Hall04f4f472015-08-16 19:51:04 -07001538 VkSharingMode sharingMode;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001539 uint32_t queueFamilyIndexCount;
Jesse Hall04f4f472015-08-16 19:51:04 -07001540 const uint32_t* pQueueFamilyIndices;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001541 VkImageLayout initialLayout;
Jesse Hall04f4f472015-08-16 19:51:04 -07001542} VkImageCreateInfo;
1543
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001544typedef struct VkSubresourceLayout {
Jesse Hall04f4f472015-08-16 19:51:04 -07001545 VkDeviceSize offset;
1546 VkDeviceSize size;
1547 VkDeviceSize rowPitch;
1548 VkDeviceSize depthPitch;
1549} VkSubresourceLayout;
1550
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001551typedef struct VkComponentMapping {
Jesse Hall65ab5522015-11-30 00:07:16 -08001552 VkComponentSwizzle r;
1553 VkComponentSwizzle g;
1554 VkComponentSwizzle b;
1555 VkComponentSwizzle a;
1556} VkComponentMapping;
Jesse Hall04f4f472015-08-16 19:51:04 -07001557
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001558typedef struct VkImageSubresourceRange {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001559 VkImageAspectFlags aspectMask;
Jesse Hall04f4f472015-08-16 19:51:04 -07001560 uint32_t baseMipLevel;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001561 uint32_t levelCount;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001562 uint32_t baseArrayLayer;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001563 uint32_t layerCount;
Jesse Hall04f4f472015-08-16 19:51:04 -07001564} VkImageSubresourceRange;
1565
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001566typedef struct VkImageViewCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001567 VkStructureType sType;
1568 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001569 VkImageViewCreateFlags flags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001570 VkImage image;
1571 VkImageViewType viewType;
1572 VkFormat format;
Jesse Hall65ab5522015-11-30 00:07:16 -08001573 VkComponentMapping components;
Jesse Hall04f4f472015-08-16 19:51:04 -07001574 VkImageSubresourceRange subresourceRange;
1575} VkImageViewCreateInfo;
1576
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001577typedef struct VkShaderModuleCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001578 VkStructureType sType;
1579 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001580 VkShaderModuleCreateFlags flags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001581 size_t codeSize;
Jesse Halla9bb62b2015-11-21 19:31:56 -08001582 const uint32_t* pCode;
Jesse Hall04f4f472015-08-16 19:51:04 -07001583} VkShaderModuleCreateInfo;
1584
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001585typedef struct VkPipelineCacheCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001586 VkStructureType sType;
1587 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001588 VkPipelineCacheCreateFlags flags;
Jesse Hallb00daad2015-11-29 19:46:20 -08001589 size_t initialDataSize;
1590 const void* pInitialData;
Jesse Hall04f4f472015-08-16 19:51:04 -07001591} VkPipelineCacheCreateInfo;
1592
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001593typedef struct VkSpecializationMapEntry {
Jesse Hall65ab5522015-11-30 00:07:16 -08001594 uint32_t constantID;
Jesse Hall04f4f472015-08-16 19:51:04 -07001595 uint32_t offset;
Jesse Hallb00daad2015-11-29 19:46:20 -08001596 size_t size;
Jesse Hall04f4f472015-08-16 19:51:04 -07001597} VkSpecializationMapEntry;
1598
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001599typedef struct VkSpecializationInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001600 uint32_t mapEntryCount;
Jesse Hallb00daad2015-11-29 19:46:20 -08001601 const VkSpecializationMapEntry* pMapEntries;
Jesse Hall04f4f472015-08-16 19:51:04 -07001602 size_t dataSize;
1603 const void* pData;
1604} VkSpecializationInfo;
1605
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001606typedef struct VkPipelineShaderStageCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001607 VkStructureType sType;
1608 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001609 VkPipelineShaderStageCreateFlags flags;
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001610 VkShaderStageFlagBits stage;
1611 VkShaderModule module;
1612 const char* pName;
Jesse Hall04f4f472015-08-16 19:51:04 -07001613 const VkSpecializationInfo* pSpecializationInfo;
1614} VkPipelineShaderStageCreateInfo;
1615
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001616typedef struct VkVertexInputBindingDescription {
Jesse Hall04f4f472015-08-16 19:51:04 -07001617 uint32_t binding;
Jesse Hallb00daad2015-11-29 19:46:20 -08001618 uint32_t stride;
Jesse Hall65ab5522015-11-30 00:07:16 -08001619 VkVertexInputRate inputRate;
Jesse Hall04f4f472015-08-16 19:51:04 -07001620} VkVertexInputBindingDescription;
1621
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001622typedef struct VkVertexInputAttributeDescription {
Jesse Hall04f4f472015-08-16 19:51:04 -07001623 uint32_t location;
1624 uint32_t binding;
1625 VkFormat format;
Jesse Hallb00daad2015-11-29 19:46:20 -08001626 uint32_t offset;
Jesse Hall04f4f472015-08-16 19:51:04 -07001627} VkVertexInputAttributeDescription;
1628
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001629typedef struct VkPipelineVertexInputStateCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001630 VkStructureType sType;
1631 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001632 VkPipelineVertexInputStateCreateFlags flags;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001633 uint32_t vertexBindingDescriptionCount;
Jesse Hall04f4f472015-08-16 19:51:04 -07001634 const VkVertexInputBindingDescription* pVertexBindingDescriptions;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001635 uint32_t vertexAttributeDescriptionCount;
Jesse Hall04f4f472015-08-16 19:51:04 -07001636 const VkVertexInputAttributeDescription* pVertexAttributeDescriptions;
1637} VkPipelineVertexInputStateCreateInfo;
1638
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001639typedef struct VkPipelineInputAssemblyStateCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001640 VkStructureType sType;
1641 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001642 VkPipelineInputAssemblyStateCreateFlags flags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001643 VkPrimitiveTopology topology;
1644 VkBool32 primitiveRestartEnable;
1645} VkPipelineInputAssemblyStateCreateInfo;
1646
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001647typedef struct VkPipelineTessellationStateCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001648 VkStructureType sType;
1649 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001650 VkPipelineTesselationStateCreateFlags flags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001651 uint32_t patchControlPoints;
1652} VkPipelineTessellationStateCreateInfo;
1653
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001654typedef struct VkViewport {
Jesse Hall65ab5522015-11-30 00:07:16 -08001655 float x;
1656 float y;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001657 float width;
1658 float height;
1659 float minDepth;
1660 float maxDepth;
1661} VkViewport;
1662
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001663typedef struct VkOffset2D {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001664 int32_t x;
1665 int32_t y;
1666} VkOffset2D;
1667
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001668typedef struct VkExtent2D {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001669 int32_t width;
1670 int32_t height;
1671} VkExtent2D;
1672
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001673typedef struct VkRect2D {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001674 VkOffset2D offset;
1675 VkExtent2D extent;
1676} VkRect2D;
1677
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001678typedef struct VkPipelineViewportStateCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001679 VkStructureType sType;
1680 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001681 VkPipelineViewportStateCreateFlags flags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001682 uint32_t viewportCount;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001683 const VkViewport* pViewports;
1684 uint32_t scissorCount;
1685 const VkRect2D* pScissors;
Jesse Hall04f4f472015-08-16 19:51:04 -07001686} VkPipelineViewportStateCreateInfo;
1687
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001688typedef struct VkPipelineRasterizationStateCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001689 VkStructureType sType;
1690 const void* pNext;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001691 VkPipelineRasterizationStateCreateFlags flags;
Jesse Hallae38f732015-11-19 21:32:50 -08001692 VkBool32 depthClampEnable;
Jesse Hall04f4f472015-08-16 19:51:04 -07001693 VkBool32 rasterizerDiscardEnable;
Jesse Hall65ab5522015-11-30 00:07:16 -08001694 VkPolygonMode polygonMode;
Jesse Hallc7467b72015-11-29 21:05:26 -08001695 VkCullModeFlags cullMode;
Jesse Hall04f4f472015-08-16 19:51:04 -07001696 VkFrontFace frontFace;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001697 VkBool32 depthBiasEnable;
Jesse Halla9bb62b2015-11-21 19:31:56 -08001698 float depthBiasConstantFactor;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001699 float depthBiasClamp;
Jesse Halla9bb62b2015-11-21 19:31:56 -08001700 float depthBiasSlopeFactor;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001701 float lineWidth;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001702} VkPipelineRasterizationStateCreateInfo;
Jesse Hall04f4f472015-08-16 19:51:04 -07001703
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001704typedef struct VkPipelineMultisampleStateCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001705 VkStructureType sType;
1706 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001707 VkPipelineMultisampleStateCreateFlags flags;
Jesse Hall091ed9e2015-11-30 00:55:29 -08001708 VkSampleCountFlagBits rasterizationSamples;
Jesse Hall04f4f472015-08-16 19:51:04 -07001709 VkBool32 sampleShadingEnable;
1710 float minSampleShading;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001711 const VkSampleMask* pSampleMask;
Jesse Hallacfa5342015-11-19 21:51:33 -08001712 VkBool32 alphaToCoverageEnable;
1713 VkBool32 alphaToOneEnable;
Jesse Hall04f4f472015-08-16 19:51:04 -07001714} VkPipelineMultisampleStateCreateInfo;
1715
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001716typedef struct VkStencilOpState {
Jesse Hall65ab5522015-11-30 00:07:16 -08001717 VkStencilOp failOp;
1718 VkStencilOp passOp;
1719 VkStencilOp depthFailOp;
1720 VkCompareOp compareOp;
1721 uint32_t compareMask;
1722 uint32_t writeMask;
1723 uint32_t reference;
Jesse Hall04f4f472015-08-16 19:51:04 -07001724} VkStencilOpState;
1725
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001726typedef struct VkPipelineDepthStencilStateCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001727 VkStructureType sType;
1728 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001729 VkPipelineDepthStencilStateCreateFlags flags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001730 VkBool32 depthTestEnable;
1731 VkBool32 depthWriteEnable;
1732 VkCompareOp depthCompareOp;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001733 VkBool32 depthBoundsTestEnable;
Jesse Hall04f4f472015-08-16 19:51:04 -07001734 VkBool32 stencilTestEnable;
1735 VkStencilOpState front;
1736 VkStencilOpState back;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001737 float minDepthBounds;
1738 float maxDepthBounds;
Jesse Hall04f4f472015-08-16 19:51:04 -07001739} VkPipelineDepthStencilStateCreateInfo;
1740
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001741typedef struct VkPipelineColorBlendAttachmentState {
Jesse Hall04f4f472015-08-16 19:51:04 -07001742 VkBool32 blendEnable;
Jesse Hall65ab5522015-11-30 00:07:16 -08001743 VkBlendFactor srcColorBlendFactor;
1744 VkBlendFactor dstColorBlendFactor;
1745 VkBlendOp colorBlendOp;
1746 VkBlendFactor srcAlphaBlendFactor;
1747 VkBlendFactor dstAlphaBlendFactor;
1748 VkBlendOp alphaBlendOp;
1749 VkColorComponentFlags colorWriteMask;
Jesse Hall04f4f472015-08-16 19:51:04 -07001750} VkPipelineColorBlendAttachmentState;
1751
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001752typedef struct VkPipelineColorBlendStateCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001753 VkStructureType sType;
1754 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001755 VkPipelineColorBlendStateCreateFlags flags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001756 VkBool32 logicOpEnable;
1757 VkLogicOp logicOp;
1758 uint32_t attachmentCount;
1759 const VkPipelineColorBlendAttachmentState* pAttachments;
Jesse Hallb00daad2015-11-29 19:46:20 -08001760 float blendConstants[4];
Jesse Hall04f4f472015-08-16 19:51:04 -07001761} VkPipelineColorBlendStateCreateInfo;
1762
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001763typedef struct VkPipelineDynamicStateCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001764 VkStructureType sType;
1765 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001766 VkPipelineDynamicStateCreateFlags flags;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001767 uint32_t dynamicStateCount;
1768 const VkDynamicState* pDynamicStates;
1769} VkPipelineDynamicStateCreateInfo;
1770
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001771typedef struct VkGraphicsPipelineCreateInfo {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001772 VkStructureType sType;
1773 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001774 VkPipelineCreateFlags flags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001775 uint32_t stageCount;
1776 const VkPipelineShaderStageCreateInfo* pStages;
1777 const VkPipelineVertexInputStateCreateInfo* pVertexInputState;
1778 const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState;
1779 const VkPipelineTessellationStateCreateInfo* pTessellationState;
1780 const VkPipelineViewportStateCreateInfo* pViewportState;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001781 const VkPipelineRasterizationStateCreateInfo* pRasterizationState;
Jesse Hall04f4f472015-08-16 19:51:04 -07001782 const VkPipelineMultisampleStateCreateInfo* pMultisampleState;
1783 const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState;
1784 const VkPipelineColorBlendStateCreateInfo* pColorBlendState;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001785 const VkPipelineDynamicStateCreateInfo* pDynamicState;
Jesse Hall04f4f472015-08-16 19:51:04 -07001786 VkPipelineLayout layout;
1787 VkRenderPass renderPass;
1788 uint32_t subpass;
1789 VkPipeline basePipelineHandle;
1790 int32_t basePipelineIndex;
1791} VkGraphicsPipelineCreateInfo;
1792
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001793typedef struct VkComputePipelineCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001794 VkStructureType sType;
1795 const void* pNext;
Jesse Hall04f4f472015-08-16 19:51:04 -07001796 VkPipelineCreateFlags flags;
Jesse Halla6429252015-11-29 18:59:42 -08001797 VkPipelineShaderStageCreateInfo stage;
Jesse Hall04f4f472015-08-16 19:51:04 -07001798 VkPipelineLayout layout;
1799 VkPipeline basePipelineHandle;
1800 int32_t basePipelineIndex;
1801} VkComputePipelineCreateInfo;
1802
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001803typedef struct VkPushConstantRange {
Jesse Hall04f4f472015-08-16 19:51:04 -07001804 VkShaderStageFlags stageFlags;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001805 uint32_t offset;
1806 uint32_t size;
Jesse Hall04f4f472015-08-16 19:51:04 -07001807} VkPushConstantRange;
1808
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001809typedef struct VkPipelineLayoutCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001810 VkStructureType sType;
1811 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001812 VkPipelineLayoutCreateFlags flags;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001813 uint32_t setLayoutCount;
Jesse Hall04f4f472015-08-16 19:51:04 -07001814 const VkDescriptorSetLayout* pSetLayouts;
1815 uint32_t pushConstantRangeCount;
1816 const VkPushConstantRange* pPushConstantRanges;
1817} VkPipelineLayoutCreateInfo;
1818
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001819typedef struct VkSamplerCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001820 VkStructureType sType;
1821 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001822 VkSamplerCreateFlags flags;
Jesse Hall23ff73f2015-11-29 14:36:39 -08001823 VkFilter magFilter;
1824 VkFilter minFilter;
1825 VkSamplerMipmapMode mipmapMode;
1826 VkSamplerAddressMode addressModeU;
1827 VkSamplerAddressMode addressModeV;
1828 VkSamplerAddressMode addressModeW;
Jesse Hall04f4f472015-08-16 19:51:04 -07001829 float mipLodBias;
1830 float maxAnisotropy;
1831 VkBool32 compareEnable;
1832 VkCompareOp compareOp;
1833 float minLod;
1834 float maxLod;
1835 VkBorderColor borderColor;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001836 VkBool32 unnormalizedCoordinates;
Jesse Hall04f4f472015-08-16 19:51:04 -07001837} VkSamplerCreateInfo;
1838
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001839typedef struct VkDescriptorSetLayoutBinding {
Jesse Hall091ed9e2015-11-30 00:55:29 -08001840 uint32_t binding;
Jesse Hall04f4f472015-08-16 19:51:04 -07001841 VkDescriptorType descriptorType;
1842 uint32_t arraySize;
1843 VkShaderStageFlags stageFlags;
1844 const VkSampler* pImmutableSamplers;
1845} VkDescriptorSetLayoutBinding;
1846
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001847typedef struct VkDescriptorSetLayoutCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001848 VkStructureType sType;
1849 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001850 VkDescriptorSetLayoutCreateFlags flags;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001851 uint32_t bindingCount;
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001852 const VkDescriptorSetLayoutBinding* pBinding;
Jesse Hall04f4f472015-08-16 19:51:04 -07001853} VkDescriptorSetLayoutCreateInfo;
1854
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001855typedef struct VkDescriptorPoolSize {
Jesse Hall04f4f472015-08-16 19:51:04 -07001856 VkDescriptorType type;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001857 uint32_t descriptorCount;
Jesse Hall65ab5522015-11-30 00:07:16 -08001858} VkDescriptorPoolSize;
Jesse Hall04f4f472015-08-16 19:51:04 -07001859
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001860typedef struct VkDescriptorPoolCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001861 VkStructureType sType;
1862 const void* pNext;
Jesse Hallfbf97b02015-11-20 14:17:03 -08001863 VkDescriptorPoolCreateFlags flags;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001864 uint32_t maxSets;
Jesse Hall65ab5522015-11-30 00:07:16 -08001865 uint32_t poolSizeCount;
1866 const VkDescriptorPoolSize* pPoolSizes;
Jesse Hall04f4f472015-08-16 19:51:04 -07001867} VkDescriptorPoolCreateInfo;
1868
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001869typedef struct VkDescriptorSetAllocateInfo {
Jesse Hallfbf97b02015-11-20 14:17:03 -08001870 VkStructureType sType;
1871 const void* pNext;
1872 VkDescriptorPool descriptorPool;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001873 uint32_t setLayoutCount;
Jesse Hallfbf97b02015-11-20 14:17:03 -08001874 const VkDescriptorSetLayout* pSetLayouts;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001875} VkDescriptorSetAllocateInfo;
Jesse Hallfbf97b02015-11-20 14:17:03 -08001876
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001877typedef struct VkDescriptorImageInfo {
Jesse Halla15a4bf2015-11-19 22:48:02 -08001878 VkSampler sampler;
1879 VkImageView imageView;
1880 VkImageLayout imageLayout;
1881} VkDescriptorImageInfo;
1882
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001883typedef struct VkDescriptorBufferInfo {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001884 VkBuffer buffer;
1885 VkDeviceSize offset;
1886 VkDeviceSize range;
1887} VkDescriptorBufferInfo;
1888
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001889typedef struct VkWriteDescriptorSet {
Jesse Hall04f4f472015-08-16 19:51:04 -07001890 VkStructureType sType;
1891 const void* pNext;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001892 VkDescriptorSet dstSet;
1893 uint32_t dstBinding;
1894 uint32_t dstArrayElement;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001895 uint32_t descriptorCount;
Jesse Hall04f4f472015-08-16 19:51:04 -07001896 VkDescriptorType descriptorType;
Jesse Hallfbf97b02015-11-20 14:17:03 -08001897 const VkDescriptorImageInfo* pImageInfo;
1898 const VkDescriptorBufferInfo* pBufferInfo;
1899 const VkBufferView* pTexelBufferView;
Jesse Hall04f4f472015-08-16 19:51:04 -07001900} VkWriteDescriptorSet;
1901
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001902typedef struct VkCopyDescriptorSet {
Jesse Hall04f4f472015-08-16 19:51:04 -07001903 VkStructureType sType;
1904 const void* pNext;
1905 VkDescriptorSet srcSet;
1906 uint32_t srcBinding;
1907 uint32_t srcArrayElement;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001908 VkDescriptorSet dstSet;
1909 uint32_t dstBinding;
1910 uint32_t dstArrayElement;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001911 uint32_t descriptorCount;
Jesse Hall04f4f472015-08-16 19:51:04 -07001912} VkCopyDescriptorSet;
1913
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001914typedef struct VkFramebufferCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001915 VkStructureType sType;
1916 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001917 VkFramebufferCreateFlags flags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001918 VkRenderPass renderPass;
1919 uint32_t attachmentCount;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001920 const VkImageView* pAttachments;
Jesse Hall04f4f472015-08-16 19:51:04 -07001921 uint32_t width;
1922 uint32_t height;
1923 uint32_t layers;
1924} VkFramebufferCreateInfo;
1925
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001926typedef struct VkAttachmentDescription {
Jesse Halla6429252015-11-29 18:59:42 -08001927 VkAttachmentDescriptionFlags flags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001928 VkFormat format;
Jesse Hall091ed9e2015-11-30 00:55:29 -08001929 VkSampleCountFlagBits samples;
Jesse Hall04f4f472015-08-16 19:51:04 -07001930 VkAttachmentLoadOp loadOp;
1931 VkAttachmentStoreOp storeOp;
1932 VkAttachmentLoadOp stencilLoadOp;
1933 VkAttachmentStoreOp stencilStoreOp;
1934 VkImageLayout initialLayout;
1935 VkImageLayout finalLayout;
1936} VkAttachmentDescription;
1937
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001938typedef struct VkAttachmentReference {
Jesse Hall04f4f472015-08-16 19:51:04 -07001939 uint32_t attachment;
1940 VkImageLayout layout;
1941} VkAttachmentReference;
1942
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001943typedef struct VkSubpassDescription {
Jesse Hall04f4f472015-08-16 19:51:04 -07001944 VkSubpassDescriptionFlags flags;
Jesse Halla6429252015-11-29 18:59:42 -08001945 VkPipelineBindPoint pipelineBindPoint;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001946 uint32_t inputAttachmentCount;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001947 const VkAttachmentReference* pInputAttachments;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001948 uint32_t colorAttachmentCount;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001949 const VkAttachmentReference* pColorAttachments;
1950 const VkAttachmentReference* pResolveAttachments;
Jesse Hallc7467b72015-11-29 21:05:26 -08001951 const VkAttachmentReference* pDepthStencilAttachment;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001952 uint32_t preserveAttachmentCount;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001953 const VkAttachmentReference* pPreserveAttachments;
Jesse Hall04f4f472015-08-16 19:51:04 -07001954} VkSubpassDescription;
1955
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001956typedef struct VkSubpassDependency {
Jesse Hall04f4f472015-08-16 19:51:04 -07001957 uint32_t srcSubpass;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001958 uint32_t dstSubpass;
Jesse Hall04f4f472015-08-16 19:51:04 -07001959 VkPipelineStageFlags srcStageMask;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001960 VkPipelineStageFlags dstStageMask;
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001961 VkAccessFlags srcAccessMask;
1962 VkAccessFlags dstAccessMask;
Jesse Halldc6d36c2015-11-29 19:12:15 -08001963 VkDependencyFlags dependencyFlags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001964} VkSubpassDependency;
1965
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001966typedef struct VkRenderPassCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001967 VkStructureType sType;
1968 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08001969 VkRenderPassCreateFlags flags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001970 uint32_t attachmentCount;
1971 const VkAttachmentDescription* pAttachments;
1972 uint32_t subpassCount;
1973 const VkSubpassDescription* pSubpasses;
1974 uint32_t dependencyCount;
1975 const VkSubpassDependency* pDependencies;
1976} VkRenderPassCreateInfo;
1977
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001978typedef struct VkCommandPoolCreateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001979 VkStructureType sType;
1980 const void* pNext;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001981 VkCommandPoolCreateFlags flags;
Jesse Halla6429252015-11-29 18:59:42 -08001982 uint32_t queueFamilyIndex;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001983} VkCommandPoolCreateInfo;
Jesse Hall04f4f472015-08-16 19:51:04 -07001984
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001985typedef struct VkCommandBufferAllocateInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001986 VkStructureType sType;
1987 const void* pNext;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001988 VkCommandPool commandPool;
1989 VkCommandBufferLevel level;
Jesse Hall03b6fe12015-11-24 12:44:21 -08001990 uint32_t bufferCount;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001991} VkCommandBufferAllocateInfo;
Jesse Hall04f4f472015-08-16 19:51:04 -07001992
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001993typedef struct VkCommandBufferBeginInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07001994 VkStructureType sType;
1995 const void* pNext;
Jesse Hall3fbc8562015-11-29 22:10:52 -08001996 VkCommandBufferUsageFlags flags;
Jesse Hall04f4f472015-08-16 19:51:04 -07001997 VkRenderPass renderPass;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001998 uint32_t subpass;
Jesse Hall04f4f472015-08-16 19:51:04 -07001999 VkFramebuffer framebuffer;
Jesse Hall3fbc8562015-11-29 22:10:52 -08002000} VkCommandBufferBeginInfo;
Jesse Hall04f4f472015-08-16 19:51:04 -07002001
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002002typedef struct VkBufferCopy {
Jesse Hall04f4f472015-08-16 19:51:04 -07002003 VkDeviceSize srcOffset;
Jesse Hall3fbc8562015-11-29 22:10:52 -08002004 VkDeviceSize dstOffset;
Jesse Hallb00daad2015-11-29 19:46:20 -08002005 VkDeviceSize size;
Jesse Hall04f4f472015-08-16 19:51:04 -07002006} VkBufferCopy;
2007
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002008typedef struct VkImageSubresourceLayers {
Jesse Hall65ab5522015-11-30 00:07:16 -08002009 VkImageAspectFlags aspectMask;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002010 uint32_t mipLevel;
Jesse Halla15a4bf2015-11-19 22:48:02 -08002011 uint32_t baseArrayLayer;
Jesse Hall3fbc8562015-11-29 22:10:52 -08002012 uint32_t layerCount;
Jesse Hall65ab5522015-11-30 00:07:16 -08002013} VkImageSubresourceLayers;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002014
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002015typedef struct VkImageCopy {
Jesse Hall65ab5522015-11-30 00:07:16 -08002016 VkImageSubresourceLayers srcSubresource;
Jesse Hall04f4f472015-08-16 19:51:04 -07002017 VkOffset3D srcOffset;
Jesse Hall65ab5522015-11-30 00:07:16 -08002018 VkImageSubresourceLayers dstSubresource;
Jesse Hall3fbc8562015-11-29 22:10:52 -08002019 VkOffset3D dstOffset;
Jesse Hall04f4f472015-08-16 19:51:04 -07002020 VkExtent3D extent;
2021} VkImageCopy;
2022
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002023typedef struct VkImageBlit {
Jesse Hall65ab5522015-11-30 00:07:16 -08002024 VkImageSubresourceLayers srcSubresource;
Jesse Hall04f4f472015-08-16 19:51:04 -07002025 VkOffset3D srcOffset;
2026 VkExtent3D srcExtent;
Jesse Hall65ab5522015-11-30 00:07:16 -08002027 VkImageSubresourceLayers dstSubresource;
Jesse Hall3fbc8562015-11-29 22:10:52 -08002028 VkOffset3D dstOffset;
2029 VkExtent3D dstExtent;
Jesse Hall04f4f472015-08-16 19:51:04 -07002030} VkImageBlit;
2031
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002032typedef struct VkBufferImageCopy {
Jesse Hall04f4f472015-08-16 19:51:04 -07002033 VkDeviceSize bufferOffset;
2034 uint32_t bufferRowLength;
2035 uint32_t bufferImageHeight;
Jesse Hall65ab5522015-11-30 00:07:16 -08002036 VkImageSubresourceLayers imageSubresource;
Jesse Hall04f4f472015-08-16 19:51:04 -07002037 VkOffset3D imageOffset;
2038 VkExtent3D imageExtent;
2039} VkBufferImageCopy;
2040
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002041typedef union VkClearColorValue {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002042 float float32[4];
2043 int32_t int32[4];
2044 uint32_t uint32[4];
Jesse Hall04f4f472015-08-16 19:51:04 -07002045} VkClearColorValue;
2046
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002047typedef struct VkClearDepthStencilValue {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002048 float depth;
2049 uint32_t stencil;
2050} VkClearDepthStencilValue;
2051
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002052typedef union VkClearValue {
Jesse Hallae38f732015-11-19 21:32:50 -08002053 VkClearColorValue color;
2054 VkClearDepthStencilValue depthStencil;
2055} VkClearValue;
2056
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002057typedef struct VkClearAttachment {
Jesse Hallae38f732015-11-19 21:32:50 -08002058 VkImageAspectFlags aspectMask;
2059 uint32_t colorAttachment;
2060 VkClearValue clearValue;
2061} VkClearAttachment;
2062
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002063typedef struct VkClearRect {
Jesse Halla15a4bf2015-11-19 22:48:02 -08002064 VkRect2D rect;
2065 uint32_t baseArrayLayer;
Jesse Hall3fbc8562015-11-29 22:10:52 -08002066 uint32_t layerCount;
Jesse Halla15a4bf2015-11-19 22:48:02 -08002067} VkClearRect;
Jesse Hall04f4f472015-08-16 19:51:04 -07002068
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002069typedef struct VkImageResolve {
Jesse Hall65ab5522015-11-30 00:07:16 -08002070 VkImageSubresourceLayers srcSubresource;
Jesse Hall04f4f472015-08-16 19:51:04 -07002071 VkOffset3D srcOffset;
Jesse Hall65ab5522015-11-30 00:07:16 -08002072 VkImageSubresourceLayers dstSubresource;
Jesse Hall3fbc8562015-11-29 22:10:52 -08002073 VkOffset3D dstOffset;
Jesse Hall04f4f472015-08-16 19:51:04 -07002074 VkExtent3D extent;
2075} VkImageResolve;
2076
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002077typedef struct VkRenderPassBeginInfo {
Jesse Hall04f4f472015-08-16 19:51:04 -07002078 VkStructureType sType;
2079 const void* pNext;
2080 VkRenderPass renderPass;
2081 VkFramebuffer framebuffer;
2082 VkRect2D renderArea;
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002083 uint32_t clearValueCount;
2084 const VkClearValue* pClearValues;
Jesse Hall04f4f472015-08-16 19:51:04 -07002085} VkRenderPassBeginInfo;
2086
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002087typedef struct VkBufferMemoryBarrier {
Jesse Hall04f4f472015-08-16 19:51:04 -07002088 VkStructureType sType;
2089 const void* pNext;
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002090 VkAccessFlags srcAccessMask;
2091 VkAccessFlags dstAccessMask;
Jesse Hall04f4f472015-08-16 19:51:04 -07002092 uint32_t srcQueueFamilyIndex;
Jesse Hall3fbc8562015-11-29 22:10:52 -08002093 uint32_t dstQueueFamilyIndex;
Jesse Hall04f4f472015-08-16 19:51:04 -07002094 VkBuffer buffer;
2095 VkDeviceSize offset;
2096 VkDeviceSize size;
2097} VkBufferMemoryBarrier;
2098
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002099typedef struct VkDispatchIndirectCommand {
Jesse Hall04f4f472015-08-16 19:51:04 -07002100 uint32_t x;
2101 uint32_t y;
2102 uint32_t z;
Jesse Hall3fbc8562015-11-29 22:10:52 -08002103} VkDispatchIndirectCommand;
Jesse Hall04f4f472015-08-16 19:51:04 -07002104
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002105typedef struct VkDrawIndexedIndirectCommand {
Jesse Hall04f4f472015-08-16 19:51:04 -07002106 uint32_t indexCount;
2107 uint32_t instanceCount;
2108 uint32_t firstIndex;
2109 int32_t vertexOffset;
2110 uint32_t firstInstance;
Jesse Hall3fbc8562015-11-29 22:10:52 -08002111} VkDrawIndexedIndirectCommand;
Jesse Hall04f4f472015-08-16 19:51:04 -07002112
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002113typedef struct VkDrawIndirectCommand {
Jesse Hall04f4f472015-08-16 19:51:04 -07002114 uint32_t vertexCount;
2115 uint32_t instanceCount;
2116 uint32_t firstVertex;
2117 uint32_t firstInstance;
Jesse Hall3fbc8562015-11-29 22:10:52 -08002118} VkDrawIndirectCommand;
Jesse Hall04f4f472015-08-16 19:51:04 -07002119
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002120typedef struct VkImageMemoryBarrier {
Jesse Hall04f4f472015-08-16 19:51:04 -07002121 VkStructureType sType;
2122 const void* pNext;
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002123 VkAccessFlags srcAccessMask;
2124 VkAccessFlags dstAccessMask;
Jesse Hall04f4f472015-08-16 19:51:04 -07002125 VkImageLayout oldLayout;
2126 VkImageLayout newLayout;
2127 uint32_t srcQueueFamilyIndex;
Jesse Hall3fbc8562015-11-29 22:10:52 -08002128 uint32_t dstQueueFamilyIndex;
Jesse Hall04f4f472015-08-16 19:51:04 -07002129 VkImage image;
2130 VkImageSubresourceRange subresourceRange;
2131} VkImageMemoryBarrier;
2132
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002133typedef struct VkMemoryBarrier {
Jesse Hall04f4f472015-08-16 19:51:04 -07002134 VkStructureType sType;
2135 const void* pNext;
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002136 VkAccessFlags srcAccessMask;
2137 VkAccessFlags dstAccessMask;
Jesse Hall04f4f472015-08-16 19:51:04 -07002138} VkMemoryBarrier;
2139
2140
Jesse Halle1b12782015-11-30 11:27:32 -08002141typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance);
2142typedef void (VKAPI_PTR *PFN_vkDestroyInstance)(VkInstance instance, const VkAllocationCallbacks* pAllocator);
2143typedef VkResult (VKAPI_PTR *PFN_vkEnumeratePhysicalDevices)(VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices);
2144typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFeatures)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures);
2145typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties);
2146typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkImageTiling tiling, VkImageUsageFlags usage, VkImageCreateFlags flags, VkImageFormatProperties* pImageFormatProperties);
2147typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties);
2148typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceQueueFamilyProperties)(VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties);
2149typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceMemoryProperties)(VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties);
2150typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetInstanceProcAddr)(VkInstance instance, const char* pName);
2151typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_vkGetDeviceProcAddr)(VkDevice device, const char* pName);
2152typedef VkResult (VKAPI_PTR *PFN_vkCreateDevice)(VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice);
2153typedef void (VKAPI_PTR *PFN_vkDestroyDevice)(VkDevice device, const VkAllocationCallbacks* pAllocator);
2154typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceExtensionProperties)(const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
2155typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceExtensionProperties)(VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties);
2156typedef VkResult (VKAPI_PTR *PFN_vkEnumerateInstanceLayerProperties)(uint32_t* pPropertyCount, VkLayerProperties* pProperties);
2157typedef VkResult (VKAPI_PTR *PFN_vkEnumerateDeviceLayerProperties)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties);
2158typedef void (VKAPI_PTR *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue);
2159typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence);
2160typedef VkResult (VKAPI_PTR *PFN_vkQueueWaitIdle)(VkQueue queue);
2161typedef VkResult (VKAPI_PTR *PFN_vkDeviceWaitIdle)(VkDevice device);
2162typedef VkResult (VKAPI_PTR *PFN_vkAllocateMemory)(VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory);
2163typedef void (VKAPI_PTR *PFN_vkFreeMemory)(VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator);
2164typedef VkResult (VKAPI_PTR *PFN_vkMapMemory)(VkDevice device, VkDeviceMemory memory, VkDeviceSize offset, VkDeviceSize size, VkMemoryMapFlags flags, void** ppData);
2165typedef void (VKAPI_PTR *PFN_vkUnmapMemory)(VkDevice device, VkDeviceMemory memory);
2166typedef VkResult (VKAPI_PTR *PFN_vkFlushMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
2167typedef VkResult (VKAPI_PTR *PFN_vkInvalidateMappedMemoryRanges)(VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges);
2168typedef void (VKAPI_PTR *PFN_vkGetDeviceMemoryCommitment)(VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes);
2169typedef VkResult (VKAPI_PTR *PFN_vkBindBufferMemory)(VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset);
2170typedef VkResult (VKAPI_PTR *PFN_vkBindImageMemory)(VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset);
2171typedef void (VKAPI_PTR *PFN_vkGetBufferMemoryRequirements)(VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements);
2172typedef void (VKAPI_PTR *PFN_vkGetImageMemoryRequirements)(VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements);
2173typedef void (VKAPI_PTR *PFN_vkGetImageSparseMemoryRequirements)(VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
2174typedef void (VKAPI_PTR *PFN_vkGetPhysicalDeviceSparseImageFormatProperties)(VkPhysicalDevice physicalDevice, VkFormat format, VkImageType type, VkSampleCountFlagBits samples, VkImageUsageFlags usage, VkImageTiling tiling, uint32_t* pPropertyCount, VkSparseImageFormatProperties* pProperties);
2175typedef VkResult (VKAPI_PTR *PFN_vkQueueBindSparse)(VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence);
2176typedef VkResult (VKAPI_PTR *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence);
2177typedef void (VKAPI_PTR *PFN_vkDestroyFence)(VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator);
2178typedef VkResult (VKAPI_PTR *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences);
2179typedef VkResult (VKAPI_PTR *PFN_vkGetFenceStatus)(VkDevice device, VkFence fence);
2180typedef VkResult (VKAPI_PTR *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout);
2181typedef VkResult (VKAPI_PTR *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore);
2182typedef void (VKAPI_PTR *PFN_vkDestroySemaphore)(VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator);
2183typedef VkResult (VKAPI_PTR *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent);
2184typedef void (VKAPI_PTR *PFN_vkDestroyEvent)(VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator);
2185typedef VkResult (VKAPI_PTR *PFN_vkGetEventStatus)(VkDevice device, VkEvent event);
2186typedef VkResult (VKAPI_PTR *PFN_vkSetEvent)(VkDevice device, VkEvent event);
2187typedef VkResult (VKAPI_PTR *PFN_vkResetEvent)(VkDevice device, VkEvent event);
2188typedef VkResult (VKAPI_PTR *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool);
2189typedef void (VKAPI_PTR *PFN_vkDestroyQueryPool)(VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator);
2190typedef VkResult (VKAPI_PTR *PFN_vkGetQueryPoolResults)(VkDevice device, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t dataSize, void* pData, VkDeviceSize stride, VkQueryResultFlags flags);
2191typedef VkResult (VKAPI_PTR *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer);
2192typedef void (VKAPI_PTR *PFN_vkDestroyBuffer)(VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator);
2193typedef VkResult (VKAPI_PTR *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView);
2194typedef void (VKAPI_PTR *PFN_vkDestroyBufferView)(VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator);
2195typedef VkResult (VKAPI_PTR *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage);
2196typedef void (VKAPI_PTR *PFN_vkDestroyImage)(VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator);
2197typedef void (VKAPI_PTR *PFN_vkGetImageSubresourceLayout)(VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout);
2198typedef VkResult (VKAPI_PTR *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView);
2199typedef void (VKAPI_PTR *PFN_vkDestroyImageView)(VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator);
2200typedef VkResult (VKAPI_PTR *PFN_vkCreateShaderModule)(VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule);
2201typedef void (VKAPI_PTR *PFN_vkDestroyShaderModule)(VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator);
2202typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineCache)(VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache);
2203typedef void (VKAPI_PTR *PFN_vkDestroyPipelineCache)(VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator);
2204typedef VkResult (VKAPI_PTR *PFN_vkGetPipelineCacheData)(VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData);
2205typedef VkResult (VKAPI_PTR *PFN_vkMergePipelineCaches)(VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches);
2206typedef VkResult (VKAPI_PTR *PFN_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
2207typedef VkResult (VKAPI_PTR *PFN_vkCreateComputePipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines);
2208typedef void (VKAPI_PTR *PFN_vkDestroyPipeline)(VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator);
2209typedef VkResult (VKAPI_PTR *PFN_vkCreatePipelineLayout)(VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout);
2210typedef void (VKAPI_PTR *PFN_vkDestroyPipelineLayout)(VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator);
2211typedef VkResult (VKAPI_PTR *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler);
2212typedef void (VKAPI_PTR *PFN_vkDestroySampler)(VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator);
2213typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout);
2214typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorSetLayout)(VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator);
2215typedef VkResult (VKAPI_PTR *PFN_vkCreateDescriptorPool)(VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool);
2216typedef void (VKAPI_PTR *PFN_vkDestroyDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator);
2217typedef VkResult (VKAPI_PTR *PFN_vkResetDescriptorPool)(VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags);
2218typedef VkResult (VKAPI_PTR *PFN_vkAllocateDescriptorSets)(VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets);
2219typedef VkResult (VKAPI_PTR *PFN_vkFreeDescriptorSets)(VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets);
2220typedef void (VKAPI_PTR *PFN_vkUpdateDescriptorSets)(VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies);
2221typedef VkResult (VKAPI_PTR *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer);
2222typedef void (VKAPI_PTR *PFN_vkDestroyFramebuffer)(VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator);
2223typedef VkResult (VKAPI_PTR *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass);
2224typedef void (VKAPI_PTR *PFN_vkDestroyRenderPass)(VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator);
2225typedef void (VKAPI_PTR *PFN_vkGetRenderAreaGranularity)(VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity);
2226typedef VkResult (VKAPI_PTR *PFN_vkCreateCommandPool)(VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool);
2227typedef void (VKAPI_PTR *PFN_vkDestroyCommandPool)(VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator);
2228typedef VkResult (VKAPI_PTR *PFN_vkResetCommandPool)(VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags);
2229typedef VkResult (VKAPI_PTR *PFN_vkAllocateCommandBuffers)(VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers);
2230typedef void (VKAPI_PTR *PFN_vkFreeCommandBuffers)(VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers);
2231typedef VkResult (VKAPI_PTR *PFN_vkBeginCommandBuffer)(VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo);
2232typedef VkResult (VKAPI_PTR *PFN_vkEndCommandBuffer)(VkCommandBuffer commandBuffer);
2233typedef VkResult (VKAPI_PTR *PFN_vkResetCommandBuffer)(VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags);
2234typedef void (VKAPI_PTR *PFN_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
2235typedef void (VKAPI_PTR *PFN_vkCmdSetViewport)(VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports);
2236typedef void (VKAPI_PTR *PFN_vkCmdSetScissor)(VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors);
2237typedef void (VKAPI_PTR *PFN_vkCmdSetLineWidth)(VkCommandBuffer commandBuffer, float lineWidth);
2238typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBias)(VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor);
2239typedef void (VKAPI_PTR *PFN_vkCmdSetBlendConstants)(VkCommandBuffer commandBuffer, const float blendConstants[4]);
2240typedef void (VKAPI_PTR *PFN_vkCmdSetDepthBounds)(VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds);
2241typedef void (VKAPI_PTR *PFN_vkCmdSetStencilCompareMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask);
2242typedef void (VKAPI_PTR *PFN_vkCmdSetStencilWriteMask)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask);
2243typedef void (VKAPI_PTR *PFN_vkCmdSetStencilReference)(VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference);
2244typedef 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);
2245typedef void (VKAPI_PTR *PFN_vkCmdBindIndexBuffer)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType);
2246typedef void (VKAPI_PTR *PFN_vkCmdBindVertexBuffers)(VkCommandBuffer commandBuffer, uint32_t startBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets);
2247typedef void (VKAPI_PTR *PFN_vkCmdDraw)(VkCommandBuffer commandBuffer, uint32_t vertexCount, uint32_t instanceCount, uint32_t firstVertex, uint32_t firstInstance);
2248typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexed)(VkCommandBuffer commandBuffer, uint32_t indexCount, uint32_t instanceCount, uint32_t firstIndex, int32_t vertexOffset, uint32_t firstInstance);
2249typedef void (VKAPI_PTR *PFN_vkCmdDrawIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
2250typedef void (VKAPI_PTR *PFN_vkCmdDrawIndexedIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, uint32_t drawCount, uint32_t stride);
2251typedef void (VKAPI_PTR *PFN_vkCmdDispatch)(VkCommandBuffer commandBuffer, uint32_t x, uint32_t y, uint32_t z);
2252typedef void (VKAPI_PTR *PFN_vkCmdDispatchIndirect)(VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset);
2253typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
2254typedef void (VKAPI_PTR *PFN_vkCmdCopyImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
2255typedef void (VKAPI_PTR *PFN_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter);
2256typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage)(VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
2257typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
2258typedef void (VKAPI_PTR *PFN_vkCmdUpdateBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const uint32_t* pData);
2259typedef void (VKAPI_PTR *PFN_vkCmdFillBuffer)(VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data);
2260typedef void (VKAPI_PTR *PFN_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
2261typedef void (VKAPI_PTR *PFN_vkCmdClearDepthStencilImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
2262typedef void (VKAPI_PTR *PFN_vkCmdClearAttachments)(VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects);
2263typedef void (VKAPI_PTR *PFN_vkCmdResolveImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions);
2264typedef void (VKAPI_PTR *PFN_vkCmdSetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
2265typedef void (VKAPI_PTR *PFN_vkCmdResetEvent)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask);
2266typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers);
2267typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier)(VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const void* const* ppMemoryBarriers);
2268typedef void (VKAPI_PTR *PFN_vkCmdBeginQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t entry, VkQueryControlFlags flags);
2269typedef void (VKAPI_PTR *PFN_vkCmdEndQuery)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t entry);
2270typedef void (VKAPI_PTR *PFN_vkCmdResetQueryPool)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount);
2271typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp)(VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t entry);
2272typedef void (VKAPI_PTR *PFN_vkCmdCopyQueryPoolResults)(VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize stride, VkQueryResultFlags flags);
2273typedef void (VKAPI_PTR *PFN_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* values);
2274typedef void (VKAPI_PTR *PFN_vkCmdBeginRenderPass)(VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents);
2275typedef void (VKAPI_PTR *PFN_vkCmdNextSubpass)(VkCommandBuffer commandBuffer, VkSubpassContents contents);
2276typedef void (VKAPI_PTR *PFN_vkCmdEndRenderPass)(VkCommandBuffer commandBuffer);
2277typedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBuffersCount, const VkCommandBuffer* pCommandBuffers);
Jesse Hall04f4f472015-08-16 19:51:04 -07002278
2279#ifdef VK_PROTOTYPES
Jesse Halle1b12782015-11-30 11:27:32 -08002280VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance(
Jesse Hall04f4f472015-08-16 19:51:04 -07002281 const VkInstanceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002282 const VkAllocationCallbacks* pAllocator,
Jesse Hall04f4f472015-08-16 19:51:04 -07002283 VkInstance* pInstance);
2284
Jesse Halle1b12782015-11-30 11:27:32 -08002285VKAPI_ATTR void VKAPI_CALL vkDestroyInstance(
Jesse Hall03b6fe12015-11-24 12:44:21 -08002286 VkInstance instance,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002287 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002288
Jesse Halle1b12782015-11-30 11:27:32 -08002289VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDevices(
Jesse Hall04f4f472015-08-16 19:51:04 -07002290 VkInstance instance,
2291 uint32_t* pPhysicalDeviceCount,
2292 VkPhysicalDevice* pPhysicalDevices);
2293
Jesse Halle1b12782015-11-30 11:27:32 -08002294VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures(
Jesse Hall04f4f472015-08-16 19:51:04 -07002295 VkPhysicalDevice physicalDevice,
2296 VkPhysicalDeviceFeatures* pFeatures);
2297
Jesse Halle1b12782015-11-30 11:27:32 -08002298VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties(
Jesse Hall04f4f472015-08-16 19:51:04 -07002299 VkPhysicalDevice physicalDevice,
2300 VkFormat format,
2301 VkFormatProperties* pFormatProperties);
2302
Jesse Halle1b12782015-11-30 11:27:32 -08002303VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties(
Jesse Hall04f4f472015-08-16 19:51:04 -07002304 VkPhysicalDevice physicalDevice,
2305 VkFormat format,
2306 VkImageType type,
2307 VkImageTiling tiling,
2308 VkImageUsageFlags usage,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002309 VkImageCreateFlags flags,
Jesse Hall04f4f472015-08-16 19:51:04 -07002310 VkImageFormatProperties* pImageFormatProperties);
2311
Jesse Halle1b12782015-11-30 11:27:32 -08002312VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties(
Jesse Hall04f4f472015-08-16 19:51:04 -07002313 VkPhysicalDevice physicalDevice,
2314 VkPhysicalDeviceProperties* pProperties);
2315
Jesse Halle1b12782015-11-30 11:27:32 -08002316VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties(
Jesse Hall04f4f472015-08-16 19:51:04 -07002317 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002318 uint32_t* pQueueFamilyPropertyCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002319 VkQueueFamilyProperties* pQueueFamilyProperties);
Jesse Hall04f4f472015-08-16 19:51:04 -07002320
Jesse Halle1b12782015-11-30 11:27:32 -08002321VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties(
Jesse Hall04f4f472015-08-16 19:51:04 -07002322 VkPhysicalDevice physicalDevice,
2323 VkPhysicalDeviceMemoryProperties* pMemoryProperties);
2324
Jesse Halle1b12782015-11-30 11:27:32 -08002325VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetInstanceProcAddr(
Jesse Hall04f4f472015-08-16 19:51:04 -07002326 VkInstance instance,
2327 const char* pName);
2328
Jesse Halle1b12782015-11-30 11:27:32 -08002329VKAPI_ATTR PFN_vkVoidFunction VKAPI_CALL vkGetDeviceProcAddr(
Jesse Hall04f4f472015-08-16 19:51:04 -07002330 VkDevice device,
2331 const char* pName);
2332
Jesse Halle1b12782015-11-30 11:27:32 -08002333VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice(
Jesse Hall04f4f472015-08-16 19:51:04 -07002334 VkPhysicalDevice physicalDevice,
2335 const VkDeviceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002336 const VkAllocationCallbacks* pAllocator,
Jesse Hall04f4f472015-08-16 19:51:04 -07002337 VkDevice* pDevice);
2338
Jesse Halle1b12782015-11-30 11:27:32 -08002339VKAPI_ATTR void VKAPI_CALL vkDestroyDevice(
Jesse Hall03b6fe12015-11-24 12:44:21 -08002340 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002341 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002342
Jesse Halle1b12782015-11-30 11:27:32 -08002343VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceExtensionProperties(
Jesse Hall04f4f472015-08-16 19:51:04 -07002344 const char* pLayerName,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002345 uint32_t* pPropertyCount,
Jesse Hall04f4f472015-08-16 19:51:04 -07002346 VkExtensionProperties* pProperties);
2347
Jesse Halle1b12782015-11-30 11:27:32 -08002348VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceExtensionProperties(
Jesse Hall04f4f472015-08-16 19:51:04 -07002349 VkPhysicalDevice physicalDevice,
2350 const char* pLayerName,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002351 uint32_t* pPropertyCount,
Jesse Hall04f4f472015-08-16 19:51:04 -07002352 VkExtensionProperties* pProperties);
2353
Jesse Halle1b12782015-11-30 11:27:32 -08002354VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateInstanceLayerProperties(
Jesse Hall03b6fe12015-11-24 12:44:21 -08002355 uint32_t* pPropertyCount,
Jesse Hall04f4f472015-08-16 19:51:04 -07002356 VkLayerProperties* pProperties);
2357
Jesse Halle1b12782015-11-30 11:27:32 -08002358VKAPI_ATTR VkResult VKAPI_CALL vkEnumerateDeviceLayerProperties(
Jesse Hall04f4f472015-08-16 19:51:04 -07002359 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002360 uint32_t* pPropertyCount,
Jesse Hall04f4f472015-08-16 19:51:04 -07002361 VkLayerProperties* pProperties);
2362
Jesse Halle1b12782015-11-30 11:27:32 -08002363VKAPI_ATTR void VKAPI_CALL vkGetDeviceQueue(
Jesse Hall04f4f472015-08-16 19:51:04 -07002364 VkDevice device,
2365 uint32_t queueFamilyIndex,
2366 uint32_t queueIndex,
2367 VkQueue* pQueue);
2368
Jesse Halle1b12782015-11-30 11:27:32 -08002369VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit(
Jesse Hall04f4f472015-08-16 19:51:04 -07002370 VkQueue queue,
Jesse Halla366a512015-11-19 22:30:07 -08002371 uint32_t submitCount,
Jesse Hallb00daad2015-11-29 19:46:20 -08002372 const VkSubmitInfo* pSubmits,
Jesse Hall04f4f472015-08-16 19:51:04 -07002373 VkFence fence);
2374
Jesse Halle1b12782015-11-30 11:27:32 -08002375VKAPI_ATTR VkResult VKAPI_CALL vkQueueWaitIdle(
Jesse Hall04f4f472015-08-16 19:51:04 -07002376 VkQueue queue);
2377
Jesse Halle1b12782015-11-30 11:27:32 -08002378VKAPI_ATTR VkResult VKAPI_CALL vkDeviceWaitIdle(
Jesse Hall04f4f472015-08-16 19:51:04 -07002379 VkDevice device);
2380
Jesse Halle1b12782015-11-30 11:27:32 -08002381VKAPI_ATTR VkResult VKAPI_CALL vkAllocateMemory(
Jesse Hall04f4f472015-08-16 19:51:04 -07002382 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002383 const VkMemoryAllocateInfo* pAllocateInfo,
2384 const VkAllocationCallbacks* pAllocator,
2385 VkDeviceMemory* pMemory);
Jesse Hall04f4f472015-08-16 19:51:04 -07002386
Jesse Halle1b12782015-11-30 11:27:32 -08002387VKAPI_ATTR void VKAPI_CALL vkFreeMemory(
Jesse Hall04f4f472015-08-16 19:51:04 -07002388 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002389 VkDeviceMemory memory,
2390 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002391
Jesse Halle1b12782015-11-30 11:27:32 -08002392VKAPI_ATTR VkResult VKAPI_CALL vkMapMemory(
Jesse Hall04f4f472015-08-16 19:51:04 -07002393 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002394 VkDeviceMemory memory,
Jesse Hall04f4f472015-08-16 19:51:04 -07002395 VkDeviceSize offset,
2396 VkDeviceSize size,
2397 VkMemoryMapFlags flags,
2398 void** ppData);
2399
Jesse Halle1b12782015-11-30 11:27:32 -08002400VKAPI_ATTR void VKAPI_CALL vkUnmapMemory(
Jesse Hall04f4f472015-08-16 19:51:04 -07002401 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002402 VkDeviceMemory memory);
Jesse Hall04f4f472015-08-16 19:51:04 -07002403
Jesse Halle1b12782015-11-30 11:27:32 -08002404VKAPI_ATTR VkResult VKAPI_CALL vkFlushMappedMemoryRanges(
Jesse Hall04f4f472015-08-16 19:51:04 -07002405 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002406 uint32_t memoryRangeCount,
2407 const VkMappedMemoryRange* pMemoryRanges);
Jesse Hall04f4f472015-08-16 19:51:04 -07002408
Jesse Halle1b12782015-11-30 11:27:32 -08002409VKAPI_ATTR VkResult VKAPI_CALL vkInvalidateMappedMemoryRanges(
Jesse Hall04f4f472015-08-16 19:51:04 -07002410 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002411 uint32_t memoryRangeCount,
2412 const VkMappedMemoryRange* pMemoryRanges);
Jesse Hall04f4f472015-08-16 19:51:04 -07002413
Jesse Halle1b12782015-11-30 11:27:32 -08002414VKAPI_ATTR void VKAPI_CALL vkGetDeviceMemoryCommitment(
Jesse Hall04f4f472015-08-16 19:51:04 -07002415 VkDevice device,
2416 VkDeviceMemory memory,
2417 VkDeviceSize* pCommittedMemoryInBytes);
2418
Jesse Halle1b12782015-11-30 11:27:32 -08002419VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory(
Jesse Hall04f4f472015-08-16 19:51:04 -07002420 VkDevice device,
2421 VkBuffer buffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002422 VkDeviceMemory memory,
2423 VkDeviceSize memoryOffset);
Jesse Hall04f4f472015-08-16 19:51:04 -07002424
Jesse Halle1b12782015-11-30 11:27:32 -08002425VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory(
Jesse Hall04f4f472015-08-16 19:51:04 -07002426 VkDevice device,
2427 VkImage image,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002428 VkDeviceMemory memory,
2429 VkDeviceSize memoryOffset);
Jesse Hall04f4f472015-08-16 19:51:04 -07002430
Jesse Halle1b12782015-11-30 11:27:32 -08002431VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements(
Jesse Hall04f4f472015-08-16 19:51:04 -07002432 VkDevice device,
2433 VkBuffer buffer,
2434 VkMemoryRequirements* pMemoryRequirements);
2435
Jesse Halle1b12782015-11-30 11:27:32 -08002436VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements(
Jesse Hall04f4f472015-08-16 19:51:04 -07002437 VkDevice device,
2438 VkImage image,
2439 VkMemoryRequirements* pMemoryRequirements);
2440
Jesse Halle1b12782015-11-30 11:27:32 -08002441VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements(
Jesse Hall04f4f472015-08-16 19:51:04 -07002442 VkDevice device,
2443 VkImage image,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002444 uint32_t* pSparseMemoryRequirementCount,
Jesse Hall04f4f472015-08-16 19:51:04 -07002445 VkSparseImageMemoryRequirements* pSparseMemoryRequirements);
2446
Jesse Halle1b12782015-11-30 11:27:32 -08002447VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties(
Jesse Hall04f4f472015-08-16 19:51:04 -07002448 VkPhysicalDevice physicalDevice,
2449 VkFormat format,
2450 VkImageType type,
Jesse Hall091ed9e2015-11-30 00:55:29 -08002451 VkSampleCountFlagBits samples,
Jesse Hall04f4f472015-08-16 19:51:04 -07002452 VkImageUsageFlags usage,
2453 VkImageTiling tiling,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002454 uint32_t* pPropertyCount,
Jesse Hall04f4f472015-08-16 19:51:04 -07002455 VkSparseImageFormatProperties* pProperties);
2456
Jesse Halle1b12782015-11-30 11:27:32 -08002457VKAPI_ATTR VkResult VKAPI_CALL vkQueueBindSparse(
Jesse Hall04f4f472015-08-16 19:51:04 -07002458 VkQueue queue,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002459 uint32_t bindInfoCount,
Jesse Halla6429252015-11-29 18:59:42 -08002460 const VkBindSparseInfo* pBindInfo,
2461 VkFence fence);
Jesse Hall04f4f472015-08-16 19:51:04 -07002462
Jesse Halle1b12782015-11-30 11:27:32 -08002463VKAPI_ATTR VkResult VKAPI_CALL vkCreateFence(
Jesse Hall04f4f472015-08-16 19:51:04 -07002464 VkDevice device,
2465 const VkFenceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002466 const VkAllocationCallbacks* pAllocator,
Jesse Hall04f4f472015-08-16 19:51:04 -07002467 VkFence* pFence);
2468
Jesse Halle1b12782015-11-30 11:27:32 -08002469VKAPI_ATTR void VKAPI_CALL vkDestroyFence(
Jesse Hall04f4f472015-08-16 19:51:04 -07002470 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002471 VkFence fence,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002472 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002473
Jesse Halle1b12782015-11-30 11:27:32 -08002474VKAPI_ATTR VkResult VKAPI_CALL vkResetFences(
Jesse Hall04f4f472015-08-16 19:51:04 -07002475 VkDevice device,
2476 uint32_t fenceCount,
2477 const VkFence* pFences);
2478
Jesse Halle1b12782015-11-30 11:27:32 -08002479VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceStatus(
Jesse Hall04f4f472015-08-16 19:51:04 -07002480 VkDevice device,
2481 VkFence fence);
2482
Jesse Halle1b12782015-11-30 11:27:32 -08002483VKAPI_ATTR VkResult VKAPI_CALL vkWaitForFences(
Jesse Hall04f4f472015-08-16 19:51:04 -07002484 VkDevice device,
2485 uint32_t fenceCount,
2486 const VkFence* pFences,
2487 VkBool32 waitAll,
2488 uint64_t timeout);
2489
Jesse Halle1b12782015-11-30 11:27:32 -08002490VKAPI_ATTR VkResult VKAPI_CALL vkCreateSemaphore(
Jesse Hall04f4f472015-08-16 19:51:04 -07002491 VkDevice device,
2492 const VkSemaphoreCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002493 const VkAllocationCallbacks* pAllocator,
Jesse Hall04f4f472015-08-16 19:51:04 -07002494 VkSemaphore* pSemaphore);
2495
Jesse Halle1b12782015-11-30 11:27:32 -08002496VKAPI_ATTR void VKAPI_CALL vkDestroySemaphore(
Jesse Hall04f4f472015-08-16 19:51:04 -07002497 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002498 VkSemaphore semaphore,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002499 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002500
Jesse Halle1b12782015-11-30 11:27:32 -08002501VKAPI_ATTR VkResult VKAPI_CALL vkCreateEvent(
Jesse Hall04f4f472015-08-16 19:51:04 -07002502 VkDevice device,
2503 const VkEventCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002504 const VkAllocationCallbacks* pAllocator,
Jesse Hall04f4f472015-08-16 19:51:04 -07002505 VkEvent* pEvent);
2506
Jesse Halle1b12782015-11-30 11:27:32 -08002507VKAPI_ATTR void VKAPI_CALL vkDestroyEvent(
Jesse Hall04f4f472015-08-16 19:51:04 -07002508 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002509 VkEvent event,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002510 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002511
Jesse Halle1b12782015-11-30 11:27:32 -08002512VKAPI_ATTR VkResult VKAPI_CALL vkGetEventStatus(
Jesse Hall04f4f472015-08-16 19:51:04 -07002513 VkDevice device,
2514 VkEvent event);
2515
Jesse Halle1b12782015-11-30 11:27:32 -08002516VKAPI_ATTR VkResult VKAPI_CALL vkSetEvent(
Jesse Hall04f4f472015-08-16 19:51:04 -07002517 VkDevice device,
2518 VkEvent event);
2519
Jesse Halle1b12782015-11-30 11:27:32 -08002520VKAPI_ATTR VkResult VKAPI_CALL vkResetEvent(
Jesse Hall04f4f472015-08-16 19:51:04 -07002521 VkDevice device,
2522 VkEvent event);
2523
Jesse Halle1b12782015-11-30 11:27:32 -08002524VKAPI_ATTR VkResult VKAPI_CALL vkCreateQueryPool(
Jesse Hall04f4f472015-08-16 19:51:04 -07002525 VkDevice device,
2526 const VkQueryPoolCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002527 const VkAllocationCallbacks* pAllocator,
Jesse Hall04f4f472015-08-16 19:51:04 -07002528 VkQueryPool* pQueryPool);
2529
Jesse Halle1b12782015-11-30 11:27:32 -08002530VKAPI_ATTR void VKAPI_CALL vkDestroyQueryPool(
Jesse Hall04f4f472015-08-16 19:51:04 -07002531 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002532 VkQueryPool queryPool,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002533 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002534
Jesse Halle1b12782015-11-30 11:27:32 -08002535VKAPI_ATTR VkResult VKAPI_CALL vkGetQueryPoolResults(
Jesse Hall04f4f472015-08-16 19:51:04 -07002536 VkDevice device,
2537 VkQueryPool queryPool,
2538 uint32_t startQuery,
2539 uint32_t queryCount,
Jesse Halla9bb62b2015-11-21 19:31:56 -08002540 size_t dataSize,
Jesse Hall04f4f472015-08-16 19:51:04 -07002541 void* pData,
Jesse Halla9bb62b2015-11-21 19:31:56 -08002542 VkDeviceSize stride,
Jesse Hall04f4f472015-08-16 19:51:04 -07002543 VkQueryResultFlags flags);
2544
Jesse Halle1b12782015-11-30 11:27:32 -08002545VKAPI_ATTR VkResult VKAPI_CALL vkCreateBuffer(
Jesse Hall04f4f472015-08-16 19:51:04 -07002546 VkDevice device,
2547 const VkBufferCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002548 const VkAllocationCallbacks* pAllocator,
Jesse Hall04f4f472015-08-16 19:51:04 -07002549 VkBuffer* pBuffer);
2550
Jesse Halle1b12782015-11-30 11:27:32 -08002551VKAPI_ATTR void VKAPI_CALL vkDestroyBuffer(
Jesse Hall04f4f472015-08-16 19:51:04 -07002552 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002553 VkBuffer buffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002554 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002555
Jesse Halle1b12782015-11-30 11:27:32 -08002556VKAPI_ATTR VkResult VKAPI_CALL vkCreateBufferView(
Jesse Hall04f4f472015-08-16 19:51:04 -07002557 VkDevice device,
2558 const VkBufferViewCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002559 const VkAllocationCallbacks* pAllocator,
Jesse Hall04f4f472015-08-16 19:51:04 -07002560 VkBufferView* pView);
2561
Jesse Halle1b12782015-11-30 11:27:32 -08002562VKAPI_ATTR void VKAPI_CALL vkDestroyBufferView(
Jesse Hall04f4f472015-08-16 19:51:04 -07002563 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002564 VkBufferView bufferView,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002565 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002566
Jesse Halle1b12782015-11-30 11:27:32 -08002567VKAPI_ATTR VkResult VKAPI_CALL vkCreateImage(
Jesse Hall04f4f472015-08-16 19:51:04 -07002568 VkDevice device,
2569 const VkImageCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002570 const VkAllocationCallbacks* pAllocator,
Jesse Hall04f4f472015-08-16 19:51:04 -07002571 VkImage* pImage);
2572
Jesse Halle1b12782015-11-30 11:27:32 -08002573VKAPI_ATTR void VKAPI_CALL vkDestroyImage(
Jesse Hall04f4f472015-08-16 19:51:04 -07002574 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002575 VkImage image,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002576 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002577
Jesse Halle1b12782015-11-30 11:27:32 -08002578VKAPI_ATTR void VKAPI_CALL vkGetImageSubresourceLayout(
Jesse Hall04f4f472015-08-16 19:51:04 -07002579 VkDevice device,
2580 VkImage image,
2581 const VkImageSubresource* pSubresource,
2582 VkSubresourceLayout* pLayout);
2583
Jesse Halle1b12782015-11-30 11:27:32 -08002584VKAPI_ATTR VkResult VKAPI_CALL vkCreateImageView(
Jesse Hall04f4f472015-08-16 19:51:04 -07002585 VkDevice device,
2586 const VkImageViewCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002587 const VkAllocationCallbacks* pAllocator,
Jesse Hall04f4f472015-08-16 19:51:04 -07002588 VkImageView* pView);
2589
Jesse Halle1b12782015-11-30 11:27:32 -08002590VKAPI_ATTR void VKAPI_CALL vkDestroyImageView(
Jesse Hall04f4f472015-08-16 19:51:04 -07002591 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002592 VkImageView imageView,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002593 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002594
Jesse Halle1b12782015-11-30 11:27:32 -08002595VKAPI_ATTR VkResult VKAPI_CALL vkCreateShaderModule(
Jesse Hall04f4f472015-08-16 19:51:04 -07002596 VkDevice device,
2597 const VkShaderModuleCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002598 const VkAllocationCallbacks* pAllocator,
Jesse Hall04f4f472015-08-16 19:51:04 -07002599 VkShaderModule* pShaderModule);
2600
Jesse Halle1b12782015-11-30 11:27:32 -08002601VKAPI_ATTR void VKAPI_CALL vkDestroyShaderModule(
Jesse Hall04f4f472015-08-16 19:51:04 -07002602 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002603 VkShaderModule shaderModule,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002604 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002605
Jesse Halle1b12782015-11-30 11:27:32 -08002606VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineCache(
Jesse Hall04f4f472015-08-16 19:51:04 -07002607 VkDevice device,
2608 const VkPipelineCacheCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002609 const VkAllocationCallbacks* pAllocator,
Jesse Hall04f4f472015-08-16 19:51:04 -07002610 VkPipelineCache* pPipelineCache);
2611
Jesse Halle1b12782015-11-30 11:27:32 -08002612VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineCache(
Jesse Hall04f4f472015-08-16 19:51:04 -07002613 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002614 VkPipelineCache pipelineCache,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002615 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002616
Jesse Halle1b12782015-11-30 11:27:32 -08002617VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineCacheData(
Jesse Hall04f4f472015-08-16 19:51:04 -07002618 VkDevice device,
2619 VkPipelineCache pipelineCache,
Jesse Halla9bb62b2015-11-21 19:31:56 -08002620 size_t* pDataSize,
Jesse Hall04f4f472015-08-16 19:51:04 -07002621 void* pData);
2622
Jesse Halle1b12782015-11-30 11:27:32 -08002623VKAPI_ATTR VkResult VKAPI_CALL vkMergePipelineCaches(
Jesse Hall04f4f472015-08-16 19:51:04 -07002624 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002625 VkPipelineCache dstCache,
Jesse Hall04f4f472015-08-16 19:51:04 -07002626 uint32_t srcCacheCount,
2627 const VkPipelineCache* pSrcCaches);
2628
Jesse Halle1b12782015-11-30 11:27:32 -08002629VKAPI_ATTR VkResult VKAPI_CALL vkCreateGraphicsPipelines(
Jesse Hall04f4f472015-08-16 19:51:04 -07002630 VkDevice device,
2631 VkPipelineCache pipelineCache,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002632 uint32_t createInfoCount,
Jesse Hall04f4f472015-08-16 19:51:04 -07002633 const VkGraphicsPipelineCreateInfo* pCreateInfos,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002634 const VkAllocationCallbacks* pAllocator,
Jesse Hall04f4f472015-08-16 19:51:04 -07002635 VkPipeline* pPipelines);
2636
Jesse Halle1b12782015-11-30 11:27:32 -08002637VKAPI_ATTR VkResult VKAPI_CALL vkCreateComputePipelines(
Jesse Hall04f4f472015-08-16 19:51:04 -07002638 VkDevice device,
2639 VkPipelineCache pipelineCache,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002640 uint32_t createInfoCount,
Jesse Hall04f4f472015-08-16 19:51:04 -07002641 const VkComputePipelineCreateInfo* pCreateInfos,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002642 const VkAllocationCallbacks* pAllocator,
Jesse Hall04f4f472015-08-16 19:51:04 -07002643 VkPipeline* pPipelines);
2644
Jesse Halle1b12782015-11-30 11:27:32 -08002645VKAPI_ATTR void VKAPI_CALL vkDestroyPipeline(
Jesse Hall04f4f472015-08-16 19:51:04 -07002646 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002647 VkPipeline pipeline,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002648 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002649
Jesse Halle1b12782015-11-30 11:27:32 -08002650VKAPI_ATTR VkResult VKAPI_CALL vkCreatePipelineLayout(
Jesse Hall04f4f472015-08-16 19:51:04 -07002651 VkDevice device,
2652 const VkPipelineLayoutCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002653 const VkAllocationCallbacks* pAllocator,
Jesse Hall04f4f472015-08-16 19:51:04 -07002654 VkPipelineLayout* pPipelineLayout);
2655
Jesse Halle1b12782015-11-30 11:27:32 -08002656VKAPI_ATTR void VKAPI_CALL vkDestroyPipelineLayout(
Jesse Hall04f4f472015-08-16 19:51:04 -07002657 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002658 VkPipelineLayout pipelineLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002659 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002660
Jesse Halle1b12782015-11-30 11:27:32 -08002661VKAPI_ATTR VkResult VKAPI_CALL vkCreateSampler(
Jesse Hall04f4f472015-08-16 19:51:04 -07002662 VkDevice device,
2663 const VkSamplerCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002664 const VkAllocationCallbacks* pAllocator,
Jesse Hall04f4f472015-08-16 19:51:04 -07002665 VkSampler* pSampler);
2666
Jesse Halle1b12782015-11-30 11:27:32 -08002667VKAPI_ATTR void VKAPI_CALL vkDestroySampler(
Jesse Hall04f4f472015-08-16 19:51:04 -07002668 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002669 VkSampler sampler,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002670 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002671
Jesse Halle1b12782015-11-30 11:27:32 -08002672VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorSetLayout(
Jesse Hall04f4f472015-08-16 19:51:04 -07002673 VkDevice device,
2674 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002675 const VkAllocationCallbacks* pAllocator,
Jesse Hall04f4f472015-08-16 19:51:04 -07002676 VkDescriptorSetLayout* pSetLayout);
2677
Jesse Halle1b12782015-11-30 11:27:32 -08002678VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorSetLayout(
Jesse Hall04f4f472015-08-16 19:51:04 -07002679 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002680 VkDescriptorSetLayout descriptorSetLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002681 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002682
Jesse Halle1b12782015-11-30 11:27:32 -08002683VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorPool(
Jesse Hall04f4f472015-08-16 19:51:04 -07002684 VkDevice device,
Jesse Hall04f4f472015-08-16 19:51:04 -07002685 const VkDescriptorPoolCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002686 const VkAllocationCallbacks* pAllocator,
Jesse Hall04f4f472015-08-16 19:51:04 -07002687 VkDescriptorPool* pDescriptorPool);
2688
Jesse Halle1b12782015-11-30 11:27:32 -08002689VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorPool(
Jesse Hall04f4f472015-08-16 19:51:04 -07002690 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002691 VkDescriptorPool descriptorPool,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002692 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002693
Jesse Halle1b12782015-11-30 11:27:32 -08002694VKAPI_ATTR VkResult VKAPI_CALL vkResetDescriptorPool(
Jesse Hall04f4f472015-08-16 19:51:04 -07002695 VkDevice device,
Jesse Hallfbf97b02015-11-20 14:17:03 -08002696 VkDescriptorPool descriptorPool,
2697 VkDescriptorPoolResetFlags flags);
Jesse Hall04f4f472015-08-16 19:51:04 -07002698
Jesse Halle1b12782015-11-30 11:27:32 -08002699VKAPI_ATTR VkResult VKAPI_CALL vkAllocateDescriptorSets(
Jesse Hall04f4f472015-08-16 19:51:04 -07002700 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002701 const VkDescriptorSetAllocateInfo* pAllocateInfo,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002702 VkDescriptorSet* pDescriptorSets);
Jesse Hall04f4f472015-08-16 19:51:04 -07002703
Jesse Halle1b12782015-11-30 11:27:32 -08002704VKAPI_ATTR VkResult VKAPI_CALL vkFreeDescriptorSets(
Jesse Hall04f4f472015-08-16 19:51:04 -07002705 VkDevice device,
2706 VkDescriptorPool descriptorPool,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002707 uint32_t descriptorSetCount,
Jesse Hall04f4f472015-08-16 19:51:04 -07002708 const VkDescriptorSet* pDescriptorSets);
2709
Jesse Halle1b12782015-11-30 11:27:32 -08002710VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSets(
Jesse Hall04f4f472015-08-16 19:51:04 -07002711 VkDevice device,
Jesse Hallb00daad2015-11-29 19:46:20 -08002712 uint32_t descriptorWriteCount,
Jesse Hall04f4f472015-08-16 19:51:04 -07002713 const VkWriteDescriptorSet* pDescriptorWrites,
Jesse Hallb00daad2015-11-29 19:46:20 -08002714 uint32_t descriptorCopyCount,
Jesse Hall04f4f472015-08-16 19:51:04 -07002715 const VkCopyDescriptorSet* pDescriptorCopies);
2716
Jesse Halle1b12782015-11-30 11:27:32 -08002717VKAPI_ATTR VkResult VKAPI_CALL vkCreateFramebuffer(
Jesse Hall04f4f472015-08-16 19:51:04 -07002718 VkDevice device,
2719 const VkFramebufferCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002720 const VkAllocationCallbacks* pAllocator,
Jesse Hall04f4f472015-08-16 19:51:04 -07002721 VkFramebuffer* pFramebuffer);
2722
Jesse Halle1b12782015-11-30 11:27:32 -08002723VKAPI_ATTR void VKAPI_CALL vkDestroyFramebuffer(
Jesse Hall04f4f472015-08-16 19:51:04 -07002724 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002725 VkFramebuffer framebuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002726 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002727
Jesse Halle1b12782015-11-30 11:27:32 -08002728VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass(
Jesse Hall04f4f472015-08-16 19:51:04 -07002729 VkDevice device,
2730 const VkRenderPassCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002731 const VkAllocationCallbacks* pAllocator,
Jesse Hall04f4f472015-08-16 19:51:04 -07002732 VkRenderPass* pRenderPass);
2733
Jesse Halle1b12782015-11-30 11:27:32 -08002734VKAPI_ATTR void VKAPI_CALL vkDestroyRenderPass(
Jesse Hall04f4f472015-08-16 19:51:04 -07002735 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002736 VkRenderPass renderPass,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002737 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002738
Jesse Halle1b12782015-11-30 11:27:32 -08002739VKAPI_ATTR void VKAPI_CALL vkGetRenderAreaGranularity(
Jesse Hall04f4f472015-08-16 19:51:04 -07002740 VkDevice device,
2741 VkRenderPass renderPass,
2742 VkExtent2D* pGranularity);
2743
Jesse Halle1b12782015-11-30 11:27:32 -08002744VKAPI_ATTR VkResult VKAPI_CALL vkCreateCommandPool(
Jesse Hall04f4f472015-08-16 19:51:04 -07002745 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002746 const VkCommandPoolCreateInfo* pCreateInfo,
2747 const VkAllocationCallbacks* pAllocator,
2748 VkCommandPool* pCommandPool);
Jesse Hall04f4f472015-08-16 19:51:04 -07002749
Jesse Halle1b12782015-11-30 11:27:32 -08002750VKAPI_ATTR void VKAPI_CALL vkDestroyCommandPool(
Jesse Hall04f4f472015-08-16 19:51:04 -07002751 VkDevice device,
Jesse Hall65ab5522015-11-30 00:07:16 -08002752 VkCommandPool commandPool,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002753 const VkAllocationCallbacks* pAllocator);
Jesse Hall04f4f472015-08-16 19:51:04 -07002754
Jesse Halle1b12782015-11-30 11:27:32 -08002755VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandPool(
Jesse Hall04f4f472015-08-16 19:51:04 -07002756 VkDevice device,
Jesse Hall65ab5522015-11-30 00:07:16 -08002757 VkCommandPool commandPool,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002758 VkCommandPoolResetFlags flags);
Jesse Hall04f4f472015-08-16 19:51:04 -07002759
Jesse Halle1b12782015-11-30 11:27:32 -08002760VKAPI_ATTR VkResult VKAPI_CALL vkAllocateCommandBuffers(
Jesse Hall04f4f472015-08-16 19:51:04 -07002761 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002762 const VkCommandBufferAllocateInfo* pAllocateInfo,
2763 VkCommandBuffer* pCommandBuffers);
Jesse Hall04f4f472015-08-16 19:51:04 -07002764
Jesse Halle1b12782015-11-30 11:27:32 -08002765VKAPI_ATTR void VKAPI_CALL vkFreeCommandBuffers(
Jesse Hall04f4f472015-08-16 19:51:04 -07002766 VkDevice device,
Jesse Hall65ab5522015-11-30 00:07:16 -08002767 VkCommandPool commandPool,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002768 uint32_t commandBufferCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002769 const VkCommandBuffer* pCommandBuffers);
Jesse Hall04f4f472015-08-16 19:51:04 -07002770
Jesse Halle1b12782015-11-30 11:27:32 -08002771VKAPI_ATTR VkResult VKAPI_CALL vkBeginCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002772 VkCommandBuffer commandBuffer,
2773 const VkCommandBufferBeginInfo* pBeginInfo);
Jesse Hall04f4f472015-08-16 19:51:04 -07002774
Jesse Halle1b12782015-11-30 11:27:32 -08002775VKAPI_ATTR VkResult VKAPI_CALL vkEndCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002776 VkCommandBuffer commandBuffer);
Jesse Hall04f4f472015-08-16 19:51:04 -07002777
Jesse Halle1b12782015-11-30 11:27:32 -08002778VKAPI_ATTR VkResult VKAPI_CALL vkResetCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002779 VkCommandBuffer commandBuffer,
2780 VkCommandBufferResetFlags flags);
Jesse Hall04f4f472015-08-16 19:51:04 -07002781
Jesse Halle1b12782015-11-30 11:27:32 -08002782VKAPI_ATTR void VKAPI_CALL vkCmdBindPipeline(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002783 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002784 VkPipelineBindPoint pipelineBindPoint,
2785 VkPipeline pipeline);
2786
Jesse Halle1b12782015-11-30 11:27:32 -08002787VKAPI_ATTR void VKAPI_CALL vkCmdSetViewport(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002788 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002789 uint32_t viewportCount,
2790 const VkViewport* pViewports);
Jesse Hall04f4f472015-08-16 19:51:04 -07002791
Jesse Halle1b12782015-11-30 11:27:32 -08002792VKAPI_ATTR void VKAPI_CALL vkCmdSetScissor(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002793 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002794 uint32_t scissorCount,
2795 const VkRect2D* pScissors);
Jesse Hall04f4f472015-08-16 19:51:04 -07002796
Jesse Halle1b12782015-11-30 11:27:32 -08002797VKAPI_ATTR void VKAPI_CALL vkCmdSetLineWidth(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002798 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002799 float lineWidth);
Jesse Hall04f4f472015-08-16 19:51:04 -07002800
Jesse Halle1b12782015-11-30 11:27:32 -08002801VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBias(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002802 VkCommandBuffer commandBuffer,
Jesse Halla9bb62b2015-11-21 19:31:56 -08002803 float depthBiasConstantFactor,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002804 float depthBiasClamp,
Jesse Halla9bb62b2015-11-21 19:31:56 -08002805 float depthBiasSlopeFactor);
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002806
Jesse Halle1b12782015-11-30 11:27:32 -08002807VKAPI_ATTR void VKAPI_CALL vkCmdSetBlendConstants(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002808 VkCommandBuffer commandBuffer,
Jesse Hallb00daad2015-11-29 19:46:20 -08002809 const float blendConstants[4]);
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002810
Jesse Halle1b12782015-11-30 11:27:32 -08002811VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBounds(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002812 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002813 float minDepthBounds,
2814 float maxDepthBounds);
2815
Jesse Halle1b12782015-11-30 11:27:32 -08002816VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilCompareMask(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002817 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002818 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08002819 uint32_t compareMask);
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002820
Jesse Halle1b12782015-11-30 11:27:32 -08002821VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilWriteMask(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002822 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002823 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08002824 uint32_t writeMask);
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002825
Jesse Halle1b12782015-11-30 11:27:32 -08002826VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilReference(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002827 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002828 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08002829 uint32_t reference);
Jesse Hall04f4f472015-08-16 19:51:04 -07002830
Jesse Halle1b12782015-11-30 11:27:32 -08002831VKAPI_ATTR void VKAPI_CALL vkCmdBindDescriptorSets(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002832 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002833 VkPipelineBindPoint pipelineBindPoint,
2834 VkPipelineLayout layout,
2835 uint32_t firstSet,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002836 uint32_t descriptorSetCount,
Jesse Hall04f4f472015-08-16 19:51:04 -07002837 const VkDescriptorSet* pDescriptorSets,
2838 uint32_t dynamicOffsetCount,
2839 const uint32_t* pDynamicOffsets);
2840
Jesse Halle1b12782015-11-30 11:27:32 -08002841VKAPI_ATTR void VKAPI_CALL vkCmdBindIndexBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002842 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002843 VkBuffer buffer,
2844 VkDeviceSize offset,
2845 VkIndexType indexType);
2846
Jesse Halle1b12782015-11-30 11:27:32 -08002847VKAPI_ATTR void VKAPI_CALL vkCmdBindVertexBuffers(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002848 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002849 uint32_t startBinding,
2850 uint32_t bindingCount,
2851 const VkBuffer* pBuffers,
2852 const VkDeviceSize* pOffsets);
2853
Jesse Halle1b12782015-11-30 11:27:32 -08002854VKAPI_ATTR void VKAPI_CALL vkCmdDraw(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002855 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002856 uint32_t vertexCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002857 uint32_t instanceCount,
2858 uint32_t firstVertex,
2859 uint32_t firstInstance);
Jesse Hall04f4f472015-08-16 19:51:04 -07002860
Jesse Halle1b12782015-11-30 11:27:32 -08002861VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexed(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002862 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002863 uint32_t indexCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002864 uint32_t instanceCount,
2865 uint32_t firstIndex,
Jesse Hall04f4f472015-08-16 19:51:04 -07002866 int32_t vertexOffset,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002867 uint32_t firstInstance);
Jesse Hall04f4f472015-08-16 19:51:04 -07002868
Jesse Halle1b12782015-11-30 11:27:32 -08002869VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002870 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002871 VkBuffer buffer,
2872 VkDeviceSize offset,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002873 uint32_t drawCount,
Jesse Hall04f4f472015-08-16 19:51:04 -07002874 uint32_t stride);
2875
Jesse Halle1b12782015-11-30 11:27:32 -08002876VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002877 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002878 VkBuffer buffer,
2879 VkDeviceSize offset,
Jesse Hall03b6fe12015-11-24 12:44:21 -08002880 uint32_t drawCount,
Jesse Hall04f4f472015-08-16 19:51:04 -07002881 uint32_t stride);
2882
Jesse Halle1b12782015-11-30 11:27:32 -08002883VKAPI_ATTR void VKAPI_CALL vkCmdDispatch(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002884 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002885 uint32_t x,
2886 uint32_t y,
2887 uint32_t z);
2888
Jesse Halle1b12782015-11-30 11:27:32 -08002889VKAPI_ATTR void VKAPI_CALL vkCmdDispatchIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002890 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002891 VkBuffer buffer,
2892 VkDeviceSize offset);
2893
Jesse Halle1b12782015-11-30 11:27:32 -08002894VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002895 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002896 VkBuffer srcBuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002897 VkBuffer dstBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002898 uint32_t regionCount,
2899 const VkBufferCopy* pRegions);
2900
Jesse Halle1b12782015-11-30 11:27:32 -08002901VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002902 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002903 VkImage srcImage,
2904 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002905 VkImage dstImage,
2906 VkImageLayout dstImageLayout,
Jesse Hall04f4f472015-08-16 19:51:04 -07002907 uint32_t regionCount,
2908 const VkImageCopy* pRegions);
2909
Jesse Halle1b12782015-11-30 11:27:32 -08002910VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002911 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002912 VkImage srcImage,
2913 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002914 VkImage dstImage,
2915 VkImageLayout dstImageLayout,
Jesse Hall04f4f472015-08-16 19:51:04 -07002916 uint32_t regionCount,
2917 const VkImageBlit* pRegions,
Jesse Hall23ff73f2015-11-29 14:36:39 -08002918 VkFilter filter);
Jesse Hall04f4f472015-08-16 19:51:04 -07002919
Jesse Halle1b12782015-11-30 11:27:32 -08002920VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002921 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002922 VkBuffer srcBuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002923 VkImage dstImage,
2924 VkImageLayout dstImageLayout,
Jesse Hall04f4f472015-08-16 19:51:04 -07002925 uint32_t regionCount,
2926 const VkBufferImageCopy* pRegions);
2927
Jesse Halle1b12782015-11-30 11:27:32 -08002928VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002929 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002930 VkImage srcImage,
2931 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002932 VkBuffer dstBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002933 uint32_t regionCount,
2934 const VkBufferImageCopy* pRegions);
2935
Jesse Halle1b12782015-11-30 11:27:32 -08002936VKAPI_ATTR void VKAPI_CALL vkCmdUpdateBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002937 VkCommandBuffer commandBuffer,
2938 VkBuffer dstBuffer,
2939 VkDeviceSize dstOffset,
Jesse Hall04f4f472015-08-16 19:51:04 -07002940 VkDeviceSize dataSize,
2941 const uint32_t* pData);
2942
Jesse Halle1b12782015-11-30 11:27:32 -08002943VKAPI_ATTR void VKAPI_CALL vkCmdFillBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002944 VkCommandBuffer commandBuffer,
2945 VkBuffer dstBuffer,
2946 VkDeviceSize dstOffset,
Jesse Hallb00daad2015-11-29 19:46:20 -08002947 VkDeviceSize size,
Jesse Hall04f4f472015-08-16 19:51:04 -07002948 uint32_t data);
2949
Jesse Halle1b12782015-11-30 11:27:32 -08002950VKAPI_ATTR void VKAPI_CALL vkCmdClearColorImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002951 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002952 VkImage image,
2953 VkImageLayout imageLayout,
2954 const VkClearColorValue* pColor,
2955 uint32_t rangeCount,
2956 const VkImageSubresourceRange* pRanges);
2957
Jesse Halle1b12782015-11-30 11:27:32 -08002958VKAPI_ATTR void VKAPI_CALL vkCmdClearDepthStencilImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002959 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002960 VkImage image,
2961 VkImageLayout imageLayout,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002962 const VkClearDepthStencilValue* pDepthStencil,
Jesse Hall04f4f472015-08-16 19:51:04 -07002963 uint32_t rangeCount,
2964 const VkImageSubresourceRange* pRanges);
2965
Jesse Halle1b12782015-11-30 11:27:32 -08002966VKAPI_ATTR void VKAPI_CALL vkCmdClearAttachments(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002967 VkCommandBuffer commandBuffer,
Jesse Hallae38f732015-11-19 21:32:50 -08002968 uint32_t attachmentCount,
2969 const VkClearAttachment* pAttachments,
Jesse Hall04f4f472015-08-16 19:51:04 -07002970 uint32_t rectCount,
Jesse Halla15a4bf2015-11-19 22:48:02 -08002971 const VkClearRect* pRects);
Jesse Hall04f4f472015-08-16 19:51:04 -07002972
Jesse Halle1b12782015-11-30 11:27:32 -08002973VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002974 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002975 VkImage srcImage,
2976 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002977 VkImage dstImage,
2978 VkImageLayout dstImageLayout,
Jesse Hall04f4f472015-08-16 19:51:04 -07002979 uint32_t regionCount,
2980 const VkImageResolve* pRegions);
2981
Jesse Halle1b12782015-11-30 11:27:32 -08002982VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002983 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002984 VkEvent event,
2985 VkPipelineStageFlags stageMask);
2986
Jesse Halle1b12782015-11-30 11:27:32 -08002987VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002988 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002989 VkEvent event,
2990 VkPipelineStageFlags stageMask);
2991
Jesse Halle1b12782015-11-30 11:27:32 -08002992VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents(
Jesse Hall3fbc8562015-11-29 22:10:52 -08002993 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07002994 uint32_t eventCount,
2995 const VkEvent* pEvents,
2996 VkPipelineStageFlags srcStageMask,
Jesse Hall3fbc8562015-11-29 22:10:52 -08002997 VkPipelineStageFlags dstStageMask,
2998 uint32_t memoryBarrierCount,
2999 const void* const* ppMemoryBarriers);
Jesse Hall04f4f472015-08-16 19:51:04 -07003000
Jesse Halle1b12782015-11-30 11:27:32 -08003001VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier(
Jesse Hall3fbc8562015-11-29 22:10:52 -08003002 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07003003 VkPipelineStageFlags srcStageMask,
Jesse Hall3fbc8562015-11-29 22:10:52 -08003004 VkPipelineStageFlags dstStageMask,
Jesse Halldc6d36c2015-11-29 19:12:15 -08003005 VkDependencyFlags dependencyFlags,
Jesse Hall3fbc8562015-11-29 22:10:52 -08003006 uint32_t memoryBarrierCount,
3007 const void* const* ppMemoryBarriers);
Jesse Hall04f4f472015-08-16 19:51:04 -07003008
Jesse Halle1b12782015-11-30 11:27:32 -08003009VKAPI_ATTR void VKAPI_CALL vkCmdBeginQuery(
Jesse Hall3fbc8562015-11-29 22:10:52 -08003010 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07003011 VkQueryPool queryPool,
Jesse Hall65ab5522015-11-30 00:07:16 -08003012 uint32_t entry,
Jesse Hall04f4f472015-08-16 19:51:04 -07003013 VkQueryControlFlags flags);
3014
Jesse Halle1b12782015-11-30 11:27:32 -08003015VKAPI_ATTR void VKAPI_CALL vkCmdEndQuery(
Jesse Hall3fbc8562015-11-29 22:10:52 -08003016 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07003017 VkQueryPool queryPool,
Jesse Hall65ab5522015-11-30 00:07:16 -08003018 uint32_t entry);
Jesse Hall04f4f472015-08-16 19:51:04 -07003019
Jesse Halle1b12782015-11-30 11:27:32 -08003020VKAPI_ATTR void VKAPI_CALL vkCmdResetQueryPool(
Jesse Hall3fbc8562015-11-29 22:10:52 -08003021 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07003022 VkQueryPool queryPool,
3023 uint32_t startQuery,
3024 uint32_t queryCount);
3025
Jesse Halle1b12782015-11-30 11:27:32 -08003026VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp(
Jesse Hall3fbc8562015-11-29 22:10:52 -08003027 VkCommandBuffer commandBuffer,
Jesse Hall6f39a6d2015-11-24 11:08:36 -08003028 VkPipelineStageFlagBits pipelineStage,
Jesse Halla3a7a1d2015-11-24 11:37:23 -08003029 VkQueryPool queryPool,
Jesse Hall65ab5522015-11-30 00:07:16 -08003030 uint32_t entry);
Jesse Hall04f4f472015-08-16 19:51:04 -07003031
Jesse Halle1b12782015-11-30 11:27:32 -08003032VKAPI_ATTR void VKAPI_CALL vkCmdCopyQueryPoolResults(
Jesse Hall3fbc8562015-11-29 22:10:52 -08003033 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07003034 VkQueryPool queryPool,
3035 uint32_t startQuery,
3036 uint32_t queryCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08003037 VkBuffer dstBuffer,
3038 VkDeviceSize dstOffset,
Jesse Halla9bb62b2015-11-21 19:31:56 -08003039 VkDeviceSize stride,
Jesse Hall04f4f472015-08-16 19:51:04 -07003040 VkQueryResultFlags flags);
3041
Jesse Halle1b12782015-11-30 11:27:32 -08003042VKAPI_ATTR void VKAPI_CALL vkCmdPushConstants(
Jesse Hall3fbc8562015-11-29 22:10:52 -08003043 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07003044 VkPipelineLayout layout,
3045 VkShaderStageFlags stageFlags,
Jesse Hall03b6fe12015-11-24 12:44:21 -08003046 uint32_t offset,
3047 uint32_t size,
Jesse Hall04f4f472015-08-16 19:51:04 -07003048 const void* values);
3049
Jesse Halle1b12782015-11-30 11:27:32 -08003050VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08003051 VkCommandBuffer commandBuffer,
Jesse Hall04f4f472015-08-16 19:51:04 -07003052 const VkRenderPassBeginInfo* pRenderPassBegin,
Jesse Hall65ab5522015-11-30 00:07:16 -08003053 VkSubpassContents contents);
Jesse Hall04f4f472015-08-16 19:51:04 -07003054
Jesse Halle1b12782015-11-30 11:27:32 -08003055VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08003056 VkCommandBuffer commandBuffer,
Jesse Hall65ab5522015-11-30 00:07:16 -08003057 VkSubpassContents contents);
Jesse Hall04f4f472015-08-16 19:51:04 -07003058
Jesse Halle1b12782015-11-30 11:27:32 -08003059VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08003060 VkCommandBuffer commandBuffer);
Jesse Hall04f4f472015-08-16 19:51:04 -07003061
Jesse Halle1b12782015-11-30 11:27:32 -08003062VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands(
Jesse Hall3fbc8562015-11-29 22:10:52 -08003063 VkCommandBuffer commandBuffer,
3064 uint32_t commandBuffersCount,
3065 const VkCommandBuffer* pCommandBuffers);
Jesse Hall04f4f472015-08-16 19:51:04 -07003066#endif
3067
Jesse Hall091ed9e2015-11-30 00:55:29 -08003068#define VK_KHR_surface 1
Jesse Hall3fbc8562015-11-29 22:10:52 -08003069VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR)
Jesse Hall1356b0d2015-11-23 17:24:58 -08003070
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003071#define VK_KHR_SURFACE_REVISION 22
3072#define VK_KHR_SURFACE_EXTENSION_NUMBER 1
3073#define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface"
Jesse Halla6429252015-11-29 18:59:42 -08003074#define VK_ERROR_SURFACE_LOST_KHR ((VkResult)(int)0xc0000400)
Jesse Hall1356b0d2015-11-23 17:24:58 -08003075
Jesse Hall1356b0d2015-11-23 17:24:58 -08003076
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003077typedef enum VkSurfaceTransformKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003078 VK_SURFACE_TRANSFORM_NONE_KHR = 0,
3079 VK_SURFACE_TRANSFORM_ROT90_KHR = 1,
3080 VK_SURFACE_TRANSFORM_ROT180_KHR = 2,
3081 VK_SURFACE_TRANSFORM_ROT270_KHR = 3,
3082 VK_SURFACE_TRANSFORM_HMIRROR_KHR = 4,
3083 VK_SURFACE_TRANSFORM_HMIRROR_ROT90_KHR = 5,
3084 VK_SURFACE_TRANSFORM_HMIRROR_ROT180_KHR = 6,
3085 VK_SURFACE_TRANSFORM_HMIRROR_ROT270_KHR = 7,
3086 VK_SURFACE_TRANSFORM_INHERIT_KHR = 8,
3087 VK_SURFACE_TRANSFORM_BEGIN_RANGE = VK_SURFACE_TRANSFORM_NONE_KHR,
3088 VK_SURFACE_TRANSFORM_END_RANGE = VK_SURFACE_TRANSFORM_INHERIT_KHR,
Jesse Hall3fbc8562015-11-29 22:10:52 -08003089 VK_SURFACE_TRANSFORM_RANGE_SIZE = (VK_SURFACE_TRANSFORM_INHERIT_KHR - VK_SURFACE_TRANSFORM_NONE_KHR + 1),
Jesse Hall1356b0d2015-11-23 17:24:58 -08003090 VK_SURFACE_TRANSFORM_MAX_ENUM = 0x7FFFFFFF
3091} VkSurfaceTransformKHR;
3092
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003093typedef enum VkColorSpaceKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003094 VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0,
3095 VK_COLORSPACE_BEGIN_RANGE = VK_COLORSPACE_SRGB_NONLINEAR_KHR,
3096 VK_COLORSPACE_END_RANGE = VK_COLORSPACE_SRGB_NONLINEAR_KHR,
Jesse Hall3fbc8562015-11-29 22:10:52 -08003097 VK_COLORSPACE_RANGE_SIZE = (VK_COLORSPACE_SRGB_NONLINEAR_KHR - VK_COLORSPACE_SRGB_NONLINEAR_KHR + 1),
Jesse Hall1356b0d2015-11-23 17:24:58 -08003098 VK_COLORSPACE_MAX_ENUM = 0x7FFFFFFF
3099} VkColorSpaceKHR;
3100
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003101typedef enum VkPresentModeKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003102 VK_PRESENT_MODE_IMMEDIATE_KHR = 0,
3103 VK_PRESENT_MODE_MAILBOX_KHR = 1,
3104 VK_PRESENT_MODE_FIFO_KHR = 2,
Jesse Hall03b6fe12015-11-24 12:44:21 -08003105 VK_PRESENT_MODE_FIFO_RELAXED_KHR = 3,
Jesse Hall1356b0d2015-11-23 17:24:58 -08003106 VK_PRESENT_MODE_BEGIN_RANGE = VK_PRESENT_MODE_IMMEDIATE_KHR,
Jesse Hall03b6fe12015-11-24 12:44:21 -08003107 VK_PRESENT_MODE_END_RANGE = VK_PRESENT_MODE_FIFO_RELAXED_KHR,
Jesse Hall3fbc8562015-11-29 22:10:52 -08003108 VK_PRESENT_MODE_RANGE_SIZE = (VK_PRESENT_MODE_FIFO_RELAXED_KHR - VK_PRESENT_MODE_IMMEDIATE_KHR + 1),
Jesse Hall1356b0d2015-11-23 17:24:58 -08003109 VK_PRESENT_MODE_MAX_ENUM = 0x7FFFFFFF
3110} VkPresentModeKHR;
3111
3112
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003113typedef enum VkSurfaceTransformFlagBitsKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003114 VK_SURFACE_TRANSFORM_NONE_BIT_KHR = 0x00000001,
3115 VK_SURFACE_TRANSFORM_ROT90_BIT_KHR = 0x00000002,
3116 VK_SURFACE_TRANSFORM_ROT180_BIT_KHR = 0x00000004,
3117 VK_SURFACE_TRANSFORM_ROT270_BIT_KHR = 0x00000008,
3118 VK_SURFACE_TRANSFORM_HMIRROR_BIT_KHR = 0x00000010,
3119 VK_SURFACE_TRANSFORM_HMIRROR_ROT90_BIT_KHR = 0x00000020,
3120 VK_SURFACE_TRANSFORM_HMIRROR_ROT180_BIT_KHR = 0x00000040,
3121 VK_SURFACE_TRANSFORM_HMIRROR_ROT270_BIT_KHR = 0x00000080,
3122 VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
3123} VkSurfaceTransformFlagBitsKHR;
3124typedef VkFlags VkSurfaceTransformFlagsKHR;
3125
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003126typedef enum VkCompositeAlphaFlagBitsKHR {
Jesse Halla6429252015-11-29 18:59:42 -08003127 VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
3128 VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
3129 VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
3130 VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
3131} VkCompositeAlphaFlagBitsKHR;
3132typedef VkFlags VkCompositeAlphaFlagsKHR;
3133
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003134typedef struct VkSurfaceCapabilitiesKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003135 uint32_t minImageCount;
3136 uint32_t maxImageCount;
3137 VkExtent2D currentExtent;
3138 VkExtent2D minImageExtent;
3139 VkExtent2D maxImageExtent;
3140 VkSurfaceTransformFlagsKHR supportedTransforms;
3141 VkSurfaceTransformKHR currentTransform;
Jesse Halla6429252015-11-29 18:59:42 -08003142 VkCompositeAlphaFlagsKHR supportedCompositeAlpha;
Jesse Hall1356b0d2015-11-23 17:24:58 -08003143 uint32_t maxImageArraySize;
3144 VkImageUsageFlags supportedUsageFlags;
Jesse Hallb00daad2015-11-29 19:46:20 -08003145} VkSurfaceCapabilitiesKHR;
Jesse Hall1356b0d2015-11-23 17:24:58 -08003146
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003147typedef struct VkSurfaceFormatKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003148 VkFormat format;
3149 VkColorSpaceKHR colorSpace;
3150} VkSurfaceFormatKHR;
3151
Jesse Hallb00daad2015-11-29 19:46:20 -08003152
Jesse Halle1b12782015-11-30 11:27:32 -08003153typedef void (VKAPI_PTR *PFN_vkDestroySurfaceKHR)(VkInstance instance, VkSurfaceKHR surface);
3154typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported);
3155typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
3156typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfaceFormatsKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats);
3157typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceSurfacePresentModesKHR)(VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes);
Jesse Hallb00daad2015-11-29 19:46:20 -08003158
3159#ifdef VK_PROTOTYPES
Jesse Halle1b12782015-11-30 11:27:32 -08003160VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR(
Jesse Hallb00daad2015-11-29 19:46:20 -08003161 VkInstance instance,
3162 VkSurfaceKHR surface);
3163
Jesse Halle1b12782015-11-30 11:27:32 -08003164VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR(
Jesse Hallb00daad2015-11-29 19:46:20 -08003165 VkPhysicalDevice physicalDevice,
3166 uint32_t queueFamilyIndex,
3167 VkSurfaceKHR surface,
3168 VkBool32* pSupported);
3169
Jesse Halle1b12782015-11-30 11:27:32 -08003170VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
Jesse Hallb00daad2015-11-29 19:46:20 -08003171 VkPhysicalDevice physicalDevice,
3172 VkSurfaceKHR surface,
3173 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities);
3174
Jesse Halle1b12782015-11-30 11:27:32 -08003175VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR(
Jesse Hallb00daad2015-11-29 19:46:20 -08003176 VkPhysicalDevice physicalDevice,
3177 VkSurfaceKHR surface,
3178 uint32_t* pSurfaceFormatCount,
3179 VkSurfaceFormatKHR* pSurfaceFormats);
3180
Jesse Halle1b12782015-11-30 11:27:32 -08003181VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR(
Jesse Hallb00daad2015-11-29 19:46:20 -08003182 VkPhysicalDevice physicalDevice,
3183 VkSurfaceKHR surface,
3184 uint32_t* pPresentModeCount,
3185 VkPresentModeKHR* pPresentModes);
3186#endif
3187
Jesse Hall091ed9e2015-11-30 00:55:29 -08003188#define VK_KHR_swapchain 1
Jesse Hall3fbc8562015-11-29 22:10:52 -08003189VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSwapchainKHR)
Jesse Hallb00daad2015-11-29 19:46:20 -08003190
Jesse Halla9e57032015-11-30 01:03:10 -08003191#define VK_KHR_SWAPCHAIN_REVISION 65
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003192#define VK_KHR_SWAPCHAIN_EXTENSION_NUMBER 2
3193#define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain"
Jesse Hallb00daad2015-11-29 19:46:20 -08003194#define VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR ((VkStructureType)(int)0xc0000800)
3195#define VK_STRUCTURE_TYPE_PRESENT_INFO_KHR ((VkStructureType)(int)0xc0000801)
Jesse Hall3fbc8562015-11-29 22:10:52 -08003196#define VK_IMAGE_LAYOUT_PRESENT_SRC_KHR ((VkImageLayout)(int)0xc0000802)
Jesse Hallb00daad2015-11-29 19:46:20 -08003197#define VK_SUBOPTIMAL_KHR ((VkResult)(int)0x40000403)
3198#define VK_ERROR_OUT_OF_DATE_KHR ((VkResult)(int)0xc0000804)
3199
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003200typedef struct VkSwapchainCreateInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003201 VkStructureType sType;
Jesse Halla9e57032015-11-30 01:03:10 -08003202 const void* pNext;
Jesse Hall1356b0d2015-11-23 17:24:58 -08003203 VkSurfaceKHR surface;
3204 uint32_t minImageCount;
3205 VkFormat imageFormat;
3206 VkColorSpaceKHR imageColorSpace;
3207 VkExtent2D imageExtent;
3208 VkImageUsageFlags imageUsageFlags;
3209 VkSurfaceTransformKHR preTransform;
Jesse Halla6429252015-11-29 18:59:42 -08003210 VkCompositeAlphaFlagBitsKHR compositeAlpha;
Jesse Hall1356b0d2015-11-23 17:24:58 -08003211 uint32_t imageArraySize;
3212 VkSharingMode sharingMode;
Jesse Hall03b6fe12015-11-24 12:44:21 -08003213 uint32_t queueFamilyIndexCount;
Jesse Hall1356b0d2015-11-23 17:24:58 -08003214 const uint32_t* pQueueFamilyIndices;
3215 VkPresentModeKHR presentMode;
3216 VkSwapchainKHR oldSwapchain;
3217 VkBool32 clipped;
3218} VkSwapchainCreateInfoKHR;
3219
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003220typedef struct VkPresentInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003221 VkStructureType sType;
Jesse Halla9e57032015-11-30 01:03:10 -08003222 const void* pNext;
Jesse Hallb00daad2015-11-29 19:46:20 -08003223 uint32_t waitSemaphoreCount;
3224 const VkSemaphore* pWaitSemaphores;
Jesse Hall1356b0d2015-11-23 17:24:58 -08003225 uint32_t swapchainCount;
Jesse Hall03b6fe12015-11-24 12:44:21 -08003226 const VkSwapchainKHR* pSwapchains;
Jesse Hall1356b0d2015-11-23 17:24:58 -08003227 const uint32_t* imageIndices;
Jesse Halla9e57032015-11-30 01:03:10 -08003228 VkResult* pResults;
Jesse Hall1356b0d2015-11-23 17:24:58 -08003229} VkPresentInfoKHR;
3230
3231
Jesse Halle1b12782015-11-30 11:27:32 -08003232typedef VkResult (VKAPI_PTR *PFN_vkCreateSwapchainKHR)(VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, VkSwapchainKHR* pSwapchain);
3233typedef void (VKAPI_PTR *PFN_vkDestroySwapchainKHR)(VkDevice device, VkSwapchainKHR swapchain);
3234typedef VkResult (VKAPI_PTR *PFN_vkGetSwapchainImagesKHR)(VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages);
3235typedef VkResult (VKAPI_PTR *PFN_vkAcquireNextImageKHR)(VkDevice device, VkSwapchainKHR swapchain, uint64_t timeout, VkSemaphore semaphore, VkFence fence, uint32_t* pImageIndex);
3236typedef VkResult (VKAPI_PTR *PFN_vkQueuePresentKHR)(VkQueue queue, VkPresentInfoKHR* pPresentInfo);
Jesse Hall1356b0d2015-11-23 17:24:58 -08003237
3238#ifdef VK_PROTOTYPES
Jesse Halle1b12782015-11-30 11:27:32 -08003239VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08003240 VkDevice device,
3241 const VkSwapchainCreateInfoKHR* pCreateInfo,
3242 VkSwapchainKHR* pSwapchain);
3243
Jesse Halle1b12782015-11-30 11:27:32 -08003244VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08003245 VkDevice device,
3246 VkSwapchainKHR swapchain);
3247
Jesse Halle1b12782015-11-30 11:27:32 -08003248VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08003249 VkDevice device,
3250 VkSwapchainKHR swapchain,
Jesse Hall03b6fe12015-11-24 12:44:21 -08003251 uint32_t* pSwapchainImageCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08003252 VkImage* pSwapchainImages);
3253
Jesse Halle1b12782015-11-30 11:27:32 -08003254VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08003255 VkDevice device,
3256 VkSwapchainKHR swapchain,
3257 uint64_t timeout,
3258 VkSemaphore semaphore,
3259 VkFence fence,
3260 uint32_t* pImageIndex);
3261
Jesse Halle1b12782015-11-30 11:27:32 -08003262VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08003263 VkQueue queue,
3264 VkPresentInfoKHR* pPresentInfo);
3265#endif
3266
Jesse Hall091ed9e2015-11-30 00:55:29 -08003267#define VK_KHR_display 1
Jesse Hall3fbc8562015-11-29 22:10:52 -08003268VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayKHR)
3269VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDisplayModeKHR)
Jesse Hall1356b0d2015-11-23 17:24:58 -08003270
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003271#define VK_KHR_DISPLAY_REVISION 18
3272#define VK_KHR_DISPLAY_EXTENSION_NUMBER 3
3273#define VK_KHR_DISPLAY_EXTENSION_NAME "VK_KHR_display"
Jesse Hall1356b0d2015-11-23 17:24:58 -08003274#define VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR ((VkStructureType)(int)0xc0000c00)
Jesse Halla6429252015-11-29 18:59:42 -08003275#define VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR ((VkStructureType)(int)0xc0000c01)
Jesse Hall1356b0d2015-11-23 17:24:58 -08003276
3277
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003278typedef enum VkDisplayPlaneAlphaFlagBitsKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003279 VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000001,
3280 VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000002,
3281 VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000004,
3282} VkDisplayPlaneAlphaFlagBitsKHR;
3283typedef VkFlags VkDisplayPlaneAlphaFlagsKHR;
3284
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003285typedef struct VkDisplayPropertiesKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003286 VkDisplayKHR display;
Jesse Hall03b6fe12015-11-24 12:44:21 -08003287 const char* displayName;
Jesse Hall1356b0d2015-11-23 17:24:58 -08003288 VkExtent2D physicalDimensions;
3289 VkExtent2D physicalResolution;
3290 VkSurfaceTransformFlagsKHR supportedTransforms;
Jesse Hall1356b0d2015-11-23 17:24:58 -08003291 VkBool32 planeReorderPossible;
Jesse Halla6429252015-11-29 18:59:42 -08003292 VkBool32 persistentContent;
Jesse Hall1356b0d2015-11-23 17:24:58 -08003293} VkDisplayPropertiesKHR;
3294
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003295typedef struct VkDisplayModeParametersKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003296 VkExtent2D visibleRegion;
Jesse Halla6429252015-11-29 18:59:42 -08003297 uint32_t refreshRate;
3298} VkDisplayModeParametersKHR;
Jesse Hall1356b0d2015-11-23 17:24:58 -08003299
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003300typedef struct VkDisplayModePropertiesKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003301 VkDisplayModeKHR displayMode;
Jesse Halla6429252015-11-29 18:59:42 -08003302 VkDisplayModeParametersKHR parameters;
Jesse Hall1356b0d2015-11-23 17:24:58 -08003303} VkDisplayModePropertiesKHR;
3304
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003305typedef struct VkDisplayModeCreateInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003306 VkStructureType sType;
Jesse Halla9e57032015-11-30 01:03:10 -08003307 const void* pNext;
Jesse Halla6429252015-11-29 18:59:42 -08003308 VkDisplayModeParametersKHR parameters;
Jesse Hall1356b0d2015-11-23 17:24:58 -08003309} VkDisplayModeCreateInfoKHR;
3310
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003311typedef struct VkDisplayPlaneCapabilitiesKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003312 VkDisplayPlaneAlphaFlagsKHR supportedAlpha;
3313 VkOffset2D minSrcPosition;
3314 VkOffset2D maxSrcPosition;
3315 VkExtent2D minSrcExtent;
3316 VkExtent2D maxSrcExtent;
3317 VkOffset2D minDstPosition;
3318 VkOffset2D maxDstPosition;
3319 VkExtent2D minDstExtent;
3320 VkExtent2D maxDstExtent;
Jesse Halla6429252015-11-29 18:59:42 -08003321} VkDisplayPlaneCapabilitiesKHR;
Jesse Hall1356b0d2015-11-23 17:24:58 -08003322
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003323typedef struct VkDisplayPlanePropertiesKHR {
Jesse Hallb00daad2015-11-29 19:46:20 -08003324 VkDisplayKHR currentDisplay;
3325 uint32_t currentStackIndex;
3326} VkDisplayPlanePropertiesKHR;
3327
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003328typedef struct VkDisplaySurfaceCreateInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003329 VkStructureType sType;
Jesse Halla9e57032015-11-30 01:03:10 -08003330 const void* pNext;
Jesse Hall1356b0d2015-11-23 17:24:58 -08003331 VkDisplayModeKHR displayMode;
3332 uint32_t planeIndex;
3333 uint32_t planeStackIndex;
3334 VkSurfaceTransformKHR transform;
3335 float globalAlpha;
3336 VkDisplayPlaneAlphaFlagsKHR alphaMode;
3337 VkExtent2D imageSize;
Jesse Halla6429252015-11-29 18:59:42 -08003338} VkDisplaySurfaceCreateInfoKHR;
Jesse Hall1356b0d2015-11-23 17:24:58 -08003339
3340
Jesse Halle1b12782015-11-30 11:27:32 -08003341typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties);
3342typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties);
3343typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneSupportedDisplaysKHR)(VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayKHR* pProperties);
3344typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayModePropertiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties);
3345typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayModeKHR)(VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR*pCreateInfo, VkDisplayModeKHR* pMode);
3346typedef VkResult (VKAPI_PTR *PFN_vkGetDisplayPlaneCapabilitiesKHR)(VkPhysicalDevice physicalDevice, VkDisplayModeCreateInfoKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities);
3347typedef VkResult (VKAPI_PTR *PFN_vkCreateDisplayPlaneSurfaceKHR)(VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, VkSurfaceKHR* pSurface);
Jesse Hall1356b0d2015-11-23 17:24:58 -08003348
3349#ifdef VK_PROTOTYPES
Jesse Halle1b12782015-11-30 11:27:32 -08003350VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08003351 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08003352 uint32_t* pPropertyCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08003353 VkDisplayPropertiesKHR* pProperties);
3354
Jesse Halle1b12782015-11-30 11:27:32 -08003355VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
Jesse Halla6429252015-11-29 18:59:42 -08003356 VkPhysicalDevice physicalDevice,
3357 uint32_t* pPropertyCount,
3358 VkDisplayPlanePropertiesKHR* pProperties);
3359
Jesse Halle1b12782015-11-30 11:27:32 -08003360VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR(
Jesse Halla6429252015-11-29 18:59:42 -08003361 VkPhysicalDevice physicalDevice,
3362 uint32_t* pPropertyCount,
3363 VkDisplayKHR* pProperties);
3364
Jesse Halle1b12782015-11-30 11:27:32 -08003365VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08003366 VkPhysicalDevice physicalDevice,
3367 VkDisplayKHR display,
Jesse Hall03b6fe12015-11-24 12:44:21 -08003368 uint32_t* pPropertyCount,
3369 VkDisplayModePropertiesKHR* pProperties);
Jesse Hall1356b0d2015-11-23 17:24:58 -08003370
Jesse Halle1b12782015-11-30 11:27:32 -08003371VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08003372 VkPhysicalDevice physicalDevice,
3373 VkDisplayKHR display,
3374 const VkDisplayModeCreateInfoKHR* pCreateInfo,
3375 VkDisplayModeKHR* pMode);
3376
Jesse Halle1b12782015-11-30 11:27:32 -08003377VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08003378 VkPhysicalDevice physicalDevice,
Jesse Halla6429252015-11-29 18:59:42 -08003379 VkDisplayModeCreateInfoKHR mode,
Jesse Hall1356b0d2015-11-23 17:24:58 -08003380 uint32_t planeIndex,
Jesse Halla6429252015-11-29 18:59:42 -08003381 VkDisplayPlaneCapabilitiesKHR* pCapabilities);
3382
Jesse Halle1b12782015-11-30 11:27:32 -08003383VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR(
Jesse Halla6429252015-11-29 18:59:42 -08003384 VkInstance instance,
3385 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
3386 VkSurfaceKHR* pSurface);
Jesse Hall1356b0d2015-11-23 17:24:58 -08003387#endif
3388
Jesse Hall091ed9e2015-11-30 00:55:29 -08003389#define VK_KHR_display_swapchain 1
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003390#define VK_KHR_DISPLAY_SWAPCHAIN_REVISION 7
3391#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NUMBER 4
3392#define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
Jesse Hall1356b0d2015-11-23 17:24:58 -08003393#define VK_STRUCTURE_TYPE_DISPLAY_SWAPCHAIN_CREATE_INFO_KHR ((VkStructureType)(int)0xc0001000)
3394#define VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR ((VkStructureType)(int)0xc0001001)
3395#define VK_ERROR_INCOMPATIBLE_DISPLAY_KHR ((VkResult)(int)0xc0001002)
3396
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003397typedef struct VkDisplaySwapchainCreateInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003398 VkStructureType sType;
Jesse Halla9e57032015-11-30 01:03:10 -08003399 const void* pNext;
Jesse Hall1356b0d2015-11-23 17:24:58 -08003400 const VkSwapchainCreateInfoKHR* pNextSwapchainCreateInfo;
3401} VkDisplaySwapchainCreateInfoKHR;
3402
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003403typedef struct VkDisplayPresentInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003404 VkStructureType sType;
Jesse Halla9e57032015-11-30 01:03:10 -08003405 const void* pNext;
Jesse Hall1356b0d2015-11-23 17:24:58 -08003406 VkRect2D srcRect;
3407 VkRect2D dstRect;
Jesse Halla6429252015-11-29 18:59:42 -08003408 VkBool32 persistent;
Jesse Hall1356b0d2015-11-23 17:24:58 -08003409} VkDisplayPresentInfoKHR;
3410
3411
3412
Jesse Halla6429252015-11-29 18:59:42 -08003413#ifdef VK_USE_PLATFORM_XLIB_KHR
Jesse Hall091ed9e2015-11-30 00:55:29 -08003414#define VK_KHR_xlib_surface 1
Jesse Hall1356b0d2015-11-23 17:24:58 -08003415#include <X11/Xlib.h>
3416
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003417#define VK_KHR_XLIB_SURFACE_REVISION 4
3418#define VK_KHR_XLIB_SURFACE_EXTENSION_NUMBER 5
Jesse Hall091ed9e2015-11-30 00:55:29 -08003419#define VK_KHR_XLIB_SURFACE_EXTENSION_NAME "VK_KHR_xlib_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -08003420
Jesse Halle1b12782015-11-30 11:27:32 -08003421typedef VkResult (VKAPI_PTR *PFN_vkCreateXlibSurfaceKHR)(VkInstance instance, Display* dpy, Window window, VkSurfaceKHR* pSurface);
3422typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, Display* dpy, VisualID visualID);
Jesse Hall1356b0d2015-11-23 17:24:58 -08003423
3424#ifdef VK_PROTOTYPES
Jesse Halle1b12782015-11-30 11:27:32 -08003425VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08003426 VkInstance instance,
3427 Display* dpy,
Jesse Hall1356b0d2015-11-23 17:24:58 -08003428 Window window,
3429 VkSurfaceKHR* pSurface);
Jesse Halla6429252015-11-29 18:59:42 -08003430
Jesse Halle1b12782015-11-30 11:27:32 -08003431VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXlibPresentationSupportKHR(
Jesse Halla6429252015-11-29 18:59:42 -08003432 VkPhysicalDevice physicalDevice,
3433 uint32_t queueFamilyIndex,
3434 Display* dpy,
Jesse Hall65ab5522015-11-30 00:07:16 -08003435 VisualID visualID);
Jesse Hall1356b0d2015-11-23 17:24:58 -08003436#endif
Jesse Halla6429252015-11-29 18:59:42 -08003437#endif /* VK_USE_PLATFORM_XLIB_KHR */
Jesse Hall1356b0d2015-11-23 17:24:58 -08003438
Jesse Hall1356b0d2015-11-23 17:24:58 -08003439#ifdef VK_USE_PLATFORM_XCB_KHR
Jesse Hall091ed9e2015-11-30 00:55:29 -08003440#define VK_KHR_xcb_surface 1
Jesse Hall1356b0d2015-11-23 17:24:58 -08003441#include <xcb/xcb.h>
3442
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003443#define VK_KHR_XCB_SURFACE_REVISION 4
3444#define VK_KHR_XCB_SURFACE_EXTENSION_NUMBER 6
3445#define VK_KHR_XCB_SURFACE_EXTENSION_NAME "VK_KHR_xcb_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -08003446
Jesse Halle1b12782015-11-30 11:27:32 -08003447typedef VkResult (VKAPI_PTR *PFN_vkCreateXcbSurfaceKHR)(VkInstance instance, xcb_connection_t* connection, xcb_window_t window, VkSurfaceKHR* pSurface);
3448typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, xcb_connection_t* connection, xcb_visualid_t visual_id);
Jesse Hall1356b0d2015-11-23 17:24:58 -08003449
3450#ifdef VK_PROTOTYPES
Jesse Halle1b12782015-11-30 11:27:32 -08003451VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08003452 VkInstance instance,
3453 xcb_connection_t* connection,
Jesse Hall1356b0d2015-11-23 17:24:58 -08003454 xcb_window_t window,
3455 VkSurfaceKHR* pSurface);
Jesse Halla6429252015-11-29 18:59:42 -08003456
Jesse Halle1b12782015-11-30 11:27:32 -08003457VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXcbPresentationSupportKHR(
Jesse Halla6429252015-11-29 18:59:42 -08003458 VkPhysicalDevice physicalDevice,
3459 uint32_t queueFamilyIndex,
3460 xcb_connection_t* connection,
3461 xcb_visualid_t visual_id);
Jesse Hall1356b0d2015-11-23 17:24:58 -08003462#endif
3463#endif /* VK_USE_PLATFORM_XCB_KHR */
3464
Jesse Hall1356b0d2015-11-23 17:24:58 -08003465#ifdef VK_USE_PLATFORM_WAYLAND_KHR
Jesse Hall091ed9e2015-11-30 00:55:29 -08003466#define VK_KHR_wayland_surface 1
Jesse Hall1356b0d2015-11-23 17:24:58 -08003467#include <wayland-client.h>
3468
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003469#define VK_KHR_WAYLAND_SURFACE_REVISION 3
3470#define VK_KHR_WAYLAND_SURFACE_EXTENSION_NUMBER 7
3471#define VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME "VK_KHR_wayland_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -08003472
Jesse Halle1b12782015-11-30 11:27:32 -08003473typedef VkResult (VKAPI_PTR *PFN_vkCreateWaylandSurfaceKHR)(VkInstance instance, struct wl_display* display, struct wl_surface* surface, VkSurfaceKHR* pSurface);
3474typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, struct wl_display* display);
Jesse Hall1356b0d2015-11-23 17:24:58 -08003475
3476#ifdef VK_PROTOTYPES
Jesse Halle1b12782015-11-30 11:27:32 -08003477VKAPI_ATTR VkResult VKAPI_CALL vkCreateWaylandSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08003478 VkInstance instance,
3479 struct wl_display* display,
3480 struct wl_surface* surface,
3481 VkSurfaceKHR* pSurface);
Jesse Halla6429252015-11-29 18:59:42 -08003482
Jesse Halle1b12782015-11-30 11:27:32 -08003483VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWaylandPresentationSupportKHR(
Jesse Halla6429252015-11-29 18:59:42 -08003484 VkPhysicalDevice physicalDevice,
3485 uint32_t queueFamilyIndex,
3486 struct wl_display* display);
Jesse Hall1356b0d2015-11-23 17:24:58 -08003487#endif
3488#endif /* VK_USE_PLATFORM_WAYLAND_KHR */
3489
Jesse Hall1356b0d2015-11-23 17:24:58 -08003490#ifdef VK_USE_PLATFORM_MIR_KHR
Jesse Hall091ed9e2015-11-30 00:55:29 -08003491#define VK_KHR_mir_surface 1
Jesse Hall1356b0d2015-11-23 17:24:58 -08003492#include <mir_toolkit/client_types.h>
3493
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003494#define VK_KHR_MIR_SURFACE_REVISION 3
3495#define VK_KHR_MIR_SURFACE_EXTENSION_NUMBER 8
3496#define VK_KHR_MIR_SURFACE_EXTENSION_NAME "VK_KHR_mir_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -08003497
Jesse Halle1b12782015-11-30 11:27:32 -08003498typedef VkResult (VKAPI_PTR *PFN_vkCreateMirSurfaceKHR)(VkInstance instance, MirConnection* connection, MirSurface* mirSurface, VkSurfaceKHR* pSurface);
3499typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceMirPresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, MirConnection* connection);
Jesse Hall1356b0d2015-11-23 17:24:58 -08003500
3501#ifdef VK_PROTOTYPES
Jesse Halle1b12782015-11-30 11:27:32 -08003502VKAPI_ATTR VkResult VKAPI_CALL vkCreateMirSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08003503 VkInstance instance,
3504 MirConnection* connection,
3505 MirSurface* mirSurface,
3506 VkSurfaceKHR* pSurface);
Jesse Halla6429252015-11-29 18:59:42 -08003507
Jesse Halle1b12782015-11-30 11:27:32 -08003508VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceMirPresentationSupportKHR(
Jesse Halla6429252015-11-29 18:59:42 -08003509 VkPhysicalDevice physicalDevice,
3510 uint32_t queueFamilyIndex,
3511 MirConnection* connection);
Jesse Hall1356b0d2015-11-23 17:24:58 -08003512#endif
3513#endif /* VK_USE_PLATFORM_MIR_KHR */
3514
Jesse Hall1356b0d2015-11-23 17:24:58 -08003515#ifdef VK_USE_PLATFORM_ANDROID_KHR
Jesse Hall091ed9e2015-11-30 00:55:29 -08003516#define VK_KHR_android_surface 1
Jesse Hall1356b0d2015-11-23 17:24:58 -08003517#include <android/native_window.h>
3518
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003519#define VK_KHR_ANDROID_SURFACE_REVISION 2
3520#define VK_KHR_ANDROID_SURFACE_EXTENSION_NUMBER 9
3521#define VK_KHR_ANDROID_SURFACE_EXTENSION_NAME "VK_KHR_android_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -08003522#define VK_ERROR_INVALID_ANDROID_WINDOW_KHR ((VkResult)(int)0xc0002400)
3523#define VK_ERROR_ANDROID_WINDOW_IN_USE_KHR ((VkResult)(int)0xc0002401)
3524
Jesse Halle1b12782015-11-30 11:27:32 -08003525typedef VkResult (VKAPI_PTR *PFN_vkCreateAndroidSurfaceKHR)(VkInstance instance, ANativeWindow* window, VkSurfaceKHR* pSurface);
Jesse Hall1356b0d2015-11-23 17:24:58 -08003526
3527#ifdef VK_PROTOTYPES
Jesse Halle1b12782015-11-30 11:27:32 -08003528VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08003529 VkInstance instance,
3530 ANativeWindow* window,
3531 VkSurfaceKHR* pSurface);
3532#endif
3533#endif /* VK_USE_PLATFORM_ANDROID_KHR */
3534
Jesse Hall1356b0d2015-11-23 17:24:58 -08003535#ifdef VK_USE_PLATFORM_WIN32_KHR
Jesse Hall091ed9e2015-11-30 00:55:29 -08003536#define VK_KHR_win32_surface 1
Jesse Hall1356b0d2015-11-23 17:24:58 -08003537#include <windows.h>
3538
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003539#define VK_KHR_WIN32_SURFACE_REVISION 3
3540#define VK_KHR_WIN32_SURFACE_EXTENSION_NUMBER 10
3541#define VK_KHR_WIN32_SURFACE_EXTENSION_NAME "VK_KHR_win32_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -08003542
Jesse Halle1b12782015-11-30 11:27:32 -08003543typedef VkResult (VKAPI_PTR *PFN_vkCreateWin32SurfaceKHR)(VkInstance instance, HINSTANCE hinstance, HWND hwnd, VkSurfaceKHR* pSurface);
3544typedef VkBool32 (VKAPI_PTR *PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR)(VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex);
Jesse Hall1356b0d2015-11-23 17:24:58 -08003545
3546#ifdef VK_PROTOTYPES
Jesse Halle1b12782015-11-30 11:27:32 -08003547VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08003548 VkInstance instance,
3549 HINSTANCE hinstance,
3550 HWND hwnd,
3551 VkSurfaceKHR* pSurface);
Jesse Halla6429252015-11-29 18:59:42 -08003552
Jesse Halle1b12782015-11-30 11:27:32 -08003553VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR(
Jesse Halla6429252015-11-29 18:59:42 -08003554 VkPhysicalDevice physicalDevice,
3555 uint32_t queueFamilyIndex);
Jesse Hall1356b0d2015-11-23 17:24:58 -08003556#endif
3557#endif /* VK_USE_PLATFORM_WIN32_KHR */
3558
Jesse Hall04f4f472015-08-16 19:51:04 -07003559#ifdef __cplusplus
3560}
3561#endif
3562
3563#endif