blob: 2f8942def2f99bb64369fb2daa70cae225505981 [file] [log] [blame]
Jesse Halld27f6aa2015-08-15 17:58:48 -07001// Copyright (c) 2015 The Khronos Group Inc.
2//
3// Permission is hereby granted, free of charge, to any person obtaining a
4// copy of this software and/or associated documentation files (the
5// "Materials"), to deal in the Materials without restriction, including
6// without limitation the rights to use, copy, modify, merge, publish,
7// distribute, sublicense, and/or sell copies of the Materials, and to
8// permit persons to whom the Materials are furnished to do so, subject to
9// the following conditions:
10//
11// The above copyright notice and this permission notice shall be included
12// in all copies or substantial portions of the Materials.
13//
14// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
21
22import platform "platform.api"
23
24///////////////
25// Constants //
26///////////////
27
28// API version (major.minor.patch)
Jesse Hall3dd678a2016-01-08 21:52:01 -080029define VERSION_MAJOR 1
30define VERSION_MINOR 0
Jesse Hall7ba0ac72017-07-07 17:13:23 -070031define VERSION_PATCH 53
Jesse Halld27f6aa2015-08-15 17:58:48 -070032
33// API limits
Jesse Hall65ab5522015-11-30 00:07:16 -080034define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256
35define VK_UUID_SIZE 16
36define VK_MAX_EXTENSION_NAME_SIZE 256
37define VK_MAX_DESCRIPTION_SIZE 256
38define VK_MAX_MEMORY_TYPES 32
39define VK_MAX_MEMORY_HEAPS 16 /// The maximum number of unique memory heaps, each of which supporting 1 or more memory types.
Jesse Halld0599582017-03-10 18:35:38 -080040define VK_MAX_DEVICE_GROUP_SIZE_KHX 32
41define VK_LUID_SIZE_KHX 8
42define VK_QUEUE_FAMILY_EXTERNAL_KHX -2
Jesse Halld27f6aa2015-08-15 17:58:48 -070043
44// API keywords
45define VK_TRUE 1
46define VK_FALSE 0
Jesse Hall5ae3abb2015-10-08 14:00:22 -070047
48// API keyword, but needs special handling by some templates
49define NULL_HANDLE 0
Jesse Halld27f6aa2015-08-15 17:58:48 -070050
Jesse Halleb02c472017-02-24 15:13:45 -080051// 1
Jesse Hall33faaad2016-01-24 21:00:49 -080052@extension("VK_KHR_surface") define VK_KHR_SURFACE_SPEC_VERSION 25
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080053@extension("VK_KHR_surface") define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080054
Jesse Halleb02c472017-02-24 15:13:45 -080055// 2
Jesse Hall26763382016-05-20 07:13:52 -070056@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_SPEC_VERSION 68
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080057@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain"
Jesse Hall1356b0d2015-11-23 17:24:58 -080058
Jesse Halleb02c472017-02-24 15:13:45 -080059// 3
Jesse Hall543a7ff2016-01-08 16:38:30 -080060@extension("VK_KHR_display") define VK_KHR_DISPLAY_SPEC_VERSION 21
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080061@extension("VK_KHR_display") define VK_KHR_DISPLAY_EXTENSION_NAME "VK_KHR_display"
Jesse Hall1356b0d2015-11-23 17:24:58 -080062
Jesse Halleb02c472017-02-24 15:13:45 -080063// 4
Jesse Hall543a7ff2016-01-08 16:38:30 -080064@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 9
Jesse Hall0e74f002015-11-30 11:37:59 -080065@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
Jesse Hall1356b0d2015-11-23 17:24:58 -080066
Jesse Halleb02c472017-02-24 15:13:45 -080067// 5
Jesse Hall543a7ff2016-01-08 16:38:30 -080068@extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080069@extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_NAME "VK_KHR_xlib_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080070
Jesse Halleb02c472017-02-24 15:13:45 -080071// 6
Jesse Hall543a7ff2016-01-08 16:38:30 -080072@extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080073@extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_NAME "VK_KHR_xcb_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080074
Jesse Halleb02c472017-02-24 15:13:45 -080075// 7
Jesse Halle8ec6a22017-03-10 21:01:57 -080076@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080077@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_NAME "VK_KHR_wayland_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080078
Jesse Halleb02c472017-02-24 15:13:45 -080079// 8
Jesse Hall543a7ff2016-01-08 16:38:30 -080080@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_SPEC_VERSION 4
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080081@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_NAME "VK_KHR_mir_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080082
Jesse Halleb02c472017-02-24 15:13:45 -080083// 9
Jesse Hall33faaad2016-01-24 21:00:49 -080084@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080085@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_NAME "VK_KHR_android_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080086
Jesse Halleb02c472017-02-24 15:13:45 -080087// 10
Jesse Hall7ba0ac72017-07-07 17:13:23 -070088@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080089@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_NAME "VK_KHR_win32_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080090
Jesse Halleb02c472017-02-24 15:13:45 -080091// 11
Chia-I Wub262ddc2016-03-22 07:38:20 +080092@extension("VK_ANDROID_native_buffer") define VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION 5
93@extension("VK_ANDROID_native_buffer") define VK_ANDROID_NATIVE_BUFFER_NAME "VK_ANDROID_native_buffer"
94
Jesse Halleb02c472017-02-24 15:13:45 -080095// 12
Jesse Hall7ba0ac72017-07-07 17:13:23 -070096@extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_SPEC_VERSION 8
Jesse Hall715b86a2016-01-16 16:34:29 -080097@extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_NAME "VK_EXT_debug_report"
98
Jesse Halleb02c472017-02-24 15:13:45 -080099// 13
Jesse Hall26763382016-05-20 07:13:52 -0700100@extension("VK_NV_glsl_shader") define VK_NV_GLSL_SHADER_SPEC_VERSION 1
101@extension("VK_NV_glsl_shader") define VK_NV_GLSL_SHADER_NAME "VK_NV_glsl_shader"
102
Jesse Halleb02c472017-02-24 15:13:45 -0800103// 15
Jesse Hall26763382016-05-20 07:13:52 -0700104@extension("VK_KHR_sampler_mirror_clamp_to_edge") define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 1
105@extension("VK_KHR_sampler_mirror_clamp_to_edge") define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_NAME "VK_KHR_sampler_mirror_clamp_to_edge"
106
Jesse Halleb02c472017-02-24 15:13:45 -0800107// 16
Jesse Hall26763382016-05-20 07:13:52 -0700108@extension("VK_IMG_filter_cubic") define VK_IMG_FILTER_CUBIC_SPEC_VERSION 1
109@extension("VK_IMG_filter_cubic") define VK_IMG_FILTER_CUBIC_NAME "VK_IMG_filter_cubic"
110
Jesse Halleb02c472017-02-24 15:13:45 -0800111// 19
Jesse Hall26763382016-05-20 07:13:52 -0700112@extension("VK_AMD_rasterization_order") define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1
113@extension("VK_AMD_rasterization_order") define VK_AMD_RASTERIZATION_ORDER_NAME "VK_AMD_rasterization_order"
114
Jesse Halleb02c472017-02-24 15:13:45 -0800115// 21
Jesse Hall3f5499b2016-07-26 15:20:40 -0700116@extension("VK_AMD_shader_trinary_minmax") define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1
117@extension("VK_AMD_shader_trinary_minmax") define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax"
118
Jesse Halleb02c472017-02-24 15:13:45 -0800119// 22
Jesse Hall3f5499b2016-07-26 15:20:40 -0700120@extension("VK_AMD_shader_explicit_vertex_parameter") define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1
121@extension("VK_AMD_shader_explicit_vertex_parameter") define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter"
122
Jesse Halleb02c472017-02-24 15:13:45 -0800123// 23
Jesse Hall99431972017-03-06 16:02:58 -0800124@extension("VK_EXT_debug_marker") define VK_EXT_DEBUG_MARKER_SPEC_VERSION 4
Jesse Hall26763382016-05-20 07:13:52 -0700125@extension("VK_EXT_debug_marker") define VK_EXT_DEBUG_MARKER_NAME "VK_EXT_debug_marker"
126
Jesse Halleb02c472017-02-24 15:13:45 -0800127// 26
Jesse Hall3f5499b2016-07-26 15:20:40 -0700128@extension("VK_AMD_gcn_shader") define VK_AMD_GCN_SHADER_SPEC_VERSION 1
129@extension("VK_AMD_gcn_shader") define VK_AMD_GCN_SHADER_EXTENSION_NAME "VK_AMD_gcn_shader"
130
Jesse Halleb02c472017-02-24 15:13:45 -0800131// 27
Jesse Hall3f5499b2016-07-26 15:20:40 -0700132@extension("VK_NV_dedicated_allocation") define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1
133@extension("VK_NV_dedicated_allocation") define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation"
134
Jesse Halleb02c472017-02-24 15:13:45 -0800135// 28
136@extension("VK_IMG_format_pvrtc") define VK_IMG_FORMAT_PVRTC_SPEC_VERSION 1
137@extension("VK_IMG_format_pvrtc") define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc"
138
139// 34
140@extension("VK_AMD_draw_indirect_count") define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
141@extension("VK_AMD_draw_indirect_count") define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count"
142
143// 36
144@extension("VK_AMD_negative_viewport_height") define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1
145@extension("VK_AMD_negative_viewport_height") define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height"
146
147// 37
148@extension("VK_AMD_gpu_shader_half_float") define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 1
149@extension("VK_AMD_gpu_shader_half_float") define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float"
150
151// 38
152@extension("VK_AMD_shader_ballot") define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1
153@extension("VK_AMD_shader_ballot") define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot"
154
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700155// 42
156@extension("VK_AMD_texture_gather_bias_lod") define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1
157@extension("VK_AMD_texture_gather_bias_lod") define VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME "VK_AMD_texture_gather_bias_lod"
158
Jesse Halld0599582017-03-10 18:35:38 -0800159// 54
160@extension("VK_KHX_multiview") define VK_KHX_MULTIVIEW_SPEC_VERSION 1
161@extension("VK_KHX_multiview") define VK_KHX_MULTIVIEW_EXTENSION_NAME "VK_KHX_multiview"
162
Jesse Halleb02c472017-02-24 15:13:45 -0800163// 56
164@extension("VK_NV_external_memory_capabilities") define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
165@extension("VK_NV_external_memory_capabilities") define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities"
166
167// 57
168@extension("VK_NV_external_memory") define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1
169@extension("VK_NV_external_memory") define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory"
170
171// 58
172@extension("VK_NV_external_memory_win32") define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
173@extension("VK_NV_external_memory_win32") define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
174
175// 59
176@extension("VK_NV_win32_keyed_mutex") define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 1
177@extension("VK_NV_win32_keyed_mutex") define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
178
Jesse Hall08e2f482017-03-06 15:22:17 -0800179// 60
180@extension("VK_KHR_get_physical_device_properties2") define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 1
181@extension("VK_KHR_get_physical_device_properties2") define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2"
182
Jesse Halld0599582017-03-10 18:35:38 -0800183// 61
184@extension("VK_KHX_device_group") define VK_KHX_DEVICE_GROUP_SPEC_VERSION 1
185@extension("VK_KHX_device_group") define VK_KHX_DEVICE_GROUP_EXTENSION_NAME "VK_KHX_device_group"
186
Jesse Halleb02c472017-02-24 15:13:45 -0800187// 62
188@extension("VK_EXT_validation_flags") define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 1
189@extension("VK_EXT_validation_flags") define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags"
190
Jesse Hall08e2f482017-03-06 15:22:17 -0800191// 63
192@extension("VK_NN_vi_surface") define VK_NN_VI_SURFACE_SPEC_VERSION 1
193@extension("VK_NN_vi_surface") define VK_NN_VI_SURFACE_EXTENSION_NAME "VK_NN_vi_surface"
194
195// 64
196@extension("VK_KHR_shader_draw_parameters") define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1
197@extension("VK_KHR_shader_draw_parameters") define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters"
198
199// 65
200@extension("VK_EXT_shader_subgroup_ballot") define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1
201@extension("VK_EXT_shader_subgroup_ballot") define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot"
202
203// 66
204@extension("VK_EXT_shader_subgroup_vote") define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1
205@extension("VK_EXT_shader_subgroup_vote") define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote"
206
207// 70
208@extension("VK_KHR_maintenance1") define VK_KHR_MAINTENANCE1_SPEC_VERSION 1
209@extension("VK_KHR_maintenance1") define VK_KHR_MAINTENANCE1_EXTENSION_NAME "VK_KHR_maintenance1"
210
Jesse Halld0599582017-03-10 18:35:38 -0800211// 71
212@extension("VK_KHX_device_group_creation") define VK_KHX_DEVICE_GROUP_CREATION_SPEC_VERSION 1
213@extension("VK_KHX_device_group_creation") define VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHX_device_group_creation"
214
215// 72
216@extension("VK_KHX_external_memory_capabilities") define VK_KHX_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
217@extension("VK_KHX_external_memory_capabilities") define VK_KHX_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHX_external_memory_capabilities"
218
219// 73
220@extension("VK_KHX_external_memory") define VK_KHX_EXTERNAL_MEMORY_SPEC_VERSION 1
221@extension("VK_KHX_external_memory") define VK_KHX_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHX_external_memory"
222
223// 74
224@extension("VK_KHX_external_memory_win32") define VK_KHX_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
225@extension("VK_KHX_external_memory_win32") define VK_KHX_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHX_external_memory_win32"
226
227// 75
228@extension("VK_KHX_external_memory_fd") define VK_KHX_EXTERNAL_MEMORY_FD_SPEC_VERSION 1
229@extension("VK_KHX_external_memory_fd") define VK_KHX_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHX_external_memory_fd"
230
231// 76
232@extension("VK_KHX_win32_keyed_mutex") define VK_KHX_WIN32_KEYED_MUTEX_SPEC_VERSION 1
233@extension("VK_KHX_win32_keyed_mutex") define VK_KHX_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHX_win32_keyed_mutex"
234
235// 77
236@extension("VK_KHX_external_semaphore_capabilities") define VK_KHX_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1
237@extension("VK_KHX_external_semaphore_capabilities") define VK_KHX_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHX_external_semaphore_capabilities"
238
239// 78
240@extension("VK_KHX_external_semaphore") define VK_KHX_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
241@extension("VK_KHX_external_semaphore") define VK_KHX_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHX_external_semaphore"
242
243// 79
244@extension("VK_KHX_external_semaphore_win32") define VK_KHX_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1
245@extension("VK_KHX_external_semaphore_win32") define VK_KHX_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHX_external_semaphore_win32"
246
247// 80
248@extension("VK_KHX_external_semaphore_fd") define VK_KHX_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1
249@extension("VK_KHX_external_semaphore_fd") define VK_KHX_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHX_external_semaphore_fd"
250
251// 81
252@extension("VK_KHR_push_descriptor") define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 1
253@extension("VK_KHR_push_descriptor") define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor"
254
Jesse Hall2c677d52017-03-20 13:09:19 -0700255// 85
256@extension("VK_KHR_incremental_present") define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1
257@extension("VK_KHR_incremental_present") define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present"
258
Jesse Halld0599582017-03-10 18:35:38 -0800259// 86
260@extension("VK_KHR_descriptor_update_template") define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1
261@extension("VK_KHR_descriptor_update_template") define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template"
262
Jesse Halleb02c472017-02-24 15:13:45 -0800263// 87
264@extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 1
265@extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands"
266
Jesse Halld0599582017-03-10 18:35:38 -0800267// 88
268@extension("VK_NV_clip_space_w_scaling") define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1
269@extension("VK_NV_clip_space_w_scaling") define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling"
270
Jesse Hall08e2f482017-03-06 15:22:17 -0800271// 89
272@extension("VK_EXT_direct_mode_display") define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1
273@extension("VK_EXT_direct_mode_display") define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display"
274
275// 90
276@extension("VK_EXT_acquire_xlib_display") define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1
277@extension("VK_EXT_acquire_xlib_display") define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display"
278
279// 91
280@extension("VK_EXT_display_surface_counter") define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1
281@extension("VK_EXT_display_surface_counter") define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter"
282
283// 92
284@extension("VK_EXT_display_control") define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1
285@extension("VK_EXT_display_control") define VK_EXT_DISPLAY_CONTROL_COUNTER_EXTENSION_NAME "VK_EXT_display_control"
286
Jesse Halle8ec6a22017-03-10 21:01:57 -0800287// 93
288@extension("VK_GOOGLE_display_timing") define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1
289@extension("VK_GOOGLE_display_timing") define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing"
290
Jesse Halld0599582017-03-10 18:35:38 -0800291// 95
292@extension("VK_NV_sample_mask_override_coverage") define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1
293@extension("VK_NV_sample_mask_override_coverage") define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage"
294
295// 96
296@extension("VK_NV_geometry_shader_passthrough") define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1
297@extension("VK_NV_geometry_shader_passthrough") define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough"
298
299// 97
300@extension("VK_NV_viewport_array2") define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION 1
301@extension("VK_NV_viewport_array2") define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME "VK_NV_viewport_array2"
302
303// 98
304@extension("VK_NVX_multiview_per_view_attributes") define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1
305@extension("VK_NVX_multiview_per_view_attributes") define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes"
306
307// 99
308@extension("VK_NV_viewport_swizzle") define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1
309@extension("VK_NV_viewport_swizzle") define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle"
310
311// 100
312@extension("VK_EXT_discard_rectangles") define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1
313@extension("VK_EXT_discard_rectangles") define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
314
Jesse Hall2c677d52017-03-20 13:09:19 -0700315// 105
316@extension("VK_EXT_swapchain_colorspace") define VK_EXT_SWAPCHAIN_COLORSPACE_SPEC_VERSION 2
317@extension("VK_EXT_swapchain_colorspace") define VK_EXT_SWAPCHAIN_COLORSPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace"
318
Jesse Halle8ec6a22017-03-10 21:01:57 -0800319// 106
320@extension("VK_EXT_hdr_metadata") define VK_EXT_HDR_METADATA_SPEC_VERSION 1
321@extension("VK_EXT_hdr_metadata") define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata"
322
Jesse Halle5404242017-04-10 08:09:19 -0700323// 112
324@extension("VK_KHR_shared_presentable_image") define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1
325@extension("VK_KHR_shared_presentable_image") define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image"
326
327// 120
328@extension("VK_KHR_get_surface_capabilities2") define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1
329@extension("VK_KHR_get_surface_capabilities2") define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2"
330
Jesse Halld0599582017-03-10 18:35:38 -0800331// 123
332@extension("VK_MVK_ios_surface") define VK_MVK_IOS_SURFACE_SPEC_VERSION 1
333@extension("VK_MVK_ios_surface") define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface"
334
335// 124
336@extension("VK_MVK_macos_surface") define VK_MVK_MACOS_SURFACE_SPEC_VERSION 1
337@extension("VK_MVK_macos_surface") define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface"
338
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700339// 131
340@extension("VK_EXT_sampler_filter_minmax") define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 1
341@extension("VK_EXT_sampler_filter_minmax") define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
342
343// 133
344@extension("VK_AMD_gpu_shader_int16") define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 1
345@extension("VK_AMD_gpu_shader_int16") define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME "VK_AMD_gpu_shader_int16"
346
347// 149
348@extension("VK_EXT_blend_operation_advanced") define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2
349@extension("VK_EXT_blend_operation_advanced") define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
350
351// 150
352@extension("VK_NV_fragment_coverage_to_color") define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1
353@extension("VK_NV_fragment_coverage_to_color") define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME "VK_NV_fragment_coverage_to_color"
354
355// 153
356@extension("VK_NV_framebuffer_mixed_samples") define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1
357@extension("VK_NV_framebuffer_mixed_samples") define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME "VK_NV_framebuffer_mixed_samples"
358
359// 154
360@extension("VK_NV_fill_rectangle") define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1
361@extension("VK_NV_fill_rectangle") define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle"
362
Jesse Halld27f6aa2015-08-15 17:58:48 -0700363/////////////
364// Types //
365/////////////
366
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700367type u32 VkBool32
368type u32 VkFlags
369type u64 VkDeviceSize
370type u32 VkSampleMask
371
Jesse Halld27f6aa2015-08-15 17:58:48 -0700372/// Dispatchable handle types.
373@dispatchHandle type u64 VkInstance
374@dispatchHandle type u64 VkPhysicalDevice
375@dispatchHandle type u64 VkDevice
376@dispatchHandle type u64 VkQueue
Jesse Hall3fbc8562015-11-29 22:10:52 -0800377@dispatchHandle type u64 VkCommandBuffer
Jesse Halld27f6aa2015-08-15 17:58:48 -0700378
379/// Non dispatchable handle types.
380@nonDispatchHandle type u64 VkDeviceMemory
Jesse Hall3fbc8562015-11-29 22:10:52 -0800381@nonDispatchHandle type u64 VkCommandPool
Jesse Halld27f6aa2015-08-15 17:58:48 -0700382@nonDispatchHandle type u64 VkBuffer
383@nonDispatchHandle type u64 VkBufferView
384@nonDispatchHandle type u64 VkImage
385@nonDispatchHandle type u64 VkImageView
Jesse Halld27f6aa2015-08-15 17:58:48 -0700386@nonDispatchHandle type u64 VkShaderModule
Jesse Halld27f6aa2015-08-15 17:58:48 -0700387@nonDispatchHandle type u64 VkPipeline
388@nonDispatchHandle type u64 VkPipelineLayout
389@nonDispatchHandle type u64 VkSampler
390@nonDispatchHandle type u64 VkDescriptorSet
391@nonDispatchHandle type u64 VkDescriptorSetLayout
392@nonDispatchHandle type u64 VkDescriptorPool
Jesse Halld27f6aa2015-08-15 17:58:48 -0700393@nonDispatchHandle type u64 VkFence
394@nonDispatchHandle type u64 VkSemaphore
395@nonDispatchHandle type u64 VkEvent
396@nonDispatchHandle type u64 VkQueryPool
397@nonDispatchHandle type u64 VkFramebuffer
398@nonDispatchHandle type u64 VkRenderPass
399@nonDispatchHandle type u64 VkPipelineCache
Jesse Hall1356b0d2015-11-23 17:24:58 -0800400
Jesse Halld0599582017-03-10 18:35:38 -0800401// 1
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800402@extension("VK_KHR_surface") @nonDispatchHandle type u64 VkSurfaceKHR
Jesse Hall1356b0d2015-11-23 17:24:58 -0800403
Jesse Halld0599582017-03-10 18:35:38 -0800404// 2
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800405@extension("VK_KHR_swapchain") @nonDispatchHandle type u64 VkSwapchainKHR
Jesse Hall1356b0d2015-11-23 17:24:58 -0800406
Jesse Halld0599582017-03-10 18:35:38 -0800407// 3
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800408@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayKHR
409@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayModeKHR
Jesse Halld27f6aa2015-08-15 17:58:48 -0700410
Jesse Halld0599582017-03-10 18:35:38 -0800411// 12
Jesse Hall715b86a2016-01-16 16:34:29 -0800412@extension("VK_EXT_debug_report") @nonDispatchHandle type u64 VkDebugReportCallbackEXT
413
Jesse Halld0599582017-03-10 18:35:38 -0800414// 86
415@extension("VK_KHR_descriptor_update_template") @nonDispatchHandle type u64 VkDescriptorUpdateTemplateKHR
416
417// 87
Jesse Halleb02c472017-02-24 15:13:45 -0800418@extension("VK_NVX_device_generated_commands") @nonDispatchHandle type u64 VkObjectTableNVX
419@extension("VK_NVX_device_generated_commands") @nonDispatchHandle type u64 VkIndirectCommandsLayoutNVX
420
Jesse Halld27f6aa2015-08-15 17:58:48 -0700421
422/////////////
423// Enums //
424/////////////
425
426enum VkImageLayout {
427 VK_IMAGE_LAYOUT_UNDEFINED = 0x00000000, /// Implicit layout an image is when its contents are undefined due to various reasons (e.g. right after creation)
428 VK_IMAGE_LAYOUT_GENERAL = 0x00000001, /// General layout when image can be used for any kind of access
429 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 0x00000002, /// Optimal layout when image is only used for color attachment read/write
430 VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 0x00000003, /// Optimal layout when image is only used for depth/stencil attachment read/write
431 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 0x00000004, /// Optimal layout when image is used for read only depth/stencil attachment and shader access
432 VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 0x00000005, /// Optimal layout when image is used for read only shader access
Jesse Hall3fbc8562015-11-29 22:10:52 -0800433 VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 0x00000006, /// Optimal layout when image is used only as source of transfer operations
434 VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 0x00000007, /// Optimal layout when image is used only as destination of transfer operations
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700435 VK_IMAGE_LAYOUT_PREINITIALIZED = 0x00000008, /// Initial layout used when the data is populated by the CPU
Jesse Hall1356b0d2015-11-23 17:24:58 -0800436
Jesse Halld0599582017-03-10 18:35:38 -0800437 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -0800438 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
Jesse Halle5404242017-04-10 08:09:19 -0700439
440 //@extension("VK_KHR_shared_presentable_image") // 112
441 VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700442}
443
444enum VkAttachmentLoadOp {
445 VK_ATTACHMENT_LOAD_OP_LOAD = 0x00000000,
446 VK_ATTACHMENT_LOAD_OP_CLEAR = 0x00000001,
447 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 0x00000002,
448}
449
450enum VkAttachmentStoreOp {
451 VK_ATTACHMENT_STORE_OP_STORE = 0x00000000,
452 VK_ATTACHMENT_STORE_OP_DONT_CARE = 0x00000001,
453}
454
455enum VkImageType {
456 VK_IMAGE_TYPE_1D = 0x00000000,
457 VK_IMAGE_TYPE_2D = 0x00000001,
458 VK_IMAGE_TYPE_3D = 0x00000002,
459}
460
461enum VkImageTiling {
Jesse Hallc7467b72015-11-29 21:05:26 -0800462 VK_IMAGE_TILING_OPTIMAL = 0x00000000,
463 VK_IMAGE_TILING_LINEAR = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700464}
465
466enum VkImageViewType {
467 VK_IMAGE_VIEW_TYPE_1D = 0x00000000,
468 VK_IMAGE_VIEW_TYPE_2D = 0x00000001,
469 VK_IMAGE_VIEW_TYPE_3D = 0x00000002,
470 VK_IMAGE_VIEW_TYPE_CUBE = 0x00000003,
471 VK_IMAGE_VIEW_TYPE_1D_ARRAY = 0x00000004,
472 VK_IMAGE_VIEW_TYPE_2D_ARRAY = 0x00000005,
473 VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 0x00000006,
474}
475
Jesse Hall3fbc8562015-11-29 22:10:52 -0800476enum VkCommandBufferLevel {
477 VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0x00000000,
478 VK_COMMAND_BUFFER_LEVEL_SECONDARY = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700479}
480
Jesse Hall65ab5522015-11-30 00:07:16 -0800481enum VkComponentSwizzle {
482 VK_COMPONENT_SWIZZLE_IDENTITY = 0x00000000,
483 VK_COMPONENT_SWIZZLE_ZERO = 0x00000001,
484 VK_COMPONENT_SWIZZLE_ONE = 0x00000002,
485 VK_COMPONENT_SWIZZLE_R = 0x00000003,
486 VK_COMPONENT_SWIZZLE_G = 0x00000004,
487 VK_COMPONENT_SWIZZLE_B = 0x00000005,
488 VK_COMPONENT_SWIZZLE_A = 0x00000006,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700489}
490
491enum VkDescriptorType {
492 VK_DESCRIPTOR_TYPE_SAMPLER = 0x00000000,
493 VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 0x00000001,
494 VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 0x00000002,
495 VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 0x00000003,
496 VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 0x00000004,
497 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 0x00000005,
498 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 0x00000006,
499 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 0x00000007,
500 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 0x00000008,
501 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 0x00000009,
502 VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 0x0000000a,
503}
504
Jesse Halld27f6aa2015-08-15 17:58:48 -0700505enum VkQueryType {
506 VK_QUERY_TYPE_OCCLUSION = 0x00000000,
507 VK_QUERY_TYPE_PIPELINE_STATISTICS = 0x00000001, /// Optional
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800508 VK_QUERY_TYPE_TIMESTAMP = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700509}
510
Jesse Halld27f6aa2015-08-15 17:58:48 -0700511enum VkBorderColor {
512 VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0x00000000,
513 VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 0x00000001,
514 VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 0x00000002,
515 VK_BORDER_COLOR_INT_OPAQUE_BLACK = 0x00000003,
516 VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 0x00000004,
517 VK_BORDER_COLOR_INT_OPAQUE_WHITE = 0x00000005,
518}
519
520enum VkPipelineBindPoint {
Jesse Hallc7467b72015-11-29 21:05:26 -0800521 VK_PIPELINE_BIND_POINT_GRAPHICS = 0x00000000,
522 VK_PIPELINE_BIND_POINT_COMPUTE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700523}
524
525enum VkPrimitiveTopology {
526 VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0x00000000,
527 VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 0x00000001,
528 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 0x00000002,
529 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 0x00000003,
530 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 0x00000004,
531 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800532 VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 0x00000006,
533 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 0x00000007,
534 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 0x00000008,
535 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 0x00000009,
Jesse Hall091ed9e2015-11-30 00:55:29 -0800536 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 0x0000000a,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700537}
538
539enum VkSharingMode {
540 VK_SHARING_MODE_EXCLUSIVE = 0x00000000,
541 VK_SHARING_MODE_CONCURRENT = 0x00000001,
542}
543
544enum VkIndexType {
545 VK_INDEX_TYPE_UINT16 = 0x00000000,
546 VK_INDEX_TYPE_UINT32 = 0x00000001,
547}
548
Jesse Hall23ff73f2015-11-29 14:36:39 -0800549enum VkFilter {
550 VK_FILTER_NEAREST = 0x00000000,
551 VK_FILTER_LINEAR = 0x00000001,
Jesse Hall26763382016-05-20 07:13:52 -0700552
Jesse Halld0599582017-03-10 18:35:38 -0800553 //@extension("VK_IMG_filter_cubic") // 16
Jesse Hall26763382016-05-20 07:13:52 -0700554 VK_FILTER_CUBIC_IMG = 1000015000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700555}
556
Jesse Hall23ff73f2015-11-29 14:36:39 -0800557enum VkSamplerMipmapMode {
Jesse Hall23ff73f2015-11-29 14:36:39 -0800558 VK_SAMPLER_MIPMAP_MODE_NEAREST = 0x00000001, /// Choose nearest mip level
559 VK_SAMPLER_MIPMAP_MODE_LINEAR = 0x00000002, /// Linear filter between mip levels
Jesse Halld27f6aa2015-08-15 17:58:48 -0700560}
561
Jesse Hall23ff73f2015-11-29 14:36:39 -0800562enum VkSamplerAddressMode {
Jesse Hallc7467b72015-11-29 21:05:26 -0800563 VK_SAMPLER_ADDRESS_MODE_REPEAT = 0x00000000,
564 VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 0x00000001,
565 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 0x00000002,
566 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 0x00000003,
567 VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700568}
569
570enum VkCompareOp {
571 VK_COMPARE_OP_NEVER = 0x00000000,
572 VK_COMPARE_OP_LESS = 0x00000001,
573 VK_COMPARE_OP_EQUAL = 0x00000002,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800574 VK_COMPARE_OP_LESS_OR_EQUAL = 0x00000003,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700575 VK_COMPARE_OP_GREATER = 0x00000004,
576 VK_COMPARE_OP_NOT_EQUAL = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800577 VK_COMPARE_OP_GREATER_OR_EQUAL = 0x00000006,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700578 VK_COMPARE_OP_ALWAYS = 0x00000007,
579}
580
Jesse Hall65ab5522015-11-30 00:07:16 -0800581enum VkPolygonMode {
582 VK_POLYGON_MODE_FILL = 0x00000000,
583 VK_POLYGON_MODE_LINE = 0x00000001,
584 VK_POLYGON_MODE_POINT = 0x00000002,
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700585
586 //@extension("VK_NV_fill_rectangle") // 154
587 VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700588}
589
590enum VkFrontFace {
Jesse Hall3fbc8562015-11-29 22:10:52 -0800591 VK_FRONT_FACE_COUNTER_CLOCKWISE = 0x00000000,
592 VK_FRONT_FACE_CLOCKWISE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700593}
594
Jesse Hall65ab5522015-11-30 00:07:16 -0800595enum VkBlendFactor {
596 VK_BLEND_FACTOR_ZERO = 0x00000000,
597 VK_BLEND_FACTOR_ONE = 0x00000001,
598 VK_BLEND_FACTOR_SRC_COLOR = 0x00000002,
599 VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 0x00000003,
600 VK_BLEND_FACTOR_DST_COLOR = 0x00000004,
601 VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 0x00000005,
602 VK_BLEND_FACTOR_SRC_ALPHA = 0x00000006,
603 VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 0x00000007,
604 VK_BLEND_FACTOR_DST_ALPHA = 0x00000008,
605 VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 0x00000009,
606 VK_BLEND_FACTOR_CONSTANT_COLOR = 0x0000000a,
607 VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 0x0000000b,
608 VK_BLEND_FACTOR_CONSTANT_ALPHA = 0x0000000c,
609 VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 0x0000000d,
610 VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 0x0000000e,
611 VK_BLEND_FACTOR_SRC1_COLOR = 0x0000000f,
612 VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 0x00000010,
613 VK_BLEND_FACTOR_SRC1_ALPHA = 0x00000011,
614 VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 0x00000012,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700615}
616
617enum VkBlendOp {
618 VK_BLEND_OP_ADD = 0x00000000,
619 VK_BLEND_OP_SUBTRACT = 0x00000001,
620 VK_BLEND_OP_REVERSE_SUBTRACT = 0x00000002,
621 VK_BLEND_OP_MIN = 0x00000003,
622 VK_BLEND_OP_MAX = 0x00000004,
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700623
624 //@extension("VK_EXT_blend_operation_advanced") // 149
625 VK_BLEND_OP_ZERO_EXT = 1000148000,
626 VK_BLEND_OP_SRC_EXT = 1000148001,
627 VK_BLEND_OP_DST_EXT = 1000148002,
628 VK_BLEND_OP_SRC_OVER_EXT = 1000148003,
629 VK_BLEND_OP_DST_OVER_EXT = 1000148004,
630 VK_BLEND_OP_SRC_IN_EXT = 1000148005,
631 VK_BLEND_OP_DST_IN_EXT = 1000148006,
632 VK_BLEND_OP_SRC_OUT_EXT = 1000148007,
633 VK_BLEND_OP_DST_OUT_EXT = 1000148008,
634 VK_BLEND_OP_SRC_ATOP_EXT = 1000148009,
635 VK_BLEND_OP_DST_ATOP_EXT = 1000148010,
636 VK_BLEND_OP_XOR_EXT = 1000148011,
637 VK_BLEND_OP_MULTIPLY_EXT = 1000148012,
638 VK_BLEND_OP_SCREEN_EXT = 1000148013,
639 VK_BLEND_OP_OVERLAY_EXT = 1000148014,
640 VK_BLEND_OP_DARKEN_EXT = 1000148015,
641 VK_BLEND_OP_LIGHTEN_EXT = 1000148016,
642 VK_BLEND_OP_COLORDODGE_EXT = 1000148017,
643 VK_BLEND_OP_COLORBURN_EXT = 1000148018,
644 VK_BLEND_OP_HARDLIGHT_EXT = 1000148019,
645 VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020,
646 VK_BLEND_OP_DIFFERENCE_EXT = 1000148021,
647 VK_BLEND_OP_EXCLUSION_EXT = 1000148022,
648 VK_BLEND_OP_INVERT_EXT = 1000148023,
649 VK_BLEND_OP_INVERT_RGB_EXT = 1000148024,
650 VK_BLEND_OP_LINEARDODGE_EXT = 1000148025,
651 VK_BLEND_OP_LINEARBURN_EXT = 1000148026,
652 VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027,
653 VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028,
654 VK_BLEND_OP_PINLIGHT_EXT = 1000148029,
655 VK_BLEND_OP_HARDMIX_EXT = 1000148030,
656 VK_BLEND_OP_HSL_HUE_EXT = 1000148031,
657 VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032,
658 VK_BLEND_OP_HSL_COLOR_EXT = 1000148033,
659 VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034,
660 VK_BLEND_OP_PLUS_EXT = 1000148035,
661 VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036,
662 VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037,
663 VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038,
664 VK_BLEND_OP_MINUS_EXT = 1000148039,
665 VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040,
666 VK_BLEND_OP_CONTRAST_EXT = 1000148041,
667 VK_BLEND_OP_INVERT_OVG_EXT = 1000148042,
668 VK_BLEND_OP_RED_EXT = 1000148043,
669 VK_BLEND_OP_GREEN_EXT = 1000148044,
670 VK_BLEND_OP_BLUE_EXT = 1000148045,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700671}
672
673enum VkStencilOp {
674 VK_STENCIL_OP_KEEP = 0x00000000,
675 VK_STENCIL_OP_ZERO = 0x00000001,
676 VK_STENCIL_OP_REPLACE = 0x00000002,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800677 VK_STENCIL_OP_INCREMENT_AND_CLAMP = 0x00000003,
678 VK_STENCIL_OP_DECREMENT_AND_CLAMP = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700679 VK_STENCIL_OP_INVERT = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800680 VK_STENCIL_OP_INCREMENT_AND_WRAP = 0x00000006,
681 VK_STENCIL_OP_DECREMENT_AND_WRAP = 0x00000007,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700682}
683
684enum VkLogicOp {
685 VK_LOGIC_OP_CLEAR = 0x00000000,
686 VK_LOGIC_OP_AND = 0x00000001,
687 VK_LOGIC_OP_AND_REVERSE = 0x00000002,
688 VK_LOGIC_OP_COPY = 0x00000003,
689 VK_LOGIC_OP_AND_INVERTED = 0x00000004,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800690 VK_LOGIC_OP_NO_OP = 0x00000005,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700691 VK_LOGIC_OP_XOR = 0x00000006,
692 VK_LOGIC_OP_OR = 0x00000007,
693 VK_LOGIC_OP_NOR = 0x00000008,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800694 VK_LOGIC_OP_EQUIVALENT = 0x00000009,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700695 VK_LOGIC_OP_INVERT = 0x0000000a,
696 VK_LOGIC_OP_OR_REVERSE = 0x0000000b,
697 VK_LOGIC_OP_COPY_INVERTED = 0x0000000c,
698 VK_LOGIC_OP_OR_INVERTED = 0x0000000d,
699 VK_LOGIC_OP_NAND = 0x0000000e,
700 VK_LOGIC_OP_SET = 0x0000000f,
701}
702
Jesse Hall3fbc8562015-11-29 22:10:52 -0800703enum VkSystemAllocationScope {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800704 VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0x00000000,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800705 VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 0x00000001,
706 VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 0x00000002,
707 VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 0x00000003,
708 VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 0x00000004,
Jesse Hall03b6fe12015-11-24 12:44:21 -0800709}
710
Jesse Hall3fbc8562015-11-29 22:10:52 -0800711enum VkInternalAllocationType {
712 VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0x00000000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700713}
714
715enum VkPhysicalDeviceType {
716 VK_PHYSICAL_DEVICE_TYPE_OTHER = 0x00000000,
717 VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 0x00000001,
718 VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 0x00000002,
719 VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 0x00000003,
720 VK_PHYSICAL_DEVICE_TYPE_CPU = 0x00000004,
721}
722
Jesse Hall65ab5522015-11-30 00:07:16 -0800723enum VkVertexInputRate {
724 VK_VERTEX_INPUT_RATE_VERTEX = 0x00000000,
725 VK_VERTEX_INPUT_RATE_INSTANCE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700726}
727
728/// Vulkan format definitions
729enum VkFormat {
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800730 VK_FORMAT_UNDEFINED = 0,
731 VK_FORMAT_R4G4_UNORM_PACK8 = 1,
732 VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
733 VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
734 VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
735 VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
736 VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
737 VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
738 VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
739 VK_FORMAT_R8_UNORM = 9,
740 VK_FORMAT_R8_SNORM = 10,
741 VK_FORMAT_R8_USCALED = 11,
742 VK_FORMAT_R8_SSCALED = 12,
743 VK_FORMAT_R8_UINT = 13,
744 VK_FORMAT_R8_SINT = 14,
745 VK_FORMAT_R8_SRGB = 15,
746 VK_FORMAT_R8G8_UNORM = 16,
747 VK_FORMAT_R8G8_SNORM = 17,
748 VK_FORMAT_R8G8_USCALED = 18,
749 VK_FORMAT_R8G8_SSCALED = 19,
750 VK_FORMAT_R8G8_UINT = 20,
751 VK_FORMAT_R8G8_SINT = 21,
752 VK_FORMAT_R8G8_SRGB = 22,
753 VK_FORMAT_R8G8B8_UNORM = 23,
754 VK_FORMAT_R8G8B8_SNORM = 24,
755 VK_FORMAT_R8G8B8_USCALED = 25,
756 VK_FORMAT_R8G8B8_SSCALED = 26,
757 VK_FORMAT_R8G8B8_UINT = 27,
758 VK_FORMAT_R8G8B8_SINT = 28,
759 VK_FORMAT_R8G8B8_SRGB = 29,
760 VK_FORMAT_B8G8R8_UNORM = 30,
761 VK_FORMAT_B8G8R8_SNORM = 31,
762 VK_FORMAT_B8G8R8_USCALED = 32,
763 VK_FORMAT_B8G8R8_SSCALED = 33,
764 VK_FORMAT_B8G8R8_UINT = 34,
765 VK_FORMAT_B8G8R8_SINT = 35,
766 VK_FORMAT_B8G8R8_SRGB = 36,
767 VK_FORMAT_R8G8B8A8_UNORM = 37,
768 VK_FORMAT_R8G8B8A8_SNORM = 38,
769 VK_FORMAT_R8G8B8A8_USCALED = 39,
770 VK_FORMAT_R8G8B8A8_SSCALED = 40,
771 VK_FORMAT_R8G8B8A8_UINT = 41,
772 VK_FORMAT_R8G8B8A8_SINT = 42,
773 VK_FORMAT_R8G8B8A8_SRGB = 43,
774 VK_FORMAT_B8G8R8A8_UNORM = 44,
775 VK_FORMAT_B8G8R8A8_SNORM = 45,
776 VK_FORMAT_B8G8R8A8_USCALED = 46,
777 VK_FORMAT_B8G8R8A8_SSCALED = 47,
778 VK_FORMAT_B8G8R8A8_UINT = 48,
779 VK_FORMAT_B8G8R8A8_SINT = 49,
780 VK_FORMAT_B8G8R8A8_SRGB = 50,
781 VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
782 VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
783 VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
784 VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
785 VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
786 VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
787 VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
788 VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
789 VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
790 VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
791 VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
792 VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
793 VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
794 VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
795 VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
796 VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
797 VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
798 VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
799 VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
800 VK_FORMAT_R16_UNORM = 70,
801 VK_FORMAT_R16_SNORM = 71,
802 VK_FORMAT_R16_USCALED = 72,
803 VK_FORMAT_R16_SSCALED = 73,
804 VK_FORMAT_R16_UINT = 74,
805 VK_FORMAT_R16_SINT = 75,
806 VK_FORMAT_R16_SFLOAT = 76,
807 VK_FORMAT_R16G16_UNORM = 77,
808 VK_FORMAT_R16G16_SNORM = 78,
809 VK_FORMAT_R16G16_USCALED = 79,
810 VK_FORMAT_R16G16_SSCALED = 80,
811 VK_FORMAT_R16G16_UINT = 81,
812 VK_FORMAT_R16G16_SINT = 82,
813 VK_FORMAT_R16G16_SFLOAT = 83,
814 VK_FORMAT_R16G16B16_UNORM = 84,
815 VK_FORMAT_R16G16B16_SNORM = 85,
816 VK_FORMAT_R16G16B16_USCALED = 86,
817 VK_FORMAT_R16G16B16_SSCALED = 87,
818 VK_FORMAT_R16G16B16_UINT = 88,
819 VK_FORMAT_R16G16B16_SINT = 89,
820 VK_FORMAT_R16G16B16_SFLOAT = 90,
821 VK_FORMAT_R16G16B16A16_UNORM = 91,
822 VK_FORMAT_R16G16B16A16_SNORM = 92,
823 VK_FORMAT_R16G16B16A16_USCALED = 93,
824 VK_FORMAT_R16G16B16A16_SSCALED = 94,
825 VK_FORMAT_R16G16B16A16_UINT = 95,
826 VK_FORMAT_R16G16B16A16_SINT = 96,
827 VK_FORMAT_R16G16B16A16_SFLOAT = 97,
828 VK_FORMAT_R32_UINT = 98,
829 VK_FORMAT_R32_SINT = 99,
830 VK_FORMAT_R32_SFLOAT = 100,
831 VK_FORMAT_R32G32_UINT = 101,
832 VK_FORMAT_R32G32_SINT = 102,
833 VK_FORMAT_R32G32_SFLOAT = 103,
834 VK_FORMAT_R32G32B32_UINT = 104,
835 VK_FORMAT_R32G32B32_SINT = 105,
836 VK_FORMAT_R32G32B32_SFLOAT = 106,
837 VK_FORMAT_R32G32B32A32_UINT = 107,
838 VK_FORMAT_R32G32B32A32_SINT = 108,
839 VK_FORMAT_R32G32B32A32_SFLOAT = 109,
840 VK_FORMAT_R64_UINT = 110,
841 VK_FORMAT_R64_SINT = 111,
842 VK_FORMAT_R64_SFLOAT = 112,
843 VK_FORMAT_R64G64_UINT = 113,
844 VK_FORMAT_R64G64_SINT = 114,
845 VK_FORMAT_R64G64_SFLOAT = 115,
846 VK_FORMAT_R64G64B64_UINT = 116,
847 VK_FORMAT_R64G64B64_SINT = 117,
848 VK_FORMAT_R64G64B64_SFLOAT = 118,
849 VK_FORMAT_R64G64B64A64_UINT = 119,
850 VK_FORMAT_R64G64B64A64_SINT = 120,
851 VK_FORMAT_R64G64B64A64_SFLOAT = 121,
852 VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
853 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
854 VK_FORMAT_D16_UNORM = 124,
855 VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
856 VK_FORMAT_D32_SFLOAT = 126,
857 VK_FORMAT_S8_UINT = 127,
858 VK_FORMAT_D16_UNORM_S8_UINT = 128,
859 VK_FORMAT_D24_UNORM_S8_UINT = 129,
860 VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
861 VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
862 VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
863 VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
864 VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
865 VK_FORMAT_BC2_UNORM_BLOCK = 135,
866 VK_FORMAT_BC2_SRGB_BLOCK = 136,
867 VK_FORMAT_BC3_UNORM_BLOCK = 137,
868 VK_FORMAT_BC3_SRGB_BLOCK = 138,
869 VK_FORMAT_BC4_UNORM_BLOCK = 139,
870 VK_FORMAT_BC4_SNORM_BLOCK = 140,
871 VK_FORMAT_BC5_UNORM_BLOCK = 141,
872 VK_FORMAT_BC5_SNORM_BLOCK = 142,
873 VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
874 VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
875 VK_FORMAT_BC7_UNORM_BLOCK = 145,
876 VK_FORMAT_BC7_SRGB_BLOCK = 146,
877 VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
878 VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
879 VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
880 VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
881 VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
882 VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
883 VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
884 VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
885 VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
886 VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
887 VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
888 VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
889 VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
890 VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
891 VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
892 VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
893 VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
894 VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
895 VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
896 VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
897 VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
898 VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
899 VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
900 VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
901 VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
902 VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
903 VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
904 VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
905 VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
906 VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
907 VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
908 VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
909 VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
910 VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
911 VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
912 VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
913 VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
914 VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
Jesse Halleb02c472017-02-24 15:13:45 -0800915
Jesse Halld0599582017-03-10 18:35:38 -0800916 //@extension("VK_IMG_format_pvrtc") // 28
Jesse Halleb02c472017-02-24 15:13:45 -0800917 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
918 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
919 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
920 VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
921 VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
922 VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
923 VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
924 VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700925}
926
Jesse Halld27f6aa2015-08-15 17:58:48 -0700927/// Structure type enumerant
928enum VkStructureType {
929 VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
Jesse Hallc7467b72015-11-29 21:05:26 -0800930 VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
931 VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
932 VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
933 VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800934 VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
Jesse Hallc7467b72015-11-29 21:05:26 -0800935 VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
936 VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
937 VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
938 VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700939 VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
Jesse Hallc7467b72015-11-29 21:05:26 -0800940 VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
941 VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
942 VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
943 VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
944 VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
945 VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800946 VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
947 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
948 VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
949 VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
950 VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
951 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
952 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
953 VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
954 VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
955 VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
956 VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
957 VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
958 VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
959 VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
960 VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
961 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
962 VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800963 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800964 VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
965 VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
966 VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
967 VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
968 VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800969 VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
Jesse Hall3dd678a2016-01-08 21:52:01 -0800970 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
971 VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
972 VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
973 VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
974 VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
975 VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
976 VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
977 VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
Jesse Hall1356b0d2015-11-23 17:24:58 -0800978
Jesse Halld0599582017-03-10 18:35:38 -0800979 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -0800980 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
981 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
Jesse Hall1356b0d2015-11-23 17:24:58 -0800982
Jesse Halld0599582017-03-10 18:35:38 -0800983 //@extension("VK_KHR_display") // 3
Jesse Hallbd888842015-11-30 21:44:14 -0800984 VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
985 VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
Jesse Hall1356b0d2015-11-23 17:24:58 -0800986
Jesse Halld0599582017-03-10 18:35:38 -0800987 //@extension("VK_KHR_display_swapchain") // 4
Jesse Hallbd888842015-11-30 21:44:14 -0800988 VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR = 1000003000,
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800989
Jesse Halld0599582017-03-10 18:35:38 -0800990 //@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800991 VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
992
Jesse Halld0599582017-03-10 18:35:38 -0800993 //@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800994 VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
995
Jesse Halld0599582017-03-10 18:35:38 -0800996 //@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800997 VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
998
Jesse Halld0599582017-03-10 18:35:38 -0800999 //@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001000 VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000,
1001
Jesse Halld0599582017-03-10 18:35:38 -08001002 //@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001003 VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
1004
Jesse Halld0599582017-03-10 18:35:38 -08001005 //@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001006 VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
Jesse Hall543a7ff2016-01-08 16:38:30 -08001007
Jesse Halld0599582017-03-10 18:35:38 -08001008 //@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08001009 VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID = 1000010000,
1010
Jesse Halld0599582017-03-10 18:35:38 -08001011 //@extension("VK_EXT_debug_report") // 12
Jesse Hall26763382016-05-20 07:13:52 -07001012 VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
1013
Jesse Halld0599582017-03-10 18:35:38 -08001014 //@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07001015 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,
1016
Jesse Halld0599582017-03-10 18:35:38 -08001017 //@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07001018 VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,
Jesse Hall26763382016-05-20 07:13:52 -07001019 VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,
Jesse Hall26763382016-05-20 07:13:52 -07001020 VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,
Jesse Hall3f5499b2016-07-26 15:20:40 -07001021
Jesse Halld0599582017-03-10 18:35:38 -08001022 //@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall3f5499b2016-07-26 15:20:40 -07001023 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
Jesse Hall3f5499b2016-07-26 15:20:40 -07001024 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
Jesse Hall3f5499b2016-07-26 15:20:40 -07001025 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
Jesse Halleb02c472017-02-24 15:13:45 -08001026
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001027 //@extension("VK_AMD_texture_gather_bias_lod") // 42
1028 VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000,
1029
Jesse Halld0599582017-03-10 18:35:38 -08001030 //@extension("VK_KHX_multiview") // 54
1031 VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX = 1000053000,
1032 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX = 1000053001,
1033 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX = 1000053002,
1034
1035 //@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08001036 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
1037 VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,
1038
Jesse Halld0599582017-03-10 18:35:38 -08001039 //@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08001040 VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
1041 VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
1042
Jesse Halld0599582017-03-10 18:35:38 -08001043 //@extension("VK_NV_win32_keyed_mutex") // 59
Jesse Halleb02c472017-02-24 15:13:45 -08001044 VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
1045
Jesse Halld0599582017-03-10 18:35:38 -08001046 //@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08001047 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000,
1048 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001,
1049 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002,
1050 VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003,
1051 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004,
1052 VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005,
1053 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006,
1054 VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007,
1055 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008,
1056
Jesse Halld0599582017-03-10 18:35:38 -08001057 //@extension("VK_KHX_device_group") // 61
1058 VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX = 1000060000,
1059 VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX = 1000060001,
1060 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX = 1000060002,
1061 VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX = 1000060003,
1062 VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX = 1000060004,
1063 VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX = 1000060005,
1064 VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX = 1000060006,
1065 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX = 1000060007,
1066 VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX = 1000060008,
1067 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX = 1000060009,
1068 VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX = 1000060010,
1069 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX = 1000060011,
1070 VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX = 1000060012,
1071
1072 //@extension("VK_EXT_validation_flags") // 62
Jesse Halleb02c472017-02-24 15:13:45 -08001073 VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
1074
Jesse Halld0599582017-03-10 18:35:38 -08001075 //@extension("VK_NN_vi_surface") // 63
Jesse Hall08e2f482017-03-06 15:22:17 -08001076 VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000,
1077
Jesse Halld0599582017-03-10 18:35:38 -08001078 //@extension("VK_KHX_device_group_creation") // 71
1079 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX = 1000070000,
1080 VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX = 1000070001,
1081
1082 //@extension("VK_KHX_external_memory_capabilities") // 72
1083 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHX = 1000071000,
1084 VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHX = 1000071001,
1085 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHX = 1000071002,
1086 VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHX = 1000071003,
1087 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHX = 1000071004,
Jesse Halld0599582017-03-10 18:35:38 -08001088
1089 //@extension("VK_KHX_external_memory") // 73
1090 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHX = 1000072000,
1091 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHX = 1000072001,
1092 VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHX = 1000072002,
1093
1094 //@extension("VK_KHX_external_memory_win32") // 74
1095 VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHX = 1000073000,
1096 VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHX = 1000073001,
1097 VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHX = 1000073002,
1098
1099 //@extension("VK_KHX_external_memory_fd") // 75
1100 VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHX = 1000074000,
1101 VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHX = 1000074001,
1102
1103 //@extension("VK_KHX_win32_keyed_mutex") // 76
1104 VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHX = 1000075000,
1105
1106 //@extension("VK_KHX_external_semaphore_capabilities") // 77
1107 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHX = 1000076000,
1108 VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHX = 1000076001,
1109
1110 //@extension("VK_KHX_external_semaphore") // 78
1111 VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHX = 1000077000,
1112
1113 //@extension("VK_KHX_external_semaphore_win32") // 79
1114 VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX = 1000078000,
1115 VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX = 1000078001,
1116 VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHX = 1000078002,
1117
1118 //@extension("VK_KHX_external_semaphore_fd") // 80
1119 VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHX = 1000079000,
1120
1121 //@extension("VK_KHR_push_descriptor") // 81
1122 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000,
1123
Jesse Hall2c677d52017-03-20 13:09:19 -07001124 //@extension("VK_KHR_incremental_present") // 85
1125 VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
1126
Jesse Halld0599582017-03-10 18:35:38 -08001127 //@extension("VK_KHR_descriptor_update_template") // 86
1128 VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000,
1129
1130 //@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08001131 VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
1132 VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
1133 VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = 1000086002,
1134 VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = 1000086003,
1135 VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004,
1136 VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005,
Jesse Hall08e2f482017-03-06 15:22:17 -08001137
Jesse Halld0599582017-03-10 18:35:38 -08001138 //@extension("VK_NV_clip_space_w_scaling") // 88
1139 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000,
1140
1141 //@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall08e2f482017-03-06 15:22:17 -08001142 VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000,
1143
Jesse Halld0599582017-03-10 18:35:38 -08001144 //@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08001145 VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000,
1146 VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001,
1147 VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002,
1148 VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,
Jesse Halld0599582017-03-10 18:35:38 -08001149
Jesse Halle8ec6a22017-03-10 21:01:57 -08001150 //@extension("VK_GOOGLE_display_timing") // 93
1151 VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000,
1152
Jesse Halld0599582017-03-10 18:35:38 -08001153 //@extension("VK_NVX_multiview_per_view_attributes") // 98
1154 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000,
1155
1156 //@extension("VK_NV_viewport_swizzle") // 99
1157 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000,
1158
1159 //@extension("VK_EXT_discard_rectangles") // 100
1160 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,
1161 VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,
1162
Jesse Halle8ec6a22017-03-10 21:01:57 -08001163 //@extension("VK_EXT_hdr_metadata") // 106
1164 VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
1165
Jesse Halle5404242017-04-10 08:09:19 -07001166 //@extension("VK_KHR_shared_presentable_image") // 112
1167 VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
1168
1169 //@extension("VK_KHR_get_surface_capabilities2") // 120
1170 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,
1171 VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001,
1172 VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002,
1173
Jesse Halld0599582017-03-10 18:35:38 -08001174 //@extension("VK_MVK_ios_surface") // 123
1175 VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000,
1176
1177 //@extension("VK_MVK_macos_surface") // 124
1178 VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001179
1180 //@extension("VK_EXT_sampler_filter_minmax") // 131
1181 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000,
1182 VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001,
1183
1184 //@extension("VK_EXT_blend_operation_advanced") // 149
1185 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000,
1186 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001,
1187 VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
1188
1189 //@extension("VK_NV_fragment_coverage_to_color") // 150
1190 VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000,
1191
1192 //@structure("VK_NV_framebuffer_mixed_samples") // 153
1193 VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001194}
1195
Jesse Hall65ab5522015-11-30 00:07:16 -08001196enum VkSubpassContents {
1197 VK_SUBPASS_CONTENTS_INLINE = 0x00000000,
1198 VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001199}
1200
Jesse Hall543a7ff2016-01-08 16:38:30 -08001201enum VkPipelineCacheHeaderVersion {
1202 VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
1203}
1204
Jesse Hallbd888842015-11-30 21:44:14 -08001205@lastUnused(-11)
Jesse Halld27f6aa2015-08-15 17:58:48 -07001206/// Error and return codes
1207enum VkResult {
1208 // Return codes for successful operation execution (positive values)
Jesse Hallbd888842015-11-30 21:44:14 -08001209 VK_SUCCESS = 0,
1210 VK_NOT_READY = 1,
1211 VK_TIMEOUT = 2,
1212 VK_EVENT_SET = 3,
1213 VK_EVENT_RESET = 4,
1214 VK_INCOMPLETE = 5,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001215
Jesse Halld0599582017-03-10 18:35:38 -08001216 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -08001217 VK_SUBOPTIMAL_KHR = 1000001003,
Jesse Hall1356b0d2015-11-23 17:24:58 -08001218
Jesse Halld27f6aa2015-08-15 17:58:48 -07001219 // Error codes (negative values)
Jesse Hallbd888842015-11-30 21:44:14 -08001220 VK_ERROR_OUT_OF_HOST_MEMORY = 0xFFFFFFFF, // -1
1221 VK_ERROR_OUT_OF_DEVICE_MEMORY = 0xFFFFFFFE, // -2
1222 VK_ERROR_INITIALIZATION_FAILED = 0xFFFFFFFD, // -3
1223 VK_ERROR_DEVICE_LOST = 0xFFFFFFFC, // -4
1224 VK_ERROR_MEMORY_MAP_FAILED = 0xFFFFFFFB, // -5
1225 VK_ERROR_LAYER_NOT_PRESENT = 0xFFFFFFFA, // -6
1226 VK_ERROR_EXTENSION_NOT_PRESENT = 0xFFFFFFF9, // -7
1227 VK_ERROR_FEATURE_NOT_PRESENT = 0xFFFFFFF8, // -8
1228 VK_ERROR_INCOMPATIBLE_DRIVER = 0xFFFFFFF7, // -9
1229 VK_ERROR_TOO_MANY_OBJECTS = 0xFFFFFFF6, // -10
1230 VK_ERROR_FORMAT_NOT_SUPPORTED = 0xFFFFFFF5, // -11
Jesse Hall3f5499b2016-07-26 15:20:40 -07001231 VK_ERROR_FRAGMENTED_POOL = 0xFFFFFFF4, // -12
Jesse Hall1356b0d2015-11-23 17:24:58 -08001232
Jesse Halld0599582017-03-10 18:35:38 -08001233 //@extension("VK_KHR_surface") // 1
Jesse Hallbd888842015-11-30 21:44:14 -08001234 VK_ERROR_SURFACE_LOST_KHR = 0xC4653600, // -1000000000
Jesse Halld0599582017-03-10 18:35:38 -08001235 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = 0xC46535FF, // -1000000001
Jesse Halla6429252015-11-29 18:59:42 -08001236
Jesse Halld0599582017-03-10 18:35:38 -08001237 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -08001238 VK_ERROR_OUT_OF_DATE_KHR = 0xC4653214, // -1000001004
Jesse Hall1356b0d2015-11-23 17:24:58 -08001239
Jesse Halld0599582017-03-10 18:35:38 -08001240 //@extension("VK_KHR_display_swapchain") // 4
Jesse Hallbd888842015-11-30 21:44:14 -08001241 VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = 0xC4652A47, // -1000003001
Jesse Hall1356b0d2015-11-23 17:24:58 -08001242
Jesse Halld0599582017-03-10 18:35:38 -08001243 //@extension("VK_EXT_debug_report") // 12
Jesse Hall543a7ff2016-01-08 16:38:30 -08001244 VK_ERROR_VALIDATION_FAILED_EXT = 0xC4650B07, // -1000011001
Jesse Hall26763382016-05-20 07:13:52 -07001245
Jesse Halld0599582017-03-10 18:35:38 -08001246 //@extension("VK_NV_glsl_shader") // 13
Jesse Hall26763382016-05-20 07:13:52 -07001247 VK_ERROR_INVALID_SHADER_NV = 0xC4650720, // -1000012000
Jesse Hall08e2f482017-03-06 15:22:17 -08001248
Jesse Halld0599582017-03-10 18:35:38 -08001249 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall08e2f482017-03-06 15:22:17 -08001250 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = 0xC4642878, // -1000069000
Jesse Halld0599582017-03-10 18:35:38 -08001251
1252 //@extension("VK_KHX_external_memory") // 73
1253 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHX = 0xC4641CBD, // -1000072003
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001254}
1255
1256enum VkDynamicState {
1257 VK_DYNAMIC_STATE_VIEWPORT = 0x00000000,
1258 VK_DYNAMIC_STATE_SCISSOR = 0x00000001,
1259 VK_DYNAMIC_STATE_LINE_WIDTH = 0x00000002,
1260 VK_DYNAMIC_STATE_DEPTH_BIAS = 0x00000003,
1261 VK_DYNAMIC_STATE_BLEND_CONSTANTS = 0x00000004,
1262 VK_DYNAMIC_STATE_DEPTH_BOUNDS = 0x00000005,
1263 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 0x00000006,
1264 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 0x00000007,
1265 VK_DYNAMIC_STATE_STENCIL_REFERENCE = 0x00000008,
Jesse Halld0599582017-03-10 18:35:38 -08001266
1267 //@extension("VK_NV_clip_space_w_scaling") // 88
1268 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000,
1269
1270 //@extension("VK_EXT_discard_rectangles") // 100
1271 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001272}
1273
Jesse Halle5404242017-04-10 08:09:19 -07001274enum VkObjectType {
1275 VK_OBJECT_TYPE_UNKNOWN = 0,
1276 VK_OBJECT_TYPE_INSTANCE = 1,
1277 VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,
1278 VK_OBJECT_TYPE_DEVICE = 3,
1279 VK_OBJECT_TYPE_QUEUE = 4,
1280 VK_OBJECT_TYPE_SEMAPHORE = 5,
1281 VK_OBJECT_TYPE_COMMAND_BUFFER = 6,
1282 VK_OBJECT_TYPE_FENCE = 7,
1283 VK_OBJECT_TYPE_DEVICE_MEMORY = 8,
1284 VK_OBJECT_TYPE_BUFFER = 9,
1285 VK_OBJECT_TYPE_IMAGE = 10,
1286 VK_OBJECT_TYPE_EVENT = 11,
1287 VK_OBJECT_TYPE_QUERY_POOL = 12,
1288 VK_OBJECT_TYPE_BUFFER_VIEW = 13,
1289 VK_OBJECT_TYPE_IMAGE_VIEW = 14,
1290 VK_OBJECT_TYPE_SHADER_MODULE = 15,
1291 VK_OBJECT_TYPE_PIPELINE_CACHE = 16,
1292 VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,
1293 VK_OBJECT_TYPE_RENDER_PASS = 18,
1294 VK_OBJECT_TYPE_PIPELINE = 19,
1295 VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,
1296 VK_OBJECT_TYPE_SAMPLER = 21,
1297 VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,
1298 VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,
1299 VK_OBJECT_TYPE_FRAMEBUFFER = 24,
1300 VK_OBJECT_TYPE_COMMAND_POOL = 25,
1301
1302 //@extension("VK_KHR_surface") // 1
1303 VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,
1304
1305 //@extension("VK_KHR_swapchain") // 2
1306 VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,
1307
1308 //@extension("VK_KHR_display") // 3
1309 VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000,
1310 VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001,
1311
1312 //@extension("VK_KHR_debug_report") // 12
1313 VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000,
1314
1315 //@extension("VK_KHR_descriptor_update_template") // 86
1316 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000,
1317
1318 //@extension("VK_NVX_device_generated_commands") // 87
1319 VK_OBJECT_TYPE_OBJECT_TABLE_NVX = 1000086000,
1320 VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = 1000086001,
1321}
1322
Jesse Halld0599582017-03-10 18:35:38 -08001323@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08001324enum VkPresentModeKHR {
1325 VK_PRESENT_MODE_IMMEDIATE_KHR = 0x00000000,
1326 VK_PRESENT_MODE_MAILBOX_KHR = 0x00000001,
1327 VK_PRESENT_MODE_FIFO_KHR = 0x00000002,
Jesse Hall03b6fe12015-11-24 12:44:21 -08001328 VK_PRESENT_MODE_FIFO_RELAXED_KHR = 0x00000003,
Jesse Halle5404242017-04-10 08:09:19 -07001329
1330 //@extension("VK_KHR_shared_presentable_image") // 112
1331 VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,
1332 VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,
Michael Lentine88594d72015-11-12 12:49:45 -08001333}
1334
Jesse Halld0599582017-03-10 18:35:38 -08001335@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08001336enum VkColorSpaceKHR {
1337 VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0x00000000,
Jesse Hall2c677d52017-03-20 13:09:19 -07001338
1339 //@extension("VK_EXT_swapchain_colorspace") // 105
1340 VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
1341 VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
1342 VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003,
1343 VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
1344 VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
1345 VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
1346 VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
1347 VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
1348 VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
1349 VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
1350 VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
1351 VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
1352 VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
Michael Lentine88594d72015-11-12 12:49:45 -08001353}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001354
Jesse Halld0599582017-03-10 18:35:38 -08001355@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08001356enum VkDebugReportObjectTypeEXT {
1357 VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
1358 VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
1359 VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
1360 VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,
1361 VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,
1362 VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,
1363 VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,
1364 VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,
1365 VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,
1366 VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,
1367 VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,
1368 VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,
1369 VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,
1370 VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,
1371 VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,
1372 VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,
1373 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,
1374 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,
1375 VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,
1376 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,
1377 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,
1378 VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,
1379 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,
1380 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,
1381 VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,
1382 VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,
1383 VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
1384 VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001385 VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28,
Jesse Halleb02c472017-02-24 15:13:45 -08001386 VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29,
1387 VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,
1388 VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31,
1389 VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32,
Jesse Hall2c677d52017-03-20 13:09:19 -07001390
1391 //extension("VK_KHR_descriptor_update_template") // 86
1392 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000,
Jesse Hall715b86a2016-01-16 16:34:29 -08001393}
1394
Jesse Halld0599582017-03-10 18:35:38 -08001395@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07001396enum VkRasterizationOrderAMD {
1397 VK_RASTERIZATION_ORDER_STRICT_AMD = 0,
1398 VK_RASTERIZATION_ORDER_RELAXED_AMD = 1,
1399}
1400
Jesse Halld0599582017-03-10 18:35:38 -08001401@extension("VK_EXT_validation_flags") // 62
Jesse Halleb02c472017-02-24 15:13:45 -08001402enum VkValidationCheckEXT {
1403 VK_VALIDATION_CHECK_ALL_EXT = 0,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001404 VK_VALIDATION_CHECK_SHADERS_EXT = 1,
Jesse Halleb02c472017-02-24 15:13:45 -08001405}
1406
Jesse Halld0599582017-03-10 18:35:38 -08001407@extension("VK_KHR_descriptor_update_template") // 86
1408enum VkDescriptorUpdateTemplateTypeKHR {
1409 VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0,
1410 VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1,
1411}
1412
1413@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08001414enum VkIndirectCommandsTokenTypeNVX {
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001415 VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX = 0,
1416 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX = 1,
1417 VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX = 2,
1418 VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX = 3,
1419 VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX = 4,
1420 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX = 5,
1421 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX = 6,
1422 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX = 7,
Jesse Halleb02c472017-02-24 15:13:45 -08001423}
1424
Jesse Halld0599582017-03-10 18:35:38 -08001425@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08001426enum VkObjectEntryTypeNVX {
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001427 VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX = 0,
1428 VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX = 1,
1429 VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX = 2,
1430 VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX = 3,
1431 VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX = 4,
Jesse Halleb02c472017-02-24 15:13:45 -08001432}
Jesse Hall715b86a2016-01-16 16:34:29 -08001433
Jesse Halld0599582017-03-10 18:35:38 -08001434@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08001435enum VkDisplayPowerStateEXT {
1436 VK_DISPLAY_POWER_STATE_OFF_EXT = 0,
1437 VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,
1438 VK_DISPLAY_POWER_STATE_ON_EXT = 2,
1439}
1440
Jesse Halld0599582017-03-10 18:35:38 -08001441@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08001442enum VkDeviceEventTypeEXT {
1443 VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0,
1444}
1445
Jesse Halld0599582017-03-10 18:35:38 -08001446@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08001447enum VkDisplayEventTypeEXT {
1448 VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,
1449}
1450
Jesse Halld0599582017-03-10 18:35:38 -08001451@extension("VK_NV_viewport_swizzle") // 99
1452enum VkViewportCoordinateSwizzleNV {
1453 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0,
1454 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1,
1455 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2,
1456 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3,
1457 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4,
1458 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5,
1459 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6,
1460 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7,
1461}
1462
1463@extension("VK_EXT_discard_rectangles") // 100
1464enum VkDiscardRectangleModeEXT {
1465 VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,
1466 VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,
1467}
1468
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001469@extension("VK_EXT_sampler_filter_minmax") // 131
1470enum VkSamplerReductionModeEXT {
1471 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0,
1472 VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1,
1473 VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2,
1474}
1475
1476@extension("VK_EXT_blend_operation_advanced") // 149
1477enum VkBlendOverlapEXT {
1478 VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0,
1479 VK_BLEND_OVERLAP_DISJOINT_EXT = 1,
1480 VK_BLEND_OVERLAP_CONJOINT_EXT = 2,
1481}
1482
1483@extension("VK_NV_framebuffer_mixed_samples") // 153
1484enum VkCoverageModulationModeNV {
1485 VK_COVERAGE_MODULATION_MODE_NONE_NV = 0,
1486 VK_COVERAGE_MODULATION_MODE_RGB_NV = 1,
1487 VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2,
1488 VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3,
1489}
1490
Jesse Halld27f6aa2015-08-15 17:58:48 -07001491/////////////////
1492// Bitfields //
1493/////////////////
1494
Jesse Halld27f6aa2015-08-15 17:58:48 -07001495/// Queue capabilities
Jesse Halld8bade02015-11-24 10:24:18 -08001496type VkFlags VkQueueFlags
1497bitfield VkQueueFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001498 VK_QUEUE_GRAPHICS_BIT = 0x00000001, /// Queue supports graphics operations
1499 VK_QUEUE_COMPUTE_BIT = 0x00000002, /// Queue supports compute operations
Jesse Hall65ab5522015-11-30 00:07:16 -08001500 VK_QUEUE_TRANSFER_BIT = 0x00000004, /// Queue supports transfer operations
Jesse Hallb00daad2015-11-29 19:46:20 -08001501 VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008, /// Queue supports sparse resource memory management operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001502}
1503
1504/// Memory properties passed into vkAllocMemory().
Jesse Halld8bade02015-11-24 10:24:18 -08001505type VkFlags VkMemoryPropertyFlags
1506bitfield VkMemoryPropertyFlagBits {
Jesse Halld1af8122015-11-29 23:50:38 -08001507 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
1508 VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
1509 VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
1510 VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
1511 VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001512}
1513
1514/// Memory heap flags
Jesse Halld8bade02015-11-24 10:24:18 -08001515type VkFlags VkMemoryHeapFlags
1516bitfield VkMemoryHeapFlagBits {
Jesse Halld1af8122015-11-29 23:50:38 -08001517 VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
Jesse Halld0599582017-03-10 18:35:38 -08001518
1519 //@extension("VK_KHX_device_group_creation") // 71
1520 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001521}
1522
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001523/// Access flags
1524type VkFlags VkAccessFlags
1525bitfield VkAccessFlagBits {
1526 VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
1527 VK_ACCESS_INDEX_READ_BIT = 0x00000002,
1528 VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
1529 VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
1530 VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
1531 VK_ACCESS_SHADER_READ_BIT = 0x00000020,
1532 VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
1533 VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
1534 VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
1535 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
1536 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
1537 VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
1538 VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
1539 VK_ACCESS_HOST_READ_BIT = 0x00002000,
1540 VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
1541 VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
1542 VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
Jesse Halleb02c472017-02-24 15:13:45 -08001543
Jesse Halld0599582017-03-10 18:35:38 -08001544 //@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08001545 VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000,
1546 VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001547
1548 //@extension("VK_EXT_blend_operation_advanced") // 149
1549 VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001550}
1551
1552/// Buffer usage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001553type VkFlags VkBufferUsageFlags
1554bitfield VkBufferUsageFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -08001555 VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations
1556 VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001557 VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004, /// Can be used as TBO
1558 VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008, /// Can be used as IBO
1559 VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010, /// Can be used as UBO
1560 VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020, /// Can be used as SSBO
1561 VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, /// Can be used as source of fixed function index fetch (index buffer)
1562 VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, /// Can be used as source of fixed function vertex fetch (VBO)
1563 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, /// Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer)
1564}
1565
1566/// Buffer creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001567type VkFlags VkBufferCreateFlags
1568bitfield VkBufferCreateFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001569 VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Buffer should support sparse backing
Jesse Halld27f6aa2015-08-15 17:58:48 -07001570 VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Buffer should support sparse backing with partial residency
1571 VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004, /// Buffer should support constent data access to physical memory blocks mapped into multiple locations of sparse buffers
1572}
1573
1574/// Shader stage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001575type VkFlags VkShaderStageFlags
1576bitfield VkShaderStageFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001577 VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
Jesse Hallae38f732015-11-19 21:32:50 -08001578 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
1579 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001580 VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
1581 VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
1582 VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
Jesse Hallc7467b72015-11-29 21:05:26 -08001583 VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001584
1585 VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
1586}
1587
Jesse Hallfbf97b02015-11-20 14:17:03 -08001588/// Descriptor pool create flags
Jesse Halld8bade02015-11-24 10:24:18 -08001589type VkFlags VkDescriptorPoolCreateFlags
1590bitfield VkDescriptorPoolCreateFlagBits {
Jesse Hallfbf97b02015-11-20 14:17:03 -08001591 VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
1592}
1593
1594/// Descriptor pool reset flags
Jesse Halld8bade02015-11-24 10:24:18 -08001595type VkFlags VkDescriptorPoolResetFlags
Jesse Halla6429252015-11-29 18:59:42 -08001596//bitfield VkDescriptorPoolResetFlagBits {
1597//}
Jesse Hallfbf97b02015-11-20 14:17:03 -08001598
Jesse Halld27f6aa2015-08-15 17:58:48 -07001599/// Image usage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001600type VkFlags VkImageUsageFlags
1601bitfield VkImageUsageFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -08001602 VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations
1603 VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001604 VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004, /// Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
1605 VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008, /// Can be used as storage image (STORAGE_IMAGE descriptor type)
1606 VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010, /// Can be used as framebuffer color attachment
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001607 VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020, /// Can be used as framebuffer depth/stencil attachment
Jesse Halld27f6aa2015-08-15 17:58:48 -07001608 VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040, /// Image data not needed outside of rendering
1609 VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080, /// Can be used as framebuffer input attachment
1610}
1611
1612/// Image creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001613type VkFlags VkImageCreateFlags
1614bitfield VkImageCreateFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001615 VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Image should support sparse backing
Jesse Halld27f6aa2015-08-15 17:58:48 -07001616 VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Image should support sparse backing with partial residency
1617 VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004, /// Image should support constent data access to physical memory blocks mapped into multiple locations of sparse images
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001618 VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008, /// Allows image views to have different format than the base image
1619 VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010, /// Allows creating image views with cube type from the created image
Jesse Hall08e2f482017-03-06 15:22:17 -08001620
Jesse Halld0599582017-03-10 18:35:38 -08001621 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall08e2f482017-03-06 15:22:17 -08001622 VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 0x00000020,
Jesse Halld0599582017-03-10 18:35:38 -08001623
1624 //@extension("VK_KHX_device_group") // 61
1625 VK_IMAGE_CREATE_BIND_SFR_BIT_KHX = 0x00000040,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001626}
1627
Jesse Hallb00daad2015-11-29 19:46:20 -08001628/// Image view creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001629type VkFlags VkImageViewCreateFlags
Jesse Hallb00daad2015-11-29 19:46:20 -08001630//bitfield VkImageViewCreateFlagBits {
1631//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001632
1633/// Pipeline creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001634type VkFlags VkPipelineCreateFlags
1635bitfield VkPipelineCreateFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001636 VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
1637 VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
1638 VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
Jesse Halld0599582017-03-10 18:35:38 -08001639
1640 //@extension("VK_KHX_device_group") // 61
1641 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX = 0x00000008,
1642 VK_PIPELINE_CREATE_DISPATCH_BASE_KHX = 0x00000010,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001643}
1644
Jesse Hall65ab5522015-11-30 00:07:16 -08001645/// Color component flags
1646type VkFlags VkColorComponentFlags
1647bitfield VkColorComponentFlagBits {
1648 VK_COLOR_COMPONENT_R_BIT = 0x00000001,
1649 VK_COLOR_COMPONENT_G_BIT = 0x00000002,
1650 VK_COLOR_COMPONENT_B_BIT = 0x00000004,
1651 VK_COLOR_COMPONENT_A_BIT = 0x00000008,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001652}
1653
1654/// Fence creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001655type VkFlags VkFenceCreateFlags
1656bitfield VkFenceCreateFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001657 VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
1658}
1659
1660/// Semaphore creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001661type VkFlags VkSemaphoreCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001662//bitfield VkSemaphoreCreateFlagBits {
1663//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001664
1665/// Format capability flags
Jesse Halld8bade02015-11-24 10:24:18 -08001666type VkFlags VkFormatFeatureFlags
1667bitfield VkFormatFeatureFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001668 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001, /// Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
1669 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002, /// Format can be used for storage images (STORAGE_IMAGE descriptor type)
1670 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004, /// Format supports atomic operations in case it's used for storage images
1671 VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008, /// Format can be used for uniform texel buffers (TBOs)
1672 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010, /// Format can be used for storage texel buffers (IBOs)
1673 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020, /// Format supports atomic operations in case it's used for storage texel buffers
1674 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040, /// Format can be used for vertex buffers (VBOs)
1675 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080, /// Format can be used for color attachment images
1676 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100, /// Format supports blending in case it's used for color attachment images
1677 VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200, /// Format can be used for depth/stencil attachment images
Jesse Hall3fbc8562015-11-29 22:10:52 -08001678 VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400, /// Format can be used as the source image of blits with vkCommandBlitImage
1679 VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800, /// Format can be used as the destination image of blits with vkCommandBlitImage
Jesse Hall33faaad2016-01-24 21:00:49 -08001680 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
Jesse Hall26763382016-05-20 07:13:52 -07001681
Jesse Halld0599582017-03-10 18:35:38 -08001682 //@extension("VK_IMG_filter_cubic") // 16
Jesse Hall26763382016-05-20 07:13:52 -07001683 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
Jesse Hall08e2f482017-03-06 15:22:17 -08001684
Jesse Halld0599582017-03-10 18:35:38 -08001685 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall08e2f482017-03-06 15:22:17 -08001686 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 0x00004000,
1687 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 0x00008000,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001688
1689 //@extension("VK_EXT_sampler_filter_minmax") // 131
1690 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 0x00010000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001691}
1692
1693/// Query control flags
Jesse Halld8bade02015-11-24 10:24:18 -08001694type VkFlags VkQueryControlFlags
1695bitfield VkQueryControlFlagBits {
Jesse Hall65ab5522015-11-30 00:07:16 -08001696 VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001697}
1698
1699/// Query result flags
Jesse Halld8bade02015-11-24 10:24:18 -08001700type VkFlags VkQueryResultFlags
1701bitfield VkQueryResultFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001702 VK_QUERY_RESULT_64_BIT = 0x00000001, /// Results of the queries are written to the destination buffer as 64-bit values
1703 VK_QUERY_RESULT_WAIT_BIT = 0x00000002, /// Results of the queries are waited on before proceeding with the result copy
1704 VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, /// Besides the results of the query, the availability of the results is also written
1705 VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008, /// Copy the partial results of the query even if the final results aren't available
1706}
1707
1708/// Shader module creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001709type VkFlags VkShaderModuleCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001710//bitfield VkShaderModuleCreateFlagBits {
1711//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001712
Jesse Halld27f6aa2015-08-15 17:58:48 -07001713/// Event creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001714type VkFlags VkEventCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001715//bitfield VkEventCreateFlagBits {
1716//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001717
Jesse Halla15a4bf2015-11-19 22:48:02 -08001718/// Command buffer usage flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08001719type VkFlags VkCommandBufferUsageFlags
1720bitfield VkCommandBufferUsageFlagBits {
1721 VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
1722 VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
1723 VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001724}
1725
1726/// Pipeline statistics flags
Jesse Halld8bade02015-11-24 10:24:18 -08001727type VkFlags VkQueryPipelineStatisticFlags
1728bitfield VkQueryPipelineStatisticFlagBits {
Jesse Hallae38f732015-11-19 21:32:50 -08001729 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001, /// Optional
1730 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002, /// Optional
1731 VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004, /// Optional
1732 VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008, /// Optional
1733 VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010, /// Optional
1734 VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020, /// Optional
1735 VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040, /// Optional
1736 VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080, /// Optional
1737 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100, /// Optional
1738 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200, /// Optional
1739 VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400, /// Optional
Jesse Halld27f6aa2015-08-15 17:58:48 -07001740}
1741
1742/// Memory mapping flags
Jesse Halld8bade02015-11-24 10:24:18 -08001743type VkFlags VkMemoryMapFlags
Jesse Halla6429252015-11-29 18:59:42 -08001744//bitfield VkMemoryMapFlagBits {
1745//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001746
1747/// Bitfield of image aspects
Jesse Halld8bade02015-11-24 10:24:18 -08001748type VkFlags VkImageAspectFlags
1749bitfield VkImageAspectFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001750 VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
1751 VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
1752 VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
1753 VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
1754}
1755
1756/// Sparse memory bind flags
Jesse Halld8bade02015-11-24 10:24:18 -08001757type VkFlags VkSparseMemoryBindFlags
Jesse Hall091ed9e2015-11-30 00:55:29 -08001758bitfield VkSparseMemoryBindFlagBits {
1759 VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
1760}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001761
1762/// Sparse image memory requirements flags
Jesse Halld8bade02015-11-24 10:24:18 -08001763type VkFlags VkSparseImageFormatFlags
1764bitfield VkSparseImageFormatFlagBits {
Jesse Hallb00daad2015-11-29 19:46:20 -08001765 VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001, /// Image uses a single miptail region for all array slices
1766 VK_SPARSE_IMAGE_FORMAT_ALIGNED_MIP_SIZE_BIT = 0x00000002, /// Image requires mip levels to be an exact multiple of the sparse iamge block size for non-mip-tail levels.
1767 VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004, /// Image uses a non-standard sparse block size
Jesse Halld27f6aa2015-08-15 17:58:48 -07001768}
1769
1770/// Pipeline stages
Jesse Halld8bade02015-11-24 10:24:18 -08001771type VkFlags VkPipelineStageFlags
1772bitfield VkPipelineStageFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001773 VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001, /// Before subsequent commands are processed
1774 VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002, /// Draw/DispatchIndirect command fetch
1775 VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004, /// Vertex/index fetch
1776 VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008, /// Vertex shading
Jesse Hallae38f732015-11-19 21:32:50 -08001777 VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010, /// Tessellation control shading
1778 VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020, /// Tessellation evaluation shading
Jesse Halld27f6aa2015-08-15 17:58:48 -07001779 VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040, /// Geometry shading
1780 VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080, /// Fragment shading
1781 VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100, /// Early fragment (depth/stencil) tests
1782 VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200, /// Late fragment (depth/stencil) tests
1783 VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400, /// Color attachment writes
1784 VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800, /// Compute shading
1785 VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000, /// Transfer/copy operations
Jesse Hall543a7ff2016-01-08 16:38:30 -08001786 VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
1787 VK_PIPELINE_STAGE_HOST_BIT = 0x00004000, /// Indicates host (CPU) is a source/sink of the dependency
Jesse Halld27f6aa2015-08-15 17:58:48 -07001788
Jesse Hall543a7ff2016-01-08 16:38:30 -08001789 VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000, /// All stages of the graphics pipeline
1790 VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000, /// All graphics, compute, copy, and transition commands
Jesse Halleb02c472017-02-24 15:13:45 -08001791
Jesse Halld0599582017-03-10 18:35:38 -08001792 //@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08001793 VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001794}
1795
1796/// Render pass attachment description flags
Jesse Halld8bade02015-11-24 10:24:18 -08001797type VkFlags VkAttachmentDescriptionFlags
1798bitfield VkAttachmentDescriptionFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001799 VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001, /// The attachment may alias physical memory of another attachment in the same renderpass
Jesse Halld27f6aa2015-08-15 17:58:48 -07001800}
1801
1802/// Subpass description flags
Jesse Halld8bade02015-11-24 10:24:18 -08001803type VkFlags VkSubpassDescriptionFlags
1804bitfield VkSubpassDescriptionFlagBits {
Jesse Halld0599582017-03-10 18:35:38 -08001805 //@extension("VK_NVX_multiview_per_view_attributes") // 98
1806 VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001,
1807 VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001808}
1809
1810/// Command pool creation flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08001811type VkFlags VkCommandPoolCreateFlags
1812bitfield VkCommandPoolCreateFlagBits {
1813 VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001, /// Command buffers have a short lifetime
1814 VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002, /// Command buffers may release their memory individually
Jesse Halld27f6aa2015-08-15 17:58:48 -07001815}
1816
1817/// Command pool reset flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08001818type VkFlags VkCommandPoolResetFlags
1819bitfield VkCommandPoolResetFlagBits {
1820 VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the pool
Jesse Halld27f6aa2015-08-15 17:58:48 -07001821}
1822
Jesse Hall3fbc8562015-11-29 22:10:52 -08001823type VkFlags VkCommandBufferResetFlags
1824bitfield VkCommandBufferResetFlagBits {
1825 VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the buffer
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001826}
1827
Jesse Halld8bade02015-11-24 10:24:18 -08001828type VkFlags VkSampleCountFlags
1829bitfield VkSampleCountFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001830 VK_SAMPLE_COUNT_1_BIT = 0x00000001,
1831 VK_SAMPLE_COUNT_2_BIT = 0x00000002,
1832 VK_SAMPLE_COUNT_4_BIT = 0x00000004,
1833 VK_SAMPLE_COUNT_8_BIT = 0x00000008,
1834 VK_SAMPLE_COUNT_16_BIT = 0x00000010,
1835 VK_SAMPLE_COUNT_32_BIT = 0x00000020,
1836 VK_SAMPLE_COUNT_64_BIT = 0x00000040,
1837}
1838
Jesse Halld8bade02015-11-24 10:24:18 -08001839type VkFlags VkStencilFaceFlags
1840bitfield VkStencilFaceFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001841 VK_STENCIL_FACE_FRONT_BIT = 0x00000001, /// Front face
1842 VK_STENCIL_FACE_BACK_BIT = 0x00000002, /// Back face
Jesse Hallc7467b72015-11-29 21:05:26 -08001843 VK_STENCIL_FRONT_AND_BACK = 0x00000003,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001844}
1845
Jesse Halla6429252015-11-29 18:59:42 -08001846/// Instance creation flags
1847type VkFlags VkInstanceCreateFlags
1848//bitfield VkInstanceCreateFlagBits {
1849//}
1850
1851/// Device creation flags
1852type VkFlags VkDeviceCreateFlags
1853//bitfield VkDeviceCreateFlagBits {
1854//}
1855
1856/// Device queue creation flags
1857type VkFlags VkDeviceQueueCreateFlags
1858//bitfield VkDeviceQueueCreateFlagBits {
1859//}
1860
1861/// Query pool creation flags
1862type VkFlags VkQueryPoolCreateFlags
1863//bitfield VkQueryPoolCreateFlagBits {
1864//}
1865
1866/// Buffer view creation flags
1867type VkFlags VkBufferViewCreateFlags
1868//bitfield VkBufferViewCreateFlagBits {
1869//}
1870
1871/// Pipeline cache creation flags
1872type VkFlags VkPipelineCacheCreateFlags
1873//bitfield VkPipelineCacheCreateFlagBits {
1874//}
1875
1876/// Pipeline shader stage creation flags
1877type VkFlags VkPipelineShaderStageCreateFlags
1878//bitfield VkPipelineShaderStageCreateFlagBits {
1879//}
1880
1881/// Descriptor set layout creation flags
1882type VkFlags VkDescriptorSetLayoutCreateFlags
Jesse Halld0599582017-03-10 18:35:38 -08001883bitfield VkDescriptorSetLayoutCreateFlagBits {
1884 //@extension("VK_KHR_push_descriptor") // 81
1885 VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
1886}
Jesse Halla6429252015-11-29 18:59:42 -08001887
1888/// Pipeline vertex input state creation flags
1889type VkFlags VkPipelineVertexInputStateCreateFlags
1890//bitfield VkPipelineVertexInputStateCreateFlagBits {
1891//}
1892
1893/// Pipeline input assembly state creation flags
1894type VkFlags VkPipelineInputAssemblyStateCreateFlags
1895//bitfield VkPipelineInputAssemblyStateCreateFlagBits {
1896//}
1897
1898/// Tessellation state creation flags
1899type VkFlags VkPipelineTessellationStateCreateFlags
1900//bitfield VkPipelineTessellationStateCreateFlagBits {
1901//}
1902
1903/// Viewport state creation flags
1904type VkFlags VkPipelineViewportStateCreateFlags
1905//bitfield VkPipelineViewportStateCreateFlagBits {
1906//}
1907
Jesse Hall3fbc8562015-11-29 22:10:52 -08001908/// Rasterization state creation flags
1909type VkFlags VkPipelineRasterizationStateCreateFlags
1910//bitfield VkPipelineRasterizationStateCreateFlagBits {
Jesse Halla6429252015-11-29 18:59:42 -08001911//}
1912
1913/// Multisample state creation flags
1914type VkFlags VkPipelineMultisampleStateCreateFlags
1915//bitfield VkPipelineMultisampleStateCreateFlagBits {
1916//}
1917
1918/// Color blend state creation flags
1919type VkFlags VkPipelineColorBlendStateCreateFlags
1920//bitfield VkPipelineColorBlendStateCreateFlagBits {
1921//}
1922
1923/// Depth/stencil state creation flags
1924type VkFlags VkPipelineDepthStencilStateCreateFlags
1925//bitfield VkPipelineDepthStencilStateCreateFlagBits {
1926//}
1927
1928/// Dynamic state creation flags
1929type VkFlags VkPipelineDynamicStateCreateFlags
1930//bitfield VkPipelineDynamicStateCreateFlagBits {
1931//}
1932
1933/// Pipeline layout creation flags
1934type VkFlags VkPipelineLayoutCreateFlags
1935//bitfield VkPipelineLayoutCreateFlagBits {
1936//}
1937
1938/// Sampler creation flags
1939type VkFlags VkSamplerCreateFlags
1940//bitfield VkSamplerCreateFlagBits {
1941//}
1942
1943/// Render pass creation flags
1944type VkFlags VkRenderPassCreateFlags
1945//bitfield VkRenderPassCreateFlagBits {
1946//}
1947
1948/// Framebuffer creation flags
1949type VkFlags VkFramebufferCreateFlags
1950//bitfield VkFramebufferCreateFlagBits {
1951//}
1952
Jesse Halldc6d36c2015-11-29 19:12:15 -08001953/// Dependency flags
1954type VkFlags VkDependencyFlags
1955bitfield VkDependencyFlagBits {
1956 VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
Jesse Halld0599582017-03-10 18:35:38 -08001957
1958 //@extension("VK_KHX_multiview") // 54
1959 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX = 0x00000002,
1960
1961 //@extension("VK_KHX_device_group") // 61
1962 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX = 0x00000004,
Jesse Halldc6d36c2015-11-29 19:12:15 -08001963}
1964
Jesse Hallc7467b72015-11-29 21:05:26 -08001965/// Cull mode flags
1966type VkFlags VkCullModeFlags
1967bitfield VkCullModeFlagBits {
1968 VK_CULL_MODE_NONE = 0x00000000,
1969 VK_CULL_MODE_FRONT_BIT = 0x00000001,
1970 VK_CULL_MODE_BACK_BIT = 0x00000002,
1971 VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
1972}
1973
Jesse Halld0599582017-03-10 18:35:38 -08001974@extension("VK_KHR_surface") // 1
Jesse Halld8bade02015-11-24 10:24:18 -08001975type VkFlags VkSurfaceTransformFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08001976@extension("VK_KHR_surface") // 1
Jesse Halld8bade02015-11-24 10:24:18 -08001977bitfield VkSurfaceTransformFlagBitsKHR {
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001978 VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
Jesse Hall9ba8bc82015-11-30 16:22:16 -08001979 VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
1980 VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
1981 VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
1982 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
1983 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
1984 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
1985 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
1986 VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
Michael Lentine88594d72015-11-12 12:49:45 -08001987}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001988
Jesse Halld0599582017-03-10 18:35:38 -08001989@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08001990type VkFlags VkCompositeAlphaFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08001991@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08001992bitfield VkCompositeAlphaFlagBitsKHR {
1993 VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
1994 VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
1995 VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
1996 VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
1997}
1998
Jesse Halld0599582017-03-10 18:35:38 -08001999@extension("VK_KHR_swapchain") // 2
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002000type VkFlags VkSwapchainCreateFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08002001@extension("VK_KHR_swapchain") // 2
2002bitfield VkSwapchainCreateFlagBitsKHR {
2003 //@extension("VK_KHX_device_group") // 61
2004 VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX = 0x00000001,
2005}
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002006
Jesse Halld0599582017-03-10 18:35:38 -08002007@extension("VK_KHR_display") // 3
Jesse Halld8bade02015-11-24 10:24:18 -08002008type VkFlags VkDisplayPlaneAlphaFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08002009@extension("VK_KHR_display") // 3
Jesse Halld8bade02015-11-24 10:24:18 -08002010bitfield VkDisplayPlaneAlphaFlagBitsKHR {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002011 VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
2012 VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
2013 VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
2014 VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
Jesse Hall1356b0d2015-11-23 17:24:58 -08002015}
2016
Jesse Halld0599582017-03-10 18:35:38 -08002017@extension("VK_KHR_display") // 3
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002018type VkFlags VkDisplaySurfaceCreateFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08002019//@extension("VK_KHR_display") // 3
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002020//bitfield VkDisplaySurfaceCreateFlagBitsKHR {
2021//}
2022
Jesse Halld0599582017-03-10 18:35:38 -08002023@extension("VK_KHR_display") // 3
Jesse Hall9ba8bc82015-11-30 16:22:16 -08002024type VkFlags VkDisplayModeCreateFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08002025//@extension("VK_KHR_display") // 3
Jesse Hall9ba8bc82015-11-30 16:22:16 -08002026//bitfield VkDisplayModeCreateFlagBitsKHR {
2027//}
2028
Jesse Halld0599582017-03-10 18:35:38 -08002029@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002030type VkFlags VkXlibSurfaceCreateFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08002031//@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002032//bitfield VkXlibSurfaceCreateFlagBitsKHR {
2033//}
2034
Jesse Halld0599582017-03-10 18:35:38 -08002035@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002036type VkFlags VkXcbSurfaceCreateFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08002037//@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002038//bitfield VkXcbSurfaceCreateFlagBitsKHR {
2039//}
2040
Jesse Halld0599582017-03-10 18:35:38 -08002041@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002042type VkFlags VkWaylandSurfaceCreateFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08002043//@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002044//bitfield VkWaylandSurfaceCreateFlagBitsKHR {
2045//}
2046
Jesse Halld0599582017-03-10 18:35:38 -08002047@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002048type VkFlags VkMirSurfaceCreateFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08002049//@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002050//bitfield VkMirSurfaceCreateFlagBitsKHR {
2051//}
2052
Jesse Halld0599582017-03-10 18:35:38 -08002053@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002054type VkFlags VkAndroidSurfaceCreateFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08002055//@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002056//bitfield VkAndroidSurfaceCreateFlagBitsKHR {
2057//}
2058
Jesse Halld0599582017-03-10 18:35:38 -08002059@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002060type VkFlags VkWin32SurfaceCreateFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08002061//@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002062//bitfield VkWin32SurfaceCreateFlagBitsKHR {
2063//}
2064
Jesse Halld0599582017-03-10 18:35:38 -08002065@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08002066type VkFlags VkDebugReportFlagsEXT
Jesse Halld0599582017-03-10 18:35:38 -08002067@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08002068bitfield VkDebugReportFlagBitsEXT {
Jesse Halle2948d82016-02-25 04:19:32 -08002069 VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,
2070 VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002,
2071 VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004,
Jesse Hall715b86a2016-01-16 16:34:29 -08002072 VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008,
2073 VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010,
2074}
2075
Jesse Halld0599582017-03-10 18:35:38 -08002076@extension("VK_NV_external_memory_capabilities") // 56
Jesse Halleb02c472017-02-24 15:13:45 -08002077type VkFlags VkExternalMemoryHandleTypeFlagsNV
Jesse Halld0599582017-03-10 18:35:38 -08002078@extension("VK_NV_external_memory_capabilities") // 56
Jesse Halleb02c472017-02-24 15:13:45 -08002079bitfield VkExternalMemoryHandleTypeFlagBitsNV {
2080 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,
2081 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,
2082 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,
2083 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,
2084}
2085
Jesse Halld0599582017-03-10 18:35:38 -08002086@extension("VK_NV_external_memory_capabilities") // 56
Jesse Halleb02c472017-02-24 15:13:45 -08002087type VkFlags VkExternalMemoryFeatureFlagsNV
Jesse Halld0599582017-03-10 18:35:38 -08002088@extension("VK_NV_external_memory_capabilities") // 56
Jesse Halleb02c472017-02-24 15:13:45 -08002089bitfield VkExternalMemoryFeatureFlagBitsNV {
2090 VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001,
2091 VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002,
2092 VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004,
2093}
2094
Jesse Halld0599582017-03-10 18:35:38 -08002095@extension("VK_KHX_device_group") // 61
2096type VkFlags VkPeerMemoryFeatureFlagsKHX
2097@extension("VK_KHX_device_group") // 61
2098bitfield VkPeerMemoryFeatureFlagBitsKHX {
2099 VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX = 0x00000001,
2100 VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX = 0x00000002,
2101 VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX = 0x00000004,
2102 VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX = 0x00000008,
2103}
2104
2105@extension("VK_KHX_device_group") // 61
2106type VkFlags VkMemoryAllocateFlagsKHX
2107@extension("VK_KHX_device_group") // 61
2108bitfield VkMemoryAllocateFlagBitsKHX {
2109 VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX = 0x00000001,
2110}
2111
2112@extension("VK_KHX_device_group") // 61
2113type VkFlags VkDeviceGroupPresentModeFlagsKHX
2114@extension("VK_KHX_device_group") // 61
2115bitfield VkDeviceGroupPresentModeFlagBitsKHX {
2116 VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX = 0x00000001,
2117 VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX = 0x00000002,
2118 VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX = 0x00000004,
2119 VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX = 0x00000008,
2120}
2121
2122@extension("VK_NN_vi_surface") // 63
Jesse Hall08e2f482017-03-06 15:22:17 -08002123type VkFlags VkViSurfaceCreateFlagsNN
Jesse Halld0599582017-03-10 18:35:38 -08002124//@extension("VK_NN_vi_surface") // 63
Jesse Hall08e2f482017-03-06 15:22:17 -08002125//bitfield VkViSurfaceCreateFlagBitsNN {
2126//}
2127
Jesse Halld0599582017-03-10 18:35:38 -08002128@extension("VK_KHR_maintenance1") // 70
Jesse Hall08e2f482017-03-06 15:22:17 -08002129type VkFlags VkCommandPoolTrimFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08002130//@extension("VK_KHR_maintenance1") // 70
Jesse Hall08e2f482017-03-06 15:22:17 -08002131//bitfield VkCommandPoolTrimFlagBitsKHR {
2132//}
2133
Jesse Halld0599582017-03-10 18:35:38 -08002134@extension("VK_KHX_external_memory_capabilities") // 72
2135type VkFlags VkExternalMemoryHandleTypeFlagsKHX
2136@extension("VK_KHX_external_memory_capabilities") // 72
2137bitfield VkExternalMemoryHandleTypeFlagBitsKHX {
2138 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHX = 0x00000001,
2139 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX = 0x00000002,
2140 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX = 0x00000004,
2141 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHX = 0x00000008,
2142 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHX = 0x00000010,
2143 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHX = 0x00000020,
2144 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHX = 0x00000040,
2145}
2146
2147@extension("VK_KHX_external_memory_capabilities") // 72
2148type VkFlags VkExternalMemoryFeatureFlagsKHX
2149@extension("VK_KHX_external_memory_capabilities") // 72
2150bitfield VkExternalMemoryFeatureFlagBitsKHX {
2151 VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHX = 0x00000001,
2152 VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHX = 0x00000002,
2153 VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHX = 0x00000004,
2154}
2155
2156@extension("VK_KHX_external_semaphore_capabilities") // 77
2157type VkFlags VkExternalSemaphoreHandleTypeFlagsKHX
2158@extension("VK_KHX_external_semaphore_capabilities") // 77
2159bitfield VkExternalSemaphoreHandleTypeFlagBitsKHX {
2160 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHX = 0x00000001
2161 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX = 0x00000002
2162 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX = 0x00000004
2163 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHX = 0x00000008
2164 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHX = 0x00000010
2165}
2166
2167@extension("VK_KHX_external_semaphore_capabilities") // 77
2168type VkFlags VkExternalSemaphoreFeatureFlagsKHX
2169@extension("VK_KHX_external_semaphore_capabilities") // 77
2170bitfield VkExternalSemaphoreFeatureFlagBitsKHX {
2171 VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHX = 0x00000001,
2172 VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHX = 0x00000002,
2173}
2174
2175@extension("VK_KHR_descriptor_update_template") // 86
2176type VkFlags VkDescriptorUpdateTemplateCreateFlagsKHR
2177//@extension("VK_KHR_descriptor_update_template") // 86
2178//bitfield VkDescriptorUpdateTemplateCreateFlagBitsKHR {
2179//}
2180
2181@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08002182type VkFlags VkIndirectCommandsLayoutUsageFlagsNVX
Jesse Halld0599582017-03-10 18:35:38 -08002183@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08002184bitfield VkIndirectCommandsLayoutUsageFlagBitsNVX {
2185 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = 0x00000001,
2186 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = 0x00000002,
2187 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = 0x00000004,
2188 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = 0x00000008,
2189}
2190
Jesse Halld0599582017-03-10 18:35:38 -08002191@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08002192type VkFlags VkObjectEntryUsageFlagsNVX
Jesse Halld0599582017-03-10 18:35:38 -08002193@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08002194bitfield VkObjectEntryUsageFlagBitsNVX {
2195 VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = 0x00000001,
2196 VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = 0x00000002,
2197}
2198
Jesse Halld0599582017-03-10 18:35:38 -08002199@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall08e2f482017-03-06 15:22:17 -08002200type VkFlags VkSurfaceCounterFlagsEXT
Jesse Halld0599582017-03-10 18:35:38 -08002201@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall08e2f482017-03-06 15:22:17 -08002202bitfield VkSurfaceCounterFlagBitsEXT {
2203 VK_SURFACE_COUNTER_VBLANK_EXT = 0x00000001,
2204}
Jesse Hall1356b0d2015-11-23 17:24:58 -08002205
Jesse Halld0599582017-03-10 18:35:38 -08002206@extension("VK_NV_viewport_swizzle") // 99
2207type VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV
2208//@extension("VK_NV_viewport_swizzle") // 99
2209//bitfield VkPipelineViewportSwizzleStateCreateFlagBitsNV {
2210//}
2211
2212@extension("VK_EXT_discard_rectangles") // 100
2213type VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT
2214//@extension("VK_EXT_discard_rectangles") // 100
2215//bitfield VkPipelineDiscardRectangleStateCreateFlagBitsEXT {
2216//}
2217
2218@extension("VK_MVK_ios_surface") // 123
2219type VkFlags VkIOSSurfaceCreateFlagsMVK
2220//@extension("VK_MVK_ios_surface") // 123
2221//bitfield VkIOSSurfaceCreateFlagBitsMVK {
2222//}
2223
2224@extension("VK_MVK_macos_surface") // 124
2225type VkFlags VkMacOSSurfaceCreateFlagsMVK
2226//@extension("VK_MVK_macos_surface") // 124
2227//bitfield VkMacOSSurfaceCreateFlagBitsMVK {
2228//}
2229
Jesse Hall7ba0ac72017-07-07 17:13:23 -07002230@extension("VK_NV_fragment_coverage_to_color") // 150
2231type VkFlags VkPipelineCoverageToColorStateCreateFlagsNV
2232@extension("VK_NV_fragment_coverage_to_color") // 150
2233//bitfield VkPipelineCoverageToColorStateCreateFlagBitsNV {
2234//}
2235
2236@extension("VK_NV_framebuffer_mixed_samples") // 153
2237type VkFlags VkPipelineCoverageModulationStateCreateFlagsNV
2238@extension("VK_NV_framebuffer_mixed_samples") // 153
2239//bitfield VkPipelineCoverageModulationStateCreateFlagBitsNV {
2240//}
2241
Jesse Halld27f6aa2015-08-15 17:58:48 -07002242//////////////////
2243// Structures //
2244//////////////////
2245
2246class VkOffset2D {
2247 s32 x
2248 s32 y
2249}
2250
2251class VkOffset3D {
2252 s32 x
2253 s32 y
2254 s32 z
2255}
2256
2257class VkExtent2D {
Jesse Hall3dd678a2016-01-08 21:52:01 -08002258 u32 width
2259 u32 height
Jesse Halld27f6aa2015-08-15 17:58:48 -07002260}
2261
2262class VkExtent3D {
Jesse Hall3dd678a2016-01-08 21:52:01 -08002263 u32 width
2264 u32 height
2265 u32 depth
Jesse Halld27f6aa2015-08-15 17:58:48 -07002266}
2267
2268class VkViewport {
Jesse Hall65ab5522015-11-30 00:07:16 -08002269 f32 x
2270 f32 y
Jesse Halld27f6aa2015-08-15 17:58:48 -07002271 f32 width
2272 f32 height
2273 f32 minDepth
2274 f32 maxDepth
2275}
2276
2277class VkRect2D {
2278 VkOffset2D offset
2279 VkExtent2D extent
2280}
2281
Jesse Halla15a4bf2015-11-19 22:48:02 -08002282class VkClearRect {
2283 VkRect2D rect
2284 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002285 u32 layerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002286}
2287
Jesse Hall65ab5522015-11-30 00:07:16 -08002288class VkComponentMapping {
2289 VkComponentSwizzle r
2290 VkComponentSwizzle g
2291 VkComponentSwizzle b
2292 VkComponentSwizzle a
Jesse Halld27f6aa2015-08-15 17:58:48 -07002293}
2294
2295class VkPhysicalDeviceProperties {
2296 u32 apiVersion
2297 u32 driverVersion
Jesse Hall65ab5522015-11-30 00:07:16 -08002298 u32 vendorID
2299 u32 deviceID
Jesse Halld27f6aa2015-08-15 17:58:48 -07002300 VkPhysicalDeviceType deviceType
Jesse Hall65ab5522015-11-30 00:07:16 -08002301 char[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE] deviceName
2302 u8[VK_UUID_SIZE] pipelineCacheUUID
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002303 VkPhysicalDeviceLimits limits
2304 VkPhysicalDeviceSparseProperties sparseProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07002305}
2306
2307class VkExtensionProperties {
Jesse Hall65ab5522015-11-30 00:07:16 -08002308 char[VK_MAX_EXTENSION_NAME_SIZE] extensionName /// extension name
Jesse Halld27f6aa2015-08-15 17:58:48 -07002309 u32 specVersion /// version of the extension specification implemented
2310}
2311
2312class VkLayerProperties {
Jesse Hall65ab5522015-11-30 00:07:16 -08002313 char[VK_MAX_EXTENSION_NAME_SIZE] layerName /// layer name
Jesse Hall3fbc8562015-11-29 22:10:52 -08002314 u32 specVersion /// version of the layer specification implemented
2315 u32 implementationVersion /// build or release version of the layer's library
Jesse Hall65ab5522015-11-30 00:07:16 -08002316 char[VK_MAX_DESCRIPTION_SIZE] description /// Free-form description of the layer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002317}
2318
Jesse Halla366a512015-11-19 22:30:07 -08002319class VkSubmitInfo {
Jesse Hall03b6fe12015-11-24 12:44:21 -08002320 VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_SUBMIT_INFO
2321 const void* pNext /// Next structure in chain
2322 u32 waitSemaphoreCount
Jesse Halla366a512015-11-19 22:30:07 -08002323 const VkSemaphore* pWaitSemaphores
Jesse Hall543a7ff2016-01-08 16:38:30 -08002324 const VkPipelineStageFlags* pWaitDstStageMask
Jesse Hall03b6fe12015-11-24 12:44:21 -08002325 u32 commandBufferCount
Jesse Hall3fbc8562015-11-29 22:10:52 -08002326 const VkCommandBuffer* pCommandBuffers
Jesse Hall03b6fe12015-11-24 12:44:21 -08002327 u32 signalSemaphoreCount
Jesse Halla366a512015-11-19 22:30:07 -08002328 const VkSemaphore* pSignalSemaphores
2329}
2330
Jesse Halld27f6aa2015-08-15 17:58:48 -07002331class VkApplicationInfo {
2332 VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_APPLICATION_INFO
2333 const void* pNext /// Next structure in chain
Jesse Hall3fbc8562015-11-29 22:10:52 -08002334 const char* pApplicationName
2335 u32 applicationVersion
Jesse Halld27f6aa2015-08-15 17:58:48 -07002336 const char* pEngineName
2337 u32 engineVersion
2338 u32 apiVersion
2339}
2340
Jesse Hall3fbc8562015-11-29 22:10:52 -08002341class VkAllocationCallbacks {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002342 void* pUserData
Jesse Hall3fbc8562015-11-29 22:10:52 -08002343 PFN_vkAllocationFunction pfnAllocation
2344 PFN_vkReallocationFunction pfnReallocation
Jesse Halld27f6aa2015-08-15 17:58:48 -07002345 PFN_vkFreeFunction pfnFree
Jesse Hall3fbc8562015-11-29 22:10:52 -08002346 PFN_vkInternalAllocationNotification pfnInternalAllocation
Jesse Hall03b6fe12015-11-24 12:44:21 -08002347 PFN_vkInternalFreeNotification pfnInternalFree
Jesse Halld27f6aa2015-08-15 17:58:48 -07002348}
2349
2350class VkDeviceQueueCreateInfo {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002351 VkStructureType sStype /// Should be VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
2352 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002353 VkDeviceQueueCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002354 u32 queueFamilyIndex
Jesse Halldba27f72015-11-30 14:25:46 -08002355 u32 queueCount
Jesse Hallfbf97b02015-11-20 14:17:03 -08002356 const f32* pQueuePriorities
Jesse Halld27f6aa2015-08-15 17:58:48 -07002357}
2358
2359class VkDeviceCreateInfo {
2360 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO
2361 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002362 VkDeviceCreateFlags flags
Jesse Halldba27f72015-11-30 14:25:46 -08002363 u32 queueCreateInfoCount
2364 const VkDeviceQueueCreateInfo* pQueueCreateInfos
Jesse Hall3dd678a2016-01-08 21:52:01 -08002365 u32 enabledLayerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002366 const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled
Jesse Hall3dd678a2016-01-08 21:52:01 -08002367 u32 enabledExtensionCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002368 const char* const* ppEnabledExtensionNames
2369 const VkPhysicalDeviceFeatures* pEnabledFeatures
Jesse Halld27f6aa2015-08-15 17:58:48 -07002370}
2371
2372class VkInstanceCreateInfo {
2373 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
2374 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002375 VkInstanceCreateFlags flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08002376 const VkApplicationInfo* pApplicationInfo
Jesse Hall3dd678a2016-01-08 21:52:01 -08002377 u32 enabledLayerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002378 const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled
Jesse Hall3dd678a2016-01-08 21:52:01 -08002379 u32 enabledExtensionCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002380 const char* const* ppEnabledExtensionNames /// Extension names to be enabled
2381}
2382
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002383class VkQueueFamilyProperties {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002384 VkQueueFlags queueFlags /// Queue flags
2385 u32 queueCount
Jesse Hallacfa5342015-11-19 21:51:33 -08002386 u32 timestampValidBits
Jesse Hall65ab5522015-11-30 00:07:16 -08002387 VkExtent3D minImageTransferGranularity
Jesse Halld27f6aa2015-08-15 17:58:48 -07002388}
2389
2390class VkPhysicalDeviceMemoryProperties {
2391 u32 memoryTypeCount
2392 VkMemoryType[VK_MAX_MEMORY_TYPES] memoryTypes
2393 u32 memoryHeapCount
2394 VkMemoryHeap[VK_MAX_MEMORY_HEAPS] memoryHeaps
2395}
2396
Jesse Hall3fbc8562015-11-29 22:10:52 -08002397class VkMemoryAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002398 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002399 const void* pNext /// Pointer to next structure
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002400 VkDeviceSize allocationSize /// Size of memory allocation
Jesse Halld27f6aa2015-08-15 17:58:48 -07002401 u32 memoryTypeIndex /// Index of the of the memory type to allocate from
2402}
2403
2404class VkMemoryRequirements {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002405 VkDeviceSize size /// Specified in bytes
2406 VkDeviceSize alignment /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002407 u32 memoryTypeBits /// Bitfield of the allowed memory type indices into memoryTypes[] for this object
2408}
2409
2410class VkSparseImageFormatProperties {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002411 VkImageAspectFlagBits aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002412 VkExtent3D imageGranularity
2413 VkSparseImageFormatFlags flags
2414}
2415
2416class VkSparseImageMemoryRequirements {
Jesse Hallb00daad2015-11-29 19:46:20 -08002417 VkSparseImageFormatProperties formatProperties
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002418 u32 imageMipTailFirstLod
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002419 VkDeviceSize imageMipTailSize /// Specified in bytes, must be a multiple of image block size / alignment
2420 VkDeviceSize imageMipTailOffset /// Specified in bytes, must be a multiple of image block size / alignment
2421 VkDeviceSize imageMipTailStride /// Specified in bytes, must be a multiple of image block size / alignment
Jesse Halld27f6aa2015-08-15 17:58:48 -07002422}
2423
2424class VkMemoryType {
2425 VkMemoryPropertyFlags propertyFlags /// Memory properties of this memory type
2426 u32 heapIndex /// Index of the memory heap allocations of this memory type are taken from
2427}
2428
2429class VkMemoryHeap {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002430 VkDeviceSize size /// Available memory in the heap
Jesse Halld27f6aa2015-08-15 17:58:48 -07002431 VkMemoryHeapFlags flags /// Flags for the heap
2432}
2433
2434class VkMappedMemoryRange {
2435 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
2436 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002437 VkDeviceMemory memory /// Mapped memory object
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002438 VkDeviceSize offset /// Offset within the mapped memory the range starts from
2439 VkDeviceSize size /// Size of the range within the mapped memory
Jesse Halld27f6aa2015-08-15 17:58:48 -07002440}
2441
2442class VkFormatProperties {
2443 VkFormatFeatureFlags linearTilingFeatures /// Format features in case of linear tiling
2444 VkFormatFeatureFlags optimalTilingFeatures /// Format features in case of optimal tiling
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002445 VkFormatFeatureFlags bufferFeatures /// Format features supported by buffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07002446}
2447
2448class VkImageFormatProperties {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002449 VkExtent3D maxExtent /// max image dimensions for this resource type
2450 u32 maxMipLevels /// max number of mipmap levels for this resource type
Jesse Halla15a4bf2015-11-19 22:48:02 -08002451 u32 maxArrayLayers /// max array layers for this resource type
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002452 VkSampleCountFlags sampleCounts /// supported sample counts for this resource type
2453 VkDeviceSize maxResourceSize /// max size (in bytes) of this resource type
2454}
2455
Jesse Halla15a4bf2015-11-19 22:48:02 -08002456class VkDescriptorImageInfo {
2457 VkSampler sampler
2458 VkImageView imageView
2459 VkImageLayout imageLayout
2460}
2461
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002462class VkDescriptorBufferInfo {
2463 VkBuffer buffer /// Buffer used for this descriptor when the descriptor is UNIFORM_BUFFER[_DYNAMIC]
2464 VkDeviceSize offset /// Base offset from buffer start in bytes to update in the descriptor set.
2465 VkDeviceSize range /// Size in bytes of the buffer resource for this descriptor update.
Jesse Halld27f6aa2015-08-15 17:58:48 -07002466}
2467
Jesse Halld27f6aa2015-08-15 17:58:48 -07002468class VkWriteDescriptorSet {
2469 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
2470 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002471 VkDescriptorSet dstSet /// Destination descriptor set
2472 u32 dstBinding /// Binding within the destination descriptor set to write
2473 u32 dstArrayElement /// Array element within the destination binding to write
Jesse Hall03b6fe12015-11-24 12:44:21 -08002474 u32 descriptorCount /// Number of descriptors to write (determines the size of the array pointed by <pDescriptors>)
Jesse Halld27f6aa2015-08-15 17:58:48 -07002475 VkDescriptorType descriptorType /// Descriptor type to write (determines which fields of the array pointed by <pDescriptors> are going to be used)
Jesse Hallfbf97b02015-11-20 14:17:03 -08002476 const VkDescriptorImageInfo* pImageInfo
2477 const VkDescriptorBufferInfo* pBufferInfo
2478 const VkBufferView* pTexelBufferView
Jesse Halld27f6aa2015-08-15 17:58:48 -07002479}
2480
2481class VkCopyDescriptorSet {
2482 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET
2483 const void* pNext /// Pointer to next structure
2484 VkDescriptorSet srcSet /// Source descriptor set
2485 u32 srcBinding /// Binding within the source descriptor set to copy from
2486 u32 srcArrayElement /// Array element within the source binding to copy from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002487 VkDescriptorSet dstSet /// Destination descriptor set
2488 u32 dstBinding /// Binding within the destination descriptor set to copy to
2489 u32 dstArrayElement /// Array element within the destination binding to copy to
Jesse Hall03b6fe12015-11-24 12:44:21 -08002490 u32 descriptorCount /// Number of descriptors to copy
Jesse Halld27f6aa2015-08-15 17:58:48 -07002491}
2492
2493class VkBufferCreateInfo {
2494 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
2495 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002496 VkBufferCreateFlags flags /// Buffer creation flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002497 VkDeviceSize size /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002498 VkBufferUsageFlags usage /// Buffer usage flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002499 VkSharingMode sharingMode
Jesse Hall03b6fe12015-11-24 12:44:21 -08002500 u32 queueFamilyIndexCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002501 const u32* pQueueFamilyIndices
2502}
2503
2504class VkBufferViewCreateInfo {
2505 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO
2506 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002507 VkBufferViewCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002508 VkBuffer buffer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002509 VkFormat format /// Optionally specifies format of elements
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002510 VkDeviceSize offset /// Specified in bytes
2511 VkDeviceSize range /// View size specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002512}
2513
2514class VkImageSubresource {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002515 VkImageAspectFlagBits aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002516 u32 mipLevel
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002517 u32 arrayLayer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002518}
2519
2520class VkImageSubresourceRange {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002521 VkImageAspectFlags aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002522 u32 baseMipLevel
Jesse Hall3fbc8562015-11-29 22:10:52 -08002523 u32 levelCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002524 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002525 u32 layerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002526}
2527
2528class VkMemoryBarrier {
2529 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_BARRIER
2530 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002531 VkAccessFlags srcAccessMask
2532 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002533}
2534
2535class VkBufferMemoryBarrier {
2536 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
2537 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002538 VkAccessFlags srcAccessMask
2539 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002540 u32 srcQueueFamilyIndex /// Queue family to transition ownership from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002541 u32 dstQueueFamilyIndex /// Queue family to transition ownership to
Jesse Halld27f6aa2015-08-15 17:58:48 -07002542 VkBuffer buffer /// Buffer to sync
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002543 VkDeviceSize offset /// Offset within the buffer to sync
2544 VkDeviceSize size /// Amount of bytes to sync
Jesse Halld27f6aa2015-08-15 17:58:48 -07002545}
2546
2547class VkImageMemoryBarrier {
2548 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
2549 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002550 VkAccessFlags srcAccessMask
2551 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002552 VkImageLayout oldLayout /// Current layout of the image
2553 VkImageLayout newLayout /// New layout to transition the image to
2554 u32 srcQueueFamilyIndex /// Queue family to transition ownership from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002555 u32 dstQueueFamilyIndex /// Queue family to transition ownership to
Jesse Halld27f6aa2015-08-15 17:58:48 -07002556 VkImage image /// Image to sync
2557 VkImageSubresourceRange subresourceRange /// Subresource range to sync
2558}
2559
2560class VkImageCreateInfo {
2561 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
2562 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002563 VkImageCreateFlags flags /// Image creation flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002564 VkImageType imageType
2565 VkFormat format
2566 VkExtent3D extent
2567 u32 mipLevels
Jesse Halla15a4bf2015-11-19 22:48:02 -08002568 u32 arrayLayers
Jesse Hall091ed9e2015-11-30 00:55:29 -08002569 VkSampleCountFlagBits samples
Jesse Halld27f6aa2015-08-15 17:58:48 -07002570 VkImageTiling tiling
2571 VkImageUsageFlags usage /// Image usage flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002572 VkSharingMode sharingMode /// Cross-queue-family sharing mode
Jesse Hall03b6fe12015-11-24 12:44:21 -08002573 u32 queueFamilyIndexCount /// Number of queue families to share across
Jesse Halld27f6aa2015-08-15 17:58:48 -07002574 const u32* pQueueFamilyIndices /// Array of queue family indices to share across
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002575 VkImageLayout initialLayout /// Initial image layout for all subresources
Jesse Halld27f6aa2015-08-15 17:58:48 -07002576}
2577
2578class VkSubresourceLayout {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002579 VkDeviceSize offset /// Specified in bytes
2580 VkDeviceSize size /// Specified in bytes
2581 VkDeviceSize rowPitch /// Specified in bytes
Jesse Hall543a7ff2016-01-08 16:38:30 -08002582 VkDeviceSize arrayPitch /// Specified in bytes
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002583 VkDeviceSize depthPitch /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002584}
2585
2586class VkImageViewCreateInfo {
2587 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
2588 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002589 VkImageViewCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002590 VkImage image
2591 VkImageViewType viewType
2592 VkFormat format
Jesse Hall65ab5522015-11-30 00:07:16 -08002593 VkComponentMapping components
Jesse Halld27f6aa2015-08-15 17:58:48 -07002594 VkImageSubresourceRange subresourceRange
Jesse Halld27f6aa2015-08-15 17:58:48 -07002595}
2596
2597class VkBufferCopy {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002598 VkDeviceSize srcOffset /// Specified in bytes
Jesse Hall3fbc8562015-11-29 22:10:52 -08002599 VkDeviceSize dstOffset /// Specified in bytes
Jesse Hallb00daad2015-11-29 19:46:20 -08002600 VkDeviceSize size /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002601}
2602
Jesse Halla6429252015-11-29 18:59:42 -08002603class VkSparseMemoryBind {
Jesse Hallb00daad2015-11-29 19:46:20 -08002604 VkDeviceSize resourceOffset /// Specified in bytes
2605 VkDeviceSize size /// Specified in bytes
Jesse Hall3fbc8562015-11-29 22:10:52 -08002606 VkDeviceMemory memory
2607 VkDeviceSize memoryOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002608 VkSparseMemoryBindFlags flags
2609}
2610
Jesse Halla6429252015-11-29 18:59:42 -08002611class VkSparseImageMemoryBind {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002612 VkImageSubresource subresource
2613 VkOffset3D offset
2614 VkExtent3D extent
Jesse Hall3fbc8562015-11-29 22:10:52 -08002615 VkDeviceMemory memory
2616 VkDeviceSize memoryOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002617 VkSparseMemoryBindFlags flags
2618}
2619
Jesse Halla6429252015-11-29 18:59:42 -08002620class VkSparseBufferMemoryBindInfo {
2621 VkBuffer buffer
2622 u32 bindCount
2623 const VkSparseMemoryBind* pBinds
2624}
2625
2626class VkSparseImageOpaqueMemoryBindInfo {
2627 VkImage image
2628 u32 bindCount
2629 const VkSparseMemoryBind* pBinds
2630}
2631
2632class VkSparseImageMemoryBindInfo {
2633 VkImage image
2634 u32 bindCount
2635 const VkSparseMemoryBind* pBinds
2636}
2637
2638class VkBindSparseInfo {
2639 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BIND_SPARSE_INFO
2640 const void* pNext
2641 u32 waitSemaphoreCount
2642 const VkSemaphore* pWaitSemaphores
2643 u32 numBufferBinds
2644 const VkSparseBufferMemoryBindInfo* pBufferBinds
2645 u32 numImageOpaqueBinds
2646 const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds
2647 u32 numImageBinds
2648 const VkSparseImageMemoryBindInfo* pImageBinds
2649 u32 signalSemaphoreCount
2650 const VkSemaphore* pSignalSemaphores
2651}
2652
Jesse Hall65ab5522015-11-30 00:07:16 -08002653class VkImageSubresourceLayers {
2654 VkImageAspectFlags aspectMask
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002655 u32 mipLevel
Jesse Halla15a4bf2015-11-19 22:48:02 -08002656 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002657 u32 layerCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002658}
2659
Jesse Halld27f6aa2015-08-15 17:58:48 -07002660class VkImageCopy {
Jesse Hall65ab5522015-11-30 00:07:16 -08002661 VkImageSubresourceLayers srcSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07002662 VkOffset3D srcOffset /// Specified in pixels for both compressed and uncompressed images
Jesse Hall65ab5522015-11-30 00:07:16 -08002663 VkImageSubresourceLayers dstSubresource
Jesse Hall3fbc8562015-11-29 22:10:52 -08002664 VkOffset3D dstOffset /// Specified in pixels for both compressed and uncompressed images
Jesse Halld27f6aa2015-08-15 17:58:48 -07002665 VkExtent3D extent /// Specified in pixels for both compressed and uncompressed images
2666}
2667
2668class VkImageBlit {
Jesse Hall65ab5522015-11-30 00:07:16 -08002669 VkImageSubresourceLayers srcSubresource
Jesse Hall3dd678a2016-01-08 21:52:01 -08002670 VkOffset3D[2] srcOffsets
Jesse Hall65ab5522015-11-30 00:07:16 -08002671 VkImageSubresourceLayers dstSubresource
Jesse Hall3dd678a2016-01-08 21:52:01 -08002672 VkOffset3D[2] dstOffsets
Jesse Halld27f6aa2015-08-15 17:58:48 -07002673}
2674
2675class VkBufferImageCopy {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002676 VkDeviceSize bufferOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002677 u32 bufferRowLength /// Specified in texels
2678 u32 bufferImageHeight
Jesse Hall65ab5522015-11-30 00:07:16 -08002679 VkImageSubresourceLayers imageSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07002680 VkOffset3D imageOffset /// Specified in pixels for both compressed and uncompressed images
2681 VkExtent3D imageExtent /// Specified in pixels for both compressed and uncompressed images
2682}
2683
2684class VkImageResolve {
Jesse Hall65ab5522015-11-30 00:07:16 -08002685 VkImageSubresourceLayers srcSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07002686 VkOffset3D srcOffset
Jesse Hall65ab5522015-11-30 00:07:16 -08002687 VkImageSubresourceLayers dstSubresource
Jesse Hall3fbc8562015-11-29 22:10:52 -08002688 VkOffset3D dstOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07002689 VkExtent3D extent
2690}
2691
2692class VkShaderModuleCreateInfo {
2693 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
2694 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002695 VkShaderModuleCreateFlags flags /// Reserved
Jesse Halld27f6aa2015-08-15 17:58:48 -07002696 platform.size_t codeSize /// Specified in bytes
Jesse Halla9bb62b2015-11-21 19:31:56 -08002697 const u32* pCode /// Binary code of size codeSize
Jesse Halld27f6aa2015-08-15 17:58:48 -07002698}
2699
Jesse Halld27f6aa2015-08-15 17:58:48 -07002700class VkDescriptorSetLayoutBinding {
Jesse Hall091ed9e2015-11-30 00:55:29 -08002701 u32 binding
Jesse Halld27f6aa2015-08-15 17:58:48 -07002702 VkDescriptorType descriptorType /// Type of the descriptors in this binding
Jesse Halldba27f72015-11-30 14:25:46 -08002703 u32 descriptorCount /// Number of descriptors in this binding
Jesse Halld27f6aa2015-08-15 17:58:48 -07002704 VkShaderStageFlags stageFlags /// Shader stages this binding is visible to
2705 const VkSampler* pImmutableSamplers /// Immutable samplers (used if descriptor type is SAMPLER or COMBINED_IMAGE_SAMPLER, is either NULL or contains <count> number of elements)
2706}
2707
2708class VkDescriptorSetLayoutCreateInfo {
2709 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
2710 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002711 VkDescriptorSetLayoutCreateFlags flags
Jesse Hall03b6fe12015-11-24 12:44:21 -08002712 u32 bindingCount /// Number of bindings in the descriptor set layout
Jesse Hall543a7ff2016-01-08 16:38:30 -08002713 const VkDescriptorSetLayoutBinding* pBindings /// Array of descriptor set layout bindings
Jesse Halld27f6aa2015-08-15 17:58:48 -07002714}
2715
Jesse Hall65ab5522015-11-30 00:07:16 -08002716class VkDescriptorPoolSize {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002717 VkDescriptorType type
Jesse Hall03b6fe12015-11-24 12:44:21 -08002718 u32 descriptorCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002719}
2720
2721class VkDescriptorPoolCreateInfo {
2722 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
2723 const void* pNext /// Pointer to next structure
Jesse Hallfbf97b02015-11-20 14:17:03 -08002724 VkDescriptorPoolCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002725 u32 maxSets
Jesse Hall65ab5522015-11-30 00:07:16 -08002726 u32 poolSizeCount
2727 const VkDescriptorPoolSize* pPoolSizes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002728}
2729
Jesse Hall3fbc8562015-11-29 22:10:52 -08002730class VkDescriptorSetAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002731 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
Jesse Hallfbf97b02015-11-20 14:17:03 -08002732 const void* pNext /// Pointer to next structure
2733 VkDescriptorPool descriptorPool
Jesse Hall03b6fe12015-11-24 12:44:21 -08002734 u32 setCount
Jesse Hallfbf97b02015-11-20 14:17:03 -08002735 const VkDescriptorSetLayout* pSetLayouts
2736}
2737
Jesse Halld27f6aa2015-08-15 17:58:48 -07002738class VkSpecializationMapEntry {
Jesse Hall65ab5522015-11-30 00:07:16 -08002739 u32 constantID /// The SpecConstant ID specified in the BIL
Jesse Halld27f6aa2015-08-15 17:58:48 -07002740 u32 offset /// Offset of the value in the data block
Jesse Hallb00daad2015-11-29 19:46:20 -08002741 platform.size_t size /// Size in bytes of the SpecConstant
Jesse Halld27f6aa2015-08-15 17:58:48 -07002742}
2743
2744class VkSpecializationInfo {
2745 u32 mapEntryCount /// Number of entries in the map
Jesse Hallb00daad2015-11-29 19:46:20 -08002746 const VkSpecializationMapEntry* pMapEntries /// Array of map entries
Jesse Halld27f6aa2015-08-15 17:58:48 -07002747 platform.size_t dataSize /// Size in bytes of pData
2748 const void* pData /// Pointer to SpecConstant data
2749}
2750
2751class VkPipelineShaderStageCreateInfo {
2752 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
2753 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002754 VkPipelineShaderStageCreateFlags flags
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002755 VkShaderStageFlagBits stage
2756 VkShaderModule module
2757 const char* pName
Jesse Halld27f6aa2015-08-15 17:58:48 -07002758 const VkSpecializationInfo* pSpecializationInfo
2759}
2760
2761class VkComputePipelineCreateInfo {
2762 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
2763 const void* pNext /// Pointer to next structure
Jesse Halld27f6aa2015-08-15 17:58:48 -07002764 VkPipelineCreateFlags flags /// Pipeline creation flags
Jesse Halla6429252015-11-29 18:59:42 -08002765 VkPipelineShaderStageCreateInfo stage
Jesse Halld27f6aa2015-08-15 17:58:48 -07002766 VkPipelineLayout layout /// Interface layout of the pipeline
2767 VkPipeline basePipelineHandle /// If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is nonzero, it specifies the handle of the base pipeline this is a derivative of
2768 s32 basePipelineIndex /// If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is not -1, it specifies an index into pCreateInfos of the base pipeline this is a derivative of
2769}
2770
2771class VkVertexInputBindingDescription {
Jesse Hallb00daad2015-11-29 19:46:20 -08002772 u32 binding /// Vertex buffer binding id
2773 u32 stride /// Distance between vertices in bytes (0 = no advancement)
Jesse Hall65ab5522015-11-30 00:07:16 -08002774 VkVertexInputRate inputRate /// Rate at which binding is incremented
Jesse Halld27f6aa2015-08-15 17:58:48 -07002775}
2776
2777class VkVertexInputAttributeDescription {
Jesse Hallb00daad2015-11-29 19:46:20 -08002778 u32 location /// location of the shader vertex attrib
2779 u32 binding /// Vertex buffer binding id
2780 VkFormat format /// format of source data
2781 u32 offset /// Offset of first element in bytes from base of vertex
Jesse Halld27f6aa2015-08-15 17:58:48 -07002782}
2783
2784class VkPipelineVertexInputStateCreateInfo {
Jesse Hall03b6fe12015-11-24 12:44:21 -08002785 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
2786 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002787 VkPipelineVertexInputStateCreateFlags flags
Jesse Hall03b6fe12015-11-24 12:44:21 -08002788 u32 vertexBindingDescriptionCount /// number of bindings
Jesse Halld27f6aa2015-08-15 17:58:48 -07002789 const VkVertexInputBindingDescription* pVertexBindingDescriptions
Jesse Hall03b6fe12015-11-24 12:44:21 -08002790 u32 vertexAttributeDescriptionCount /// number of attributes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002791 const VkVertexInputAttributeDescription* pVertexAttributeDescriptions
2792}
2793
2794class VkPipelineInputAssemblyStateCreateInfo {
2795 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
2796 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002797 VkPipelineInputAssemblyStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002798 VkPrimitiveTopology topology
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002799 VkBool32 primitiveRestartEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002800}
2801
2802class VkPipelineTessellationStateCreateInfo {
2803 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
2804 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002805 VkPipelineTessellationStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002806 u32 patchControlPoints
2807}
2808
2809class VkPipelineViewportStateCreateInfo {
2810 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
2811 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002812 VkPipelineViewportStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002813 u32 viewportCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002814 const VkViewport* pViewports
2815 u32 scissorCount
2816 const VkRect2D* pScissors
Jesse Halld27f6aa2015-08-15 17:58:48 -07002817}
2818
Jesse Hall3fbc8562015-11-29 22:10:52 -08002819class VkPipelineRasterizationStateCreateInfo {
Jesse Hall65ab5522015-11-30 00:07:16 -08002820 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002821 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002822 VkPipelineRasterizationStateCreateFlags flags
Jesse Hallae38f732015-11-19 21:32:50 -08002823 VkBool32 depthClampEnable
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002824 VkBool32 rasterizerDiscardEnable
Jesse Hall65ab5522015-11-30 00:07:16 -08002825 VkPolygonMode polygonMode /// optional (GL45)
Jesse Hallc7467b72015-11-29 21:05:26 -08002826 VkCullModeFlags cullMode
Jesse Halld27f6aa2015-08-15 17:58:48 -07002827 VkFrontFace frontFace
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002828 VkBool32 depthBiasEnable
Jesse Halla9bb62b2015-11-21 19:31:56 -08002829 f32 depthBiasConstantFactor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002830 f32 depthBiasClamp
Jesse Halla9bb62b2015-11-21 19:31:56 -08002831 f32 depthBiasSlopeFactor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002832 f32 lineWidth
Jesse Halld27f6aa2015-08-15 17:58:48 -07002833}
2834
2835class VkPipelineMultisampleStateCreateInfo {
2836 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
2837 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002838 VkPipelineMultisampleStateCreateFlags flags
Jesse Hall091ed9e2015-11-30 00:55:29 -08002839 VkSampleCountFlagBits rasterizationSamples /// Number of samples used for rasterization
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002840 VkBool32 sampleShadingEnable /// optional (GL45)
Jesse Halld27f6aa2015-08-15 17:58:48 -07002841 f32 minSampleShading /// optional (GL45)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002842 const VkSampleMask* pSampleMask
Jesse Hallacfa5342015-11-19 21:51:33 -08002843 VkBool32 alphaToCoverageEnable
2844 VkBool32 alphaToOneEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002845}
2846
2847class VkPipelineColorBlendAttachmentState {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002848 VkBool32 blendEnable
Jesse Hall65ab5522015-11-30 00:07:16 -08002849 VkBlendFactor srcColorBlendFactor
2850 VkBlendFactor dstColorBlendFactor
2851 VkBlendOp colorBlendOp
2852 VkBlendFactor srcAlphaBlendFactor
2853 VkBlendFactor dstAlphaBlendFactor
2854 VkBlendOp alphaBlendOp
2855 VkColorComponentFlags colorWriteMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002856}
2857
2858class VkPipelineColorBlendStateCreateInfo {
2859 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
2860 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002861 VkPipelineColorBlendStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002862 VkBool32 logicOpEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002863 VkLogicOp logicOp
2864 u32 attachmentCount /// # of pAttachments
2865 const VkPipelineColorBlendAttachmentState* pAttachments
Jesse Hallb00daad2015-11-29 19:46:20 -08002866 f32[4] blendConstants
Jesse Halld27f6aa2015-08-15 17:58:48 -07002867}
2868
2869class VkStencilOpState {
Jesse Hall65ab5522015-11-30 00:07:16 -08002870 VkStencilOp failOp
2871 VkStencilOp passOp
2872 VkStencilOp depthFailOp
2873 VkCompareOp compareOp
2874 u32 compareMask
2875 u32 writeMask
2876 u32 reference
Jesse Halld27f6aa2015-08-15 17:58:48 -07002877}
2878
2879class VkPipelineDepthStencilStateCreateInfo {
2880 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
2881 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002882 VkPipelineDepthStencilStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002883 VkBool32 depthTestEnable
2884 VkBool32 depthWriteEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002885 VkCompareOp depthCompareOp
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002886 VkBool32 depthBoundsTestEnable /// optional (depth_bounds_test)
2887 VkBool32 stencilTestEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002888 VkStencilOpState front
2889 VkStencilOpState back
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002890 f32 minDepthBounds
2891 f32 maxDepthBounds
2892}
2893
2894class VkPipelineDynamicStateCreateInfo {
2895 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
2896 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002897 VkPipelineDynamicStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002898 u32 dynamicStateCount
2899 const VkDynamicState* pDynamicStates
Jesse Halld27f6aa2015-08-15 17:58:48 -07002900}
2901
2902class VkGraphicsPipelineCreateInfo {
Jesse Halla6429252015-11-29 18:59:42 -08002903 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
2904 const void* pNext /// Pointer to next structure
2905 VkPipelineCreateFlags flags /// Pipeline creation flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002906 u32 stageCount
Jesse Halla6429252015-11-29 18:59:42 -08002907 const VkPipelineShaderStageCreateInfo* pStages /// One entry for each active shader stage
Jesse Halld27f6aa2015-08-15 17:58:48 -07002908 const VkPipelineVertexInputStateCreateInfo* pVertexInputState
2909 const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState
2910 const VkPipelineTessellationStateCreateInfo* pTessellationState
2911 const VkPipelineViewportStateCreateInfo* pViewportState
Jesse Hall3fbc8562015-11-29 22:10:52 -08002912 const VkPipelineRasterizationStateCreateInfo* pRasterizationState
Jesse Halld27f6aa2015-08-15 17:58:48 -07002913 const VkPipelineMultisampleStateCreateInfo* pMultisampleState
2914 const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState
2915 const VkPipelineColorBlendStateCreateInfo* pColorBlendState
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002916 const VkPipelineDynamicStateCreateInfo* pDynamicState
Jesse Halla6429252015-11-29 18:59:42 -08002917 VkPipelineLayout layout /// Interface layout of the pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07002918 VkRenderPass renderPass
2919 u32 subpass
Jesse Halla6429252015-11-29 18:59:42 -08002920 VkPipeline basePipelineHandle /// If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is nonzero, it specifies the handle of the base pipeline this is a derivative of
2921 s32 basePipelineIndex /// If VK_PIPELINE_CREATE_DERIVATIVE_BIT is set and this value is not -1, it specifies an index into pCreateInfos of the base pipeline this is a derivative of
Jesse Halld27f6aa2015-08-15 17:58:48 -07002922}
2923
2924class VkPipelineCacheCreateInfo {
Jesse Hallb00daad2015-11-29 19:46:20 -08002925 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
2926 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002927 VkPipelineCacheCreateFlags flags
Jesse Hallb00daad2015-11-29 19:46:20 -08002928 platform.size_t initialDataSize /// Size of initial data to populate cache, in bytes
2929 const void* pInitialData /// Initial data to populate cache
Jesse Halld27f6aa2015-08-15 17:58:48 -07002930}
2931
2932class VkPushConstantRange {
2933 VkShaderStageFlags stageFlags /// Which stages use the range
Jesse Hall03b6fe12015-11-24 12:44:21 -08002934 u32 offset /// Start of the range, in bytes
2935 u32 size /// Length of the range, in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002936}
2937
2938class VkPipelineLayoutCreateInfo {
2939 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
2940 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002941 VkPipelineLayoutCreateFlags flags
Jesse Hall3dd678a2016-01-08 21:52:01 -08002942 u32 descriptorSetCount /// Number of descriptor sets interfaced by the pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07002943 const VkDescriptorSetLayout* pSetLayouts /// Array of <setCount> number of descriptor set layout objects defining the layout of the
2944 u32 pushConstantRangeCount /// Number of push-constant ranges used by the pipeline
2945 const VkPushConstantRange* pPushConstantRanges /// Array of pushConstantRangeCount number of ranges used by various shader stages
2946}
2947
2948class VkSamplerCreateInfo {
2949 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
2950 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002951 VkSamplerCreateFlags flags
Jesse Hall23ff73f2015-11-29 14:36:39 -08002952 VkFilter magFilter /// Filter mode for magnification
2953 VkFilter minFilter /// Filter mode for minifiation
2954 VkSamplerMipmapMode mipmapMode /// Mipmap selection mode
2955 VkSamplerAddressMode addressModeU
2956 VkSamplerAddressMode addressModeV
2957 VkSamplerAddressMode addressModeW
Jesse Halld27f6aa2015-08-15 17:58:48 -07002958 f32 mipLodBias
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002959 VkBool32 anisotropyEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002960 f32 maxAnisotropy
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002961 VkBool32 compareEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002962 VkCompareOp compareOp
2963 f32 minLod
2964 f32 maxLod
2965 VkBorderColor borderColor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002966 VkBool32 unnormalizedCoordinates
Jesse Halld27f6aa2015-08-15 17:58:48 -07002967}
2968
Jesse Hall3fbc8562015-11-29 22:10:52 -08002969class VkCommandPoolCreateInfo {
2970 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002971 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002972 VkCommandPoolCreateFlags flags /// Command pool creation flags
Jesse Halla6429252015-11-29 18:59:42 -08002973 u32 queueFamilyIndex
Jesse Halld27f6aa2015-08-15 17:58:48 -07002974}
2975
Jesse Hall3fbc8562015-11-29 22:10:52 -08002976class VkCommandBufferAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002977 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002978 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002979 VkCommandPool commandPool
2980 VkCommandBufferLevel level
Jesse Hall3dd678a2016-01-08 21:52:01 -08002981 u32 commandBufferCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002982}
2983
Jesse Hall3dd678a2016-01-08 21:52:01 -08002984class VkCommandBufferInheritanceInfo {
2985 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002986 const void* pNext /// Pointer to next structure
Jesse Halld27f6aa2015-08-15 17:58:48 -07002987 VkRenderPass renderPass /// Render pass for secondary command buffers
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002988 u32 subpass
Jesse Halld27f6aa2015-08-15 17:58:48 -07002989 VkFramebuffer framebuffer /// Framebuffer for secondary command buffers
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002990 VkBool32 occlusionQueryEnable
2991 VkQueryControlFlags queryFlags
2992 VkQueryPipelineStatisticFlags pipelineStatistics
Jesse Halld27f6aa2015-08-15 17:58:48 -07002993}
2994
Jesse Hall3dd678a2016-01-08 21:52:01 -08002995class VkCommandBufferBeginInfo {
2996 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
2997 const void* pNext /// Pointer to next structure
2998 VkCommandBufferUsageFlags flags /// Command buffer usage flags
2999 const VkCommandBufferInheritanceInfo* pInheritanceInfo
3000}
3001
Jesse Halld27f6aa2015-08-15 17:58:48 -07003002class VkRenderPassBeginInfo {
3003 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
3004 const void* pNext /// Pointer to next structure
3005 VkRenderPass renderPass
3006 VkFramebuffer framebuffer
3007 VkRect2D renderArea
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003008 u32 clearValueCount
3009 const VkClearValue* pClearValues
Jesse Halld27f6aa2015-08-15 17:58:48 -07003010}
3011
3012@union
3013/// Union allowing specification of floating point, integer, or unsigned integer color data. Actual value selected is based on image/attachment being cleared.
3014class VkClearColorValue {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003015 f32[4] float32
3016 s32[4] int32
3017 u32[4] uint32
Jesse Halld27f6aa2015-08-15 17:58:48 -07003018}
3019
3020class VkClearDepthStencilValue {
3021 f32 depth
3022 u32 stencil
3023}
3024
3025@union
3026/// Union allowing specification of color, depth, and stencil color values. Actual value selected is based on attachment being cleared.
3027class VkClearValue {
3028 VkClearColorValue color
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003029 VkClearDepthStencilValue depthStencil
Jesse Halld27f6aa2015-08-15 17:58:48 -07003030}
3031
Jesse Hallae38f732015-11-19 21:32:50 -08003032class VkClearAttachment {
3033 VkImageAspectFlags aspectMask
3034 u32 colorAttachment
3035 VkClearValue clearValue
3036}
3037
Jesse Halld27f6aa2015-08-15 17:58:48 -07003038class VkAttachmentDescription {
Jesse Halla6429252015-11-29 18:59:42 -08003039 VkAttachmentDescriptionFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003040 VkFormat format
Jesse Hall091ed9e2015-11-30 00:55:29 -08003041 VkSampleCountFlagBits samples
Jesse Halld27f6aa2015-08-15 17:58:48 -07003042 VkAttachmentLoadOp loadOp /// Load op for color or depth data
3043 VkAttachmentStoreOp storeOp /// Store op for color or depth data
3044 VkAttachmentLoadOp stencilLoadOp /// Load op for stencil data
3045 VkAttachmentStoreOp stencilStoreOp /// Store op for stencil data
3046 VkImageLayout initialLayout
3047 VkImageLayout finalLayout
3048}
3049
3050class VkAttachmentReference {
3051 u32 attachment
3052 VkImageLayout layout
3053}
3054
3055class VkSubpassDescription {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003056 VkSubpassDescriptionFlags flags
Jesse Halla6429252015-11-29 18:59:42 -08003057 VkPipelineBindPoint pipelineBindPoint /// Must be VK_PIPELINE_BIND_POINT_GRAPHICS for now
Jesse Hall03b6fe12015-11-24 12:44:21 -08003058 u32 inputAttachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003059 const VkAttachmentReference* pInputAttachments
Jesse Hall03b6fe12015-11-24 12:44:21 -08003060 u32 colorAttachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003061 const VkAttachmentReference* pColorAttachments
3062 const VkAttachmentReference* pResolveAttachments
Jesse Hallc7467b72015-11-29 21:05:26 -08003063 const VkAttachmentReference* pDepthStencilAttachment
Jesse Hall03b6fe12015-11-24 12:44:21 -08003064 u32 preserveAttachmentCount
Jesse Hall3dd678a2016-01-08 21:52:01 -08003065 const u32* pPreserveAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003066}
3067
3068class VkSubpassDependency {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003069 u32 srcSubpass
Jesse Hall3fbc8562015-11-29 22:10:52 -08003070 u32 dstSubpass
Jesse Halld27f6aa2015-08-15 17:58:48 -07003071 VkPipelineStageFlags srcStageMask
Jesse Hall3fbc8562015-11-29 22:10:52 -08003072 VkPipelineStageFlags dstStageMask
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003073 VkAccessFlags srcAccessMask
3074 VkAccessFlags dstAccessMask
Jesse Halldc6d36c2015-11-29 19:12:15 -08003075 VkDependencyFlags dependencyFlags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003076}
3077
3078class VkRenderPassCreateInfo {
3079 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
3080 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003081 VkRenderPassCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003082 u32 attachmentCount
3083 const VkAttachmentDescription* pAttachments
3084 u32 subpassCount
3085 const VkSubpassDescription* pSubpasses
3086 u32 dependencyCount
3087 const VkSubpassDependency* pDependencies
3088}
3089
3090class VkEventCreateInfo {
3091 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_EVENT_CREATE_INFO
3092 const void* pNext /// Pointer to next structure
3093 VkEventCreateFlags flags /// Event creation flags
3094}
3095
3096class VkFenceCreateInfo {
3097 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FENCE_CREATE_INFO
3098 const void* pNext /// Pointer to next structure
3099 VkFenceCreateFlags flags /// Fence creation flags
3100}
3101
3102class VkPhysicalDeviceFeatures {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003103 VkBool32 robustBufferAccess /// out of bounds buffer accesses are well defined
3104 VkBool32 fullDrawIndexUint32 /// full 32-bit range of indices for indexed draw calls
3105 VkBool32 imageCubeArray /// image views which are arrays of cube maps
3106 VkBool32 independentBlend /// blending operations are controlled per-attachment
3107 VkBool32 geometryShader /// geometry stage
3108 VkBool32 tessellationShader /// tessellation control and evaluation stage
3109 VkBool32 sampleRateShading /// per-sample shading and interpolation
Jesse Hall3fbc8562015-11-29 22:10:52 -08003110 VkBool32 dualSrcBlend /// blend operations which take two sources
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003111 VkBool32 logicOp /// logic operations
3112 VkBool32 multiDrawIndirect /// multi draw indirect
Jesse Hall543a7ff2016-01-08 16:38:30 -08003113 VkBool32 drawIndirectFirstInstance
Jesse Hallae38f732015-11-19 21:32:50 -08003114 VkBool32 depthClamp /// depth clamping
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003115 VkBool32 depthBiasClamp /// depth bias clamping
3116 VkBool32 fillModeNonSolid /// point and wireframe fill modes
3117 VkBool32 depthBounds /// depth bounds test
3118 VkBool32 wideLines /// lines with width greater than 1
3119 VkBool32 largePoints /// points with size greater than 1
Jesse Hallfbf97b02015-11-20 14:17:03 -08003120 VkBool32 alphaToOne /// The fragment alpha channel can be forced to maximum representable alpha value
3121 VkBool32 multiViewport
3122 VkBool32 samplerAnisotropy
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003123 VkBool32 textureCompressionETC2 /// ETC texture compression formats
3124 VkBool32 textureCompressionASTC_LDR /// ASTC LDR texture compression formats
3125 VkBool32 textureCompressionBC /// BC1-7 texture compressed formats
Jesse Hall65ab5522015-11-30 00:07:16 -08003126 VkBool32 occlusionQueryPrecise
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003127 VkBool32 pipelineStatisticsQuery /// pipeline statistics query
Jesse Halldc6d36c2015-11-29 19:12:15 -08003128 VkBool32 vertexPipelineStoresAndAtomics
3129 VkBool32 fragmentStoresAndAtomics
3130 VkBool32 shaderTessellationAndGeometryPointSize
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003131 VkBool32 shaderImageGatherExtended /// texture gather with run-time values and independent offsets
3132 VkBool32 shaderStorageImageExtendedFormats /// the extended set of formats can be used for storage images
3133 VkBool32 shaderStorageImageMultisample /// multisample images can be used for storage images
Jesse Halld1af8122015-11-29 23:50:38 -08003134 VkBool32 shaderStorageImageReadWithoutFormat
3135 VkBool32 shaderStorageImageWriteWithoutFormat
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003136 VkBool32 shaderUniformBufferArrayDynamicIndexing /// arrays of uniform buffers can be accessed with dynamically uniform indices
3137 VkBool32 shaderSampledImageArrayDynamicIndexing /// arrays of sampled images can be accessed with dynamically uniform indices
3138 VkBool32 shaderStorageBufferArrayDynamicIndexing /// arrays of storage buffers can be accessed with dynamically uniform indices
3139 VkBool32 shaderStorageImageArrayDynamicIndexing /// arrays of storage images can be accessed with dynamically uniform indices
3140 VkBool32 shaderClipDistance /// clip distance in shaders
3141 VkBool32 shaderCullDistance /// cull distance in shaders
3142 VkBool32 shaderFloat64 /// 64-bit floats (doubles) in shaders
3143 VkBool32 shaderInt64 /// 64-bit integers in shaders
3144 VkBool32 shaderInt16 /// 16-bit integers in shaders
3145 VkBool32 shaderResourceResidency /// shader can use texture operations that return resource residency information (requires sparseNonResident support)
Jesse Hall65ab5522015-11-30 00:07:16 -08003146 VkBool32 shaderResourceMinLod /// shader can use texture operations that specify minimum resource LOD
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003147 VkBool32 sparseBinding /// Sparse resources support: Resource memory can be managed at opaque page level rather than object level
3148 VkBool32 sparseResidencyBuffer /// Sparse resources support: GPU can access partially resident buffers
3149 VkBool32 sparseResidencyImage2D /// Sparse resources support: GPU can access partially resident 2D (non-MSAA non-DepthStencil) images
3150 VkBool32 sparseResidencyImage3D /// Sparse resources support: GPU can access partially resident 3D images
3151 VkBool32 sparseResidency2Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 2 samples
3152 VkBool32 sparseResidency4Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 4 samples
3153 VkBool32 sparseResidency8Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 8 samples
3154 VkBool32 sparseResidency16Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 16 samples
3155 VkBool32 sparseResidencyAliased /// Sparse resources support: GPU can correctly access data aliased into multiple locations (opt-in)
Jesse Halld1af8122015-11-29 23:50:38 -08003156 VkBool32 variableMultisampleRate
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003157 VkBool32 inheritedQueries
Jesse Halld27f6aa2015-08-15 17:58:48 -07003158}
3159
3160class VkPhysicalDeviceLimits {
3161 /// resource maximum sizes
3162 u32 maxImageDimension1D /// max 1D image dimension
3163 u32 maxImageDimension2D /// max 2D image dimension
3164 u32 maxImageDimension3D /// max 3D image dimension
3165 u32 maxImageDimensionCube /// max cubemap image dimension
3166 u32 maxImageArrayLayers /// max layers for image arrays
Jesse Hallb00daad2015-11-29 19:46:20 -08003167 u32 maxTexelBufferElements
Jesse Hallfbf97b02015-11-20 14:17:03 -08003168 u32 maxUniformBufferRange /// max uniform buffer size (bytes)
3169 u32 maxStorageBufferRange /// max storage buffer size (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003170 u32 maxPushConstantsSize /// max size of the push constants pool (bytes)
3171 /// memory limits
3172 u32 maxMemoryAllocationCount /// max number of device memory allocations supported
Jesse Hall091ed9e2015-11-30 00:55:29 -08003173 u32 maxSamplerAllocationCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003174 VkDeviceSize bufferImageGranularity /// Granularity (in bytes) at which buffers and images can be bound to adjacent memory for simultaneous usage
3175 VkDeviceSize sparseAddressSpaceSize /// Total address space available for sparse allocations (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003176 /// descriptor set limits
3177 u32 maxBoundDescriptorSets /// max number of descriptors sets that can be bound to a pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07003178 u32 maxPerStageDescriptorSamplers /// max num of samplers allowed per-stage in a descriptor set
3179 u32 maxPerStageDescriptorUniformBuffers /// max num of uniform buffers allowed per-stage in a descriptor set
3180 u32 maxPerStageDescriptorStorageBuffers /// max num of storage buffers allowed per-stage in a descriptor set
3181 u32 maxPerStageDescriptorSampledImages /// max num of sampled images allowed per-stage in a descriptor set
3182 u32 maxPerStageDescriptorStorageImages /// max num of storage images allowed per-stage in a descriptor set
Jesse Halle1b12782015-11-30 11:27:32 -08003183 u32 maxPerStageDescriptorInputAttachments
Jesse Halldba27f72015-11-30 14:25:46 -08003184 u32 maxPerStageResources
Jesse Halld27f6aa2015-08-15 17:58:48 -07003185 u32 maxDescriptorSetSamplers /// max num of samplers allowed in all stages in a descriptor set
3186 u32 maxDescriptorSetUniformBuffers /// max num of uniform buffers allowed in all stages in a descriptor set
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003187 u32 maxDescriptorSetUniformBuffersDynamic /// max num of dynamic uniform buffers allowed in all stages in a descriptor set
Jesse Halld27f6aa2015-08-15 17:58:48 -07003188 u32 maxDescriptorSetStorageBuffers /// max num of storage buffers allowed in all stages in a descriptor set
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003189 u32 maxDescriptorSetStorageBuffersDynamic /// max num of dynamic storage buffers allowed in all stages in a descriptor set
Jesse Halld27f6aa2015-08-15 17:58:48 -07003190 u32 maxDescriptorSetSampledImages /// max num of sampled images allowed in all stages in a descriptor set
3191 u32 maxDescriptorSetStorageImages /// max num of storage images allowed in all stages in a descriptor set
Jesse Halle1b12782015-11-30 11:27:32 -08003192 u32 maxDescriptorSetInputAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003193 /// vertex stage limits
3194 u32 maxVertexInputAttributes /// max num of vertex input attribute slots
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003195 u32 maxVertexInputBindings /// max num of vertex input binding slots
Jesse Halld27f6aa2015-08-15 17:58:48 -07003196 u32 maxVertexInputAttributeOffset /// max vertex input attribute offset added to vertex buffer offset
3197 u32 maxVertexInputBindingStride /// max vertex input binding stride
3198 u32 maxVertexOutputComponents /// max num of output components written by vertex shader
3199 /// tessellation control stage limits
Jesse Hall3fbc8562015-11-29 22:10:52 -08003200 u32 maxTessellationGenerationLevel /// max level supported by tess primitive generator
Jesse Hallae38f732015-11-19 21:32:50 -08003201 u32 maxTessellationPatchSize /// max patch size (vertices)
3202 u32 maxTessellationControlPerVertexInputComponents /// max num of input components per-vertex in TCS
3203 u32 maxTessellationControlPerVertexOutputComponents /// max num of output components per-vertex in TCS
3204 u32 maxTessellationControlPerPatchOutputComponents /// max num of output components per-patch in TCS
3205 u32 maxTessellationControlTotalOutputComponents /// max total num of per-vertex and per-patch output components in TCS
3206 u32 maxTessellationEvaluationInputComponents /// max num of input components per vertex in TES
3207 u32 maxTessellationEvaluationOutputComponents /// max num of output components per vertex in TES
Jesse Halld27f6aa2015-08-15 17:58:48 -07003208 /// geometry stage limits
3209 u32 maxGeometryShaderInvocations /// max invocation count supported in geometry shader
3210 u32 maxGeometryInputComponents /// max num of input components read in geometry stage
3211 u32 maxGeometryOutputComponents /// max num of output components written in geometry stage
3212 u32 maxGeometryOutputVertices /// max num of vertices that can be emitted in geometry stage
3213 u32 maxGeometryTotalOutputComponents /// max total num of components (all vertices) written in geometry stage
3214 /// fragment stage limits
3215 u32 maxFragmentInputComponents /// max num of input compontents read in fragment stage
Jesse Hallfbf97b02015-11-20 14:17:03 -08003216 u32 maxFragmentOutputAttachments /// max num of output attachments written in fragment stage
Jesse Hall3fbc8562015-11-29 22:10:52 -08003217 u32 maxFragmentDualSrcAttachments /// max num of output attachments written when using dual source blending
Jesse Halld27f6aa2015-08-15 17:58:48 -07003218 u32 maxFragmentCombinedOutputResources /// max total num of storage buffers, storage images and output buffers
3219 /// compute stage limits
3220 u32 maxComputeSharedMemorySize /// max total storage size of work group local storage (bytes)
3221 u32[3] maxComputeWorkGroupCount /// max num of compute work groups that may be dispatched by a single command (x,y,z)
3222 u32 maxComputeWorkGroupInvocations /// max total compute invocations in a single local work group
3223 u32[3] maxComputeWorkGroupSize /// max local size of a compute work group (x,y,z)
3224
3225 u32 subPixelPrecisionBits /// num bits of subpixel precision in screen x and y
3226 u32 subTexelPrecisionBits /// num bits of subtexel precision
3227 u32 mipmapPrecisionBits /// num bits of mipmap precision
3228
3229 u32 maxDrawIndexedIndexValue /// max index value for indexed draw calls (for 32-bit indices)
Jesse Halldba27f72015-11-30 14:25:46 -08003230 u32 maxDrawIndirectCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003231
3232 f32 maxSamplerLodBias /// max absolute sampler level of detail bias
3233 f32 maxSamplerAnisotropy /// max degree of sampler anisotropy
3234
3235 u32 maxViewports /// max number of active viewports
Jesse Halld27f6aa2015-08-15 17:58:48 -07003236 u32[2] maxViewportDimensions /// max viewport dimensions (x,y)
3237 f32[2] viewportBoundsRange /// viewport bounds range (min,max)
3238 u32 viewportSubPixelBits /// num bits of subpixel precision for viewport
3239
Jesse Halldc6d36c2015-11-29 19:12:15 -08003240 platform.size_t minMemoryMapAlignment /// min required alignment of pointers returned by MapMemory (bytes)
3241 VkDeviceSize minTexelBufferOffsetAlignment /// min required alignment for texel buffer offsets (bytes)
3242 VkDeviceSize minUniformBufferOffsetAlignment /// min required alignment for uniform buffer sizes and offsets (bytes)
3243 VkDeviceSize minStorageBufferOffsetAlignment /// min required alignment for storage buffer offsets (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003244
Jesse Hallfbf97b02015-11-20 14:17:03 -08003245 s32 minTexelOffset /// min texel offset for OpTextureSampleOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07003246 u32 maxTexelOffset /// max texel offset for OpTextureSampleOffset
Jesse Hallfbf97b02015-11-20 14:17:03 -08003247 s32 minTexelGatherOffset /// min texel offset for OpTextureGatherOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07003248 u32 maxTexelGatherOffset /// max texel offset for OpTextureGatherOffset
3249 f32 minInterpolationOffset /// furthest negative offset for interpolateAtOffset
3250 f32 maxInterpolationOffset /// furthest positive offset for interpolateAtOffset
3251 u32 subPixelInterpolationOffsetBits /// num of subpixel bits for interpolateAtOffset
3252
3253 u32 maxFramebufferWidth /// max width for a framebuffer
3254 u32 maxFramebufferHeight /// max height for a framebuffer
3255 u32 maxFramebufferLayers /// max layer count for a layered framebuffer
Jesse Hall091ed9e2015-11-30 00:55:29 -08003256 VkSampleCountFlags framebufferColorSampleCounts
3257 VkSampleCountFlags framebufferDepthSampleCounts
3258 VkSampleCountFlags framebufferStencilSampleCounts
3259 VkSampleCountFlags framebufferNoAttachmentSampleCounts
Jesse Halld27f6aa2015-08-15 17:58:48 -07003260 u32 maxColorAttachments /// max num of framebuffer color attachments
3261
Jesse Hall091ed9e2015-11-30 00:55:29 -08003262 VkSampleCountFlags sampledImageColorSampleCounts
3263 VkSampleCountFlags sampledImageIntegerSampleCounts
3264 VkSampleCountFlags sampledImageDepthSampleCounts
3265 VkSampleCountFlags sampledImageStencilSampleCounts
3266 VkSampleCountFlags storageImageSampleCounts
Jesse Halld27f6aa2015-08-15 17:58:48 -07003267 u32 maxSampleMaskWords /// max num of sample mask words
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003268 VkBool32 timestampComputeAndGraphics
Jesse Halld27f6aa2015-08-15 17:58:48 -07003269
Jesse Halla9bb62b2015-11-21 19:31:56 -08003270 f32 timestampPeriod
Jesse Halld27f6aa2015-08-15 17:58:48 -07003271
3272 u32 maxClipDistances /// max number of clip distances
3273 u32 maxCullDistances /// max number of cull distances
3274 u32 maxCombinedClipAndCullDistances /// max combined number of user clipping
3275
Jesse Hallfbf97b02015-11-20 14:17:03 -08003276 u32 discreteQueuePriorities
3277
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003278 f32[2] pointSizeRange /// range (min,max) of supported point sizes
3279 f32[2] lineWidthRange /// range (min,max) of supported line widths
Jesse Halld27f6aa2015-08-15 17:58:48 -07003280 f32 pointSizeGranularity /// granularity of supported point sizes
3281 f32 lineWidthGranularity /// granularity of supported line widths
Jesse Hall03b6fe12015-11-24 12:44:21 -08003282 VkBool32 strictLines
Jesse Hall091ed9e2015-11-30 00:55:29 -08003283 VkBool32 standardSampleLocations
Jesse Halla9bb62b2015-11-21 19:31:56 -08003284
Jesse Hall65ab5522015-11-30 00:07:16 -08003285 VkDeviceSize optimalBufferCopyOffsetAlignment
3286 VkDeviceSize optimalBufferCopyRowPitchAlignment
Jesse Halldba27f72015-11-30 14:25:46 -08003287 VkDeviceSize nonCoherentAtomSize
Jesse Halld27f6aa2015-08-15 17:58:48 -07003288}
3289
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003290class VkPhysicalDeviceSparseProperties {
3291 VkBool32 residencyStandard2DBlockShape /// Sparse resources support: GPU will access all 2D (single sample) sparse resources using the standard block shapes (based on pixel format)
Jesse Hallb00daad2015-11-29 19:46:20 -08003292 VkBool32 residencyStandard2DMultisampleBlockShape /// Sparse resources support: GPU will access all 2D (multisample) sparse resources using the standard block shapes (based on pixel format)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003293 VkBool32 residencyStandard3DBlockShape /// Sparse resources support: GPU will access all 3D sparse resources using the standard block shapes (based on pixel format)
3294 VkBool32 residencyAlignedMipSize /// Sparse resources support: Images with mip-level dimensions that are NOT a multiple of the block size will be placed in the mip tail
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003295 VkBool32 residencyNonResidentStrict /// Sparse resources support: GPU can safely access non-resident regions of a resource, all reads return as if data is 0, writes are discarded
3296}
3297
Jesse Halld27f6aa2015-08-15 17:58:48 -07003298class VkSemaphoreCreateInfo {
3299 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
3300 const void* pNext /// Pointer to next structure
3301 VkSemaphoreCreateFlags flags /// Semaphore creation flags
3302}
3303
3304class VkQueryPoolCreateInfo {
3305 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
3306 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003307 VkQueryPoolCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003308 VkQueryType queryType
Jesse Hall3dd678a2016-01-08 21:52:01 -08003309 u32 queryCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003310 VkQueryPipelineStatisticFlags pipelineStatistics /// Optional
3311}
3312
3313class VkFramebufferCreateInfo {
3314 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
3315 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003316 VkFramebufferCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003317 VkRenderPass renderPass
3318 u32 attachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003319 const VkImageView* pAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003320 u32 width
3321 u32 height
3322 u32 layers
3323}
3324
Jesse Hall3fbc8562015-11-29 22:10:52 -08003325class VkDrawIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003326 u32 vertexCount
3327 u32 instanceCount
3328 u32 firstVertex
3329 u32 firstInstance
3330}
3331
Jesse Hall3fbc8562015-11-29 22:10:52 -08003332class VkDrawIndexedIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003333 u32 indexCount
3334 u32 instanceCount
3335 u32 firstIndex
3336 s32 vertexOffset
3337 u32 firstInstance
3338}
3339
Jesse Hall3fbc8562015-11-29 22:10:52 -08003340class VkDispatchIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003341 u32 x
3342 u32 y
3343 u32 z
3344}
3345
Jesse Halld0599582017-03-10 18:35:38 -08003346@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08003347class VkSurfaceCapabilitiesKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003348 u32 minImageCount
3349 u32 maxImageCount
3350 VkExtent2D currentExtent
3351 VkExtent2D minImageExtent
3352 VkExtent2D maxImageExtent
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003353 u32 maxImageArrayLayers
Jesse Hall1356b0d2015-11-23 17:24:58 -08003354 VkSurfaceTransformFlagsKHR supportedTransforms
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003355 VkSurfaceTransformFlagBitsKHR currentTransform
Jesse Halla6429252015-11-29 18:59:42 -08003356 VkCompositeAlphaFlagsKHR supportedCompositeAlpha
Jesse Hall1356b0d2015-11-23 17:24:58 -08003357 VkImageUsageFlags supportedUsageFlags
Michael Lentine88594d72015-11-12 12:49:45 -08003358}
3359
Jesse Halld0599582017-03-10 18:35:38 -08003360@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08003361class VkSurfaceFormatKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003362 VkFormat format
3363 VkColorSpaceKHR colorSpace
Michael Lentine88594d72015-11-12 12:49:45 -08003364}
3365
Jesse Halld0599582017-03-10 18:35:38 -08003366@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08003367class VkSwapchainCreateInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003368 VkStructureType sType
3369 const void* pNext
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003370 VkSwapchainCreateFlagsKHR flags
Jesse Hall1356b0d2015-11-23 17:24:58 -08003371 VkSurfaceKHR surface
3372 u32 minImageCount
3373 VkFormat imageFormat
3374 VkColorSpaceKHR imageColorSpace
3375 VkExtent2D imageExtent
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003376 u32 imageArrayLayers
3377 VkImageUsageFlags imageUsage
Jesse Hall1356b0d2015-11-23 17:24:58 -08003378 VkSharingMode sharingMode
Jesse Hall03b6fe12015-11-24 12:44:21 -08003379 u32 queueFamilyIndexCount
Jesse Hall1356b0d2015-11-23 17:24:58 -08003380 const u32* pQueueFamilyIndices
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003381 VkSurfaceTransformFlagBitsKHR preTransform
3382 VkCompositeAlphaFlagBitsKHR compositeAlpha
Jesse Hall1356b0d2015-11-23 17:24:58 -08003383 VkPresentModeKHR presentMode
Jesse Hall1356b0d2015-11-23 17:24:58 -08003384 VkBool32 clipped
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003385 VkSwapchainKHR oldSwapchain
Michael Lentine88594d72015-11-12 12:49:45 -08003386}
3387
Jesse Halld0599582017-03-10 18:35:38 -08003388@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08003389class VkPresentInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003390 VkStructureType sType
3391 const void* pNext
Jesse Hallb00daad2015-11-29 19:46:20 -08003392 u32 waitSemaphoreCount
3393 const VkSemaphore* pWaitSemaphores
Jesse Hall1356b0d2015-11-23 17:24:58 -08003394 u32 swapchainCount
Jesse Hall03b6fe12015-11-24 12:44:21 -08003395 const VkSwapchainKHR* pSwapchains
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003396 const u32* pImageIndices
Jesse Halle1b12782015-11-30 11:27:32 -08003397 VkResult* pResults
Michael Lentine88594d72015-11-12 12:49:45 -08003398}
3399
Jesse Halld0599582017-03-10 18:35:38 -08003400@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003401class VkDisplayPropertiesKHR {
3402 VkDisplayKHR display
3403 const char* displayName
3404 VkExtent2D physicalDimensions
3405 VkExtent2D physicalResolution
3406 VkSurfaceTransformFlagsKHR supportedTransforms
Jesse Hall1356b0d2015-11-23 17:24:58 -08003407 VkBool32 planeReorderPossible
Jesse Halla6429252015-11-29 18:59:42 -08003408 VkBool32 persistentContent
Michael Lentine88594d72015-11-12 12:49:45 -08003409}
3410
Jesse Halld0599582017-03-10 18:35:38 -08003411@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003412class VkDisplayModeParametersKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003413 VkExtent2D visibleRegion
Jesse Halla6429252015-11-29 18:59:42 -08003414 u32 refreshRate
Michael Lentine88594d72015-11-12 12:49:45 -08003415}
Jesse Halld27f6aa2015-08-15 17:58:48 -07003416
Jesse Halld0599582017-03-10 18:35:38 -08003417@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003418class VkDisplayModePropertiesKHR {
3419 VkDisplayModeKHR displayMode
Jesse Halla6429252015-11-29 18:59:42 -08003420 VkDisplayModeParametersKHR parameters
Jesse Hall1356b0d2015-11-23 17:24:58 -08003421}
3422
Jesse Halld0599582017-03-10 18:35:38 -08003423@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003424class VkDisplayModeCreateInfoKHR {
3425 VkStructureType sType
3426 const void* pNext
Jesse Hall9ba8bc82015-11-30 16:22:16 -08003427 VkDisplayModeCreateFlagsKHR flags
Jesse Halla6429252015-11-29 18:59:42 -08003428 VkDisplayModeParametersKHR parameters
Jesse Hall1356b0d2015-11-23 17:24:58 -08003429}
3430
Jesse Halld0599582017-03-10 18:35:38 -08003431@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003432class VkDisplayPlanePropertiesKHR {
Jesse Halla6429252015-11-29 18:59:42 -08003433 VkDisplayKHR currentDisplay
3434 u32 currentStackIndex
3435}
3436
Jesse Halld0599582017-03-10 18:35:38 -08003437@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003438class VkDisplayPlaneCapabilitiesKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003439 VkDisplayPlaneAlphaFlagsKHR supportedAlpha
3440 VkOffset2D minSrcPosition
3441 VkOffset2D maxSrcPosition
3442 VkExtent2D minSrcExtent
3443 VkExtent2D maxSrcExtent
3444 VkOffset2D minDstPosition
3445 VkOffset2D maxDstPosition
3446 VkExtent2D minDstExtent
3447 VkExtent2D maxDstExtent
3448}
3449
Jesse Halld0599582017-03-10 18:35:38 -08003450@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003451class VkDisplaySurfaceCreateInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003452 VkStructureType sType
3453 const void* pNext
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003454 VkDisplaySurfaceCreateFlagsKHR flags
Jesse Hall1356b0d2015-11-23 17:24:58 -08003455 VkDisplayModeKHR displayMode
3456 u32 planeIndex
3457 u32 planeStackIndex
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003458 VkSurfaceTransformFlagBitsKHR transform
Jesse Hall1356b0d2015-11-23 17:24:58 -08003459 f32 globalAlpha
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003460 VkDisplayPlaneAlphaFlagBitsKHR alphaMode
3461 VkExtent2D imageExtent
Jesse Hall1356b0d2015-11-23 17:24:58 -08003462}
3463
Jesse Halld0599582017-03-10 18:35:38 -08003464@extension("VK_KHR_display_swapchain") // 4
Jesse Hall1356b0d2015-11-23 17:24:58 -08003465class VkDisplayPresentInfoKHR {
3466 VkStructureType sType
3467 const void* pNext
3468 VkRect2D srcRect
3469 VkRect2D dstRect
Jesse Halla6429252015-11-29 18:59:42 -08003470 VkBool32 persistent
Jesse Hall1356b0d2015-11-23 17:24:58 -08003471}
3472
Jesse Halld0599582017-03-10 18:35:38 -08003473@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003474class VkXlibSurfaceCreateInfoKHR {
3475 VkStructureType sType
3476 const void* pNext
3477 VkXlibSurfaceCreateFlagsKHR flags
3478 platform.Display* dpy
3479 platform.Window window
3480}
3481
Jesse Halld0599582017-03-10 18:35:38 -08003482@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003483class VkXcbSurfaceCreateInfoKHR {
3484 VkStructureType sType
3485 const void* pNext
3486 VkXcbSurfaceCreateFlagsKHR flags
3487 platform.xcb_connection_t* connection
3488 platform.xcb_window_t window
3489}
3490
Jesse Halld0599582017-03-10 18:35:38 -08003491@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003492class VkWaylandSurfaceCreateInfoKHR {
3493 VkStructureType sType
3494 const void* pNext
3495 VkWaylandSurfaceCreateFlagsKHR flags
3496 platform.wl_display* display
3497 platform.wl_surface* surface
3498}
3499
Jesse Halld0599582017-03-10 18:35:38 -08003500@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003501class VkMirSurfaceCreateInfoKHR {
3502 VkStructureType sType
3503 const void* pNext
3504 VkMirSurfaceCreateFlagsKHR flags
3505 platform.MirConnection* connection
3506 platform.MirSurface* mirSurface
3507}
3508
Jesse Halld0599582017-03-10 18:35:38 -08003509@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003510class VkAndroidSurfaceCreateInfoKHR {
3511 VkStructureType sType
3512 const void* pNext
3513 VkAndroidSurfaceCreateFlagsKHR flags
3514 platform.ANativeWindow* window
3515}
3516
Jesse Halld0599582017-03-10 18:35:38 -08003517@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003518class VkWin32SurfaceCreateInfoKHR {
3519 VkStructureType sType
3520 const void* pNext
3521 VkWin32SurfaceCreateFlagsKHR flags
3522 platform.HINSTANCE hinstance
3523 platform.HWND hwnd
3524}
3525
Jesse Halld0599582017-03-10 18:35:38 -08003526@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08003527class VkNativeBufferANDROID {
3528 VkStructureType sType
3529 const void* pNext
3530 platform.buffer_handle_t handle
3531 int stride
3532 int format
3533 int usage
3534}
3535
Jesse Halld0599582017-03-10 18:35:38 -08003536@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08003537class VkDebugReportCallbackCreateInfoEXT {
3538 VkStructureType sType
3539 const void* pNext
3540 VkDebugReportFlagsEXT flags
3541 PFN_vkDebugReportCallbackEXT pfnCallback
3542 void* pUserData
3543}
3544
Jesse Halld0599582017-03-10 18:35:38 -08003545@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07003546class VkPipelineRasterizationStateRasterizationOrderAMD {
3547 VkStructureType sType
3548 const void* pNext
3549 VkRasterizationOrderAMD rasterizationOrder
3550}
3551
Jesse Halld0599582017-03-10 18:35:38 -08003552@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003553class VkDebugMarkerObjectNameInfoEXT {
3554 VkStructureType sType
3555 const void* pNext
3556 VkDebugReportObjectTypeEXT objectType
3557 u64 object
3558 const char* pObjectName
3559}
3560
Jesse Halld0599582017-03-10 18:35:38 -08003561@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003562class VkDebugMarkerObjectTagInfoEXT {
3563 VkStructureType sType
3564 const void* pNext
3565 VkDebugReportObjectTypeEXT objectType
3566 u64 object
3567 u64 tagName
3568 platform.size_t tagSize
3569 const void* pTag
3570}
3571
Jesse Halld0599582017-03-10 18:35:38 -08003572@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003573class VkDebugMarkerMarkerInfoEXT {
3574 VkStructureType sType
3575 const void* pNext
3576 const char* pMarkerName
3577 f32[4] color
3578}
3579
Jesse Halld0599582017-03-10 18:35:38 -08003580@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall3f5499b2016-07-26 15:20:40 -07003581class VkDedicatedAllocationImageCreateInfoNV {
3582 VkStructureType sType
3583 const void* pNext
3584 VkBool32 dedicatedAllocation
3585}
3586
Jesse Halld0599582017-03-10 18:35:38 -08003587@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall3f5499b2016-07-26 15:20:40 -07003588class VkDedicatedAllocationBufferCreateInfoNV {
3589 VkStructureType sType
3590 const void* pNext
3591 VkBool32 dedicatedAllocation
3592}
3593
Jesse Halld0599582017-03-10 18:35:38 -08003594@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall3f5499b2016-07-26 15:20:40 -07003595class VkDedicatedAllocationMemoryAllocateInfoNV {
3596 VkStructureType sType
3597 const void* pNext
3598 VkImage image
3599 VkBuffer buffer
3600}
3601
Jesse Hall7ba0ac72017-07-07 17:13:23 -07003602@extension("VK_AMD_texture_gather_bias_lod") // 42
3603class VkTextureLODGatherFormatPropertiesAMD {
3604 VkStructureType sType
3605 void* pNext
3606 VkBool32 supportsTextureGatherLODBiasAMD
3607}
3608
Jesse Halld0599582017-03-10 18:35:38 -08003609@extension("VK_KHX_multiview") // 54
3610class VkRenderPassMultiviewCreateInfoKHX {
3611 VkStructureType sType
3612 const void* pNext
3613 u32 subpassCount
3614 const u32* pViewMasks
3615 u32 dependencyCount
3616 const s32* pViewOffsets
3617 u32 correlationMaskCount
3618 const u32* pCorrelationMasks
3619}
3620
3621@extension("VK_KHX_multiview") // 54
3622class VkPhysicalDeviceMultiviewFeaturesKHX {
3623 VkStructureType sType
3624 void* pNext
3625 VkBool32 multiview
3626 VkBool32 multiviewGeometryShader
3627 VkBool32 multiviewTessellationShader
3628}
3629
3630@extension("VK_KHX_multiview") // 54
3631class VkPhysicalDeviceMultiviewPropertiesKHX {
3632 VkStructureType sType
3633 void* pNext
3634 u32 maxMultiviewViewCount
3635 u32 maxMultiviewInstanceIndex
3636}
3637
3638@extension("VK_NV_external_memory_capabilities") // 56
Jesse Halleb02c472017-02-24 15:13:45 -08003639class VkExternalImageFormatPropertiesNV {
3640 VkImageFormatProperties imageFormatProperties
3641 VkExternalMemoryFeatureFlagsNV externalMemoryFeatures
3642 VkExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes
3643 VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes
3644}
3645
Jesse Halld0599582017-03-10 18:35:38 -08003646@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08003647class VkExternalMemoryImageCreateInfoNV {
3648 VkStructureType sType
3649 const void* pNext
3650 VkExternalMemoryHandleTypeFlagsNV handleTypes
3651}
3652
Jesse Halld0599582017-03-10 18:35:38 -08003653@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08003654class VkExportMemoryAllocateInfoNV {
3655 VkStructureType sType
3656 const void* pNext
3657 VkExternalMemoryHandleTypeFlagsNV handleTypes
3658}
3659
Jesse Halld0599582017-03-10 18:35:38 -08003660@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08003661class VkImportMemoryWin32HandleInfoNV {
3662 VkStructureType sType
3663 const void* pNext
3664 VkExternalMemoryHandleTypeFlagsNV handleType
3665 platform.HANDLE handle
3666}
3667
Jesse Halld0599582017-03-10 18:35:38 -08003668@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08003669class VkExportMemoryWin32HandleInfoNV {
3670 VkStructureType sType
3671 const void* pNext
3672 const platform.SECURITY_ATTRIBUTES* pAttributes
3673 platform.DWORD dwAccess
3674}
3675
Jesse Halld0599582017-03-10 18:35:38 -08003676@extension("VK_NV_win32_keyed_mutex") // 59
Jesse Halleb02c472017-02-24 15:13:45 -08003677class VkWin32KeyedMutexAcquireReleaseInfoNV {
3678 VkStructureType sType
3679 const void* pNext
3680 u32 acquireCount
3681 const VkDeviceMemory* pAcquireSyncs
3682 const u64* pAcquireKeys
3683 const u32* pAcquireTimeoutMilliseconds
3684 u32 releaseCount
3685 const VkDeviceMemory* pReleaseSyncs
3686 const u64* pReleaseKeys
3687}
3688
Jesse Halld0599582017-03-10 18:35:38 -08003689@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08003690class VkPhysicalDeviceFeatures2KHR {
3691 VkStructureType sType
3692 void* pNext
3693 VkPhysicalDeviceFeatures features
3694}
3695
Jesse Halld0599582017-03-10 18:35:38 -08003696@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08003697class VkPhysicalDeviceProperties2KHR {
3698 VkStructureType sType
3699 void* pNext
3700 VkPhysicalDeviceProperties properties
3701}
3702
Jesse Halld0599582017-03-10 18:35:38 -08003703@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08003704class VkFormatProperties2KHR {
3705 VkStructureType sType
3706 void* pNext
3707 VkFormatProperties formatProperties
3708}
3709
Jesse Halld0599582017-03-10 18:35:38 -08003710@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08003711class VkImageFormatProperties2KHR {
3712 VkStructureType sType
3713 void* pNext
3714 VkImageFormatProperties imageFormatProperties
3715}
3716
Jesse Halld0599582017-03-10 18:35:38 -08003717@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08003718class VkPhysicalDeviceImageFormatInfo2KHR {
3719 VkStructureType sType
3720 const void* pNext
3721 VkFormat format
3722 VkImageType type
3723 VkImageTiling tiling
3724 VkImageUsageFlags usage
3725 VkImageCreateFlags flags
3726}
3727
Jesse Halld0599582017-03-10 18:35:38 -08003728@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08003729class VkQueueFamilyProperties2KHR {
3730 VkStructureType sType
3731 void* pNext
3732 VkQueueFamilyProperties queueFamilyProperties
3733}
3734
Jesse Halld0599582017-03-10 18:35:38 -08003735@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08003736class VkPhysicalDeviceMemoryProperties2KHR {
3737 VkStructureType sType
3738 void* pNext
3739 VkPhysicalDeviceMemoryProperties memoryProperties
3740}
3741
Jesse Halld0599582017-03-10 18:35:38 -08003742@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08003743class VkSparseImageFormatProperties2KHR {
3744 VkStructureType sType
3745 void* pNext
3746 VkSparseImageFormatProperties properties
3747}
3748
Jesse Halld0599582017-03-10 18:35:38 -08003749@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08003750class VkPhysicalDeviceSparseImageFormatInfo2KHR {
3751 VkStructureType sType
3752 const void* pNext
3753 VkFormat format
3754 VkImageType type
3755 VkSampleCountFlagBits samples
3756 VkImageUsageFlags usage
3757 VkImageTiling tiling
3758}
3759
Jesse Halld0599582017-03-10 18:35:38 -08003760@extension("VK_KHX_device_group") // 61
3761class VkMemoryAllocateFlagsInfoKHX {
3762 VkStructureType sType
3763 const void* pNext
3764 VkMemoryAllocateFlagsKHX flags
3765 u32 deviceMask
3766}
3767
3768@extension("VK_KHX_device_group") // 61
3769class VkBindBufferMemoryInfoKHX {
3770 VkStructureType sType
3771 const void* pNext
3772 VkBuffer buffer
3773 VkDeviceMemory memory
3774 VkDeviceSize memoryOffset
3775 u32 deviceIndexCount
3776 const u32* pDeviceIndices
3777}
3778
3779@extension("VK_KHX_device_group") // 61
3780class VkBindImageMemoryInfoKHX {
3781 VkStructureType sType
3782 const void* pNext
3783 VkImage image
3784 VkDeviceMemory memory
3785 VkDeviceSize memoryOffset
3786 u32 deviceIndexCount
3787 const u32* pDeviceIndices
3788 u32 SFRRectCount
3789 const VkRect2D* pSFRRects
3790}
3791
3792@extension("VK_KHX_device_group") // 61
3793class VkDeviceGroupRenderPassBeginInfoKHX {
3794 VkStructureType sType
3795 const void* pNext
3796 u32 deviceMask
3797 u32 deviceRenderAreaCount
3798 const VkRect2D* pDeviceRenderAreas
3799}
3800
3801@extension("VK_KHX_device_group") // 61
3802class VkDeviceGroupCommandBufferBeginInfoKHX {
3803 VkStructureType sType
3804 const void* pNext
3805 u32 deviceMask
3806}
3807
3808@extension("VK_KHX_device_group") // 61
3809class VkDeviceGroupSubmitInfoKHX {
3810 VkStructureType sType
3811 const void* pNext
3812 u32 waitSemaphoreCount
3813 const u32* pWaitSemaphoreDeviceIndices
3814 u32 commandBufferCount
3815 const u32* pCommandBufferDeviceMasks
3816 u32 signalSemaphoreCount
3817 const u32* pSignalSemaphoreDeviceIndices
3818}
3819
3820@extension("VK_KHX_device_group") // 61
3821class VkDeviceGroupBindSparseInfoKHX {
3822 VkStructureType sType
3823 const void* pNext
3824 u32 resourceDeviceIndex
3825 u32 memoryDeviceIndex
3826}
3827
3828@extension("VK_KHX_device_group") // 61
3829class VkDeviceGroupPresentCapabilitiesKHX {
3830 VkStructureType sType
3831 const void* pNext
3832 u32[VK_MAX_DEVICE_GROUP_SIZE_KHX] presentMask
3833 VkDeviceGroupPresentModeFlagsKHX modes
3834}
3835
3836@extension("VK_KHX_device_group") // 61
3837class VkImageSwapchainCreateInfoKHX {
3838 VkStructureType sType
3839 const void* pNext
3840 VkSwapchainKHR swapchain
3841}
3842
3843@extension("VK_KHX_device_group") // 61
3844class VkBindImageMemorySwapchainInfoKHX {
3845 VkStructureType sType
3846 const void* pNext
3847 VkSwapchainKHR swapchain
3848 u32 imageIndex
3849}
3850
3851@extension("VK_KHX_device_group") // 61
3852class VkAcquireNextImageInfoKHX {
3853 VkStructureType sType
3854 const void* pNext
3855 VkSwapchainKHR swapchain
3856 u64 timeout
3857 VkSemaphore semaphore
3858 VkFence fence
3859 u32 deviceMask
3860}
3861
3862@extension("VK_KHX_device_group") // 61
3863class VkDeviceGroupPresentInfoKHX {
3864 VkStructureType sType
3865 const void* pNext
3866 u32 swapchainCount
3867 const u32* pDeviceMasks
3868 VkDeviceGroupPresentModeFlagBitsKHX mode
3869}
3870
3871@extension("VK_KHX_device_group") // 61
3872class VkDeviceGroupSwapchainCreateInfoKHX {
3873 VkStructureType sType
3874 const void* pNext
3875 VkDeviceGroupPresentModeFlagsKHX modes
3876}
3877
3878@extension("VK_EXT_validation_flags") // 62
Jesse Halleb02c472017-02-24 15:13:45 -08003879class VkValidationFlagsEXT {
3880 VkStructureType sType
3881 const void* pNext
3882 u32 disabledValidationCheckCount
3883 VkValidationCheckEXT* pDisabledValidationChecks
3884}
3885
Jesse Halld0599582017-03-10 18:35:38 -08003886@extension("VK_NN_vi_surface") // 63
Jesse Hall08e2f482017-03-06 15:22:17 -08003887class VkViSurfaceCreateInfoNN {
3888 VkStructureType sType
3889 const void* pNext
3890 VkViSurfaceCreateFlagsNN flags
3891 void* window
3892}
3893
Jesse Halld0599582017-03-10 18:35:38 -08003894@extension("VK_KHX_device_group_creation") // 71
3895class VkPhysicalDeviceGroupPropertiesKHX {
3896 VkStructureType sType
Jesse Hall2c677d52017-03-20 13:09:19 -07003897 void* pNext
Jesse Halld0599582017-03-10 18:35:38 -08003898 u32 physicalDeviceCount
3899 VkPhysicalDevice[VK_MAX_DEVICE_GROUP_SIZE_KHX] physicalDevices
3900 VkBool32 subsetAllocation
3901}
3902
3903@extension("VK_KHX_device_group_creation") // 71
3904class VkDeviceGroupDeviceCreateInfoKHX {
3905 VkStructureType sType
3906 const void* pNext
3907 u32 physicalDeviceCount
3908 const VkPhysicalDevice* pPhysicalDevices
3909}
3910
3911@extension("VK_KHX_external_memory_capabilities") // 72
3912class VkExternalMemoryPropertiesKHX {
3913 VkExternalMemoryFeatureFlagsKHX externalMemoryFeatures
3914 VkExternalMemoryHandleTypeFlagsKHX exportFromImportedHandleTypes
3915 VkExternalMemoryHandleTypeFlagsKHX compatibleHandleTypes
3916}
3917
3918@extension("VK_KHX_external_memory_capabilities") // 72
3919class VkPhysicalDeviceExternalImageFormatInfoKHX {
3920 VkStructureType sType
3921 const void* pNext
3922 VkExternalMemoryHandleTypeFlagBitsKHX handleType
3923}
3924
3925@extension("VK_KHX_external_memory_capabilities") // 72
3926class VkExternalImageFormatPropertiesKHX {
3927 VkStructureType sType
3928 void* pNext
3929 VkExternalMemoryPropertiesKHX externalMemoryProperties
3930}
3931
3932@extension("VK_KHX_external_memory_capabilities") // 72
3933class VkPhysicalDeviceExternalBufferInfoKHX {
3934 VkStructureType sType
3935 const void* pNext
3936 VkBufferCreateFlags flags
3937 VkBufferUsageFlags usage
3938 VkExternalMemoryHandleTypeFlagBitsKHX handleType
3939}
3940
3941@extension("VK_KHX_external_memory_capabilities") // 72
3942class VkExternalBufferPropertiesKHX {
3943 VkStructureType sType
3944 void* pNext
3945 VkExternalMemoryPropertiesKHX externalMemoryProperties
3946}
3947
3948@extension("VK_KHX_external_memory_capabilities") // 72
3949class VkPhysicalDeviceIDPropertiesKHX {
3950 VkStructureType sType
3951 void* pNext
3952 u8[VK_UUID_SIZE] deviceUUID
3953 u8[VK_UUID_SIZE] driverUUID
3954 u8[VK_LUID_SIZE_KHX] deviceLUID
3955 VkBool32 deviceLUIDValid
3956}
3957
Jesse Halld0599582017-03-10 18:35:38 -08003958@extension("VK_KHX_external_memory") // 73
3959class VkExternalMemoryImageCreateInfoKHX {
3960 VkStructureType sType
3961 const void* pNext
3962 VkExternalMemoryHandleTypeFlagsKHX handleTypes
3963}
3964
3965@extension("VK_KHX_external_memory") // 73
3966class VkExternalMemoryBufferCreateInfoKHX {
3967 VkStructureType sType
3968 const void* pNext
3969 VkExternalMemoryHandleTypeFlagsKHX handleTypes
3970}
3971
3972@extension("VK_KHX_external_memory") // 73
3973class VkExportMemoryAllocateInfoKHX {
3974 VkStructureType sType
3975 const void* pNext
3976 VkExternalMemoryHandleTypeFlagsKHX handleTypes
3977}
3978
3979@extension("VK_KHX_external_memory_win32") // 74
3980class VkImportMemoryWin32HandleInfoKHX {
3981 VkStructureType sType
3982 const void* pNext
3983 VkExternalMemoryHandleTypeFlagBitsKHX handleType
3984 platform.HANDLE handle
3985}
3986
3987@extension("VK_KHX_external_memory_win32") // 74
3988class VkExportMemoryWin32HandleInfoKHX {
3989 VkStructureType sType
3990 const void* pNext
3991 const platform.SECURITY_ATTRIBUTES* pAttributes
3992 platform.DWORD dwAccess
3993 platform.LPCWSTR name
3994}
3995
3996@extension("VK_KHX_external_memory_win32") // 74
3997class VkMemoryWin32HandlePropertiesKHX {
3998 VkStructureType sType
3999 void* pNext
4000 u32 memoryTypeBits
4001}
4002
4003@extension("VK_KHX_external_memory_fd") // 75
4004class VkImportMemoryFdInfoKHX {
4005 VkStructureType sType
4006 const void* pNext
4007 VkExternalMemoryHandleTypeFlagBitsKHX handleType
4008 int fd
4009}
4010
4011@extension("VK_KHX_external_memory_fd") // 75
4012class VkMemoryFdPropertiesKHX {
4013 VkStructureType sType
4014 void* pNext
4015 u32 memoryTypeBits
4016}
4017
4018@extension("VK_KHX_win32_keyed_mutex") // 76
4019class VkWin32KeyedMutexAcquireReleaseInfoKHX {
4020 VkStructureType sType
4021 const void* pNext
4022 u32 acquireCount
4023 const VkDeviceMemory* pAcquireSyncs
4024 const u64* pAcquireKeys
4025 const u32* pAcquireTimeouts
4026 u32 releaseCount
4027 const VkDeviceMemory* pReleaseSyncs
4028 const u64* pReleaseKeys
4029}
4030
4031@extension("VK_KHX_external_semaphore_capabilities") // 77
4032class VkPhysicalDeviceExternalSemaphoreInfoKHX {
4033 VkStructureType sType
4034 const void* pNext
4035 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType
4036}
4037
4038@extension("VK_KHX_external_semaphore_capabilities") // 77
4039class VkExternalSemaphorePropertiesKHX {
4040 VkStructureType sType
4041 void* pNext
4042 VkExternalSemaphoreHandleTypeFlagsKHX exportFromImportedHandleTypes
4043 VkExternalSemaphoreHandleTypeFlagsKHX compatibleHandleTypes
4044 VkExternalSemaphoreFeatureFlagsKHX externalSemaphoreFeatures
4045}
4046
4047@extension("VK_KHX_external_semaphore") // 78
4048class VkExportSemaphoreCreateInfoKHX {
4049 VkStructureType sType
4050 const void* pNext
4051 VkExternalSemaphoreHandleTypeFlagsKHX handleTypes
4052}
4053
4054@extension("VK_KHX_external_semaphore_win32") // 79
4055class VkImportSemaphoreWin32HandleInfoKHX {
4056 VkStructureType sType
4057 const void* pNext
4058 VkSemaphore semaphore
4059 VkExternalSemaphoreHandleTypeFlagsKHX handleType
4060 platform.HANDLE handle
4061}
4062
4063@extension("VK_KHX_external_semaphore_win32") // 79
4064class VkExportSemaphoreWin32HandleInfoKHX {
4065 VkStructureType sType
4066 const void* pNext
4067 const platform.SECURITY_ATTRIBUTES* pAttributes
4068 platform.DWORD dwAccess
4069 platform.LPCWSTR name
4070}
4071
4072@extension("VK_KHX_external_semaphore_win32") // 79
4073class VkD3D12FenceSubmitInfoKHX {
4074 VkStructureType sType
4075 const void* pNext
4076 u32 waitSemaphoreValuesCount
4077 const u64* pWaitSemaphoreValues
4078 u32 signalSemaphoreValuesCount
4079 const u64* pSignalSemaphoreValues
4080}
4081
4082@extension("VK_KHX_external_semaphore_fd") // 80
4083class VkImportSemaphoreFdInfoKHX {
4084 VkStructureType sType
4085 const void* pNext
4086 VkSemaphore semaphore
4087 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType
4088 s32 fd
4089}
4090
4091@extension("VK_KHR_push_descriptor") // 81
4092class VkPhysicalDevicePushDescriptorPropertiesKHR {
4093 VkStructureType sType
4094 void* pNext
4095 u32 maxPushDescriptors
4096}
4097
Jesse Hall2c677d52017-03-20 13:09:19 -07004098@extension("VK_KHR_incremental_present") // 85
4099class VkRectLayerKHR {
4100 VkOffset2D offset
4101 VkExtent2D extent
4102 u32 layer
4103}
4104
4105@extension("VK_KHR_incremental_present") // 85
4106class VkPresentRegionKHR {
4107 u32 rectangleCount
4108 const VkRectLayerKHR* pRectangles
4109}
4110
4111@extension("VK_KHR_incremental_present") // 85
4112class VkPresentRegionsKHR {
4113 VkStructureType sType
4114 const void* pNext
4115 u32 swapchainCount
4116 const VkPresentRegionKHR* pRegions
4117}
4118
Jesse Halld0599582017-03-10 18:35:38 -08004119@extension("VK_KHR_descriptor_update_template") // 86
4120class VkDescriptorUpdateTemplateEntryKHR {
4121 u32 dstBinding
4122 u32 dstArrayElement
4123 u32 descriptorCount
4124 VkDescriptorType descriptorType
4125 platform.size_t offset
4126 platform.size_t stride
4127}
4128
4129@extension("VK_KHR_descriptor_update_template") // 86
4130class VkDescriptorUpdateTemplateCreateInfoKHR {
4131 VkStructureType sType
4132 void* pNext
4133 VkDescriptorUpdateTemplateCreateFlagsKHR flags
4134 u32 descriptorUpdateEntryCount
4135 const VkDescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries
4136 VkDescriptorUpdateTemplateTypeKHR templateType
4137 VkDescriptorSetLayout descriptorSetLayout
4138 VkPipelineBindPoint pipelineBindPoint
4139 VkPipelineLayout pipelineLayout
4140 u32 set
4141}
4142
4143@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004144class VkDeviceGeneratedCommandsFeaturesNVX {
4145 VkStructureType sType
4146 const void* pNext
4147 VkBool32 computeBindingPointSupport
4148}
4149
Jesse Halld0599582017-03-10 18:35:38 -08004150@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004151class VkDeviceGeneratedCommandsLimitsNVX {
4152 VkStructureType sType
4153 const void* pNext
4154 u32 maxIndirectCommandsLayoutTokenCount
4155 u32 maxObjectEntryCounts
4156 u32 minSequenceCountBufferOffsetAlignment
4157 u32 minSequenceIndexBufferOffsetAlignment
4158 u32 minCommandsTokenBufferOffsetAlignment
4159}
4160
Jesse Halld0599582017-03-10 18:35:38 -08004161@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004162class VkIndirectCommandsTokenNVX {
4163 VkIndirectCommandsTokenTypeNVX tokenType
4164 VkBuffer buffer
4165 VkDeviceSize offset
4166}
4167
Jesse Halld0599582017-03-10 18:35:38 -08004168@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004169class VkIndirectCommandsLayoutTokenNVX {
4170 VkIndirectCommandsTokenTypeNVX tokenType
4171 u32 bindingUnit
4172 u32 dynamicCount
4173 u32 divisor
4174}
4175
Jesse Halld0599582017-03-10 18:35:38 -08004176@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004177class VkIndirectCommandsLayoutCreateInfoNVX {
4178 VkStructureType sType
4179 const void* pNext
4180 VkPipelineBindPoint pipelineBindPoint
4181 VkIndirectCommandsLayoutUsageFlagsNVX flags
4182 u32 tokenCount
4183 const VkIndirectCommandsLayoutTokenNVX* pTokens
4184}
4185
Jesse Halld0599582017-03-10 18:35:38 -08004186@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004187class VkCmdProcessCommandsInfoNVX {
4188 VkStructureType sType
4189 const void* pNext
4190 VkObjectTableNVX objectTable
4191 VkIndirectCommandsLayoutNVX indirectCommandsLayout
4192 u32 indirectCommandsTokenCount
4193 const VkIndirectCommandsTokenNVX* pIndirectCommandsTokens
4194 u32 maxSequencesCount
4195 VkCommandBuffer targetCommandBuffer
4196 VkBuffer sequencesCountBuffer
4197 VkDeviceSize sequencesCountOffset
4198 VkBuffer sequencesIndexBuffer
4199 VkDeviceSize sequencesIndexOffset
4200}
4201
Jesse Halld0599582017-03-10 18:35:38 -08004202@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004203class VkCmdReserveSpaceForCommandsInfoNVX {
4204 VkStructureType sType
4205 const void* pNext
4206 VkObjectTableNVX objectTable
4207 VkIndirectCommandsLayoutNVX indirectCommandsLayout
4208 u32 maxSequencesCount
4209}
4210
Jesse Halld0599582017-03-10 18:35:38 -08004211@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004212class VkObjectTableCreateInfoNVX {
4213 VkStructureType sType
4214 const void* pNext
4215 u32 objectCount
4216 const VkObjectEntryTypeNVX* pObjectEntryTypes
4217 const u32* pObjectEntryCounts
4218 const VkObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags
4219 u32 maxUniformBuffersPerDescriptor
4220 u32 maxStorageBuffersPerDescriptor
4221 u32 maxStorageImagesPerDescriptor
4222 u32 maxSampledImagesPerDescriptor
4223 u32 maxPipelineLayouts
4224}
4225
Jesse Halld0599582017-03-10 18:35:38 -08004226@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004227class VkObjectTableEntryNVX {
4228 VkObjectEntryTypeNVX type
4229 VkObjectEntryUsageFlagsNVX flags
4230}
4231
Jesse Halld0599582017-03-10 18:35:38 -08004232@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004233class VkObjectTablePipelineEntryNVX {
4234 VkObjectEntryTypeNVX type
4235 VkObjectEntryUsageFlagsNVX flags
4236 VkPipeline pipeline
4237}
4238
Jesse Halld0599582017-03-10 18:35:38 -08004239@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004240class VkObjectTableDescriptorSetEntryNVX {
4241 VkObjectEntryTypeNVX type
4242 VkObjectEntryUsageFlagsNVX flags
4243 VkPipelineLayout pipelineLayout
4244 VkDescriptorSet descriptorSet
4245}
4246
Jesse Halld0599582017-03-10 18:35:38 -08004247@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004248class VkObjectTableVertexBufferEntryNVX {
4249 VkObjectEntryTypeNVX type
4250 VkObjectEntryUsageFlagsNVX flags
4251 VkBuffer buffer
4252}
4253
Jesse Halld0599582017-03-10 18:35:38 -08004254@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004255class VkObjectTableIndexBufferEntryNVX {
4256 VkObjectEntryTypeNVX type
4257 VkObjectEntryUsageFlagsNVX flags
4258 VkBuffer buffer
Jesse Hall08e2f482017-03-06 15:22:17 -08004259 VkIndexType indexType
Jesse Halleb02c472017-02-24 15:13:45 -08004260}
4261
Jesse Halld0599582017-03-10 18:35:38 -08004262@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004263class VkObjectTablePushConstantEntryNVX {
4264 VkObjectEntryTypeNVX type
4265 VkObjectEntryUsageFlagsNVX flags
4266 VkPipelineLayout pipelineLayout
4267 VkShaderStageFlags stageFlags
4268}
4269
Jesse Halld0599582017-03-10 18:35:38 -08004270@extension("VK_NV_clip_space_w_scaling") // 88
4271class VkViewportWScalingNV {
4272 f32 xcoeff
4273 f32 ycoeff
4274}
4275
4276@extension("VK_NV_clip_space_w_scaling") // 88
4277class VkPipelineViewportWScalingStateCreateInfoNV {
4278 VkStructureType sType
4279 const void* pNext
4280 VkBool32 viewportWScalingEnable
4281 u32 viewportCount
4282 const VkViewportWScalingNV* pViewportWScalings
4283}
4284
4285@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall08e2f482017-03-06 15:22:17 -08004286class VkSurfaceCapabilities2EXT {
4287 VkStructureType sType
4288 void* pNext
4289 u32 minImageCount
4290 u32 maxImageCount
4291 VkExtent2D currentExtent
4292 VkExtent2D minImageExtent
4293 VkExtent2D maxImageExtent
4294 u32 maxImageArrayLayers
4295 VkSurfaceTransformFlagsKHR supportedTransforms
4296 VkSurfaceTransformFlagBitsKHR currentTransform
4297 VkCompositeAlphaFlagsKHR supportedCompositeAlpha
4298 VkImageUsageFlags supportedUsageFlags
4299 VkSurfaceCounterFlagsEXT supportedSurfaceCounters
4300}
4301
Jesse Halld0599582017-03-10 18:35:38 -08004302@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08004303class VkDisplayPowerInfoEXT {
4304 VkStructureType sType
4305 const void* pNext
4306 VkDisplayPowerStateEXT powerState
4307}
4308
Jesse Halld0599582017-03-10 18:35:38 -08004309@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08004310class VkDeviceEventInfoEXT {
4311 VkStructureType sType
4312 const void* pNext
4313 VkDeviceEventTypeEXT deviceEvent
4314}
4315
Jesse Halld0599582017-03-10 18:35:38 -08004316@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08004317class VkDisplayEventInfoEXT {
4318 VkStructureType sType
4319 const void* pNext
4320 VkDisplayEventTypeEXT displayEvent
4321}
4322
Jesse Halld0599582017-03-10 18:35:38 -08004323@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08004324class VkSwapchainCounterCreateInfoEXT {
4325 VkStructureType sType
4326 const void* pNext
4327 VkSurfaceCounterFlagsEXT surfaceCounters
4328}
Jesse Hall1356b0d2015-11-23 17:24:58 -08004329
Jesse Halle8ec6a22017-03-10 21:01:57 -08004330@extension("VK_GOOGLE_display_timing") // 93
4331class VkRefreshCycleDurationGOOGLE {
4332 u64 refreshDuration
4333}
4334
4335@extension("VK_GOOGLE_display_timing") // 93
4336class VkPastPresentationTimingGOOGLE {
4337 u32 presentID
4338 u64 desiredPresentTime
4339 u64 actualPresentTime
4340 u64 earliestPresentTime
4341 u64 presentMargin
4342}
4343
4344@extension("VK_GOOGLE_display_timing") // 93
4345class VkPresentTimeGOOGLE {
4346 u32 presentID
4347 u64 desiredPresentTime
4348}
4349
4350@extension("VK_GOOGLE_display_timing") // 93
4351class VkPresentTimesInfoGOOGLE {
4352 VkStructureType sType
4353 const void* pNext
4354 u32 swapchainCount
4355 const VkPresentTimeGOOGLE* pTimes
4356}
4357
Jesse Halld0599582017-03-10 18:35:38 -08004358@extension("VK_NVX_multiview_per_view_attributes") // 98
4359class VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
4360 VkStructureType sType
4361 void* pNext
4362 VkBool32 perViewPositionAllComponents
4363}
4364
4365@extension("VK_NV_viewport_swizzle") // 99
4366class VkViewportSwizzleNV {
4367 VkViewportCoordinateSwizzleNV x
4368 VkViewportCoordinateSwizzleNV y
4369 VkViewportCoordinateSwizzleNV z
4370 VkViewportCoordinateSwizzleNV w
4371}
4372
4373@extension("VK_NV_viewport_swizzle") // 99
4374class VkPipelineViewportSwizzleStateCreateInfoNV {
4375 VkStructureType sType
4376 const void* pNext
4377 VkPipelineViewportSwizzleStateCreateFlagsNV flags
4378 u32 viewportCount
4379 const VkViewportSwizzleNV* pViewportSwizzles
4380}
4381
4382@extension("VK_EXT_discard_rectangles") // 100
4383class VkPhysicalDeviceDiscardRectanglePropertiesEXT {
4384 VkStructureType sType
Jesse Hall2c677d52017-03-20 13:09:19 -07004385 void* pNext
Jesse Halld0599582017-03-10 18:35:38 -08004386 u32 maxDiscardRectangles
4387}
4388
4389@extension("VK_EXT_discard_rectangles") // 100
4390class VkPipelineDiscardRectangleStateCreateInfoEXT {
Jesse Halle8ec6a22017-03-10 21:01:57 -08004391 VkStructureType sType
4392 const void* pNext
4393 VkPipelineDiscardRectangleStateCreateFlagsEXT flags
4394 VkDiscardRectangleModeEXT discardRectangleMode
4395 u32 discardRectangleCount
4396 const VkRect2D* pDiscardRectangles
4397}
4398
4399@extension("VK_EXT_hdr_metadata") // 106
4400class VkXYColorEXT {
4401 f32 x
4402 f32 y
4403}
4404
4405@extension("VK_EXT_hdr_metadata") // 106
4406class VkHdrMetadataEXT {
4407 VkStructureType sType
4408 const void* pNext
4409 VkXYColorEXT displayPrimaryRed
4410 VkXYColorEXT displayPrimaryGreen
4411 VkXYColorEXT displayPrimaryBlue
4412 VkXYColorEXT whitePoint
4413 f32 maxLuminance
4414 f32 minLuminance
4415 f32 maxContentLightLevel
4416 f32 maxFrameAverageLightLevel
Jesse Halld0599582017-03-10 18:35:38 -08004417}
4418
Jesse Halle5404242017-04-10 08:09:19 -07004419@extension("VK_KHR_shared_presentable_image") // 112
4420class VkSharedPresentSurfaceCapabilitiesKHR {
4421 VkStructureType sType
4422 void* pNext
4423 VkImageUsageFlags sharedPresentSupportedUsageFlags
4424}
4425
4426@extension("VK_KHR_get_surface_capabilities2") // 120
4427class VkPhysicalDeviceSurfaceInfo2KHR {
4428 VkStructureType sType
4429 const void* pNext
4430 VkSurfaceKHR surface
4431}
4432
4433@extension("VK_KHR_get_surface_capabilities2") // 120
4434class VkSurfaceCapabilities2KHR {
4435 VkStructureType sType
4436 void* pNext
4437 VkSurfaceCapabilitiesKHR surfaceCapabilities
4438}
4439
4440@extension("VK_KHR_get_surface_capabilities2") // 120
4441class VkSurfaceFormat2KHR {
4442 VkStructureType sType
4443 void* pNext
4444 VkSurfaceFormatKHR surfaceFormat
4445}
4446
Jesse Halld0599582017-03-10 18:35:38 -08004447@extension("VK_MVK_ios_surface") // 123
4448class VkIOSSurfaceCreateInfoMVK {
4449 VkStructureType sType
4450 const void* pNext
4451 VkIOSSurfaceCreateFlagsMVK flags
4452 const void* pView
4453}
4454
4455@extension("VK_MVK_macos_surface") // 124
4456class VkMacOSSurfaceCreateInfoMVK {
4457 VkStructureType sType
4458 const void* pNext
4459 VkMacOSSurfaceCreateFlagsMVK flags
4460 const void* pView
4461}
4462
Jesse Hall7ba0ac72017-07-07 17:13:23 -07004463@extension("VK_EXT_sampler_filter_minmax") // 131
4464class VkSamplerReductionModeCreateInfoEXT {
4465 VkStructureType sType
4466 const void* pNext
4467 VkSamplerReductionModeEXT reductionMode
4468}
4469
4470@extension("VK_EXT_sampler_filter_minmax") // 131
4471class VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
4472 VkStructureType sType
4473 void* pNext
4474 VkBool32 filterMinmaxSingleComponentFormats
4475 VkBool32 filterMinmaxImageComponentMapping
4476}
4477
4478@extension("VK_EXT_blend_operation_advanced") // 149
4479class VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
4480 VkStructureType sType
4481 void* pNext
4482 VkBool32 advancedBlendCoherentOperations
4483}
4484
4485@extension("VK_EXT_blend_operation_advanced") // 149
4486class VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
4487 VkStructureType sType
4488 void* pNext
4489 u32 advancedBlendMaxColorAttachments
4490 VkBool32 advancedBlendIndependentBlend
4491 VkBool32 advancedBlendNonPremultipliedSrcColor
4492 VkBool32 advancedBlendNonPremultipliedDstColor
4493 VkBool32 advancedBlendCorrelatedOverlap
4494 VkBool32 advancedBlendAllOperations
4495}
4496
4497@extension("VK_EXT_blend_operation_advanced") // 149
4498class VkPipelineColorBlendAdvancedStateCreateInfoEXT {
4499 VkStructureType sType
4500 const void* pNext
4501 VkBool32 srcPremultiplied
4502 VkBool32 dstPremultiplied
4503 VkBlendOverlapEXT blendOverlap
4504}
4505
4506@extension("VK_NV_fragment_coverage_to_color") // 150
4507class VkPipelineCoverageToColorStateCreateInfoNV {
4508 VkStructureType sType
4509 const void* pNext
4510 VkPipelineCoverageToColorStateCreateFlagsNV flags
4511 VkBool32 coverageToColorEnable
4512 u32 coverageToColorLocation
4513}
4514
4515@extension("VK_NV_framebuffer_mixed_samples") // 153
4516class VkPipelineCoverageModulationStateCreateInfoNV {
4517 VkStructureType sType
4518 const void* pNext
4519 VkPipelineCoverageModulationStateCreateFlagsNV flags
4520 VkCoverageModulationModeNV coverageModulationMode
4521 VkBool32 coverageModulationTableEnable
4522 u32 coverageModulationTableCount
4523 const f32* pCoverageModulationTable
4524}
4525
Jesse Halld27f6aa2015-08-15 17:58:48 -07004526////////////////
4527// Commands //
4528////////////////
4529
4530// Function pointers. TODO: add support for function pointers.
4531
4532@external type void* PFN_vkVoidFunction
4533@pfn cmd void vkVoidFunction() {
4534}
4535
Jesse Hall3fbc8562015-11-29 22:10:52 -08004536@external type void* PFN_vkAllocationFunction
4537@pfn cmd void* vkAllocationFunction(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004538 void* pUserData,
4539 platform.size_t size,
4540 platform.size_t alignment,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004541 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08004542 return ?
4543}
4544
Jesse Hall3fbc8562015-11-29 22:10:52 -08004545@external type void* PFN_vkReallocationFunction
4546@pfn cmd void* vkReallocationFunction(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004547 void* pUserData,
4548 void* pOriginal,
4549 platform.size_t size,
4550 platform.size_t alignment,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004551 VkSystemAllocationScope allocationScope) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004552 return ?
4553}
4554
4555@external type void* PFN_vkFreeFunction
4556@pfn cmd void vkFreeFunction(
4557 void* pUserData,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004558 void* pMemory) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004559}
4560
Jesse Hall3fbc8562015-11-29 22:10:52 -08004561@external type void* PFN_vkInternalAllocationNotification
4562@pfn cmd void vkInternalAllocationNotification(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004563 void* pUserData,
4564 platform.size_t size,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004565 VkInternalAllocationType allocationType,
4566 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08004567}
4568
4569@external type void* PFN_vkInternalFreeNotification
4570@pfn cmd void vkInternalFreeNotification(
4571 void* pUserData,
4572 platform.size_t size,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004573 VkInternalAllocationType allocationType,
4574 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08004575}
Jesse Halld27f6aa2015-08-15 17:58:48 -07004576
4577// Global functions
4578
4579@threadSafety("system")
4580cmd VkResult vkCreateInstance(
4581 const VkInstanceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004582 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004583 VkInstance* pInstance) {
4584 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO)
4585
4586 instance := ?
4587 pInstance[0] = instance
4588 State.Instances[instance] = new!InstanceObject()
4589
Jesse Hall3dd678a2016-01-08 21:52:01 -08004590 layers := pCreateInfo.ppEnabledLayerNames[0:pCreateInfo.enabledLayerCount]
4591 extensions := pCreateInfo.ppEnabledExtensionNames[0:pCreateInfo.enabledExtensionCount]
Jesse Halld27f6aa2015-08-15 17:58:48 -07004592
4593 return ?
4594}
4595
4596@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004597cmd void vkDestroyInstance(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004598 VkInstance instance,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004599 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004600 instanceObject := GetInstance(instance)
4601
4602 State.Instances[instance] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004603}
4604
4605@threadSafety("system")
4606cmd VkResult vkEnumeratePhysicalDevices(
4607 VkInstance instance,
4608 u32* pPhysicalDeviceCount,
4609 VkPhysicalDevice* pPhysicalDevices) {
4610 instanceObject := GetInstance(instance)
4611
4612 physicalDeviceCount := as!u32(?)
4613 pPhysicalDeviceCount[0] = physicalDeviceCount
4614 physicalDevices := pPhysicalDevices[0:physicalDeviceCount]
4615
4616 for i in (0 .. physicalDeviceCount) {
4617 physicalDevice := ?
4618 physicalDevices[i] = physicalDevice
4619 if !(physicalDevice in State.PhysicalDevices) {
4620 State.PhysicalDevices[physicalDevice] = new!PhysicalDeviceObject(instance: instance)
4621 }
4622 }
4623
4624 return ?
4625}
4626
4627cmd PFN_vkVoidFunction vkGetDeviceProcAddr(
4628 VkDevice device,
4629 const char* pName) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004630 if device != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004631 device := GetDevice(device)
4632 }
4633
4634 return ?
4635}
4636
4637cmd PFN_vkVoidFunction vkGetInstanceProcAddr(
4638 VkInstance instance,
4639 const char* pName) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004640 if instance != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004641 instanceObject := GetInstance(instance)
4642 }
4643
4644 return ?
4645}
4646
Jesse Hall606a54e2015-11-19 22:17:28 -08004647cmd void vkGetPhysicalDeviceProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004648 VkPhysicalDevice physicalDevice,
4649 VkPhysicalDeviceProperties* pProperties) {
4650 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4651
4652 properties := ?
4653 pProperties[0] = properties
Jesse Halld27f6aa2015-08-15 17:58:48 -07004654}
4655
Jesse Hall606a54e2015-11-19 22:17:28 -08004656cmd void vkGetPhysicalDeviceQueueFamilyProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004657 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004658 u32* pQueueFamilyPropertyCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004659 VkQueueFamilyProperties* pQueueFamilyProperties) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004660 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004661 // TODO: Figure out how to express fetch-count-or-properties
4662 // This version fails 'apic validate' with 'fence not allowed in
4663 // *semantic.Branch'. Other attempts have failed with the same or other
4664 // errors.
4665 // if pQueueFamilyProperties != null {
4666 // queuesProperties := pQueueFamilyProperties[0:pCount[0]]
4667 // for i in (0 .. pCount[0]) {
4668 // queueProperties := as!VkQueueFamilyProperties(?)
4669 // queuesProperties[i] = queueProperties
4670 // }
4671 // } else {
4672 // count := ?
4673 // pCount[0] = count
4674 // }
Jesse Halld27f6aa2015-08-15 17:58:48 -07004675}
4676
Jesse Hall606a54e2015-11-19 22:17:28 -08004677cmd void vkGetPhysicalDeviceMemoryProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004678 VkPhysicalDevice physicalDevice,
4679 VkPhysicalDeviceMemoryProperties* pMemoryProperties) {
4680 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4681
4682 memoryProperties := ?
4683 pMemoryProperties[0] = memoryProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07004684}
4685
Jesse Hall606a54e2015-11-19 22:17:28 -08004686cmd void vkGetPhysicalDeviceFeatures(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004687 VkPhysicalDevice physicalDevice,
4688 VkPhysicalDeviceFeatures* pFeatures) {
4689 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4690
4691 features := ?
4692 pFeatures[0] = features
Jesse Halld27f6aa2015-08-15 17:58:48 -07004693}
4694
Jesse Hall606a54e2015-11-19 22:17:28 -08004695cmd void vkGetPhysicalDeviceFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004696 VkPhysicalDevice physicalDevice,
4697 VkFormat format,
4698 VkFormatProperties* pFormatProperties) {
4699 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4700
4701 formatProperties := ?
4702 pFormatProperties[0] = formatProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07004703}
4704
Jesse Halla9e57032015-11-30 01:03:10 -08004705cmd VkResult vkGetPhysicalDeviceImageFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004706 VkPhysicalDevice physicalDevice,
4707 VkFormat format,
4708 VkImageType type,
4709 VkImageTiling tiling,
4710 VkImageUsageFlags usage,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004711 VkImageCreateFlags flags,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004712 VkImageFormatProperties* pImageFormatProperties) {
4713 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4714
4715 imageFormatProperties := ?
4716 pImageFormatProperties[0] = imageFormatProperties
Jesse Halla9e57032015-11-30 01:03:10 -08004717
4718 return ?
Jesse Halld27f6aa2015-08-15 17:58:48 -07004719}
4720
Jesse Halld27f6aa2015-08-15 17:58:48 -07004721
4722// Device functions
4723
4724@threadSafety("system")
4725cmd VkResult vkCreateDevice(
4726 VkPhysicalDevice physicalDevice,
4727 const VkDeviceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004728 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004729 VkDevice* pDevice) {
4730 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO)
4731 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4732
4733 device := ?
4734 pDevice[0] = device
4735 State.Devices[device] = new!DeviceObject(physicalDevice: physicalDevice)
4736
4737 return ?
4738}
4739
4740@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004741cmd void vkDestroyDevice(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004742 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004743 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004744 deviceObject := GetDevice(device)
4745
4746 State.Devices[device] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004747}
4748
4749
4750// Extension discovery functions
4751
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004752cmd VkResult vkEnumerateInstanceLayerProperties(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004753 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004754 VkLayerProperties* pProperties) {
4755 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08004756 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07004757
4758 properties := pProperties[0:count]
4759 for i in (0 .. count) {
4760 property := ?
4761 properties[i] = property
4762 }
4763
4764 return ?
4765}
4766
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004767cmd VkResult vkEnumerateInstanceExtensionProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004768 const char* pLayerName,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004769 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004770 VkExtensionProperties* pProperties) {
4771 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08004772 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07004773
4774 properties := pProperties[0:count]
4775 for i in (0 .. count) {
4776 property := ?
4777 properties[i] = property
4778 }
4779
4780 return ?
4781}
4782
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004783cmd VkResult vkEnumerateDeviceLayerProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004784 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004785 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004786 VkLayerProperties* pProperties) {
4787 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4788 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08004789 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07004790
4791 properties := pProperties[0:count]
4792 for i in (0 .. count) {
4793 property := ?
4794 properties[i] = property
4795 }
4796
4797 return ?
4798}
4799
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004800cmd VkResult vkEnumerateDeviceExtensionProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004801 VkPhysicalDevice physicalDevice,
4802 const char* pLayerName,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004803 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004804 VkExtensionProperties* pProperties) {
4805 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4806
4807 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08004808 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07004809
4810 properties := pProperties[0:count]
4811 for i in (0 .. count) {
4812 property := ?
4813 properties[i] = property
4814 }
4815
4816 return ?
4817}
4818
4819
4820// Queue functions
4821
4822@threadSafety("system")
Jesse Hall606a54e2015-11-19 22:17:28 -08004823cmd void vkGetDeviceQueue(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004824 VkDevice device,
4825 u32 queueFamilyIndex,
4826 u32 queueIndex,
4827 VkQueue* pQueue) {
4828 deviceObject := GetDevice(device)
4829
4830 queue := ?
4831 pQueue[0] = queue
4832
4833 if !(queue in State.Queues) {
4834 State.Queues[queue] = new!QueueObject(device: device)
4835 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07004836}
4837
4838@threadSafety("app")
4839cmd VkResult vkQueueSubmit(
4840 VkQueue queue,
Jesse Halla366a512015-11-19 22:30:07 -08004841 u32 submitCount,
Jesse Hallb00daad2015-11-29 19:46:20 -08004842 const VkSubmitInfo* pSubmits,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004843 VkFence fence) {
4844 queueObject := GetQueue(queue)
4845
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004846 if fence != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004847 fenceObject := GetFence(fence)
4848 assert(fenceObject.device == queueObject.device)
4849 }
4850
Jesse Hall3fbc8562015-11-29 22:10:52 -08004851 // commandBuffers := pcommandBuffers[0:commandBufferCount]
4852 // for i in (0 .. commandBufferCount) {
4853 // commandBuffer := commandBuffers[i]
4854 // commandBufferObject := GetCommandBuffer(commandBuffer)
4855 // assert(commandBufferObject.device == queueObject.device)
Jesse Halla366a512015-11-19 22:30:07 -08004856 //
Jesse Hall3fbc8562015-11-29 22:10:52 -08004857 // validate("QueueCheck", commandBufferObject.queueFlags in queueObject.flags,
4858 // "vkQueueSubmit: enqueued commandBuffer requires missing queue capabilities.")
Jesse Halla366a512015-11-19 22:30:07 -08004859 // }
Jesse Halld27f6aa2015-08-15 17:58:48 -07004860
4861 return ?
4862}
4863
4864@threadSafety("system")
4865cmd VkResult vkQueueWaitIdle(
4866 VkQueue queue) {
4867 queueObject := GetQueue(queue)
4868
4869 return ?
4870}
4871
4872@threadSafety("system")
4873cmd VkResult vkDeviceWaitIdle(
4874 VkDevice device) {
4875 deviceObject := GetDevice(device)
4876
4877 return ?
4878}
4879
4880
4881// Memory functions
4882
4883@threadSafety("system")
Jesse Hall3fbc8562015-11-29 22:10:52 -08004884cmd VkResult vkAllocateMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004885 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004886 const VkMemoryAllocateInfo* pAllocateInfo,
4887 const VkAllocationCallbacks* pAllocator,
4888 VkDeviceMemory* pMemory) {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08004889 assert(pAllocateInfo.sType == VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004890 deviceObject := GetDevice(device)
4891
Jesse Hall3fbc8562015-11-29 22:10:52 -08004892 memory := ?
4893 pMemory[0] = memory
4894 State.DeviceMemories[memory] = new!DeviceMemoryObject(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004895 device: device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004896 allocationSize: pAllocateInfo[0].allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004897
4898 return ?
4899}
4900
4901@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004902cmd void vkFreeMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004903 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004904 VkDeviceMemory memory,
4905 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004906 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08004907 memoryObject := GetDeviceMemory(memory)
4908 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004909
4910 // Check that no objects are still bound before freeing.
Jesse Hall3fbc8562015-11-29 22:10:52 -08004911 validate("MemoryCheck", len(memoryObject.boundObjects) == 0,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004912 "vkFreeMemory: objects still bound")
Jesse Hall3fbc8562015-11-29 22:10:52 -08004913 validate("MemoryCheck", len(memoryObject.boundCommandBuffers) == 0,
4914 "vkFreeMemory: commandBuffers still bound")
4915 State.DeviceMemories[memory] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004916}
4917
4918@threadSafety("app")
4919cmd VkResult vkMapMemory(
4920 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004921 VkDeviceMemory memory,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004922 VkDeviceSize offset,
4923 VkDeviceSize size,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004924 VkMemoryMapFlags flags,
4925 void** ppData) {
4926 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08004927 memoryObject := GetDeviceMemory(memory)
4928 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004929
4930 assert(flags == as!VkMemoryMapFlags(0))
Jesse Hall3fbc8562015-11-29 22:10:52 -08004931 assert((offset + size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004932
4933 return ?
4934}
4935
4936@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004937cmd void vkUnmapMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004938 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004939 VkDeviceMemory memory) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004940 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08004941 memoryObject := GetDeviceMemory(memory)
4942 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004943}
4944
4945cmd VkResult vkFlushMappedMemoryRanges(
4946 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004947 u32 memoryRangeCount
4948 const VkMappedMemoryRange* pMemoryRanges) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004949 deviceObject := GetDevice(device)
4950
Jesse Hall3fbc8562015-11-29 22:10:52 -08004951 memoryRanges := pMemoryRanges[0:memoryRangeCount]
4952 for i in (0 .. memoryRangeCount) {
4953 memoryRange := memoryRanges[i]
4954 memoryObject := GetDeviceMemory(memoryRange.memory)
4955 assert(memoryObject.device == device)
4956 assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004957 }
4958
4959 return ?
4960}
4961
4962cmd VkResult vkInvalidateMappedMemoryRanges(
4963 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004964 u32 memoryRangeCount,
4965 const VkMappedMemoryRange* pMemoryRanges) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004966 deviceObject := GetDevice(device)
4967
Jesse Hall3fbc8562015-11-29 22:10:52 -08004968 memoryRanges := pMemoryRanges[0:memoryRangeCount]
4969 for i in (0 .. memoryRangeCount) {
4970 memoryRange := memoryRanges[i]
4971 memoryObject := GetDeviceMemory(memoryRange.memory)
4972 assert(memoryObject.device == device)
4973 assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004974 }
4975
4976 return ?
4977}
4978
4979
4980// Memory management API functions
4981
Jesse Hall606a54e2015-11-19 22:17:28 -08004982cmd void vkGetDeviceMemoryCommitment(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004983 VkDevice device,
4984 VkDeviceMemory memory,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004985 VkDeviceSize* pCommittedMemoryInBytes) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004986 deviceObject := GetDevice(device)
4987
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004988 if memory != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004989 memoryObject := GetDeviceMemory(memory)
4990 assert(memoryObject.device == device)
4991 }
4992
4993 committedMemoryInBytes := ?
4994 pCommittedMemoryInBytes[0] = committedMemoryInBytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07004995}
4996
Jesse Hall606a54e2015-11-19 22:17:28 -08004997cmd void vkGetBufferMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004998 VkDevice device,
4999 VkBuffer buffer,
5000 VkMemoryRequirements* pMemoryRequirements) {
5001 deviceObject := GetDevice(device)
5002 bufferObject := GetBuffer(buffer)
5003 assert(bufferObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005004}
5005
5006cmd VkResult vkBindBufferMemory(
5007 VkDevice device,
5008 VkBuffer buffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005009 VkDeviceMemory memory,
5010 VkDeviceSize memoryOffset) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005011 deviceObject := GetDevice(device)
5012 bufferObject := GetBuffer(buffer)
5013 assert(bufferObject.device == device)
5014
5015 // Unbind buffer from previous memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005016 if bufferObject.memory != NULL_HANDLE {
5017 memoryObject := GetDeviceMemory(bufferObject.memory)
5018 memoryObject.boundObjects[as!u64(buffer)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005019 }
5020
5021 // Bind buffer to given memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005022 if memory != NULL_HANDLE {
5023 memoryObject := GetDeviceMemory(memory)
5024 assert(memoryObject.device == device)
5025 memoryObject.boundObjects[as!u64(buffer)] = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07005026 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08005027 bufferObject.memory = memory
5028 bufferObject.memoryOffset = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07005029
5030 return ?
5031}
5032
Jesse Hall606a54e2015-11-19 22:17:28 -08005033cmd void vkGetImageMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005034 VkDevice device,
5035 VkImage image,
5036 VkMemoryRequirements* pMemoryRequirements) {
5037 deviceObject := GetDevice(device)
5038 imageObject := GetImage(image)
5039 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005040}
5041
5042cmd VkResult vkBindImageMemory(
5043 VkDevice device,
5044 VkImage image,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005045 VkDeviceMemory memory,
5046 VkDeviceSize memoryOffset) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005047 deviceObject := GetDevice(device)
5048 imageObject := GetImage(image)
5049 assert(imageObject.device == device)
5050
5051 // Unbind image from previous memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005052 if imageObject.memory != NULL_HANDLE {
5053 memoryObject := GetDeviceMemory(imageObject.memory)
5054 memoryObject.boundObjects[as!u64(image)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005055 }
5056
5057 // Bind image to given memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005058 if memory != NULL_HANDLE {
5059 memoryObject := GetDeviceMemory(memory)
5060 assert(memoryObject.device == device)
5061 memoryObject.boundObjects[as!u64(image)] = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07005062 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08005063 imageObject.memory = memory
5064 imageObject.memoryOffset = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07005065
5066 return ?
5067}
5068
Jesse Hall606a54e2015-11-19 22:17:28 -08005069cmd void vkGetImageSparseMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005070 VkDevice device,
5071 VkImage image,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005072 u32* pSparseMemoryRequirementCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005073 VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
5074 deviceObject := GetDevice(device)
5075 imageObject := GetImage(image)
5076 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005077}
5078
Jesse Hall606a54e2015-11-19 22:17:28 -08005079cmd void vkGetPhysicalDeviceSparseImageFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005080 VkPhysicalDevice physicalDevice,
5081 VkFormat format,
5082 VkImageType type,
Jesse Hall091ed9e2015-11-30 00:55:29 -08005083 VkSampleCountFlagBits samples,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005084 VkImageUsageFlags usage,
5085 VkImageTiling tiling,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005086 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005087 VkSparseImageFormatProperties* pProperties) {
5088 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005089}
5090
Jesse Halla6429252015-11-29 18:59:42 -08005091cmd VkResult vkQueueBindSparse(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005092 VkQueue queue,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005093 u32 bindInfoCount,
Jesse Halla6429252015-11-29 18:59:42 -08005094 const VkBindSparseInfo* pBindInfo,
5095 VkFence fence) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005096 queueObject := GetQueue(queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005097
5098 return ?
5099}
5100
5101
5102// Fence functions
5103
5104@threadSafety("system")
5105cmd VkResult vkCreateFence(
5106 VkDevice device,
5107 const VkFenceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005108 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005109 VkFence* pFence) {
5110 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FENCE_CREATE_INFO)
5111 deviceObject := GetDevice(device)
5112
5113 fence := ?
5114 pFence[0] = fence
5115 State.Fences[fence] = new!FenceObject(
Jesse Halld8bade02015-11-24 10:24:18 -08005116 device: device, signaled: (pCreateInfo.flags == as!VkFenceCreateFlags(VK_FENCE_CREATE_SIGNALED_BIT)))
Jesse Halld27f6aa2015-08-15 17:58:48 -07005117
5118 return ?
5119}
5120
5121@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005122cmd void vkDestroyFence(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005123 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005124 VkFence fence,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005125 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005126 deviceObject := GetDevice(device)
5127 fenceObject := GetFence(fence)
5128 assert(fenceObject.device == device)
5129
5130 State.Fences[fence] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005131}
5132
5133@threadSafety("system")
5134cmd VkResult vkResetFences(
5135 VkDevice device,
5136 u32 fenceCount,
5137 const VkFence* pFences) {
5138 deviceObject := GetDevice(device)
5139
5140 fences := pFences[0:fenceCount]
5141 for i in (0 .. fenceCount) {
5142 fence := fences[i]
5143 fenceObject := GetFence(fence)
5144 assert(fenceObject.device == device)
5145 fenceObject.signaled = false
5146 }
5147
5148 return ?
5149}
5150
5151@threadSafety("system")
5152cmd VkResult vkGetFenceStatus(
5153 VkDevice device,
5154 VkFence fence) {
5155 deviceObject := GetDevice(device)
5156 fenceObject := GetFence(fence)
5157 assert(fenceObject.device == device)
5158
5159 return ?
5160}
5161
5162@threadSafety("system")
5163cmd VkResult vkWaitForFences(
5164 VkDevice device,
5165 u32 fenceCount,
5166 const VkFence* pFences,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005167 VkBool32 waitAll,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005168 u64 timeout) { /// timeout in nanoseconds
5169 deviceObject := GetDevice(device)
5170
5171 fences := pFences[0:fenceCount]
5172 for i in (0 .. fenceCount) {
5173 fence := fences[i]
5174 fenceObject := GetFence(fence)
5175 assert(fenceObject.device == device)
5176 }
5177
5178 return ?
5179}
5180
5181
5182// Queue semaphore functions
5183
5184@threadSafety("system")
5185cmd VkResult vkCreateSemaphore(
5186 VkDevice device,
5187 const VkSemaphoreCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005188 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005189 VkSemaphore* pSemaphore) {
5190 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO)
5191 deviceObject := GetDevice(device)
5192
5193 semaphore := ?
5194 pSemaphore[0] = semaphore
5195 State.Semaphores[semaphore] = new!SemaphoreObject(device: device)
5196
5197 return ?
5198}
5199
5200@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005201cmd void vkDestroySemaphore(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005202 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005203 VkSemaphore semaphore,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005204 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005205 deviceObject := GetDevice(device)
5206 semaphoreObject := GetSemaphore(semaphore)
5207 assert(semaphoreObject.device == device)
5208
5209 State.Semaphores[semaphore] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005210}
5211
Jesse Halld27f6aa2015-08-15 17:58:48 -07005212
5213// Event functions
5214
5215@threadSafety("system")
5216cmd VkResult vkCreateEvent(
5217 VkDevice device,
5218 const VkEventCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005219 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005220 VkEvent* pEvent) {
5221 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_EVENT_CREATE_INFO)
5222 deviceObject := GetDevice(device)
5223
5224 event := ?
5225 pEvent[0] = event
5226 State.Events[event] = new!EventObject(device: device)
5227
5228 return ?
5229}
5230
5231@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005232cmd void vkDestroyEvent(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005233 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005234 VkEvent event,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005235 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005236 deviceObject := GetDevice(device)
5237 eventObject := GetEvent(event)
5238 assert(eventObject.device == device)
5239
5240 State.Events[event] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005241}
5242
5243@threadSafety("system")
5244cmd VkResult vkGetEventStatus(
5245 VkDevice device,
5246 VkEvent event) {
5247 deviceObject := GetDevice(device)
5248 eventObject := GetEvent(event)
5249 assert(eventObject.device == device)
5250
5251 return ?
5252}
5253
5254@threadSafety("system")
5255cmd VkResult vkSetEvent(
5256 VkDevice device,
5257 VkEvent event) {
5258 deviceObject := GetDevice(device)
5259 eventObject := GetEvent(event)
5260 assert(eventObject.device == device)
5261
5262 return ?
5263}
5264
5265@threadSafety("system")
5266cmd VkResult vkResetEvent(
5267 VkDevice device,
5268 VkEvent event) {
5269 deviceObject := GetDevice(device)
5270 eventObject := GetEvent(event)
5271 assert(eventObject.device == device)
5272
5273 return ?
5274}
5275
5276
5277// Query functions
5278
5279@threadSafety("system")
5280cmd VkResult vkCreateQueryPool(
5281 VkDevice device,
5282 const VkQueryPoolCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005283 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005284 VkQueryPool* pQueryPool) {
5285 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO)
5286 deviceObject := GetDevice(device)
5287
5288 queryPool := ?
5289 pQueryPool[0] = queryPool
5290 State.QueryPools[queryPool] = new!QueryPoolObject(device: device)
5291
5292 return ?
5293}
5294
5295@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005296cmd void vkDestroyQueryPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005297 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005298 VkQueryPool queryPool,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005299 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005300 deviceObject := GetDevice(device)
5301 queryPoolObject := GetQueryPool(queryPool)
5302 assert(queryPoolObject.device == device)
5303
5304 State.QueryPools[queryPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005305}
5306
5307@threadSafety("system")
5308cmd VkResult vkGetQueryPoolResults(
5309 VkDevice device,
5310 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08005311 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005312 u32 queryCount,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005313 platform.size_t dataSize,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005314 void* pData,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005315 VkDeviceSize stride,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005316 VkQueryResultFlags flags) {
5317 deviceObject := GetDevice(device)
5318 queryPoolObject := GetQueryPool(queryPool)
5319 assert(queryPoolObject.device == device)
5320
Jesse Halld27f6aa2015-08-15 17:58:48 -07005321 data := pData[0:dataSize]
5322
5323 return ?
5324}
5325
5326// Buffer functions
5327
5328@threadSafety("system")
5329cmd VkResult vkCreateBuffer(
5330 VkDevice device,
5331 const VkBufferCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005332 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005333 VkBuffer* pBuffer) {
5334 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO)
5335 deviceObject := GetDevice(device)
5336
5337 buffer := ?
5338 pBuffer[0] = buffer
5339 State.Buffers[buffer] = new!BufferObject(device: device)
5340
5341 return ?
5342}
5343
5344@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005345cmd void vkDestroyBuffer(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005346 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005347 VkBuffer buffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005348 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005349 deviceObject := GetDevice(device)
5350 bufferObject := GetBuffer(buffer)
5351 assert(bufferObject.device == device)
5352
Jesse Hall3fbc8562015-11-29 22:10:52 -08005353 assert(bufferObject.memory == 0)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005354 State.Buffers[buffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005355}
5356
5357
5358// Buffer view functions
5359
5360@threadSafety("system")
5361cmd VkResult vkCreateBufferView(
5362 VkDevice device,
5363 const VkBufferViewCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005364 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005365 VkBufferView* pView) {
5366 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO)
5367 deviceObject := GetDevice(device)
5368
5369 bufferObject := GetBuffer(pCreateInfo.buffer)
5370 assert(bufferObject.device == device)
5371
5372 view := ?
5373 pView[0] = view
5374 State.BufferViews[view] = new!BufferViewObject(device: device, buffer: pCreateInfo.buffer)
5375
5376 return ?
5377}
5378
5379@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005380cmd void vkDestroyBufferView(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005381 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005382 VkBufferView bufferView,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005383 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005384 deviceObject := GetDevice(device)
5385 bufferViewObject := GetBufferView(bufferView)
5386 assert(bufferViewObject.device == device)
5387
5388 State.BufferViews[bufferView] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005389}
5390
5391
5392// Image functions
5393
5394@threadSafety("system")
5395cmd VkResult vkCreateImage(
5396 VkDevice device,
5397 const VkImageCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005398 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005399 VkImage* pImage) {
5400 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO)
5401 deviceObject := GetDevice(device)
5402
5403 image := ?
5404 pImage[0] = image
5405 State.Images[image] = new!ImageObject(device: device)
5406
5407 return ?
5408}
5409
5410@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005411cmd void vkDestroyImage(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005412 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005413 VkImage image,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005414 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005415 deviceObject := GetDevice(device)
5416 imageObject := GetImage(image)
5417 assert(imageObject.device == device)
5418
Jesse Hall3fbc8562015-11-29 22:10:52 -08005419 assert(imageObject.memory == 0)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005420 State.Images[image] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005421}
5422
Jesse Hall606a54e2015-11-19 22:17:28 -08005423cmd void vkGetImageSubresourceLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005424 VkDevice device,
5425 VkImage image,
5426 const VkImageSubresource* pSubresource,
5427 VkSubresourceLayout* pLayout) {
5428 deviceObject := GetDevice(device)
5429 imageObject := GetImage(image)
5430 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005431}
5432
5433
5434// Image view functions
5435
5436@threadSafety("system")
5437cmd VkResult vkCreateImageView(
5438 VkDevice device,
5439 const VkImageViewCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005440 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005441 VkImageView* pView) {
5442 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO)
5443 deviceObject := GetDevice(device)
5444
5445 imageObject := GetImage(pCreateInfo.image)
5446 assert(imageObject.device == device)
5447
5448 view := ?
5449 pView[0] = view
5450 State.ImageViews[view] = new!ImageViewObject(device: device, image: pCreateInfo.image)
5451
5452 return ?
5453}
5454
5455@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005456cmd void vkDestroyImageView(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005457 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005458 VkImageView imageView,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005459 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005460 deviceObject := GetDevice(device)
5461 imageViewObject := GetImageView(imageView)
5462 assert(imageViewObject.device == device)
5463
5464 State.ImageViews[imageView] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005465}
5466
5467
5468// Shader functions
5469
5470cmd VkResult vkCreateShaderModule(
5471 VkDevice device,
5472 const VkShaderModuleCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005473 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005474 VkShaderModule* pShaderModule) {
5475 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO)
5476 deviceObject := GetDevice(device)
5477
5478 shaderModule := ?
5479 pShaderModule[0] = shaderModule
5480 State.ShaderModules[shaderModule] = new!ShaderModuleObject(device: device)
5481
5482 return ?
5483}
5484
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005485cmd void vkDestroyShaderModule(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005486 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005487 VkShaderModule shaderModule,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005488 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005489 deviceObject := GetDevice(device)
5490 shaderModuleObject := GetShaderModule(shaderModule)
5491 assert(shaderModuleObject.device == device)
5492
5493 State.ShaderModules[shaderModule] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005494}
5495
Jesse Halld27f6aa2015-08-15 17:58:48 -07005496
5497// Pipeline functions
5498
5499cmd VkResult vkCreatePipelineCache(
5500 VkDevice device,
5501 const VkPipelineCacheCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005502 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005503 VkPipelineCache* pPipelineCache) {
5504 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO)
5505 deviceObject := GetDevice(device)
5506
5507 pipelineCache := ?
5508 pPipelineCache[0] = pipelineCache
5509 State.PipelineCaches[pipelineCache] = new!PipelineCacheObject(device: device)
5510
5511 return ?
5512}
5513
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005514cmd void vkDestroyPipelineCache(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005515 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005516 VkPipelineCache pipelineCache,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005517 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005518 deviceObject := GetDevice(device)
5519 pipelineCacheObject := GetPipelineCache(pipelineCache)
5520 assert(pipelineCacheObject.device == device)
5521
5522 State.PipelineCaches[pipelineCache] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005523}
5524
Jesse Halld27f6aa2015-08-15 17:58:48 -07005525cmd VkResult vkGetPipelineCacheData(
5526 VkDevice device,
5527 VkPipelineCache pipelineCache,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005528 platform.size_t* pDataSize,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005529 void* pData) {
5530 deviceObject := GetDevice(device)
5531 pipelineCacheObject := GetPipelineCache(pipelineCache)
5532 assert(pipelineCacheObject.device == device)
5533
5534 return ?
5535}
5536
5537cmd VkResult vkMergePipelineCaches(
5538 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005539 VkPipelineCache dstCache,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005540 u32 srcCacheCount,
5541 const VkPipelineCache* pSrcCaches) {
5542 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005543 dstCacheObject := GetPipelineCache(dstCache)
5544 assert(dstCacheObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005545
5546 srcCaches := pSrcCaches[0:srcCacheCount]
5547 for i in (0 .. srcCacheCount) {
5548 srcCache := srcCaches[i]
5549 srcCacheObject := GetPipelineCache(srcCache)
5550 assert(srcCacheObject.device == device)
5551 }
5552
5553 return ?
5554}
5555
5556cmd VkResult vkCreateGraphicsPipelines(
5557 VkDevice device,
5558 VkPipelineCache pipelineCache,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005559 u32 createInfoCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005560 const VkGraphicsPipelineCreateInfo* pCreateInfos,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005561 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005562 VkPipeline* pPipelines) {
5563 deviceObject := GetDevice(device)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005564 if pipelineCache != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005565 pipelineCacheObject := GetPipelineCache(pipelineCache)
5566 assert(pipelineCacheObject.device == device)
5567 }
5568
Jesse Hall03b6fe12015-11-24 12:44:21 -08005569 createInfos := pCreateInfos[0:createInfoCount]
5570 pipelines := pPipelines[0:createInfoCount]
5571 for i in (0 .. createInfoCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005572 pipeline := ?
5573 pipelines[i] = pipeline
5574 State.Pipelines[pipeline] = new!PipelineObject(device: device)
5575 }
5576
5577 return ?
5578}
5579
5580cmd VkResult vkCreateComputePipelines(
5581 VkDevice device,
5582 VkPipelineCache pipelineCache,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005583 u32 createInfoCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005584 const VkComputePipelineCreateInfo* pCreateInfos,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005585 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005586 VkPipeline* pPipelines) {
5587 deviceObject := GetDevice(device)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005588 if pipelineCache != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005589 pipelineCacheObject := GetPipelineCache(pipelineCache)
5590 assert(pipelineCacheObject.device == device)
5591 }
5592
Jesse Hall03b6fe12015-11-24 12:44:21 -08005593 createInfos := pCreateInfos[0:createInfoCount]
5594 pipelines := pPipelines[0:createInfoCount]
5595 for i in (0 .. createInfoCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005596 pipeline := ?
5597 pipelines[i] = pipeline
5598 State.Pipelines[pipeline] = new!PipelineObject(device: device)
5599 }
5600
5601 return ?
5602}
5603
5604@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005605cmd void vkDestroyPipeline(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005606 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005607 VkPipeline pipeline,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005608 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005609 deviceObject := GetDevice(device)
5610 pipelineObjects := GetPipeline(pipeline)
5611 assert(pipelineObjects.device == device)
5612
5613 State.Pipelines[pipeline] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005614}
5615
5616
5617// Pipeline layout functions
5618
5619@threadSafety("system")
5620cmd VkResult vkCreatePipelineLayout(
5621 VkDevice device,
5622 const VkPipelineLayoutCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005623 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005624 VkPipelineLayout* pPipelineLayout) {
5625 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO)
5626 deviceObject := GetDevice(device)
5627
5628 pipelineLayout := ?
5629 pPipelineLayout[0] = pipelineLayout
5630 State.PipelineLayouts[pipelineLayout] = new!PipelineLayoutObject(device: device)
5631
5632 return ?
5633}
5634
5635@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005636cmd void vkDestroyPipelineLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005637 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005638 VkPipelineLayout pipelineLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005639 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005640 deviceObject := GetDevice(device)
5641 pipelineLayoutObjects := GetPipelineLayout(pipelineLayout)
5642 assert(pipelineLayoutObjects.device == device)
5643
5644 State.PipelineLayouts[pipelineLayout] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005645}
5646
5647
5648// Sampler functions
5649
5650@threadSafety("system")
5651cmd VkResult vkCreateSampler(
5652 VkDevice device,
5653 const VkSamplerCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005654 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005655 VkSampler* pSampler) {
5656 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO)
5657 deviceObject := GetDevice(device)
5658
5659 sampler := ?
5660 pSampler[0] = sampler
5661 State.Samplers[sampler] = new!SamplerObject(device: device)
5662
5663 return ?
5664}
5665
5666@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005667cmd void vkDestroySampler(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005668 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005669 VkSampler sampler,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005670 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005671 deviceObject := GetDevice(device)
5672 samplerObject := GetSampler(sampler)
5673 assert(samplerObject.device == device)
5674
5675 State.Samplers[sampler] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005676}
5677
5678
5679// Descriptor set functions
5680
5681@threadSafety("system")
5682cmd VkResult vkCreateDescriptorSetLayout(
5683 VkDevice device,
5684 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005685 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005686 VkDescriptorSetLayout* pSetLayout) {
5687 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO)
5688 deviceObject := GetDevice(device)
5689
5690 setLayout := ?
5691 pSetLayout[0] = setLayout
5692 State.DescriptorSetLayouts[setLayout] = new!DescriptorSetLayoutObject(device: device)
5693
5694 return ?
5695}
5696
5697@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005698cmd void vkDestroyDescriptorSetLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005699 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005700 VkDescriptorSetLayout descriptorSetLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005701 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005702 deviceObject := GetDevice(device)
5703 descriptorSetLayoutObject := GetDescriptorSetLayout(descriptorSetLayout)
5704 assert(descriptorSetLayoutObject.device == device)
5705
5706 State.DescriptorSetLayouts[descriptorSetLayout] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005707}
5708
5709@threadSafety("system")
5710cmd VkResult vkCreateDescriptorPool(
5711 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005712 const VkDescriptorPoolCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005713 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005714 VkDescriptorPool* pDescriptorPool) {
5715 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO)
5716 deviceObject := GetDevice(device)
5717
5718 descriptorPool := ?
5719 pDescriptorPool[0] = descriptorPool
5720 State.DescriptorPools[descriptorPool] = new!DescriptorPoolObject(device: device)
5721
5722 return ?
5723}
5724
5725@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005726cmd void vkDestroyDescriptorPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005727 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005728 VkDescriptorPool descriptorPool,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005729 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005730 deviceObject := GetDevice(device)
5731 descriptorPoolObject := GetDescriptorPool(descriptorPool)
5732 assert(descriptorPoolObject.device == device)
5733
5734 State.DescriptorPools[descriptorPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005735}
5736
5737@threadSafety("app")
5738cmd VkResult vkResetDescriptorPool(
5739 VkDevice device,
Jesse Hallfbf97b02015-11-20 14:17:03 -08005740 VkDescriptorPool descriptorPool,
5741 VkDescriptorPoolResetFlags flags) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005742 deviceObject := GetDevice(device)
5743 descriptorPoolObject := GetDescriptorPool(descriptorPool)
5744 assert(descriptorPoolObject.device == device)
5745
5746 return ?
5747}
5748
5749@threadSafety("app")
Jesse Hall3fbc8562015-11-29 22:10:52 -08005750cmd VkResult vkAllocateDescriptorSets(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005751 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005752 const VkDescriptorSetAllocateInfo* pAllocateInfo,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005753 VkDescriptorSet* pDescriptorSets) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005754 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005755 allocInfo := pAllocateInfo[0]
Jesse Hallfbf97b02015-11-20 14:17:03 -08005756 descriptorPoolObject := GetDescriptorPool(allocInfo.descriptorPool)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005757
Jesse Hall03b6fe12015-11-24 12:44:21 -08005758 setLayouts := allocInfo.pSetLayouts[0:allocInfo.setCount]
5759 for i in (0 .. allocInfo.setCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005760 setLayout := setLayouts[i]
5761 setLayoutObject := GetDescriptorSetLayout(setLayout)
5762 assert(setLayoutObject.device == device)
5763 }
5764
Jesse Hall03b6fe12015-11-24 12:44:21 -08005765 descriptorSets := pDescriptorSets[0:allocInfo.setCount]
5766 for i in (0 .. allocInfo.setCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005767 descriptorSet := ?
5768 descriptorSets[i] = descriptorSet
5769 State.DescriptorSets[descriptorSet] = new!DescriptorSetObject(device: device)
5770 }
5771
5772 return ?
5773}
5774
Jesse Hallf09c6b12015-08-15 19:54:28 -07005775cmd VkResult vkFreeDescriptorSets(
5776 VkDevice device,
5777 VkDescriptorPool descriptorPool,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005778 u32 descriptorSetCount,
Jesse Hallf09c6b12015-08-15 19:54:28 -07005779 const VkDescriptorSet* pDescriptorSets) {
5780 deviceObject := GetDevice(device)
5781 descriptorPoolObject := GetDescriptorPool(descriptorPool)
5782
Jesse Hall03b6fe12015-11-24 12:44:21 -08005783 descriptorSets := pDescriptorSets[0:descriptorSetCount]
5784 for i in (0 .. descriptorSetCount) {
Jesse Hallf09c6b12015-08-15 19:54:28 -07005785 descriptorSet := descriptorSets[i]
5786 descriptorSetObject := GetDescriptorSet(descriptorSet)
5787 assert(descriptorSetObject.device == device)
5788 State.DescriptorSets[descriptorSet] = null
5789 }
5790
5791 return ?
5792}
5793
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005794cmd void vkUpdateDescriptorSets(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005795 VkDevice device,
Jesse Hallb00daad2015-11-29 19:46:20 -08005796 u32 descriptorWriteCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005797 const VkWriteDescriptorSet* pDescriptorWrites,
Jesse Hallb00daad2015-11-29 19:46:20 -08005798 u32 descriptorCopyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005799 const VkCopyDescriptorSet* pDescriptorCopies) {
5800 deviceObject := GetDevice(device)
5801
Jesse Hallb00daad2015-11-29 19:46:20 -08005802 descriptorWrites := pDescriptorWrites[0:descriptorWriteCount]
5803 for i in (0 .. descriptorWriteCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005804 descriptorWrite := descriptorWrites[i]
Jesse Hall3fbc8562015-11-29 22:10:52 -08005805 descriptorWriteObject := GetDescriptorSet(descriptorWrite.dstSet)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005806 assert(descriptorWriteObject.device == device)
5807 }
5808
Jesse Hallb00daad2015-11-29 19:46:20 -08005809 descriptorCopies := pDescriptorCopies[0:descriptorCopyCount]
5810 for i in (0 .. descriptorCopyCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005811 descriptorCopy := descriptorCopies[i]
Jesse Hall3fbc8562015-11-29 22:10:52 -08005812 descriptorCopyObject := GetDescriptorSet(descriptorCopy.dstSet)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005813 assert(descriptorCopyObject.device == device)
5814 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07005815}
5816
5817
5818// Framebuffer functions
5819
5820@threadSafety("system")
5821cmd VkResult vkCreateFramebuffer(
5822 VkDevice device,
5823 const VkFramebufferCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005824 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005825 VkFramebuffer* pFramebuffer) {
5826 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO)
5827 deviceObject := GetDevice(device)
5828
5829 framebuffer := ?
5830 pFramebuffer[0] = framebuffer
5831 State.Framebuffers[framebuffer] = new!FramebufferObject(device: device)
5832
5833 return ?
5834}
5835
5836@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005837cmd void vkDestroyFramebuffer(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005838 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005839 VkFramebuffer framebuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005840 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005841 deviceObject := GetDevice(device)
5842 framebufferObject := GetFramebuffer(framebuffer)
5843 assert(framebufferObject.device == device)
5844
5845 State.Framebuffers[framebuffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005846}
5847
5848
5849// Renderpass functions
5850
5851@threadSafety("system")
5852cmd VkResult vkCreateRenderPass(
5853 VkDevice device,
5854 const VkRenderPassCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005855 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005856 VkRenderPass* pRenderPass) {
5857 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO)
5858 deviceObject := GetDevice(device)
5859
5860 renderpass := ?
5861 pRenderPass[0] = renderpass
5862 State.RenderPasses[renderpass] = new!RenderPassObject(device: device)
5863
5864 return ?
5865}
5866
5867@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005868cmd void vkDestroyRenderPass(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005869 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005870 VkRenderPass renderPass,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005871 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005872 deviceObject := GetDevice(device)
5873 renderPassObject := GetRenderPass(renderPass)
5874 assert(renderPassObject.device == device)
5875
5876 State.RenderPasses[renderPass] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005877}
5878
Jesse Hall606a54e2015-11-19 22:17:28 -08005879cmd void vkGetRenderAreaGranularity(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005880 VkDevice device,
5881 VkRenderPass renderPass,
5882 VkExtent2D* pGranularity) {
5883 deviceObject := GetDevice(device)
5884 renderPassObject := GetRenderPass(renderPass)
5885
5886 granularity := ?
5887 pGranularity[0] = granularity
Jesse Halld27f6aa2015-08-15 17:58:48 -07005888}
5889
5890// Command pool functions
5891
5892cmd VkResult vkCreateCommandPool(
5893 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005894 const VkCommandPoolCreateInfo* pCreateInfo,
5895 const VkAllocationCallbacks* pAllocator,
5896 VkCommandPool* pCommandPool) {
5897 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005898 deviceObject := GetDevice(device)
5899
Jesse Hall3fbc8562015-11-29 22:10:52 -08005900 commandPool := ?
5901 pCommandPool[0] = commandPool
5902 State.CommandPools[commandPool] = new!CommandPoolObject(device: device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005903
5904 return ?
5905}
5906
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005907cmd void vkDestroyCommandPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005908 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005909 VkCommandPool commandPool,
5910 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005911 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005912 commandPoolObject := GetCommandPool(commandPool)
5913 assert(commandPoolObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005914
Jesse Hall3fbc8562015-11-29 22:10:52 -08005915 State.CommandPools[commandPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005916}
5917
5918cmd VkResult vkResetCommandPool(
5919 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005920 VkCommandPool commandPool,
5921 VkCommandPoolResetFlags flags) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005922 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005923 commandPoolObject := GetCommandPool(commandPool)
5924 assert(commandPoolObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005925
5926 return ?
5927}
5928
5929// Command buffer functions
5930
Jesse Hall3fbc8562015-11-29 22:10:52 -08005931macro void bindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) {
5932 memoryObject := GetDeviceMemory(memory)
5933 memoryObject.boundCommandBuffers[commandBuffer] = commandBuffer
Jesse Halld27f6aa2015-08-15 17:58:48 -07005934
Jesse Hall3fbc8562015-11-29 22:10:52 -08005935 commandBufferObject := GetCommandBuffer(commandBuffer)
5936 commandBufferObject.boundObjects[as!u64(obj)] = memory
Jesse Halld27f6aa2015-08-15 17:58:48 -07005937}
5938
Jesse Hall3fbc8562015-11-29 22:10:52 -08005939macro void unbindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) {
5940 memoryObject := GetDeviceMemory(memory)
5941 memoryObject.boundCommandBuffers[commandBuffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005942
Jesse Hall3fbc8562015-11-29 22:10:52 -08005943 commandBufferObject := GetCommandBuffer(commandBuffer)
5944 commandBufferObject.boundObjects[as!u64(obj)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005945}
5946
5947@threadSafety("system")
Jesse Hall3fbc8562015-11-29 22:10:52 -08005948cmd VkResult vkAllocateCommandBuffers(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005949 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005950 const VkCommandBufferAllocateInfo* pAllocateInfo,
5951 VkCommandBuffer* pCommandBuffers) {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08005952 assert(pAllocateInfo[0].sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005953
Jesse Hall3dd678a2016-01-08 21:52:01 -08005954 count := pAllocateInfo[0].commandBufferCount
Jesse Hall3fbc8562015-11-29 22:10:52 -08005955 commandBuffers := pCommandBuffers[0:count]
Jesse Hallfbf97b02015-11-20 14:17:03 -08005956 for i in (0 .. count) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005957 commandBuffer := ?
5958 commandBuffers[i] = commandBuffer
5959 State.CommandBuffers[commandBuffer] = new!CommandBufferObject(device: device)
Jesse Hallfbf97b02015-11-20 14:17:03 -08005960 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07005961
5962 return ?
5963}
5964
5965@threadSafety("system")
Jesse Hallfbf97b02015-11-20 14:17:03 -08005966cmd void vkFreeCommandBuffers(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005967 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005968 VkCommandPool commandPool,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005969 u32 commandBufferCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005970 const VkCommandBuffer* pCommandBuffers) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005971 deviceObject := GetDevice(device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005972
Jesse Hall3fbc8562015-11-29 22:10:52 -08005973 commandBuffers := pCommandBuffers[0:commandBufferCount]
Jesse Hall03b6fe12015-11-24 12:44:21 -08005974 for i in (0 .. commandBufferCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005975 commandBufferObject := GetCommandBuffer(commandBuffers[i])
5976 assert(commandBufferObject.device == device)
Jesse Hallfbf97b02015-11-20 14:17:03 -08005977 // TODO: iterate over boundObjects and clear memory bindings
Jesse Hall3fbc8562015-11-29 22:10:52 -08005978 State.CommandBuffers[commandBuffers[i]] = null
Jesse Hallfbf97b02015-11-20 14:17:03 -08005979 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07005980}
5981
5982@threadSafety("app")
5983cmd VkResult vkBeginCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005984 VkCommandBuffer commandBuffer,
5985 const VkCommandBufferBeginInfo* pBeginInfo) {
5986 assert(pBeginInfo.sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO)
5987 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005988
5989 // TODO: iterate over boundObjects and clear memory bindings
5990
5991 return ?
5992}
5993
5994@threadSafety("app")
5995cmd VkResult vkEndCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005996 VkCommandBuffer commandBuffer) {
5997 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005998
5999 return ?
6000}
6001
6002@threadSafety("app")
6003cmd VkResult vkResetCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006004 VkCommandBuffer commandBuffer,
6005 VkCommandBufferResetFlags flags) {
6006 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006007
6008 // TODO: iterate over boundObjects and clear memory bindings
6009
6010 return ?
6011}
6012
6013
6014// Command buffer building functions
6015
6016@threadSafety("app")
6017cmd void vkCmdBindPipeline(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006018 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006019 VkPipelineBindPoint pipelineBindPoint,
6020 VkPipeline pipeline) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006021 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006022 pipelineObject := GetPipeline(pipeline)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006023 assert(commandBufferObject.device == pipelineObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006024
Jesse Halld8bade02015-11-24 10:24:18 -08006025 queue := switch (pipelineBindPoint) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006026 case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT
6027 case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT
6028 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08006029 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006030}
6031
6032@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006033cmd void vkCmdSetViewport(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006034 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006035 u32 firstViewport,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006036 u32 viewportCount,
6037 const VkViewport* pViewports) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006038 commandBufferObject := GetCommandBuffer(commandBuffer)
6039 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006040}
6041
6042@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006043cmd void vkCmdSetScissor(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006044 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006045 u32 firstScissor,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006046 u32 scissorCount,
6047 const VkRect2D* pScissors) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006048 commandBufferObject := GetCommandBuffer(commandBuffer)
6049 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006050}
6051
6052@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006053cmd void vkCmdSetLineWidth(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006054 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006055 f32 lineWidth) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006056 commandBufferObject := GetCommandBuffer(commandBuffer)
6057 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006058}
6059
6060@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006061cmd void vkCmdSetDepthBias(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006062 VkCommandBuffer commandBuffer,
Jesse Halla9bb62b2015-11-21 19:31:56 -08006063 f32 depthBiasConstantFactor,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006064 f32 depthBiasClamp,
Jesse Halla9bb62b2015-11-21 19:31:56 -08006065 f32 depthBiasSlopeFactor) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006066 commandBufferObject := GetCommandBuffer(commandBuffer)
6067 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006068}
Jesse Halld27f6aa2015-08-15 17:58:48 -07006069
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006070@threadSafety("app")
6071cmd void vkCmdSetBlendConstants(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006072 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006073 // TODO(jessehall): apic only supports 'const' on pointer types. Using
6074 // an annotation as a quick hack to pass this to the template without
6075 // having to modify the AST and semantic model.
Jesse Hallb00daad2015-11-29 19:46:20 -08006076 @readonly f32[4] blendConstants) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006077 commandBufferObject := GetCommandBuffer(commandBuffer)
6078 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006079}
6080
6081@threadSafety("app")
6082cmd void vkCmdSetDepthBounds(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006083 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006084 f32 minDepthBounds,
6085 f32 maxDepthBounds) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006086 commandBufferObject := GetCommandBuffer(commandBuffer)
6087 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006088}
6089
6090@threadSafety("app")
6091cmd void vkCmdSetStencilCompareMask(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006092 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006093 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08006094 u32 compareMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006095 commandBufferObject := GetCommandBuffer(commandBuffer)
6096 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006097}
6098
6099@threadSafety("app")
6100cmd void vkCmdSetStencilWriteMask(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006101 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006102 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08006103 u32 writeMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006104 commandBufferObject := GetCommandBuffer(commandBuffer)
6105 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006106}
6107
6108@threadSafety("app")
6109cmd void vkCmdSetStencilReference(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006110 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006111 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08006112 u32 reference) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006113 commandBufferObject := GetCommandBuffer(commandBuffer)
6114 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006115}
6116
6117@threadSafety("app")
6118cmd void vkCmdBindDescriptorSets(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006119 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006120 VkPipelineBindPoint pipelineBindPoint,
6121 VkPipelineLayout layout,
6122 u32 firstSet,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006123 u32 descriptorSetCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006124 const VkDescriptorSet* pDescriptorSets,
6125 u32 dynamicOffsetCount,
6126 const u32* pDynamicOffsets) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006127 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006128
Jesse Hall03b6fe12015-11-24 12:44:21 -08006129 descriptorSets := pDescriptorSets[0:descriptorSetCount]
6130 for i in (0 .. descriptorSetCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006131 descriptorSet := descriptorSets[i]
6132 descriptorSetObject := GetDescriptorSet(descriptorSet)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006133 assert(commandBufferObject.device == descriptorSetObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006134 }
6135
6136 dynamicOffsets := pDynamicOffsets[0:dynamicOffsetCount]
6137 for i in (0 .. dynamicOffsetCount) {
6138 dynamicOffset := dynamicOffsets[i]
6139 }
6140
Jesse Halld8bade02015-11-24 10:24:18 -08006141 queue := switch (pipelineBindPoint) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006142 case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT
6143 case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT
6144 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08006145 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006146}
6147
6148@threadSafety("app")
6149cmd void vkCmdBindIndexBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006150 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006151 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006152 VkDeviceSize offset,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006153 VkIndexType indexType) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006154 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006155 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006156 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006157
Jesse Hall3fbc8562015-11-29 22:10:52 -08006158 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006159
Jesse Hall3fbc8562015-11-29 22:10:52 -08006160 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006161}
6162
6163@threadSafety("app")
6164cmd void vkCmdBindVertexBuffers(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006165 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006166 u32 firstBinding,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006167 u32 bindingCount,
6168 const VkBuffer* pBuffers,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006169 const VkDeviceSize* pOffsets) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006170 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006171
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006172 // TODO: check if not [firstBinding:firstBinding+bindingCount]
Jesse Halld27f6aa2015-08-15 17:58:48 -07006173 buffers := pBuffers[0:bindingCount]
6174 offsets := pOffsets[0:bindingCount]
6175 for i in (0 .. bindingCount) {
6176 buffer := buffers[i]
6177 offset := offsets[i]
6178 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006179 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006180
Jesse Hall3fbc8562015-11-29 22:10:52 -08006181 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006182 }
6183
Jesse Hall3fbc8562015-11-29 22:10:52 -08006184 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006185}
6186
6187@threadSafety("app")
6188cmd void vkCmdDraw(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006189 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006190 u32 vertexCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006191 u32 instanceCount,
6192 u32 firstVertex,
6193 u32 firstInstance) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006194 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006195
Jesse Hall3fbc8562015-11-29 22:10:52 -08006196 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006197}
6198
6199@threadSafety("app")
6200cmd void vkCmdDrawIndexed(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006201 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006202 u32 indexCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006203 u32 instanceCount,
6204 u32 firstIndex,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006205 s32 vertexOffset,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006206 u32 firstInstance) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006207 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006208
Jesse Hall3fbc8562015-11-29 22:10:52 -08006209 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006210}
6211
6212@threadSafety("app")
6213cmd void vkCmdDrawIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006214 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006215 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006216 VkDeviceSize offset,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006217 u32 drawCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006218 u32 stride) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006219 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006220 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006221 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006222
Jesse Hall3fbc8562015-11-29 22:10:52 -08006223 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006224
Jesse Hall3fbc8562015-11-29 22:10:52 -08006225 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006226}
6227
6228@threadSafety("app")
6229cmd void vkCmdDrawIndexedIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006230 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006231 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006232 VkDeviceSize offset,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006233 u32 drawCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006234 u32 stride) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006235 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006236 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006237 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006238
Jesse Hall3fbc8562015-11-29 22:10:52 -08006239 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006240
Jesse Hall3fbc8562015-11-29 22:10:52 -08006241 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006242}
6243
6244@threadSafety("app")
6245cmd void vkCmdDispatch(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006246 VkCommandBuffer commandBuffer,
Jesse Halld0599582017-03-10 18:35:38 -08006247 u32 groupCountX,
6248 u32 groupCountY,
6249 u32 groupCountZ) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006250 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006251
Jesse Hall3fbc8562015-11-29 22:10:52 -08006252 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006253}
6254
6255@threadSafety("app")
6256cmd void vkCmdDispatchIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006257 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006258 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006259 VkDeviceSize offset) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006260 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006261 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006262 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006263
Jesse Hall3fbc8562015-11-29 22:10:52 -08006264 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006265
Jesse Hall3fbc8562015-11-29 22:10:52 -08006266 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006267}
6268
6269@threadSafety("app")
6270cmd void vkCmdCopyBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006271 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006272 VkBuffer srcBuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006273 VkBuffer dstBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006274 u32 regionCount,
6275 const VkBufferCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006276 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006277 srcBufferObject := GetBuffer(srcBuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006278 dstBufferObject := GetBuffer(dstBuffer)
6279 assert(commandBufferObject.device == srcBufferObject.device)
6280 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006281
6282 regions := pRegions[0:regionCount]
6283 for i in (0 .. regionCount) {
6284 region := regions[i]
6285 }
6286
Jesse Hall3fbc8562015-11-29 22:10:52 -08006287 bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory)
6288 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006289
Jesse Hall65ab5522015-11-30 00:07:16 -08006290 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006291}
6292
6293@threadSafety("app")
6294cmd void vkCmdCopyImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006295 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006296 VkImage srcImage,
6297 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006298 VkImage dstImage,
6299 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006300 u32 regionCount,
6301 const VkImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006302 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006303 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006304 dstImageObject := GetImage(dstImage)
6305 assert(commandBufferObject.device == srcImageObject.device)
6306 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006307
6308 regions := pRegions[0:regionCount]
6309 for i in (0 .. regionCount) {
6310 region := regions[i]
6311 }
6312
Jesse Hall3fbc8562015-11-29 22:10:52 -08006313 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6314 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006315
Jesse Hall65ab5522015-11-30 00:07:16 -08006316 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006317}
6318
6319@threadSafety("app")
6320cmd void vkCmdBlitImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006321 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006322 VkImage srcImage,
6323 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006324 VkImage dstImage,
6325 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006326 u32 regionCount,
6327 const VkImageBlit* pRegions,
Jesse Hall23ff73f2015-11-29 14:36:39 -08006328 VkFilter filter) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006329 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006330 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006331 dstImageObject := GetImage(dstImage)
6332 assert(commandBufferObject.device == srcImageObject.device)
6333 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006334
6335 regions := pRegions[0:regionCount]
6336 for i in (0 .. regionCount) {
6337 region := regions[i]
6338 }
6339
Jesse Hall3fbc8562015-11-29 22:10:52 -08006340 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6341 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006342
Jesse Hall3fbc8562015-11-29 22:10:52 -08006343 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006344}
6345
6346@threadSafety("app")
6347cmd void vkCmdCopyBufferToImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006348 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006349 VkBuffer srcBuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006350 VkImage dstImage,
6351 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006352 u32 regionCount,
6353 const VkBufferImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006354 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006355 srcBufferObject := GetBuffer(srcBuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006356 dstImageObject := GetImage(dstImage)
6357 assert(commandBufferObject.device == srcBufferObject.device)
6358 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006359
6360 regions := pRegions[0:regionCount]
6361 for i in (0 .. regionCount) {
6362 region := regions[i]
6363 }
6364
Jesse Hall3fbc8562015-11-29 22:10:52 -08006365 bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory)
6366 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006367
Jesse Hall65ab5522015-11-30 00:07:16 -08006368 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006369}
6370
6371@threadSafety("app")
6372cmd void vkCmdCopyImageToBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006373 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006374 VkImage srcImage,
6375 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006376 VkBuffer dstBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006377 u32 regionCount,
6378 const VkBufferImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006379 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006380 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006381 dstBufferObject := GetBuffer(dstBuffer)
6382 assert(commandBufferObject.device == srcImageObject.device)
6383 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006384
6385 regions := pRegions[0:regionCount]
6386 for i in (0 .. regionCount) {
6387 region := regions[i]
6388 }
6389
Jesse Hall3fbc8562015-11-29 22:10:52 -08006390 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6391 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006392
Jesse Hall65ab5522015-11-30 00:07:16 -08006393 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006394}
6395
6396@threadSafety("app")
6397cmd void vkCmdUpdateBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006398 VkCommandBuffer commandBuffer,
6399 VkBuffer dstBuffer,
6400 VkDeviceSize dstOffset,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006401 VkDeviceSize dataSize,
Jesse Hall3f5499b2016-07-26 15:20:40 -07006402 const void* pData) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006403 commandBufferObject := GetCommandBuffer(commandBuffer)
6404 dstBufferObject := GetBuffer(dstBuffer)
6405 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006406
6407 data := pData[0:dataSize]
6408
Jesse Hall3fbc8562015-11-29 22:10:52 -08006409 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006410
Jesse Hall65ab5522015-11-30 00:07:16 -08006411 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006412}
6413
6414@threadSafety("app")
6415cmd void vkCmdFillBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006416 VkCommandBuffer commandBuffer,
6417 VkBuffer dstBuffer,
6418 VkDeviceSize dstOffset,
Jesse Hallb00daad2015-11-29 19:46:20 -08006419 VkDeviceSize size,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006420 u32 data) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006421 commandBufferObject := GetCommandBuffer(commandBuffer)
6422 dstBufferObject := GetBuffer(dstBuffer)
6423 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006424
Jesse Hall65ab5522015-11-30 00:07:16 -08006425 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006426}
6427
6428@threadSafety("app")
6429cmd void vkCmdClearColorImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006430 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006431 VkImage image,
6432 VkImageLayout imageLayout,
6433 const VkClearColorValue* pColor,
6434 u32 rangeCount,
6435 const VkImageSubresourceRange* pRanges) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006436 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006437 imageObject := GetImage(image)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006438 assert(commandBufferObject.device == imageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006439
6440 ranges := pRanges[0:rangeCount]
6441 for i in (0 .. rangeCount) {
6442 range := ranges[i]
6443 }
6444
Jesse Hall3fbc8562015-11-29 22:10:52 -08006445 bindCommandBuffer(commandBuffer, image, imageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006446
Jesse Hall3fbc8562015-11-29 22:10:52 -08006447 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006448}
6449
6450@threadSafety("app")
6451cmd void vkCmdClearDepthStencilImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006452 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006453 VkImage image,
6454 VkImageLayout imageLayout,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006455 const VkClearDepthStencilValue* pDepthStencil,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006456 u32 rangeCount,
6457 const VkImageSubresourceRange* pRanges) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006458 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006459 imageObject := GetImage(image)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006460 assert(commandBufferObject.device == imageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006461
6462 ranges := pRanges[0:rangeCount]
6463 for i in (0 .. rangeCount) {
6464 range := ranges[i]
6465 }
6466
Jesse Hall3fbc8562015-11-29 22:10:52 -08006467 bindCommandBuffer(commandBuffer, image, imageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006468
Jesse Hall3fbc8562015-11-29 22:10:52 -08006469 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006470}
6471
6472@threadSafety("app")
Jesse Hallae38f732015-11-19 21:32:50 -08006473cmd void vkCmdClearAttachments(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006474 VkCommandBuffer commandBuffer,
Jesse Hallae38f732015-11-19 21:32:50 -08006475 u32 attachmentCount,
6476 const VkClearAttachment* pAttachments,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006477 u32 rectCount,
Jesse Halla15a4bf2015-11-19 22:48:02 -08006478 const VkClearRect* pRects) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006479 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006480
6481 rects := pRects[0:rectCount]
6482 for i in (0 .. rectCount) {
6483 rect := rects[i]
6484 }
6485
Jesse Hall3fbc8562015-11-29 22:10:52 -08006486 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006487}
6488
6489@threadSafety("app")
6490cmd void vkCmdResolveImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006491 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006492 VkImage srcImage,
6493 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006494 VkImage dstImage,
6495 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006496 u32 regionCount,
6497 const VkImageResolve* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006498 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006499 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006500 dstImageObject := GetImage(dstImage)
6501 assert(commandBufferObject.device == srcImageObject.device)
6502 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006503
6504 regions := pRegions[0:regionCount]
6505 for i in (0 .. regionCount) {
6506 region := regions[i]
6507 }
6508
Jesse Hall3fbc8562015-11-29 22:10:52 -08006509 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6510 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006511
Jesse Hall3fbc8562015-11-29 22:10:52 -08006512 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006513}
6514
6515@threadSafety("app")
6516cmd void vkCmdSetEvent(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006517 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006518 VkEvent event,
6519 VkPipelineStageFlags stageMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006520 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006521 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006522 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006523}
6524
6525@threadSafety("app")
6526cmd void vkCmdResetEvent(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006527 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006528 VkEvent event,
6529 VkPipelineStageFlags stageMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006530 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006531 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006532 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006533}
6534
6535@threadSafety("app")
6536cmd void vkCmdWaitEvents(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006537 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006538 u32 eventCount,
6539 const VkEvent* pEvents,
6540 VkPipelineStageFlags srcStageMask,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006541 VkPipelineStageFlags dstStageMask,
6542 u32 memoryBarrierCount,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006543 const VkMemoryBarrier* pMemoryBarriers,
6544 u32 bufferMemoryBarrierCount,
6545 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
6546 u32 imageMemoryBarrierCount,
6547 const VkImageMemoryBarrier* pImageMemoryBarriers) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006548 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006549
6550 events := pEvents[0:eventCount]
6551 for i in (0 .. eventCount) {
6552 event := events[i]
6553 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006554 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006555 }
6556
Jesse Hall3dd678a2016-01-08 21:52:01 -08006557 memoryBarriers := pMemoryBarriers[0:memoryBarrierCount]
Jesse Hall3fbc8562015-11-29 22:10:52 -08006558 for i in (0 .. memoryBarrierCount) {
Jesse Hall3dd678a2016-01-08 21:52:01 -08006559 memoryBarrier := memoryBarriers[i]
6560 }
6561 bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount]
6562 for i in (0 .. bufferMemoryBarrierCount) {
6563 bufferMemoryBarrier := bufferMemoryBarriers[i]
6564 bufferObject := GetBuffer(bufferMemoryBarrier.buffer)
6565 assert(bufferObject.device == commandBufferObject.device)
6566 }
6567 imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount]
6568 for i in (0 .. imageMemoryBarrierCount) {
6569 imageMemoryBarrier := imageMemoryBarriers[i]
6570 imageObject := GetImage(imageMemoryBarrier.image)
6571 assert(imageObject.device == commandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006572 }
6573}
6574
6575@threadSafety("app")
6576cmd void vkCmdPipelineBarrier(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006577 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006578 VkPipelineStageFlags srcStageMask,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006579 VkPipelineStageFlags dstStageMask,
Jesse Halldc6d36c2015-11-29 19:12:15 -08006580 VkDependencyFlags dependencyFlags,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006581 u32 memoryBarrierCount,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006582 const VkMemoryBarrier* pMemoryBarriers,
6583 u32 bufferMemoryBarrierCount,
6584 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
6585 u32 imageMemoryBarrierCount,
6586 const VkImageMemoryBarrier* pImageMemoryBarriers) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006587 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006588
Jesse Hall3dd678a2016-01-08 21:52:01 -08006589 memoryBarriers := pMemoryBarriers[0:memoryBarrierCount]
Jesse Hall3fbc8562015-11-29 22:10:52 -08006590 for i in (0 .. memoryBarrierCount) {
Jesse Hall3dd678a2016-01-08 21:52:01 -08006591 memoryBarrier := memoryBarriers[i]
6592 }
6593 bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount]
6594 for i in (0 .. bufferMemoryBarrierCount) {
6595 bufferMemoryBarrier := bufferMemoryBarriers[i]
6596 bufferObject := GetBuffer(bufferMemoryBarrier.buffer)
6597 assert(bufferObject.device == commandBufferObject.device)
6598 }
6599 imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount]
6600 for i in (0 .. imageMemoryBarrierCount) {
6601 imageMemoryBarrier := imageMemoryBarriers[i]
6602 imageObject := GetImage(imageMemoryBarrier.image)
6603 assert(imageObject.device == commandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006604 }
6605}
6606
6607@threadSafety("app")
6608cmd void vkCmdBeginQuery(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006609 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006610 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006611 u32 query,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006612 VkQueryControlFlags flags) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006613 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006614 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006615 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006616}
6617
6618@threadSafety("app")
6619cmd void vkCmdEndQuery(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006620 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006621 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006622 u32 query) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006623 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006624 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006625 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006626}
6627
6628@threadSafety("app")
6629cmd void vkCmdResetQueryPool(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006630 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006631 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006632 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006633 u32 queryCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006634 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006635 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006636 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006637}
6638
6639@threadSafety("app")
6640cmd void vkCmdWriteTimestamp(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006641 VkCommandBuffer commandBuffer,
Jesse Hall6f39a6d2015-11-24 11:08:36 -08006642 VkPipelineStageFlagBits pipelineStage,
Jesse Halla3a7a1d2015-11-24 11:37:23 -08006643 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006644 u32 query) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006645 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halla3a7a1d2015-11-24 11:37:23 -08006646 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006647 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006648}
6649
6650@threadSafety("app")
6651cmd void vkCmdCopyQueryPoolResults(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006652 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006653 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006654 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006655 u32 queryCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006656 VkBuffer dstBuffer,
6657 VkDeviceSize dstOffset,
Jesse Halla9bb62b2015-11-21 19:31:56 -08006658 VkDeviceSize stride,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006659 VkQueryResultFlags flags) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006660 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006661 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006662 dstBufferObject := GetBuffer(dstBuffer)
6663 assert(commandBufferObject.device == queryPoolObject.device)
6664 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006665}
6666
6667cmd void vkCmdPushConstants(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006668 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006669 VkPipelineLayout layout,
6670 VkShaderStageFlags stageFlags,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006671 u32 offset,
6672 u32 size,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08006673 const void* pValues) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006674 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006675 layoutObject := GetPipelineLayout(layout)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006676 assert(commandBufferObject.device == layoutObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006677}
6678
6679@threadSafety("app")
6680cmd void vkCmdBeginRenderPass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006681 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006682 const VkRenderPassBeginInfo* pRenderPassBegin,
Jesse Hall65ab5522015-11-30 00:07:16 -08006683 VkSubpassContents contents) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006684 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006685 renderPassObject := GetRenderPass(pRenderPassBegin.renderPass)
6686 framebufferObject := GetFramebuffer(pRenderPassBegin.framebuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006687 assert(commandBufferObject.device == renderPassObject.device)
6688 assert(commandBufferObject.device == framebufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006689
Jesse Hall3fbc8562015-11-29 22:10:52 -08006690 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006691}
6692
6693cmd void vkCmdNextSubpass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006694 VkCommandBuffer commandBuffer,
Jesse Hall65ab5522015-11-30 00:07:16 -08006695 VkSubpassContents contents) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006696 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006697}
6698
6699@threadSafety("app")
6700cmd void vkCmdEndRenderPass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006701 VkCommandBuffer commandBuffer) {
6702 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006703
Jesse Hall3fbc8562015-11-29 22:10:52 -08006704 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006705}
6706
6707cmd void vkCmdExecuteCommands(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006708 VkCommandBuffer commandBuffer,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006709 u32 commandBufferCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006710 const VkCommandBuffer* pCommandBuffers) {
6711 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006712
Jesse Hall3dd678a2016-01-08 21:52:01 -08006713 commandBuffers := pCommandBuffers[0:commandBufferCount]
6714 for i in (0 .. commandBufferCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006715 secondaryCommandBuffer := commandBuffers[i]
6716 secondaryCommandBufferObject := GetCommandBuffer(secondaryCommandBuffer)
6717 assert(commandBufferObject.device == secondaryCommandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006718 }
6719}
6720
Jesse Halld0599582017-03-10 18:35:38 -08006721@extension("VK_KHR_surface") // 1
Jesse Hall1356b0d2015-11-23 17:24:58 -08006722cmd void vkDestroySurfaceKHR(
6723 VkInstance instance,
Jesse Hall0e74f002015-11-30 11:37:59 -08006724 VkSurfaceKHR surface,
6725 const VkAllocationCallbacks* pAllocator) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08006726 instanceObject := GetInstance(instance)
6727 surfaceObject := GetSurface(surface)
6728 assert(surfaceObject.instance == instance)
Michael Lentine88594d72015-11-12 12:49:45 -08006729
Jesse Hall1356b0d2015-11-23 17:24:58 -08006730 State.Surfaces[surface] = null
Jesse Hall2818f932015-11-19 21:19:17 -08006731}
6732
Jesse Halld0599582017-03-10 18:35:38 -08006733@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08006734cmd VkResult vkGetPhysicalDeviceSurfaceSupportKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08006735 VkPhysicalDevice physicalDevice,
6736 u32 queueFamilyIndex,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006737 VkSurfaceKHR surface,
Jesse Hallb00daad2015-11-29 19:46:20 -08006738 VkBool32* pSupported) {
6739 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08006740
6741 return ?
6742}
6743
Jesse Halld0599582017-03-10 18:35:38 -08006744@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08006745cmd VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
6746 VkPhysicalDevice physicalDevice,
6747 VkSurfaceKHR surface,
6748 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) {
6749 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6750
6751 surfaceCapabilities := ?
6752 pSurfaceCapabilities[0] = surfaceCapabilities
6753
6754 return ?
6755}
6756
Jesse Halld0599582017-03-10 18:35:38 -08006757@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08006758cmd VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(
6759 VkPhysicalDevice physicalDevice,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006760 VkSurfaceKHR surface,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006761 u32* pSurfaceFormatCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006762 VkSurfaceFormatKHR* pSurfaceFormats) {
Jesse Hallb00daad2015-11-29 19:46:20 -08006763 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08006764
6765 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08006766 pSurfaceFormatCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08006767 surfaceFormats := pSurfaceFormats[0:count]
6768
6769 for i in (0 .. count) {
6770 surfaceFormat := ?
6771 surfaceFormats[i] = surfaceFormat
6772 }
6773
6774 return ?
6775}
6776
Jesse Halld0599582017-03-10 18:35:38 -08006777@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08006778cmd VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(
6779 VkPhysicalDevice physicalDevice,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006780 VkSurfaceKHR surface,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006781 u32* pPresentModeCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006782 VkPresentModeKHR* pPresentModes) {
Jesse Hallb00daad2015-11-29 19:46:20 -08006783 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08006784
6785 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08006786 pPresentModeCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08006787 presentModes := pPresentModes[0:count]
6788
6789 for i in (0 .. count) {
6790 presentMode := ?
6791 presentModes[i] = presentMode
6792 }
6793
6794 return ?
6795}
6796
Jesse Halld0599582017-03-10 18:35:38 -08006797@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08006798cmd VkResult vkCreateSwapchainKHR(
6799 VkDevice device,
6800 const VkSwapchainCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006801 const VkAllocationCallbacks* pAllocator,
Michael Lentine88594d72015-11-12 12:49:45 -08006802 VkSwapchainKHR* pSwapchain) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08006803 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR)
Michael Lentine88594d72015-11-12 12:49:45 -08006804 deviceObject := GetDevice(device)
6805
6806 swapchain := ?
6807 pSwapchain[0] = swapchain
6808 State.Swapchains[swapchain] = new!SwapchainObject(device: device)
6809
6810 return ?
6811}
6812
Jesse Halld0599582017-03-10 18:35:38 -08006813@extension("VK_KHR_swapchain") // 2
Jesse Hall1356b0d2015-11-23 17:24:58 -08006814cmd void vkDestroySwapchainKHR(
Michael Lentine88594d72015-11-12 12:49:45 -08006815 VkDevice device,
Jesse Hall0e74f002015-11-30 11:37:59 -08006816 VkSwapchainKHR swapchain,
6817 const VkAllocationCallbacks* pAllocator) {
Michael Lentine88594d72015-11-12 12:49:45 -08006818 deviceObject := GetDevice(device)
6819 swapchainObject := GetSwapchain(swapchain)
6820 assert(swapchainObject.device == device)
6821
6822 State.Swapchains[swapchain] = null
Michael Lentine88594d72015-11-12 12:49:45 -08006823}
6824
Jesse Halld0599582017-03-10 18:35:38 -08006825@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08006826cmd VkResult vkGetSwapchainImagesKHR(
6827 VkDevice device,
6828 VkSwapchainKHR swapchain,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006829 u32* pSwapchainImageCount,
Michael Lentine88594d72015-11-12 12:49:45 -08006830 VkImage* pSwapchainImages) {
6831 deviceObject := GetDevice(device)
6832
6833 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08006834 pSwapchainImageCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08006835 swapchainImages := pSwapchainImages[0:count]
6836
6837 for i in (0 .. count) {
6838 swapchainImage := ?
6839 swapchainImages[i] = swapchainImage
Jesse Hall1356b0d2015-11-23 17:24:58 -08006840 State.Images[swapchainImage] = new!ImageObject(device: device)
Michael Lentine88594d72015-11-12 12:49:45 -08006841 }
6842
6843 return ?
6844}
6845
Jesse Halld0599582017-03-10 18:35:38 -08006846@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08006847cmd VkResult vkAcquireNextImageKHR(
6848 VkDevice device,
6849 VkSwapchainKHR swapchain,
6850 u64 timeout,
6851 VkSemaphore semaphore,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006852 VkFence fence,
Michael Lentine88594d72015-11-12 12:49:45 -08006853 u32* pImageIndex) {
6854 deviceObject := GetDevice(device)
6855 swapchainObject := GetSwapchain(swapchain)
6856
6857 imageIndex := ?
6858 pImageIndex[0] = imageIndex
6859
6860 return ?
6861}
6862
Jesse Halld0599582017-03-10 18:35:38 -08006863@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08006864cmd VkResult vkQueuePresentKHR(
6865 VkQueue queue,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08006866 const VkPresentInfoKHR* pPresentInfo) {
Michael Lentine88594d72015-11-12 12:49:45 -08006867 queueObject := GetQueue(queue)
6868
6869 presentInfo := ?
6870 pPresentInfo[0] = presentInfo
6871
6872 return ?
6873}
6874
Jesse Halld0599582017-03-10 18:35:38 -08006875@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08006876cmd VkResult vkGetPhysicalDeviceDisplayPropertiesKHR(
6877 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006878 u32* pPropertyCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006879 VkDisplayPropertiesKHR* pProperties) {
6880 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6881 return ?
6882}
6883
Jesse Halld0599582017-03-10 18:35:38 -08006884@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08006885cmd VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
6886 VkPhysicalDevice physicalDevice,
6887 u32* pPropertyCount,
6888 VkDisplayPlanePropertiesKHR* pProperties) {
6889 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6890 return ?
6891}
6892
Jesse Halld0599582017-03-10 18:35:38 -08006893@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08006894cmd VkResult vkGetDisplayPlaneSupportedDisplaysKHR(
6895 VkPhysicalDevice physicalDevice,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006896 u32 planeIndex,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08006897 u32* pDisplayCount,
6898 VkDisplayKHR* pDisplays) {
Jesse Halla6429252015-11-29 18:59:42 -08006899 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6900 return ?
6901}
6902
Jesse Halld0599582017-03-10 18:35:38 -08006903@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08006904cmd VkResult vkGetDisplayModePropertiesKHR(
6905 VkPhysicalDevice physicalDevice,
6906 VkDisplayKHR display,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006907 u32* pPropertyCount,
6908 VkDisplayModePropertiesKHR* pProperties) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08006909 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6910 return ?
6911}
6912
Jesse Halld0599582017-03-10 18:35:38 -08006913@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08006914cmd VkResult vkCreateDisplayModeKHR(
6915 VkPhysicalDevice physicalDevice,
6916 VkDisplayKHR display,
6917 const VkDisplayModeCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006918 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006919 VkDisplayModeKHR* pMode) {
6920 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6921 return ?
6922}
6923
Jesse Halld0599582017-03-10 18:35:38 -08006924@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08006925cmd VkResult vkGetDisplayPlaneCapabilitiesKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08006926 VkPhysicalDevice physicalDevice,
Jesse Hall9ba8bc82015-11-30 16:22:16 -08006927 VkDisplayModeKHR mode,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006928 u32 planeIndex,
Jesse Halla6429252015-11-29 18:59:42 -08006929 VkDisplayPlaneCapabilitiesKHR* pCapabilities) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08006930 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6931 return ?
6932}
6933
Jesse Halld0599582017-03-10 18:35:38 -08006934@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08006935cmd VkResult vkCreateDisplayPlaneSurfaceKHR(
6936 VkInstance instance,
6937 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006938 const VkAllocationCallbacks* pAllocator,
Jesse Halla6429252015-11-29 18:59:42 -08006939 VkSurfaceKHR* pSurface) {
6940 return ?
6941}
6942
Jesse Halld0599582017-03-10 18:35:38 -08006943@extension("VK_KHR_display_swapchain") // 4
Jesse Hall9ba8bc82015-11-30 16:22:16 -08006944cmd VkResult vkCreateSharedSwapchainsKHR(
6945 VkDevice device,
6946 u32 swapchainCount,
6947 const VkSwapchainCreateInfoKHR* pCreateInfos,
6948 const VkAllocationCallbacks* pAllocator,
6949 VkSwapchainKHR* pSwapchains) {
6950 return ?
6951}
6952
Jesse Halld0599582017-03-10 18:35:38 -08006953@extension("VK_KHR_xlib_surface") // 5
Jesse Halla6429252015-11-29 18:59:42 -08006954cmd VkResult vkCreateXlibSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08006955 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006956 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006957 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006958 VkSurfaceKHR* pSurface) {
6959 instanceObject := GetInstance(instance)
6960 return ?
6961}
6962
Jesse Halld0599582017-03-10 18:35:38 -08006963@extension("VK_KHR_xlib_surface") // 5
Jesse Halla6429252015-11-29 18:59:42 -08006964cmd VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR(
6965 VkPhysicalDevice physicalDevice,
6966 u32 queueFamilyIndex,
6967 platform.Display* dpy,
Jesse Hall65ab5522015-11-30 00:07:16 -08006968 platform.VisualID visualID) {
Jesse Halla6429252015-11-29 18:59:42 -08006969 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6970 return ?
6971}
6972
Jesse Halld0599582017-03-10 18:35:38 -08006973@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006974cmd VkResult vkCreateXcbSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08006975 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006976 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006977 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006978 VkSurfaceKHR* pSurface) {
6979 instanceObject := GetInstance(instance)
6980 return ?
6981}
6982
Jesse Halld0599582017-03-10 18:35:38 -08006983@extension("VK_KHR_xcb_surface") // 6
Jesse Halla6429252015-11-29 18:59:42 -08006984cmd VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR(
6985 VkPhysicalDevice physicalDevice,
6986 u32 queueFamilyIndex,
6987 platform.xcb_connection_t* connection,
6988 platform.xcb_visualid_t visual_id) {
6989 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6990 return ?
6991}
6992
Jesse Halld0599582017-03-10 18:35:38 -08006993@extension("VK_KHR_wayland_surface") // 7
Jesse Hall1356b0d2015-11-23 17:24:58 -08006994cmd VkResult vkCreateWaylandSurfaceKHR(
6995 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006996 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006997 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006998 VkSurfaceKHR* pSurface) {
6999 instanceObject := GetInstance(instance)
7000 return ?
7001}
7002
Jesse Halld0599582017-03-10 18:35:38 -08007003@extension("VK_KHR_wayland_surface") // 7
Jesse Halla6429252015-11-29 18:59:42 -08007004cmd VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR(
7005 VkPhysicalDevice physicalDevice,
7006 u32 queueFamilyIndex,
7007 platform.wl_display* display) {
7008 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7009 return ?
7010}
7011
Jesse Halld0599582017-03-10 18:35:38 -08007012@extension("VK_KHR_mir_surface") // 8
Jesse Hall1356b0d2015-11-23 17:24:58 -08007013cmd VkResult vkCreateMirSurfaceKHR(
7014 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007015 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007016 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007017 VkSurfaceKHR* pSurface) {
7018 instanceObject := GetInstance(instance)
7019 return ?
7020}
7021
Jesse Halld0599582017-03-10 18:35:38 -08007022@extension("VK_KHR_mir_surface") // 8
Jesse Halla6429252015-11-29 18:59:42 -08007023cmd VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR(
7024 VkPhysicalDevice physicalDevice,
7025 u32 queueFamilyIndex,
7026 platform.MirConnection* connection) {
7027 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7028 return ?
7029}
7030
Jesse Halld0599582017-03-10 18:35:38 -08007031@extension("VK_KHR_android_surface") // 9
Jesse Hall1356b0d2015-11-23 17:24:58 -08007032cmd VkResult vkCreateAndroidSurfaceKHR(
7033 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007034 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007035 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007036 VkSurfaceKHR* pSurface) {
7037 instanceObject := GetInstance(instance)
7038 return ?
7039}
7040
Jesse Halld0599582017-03-10 18:35:38 -08007041@extension("VK_KHR_win32_surface") // 10
Jesse Hall1356b0d2015-11-23 17:24:58 -08007042cmd VkResult vkCreateWin32SurfaceKHR(
7043 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007044 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007045 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007046 VkSurfaceKHR* pSurface) {
7047 instanceObject := GetInstance(instance)
7048 return ?
7049}
7050
Jesse Halld0599582017-03-10 18:35:38 -08007051@extension("VK_KHR_win32_surface") // 10
Jesse Halla6429252015-11-29 18:59:42 -08007052cmd VkResult vkGetPhysicalDeviceWin32PresentationSupportKHR(
7053 VkPhysicalDevice physicalDevice,
7054 u32 queueFamilyIndex) {
Jesse Halle2948d82016-02-25 04:19:32 -08007055 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Halla6429252015-11-29 18:59:42 -08007056 return ?
7057}
7058
Jesse Halld0599582017-03-10 18:35:38 -08007059@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08007060cmd VkResult vkGetSwapchainGrallocUsageANDROID(
7061 VkDevice device,
7062 VkFormat format,
7063 VkImageUsageFlags imageUsage,
7064 int* grallocUsage) {
7065 return ?
7066}
7067
Jesse Halld0599582017-03-10 18:35:38 -08007068@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08007069cmd VkResult vkAcquireImageANDROID(
7070 VkDevice device,
7071 VkImage image,
7072 int nativeFenceFd,
7073 VkSemaphore semaphore,
7074 VkFence fence) {
7075 return ?
7076}
7077
Jesse Halld0599582017-03-10 18:35:38 -08007078@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08007079cmd VkResult vkQueueSignalReleaseImageANDROID(
7080 VkQueue queue,
7081 u32 waitSemaphoreCount,
7082 const VkSemaphore* pWaitSemaphores,
7083 VkImage image,
7084 int* pNativeFenceFd) {
7085 return ?
7086}
7087
Jesse Halld0599582017-03-10 18:35:38 -08007088@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08007089@external type void* PFN_vkDebugReportCallbackEXT
Jesse Halld0599582017-03-10 18:35:38 -08007090@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08007091@pfn cmd VkBool32 vkDebugReportCallbackEXT(
7092 VkDebugReportFlagsEXT flags,
7093 VkDebugReportObjectTypeEXT objectType,
7094 u64 object,
7095 platform.size_t location,
7096 s32 messageCode,
7097 const char* pLayerPrefix,
7098 const char* pMessage,
7099 void* pUserData) {
7100 return ?
7101}
7102
Jesse Halld0599582017-03-10 18:35:38 -08007103@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08007104cmd VkResult vkCreateDebugReportCallbackEXT(
7105 VkInstance instance,
7106 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
7107 const VkAllocationCallbacks* pAllocator,
7108 VkDebugReportCallbackEXT* pCallback) {
7109 return ?
7110}
7111
Jesse Halld0599582017-03-10 18:35:38 -08007112@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08007113cmd void vkDestroyDebugReportCallbackEXT(
7114 VkInstance instance,
7115 VkDebugReportCallbackEXT callback,
7116 const VkAllocationCallbacks* pAllocator) {
7117}
7118
Jesse Halld0599582017-03-10 18:35:38 -08007119@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08007120cmd void vkDebugReportMessageEXT(
7121 VkInstance instance,
7122 VkDebugReportFlagsEXT flags,
7123 VkDebugReportObjectTypeEXT objectType,
7124 u64 object,
7125 platform.size_t location,
7126 s32 messageCode,
7127 const char* pLayerPrefix,
7128 const char* pMessage) {
7129}
7130
Jesse Halld0599582017-03-10 18:35:38 -08007131@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07007132cmd VkResult vkDebugMarkerSetObjectTagEXT(
7133 VkDevice device,
7134 VkDebugMarkerObjectTagInfoEXT* pTagInfo) {
7135 return ?
7136}
7137
Jesse Halld0599582017-03-10 18:35:38 -08007138@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07007139cmd VkResult vkDebugMarkerSetObjectNameEXT(
7140 VkDevice device,
7141 VkDebugMarkerObjectNameInfoEXT* pNameInfo) {
7142 return ?
7143}
7144
Jesse Halld0599582017-03-10 18:35:38 -08007145@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07007146cmd void vkCmdDebugMarkerBeginEXT(
7147 VkCommandBuffer commandBuffer,
7148 VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
7149}
7150
Jesse Halld0599582017-03-10 18:35:38 -08007151@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07007152cmd void vkCmdDebugMarkerEndEXT(
7153 VkCommandBuffer commandBuffer) {
7154}
7155
Jesse Halld0599582017-03-10 18:35:38 -08007156@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07007157cmd void vkCmdDebugMarkerInsertEXT(
7158 VkCommandBuffer commandBuffer,
7159 VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
7160}
7161
Jesse Halld0599582017-03-10 18:35:38 -08007162@extension("VK_AMD_draw_indirect_count") // 34
Jesse Halleb02c472017-02-24 15:13:45 -08007163cmd void vkCmdDrawIndirectCountAMD(
7164 VkCommandBuffer commandBuffer,
7165 VkBuffer buffer,
7166 VkDeviceSize offset,
7167 VkBuffer countBuffer,
7168 VkDeviceSize countBufferOffset,
7169 u32 maxDrawCount,
7170 u32 stride) {
7171}
7172
Jesse Halld0599582017-03-10 18:35:38 -08007173@extension("VK_AMD_draw_indirect_count") // 34
Jesse Halleb02c472017-02-24 15:13:45 -08007174cmd void vkCmdDrawIndexedIndirectCountAMD(
7175 VkCommandBuffer commandBuffer,
7176 VkBuffer buffer,
7177 VkDeviceSize offset,
7178 VkBuffer countBuffer,
7179 VkDeviceSize countBufferOffset,
7180 u32 maxDrawCount,
7181 u32 stride) {
7182}
7183
Jesse Halld0599582017-03-10 18:35:38 -08007184@extension("VK_NV_external_memory_capabilities") // 56
Jesse Halleb02c472017-02-24 15:13:45 -08007185cmd VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
7186 VkPhysicalDevice physicalDevice,
7187 VkFormat format,
7188 VkImageType type,
7189 VkImageTiling tiling,
7190 VkImageUsageFlags usage,
7191 VkImageCreateFlags flags,
7192 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
7193 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) {
7194 return ?
7195}
7196
Jesse Halld0599582017-03-10 18:35:38 -08007197@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08007198cmd VkResult vkGetMemoryWin32HandleNV(
7199 VkDevice device,
7200 VkDeviceMemory memory,
7201 VkExternalMemoryHandleTypeFlagsNV handleType,
7202 platform.HANDLE* pHandle) {
7203 return ?
7204}
7205
Jesse Halld0599582017-03-10 18:35:38 -08007206@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08007207cmd void vkGetPhysicalDeviceFeatures2KHR(
7208 VkPhysicalDevice physicalDevice,
7209 VkPhysicalDeviceFeatures2KHR* pFeatures) {
7210}
7211
Jesse Halld0599582017-03-10 18:35:38 -08007212@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08007213cmd void vkGetPhysicalDeviceProperties2KHR(
7214 VkPhysicalDevice physicalDevice,
7215 VkPhysicalDeviceProperties2KHR* pProperties) {
7216}
7217
Jesse Halld0599582017-03-10 18:35:38 -08007218@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08007219cmd void vkGetPhysicalDeviceFormatProperties2KHR(
7220 VkPhysicalDevice physicalDevice,
7221 VkFormat format,
7222 VkFormatProperties2KHR* pFormatProperties) {
7223}
7224
Jesse Halld0599582017-03-10 18:35:38 -08007225@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08007226cmd VkResult vkGetPhysicalDeviceImageFormatProperties2KHR(
7227 VkPhysicalDevice physicalDevice,
7228 const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo,
7229 VkImageFormatProperties2KHR* pImageFormatProperties) {
7230 return ?
7231}
7232
Jesse Halld0599582017-03-10 18:35:38 -08007233@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08007234cmd void vkGetPhysicalDeviceQueueFamilyProperties2KHR(
7235 VkPhysicalDevice physicalDevice,
7236 u32* pQueueFamilyPropertyCount,
7237 VkQueueFamilyProperties2KHR* pQueueFamilyProperties) {
7238}
7239
Jesse Halld0599582017-03-10 18:35:38 -08007240@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08007241cmd void vkGetPhysicalDeviceMemoryProperties2KHR(
7242 VkPhysicalDevice physicalDevice,
7243 VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties) {
7244}
7245
Jesse Halld0599582017-03-10 18:35:38 -08007246@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08007247cmd void vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
7248 VkPhysicalDevice physicalDevice,
7249 const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo,
7250 u32* pPropertyCount,
7251 VkSparseImageFormatProperties2KHR* pProperties) {
7252}
7253
Jesse Halld0599582017-03-10 18:35:38 -08007254@extension("VK_KHX_device_group") // 61
7255cmd void vkGetDeviceGroupPeerMemoryFeaturesKHX(
7256 VkDevice device,
7257 u32 heapIndex,
7258 u32 localDeviceIndex,
7259 u32 remoteDeviceIndex,
7260 VkPeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures) {
7261}
7262
7263@extension("VK_KHX_device_group") // 61
7264cmd VkResult vkBindBufferMemory2KHX(
7265 VkDevice device,
7266 u32 bindInfoCount,
7267 const VkBindBufferMemoryInfoKHX* pBindInfos) {
7268 return ?
7269}
7270
7271@extension("VK_KHX_device_group") // 61
7272cmd VkResult vkBindImageMemory2KHX(
7273 VkDevice device,
7274 u32 bindInfoCount,
7275 const VkBindImageMemoryInfoKHX* pBindInfos) {
7276 return ?
7277}
7278
7279@extension("VK_KHX_device_group") // 61
7280cmd void vkCmdSetDeviceMaskKHX(
7281 VkCommandBuffer commandBuffer,
7282 u32 deviceMask) {
7283}
7284
7285@extension("VK_KHX_device_group") // 61
7286cmd VkResult vkGetDeviceGroupPresentCapabilitiesKHX(
7287 VkDevice device,
7288 VkDeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities) {
7289 return ?
7290}
7291
7292@extension("VK_KHX_device_group") // 61
7293cmd VkResult vkGetDeviceGroupSurfacePresentModesKHX(
7294 VkDevice device,
7295 VkSurfaceKHR surface,
7296 VkDeviceGroupPresentModeFlagsKHX* pModes) {
7297 return ?
7298}
7299
7300@extension("VK_KHX_device_group") // 61
7301cmd VkResult vkAcquireNextImage2KHX(
7302 VkDevice device,
7303 const VkAcquireNextImageInfoKHX* pAcquireInfo,
7304 u32* pImageIndex) {
7305 return ?
7306}
7307
7308@extension("VK_KHX_device_group") // 61
7309cmd void vkCmdDispatchBaseKHX(
7310 VkCommandBuffer commandBuffer,
7311 u32 baseGroupX,
7312 u32 baseGroupY,
7313 u32 baseGroupZ,
7314 u32 groupCountX,
7315 u32 groupCountY,
7316 u32 groupCountZ) {
7317}
7318
7319@extension("VK_KHX_device_group") // 61
7320cmd VkResult vkGetPhysicalDevicePresentRectanglesKHX(
7321 VkPhysicalDevice physicalDevice,
7322 VkSurfaceKHR surface,
7323 u32* pRectCount,
7324 VkRect2D* pRects) {
7325 return ?
7326}
7327
7328@extension("VK_NN_vi_surface") // 63
Jesse Hall08e2f482017-03-06 15:22:17 -08007329cmd VkResult vkCreateViSurfaceNN(
7330 VkInstance instance,
7331 const VkViSurfaceCreateInfoNN* pCreateInfo,
7332 const VkAllocationCallbacks* pAllocator,
7333 VkSurfaceKHR* pSurface) {
7334 return ?
7335}
7336
Jesse Halld0599582017-03-10 18:35:38 -08007337@extension("VK_KHR_maintenance1") // 70
Jesse Hall08e2f482017-03-06 15:22:17 -08007338cmd void vkTrimCommandPoolKHR(
7339 VkDevice device,
7340 VkCommandPool commandPool,
7341 VkCommandPoolTrimFlagsKHR flags) {
7342}
7343
Jesse Halld0599582017-03-10 18:35:38 -08007344@extension("VK_KHX_device_group_creation") // 71
7345cmd VkResult vkEnumeratePhysicalDeviceGroupsKHX(
7346 VkInstance instance,
7347 u32* pPhysicalDeviceGroupCount,
7348 VkPhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties) {
7349 return ?
7350}
7351
7352@extension("VK_KHX_external_memory_capabilities") // 72
7353cmd void vkGetPhysicalDeviceExternalBufferPropertiesKHX(
7354 VkPhysicalDevice physicalDevice,
7355 const VkPhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo,
7356 VkExternalBufferPropertiesKHX* pExternalBufferProperties) {
7357}
7358
Jesse Halld0599582017-03-10 18:35:38 -08007359@extension("VK_KHX_external_memory_win32") // 74
7360cmd VkResult vkGetMemoryWin32HandleKHX(
7361 VkDevice device,
7362 VkDeviceMemory memory,
7363 VkExternalMemoryHandleTypeFlagBitsKHX handleType,
7364 platform.HANDLE* pHandle) {
7365 return ?
7366}
7367
7368@extension("VK_KHX_external_memory_win32") // 74
7369cmd VkResult vkGetMemoryWin32HandlePropertiesKHX(
7370 VkDevice device,
7371 VkExternalMemoryHandleTypeFlagBitsKHX handleType,
7372 platform.HANDLE handle,
7373 VkMemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties) {
7374 return ?
7375}
7376
7377@extension("VK_KHX_external_memory_fd") // 75
7378cmd VkResult vkGetMemoryFdKHX(
7379 VkDevice device,
7380 VkDeviceMemory memory,
7381 VkExternalMemoryHandleTypeFlagBitsKHX handleType,
7382 s32* pFd) {
7383 return ?
7384}
7385
7386@extension("VK_KHX_external_memory_fd") // 75
7387cmd VkResult vkGetMemoryFdPropertiesKHX(
7388 VkDevice device,
7389 VkExternalMemoryHandleTypeFlagBitsKHX handleType,
7390 s32 fd,
7391 VkMemoryFdPropertiesKHX* pMemoryFdProperties) {
7392 return ?
7393}
7394
7395@extension("VK_KHX_external_semaphore_capabilities") // 77
7396cmd void vkGetPhysicalDeviceExternalSemaphorePropertiesKHX(
7397 VkPhysicalDevice physicalDevice,
7398 const VkPhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo,
7399 VkExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties) {
7400}
7401
7402@extension("VK_KHX_external_semaphore_win32") // 79
7403cmd VkResult vkImportSemaphoreWin32HandleKHX(
7404 VkDevice device,
7405 const VkImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo) {
7406 return ?
7407}
7408
7409@extension("VK_KHX_external_semaphore_win32") // 79
7410cmd VkResult vkGetSemaphoreWin32HandleKHX(
7411 VkDevice device,
7412 VkSemaphore semaphore,
7413 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType,
7414 platform.HANDLE* pHandle) {
7415 return ?
7416}
7417
7418@extension("VK_KHX_external_semaphore_fd") // 80
7419cmd VkResult vkImportSemaphoreFdKHX(
7420 VkDevice device,
7421 const VkImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo) {
7422 return ?
7423}
7424
7425@extension("VK_KHX_external_semaphore_fd") // 80
7426cmd VkResult vkGetSemaphoreFdKHX(
7427 VkDevice device,
7428 VkSemaphore semaphore,
7429 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType,
7430 s32* pFd) {
7431 return ?
7432}
7433
7434@extension("VK_KHR_push_descriptor") // 81
7435cmd void vkCmdPushDescriptorSetKHR(
7436 VkCommandBuffer commandBuffer,
7437 VkPipelineBindPoint pipelineBindPoint,
7438 VkPipelineLayout layout,
7439 u32 set,
7440 u32 descriptorWriteCount,
7441 const VkWriteDescriptorSet* pDescriptorWrites) {
7442}
7443
7444@extension("VK_KHR_descriptor_update_template") // 86
7445cmd VkResult vkCreateDescriptorUpdateTemplateKHR(
7446 VkDevice device,
7447 const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo,
7448 const VkAllocationCallbacks* pAllocator,
7449 VkDescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate) {
7450 return ?
7451}
7452
7453@extension("VK_KHR_descriptor_update_template") // 86
7454cmd void vkDestroyDescriptorUpdateTemplateKHR(
7455 VkDevice device,
7456 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
7457 const VkAllocationCallbacks* pAllocator) {
7458}
7459
7460@extension("VK_KHR_descriptor_update_template") // 86
7461cmd void vkUpdateDescriptorSetWithTemplateKHR(
7462 VkDevice device,
7463 VkDescriptorSet descriptorSet,
7464 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
7465 const void* pData) {
7466}
7467
7468@extension("VK_KHR_descriptor_update_template") // 86
7469cmd void vkCmdPushDescriptorSetWithTemplateKHR(
7470 VkCommandBuffer commandBuffer,
7471 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
7472 VkPipelineLayout layout,
7473 u32 set,
7474 const void* pData) {
7475}
7476
7477@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08007478cmd void vkCmdProcessCommandsNVX(
7479 VkCommandBuffer commandBuffer,
7480 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) {
7481}
7482
Jesse Halld0599582017-03-10 18:35:38 -08007483@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08007484cmd void vkCmdReserveSpaceForCommandsNVX(
7485 VkCommandBuffer commandBuffer,
7486 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) {
7487}
7488
Jesse Halld0599582017-03-10 18:35:38 -08007489@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08007490cmd VkResult vkCreateIndirectCommandsLayoutNVX(
7491 VkDevice device,
7492 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
7493 const VkAllocationCallbacks* pAllocator,
7494 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) {
7495 return ?
7496}
7497
Jesse Halld0599582017-03-10 18:35:38 -08007498@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08007499cmd void vkDestroyIndirectCommandsLayoutNVX(
7500 VkDevice device,
7501 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
7502 const VkAllocationCallbacks* pAllocator) {
7503}
7504
Jesse Halld0599582017-03-10 18:35:38 -08007505@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08007506cmd VkResult vkCreateObjectTableNVX(
7507 VkDevice device,
7508 const VkObjectTableCreateInfoNVX* pCreateInfo,
7509 const VkAllocationCallbacks* pAllocator,
7510 VkObjectTableNVX* pObjectTable) {
7511 return ?
7512}
7513
Jesse Halld0599582017-03-10 18:35:38 -08007514@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08007515cmd void vkDestroyObjectTableNVX(
7516 VkDevice device,
7517 VkObjectTableNVX objectTable,
7518 const VkAllocationCallbacks* pAllocator) {
7519}
7520
Jesse Halld0599582017-03-10 18:35:38 -08007521@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08007522cmd VkResult vkRegisterObjectsNVX(
7523 VkDevice device,
7524 VkObjectTableNVX objectTable,
7525 u32 objectCount,
7526 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
7527 const u32* pObjectIndices) {
7528 return ?
7529}
7530
Jesse Halld0599582017-03-10 18:35:38 -08007531@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08007532cmd VkResult vkUnregisterObjectsNVX(
7533 VkDevice device,
7534 VkObjectTableNVX objectTable,
7535 u32 objectCount,
7536 const VkObjectEntryTypeNVX* pObjectEntryTypes,
7537 const u32* pObjectIndices) {
7538 return ?
7539}
7540
Jesse Halld0599582017-03-10 18:35:38 -08007541@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08007542cmd void vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
7543 VkPhysicalDevice physicalDevice,
7544 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
7545 VkDeviceGeneratedCommandsLimitsNVX* pLimits) {
7546}
Jesse Halld27f6aa2015-08-15 17:58:48 -07007547
Jesse Halld0599582017-03-10 18:35:38 -08007548@extension("VK_NV_clip_space_w_scaling") // 88
7549cmd void vkCmdSetViewportWScalingNV(
7550 VkCommandBuffer commandBuffer,
7551 u32 firstViewport,
7552 u32 viewportCount,
7553 const VkViewportWScalingNV* pViewportWScalings) {
7554}
7555
7556@extension("VK_EXT_direct_mode_display") // 89
Jesse Hall08e2f482017-03-06 15:22:17 -08007557cmd VkResult vkReleaseDisplayEXT(
7558 VkPhysicalDevice physicalDevice,
7559 VkDisplayKHR display) {
7560 return ?
7561}
7562
Jesse Halld0599582017-03-10 18:35:38 -08007563@extension("VK_EXT_acquire_xlib_display") // 90
Jesse Hall08e2f482017-03-06 15:22:17 -08007564cmd VkResult vkAcquireXlibDisplayEXT(
7565 VkPhysicalDevice physicalDevice,
7566 platform.Display* dpy,
7567 VkDisplayKHR display) {
7568 return ?
7569}
7570
Jesse Halld0599582017-03-10 18:35:38 -08007571@extension("VK_EXT_acquire_xlib_display") // 90
Jesse Hall08e2f482017-03-06 15:22:17 -08007572cmd VkResult vkGetRandROutputDisplayEXT(
7573 VkPhysicalDevice physicalDevice,
7574 platform.Display* dpy,
7575 platform.RROutput rrOutput,
7576 VkDisplayKHR* pDisplay) {
7577 return ?
7578}
7579
Jesse Halld0599582017-03-10 18:35:38 -08007580@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall08e2f482017-03-06 15:22:17 -08007581cmd VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT(
7582 VkPhysicalDevice physicalDevice,
7583 VkSurfaceKHR surface,
7584 VkSurfaceCapabilities2EXT* pSurfaceCapabilities) {
7585 return ?
7586}
7587
Jesse Halld0599582017-03-10 18:35:38 -08007588@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08007589cmd VkResult vkDisplayPowerControlEXT(
7590 VkDevice device,
7591 VkDisplayKHR display,
7592 const VkDisplayPowerInfoEXT* pDisplayPowerInfo) {
7593 return ?
7594}
7595
Jesse Halld0599582017-03-10 18:35:38 -08007596@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08007597cmd VkResult vkRegisterDeviceEventEXT(
7598 VkDevice device,
7599 const VkDeviceEventInfoEXT* pDeviceEventInfo,
7600 const VkAllocationCallbacks* pAllocator,
7601 VkFence* pFence) {
7602 return ?
7603}
7604
Jesse Halld0599582017-03-10 18:35:38 -08007605@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08007606cmd VkResult vkRegisterDisplayEventEXT(
7607 VkDevice device,
7608 VkDisplayKHR display,
7609 const VkDisplayEventInfoEXT* pDisplayEventInfo,
7610 const VkAllocationCallbacks* pAllocator,
7611 VkFence* pFence) {
7612 return ?
7613}
7614
Jesse Halld0599582017-03-10 18:35:38 -08007615@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08007616cmd VkResult vkGetSwapchainCounterEXT(
7617 VkDevice device,
7618 VkSwapchainKHR swapchain,
7619 VkSurfaceCounterFlagBitsEXT counter,
7620 u64* pCounterValue) {
7621 return ?
7622}
7623
Jesse Halle8ec6a22017-03-10 21:01:57 -08007624@extension("VK_GOOGLE_display_timing") // 93
7625cmd VkResult vkGetRefreshCycleDurationGOOGLE(
7626 VkDevice device,
7627 VkSwapchainKHR swapchain,
7628 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) {
7629 return ?
7630}
7631
7632@extension("VK_GOOGLE_display_timing") // 93
7633cmd VkResult vkGetPastPresentationTimingGOOGLE(
7634 VkDevice device,
7635 VkSwapchainKHR swapchain,
7636 u32* pPresentationTimingCount,
7637 VkPastPresentationTimingGOOGLE* pPresentationTimings) {
7638 return ?
7639}
7640
Jesse Halld0599582017-03-10 18:35:38 -08007641@extension("VK_EXT_discard_rectangles") // 100
7642cmd void vkCmdSetDiscardRectangleEXT(
7643 VkCommandBuffer commandBuffer,
7644 u32 firstDiscardRectangle,
7645 u32 discardRectangleCount,
7646 const VkRect2D* pDiscardRectangles) {
7647}
7648
Jesse Halle8ec6a22017-03-10 21:01:57 -08007649@extension("VK_EXT_hdr_metadata") // 106
7650cmd void vkSetHdrMetadataEXT(
7651 VkDevice device,
7652 u32 swapchainCount,
7653 const VkSwapchainKHR* pSwapchains,
7654 const VkHdrMetadataEXT* pMetadata) {
7655}
7656
Jesse Halle5404242017-04-10 08:09:19 -07007657@extension("VK_KHR_shared_presentable_image") // 112
7658cmd VkResult vkGetSwapchainStatusKHR(
7659 VkDevice device,
7660 VkSwapchainKHR swapchain) {
7661 return ?
7662}
7663
7664//@extension("VK_KHR_get_surface_capabilities2") // 120
7665//cmd VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR(
7666// VkPhysicalDevice physicalDevice,
7667// const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7668// VkSurfaceCapabilities2KHR* pSurfaceCapabilities) {
7669// return ?
7670//}
7671
7672//@extension("VK_KHR_get_surface_capabilities2") // 120
7673//cmd VkResult vkGetPhysicalDeviceSurfaceFormats2KHR(
7674// VkPhysicalDevice physicalDevice,
7675// const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7676// u32* pSurfaceFormatCount,
7677// VkSurfaceFormat2KHR* pSurfaceFormats) {
7678// return ?
7679//}
7680
Jesse Halld0599582017-03-10 18:35:38 -08007681@extension("VK_MVK_ios_surface") // 123
7682cmd VkResult vkCreateIOSSurfaceMVK(
7683 VkInstance instance,
7684 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
7685 const VkAllocationCallbacks* pAllocator,
7686 VkSurfaceKHR* pSurface) {
7687 return ?
7688}
7689
7690@extension("VK_MVK_macos_surface") // 124
7691cmd VkResult vkCreateMacOSSurfaceMVK(
7692 VkInstance instance,
7693 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
7694 const VkAllocationCallbacks* pAllocator,
7695 VkSurfaceKHR* pSurface) {
7696 return ?
7697}
7698
Jesse Halld27f6aa2015-08-15 17:58:48 -07007699////////////////
7700// Validation //
7701////////////////
7702
7703extern void validate(string layerName, bool condition, string message)
7704
7705
7706/////////////////////////////
7707// Internal State Tracking //
7708/////////////////////////////
7709
7710StateObject State
7711
7712@internal class StateObject {
7713 // Dispatchable objects.
7714 map!(VkInstance, ref!InstanceObject) Instances
7715 map!(VkPhysicalDevice, ref!PhysicalDeviceObject) PhysicalDevices
7716 map!(VkDevice, ref!DeviceObject) Devices
7717 map!(VkQueue, ref!QueueObject) Queues
Jesse Hall3fbc8562015-11-29 22:10:52 -08007718 map!(VkCommandBuffer, ref!CommandBufferObject) CommandBuffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07007719
7720 // Non-dispatchable objects.
7721 map!(VkDeviceMemory, ref!DeviceMemoryObject) DeviceMemories
7722 map!(VkBuffer, ref!BufferObject) Buffers
7723 map!(VkBufferView, ref!BufferViewObject) BufferViews
7724 map!(VkImage, ref!ImageObject) Images
7725 map!(VkImageView, ref!ImageViewObject) ImageViews
Jesse Halld27f6aa2015-08-15 17:58:48 -07007726 map!(VkShaderModule, ref!ShaderModuleObject) ShaderModules
Jesse Halld27f6aa2015-08-15 17:58:48 -07007727 map!(VkPipeline, ref!PipelineObject) Pipelines
7728 map!(VkPipelineLayout, ref!PipelineLayoutObject) PipelineLayouts
7729 map!(VkSampler, ref!SamplerObject) Samplers
7730 map!(VkDescriptorSet, ref!DescriptorSetObject) DescriptorSets
7731 map!(VkDescriptorSetLayout, ref!DescriptorSetLayoutObject) DescriptorSetLayouts
7732 map!(VkDescriptorPool, ref!DescriptorPoolObject) DescriptorPools
Jesse Halld27f6aa2015-08-15 17:58:48 -07007733 map!(VkFence, ref!FenceObject) Fences
7734 map!(VkSemaphore, ref!SemaphoreObject) Semaphores
7735 map!(VkEvent, ref!EventObject) Events
7736 map!(VkQueryPool, ref!QueryPoolObject) QueryPools
7737 map!(VkFramebuffer, ref!FramebufferObject) Framebuffers
7738 map!(VkRenderPass, ref!RenderPassObject) RenderPasses
7739 map!(VkPipelineCache, ref!PipelineCacheObject) PipelineCaches
Jesse Hall3fbc8562015-11-29 22:10:52 -08007740 map!(VkCommandPool, ref!CommandPoolObject) CommandPools
Jesse Hall1356b0d2015-11-23 17:24:58 -08007741 map!(VkSurfaceKHR, ref!SurfaceObject) Surfaces
Michael Lentine88594d72015-11-12 12:49:45 -08007742 map!(VkSwapchainKHR, ref!SwapchainObject) Swapchains
Jesse Halld27f6aa2015-08-15 17:58:48 -07007743}
7744
7745@internal class InstanceObject {
7746}
7747
7748@internal class PhysicalDeviceObject {
7749 VkInstance instance
7750}
7751
7752@internal class DeviceObject {
7753 VkPhysicalDevice physicalDevice
7754}
7755
7756@internal class QueueObject {
7757 VkDevice device
7758 VkQueueFlags flags
7759}
7760
Jesse Hall3fbc8562015-11-29 22:10:52 -08007761@internal class CommandBufferObject {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007762 VkDevice device
7763 map!(u64, VkDeviceMemory) boundObjects
7764 VkQueueFlags queueFlags
7765}
7766
7767@internal class DeviceMemoryObject {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007768 VkDevice device
7769 VkDeviceSize allocationSize
7770 map!(u64, VkDeviceSize) boundObjects
7771 map!(VkCommandBuffer, VkCommandBuffer) boundCommandBuffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07007772}
7773
7774@internal class BufferObject {
7775 VkDevice device
Jesse Hall3fbc8562015-11-29 22:10:52 -08007776 VkDeviceMemory memory
7777 VkDeviceSize memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07007778}
7779
7780@internal class BufferViewObject {
7781 VkDevice device
7782 VkBuffer buffer
7783}
7784
7785@internal class ImageObject {
7786 VkDevice device
Jesse Hall3fbc8562015-11-29 22:10:52 -08007787 VkDeviceMemory memory
7788 VkDeviceSize memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07007789}
7790
7791@internal class ImageViewObject {
7792 VkDevice device
7793 VkImage image
7794}
7795
Jesse Halld27f6aa2015-08-15 17:58:48 -07007796@internal class ShaderObject {
7797 VkDevice device
7798}
7799
7800@internal class ShaderModuleObject {
7801 VkDevice device
7802}
7803
7804@internal class PipelineObject {
7805 VkDevice device
7806}
7807
7808@internal class PipelineLayoutObject {
7809 VkDevice device
7810}
7811
7812@internal class SamplerObject {
7813 VkDevice device
7814}
7815
7816@internal class DescriptorSetObject {
7817 VkDevice device
7818}
7819
7820@internal class DescriptorSetLayoutObject {
7821 VkDevice device
7822}
7823
7824@internal class DescriptorPoolObject {
7825 VkDevice device
7826}
7827
Jesse Halld27f6aa2015-08-15 17:58:48 -07007828@internal class FenceObject {
7829 VkDevice device
7830 bool signaled
7831}
7832
7833@internal class SemaphoreObject {
7834 VkDevice device
7835}
7836
7837@internal class EventObject {
7838 VkDevice device
7839}
7840
7841@internal class QueryPoolObject {
7842 VkDevice device
7843}
7844
7845@internal class FramebufferObject {
7846 VkDevice device
7847}
7848
7849@internal class RenderPassObject {
7850 VkDevice device
7851}
7852
7853@internal class PipelineCacheObject {
7854 VkDevice device
7855}
7856
Jesse Hall3fbc8562015-11-29 22:10:52 -08007857@internal class CommandPoolObject {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007858 VkDevice device
7859}
7860
Jesse Hall1356b0d2015-11-23 17:24:58 -08007861@internal class SurfaceObject {
7862 VkInstance instance
7863}
7864
Michael Lentine88594d72015-11-12 12:49:45 -08007865@internal class SwapchainObject {
7866 VkDevice device
7867}
7868
Jesse Halld27f6aa2015-08-15 17:58:48 -07007869macro ref!InstanceObject GetInstance(VkInstance instance) {
7870 assert(instance in State.Instances)
7871 return State.Instances[instance]
7872}
7873
7874macro ref!PhysicalDeviceObject GetPhysicalDevice(VkPhysicalDevice physicalDevice) {
7875 assert(physicalDevice in State.PhysicalDevices)
7876 return State.PhysicalDevices[physicalDevice]
7877}
7878
7879macro ref!DeviceObject GetDevice(VkDevice device) {
7880 assert(device in State.Devices)
7881 return State.Devices[device]
7882}
7883
7884macro ref!QueueObject GetQueue(VkQueue queue) {
7885 assert(queue in State.Queues)
7886 return State.Queues[queue]
7887}
7888
Jesse Hall3fbc8562015-11-29 22:10:52 -08007889macro ref!CommandBufferObject GetCommandBuffer(VkCommandBuffer commandBuffer) {
7890 assert(commandBuffer in State.CommandBuffers)
7891 return State.CommandBuffers[commandBuffer]
Jesse Halld27f6aa2015-08-15 17:58:48 -07007892}
7893
Jesse Hall3fbc8562015-11-29 22:10:52 -08007894macro ref!DeviceMemoryObject GetDeviceMemory(VkDeviceMemory memory) {
7895 assert(memory in State.DeviceMemories)
7896 return State.DeviceMemories[memory]
Jesse Halld27f6aa2015-08-15 17:58:48 -07007897}
7898
7899macro ref!BufferObject GetBuffer(VkBuffer buffer) {
7900 assert(buffer in State.Buffers)
7901 return State.Buffers[buffer]
7902}
7903
7904macro ref!BufferViewObject GetBufferView(VkBufferView bufferView) {
7905 assert(bufferView in State.BufferViews)
7906 return State.BufferViews[bufferView]
7907}
7908
7909macro ref!ImageObject GetImage(VkImage image) {
7910 assert(image in State.Images)
7911 return State.Images[image]
7912}
7913
7914macro ref!ImageViewObject GetImageView(VkImageView imageView) {
7915 assert(imageView in State.ImageViews)
7916 return State.ImageViews[imageView]
7917}
7918
Jesse Halld27f6aa2015-08-15 17:58:48 -07007919macro ref!ShaderModuleObject GetShaderModule(VkShaderModule shaderModule) {
7920 assert(shaderModule in State.ShaderModules)
7921 return State.ShaderModules[shaderModule]
7922}
7923
7924macro ref!PipelineObject GetPipeline(VkPipeline pipeline) {
7925 assert(pipeline in State.Pipelines)
7926 return State.Pipelines[pipeline]
7927}
7928
7929macro ref!PipelineLayoutObject GetPipelineLayout(VkPipelineLayout pipelineLayout) {
7930 assert(pipelineLayout in State.PipelineLayouts)
7931 return State.PipelineLayouts[pipelineLayout]
7932}
7933
7934macro ref!SamplerObject GetSampler(VkSampler sampler) {
7935 assert(sampler in State.Samplers)
7936 return State.Samplers[sampler]
7937}
7938
7939macro ref!DescriptorSetObject GetDescriptorSet(VkDescriptorSet descriptorSet) {
7940 assert(descriptorSet in State.DescriptorSets)
7941 return State.DescriptorSets[descriptorSet]
7942}
7943
7944macro ref!DescriptorSetLayoutObject GetDescriptorSetLayout(VkDescriptorSetLayout descriptorSetLayout) {
7945 assert(descriptorSetLayout in State.DescriptorSetLayouts)
7946 return State.DescriptorSetLayouts[descriptorSetLayout]
7947}
7948
7949macro ref!DescriptorPoolObject GetDescriptorPool(VkDescriptorPool descriptorPool) {
7950 assert(descriptorPool in State.DescriptorPools)
7951 return State.DescriptorPools[descriptorPool]
7952}
7953
Jesse Halld27f6aa2015-08-15 17:58:48 -07007954macro ref!FenceObject GetFence(VkFence fence) {
7955 assert(fence in State.Fences)
7956 return State.Fences[fence]
7957}
7958
7959macro ref!SemaphoreObject GetSemaphore(VkSemaphore semaphore) {
7960 assert(semaphore in State.Semaphores)
7961 return State.Semaphores[semaphore]
7962}
7963
7964macro ref!EventObject GetEvent(VkEvent event) {
7965 assert(event in State.Events)
7966 return State.Events[event]
7967}
7968
7969macro ref!QueryPoolObject GetQueryPool(VkQueryPool queryPool) {
7970 assert(queryPool in State.QueryPools)
7971 return State.QueryPools[queryPool]
7972}
7973
7974macro ref!FramebufferObject GetFramebuffer(VkFramebuffer framebuffer) {
7975 assert(framebuffer in State.Framebuffers)
7976 return State.Framebuffers[framebuffer]
7977}
7978
7979macro ref!RenderPassObject GetRenderPass(VkRenderPass renderPass) {
7980 assert(renderPass in State.RenderPasses)
7981 return State.RenderPasses[renderPass]
7982}
7983
7984macro ref!PipelineCacheObject GetPipelineCache(VkPipelineCache pipelineCache) {
7985 assert(pipelineCache in State.PipelineCaches)
7986 return State.PipelineCaches[pipelineCache]
7987}
7988
Jesse Hall3fbc8562015-11-29 22:10:52 -08007989macro ref!CommandPoolObject GetCommandPool(VkCommandPool commandPool) {
7990 assert(commandPool in State.CommandPools)
7991 return State.CommandPools[commandPool]
Jesse Hallf09c6b12015-08-15 19:54:28 -07007992}
Michael Lentine88594d72015-11-12 12:49:45 -08007993
Jesse Hall1356b0d2015-11-23 17:24:58 -08007994macro ref!SurfaceObject GetSurface(VkSurfaceKHR surface) {
7995 assert(surface in State.Surfaces)
7996 return State.Surfaces[surface]
7997}
7998
Michael Lentine88594d72015-11-12 12:49:45 -08007999macro ref!SwapchainObject GetSwapchain(VkSwapchainKHR swapchain) {
8000 assert(swapchain in State.Swapchains)
8001 return State.Swapchains[swapchain]
8002}
Jesse Halld8bade02015-11-24 10:24:18 -08008003
8004macro VkQueueFlags AddQueueFlag(VkQueueFlags flags, VkQueueFlagBits bit) {
8005 return as!VkQueueFlags(as!u32(flags) | as!u32(bit))
8006}