blob: 613952f51ffa3ac53dadc8d762008c2fd8ec4346 [file] [log] [blame]
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001//
2// File: vulkan.h
3//
4/*
5** Copyright (c) 2014 The Khronos Group Inc.
6**
7** Permission is hereby granted, free of charge, to any person obtaining a
8** copy of this software and/or associated documentation files (the
9** "Materials"), to deal in the Materials without restriction, including
10** without limitation the rights to use, copy, modify, merge, publish,
11** distribute, sublicense, and/or sell copies of the Materials, and to
12** permit persons to whom the Materials are furnished to do so, subject to
13** the following conditions:
14**
15** The above copyright notice and this permission notice shall be included
16** in all copies or substantial portions of the Materials.
17**
18** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
21** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
22** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
23** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
24** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
25*/
26
27#ifndef __VULKAN_H__
28#define __VULKAN_H__
29
30#define VK_MAKE_VERSION(major, minor, patch) \
31 ((major << 22) | (minor << 12) | patch)
32
Courtney Goeltzenleuchter2040b432015-04-09 11:52:55 -060033#include "vk_platform.h"
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -060034
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -060035// Vulkan API version supported by this file
Courtney Goeltzenleuchter2040b432015-04-09 11:52:55 -060036#define VK_API_VERSION VK_MAKE_VERSION(0, 71, 0)
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -060037
38#ifdef __cplusplus
39extern "C"
40{
41#endif // __cplusplus
42
43/*
44***************************************************************************************************
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -060045* Core Vulkan API
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -060046***************************************************************************************************
47*/
48
49#ifdef __cplusplus
50 #define VK_DEFINE_HANDLE(_obj) struct _obj##_T {char _dummy;}; typedef _obj##_T* _obj;
51 #define VK_DEFINE_SUBCLASS_HANDLE(_obj, _base) struct _obj##_T : public _base##_T {}; typedef _obj##_T* _obj;
52#else // __cplusplus
53 #define VK_DEFINE_HANDLE(_obj) typedef void* _obj;
54 #define VK_DEFINE_SUBCLASS_HANDLE(_obj, _base) typedef void* _obj;
55#endif // __cplusplus
56
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -060057VK_DEFINE_HANDLE(VkInstance)
58VK_DEFINE_HANDLE(VkPhysicalGpu)
59VK_DEFINE_HANDLE(VkBaseObject)
60VK_DEFINE_SUBCLASS_HANDLE(VkDevice, VkBaseObject)
61VK_DEFINE_SUBCLASS_HANDLE(VkQueue, VkBaseObject)
62VK_DEFINE_SUBCLASS_HANDLE(VkGpuMemory, VkBaseObject)
63VK_DEFINE_SUBCLASS_HANDLE(VkObject, VkBaseObject)
64VK_DEFINE_SUBCLASS_HANDLE(VkBuffer, VkObject)
65VK_DEFINE_SUBCLASS_HANDLE(VkBufferView, VkObject)
66VK_DEFINE_SUBCLASS_HANDLE(VkImage, VkObject)
67VK_DEFINE_SUBCLASS_HANDLE(VkImageView, VkObject)
68VK_DEFINE_SUBCLASS_HANDLE(VkColorAttachmentView, VkObject)
69VK_DEFINE_SUBCLASS_HANDLE(VkDepthStencilView, VkObject)
70VK_DEFINE_SUBCLASS_HANDLE(VkShader, VkObject)
71VK_DEFINE_SUBCLASS_HANDLE(VkPipeline, VkObject)
72VK_DEFINE_SUBCLASS_HANDLE(VkSampler, VkObject)
73VK_DEFINE_SUBCLASS_HANDLE(VkDescriptorSet, VkObject)
74VK_DEFINE_SUBCLASS_HANDLE(VkDescriptorSetLayout, VkObject)
75VK_DEFINE_SUBCLASS_HANDLE(VkDescriptorSetLayoutChain, VkObject)
76VK_DEFINE_SUBCLASS_HANDLE(VkDescriptorPool, VkObject)
77VK_DEFINE_SUBCLASS_HANDLE(VkDynamicStateObject, VkObject)
78VK_DEFINE_SUBCLASS_HANDLE(VkDynamicVpStateObject, VkDynamicStateObject)
79VK_DEFINE_SUBCLASS_HANDLE(VkDynamicRsStateObject, VkDynamicStateObject)
80VK_DEFINE_SUBCLASS_HANDLE(VkDynamicCbStateObject, VkDynamicStateObject)
81VK_DEFINE_SUBCLASS_HANDLE(VkDynamicDsStateObject, VkDynamicStateObject)
82VK_DEFINE_SUBCLASS_HANDLE(VkCmdBuffer, VkObject)
83VK_DEFINE_SUBCLASS_HANDLE(VkFence, VkObject)
84VK_DEFINE_SUBCLASS_HANDLE(VkSemaphore, VkObject)
85VK_DEFINE_SUBCLASS_HANDLE(VkEvent, VkObject)
86VK_DEFINE_SUBCLASS_HANDLE(VkQueryPool, VkObject)
87VK_DEFINE_SUBCLASS_HANDLE(VkFramebuffer, VkObject)
88VK_DEFINE_SUBCLASS_HANDLE(VkRenderPass, VkObject)
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -060089
90#define VK_MAX_PHYSICAL_GPUS 16
91#define VK_MAX_PHYSICAL_GPU_NAME 256
92
93#define VK_LOD_CLAMP_NONE MAX_FLOAT
94#define VK_LAST_MIP_OR_SLICE 0xffffffff
95
96#define VK_TRUE 1
97#define VK_FALSE 0
98
99#define VK_NULL_HANDLE 0
100
101// This macro defines INT_MAX in enumerations to force compilers to use 32 bits
102// to represent them. This may or may not be necessary on some compilers. The
103// option to compile it out may allow compilers that warn about missing enumerants
104// in switch statements to be silenced.
105#define VK_MAX_ENUM(T) T##_MAX_ENUM = 0x7FFFFFFF
106
107// ------------------------------------------------------------------------------------------------
108// Enumerations
109
110
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600111typedef enum VkMemoryPriority_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600112{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600113 VK_MEMORY_PRIORITY_UNUSED = 0x0,
114 VK_MEMORY_PRIORITY_VERY_LOW = 0x1,
115 VK_MEMORY_PRIORITY_LOW = 0x2,
116 VK_MEMORY_PRIORITY_NORMAL = 0x3,
117 VK_MEMORY_PRIORITY_HIGH = 0x4,
118 VK_MEMORY_PRIORITY_VERY_HIGH = 0x5,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600119
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600120 VK_MEMORY_PRIORITY_BEGIN_RANGE = VK_MEMORY_PRIORITY_UNUSED,
121 VK_MEMORY_PRIORITY_END_RANGE = VK_MEMORY_PRIORITY_VERY_HIGH,
122 VK_NUM_MEMORY_PRIORITY = (VK_MEMORY_PRIORITY_END_RANGE - VK_MEMORY_PRIORITY_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600123 VK_MAX_ENUM(VkMemoryPriority_)
124} VkMemoryPriority;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600125
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600126typedef enum VkImageLayout_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600127{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600128 VK_IMAGE_LAYOUT_UNDEFINED = 0x00000000, // Implicit layout an image is when its contents are undefined due to various reasons (e.g. right after creation)
129 VK_IMAGE_LAYOUT_GENERAL = 0x00000001, // General layout when image can be used for any kind of access
130 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 0x00000002, // Optimal layout when image is only used for color attachment read/write
131 VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 0x00000003, // Optimal layout when image is only used for depth/stencil attachment read/write
132 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 0x00000004, // Optimal layout when image is used for read only depth/stencil attachment and shader access
133 VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 0x00000005, // Optimal layout when image is used for read only shader access
134 VK_IMAGE_LAYOUT_CLEAR_OPTIMAL = 0x00000006, // Optimal layout when image is used only for clear operations
135 VK_IMAGE_LAYOUT_TRANSFER_SOURCE_OPTIMAL = 0x00000007, // Optimal layout when image is used only as source of transfer operations
136 VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL = 0x00000008, // Optimal layout when image is used only as destination of transfer operations
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600137
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600138 VK_IMAGE_LAYOUT_BEGIN_RANGE = VK_IMAGE_LAYOUT_UNDEFINED,
139 VK_IMAGE_LAYOUT_END_RANGE = VK_IMAGE_LAYOUT_TRANSFER_DESTINATION_OPTIMAL,
140 VK_NUM_IMAGE_LAYOUT = (VK_IMAGE_LAYOUT_END_RANGE - VK_IMAGE_LAYOUT_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600141 VK_MAX_ENUM(VkImageLayout_)
142} VkImageLayout;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600143
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600144typedef enum VkPipeEvent_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600145{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600146 VK_PIPE_EVENT_TOP_OF_PIPE = 0x00000001, // Set event before the GPU starts processing subsequent command
147 VK_PIPE_EVENT_VERTEX_PROCESSING_COMPLETE = 0x00000002, // Set event when all pending vertex processing is complete
148 VK_PIPE_EVENT_LOCAL_FRAGMENT_PROCESSING_COMPLETE = 0x00000003, // Set event when all pending fragment shader executions are complete, within each fragment location
149 VK_PIPE_EVENT_FRAGMENT_PROCESSING_COMPLETE = 0x00000004, // Set event when all pending fragment shader executions are complete
150 VK_PIPE_EVENT_GRAPHICS_PIPELINE_COMPLETE = 0x00000005, // Set event when all pending graphics operations are complete
151 VK_PIPE_EVENT_COMPUTE_PIPELINE_COMPLETE = 0x00000006, // Set event when all pending compute operations are complete
152 VK_PIPE_EVENT_TRANSFER_COMPLETE = 0x00000007, // Set event when all pending transfer operations are complete
153 VK_PIPE_EVENT_GPU_COMMANDS_COMPLETE = 0x00000008, // Set event when all pending GPU work is complete
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600154
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600155 VK_PIPE_EVENT_BEGIN_RANGE = VK_PIPE_EVENT_TOP_OF_PIPE,
156 VK_PIPE_EVENT_END_RANGE = VK_PIPE_EVENT_GPU_COMMANDS_COMPLETE,
157 VK_NUM_PIPE_EVENT = (VK_PIPE_EVENT_END_RANGE - VK_PIPE_EVENT_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600158 VK_MAX_ENUM(VkPipeEvent_)
159} VkPipeEvent;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600160
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600161typedef enum VkWaitEvent_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600162{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600163 VK_WAIT_EVENT_TOP_OF_PIPE = 0x00000001, // Wait event before the GPU starts processing subsequent commands
164 VK_WAIT_EVENT_BEFORE_RASTERIZATION = 0x00000002, // Wait event before rasterizing subsequent primitives
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600165
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600166 VK_WAIT_EVENT_BEGIN_RANGE = VK_WAIT_EVENT_TOP_OF_PIPE,
167 VK_WAIT_EVENT_END_RANGE = VK_WAIT_EVENT_BEFORE_RASTERIZATION,
168 VK_NUM_WAIT_EVENT = (VK_WAIT_EVENT_END_RANGE - VK_WAIT_EVENT_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600169 VK_MAX_ENUM(VkWaitEvent_)
170} VkWaitEvent;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600171
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600172typedef enum VkMemoryOutputFlags_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600173{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600174 VK_MEMORY_OUTPUT_CPU_WRITE_BIT = 0x00000001, // Controls output coherency of CPU writes
175 VK_MEMORY_OUTPUT_SHADER_WRITE_BIT = 0x00000002, // Controls output coherency of generic shader writes
176 VK_MEMORY_OUTPUT_COLOR_ATTACHMENT_BIT = 0x00000004, // Controls output coherency of color attachment writes
177 VK_MEMORY_OUTPUT_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000008, // Controls output coherency of depth/stencil attachment writes
178 VK_MEMORY_OUTPUT_COPY_BIT = 0x00000010, // Controls output coherency of copy operations
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600179 VK_MAX_ENUM(VkMemoryOutputFlags_)
180} VkMemoryOutputFlags;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600181
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600182typedef enum VkMemoryInputFlags_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600183{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600184 VK_MEMORY_INPUT_CPU_READ_BIT = 0x00000001, // Controls input coherency of CPU reads
185 VK_MEMORY_INPUT_INDIRECT_COMMAND_BIT = 0x00000002, // Controls input coherency of indirect command reads
186 VK_MEMORY_INPUT_INDEX_FETCH_BIT = 0x00000004, // Controls input coherency of index fetches
187 VK_MEMORY_INPUT_VERTEX_ATTRIBUTE_FETCH_BIT = 0x00000008, // Controls input coherency of vertex attribute fetches
188 VK_MEMORY_INPUT_UNIFORM_READ_BIT = 0x00000010, // Controls input coherency of uniform buffer reads
189 VK_MEMORY_INPUT_SHADER_READ_BIT = 0x00000020, // Controls input coherency of generic shader reads
190 VK_MEMORY_INPUT_COLOR_ATTACHMENT_BIT = 0x00000040, // Controls input coherency of color attachment reads
191 VK_MEMORY_INPUT_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000080, // Controls input coherency of depth/stencil attachment reads
192 VK_MEMORY_INPUT_COPY_BIT = 0x00000100, // Controls input coherency of copy operations
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600193 VK_MAX_ENUM(VkMemoryInputFlags_)
194} VkMemoryInputFlags;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600195
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600196typedef enum VkAttachmentLoadOp_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600197{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600198 VK_ATTACHMENT_LOAD_OP_LOAD = 0x00000000,
199 VK_ATTACHMENT_LOAD_OP_CLEAR = 0x00000001,
200 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 0x00000002,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600201
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600202 VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE = VK_ATTACHMENT_LOAD_OP_LOAD,
203 VK_ATTACHMENT_LOAD_OP_END_RANGE = VK_ATTACHMENT_LOAD_OP_DONT_CARE,
204 VK_NUM_ATTACHMENT_LOAD_OP = (VK_ATTACHMENT_LOAD_OP_END_RANGE - VK_ATTACHMENT_LOAD_OP_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600205 VK_MAX_ENUM(VkAttachmentLoadOp_)
206} VkAttachmentLoadOp;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600207
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600208typedef enum VkAttachmentStoreOp_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600209{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600210 VK_ATTACHMENT_STORE_OP_STORE = 0x00000000,
211 VK_ATTACHMENT_STORE_OP_RESOLVE_MSAA = 0x00000001,
212 VK_ATTACHMENT_STORE_OP_DONT_CARE = 0x00000002,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600213
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600214 VK_ATTACHMENT_STORE_OP_BEGIN_RANGE = VK_ATTACHMENT_STORE_OP_STORE,
215 VK_ATTACHMENT_STORE_OP_END_RANGE = VK_ATTACHMENT_STORE_OP_DONT_CARE,
216 VK_NUM_ATTACHMENT_STORE_OP = (VK_ATTACHMENT_STORE_OP_END_RANGE - VK_ATTACHMENT_STORE_OP_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600217 VK_MAX_ENUM(VkAttachmentStoreOp_)
218} VkAttachmentStoreOp;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600219
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600220typedef enum VkImageType_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600221{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600222 VK_IMAGE_1D = 0x00000000,
223 VK_IMAGE_2D = 0x00000001,
224 VK_IMAGE_3D = 0x00000002,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600225
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600226 VK_IMAGE_TYPE_BEGIN_RANGE = VK_IMAGE_1D,
227 VK_IMAGE_TYPE_END_RANGE = VK_IMAGE_3D,
228 VK_NUM_IMAGE_TYPE = (VK_IMAGE_TYPE_END_RANGE - VK_IMAGE_TYPE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600229 VK_MAX_ENUM(VkImageType_)
230} VkImageType;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600231
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600232typedef enum VkImageTiling_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600233{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600234 VK_LINEAR_TILING = 0x00000000,
235 VK_OPTIMAL_TILING = 0x00000001,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600236
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600237 VK_IMAGE_TILING_BEGIN_RANGE = VK_LINEAR_TILING,
238 VK_IMAGE_TILING_END_RANGE = VK_OPTIMAL_TILING,
239 VK_NUM_IMAGE_TILING = (VK_IMAGE_TILING_END_RANGE - VK_IMAGE_TILING_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600240 VK_MAX_ENUM(VkImageTiling_)
241} VkImageTiling;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600242
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600243typedef enum VkImageViewType_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600244{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600245 VK_IMAGE_VIEW_1D = 0x00000000,
246 VK_IMAGE_VIEW_2D = 0x00000001,
247 VK_IMAGE_VIEW_3D = 0x00000002,
248 VK_IMAGE_VIEW_CUBE = 0x00000003,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600249
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600250 VK_IMAGE_VIEW_TYPE_BEGIN_RANGE = VK_IMAGE_VIEW_1D,
251 VK_IMAGE_VIEW_TYPE_END_RANGE = VK_IMAGE_VIEW_CUBE,
252 VK_NUM_IMAGE_VIEW_TYPE = (VK_IMAGE_VIEW_TYPE_END_RANGE - VK_IMAGE_VIEW_TYPE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600253 VK_MAX_ENUM(VkImageViewType_)
254} VkImageViewType;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600255
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600256typedef enum VkImageAspect_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600257{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600258 VK_IMAGE_ASPECT_COLOR = 0x00000000,
259 VK_IMAGE_ASPECT_DEPTH = 0x00000001,
260 VK_IMAGE_ASPECT_STENCIL = 0x00000002,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600261
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600262 VK_IMAGE_ASPECT_BEGIN_RANGE = VK_IMAGE_ASPECT_COLOR,
263 VK_IMAGE_ASPECT_END_RANGE = VK_IMAGE_ASPECT_STENCIL,
264 VK_NUM_IMAGE_ASPECT = (VK_IMAGE_ASPECT_END_RANGE - VK_IMAGE_ASPECT_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600265 VK_MAX_ENUM(VkImageAspect_)
266} VkImageAspect;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600267
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600268typedef enum VkChannelSwizzle_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600269{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600270 VK_CHANNEL_SWIZZLE_ZERO = 0x00000000,
271 VK_CHANNEL_SWIZZLE_ONE = 0x00000001,
272 VK_CHANNEL_SWIZZLE_R = 0x00000002,
273 VK_CHANNEL_SWIZZLE_G = 0x00000003,
274 VK_CHANNEL_SWIZZLE_B = 0x00000004,
275 VK_CHANNEL_SWIZZLE_A = 0x00000005,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600276
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600277 VK_CHANNEL_SWIZZLE_BEGIN_RANGE = VK_CHANNEL_SWIZZLE_ZERO,
278 VK_CHANNEL_SWIZZLE_END_RANGE = VK_CHANNEL_SWIZZLE_A,
279 VK_NUM_CHANNEL_SWIZZLE = (VK_CHANNEL_SWIZZLE_END_RANGE - VK_CHANNEL_SWIZZLE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600280 VK_MAX_ENUM(VkChannelSwizzle_)
281} VkChannelSwizzle;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600282
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600283typedef enum VkDescriptorType_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600284{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600285 VK_DESCRIPTOR_TYPE_SAMPLER = 0x00000000,
286 VK_DESCRIPTOR_TYPE_SAMPLER_TEXTURE = 0x00000001,
287 VK_DESCRIPTOR_TYPE_TEXTURE = 0x00000002,
288 VK_DESCRIPTOR_TYPE_TEXTURE_BUFFER = 0x00000003,
289 VK_DESCRIPTOR_TYPE_IMAGE = 0x00000004,
290 VK_DESCRIPTOR_TYPE_IMAGE_BUFFER = 0x00000005,
291 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 0x00000006,
292 VK_DESCRIPTOR_TYPE_SHADER_STORAGE_BUFFER = 0x00000007,
293 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 0x00000008,
294 VK_DESCRIPTOR_TYPE_SHADER_STORAGE_BUFFER_DYNAMIC = 0x00000009,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600295
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600296 VK_DESCRIPTOR_TYPE_BEGIN_RANGE = VK_DESCRIPTOR_TYPE_SAMPLER,
297 VK_DESCRIPTOR_TYPE_END_RANGE = VK_DESCRIPTOR_TYPE_SHADER_STORAGE_BUFFER_DYNAMIC,
298 VK_NUM_DESCRIPTOR_TYPE = (VK_DESCRIPTOR_TYPE_END_RANGE - VK_DESCRIPTOR_TYPE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600299 VK_MAX_ENUM(VkDescriptorType_)
300} VkDescriptorType;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600301
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600302typedef enum VkDescriptorPoolUsage_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600303{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600304 VK_DESCRIPTOR_POOL_USAGE_ONE_SHOT = 0x00000000,
305 VK_DESCRIPTOR_POOL_USAGE_DYNAMIC = 0x00000001,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600306
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600307 VK_DESCRIPTOR_POOL_USAGE_BEGIN_RANGE = VK_DESCRIPTOR_POOL_USAGE_ONE_SHOT,
308 VK_DESCRIPTOR_POOL_USAGE_END_RANGE = VK_DESCRIPTOR_POOL_USAGE_DYNAMIC,
309 VK_NUM_DESCRIPTOR_POOL_USAGE = (VK_DESCRIPTOR_POOL_USAGE_END_RANGE - VK_DESCRIPTOR_POOL_USAGE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600310 VK_MAX_ENUM(VkDescriptorPoolUsage_)
311} VkDescriptorPoolUsage;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600312
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600313typedef enum VkDescriptorUpdateMode_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600314{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600315 VK_DESCRIPTOR_UDPATE_MODE_COPY = 0x00000000,
316 VK_DESCRIPTOR_UPDATE_MODE_FASTEST = 0x00000001,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600317
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600318 VK_DESCRIPTOR_UPDATE_MODE_BEGIN_RANGE = VK_DESCRIPTOR_UDPATE_MODE_COPY,
319 VK_DESCRIPTOR_UPDATE_MODE_END_RANGE = VK_DESCRIPTOR_UPDATE_MODE_FASTEST,
320 VK_NUM_DESCRIPTOR_UPDATE_MODE = (VK_DESCRIPTOR_UPDATE_MODE_END_RANGE - VK_DESCRIPTOR_UPDATE_MODE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600321 VK_MAX_ENUM(VkDescriptorUpdateMode_)
322} VkDescriptorUpdateMode;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600323
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600324typedef enum VkDescriptorSetUsage_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600325{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600326 VK_DESCRIPTOR_SET_USAGE_ONE_SHOT = 0x00000000,
327 VK_DESCRIPTOR_SET_USAGE_STATIC = 0x00000001,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600328
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600329 VK_DESCRIPTOR_SET_USAGE_BEGIN_RANGE = VK_DESCRIPTOR_SET_USAGE_ONE_SHOT,
330 VK_DESCRIPTOR_SET_USAGE_END_RANGE = VK_DESCRIPTOR_SET_USAGE_STATIC,
331 VK_NUM_DESCRIPTOR_SET_USAGE = (VK_DESCRIPTOR_SET_USAGE_END_RANGE - VK_DESCRIPTOR_SET_USAGE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600332 VK_MAX_ENUM(VkDescriptorSetUsage_)
333} VkDescriptorSetUsage;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600334
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600335typedef enum VkQueryType_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600336{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600337 VK_QUERY_OCCLUSION = 0x00000000,
338 VK_QUERY_PIPELINE_STATISTICS = 0x00000001,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600339
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600340 VK_QUERY_TYPE_BEGIN_RANGE = VK_QUERY_OCCLUSION,
341 VK_QUERY_TYPE_END_RANGE = VK_QUERY_PIPELINE_STATISTICS,
342 VK_NUM_QUERY_TYPE = (VK_QUERY_TYPE_END_RANGE - VK_QUERY_TYPE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600343 VK_MAX_ENUM(VkQueryType_)
344} VkQueryType;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600345
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600346typedef enum VkTimestampType_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600347{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600348 VK_TIMESTAMP_TOP = 0x00000000,
349 VK_TIMESTAMP_BOTTOM = 0x00000001,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600350
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600351 VK_TIMESTAMP_TYPE_BEGIN_RANGE = VK_TIMESTAMP_TOP,
352 VK_TIMESTAMP_TYPE_END_RANGE = VK_TIMESTAMP_BOTTOM,
353 VK_NUM_TIMESTAMP_TYPE = (VK_TIMESTAMP_TYPE_END_RANGE - VK_TIMESTAMP_TYPE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600354 VK_MAX_ENUM(_VK_TIMESTEAMP_TYPE)
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600355} VkTimestampType;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600356
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600357typedef enum VkBorderColorType_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600358{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600359 VK_BORDER_COLOR_OPAQUE_WHITE = 0x00000000,
360 VK_BORDER_COLOR_TRANSPARENT_BLACK = 0x00000001,
361 VK_BORDER_COLOR_OPAQUE_BLACK = 0x00000002,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600362
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600363 VK_BORDER_COLOR_TYPE_BEGIN_RANGE = VK_BORDER_COLOR_OPAQUE_WHITE,
364 VK_BORDER_COLOR_TYPE_END_RANGE = VK_BORDER_COLOR_OPAQUE_BLACK,
365 VK_NUM_BORDER_COLOR_TYPE = (VK_BORDER_COLOR_TYPE_END_RANGE - VK_BORDER_COLOR_TYPE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600366 VK_MAX_ENUM(VkBorderColorType_)
367} VkBorderColorType;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600368
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600369typedef enum VkPipelineBindPoint_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600370{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600371 VK_PIPELINE_BIND_POINT_COMPUTE = 0x00000000,
372 VK_PIPELINE_BIND_POINT_GRAPHICS = 0x00000001,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600373
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600374 VK_PIPELINE_BIND_POINT_BEGIN_RANGE = VK_PIPELINE_BIND_POINT_COMPUTE,
375 VK_PIPELINE_BIND_POINT_END_RANGE = VK_PIPELINE_BIND_POINT_GRAPHICS,
376 VK_NUM_PIPELINE_BIND_POINT = (VK_PIPELINE_BIND_POINT_END_RANGE - VK_PIPELINE_BIND_POINT_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600377 VK_MAX_ENUM(VkPipelineBindPoint_)
378} VkPipelineBindPoint;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600379
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600380typedef enum VkStateBindPoint_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600381{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600382 VK_STATE_BIND_VIEWPORT = 0x00000000,
383 VK_STATE_BIND_RASTER = 0x00000001,
384 VK_STATE_BIND_COLOR_BLEND = 0x00000002,
385 VK_STATE_BIND_DEPTH_STENCIL = 0x00000003,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600386
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600387 VK_STATE_BIND_POINT_BEGIN_RANGE = VK_STATE_BIND_VIEWPORT,
388 VK_STATE_BIND_POINT_END_RANGE = VK_STATE_BIND_DEPTH_STENCIL,
389 VK_NUM_STATE_BIND_POINT = (VK_STATE_BIND_POINT_END_RANGE - VK_STATE_BIND_POINT_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600390 VK_MAX_ENUM(VkStateBindPoint_)
391} VkStateBindPoint;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600392
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600393typedef enum VkPrimitiveTopology_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600394{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600395 VK_TOPOLOGY_POINT_LIST = 0x00000000,
396 VK_TOPOLOGY_LINE_LIST = 0x00000001,
397 VK_TOPOLOGY_LINE_STRIP = 0x00000002,
398 VK_TOPOLOGY_TRIANGLE_LIST = 0x00000003,
399 VK_TOPOLOGY_TRIANGLE_STRIP = 0x00000004,
400 VK_TOPOLOGY_TRIANGLE_FAN = 0x00000005,
401 VK_TOPOLOGY_LINE_LIST_ADJ = 0x00000006,
402 VK_TOPOLOGY_LINE_STRIP_ADJ = 0x00000007,
403 VK_TOPOLOGY_TRIANGLE_LIST_ADJ = 0x00000008,
404 VK_TOPOLOGY_TRIANGLE_STRIP_ADJ = 0x00000009,
405 VK_TOPOLOGY_PATCH = 0x0000000a,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600406
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600407 VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE = VK_TOPOLOGY_POINT_LIST,
408 VK_PRIMITIVE_TOPOLOGY_END_RANGE = VK_TOPOLOGY_PATCH,
409 VK_NUM_PRIMITIVE_TOPOLOGY = (VK_PRIMITIVE_TOPOLOGY_END_RANGE - VK_PRIMITIVE_TOPOLOGY_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600410 VK_MAX_ENUM(VkPrimitiveTopology_)
411} VkPrimitiveTopology;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600412
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600413typedef enum VkIndexType_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600414{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600415 VK_INDEX_8 = 0x00000000,
416 VK_INDEX_16 = 0x00000001,
417 VK_INDEX_32 = 0x00000002,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600418
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600419 VK_INDEX_TYPE_BEGIN_RANGE = VK_INDEX_8,
420 VK_INDEX_TYPE_END_RANGE = VK_INDEX_32,
421 VK_NUM_INDEX_TYPE = (VK_INDEX_TYPE_END_RANGE - VK_INDEX_TYPE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600422 VK_MAX_ENUM(VkIndexType_)
423} VkIndexType;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600424
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600425typedef enum VkTexFilter_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600426{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600427 VK_TEX_FILTER_NEAREST = 0,
428 VK_TEX_FILTER_LINEAR = 1,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600429
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600430 VK_TEX_FILTER_BEGIN_RANGE = VK_TEX_FILTER_NEAREST,
431 VK_TEX_FILTER_END_RANGE = VK_TEX_FILTER_LINEAR,
432 VK_NUM_TEX_FILTER = (VK_TEX_FILTER_END_RANGE - VK_TEX_FILTER_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600433 VK_MAX_ENUM(VkTexFilter_)
434} VkTexFilter;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600435
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600436typedef enum VkTexMipmapMode_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600437{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600438 VK_TEX_MIPMAP_BASE = 0, // Always choose base level
439 VK_TEX_MIPMAP_NEAREST = 1, // Choose nearest mip level
440 VK_TEX_MIPMAP_LINEAR = 2, // Linear filter between mip levels
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600441
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600442 VK_TEX_MIPMAP_BEGIN_RANGE = VK_TEX_MIPMAP_BASE,
443 VK_TEX_MIPMAP_END_RANGE = VK_TEX_MIPMAP_LINEAR,
444 VK_NUM_TEX_MIPMAP = (VK_TEX_MIPMAP_END_RANGE - VK_TEX_MIPMAP_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600445 VK_MAX_ENUM(VkTexMipmapMode_)
446} VkTexMipmapMode;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600447
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600448typedef enum VkTexAddress_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600449{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600450 VK_TEX_ADDRESS_WRAP = 0x00000000,
451 VK_TEX_ADDRESS_MIRROR = 0x00000001,
452 VK_TEX_ADDRESS_CLAMP = 0x00000002,
453 VK_TEX_ADDRESS_MIRROR_ONCE = 0x00000003,
454 VK_TEX_ADDRESS_CLAMP_BORDER = 0x00000004,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600455
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600456 VK_TEX_ADDRESS_BEGIN_RANGE = VK_TEX_ADDRESS_WRAP,
457 VK_TEX_ADDRESS_END_RANGE = VK_TEX_ADDRESS_CLAMP_BORDER,
458 VK_NUM_TEX_ADDRESS = (VK_TEX_ADDRESS_END_RANGE - VK_TEX_ADDRESS_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600459 VK_MAX_ENUM(VkTexAddress_)
460} VkTexAddress;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600461
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600462typedef enum VkCompareFunc_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600463{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600464 VK_COMPARE_NEVER = 0x00000000,
465 VK_COMPARE_LESS = 0x00000001,
466 VK_COMPARE_EQUAL = 0x00000002,
467 VK_COMPARE_LESS_EQUAL = 0x00000003,
468 VK_COMPARE_GREATER = 0x00000004,
469 VK_COMPARE_NOT_EQUAL = 0x00000005,
470 VK_COMPARE_GREATER_EQUAL = 0x00000006,
471 VK_COMPARE_ALWAYS = 0x00000007,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600472
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600473 VK_COMPARE_FUNC_BEGIN_RANGE = VK_COMPARE_NEVER,
474 VK_COMPARE_FUNC_END_RANGE = VK_COMPARE_ALWAYS,
475 VK_NUM_COMPARE_FUNC = (VK_COMPARE_FUNC_END_RANGE - VK_COMPARE_FUNC_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600476 VK_MAX_ENUM(VkCompareFunc_)
477} VkCompareFunc;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600478
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600479typedef enum VkFillMode_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600480{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600481 VK_FILL_POINTS = 0x00000000,
482 VK_FILL_WIREFRAME = 0x00000001,
483 VK_FILL_SOLID = 0x00000002,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600484
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600485 VK_FILL_MODE_BEGIN_RANGE = VK_FILL_POINTS,
486 VK_FILL_MODE_END_RANGE = VK_FILL_SOLID,
487 VK_NUM_FILL_MODE = (VK_FILL_MODE_END_RANGE - VK_FILL_MODE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600488 VK_MAX_ENUM(VkFillMode_)
489} VkFillMode;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600490
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600491typedef enum VkCullMode_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600492{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600493 VK_CULL_NONE = 0x00000000,
494 VK_CULL_FRONT = 0x00000001,
495 VK_CULL_BACK = 0x00000002,
496 VK_CULL_FRONT_AND_BACK = 0x00000003,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600497
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600498 VK_CULL_MODE_BEGIN_RANGE = VK_CULL_NONE,
499 VK_CULL_MODE_END_RANGE = VK_CULL_FRONT_AND_BACK,
500 VK_NUM_CULL_MODE = (VK_CULL_MODE_END_RANGE - VK_CULL_MODE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600501 VK_MAX_ENUM(VkCullMode_)
502} VkCullMode;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600503
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600504typedef enum VkFaceOrientation_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600505{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600506 VK_FRONT_FACE_CCW = 0x00000000,
507 VK_FRONT_FACE_CW = 0x00000001,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600508
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600509 VK_FACE_ORIENTATION_BEGIN_RANGE = VK_FRONT_FACE_CCW,
510 VK_FACE_ORIENTATION_END_RANGE = VK_FRONT_FACE_CW,
511 VK_NUM_FACE_ORIENTATION = (VK_FACE_ORIENTATION_END_RANGE - VK_FACE_ORIENTATION_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600512 VK_MAX_ENUM(VkFaceOrientation_)
513} VkFaceOrientation;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600514
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600515typedef enum VkProvokingVertexConvention_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600516{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600517 VK_PROVOKING_VERTEX_FIRST = 0x00000000,
518 VK_PROVOKING_VERTEX_LAST = 0x00000001,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600519
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600520 VK_PROVOKING_VERTEX_BEGIN_RANGE = VK_PROVOKING_VERTEX_FIRST,
521 VK_PROVOKING_VERTEX_END_RANGE = VK_PROVOKING_VERTEX_LAST,
522 VK_NUM_PROVOKING_VERTEX_CONVENTION = (VK_PROVOKING_VERTEX_END_RANGE - VK_PROVOKING_VERTEX_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600523 VK_MAX_ENUM(VkProvokingVertexConvention_)
524} VkProvokingVertexConvention;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600525
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600526typedef enum VkCoordinateOrigin_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600527{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600528 VK_COORDINATE_ORIGIN_UPPER_LEFT = 0x00000000,
529 VK_COORDINATE_ORIGIN_LOWER_LEFT = 0x00000001,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600530
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600531 VK_COORDINATE_ORIGIN_BEGIN_RANGE = VK_COORDINATE_ORIGIN_UPPER_LEFT,
532 VK_COORDINATE_ORIGIN_END_RANGE = VK_COORDINATE_ORIGIN_LOWER_LEFT,
533 VK_NUM_COORDINATE_ORIGIN = (VK_COORDINATE_ORIGIN_END_RANGE - VK_COORDINATE_ORIGIN_END_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600534 VK_MAX_ENUM(VkCoordinateOrigin_)
535} VkCoordinateOrigin;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600536
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600537typedef enum VkDepthMode_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600538{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600539 VK_DEPTH_MODE_ZERO_TO_ONE = 0x00000000,
540 VK_DEPTH_MODE_NEGATIVE_ONE_TO_ONE = 0x00000001,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600541
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600542 VK_DEPTH_MODE_BEGIN_RANGE = VK_DEPTH_MODE_ZERO_TO_ONE,
543 VK_DEPTH_MODE_END_RANGE = VK_DEPTH_MODE_NEGATIVE_ONE_TO_ONE,
544 VK_NUM_DEPTH_MODE = (VK_DEPTH_MODE_END_RANGE - VK_DEPTH_MODE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600545 VK_MAX_ENUM(VkDepthMode_)
546} VkDepthMode;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600547
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600548typedef enum VkBlend_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600549{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600550 VK_BLEND_ZERO = 0x00000000,
551 VK_BLEND_ONE = 0x00000001,
552 VK_BLEND_SRC_COLOR = 0x00000002,
553 VK_BLEND_ONE_MINUS_SRC_COLOR = 0x00000003,
554 VK_BLEND_DEST_COLOR = 0x00000004,
555 VK_BLEND_ONE_MINUS_DEST_COLOR = 0x00000005,
556 VK_BLEND_SRC_ALPHA = 0x00000006,
557 VK_BLEND_ONE_MINUS_SRC_ALPHA = 0x00000007,
558 VK_BLEND_DEST_ALPHA = 0x00000008,
559 VK_BLEND_ONE_MINUS_DEST_ALPHA = 0x00000009,
560 VK_BLEND_CONSTANT_COLOR = 0x0000000a,
561 VK_BLEND_ONE_MINUS_CONSTANT_COLOR = 0x0000000b,
562 VK_BLEND_CONSTANT_ALPHA = 0x0000000c,
563 VK_BLEND_ONE_MINUS_CONSTANT_ALPHA = 0x0000000d,
564 VK_BLEND_SRC_ALPHA_SATURATE = 0x0000000e,
565 VK_BLEND_SRC1_COLOR = 0x0000000f,
566 VK_BLEND_ONE_MINUS_SRC1_COLOR = 0x00000010,
567 VK_BLEND_SRC1_ALPHA = 0x00000011,
568 VK_BLEND_ONE_MINUS_SRC1_ALPHA = 0x00000012,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600569
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600570 VK_BLEND_BEGIN_RANGE = VK_BLEND_ZERO,
571 VK_BLEND_END_RANGE = VK_BLEND_ONE_MINUS_SRC1_ALPHA,
572 VK_NUM_BLEND = (VK_BLEND_END_RANGE - VK_BLEND_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600573 VK_MAX_ENUM(VkBlend_)
574} VkBlend;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600575
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600576typedef enum VkBlendFunc_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600577{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600578 VK_BLEND_FUNC_ADD = 0x00000000,
579 VK_BLEND_FUNC_SUBTRACT = 0x00000001,
580 VK_BLEND_FUNC_REVERSE_SUBTRACT = 0x00000002,
581 VK_BLEND_FUNC_MIN = 0x00000003,
582 VK_BLEND_FUNC_MAX = 0x00000004,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600583
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600584 VK_BLEND_FUNC_BEGIN_RANGE = VK_BLEND_FUNC_ADD,
585 VK_BLEND_FUNC_END_RANGE = VK_BLEND_FUNC_MAX,
586 VK_NUM_BLEND_FUNC = (VK_BLEND_FUNC_END_RANGE - VK_BLEND_FUNC_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600587 VK_MAX_ENUM(VkBlendFunc_)
588} VkBlendFunc;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600589
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600590typedef enum VkStencilOp_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600591{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600592 VK_STENCIL_OP_KEEP = 0x00000000,
593 VK_STENCIL_OP_ZERO = 0x00000001,
594 VK_STENCIL_OP_REPLACE = 0x00000002,
595 VK_STENCIL_OP_INC_CLAMP = 0x00000003,
596 VK_STENCIL_OP_DEC_CLAMP = 0x00000004,
597 VK_STENCIL_OP_INVERT = 0x00000005,
598 VK_STENCIL_OP_INC_WRAP = 0x00000006,
599 VK_STENCIL_OP_DEC_WRAP = 0x00000007,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600600
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600601 VK_STENCIL_OP_BEGIN_RANGE = VK_STENCIL_OP_KEEP,
602 VK_STENCIL_OP_END_RANGE = VK_STENCIL_OP_DEC_WRAP,
603 VK_NUM_STENCIL_OP = (VK_STENCIL_OP_END_RANGE - VK_STENCIL_OP_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600604 VK_MAX_ENUM(VkStencilOp_)
605} VkStencilOp;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600606
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600607typedef enum VkLogicOp_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600608{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600609 VK_LOGIC_OP_COPY = 0x00000000,
610 VK_LOGIC_OP_CLEAR = 0x00000001,
611 VK_LOGIC_OP_AND = 0x00000002,
612 VK_LOGIC_OP_AND_REVERSE = 0x00000003,
613 VK_LOGIC_OP_AND_INVERTED = 0x00000004,
614 VK_LOGIC_OP_NOOP = 0x00000005,
615 VK_LOGIC_OP_XOR = 0x00000006,
616 VK_LOGIC_OP_OR = 0x00000007,
617 VK_LOGIC_OP_NOR = 0x00000008,
618 VK_LOGIC_OP_EQUIV = 0x00000009,
619 VK_LOGIC_OP_INVERT = 0x0000000a,
620 VK_LOGIC_OP_OR_REVERSE = 0x0000000b,
621 VK_LOGIC_OP_COPY_INVERTED = 0x0000000c,
622 VK_LOGIC_OP_OR_INVERTED = 0x0000000d,
623 VK_LOGIC_OP_NAND = 0x0000000e,
624 VK_LOGIC_OP_SET = 0x0000000f,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600625
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600626 VK_LOGIC_OP_BEGIN_RANGE = VK_LOGIC_OP_COPY,
627 VK_LOGIC_OP_END_RANGE = VK_LOGIC_OP_SET,
628 VK_NUM_LOGIC_OP = (VK_LOGIC_OP_END_RANGE - VK_LOGIC_OP_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600629 VK_MAX_ENUM(VkLogicOp_)
630} VkLogicOp;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600631
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600632typedef enum VkSystemAllocType_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600633{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600634 VK_SYSTEM_ALLOC_API_OBJECT = 0x00000000,
635 VK_SYSTEM_ALLOC_INTERNAL = 0x00000001,
636 VK_SYSTEM_ALLOC_INTERNAL_TEMP = 0x00000002,
637 VK_SYSTEM_ALLOC_INTERNAL_SHADER = 0x00000003,
638 VK_SYSTEM_ALLOC_DEBUG = 0x00000004,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600639
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600640 VK_SYSTEM_ALLOC_BEGIN_RANGE = VK_SYSTEM_ALLOC_API_OBJECT,
641 VK_SYSTEM_ALLOC_END_RANGE = VK_SYSTEM_ALLOC_DEBUG,
642 VK_NUM_SYSTEM_ALLOC_TYPE = (VK_SYSTEM_ALLOC_END_RANGE - VK_SYSTEM_ALLOC_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600643 VK_MAX_ENUM(VkSystemAllocType_)
644} VkSystemAllocType;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600645
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600646typedef enum VkPhysicalGpuType_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600647{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600648 VK_GPU_TYPE_OTHER = 0x00000000,
649 VK_GPU_TYPE_INTEGRATED = 0x00000001,
650 VK_GPU_TYPE_DISCRETE = 0x00000002,
651 VK_GPU_TYPE_VIRTUAL = 0x00000003,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600652
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600653 VK_PHYSICAL_GPU_TYPE_BEGIN_RANGE = VK_GPU_TYPE_OTHER,
654 VK_PHYSICAL_GPU_TYPE_END_RANGE = VK_GPU_TYPE_VIRTUAL,
655 VK_NUM_PHYSICAL_GPU_TYPE = (VK_PHYSICAL_GPU_TYPE_END_RANGE - VK_PHYSICAL_GPU_TYPE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600656 VK_MAX_ENUM(VkPhysicalGpuType_)
657} VkPhysicalGpuType;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600658
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600659typedef enum VkPhysicalGpuInfoType_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600660{
661 // Info type for vkGetGpuInfo()
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600662 VK_INFO_TYPE_PHYSICAL_GPU_PROPERTIES = 0x00000000,
663 VK_INFO_TYPE_PHYSICAL_GPU_PERFORMANCE = 0x00000001,
664 VK_INFO_TYPE_PHYSICAL_GPU_QUEUE_PROPERTIES = 0x00000002,
665 VK_INFO_TYPE_PHYSICAL_GPU_MEMORY_PROPERTIES = 0x00000003,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600666
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600667 VK_INFO_TYPE_PHYSICAL_GPU_BEGIN_RANGE = VK_INFO_TYPE_PHYSICAL_GPU_PROPERTIES,
668 VK_INFO_TYPE_PHYSICAL_GPU_END_RANGE = VK_INFO_TYPE_PHYSICAL_GPU_MEMORY_PROPERTIES,
669 VK_NUM_INFO_TYPE_PHYSICAL_GPU = (VK_INFO_TYPE_PHYSICAL_GPU_END_RANGE - VK_INFO_TYPE_PHYSICAL_GPU_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600670 VK_MAX_ENUM(VkPhysicalGpuInfoType_)
671} VkPhysicalGpuInfoType;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600672
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600673typedef enum VkFormatInfoType_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600674{
675 // Info type for vkGetFormatInfo()
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600676 VK_INFO_TYPE_FORMAT_PROPERTIES = 0x00000000,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600677
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600678 VK_INFO_TYPE_FORMAT_BEGIN_RANGE = VK_INFO_TYPE_FORMAT_PROPERTIES,
679 VK_INFO_TYPE_FORMAT_END_RANGE = VK_INFO_TYPE_FORMAT_PROPERTIES,
680 VK_NUM_INFO_TYPE_FORMAT = (VK_INFO_TYPE_FORMAT_END_RANGE - VK_INFO_TYPE_FORMAT_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600681 VK_MAX_ENUM(VkFormatInfoType_)
682} VkFormatInfoType;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600683
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600684typedef enum VkSubresourceInfoType_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600685{
686 // Info type for vkGetImageSubresourceInfo()
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600687 VK_INFO_TYPE_SUBRESOURCE_LAYOUT = 0x00000000,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600688
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600689 VK_INFO_TYPE_SUBRESOURCE_BEGIN_RANGE = VK_INFO_TYPE_SUBRESOURCE_LAYOUT,
690 VK_INFO_TYPE_SUBRESOURCE_END_RANGE = VK_INFO_TYPE_SUBRESOURCE_LAYOUT,
691 VK_NUM_INFO_TYPE_SUBRESOURCE = (VK_INFO_TYPE_SUBRESOURCE_END_RANGE - VK_INFO_TYPE_SUBRESOURCE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600692 VK_MAX_ENUM(VkSubresourceInfoType_)
693} VkSubresourceInfoType;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600694
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600695typedef enum VkObjectInfoType_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600696{
697 // Info type for vkGetObjectInfo()
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600698 VK_INFO_TYPE_MEMORY_ALLOCATION_COUNT = 0x00000000,
699 VK_INFO_TYPE_MEMORY_REQUIREMENTS = 0x00000001,
700 VK_INFO_TYPE_BUFFER_MEMORY_REQUIREMENTS = 0x00000002,
701 VK_INFO_TYPE_IMAGE_MEMORY_REQUIREMENTS = 0x00000003,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600702
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600703 VK_INFO_TYPE_BEGIN_RANGE = VK_INFO_TYPE_MEMORY_ALLOCATION_COUNT,
704 VK_INFO_TYPE_END_RANGE = VK_INFO_TYPE_IMAGE_MEMORY_REQUIREMENTS,
705 VK_NUM_INFO_TYPE = (VK_INFO_TYPE_END_RANGE - VK_INFO_TYPE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600706 VK_MAX_ENUM(VkObjectInfoType_)
707} VkObjectInfoType;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600708
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600709typedef enum VkValidationLevel_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600710{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600711 VK_VALIDATION_LEVEL_0 = 0x00000000,
712 VK_VALIDATION_LEVEL_1 = 0x00000001,
713 VK_VALIDATION_LEVEL_2 = 0x00000002,
714 VK_VALIDATION_LEVEL_3 = 0x00000003,
715 VK_VALIDATION_LEVEL_4 = 0x00000004,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600716
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600717 VK_VALIDATION_LEVEL_BEGIN_RANGE = VK_VALIDATION_LEVEL_0,
718 VK_VALIDATION_LEVEL_END_RANGE = VK_VALIDATION_LEVEL_4,
719 VK_NUM_VALIDATION_LEVEL = (VK_VALIDATION_LEVEL_END_RANGE - VK_VALIDATION_LEVEL_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600720
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600721 VK_MAX_ENUM(VkValidationLevel_)
722} VkValidationLevel;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600723
724// ------------------------------------------------------------------------------------------------
725// Error and return codes
726
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600727typedef enum VkResult_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600728{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600729 // Return codes for successful operation execution (> = 0)
730 VK_SUCCESS = 0x0000000,
731 VK_UNSUPPORTED = 0x0000001,
732 VK_NOT_READY = 0x0000002,
733 VK_TIMEOUT = 0x0000003,
734 VK_EVENT_SET = 0x0000004,
735 VK_EVENT_RESET = 0x0000005,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600736
737 // Error codes (negative values)
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600738 VK_ERROR_UNKNOWN = -(0x00000001),
739 VK_ERROR_UNAVAILABLE = -(0x00000002),
740 VK_ERROR_INITIALIZATION_FAILED = -(0x00000003),
741 VK_ERROR_OUT_OF_MEMORY = -(0x00000004),
742 VK_ERROR_OUT_OF_GPU_MEMORY = -(0x00000005),
743 VK_ERROR_DEVICE_ALREADY_CREATED = -(0x00000006),
744 VK_ERROR_DEVICE_LOST = -(0x00000007),
745 VK_ERROR_INVALID_POINTER = -(0x00000008),
746 VK_ERROR_INVALID_VALUE = -(0x00000009),
747 VK_ERROR_INVALID_HANDLE = -(0x0000000A),
748 VK_ERROR_INVALID_ORDINAL = -(0x0000000B),
749 VK_ERROR_INVALID_MEMORY_SIZE = -(0x0000000C),
750 VK_ERROR_INVALID_EXTENSION = -(0x0000000D),
751 VK_ERROR_INVALID_FLAGS = -(0x0000000E),
752 VK_ERROR_INVALID_ALIGNMENT = -(0x0000000F),
753 VK_ERROR_INVALID_FORMAT = -(0x00000010),
754 VK_ERROR_INVALID_IMAGE = -(0x00000011),
755 VK_ERROR_INVALID_DESCRIPTOR_SET_DATA = -(0x00000012),
756 VK_ERROR_INVALID_QUEUE_TYPE = -(0x00000013),
757 VK_ERROR_INVALID_OBJECT_TYPE = -(0x00000014),
758 VK_ERROR_UNSUPPORTED_SHADER_IL_VERSION = -(0x00000015),
759 VK_ERROR_BAD_SHADER_CODE = -(0x00000016),
760 VK_ERROR_BAD_PIPELINE_DATA = -(0x00000017),
761 VK_ERROR_TOO_MANY_MEMORY_REFERENCES = -(0x00000018),
762 VK_ERROR_NOT_MAPPABLE = -(0x00000019),
763 VK_ERROR_MEMORY_MAP_FAILED = -(0x0000001A),
764 VK_ERROR_MEMORY_UNMAP_FAILED = -(0x0000001B),
765 VK_ERROR_INCOMPATIBLE_DEVICE = -(0x0000001C),
766 VK_ERROR_INCOMPATIBLE_DRIVER = -(0x0000001D),
767 VK_ERROR_INCOMPLETE_COMMAND_BUFFER = -(0x0000001E),
768 VK_ERROR_BUILDING_COMMAND_BUFFER = -(0x0000001F),
769 VK_ERROR_MEMORY_NOT_BOUND = -(0x00000020),
770 VK_ERROR_INCOMPATIBLE_QUEUE = -(0x00000021),
771 VK_ERROR_NOT_SHAREABLE = -(0x00000022),
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600772 VK_MAX_ENUM(_VK_RESULT_CODE)
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600773} VkResult;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600774
775// ------------------------------------------------------------------------------------------------
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600776// Vulkan format definitions
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600777
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600778typedef enum VkVertexInputStepRate_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600779{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600780 VK_VERTEX_INPUT_STEP_RATE_VERTEX = 0x0,
781 VK_VERTEX_INPUT_STEP_RATE_INSTANCE = 0x1,
782 VK_VERTEX_INPUT_STEP_RATE_DRAW = 0x2, //Optional
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600783
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600784 VK_VERTEX_INPUT_STEP_RATE_BEGIN_RANGE = VK_VERTEX_INPUT_STEP_RATE_VERTEX,
785 VK_VERTEX_INPUT_STEP_RATE_END_RANGE = VK_VERTEX_INPUT_STEP_RATE_DRAW,
786 VK_NUM_VERTEX_INPUT_STEP_RATE = (VK_VERTEX_INPUT_STEP_RATE_END_RANGE - VK_VERTEX_INPUT_STEP_RATE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600787 VK_MAX_ENUM(VkVertexInputStepRate_)
788} VkVertexInputStepRate;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600789
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600790typedef enum VkFormat_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600791{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600792 VK_FMT_UNDEFINED = 0x00000000,
793 VK_FMT_R4G4_UNORM = 0x00000001,
794 VK_FMT_R4G4_USCALED = 0x00000002,
795 VK_FMT_R4G4B4A4_UNORM = 0x00000003,
796 VK_FMT_R4G4B4A4_USCALED = 0x00000004,
797 VK_FMT_R5G6B5_UNORM = 0x00000005,
798 VK_FMT_R5G6B5_USCALED = 0x00000006,
799 VK_FMT_R5G5B5A1_UNORM = 0x00000007,
800 VK_FMT_R5G5B5A1_USCALED = 0x00000008,
801 VK_FMT_R8_UNORM = 0x00000009,
802 VK_FMT_R8_SNORM = 0x0000000A,
803 VK_FMT_R8_USCALED = 0x0000000B,
804 VK_FMT_R8_SSCALED = 0x0000000C,
805 VK_FMT_R8_UINT = 0x0000000D,
806 VK_FMT_R8_SINT = 0x0000000E,
807 VK_FMT_R8_SRGB = 0x0000000F,
808 VK_FMT_R8G8_UNORM = 0x00000010,
809 VK_FMT_R8G8_SNORM = 0x00000011,
810 VK_FMT_R8G8_USCALED = 0x00000012,
811 VK_FMT_R8G8_SSCALED = 0x00000013,
812 VK_FMT_R8G8_UINT = 0x00000014,
813 VK_FMT_R8G8_SINT = 0x00000015,
814 VK_FMT_R8G8_SRGB = 0x00000016,
815 VK_FMT_R8G8B8_UNORM = 0x00000017,
816 VK_FMT_R8G8B8_SNORM = 0x00000018,
817 VK_FMT_R8G8B8_USCALED = 0x00000019,
818 VK_FMT_R8G8B8_SSCALED = 0x0000001A,
819 VK_FMT_R8G8B8_UINT = 0x0000001B,
820 VK_FMT_R8G8B8_SINT = 0x0000001C,
821 VK_FMT_R8G8B8_SRGB = 0x0000001D,
822 VK_FMT_R8G8B8A8_UNORM = 0x0000001E,
823 VK_FMT_R8G8B8A8_SNORM = 0x0000001F,
824 VK_FMT_R8G8B8A8_USCALED = 0x00000020,
825 VK_FMT_R8G8B8A8_SSCALED = 0x00000021,
826 VK_FMT_R8G8B8A8_UINT = 0x00000022,
827 VK_FMT_R8G8B8A8_SINT = 0x00000023,
828 VK_FMT_R8G8B8A8_SRGB = 0x00000024,
829 VK_FMT_R10G10B10A2_UNORM = 0x00000025,
830 VK_FMT_R10G10B10A2_SNORM = 0x00000026,
831 VK_FMT_R10G10B10A2_USCALED = 0x00000027,
832 VK_FMT_R10G10B10A2_SSCALED = 0x00000028,
833 VK_FMT_R10G10B10A2_UINT = 0x00000029,
834 VK_FMT_R10G10B10A2_SINT = 0x0000002A,
835 VK_FMT_R16_UNORM = 0x0000002B,
836 VK_FMT_R16_SNORM = 0x0000002C,
837 VK_FMT_R16_USCALED = 0x0000002D,
838 VK_FMT_R16_SSCALED = 0x0000002E,
839 VK_FMT_R16_UINT = 0x0000002F,
840 VK_FMT_R16_SINT = 0x00000030,
841 VK_FMT_R16_SFLOAT = 0x00000031,
842 VK_FMT_R16G16_UNORM = 0x00000032,
843 VK_FMT_R16G16_SNORM = 0x00000033,
844 VK_FMT_R16G16_USCALED = 0x00000034,
845 VK_FMT_R16G16_SSCALED = 0x00000035,
846 VK_FMT_R16G16_UINT = 0x00000036,
847 VK_FMT_R16G16_SINT = 0x00000037,
848 VK_FMT_R16G16_SFLOAT = 0x00000038,
849 VK_FMT_R16G16B16_UNORM = 0x00000039,
850 VK_FMT_R16G16B16_SNORM = 0x0000003A,
851 VK_FMT_R16G16B16_USCALED = 0x0000003B,
852 VK_FMT_R16G16B16_SSCALED = 0x0000003C,
853 VK_FMT_R16G16B16_UINT = 0x0000003D,
854 VK_FMT_R16G16B16_SINT = 0x0000003E,
855 VK_FMT_R16G16B16_SFLOAT = 0x0000003F,
856 VK_FMT_R16G16B16A16_UNORM = 0x00000040,
857 VK_FMT_R16G16B16A16_SNORM = 0x00000041,
858 VK_FMT_R16G16B16A16_USCALED = 0x00000042,
859 VK_FMT_R16G16B16A16_SSCALED = 0x00000043,
860 VK_FMT_R16G16B16A16_UINT = 0x00000044,
861 VK_FMT_R16G16B16A16_SINT = 0x00000045,
862 VK_FMT_R16G16B16A16_SFLOAT = 0x00000046,
863 VK_FMT_R32_UINT = 0x00000047,
864 VK_FMT_R32_SINT = 0x00000048,
865 VK_FMT_R32_SFLOAT = 0x00000049,
866 VK_FMT_R32G32_UINT = 0x0000004A,
867 VK_FMT_R32G32_SINT = 0x0000004B,
868 VK_FMT_R32G32_SFLOAT = 0x0000004C,
869 VK_FMT_R32G32B32_UINT = 0x0000004D,
870 VK_FMT_R32G32B32_SINT = 0x0000004E,
871 VK_FMT_R32G32B32_SFLOAT = 0x0000004F,
872 VK_FMT_R32G32B32A32_UINT = 0x00000050,
873 VK_FMT_R32G32B32A32_SINT = 0x00000051,
874 VK_FMT_R32G32B32A32_SFLOAT = 0x00000052,
875 VK_FMT_R64_SFLOAT = 0x00000053,
876 VK_FMT_R64G64_SFLOAT = 0x00000054,
877 VK_FMT_R64G64B64_SFLOAT = 0x00000055,
878 VK_FMT_R64G64B64A64_SFLOAT = 0x00000056,
879 VK_FMT_R11G11B10_UFLOAT = 0x00000057,
880 VK_FMT_R9G9B9E5_UFLOAT = 0x00000058,
881 VK_FMT_D16_UNORM = 0x00000059,
882 VK_FMT_D24_UNORM = 0x0000005A,
883 VK_FMT_D32_SFLOAT = 0x0000005B,
884 VK_FMT_S8_UINT = 0x0000005C,
885 VK_FMT_D16_UNORM_S8_UINT = 0x0000005D,
886 VK_FMT_D24_UNORM_S8_UINT = 0x0000005E,
887 VK_FMT_D32_SFLOAT_S8_UINT = 0x0000005F,
888 VK_FMT_BC1_RGB_UNORM = 0x00000060,
889 VK_FMT_BC1_RGB_SRGB = 0x00000061,
890 VK_FMT_BC1_RGBA_UNORM = 0x00000062,
891 VK_FMT_BC1_RGBA_SRGB = 0x00000063,
892 VK_FMT_BC2_UNORM = 0x00000064,
893 VK_FMT_BC2_SRGB = 0x00000065,
894 VK_FMT_BC3_UNORM = 0x00000066,
895 VK_FMT_BC3_SRGB = 0x00000067,
896 VK_FMT_BC4_UNORM = 0x00000068,
897 VK_FMT_BC4_SNORM = 0x00000069,
898 VK_FMT_BC5_UNORM = 0x0000006A,
899 VK_FMT_BC5_SNORM = 0x0000006B,
900 VK_FMT_BC6H_UFLOAT = 0x0000006C,
901 VK_FMT_BC6H_SFLOAT = 0x0000006D,
902 VK_FMT_BC7_UNORM = 0x0000006E,
903 VK_FMT_BC7_SRGB = 0x0000006F,
904 VK_FMT_ETC2_R8G8B8_UNORM = 0x00000070,
905 VK_FMT_ETC2_R8G8B8_SRGB = 0x00000071,
906 VK_FMT_ETC2_R8G8B8A1_UNORM = 0x00000072,
907 VK_FMT_ETC2_R8G8B8A1_SRGB = 0x00000073,
908 VK_FMT_ETC2_R8G8B8A8_UNORM = 0x00000074,
909 VK_FMT_ETC2_R8G8B8A8_SRGB = 0x00000075,
910 VK_FMT_EAC_R11_UNORM = 0x00000076,
911 VK_FMT_EAC_R11_SNORM = 0x00000077,
912 VK_FMT_EAC_R11G11_UNORM = 0x00000078,
913 VK_FMT_EAC_R11G11_SNORM = 0x00000079,
914 VK_FMT_ASTC_4x4_UNORM = 0x0000007A,
915 VK_FMT_ASTC_4x4_SRGB = 0x0000007B,
916 VK_FMT_ASTC_5x4_UNORM = 0x0000007C,
917 VK_FMT_ASTC_5x4_SRGB = 0x0000007D,
918 VK_FMT_ASTC_5x5_UNORM = 0x0000007E,
919 VK_FMT_ASTC_5x5_SRGB = 0x0000007F,
920 VK_FMT_ASTC_6x5_UNORM = 0x00000080,
921 VK_FMT_ASTC_6x5_SRGB = 0x00000081,
922 VK_FMT_ASTC_6x6_UNORM = 0x00000082,
923 VK_FMT_ASTC_6x6_SRGB = 0x00000083,
924 VK_FMT_ASTC_8x5_UNORM = 0x00000084,
925 VK_FMT_ASTC_8x5_SRGB = 0x00000085,
926 VK_FMT_ASTC_8x6_UNORM = 0x00000086,
927 VK_FMT_ASTC_8x6_SRGB = 0x00000087,
928 VK_FMT_ASTC_8x8_UNORM = 0x00000088,
929 VK_FMT_ASTC_8x8_SRGB = 0x00000089,
930 VK_FMT_ASTC_10x5_UNORM = 0x0000008A,
931 VK_FMT_ASTC_10x5_SRGB = 0x0000008B,
932 VK_FMT_ASTC_10x6_UNORM = 0x0000008C,
933 VK_FMT_ASTC_10x6_SRGB = 0x0000008D,
934 VK_FMT_ASTC_10x8_UNORM = 0x0000008E,
935 VK_FMT_ASTC_10x8_SRGB = 0x0000008F,
936 VK_FMT_ASTC_10x10_UNORM = 0x00000090,
937 VK_FMT_ASTC_10x10_SRGB = 0x00000091,
938 VK_FMT_ASTC_12x10_UNORM = 0x00000092,
939 VK_FMT_ASTC_12x10_SRGB = 0x00000093,
940 VK_FMT_ASTC_12x12_UNORM = 0x00000094,
941 VK_FMT_ASTC_12x12_SRGB = 0x00000095,
942 VK_FMT_B4G4R4A4_UNORM = 0x00000096,
943 VK_FMT_B5G5R5A1_UNORM = 0x00000097,
944 VK_FMT_B5G6R5_UNORM = 0x00000098,
945 VK_FMT_B5G6R5_USCALED = 0x00000099,
946 VK_FMT_B8G8R8_UNORM = 0x0000009A,
947 VK_FMT_B8G8R8_SNORM = 0x0000009B,
948 VK_FMT_B8G8R8_USCALED = 0x0000009C,
949 VK_FMT_B8G8R8_SSCALED = 0x0000009D,
950 VK_FMT_B8G8R8_UINT = 0x0000009E,
951 VK_FMT_B8G8R8_SINT = 0x0000009F,
952 VK_FMT_B8G8R8_SRGB = 0x000000A0,
953 VK_FMT_B8G8R8A8_UNORM = 0x000000A1,
954 VK_FMT_B8G8R8A8_SNORM = 0x000000A2,
955 VK_FMT_B8G8R8A8_USCALED = 0x000000A3,
956 VK_FMT_B8G8R8A8_SSCALED = 0x000000A4,
957 VK_FMT_B8G8R8A8_UINT = 0x000000A5,
958 VK_FMT_B8G8R8A8_SINT = 0x000000A6,
959 VK_FMT_B8G8R8A8_SRGB = 0x000000A7,
960 VK_FMT_B10G10R10A2_UNORM = 0x000000A8,
961 VK_FMT_B10G10R10A2_SNORM = 0x000000A9,
962 VK_FMT_B10G10R10A2_USCALED = 0x000000AA,
963 VK_FMT_B10G10R10A2_SSCALED = 0x000000AB,
964 VK_FMT_B10G10R10A2_UINT = 0x000000AC,
965 VK_FMT_B10G10R10A2_SINT = 0x000000AD,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600966
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600967 VK_FMT_BEGIN_RANGE = VK_FMT_UNDEFINED,
968 VK_FMT_END_RANGE = VK_FMT_B10G10R10A2_SINT,
969 VK_NUM_FMT = (VK_FMT_END_RANGE - VK_FMT_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600970 VK_MAX_ENUM(VkFormat_)
971} VkFormat;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600972
973// Shader stage enumerant
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600974typedef enum VkPipelineShaderStage_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600975{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600976 VK_SHADER_STAGE_VERTEX = 0,
977 VK_SHADER_STAGE_TESS_CONTROL = 1,
978 VK_SHADER_STAGE_TESS_EVALUATION = 2,
979 VK_SHADER_STAGE_GEOMETRY = 3,
980 VK_SHADER_STAGE_FRAGMENT = 4,
981 VK_SHADER_STAGE_COMPUTE = 5,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600982
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600983 VK_SHADER_STAGE_BEGIN_RANGE = VK_SHADER_STAGE_VERTEX,
984 VK_SHADER_STAGE_END_RANGE = VK_SHADER_STAGE_COMPUTE,
985 VK_NUM_SHADER_STAGE = (VK_SHADER_STAGE_END_RANGE - VK_SHADER_STAGE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600986 VK_MAX_ENUM(VkPipelineShaderStage_)
987} VkPipelineShaderStage;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600988
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600989typedef enum VkShaderStageFlags_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600990{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600991 VK_SHADER_STAGE_FLAGS_VERTEX_BIT = 0x00000001,
992 VK_SHADER_STAGE_FLAGS_TESS_CONTROL_BIT = 0x00000002,
993 VK_SHADER_STAGE_FLAGS_TESS_EVALUATION_BIT = 0x00000004,
994 VK_SHADER_STAGE_FLAGS_GEOMETRY_BIT = 0x00000008,
995 VK_SHADER_STAGE_FLAGS_FRAGMENT_BIT = 0x00000010,
996 VK_SHADER_STAGE_FLAGS_COMPUTE_BIT = 0x00000020,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -0600997
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -0600998 VK_SHADER_STAGE_FLAGS_ALL = 0x7FFFFFFF,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -0600999 VK_MAX_ENUM(VkShaderStageFlags_)
1000} VkShaderStageFlags;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001001
1002// Structure type enumerant
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001003typedef enum VkStructureType_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001004{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001005 VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
1006 VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 1,
1007 VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO = 2,
1008 VK_STRUCTURE_TYPE_MEMORY_OPEN_INFO = 4,
1009 VK_STRUCTURE_TYPE_PEER_MEMORY_OPEN_INFO = 5,
1010 VK_STRUCTURE_TYPE_BUFFER_VIEW_ATTACH_INFO = 6,
1011 VK_STRUCTURE_TYPE_IMAGE_VIEW_ATTACH_INFO = 7,
1012 VK_STRUCTURE_TYPE_EVENT_WAIT_INFO = 8,
1013 VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 9,
1014 VK_STRUCTURE_TYPE_COLOR_ATTACHMENT_VIEW_CREATE_INFO = 10,
1015 VK_STRUCTURE_TYPE_DEPTH_STENCIL_VIEW_CREATE_INFO = 11,
1016 VK_STRUCTURE_TYPE_SHADER_CREATE_INFO = 12,
1017 VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 13,
1018 VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 14,
1019 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 15,
1020 VK_STRUCTURE_TYPE_DYNAMIC_VP_STATE_CREATE_INFO = 16,
1021 VK_STRUCTURE_TYPE_DYNAMIC_RS_STATE_CREATE_INFO = 17,
1022 VK_STRUCTURE_TYPE_DYNAMIC_CB_STATE_CREATE_INFO = 18,
1023 VK_STRUCTURE_TYPE_DYNAMIC_DS_STATE_CREATE_INFO = 19,
1024 VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO = 20,
1025 VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 21,
1026 VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 22,
1027 VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 23,
1028 VK_STRUCTURE_TYPE_SEMAPHORE_OPEN_INFO = 24,
1029 VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 25,
1030 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 26,
1031 VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 27,
1032 VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_CREATE_INFO = 28,
1033 VK_STRUCTURE_TYPE_PIPELINE_IA_STATE_CREATE_INFO = 29,
1034 VK_STRUCTURE_TYPE_PIPELINE_TESS_STATE_CREATE_INFO = 30,
1035 VK_STRUCTURE_TYPE_PIPELINE_VP_STATE_CREATE_INFO = 31,
1036 VK_STRUCTURE_TYPE_PIPELINE_RS_STATE_CREATE_INFO = 32,
1037 VK_STRUCTURE_TYPE_PIPELINE_MS_STATE_CREATE_INFO = 33,
1038 VK_STRUCTURE_TYPE_PIPELINE_CB_STATE_CREATE_INFO = 34,
1039 VK_STRUCTURE_TYPE_PIPELINE_DS_STATE_CREATE_INFO = 35,
1040 VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 36,
1041 VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 37,
1042 VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 38,
1043 VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 39,
1044 VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO = 40,
1045 VK_STRUCTURE_TYPE_CMD_BUFFER_GRAPHICS_BEGIN_INFO = 41,
1046 VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 42,
1047 VK_STRUCTURE_TYPE_LAYER_CREATE_INFO = 43,
1048 VK_STRUCTURE_TYPE_PIPELINE_BARRIER = 44,
1049 VK_STRUCTURE_TYPE_MEMORY_BARRIER = 45,
1050 VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 46,
1051 VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 47,
1052 VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 48,
1053 VK_STRUCTURE_TYPE_UPDATE_SAMPLERS = 49,
1054 VK_STRUCTURE_TYPE_UPDATE_SAMPLER_TEXTURES = 50,
1055 VK_STRUCTURE_TYPE_UPDATE_IMAGES = 51,
1056 VK_STRUCTURE_TYPE_UPDATE_BUFFERS = 52,
1057 VK_STRUCTURE_TYPE_UPDATE_AS_COPY = 53,
1058 VK_STRUCTURE_TYPE_MEMORY_ALLOC_BUFFER_INFO = 54,
1059 VK_STRUCTURE_TYPE_MEMORY_ALLOC_IMAGE_INFO = 55,
1060 VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 56,
1061
1062 VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO,
1063 VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
1064
1065 VK_NUM_STRUCTURE_TYPE = (VK_STRUCTURE_TYPE_END_RANGE - VK_STRUCTURE_TYPE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001066 VK_MAX_ENUM(VkStructureType_)
1067} VkStructureType;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001068
1069// ------------------------------------------------------------------------------------------------
1070// Flags
1071
1072// Device creation flags
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001073typedef enum VkDeviceCreateFlags_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001074{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001075 VK_DEVICE_CREATE_VALIDATION_BIT = 0x00000001,
1076 VK_DEVICE_CREATE_MGPU_IQ_MATCH_BIT = 0x00000002,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001077 VK_MAX_ENUM(VkDeviceCreateFlags_)
1078} VkDeviceCreateFlags;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001079
1080// Queue capabilities
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001081typedef enum VkQueueFlags_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001082{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001083 VK_QUEUE_GRAPHICS_BIT = 0x00000001, // Queue supports graphics operations
1084 VK_QUEUE_COMPUTE_BIT = 0x00000002, // Queue supports compute operations
1085 VK_QUEUE_DMA_BIT = 0x00000004, // Queue supports DMA operations
1086 VK_QUEUE_EXTENDED_BIT = 0x40000000, // Extended queue
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001087 VK_MAX_ENUM(VkQueueFlags_)
1088} VkQueueFlags;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001089
1090// memory properties passed into vkAllocMemory().
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001091typedef enum VkMemoryPropertyFlags_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001092{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001093 VK_MEMORY_PROPERTY_GPU_ONLY = 0x00000000, // If not set, then allocate memory on device (GPU)
1094 VK_MEMORY_PROPERTY_CPU_VISIBLE_BIT = 0x00000001,
1095 VK_MEMORY_PROPERTY_CPU_GPU_COHERENT_BIT = 0x00000002,
1096 VK_MEMORY_PROPERTY_CPU_UNCACHED_BIT = 0x00000004,
1097 VK_MEMORY_PROPERTY_CPU_WRITE_COMBINED_BIT = 0x00000008,
1098 VK_MEMORY_PROPERTY_PREFER_CPU_LOCAL = 0x00000010, // all else being equal, prefer CPU access
1099 VK_MEMORY_PROPERTY_SHAREABLE_BIT = 0x00000020,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001100 VK_MAX_ENUM(VkMemoryPropertyFlags_)
1101} VkMemoryPropertyFlags;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001102
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001103typedef enum VkMemoryType_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001104{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001105 VK_MEMORY_TYPE_OTHER = 0x00000000, // device memory that is not any of the others
1106 VK_MEMORY_TYPE_BUFFER = 0x00000001, // memory for buffers and associated information
1107 VK_MEMORY_TYPE_IMAGE = 0x00000002, // memory for images and associated information
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001108
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001109 VK_MEMORY_TYPE_BEGIN_RANGE = VK_MEMORY_TYPE_OTHER,
1110 VK_MEMORY_TYPE_END_RANGE = VK_MEMORY_TYPE_IMAGE,
1111 VK_NUM_MEMORY_TYPE = (VK_MEMORY_TYPE_END_RANGE - VK_MEMORY_TYPE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001112 VK_MAX_ENUM(VkMemoryType_)
1113} VkMemoryType;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001114
1115// Buffer and buffer allocation usage flags
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001116typedef enum VkBufferUsageFlags_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001117{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001118 VK_BUFFER_USAGE_GENERAL = 0x00000000, // no special usage
1119 VK_BUFFER_USAGE_SHADER_ACCESS_READ_BIT = 0x00000001, // Shader read (e.g. TBO, image buffer, UBO, SSBO)
1120 VK_BUFFER_USAGE_SHADER_ACCESS_WRITE_BIT = 0x00000002, // Shader write (e.g. image buffer, SSBO)
1121 VK_BUFFER_USAGE_SHADER_ACCESS_ATOMIC_BIT = 0x00000004, // Shader atomic operations (e.g. image buffer, SSBO)
1122 VK_BUFFER_USAGE_TRANSFER_SOURCE_BIT = 0x00000008, // used as a source for copies
1123 VK_BUFFER_USAGE_TRANSFER_DESTINATION_BIT = 0x00000010, // used as a destination for copies
1124 VK_BUFFER_USAGE_UNIFORM_READ_BIT = 0x00000020, // Uniform read (UBO)
1125 VK_BUFFER_USAGE_INDEX_FETCH_BIT = 0x00000040, // Fixed function index fetch (index buffer)
1126 VK_BUFFER_USAGE_VERTEX_FETCH_BIT = 0x00000080, // Fixed function vertex fetch (VBO)
1127 VK_BUFFER_USAGE_SHADER_STORAGE_BIT = 0x00000100, // Shader storage buffer (SSBO)
1128 VK_BUFFER_USAGE_INDIRECT_PARAMETER_FETCH_BIT = 0x00000200, // Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer)
1129 VK_BUFFER_USAGE_TEXTURE_BUFFER_BIT = 0x00000400, // texture buffer (TBO)
1130 VK_BUFFER_USAGE_IMAGE_BUFFER_BIT = 0x00000800, // image buffer (load/store)
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001131 VK_MAX_ENUM(VkBufferUsageFlags_)
1132} VkBufferUsageFlags;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001133
1134// Buffer flags
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001135typedef enum VkBufferCreateFlags_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001136{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001137 VK_BUFFER_CREATE_SHAREABLE_BIT = 0x00000001,
1138 VK_BUFFER_CREATE_SPARSE_BIT = 0x00000002,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001139 VK_MAX_ENUM(VkBufferCreateFlags_)
1140} VkBufferCreateFlags;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001141
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001142typedef enum VkBufferViewType_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001143{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001144 VK_BUFFER_VIEW_RAW = 0x00000000, // Raw buffer without special structure (e.g. UBO, SSBO, indirect and parameter buffers)
1145 VK_BUFFER_VIEW_TYPED = 0x00000001, // Typed buffer, format and channels are used (TBO, image buffer)
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001146
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001147 VK_BUFFER_VIEW_TYPE_BEGIN_RANGE = VK_BUFFER_VIEW_RAW,
1148 VK_BUFFER_VIEW_TYPE_END_RANGE = VK_BUFFER_VIEW_TYPED,
1149 VK_NUM_BUFFER_VIEW_TYPE = (VK_BUFFER_VIEW_TYPE_END_RANGE - VK_BUFFER_VIEW_TYPE_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001150 VK_MAX_ENUM(VkBufferViewType_)
1151} VkBufferViewType;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001152
1153
1154// Images memory allocations can be used for resources of a given format class.
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001155typedef enum VkImageFormatClass_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001156{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001157 VK_IMAGE_FORMAT_CLASS_128_BITS = 1, // color formats
1158 VK_IMAGE_FORMAT_CLASS_96_BITS = 2,
1159 VK_IMAGE_FORMAT_CLASS_64_BITS = 3,
1160 VK_IMAGE_FORMAT_CLASS_48_BITS = 4,
1161 VK_IMAGE_FORMAT_CLASS_32_BITS = 5,
1162 VK_IMAGE_FORMAT_CLASS_24_BITS = 6,
1163 VK_IMAGE_FORMAT_CLASS_16_BITS = 7,
1164 VK_IMAGE_FORMAT_CLASS_8_BITS = 8,
1165 VK_IMAGE_FORMAT_CLASS_128_BIT_BLOCK = 9, // 128-bit block compressed formats
1166 VK_IMAGE_FORMAT_CLASS_64_BIT_BLOCK = 10, // 64-bit block compressed formats
1167 VK_IMAGE_FORMAT_CLASS_D32 = 11, // D32_SFLOAT
1168 VK_IMAGE_FORMAT_CLASS_D24 = 12, // D24_UNORM
1169 VK_IMAGE_FORMAT_CLASS_D16 = 13, // D16_UNORM
1170 VK_IMAGE_FORMAT_CLASS_S8 = 14, // S8_UINT
1171 VK_IMAGE_FORMAT_CLASS_D32S8 = 15, // D32_SFLOAT_S8_UINT
1172 VK_IMAGE_FORMAT_CLASS_D24S8 = 16, // D24_UNORM_S8_UINT
1173 VK_IMAGE_FORMAT_CLASS_D16S8 = 17, // D16_UNORM_S8_UINT
1174 VK_IMAGE_FORMAT_CLASS_LINEAR = 18, // used for pitch-linear (transparent) textures
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001175
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001176 VK_IMAGE_FORMAT_CLASS_BEGIN_RANGE = VK_IMAGE_FORMAT_CLASS_128_BITS,
1177 VK_IMAGE_FORMAT_CLASS_END_RANGE = VK_IMAGE_FORMAT_CLASS_LINEAR,
1178 VK_NUM_IMAGE_FORMAT_CLASS = (VK_IMAGE_FORMAT_CLASS_END_RANGE - VK_IMAGE_FORMAT_CLASS_BEGIN_RANGE + 1),
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001179 VK_MAX_ENUM(VkImageFormatClass_)
1180} VkImageFormatClass;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001181
1182// Image and image allocation usage flags
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001183typedef enum VkImageUsageFlags_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001184{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001185 VK_IMAGE_USAGE_GENERAL = 0x00000000, // no special usage
1186 VK_IMAGE_USAGE_SHADER_ACCESS_READ_BIT = 0x00000001, // shader read (e.g. texture, image)
1187 VK_IMAGE_USAGE_SHADER_ACCESS_WRITE_BIT = 0x00000002, // shader write (e.g. image)
1188 VK_IMAGE_USAGE_SHADER_ACCESS_ATOMIC_BIT = 0x00000004, // shader atomic operations (e.g. image)
1189 VK_IMAGE_USAGE_TRANSFER_SOURCE_BIT = 0x00000008, // used as a source for copies
1190 VK_IMAGE_USAGE_TRANSFER_DESTINATION_BIT = 0x00000010, // used as a destination for copies
1191 VK_IMAGE_USAGE_TEXTURE_BIT = 0x00000020, // opaque texture (2d, 3d, etc.)
1192 VK_IMAGE_USAGE_IMAGE_BIT = 0x00000040, // opaque image (2d, 3d, etc.)
1193 VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000080, // framebuffer color attachment
1194 VK_IMAGE_USAGE_DEPTH_STENCIL_BIT = 0x00000100, // framebuffer depth/stencil
1195 VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000200, // image data not needed outside of rendering.
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001196 VK_MAX_ENUM(VkImageUsageFlags_)
1197} VkImageUsageFlags;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001198
1199// Image flags
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001200typedef enum VkImageCreateFlags_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001201{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001202 VK_IMAGE_CREATE_INVARIANT_DATA_BIT = 0x00000001,
1203 VK_IMAGE_CREATE_CLONEABLE_BIT = 0x00000002,
1204 VK_IMAGE_CREATE_SHAREABLE_BIT = 0x00000004,
1205 VK_IMAGE_CREATE_SPARSE_BIT = 0x00000008,
1206 VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000010, // Allows image views to have different format than the base image
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001207 VK_MAX_ENUM(VkImageCreateFlags_)
1208} VkImageCreateFlags;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001209
1210// Depth-stencil view creation flags
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001211typedef enum VkDepthStencilViewCreateFlags_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001212{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001213 VK_DEPTH_STENCIL_VIEW_CREATE_READ_ONLY_DEPTH_BIT = 0x00000001,
1214 VK_DEPTH_STENCIL_VIEW_CREATE_READ_ONLY_STENCIL_BIT = 0x00000002,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001215 VK_MAX_ENUM(VkDepthStencilViewCreateFlags_)
1216} VkDepthStencilViewCreateFlags;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001217
1218// Pipeline creation flags
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001219typedef enum VkPipelineCreateFlags_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001220{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001221 VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
1222 VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001223 VK_MAX_ENUM(VkPipelineCreateFlags_)
1224} VkPipelineCreateFlags;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001225
1226// Fence creation flags
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001227typedef enum VkFenceCreateFlags_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001228{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001229 VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001230 VK_MAX_ENUM(VkFenceCreateFlags_)
1231} VkFenceCreateFlags;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001232
1233// Semaphore creation flags
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001234typedef enum VkSemaphoreCreateFlags_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001235{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001236 VK_SEMAPHORE_CREATE_SHAREABLE_BIT = 0x00000001,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001237 VK_MAX_ENUM(VkSemaphoreCreateFlags_)
1238} VkSemaphoreCreateFlags;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001239
1240// Format capability flags
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001241typedef enum VkFormatFeatureFlags_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001242{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001243 VK_FORMAT_IMAGE_SHADER_READ_BIT = 0x00000001,
1244 VK_FORMAT_IMAGE_SHADER_WRITE_BIT = 0x00000002,
1245 VK_FORMAT_IMAGE_COPY_BIT = 0x00000004,
1246 VK_FORMAT_MEMORY_SHADER_ACCESS_BIT = 0x00000008,
1247 VK_FORMAT_COLOR_ATTACHMENT_WRITE_BIT = 0x00000010,
1248 VK_FORMAT_COLOR_ATTACHMENT_BLEND_BIT = 0x00000020,
1249 VK_FORMAT_DEPTH_ATTACHMENT_BIT = 0x00000040,
1250 VK_FORMAT_STENCIL_ATTACHMENT_BIT = 0x00000080,
1251 VK_FORMAT_MSAA_ATTACHMENT_BIT = 0x00000100,
1252 VK_FORMAT_CONVERSION_BIT = 0x00000200,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001253 VK_MAX_ENUM(VkFormatFeatureFlags_)
1254} VkFormatFeatureFlags;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001255
1256// Query flags
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001257typedef enum VkQueryControlFlags_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001258{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001259 VK_QUERY_IMPRECISE_DATA_BIT = 0x00000001,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001260 VK_MAX_ENUM(VkQueryControlFlags_)
1261} VkQueryControlFlags;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001262
1263// GPU compatibility flags
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001264typedef enum VkGpuCompatibilityFlags_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001265{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001266 VK_GPU_COMPAT_ASIC_FEATURES_BIT = 0x00000001,
1267 VK_GPU_COMPAT_IQ_MATCH_BIT = 0x00000002,
1268 VK_GPU_COMPAT_PEER_TRANSFER_BIT = 0x00000004,
1269 VK_GPU_COMPAT_SHARED_MEMORY_BIT = 0x00000008,
1270 VK_GPU_COMPAT_SHARED_SYNC_BIT = 0x00000010,
1271 VK_GPU_COMPAT_SHARED_GPU0_DISPLAY_BIT = 0x00000020,
1272 VK_GPU_COMPAT_SHARED_GPU1_DISPLAY_BIT = 0x00000040,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001273 VK_MAX_ENUM(VkGpuCompatibilityFlags_)
1274} VkGpuCompatibilityFlags;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001275
1276// Command buffer building flags
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001277typedef enum VkCmdBufferBuildFlags_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001278{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001279 VK_CMD_BUFFER_OPTIMIZE_GPU_SMALL_BATCH_BIT = 0x00000001,
1280 VK_CMD_BUFFER_OPTIMIZE_PIPELINE_SWITCH_BIT = 0x00000002,
1281 VK_CMD_BUFFER_OPTIMIZE_ONE_TIME_SUBMIT_BIT = 0x00000004,
1282 VK_CMD_BUFFER_OPTIMIZE_DESCRIPTOR_SET_SWITCH_BIT = 0x00000008,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001283 VK_MAX_ENUM(VkCmdBufferBuildFlags_)
1284} VkCmdBufferBuildFlags;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001285
1286// ------------------------------------------------------------------------------------------------
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001287// Vulkan structures
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001288
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001289typedef struct VkOffset2D_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001290{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001291 int32_t x;
1292 int32_t y;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001293} VkOffset2D;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001294
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001295typedef struct VkOffset3D_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001296{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001297 int32_t x;
1298 int32_t y;
1299 int32_t z;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001300} VkOffset3D;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001301
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001302typedef struct VkExtent2D_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001303{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001304 int32_t width;
1305 int32_t height;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001306} VkExtent2D;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001307
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001308typedef struct VkExtent3D_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001309{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001310 int32_t width;
1311 int32_t height;
1312 int32_t depth;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001313} VkExtent3D;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001314
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001315typedef struct VkViewport_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001316{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001317 float originX;
1318 float originY;
1319 float width;
1320 float height;
1321 float minDepth;
1322 float maxDepth;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001323} VkViewport;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001324
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001325typedef struct VkRect_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001326{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001327 VkOffset2D offset;
1328 VkExtent2D extent;
1329} VkRect;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001330
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001331typedef struct VkChannelMapping_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001332{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001333 VkChannelSwizzle r;
1334 VkChannelSwizzle g;
1335 VkChannelSwizzle b;
1336 VkChannelSwizzle a;
1337} VkChannelMapping;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001338
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001339typedef struct VkPhysicalGpuProperties_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001340{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001341 uint32_t apiVersion;
1342 uint32_t driverVersion;
1343 uint32_t vendorId;
1344 uint32_t deviceId;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001345 VkPhysicalGpuType gpuType;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001346 char gpuName[VK_MAX_PHYSICAL_GPU_NAME];
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001347 VkGpuSize maxInlineMemoryUpdateSize;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001348 uint32_t maxBoundDescriptorSets;
1349 uint32_t maxThreadGroupSize;
1350 uint64_t timestampFrequency;
1351 bool32_t multiColorAttachmentClears;
1352 uint32_t maxDescriptorSets; // at least 2?
1353 uint32_t maxViewports; // at least 16?
1354 uint32_t maxColorAttachments; // at least 8?
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001355} VkPhysicalGpuProperties;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001356
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001357typedef struct VkPhysicalGpuPerformance_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001358{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001359 float maxGpuClock;
1360 float aluPerClock;
1361 float texPerClock;
1362 float primsPerClock;
1363 float pixelsPerClock;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001364} VkPhysicalGpuPerformance;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001365
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001366typedef struct VkGpuCompatibilityInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001367{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001368 VkFlags compatibilityFlags; // VkGpuCompatibilityFlags
1369} VkGpuCompatibilityInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001370
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001371typedef struct VkApplicationInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001372{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001373 VkStructureType sType; // Type of structure. Should be VK_STRUCTURE_TYPE_APPLICATION_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001374 const void* pNext; // Next structure in chain
1375 const char* pAppName;
1376 uint32_t appVersion;
1377 const char* pEngineName;
1378 uint32_t engineVersion;
1379 uint32_t apiVersion;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001380} VkApplicationInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001381
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001382typedef void* (VKAPI *PFN_vkAllocFunction)(
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001383 void* pUserData,
1384 size_t size,
1385 size_t alignment,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001386 VkSystemAllocType allocType);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001387
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001388typedef void (VKAPI *PFN_vkFreeFunction)(
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001389 void* pUserData,
1390 void* pMem);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001391
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001392typedef struct VkAllocCallbacks_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001393{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001394 void* pUserData;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001395 PFN_vkAllocFunction pfnAlloc;
1396 PFN_vkFreeFunction pfnFree;
1397} VkAllocCallbacks;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001398
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001399typedef struct _VkDeviceQueueCreateInfo
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001400{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001401 uint32_t queueNodeIndex;
1402 uint32_t queueCount;
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001403} VkDeviceQueueCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001404
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001405typedef struct _VkDeviceCreateInfo
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001406{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001407 VkStructureType sType; // Should be VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001408 const void* pNext; // Pointer to next structure
1409 uint32_t queueRecordCount;
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001410 const VkDeviceQueueCreateInfo* pRequestedQueues;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001411 uint32_t extensionCount;
1412 const char*const* ppEnabledExtensionNames;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001413 VkValidationLevel maxValidationLevel;
1414 VkFlags flags; // VkDeviceCreateFlags
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001415} VkDeviceCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001416
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001417typedef struct _VkInstanceCreateInfo
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001418{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001419 VkStructureType sType; // Should be VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001420 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001421 const VkApplicationInfo* pAppInfo;
1422 const VkAllocCallbacks* pAllocCb;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001423 uint32_t extensionCount;
1424 const char*const* ppEnabledExtensionNames; // layer or extension name to be enabled
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001425} VkInstanceCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001426
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001427// can be added to VkDeviceCreateInfo or VkInstanceCreateInfo via pNext
1428typedef struct _VkLayerCreateInfo
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001429{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001430 VkStructureType sType; // Should be VK_STRUCTURE_TYPE_LAYER_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001431 const void* pNext; // Pointer to next structure
1432 uint32_t layerCount;
1433 const char *const* ppActiveLayerNames; // layer name from the layer's vkEnumerateLayers())
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001434} VkLayerCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001435
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001436typedef struct VkPhysicalGpuQueueProperties_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001437{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001438 VkFlags queueFlags; // VkQueueFlags
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001439 uint32_t queueCount;
1440 uint32_t maxAtomicCounters;
1441 bool32_t supportsTimestamps;
1442 uint32_t maxMemReferences; // Tells how many memory references can be active for the given queue
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001443} VkPhysicalGpuQueueProperties;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001444
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001445typedef struct VkPhysicalGpuMemoryProperties_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001446{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001447 bool32_t supportsMigration;
1448 bool32_t supportsPinning;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001449} VkPhysicalGpuMemoryProperties;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001450
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001451typedef struct _VkMemoryAllocInfo
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001452{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001453 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_MEMORY_ALLOC_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001454 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001455 VkGpuSize allocationSize; // Size of memory allocation
1456 VkFlags memProps; // VkMemoryPropertyFlags
1457 VkMemoryType memType;
1458 VkMemoryPriority memPriority;
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001459} VkMemoryAllocInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001460
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001461// This structure is included in the VkMemoryAllocInfo chain
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001462// for memory regions allocated for buffer usage.
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001463typedef struct _VkMemoryAllocBufferInfo
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001464{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001465 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_MEMORY_ALLOC_BUFFER_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001466 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001467 VkFlags usage; // VkBufferUsageFlags
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001468} VkMemoryAllocBufferInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001469
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001470// This structure is included in the VkMemoryAllocInfo chain
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001471// for memory regions allocated for image usage.
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001472typedef struct _VkMemoryAllocImageInfo
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001473{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001474 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_MEMORY_ALLOC_IMAGE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001475 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001476 VkFlags usage; // VkImageUsageFlags
1477 VkImageFormatClass formatClass;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001478 uint32_t samples;
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001479} VkMemoryAllocImageInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001480
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001481typedef struct VkMemoryOpenInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001482{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001483 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_MEMORY_OPEN_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001484 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001485 VkGpuMemory sharedMem;
1486} VkMemoryOpenInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001487
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001488typedef struct VkPeerMemoryOpenInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001489{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001490 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_PEER_MEMORY_OPEN_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001491 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001492 VkGpuMemory originalMem;
1493} VkPeerMemoryOpenInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001494
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001495typedef struct VkMemoryRequirements_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001496{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001497 VkGpuSize size; // Specified in bytes
1498 VkGpuSize alignment; // Specified in bytes
1499 VkGpuSize granularity; // Granularity on which vkBindObjectMemoryRange can bind sub-ranges of memory specified in bytes (usually the page size)
1500 VkFlags memProps; // VkMemoryPropertyFlags
1501 VkMemoryType memType;
1502} VkMemoryRequirements;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001503
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001504typedef struct VkBufferMemoryRequirements_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001505{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001506 VkFlags usage; // VkBufferUsageFlags
1507} VkBufferMemoryRequirements;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001508
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001509typedef struct VkImageMemoryRequirements_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001510{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001511 VkFlags usage; // VkImageUsageFlags
1512 VkImageFormatClass formatClass;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001513 uint32_t samples;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001514} VkImageMemoryRequirements;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001515
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001516typedef struct VkFormatProperties_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001517{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001518 VkFlags linearTilingFeatures; // VkFormatFeatureFlags
1519 VkFlags optimalTilingFeatures; // VkFormatFeatureFlags
1520} VkFormatProperties;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001521
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001522typedef struct VkBufferViewAttachInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001523{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001524 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_BUFFER_VIEW_ATTACH_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001525 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001526 VkBufferView view;
1527} VkBufferViewAttachInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001528
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001529typedef struct VkImageViewAttachInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001530{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001531 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_ATTACH_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001532 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001533 VkImageView view;
1534 VkImageLayout layout;
1535} VkImageViewAttachInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001536
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001537typedef struct VkUpdateSamplers_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001538{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001539 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_UPDATE_SAMPLERS
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001540 const void* pNext; // Pointer to next structure
1541 uint32_t binding; // Binding of the sampler (array)
1542 uint32_t arrayIndex; // First element of the array to update or zero otherwise
1543 uint32_t count; // Number of elements to update
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001544 const VkSampler* pSamplers;
1545} VkUpdateSamplers;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001546
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001547typedef struct VkSamplerImageViewInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001548{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001549 VkSampler sampler;
1550 const VkImageViewAttachInfo* pImageView;
1551} VkSamplerImageViewInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001552
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001553typedef struct VkUpdateSamplerTextures_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001554{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001555 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_UPDATE_SAMPLER_TEXTURES
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001556 const void* pNext; // Pointer to next structure
1557 uint32_t binding; // Binding of the combined texture sampler (array)
1558 uint32_t arrayIndex; // First element of the array to update or zero otherwise
1559 uint32_t count; // Number of elements to update
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001560 const VkSamplerImageViewInfo* pSamplerImageViews;
1561} VkUpdateSamplerTextures;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001562
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001563typedef struct VkUpdateImages_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001564{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001565 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_UPDATE_IMAGES
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001566 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001567 VkDescriptorType descriptorType;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001568 uint32_t binding; // Binding of the image (array)
1569 uint32_t arrayIndex; // First element of the array to update or zero otherwise
1570 uint32_t count; // Number of elements to update
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001571 const VkImageViewAttachInfo* pImageViews;
1572} VkUpdateImages;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001573
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001574typedef struct VkUpdateBuffers_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001575{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001576 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_UPDATE_BUFFERS
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001577 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001578 VkDescriptorType descriptorType;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001579 uint32_t binding; // Binding of the buffer (array)
1580 uint32_t arrayIndex; // First element of the array to update or zero otherwise
1581 uint32_t count; // Number of elements to update
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001582 const VkBufferViewAttachInfo* pBufferViews;
1583} VkUpdateBuffers;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001584
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001585typedef struct VkUpdateAsCopy_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001586{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001587 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_UPDATE_AS_COPY
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001588 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001589 VkDescriptorType descriptorType;
1590 VkDescriptorSet descriptorSet;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001591 uint32_t binding;
1592 uint32_t arrayElement;
1593 uint32_t count;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001594} VkUpdateAsCopy;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001595
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001596typedef struct _VkBufferCreateInfo
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001597{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001598 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001599 const void* pNext; // Pointer to next structure.
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001600 VkGpuSize size; // Specified in bytes
1601 VkFlags usage; // VkBufferUsageFlags
1602 VkFlags flags; // VkBufferCreateFlags
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001603} VkBufferCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001604
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001605typedef struct _VkBufferViewCreateInfo
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001606{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001607 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001608 const void* pNext; // Pointer to next structure.
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001609 VkBuffer buffer;
1610 VkBufferViewType viewType;
1611 VkFormat format; // Optionally specifies format of elements
1612 VkGpuSize offset; // Specified in bytes
1613 VkGpuSize range; // View size specified in bytes
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06001614} VkBufferViewCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001615
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001616typedef struct VkImageSubresource_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001617{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001618 VkImageAspect aspect;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001619 uint32_t mipLevel;
1620 uint32_t arraySlice;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001621} VkImageSubresource;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001622
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001623typedef struct VkImageSubresourceRange_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001624{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001625 VkImageAspect aspect;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001626 uint32_t baseMipLevel;
1627 uint32_t mipLevels;
1628 uint32_t baseArraySlice;
1629 uint32_t arraySize;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001630} VkImageSubresourceRange;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001631
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001632typedef struct VkEventWaitInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001633{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001634 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_EVENT_WAIT_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001635 const void* pNext; // Pointer to next structure.
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001636
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001637 uint32_t eventCount; // Number of events to wait on
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001638 const VkEvent* pEvents; // Array of event objects to wait on
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001639
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001640 VkWaitEvent waitEvent; // Pipeline event where the wait should happen
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001641
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001642 uint32_t memBarrierCount; // Number of memory barriers
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001643 const void** ppMemBarriers; // Array of pointers to memory barriers (any of them can be either VkMemoryBarrier, VkBufferMemoryBarrier, or VkImageMemoryBarrier)
1644} VkEventWaitInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001645
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001646typedef struct VkPipelineBarrier_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001647{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001648 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_PIPELINE_BARRIER
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001649 const void* pNext; // Pointer to next structure.
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001650
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001651 uint32_t eventCount; // Number of events to wait on
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001652 const VkPipeEvent* pEvents; // Array of pipeline events to wait on
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001653
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001654 VkWaitEvent waitEvent; // Pipeline event where the wait should happen
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001655
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001656 uint32_t memBarrierCount; // Number of memory barriers
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001657 const void** ppMemBarriers; // Array of pointers to memory barriers (any of them can be either VkMemoryBarrier, VkBufferMemoryBarrier, or VkImageMemoryBarrier)
1658} VkPipelineBarrier;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001659
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001660typedef struct VkMemoryBarrier_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001661{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001662 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_MEMORY_BARRIER
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001663 const void* pNext; // Pointer to next structure.
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001664
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001665 VkFlags outputMask; // Outputs the barrier should sync (see VkMemoryOutputFlags)
1666 VkFlags inputMask; // Inputs the barrier should sync to (see VkMemoryInputFlags)
1667} VkMemoryBarrier;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001668
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001669typedef struct VkBufferMemoryBarrier_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001670{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001671 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001672 const void* pNext; // Pointer to next structure.
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001673
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001674 VkFlags outputMask; // Outputs the barrier should sync (see VkMemoryOutputFlags)
1675 VkFlags inputMask; // Inputs the barrier should sync to (see VkMemoryInputFlags)
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001676
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001677 VkBuffer buffer; // Buffer to sync
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001678
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001679 VkGpuSize offset; // Offset within the buffer to sync
1680 VkGpuSize size; // Amount of bytes to sync
1681} VkBufferMemoryBarrier;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001682
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001683typedef struct VkImageMemoryBarrier_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001684{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001685 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001686 const void* pNext; // Pointer to next structure.
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001687
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001688 VkFlags outputMask; // Outputs the barrier should sync (see VkMemoryOutputFlags)
1689 VkFlags inputMask; // Inputs the barrier should sync to (see VkMemoryInputFlags)
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001690
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001691 VkImageLayout oldLayout; // Current layout of the image
1692 VkImageLayout newLayout; // New layout to transition the image to
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001693
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001694 VkImage image; // Image to sync
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001695
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001696 VkImageSubresourceRange subresourceRange; // Subresource range to sync
1697} VkImageMemoryBarrier;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001698
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001699typedef struct VkImageCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001700{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001701 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001702 const void* pNext; // Pointer to next structure.
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001703 VkImageType imageType;
1704 VkFormat format;
1705 VkExtent3D extent;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001706 uint32_t mipLevels;
1707 uint32_t arraySize;
1708 uint32_t samples;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001709 VkImageTiling tiling;
1710 VkFlags usage; // VkImageUsageFlags
1711 VkFlags flags; // VkImageCreateFlags
1712} VkImageCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001713
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001714typedef struct VkPeerImageOpenInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001715{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001716 VkImage originalImage;
1717} VkPeerImageOpenInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001718
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001719typedef struct VkSubresourceLayout_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001720{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001721 VkGpuSize offset; // Specified in bytes
1722 VkGpuSize size; // Specified in bytes
1723 VkGpuSize rowPitch; // Specified in bytes
1724 VkGpuSize depthPitch; // Specified in bytes
1725} VkSubresourceLayout;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001726
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001727typedef struct VkImageViewCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001728{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001729 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001730 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001731 VkImage image;
1732 VkImageViewType viewType;
1733 VkFormat format;
1734 VkChannelMapping channels;
1735 VkImageSubresourceRange subresourceRange;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001736 float minLod;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001737} VkImageViewCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001738
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001739typedef struct VkColorAttachmentViewCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001740{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001741 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_COLOR_ATTACHMENT_VIEW_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001742 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001743 VkImage image;
1744 VkFormat format;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001745 uint32_t mipLevel;
1746 uint32_t baseArraySlice;
1747 uint32_t arraySize;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001748 VkImage msaaResolveImage;
1749 VkImageSubresourceRange msaaResolveSubResource;
1750} VkColorAttachmentViewCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001751
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001752typedef struct VkDepthStencilViewCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001753{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001754 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_DEPTH_STENCIL_VIEW_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001755 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001756 VkImage image;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001757 uint32_t mipLevel;
1758 uint32_t baseArraySlice;
1759 uint32_t arraySize;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001760 VkImage msaaResolveImage;
1761 VkImageSubresourceRange msaaResolveSubResource;
1762 VkFlags flags; // VkDepthStencilViewCreateFlags
1763} VkDepthStencilViewCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001764
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001765typedef struct VkColorAttachmentBindInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001766{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001767 VkColorAttachmentView view;
1768 VkImageLayout layout;
1769} VkColorAttachmentBindInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001770
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001771typedef struct VkDepthStencilBindInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001772{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001773 VkDepthStencilView view;
1774 VkImageLayout layout;
1775} VkDepthStencilBindInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001776
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001777typedef struct VkBufferCopy_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001778{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001779 VkGpuSize srcOffset; // Specified in bytes
1780 VkGpuSize destOffset; // Specified in bytes
1781 VkGpuSize copySize; // Specified in bytes
1782} VkBufferCopy;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001783
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001784typedef struct VkImageMemoryBindInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001785{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001786 VkImageSubresource subresource;
1787 VkOffset3D offset;
1788 VkExtent3D extent;
1789} VkImageMemoryBindInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001790
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001791typedef struct VkImageCopy_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001792{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001793 VkImageSubresource srcSubresource;
Mark Lobodzinski9cbbfe32015-04-09 18:31:21 -05001794 VkOffset3D srcOffset; // Specified in pixels for both compressed and uncompressed images
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001795 VkImageSubresource destSubresource;
Mark Lobodzinski9cbbfe32015-04-09 18:31:21 -05001796 VkOffset3D destOffset; // Specified in pixels for both compressed and uncompressed images
1797 VkExtent3D extent; // Specified in pixels for both compressed and uncompressed images
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001798} VkImageCopy;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001799
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001800typedef struct VkImageBlit_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001801{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001802 VkImageSubresource srcSubresource;
Mark Lobodzinski9cbbfe32015-04-09 18:31:21 -05001803 VkOffset3D srcOffset; // Specified in pixels for both compressed and uncompressed images
1804 VkExtent3D srcExtent; // Specified in pixels for both compressed and uncompressed images
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001805 VkImageSubresource destSubresource;
Mark Lobodzinski9cbbfe32015-04-09 18:31:21 -05001806 VkOffset3D destOffset; // Specified in pixels for both compressed and uncompressed images
1807 VkExtent3D destExtent; // Specified in pixels for both compressed and uncompressed images
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001808} VkImageBlit;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001809
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001810typedef struct VkBufferImageCopy_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001811{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001812 VkGpuSize bufferOffset; // Specified in bytes
1813 VkImageSubresource imageSubresource;
Mark Lobodzinski9cbbfe32015-04-09 18:31:21 -05001814 VkOffset3D imageOffset; // Specified in pixels for both compressed and uncompressed images
1815 VkExtent3D imageExtent; // Specified in pixels for both compressed and uncompressed images
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001816} VkBufferImageCopy;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001817
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001818typedef struct VkImageResolve_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001819{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001820 VkImageSubresource srcSubresource;
1821 VkOffset2D srcOffset;
1822 VkImageSubresource destSubresource;
1823 VkOffset2D destOffset;
1824 VkExtent2D extent;
1825} VkImageResolve;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001826
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001827typedef struct VkShaderCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001828{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001829 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_SHADER_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001830 const void* pNext; // Pointer to next structure
1831 size_t codeSize; // Specified in bytes
1832 const void* pCode;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001833 VkFlags flags; // Reserved
1834} VkShaderCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001835
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001836typedef struct VkDescriptorSetLayoutBinding_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001837{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001838 VkDescriptorType descriptorType;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001839 uint32_t count;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001840 VkFlags stageFlags; // VkShaderStageFlags
1841 const VkSampler* pImmutableSamplers;
1842} VkDescriptorSetLayoutBinding;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001843
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001844typedef struct VkDescriptorSetLayoutCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001845{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001846 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001847 const void* pNext; // Pointer to next structure
1848 uint32_t count; // Number of bindings in the descriptor set layout
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001849 const VkDescriptorSetLayoutBinding* pBinding; // Array of descriptor set layout bindings
1850} VkDescriptorSetLayoutCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001851
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001852typedef struct VkDescriptorTypeCount_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001853{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001854 VkDescriptorType type;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001855 uint32_t count;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001856} VkDescriptorTypeCount;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001857
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001858typedef struct VkDescriptorPoolCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001859{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001860 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001861 const void* pNext; // Pointer to next structure
1862 uint32_t count;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001863 const VkDescriptorTypeCount* pTypeCount;
1864} VkDescriptorPoolCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001865
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001866typedef struct VkLinkConstBuffer_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001867{
1868 uint32_t bufferId;
1869 size_t bufferSize;
1870 const void* pBufferData;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001871} VkLinkConstBuffer;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001872
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001873typedef struct VkSpecializationMapEntry_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001874{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001875 uint32_t constantId; // The SpecConstant ID specified in the BIL
1876 uint32_t offset; // Offset of the value in the data block
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001877} VkSpecializationMapEntry;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001878
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001879typedef struct VkSpecializationInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001880{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001881 uint32_t mapEntryCount;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001882 const VkSpecializationMapEntry* pMap; // mapEntryCount entries
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001883 const void* pData;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001884} VkSpecializationInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001885
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001886typedef struct VkPipelineShader_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001887{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001888 VkPipelineShaderStage stage;
1889 VkShader shader;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001890 uint32_t linkConstBufferCount;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001891 const VkLinkConstBuffer* pLinkConstBufferInfo;
1892 const VkSpecializationInfo* pSpecializationInfo;
1893} VkPipelineShader;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001894
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001895typedef struct VkComputePipelineCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001896{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001897 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001898 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001899 VkPipelineShader cs;
1900 VkFlags flags; // VkPipelineCreateFlags
1901 VkDescriptorSetLayoutChain setLayoutChain;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001902 uint32_t localSizeX;
1903 uint32_t localSizeY;
1904 uint32_t localSizeZ;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001905
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001906} VkComputePipelineCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001907
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001908typedef struct VkVertexInputBindingDescription_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001909{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001910 uint32_t binding; // Vertex buffer binding id
1911 uint32_t strideInBytes; // Distance between vertices in bytes (0 = no advancement)
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001912
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001913 VkVertexInputStepRate stepRate; // Rate at which binding is incremented
1914} VkVertexInputBindingDescription;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001915
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001916typedef struct VkVertexInputAttributeDescription_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001917{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001918 uint32_t location; // location of the shader vertex attrib
1919 uint32_t binding; // Vertex buffer binding id
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001920
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001921 VkFormat format; // format of source data
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001922
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001923 uint32_t offsetInBytes; // Offset of first element in bytes from base of vertex
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001924} VkVertexInputAttributeDescription;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001925
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001926typedef struct VkPipelineVertexInputCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001927{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001928 VkStructureType sType; // Should be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001929 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001930
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001931 uint32_t bindingCount; // number of bindings
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001932 const VkVertexInputBindingDescription* pVertexBindingDescriptions;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001933
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001934 uint32_t attributeCount; // number of attributes
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001935 const VkVertexInputAttributeDescription* pVertexAttributeDescriptions;
1936} VkPipelineVertexInputCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001937
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001938typedef struct VkPipelineIaStateCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001939{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001940 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_PIPELINE_IA_STATE_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001941 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001942 VkPrimitiveTopology topology;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001943 bool32_t disableVertexReuse; // optional
1944 bool32_t primitiveRestartEnable;
1945 uint32_t primitiveRestartIndex; // optional (GL45)
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001946} VkPipelineIaStateCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001947
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001948typedef struct VkPipelineTessStateCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001949{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001950 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_PIPELINE_TESS_STATE_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001951 const void* pNext; // Pointer to next structure
1952 uint32_t patchControlPoints;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001953} VkPipelineTessStateCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001954
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001955typedef struct VkPipelineVpStateCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001956{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001957 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_PIPELINE_VP_STATE_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001958 const void* pNext; // Pointer to next structure
1959 uint32_t numViewports;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001960 VkCoordinateOrigin clipOrigin; // optional (GL45)
1961 VkDepthMode depthMode; // optional (GL45)
1962} VkPipelineVpStateCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001963
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001964typedef struct VkPipelineRsStateCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001965{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001966 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_PIPELINE_RS_STATE_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001967 const void* pNext; // Pointer to next structure
1968 bool32_t depthClipEnable;
1969 bool32_t rasterizerDiscardEnable;
1970 bool32_t programPointSize; // optional (GL45)
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001971 VkCoordinateOrigin pointOrigin; // optional (GL45)
1972 VkProvokingVertexConvention provokingVertex; // optional (GL45)
1973 VkFillMode fillMode; // optional (GL45)
1974 VkCullMode cullMode;
1975 VkFaceOrientation frontFace;
1976} VkPipelineRsStateCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001977
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001978typedef struct VkPipelineMsStateCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001979{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001980 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_PIPELINE_MS_STATE_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001981 const void* pNext; // Pointer to next structure
1982 uint32_t samples;
1983 bool32_t multisampleEnable; // optional (GL45)
1984 bool32_t sampleShadingEnable; // optional (GL45)
1985 float minSampleShading; // optional (GL45)
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001986 VkSampleMask sampleMask;
1987} VkPipelineMsStateCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001988
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001989typedef struct VkPipelineCbAttachmentState_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06001990{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001991 bool32_t blendEnable;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06001992 VkFormat format;
1993 VkBlend srcBlendColor;
1994 VkBlend destBlendColor;
1995 VkBlendFunc blendFuncColor;
1996 VkBlend srcBlendAlpha;
1997 VkBlend destBlendAlpha;
1998 VkBlendFunc blendFuncAlpha;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06001999 uint8_t channelWriteMask;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002000} VkPipelineCbAttachmentState;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002001
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002002typedef struct VkPipelineCbStateCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002003{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002004 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_PIPELINE_CB_STATE_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002005 const void* pNext; // Pointer to next structure
2006 bool32_t alphaToCoverageEnable;
2007 bool32_t logicOpEnable;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002008 VkLogicOp logicOp;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002009 uint32_t attachmentCount; // # of pAttachments
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002010 const VkPipelineCbAttachmentState* pAttachments;
2011} VkPipelineCbStateCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002012
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002013typedef struct VkStencilOpState_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002014{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002015 VkStencilOp stencilFailOp;
2016 VkStencilOp stencilPassOp;
2017 VkStencilOp stencilDepthFailOp;
2018 VkCompareFunc stencilFunc;
2019} VkStencilOpState;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002020
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002021typedef struct VkPipelineDsStateCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002022{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002023 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_PIPELINE_DS_STATE_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002024 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002025 VkFormat format;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002026 bool32_t depthTestEnable;
2027 bool32_t depthWriteEnable;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002028 VkCompareFunc depthFunc;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002029 bool32_t depthBoundsEnable; // optional (depth_bounds_test)
2030 bool32_t stencilTestEnable;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002031 VkStencilOpState front;
2032 VkStencilOpState back;
2033} VkPipelineDsStateCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002034
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002035typedef struct VkPipelineShaderStageCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002036{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002037 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002038 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002039 VkPipelineShader shader;
2040} VkPipelineShaderStageCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002041
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002042typedef struct VkGraphicsPipelineCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002043{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002044 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002045 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002046 VkFlags flags; // VkPipelineCreateFlags
2047 VkDescriptorSetLayoutChain pSetLayoutChain;
2048} VkGraphicsPipelineCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002049
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002050typedef struct VkSamplerCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002051{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002052 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002053 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002054 VkTexFilter magFilter; // Filter mode for magnification
2055 VkTexFilter minFilter; // Filter mode for minifiation
2056 VkTexMipmapMode mipMode; // Mipmap selection mode
2057 VkTexAddress addressU;
2058 VkTexAddress addressV;
2059 VkTexAddress addressW;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002060 float mipLodBias;
2061 uint32_t maxAnisotropy;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002062 VkCompareFunc compareFunc;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002063 float minLod;
2064 float maxLod;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002065 VkBorderColorType borderColorType;
2066} VkSamplerCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002067
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002068typedef struct VkDynamicVpStateCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002069{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002070 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_DYNAMIC_VP_STATE_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002071 const void* pNext; // Pointer to next structure
2072 uint32_t viewportAndScissorCount; // number of entries in pViewports and pScissors
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002073 const VkViewport* pViewports;
2074 const VkRect* pScissors;
2075} VkDynamicVpStateCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002076
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002077typedef struct VkDynamicRsStateCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002078{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002079 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_DYNAMIC_RS_STATE_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002080 const void* pNext; // Pointer to next structure
2081 float depthBias;
2082 float depthBiasClamp;
2083 float slopeScaledDepthBias;
2084 float pointSize; // optional (GL45) - Size of points
2085 float pointFadeThreshold; // optional (GL45) - Size of point fade threshold
2086 float lineWidth; // optional (GL45) - Width of lines
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002087} VkDynamicRsStateCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002088
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002089typedef struct VkDynamicCbStateCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002090{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002091 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_DYNAMIC_CB_STATE_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002092 const void* pNext; // Pointer to next structure
2093 float blendConst[4];
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002094} VkDynamicCbStateCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002095
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002096typedef struct VkDynamicDsStateCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002097{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002098 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_DYNAMIC_DS_STATE_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002099 const void* pNext; // Pointer to next structure
2100 float minDepth; // optional (depth_bounds_test)
2101 float maxDepth; // optional (depth_bounds_test)
2102 uint32_t stencilReadMask;
2103 uint32_t stencilWriteMask;
2104 uint32_t stencilFrontRef;
2105 uint32_t stencilBackRef;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002106} VkDynamicDsStateCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002107
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002108typedef struct VkCmdBufferCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002109{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002110 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_CMD_BUFFER_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002111 const void* pNext; // Pointer to next structure
2112 uint32_t queueNodeIndex;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002113 VkFlags flags;
2114} VkCmdBufferCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002115
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002116typedef struct VkCmdBufferBeginInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002117{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002118 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_CMD_BUFFER_BEGIN_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002119 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002120
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002121 VkFlags flags; // VkCmdBufferBuildFlags
2122} VkCmdBufferBeginInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002123
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002124typedef struct VkRenderPassBegin_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002125{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002126 VkRenderPass renderPass;
2127 VkFramebuffer framebuffer;
2128} VkRenderPassBegin;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002129
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002130typedef struct VkCmdBufferGraphicsBeginInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002131{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002132 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_CMD_BUFFER_GRAPHICS_BEGIN_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002133 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002134
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002135 VkRenderPassBegin renderPassContinue; // Only needed when a render pass is split across two command buffers
2136} VkCmdBufferGraphicsBeginInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002137
2138// Union allowing specification of floating point or raw color data. Actual value selected is based on image being cleared.
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002139typedef union VkClearColorValue_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002140{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002141 float floatColor[4];
2142 uint32_t rawColor[4];
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002143} VkClearColorValue;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002144
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002145typedef struct VkClearColor_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002146{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002147 VkClearColorValue color;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002148 bool32_t useRawValue;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002149} VkClearColor;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002150
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002151typedef struct VkRenderPassCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002152{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002153 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002154 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002155
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002156 VkRect renderArea;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002157 uint32_t colorAttachmentCount;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002158 VkExtent2D extent;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002159 uint32_t sampleCount;
2160 uint32_t layers;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002161 const VkFormat* pColorFormats;
2162 const VkImageLayout* pColorLayouts;
2163 const VkAttachmentLoadOp* pColorLoadOps;
2164 const VkAttachmentStoreOp* pColorStoreOps;
2165 const VkClearColor* pColorLoadClearValues;
2166 VkFormat depthStencilFormat;
2167 VkImageLayout depthStencilLayout;
2168 VkAttachmentLoadOp depthLoadOp;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002169 float depthLoadClearValue;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002170 VkAttachmentStoreOp depthStoreOp;
2171 VkAttachmentLoadOp stencilLoadOp;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002172 uint32_t stencilLoadClearValue;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002173 VkAttachmentStoreOp stencilStoreOp;
2174} VkRenderPassCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002175
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002176typedef struct VkEventCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002177{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002178 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_EVENT_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002179 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002180 VkFlags flags; // Reserved
2181} VkEventCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002182
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002183typedef struct VkFenceCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002184{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002185 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_FENCE_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002186 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002187 VkFenceCreateFlags flags; // VkFenceCreateFlags
2188} VkFenceCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002189
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002190typedef struct VkSemaphoreCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002191{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002192 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002193 const void* pNext; // Pointer to next structure
2194 uint32_t initialCount;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002195 VkFlags flags; // VkSemaphoreCreateFlags
2196} VkSemaphoreCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002197
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002198typedef struct VkSemaphoreOpenInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002199{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002200 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_SEMAPHORE_OPEN_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002201 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002202 VkSemaphore sharedSemaphore;
2203} VkSemaphoreOpenInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002204
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002205typedef struct VkPipelineStatisticsData_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002206{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002207 uint64_t fsInvocations; // Fragment shader invocations
2208 uint64_t cPrimitives; // Clipper primitives
2209 uint64_t cInvocations; // Clipper invocations
2210 uint64_t vsInvocations; // Vertex shader invocations
2211 uint64_t gsInvocations; // Geometry shader invocations
2212 uint64_t gsPrimitives; // Geometry shader primitives
2213 uint64_t iaPrimitives; // Input primitives
2214 uint64_t iaVertices; // Input vertices
2215 uint64_t tcsInvocations; // Tessellation control shader invocations
2216 uint64_t tesInvocations; // Tessellation evaluation shader invocations
2217 uint64_t csInvocations; // Compute shader invocations
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002218} VkPipelineStatisticsData;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002219
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002220typedef struct VkQueryPoolCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002221{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002222 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002223 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002224 VkQueryType queryType;
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002225 uint32_t slots;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002226} VkQueryPoolCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002227
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002228typedef struct VkFramebufferCreateInfo_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002229{
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002230 VkStructureType sType; // Must be VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002231 const void* pNext; // Pointer to next structure
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002232
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002233 uint32_t colorAttachmentCount;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002234 const VkColorAttachmentBindInfo* pColorAttachments;
2235 const VkDepthStencilBindInfo* pDepthStencilAttachment;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002236
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002237 uint32_t sampleCount;
2238 uint32_t width;
2239 uint32_t height;
2240 uint32_t layers;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002241} VkFramebufferCreateInfo;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002242
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002243typedef struct VkDrawIndirectCmd_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002244{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002245 uint32_t vertexCount;
2246 uint32_t instanceCount;
2247 uint32_t firstVertex;
2248 uint32_t firstInstance;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002249} VkDrawIndirectCmd;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002250
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002251typedef struct VkDrawIndexedIndirectCmd_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002252{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002253 uint32_t indexCount;
2254 uint32_t instanceCount;
2255 uint32_t firstIndex;
2256 int32_t vertexOffset;
2257 uint32_t firstInstance;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002258} VkDrawIndexedIndirectCmd;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002259
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002260typedef struct VkDispatchIndirectCmd_
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002261{
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002262 uint32_t x;
2263 uint32_t y;
2264 uint32_t z;
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002265} VkDispatchIndirectCmd;
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002266
2267// ------------------------------------------------------------------------------------------------
2268// API functions
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002269typedef VkResult (VKAPI *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance);
2270typedef VkResult (VKAPI *PFN_vkDestroyInstance)(VkInstance instance);
2271typedef VkResult (VKAPI *PFN_vkEnumerateGpus)(VkInstance instance, uint32_t maxGpus, uint32_t* pGpuCount, VkPhysicalGpu* pGpus);
2272typedef VkResult (VKAPI *PFN_vkGetGpuInfo)(VkPhysicalGpu gpu, VkPhysicalGpuInfoType infoType, size_t* pDataSize, void* pData);
2273typedef void * (VKAPI *PFN_vkGetProcAddr)(VkPhysicalGpu gpu, const char * pName);
2274typedef VkResult (VKAPI *PFN_vkCreateDevice)(VkPhysicalGpu gpu, const VkDeviceCreateInfo* pCreateInfo, VkDevice* pDevice);
2275typedef VkResult (VKAPI *PFN_vkDestroyDevice)(VkDevice device);
2276typedef VkResult (VKAPI *PFN_vkGetExtensionSupport)(VkPhysicalGpu gpu, const char* pExtName);
2277typedef VkResult (VKAPI *PFN_vkEnumerateLayers)(VkPhysicalGpu gpu, size_t maxLayerCount, size_t maxStringSize, size_t* pOutLayerCount, char* const* pOutLayers, void* pReserved);
2278typedef VkResult (VKAPI *PFN_vkGetDeviceQueue)(VkDevice device, uint32_t queueNodeIndex, uint32_t queueIndex, VkQueue* pQueue);
2279typedef VkResult (VKAPI *PFN_vkQueueSubmit)(VkQueue queue, uint32_t cmdBufferCount, const VkCmdBuffer* pCmdBuffers, VkFence fence);
2280typedef VkResult (VKAPI *PFN_vkQueueAddMemReference)(VkQueue queue, VkGpuMemory mem);
2281typedef VkResult (VKAPI *PFN_vkQueueRemoveMemReference)(VkQueue queue, VkGpuMemory mem);
2282typedef VkResult (VKAPI *PFN_vkQueueWaitIdle)(VkQueue queue);
2283typedef VkResult (VKAPI *PFN_vkDeviceWaitIdle)(VkDevice device);
2284typedef VkResult (VKAPI *PFN_vkAllocMemory)(VkDevice device, const VkMemoryAllocInfo* pAllocInfo, VkGpuMemory* pMem);
2285typedef VkResult (VKAPI *PFN_vkFreeMemory)(VkGpuMemory mem);
2286typedef VkResult (VKAPI *PFN_vkSetMemoryPriority)(VkGpuMemory mem, VkMemoryPriority priority);
2287typedef VkResult (VKAPI *PFN_vkMapMemory)(VkGpuMemory mem, VkFlags flags, void** ppData);
2288typedef VkResult (VKAPI *PFN_vkUnmapMemory)(VkGpuMemory mem);
2289typedef VkResult (VKAPI *PFN_vkPinSystemMemory)(VkDevice device, const void* pSysMem, size_t memSize, VkGpuMemory* pMem);
2290typedef VkResult (VKAPI *PFN_vkGetMultiGpuCompatibility)(VkPhysicalGpu gpu0, VkPhysicalGpu gpu1, VkGpuCompatibilityInfo* pInfo);
2291typedef VkResult (VKAPI *PFN_vkOpenSharedMemory)(VkDevice device, const VkMemoryOpenInfo* pOpenInfo, VkGpuMemory* pMem);
2292typedef VkResult (VKAPI *PFN_vkOpenSharedSemaphore)(VkDevice device, const VkSemaphoreOpenInfo* pOpenInfo, VkSemaphore* pSemaphore);
2293typedef VkResult (VKAPI *PFN_vkOpenPeerMemory)(VkDevice device, const VkPeerMemoryOpenInfo* pOpenInfo, VkGpuMemory* pMem);
2294typedef VkResult (VKAPI *PFN_vkOpenPeerImage)(VkDevice device, const VkPeerImageOpenInfo* pOpenInfo, VkImage* pImage, VkGpuMemory* pMem);
2295typedef VkResult (VKAPI *PFN_vkDestroyObject)(VkObject object);
2296typedef VkResult (VKAPI *PFN_vkGetObjectInfo)(VkBaseObject object, VkObjectInfoType infoType, size_t* pDataSize, void* pData);
2297typedef VkResult (VKAPI *PFN_vkBindObjectMemory)(VkObject object, uint32_t allocationIdx, VkGpuMemory mem, VkGpuSize offset);
2298typedef VkResult (VKAPI *PFN_vkBindObjectMemoryRange)(VkObject object, uint32_t allocationIdx, VkGpuSize rangeOffset,VkGpuSize rangeSize, VkGpuMemory mem, VkGpuSize memOffset);
2299typedef VkResult (VKAPI *PFN_vkBindImageMemoryRange)(VkImage image, uint32_t allocationIdx, const VkImageMemoryBindInfo* bindInfo, VkGpuMemory mem, VkGpuSize memOffset);
2300typedef VkResult (VKAPI *PFN_vkCreateFence)(VkDevice device, const VkFenceCreateInfo* pCreateInfo, VkFence* pFence);
2301typedef VkResult (VKAPI *PFN_vkResetFences)(VkDevice device, uint32_t fenceCount, VkFence* pFences);
2302typedef VkResult (VKAPI *PFN_vkGetFenceStatus)(VkFence fence);
2303typedef VkResult (VKAPI *PFN_vkWaitForFences)(VkDevice device, uint32_t fenceCount, const VkFence* pFences, bool32_t waitAll, uint64_t timeout);
2304typedef VkResult (VKAPI *PFN_vkCreateSemaphore)(VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, VkSemaphore* pSemaphore);
2305typedef VkResult (VKAPI *PFN_vkQueueSignalSemaphore)(VkQueue queue, VkSemaphore semaphore);
2306typedef VkResult (VKAPI *PFN_vkQueueWaitSemaphore)(VkQueue queue, VkSemaphore semaphore);
2307typedef VkResult (VKAPI *PFN_vkCreateEvent)(VkDevice device, const VkEventCreateInfo* pCreateInfo, VkEvent* pEvent);
2308typedef VkResult (VKAPI *PFN_vkGetEventStatus)(VkEvent event);
2309typedef VkResult (VKAPI *PFN_vkSetEvent)(VkEvent event);
2310typedef VkResult (VKAPI *PFN_vkResetEvent)(VkEvent event);
2311typedef VkResult (VKAPI *PFN_vkCreateQueryPool)(VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, VkQueryPool* pQueryPool);
2312typedef VkResult (VKAPI *PFN_vkGetQueryPoolResults)(VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount, size_t* pDataSize, void* pData);
2313typedef VkResult (VKAPI *PFN_vkGetFormatInfo)(VkDevice device, VkFormat format, VkFormatInfoType infoType, size_t* pDataSize, void* pData);
2314typedef VkResult (VKAPI *PFN_vkCreateBuffer)(VkDevice device, const VkBufferCreateInfo* pCreateInfo, VkBuffer* pBuffer);
2315typedef VkResult (VKAPI *PFN_vkCreateBufferView)(VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, VkBufferView* pView);
2316typedef VkResult (VKAPI *PFN_vkCreateImage)(VkDevice device, const VkImageCreateInfo* pCreateInfo, VkImage* pImage);
2317typedef VkResult (VKAPI *PFN_vkGetImageSubresourceInfo)(VkImage image, const VkImageSubresource* pSubresource, VkSubresourceInfoType infoType, size_t* pDataSize, void* pData);
2318typedef VkResult (VKAPI *PFN_vkCreateImageView)(VkDevice device, const VkImageViewCreateInfo* pCreateInfo, VkImageView* pView);
2319typedef VkResult (VKAPI *PFN_vkCreateColorAttachmentView)(VkDevice device, const VkColorAttachmentViewCreateInfo* pCreateInfo, VkColorAttachmentView* pView);
2320typedef VkResult (VKAPI *PFN_vkCreateDepthStencilView)(VkDevice device, const VkDepthStencilViewCreateInfo* pCreateInfo, VkDepthStencilView* pView);
2321typedef VkResult (VKAPI *PFN_vkCreateShader)(VkDevice device, const VkShaderCreateInfo* pCreateInfo, VkShader* pShader);
2322typedef VkResult (VKAPI *PFN_vkCreateGraphicsPipeline)(VkDevice device, const VkGraphicsPipelineCreateInfo* pCreateInfo, VkPipeline* pPipeline);
2323typedef VkResult (VKAPI *PFN_vkCreateGraphicsPipelineDerivative)(VkDevice device, const VkGraphicsPipelineCreateInfo* pCreateInfo, VkPipeline basePipeline, VkPipeline* pPipeline);
2324typedef VkResult (VKAPI *PFN_vkCreateComputePipeline)(VkDevice device, const VkComputePipelineCreateInfo* pCreateInfo, VkPipeline* pPipeline);
2325typedef VkResult (VKAPI *PFN_vkStorePipeline)(VkPipeline pipeline, size_t* pDataSize, void* pData);
2326typedef VkResult (VKAPI *PFN_vkLoadPipeline)(VkDevice device, size_t dataSize, const void* pData, VkPipeline* pPipeline);
2327typedef VkResult (VKAPI *PFN_vkLoadPipelineDerivative)(VkDevice device, size_t dataSize, const void* pData, VkPipeline basePipeline, VkPipeline* pPipeline);
2328typedef VkResult (VKAPI *PFN_vkCreateSampler)(VkDevice device, const VkSamplerCreateInfo* pCreateInfo, VkSampler* pSampler);
2329typedef VkResult (VKAPI *PFN_vkCreateDescriptorSetLayout)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayout* pSetLayout);
2330typedef VkResult (VKAPI *PFN_vkCreateDescriptorSetLayoutChain)(VkDevice device, uint32_t setLayoutArrayCount, const VkDescriptorSetLayout* pSetLayoutArray, VkDescriptorSetLayoutChain* pLayoutChain);
2331typedef VkResult (VKAPI *PFN_vkBeginDescriptorPoolUpdate)(VkDevice device, VkDescriptorUpdateMode updateMode);
2332typedef VkResult (VKAPI *PFN_vkEndDescriptorPoolUpdate)(VkDevice device, VkCmdBuffer cmd);
2333typedef VkResult (VKAPI *PFN_vkCreateDescriptorPool)(VkDevice device, VkDescriptorPoolUsage poolUsage, uint32_t maxSets, const VkDescriptorPoolCreateInfo* pCreateInfo, VkDescriptorPool* pDescriptorPool);
2334typedef VkResult (VKAPI *PFN_vkResetDescriptorPool)(VkDescriptorPool descriptorPool);
2335typedef VkResult (VKAPI *PFN_vkAllocDescriptorSets)(VkDescriptorPool descriptorPool, VkDescriptorSetUsage setUsage, uint32_t count, const VkDescriptorSetLayout* pSetLayouts, VkDescriptorSet* pDescriptorSets, uint32_t* pCount);
2336typedef void (VKAPI *PFN_vkClearDescriptorSets)(VkDescriptorPool descriptorPool, uint32_t count, const VkDescriptorSet* pDescriptorSets);
2337typedef void (VKAPI *PFN_vkUpdateDescriptors)(VkDescriptorSet descriptorSet, uint32_t updateCount, const void** pUpdateArray);
2338typedef VkResult (VKAPI *PFN_vkCreateDynamicViewportState)(VkDevice device, const VkDynamicVpStateCreateInfo* pCreateInfo, VkDynamicVpStateObject* pState);
2339typedef VkResult (VKAPI *PFN_vkCreateDynamicRasterState)(VkDevice device, const VkDynamicRsStateCreateInfo* pCreateInfo, VkDynamicRsStateObject* pState);
2340typedef VkResult (VKAPI *PFN_vkCreateDynamicColorBlendState)(VkDevice device, const VkDynamicCbStateCreateInfo* pCreateInfo, VkDynamicCbStateObject* pState);
2341typedef VkResult (VKAPI *PFN_vkCreateDynamicDepthStencilState)(VkDevice device, const VkDynamicDsStateCreateInfo* pCreateInfo, VkDynamicDsStateObject* pState);
2342typedef VkResult (VKAPI *PFN_vkCreateCommandBuffer)(VkDevice device, const VkCmdBufferCreateInfo* pCreateInfo, VkCmdBuffer* pCmdBuffer);
2343typedef VkResult (VKAPI *PFN_vkBeginCommandBuffer)(VkCmdBuffer cmdBuffer, const VkCmdBufferBeginInfo* pBeginInfo);
2344typedef VkResult (VKAPI *PFN_vkEndCommandBuffer)(VkCmdBuffer cmdBuffer);
2345typedef VkResult (VKAPI *PFN_vkResetCommandBuffer)(VkCmdBuffer cmdBuffer);
2346typedef void (VKAPI *PFN_vkCmdBindPipeline)(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline);
2347typedef void (VKAPI *PFN_vkCmdBindDynamicStateObject)(VkCmdBuffer cmdBuffer, VkStateBindPoint stateBindPoint, VkDynamicStateObject state);
2348typedef void (VKAPI *PFN_vkCmdBindDescriptorSets)(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, VkDescriptorSetLayoutChain layoutChain, uint32_t layoutChainSlot, uint32_t count, const VkDescriptorSet* pDescriptorSets, const uint32_t* pUserData);
2349typedef void (VKAPI *PFN_vkCmdBindIndexBuffer)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkGpuSize offset, VkIndexType indexType);
2350typedef void (VKAPI *PFN_vkCmdBindVertexBuffer)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkGpuSize offset, uint32_t binding);
2351typedef void (VKAPI *PFN_vkCmdDraw)(VkCmdBuffer cmdBuffer, uint32_t firstVertex, uint32_t vertexCount, uint32_t firstInstance, uint32_t instanceCount);
2352typedef void (VKAPI *PFN_vkCmdDrawIndexed)(VkCmdBuffer cmdBuffer, uint32_t firstIndex, uint32_t indexCount, int32_t vertexOffset, uint32_t firstInstance, uint32_t instanceCount);
2353typedef void (VKAPI *PFN_vkCmdDrawIndirect)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkGpuSize offset, uint32_t count, uint32_t stride);
2354typedef void (VKAPI *PFN_vkCmdDrawIndexedIndirect)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkGpuSize offset, uint32_t count, uint32_t stride);
2355typedef void (VKAPI *PFN_vkCmdDispatch)(VkCmdBuffer cmdBuffer, uint32_t x, uint32_t y, uint32_t z);
2356typedef void (VKAPI *PFN_vkCmdDispatchIndirect)(VkCmdBuffer cmdBuffer, VkBuffer buffer, VkGpuSize offset);
2357typedef void (VKAPI *PFN_vkCmdCopyBuffer)(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkBuffer destBuffer, uint32_t regionCount, const VkBufferCopy* pRegions);
2358typedef void (VKAPI *PFN_vkCmdCopyImage)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageCopy* pRegions);
2359typedef void (VKAPI *PFN_vkCmdBlitImage)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkImageBlit* pRegions);
2360typedef void (VKAPI *PFN_vkCmdCopyBufferToImage)(VkCmdBuffer cmdBuffer, VkBuffer srcBuffer, VkImage destImage, VkImageLayout destImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions);
2361typedef void (VKAPI *PFN_vkCmdCopyImageToBuffer)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer destBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions);
2362typedef void (VKAPI *PFN_vkCmdCloneImageData)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout);
2363typedef void (VKAPI *PFN_vkCmdUpdateBuffer)(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkGpuSize destOffset, VkGpuSize dataSize, const uint32_t* pData);
2364typedef void (VKAPI *PFN_vkCmdFillBuffer)(VkCmdBuffer cmdBuffer, VkBuffer destBuffer, VkGpuSize destOffset, VkGpuSize fillSize, uint32_t data);
2365typedef void (VKAPI *PFN_vkCmdClearColorImage)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, VkClearColor color, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
2366typedef void (VKAPI *PFN_vkCmdClearDepthStencil)(VkCmdBuffer cmdBuffer, VkImage image, VkImageLayout imageLayout, float depth, uint32_t stencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges);
2367typedef void (VKAPI *PFN_vkCmdResolveImage)(VkCmdBuffer cmdBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage destImage, VkImageLayout destImageLayout, uint32_t rectCount, const VkImageResolve* pRects);
2368typedef void (VKAPI *PFN_vkCmdSetEvent)(VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent);
2369typedef void (VKAPI *PFN_vkCmdResetEvent)(VkCmdBuffer cmdBuffer, VkEvent event, VkPipeEvent pipeEvent);
2370typedef void (VKAPI *PFN_vkCmdWaitEvents)(VkCmdBuffer cmdBuffer, const VkEventWaitInfo* pWaitInfo);
2371typedef void (VKAPI *PFN_vkCmdPipelineBarrier)(VkCmdBuffer cmdBuffer, const VkPipelineBarrier* pBarrier);
2372typedef void (VKAPI *PFN_vkCmdBeginQuery)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot, VkFlags flags);
2373typedef void (VKAPI *PFN_vkCmdEndQuery)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t slot);
2374typedef void (VKAPI *PFN_vkCmdResetQueryPool)(VkCmdBuffer cmdBuffer, VkQueryPool queryPool, uint32_t startQuery, uint32_t queryCount);
2375typedef void (VKAPI *PFN_vkCmdWriteTimestamp)(VkCmdBuffer cmdBuffer, VkTimestampType timestampType, VkBuffer destBuffer, VkGpuSize destOffset);
2376typedef void (VKAPI *PFN_vkCmdInitAtomicCounters)(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, uint32_t startCounter, uint32_t counterCount, const uint32_t* pData);
2377typedef void (VKAPI *PFN_vkCmdLoadAtomicCounters)(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, uint32_t startCounter, uint32_t counterCount, VkBuffer srcBuffer, VkGpuSize srcOffset);
2378typedef void (VKAPI *PFN_vkCmdSaveAtomicCounters)(VkCmdBuffer cmdBuffer, VkPipelineBindPoint pipelineBindPoint, uint32_t startCounter, uint32_t counterCount, VkBuffer destBuffer, VkGpuSize destOffset);
2379typedef VkResult (VKAPI *PFN_vkCreateFramebuffer)(VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, VkFramebuffer* pFramebuffer);
2380typedef VkResult (VKAPI *PFN_vkCreateRenderPass)(VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, VkRenderPass* pRenderPass);
2381typedef void (VKAPI *PFN_vkCmdBeginRenderPass)(VkCmdBuffer cmdBuffer, const VkRenderPassBegin* pRenderPassBegin);
2382typedef void (VKAPI *PFN_vkCmdEndRenderPass)(VkCmdBuffer cmdBuffer, VkRenderPass renderPass);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002383
2384#ifdef VK_PROTOTYPES
2385
2386// GPU initialization
2387
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002388VkResult VKAPI vkCreateInstance(
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06002389 const VkInstanceCreateInfo* pCreateInfo,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002390 VkInstance* pInstance);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002391
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002392VkResult VKAPI vkDestroyInstance(
2393 VkInstance instance);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002394
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002395VkResult VKAPI vkEnumerateGpus(
2396 VkInstance instance,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002397 uint32_t maxGpus,
2398 uint32_t* pGpuCount,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002399 VkPhysicalGpu* pGpus);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002400
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002401VkResult VKAPI vkGetGpuInfo(
2402 VkPhysicalGpu gpu,
2403 VkPhysicalGpuInfoType infoType,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002404 size_t* pDataSize,
2405 void* pData);
2406
2407void * VKAPI vkGetProcAddr(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002408 VkPhysicalGpu gpu,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002409 const char* pName);
2410
2411// Device functions
2412
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002413VkResult VKAPI vkCreateDevice(
2414 VkPhysicalGpu gpu,
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06002415 const VkDeviceCreateInfo* pCreateInfo,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002416 VkDevice* pDevice);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002417
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002418VkResult VKAPI vkDestroyDevice(
2419 VkDevice device);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002420
2421// Extension discovery functions
2422
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002423VkResult VKAPI vkGetExtensionSupport(
2424 VkPhysicalGpu gpu,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002425 const char* pExtName);
2426
2427// Layer discovery functions
2428
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002429VkResult VKAPI vkEnumerateLayers(
2430 VkPhysicalGpu gpu,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002431 size_t maxLayerCount,
2432 size_t maxStringSize,
2433 size_t* pOutLayerCount,
2434 char* const* pOutLayers,
2435 void* pReserved);
2436
2437// Queue functions
2438
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002439VkResult VKAPI vkGetDeviceQueue(
2440 VkDevice device,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002441 uint32_t queueNodeIndex,
2442 uint32_t queueIndex,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002443 VkQueue* pQueue);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002444
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002445VkResult VKAPI vkQueueSubmit(
2446 VkQueue queue,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002447 uint32_t cmdBufferCount,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002448 const VkCmdBuffer* pCmdBuffers,
2449 VkFence fence);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002450
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002451VkResult VKAPI vkQueueAddMemReference(
2452 VkQueue queue,
2453 VkGpuMemory mem);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002454
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002455VkResult VKAPI vkQueueRemoveMemReference(
2456 VkQueue queue,
2457 VkGpuMemory mem);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002458
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002459VkResult VKAPI vkQueueWaitIdle(
2460 VkQueue queue);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002461
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002462VkResult VKAPI vkDeviceWaitIdle(
2463 VkDevice device);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002464
2465// Memory functions
2466
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002467VkResult VKAPI vkAllocMemory(
2468 VkDevice device,
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06002469 const VkMemoryAllocInfo* pAllocInfo,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002470 VkGpuMemory* pMem);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002471
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002472VkResult VKAPI vkFreeMemory(
2473 VkGpuMemory mem);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002474
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002475VkResult VKAPI vkSetMemoryPriority(
2476 VkGpuMemory mem,
2477 VkMemoryPriority priority);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002478
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002479VkResult VKAPI vkMapMemory(
2480 VkGpuMemory mem,
2481 VkFlags flags, // Reserved
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002482 void** ppData);
2483
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002484VkResult VKAPI vkUnmapMemory(
2485 VkGpuMemory mem);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002486
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002487VkResult VKAPI vkPinSystemMemory(
2488 VkDevice device,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002489 const void* pSysMem,
2490 size_t memSize,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002491 VkGpuMemory* pMem);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002492
2493// Multi-device functions
2494
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002495VkResult VKAPI vkGetMultiGpuCompatibility(
2496 VkPhysicalGpu gpu0,
2497 VkPhysicalGpu gpu1,
2498 VkGpuCompatibilityInfo* pInfo);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002499
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002500VkResult VKAPI vkOpenSharedMemory(
2501 VkDevice device,
2502 const VkMemoryOpenInfo* pOpenInfo,
2503 VkGpuMemory* pMem);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002504
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002505VkResult VKAPI vkOpenSharedSemaphore(
2506 VkDevice device,
2507 const VkSemaphoreOpenInfo* pOpenInfo,
2508 VkSemaphore* pSemaphore);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002509
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002510VkResult VKAPI vkOpenPeerMemory(
2511 VkDevice device,
2512 const VkPeerMemoryOpenInfo* pOpenInfo,
2513 VkGpuMemory* pMem);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002514
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002515VkResult VKAPI vkOpenPeerImage(
2516 VkDevice device,
2517 const VkPeerImageOpenInfo* pOpenInfo,
2518 VkImage* pImage,
2519 VkGpuMemory* pMem);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002520
2521// Generic API object functions
2522
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002523VkResult VKAPI vkDestroyObject(
2524 VkObject object);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002525
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002526VkResult VKAPI vkGetObjectInfo(
2527 VkBaseObject object,
2528 VkObjectInfoType infoType,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002529 size_t* pDataSize,
2530 void* pData);
2531
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002532VkResult VKAPI vkBindObjectMemory(
2533 VkObject object,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002534 uint32_t allocationIdx,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002535 VkGpuMemory mem,
2536 VkGpuSize memOffset);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002537
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002538VkResult VKAPI vkBindObjectMemoryRange(
2539 VkObject object,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002540 uint32_t allocationIdx,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002541 VkGpuSize rangeOffset,
2542 VkGpuSize rangeSize,
2543 VkGpuMemory mem,
2544 VkGpuSize memOffset);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002545
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002546VkResult VKAPI vkBindImageMemoryRange(
2547 VkImage image,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002548 uint32_t allocationIdx,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002549 const VkImageMemoryBindInfo* bindInfo,
2550 VkGpuMemory mem,
2551 VkGpuSize memOffset);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002552
2553// Fence functions
2554
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002555VkResult VKAPI vkCreateFence(
2556 VkDevice device,
2557 const VkFenceCreateInfo* pCreateInfo,
2558 VkFence* pFence);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002559
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002560VkResult VKAPI vkResetFences(
2561 VkDevice device,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002562 uint32_t fenceCount,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002563 VkFence* pFences);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002564
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002565VkResult VKAPI vkGetFenceStatus(
2566 VkFence fence);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002567
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002568VkResult VKAPI vkWaitForFences(
2569 VkDevice device,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002570 uint32_t fenceCount,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002571 const VkFence* pFences,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002572 bool32_t waitAll,
2573 uint64_t timeout); // timeout in nanoseconds
2574
2575// Queue semaphore functions
2576
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002577VkResult VKAPI vkCreateSemaphore(
2578 VkDevice device,
2579 const VkSemaphoreCreateInfo* pCreateInfo,
2580 VkSemaphore* pSemaphore);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002581
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002582VkResult VKAPI vkQueueSignalSemaphore(
2583 VkQueue queue,
2584 VkSemaphore semaphore);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002585
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002586VkResult VKAPI vkQueueWaitSemaphore(
2587 VkQueue queue,
2588 VkSemaphore semaphore);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002589
2590// Event functions
2591
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002592VkResult VKAPI vkCreateEvent(
2593 VkDevice device,
2594 const VkEventCreateInfo* pCreateInfo,
2595 VkEvent* pEvent);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002596
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002597VkResult VKAPI vkGetEventStatus(
2598 VkEvent event);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002599
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002600VkResult VKAPI vkSetEvent(
2601 VkEvent event);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002602
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002603VkResult VKAPI vkResetEvent(
2604 VkEvent event);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002605
2606// Query functions
2607
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002608VkResult VKAPI vkCreateQueryPool(
2609 VkDevice device,
2610 const VkQueryPoolCreateInfo* pCreateInfo,
2611 VkQueryPool* pQueryPool);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002612
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002613VkResult VKAPI vkGetQueryPoolResults(
2614 VkQueryPool queryPool,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002615 uint32_t startQuery,
2616 uint32_t queryCount,
2617 size_t* pDataSize,
2618 void* pData);
2619
2620// Format capabilities
2621
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002622VkResult VKAPI vkGetFormatInfo(
2623 VkDevice device,
2624 VkFormat format,
2625 VkFormatInfoType infoType,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002626 size_t* pDataSize,
2627 void* pData);
2628
2629// Buffer functions
2630
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002631VkResult VKAPI vkCreateBuffer(
2632 VkDevice device,
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06002633 const VkBufferCreateInfo* pCreateInfo,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002634 VkBuffer* pBuffer);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002635
2636// Buffer view functions
2637
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002638VkResult VKAPI vkCreateBufferView(
2639 VkDevice device,
Courtney Goeltzenleuchterddcb6192015-04-14 18:48:46 -06002640 const VkBufferViewCreateInfo* pCreateInfo,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002641 VkBufferView* pView);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002642
2643// Image functions
2644
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002645VkResult VKAPI vkCreateImage(
2646 VkDevice device,
2647 const VkImageCreateInfo* pCreateInfo,
2648 VkImage* pImage);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002649
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002650VkResult VKAPI vkGetImageSubresourceInfo(
2651 VkImage image,
2652 const VkImageSubresource* pSubresource,
2653 VkSubresourceInfoType infoType,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002654 size_t* pDataSize,
2655 void* pData);
2656
2657// Image view functions
2658
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002659VkResult VKAPI vkCreateImageView(
2660 VkDevice device,
2661 const VkImageViewCreateInfo* pCreateInfo,
2662 VkImageView* pView);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002663
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002664VkResult VKAPI vkCreateColorAttachmentView(
2665 VkDevice device,
2666 const VkColorAttachmentViewCreateInfo* pCreateInfo,
2667 VkColorAttachmentView* pView);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002668
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002669VkResult VKAPI vkCreateDepthStencilView(
2670 VkDevice device,
2671 const VkDepthStencilViewCreateInfo* pCreateInfo,
2672 VkDepthStencilView* pView);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002673
2674// Shader functions
2675
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002676VkResult VKAPI vkCreateShader(
2677 VkDevice device,
2678 const VkShaderCreateInfo* pCreateInfo,
2679 VkShader* pShader);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002680
2681// Pipeline functions
2682
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002683VkResult VKAPI vkCreateGraphicsPipeline(
2684 VkDevice device,
2685 const VkGraphicsPipelineCreateInfo* pCreateInfo,
2686 VkPipeline* pPipeline);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002687
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002688VkResult VKAPI vkCreateGraphicsPipelineDerivative(
2689 VkDevice device,
2690 const VkGraphicsPipelineCreateInfo* pCreateInfo,
2691 VkPipeline basePipeline,
2692 VkPipeline* pPipeline);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002693
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002694VkResult VKAPI vkCreateComputePipeline(
2695 VkDevice device,
2696 const VkComputePipelineCreateInfo* pCreateInfo,
2697 VkPipeline* pPipeline);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002698
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002699VkResult VKAPI vkStorePipeline(
2700 VkPipeline pipeline,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002701 size_t* pDataSize,
2702 void* pData);
2703
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002704VkResult VKAPI vkLoadPipeline(
2705 VkDevice device,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002706 size_t dataSize,
2707 const void* pData,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002708 VkPipeline* pPipeline);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002709
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002710VkResult VKAPI vkLoadPipelineDerivative(
2711 VkDevice device,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002712 size_t dataSize,
2713 const void* pData,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002714 VkPipeline basePipeline,
2715 VkPipeline* pPipeline);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002716
2717// Sampler functions
2718
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002719VkResult VKAPI vkCreateSampler(
2720 VkDevice device,
2721 const VkSamplerCreateInfo* pCreateInfo,
2722 VkSampler* pSampler);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002723
2724// Descriptor set functions
2725
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002726VkResult VKAPI vkCreateDescriptorSetLayout(
2727 VkDevice device,
2728 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
2729 VkDescriptorSetLayout* pSetLayout);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002730
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002731VkResult VKAPI vkCreateDescriptorSetLayoutChain(
2732 VkDevice device,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002733 uint32_t setLayoutArrayCount,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002734 const VkDescriptorSetLayout* pSetLayoutArray,
2735 VkDescriptorSetLayoutChain* pLayoutChain);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002736
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002737VkResult VKAPI vkBeginDescriptorPoolUpdate(
2738 VkDevice device,
2739 VkDescriptorUpdateMode updateMode);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002740
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002741VkResult VKAPI vkEndDescriptorPoolUpdate(
2742 VkDevice device,
2743 VkCmdBuffer cmd);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002744
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002745VkResult VKAPI vkCreateDescriptorPool(
2746 VkDevice device,
2747 VkDescriptorPoolUsage poolUsage,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002748 uint32_t maxSets,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002749 const VkDescriptorPoolCreateInfo* pCreateInfo,
2750 VkDescriptorPool* pDescriptorPool);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002751
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002752VkResult VKAPI vkResetDescriptorPool(
2753 VkDescriptorPool descriptorPool);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002754
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002755VkResult VKAPI vkAllocDescriptorSets(
2756 VkDescriptorPool descriptorPool,
2757 VkDescriptorSetUsage setUsage,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002758 uint32_t count,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002759 const VkDescriptorSetLayout* pSetLayouts,
2760 VkDescriptorSet* pDescriptorSets,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002761 uint32_t* pCount);
2762
2763void VKAPI vkClearDescriptorSets(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002764 VkDescriptorPool descriptorPool,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002765 uint32_t count,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002766 const VkDescriptorSet* pDescriptorSets);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002767
2768void VKAPI vkUpdateDescriptors(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002769 VkDescriptorSet descriptorSet,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002770 uint32_t updateCount,
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002771 const void** pUpdateArray);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002772
2773// State object functions
2774
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002775VkResult VKAPI vkCreateDynamicViewportState(
2776 VkDevice device,
2777 const VkDynamicVpStateCreateInfo* pCreateInfo,
2778 VkDynamicVpStateObject* pState);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002779
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002780VkResult VKAPI vkCreateDynamicRasterState(
2781 VkDevice device,
2782 const VkDynamicRsStateCreateInfo* pCreateInfo,
2783 VkDynamicRsStateObject* pState);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002784
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002785VkResult VKAPI vkCreateDynamicColorBlendState(
2786 VkDevice device,
2787 const VkDynamicCbStateCreateInfo* pCreateInfo,
2788 VkDynamicCbStateObject* pState);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002789
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002790VkResult VKAPI vkCreateDynamicDepthStencilState(
2791 VkDevice device,
2792 const VkDynamicDsStateCreateInfo* pCreateInfo,
2793 VkDynamicDsStateObject* pState);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002794
2795// Command buffer functions
2796
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002797VkResult VKAPI vkCreateCommandBuffer(
2798 VkDevice device,
2799 const VkCmdBufferCreateInfo* pCreateInfo,
2800 VkCmdBuffer* pCmdBuffer);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002801
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002802VkResult VKAPI vkBeginCommandBuffer(
2803 VkCmdBuffer cmdBuffer,
2804 const VkCmdBufferBeginInfo* pBeginInfo);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002805
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002806VkResult VKAPI vkEndCommandBuffer(
2807 VkCmdBuffer cmdBuffer);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002808
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002809VkResult VKAPI vkResetCommandBuffer(
2810 VkCmdBuffer cmdBuffer);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002811
2812// Command buffer building functions
2813
2814void VKAPI vkCmdBindPipeline(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002815 VkCmdBuffer cmdBuffer,
2816 VkPipelineBindPoint pipelineBindPoint,
2817 VkPipeline pipeline);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002818
2819void VKAPI vkCmdBindDynamicStateObject(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002820 VkCmdBuffer cmdBuffer,
2821 VkStateBindPoint stateBindPoint,
2822 VkDynamicStateObject dynamicState);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002823
2824void VKAPI vkCmdBindDescriptorSets(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002825 VkCmdBuffer cmdBuffer,
2826 VkPipelineBindPoint pipelineBindPoint,
2827 VkDescriptorSetLayoutChain layoutChain,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002828 uint32_t layoutChainSlot,
2829 uint32_t count,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002830 const VkDescriptorSet* pDescriptorSets,
Courtney Goeltzenleuchtera8c06282015-04-14 14:55:44 -06002831 const uint32_t * pUserData);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002832
2833void VKAPI vkCmdBindIndexBuffer(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002834 VkCmdBuffer cmdBuffer,
2835 VkBuffer buffer,
2836 VkGpuSize offset,
2837 VkIndexType indexType);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002838
2839void VKAPI vkCmdBindVertexBuffer(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002840 VkCmdBuffer cmdBuffer,
2841 VkBuffer buffer,
2842 VkGpuSize offset,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002843 uint32_t binding);
2844
2845void VKAPI vkCmdDraw(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002846 VkCmdBuffer cmdBuffer,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002847 uint32_t firstVertex,
2848 uint32_t vertexCount,
2849 uint32_t firstInstance,
2850 uint32_t instanceCount);
2851
2852void VKAPI vkCmdDrawIndexed(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002853 VkCmdBuffer cmdBuffer,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002854 uint32_t firstIndex,
2855 uint32_t indexCount,
2856 int32_t vertexOffset,
2857 uint32_t firstInstance,
2858 uint32_t instanceCount);
2859
2860void VKAPI vkCmdDrawIndirect(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002861 VkCmdBuffer cmdBuffer,
2862 VkBuffer buffer,
2863 VkGpuSize offset,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002864 uint32_t count,
2865 uint32_t stride);
2866
2867void VKAPI vkCmdDrawIndexedIndirect(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002868 VkCmdBuffer cmdBuffer,
2869 VkBuffer buffer,
2870 VkGpuSize offset,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002871 uint32_t count,
2872 uint32_t stride);
2873
2874void VKAPI vkCmdDispatch(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002875 VkCmdBuffer cmdBuffer,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002876 uint32_t x,
2877 uint32_t y,
2878 uint32_t z);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002879void VKAPI vkCmdDispatchIndirect(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002880 VkCmdBuffer cmdBuffer,
2881 VkBuffer buffer,
2882 VkGpuSize offset);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002883
2884void VKAPI vkCmdCopyBuffer(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002885 VkCmdBuffer cmdBuffer,
2886 VkBuffer srcBuffer,
2887 VkBuffer destBuffer,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002888 uint32_t regionCount,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002889 const VkBufferCopy* pRegions);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002890
2891void VKAPI vkCmdCopyImage(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002892 VkCmdBuffer cmdBuffer,
2893 VkImage srcImage,
2894 VkImageLayout srcImageLayout,
2895 VkImage destImage,
2896 VkImageLayout destImageLayout,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002897 uint32_t regionCount,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002898 const VkImageCopy* pRegions);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002899
2900void VKAPI vkCmdBlitImage(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002901 VkCmdBuffer cmdBuffer,
2902 VkImage srcImage,
2903 VkImageLayout srcImageLayout,
2904 VkImage destImage,
2905 VkImageLayout destImageLayout,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002906 uint32_t regionCount,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002907 const VkImageBlit* pRegions);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002908
2909void VKAPI vkCmdCopyBufferToImage(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002910 VkCmdBuffer cmdBuffer,
2911 VkBuffer srcBuffer,
2912 VkImage destImage,
2913 VkImageLayout destImageLayout,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002914 uint32_t regionCount,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002915 const VkBufferImageCopy* pRegions);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002916
2917void VKAPI vkCmdCopyImageToBuffer(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002918 VkCmdBuffer cmdBuffer,
2919 VkImage srcImage,
2920 VkImageLayout srcImageLayout,
2921 VkBuffer destBuffer,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002922 uint32_t regionCount,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002923 const VkBufferImageCopy* pRegions);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002924
2925void VKAPI vkCmdCloneImageData(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002926 VkCmdBuffer cmdBuffer,
2927 VkImage srcImage,
2928 VkImageLayout srcImageLayout,
2929 VkImage destImage,
2930 VkImageLayout destImageLayout);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002931
2932void VKAPI vkCmdUpdateBuffer(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002933 VkCmdBuffer cmdBuffer,
2934 VkBuffer destBuffer,
2935 VkGpuSize destOffset,
2936 VkGpuSize dataSize,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002937 const uint32_t* pData);
2938
2939void VKAPI vkCmdFillBuffer(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002940 VkCmdBuffer cmdBuffer,
2941 VkBuffer destBuffer,
2942 VkGpuSize destOffset,
2943 VkGpuSize fillSize,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002944 uint32_t data);
2945
2946void VKAPI vkCmdClearColorImage(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002947 VkCmdBuffer cmdBuffer,
2948 VkImage image,
2949 VkImageLayout imageLayout,
2950 VkClearColor color,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002951 uint32_t rangeCount,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002952 const VkImageSubresourceRange* pRanges);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002953
2954void VKAPI vkCmdClearDepthStencil(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002955 VkCmdBuffer cmdBuffer,
2956 VkImage image,
2957 VkImageLayout imageLayout,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002958 float depth,
2959 uint32_t stencil,
2960 uint32_t rangeCount,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002961 const VkImageSubresourceRange* pRanges);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002962
2963void VKAPI vkCmdResolveImage(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002964 VkCmdBuffer cmdBuffer,
2965 VkImage srcImage,
2966 VkImageLayout srcImageLayout,
2967 VkImage destImage,
2968 VkImageLayout destImageLayout,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002969 uint32_t rectCount,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002970 const VkImageResolve* pRects);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002971
2972void VKAPI vkCmdSetEvent(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002973 VkCmdBuffer cmdBuffer,
2974 VkEvent event,
2975 VkPipeEvent pipeEvent);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002976
2977void VKAPI vkCmdResetEvent(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002978 VkCmdBuffer cmdBuffer,
2979 VkEvent event,
2980 VkPipeEvent pipeEvent);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002981
2982void VKAPI vkCmdWaitEvents(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002983 VkCmdBuffer cmdBuffer,
2984 const VkEventWaitInfo* pWaitInfo);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002985
2986void VKAPI vkCmdPipelineBarrier(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002987 VkCmdBuffer cmdBuffer,
2988 const VkPipelineBarrier* pBarrier);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002989
2990void VKAPI vkCmdBeginQuery(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002991 VkCmdBuffer cmdBuffer,
2992 VkQueryPool queryPool,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002993 uint32_t slot,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002994 VkFlags flags);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002995
2996void VKAPI vkCmdEndQuery(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06002997 VkCmdBuffer cmdBuffer,
2998 VkQueryPool queryPool,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06002999 uint32_t slot);
3000
3001void VKAPI vkCmdResetQueryPool(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06003002 VkCmdBuffer cmdBuffer,
3003 VkQueryPool queryPool,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06003004 uint32_t startQuery,
3005 uint32_t queryCount);
3006
3007void VKAPI vkCmdWriteTimestamp(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06003008 VkCmdBuffer cmdBuffer,
3009 VkTimestampType timestampType,
3010 VkBuffer destBuffer,
3011 VkGpuSize destOffset);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06003012
3013void VKAPI vkCmdInitAtomicCounters(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06003014 VkCmdBuffer cmdBuffer,
3015 VkPipelineBindPoint pipelineBindPoint,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06003016 uint32_t startCounter,
3017 uint32_t counterCount,
3018 const uint32_t* pData);
3019
3020void VKAPI vkCmdLoadAtomicCounters(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06003021 VkCmdBuffer cmdBuffer,
3022 VkPipelineBindPoint pipelineBindPoint,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06003023 uint32_t startCounter,
3024 uint32_t counterCount,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06003025 VkBuffer srcBuffer,
3026 VkGpuSize srcOffset);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06003027
3028void VKAPI vkCmdSaveAtomicCounters(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06003029 VkCmdBuffer cmdBuffer,
3030 VkPipelineBindPoint pipelineBindPoint,
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06003031 uint32_t startCounter,
3032 uint32_t counterCount,
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06003033 VkBuffer destBuffer,
3034 VkGpuSize destOffset);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06003035
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06003036VkResult VKAPI vkCreateFramebuffer(
3037 VkDevice device,
3038 const VkFramebufferCreateInfo* pCreateInfo,
3039 VkFramebuffer* pFramebuffer);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06003040
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06003041VkResult VKAPI vkCreateRenderPass(
3042 VkDevice device,
3043 const VkRenderPassCreateInfo* pCreateInfo,
3044 VkRenderPass* pRenderPass);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06003045
3046void VKAPI vkCmdBeginRenderPass(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06003047 VkCmdBuffer cmdBuffer,
3048 const VkRenderPassBegin* pRenderPassBegin);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06003049
3050void VKAPI vkCmdEndRenderPass(
Courtney Goeltzenleuchter382489d2015-04-10 08:34:15 -06003051 VkCmdBuffer cmdBuffer,
3052 VkRenderPass renderPass);
Courtney Goeltzenleuchter89e99e62015-04-08 18:04:29 -06003053
3054#endif // VK_PROTOTYPES
3055
3056#ifdef __cplusplus
3057} // extern "C"
3058#endif // __cplusplus
3059
3060#endif // __VULKAN_H__