blob: f7706daa48ea17a870b428448b5e1aa3db8261cf [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 Halle5404242017-04-10 08:09:19 -070031define VERSION_PATCH 49
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 Hall543a7ff2016-01-08 16:38:30 -080088@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_SPEC_VERSION 5
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 Hall2c677d52017-03-20 13:09:19 -070096@extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_SPEC_VERSION 6
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 Halld0599582017-03-10 18:35:38 -0800155// 54
156@extension("VK_KHX_multiview") define VK_KHX_MULTIVIEW_SPEC_VERSION 1
157@extension("VK_KHX_multiview") define VK_KHX_MULTIVIEW_EXTENSION_NAME "VK_KHX_multiview"
158
Jesse Halleb02c472017-02-24 15:13:45 -0800159// 56
160@extension("VK_NV_external_memory_capabilities") define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
161@extension("VK_NV_external_memory_capabilities") define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities"
162
163// 57
164@extension("VK_NV_external_memory") define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1
165@extension("VK_NV_external_memory") define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory"
166
167// 58
168@extension("VK_NV_external_memory_win32") define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
169@extension("VK_NV_external_memory_win32") define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
170
171// 59
172@extension("VK_NV_win32_keyed_mutex") define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 1
173@extension("VK_NV_win32_keyed_mutex") define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
174
Jesse Hall08e2f482017-03-06 15:22:17 -0800175// 60
176@extension("VK_KHR_get_physical_device_properties2") define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 1
177@extension("VK_KHR_get_physical_device_properties2") define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2"
178
Jesse Halld0599582017-03-10 18:35:38 -0800179// 61
180@extension("VK_KHX_device_group") define VK_KHX_DEVICE_GROUP_SPEC_VERSION 1
181@extension("VK_KHX_device_group") define VK_KHX_DEVICE_GROUP_EXTENSION_NAME "VK_KHX_device_group"
182
Jesse Halleb02c472017-02-24 15:13:45 -0800183// 62
184@extension("VK_EXT_validation_flags") define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 1
185@extension("VK_EXT_validation_flags") define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags"
186
Jesse Hall08e2f482017-03-06 15:22:17 -0800187// 63
188@extension("VK_NN_vi_surface") define VK_NN_VI_SURFACE_SPEC_VERSION 1
189@extension("VK_NN_vi_surface") define VK_NN_VI_SURFACE_EXTENSION_NAME "VK_NN_vi_surface"
190
191// 64
192@extension("VK_KHR_shader_draw_parameters") define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1
193@extension("VK_KHR_shader_draw_parameters") define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters"
194
195// 65
196@extension("VK_EXT_shader_subgroup_ballot") define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1
197@extension("VK_EXT_shader_subgroup_ballot") define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot"
198
199// 66
200@extension("VK_EXT_shader_subgroup_vote") define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1
201@extension("VK_EXT_shader_subgroup_vote") define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote"
202
203// 70
204@extension("VK_KHR_maintenance1") define VK_KHR_MAINTENANCE1_SPEC_VERSION 1
205@extension("VK_KHR_maintenance1") define VK_KHR_MAINTENANCE1_EXTENSION_NAME "VK_KHR_maintenance1"
206
Jesse Halld0599582017-03-10 18:35:38 -0800207// 71
208@extension("VK_KHX_device_group_creation") define VK_KHX_DEVICE_GROUP_CREATION_SPEC_VERSION 1
209@extension("VK_KHX_device_group_creation") define VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHX_device_group_creation"
210
211// 72
212@extension("VK_KHX_external_memory_capabilities") define VK_KHX_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
213@extension("VK_KHX_external_memory_capabilities") define VK_KHX_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHX_external_memory_capabilities"
214
215// 73
216@extension("VK_KHX_external_memory") define VK_KHX_EXTERNAL_MEMORY_SPEC_VERSION 1
217@extension("VK_KHX_external_memory") define VK_KHX_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHX_external_memory"
218
219// 74
220@extension("VK_KHX_external_memory_win32") define VK_KHX_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
221@extension("VK_KHX_external_memory_win32") define VK_KHX_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHX_external_memory_win32"
222
223// 75
224@extension("VK_KHX_external_memory_fd") define VK_KHX_EXTERNAL_MEMORY_FD_SPEC_VERSION 1
225@extension("VK_KHX_external_memory_fd") define VK_KHX_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHX_external_memory_fd"
226
227// 76
228@extension("VK_KHX_win32_keyed_mutex") define VK_KHX_WIN32_KEYED_MUTEX_SPEC_VERSION 1
229@extension("VK_KHX_win32_keyed_mutex") define VK_KHX_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHX_win32_keyed_mutex"
230
231// 77
232@extension("VK_KHX_external_semaphore_capabilities") define VK_KHX_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1
233@extension("VK_KHX_external_semaphore_capabilities") define VK_KHX_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHX_external_semaphore_capabilities"
234
235// 78
236@extension("VK_KHX_external_semaphore") define VK_KHX_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
237@extension("VK_KHX_external_semaphore") define VK_KHX_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHX_external_semaphore"
238
239// 79
240@extension("VK_KHX_external_semaphore_win32") define VK_KHX_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1
241@extension("VK_KHX_external_semaphore_win32") define VK_KHX_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHX_external_semaphore_win32"
242
243// 80
244@extension("VK_KHX_external_semaphore_fd") define VK_KHX_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1
245@extension("VK_KHX_external_semaphore_fd") define VK_KHX_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHX_external_semaphore_fd"
246
247// 81
248@extension("VK_KHR_push_descriptor") define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 1
249@extension("VK_KHR_push_descriptor") define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor"
250
Jesse Hall2c677d52017-03-20 13:09:19 -0700251// 85
252@extension("VK_KHR_incremental_present") define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1
253@extension("VK_KHR_incremental_present") define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present"
254
Jesse Halld0599582017-03-10 18:35:38 -0800255// 86
256@extension("VK_KHR_descriptor_update_template") define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1
257@extension("VK_KHR_descriptor_update_template") define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template"
258
Jesse Halleb02c472017-02-24 15:13:45 -0800259// 87
260@extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 1
261@extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands"
262
Jesse Halld0599582017-03-10 18:35:38 -0800263// 88
264@extension("VK_NV_clip_space_w_scaling") define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1
265@extension("VK_NV_clip_space_w_scaling") define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling"
266
Jesse Hall08e2f482017-03-06 15:22:17 -0800267// 89
268@extension("VK_EXT_direct_mode_display") define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1
269@extension("VK_EXT_direct_mode_display") define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display"
270
271// 90
272@extension("VK_EXT_acquire_xlib_display") define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1
273@extension("VK_EXT_acquire_xlib_display") define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display"
274
275// 91
276@extension("VK_EXT_display_surface_counter") define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1
277@extension("VK_EXT_display_surface_counter") define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter"
278
279// 92
280@extension("VK_EXT_display_control") define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1
281@extension("VK_EXT_display_control") define VK_EXT_DISPLAY_CONTROL_COUNTER_EXTENSION_NAME "VK_EXT_display_control"
282
Jesse Halle8ec6a22017-03-10 21:01:57 -0800283// 93
284@extension("VK_GOOGLE_display_timing") define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1
285@extension("VK_GOOGLE_display_timing") define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing"
286
Jesse Halld0599582017-03-10 18:35:38 -0800287// 95
288@extension("VK_NV_sample_mask_override_coverage") define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1
289@extension("VK_NV_sample_mask_override_coverage") define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage"
290
291// 96
292@extension("VK_NV_geometry_shader_passthrough") define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1
293@extension("VK_NV_geometry_shader_passthrough") define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough"
294
295// 97
296@extension("VK_NV_viewport_array2") define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION 1
297@extension("VK_NV_viewport_array2") define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME "VK_NV_viewport_array2"
298
299// 98
300@extension("VK_NVX_multiview_per_view_attributes") define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1
301@extension("VK_NVX_multiview_per_view_attributes") define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes"
302
303// 99
304@extension("VK_NV_viewport_swizzle") define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1
305@extension("VK_NV_viewport_swizzle") define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle"
306
307// 100
308@extension("VK_EXT_discard_rectangles") define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1
309@extension("VK_EXT_discard_rectangles") define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
310
Jesse Hall2c677d52017-03-20 13:09:19 -0700311// 105
312@extension("VK_EXT_swapchain_colorspace") define VK_EXT_SWAPCHAIN_COLORSPACE_SPEC_VERSION 2
313@extension("VK_EXT_swapchain_colorspace") define VK_EXT_SWAPCHAIN_COLORSPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace"
314
Jesse Halle8ec6a22017-03-10 21:01:57 -0800315// 106
316@extension("VK_EXT_hdr_metadata") define VK_EXT_HDR_METADATA_SPEC_VERSION 1
317@extension("VK_EXT_hdr_metadata") define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata"
318
Jesse Halle5404242017-04-10 08:09:19 -0700319// 112
320@extension("VK_KHR_shared_presentable_image") define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1
321@extension("VK_KHR_shared_presentable_image") define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image"
322
323// 120
324@extension("VK_KHR_get_surface_capabilities2") define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1
325@extension("VK_KHR_get_surface_capabilities2") define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2"
326
Jesse Halld0599582017-03-10 18:35:38 -0800327// 123
328@extension("VK_MVK_ios_surface") define VK_MVK_IOS_SURFACE_SPEC_VERSION 1
329@extension("VK_MVK_ios_surface") define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface"
330
331// 124
332@extension("VK_MVK_macos_surface") define VK_MVK_MACOS_SURFACE_SPEC_VERSION 1
333@extension("VK_MVK_macos_surface") define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface"
334
Jesse Halld27f6aa2015-08-15 17:58:48 -0700335/////////////
336// Types //
337/////////////
338
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700339type u32 VkBool32
340type u32 VkFlags
341type u64 VkDeviceSize
342type u32 VkSampleMask
343
Jesse Halld27f6aa2015-08-15 17:58:48 -0700344/// Dispatchable handle types.
345@dispatchHandle type u64 VkInstance
346@dispatchHandle type u64 VkPhysicalDevice
347@dispatchHandle type u64 VkDevice
348@dispatchHandle type u64 VkQueue
Jesse Hall3fbc8562015-11-29 22:10:52 -0800349@dispatchHandle type u64 VkCommandBuffer
Jesse Halld27f6aa2015-08-15 17:58:48 -0700350
351/// Non dispatchable handle types.
352@nonDispatchHandle type u64 VkDeviceMemory
Jesse Hall3fbc8562015-11-29 22:10:52 -0800353@nonDispatchHandle type u64 VkCommandPool
Jesse Halld27f6aa2015-08-15 17:58:48 -0700354@nonDispatchHandle type u64 VkBuffer
355@nonDispatchHandle type u64 VkBufferView
356@nonDispatchHandle type u64 VkImage
357@nonDispatchHandle type u64 VkImageView
Jesse Halld27f6aa2015-08-15 17:58:48 -0700358@nonDispatchHandle type u64 VkShaderModule
Jesse Halld27f6aa2015-08-15 17:58:48 -0700359@nonDispatchHandle type u64 VkPipeline
360@nonDispatchHandle type u64 VkPipelineLayout
361@nonDispatchHandle type u64 VkSampler
362@nonDispatchHandle type u64 VkDescriptorSet
363@nonDispatchHandle type u64 VkDescriptorSetLayout
364@nonDispatchHandle type u64 VkDescriptorPool
Jesse Halld27f6aa2015-08-15 17:58:48 -0700365@nonDispatchHandle type u64 VkFence
366@nonDispatchHandle type u64 VkSemaphore
367@nonDispatchHandle type u64 VkEvent
368@nonDispatchHandle type u64 VkQueryPool
369@nonDispatchHandle type u64 VkFramebuffer
370@nonDispatchHandle type u64 VkRenderPass
371@nonDispatchHandle type u64 VkPipelineCache
Jesse Hall1356b0d2015-11-23 17:24:58 -0800372
Jesse Halld0599582017-03-10 18:35:38 -0800373// 1
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800374@extension("VK_KHR_surface") @nonDispatchHandle type u64 VkSurfaceKHR
Jesse Hall1356b0d2015-11-23 17:24:58 -0800375
Jesse Halld0599582017-03-10 18:35:38 -0800376// 2
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800377@extension("VK_KHR_swapchain") @nonDispatchHandle type u64 VkSwapchainKHR
Jesse Hall1356b0d2015-11-23 17:24:58 -0800378
Jesse Halld0599582017-03-10 18:35:38 -0800379// 3
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800380@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayKHR
381@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayModeKHR
Jesse Halld27f6aa2015-08-15 17:58:48 -0700382
Jesse Halld0599582017-03-10 18:35:38 -0800383// 12
Jesse Hall715b86a2016-01-16 16:34:29 -0800384@extension("VK_EXT_debug_report") @nonDispatchHandle type u64 VkDebugReportCallbackEXT
385
Jesse Halld0599582017-03-10 18:35:38 -0800386// 86
387@extension("VK_KHR_descriptor_update_template") @nonDispatchHandle type u64 VkDescriptorUpdateTemplateKHR
388
389// 87
Jesse Halleb02c472017-02-24 15:13:45 -0800390@extension("VK_NVX_device_generated_commands") @nonDispatchHandle type u64 VkObjectTableNVX
391@extension("VK_NVX_device_generated_commands") @nonDispatchHandle type u64 VkIndirectCommandsLayoutNVX
392
Jesse Halld27f6aa2015-08-15 17:58:48 -0700393
394/////////////
395// Enums //
396/////////////
397
398enum VkImageLayout {
399 VK_IMAGE_LAYOUT_UNDEFINED = 0x00000000, /// Implicit layout an image is when its contents are undefined due to various reasons (e.g. right after creation)
400 VK_IMAGE_LAYOUT_GENERAL = 0x00000001, /// General layout when image can be used for any kind of access
401 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 0x00000002, /// Optimal layout when image is only used for color attachment read/write
402 VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 0x00000003, /// Optimal layout when image is only used for depth/stencil attachment read/write
403 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 0x00000004, /// Optimal layout when image is used for read only depth/stencil attachment and shader access
404 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 -0800405 VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 0x00000006, /// Optimal layout when image is used only as source of transfer operations
406 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 -0700407 VK_IMAGE_LAYOUT_PREINITIALIZED = 0x00000008, /// Initial layout used when the data is populated by the CPU
Jesse Hall1356b0d2015-11-23 17:24:58 -0800408
Jesse Halld0599582017-03-10 18:35:38 -0800409 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -0800410 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
Jesse Halle5404242017-04-10 08:09:19 -0700411
412 //@extension("VK_KHR_shared_presentable_image") // 112
413 VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700414}
415
416enum VkAttachmentLoadOp {
417 VK_ATTACHMENT_LOAD_OP_LOAD = 0x00000000,
418 VK_ATTACHMENT_LOAD_OP_CLEAR = 0x00000001,
419 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 0x00000002,
420}
421
422enum VkAttachmentStoreOp {
423 VK_ATTACHMENT_STORE_OP_STORE = 0x00000000,
424 VK_ATTACHMENT_STORE_OP_DONT_CARE = 0x00000001,
425}
426
427enum VkImageType {
428 VK_IMAGE_TYPE_1D = 0x00000000,
429 VK_IMAGE_TYPE_2D = 0x00000001,
430 VK_IMAGE_TYPE_3D = 0x00000002,
431}
432
433enum VkImageTiling {
Jesse Hallc7467b72015-11-29 21:05:26 -0800434 VK_IMAGE_TILING_OPTIMAL = 0x00000000,
435 VK_IMAGE_TILING_LINEAR = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700436}
437
438enum VkImageViewType {
439 VK_IMAGE_VIEW_TYPE_1D = 0x00000000,
440 VK_IMAGE_VIEW_TYPE_2D = 0x00000001,
441 VK_IMAGE_VIEW_TYPE_3D = 0x00000002,
442 VK_IMAGE_VIEW_TYPE_CUBE = 0x00000003,
443 VK_IMAGE_VIEW_TYPE_1D_ARRAY = 0x00000004,
444 VK_IMAGE_VIEW_TYPE_2D_ARRAY = 0x00000005,
445 VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 0x00000006,
446}
447
Jesse Hall3fbc8562015-11-29 22:10:52 -0800448enum VkCommandBufferLevel {
449 VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0x00000000,
450 VK_COMMAND_BUFFER_LEVEL_SECONDARY = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700451}
452
Jesse Hall65ab5522015-11-30 00:07:16 -0800453enum VkComponentSwizzle {
454 VK_COMPONENT_SWIZZLE_IDENTITY = 0x00000000,
455 VK_COMPONENT_SWIZZLE_ZERO = 0x00000001,
456 VK_COMPONENT_SWIZZLE_ONE = 0x00000002,
457 VK_COMPONENT_SWIZZLE_R = 0x00000003,
458 VK_COMPONENT_SWIZZLE_G = 0x00000004,
459 VK_COMPONENT_SWIZZLE_B = 0x00000005,
460 VK_COMPONENT_SWIZZLE_A = 0x00000006,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700461}
462
463enum VkDescriptorType {
464 VK_DESCRIPTOR_TYPE_SAMPLER = 0x00000000,
465 VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 0x00000001,
466 VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 0x00000002,
467 VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 0x00000003,
468 VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 0x00000004,
469 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 0x00000005,
470 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 0x00000006,
471 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 0x00000007,
472 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 0x00000008,
473 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 0x00000009,
474 VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 0x0000000a,
475}
476
Jesse Halld27f6aa2015-08-15 17:58:48 -0700477enum VkQueryType {
478 VK_QUERY_TYPE_OCCLUSION = 0x00000000,
479 VK_QUERY_TYPE_PIPELINE_STATISTICS = 0x00000001, /// Optional
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800480 VK_QUERY_TYPE_TIMESTAMP = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700481}
482
Jesse Halld27f6aa2015-08-15 17:58:48 -0700483enum VkBorderColor {
484 VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0x00000000,
485 VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 0x00000001,
486 VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 0x00000002,
487 VK_BORDER_COLOR_INT_OPAQUE_BLACK = 0x00000003,
488 VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 0x00000004,
489 VK_BORDER_COLOR_INT_OPAQUE_WHITE = 0x00000005,
490}
491
492enum VkPipelineBindPoint {
Jesse Hallc7467b72015-11-29 21:05:26 -0800493 VK_PIPELINE_BIND_POINT_GRAPHICS = 0x00000000,
494 VK_PIPELINE_BIND_POINT_COMPUTE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700495}
496
497enum VkPrimitiveTopology {
498 VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0x00000000,
499 VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 0x00000001,
500 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 0x00000002,
501 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 0x00000003,
502 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 0x00000004,
503 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800504 VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 0x00000006,
505 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 0x00000007,
506 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 0x00000008,
507 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 0x00000009,
Jesse Hall091ed9e2015-11-30 00:55:29 -0800508 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 0x0000000a,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700509}
510
511enum VkSharingMode {
512 VK_SHARING_MODE_EXCLUSIVE = 0x00000000,
513 VK_SHARING_MODE_CONCURRENT = 0x00000001,
514}
515
516enum VkIndexType {
517 VK_INDEX_TYPE_UINT16 = 0x00000000,
518 VK_INDEX_TYPE_UINT32 = 0x00000001,
519}
520
Jesse Hall23ff73f2015-11-29 14:36:39 -0800521enum VkFilter {
522 VK_FILTER_NEAREST = 0x00000000,
523 VK_FILTER_LINEAR = 0x00000001,
Jesse Hall26763382016-05-20 07:13:52 -0700524
Jesse Halld0599582017-03-10 18:35:38 -0800525 //@extension("VK_IMG_filter_cubic") // 16
Jesse Hall26763382016-05-20 07:13:52 -0700526 VK_FILTER_CUBIC_IMG = 1000015000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700527}
528
Jesse Hall23ff73f2015-11-29 14:36:39 -0800529enum VkSamplerMipmapMode {
Jesse Hall23ff73f2015-11-29 14:36:39 -0800530 VK_SAMPLER_MIPMAP_MODE_NEAREST = 0x00000001, /// Choose nearest mip level
531 VK_SAMPLER_MIPMAP_MODE_LINEAR = 0x00000002, /// Linear filter between mip levels
Jesse Halld27f6aa2015-08-15 17:58:48 -0700532}
533
Jesse Hall23ff73f2015-11-29 14:36:39 -0800534enum VkSamplerAddressMode {
Jesse Hallc7467b72015-11-29 21:05:26 -0800535 VK_SAMPLER_ADDRESS_MODE_REPEAT = 0x00000000,
536 VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 0x00000001,
537 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 0x00000002,
538 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 0x00000003,
539 VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700540}
541
542enum VkCompareOp {
543 VK_COMPARE_OP_NEVER = 0x00000000,
544 VK_COMPARE_OP_LESS = 0x00000001,
545 VK_COMPARE_OP_EQUAL = 0x00000002,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800546 VK_COMPARE_OP_LESS_OR_EQUAL = 0x00000003,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700547 VK_COMPARE_OP_GREATER = 0x00000004,
548 VK_COMPARE_OP_NOT_EQUAL = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800549 VK_COMPARE_OP_GREATER_OR_EQUAL = 0x00000006,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700550 VK_COMPARE_OP_ALWAYS = 0x00000007,
551}
552
Jesse Hall65ab5522015-11-30 00:07:16 -0800553enum VkPolygonMode {
554 VK_POLYGON_MODE_FILL = 0x00000000,
555 VK_POLYGON_MODE_LINE = 0x00000001,
556 VK_POLYGON_MODE_POINT = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700557}
558
559enum VkFrontFace {
Jesse Hall3fbc8562015-11-29 22:10:52 -0800560 VK_FRONT_FACE_COUNTER_CLOCKWISE = 0x00000000,
561 VK_FRONT_FACE_CLOCKWISE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700562}
563
Jesse Hall65ab5522015-11-30 00:07:16 -0800564enum VkBlendFactor {
565 VK_BLEND_FACTOR_ZERO = 0x00000000,
566 VK_BLEND_FACTOR_ONE = 0x00000001,
567 VK_BLEND_FACTOR_SRC_COLOR = 0x00000002,
568 VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 0x00000003,
569 VK_BLEND_FACTOR_DST_COLOR = 0x00000004,
570 VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 0x00000005,
571 VK_BLEND_FACTOR_SRC_ALPHA = 0x00000006,
572 VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 0x00000007,
573 VK_BLEND_FACTOR_DST_ALPHA = 0x00000008,
574 VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 0x00000009,
575 VK_BLEND_FACTOR_CONSTANT_COLOR = 0x0000000a,
576 VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 0x0000000b,
577 VK_BLEND_FACTOR_CONSTANT_ALPHA = 0x0000000c,
578 VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 0x0000000d,
579 VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 0x0000000e,
580 VK_BLEND_FACTOR_SRC1_COLOR = 0x0000000f,
581 VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 0x00000010,
582 VK_BLEND_FACTOR_SRC1_ALPHA = 0x00000011,
583 VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 0x00000012,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700584}
585
586enum VkBlendOp {
587 VK_BLEND_OP_ADD = 0x00000000,
588 VK_BLEND_OP_SUBTRACT = 0x00000001,
589 VK_BLEND_OP_REVERSE_SUBTRACT = 0x00000002,
590 VK_BLEND_OP_MIN = 0x00000003,
591 VK_BLEND_OP_MAX = 0x00000004,
592}
593
594enum VkStencilOp {
595 VK_STENCIL_OP_KEEP = 0x00000000,
596 VK_STENCIL_OP_ZERO = 0x00000001,
597 VK_STENCIL_OP_REPLACE = 0x00000002,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800598 VK_STENCIL_OP_INCREMENT_AND_CLAMP = 0x00000003,
599 VK_STENCIL_OP_DECREMENT_AND_CLAMP = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700600 VK_STENCIL_OP_INVERT = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800601 VK_STENCIL_OP_INCREMENT_AND_WRAP = 0x00000006,
602 VK_STENCIL_OP_DECREMENT_AND_WRAP = 0x00000007,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700603}
604
605enum VkLogicOp {
606 VK_LOGIC_OP_CLEAR = 0x00000000,
607 VK_LOGIC_OP_AND = 0x00000001,
608 VK_LOGIC_OP_AND_REVERSE = 0x00000002,
609 VK_LOGIC_OP_COPY = 0x00000003,
610 VK_LOGIC_OP_AND_INVERTED = 0x00000004,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800611 VK_LOGIC_OP_NO_OP = 0x00000005,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700612 VK_LOGIC_OP_XOR = 0x00000006,
613 VK_LOGIC_OP_OR = 0x00000007,
614 VK_LOGIC_OP_NOR = 0x00000008,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800615 VK_LOGIC_OP_EQUIVALENT = 0x00000009,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700616 VK_LOGIC_OP_INVERT = 0x0000000a,
617 VK_LOGIC_OP_OR_REVERSE = 0x0000000b,
618 VK_LOGIC_OP_COPY_INVERTED = 0x0000000c,
619 VK_LOGIC_OP_OR_INVERTED = 0x0000000d,
620 VK_LOGIC_OP_NAND = 0x0000000e,
621 VK_LOGIC_OP_SET = 0x0000000f,
622}
623
Jesse Hall3fbc8562015-11-29 22:10:52 -0800624enum VkSystemAllocationScope {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800625 VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0x00000000,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800626 VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 0x00000001,
627 VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 0x00000002,
628 VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 0x00000003,
629 VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 0x00000004,
Jesse Hall03b6fe12015-11-24 12:44:21 -0800630}
631
Jesse Hall3fbc8562015-11-29 22:10:52 -0800632enum VkInternalAllocationType {
633 VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0x00000000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700634}
635
636enum VkPhysicalDeviceType {
637 VK_PHYSICAL_DEVICE_TYPE_OTHER = 0x00000000,
638 VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 0x00000001,
639 VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 0x00000002,
640 VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 0x00000003,
641 VK_PHYSICAL_DEVICE_TYPE_CPU = 0x00000004,
642}
643
Jesse Hall65ab5522015-11-30 00:07:16 -0800644enum VkVertexInputRate {
645 VK_VERTEX_INPUT_RATE_VERTEX = 0x00000000,
646 VK_VERTEX_INPUT_RATE_INSTANCE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700647}
648
649/// Vulkan format definitions
650enum VkFormat {
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800651 VK_FORMAT_UNDEFINED = 0,
652 VK_FORMAT_R4G4_UNORM_PACK8 = 1,
653 VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
654 VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
655 VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
656 VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
657 VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
658 VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
659 VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
660 VK_FORMAT_R8_UNORM = 9,
661 VK_FORMAT_R8_SNORM = 10,
662 VK_FORMAT_R8_USCALED = 11,
663 VK_FORMAT_R8_SSCALED = 12,
664 VK_FORMAT_R8_UINT = 13,
665 VK_FORMAT_R8_SINT = 14,
666 VK_FORMAT_R8_SRGB = 15,
667 VK_FORMAT_R8G8_UNORM = 16,
668 VK_FORMAT_R8G8_SNORM = 17,
669 VK_FORMAT_R8G8_USCALED = 18,
670 VK_FORMAT_R8G8_SSCALED = 19,
671 VK_FORMAT_R8G8_UINT = 20,
672 VK_FORMAT_R8G8_SINT = 21,
673 VK_FORMAT_R8G8_SRGB = 22,
674 VK_FORMAT_R8G8B8_UNORM = 23,
675 VK_FORMAT_R8G8B8_SNORM = 24,
676 VK_FORMAT_R8G8B8_USCALED = 25,
677 VK_FORMAT_R8G8B8_SSCALED = 26,
678 VK_FORMAT_R8G8B8_UINT = 27,
679 VK_FORMAT_R8G8B8_SINT = 28,
680 VK_FORMAT_R8G8B8_SRGB = 29,
681 VK_FORMAT_B8G8R8_UNORM = 30,
682 VK_FORMAT_B8G8R8_SNORM = 31,
683 VK_FORMAT_B8G8R8_USCALED = 32,
684 VK_FORMAT_B8G8R8_SSCALED = 33,
685 VK_FORMAT_B8G8R8_UINT = 34,
686 VK_FORMAT_B8G8R8_SINT = 35,
687 VK_FORMAT_B8G8R8_SRGB = 36,
688 VK_FORMAT_R8G8B8A8_UNORM = 37,
689 VK_FORMAT_R8G8B8A8_SNORM = 38,
690 VK_FORMAT_R8G8B8A8_USCALED = 39,
691 VK_FORMAT_R8G8B8A8_SSCALED = 40,
692 VK_FORMAT_R8G8B8A8_UINT = 41,
693 VK_FORMAT_R8G8B8A8_SINT = 42,
694 VK_FORMAT_R8G8B8A8_SRGB = 43,
695 VK_FORMAT_B8G8R8A8_UNORM = 44,
696 VK_FORMAT_B8G8R8A8_SNORM = 45,
697 VK_FORMAT_B8G8R8A8_USCALED = 46,
698 VK_FORMAT_B8G8R8A8_SSCALED = 47,
699 VK_FORMAT_B8G8R8A8_UINT = 48,
700 VK_FORMAT_B8G8R8A8_SINT = 49,
701 VK_FORMAT_B8G8R8A8_SRGB = 50,
702 VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
703 VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
704 VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
705 VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
706 VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
707 VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
708 VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
709 VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
710 VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
711 VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
712 VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
713 VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
714 VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
715 VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
716 VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
717 VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
718 VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
719 VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
720 VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
721 VK_FORMAT_R16_UNORM = 70,
722 VK_FORMAT_R16_SNORM = 71,
723 VK_FORMAT_R16_USCALED = 72,
724 VK_FORMAT_R16_SSCALED = 73,
725 VK_FORMAT_R16_UINT = 74,
726 VK_FORMAT_R16_SINT = 75,
727 VK_FORMAT_R16_SFLOAT = 76,
728 VK_FORMAT_R16G16_UNORM = 77,
729 VK_FORMAT_R16G16_SNORM = 78,
730 VK_FORMAT_R16G16_USCALED = 79,
731 VK_FORMAT_R16G16_SSCALED = 80,
732 VK_FORMAT_R16G16_UINT = 81,
733 VK_FORMAT_R16G16_SINT = 82,
734 VK_FORMAT_R16G16_SFLOAT = 83,
735 VK_FORMAT_R16G16B16_UNORM = 84,
736 VK_FORMAT_R16G16B16_SNORM = 85,
737 VK_FORMAT_R16G16B16_USCALED = 86,
738 VK_FORMAT_R16G16B16_SSCALED = 87,
739 VK_FORMAT_R16G16B16_UINT = 88,
740 VK_FORMAT_R16G16B16_SINT = 89,
741 VK_FORMAT_R16G16B16_SFLOAT = 90,
742 VK_FORMAT_R16G16B16A16_UNORM = 91,
743 VK_FORMAT_R16G16B16A16_SNORM = 92,
744 VK_FORMAT_R16G16B16A16_USCALED = 93,
745 VK_FORMAT_R16G16B16A16_SSCALED = 94,
746 VK_FORMAT_R16G16B16A16_UINT = 95,
747 VK_FORMAT_R16G16B16A16_SINT = 96,
748 VK_FORMAT_R16G16B16A16_SFLOAT = 97,
749 VK_FORMAT_R32_UINT = 98,
750 VK_FORMAT_R32_SINT = 99,
751 VK_FORMAT_R32_SFLOAT = 100,
752 VK_FORMAT_R32G32_UINT = 101,
753 VK_FORMAT_R32G32_SINT = 102,
754 VK_FORMAT_R32G32_SFLOAT = 103,
755 VK_FORMAT_R32G32B32_UINT = 104,
756 VK_FORMAT_R32G32B32_SINT = 105,
757 VK_FORMAT_R32G32B32_SFLOAT = 106,
758 VK_FORMAT_R32G32B32A32_UINT = 107,
759 VK_FORMAT_R32G32B32A32_SINT = 108,
760 VK_FORMAT_R32G32B32A32_SFLOAT = 109,
761 VK_FORMAT_R64_UINT = 110,
762 VK_FORMAT_R64_SINT = 111,
763 VK_FORMAT_R64_SFLOAT = 112,
764 VK_FORMAT_R64G64_UINT = 113,
765 VK_FORMAT_R64G64_SINT = 114,
766 VK_FORMAT_R64G64_SFLOAT = 115,
767 VK_FORMAT_R64G64B64_UINT = 116,
768 VK_FORMAT_R64G64B64_SINT = 117,
769 VK_FORMAT_R64G64B64_SFLOAT = 118,
770 VK_FORMAT_R64G64B64A64_UINT = 119,
771 VK_FORMAT_R64G64B64A64_SINT = 120,
772 VK_FORMAT_R64G64B64A64_SFLOAT = 121,
773 VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
774 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
775 VK_FORMAT_D16_UNORM = 124,
776 VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
777 VK_FORMAT_D32_SFLOAT = 126,
778 VK_FORMAT_S8_UINT = 127,
779 VK_FORMAT_D16_UNORM_S8_UINT = 128,
780 VK_FORMAT_D24_UNORM_S8_UINT = 129,
781 VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
782 VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
783 VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
784 VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
785 VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
786 VK_FORMAT_BC2_UNORM_BLOCK = 135,
787 VK_FORMAT_BC2_SRGB_BLOCK = 136,
788 VK_FORMAT_BC3_UNORM_BLOCK = 137,
789 VK_FORMAT_BC3_SRGB_BLOCK = 138,
790 VK_FORMAT_BC4_UNORM_BLOCK = 139,
791 VK_FORMAT_BC4_SNORM_BLOCK = 140,
792 VK_FORMAT_BC5_UNORM_BLOCK = 141,
793 VK_FORMAT_BC5_SNORM_BLOCK = 142,
794 VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
795 VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
796 VK_FORMAT_BC7_UNORM_BLOCK = 145,
797 VK_FORMAT_BC7_SRGB_BLOCK = 146,
798 VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
799 VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
800 VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
801 VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
802 VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
803 VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
804 VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
805 VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
806 VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
807 VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
808 VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
809 VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
810 VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
811 VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
812 VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
813 VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
814 VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
815 VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
816 VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
817 VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
818 VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
819 VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
820 VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
821 VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
822 VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
823 VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
824 VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
825 VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
826 VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
827 VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
828 VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
829 VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
830 VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
831 VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
832 VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
833 VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
834 VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
835 VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
Jesse Halleb02c472017-02-24 15:13:45 -0800836
Jesse Halld0599582017-03-10 18:35:38 -0800837 //@extension("VK_IMG_format_pvrtc") // 28
Jesse Halleb02c472017-02-24 15:13:45 -0800838 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
839 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
840 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
841 VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
842 VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
843 VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
844 VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
845 VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700846}
847
Jesse Halld27f6aa2015-08-15 17:58:48 -0700848/// Structure type enumerant
849enum VkStructureType {
850 VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
Jesse Hallc7467b72015-11-29 21:05:26 -0800851 VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
852 VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
853 VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
854 VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800855 VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
Jesse Hallc7467b72015-11-29 21:05:26 -0800856 VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
857 VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
858 VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
859 VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700860 VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
Jesse Hallc7467b72015-11-29 21:05:26 -0800861 VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
862 VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
863 VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
864 VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
865 VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
866 VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800867 VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
868 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
869 VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
870 VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
871 VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
872 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
873 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
874 VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
875 VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
876 VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
877 VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
878 VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
879 VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
880 VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
881 VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
882 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
883 VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800884 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800885 VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
886 VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
887 VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
888 VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
889 VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800890 VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
Jesse Hall3dd678a2016-01-08 21:52:01 -0800891 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
892 VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
893 VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
894 VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
895 VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
896 VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
897 VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
898 VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
Jesse Hall1356b0d2015-11-23 17:24:58 -0800899
Jesse Halld0599582017-03-10 18:35:38 -0800900 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -0800901 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
902 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
Jesse Hall1356b0d2015-11-23 17:24:58 -0800903
Jesse Halld0599582017-03-10 18:35:38 -0800904 //@extension("VK_KHR_display") // 3
Jesse Hallbd888842015-11-30 21:44:14 -0800905 VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
906 VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
Jesse Hall1356b0d2015-11-23 17:24:58 -0800907
Jesse Halld0599582017-03-10 18:35:38 -0800908 //@extension("VK_KHR_display_swapchain") // 4
Jesse Hallbd888842015-11-30 21:44:14 -0800909 VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR = 1000003000,
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800910
Jesse Halld0599582017-03-10 18:35:38 -0800911 //@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800912 VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
913
Jesse Halld0599582017-03-10 18:35:38 -0800914 //@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800915 VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
916
Jesse Halld0599582017-03-10 18:35:38 -0800917 //@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800918 VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
919
Jesse Halld0599582017-03-10 18:35:38 -0800920 //@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800921 VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000,
922
Jesse Halld0599582017-03-10 18:35:38 -0800923 //@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800924 VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
925
Jesse Halld0599582017-03-10 18:35:38 -0800926 //@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800927 VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
Jesse Hall543a7ff2016-01-08 16:38:30 -0800928
Jesse Halld0599582017-03-10 18:35:38 -0800929 //@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +0800930 VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID = 1000010000,
931
Jesse Halld0599582017-03-10 18:35:38 -0800932 //@extension("VK_EXT_debug_report") // 12
Jesse Hall26763382016-05-20 07:13:52 -0700933 VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
934
Jesse Halld0599582017-03-10 18:35:38 -0800935 //@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -0700936 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,
937
Jesse Halld0599582017-03-10 18:35:38 -0800938 //@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -0700939 VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,
Jesse Hall26763382016-05-20 07:13:52 -0700940 VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,
Jesse Hall26763382016-05-20 07:13:52 -0700941 VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,
Jesse Hall3f5499b2016-07-26 15:20:40 -0700942
Jesse Halld0599582017-03-10 18:35:38 -0800943 //@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall3f5499b2016-07-26 15:20:40 -0700944 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
Jesse Hall3f5499b2016-07-26 15:20:40 -0700945 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
Jesse Hall3f5499b2016-07-26 15:20:40 -0700946 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
Jesse Halleb02c472017-02-24 15:13:45 -0800947
Jesse Halld0599582017-03-10 18:35:38 -0800948 //@extension("VK_KHX_multiview") // 54
949 VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX = 1000053000,
950 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX = 1000053001,
951 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX = 1000053002,
952
953 //@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -0800954 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
955 VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,
956
Jesse Halld0599582017-03-10 18:35:38 -0800957 //@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -0800958 VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
959 VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
960
Jesse Halld0599582017-03-10 18:35:38 -0800961 //@extension("VK_NV_win32_keyed_mutex") // 59
Jesse Halleb02c472017-02-24 15:13:45 -0800962 VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
963
Jesse Halld0599582017-03-10 18:35:38 -0800964 //@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -0800965 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000,
966 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001,
967 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002,
968 VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003,
969 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004,
970 VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005,
971 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006,
972 VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007,
973 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008,
974
Jesse Halld0599582017-03-10 18:35:38 -0800975 //@extension("VK_KHX_device_group") // 61
976 VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX = 1000060000,
977 VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX = 1000060001,
978 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX = 1000060002,
979 VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX = 1000060003,
980 VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX = 1000060004,
981 VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX = 1000060005,
982 VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX = 1000060006,
983 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX = 1000060007,
984 VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX = 1000060008,
985 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX = 1000060009,
986 VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX = 1000060010,
987 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX = 1000060011,
988 VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX = 1000060012,
989
990 //@extension("VK_EXT_validation_flags") // 62
Jesse Halleb02c472017-02-24 15:13:45 -0800991 VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
992
Jesse Halld0599582017-03-10 18:35:38 -0800993 //@extension("VK_NN_vi_surface") // 63
Jesse Hall08e2f482017-03-06 15:22:17 -0800994 VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000,
995
Jesse Halld0599582017-03-10 18:35:38 -0800996 //@extension("VK_KHX_device_group_creation") // 71
997 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX = 1000070000,
998 VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX = 1000070001,
999
1000 //@extension("VK_KHX_external_memory_capabilities") // 72
1001 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHX = 1000071000,
1002 VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHX = 1000071001,
1003 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHX = 1000071002,
1004 VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHX = 1000071003,
1005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHX = 1000071004,
Jesse Halld0599582017-03-10 18:35:38 -08001006
1007 //@extension("VK_KHX_external_memory") // 73
1008 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHX = 1000072000,
1009 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHX = 1000072001,
1010 VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHX = 1000072002,
1011
1012 //@extension("VK_KHX_external_memory_win32") // 74
1013 VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHX = 1000073000,
1014 VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHX = 1000073001,
1015 VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHX = 1000073002,
1016
1017 //@extension("VK_KHX_external_memory_fd") // 75
1018 VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHX = 1000074000,
1019 VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHX = 1000074001,
1020
1021 //@extension("VK_KHX_win32_keyed_mutex") // 76
1022 VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHX = 1000075000,
1023
1024 //@extension("VK_KHX_external_semaphore_capabilities") // 77
1025 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHX = 1000076000,
1026 VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHX = 1000076001,
1027
1028 //@extension("VK_KHX_external_semaphore") // 78
1029 VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHX = 1000077000,
1030
1031 //@extension("VK_KHX_external_semaphore_win32") // 79
1032 VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX = 1000078000,
1033 VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX = 1000078001,
1034 VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHX = 1000078002,
1035
1036 //@extension("VK_KHX_external_semaphore_fd") // 80
1037 VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHX = 1000079000,
1038
1039 //@extension("VK_KHR_push_descriptor") // 81
1040 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000,
1041
Jesse Hall2c677d52017-03-20 13:09:19 -07001042 //@extension("VK_KHR_incremental_present") // 85
1043 VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
1044
Jesse Halld0599582017-03-10 18:35:38 -08001045 //@extension("VK_KHR_descriptor_update_template") // 86
1046 VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000,
1047
1048 //@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08001049 VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
1050 VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
1051 VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = 1000086002,
1052 VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = 1000086003,
1053 VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004,
1054 VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005,
Jesse Hall08e2f482017-03-06 15:22:17 -08001055
Jesse Halld0599582017-03-10 18:35:38 -08001056 //@extension("VK_NV_clip_space_w_scaling") // 88
1057 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000,
1058
1059 //@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall08e2f482017-03-06 15:22:17 -08001060 VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000,
1061
Jesse Halld0599582017-03-10 18:35:38 -08001062 //@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08001063 VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000,
1064 VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001,
1065 VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002,
1066 VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,
Jesse Halld0599582017-03-10 18:35:38 -08001067
Jesse Halle8ec6a22017-03-10 21:01:57 -08001068 //@extension("VK_GOOGLE_display_timing") // 93
1069 VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000,
1070
Jesse Halld0599582017-03-10 18:35:38 -08001071 //@extension("VK_NVX_multiview_per_view_attributes") // 98
1072 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000,
1073
1074 //@extension("VK_NV_viewport_swizzle") // 99
1075 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000,
1076
1077 //@extension("VK_EXT_discard_rectangles") // 100
1078 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,
1079 VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,
1080
Jesse Halle8ec6a22017-03-10 21:01:57 -08001081 //@extension("VK_EXT_hdr_metadata") // 106
1082 VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
1083
Jesse Halle5404242017-04-10 08:09:19 -07001084 //@extension("VK_KHR_shared_presentable_image") // 112
1085 VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
1086
1087 //@extension("VK_KHR_get_surface_capabilities2") // 120
1088 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,
1089 VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001,
1090 VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002,
1091
Jesse Halld0599582017-03-10 18:35:38 -08001092 //@extension("VK_MVK_ios_surface") // 123
1093 VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000,
1094
1095 //@extension("VK_MVK_macos_surface") // 124
1096 VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001097}
1098
Jesse Hall65ab5522015-11-30 00:07:16 -08001099enum VkSubpassContents {
1100 VK_SUBPASS_CONTENTS_INLINE = 0x00000000,
1101 VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001102}
1103
Jesse Hall543a7ff2016-01-08 16:38:30 -08001104enum VkPipelineCacheHeaderVersion {
1105 VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
1106}
1107
Jesse Hallbd888842015-11-30 21:44:14 -08001108@lastUnused(-11)
Jesse Halld27f6aa2015-08-15 17:58:48 -07001109/// Error and return codes
1110enum VkResult {
1111 // Return codes for successful operation execution (positive values)
Jesse Hallbd888842015-11-30 21:44:14 -08001112 VK_SUCCESS = 0,
1113 VK_NOT_READY = 1,
1114 VK_TIMEOUT = 2,
1115 VK_EVENT_SET = 3,
1116 VK_EVENT_RESET = 4,
1117 VK_INCOMPLETE = 5,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001118
Jesse Halld0599582017-03-10 18:35:38 -08001119 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -08001120 VK_SUBOPTIMAL_KHR = 1000001003,
Jesse Hall1356b0d2015-11-23 17:24:58 -08001121
Jesse Halld27f6aa2015-08-15 17:58:48 -07001122 // Error codes (negative values)
Jesse Hallbd888842015-11-30 21:44:14 -08001123 VK_ERROR_OUT_OF_HOST_MEMORY = 0xFFFFFFFF, // -1
1124 VK_ERROR_OUT_OF_DEVICE_MEMORY = 0xFFFFFFFE, // -2
1125 VK_ERROR_INITIALIZATION_FAILED = 0xFFFFFFFD, // -3
1126 VK_ERROR_DEVICE_LOST = 0xFFFFFFFC, // -4
1127 VK_ERROR_MEMORY_MAP_FAILED = 0xFFFFFFFB, // -5
1128 VK_ERROR_LAYER_NOT_PRESENT = 0xFFFFFFFA, // -6
1129 VK_ERROR_EXTENSION_NOT_PRESENT = 0xFFFFFFF9, // -7
1130 VK_ERROR_FEATURE_NOT_PRESENT = 0xFFFFFFF8, // -8
1131 VK_ERROR_INCOMPATIBLE_DRIVER = 0xFFFFFFF7, // -9
1132 VK_ERROR_TOO_MANY_OBJECTS = 0xFFFFFFF6, // -10
1133 VK_ERROR_FORMAT_NOT_SUPPORTED = 0xFFFFFFF5, // -11
Jesse Hall3f5499b2016-07-26 15:20:40 -07001134 VK_ERROR_FRAGMENTED_POOL = 0xFFFFFFF4, // -12
Jesse Hall1356b0d2015-11-23 17:24:58 -08001135
Jesse Halld0599582017-03-10 18:35:38 -08001136 //@extension("VK_KHR_surface") // 1
Jesse Hallbd888842015-11-30 21:44:14 -08001137 VK_ERROR_SURFACE_LOST_KHR = 0xC4653600, // -1000000000
Jesse Halld0599582017-03-10 18:35:38 -08001138 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = 0xC46535FF, // -1000000001
Jesse Halla6429252015-11-29 18:59:42 -08001139
Jesse Halld0599582017-03-10 18:35:38 -08001140 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -08001141 VK_ERROR_OUT_OF_DATE_KHR = 0xC4653214, // -1000001004
Jesse Hall1356b0d2015-11-23 17:24:58 -08001142
Jesse Halld0599582017-03-10 18:35:38 -08001143 //@extension("VK_KHR_display_swapchain") // 4
Jesse Hallbd888842015-11-30 21:44:14 -08001144 VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = 0xC4652A47, // -1000003001
Jesse Hall1356b0d2015-11-23 17:24:58 -08001145
Jesse Halld0599582017-03-10 18:35:38 -08001146 //@extension("VK_EXT_debug_report") // 12
Jesse Hall543a7ff2016-01-08 16:38:30 -08001147 VK_ERROR_VALIDATION_FAILED_EXT = 0xC4650B07, // -1000011001
Jesse Hall26763382016-05-20 07:13:52 -07001148
Jesse Halld0599582017-03-10 18:35:38 -08001149 //@extension("VK_NV_glsl_shader") // 13
Jesse Hall26763382016-05-20 07:13:52 -07001150 VK_ERROR_INVALID_SHADER_NV = 0xC4650720, // -1000012000
Jesse Hall08e2f482017-03-06 15:22:17 -08001151
Jesse Halld0599582017-03-10 18:35:38 -08001152 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall08e2f482017-03-06 15:22:17 -08001153 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = 0xC4642878, // -1000069000
Jesse Halld0599582017-03-10 18:35:38 -08001154
1155 //@extension("VK_KHX_external_memory") // 73
1156 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHX = 0xC4641CBD, // -1000072003
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001157}
1158
1159enum VkDynamicState {
1160 VK_DYNAMIC_STATE_VIEWPORT = 0x00000000,
1161 VK_DYNAMIC_STATE_SCISSOR = 0x00000001,
1162 VK_DYNAMIC_STATE_LINE_WIDTH = 0x00000002,
1163 VK_DYNAMIC_STATE_DEPTH_BIAS = 0x00000003,
1164 VK_DYNAMIC_STATE_BLEND_CONSTANTS = 0x00000004,
1165 VK_DYNAMIC_STATE_DEPTH_BOUNDS = 0x00000005,
1166 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 0x00000006,
1167 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 0x00000007,
1168 VK_DYNAMIC_STATE_STENCIL_REFERENCE = 0x00000008,
Jesse Halld0599582017-03-10 18:35:38 -08001169
1170 //@extension("VK_NV_clip_space_w_scaling") // 88
1171 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000,
1172
1173 //@extension("VK_EXT_discard_rectangles") // 100
1174 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001175}
1176
Jesse Halle5404242017-04-10 08:09:19 -07001177enum VkObjectType {
1178 VK_OBJECT_TYPE_UNKNOWN = 0,
1179 VK_OBJECT_TYPE_INSTANCE = 1,
1180 VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,
1181 VK_OBJECT_TYPE_DEVICE = 3,
1182 VK_OBJECT_TYPE_QUEUE = 4,
1183 VK_OBJECT_TYPE_SEMAPHORE = 5,
1184 VK_OBJECT_TYPE_COMMAND_BUFFER = 6,
1185 VK_OBJECT_TYPE_FENCE = 7,
1186 VK_OBJECT_TYPE_DEVICE_MEMORY = 8,
1187 VK_OBJECT_TYPE_BUFFER = 9,
1188 VK_OBJECT_TYPE_IMAGE = 10,
1189 VK_OBJECT_TYPE_EVENT = 11,
1190 VK_OBJECT_TYPE_QUERY_POOL = 12,
1191 VK_OBJECT_TYPE_BUFFER_VIEW = 13,
1192 VK_OBJECT_TYPE_IMAGE_VIEW = 14,
1193 VK_OBJECT_TYPE_SHADER_MODULE = 15,
1194 VK_OBJECT_TYPE_PIPELINE_CACHE = 16,
1195 VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,
1196 VK_OBJECT_TYPE_RENDER_PASS = 18,
1197 VK_OBJECT_TYPE_PIPELINE = 19,
1198 VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,
1199 VK_OBJECT_TYPE_SAMPLER = 21,
1200 VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,
1201 VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,
1202 VK_OBJECT_TYPE_FRAMEBUFFER = 24,
1203 VK_OBJECT_TYPE_COMMAND_POOL = 25,
1204
1205 //@extension("VK_KHR_surface") // 1
1206 VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,
1207
1208 //@extension("VK_KHR_swapchain") // 2
1209 VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,
1210
1211 //@extension("VK_KHR_display") // 3
1212 VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000,
1213 VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001,
1214
1215 //@extension("VK_KHR_debug_report") // 12
1216 VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000,
1217
1218 //@extension("VK_KHR_descriptor_update_template") // 86
1219 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000,
1220
1221 //@extension("VK_NVX_device_generated_commands") // 87
1222 VK_OBJECT_TYPE_OBJECT_TABLE_NVX = 1000086000,
1223 VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = 1000086001,
1224}
1225
Jesse Halld0599582017-03-10 18:35:38 -08001226@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08001227enum VkPresentModeKHR {
1228 VK_PRESENT_MODE_IMMEDIATE_KHR = 0x00000000,
1229 VK_PRESENT_MODE_MAILBOX_KHR = 0x00000001,
1230 VK_PRESENT_MODE_FIFO_KHR = 0x00000002,
Jesse Hall03b6fe12015-11-24 12:44:21 -08001231 VK_PRESENT_MODE_FIFO_RELAXED_KHR = 0x00000003,
Jesse Halle5404242017-04-10 08:09:19 -07001232
1233 //@extension("VK_KHR_shared_presentable_image") // 112
1234 VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,
1235 VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,
Michael Lentine88594d72015-11-12 12:49:45 -08001236}
1237
Jesse Halld0599582017-03-10 18:35:38 -08001238@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08001239enum VkColorSpaceKHR {
1240 VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0x00000000,
Jesse Hall2c677d52017-03-20 13:09:19 -07001241
1242 //@extension("VK_EXT_swapchain_colorspace") // 105
1243 VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
1244 VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
1245 VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003,
1246 VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
1247 VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
1248 VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
1249 VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
1250 VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
1251 VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
1252 VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
1253 VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
1254 VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
1255 VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
Michael Lentine88594d72015-11-12 12:49:45 -08001256}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001257
Jesse Halld0599582017-03-10 18:35:38 -08001258@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08001259enum VkDebugReportObjectTypeEXT {
1260 VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
1261 VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
1262 VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
1263 VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,
1264 VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,
1265 VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,
1266 VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,
1267 VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,
1268 VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,
1269 VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,
1270 VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,
1271 VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,
1272 VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,
1273 VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,
1274 VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,
1275 VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,
1276 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,
1277 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,
1278 VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,
1279 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,
1280 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,
1281 VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,
1282 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,
1283 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,
1284 VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,
1285 VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,
1286 VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
1287 VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
1288 VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28,
Jesse Halleb02c472017-02-24 15:13:45 -08001289 VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29,
1290 VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,
1291 VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31,
1292 VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32,
Jesse Hall2c677d52017-03-20 13:09:19 -07001293
1294 //extension("VK_KHR_descriptor_update_template") // 86
1295 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000,
Jesse Hall715b86a2016-01-16 16:34:29 -08001296}
1297
Jesse Halld0599582017-03-10 18:35:38 -08001298@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08001299enum VkDebugReportErrorEXT {
1300 VK_DEBUG_REPORT_ERROR_NONE_EXT = 0,
1301 VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT = 1,
1302}
1303
Jesse Halld0599582017-03-10 18:35:38 -08001304@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07001305enum VkRasterizationOrderAMD {
1306 VK_RASTERIZATION_ORDER_STRICT_AMD = 0,
1307 VK_RASTERIZATION_ORDER_RELAXED_AMD = 1,
1308}
1309
Jesse Halld0599582017-03-10 18:35:38 -08001310@extension("VK_EXT_validation_flags") // 62
Jesse Halleb02c472017-02-24 15:13:45 -08001311enum VkValidationCheckEXT {
1312 VK_VALIDATION_CHECK_ALL_EXT = 0,
1313}
1314
Jesse Halld0599582017-03-10 18:35:38 -08001315@extension("VK_KHR_descriptor_update_template") // 86
1316enum VkDescriptorUpdateTemplateTypeKHR {
1317 VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0,
1318 VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1,
1319}
1320
1321@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08001322enum VkIndirectCommandsTokenTypeNVX {
1323 VK_INDIRECT_COMMANDS_TOKEN_PIPELINE_NVX = 0,
1324 VK_INDIRECT_COMMANDS_TOKEN_DESCRIPTOR_SET_NVX = 1,
1325 VK_INDIRECT_COMMANDS_TOKEN_INDEX_BUFFER_NVX = 2,
1326 VK_INDIRECT_COMMANDS_TOKEN_VERTEX_BUFFER_NVX = 3,
1327 VK_INDIRECT_COMMANDS_TOKEN_PUSH_CONSTANT_NVX = 4,
1328 VK_INDIRECT_COMMANDS_TOKEN_DRAW_INDEXED_NVX = 5,
1329 VK_INDIRECT_COMMANDS_TOKEN_DRAW_NVX = 6,
1330 VK_INDIRECT_COMMANDS_TOKEN_DISPATCH_NVX = 7,
1331}
1332
Jesse Halld0599582017-03-10 18:35:38 -08001333@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08001334enum VkObjectEntryTypeNVX {
1335 VK_OBJECT_ENTRY_DESCRIPTOR_SET_NVX = 0,
1336 VK_OBJECT_ENTRY_PIPELINE_NVX = 1,
1337 VK_OBJECT_ENTRY_INDEX_BUFFER_NVX = 2,
1338 VK_OBJECT_ENTRY_VERTEX_BUFFER_NVX = 3,
1339 VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX = 4,
1340}
Jesse Hall715b86a2016-01-16 16:34:29 -08001341
Jesse Halld0599582017-03-10 18:35:38 -08001342@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08001343enum VkDisplayPowerStateEXT {
1344 VK_DISPLAY_POWER_STATE_OFF_EXT = 0,
1345 VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,
1346 VK_DISPLAY_POWER_STATE_ON_EXT = 2,
1347}
1348
Jesse Halld0599582017-03-10 18:35:38 -08001349@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08001350enum VkDeviceEventTypeEXT {
1351 VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0,
1352}
1353
Jesse Halld0599582017-03-10 18:35:38 -08001354@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08001355enum VkDisplayEventTypeEXT {
1356 VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,
1357}
1358
Jesse Halld0599582017-03-10 18:35:38 -08001359@extension("VK_NV_viewport_swizzle") // 99
1360enum VkViewportCoordinateSwizzleNV {
1361 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0,
1362 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1,
1363 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2,
1364 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3,
1365 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4,
1366 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5,
1367 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6,
1368 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7,
1369}
1370
1371@extension("VK_EXT_discard_rectangles") // 100
1372enum VkDiscardRectangleModeEXT {
1373 VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,
1374 VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,
1375}
1376
Jesse Halld27f6aa2015-08-15 17:58:48 -07001377/////////////////
1378// Bitfields //
1379/////////////////
1380
Jesse Halld27f6aa2015-08-15 17:58:48 -07001381/// Queue capabilities
Jesse Halld8bade02015-11-24 10:24:18 -08001382type VkFlags VkQueueFlags
1383bitfield VkQueueFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001384 VK_QUEUE_GRAPHICS_BIT = 0x00000001, /// Queue supports graphics operations
1385 VK_QUEUE_COMPUTE_BIT = 0x00000002, /// Queue supports compute operations
Jesse Hall65ab5522015-11-30 00:07:16 -08001386 VK_QUEUE_TRANSFER_BIT = 0x00000004, /// Queue supports transfer operations
Jesse Hallb00daad2015-11-29 19:46:20 -08001387 VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008, /// Queue supports sparse resource memory management operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001388}
1389
1390/// Memory properties passed into vkAllocMemory().
Jesse Halld8bade02015-11-24 10:24:18 -08001391type VkFlags VkMemoryPropertyFlags
1392bitfield VkMemoryPropertyFlagBits {
Jesse Halld1af8122015-11-29 23:50:38 -08001393 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
1394 VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
1395 VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
1396 VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
1397 VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001398}
1399
1400/// Memory heap flags
Jesse Halld8bade02015-11-24 10:24:18 -08001401type VkFlags VkMemoryHeapFlags
1402bitfield VkMemoryHeapFlagBits {
Jesse Halld1af8122015-11-29 23:50:38 -08001403 VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
Jesse Halld0599582017-03-10 18:35:38 -08001404
1405 //@extension("VK_KHX_device_group_creation") // 71
1406 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001407}
1408
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001409/// Access flags
1410type VkFlags VkAccessFlags
1411bitfield VkAccessFlagBits {
1412 VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
1413 VK_ACCESS_INDEX_READ_BIT = 0x00000002,
1414 VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
1415 VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
1416 VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
1417 VK_ACCESS_SHADER_READ_BIT = 0x00000020,
1418 VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
1419 VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
1420 VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
1421 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
1422 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
1423 VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
1424 VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
1425 VK_ACCESS_HOST_READ_BIT = 0x00002000,
1426 VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
1427 VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
1428 VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
Jesse Halleb02c472017-02-24 15:13:45 -08001429
Jesse Halld0599582017-03-10 18:35:38 -08001430 //@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08001431 VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000,
1432 VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001433}
1434
1435/// Buffer usage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001436type VkFlags VkBufferUsageFlags
1437bitfield VkBufferUsageFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -08001438 VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations
1439 VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001440 VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004, /// Can be used as TBO
1441 VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008, /// Can be used as IBO
1442 VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010, /// Can be used as UBO
1443 VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020, /// Can be used as SSBO
1444 VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, /// Can be used as source of fixed function index fetch (index buffer)
1445 VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, /// Can be used as source of fixed function vertex fetch (VBO)
1446 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, /// Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer)
1447}
1448
1449/// Buffer creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001450type VkFlags VkBufferCreateFlags
1451bitfield VkBufferCreateFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001452 VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Buffer should support sparse backing
Jesse Halld27f6aa2015-08-15 17:58:48 -07001453 VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Buffer should support sparse backing with partial residency
1454 VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004, /// Buffer should support constent data access to physical memory blocks mapped into multiple locations of sparse buffers
1455}
1456
1457/// Shader stage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001458type VkFlags VkShaderStageFlags
1459bitfield VkShaderStageFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001460 VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
Jesse Hallae38f732015-11-19 21:32:50 -08001461 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
1462 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001463 VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
1464 VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
1465 VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
Jesse Hallc7467b72015-11-29 21:05:26 -08001466 VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001467
1468 VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
1469}
1470
Jesse Hallfbf97b02015-11-20 14:17:03 -08001471/// Descriptor pool create flags
Jesse Halld8bade02015-11-24 10:24:18 -08001472type VkFlags VkDescriptorPoolCreateFlags
1473bitfield VkDescriptorPoolCreateFlagBits {
Jesse Hallfbf97b02015-11-20 14:17:03 -08001474 VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
1475}
1476
1477/// Descriptor pool reset flags
Jesse Halld8bade02015-11-24 10:24:18 -08001478type VkFlags VkDescriptorPoolResetFlags
Jesse Halla6429252015-11-29 18:59:42 -08001479//bitfield VkDescriptorPoolResetFlagBits {
1480//}
Jesse Hallfbf97b02015-11-20 14:17:03 -08001481
Jesse Halld27f6aa2015-08-15 17:58:48 -07001482/// Image usage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001483type VkFlags VkImageUsageFlags
1484bitfield VkImageUsageFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -08001485 VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations
1486 VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001487 VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004, /// Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
1488 VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008, /// Can be used as storage image (STORAGE_IMAGE descriptor type)
1489 VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010, /// Can be used as framebuffer color attachment
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001490 VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020, /// Can be used as framebuffer depth/stencil attachment
Jesse Halld27f6aa2015-08-15 17:58:48 -07001491 VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040, /// Image data not needed outside of rendering
1492 VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080, /// Can be used as framebuffer input attachment
1493}
1494
1495/// Image creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001496type VkFlags VkImageCreateFlags
1497bitfield VkImageCreateFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001498 VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Image should support sparse backing
Jesse Halld27f6aa2015-08-15 17:58:48 -07001499 VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Image should support sparse backing with partial residency
1500 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 -07001501 VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008, /// Allows image views to have different format than the base image
1502 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 -08001503
Jesse Halld0599582017-03-10 18:35:38 -08001504 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall08e2f482017-03-06 15:22:17 -08001505 VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 0x00000020,
Jesse Halld0599582017-03-10 18:35:38 -08001506
1507 //@extension("VK_KHX_device_group") // 61
1508 VK_IMAGE_CREATE_BIND_SFR_BIT_KHX = 0x00000040,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001509}
1510
Jesse Hallb00daad2015-11-29 19:46:20 -08001511/// Image view creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001512type VkFlags VkImageViewCreateFlags
Jesse Hallb00daad2015-11-29 19:46:20 -08001513//bitfield VkImageViewCreateFlagBits {
1514//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001515
1516/// Pipeline creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001517type VkFlags VkPipelineCreateFlags
1518bitfield VkPipelineCreateFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001519 VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
1520 VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
1521 VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
Jesse Halld0599582017-03-10 18:35:38 -08001522
1523 //@extension("VK_KHX_device_group") // 61
1524 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX = 0x00000008,
1525 VK_PIPELINE_CREATE_DISPATCH_BASE_KHX = 0x00000010,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001526}
1527
Jesse Hall65ab5522015-11-30 00:07:16 -08001528/// Color component flags
1529type VkFlags VkColorComponentFlags
1530bitfield VkColorComponentFlagBits {
1531 VK_COLOR_COMPONENT_R_BIT = 0x00000001,
1532 VK_COLOR_COMPONENT_G_BIT = 0x00000002,
1533 VK_COLOR_COMPONENT_B_BIT = 0x00000004,
1534 VK_COLOR_COMPONENT_A_BIT = 0x00000008,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001535}
1536
1537/// Fence creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001538type VkFlags VkFenceCreateFlags
1539bitfield VkFenceCreateFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001540 VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
1541}
1542
1543/// Semaphore creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001544type VkFlags VkSemaphoreCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001545//bitfield VkSemaphoreCreateFlagBits {
1546//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001547
1548/// Format capability flags
Jesse Halld8bade02015-11-24 10:24:18 -08001549type VkFlags VkFormatFeatureFlags
1550bitfield VkFormatFeatureFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001551 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001, /// Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
1552 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002, /// Format can be used for storage images (STORAGE_IMAGE descriptor type)
1553 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004, /// Format supports atomic operations in case it's used for storage images
1554 VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008, /// Format can be used for uniform texel buffers (TBOs)
1555 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010, /// Format can be used for storage texel buffers (IBOs)
1556 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020, /// Format supports atomic operations in case it's used for storage texel buffers
1557 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040, /// Format can be used for vertex buffers (VBOs)
1558 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080, /// Format can be used for color attachment images
1559 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100, /// Format supports blending in case it's used for color attachment images
1560 VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200, /// Format can be used for depth/stencil attachment images
Jesse Hall3fbc8562015-11-29 22:10:52 -08001561 VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400, /// Format can be used as the source image of blits with vkCommandBlitImage
1562 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 -08001563 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
Jesse Hall26763382016-05-20 07:13:52 -07001564
Jesse Halld0599582017-03-10 18:35:38 -08001565 //@extension("VK_IMG_filter_cubic") // 16
Jesse Hall26763382016-05-20 07:13:52 -07001566 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
Jesse Hall08e2f482017-03-06 15:22:17 -08001567
Jesse Halld0599582017-03-10 18:35:38 -08001568 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall08e2f482017-03-06 15:22:17 -08001569 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 0x00004000,
1570 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 0x00008000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001571}
1572
1573/// Query control flags
Jesse Halld8bade02015-11-24 10:24:18 -08001574type VkFlags VkQueryControlFlags
1575bitfield VkQueryControlFlagBits {
Jesse Hall65ab5522015-11-30 00:07:16 -08001576 VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001577}
1578
1579/// Query result flags
Jesse Halld8bade02015-11-24 10:24:18 -08001580type VkFlags VkQueryResultFlags
1581bitfield VkQueryResultFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001582 VK_QUERY_RESULT_64_BIT = 0x00000001, /// Results of the queries are written to the destination buffer as 64-bit values
1583 VK_QUERY_RESULT_WAIT_BIT = 0x00000002, /// Results of the queries are waited on before proceeding with the result copy
1584 VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, /// Besides the results of the query, the availability of the results is also written
1585 VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008, /// Copy the partial results of the query even if the final results aren't available
1586}
1587
1588/// Shader module creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001589type VkFlags VkShaderModuleCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001590//bitfield VkShaderModuleCreateFlagBits {
1591//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001592
Jesse Halld27f6aa2015-08-15 17:58:48 -07001593/// Event creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001594type VkFlags VkEventCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001595//bitfield VkEventCreateFlagBits {
1596//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001597
Jesse Halla15a4bf2015-11-19 22:48:02 -08001598/// Command buffer usage flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08001599type VkFlags VkCommandBufferUsageFlags
1600bitfield VkCommandBufferUsageFlagBits {
1601 VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
1602 VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
1603 VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001604}
1605
1606/// Pipeline statistics flags
Jesse Halld8bade02015-11-24 10:24:18 -08001607type VkFlags VkQueryPipelineStatisticFlags
1608bitfield VkQueryPipelineStatisticFlagBits {
Jesse Hallae38f732015-11-19 21:32:50 -08001609 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001, /// Optional
1610 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002, /// Optional
1611 VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004, /// Optional
1612 VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008, /// Optional
1613 VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010, /// Optional
1614 VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020, /// Optional
1615 VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040, /// Optional
1616 VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080, /// Optional
1617 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100, /// Optional
1618 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200, /// Optional
1619 VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400, /// Optional
Jesse Halld27f6aa2015-08-15 17:58:48 -07001620}
1621
1622/// Memory mapping flags
Jesse Halld8bade02015-11-24 10:24:18 -08001623type VkFlags VkMemoryMapFlags
Jesse Halla6429252015-11-29 18:59:42 -08001624//bitfield VkMemoryMapFlagBits {
1625//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001626
1627/// Bitfield of image aspects
Jesse Halld8bade02015-11-24 10:24:18 -08001628type VkFlags VkImageAspectFlags
1629bitfield VkImageAspectFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001630 VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
1631 VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
1632 VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
1633 VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
1634}
1635
1636/// Sparse memory bind flags
Jesse Halld8bade02015-11-24 10:24:18 -08001637type VkFlags VkSparseMemoryBindFlags
Jesse Hall091ed9e2015-11-30 00:55:29 -08001638bitfield VkSparseMemoryBindFlagBits {
1639 VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
1640}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001641
1642/// Sparse image memory requirements flags
Jesse Halld8bade02015-11-24 10:24:18 -08001643type VkFlags VkSparseImageFormatFlags
1644bitfield VkSparseImageFormatFlagBits {
Jesse Hallb00daad2015-11-29 19:46:20 -08001645 VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001, /// Image uses a single miptail region for all array slices
1646 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.
1647 VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004, /// Image uses a non-standard sparse block size
Jesse Halld27f6aa2015-08-15 17:58:48 -07001648}
1649
1650/// Pipeline stages
Jesse Halld8bade02015-11-24 10:24:18 -08001651type VkFlags VkPipelineStageFlags
1652bitfield VkPipelineStageFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001653 VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001, /// Before subsequent commands are processed
1654 VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002, /// Draw/DispatchIndirect command fetch
1655 VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004, /// Vertex/index fetch
1656 VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008, /// Vertex shading
Jesse Hallae38f732015-11-19 21:32:50 -08001657 VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010, /// Tessellation control shading
1658 VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020, /// Tessellation evaluation shading
Jesse Halld27f6aa2015-08-15 17:58:48 -07001659 VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040, /// Geometry shading
1660 VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080, /// Fragment shading
1661 VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100, /// Early fragment (depth/stencil) tests
1662 VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200, /// Late fragment (depth/stencil) tests
1663 VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400, /// Color attachment writes
1664 VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800, /// Compute shading
1665 VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000, /// Transfer/copy operations
Jesse Hall543a7ff2016-01-08 16:38:30 -08001666 VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
1667 VK_PIPELINE_STAGE_HOST_BIT = 0x00004000, /// Indicates host (CPU) is a source/sink of the dependency
Jesse Halld27f6aa2015-08-15 17:58:48 -07001668
Jesse Hall543a7ff2016-01-08 16:38:30 -08001669 VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000, /// All stages of the graphics pipeline
1670 VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000, /// All graphics, compute, copy, and transition commands
Jesse Halleb02c472017-02-24 15:13:45 -08001671
Jesse Halld0599582017-03-10 18:35:38 -08001672 //@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08001673 VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001674}
1675
1676/// Render pass attachment description flags
Jesse Halld8bade02015-11-24 10:24:18 -08001677type VkFlags VkAttachmentDescriptionFlags
1678bitfield VkAttachmentDescriptionFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001679 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 -07001680}
1681
1682/// Subpass description flags
Jesse Halld8bade02015-11-24 10:24:18 -08001683type VkFlags VkSubpassDescriptionFlags
1684bitfield VkSubpassDescriptionFlagBits {
Jesse Halld0599582017-03-10 18:35:38 -08001685 //@extension("VK_NVX_multiview_per_view_attributes") // 98
1686 VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001,
1687 VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001688}
1689
1690/// Command pool creation flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08001691type VkFlags VkCommandPoolCreateFlags
1692bitfield VkCommandPoolCreateFlagBits {
1693 VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001, /// Command buffers have a short lifetime
1694 VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002, /// Command buffers may release their memory individually
Jesse Halld27f6aa2015-08-15 17:58:48 -07001695}
1696
1697/// Command pool reset flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08001698type VkFlags VkCommandPoolResetFlags
1699bitfield VkCommandPoolResetFlagBits {
1700 VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the pool
Jesse Halld27f6aa2015-08-15 17:58:48 -07001701}
1702
Jesse Hall3fbc8562015-11-29 22:10:52 -08001703type VkFlags VkCommandBufferResetFlags
1704bitfield VkCommandBufferResetFlagBits {
1705 VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the buffer
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001706}
1707
Jesse Halld8bade02015-11-24 10:24:18 -08001708type VkFlags VkSampleCountFlags
1709bitfield VkSampleCountFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001710 VK_SAMPLE_COUNT_1_BIT = 0x00000001,
1711 VK_SAMPLE_COUNT_2_BIT = 0x00000002,
1712 VK_SAMPLE_COUNT_4_BIT = 0x00000004,
1713 VK_SAMPLE_COUNT_8_BIT = 0x00000008,
1714 VK_SAMPLE_COUNT_16_BIT = 0x00000010,
1715 VK_SAMPLE_COUNT_32_BIT = 0x00000020,
1716 VK_SAMPLE_COUNT_64_BIT = 0x00000040,
1717}
1718
Jesse Halld8bade02015-11-24 10:24:18 -08001719type VkFlags VkStencilFaceFlags
1720bitfield VkStencilFaceFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001721 VK_STENCIL_FACE_FRONT_BIT = 0x00000001, /// Front face
1722 VK_STENCIL_FACE_BACK_BIT = 0x00000002, /// Back face
Jesse Hallc7467b72015-11-29 21:05:26 -08001723 VK_STENCIL_FRONT_AND_BACK = 0x00000003,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001724}
1725
Jesse Halla6429252015-11-29 18:59:42 -08001726/// Instance creation flags
1727type VkFlags VkInstanceCreateFlags
1728//bitfield VkInstanceCreateFlagBits {
1729//}
1730
1731/// Device creation flags
1732type VkFlags VkDeviceCreateFlags
1733//bitfield VkDeviceCreateFlagBits {
1734//}
1735
1736/// Device queue creation flags
1737type VkFlags VkDeviceQueueCreateFlags
1738//bitfield VkDeviceQueueCreateFlagBits {
1739//}
1740
1741/// Query pool creation flags
1742type VkFlags VkQueryPoolCreateFlags
1743//bitfield VkQueryPoolCreateFlagBits {
1744//}
1745
1746/// Buffer view creation flags
1747type VkFlags VkBufferViewCreateFlags
1748//bitfield VkBufferViewCreateFlagBits {
1749//}
1750
1751/// Pipeline cache creation flags
1752type VkFlags VkPipelineCacheCreateFlags
1753//bitfield VkPipelineCacheCreateFlagBits {
1754//}
1755
1756/// Pipeline shader stage creation flags
1757type VkFlags VkPipelineShaderStageCreateFlags
1758//bitfield VkPipelineShaderStageCreateFlagBits {
1759//}
1760
1761/// Descriptor set layout creation flags
1762type VkFlags VkDescriptorSetLayoutCreateFlags
Jesse Halld0599582017-03-10 18:35:38 -08001763bitfield VkDescriptorSetLayoutCreateFlagBits {
1764 //@extension("VK_KHR_push_descriptor") // 81
1765 VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
1766}
Jesse Halla6429252015-11-29 18:59:42 -08001767
1768/// Pipeline vertex input state creation flags
1769type VkFlags VkPipelineVertexInputStateCreateFlags
1770//bitfield VkPipelineVertexInputStateCreateFlagBits {
1771//}
1772
1773/// Pipeline input assembly state creation flags
1774type VkFlags VkPipelineInputAssemblyStateCreateFlags
1775//bitfield VkPipelineInputAssemblyStateCreateFlagBits {
1776//}
1777
1778/// Tessellation state creation flags
1779type VkFlags VkPipelineTessellationStateCreateFlags
1780//bitfield VkPipelineTessellationStateCreateFlagBits {
1781//}
1782
1783/// Viewport state creation flags
1784type VkFlags VkPipelineViewportStateCreateFlags
1785//bitfield VkPipelineViewportStateCreateFlagBits {
1786//}
1787
Jesse Hall3fbc8562015-11-29 22:10:52 -08001788/// Rasterization state creation flags
1789type VkFlags VkPipelineRasterizationStateCreateFlags
1790//bitfield VkPipelineRasterizationStateCreateFlagBits {
Jesse Halla6429252015-11-29 18:59:42 -08001791//}
1792
1793/// Multisample state creation flags
1794type VkFlags VkPipelineMultisampleStateCreateFlags
1795//bitfield VkPipelineMultisampleStateCreateFlagBits {
1796//}
1797
1798/// Color blend state creation flags
1799type VkFlags VkPipelineColorBlendStateCreateFlags
1800//bitfield VkPipelineColorBlendStateCreateFlagBits {
1801//}
1802
1803/// Depth/stencil state creation flags
1804type VkFlags VkPipelineDepthStencilStateCreateFlags
1805//bitfield VkPipelineDepthStencilStateCreateFlagBits {
1806//}
1807
1808/// Dynamic state creation flags
1809type VkFlags VkPipelineDynamicStateCreateFlags
1810//bitfield VkPipelineDynamicStateCreateFlagBits {
1811//}
1812
1813/// Pipeline layout creation flags
1814type VkFlags VkPipelineLayoutCreateFlags
1815//bitfield VkPipelineLayoutCreateFlagBits {
1816//}
1817
1818/// Sampler creation flags
1819type VkFlags VkSamplerCreateFlags
1820//bitfield VkSamplerCreateFlagBits {
1821//}
1822
1823/// Render pass creation flags
1824type VkFlags VkRenderPassCreateFlags
1825//bitfield VkRenderPassCreateFlagBits {
1826//}
1827
1828/// Framebuffer creation flags
1829type VkFlags VkFramebufferCreateFlags
1830//bitfield VkFramebufferCreateFlagBits {
1831//}
1832
Jesse Halldc6d36c2015-11-29 19:12:15 -08001833/// Dependency flags
1834type VkFlags VkDependencyFlags
1835bitfield VkDependencyFlagBits {
1836 VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
Jesse Halld0599582017-03-10 18:35:38 -08001837
1838 //@extension("VK_KHX_multiview") // 54
1839 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX = 0x00000002,
1840
1841 //@extension("VK_KHX_device_group") // 61
1842 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX = 0x00000004,
Jesse Halldc6d36c2015-11-29 19:12:15 -08001843}
1844
Jesse Hallc7467b72015-11-29 21:05:26 -08001845/// Cull mode flags
1846type VkFlags VkCullModeFlags
1847bitfield VkCullModeFlagBits {
1848 VK_CULL_MODE_NONE = 0x00000000,
1849 VK_CULL_MODE_FRONT_BIT = 0x00000001,
1850 VK_CULL_MODE_BACK_BIT = 0x00000002,
1851 VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
1852}
1853
Jesse Halld0599582017-03-10 18:35:38 -08001854@extension("VK_KHR_surface") // 1
Jesse Halld8bade02015-11-24 10:24:18 -08001855type VkFlags VkSurfaceTransformFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08001856@extension("VK_KHR_surface") // 1
Jesse Halld8bade02015-11-24 10:24:18 -08001857bitfield VkSurfaceTransformFlagBitsKHR {
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001858 VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
Jesse Hall9ba8bc82015-11-30 16:22:16 -08001859 VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
1860 VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
1861 VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
1862 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
1863 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
1864 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
1865 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
1866 VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
Michael Lentine88594d72015-11-12 12:49:45 -08001867}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001868
Jesse Halld0599582017-03-10 18:35:38 -08001869@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08001870type VkFlags VkCompositeAlphaFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08001871@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08001872bitfield VkCompositeAlphaFlagBitsKHR {
1873 VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
1874 VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
1875 VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
1876 VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
1877}
1878
Jesse Halld0599582017-03-10 18:35:38 -08001879@extension("VK_KHR_swapchain") // 2
Jesse Hallf4ab2b12015-11-30 16:04:55 -08001880type VkFlags VkSwapchainCreateFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08001881@extension("VK_KHR_swapchain") // 2
1882bitfield VkSwapchainCreateFlagBitsKHR {
1883 //@extension("VK_KHX_device_group") // 61
1884 VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX = 0x00000001,
1885}
Jesse Hallf4ab2b12015-11-30 16:04:55 -08001886
Jesse Halld0599582017-03-10 18:35:38 -08001887@extension("VK_KHR_display") // 3
Jesse Halld8bade02015-11-24 10:24:18 -08001888type VkFlags VkDisplayPlaneAlphaFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08001889@extension("VK_KHR_display") // 3
Jesse Halld8bade02015-11-24 10:24:18 -08001890bitfield VkDisplayPlaneAlphaFlagBitsKHR {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08001891 VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
1892 VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
1893 VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
1894 VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
Jesse Hall1356b0d2015-11-23 17:24:58 -08001895}
1896
Jesse Halld0599582017-03-10 18:35:38 -08001897@extension("VK_KHR_display") // 3
Jesse Hallf4ab2b12015-11-30 16:04:55 -08001898type VkFlags VkDisplaySurfaceCreateFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08001899//@extension("VK_KHR_display") // 3
Jesse Hallf4ab2b12015-11-30 16:04:55 -08001900//bitfield VkDisplaySurfaceCreateFlagBitsKHR {
1901//}
1902
Jesse Halld0599582017-03-10 18:35:38 -08001903@extension("VK_KHR_display") // 3
Jesse Hall9ba8bc82015-11-30 16:22:16 -08001904type VkFlags VkDisplayModeCreateFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08001905//@extension("VK_KHR_display") // 3
Jesse Hall9ba8bc82015-11-30 16:22:16 -08001906//bitfield VkDisplayModeCreateFlagBitsKHR {
1907//}
1908
Jesse Halld0599582017-03-10 18:35:38 -08001909@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001910type VkFlags VkXlibSurfaceCreateFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08001911//@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001912//bitfield VkXlibSurfaceCreateFlagBitsKHR {
1913//}
1914
Jesse Halld0599582017-03-10 18:35:38 -08001915@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001916type VkFlags VkXcbSurfaceCreateFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08001917//@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001918//bitfield VkXcbSurfaceCreateFlagBitsKHR {
1919//}
1920
Jesse Halld0599582017-03-10 18:35:38 -08001921@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001922type VkFlags VkWaylandSurfaceCreateFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08001923//@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001924//bitfield VkWaylandSurfaceCreateFlagBitsKHR {
1925//}
1926
Jesse Halld0599582017-03-10 18:35:38 -08001927@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001928type VkFlags VkMirSurfaceCreateFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08001929//@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001930//bitfield VkMirSurfaceCreateFlagBitsKHR {
1931//}
1932
Jesse Halld0599582017-03-10 18:35:38 -08001933@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001934type VkFlags VkAndroidSurfaceCreateFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08001935//@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001936//bitfield VkAndroidSurfaceCreateFlagBitsKHR {
1937//}
1938
Jesse Halld0599582017-03-10 18:35:38 -08001939@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001940type VkFlags VkWin32SurfaceCreateFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08001941//@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001942//bitfield VkWin32SurfaceCreateFlagBitsKHR {
1943//}
1944
Jesse Halld0599582017-03-10 18:35:38 -08001945@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08001946type VkFlags VkDebugReportFlagsEXT
Jesse Halld0599582017-03-10 18:35:38 -08001947@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08001948bitfield VkDebugReportFlagBitsEXT {
Jesse Halle2948d82016-02-25 04:19:32 -08001949 VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,
1950 VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002,
1951 VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004,
Jesse Hall715b86a2016-01-16 16:34:29 -08001952 VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008,
1953 VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010,
1954}
1955
Jesse Halld0599582017-03-10 18:35:38 -08001956@extension("VK_NV_external_memory_capabilities") // 56
Jesse Halleb02c472017-02-24 15:13:45 -08001957type VkFlags VkExternalMemoryHandleTypeFlagsNV
Jesse Halld0599582017-03-10 18:35:38 -08001958@extension("VK_NV_external_memory_capabilities") // 56
Jesse Halleb02c472017-02-24 15:13:45 -08001959bitfield VkExternalMemoryHandleTypeFlagBitsNV {
1960 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,
1961 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,
1962 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,
1963 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,
1964}
1965
Jesse Halld0599582017-03-10 18:35:38 -08001966@extension("VK_NV_external_memory_capabilities") // 56
Jesse Halleb02c472017-02-24 15:13:45 -08001967type VkFlags VkExternalMemoryFeatureFlagsNV
Jesse Halld0599582017-03-10 18:35:38 -08001968@extension("VK_NV_external_memory_capabilities") // 56
Jesse Halleb02c472017-02-24 15:13:45 -08001969bitfield VkExternalMemoryFeatureFlagBitsNV {
1970 VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001,
1971 VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002,
1972 VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004,
1973}
1974
Jesse Halld0599582017-03-10 18:35:38 -08001975@extension("VK_KHX_device_group") // 61
1976type VkFlags VkPeerMemoryFeatureFlagsKHX
1977@extension("VK_KHX_device_group") // 61
1978bitfield VkPeerMemoryFeatureFlagBitsKHX {
1979 VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX = 0x00000001,
1980 VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX = 0x00000002,
1981 VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX = 0x00000004,
1982 VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX = 0x00000008,
1983}
1984
1985@extension("VK_KHX_device_group") // 61
1986type VkFlags VkMemoryAllocateFlagsKHX
1987@extension("VK_KHX_device_group") // 61
1988bitfield VkMemoryAllocateFlagBitsKHX {
1989 VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX = 0x00000001,
1990}
1991
1992@extension("VK_KHX_device_group") // 61
1993type VkFlags VkDeviceGroupPresentModeFlagsKHX
1994@extension("VK_KHX_device_group") // 61
1995bitfield VkDeviceGroupPresentModeFlagBitsKHX {
1996 VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX = 0x00000001,
1997 VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX = 0x00000002,
1998 VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX = 0x00000004,
1999 VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX = 0x00000008,
2000}
2001
2002@extension("VK_NN_vi_surface") // 63
Jesse Hall08e2f482017-03-06 15:22:17 -08002003type VkFlags VkViSurfaceCreateFlagsNN
Jesse Halld0599582017-03-10 18:35:38 -08002004//@extension("VK_NN_vi_surface") // 63
Jesse Hall08e2f482017-03-06 15:22:17 -08002005//bitfield VkViSurfaceCreateFlagBitsNN {
2006//}
2007
Jesse Halld0599582017-03-10 18:35:38 -08002008@extension("VK_KHR_maintenance1") // 70
Jesse Hall08e2f482017-03-06 15:22:17 -08002009type VkFlags VkCommandPoolTrimFlagsKHR
Jesse Halld0599582017-03-10 18:35:38 -08002010//@extension("VK_KHR_maintenance1") // 70
Jesse Hall08e2f482017-03-06 15:22:17 -08002011//bitfield VkCommandPoolTrimFlagBitsKHR {
2012//}
2013
Jesse Halld0599582017-03-10 18:35:38 -08002014@extension("VK_KHX_external_memory_capabilities") // 72
2015type VkFlags VkExternalMemoryHandleTypeFlagsKHX
2016@extension("VK_KHX_external_memory_capabilities") // 72
2017bitfield VkExternalMemoryHandleTypeFlagBitsKHX {
2018 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHX = 0x00000001,
2019 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX = 0x00000002,
2020 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX = 0x00000004,
2021 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHX = 0x00000008,
2022 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHX = 0x00000010,
2023 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHX = 0x00000020,
2024 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHX = 0x00000040,
2025}
2026
2027@extension("VK_KHX_external_memory_capabilities") // 72
2028type VkFlags VkExternalMemoryFeatureFlagsKHX
2029@extension("VK_KHX_external_memory_capabilities") // 72
2030bitfield VkExternalMemoryFeatureFlagBitsKHX {
2031 VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHX = 0x00000001,
2032 VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHX = 0x00000002,
2033 VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHX = 0x00000004,
2034}
2035
2036@extension("VK_KHX_external_semaphore_capabilities") // 77
2037type VkFlags VkExternalSemaphoreHandleTypeFlagsKHX
2038@extension("VK_KHX_external_semaphore_capabilities") // 77
2039bitfield VkExternalSemaphoreHandleTypeFlagBitsKHX {
2040 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHX = 0x00000001
2041 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX = 0x00000002
2042 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX = 0x00000004
2043 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHX = 0x00000008
2044 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHX = 0x00000010
2045}
2046
2047@extension("VK_KHX_external_semaphore_capabilities") // 77
2048type VkFlags VkExternalSemaphoreFeatureFlagsKHX
2049@extension("VK_KHX_external_semaphore_capabilities") // 77
2050bitfield VkExternalSemaphoreFeatureFlagBitsKHX {
2051 VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHX = 0x00000001,
2052 VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHX = 0x00000002,
2053}
2054
2055@extension("VK_KHR_descriptor_update_template") // 86
2056type VkFlags VkDescriptorUpdateTemplateCreateFlagsKHR
2057//@extension("VK_KHR_descriptor_update_template") // 86
2058//bitfield VkDescriptorUpdateTemplateCreateFlagBitsKHR {
2059//}
2060
2061@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08002062type VkFlags VkIndirectCommandsLayoutUsageFlagsNVX
Jesse Halld0599582017-03-10 18:35:38 -08002063@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08002064bitfield VkIndirectCommandsLayoutUsageFlagBitsNVX {
2065 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = 0x00000001,
2066 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = 0x00000002,
2067 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = 0x00000004,
2068 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = 0x00000008,
2069}
2070
Jesse Halld0599582017-03-10 18:35:38 -08002071@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08002072type VkFlags VkObjectEntryUsageFlagsNVX
Jesse Halld0599582017-03-10 18:35:38 -08002073@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08002074bitfield VkObjectEntryUsageFlagBitsNVX {
2075 VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = 0x00000001,
2076 VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = 0x00000002,
2077}
2078
Jesse Halld0599582017-03-10 18:35:38 -08002079@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall08e2f482017-03-06 15:22:17 -08002080type VkFlags VkSurfaceCounterFlagsEXT
Jesse Halld0599582017-03-10 18:35:38 -08002081@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall08e2f482017-03-06 15:22:17 -08002082bitfield VkSurfaceCounterFlagBitsEXT {
2083 VK_SURFACE_COUNTER_VBLANK_EXT = 0x00000001,
2084}
Jesse Hall1356b0d2015-11-23 17:24:58 -08002085
Jesse Halld0599582017-03-10 18:35:38 -08002086@extension("VK_NV_viewport_swizzle") // 99
2087type VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV
2088//@extension("VK_NV_viewport_swizzle") // 99
2089//bitfield VkPipelineViewportSwizzleStateCreateFlagBitsNV {
2090//}
2091
2092@extension("VK_EXT_discard_rectangles") // 100
2093type VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT
2094//@extension("VK_EXT_discard_rectangles") // 100
2095//bitfield VkPipelineDiscardRectangleStateCreateFlagBitsEXT {
2096//}
2097
2098@extension("VK_MVK_ios_surface") // 123
2099type VkFlags VkIOSSurfaceCreateFlagsMVK
2100//@extension("VK_MVK_ios_surface") // 123
2101//bitfield VkIOSSurfaceCreateFlagBitsMVK {
2102//}
2103
2104@extension("VK_MVK_macos_surface") // 124
2105type VkFlags VkMacOSSurfaceCreateFlagsMVK
2106//@extension("VK_MVK_macos_surface") // 124
2107//bitfield VkMacOSSurfaceCreateFlagBitsMVK {
2108//}
2109
Jesse Halld27f6aa2015-08-15 17:58:48 -07002110//////////////////
2111// Structures //
2112//////////////////
2113
2114class VkOffset2D {
2115 s32 x
2116 s32 y
2117}
2118
2119class VkOffset3D {
2120 s32 x
2121 s32 y
2122 s32 z
2123}
2124
2125class VkExtent2D {
Jesse Hall3dd678a2016-01-08 21:52:01 -08002126 u32 width
2127 u32 height
Jesse Halld27f6aa2015-08-15 17:58:48 -07002128}
2129
2130class VkExtent3D {
Jesse Hall3dd678a2016-01-08 21:52:01 -08002131 u32 width
2132 u32 height
2133 u32 depth
Jesse Halld27f6aa2015-08-15 17:58:48 -07002134}
2135
2136class VkViewport {
Jesse Hall65ab5522015-11-30 00:07:16 -08002137 f32 x
2138 f32 y
Jesse Halld27f6aa2015-08-15 17:58:48 -07002139 f32 width
2140 f32 height
2141 f32 minDepth
2142 f32 maxDepth
2143}
2144
2145class VkRect2D {
2146 VkOffset2D offset
2147 VkExtent2D extent
2148}
2149
Jesse Halla15a4bf2015-11-19 22:48:02 -08002150class VkClearRect {
2151 VkRect2D rect
2152 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002153 u32 layerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002154}
2155
Jesse Hall65ab5522015-11-30 00:07:16 -08002156class VkComponentMapping {
2157 VkComponentSwizzle r
2158 VkComponentSwizzle g
2159 VkComponentSwizzle b
2160 VkComponentSwizzle a
Jesse Halld27f6aa2015-08-15 17:58:48 -07002161}
2162
2163class VkPhysicalDeviceProperties {
2164 u32 apiVersion
2165 u32 driverVersion
Jesse Hall65ab5522015-11-30 00:07:16 -08002166 u32 vendorID
2167 u32 deviceID
Jesse Halld27f6aa2015-08-15 17:58:48 -07002168 VkPhysicalDeviceType deviceType
Jesse Hall65ab5522015-11-30 00:07:16 -08002169 char[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE] deviceName
2170 u8[VK_UUID_SIZE] pipelineCacheUUID
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002171 VkPhysicalDeviceLimits limits
2172 VkPhysicalDeviceSparseProperties sparseProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07002173}
2174
2175class VkExtensionProperties {
Jesse Hall65ab5522015-11-30 00:07:16 -08002176 char[VK_MAX_EXTENSION_NAME_SIZE] extensionName /// extension name
Jesse Halld27f6aa2015-08-15 17:58:48 -07002177 u32 specVersion /// version of the extension specification implemented
2178}
2179
2180class VkLayerProperties {
Jesse Hall65ab5522015-11-30 00:07:16 -08002181 char[VK_MAX_EXTENSION_NAME_SIZE] layerName /// layer name
Jesse Hall3fbc8562015-11-29 22:10:52 -08002182 u32 specVersion /// version of the layer specification implemented
2183 u32 implementationVersion /// build or release version of the layer's library
Jesse Hall65ab5522015-11-30 00:07:16 -08002184 char[VK_MAX_DESCRIPTION_SIZE] description /// Free-form description of the layer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002185}
2186
Jesse Halla366a512015-11-19 22:30:07 -08002187class VkSubmitInfo {
Jesse Hall03b6fe12015-11-24 12:44:21 -08002188 VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_SUBMIT_INFO
2189 const void* pNext /// Next structure in chain
2190 u32 waitSemaphoreCount
Jesse Halla366a512015-11-19 22:30:07 -08002191 const VkSemaphore* pWaitSemaphores
Jesse Hall543a7ff2016-01-08 16:38:30 -08002192 const VkPipelineStageFlags* pWaitDstStageMask
Jesse Hall03b6fe12015-11-24 12:44:21 -08002193 u32 commandBufferCount
Jesse Hall3fbc8562015-11-29 22:10:52 -08002194 const VkCommandBuffer* pCommandBuffers
Jesse Hall03b6fe12015-11-24 12:44:21 -08002195 u32 signalSemaphoreCount
Jesse Halla366a512015-11-19 22:30:07 -08002196 const VkSemaphore* pSignalSemaphores
2197}
2198
Jesse Halld27f6aa2015-08-15 17:58:48 -07002199class VkApplicationInfo {
2200 VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_APPLICATION_INFO
2201 const void* pNext /// Next structure in chain
Jesse Hall3fbc8562015-11-29 22:10:52 -08002202 const char* pApplicationName
2203 u32 applicationVersion
Jesse Halld27f6aa2015-08-15 17:58:48 -07002204 const char* pEngineName
2205 u32 engineVersion
2206 u32 apiVersion
2207}
2208
Jesse Hall3fbc8562015-11-29 22:10:52 -08002209class VkAllocationCallbacks {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002210 void* pUserData
Jesse Hall3fbc8562015-11-29 22:10:52 -08002211 PFN_vkAllocationFunction pfnAllocation
2212 PFN_vkReallocationFunction pfnReallocation
Jesse Halld27f6aa2015-08-15 17:58:48 -07002213 PFN_vkFreeFunction pfnFree
Jesse Hall3fbc8562015-11-29 22:10:52 -08002214 PFN_vkInternalAllocationNotification pfnInternalAllocation
Jesse Hall03b6fe12015-11-24 12:44:21 -08002215 PFN_vkInternalFreeNotification pfnInternalFree
Jesse Halld27f6aa2015-08-15 17:58:48 -07002216}
2217
2218class VkDeviceQueueCreateInfo {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002219 VkStructureType sStype /// Should be VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
2220 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002221 VkDeviceQueueCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002222 u32 queueFamilyIndex
Jesse Halldba27f72015-11-30 14:25:46 -08002223 u32 queueCount
Jesse Hallfbf97b02015-11-20 14:17:03 -08002224 const f32* pQueuePriorities
Jesse Halld27f6aa2015-08-15 17:58:48 -07002225}
2226
2227class VkDeviceCreateInfo {
2228 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO
2229 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002230 VkDeviceCreateFlags flags
Jesse Halldba27f72015-11-30 14:25:46 -08002231 u32 queueCreateInfoCount
2232 const VkDeviceQueueCreateInfo* pQueueCreateInfos
Jesse Hall3dd678a2016-01-08 21:52:01 -08002233 u32 enabledLayerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002234 const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled
Jesse Hall3dd678a2016-01-08 21:52:01 -08002235 u32 enabledExtensionCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002236 const char* const* ppEnabledExtensionNames
2237 const VkPhysicalDeviceFeatures* pEnabledFeatures
Jesse Halld27f6aa2015-08-15 17:58:48 -07002238}
2239
2240class VkInstanceCreateInfo {
2241 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
2242 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002243 VkInstanceCreateFlags flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08002244 const VkApplicationInfo* pApplicationInfo
Jesse Hall3dd678a2016-01-08 21:52:01 -08002245 u32 enabledLayerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002246 const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled
Jesse Hall3dd678a2016-01-08 21:52:01 -08002247 u32 enabledExtensionCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002248 const char* const* ppEnabledExtensionNames /// Extension names to be enabled
2249}
2250
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002251class VkQueueFamilyProperties {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002252 VkQueueFlags queueFlags /// Queue flags
2253 u32 queueCount
Jesse Hallacfa5342015-11-19 21:51:33 -08002254 u32 timestampValidBits
Jesse Hall65ab5522015-11-30 00:07:16 -08002255 VkExtent3D minImageTransferGranularity
Jesse Halld27f6aa2015-08-15 17:58:48 -07002256}
2257
2258class VkPhysicalDeviceMemoryProperties {
2259 u32 memoryTypeCount
2260 VkMemoryType[VK_MAX_MEMORY_TYPES] memoryTypes
2261 u32 memoryHeapCount
2262 VkMemoryHeap[VK_MAX_MEMORY_HEAPS] memoryHeaps
2263}
2264
Jesse Hall3fbc8562015-11-29 22:10:52 -08002265class VkMemoryAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002266 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002267 const void* pNext /// Pointer to next structure
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002268 VkDeviceSize allocationSize /// Size of memory allocation
Jesse Halld27f6aa2015-08-15 17:58:48 -07002269 u32 memoryTypeIndex /// Index of the of the memory type to allocate from
2270}
2271
2272class VkMemoryRequirements {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002273 VkDeviceSize size /// Specified in bytes
2274 VkDeviceSize alignment /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002275 u32 memoryTypeBits /// Bitfield of the allowed memory type indices into memoryTypes[] for this object
2276}
2277
2278class VkSparseImageFormatProperties {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002279 VkImageAspectFlagBits aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002280 VkExtent3D imageGranularity
2281 VkSparseImageFormatFlags flags
2282}
2283
2284class VkSparseImageMemoryRequirements {
Jesse Hallb00daad2015-11-29 19:46:20 -08002285 VkSparseImageFormatProperties formatProperties
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002286 u32 imageMipTailFirstLod
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002287 VkDeviceSize imageMipTailSize /// Specified in bytes, must be a multiple of image block size / alignment
2288 VkDeviceSize imageMipTailOffset /// Specified in bytes, must be a multiple of image block size / alignment
2289 VkDeviceSize imageMipTailStride /// Specified in bytes, must be a multiple of image block size / alignment
Jesse Halld27f6aa2015-08-15 17:58:48 -07002290}
2291
2292class VkMemoryType {
2293 VkMemoryPropertyFlags propertyFlags /// Memory properties of this memory type
2294 u32 heapIndex /// Index of the memory heap allocations of this memory type are taken from
2295}
2296
2297class VkMemoryHeap {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002298 VkDeviceSize size /// Available memory in the heap
Jesse Halld27f6aa2015-08-15 17:58:48 -07002299 VkMemoryHeapFlags flags /// Flags for the heap
2300}
2301
2302class VkMappedMemoryRange {
2303 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
2304 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002305 VkDeviceMemory memory /// Mapped memory object
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002306 VkDeviceSize offset /// Offset within the mapped memory the range starts from
2307 VkDeviceSize size /// Size of the range within the mapped memory
Jesse Halld27f6aa2015-08-15 17:58:48 -07002308}
2309
2310class VkFormatProperties {
2311 VkFormatFeatureFlags linearTilingFeatures /// Format features in case of linear tiling
2312 VkFormatFeatureFlags optimalTilingFeatures /// Format features in case of optimal tiling
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002313 VkFormatFeatureFlags bufferFeatures /// Format features supported by buffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07002314}
2315
2316class VkImageFormatProperties {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002317 VkExtent3D maxExtent /// max image dimensions for this resource type
2318 u32 maxMipLevels /// max number of mipmap levels for this resource type
Jesse Halla15a4bf2015-11-19 22:48:02 -08002319 u32 maxArrayLayers /// max array layers for this resource type
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002320 VkSampleCountFlags sampleCounts /// supported sample counts for this resource type
2321 VkDeviceSize maxResourceSize /// max size (in bytes) of this resource type
2322}
2323
Jesse Halla15a4bf2015-11-19 22:48:02 -08002324class VkDescriptorImageInfo {
2325 VkSampler sampler
2326 VkImageView imageView
2327 VkImageLayout imageLayout
2328}
2329
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002330class VkDescriptorBufferInfo {
2331 VkBuffer buffer /// Buffer used for this descriptor when the descriptor is UNIFORM_BUFFER[_DYNAMIC]
2332 VkDeviceSize offset /// Base offset from buffer start in bytes to update in the descriptor set.
2333 VkDeviceSize range /// Size in bytes of the buffer resource for this descriptor update.
Jesse Halld27f6aa2015-08-15 17:58:48 -07002334}
2335
Jesse Halld27f6aa2015-08-15 17:58:48 -07002336class VkWriteDescriptorSet {
2337 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
2338 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002339 VkDescriptorSet dstSet /// Destination descriptor set
2340 u32 dstBinding /// Binding within the destination descriptor set to write
2341 u32 dstArrayElement /// Array element within the destination binding to write
Jesse Hall03b6fe12015-11-24 12:44:21 -08002342 u32 descriptorCount /// Number of descriptors to write (determines the size of the array pointed by <pDescriptors>)
Jesse Halld27f6aa2015-08-15 17:58:48 -07002343 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 -08002344 const VkDescriptorImageInfo* pImageInfo
2345 const VkDescriptorBufferInfo* pBufferInfo
2346 const VkBufferView* pTexelBufferView
Jesse Halld27f6aa2015-08-15 17:58:48 -07002347}
2348
2349class VkCopyDescriptorSet {
2350 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET
2351 const void* pNext /// Pointer to next structure
2352 VkDescriptorSet srcSet /// Source descriptor set
2353 u32 srcBinding /// Binding within the source descriptor set to copy from
2354 u32 srcArrayElement /// Array element within the source binding to copy from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002355 VkDescriptorSet dstSet /// Destination descriptor set
2356 u32 dstBinding /// Binding within the destination descriptor set to copy to
2357 u32 dstArrayElement /// Array element within the destination binding to copy to
Jesse Hall03b6fe12015-11-24 12:44:21 -08002358 u32 descriptorCount /// Number of descriptors to copy
Jesse Halld27f6aa2015-08-15 17:58:48 -07002359}
2360
2361class VkBufferCreateInfo {
2362 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
2363 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002364 VkBufferCreateFlags flags /// Buffer creation flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002365 VkDeviceSize size /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002366 VkBufferUsageFlags usage /// Buffer usage flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002367 VkSharingMode sharingMode
Jesse Hall03b6fe12015-11-24 12:44:21 -08002368 u32 queueFamilyIndexCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002369 const u32* pQueueFamilyIndices
2370}
2371
2372class VkBufferViewCreateInfo {
2373 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO
2374 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002375 VkBufferViewCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002376 VkBuffer buffer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002377 VkFormat format /// Optionally specifies format of elements
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002378 VkDeviceSize offset /// Specified in bytes
2379 VkDeviceSize range /// View size specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002380}
2381
2382class VkImageSubresource {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002383 VkImageAspectFlagBits aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002384 u32 mipLevel
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002385 u32 arrayLayer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002386}
2387
2388class VkImageSubresourceRange {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002389 VkImageAspectFlags aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002390 u32 baseMipLevel
Jesse Hall3fbc8562015-11-29 22:10:52 -08002391 u32 levelCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002392 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002393 u32 layerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002394}
2395
2396class VkMemoryBarrier {
2397 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_BARRIER
2398 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002399 VkAccessFlags srcAccessMask
2400 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002401}
2402
2403class VkBufferMemoryBarrier {
2404 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
2405 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002406 VkAccessFlags srcAccessMask
2407 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002408 u32 srcQueueFamilyIndex /// Queue family to transition ownership from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002409 u32 dstQueueFamilyIndex /// Queue family to transition ownership to
Jesse Halld27f6aa2015-08-15 17:58:48 -07002410 VkBuffer buffer /// Buffer to sync
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002411 VkDeviceSize offset /// Offset within the buffer to sync
2412 VkDeviceSize size /// Amount of bytes to sync
Jesse Halld27f6aa2015-08-15 17:58:48 -07002413}
2414
2415class VkImageMemoryBarrier {
2416 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
2417 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002418 VkAccessFlags srcAccessMask
2419 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002420 VkImageLayout oldLayout /// Current layout of the image
2421 VkImageLayout newLayout /// New layout to transition the image to
2422 u32 srcQueueFamilyIndex /// Queue family to transition ownership from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002423 u32 dstQueueFamilyIndex /// Queue family to transition ownership to
Jesse Halld27f6aa2015-08-15 17:58:48 -07002424 VkImage image /// Image to sync
2425 VkImageSubresourceRange subresourceRange /// Subresource range to sync
2426}
2427
2428class VkImageCreateInfo {
2429 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
2430 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002431 VkImageCreateFlags flags /// Image creation flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002432 VkImageType imageType
2433 VkFormat format
2434 VkExtent3D extent
2435 u32 mipLevels
Jesse Halla15a4bf2015-11-19 22:48:02 -08002436 u32 arrayLayers
Jesse Hall091ed9e2015-11-30 00:55:29 -08002437 VkSampleCountFlagBits samples
Jesse Halld27f6aa2015-08-15 17:58:48 -07002438 VkImageTiling tiling
2439 VkImageUsageFlags usage /// Image usage flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002440 VkSharingMode sharingMode /// Cross-queue-family sharing mode
Jesse Hall03b6fe12015-11-24 12:44:21 -08002441 u32 queueFamilyIndexCount /// Number of queue families to share across
Jesse Halld27f6aa2015-08-15 17:58:48 -07002442 const u32* pQueueFamilyIndices /// Array of queue family indices to share across
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002443 VkImageLayout initialLayout /// Initial image layout for all subresources
Jesse Halld27f6aa2015-08-15 17:58:48 -07002444}
2445
2446class VkSubresourceLayout {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002447 VkDeviceSize offset /// Specified in bytes
2448 VkDeviceSize size /// Specified in bytes
2449 VkDeviceSize rowPitch /// Specified in bytes
Jesse Hall543a7ff2016-01-08 16:38:30 -08002450 VkDeviceSize arrayPitch /// Specified in bytes
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002451 VkDeviceSize depthPitch /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002452}
2453
2454class VkImageViewCreateInfo {
2455 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
2456 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002457 VkImageViewCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002458 VkImage image
2459 VkImageViewType viewType
2460 VkFormat format
Jesse Hall65ab5522015-11-30 00:07:16 -08002461 VkComponentMapping components
Jesse Halld27f6aa2015-08-15 17:58:48 -07002462 VkImageSubresourceRange subresourceRange
Jesse Halld27f6aa2015-08-15 17:58:48 -07002463}
2464
2465class VkBufferCopy {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002466 VkDeviceSize srcOffset /// Specified in bytes
Jesse Hall3fbc8562015-11-29 22:10:52 -08002467 VkDeviceSize dstOffset /// Specified in bytes
Jesse Hallb00daad2015-11-29 19:46:20 -08002468 VkDeviceSize size /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002469}
2470
Jesse Halla6429252015-11-29 18:59:42 -08002471class VkSparseMemoryBind {
Jesse Hallb00daad2015-11-29 19:46:20 -08002472 VkDeviceSize resourceOffset /// Specified in bytes
2473 VkDeviceSize size /// Specified in bytes
Jesse Hall3fbc8562015-11-29 22:10:52 -08002474 VkDeviceMemory memory
2475 VkDeviceSize memoryOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002476 VkSparseMemoryBindFlags flags
2477}
2478
Jesse Halla6429252015-11-29 18:59:42 -08002479class VkSparseImageMemoryBind {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002480 VkImageSubresource subresource
2481 VkOffset3D offset
2482 VkExtent3D extent
Jesse Hall3fbc8562015-11-29 22:10:52 -08002483 VkDeviceMemory memory
2484 VkDeviceSize memoryOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002485 VkSparseMemoryBindFlags flags
2486}
2487
Jesse Halla6429252015-11-29 18:59:42 -08002488class VkSparseBufferMemoryBindInfo {
2489 VkBuffer buffer
2490 u32 bindCount
2491 const VkSparseMemoryBind* pBinds
2492}
2493
2494class VkSparseImageOpaqueMemoryBindInfo {
2495 VkImage image
2496 u32 bindCount
2497 const VkSparseMemoryBind* pBinds
2498}
2499
2500class VkSparseImageMemoryBindInfo {
2501 VkImage image
2502 u32 bindCount
2503 const VkSparseMemoryBind* pBinds
2504}
2505
2506class VkBindSparseInfo {
2507 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BIND_SPARSE_INFO
2508 const void* pNext
2509 u32 waitSemaphoreCount
2510 const VkSemaphore* pWaitSemaphores
2511 u32 numBufferBinds
2512 const VkSparseBufferMemoryBindInfo* pBufferBinds
2513 u32 numImageOpaqueBinds
2514 const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds
2515 u32 numImageBinds
2516 const VkSparseImageMemoryBindInfo* pImageBinds
2517 u32 signalSemaphoreCount
2518 const VkSemaphore* pSignalSemaphores
2519}
2520
Jesse Hall65ab5522015-11-30 00:07:16 -08002521class VkImageSubresourceLayers {
2522 VkImageAspectFlags aspectMask
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002523 u32 mipLevel
Jesse Halla15a4bf2015-11-19 22:48:02 -08002524 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002525 u32 layerCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002526}
2527
Jesse Halld27f6aa2015-08-15 17:58:48 -07002528class VkImageCopy {
Jesse Hall65ab5522015-11-30 00:07:16 -08002529 VkImageSubresourceLayers srcSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07002530 VkOffset3D srcOffset /// Specified in pixels for both compressed and uncompressed images
Jesse Hall65ab5522015-11-30 00:07:16 -08002531 VkImageSubresourceLayers dstSubresource
Jesse Hall3fbc8562015-11-29 22:10:52 -08002532 VkOffset3D dstOffset /// Specified in pixels for both compressed and uncompressed images
Jesse Halld27f6aa2015-08-15 17:58:48 -07002533 VkExtent3D extent /// Specified in pixels for both compressed and uncompressed images
2534}
2535
2536class VkImageBlit {
Jesse Hall65ab5522015-11-30 00:07:16 -08002537 VkImageSubresourceLayers srcSubresource
Jesse Hall3dd678a2016-01-08 21:52:01 -08002538 VkOffset3D[2] srcOffsets
Jesse Hall65ab5522015-11-30 00:07:16 -08002539 VkImageSubresourceLayers dstSubresource
Jesse Hall3dd678a2016-01-08 21:52:01 -08002540 VkOffset3D[2] dstOffsets
Jesse Halld27f6aa2015-08-15 17:58:48 -07002541}
2542
2543class VkBufferImageCopy {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002544 VkDeviceSize bufferOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002545 u32 bufferRowLength /// Specified in texels
2546 u32 bufferImageHeight
Jesse Hall65ab5522015-11-30 00:07:16 -08002547 VkImageSubresourceLayers imageSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07002548 VkOffset3D imageOffset /// Specified in pixels for both compressed and uncompressed images
2549 VkExtent3D imageExtent /// Specified in pixels for both compressed and uncompressed images
2550}
2551
2552class VkImageResolve {
Jesse Hall65ab5522015-11-30 00:07:16 -08002553 VkImageSubresourceLayers srcSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07002554 VkOffset3D srcOffset
Jesse Hall65ab5522015-11-30 00:07:16 -08002555 VkImageSubresourceLayers dstSubresource
Jesse Hall3fbc8562015-11-29 22:10:52 -08002556 VkOffset3D dstOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07002557 VkExtent3D extent
2558}
2559
2560class VkShaderModuleCreateInfo {
2561 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
2562 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002563 VkShaderModuleCreateFlags flags /// Reserved
Jesse Halld27f6aa2015-08-15 17:58:48 -07002564 platform.size_t codeSize /// Specified in bytes
Jesse Halla9bb62b2015-11-21 19:31:56 -08002565 const u32* pCode /// Binary code of size codeSize
Jesse Halld27f6aa2015-08-15 17:58:48 -07002566}
2567
Jesse Halld27f6aa2015-08-15 17:58:48 -07002568class VkDescriptorSetLayoutBinding {
Jesse Hall091ed9e2015-11-30 00:55:29 -08002569 u32 binding
Jesse Halld27f6aa2015-08-15 17:58:48 -07002570 VkDescriptorType descriptorType /// Type of the descriptors in this binding
Jesse Halldba27f72015-11-30 14:25:46 -08002571 u32 descriptorCount /// Number of descriptors in this binding
Jesse Halld27f6aa2015-08-15 17:58:48 -07002572 VkShaderStageFlags stageFlags /// Shader stages this binding is visible to
2573 const VkSampler* pImmutableSamplers /// Immutable samplers (used if descriptor type is SAMPLER or COMBINED_IMAGE_SAMPLER, is either NULL or contains <count> number of elements)
2574}
2575
2576class VkDescriptorSetLayoutCreateInfo {
2577 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
2578 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002579 VkDescriptorSetLayoutCreateFlags flags
Jesse Hall03b6fe12015-11-24 12:44:21 -08002580 u32 bindingCount /// Number of bindings in the descriptor set layout
Jesse Hall543a7ff2016-01-08 16:38:30 -08002581 const VkDescriptorSetLayoutBinding* pBindings /// Array of descriptor set layout bindings
Jesse Halld27f6aa2015-08-15 17:58:48 -07002582}
2583
Jesse Hall65ab5522015-11-30 00:07:16 -08002584class VkDescriptorPoolSize {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002585 VkDescriptorType type
Jesse Hall03b6fe12015-11-24 12:44:21 -08002586 u32 descriptorCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002587}
2588
2589class VkDescriptorPoolCreateInfo {
2590 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
2591 const void* pNext /// Pointer to next structure
Jesse Hallfbf97b02015-11-20 14:17:03 -08002592 VkDescriptorPoolCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002593 u32 maxSets
Jesse Hall65ab5522015-11-30 00:07:16 -08002594 u32 poolSizeCount
2595 const VkDescriptorPoolSize* pPoolSizes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002596}
2597
Jesse Hall3fbc8562015-11-29 22:10:52 -08002598class VkDescriptorSetAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002599 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
Jesse Hallfbf97b02015-11-20 14:17:03 -08002600 const void* pNext /// Pointer to next structure
2601 VkDescriptorPool descriptorPool
Jesse Hall03b6fe12015-11-24 12:44:21 -08002602 u32 setCount
Jesse Hallfbf97b02015-11-20 14:17:03 -08002603 const VkDescriptorSetLayout* pSetLayouts
2604}
2605
Jesse Halld27f6aa2015-08-15 17:58:48 -07002606class VkSpecializationMapEntry {
Jesse Hall65ab5522015-11-30 00:07:16 -08002607 u32 constantID /// The SpecConstant ID specified in the BIL
Jesse Halld27f6aa2015-08-15 17:58:48 -07002608 u32 offset /// Offset of the value in the data block
Jesse Hallb00daad2015-11-29 19:46:20 -08002609 platform.size_t size /// Size in bytes of the SpecConstant
Jesse Halld27f6aa2015-08-15 17:58:48 -07002610}
2611
2612class VkSpecializationInfo {
2613 u32 mapEntryCount /// Number of entries in the map
Jesse Hallb00daad2015-11-29 19:46:20 -08002614 const VkSpecializationMapEntry* pMapEntries /// Array of map entries
Jesse Halld27f6aa2015-08-15 17:58:48 -07002615 platform.size_t dataSize /// Size in bytes of pData
2616 const void* pData /// Pointer to SpecConstant data
2617}
2618
2619class VkPipelineShaderStageCreateInfo {
2620 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
2621 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002622 VkPipelineShaderStageCreateFlags flags
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002623 VkShaderStageFlagBits stage
2624 VkShaderModule module
2625 const char* pName
Jesse Halld27f6aa2015-08-15 17:58:48 -07002626 const VkSpecializationInfo* pSpecializationInfo
2627}
2628
2629class VkComputePipelineCreateInfo {
2630 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
2631 const void* pNext /// Pointer to next structure
Jesse Halld27f6aa2015-08-15 17:58:48 -07002632 VkPipelineCreateFlags flags /// Pipeline creation flags
Jesse Halla6429252015-11-29 18:59:42 -08002633 VkPipelineShaderStageCreateInfo stage
Jesse Halld27f6aa2015-08-15 17:58:48 -07002634 VkPipelineLayout layout /// Interface layout of the pipeline
2635 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
2636 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
2637}
2638
2639class VkVertexInputBindingDescription {
Jesse Hallb00daad2015-11-29 19:46:20 -08002640 u32 binding /// Vertex buffer binding id
2641 u32 stride /// Distance between vertices in bytes (0 = no advancement)
Jesse Hall65ab5522015-11-30 00:07:16 -08002642 VkVertexInputRate inputRate /// Rate at which binding is incremented
Jesse Halld27f6aa2015-08-15 17:58:48 -07002643}
2644
2645class VkVertexInputAttributeDescription {
Jesse Hallb00daad2015-11-29 19:46:20 -08002646 u32 location /// location of the shader vertex attrib
2647 u32 binding /// Vertex buffer binding id
2648 VkFormat format /// format of source data
2649 u32 offset /// Offset of first element in bytes from base of vertex
Jesse Halld27f6aa2015-08-15 17:58:48 -07002650}
2651
2652class VkPipelineVertexInputStateCreateInfo {
Jesse Hall03b6fe12015-11-24 12:44:21 -08002653 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
2654 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002655 VkPipelineVertexInputStateCreateFlags flags
Jesse Hall03b6fe12015-11-24 12:44:21 -08002656 u32 vertexBindingDescriptionCount /// number of bindings
Jesse Halld27f6aa2015-08-15 17:58:48 -07002657 const VkVertexInputBindingDescription* pVertexBindingDescriptions
Jesse Hall03b6fe12015-11-24 12:44:21 -08002658 u32 vertexAttributeDescriptionCount /// number of attributes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002659 const VkVertexInputAttributeDescription* pVertexAttributeDescriptions
2660}
2661
2662class VkPipelineInputAssemblyStateCreateInfo {
2663 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
2664 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002665 VkPipelineInputAssemblyStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002666 VkPrimitiveTopology topology
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002667 VkBool32 primitiveRestartEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002668}
2669
2670class VkPipelineTessellationStateCreateInfo {
2671 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
2672 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002673 VkPipelineTessellationStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002674 u32 patchControlPoints
2675}
2676
2677class VkPipelineViewportStateCreateInfo {
2678 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
2679 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002680 VkPipelineViewportStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002681 u32 viewportCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002682 const VkViewport* pViewports
2683 u32 scissorCount
2684 const VkRect2D* pScissors
Jesse Halld27f6aa2015-08-15 17:58:48 -07002685}
2686
Jesse Hall3fbc8562015-11-29 22:10:52 -08002687class VkPipelineRasterizationStateCreateInfo {
Jesse Hall65ab5522015-11-30 00:07:16 -08002688 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002689 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002690 VkPipelineRasterizationStateCreateFlags flags
Jesse Hallae38f732015-11-19 21:32:50 -08002691 VkBool32 depthClampEnable
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002692 VkBool32 rasterizerDiscardEnable
Jesse Hall65ab5522015-11-30 00:07:16 -08002693 VkPolygonMode polygonMode /// optional (GL45)
Jesse Hallc7467b72015-11-29 21:05:26 -08002694 VkCullModeFlags cullMode
Jesse Halld27f6aa2015-08-15 17:58:48 -07002695 VkFrontFace frontFace
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002696 VkBool32 depthBiasEnable
Jesse Halla9bb62b2015-11-21 19:31:56 -08002697 f32 depthBiasConstantFactor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002698 f32 depthBiasClamp
Jesse Halla9bb62b2015-11-21 19:31:56 -08002699 f32 depthBiasSlopeFactor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002700 f32 lineWidth
Jesse Halld27f6aa2015-08-15 17:58:48 -07002701}
2702
2703class VkPipelineMultisampleStateCreateInfo {
2704 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
2705 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002706 VkPipelineMultisampleStateCreateFlags flags
Jesse Hall091ed9e2015-11-30 00:55:29 -08002707 VkSampleCountFlagBits rasterizationSamples /// Number of samples used for rasterization
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002708 VkBool32 sampleShadingEnable /// optional (GL45)
Jesse Halld27f6aa2015-08-15 17:58:48 -07002709 f32 minSampleShading /// optional (GL45)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002710 const VkSampleMask* pSampleMask
Jesse Hallacfa5342015-11-19 21:51:33 -08002711 VkBool32 alphaToCoverageEnable
2712 VkBool32 alphaToOneEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002713}
2714
2715class VkPipelineColorBlendAttachmentState {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002716 VkBool32 blendEnable
Jesse Hall65ab5522015-11-30 00:07:16 -08002717 VkBlendFactor srcColorBlendFactor
2718 VkBlendFactor dstColorBlendFactor
2719 VkBlendOp colorBlendOp
2720 VkBlendFactor srcAlphaBlendFactor
2721 VkBlendFactor dstAlphaBlendFactor
2722 VkBlendOp alphaBlendOp
2723 VkColorComponentFlags colorWriteMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002724}
2725
2726class VkPipelineColorBlendStateCreateInfo {
2727 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
2728 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002729 VkPipelineColorBlendStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002730 VkBool32 logicOpEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002731 VkLogicOp logicOp
2732 u32 attachmentCount /// # of pAttachments
2733 const VkPipelineColorBlendAttachmentState* pAttachments
Jesse Hallb00daad2015-11-29 19:46:20 -08002734 f32[4] blendConstants
Jesse Halld27f6aa2015-08-15 17:58:48 -07002735}
2736
2737class VkStencilOpState {
Jesse Hall65ab5522015-11-30 00:07:16 -08002738 VkStencilOp failOp
2739 VkStencilOp passOp
2740 VkStencilOp depthFailOp
2741 VkCompareOp compareOp
2742 u32 compareMask
2743 u32 writeMask
2744 u32 reference
Jesse Halld27f6aa2015-08-15 17:58:48 -07002745}
2746
2747class VkPipelineDepthStencilStateCreateInfo {
2748 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
2749 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002750 VkPipelineDepthStencilStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002751 VkBool32 depthTestEnable
2752 VkBool32 depthWriteEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002753 VkCompareOp depthCompareOp
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002754 VkBool32 depthBoundsTestEnable /// optional (depth_bounds_test)
2755 VkBool32 stencilTestEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002756 VkStencilOpState front
2757 VkStencilOpState back
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002758 f32 minDepthBounds
2759 f32 maxDepthBounds
2760}
2761
2762class VkPipelineDynamicStateCreateInfo {
2763 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
2764 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002765 VkPipelineDynamicStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002766 u32 dynamicStateCount
2767 const VkDynamicState* pDynamicStates
Jesse Halld27f6aa2015-08-15 17:58:48 -07002768}
2769
2770class VkGraphicsPipelineCreateInfo {
Jesse Halla6429252015-11-29 18:59:42 -08002771 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
2772 const void* pNext /// Pointer to next structure
2773 VkPipelineCreateFlags flags /// Pipeline creation flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002774 u32 stageCount
Jesse Halla6429252015-11-29 18:59:42 -08002775 const VkPipelineShaderStageCreateInfo* pStages /// One entry for each active shader stage
Jesse Halld27f6aa2015-08-15 17:58:48 -07002776 const VkPipelineVertexInputStateCreateInfo* pVertexInputState
2777 const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState
2778 const VkPipelineTessellationStateCreateInfo* pTessellationState
2779 const VkPipelineViewportStateCreateInfo* pViewportState
Jesse Hall3fbc8562015-11-29 22:10:52 -08002780 const VkPipelineRasterizationStateCreateInfo* pRasterizationState
Jesse Halld27f6aa2015-08-15 17:58:48 -07002781 const VkPipelineMultisampleStateCreateInfo* pMultisampleState
2782 const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState
2783 const VkPipelineColorBlendStateCreateInfo* pColorBlendState
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002784 const VkPipelineDynamicStateCreateInfo* pDynamicState
Jesse Halla6429252015-11-29 18:59:42 -08002785 VkPipelineLayout layout /// Interface layout of the pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07002786 VkRenderPass renderPass
2787 u32 subpass
Jesse Halla6429252015-11-29 18:59:42 -08002788 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
2789 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 -07002790}
2791
2792class VkPipelineCacheCreateInfo {
Jesse Hallb00daad2015-11-29 19:46:20 -08002793 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
2794 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002795 VkPipelineCacheCreateFlags flags
Jesse Hallb00daad2015-11-29 19:46:20 -08002796 platform.size_t initialDataSize /// Size of initial data to populate cache, in bytes
2797 const void* pInitialData /// Initial data to populate cache
Jesse Halld27f6aa2015-08-15 17:58:48 -07002798}
2799
2800class VkPushConstantRange {
2801 VkShaderStageFlags stageFlags /// Which stages use the range
Jesse Hall03b6fe12015-11-24 12:44:21 -08002802 u32 offset /// Start of the range, in bytes
2803 u32 size /// Length of the range, in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002804}
2805
2806class VkPipelineLayoutCreateInfo {
2807 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
2808 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002809 VkPipelineLayoutCreateFlags flags
Jesse Hall3dd678a2016-01-08 21:52:01 -08002810 u32 descriptorSetCount /// Number of descriptor sets interfaced by the pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07002811 const VkDescriptorSetLayout* pSetLayouts /// Array of <setCount> number of descriptor set layout objects defining the layout of the
2812 u32 pushConstantRangeCount /// Number of push-constant ranges used by the pipeline
2813 const VkPushConstantRange* pPushConstantRanges /// Array of pushConstantRangeCount number of ranges used by various shader stages
2814}
2815
2816class VkSamplerCreateInfo {
2817 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
2818 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002819 VkSamplerCreateFlags flags
Jesse Hall23ff73f2015-11-29 14:36:39 -08002820 VkFilter magFilter /// Filter mode for magnification
2821 VkFilter minFilter /// Filter mode for minifiation
2822 VkSamplerMipmapMode mipmapMode /// Mipmap selection mode
2823 VkSamplerAddressMode addressModeU
2824 VkSamplerAddressMode addressModeV
2825 VkSamplerAddressMode addressModeW
Jesse Halld27f6aa2015-08-15 17:58:48 -07002826 f32 mipLodBias
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002827 VkBool32 anisotropyEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002828 f32 maxAnisotropy
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002829 VkBool32 compareEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002830 VkCompareOp compareOp
2831 f32 minLod
2832 f32 maxLod
2833 VkBorderColor borderColor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002834 VkBool32 unnormalizedCoordinates
Jesse Halld27f6aa2015-08-15 17:58:48 -07002835}
2836
Jesse Hall3fbc8562015-11-29 22:10:52 -08002837class VkCommandPoolCreateInfo {
2838 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002839 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002840 VkCommandPoolCreateFlags flags /// Command pool creation flags
Jesse Halla6429252015-11-29 18:59:42 -08002841 u32 queueFamilyIndex
Jesse Halld27f6aa2015-08-15 17:58:48 -07002842}
2843
Jesse Hall3fbc8562015-11-29 22:10:52 -08002844class VkCommandBufferAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002845 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002846 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002847 VkCommandPool commandPool
2848 VkCommandBufferLevel level
Jesse Hall3dd678a2016-01-08 21:52:01 -08002849 u32 commandBufferCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002850}
2851
Jesse Hall3dd678a2016-01-08 21:52:01 -08002852class VkCommandBufferInheritanceInfo {
2853 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002854 const void* pNext /// Pointer to next structure
Jesse Halld27f6aa2015-08-15 17:58:48 -07002855 VkRenderPass renderPass /// Render pass for secondary command buffers
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002856 u32 subpass
Jesse Halld27f6aa2015-08-15 17:58:48 -07002857 VkFramebuffer framebuffer /// Framebuffer for secondary command buffers
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002858 VkBool32 occlusionQueryEnable
2859 VkQueryControlFlags queryFlags
2860 VkQueryPipelineStatisticFlags pipelineStatistics
Jesse Halld27f6aa2015-08-15 17:58:48 -07002861}
2862
Jesse Hall3dd678a2016-01-08 21:52:01 -08002863class VkCommandBufferBeginInfo {
2864 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
2865 const void* pNext /// Pointer to next structure
2866 VkCommandBufferUsageFlags flags /// Command buffer usage flags
2867 const VkCommandBufferInheritanceInfo* pInheritanceInfo
2868}
2869
Jesse Halld27f6aa2015-08-15 17:58:48 -07002870class VkRenderPassBeginInfo {
2871 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
2872 const void* pNext /// Pointer to next structure
2873 VkRenderPass renderPass
2874 VkFramebuffer framebuffer
2875 VkRect2D renderArea
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002876 u32 clearValueCount
2877 const VkClearValue* pClearValues
Jesse Halld27f6aa2015-08-15 17:58:48 -07002878}
2879
2880@union
2881/// Union allowing specification of floating point, integer, or unsigned integer color data. Actual value selected is based on image/attachment being cleared.
2882class VkClearColorValue {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002883 f32[4] float32
2884 s32[4] int32
2885 u32[4] uint32
Jesse Halld27f6aa2015-08-15 17:58:48 -07002886}
2887
2888class VkClearDepthStencilValue {
2889 f32 depth
2890 u32 stencil
2891}
2892
2893@union
2894/// Union allowing specification of color, depth, and stencil color values. Actual value selected is based on attachment being cleared.
2895class VkClearValue {
2896 VkClearColorValue color
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002897 VkClearDepthStencilValue depthStencil
Jesse Halld27f6aa2015-08-15 17:58:48 -07002898}
2899
Jesse Hallae38f732015-11-19 21:32:50 -08002900class VkClearAttachment {
2901 VkImageAspectFlags aspectMask
2902 u32 colorAttachment
2903 VkClearValue clearValue
2904}
2905
Jesse Halld27f6aa2015-08-15 17:58:48 -07002906class VkAttachmentDescription {
Jesse Halla6429252015-11-29 18:59:42 -08002907 VkAttachmentDescriptionFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002908 VkFormat format
Jesse Hall091ed9e2015-11-30 00:55:29 -08002909 VkSampleCountFlagBits samples
Jesse Halld27f6aa2015-08-15 17:58:48 -07002910 VkAttachmentLoadOp loadOp /// Load op for color or depth data
2911 VkAttachmentStoreOp storeOp /// Store op for color or depth data
2912 VkAttachmentLoadOp stencilLoadOp /// Load op for stencil data
2913 VkAttachmentStoreOp stencilStoreOp /// Store op for stencil data
2914 VkImageLayout initialLayout
2915 VkImageLayout finalLayout
2916}
2917
2918class VkAttachmentReference {
2919 u32 attachment
2920 VkImageLayout layout
2921}
2922
2923class VkSubpassDescription {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002924 VkSubpassDescriptionFlags flags
Jesse Halla6429252015-11-29 18:59:42 -08002925 VkPipelineBindPoint pipelineBindPoint /// Must be VK_PIPELINE_BIND_POINT_GRAPHICS for now
Jesse Hall03b6fe12015-11-24 12:44:21 -08002926 u32 inputAttachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002927 const VkAttachmentReference* pInputAttachments
Jesse Hall03b6fe12015-11-24 12:44:21 -08002928 u32 colorAttachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002929 const VkAttachmentReference* pColorAttachments
2930 const VkAttachmentReference* pResolveAttachments
Jesse Hallc7467b72015-11-29 21:05:26 -08002931 const VkAttachmentReference* pDepthStencilAttachment
Jesse Hall03b6fe12015-11-24 12:44:21 -08002932 u32 preserveAttachmentCount
Jesse Hall3dd678a2016-01-08 21:52:01 -08002933 const u32* pPreserveAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07002934}
2935
2936class VkSubpassDependency {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002937 u32 srcSubpass
Jesse Hall3fbc8562015-11-29 22:10:52 -08002938 u32 dstSubpass
Jesse Halld27f6aa2015-08-15 17:58:48 -07002939 VkPipelineStageFlags srcStageMask
Jesse Hall3fbc8562015-11-29 22:10:52 -08002940 VkPipelineStageFlags dstStageMask
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002941 VkAccessFlags srcAccessMask
2942 VkAccessFlags dstAccessMask
Jesse Halldc6d36c2015-11-29 19:12:15 -08002943 VkDependencyFlags dependencyFlags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002944}
2945
2946class VkRenderPassCreateInfo {
2947 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
2948 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002949 VkRenderPassCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002950 u32 attachmentCount
2951 const VkAttachmentDescription* pAttachments
2952 u32 subpassCount
2953 const VkSubpassDescription* pSubpasses
2954 u32 dependencyCount
2955 const VkSubpassDependency* pDependencies
2956}
2957
2958class VkEventCreateInfo {
2959 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_EVENT_CREATE_INFO
2960 const void* pNext /// Pointer to next structure
2961 VkEventCreateFlags flags /// Event creation flags
2962}
2963
2964class VkFenceCreateInfo {
2965 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FENCE_CREATE_INFO
2966 const void* pNext /// Pointer to next structure
2967 VkFenceCreateFlags flags /// Fence creation flags
2968}
2969
2970class VkPhysicalDeviceFeatures {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002971 VkBool32 robustBufferAccess /// out of bounds buffer accesses are well defined
2972 VkBool32 fullDrawIndexUint32 /// full 32-bit range of indices for indexed draw calls
2973 VkBool32 imageCubeArray /// image views which are arrays of cube maps
2974 VkBool32 independentBlend /// blending operations are controlled per-attachment
2975 VkBool32 geometryShader /// geometry stage
2976 VkBool32 tessellationShader /// tessellation control and evaluation stage
2977 VkBool32 sampleRateShading /// per-sample shading and interpolation
Jesse Hall3fbc8562015-11-29 22:10:52 -08002978 VkBool32 dualSrcBlend /// blend operations which take two sources
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002979 VkBool32 logicOp /// logic operations
2980 VkBool32 multiDrawIndirect /// multi draw indirect
Jesse Hall543a7ff2016-01-08 16:38:30 -08002981 VkBool32 drawIndirectFirstInstance
Jesse Hallae38f732015-11-19 21:32:50 -08002982 VkBool32 depthClamp /// depth clamping
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002983 VkBool32 depthBiasClamp /// depth bias clamping
2984 VkBool32 fillModeNonSolid /// point and wireframe fill modes
2985 VkBool32 depthBounds /// depth bounds test
2986 VkBool32 wideLines /// lines with width greater than 1
2987 VkBool32 largePoints /// points with size greater than 1
Jesse Hallfbf97b02015-11-20 14:17:03 -08002988 VkBool32 alphaToOne /// The fragment alpha channel can be forced to maximum representable alpha value
2989 VkBool32 multiViewport
2990 VkBool32 samplerAnisotropy
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002991 VkBool32 textureCompressionETC2 /// ETC texture compression formats
2992 VkBool32 textureCompressionASTC_LDR /// ASTC LDR texture compression formats
2993 VkBool32 textureCompressionBC /// BC1-7 texture compressed formats
Jesse Hall65ab5522015-11-30 00:07:16 -08002994 VkBool32 occlusionQueryPrecise
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002995 VkBool32 pipelineStatisticsQuery /// pipeline statistics query
Jesse Halldc6d36c2015-11-29 19:12:15 -08002996 VkBool32 vertexPipelineStoresAndAtomics
2997 VkBool32 fragmentStoresAndAtomics
2998 VkBool32 shaderTessellationAndGeometryPointSize
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002999 VkBool32 shaderImageGatherExtended /// texture gather with run-time values and independent offsets
3000 VkBool32 shaderStorageImageExtendedFormats /// the extended set of formats can be used for storage images
3001 VkBool32 shaderStorageImageMultisample /// multisample images can be used for storage images
Jesse Halld1af8122015-11-29 23:50:38 -08003002 VkBool32 shaderStorageImageReadWithoutFormat
3003 VkBool32 shaderStorageImageWriteWithoutFormat
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003004 VkBool32 shaderUniformBufferArrayDynamicIndexing /// arrays of uniform buffers can be accessed with dynamically uniform indices
3005 VkBool32 shaderSampledImageArrayDynamicIndexing /// arrays of sampled images can be accessed with dynamically uniform indices
3006 VkBool32 shaderStorageBufferArrayDynamicIndexing /// arrays of storage buffers can be accessed with dynamically uniform indices
3007 VkBool32 shaderStorageImageArrayDynamicIndexing /// arrays of storage images can be accessed with dynamically uniform indices
3008 VkBool32 shaderClipDistance /// clip distance in shaders
3009 VkBool32 shaderCullDistance /// cull distance in shaders
3010 VkBool32 shaderFloat64 /// 64-bit floats (doubles) in shaders
3011 VkBool32 shaderInt64 /// 64-bit integers in shaders
3012 VkBool32 shaderInt16 /// 16-bit integers in shaders
3013 VkBool32 shaderResourceResidency /// shader can use texture operations that return resource residency information (requires sparseNonResident support)
Jesse Hall65ab5522015-11-30 00:07:16 -08003014 VkBool32 shaderResourceMinLod /// shader can use texture operations that specify minimum resource LOD
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003015 VkBool32 sparseBinding /// Sparse resources support: Resource memory can be managed at opaque page level rather than object level
3016 VkBool32 sparseResidencyBuffer /// Sparse resources support: GPU can access partially resident buffers
3017 VkBool32 sparseResidencyImage2D /// Sparse resources support: GPU can access partially resident 2D (non-MSAA non-DepthStencil) images
3018 VkBool32 sparseResidencyImage3D /// Sparse resources support: GPU can access partially resident 3D images
3019 VkBool32 sparseResidency2Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 2 samples
3020 VkBool32 sparseResidency4Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 4 samples
3021 VkBool32 sparseResidency8Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 8 samples
3022 VkBool32 sparseResidency16Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 16 samples
3023 VkBool32 sparseResidencyAliased /// Sparse resources support: GPU can correctly access data aliased into multiple locations (opt-in)
Jesse Halld1af8122015-11-29 23:50:38 -08003024 VkBool32 variableMultisampleRate
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003025 VkBool32 inheritedQueries
Jesse Halld27f6aa2015-08-15 17:58:48 -07003026}
3027
3028class VkPhysicalDeviceLimits {
3029 /// resource maximum sizes
3030 u32 maxImageDimension1D /// max 1D image dimension
3031 u32 maxImageDimension2D /// max 2D image dimension
3032 u32 maxImageDimension3D /// max 3D image dimension
3033 u32 maxImageDimensionCube /// max cubemap image dimension
3034 u32 maxImageArrayLayers /// max layers for image arrays
Jesse Hallb00daad2015-11-29 19:46:20 -08003035 u32 maxTexelBufferElements
Jesse Hallfbf97b02015-11-20 14:17:03 -08003036 u32 maxUniformBufferRange /// max uniform buffer size (bytes)
3037 u32 maxStorageBufferRange /// max storage buffer size (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003038 u32 maxPushConstantsSize /// max size of the push constants pool (bytes)
3039 /// memory limits
3040 u32 maxMemoryAllocationCount /// max number of device memory allocations supported
Jesse Hall091ed9e2015-11-30 00:55:29 -08003041 u32 maxSamplerAllocationCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003042 VkDeviceSize bufferImageGranularity /// Granularity (in bytes) at which buffers and images can be bound to adjacent memory for simultaneous usage
3043 VkDeviceSize sparseAddressSpaceSize /// Total address space available for sparse allocations (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003044 /// descriptor set limits
3045 u32 maxBoundDescriptorSets /// max number of descriptors sets that can be bound to a pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07003046 u32 maxPerStageDescriptorSamplers /// max num of samplers allowed per-stage in a descriptor set
3047 u32 maxPerStageDescriptorUniformBuffers /// max num of uniform buffers allowed per-stage in a descriptor set
3048 u32 maxPerStageDescriptorStorageBuffers /// max num of storage buffers allowed per-stage in a descriptor set
3049 u32 maxPerStageDescriptorSampledImages /// max num of sampled images allowed per-stage in a descriptor set
3050 u32 maxPerStageDescriptorStorageImages /// max num of storage images allowed per-stage in a descriptor set
Jesse Halle1b12782015-11-30 11:27:32 -08003051 u32 maxPerStageDescriptorInputAttachments
Jesse Halldba27f72015-11-30 14:25:46 -08003052 u32 maxPerStageResources
Jesse Halld27f6aa2015-08-15 17:58:48 -07003053 u32 maxDescriptorSetSamplers /// max num of samplers allowed in all stages in a descriptor set
3054 u32 maxDescriptorSetUniformBuffers /// max num of uniform buffers allowed in all stages in a descriptor set
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003055 u32 maxDescriptorSetUniformBuffersDynamic /// max num of dynamic uniform buffers allowed in all stages in a descriptor set
Jesse Halld27f6aa2015-08-15 17:58:48 -07003056 u32 maxDescriptorSetStorageBuffers /// max num of storage buffers allowed in all stages in a descriptor set
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003057 u32 maxDescriptorSetStorageBuffersDynamic /// max num of dynamic storage buffers allowed in all stages in a descriptor set
Jesse Halld27f6aa2015-08-15 17:58:48 -07003058 u32 maxDescriptorSetSampledImages /// max num of sampled images allowed in all stages in a descriptor set
3059 u32 maxDescriptorSetStorageImages /// max num of storage images allowed in all stages in a descriptor set
Jesse Halle1b12782015-11-30 11:27:32 -08003060 u32 maxDescriptorSetInputAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003061 /// vertex stage limits
3062 u32 maxVertexInputAttributes /// max num of vertex input attribute slots
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003063 u32 maxVertexInputBindings /// max num of vertex input binding slots
Jesse Halld27f6aa2015-08-15 17:58:48 -07003064 u32 maxVertexInputAttributeOffset /// max vertex input attribute offset added to vertex buffer offset
3065 u32 maxVertexInputBindingStride /// max vertex input binding stride
3066 u32 maxVertexOutputComponents /// max num of output components written by vertex shader
3067 /// tessellation control stage limits
Jesse Hall3fbc8562015-11-29 22:10:52 -08003068 u32 maxTessellationGenerationLevel /// max level supported by tess primitive generator
Jesse Hallae38f732015-11-19 21:32:50 -08003069 u32 maxTessellationPatchSize /// max patch size (vertices)
3070 u32 maxTessellationControlPerVertexInputComponents /// max num of input components per-vertex in TCS
3071 u32 maxTessellationControlPerVertexOutputComponents /// max num of output components per-vertex in TCS
3072 u32 maxTessellationControlPerPatchOutputComponents /// max num of output components per-patch in TCS
3073 u32 maxTessellationControlTotalOutputComponents /// max total num of per-vertex and per-patch output components in TCS
3074 u32 maxTessellationEvaluationInputComponents /// max num of input components per vertex in TES
3075 u32 maxTessellationEvaluationOutputComponents /// max num of output components per vertex in TES
Jesse Halld27f6aa2015-08-15 17:58:48 -07003076 /// geometry stage limits
3077 u32 maxGeometryShaderInvocations /// max invocation count supported in geometry shader
3078 u32 maxGeometryInputComponents /// max num of input components read in geometry stage
3079 u32 maxGeometryOutputComponents /// max num of output components written in geometry stage
3080 u32 maxGeometryOutputVertices /// max num of vertices that can be emitted in geometry stage
3081 u32 maxGeometryTotalOutputComponents /// max total num of components (all vertices) written in geometry stage
3082 /// fragment stage limits
3083 u32 maxFragmentInputComponents /// max num of input compontents read in fragment stage
Jesse Hallfbf97b02015-11-20 14:17:03 -08003084 u32 maxFragmentOutputAttachments /// max num of output attachments written in fragment stage
Jesse Hall3fbc8562015-11-29 22:10:52 -08003085 u32 maxFragmentDualSrcAttachments /// max num of output attachments written when using dual source blending
Jesse Halld27f6aa2015-08-15 17:58:48 -07003086 u32 maxFragmentCombinedOutputResources /// max total num of storage buffers, storage images and output buffers
3087 /// compute stage limits
3088 u32 maxComputeSharedMemorySize /// max total storage size of work group local storage (bytes)
3089 u32[3] maxComputeWorkGroupCount /// max num of compute work groups that may be dispatched by a single command (x,y,z)
3090 u32 maxComputeWorkGroupInvocations /// max total compute invocations in a single local work group
3091 u32[3] maxComputeWorkGroupSize /// max local size of a compute work group (x,y,z)
3092
3093 u32 subPixelPrecisionBits /// num bits of subpixel precision in screen x and y
3094 u32 subTexelPrecisionBits /// num bits of subtexel precision
3095 u32 mipmapPrecisionBits /// num bits of mipmap precision
3096
3097 u32 maxDrawIndexedIndexValue /// max index value for indexed draw calls (for 32-bit indices)
Jesse Halldba27f72015-11-30 14:25:46 -08003098 u32 maxDrawIndirectCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003099
3100 f32 maxSamplerLodBias /// max absolute sampler level of detail bias
3101 f32 maxSamplerAnisotropy /// max degree of sampler anisotropy
3102
3103 u32 maxViewports /// max number of active viewports
Jesse Halld27f6aa2015-08-15 17:58:48 -07003104 u32[2] maxViewportDimensions /// max viewport dimensions (x,y)
3105 f32[2] viewportBoundsRange /// viewport bounds range (min,max)
3106 u32 viewportSubPixelBits /// num bits of subpixel precision for viewport
3107
Jesse Halldc6d36c2015-11-29 19:12:15 -08003108 platform.size_t minMemoryMapAlignment /// min required alignment of pointers returned by MapMemory (bytes)
3109 VkDeviceSize minTexelBufferOffsetAlignment /// min required alignment for texel buffer offsets (bytes)
3110 VkDeviceSize minUniformBufferOffsetAlignment /// min required alignment for uniform buffer sizes and offsets (bytes)
3111 VkDeviceSize minStorageBufferOffsetAlignment /// min required alignment for storage buffer offsets (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003112
Jesse Hallfbf97b02015-11-20 14:17:03 -08003113 s32 minTexelOffset /// min texel offset for OpTextureSampleOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07003114 u32 maxTexelOffset /// max texel offset for OpTextureSampleOffset
Jesse Hallfbf97b02015-11-20 14:17:03 -08003115 s32 minTexelGatherOffset /// min texel offset for OpTextureGatherOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07003116 u32 maxTexelGatherOffset /// max texel offset for OpTextureGatherOffset
3117 f32 minInterpolationOffset /// furthest negative offset for interpolateAtOffset
3118 f32 maxInterpolationOffset /// furthest positive offset for interpolateAtOffset
3119 u32 subPixelInterpolationOffsetBits /// num of subpixel bits for interpolateAtOffset
3120
3121 u32 maxFramebufferWidth /// max width for a framebuffer
3122 u32 maxFramebufferHeight /// max height for a framebuffer
3123 u32 maxFramebufferLayers /// max layer count for a layered framebuffer
Jesse Hall091ed9e2015-11-30 00:55:29 -08003124 VkSampleCountFlags framebufferColorSampleCounts
3125 VkSampleCountFlags framebufferDepthSampleCounts
3126 VkSampleCountFlags framebufferStencilSampleCounts
3127 VkSampleCountFlags framebufferNoAttachmentSampleCounts
Jesse Halld27f6aa2015-08-15 17:58:48 -07003128 u32 maxColorAttachments /// max num of framebuffer color attachments
3129
Jesse Hall091ed9e2015-11-30 00:55:29 -08003130 VkSampleCountFlags sampledImageColorSampleCounts
3131 VkSampleCountFlags sampledImageIntegerSampleCounts
3132 VkSampleCountFlags sampledImageDepthSampleCounts
3133 VkSampleCountFlags sampledImageStencilSampleCounts
3134 VkSampleCountFlags storageImageSampleCounts
Jesse Halld27f6aa2015-08-15 17:58:48 -07003135 u32 maxSampleMaskWords /// max num of sample mask words
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003136 VkBool32 timestampComputeAndGraphics
Jesse Halld27f6aa2015-08-15 17:58:48 -07003137
Jesse Halla9bb62b2015-11-21 19:31:56 -08003138 f32 timestampPeriod
Jesse Halld27f6aa2015-08-15 17:58:48 -07003139
3140 u32 maxClipDistances /// max number of clip distances
3141 u32 maxCullDistances /// max number of cull distances
3142 u32 maxCombinedClipAndCullDistances /// max combined number of user clipping
3143
Jesse Hallfbf97b02015-11-20 14:17:03 -08003144 u32 discreteQueuePriorities
3145
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003146 f32[2] pointSizeRange /// range (min,max) of supported point sizes
3147 f32[2] lineWidthRange /// range (min,max) of supported line widths
Jesse Halld27f6aa2015-08-15 17:58:48 -07003148 f32 pointSizeGranularity /// granularity of supported point sizes
3149 f32 lineWidthGranularity /// granularity of supported line widths
Jesse Hall03b6fe12015-11-24 12:44:21 -08003150 VkBool32 strictLines
Jesse Hall091ed9e2015-11-30 00:55:29 -08003151 VkBool32 standardSampleLocations
Jesse Halla9bb62b2015-11-21 19:31:56 -08003152
Jesse Hall65ab5522015-11-30 00:07:16 -08003153 VkDeviceSize optimalBufferCopyOffsetAlignment
3154 VkDeviceSize optimalBufferCopyRowPitchAlignment
Jesse Halldba27f72015-11-30 14:25:46 -08003155 VkDeviceSize nonCoherentAtomSize
Jesse Halld27f6aa2015-08-15 17:58:48 -07003156}
3157
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003158class VkPhysicalDeviceSparseProperties {
3159 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 -08003160 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 -07003161 VkBool32 residencyStandard3DBlockShape /// Sparse resources support: GPU will access all 3D sparse resources using the standard block shapes (based on pixel format)
3162 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 -07003163 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
3164}
3165
Jesse Halld27f6aa2015-08-15 17:58:48 -07003166class VkSemaphoreCreateInfo {
3167 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
3168 const void* pNext /// Pointer to next structure
3169 VkSemaphoreCreateFlags flags /// Semaphore creation flags
3170}
3171
3172class VkQueryPoolCreateInfo {
3173 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
3174 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003175 VkQueryPoolCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003176 VkQueryType queryType
Jesse Hall3dd678a2016-01-08 21:52:01 -08003177 u32 queryCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003178 VkQueryPipelineStatisticFlags pipelineStatistics /// Optional
3179}
3180
3181class VkFramebufferCreateInfo {
3182 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
3183 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003184 VkFramebufferCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003185 VkRenderPass renderPass
3186 u32 attachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003187 const VkImageView* pAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003188 u32 width
3189 u32 height
3190 u32 layers
3191}
3192
Jesse Hall3fbc8562015-11-29 22:10:52 -08003193class VkDrawIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003194 u32 vertexCount
3195 u32 instanceCount
3196 u32 firstVertex
3197 u32 firstInstance
3198}
3199
Jesse Hall3fbc8562015-11-29 22:10:52 -08003200class VkDrawIndexedIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003201 u32 indexCount
3202 u32 instanceCount
3203 u32 firstIndex
3204 s32 vertexOffset
3205 u32 firstInstance
3206}
3207
Jesse Hall3fbc8562015-11-29 22:10:52 -08003208class VkDispatchIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003209 u32 x
3210 u32 y
3211 u32 z
3212}
3213
Jesse Halld0599582017-03-10 18:35:38 -08003214@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08003215class VkSurfaceCapabilitiesKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003216 u32 minImageCount
3217 u32 maxImageCount
3218 VkExtent2D currentExtent
3219 VkExtent2D minImageExtent
3220 VkExtent2D maxImageExtent
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003221 u32 maxImageArrayLayers
Jesse Hall1356b0d2015-11-23 17:24:58 -08003222 VkSurfaceTransformFlagsKHR supportedTransforms
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003223 VkSurfaceTransformFlagBitsKHR currentTransform
Jesse Halla6429252015-11-29 18:59:42 -08003224 VkCompositeAlphaFlagsKHR supportedCompositeAlpha
Jesse Hall1356b0d2015-11-23 17:24:58 -08003225 VkImageUsageFlags supportedUsageFlags
Michael Lentine88594d72015-11-12 12:49:45 -08003226}
3227
Jesse Halld0599582017-03-10 18:35:38 -08003228@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08003229class VkSurfaceFormatKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003230 VkFormat format
3231 VkColorSpaceKHR colorSpace
Michael Lentine88594d72015-11-12 12:49:45 -08003232}
3233
Jesse Halld0599582017-03-10 18:35:38 -08003234@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08003235class VkSwapchainCreateInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003236 VkStructureType sType
3237 const void* pNext
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003238 VkSwapchainCreateFlagsKHR flags
Jesse Hall1356b0d2015-11-23 17:24:58 -08003239 VkSurfaceKHR surface
3240 u32 minImageCount
3241 VkFormat imageFormat
3242 VkColorSpaceKHR imageColorSpace
3243 VkExtent2D imageExtent
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003244 u32 imageArrayLayers
3245 VkImageUsageFlags imageUsage
Jesse Hall1356b0d2015-11-23 17:24:58 -08003246 VkSharingMode sharingMode
Jesse Hall03b6fe12015-11-24 12:44:21 -08003247 u32 queueFamilyIndexCount
Jesse Hall1356b0d2015-11-23 17:24:58 -08003248 const u32* pQueueFamilyIndices
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003249 VkSurfaceTransformFlagBitsKHR preTransform
3250 VkCompositeAlphaFlagBitsKHR compositeAlpha
Jesse Hall1356b0d2015-11-23 17:24:58 -08003251 VkPresentModeKHR presentMode
Jesse Hall1356b0d2015-11-23 17:24:58 -08003252 VkBool32 clipped
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003253 VkSwapchainKHR oldSwapchain
Michael Lentine88594d72015-11-12 12:49:45 -08003254}
3255
Jesse Halld0599582017-03-10 18:35:38 -08003256@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08003257class VkPresentInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003258 VkStructureType sType
3259 const void* pNext
Jesse Hallb00daad2015-11-29 19:46:20 -08003260 u32 waitSemaphoreCount
3261 const VkSemaphore* pWaitSemaphores
Jesse Hall1356b0d2015-11-23 17:24:58 -08003262 u32 swapchainCount
Jesse Hall03b6fe12015-11-24 12:44:21 -08003263 const VkSwapchainKHR* pSwapchains
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003264 const u32* pImageIndices
Jesse Halle1b12782015-11-30 11:27:32 -08003265 VkResult* pResults
Michael Lentine88594d72015-11-12 12:49:45 -08003266}
3267
Jesse Halld0599582017-03-10 18:35:38 -08003268@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003269class VkDisplayPropertiesKHR {
3270 VkDisplayKHR display
3271 const char* displayName
3272 VkExtent2D physicalDimensions
3273 VkExtent2D physicalResolution
3274 VkSurfaceTransformFlagsKHR supportedTransforms
Jesse Hall1356b0d2015-11-23 17:24:58 -08003275 VkBool32 planeReorderPossible
Jesse Halla6429252015-11-29 18:59:42 -08003276 VkBool32 persistentContent
Michael Lentine88594d72015-11-12 12:49:45 -08003277}
3278
Jesse Halld0599582017-03-10 18:35:38 -08003279@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003280class VkDisplayModeParametersKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003281 VkExtent2D visibleRegion
Jesse Halla6429252015-11-29 18:59:42 -08003282 u32 refreshRate
Michael Lentine88594d72015-11-12 12:49:45 -08003283}
Jesse Halld27f6aa2015-08-15 17:58:48 -07003284
Jesse Halld0599582017-03-10 18:35:38 -08003285@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003286class VkDisplayModePropertiesKHR {
3287 VkDisplayModeKHR displayMode
Jesse Halla6429252015-11-29 18:59:42 -08003288 VkDisplayModeParametersKHR parameters
Jesse Hall1356b0d2015-11-23 17:24:58 -08003289}
3290
Jesse Halld0599582017-03-10 18:35:38 -08003291@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003292class VkDisplayModeCreateInfoKHR {
3293 VkStructureType sType
3294 const void* pNext
Jesse Hall9ba8bc82015-11-30 16:22:16 -08003295 VkDisplayModeCreateFlagsKHR flags
Jesse Halla6429252015-11-29 18:59:42 -08003296 VkDisplayModeParametersKHR parameters
Jesse Hall1356b0d2015-11-23 17:24:58 -08003297}
3298
Jesse Halld0599582017-03-10 18:35:38 -08003299@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003300class VkDisplayPlanePropertiesKHR {
Jesse Halla6429252015-11-29 18:59:42 -08003301 VkDisplayKHR currentDisplay
3302 u32 currentStackIndex
3303}
3304
Jesse Halld0599582017-03-10 18:35:38 -08003305@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003306class VkDisplayPlaneCapabilitiesKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003307 VkDisplayPlaneAlphaFlagsKHR supportedAlpha
3308 VkOffset2D minSrcPosition
3309 VkOffset2D maxSrcPosition
3310 VkExtent2D minSrcExtent
3311 VkExtent2D maxSrcExtent
3312 VkOffset2D minDstPosition
3313 VkOffset2D maxDstPosition
3314 VkExtent2D minDstExtent
3315 VkExtent2D maxDstExtent
3316}
3317
Jesse Halld0599582017-03-10 18:35:38 -08003318@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003319class VkDisplaySurfaceCreateInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003320 VkStructureType sType
3321 const void* pNext
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003322 VkDisplaySurfaceCreateFlagsKHR flags
Jesse Hall1356b0d2015-11-23 17:24:58 -08003323 VkDisplayModeKHR displayMode
3324 u32 planeIndex
3325 u32 planeStackIndex
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003326 VkSurfaceTransformFlagBitsKHR transform
Jesse Hall1356b0d2015-11-23 17:24:58 -08003327 f32 globalAlpha
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003328 VkDisplayPlaneAlphaFlagBitsKHR alphaMode
3329 VkExtent2D imageExtent
Jesse Hall1356b0d2015-11-23 17:24:58 -08003330}
3331
Jesse Halld0599582017-03-10 18:35:38 -08003332@extension("VK_KHR_display_swapchain") // 4
Jesse Hall1356b0d2015-11-23 17:24:58 -08003333class VkDisplayPresentInfoKHR {
3334 VkStructureType sType
3335 const void* pNext
3336 VkRect2D srcRect
3337 VkRect2D dstRect
Jesse Halla6429252015-11-29 18:59:42 -08003338 VkBool32 persistent
Jesse Hall1356b0d2015-11-23 17:24:58 -08003339}
3340
Jesse Halld0599582017-03-10 18:35:38 -08003341@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003342class VkXlibSurfaceCreateInfoKHR {
3343 VkStructureType sType
3344 const void* pNext
3345 VkXlibSurfaceCreateFlagsKHR flags
3346 platform.Display* dpy
3347 platform.Window window
3348}
3349
Jesse Halld0599582017-03-10 18:35:38 -08003350@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003351class VkXcbSurfaceCreateInfoKHR {
3352 VkStructureType sType
3353 const void* pNext
3354 VkXcbSurfaceCreateFlagsKHR flags
3355 platform.xcb_connection_t* connection
3356 platform.xcb_window_t window
3357}
3358
Jesse Halld0599582017-03-10 18:35:38 -08003359@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003360class VkWaylandSurfaceCreateInfoKHR {
3361 VkStructureType sType
3362 const void* pNext
3363 VkWaylandSurfaceCreateFlagsKHR flags
3364 platform.wl_display* display
3365 platform.wl_surface* surface
3366}
3367
Jesse Halld0599582017-03-10 18:35:38 -08003368@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003369class VkMirSurfaceCreateInfoKHR {
3370 VkStructureType sType
3371 const void* pNext
3372 VkMirSurfaceCreateFlagsKHR flags
3373 platform.MirConnection* connection
3374 platform.MirSurface* mirSurface
3375}
3376
Jesse Halld0599582017-03-10 18:35:38 -08003377@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003378class VkAndroidSurfaceCreateInfoKHR {
3379 VkStructureType sType
3380 const void* pNext
3381 VkAndroidSurfaceCreateFlagsKHR flags
3382 platform.ANativeWindow* window
3383}
3384
Jesse Halld0599582017-03-10 18:35:38 -08003385@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003386class VkWin32SurfaceCreateInfoKHR {
3387 VkStructureType sType
3388 const void* pNext
3389 VkWin32SurfaceCreateFlagsKHR flags
3390 platform.HINSTANCE hinstance
3391 platform.HWND hwnd
3392}
3393
Jesse Halld0599582017-03-10 18:35:38 -08003394@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08003395class VkNativeBufferANDROID {
3396 VkStructureType sType
3397 const void* pNext
3398 platform.buffer_handle_t handle
3399 int stride
3400 int format
3401 int usage
3402}
3403
Jesse Halld0599582017-03-10 18:35:38 -08003404@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08003405class VkDebugReportCallbackCreateInfoEXT {
3406 VkStructureType sType
3407 const void* pNext
3408 VkDebugReportFlagsEXT flags
3409 PFN_vkDebugReportCallbackEXT pfnCallback
3410 void* pUserData
3411}
3412
Jesse Halld0599582017-03-10 18:35:38 -08003413@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07003414class VkPipelineRasterizationStateRasterizationOrderAMD {
3415 VkStructureType sType
3416 const void* pNext
3417 VkRasterizationOrderAMD rasterizationOrder
3418}
3419
Jesse Halld0599582017-03-10 18:35:38 -08003420@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003421class VkDebugMarkerObjectNameInfoEXT {
3422 VkStructureType sType
3423 const void* pNext
3424 VkDebugReportObjectTypeEXT objectType
3425 u64 object
3426 const char* pObjectName
3427}
3428
Jesse Halld0599582017-03-10 18:35:38 -08003429@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003430class VkDebugMarkerObjectTagInfoEXT {
3431 VkStructureType sType
3432 const void* pNext
3433 VkDebugReportObjectTypeEXT objectType
3434 u64 object
3435 u64 tagName
3436 platform.size_t tagSize
3437 const void* pTag
3438}
3439
Jesse Halld0599582017-03-10 18:35:38 -08003440@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003441class VkDebugMarkerMarkerInfoEXT {
3442 VkStructureType sType
3443 const void* pNext
3444 const char* pMarkerName
3445 f32[4] color
3446}
3447
Jesse Halld0599582017-03-10 18:35:38 -08003448@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall3f5499b2016-07-26 15:20:40 -07003449class VkDedicatedAllocationImageCreateInfoNV {
3450 VkStructureType sType
3451 const void* pNext
3452 VkBool32 dedicatedAllocation
3453}
3454
Jesse Halld0599582017-03-10 18:35:38 -08003455@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall3f5499b2016-07-26 15:20:40 -07003456class VkDedicatedAllocationBufferCreateInfoNV {
3457 VkStructureType sType
3458 const void* pNext
3459 VkBool32 dedicatedAllocation
3460}
3461
Jesse Halld0599582017-03-10 18:35:38 -08003462@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall3f5499b2016-07-26 15:20:40 -07003463class VkDedicatedAllocationMemoryAllocateInfoNV {
3464 VkStructureType sType
3465 const void* pNext
3466 VkImage image
3467 VkBuffer buffer
3468}
3469
Jesse Halld0599582017-03-10 18:35:38 -08003470@extension("VK_KHX_multiview") // 54
3471class VkRenderPassMultiviewCreateInfoKHX {
3472 VkStructureType sType
3473 const void* pNext
3474 u32 subpassCount
3475 const u32* pViewMasks
3476 u32 dependencyCount
3477 const s32* pViewOffsets
3478 u32 correlationMaskCount
3479 const u32* pCorrelationMasks
3480}
3481
3482@extension("VK_KHX_multiview") // 54
3483class VkPhysicalDeviceMultiviewFeaturesKHX {
3484 VkStructureType sType
3485 void* pNext
3486 VkBool32 multiview
3487 VkBool32 multiviewGeometryShader
3488 VkBool32 multiviewTessellationShader
3489}
3490
3491@extension("VK_KHX_multiview") // 54
3492class VkPhysicalDeviceMultiviewPropertiesKHX {
3493 VkStructureType sType
3494 void* pNext
3495 u32 maxMultiviewViewCount
3496 u32 maxMultiviewInstanceIndex
3497}
3498
3499@extension("VK_NV_external_memory_capabilities") // 56
Jesse Halleb02c472017-02-24 15:13:45 -08003500class VkExternalImageFormatPropertiesNV {
3501 VkImageFormatProperties imageFormatProperties
3502 VkExternalMemoryFeatureFlagsNV externalMemoryFeatures
3503 VkExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes
3504 VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes
3505}
3506
Jesse Halld0599582017-03-10 18:35:38 -08003507@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08003508class VkExternalMemoryImageCreateInfoNV {
3509 VkStructureType sType
3510 const void* pNext
3511 VkExternalMemoryHandleTypeFlagsNV handleTypes
3512}
3513
Jesse Halld0599582017-03-10 18:35:38 -08003514@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08003515class VkExportMemoryAllocateInfoNV {
3516 VkStructureType sType
3517 const void* pNext
3518 VkExternalMemoryHandleTypeFlagsNV handleTypes
3519}
3520
Jesse Halld0599582017-03-10 18:35:38 -08003521@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08003522class VkImportMemoryWin32HandleInfoNV {
3523 VkStructureType sType
3524 const void* pNext
3525 VkExternalMemoryHandleTypeFlagsNV handleType
3526 platform.HANDLE handle
3527}
3528
Jesse Halld0599582017-03-10 18:35:38 -08003529@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08003530class VkExportMemoryWin32HandleInfoNV {
3531 VkStructureType sType
3532 const void* pNext
3533 const platform.SECURITY_ATTRIBUTES* pAttributes
3534 platform.DWORD dwAccess
3535}
3536
Jesse Halld0599582017-03-10 18:35:38 -08003537@extension("VK_NV_win32_keyed_mutex") // 59
Jesse Halleb02c472017-02-24 15:13:45 -08003538class VkWin32KeyedMutexAcquireReleaseInfoNV {
3539 VkStructureType sType
3540 const void* pNext
3541 u32 acquireCount
3542 const VkDeviceMemory* pAcquireSyncs
3543 const u64* pAcquireKeys
3544 const u32* pAcquireTimeoutMilliseconds
3545 u32 releaseCount
3546 const VkDeviceMemory* pReleaseSyncs
3547 const u64* pReleaseKeys
3548}
3549
Jesse Halld0599582017-03-10 18:35:38 -08003550@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08003551class VkPhysicalDeviceFeatures2KHR {
3552 VkStructureType sType
3553 void* pNext
3554 VkPhysicalDeviceFeatures features
3555}
3556
Jesse Halld0599582017-03-10 18:35:38 -08003557@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08003558class VkPhysicalDeviceProperties2KHR {
3559 VkStructureType sType
3560 void* pNext
3561 VkPhysicalDeviceProperties properties
3562}
3563
Jesse Halld0599582017-03-10 18:35:38 -08003564@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08003565class VkFormatProperties2KHR {
3566 VkStructureType sType
3567 void* pNext
3568 VkFormatProperties formatProperties
3569}
3570
Jesse Halld0599582017-03-10 18:35:38 -08003571@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08003572class VkImageFormatProperties2KHR {
3573 VkStructureType sType
3574 void* pNext
3575 VkImageFormatProperties imageFormatProperties
3576}
3577
Jesse Halld0599582017-03-10 18:35:38 -08003578@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08003579class VkPhysicalDeviceImageFormatInfo2KHR {
3580 VkStructureType sType
3581 const void* pNext
3582 VkFormat format
3583 VkImageType type
3584 VkImageTiling tiling
3585 VkImageUsageFlags usage
3586 VkImageCreateFlags flags
3587}
3588
Jesse Halld0599582017-03-10 18:35:38 -08003589@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08003590class VkQueueFamilyProperties2KHR {
3591 VkStructureType sType
3592 void* pNext
3593 VkQueueFamilyProperties queueFamilyProperties
3594}
3595
Jesse Halld0599582017-03-10 18:35:38 -08003596@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08003597class VkPhysicalDeviceMemoryProperties2KHR {
3598 VkStructureType sType
3599 void* pNext
3600 VkPhysicalDeviceMemoryProperties memoryProperties
3601}
3602
Jesse Halld0599582017-03-10 18:35:38 -08003603@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08003604class VkSparseImageFormatProperties2KHR {
3605 VkStructureType sType
3606 void* pNext
3607 VkSparseImageFormatProperties properties
3608}
3609
Jesse Halld0599582017-03-10 18:35:38 -08003610@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08003611class VkPhysicalDeviceSparseImageFormatInfo2KHR {
3612 VkStructureType sType
3613 const void* pNext
3614 VkFormat format
3615 VkImageType type
3616 VkSampleCountFlagBits samples
3617 VkImageUsageFlags usage
3618 VkImageTiling tiling
3619}
3620
Jesse Halld0599582017-03-10 18:35:38 -08003621@extension("VK_KHX_device_group") // 61
3622class VkMemoryAllocateFlagsInfoKHX {
3623 VkStructureType sType
3624 const void* pNext
3625 VkMemoryAllocateFlagsKHX flags
3626 u32 deviceMask
3627}
3628
3629@extension("VK_KHX_device_group") // 61
3630class VkBindBufferMemoryInfoKHX {
3631 VkStructureType sType
3632 const void* pNext
3633 VkBuffer buffer
3634 VkDeviceMemory memory
3635 VkDeviceSize memoryOffset
3636 u32 deviceIndexCount
3637 const u32* pDeviceIndices
3638}
3639
3640@extension("VK_KHX_device_group") // 61
3641class VkBindImageMemoryInfoKHX {
3642 VkStructureType sType
3643 const void* pNext
3644 VkImage image
3645 VkDeviceMemory memory
3646 VkDeviceSize memoryOffset
3647 u32 deviceIndexCount
3648 const u32* pDeviceIndices
3649 u32 SFRRectCount
3650 const VkRect2D* pSFRRects
3651}
3652
3653@extension("VK_KHX_device_group") // 61
3654class VkDeviceGroupRenderPassBeginInfoKHX {
3655 VkStructureType sType
3656 const void* pNext
3657 u32 deviceMask
3658 u32 deviceRenderAreaCount
3659 const VkRect2D* pDeviceRenderAreas
3660}
3661
3662@extension("VK_KHX_device_group") // 61
3663class VkDeviceGroupCommandBufferBeginInfoKHX {
3664 VkStructureType sType
3665 const void* pNext
3666 u32 deviceMask
3667}
3668
3669@extension("VK_KHX_device_group") // 61
3670class VkDeviceGroupSubmitInfoKHX {
3671 VkStructureType sType
3672 const void* pNext
3673 u32 waitSemaphoreCount
3674 const u32* pWaitSemaphoreDeviceIndices
3675 u32 commandBufferCount
3676 const u32* pCommandBufferDeviceMasks
3677 u32 signalSemaphoreCount
3678 const u32* pSignalSemaphoreDeviceIndices
3679}
3680
3681@extension("VK_KHX_device_group") // 61
3682class VkDeviceGroupBindSparseInfoKHX {
3683 VkStructureType sType
3684 const void* pNext
3685 u32 resourceDeviceIndex
3686 u32 memoryDeviceIndex
3687}
3688
3689@extension("VK_KHX_device_group") // 61
3690class VkDeviceGroupPresentCapabilitiesKHX {
3691 VkStructureType sType
3692 const void* pNext
3693 u32[VK_MAX_DEVICE_GROUP_SIZE_KHX] presentMask
3694 VkDeviceGroupPresentModeFlagsKHX modes
3695}
3696
3697@extension("VK_KHX_device_group") // 61
3698class VkImageSwapchainCreateInfoKHX {
3699 VkStructureType sType
3700 const void* pNext
3701 VkSwapchainKHR swapchain
3702}
3703
3704@extension("VK_KHX_device_group") // 61
3705class VkBindImageMemorySwapchainInfoKHX {
3706 VkStructureType sType
3707 const void* pNext
3708 VkSwapchainKHR swapchain
3709 u32 imageIndex
3710}
3711
3712@extension("VK_KHX_device_group") // 61
3713class VkAcquireNextImageInfoKHX {
3714 VkStructureType sType
3715 const void* pNext
3716 VkSwapchainKHR swapchain
3717 u64 timeout
3718 VkSemaphore semaphore
3719 VkFence fence
3720 u32 deviceMask
3721}
3722
3723@extension("VK_KHX_device_group") // 61
3724class VkDeviceGroupPresentInfoKHX {
3725 VkStructureType sType
3726 const void* pNext
3727 u32 swapchainCount
3728 const u32* pDeviceMasks
3729 VkDeviceGroupPresentModeFlagBitsKHX mode
3730}
3731
3732@extension("VK_KHX_device_group") // 61
3733class VkDeviceGroupSwapchainCreateInfoKHX {
3734 VkStructureType sType
3735 const void* pNext
3736 VkDeviceGroupPresentModeFlagsKHX modes
3737}
3738
3739@extension("VK_EXT_validation_flags") // 62
Jesse Halleb02c472017-02-24 15:13:45 -08003740class VkValidationFlagsEXT {
3741 VkStructureType sType
3742 const void* pNext
3743 u32 disabledValidationCheckCount
3744 VkValidationCheckEXT* pDisabledValidationChecks
3745}
3746
Jesse Halld0599582017-03-10 18:35:38 -08003747@extension("VK_NN_vi_surface") // 63
Jesse Hall08e2f482017-03-06 15:22:17 -08003748class VkViSurfaceCreateInfoNN {
3749 VkStructureType sType
3750 const void* pNext
3751 VkViSurfaceCreateFlagsNN flags
3752 void* window
3753}
3754
Jesse Halld0599582017-03-10 18:35:38 -08003755@extension("VK_KHX_device_group_creation") // 71
3756class VkPhysicalDeviceGroupPropertiesKHX {
3757 VkStructureType sType
Jesse Hall2c677d52017-03-20 13:09:19 -07003758 void* pNext
Jesse Halld0599582017-03-10 18:35:38 -08003759 u32 physicalDeviceCount
3760 VkPhysicalDevice[VK_MAX_DEVICE_GROUP_SIZE_KHX] physicalDevices
3761 VkBool32 subsetAllocation
3762}
3763
3764@extension("VK_KHX_device_group_creation") // 71
3765class VkDeviceGroupDeviceCreateInfoKHX {
3766 VkStructureType sType
3767 const void* pNext
3768 u32 physicalDeviceCount
3769 const VkPhysicalDevice* pPhysicalDevices
3770}
3771
3772@extension("VK_KHX_external_memory_capabilities") // 72
3773class VkExternalMemoryPropertiesKHX {
3774 VkExternalMemoryFeatureFlagsKHX externalMemoryFeatures
3775 VkExternalMemoryHandleTypeFlagsKHX exportFromImportedHandleTypes
3776 VkExternalMemoryHandleTypeFlagsKHX compatibleHandleTypes
3777}
3778
3779@extension("VK_KHX_external_memory_capabilities") // 72
3780class VkPhysicalDeviceExternalImageFormatInfoKHX {
3781 VkStructureType sType
3782 const void* pNext
3783 VkExternalMemoryHandleTypeFlagBitsKHX handleType
3784}
3785
3786@extension("VK_KHX_external_memory_capabilities") // 72
3787class VkExternalImageFormatPropertiesKHX {
3788 VkStructureType sType
3789 void* pNext
3790 VkExternalMemoryPropertiesKHX externalMemoryProperties
3791}
3792
3793@extension("VK_KHX_external_memory_capabilities") // 72
3794class VkPhysicalDeviceExternalBufferInfoKHX {
3795 VkStructureType sType
3796 const void* pNext
3797 VkBufferCreateFlags flags
3798 VkBufferUsageFlags usage
3799 VkExternalMemoryHandleTypeFlagBitsKHX handleType
3800}
3801
3802@extension("VK_KHX_external_memory_capabilities") // 72
3803class VkExternalBufferPropertiesKHX {
3804 VkStructureType sType
3805 void* pNext
3806 VkExternalMemoryPropertiesKHX externalMemoryProperties
3807}
3808
3809@extension("VK_KHX_external_memory_capabilities") // 72
3810class VkPhysicalDeviceIDPropertiesKHX {
3811 VkStructureType sType
3812 void* pNext
3813 u8[VK_UUID_SIZE] deviceUUID
3814 u8[VK_UUID_SIZE] driverUUID
3815 u8[VK_LUID_SIZE_KHX] deviceLUID
3816 VkBool32 deviceLUIDValid
3817}
3818
Jesse Halld0599582017-03-10 18:35:38 -08003819@extension("VK_KHX_external_memory") // 73
3820class VkExternalMemoryImageCreateInfoKHX {
3821 VkStructureType sType
3822 const void* pNext
3823 VkExternalMemoryHandleTypeFlagsKHX handleTypes
3824}
3825
3826@extension("VK_KHX_external_memory") // 73
3827class VkExternalMemoryBufferCreateInfoKHX {
3828 VkStructureType sType
3829 const void* pNext
3830 VkExternalMemoryHandleTypeFlagsKHX handleTypes
3831}
3832
3833@extension("VK_KHX_external_memory") // 73
3834class VkExportMemoryAllocateInfoKHX {
3835 VkStructureType sType
3836 const void* pNext
3837 VkExternalMemoryHandleTypeFlagsKHX handleTypes
3838}
3839
3840@extension("VK_KHX_external_memory_win32") // 74
3841class VkImportMemoryWin32HandleInfoKHX {
3842 VkStructureType sType
3843 const void* pNext
3844 VkExternalMemoryHandleTypeFlagBitsKHX handleType
3845 platform.HANDLE handle
3846}
3847
3848@extension("VK_KHX_external_memory_win32") // 74
3849class VkExportMemoryWin32HandleInfoKHX {
3850 VkStructureType sType
3851 const void* pNext
3852 const platform.SECURITY_ATTRIBUTES* pAttributes
3853 platform.DWORD dwAccess
3854 platform.LPCWSTR name
3855}
3856
3857@extension("VK_KHX_external_memory_win32") // 74
3858class VkMemoryWin32HandlePropertiesKHX {
3859 VkStructureType sType
3860 void* pNext
3861 u32 memoryTypeBits
3862}
3863
3864@extension("VK_KHX_external_memory_fd") // 75
3865class VkImportMemoryFdInfoKHX {
3866 VkStructureType sType
3867 const void* pNext
3868 VkExternalMemoryHandleTypeFlagBitsKHX handleType
3869 int fd
3870}
3871
3872@extension("VK_KHX_external_memory_fd") // 75
3873class VkMemoryFdPropertiesKHX {
3874 VkStructureType sType
3875 void* pNext
3876 u32 memoryTypeBits
3877}
3878
3879@extension("VK_KHX_win32_keyed_mutex") // 76
3880class VkWin32KeyedMutexAcquireReleaseInfoKHX {
3881 VkStructureType sType
3882 const void* pNext
3883 u32 acquireCount
3884 const VkDeviceMemory* pAcquireSyncs
3885 const u64* pAcquireKeys
3886 const u32* pAcquireTimeouts
3887 u32 releaseCount
3888 const VkDeviceMemory* pReleaseSyncs
3889 const u64* pReleaseKeys
3890}
3891
3892@extension("VK_KHX_external_semaphore_capabilities") // 77
3893class VkPhysicalDeviceExternalSemaphoreInfoKHX {
3894 VkStructureType sType
3895 const void* pNext
3896 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType
3897}
3898
3899@extension("VK_KHX_external_semaphore_capabilities") // 77
3900class VkExternalSemaphorePropertiesKHX {
3901 VkStructureType sType
3902 void* pNext
3903 VkExternalSemaphoreHandleTypeFlagsKHX exportFromImportedHandleTypes
3904 VkExternalSemaphoreHandleTypeFlagsKHX compatibleHandleTypes
3905 VkExternalSemaphoreFeatureFlagsKHX externalSemaphoreFeatures
3906}
3907
3908@extension("VK_KHX_external_semaphore") // 78
3909class VkExportSemaphoreCreateInfoKHX {
3910 VkStructureType sType
3911 const void* pNext
3912 VkExternalSemaphoreHandleTypeFlagsKHX handleTypes
3913}
3914
3915@extension("VK_KHX_external_semaphore_win32") // 79
3916class VkImportSemaphoreWin32HandleInfoKHX {
3917 VkStructureType sType
3918 const void* pNext
3919 VkSemaphore semaphore
3920 VkExternalSemaphoreHandleTypeFlagsKHX handleType
3921 platform.HANDLE handle
3922}
3923
3924@extension("VK_KHX_external_semaphore_win32") // 79
3925class VkExportSemaphoreWin32HandleInfoKHX {
3926 VkStructureType sType
3927 const void* pNext
3928 const platform.SECURITY_ATTRIBUTES* pAttributes
3929 platform.DWORD dwAccess
3930 platform.LPCWSTR name
3931}
3932
3933@extension("VK_KHX_external_semaphore_win32") // 79
3934class VkD3D12FenceSubmitInfoKHX {
3935 VkStructureType sType
3936 const void* pNext
3937 u32 waitSemaphoreValuesCount
3938 const u64* pWaitSemaphoreValues
3939 u32 signalSemaphoreValuesCount
3940 const u64* pSignalSemaphoreValues
3941}
3942
3943@extension("VK_KHX_external_semaphore_fd") // 80
3944class VkImportSemaphoreFdInfoKHX {
3945 VkStructureType sType
3946 const void* pNext
3947 VkSemaphore semaphore
3948 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType
3949 s32 fd
3950}
3951
3952@extension("VK_KHR_push_descriptor") // 81
3953class VkPhysicalDevicePushDescriptorPropertiesKHR {
3954 VkStructureType sType
3955 void* pNext
3956 u32 maxPushDescriptors
3957}
3958
Jesse Hall2c677d52017-03-20 13:09:19 -07003959@extension("VK_KHR_incremental_present") // 85
3960class VkRectLayerKHR {
3961 VkOffset2D offset
3962 VkExtent2D extent
3963 u32 layer
3964}
3965
3966@extension("VK_KHR_incremental_present") // 85
3967class VkPresentRegionKHR {
3968 u32 rectangleCount
3969 const VkRectLayerKHR* pRectangles
3970}
3971
3972@extension("VK_KHR_incremental_present") // 85
3973class VkPresentRegionsKHR {
3974 VkStructureType sType
3975 const void* pNext
3976 u32 swapchainCount
3977 const VkPresentRegionKHR* pRegions
3978}
3979
Jesse Halld0599582017-03-10 18:35:38 -08003980@extension("VK_KHR_descriptor_update_template") // 86
3981class VkDescriptorUpdateTemplateEntryKHR {
3982 u32 dstBinding
3983 u32 dstArrayElement
3984 u32 descriptorCount
3985 VkDescriptorType descriptorType
3986 platform.size_t offset
3987 platform.size_t stride
3988}
3989
3990@extension("VK_KHR_descriptor_update_template") // 86
3991class VkDescriptorUpdateTemplateCreateInfoKHR {
3992 VkStructureType sType
3993 void* pNext
3994 VkDescriptorUpdateTemplateCreateFlagsKHR flags
3995 u32 descriptorUpdateEntryCount
3996 const VkDescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries
3997 VkDescriptorUpdateTemplateTypeKHR templateType
3998 VkDescriptorSetLayout descriptorSetLayout
3999 VkPipelineBindPoint pipelineBindPoint
4000 VkPipelineLayout pipelineLayout
4001 u32 set
4002}
4003
4004@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004005class VkDeviceGeneratedCommandsFeaturesNVX {
4006 VkStructureType sType
4007 const void* pNext
4008 VkBool32 computeBindingPointSupport
4009}
4010
Jesse Halld0599582017-03-10 18:35:38 -08004011@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004012class VkDeviceGeneratedCommandsLimitsNVX {
4013 VkStructureType sType
4014 const void* pNext
4015 u32 maxIndirectCommandsLayoutTokenCount
4016 u32 maxObjectEntryCounts
4017 u32 minSequenceCountBufferOffsetAlignment
4018 u32 minSequenceIndexBufferOffsetAlignment
4019 u32 minCommandsTokenBufferOffsetAlignment
4020}
4021
Jesse Halld0599582017-03-10 18:35:38 -08004022@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004023class VkIndirectCommandsTokenNVX {
4024 VkIndirectCommandsTokenTypeNVX tokenType
4025 VkBuffer buffer
4026 VkDeviceSize offset
4027}
4028
Jesse Halld0599582017-03-10 18:35:38 -08004029@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004030class VkIndirectCommandsLayoutTokenNVX {
4031 VkIndirectCommandsTokenTypeNVX tokenType
4032 u32 bindingUnit
4033 u32 dynamicCount
4034 u32 divisor
4035}
4036
Jesse Halld0599582017-03-10 18:35:38 -08004037@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004038class VkIndirectCommandsLayoutCreateInfoNVX {
4039 VkStructureType sType
4040 const void* pNext
4041 VkPipelineBindPoint pipelineBindPoint
4042 VkIndirectCommandsLayoutUsageFlagsNVX flags
4043 u32 tokenCount
4044 const VkIndirectCommandsLayoutTokenNVX* pTokens
4045}
4046
Jesse Halld0599582017-03-10 18:35:38 -08004047@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004048class VkCmdProcessCommandsInfoNVX {
4049 VkStructureType sType
4050 const void* pNext
4051 VkObjectTableNVX objectTable
4052 VkIndirectCommandsLayoutNVX indirectCommandsLayout
4053 u32 indirectCommandsTokenCount
4054 const VkIndirectCommandsTokenNVX* pIndirectCommandsTokens
4055 u32 maxSequencesCount
4056 VkCommandBuffer targetCommandBuffer
4057 VkBuffer sequencesCountBuffer
4058 VkDeviceSize sequencesCountOffset
4059 VkBuffer sequencesIndexBuffer
4060 VkDeviceSize sequencesIndexOffset
4061}
4062
Jesse Halld0599582017-03-10 18:35:38 -08004063@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004064class VkCmdReserveSpaceForCommandsInfoNVX {
4065 VkStructureType sType
4066 const void* pNext
4067 VkObjectTableNVX objectTable
4068 VkIndirectCommandsLayoutNVX indirectCommandsLayout
4069 u32 maxSequencesCount
4070}
4071
Jesse Halld0599582017-03-10 18:35:38 -08004072@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004073class VkObjectTableCreateInfoNVX {
4074 VkStructureType sType
4075 const void* pNext
4076 u32 objectCount
4077 const VkObjectEntryTypeNVX* pObjectEntryTypes
4078 const u32* pObjectEntryCounts
4079 const VkObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags
4080 u32 maxUniformBuffersPerDescriptor
4081 u32 maxStorageBuffersPerDescriptor
4082 u32 maxStorageImagesPerDescriptor
4083 u32 maxSampledImagesPerDescriptor
4084 u32 maxPipelineLayouts
4085}
4086
Jesse Halld0599582017-03-10 18:35:38 -08004087@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004088class VkObjectTableEntryNVX {
4089 VkObjectEntryTypeNVX type
4090 VkObjectEntryUsageFlagsNVX flags
4091}
4092
Jesse Halld0599582017-03-10 18:35:38 -08004093@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004094class VkObjectTablePipelineEntryNVX {
4095 VkObjectEntryTypeNVX type
4096 VkObjectEntryUsageFlagsNVX flags
4097 VkPipeline pipeline
4098}
4099
Jesse Halld0599582017-03-10 18:35:38 -08004100@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004101class VkObjectTableDescriptorSetEntryNVX {
4102 VkObjectEntryTypeNVX type
4103 VkObjectEntryUsageFlagsNVX flags
4104 VkPipelineLayout pipelineLayout
4105 VkDescriptorSet descriptorSet
4106}
4107
Jesse Halld0599582017-03-10 18:35:38 -08004108@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004109class VkObjectTableVertexBufferEntryNVX {
4110 VkObjectEntryTypeNVX type
4111 VkObjectEntryUsageFlagsNVX flags
4112 VkBuffer buffer
4113}
4114
Jesse Halld0599582017-03-10 18:35:38 -08004115@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004116class VkObjectTableIndexBufferEntryNVX {
4117 VkObjectEntryTypeNVX type
4118 VkObjectEntryUsageFlagsNVX flags
4119 VkBuffer buffer
Jesse Hall08e2f482017-03-06 15:22:17 -08004120 VkIndexType indexType
Jesse Halleb02c472017-02-24 15:13:45 -08004121}
4122
Jesse Halld0599582017-03-10 18:35:38 -08004123@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08004124class VkObjectTablePushConstantEntryNVX {
4125 VkObjectEntryTypeNVX type
4126 VkObjectEntryUsageFlagsNVX flags
4127 VkPipelineLayout pipelineLayout
4128 VkShaderStageFlags stageFlags
4129}
4130
Jesse Halld0599582017-03-10 18:35:38 -08004131@extension("VK_NV_clip_space_w_scaling") // 88
4132class VkViewportWScalingNV {
4133 f32 xcoeff
4134 f32 ycoeff
4135}
4136
4137@extension("VK_NV_clip_space_w_scaling") // 88
4138class VkPipelineViewportWScalingStateCreateInfoNV {
4139 VkStructureType sType
4140 const void* pNext
4141 VkBool32 viewportWScalingEnable
4142 u32 viewportCount
4143 const VkViewportWScalingNV* pViewportWScalings
4144}
4145
4146@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall08e2f482017-03-06 15:22:17 -08004147class VkSurfaceCapabilities2EXT {
4148 VkStructureType sType
4149 void* pNext
4150 u32 minImageCount
4151 u32 maxImageCount
4152 VkExtent2D currentExtent
4153 VkExtent2D minImageExtent
4154 VkExtent2D maxImageExtent
4155 u32 maxImageArrayLayers
4156 VkSurfaceTransformFlagsKHR supportedTransforms
4157 VkSurfaceTransformFlagBitsKHR currentTransform
4158 VkCompositeAlphaFlagsKHR supportedCompositeAlpha
4159 VkImageUsageFlags supportedUsageFlags
4160 VkSurfaceCounterFlagsEXT supportedSurfaceCounters
4161}
4162
Jesse Halld0599582017-03-10 18:35:38 -08004163@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08004164class VkDisplayPowerInfoEXT {
4165 VkStructureType sType
4166 const void* pNext
4167 VkDisplayPowerStateEXT powerState
4168}
4169
Jesse Halld0599582017-03-10 18:35:38 -08004170@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08004171class VkDeviceEventInfoEXT {
4172 VkStructureType sType
4173 const void* pNext
4174 VkDeviceEventTypeEXT deviceEvent
4175}
4176
Jesse Halld0599582017-03-10 18:35:38 -08004177@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08004178class VkDisplayEventInfoEXT {
4179 VkStructureType sType
4180 const void* pNext
4181 VkDisplayEventTypeEXT displayEvent
4182}
4183
Jesse Halld0599582017-03-10 18:35:38 -08004184@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08004185class VkSwapchainCounterCreateInfoEXT {
4186 VkStructureType sType
4187 const void* pNext
4188 VkSurfaceCounterFlagsEXT surfaceCounters
4189}
Jesse Hall1356b0d2015-11-23 17:24:58 -08004190
Jesse Halle8ec6a22017-03-10 21:01:57 -08004191@extension("VK_GOOGLE_display_timing") // 93
4192class VkRefreshCycleDurationGOOGLE {
4193 u64 refreshDuration
4194}
4195
4196@extension("VK_GOOGLE_display_timing") // 93
4197class VkPastPresentationTimingGOOGLE {
4198 u32 presentID
4199 u64 desiredPresentTime
4200 u64 actualPresentTime
4201 u64 earliestPresentTime
4202 u64 presentMargin
4203}
4204
4205@extension("VK_GOOGLE_display_timing") // 93
4206class VkPresentTimeGOOGLE {
4207 u32 presentID
4208 u64 desiredPresentTime
4209}
4210
4211@extension("VK_GOOGLE_display_timing") // 93
4212class VkPresentTimesInfoGOOGLE {
4213 VkStructureType sType
4214 const void* pNext
4215 u32 swapchainCount
4216 const VkPresentTimeGOOGLE* pTimes
4217}
4218
Jesse Halld0599582017-03-10 18:35:38 -08004219@extension("VK_NVX_multiview_per_view_attributes") // 98
4220class VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
4221 VkStructureType sType
4222 void* pNext
4223 VkBool32 perViewPositionAllComponents
4224}
4225
4226@extension("VK_NV_viewport_swizzle") // 99
4227class VkViewportSwizzleNV {
4228 VkViewportCoordinateSwizzleNV x
4229 VkViewportCoordinateSwizzleNV y
4230 VkViewportCoordinateSwizzleNV z
4231 VkViewportCoordinateSwizzleNV w
4232}
4233
4234@extension("VK_NV_viewport_swizzle") // 99
4235class VkPipelineViewportSwizzleStateCreateInfoNV {
4236 VkStructureType sType
4237 const void* pNext
4238 VkPipelineViewportSwizzleStateCreateFlagsNV flags
4239 u32 viewportCount
4240 const VkViewportSwizzleNV* pViewportSwizzles
4241}
4242
4243@extension("VK_EXT_discard_rectangles") // 100
4244class VkPhysicalDeviceDiscardRectanglePropertiesEXT {
4245 VkStructureType sType
Jesse Hall2c677d52017-03-20 13:09:19 -07004246 void* pNext
Jesse Halld0599582017-03-10 18:35:38 -08004247 u32 maxDiscardRectangles
4248}
4249
4250@extension("VK_EXT_discard_rectangles") // 100
4251class VkPipelineDiscardRectangleStateCreateInfoEXT {
Jesse Halle8ec6a22017-03-10 21:01:57 -08004252 VkStructureType sType
4253 const void* pNext
4254 VkPipelineDiscardRectangleStateCreateFlagsEXT flags
4255 VkDiscardRectangleModeEXT discardRectangleMode
4256 u32 discardRectangleCount
4257 const VkRect2D* pDiscardRectangles
4258}
4259
4260@extension("VK_EXT_hdr_metadata") // 106
4261class VkXYColorEXT {
4262 f32 x
4263 f32 y
4264}
4265
4266@extension("VK_EXT_hdr_metadata") // 106
4267class VkHdrMetadataEXT {
4268 VkStructureType sType
4269 const void* pNext
4270 VkXYColorEXT displayPrimaryRed
4271 VkXYColorEXT displayPrimaryGreen
4272 VkXYColorEXT displayPrimaryBlue
4273 VkXYColorEXT whitePoint
4274 f32 maxLuminance
4275 f32 minLuminance
4276 f32 maxContentLightLevel
4277 f32 maxFrameAverageLightLevel
Jesse Halld0599582017-03-10 18:35:38 -08004278}
4279
Jesse Halle5404242017-04-10 08:09:19 -07004280@extension("VK_KHR_shared_presentable_image") // 112
4281class VkSharedPresentSurfaceCapabilitiesKHR {
4282 VkStructureType sType
4283 void* pNext
4284 VkImageUsageFlags sharedPresentSupportedUsageFlags
4285}
4286
4287@extension("VK_KHR_get_surface_capabilities2") // 120
4288class VkPhysicalDeviceSurfaceInfo2KHR {
4289 VkStructureType sType
4290 const void* pNext
4291 VkSurfaceKHR surface
4292}
4293
4294@extension("VK_KHR_get_surface_capabilities2") // 120
4295class VkSurfaceCapabilities2KHR {
4296 VkStructureType sType
4297 void* pNext
4298 VkSurfaceCapabilitiesKHR surfaceCapabilities
4299}
4300
4301@extension("VK_KHR_get_surface_capabilities2") // 120
4302class VkSurfaceFormat2KHR {
4303 VkStructureType sType
4304 void* pNext
4305 VkSurfaceFormatKHR surfaceFormat
4306}
4307
Jesse Halld0599582017-03-10 18:35:38 -08004308@extension("VK_MVK_ios_surface") // 123
4309class VkIOSSurfaceCreateInfoMVK {
4310 VkStructureType sType
4311 const void* pNext
4312 VkIOSSurfaceCreateFlagsMVK flags
4313 const void* pView
4314}
4315
4316@extension("VK_MVK_macos_surface") // 124
4317class VkMacOSSurfaceCreateInfoMVK {
4318 VkStructureType sType
4319 const void* pNext
4320 VkMacOSSurfaceCreateFlagsMVK flags
4321 const void* pView
4322}
4323
Jesse Halld27f6aa2015-08-15 17:58:48 -07004324////////////////
4325// Commands //
4326////////////////
4327
4328// Function pointers. TODO: add support for function pointers.
4329
4330@external type void* PFN_vkVoidFunction
4331@pfn cmd void vkVoidFunction() {
4332}
4333
Jesse Hall3fbc8562015-11-29 22:10:52 -08004334@external type void* PFN_vkAllocationFunction
4335@pfn cmd void* vkAllocationFunction(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004336 void* pUserData,
4337 platform.size_t size,
4338 platform.size_t alignment,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004339 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08004340 return ?
4341}
4342
Jesse Hall3fbc8562015-11-29 22:10:52 -08004343@external type void* PFN_vkReallocationFunction
4344@pfn cmd void* vkReallocationFunction(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004345 void* pUserData,
4346 void* pOriginal,
4347 platform.size_t size,
4348 platform.size_t alignment,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004349 VkSystemAllocationScope allocationScope) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004350 return ?
4351}
4352
4353@external type void* PFN_vkFreeFunction
4354@pfn cmd void vkFreeFunction(
4355 void* pUserData,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004356 void* pMemory) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004357}
4358
Jesse Hall3fbc8562015-11-29 22:10:52 -08004359@external type void* PFN_vkInternalAllocationNotification
4360@pfn cmd void vkInternalAllocationNotification(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004361 void* pUserData,
4362 platform.size_t size,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004363 VkInternalAllocationType allocationType,
4364 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08004365}
4366
4367@external type void* PFN_vkInternalFreeNotification
4368@pfn cmd void vkInternalFreeNotification(
4369 void* pUserData,
4370 platform.size_t size,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004371 VkInternalAllocationType allocationType,
4372 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08004373}
Jesse Halld27f6aa2015-08-15 17:58:48 -07004374
4375// Global functions
4376
4377@threadSafety("system")
4378cmd VkResult vkCreateInstance(
4379 const VkInstanceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004380 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004381 VkInstance* pInstance) {
4382 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO)
4383
4384 instance := ?
4385 pInstance[0] = instance
4386 State.Instances[instance] = new!InstanceObject()
4387
Jesse Hall3dd678a2016-01-08 21:52:01 -08004388 layers := pCreateInfo.ppEnabledLayerNames[0:pCreateInfo.enabledLayerCount]
4389 extensions := pCreateInfo.ppEnabledExtensionNames[0:pCreateInfo.enabledExtensionCount]
Jesse Halld27f6aa2015-08-15 17:58:48 -07004390
4391 return ?
4392}
4393
4394@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004395cmd void vkDestroyInstance(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004396 VkInstance instance,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004397 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004398 instanceObject := GetInstance(instance)
4399
4400 State.Instances[instance] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004401}
4402
4403@threadSafety("system")
4404cmd VkResult vkEnumeratePhysicalDevices(
4405 VkInstance instance,
4406 u32* pPhysicalDeviceCount,
4407 VkPhysicalDevice* pPhysicalDevices) {
4408 instanceObject := GetInstance(instance)
4409
4410 physicalDeviceCount := as!u32(?)
4411 pPhysicalDeviceCount[0] = physicalDeviceCount
4412 physicalDevices := pPhysicalDevices[0:physicalDeviceCount]
4413
4414 for i in (0 .. physicalDeviceCount) {
4415 physicalDevice := ?
4416 physicalDevices[i] = physicalDevice
4417 if !(physicalDevice in State.PhysicalDevices) {
4418 State.PhysicalDevices[physicalDevice] = new!PhysicalDeviceObject(instance: instance)
4419 }
4420 }
4421
4422 return ?
4423}
4424
4425cmd PFN_vkVoidFunction vkGetDeviceProcAddr(
4426 VkDevice device,
4427 const char* pName) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004428 if device != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004429 device := GetDevice(device)
4430 }
4431
4432 return ?
4433}
4434
4435cmd PFN_vkVoidFunction vkGetInstanceProcAddr(
4436 VkInstance instance,
4437 const char* pName) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004438 if instance != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004439 instanceObject := GetInstance(instance)
4440 }
4441
4442 return ?
4443}
4444
Jesse Hall606a54e2015-11-19 22:17:28 -08004445cmd void vkGetPhysicalDeviceProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004446 VkPhysicalDevice physicalDevice,
4447 VkPhysicalDeviceProperties* pProperties) {
4448 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4449
4450 properties := ?
4451 pProperties[0] = properties
Jesse Halld27f6aa2015-08-15 17:58:48 -07004452}
4453
Jesse Hall606a54e2015-11-19 22:17:28 -08004454cmd void vkGetPhysicalDeviceQueueFamilyProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004455 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004456 u32* pQueueFamilyPropertyCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004457 VkQueueFamilyProperties* pQueueFamilyProperties) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004458 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004459 // TODO: Figure out how to express fetch-count-or-properties
4460 // This version fails 'apic validate' with 'fence not allowed in
4461 // *semantic.Branch'. Other attempts have failed with the same or other
4462 // errors.
4463 // if pQueueFamilyProperties != null {
4464 // queuesProperties := pQueueFamilyProperties[0:pCount[0]]
4465 // for i in (0 .. pCount[0]) {
4466 // queueProperties := as!VkQueueFamilyProperties(?)
4467 // queuesProperties[i] = queueProperties
4468 // }
4469 // } else {
4470 // count := ?
4471 // pCount[0] = count
4472 // }
Jesse Halld27f6aa2015-08-15 17:58:48 -07004473}
4474
Jesse Hall606a54e2015-11-19 22:17:28 -08004475cmd void vkGetPhysicalDeviceMemoryProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004476 VkPhysicalDevice physicalDevice,
4477 VkPhysicalDeviceMemoryProperties* pMemoryProperties) {
4478 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4479
4480 memoryProperties := ?
4481 pMemoryProperties[0] = memoryProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07004482}
4483
Jesse Hall606a54e2015-11-19 22:17:28 -08004484cmd void vkGetPhysicalDeviceFeatures(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004485 VkPhysicalDevice physicalDevice,
4486 VkPhysicalDeviceFeatures* pFeatures) {
4487 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4488
4489 features := ?
4490 pFeatures[0] = features
Jesse Halld27f6aa2015-08-15 17:58:48 -07004491}
4492
Jesse Hall606a54e2015-11-19 22:17:28 -08004493cmd void vkGetPhysicalDeviceFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004494 VkPhysicalDevice physicalDevice,
4495 VkFormat format,
4496 VkFormatProperties* pFormatProperties) {
4497 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4498
4499 formatProperties := ?
4500 pFormatProperties[0] = formatProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07004501}
4502
Jesse Halla9e57032015-11-30 01:03:10 -08004503cmd VkResult vkGetPhysicalDeviceImageFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004504 VkPhysicalDevice physicalDevice,
4505 VkFormat format,
4506 VkImageType type,
4507 VkImageTiling tiling,
4508 VkImageUsageFlags usage,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004509 VkImageCreateFlags flags,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004510 VkImageFormatProperties* pImageFormatProperties) {
4511 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4512
4513 imageFormatProperties := ?
4514 pImageFormatProperties[0] = imageFormatProperties
Jesse Halla9e57032015-11-30 01:03:10 -08004515
4516 return ?
Jesse Halld27f6aa2015-08-15 17:58:48 -07004517}
4518
Jesse Halld27f6aa2015-08-15 17:58:48 -07004519
4520// Device functions
4521
4522@threadSafety("system")
4523cmd VkResult vkCreateDevice(
4524 VkPhysicalDevice physicalDevice,
4525 const VkDeviceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004526 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004527 VkDevice* pDevice) {
4528 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO)
4529 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4530
4531 device := ?
4532 pDevice[0] = device
4533 State.Devices[device] = new!DeviceObject(physicalDevice: physicalDevice)
4534
4535 return ?
4536}
4537
4538@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004539cmd void vkDestroyDevice(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004540 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004541 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004542 deviceObject := GetDevice(device)
4543
4544 State.Devices[device] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004545}
4546
4547
4548// Extension discovery functions
4549
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004550cmd VkResult vkEnumerateInstanceLayerProperties(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004551 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004552 VkLayerProperties* pProperties) {
4553 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08004554 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07004555
4556 properties := pProperties[0:count]
4557 for i in (0 .. count) {
4558 property := ?
4559 properties[i] = property
4560 }
4561
4562 return ?
4563}
4564
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004565cmd VkResult vkEnumerateInstanceExtensionProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004566 const char* pLayerName,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004567 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004568 VkExtensionProperties* pProperties) {
4569 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08004570 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07004571
4572 properties := pProperties[0:count]
4573 for i in (0 .. count) {
4574 property := ?
4575 properties[i] = property
4576 }
4577
4578 return ?
4579}
4580
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004581cmd VkResult vkEnumerateDeviceLayerProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004582 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004583 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004584 VkLayerProperties* pProperties) {
4585 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4586 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08004587 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07004588
4589 properties := pProperties[0:count]
4590 for i in (0 .. count) {
4591 property := ?
4592 properties[i] = property
4593 }
4594
4595 return ?
4596}
4597
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004598cmd VkResult vkEnumerateDeviceExtensionProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004599 VkPhysicalDevice physicalDevice,
4600 const char* pLayerName,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004601 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004602 VkExtensionProperties* pProperties) {
4603 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4604
4605 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08004606 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07004607
4608 properties := pProperties[0:count]
4609 for i in (0 .. count) {
4610 property := ?
4611 properties[i] = property
4612 }
4613
4614 return ?
4615}
4616
4617
4618// Queue functions
4619
4620@threadSafety("system")
Jesse Hall606a54e2015-11-19 22:17:28 -08004621cmd void vkGetDeviceQueue(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004622 VkDevice device,
4623 u32 queueFamilyIndex,
4624 u32 queueIndex,
4625 VkQueue* pQueue) {
4626 deviceObject := GetDevice(device)
4627
4628 queue := ?
4629 pQueue[0] = queue
4630
4631 if !(queue in State.Queues) {
4632 State.Queues[queue] = new!QueueObject(device: device)
4633 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07004634}
4635
4636@threadSafety("app")
4637cmd VkResult vkQueueSubmit(
4638 VkQueue queue,
Jesse Halla366a512015-11-19 22:30:07 -08004639 u32 submitCount,
Jesse Hallb00daad2015-11-29 19:46:20 -08004640 const VkSubmitInfo* pSubmits,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004641 VkFence fence) {
4642 queueObject := GetQueue(queue)
4643
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004644 if fence != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004645 fenceObject := GetFence(fence)
4646 assert(fenceObject.device == queueObject.device)
4647 }
4648
Jesse Hall3fbc8562015-11-29 22:10:52 -08004649 // commandBuffers := pcommandBuffers[0:commandBufferCount]
4650 // for i in (0 .. commandBufferCount) {
4651 // commandBuffer := commandBuffers[i]
4652 // commandBufferObject := GetCommandBuffer(commandBuffer)
4653 // assert(commandBufferObject.device == queueObject.device)
Jesse Halla366a512015-11-19 22:30:07 -08004654 //
Jesse Hall3fbc8562015-11-29 22:10:52 -08004655 // validate("QueueCheck", commandBufferObject.queueFlags in queueObject.flags,
4656 // "vkQueueSubmit: enqueued commandBuffer requires missing queue capabilities.")
Jesse Halla366a512015-11-19 22:30:07 -08004657 // }
Jesse Halld27f6aa2015-08-15 17:58:48 -07004658
4659 return ?
4660}
4661
4662@threadSafety("system")
4663cmd VkResult vkQueueWaitIdle(
4664 VkQueue queue) {
4665 queueObject := GetQueue(queue)
4666
4667 return ?
4668}
4669
4670@threadSafety("system")
4671cmd VkResult vkDeviceWaitIdle(
4672 VkDevice device) {
4673 deviceObject := GetDevice(device)
4674
4675 return ?
4676}
4677
4678
4679// Memory functions
4680
4681@threadSafety("system")
Jesse Hall3fbc8562015-11-29 22:10:52 -08004682cmd VkResult vkAllocateMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004683 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004684 const VkMemoryAllocateInfo* pAllocateInfo,
4685 const VkAllocationCallbacks* pAllocator,
4686 VkDeviceMemory* pMemory) {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08004687 assert(pAllocateInfo.sType == VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004688 deviceObject := GetDevice(device)
4689
Jesse Hall3fbc8562015-11-29 22:10:52 -08004690 memory := ?
4691 pMemory[0] = memory
4692 State.DeviceMemories[memory] = new!DeviceMemoryObject(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004693 device: device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004694 allocationSize: pAllocateInfo[0].allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004695
4696 return ?
4697}
4698
4699@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004700cmd void vkFreeMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004701 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004702 VkDeviceMemory memory,
4703 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004704 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08004705 memoryObject := GetDeviceMemory(memory)
4706 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004707
4708 // Check that no objects are still bound before freeing.
Jesse Hall3fbc8562015-11-29 22:10:52 -08004709 validate("MemoryCheck", len(memoryObject.boundObjects) == 0,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004710 "vkFreeMemory: objects still bound")
Jesse Hall3fbc8562015-11-29 22:10:52 -08004711 validate("MemoryCheck", len(memoryObject.boundCommandBuffers) == 0,
4712 "vkFreeMemory: commandBuffers still bound")
4713 State.DeviceMemories[memory] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004714}
4715
4716@threadSafety("app")
4717cmd VkResult vkMapMemory(
4718 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004719 VkDeviceMemory memory,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004720 VkDeviceSize offset,
4721 VkDeviceSize size,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004722 VkMemoryMapFlags flags,
4723 void** ppData) {
4724 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08004725 memoryObject := GetDeviceMemory(memory)
4726 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004727
4728 assert(flags == as!VkMemoryMapFlags(0))
Jesse Hall3fbc8562015-11-29 22:10:52 -08004729 assert((offset + size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004730
4731 return ?
4732}
4733
4734@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004735cmd void vkUnmapMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004736 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004737 VkDeviceMemory memory) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004738 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08004739 memoryObject := GetDeviceMemory(memory)
4740 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004741}
4742
4743cmd VkResult vkFlushMappedMemoryRanges(
4744 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004745 u32 memoryRangeCount
4746 const VkMappedMemoryRange* pMemoryRanges) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004747 deviceObject := GetDevice(device)
4748
Jesse Hall3fbc8562015-11-29 22:10:52 -08004749 memoryRanges := pMemoryRanges[0:memoryRangeCount]
4750 for i in (0 .. memoryRangeCount) {
4751 memoryRange := memoryRanges[i]
4752 memoryObject := GetDeviceMemory(memoryRange.memory)
4753 assert(memoryObject.device == device)
4754 assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004755 }
4756
4757 return ?
4758}
4759
4760cmd VkResult vkInvalidateMappedMemoryRanges(
4761 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004762 u32 memoryRangeCount,
4763 const VkMappedMemoryRange* pMemoryRanges) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004764 deviceObject := GetDevice(device)
4765
Jesse Hall3fbc8562015-11-29 22:10:52 -08004766 memoryRanges := pMemoryRanges[0:memoryRangeCount]
4767 for i in (0 .. memoryRangeCount) {
4768 memoryRange := memoryRanges[i]
4769 memoryObject := GetDeviceMemory(memoryRange.memory)
4770 assert(memoryObject.device == device)
4771 assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004772 }
4773
4774 return ?
4775}
4776
4777
4778// Memory management API functions
4779
Jesse Hall606a54e2015-11-19 22:17:28 -08004780cmd void vkGetDeviceMemoryCommitment(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004781 VkDevice device,
4782 VkDeviceMemory memory,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004783 VkDeviceSize* pCommittedMemoryInBytes) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004784 deviceObject := GetDevice(device)
4785
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004786 if memory != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004787 memoryObject := GetDeviceMemory(memory)
4788 assert(memoryObject.device == device)
4789 }
4790
4791 committedMemoryInBytes := ?
4792 pCommittedMemoryInBytes[0] = committedMemoryInBytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07004793}
4794
Jesse Hall606a54e2015-11-19 22:17:28 -08004795cmd void vkGetBufferMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004796 VkDevice device,
4797 VkBuffer buffer,
4798 VkMemoryRequirements* pMemoryRequirements) {
4799 deviceObject := GetDevice(device)
4800 bufferObject := GetBuffer(buffer)
4801 assert(bufferObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004802}
4803
4804cmd VkResult vkBindBufferMemory(
4805 VkDevice device,
4806 VkBuffer buffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004807 VkDeviceMemory memory,
4808 VkDeviceSize memoryOffset) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004809 deviceObject := GetDevice(device)
4810 bufferObject := GetBuffer(buffer)
4811 assert(bufferObject.device == device)
4812
4813 // Unbind buffer from previous memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08004814 if bufferObject.memory != NULL_HANDLE {
4815 memoryObject := GetDeviceMemory(bufferObject.memory)
4816 memoryObject.boundObjects[as!u64(buffer)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004817 }
4818
4819 // Bind buffer to given memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08004820 if memory != NULL_HANDLE {
4821 memoryObject := GetDeviceMemory(memory)
4822 assert(memoryObject.device == device)
4823 memoryObject.boundObjects[as!u64(buffer)] = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07004824 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08004825 bufferObject.memory = memory
4826 bufferObject.memoryOffset = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07004827
4828 return ?
4829}
4830
Jesse Hall606a54e2015-11-19 22:17:28 -08004831cmd void vkGetImageMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004832 VkDevice device,
4833 VkImage image,
4834 VkMemoryRequirements* pMemoryRequirements) {
4835 deviceObject := GetDevice(device)
4836 imageObject := GetImage(image)
4837 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004838}
4839
4840cmd VkResult vkBindImageMemory(
4841 VkDevice device,
4842 VkImage image,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004843 VkDeviceMemory memory,
4844 VkDeviceSize memoryOffset) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004845 deviceObject := GetDevice(device)
4846 imageObject := GetImage(image)
4847 assert(imageObject.device == device)
4848
4849 // Unbind image from previous memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08004850 if imageObject.memory != NULL_HANDLE {
4851 memoryObject := GetDeviceMemory(imageObject.memory)
4852 memoryObject.boundObjects[as!u64(image)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004853 }
4854
4855 // Bind image to given memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08004856 if memory != NULL_HANDLE {
4857 memoryObject := GetDeviceMemory(memory)
4858 assert(memoryObject.device == device)
4859 memoryObject.boundObjects[as!u64(image)] = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07004860 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08004861 imageObject.memory = memory
4862 imageObject.memoryOffset = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07004863
4864 return ?
4865}
4866
Jesse Hall606a54e2015-11-19 22:17:28 -08004867cmd void vkGetImageSparseMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004868 VkDevice device,
4869 VkImage image,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004870 u32* pSparseMemoryRequirementCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004871 VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
4872 deviceObject := GetDevice(device)
4873 imageObject := GetImage(image)
4874 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004875}
4876
Jesse Hall606a54e2015-11-19 22:17:28 -08004877cmd void vkGetPhysicalDeviceSparseImageFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004878 VkPhysicalDevice physicalDevice,
4879 VkFormat format,
4880 VkImageType type,
Jesse Hall091ed9e2015-11-30 00:55:29 -08004881 VkSampleCountFlagBits samples,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004882 VkImageUsageFlags usage,
4883 VkImageTiling tiling,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004884 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004885 VkSparseImageFormatProperties* pProperties) {
4886 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004887}
4888
Jesse Halla6429252015-11-29 18:59:42 -08004889cmd VkResult vkQueueBindSparse(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004890 VkQueue queue,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004891 u32 bindInfoCount,
Jesse Halla6429252015-11-29 18:59:42 -08004892 const VkBindSparseInfo* pBindInfo,
4893 VkFence fence) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004894 queueObject := GetQueue(queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004895
4896 return ?
4897}
4898
4899
4900// Fence functions
4901
4902@threadSafety("system")
4903cmd VkResult vkCreateFence(
4904 VkDevice device,
4905 const VkFenceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004906 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004907 VkFence* pFence) {
4908 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FENCE_CREATE_INFO)
4909 deviceObject := GetDevice(device)
4910
4911 fence := ?
4912 pFence[0] = fence
4913 State.Fences[fence] = new!FenceObject(
Jesse Halld8bade02015-11-24 10:24:18 -08004914 device: device, signaled: (pCreateInfo.flags == as!VkFenceCreateFlags(VK_FENCE_CREATE_SIGNALED_BIT)))
Jesse Halld27f6aa2015-08-15 17:58:48 -07004915
4916 return ?
4917}
4918
4919@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004920cmd void vkDestroyFence(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004921 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004922 VkFence fence,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004923 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004924 deviceObject := GetDevice(device)
4925 fenceObject := GetFence(fence)
4926 assert(fenceObject.device == device)
4927
4928 State.Fences[fence] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004929}
4930
4931@threadSafety("system")
4932cmd VkResult vkResetFences(
4933 VkDevice device,
4934 u32 fenceCount,
4935 const VkFence* pFences) {
4936 deviceObject := GetDevice(device)
4937
4938 fences := pFences[0:fenceCount]
4939 for i in (0 .. fenceCount) {
4940 fence := fences[i]
4941 fenceObject := GetFence(fence)
4942 assert(fenceObject.device == device)
4943 fenceObject.signaled = false
4944 }
4945
4946 return ?
4947}
4948
4949@threadSafety("system")
4950cmd VkResult vkGetFenceStatus(
4951 VkDevice device,
4952 VkFence fence) {
4953 deviceObject := GetDevice(device)
4954 fenceObject := GetFence(fence)
4955 assert(fenceObject.device == device)
4956
4957 return ?
4958}
4959
4960@threadSafety("system")
4961cmd VkResult vkWaitForFences(
4962 VkDevice device,
4963 u32 fenceCount,
4964 const VkFence* pFences,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004965 VkBool32 waitAll,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004966 u64 timeout) { /// timeout in nanoseconds
4967 deviceObject := GetDevice(device)
4968
4969 fences := pFences[0:fenceCount]
4970 for i in (0 .. fenceCount) {
4971 fence := fences[i]
4972 fenceObject := GetFence(fence)
4973 assert(fenceObject.device == device)
4974 }
4975
4976 return ?
4977}
4978
4979
4980// Queue semaphore functions
4981
4982@threadSafety("system")
4983cmd VkResult vkCreateSemaphore(
4984 VkDevice device,
4985 const VkSemaphoreCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004986 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004987 VkSemaphore* pSemaphore) {
4988 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO)
4989 deviceObject := GetDevice(device)
4990
4991 semaphore := ?
4992 pSemaphore[0] = semaphore
4993 State.Semaphores[semaphore] = new!SemaphoreObject(device: device)
4994
4995 return ?
4996}
4997
4998@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004999cmd void vkDestroySemaphore(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005000 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005001 VkSemaphore semaphore,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005002 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005003 deviceObject := GetDevice(device)
5004 semaphoreObject := GetSemaphore(semaphore)
5005 assert(semaphoreObject.device == device)
5006
5007 State.Semaphores[semaphore] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005008}
5009
Jesse Halld27f6aa2015-08-15 17:58:48 -07005010
5011// Event functions
5012
5013@threadSafety("system")
5014cmd VkResult vkCreateEvent(
5015 VkDevice device,
5016 const VkEventCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005017 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005018 VkEvent* pEvent) {
5019 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_EVENT_CREATE_INFO)
5020 deviceObject := GetDevice(device)
5021
5022 event := ?
5023 pEvent[0] = event
5024 State.Events[event] = new!EventObject(device: device)
5025
5026 return ?
5027}
5028
5029@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005030cmd void vkDestroyEvent(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005031 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005032 VkEvent event,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005033 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005034 deviceObject := GetDevice(device)
5035 eventObject := GetEvent(event)
5036 assert(eventObject.device == device)
5037
5038 State.Events[event] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005039}
5040
5041@threadSafety("system")
5042cmd VkResult vkGetEventStatus(
5043 VkDevice device,
5044 VkEvent event) {
5045 deviceObject := GetDevice(device)
5046 eventObject := GetEvent(event)
5047 assert(eventObject.device == device)
5048
5049 return ?
5050}
5051
5052@threadSafety("system")
5053cmd VkResult vkSetEvent(
5054 VkDevice device,
5055 VkEvent event) {
5056 deviceObject := GetDevice(device)
5057 eventObject := GetEvent(event)
5058 assert(eventObject.device == device)
5059
5060 return ?
5061}
5062
5063@threadSafety("system")
5064cmd VkResult vkResetEvent(
5065 VkDevice device,
5066 VkEvent event) {
5067 deviceObject := GetDevice(device)
5068 eventObject := GetEvent(event)
5069 assert(eventObject.device == device)
5070
5071 return ?
5072}
5073
5074
5075// Query functions
5076
5077@threadSafety("system")
5078cmd VkResult vkCreateQueryPool(
5079 VkDevice device,
5080 const VkQueryPoolCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005081 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005082 VkQueryPool* pQueryPool) {
5083 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO)
5084 deviceObject := GetDevice(device)
5085
5086 queryPool := ?
5087 pQueryPool[0] = queryPool
5088 State.QueryPools[queryPool] = new!QueryPoolObject(device: device)
5089
5090 return ?
5091}
5092
5093@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005094cmd void vkDestroyQueryPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005095 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005096 VkQueryPool queryPool,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005097 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005098 deviceObject := GetDevice(device)
5099 queryPoolObject := GetQueryPool(queryPool)
5100 assert(queryPoolObject.device == device)
5101
5102 State.QueryPools[queryPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005103}
5104
5105@threadSafety("system")
5106cmd VkResult vkGetQueryPoolResults(
5107 VkDevice device,
5108 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08005109 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005110 u32 queryCount,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005111 platform.size_t dataSize,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005112 void* pData,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005113 VkDeviceSize stride,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005114 VkQueryResultFlags flags) {
5115 deviceObject := GetDevice(device)
5116 queryPoolObject := GetQueryPool(queryPool)
5117 assert(queryPoolObject.device == device)
5118
Jesse Halld27f6aa2015-08-15 17:58:48 -07005119 data := pData[0:dataSize]
5120
5121 return ?
5122}
5123
5124// Buffer functions
5125
5126@threadSafety("system")
5127cmd VkResult vkCreateBuffer(
5128 VkDevice device,
5129 const VkBufferCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005130 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005131 VkBuffer* pBuffer) {
5132 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO)
5133 deviceObject := GetDevice(device)
5134
5135 buffer := ?
5136 pBuffer[0] = buffer
5137 State.Buffers[buffer] = new!BufferObject(device: device)
5138
5139 return ?
5140}
5141
5142@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005143cmd void vkDestroyBuffer(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005144 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005145 VkBuffer buffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005146 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005147 deviceObject := GetDevice(device)
5148 bufferObject := GetBuffer(buffer)
5149 assert(bufferObject.device == device)
5150
Jesse Hall3fbc8562015-11-29 22:10:52 -08005151 assert(bufferObject.memory == 0)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005152 State.Buffers[buffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005153}
5154
5155
5156// Buffer view functions
5157
5158@threadSafety("system")
5159cmd VkResult vkCreateBufferView(
5160 VkDevice device,
5161 const VkBufferViewCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005162 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005163 VkBufferView* pView) {
5164 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO)
5165 deviceObject := GetDevice(device)
5166
5167 bufferObject := GetBuffer(pCreateInfo.buffer)
5168 assert(bufferObject.device == device)
5169
5170 view := ?
5171 pView[0] = view
5172 State.BufferViews[view] = new!BufferViewObject(device: device, buffer: pCreateInfo.buffer)
5173
5174 return ?
5175}
5176
5177@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005178cmd void vkDestroyBufferView(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005179 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005180 VkBufferView bufferView,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005181 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005182 deviceObject := GetDevice(device)
5183 bufferViewObject := GetBufferView(bufferView)
5184 assert(bufferViewObject.device == device)
5185
5186 State.BufferViews[bufferView] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005187}
5188
5189
5190// Image functions
5191
5192@threadSafety("system")
5193cmd VkResult vkCreateImage(
5194 VkDevice device,
5195 const VkImageCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005196 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005197 VkImage* pImage) {
5198 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO)
5199 deviceObject := GetDevice(device)
5200
5201 image := ?
5202 pImage[0] = image
5203 State.Images[image] = new!ImageObject(device: device)
5204
5205 return ?
5206}
5207
5208@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005209cmd void vkDestroyImage(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005210 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005211 VkImage image,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005212 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005213 deviceObject := GetDevice(device)
5214 imageObject := GetImage(image)
5215 assert(imageObject.device == device)
5216
Jesse Hall3fbc8562015-11-29 22:10:52 -08005217 assert(imageObject.memory == 0)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005218 State.Images[image] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005219}
5220
Jesse Hall606a54e2015-11-19 22:17:28 -08005221cmd void vkGetImageSubresourceLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005222 VkDevice device,
5223 VkImage image,
5224 const VkImageSubresource* pSubresource,
5225 VkSubresourceLayout* pLayout) {
5226 deviceObject := GetDevice(device)
5227 imageObject := GetImage(image)
5228 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005229}
5230
5231
5232// Image view functions
5233
5234@threadSafety("system")
5235cmd VkResult vkCreateImageView(
5236 VkDevice device,
5237 const VkImageViewCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005238 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005239 VkImageView* pView) {
5240 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO)
5241 deviceObject := GetDevice(device)
5242
5243 imageObject := GetImage(pCreateInfo.image)
5244 assert(imageObject.device == device)
5245
5246 view := ?
5247 pView[0] = view
5248 State.ImageViews[view] = new!ImageViewObject(device: device, image: pCreateInfo.image)
5249
5250 return ?
5251}
5252
5253@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005254cmd void vkDestroyImageView(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005255 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005256 VkImageView imageView,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005257 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005258 deviceObject := GetDevice(device)
5259 imageViewObject := GetImageView(imageView)
5260 assert(imageViewObject.device == device)
5261
5262 State.ImageViews[imageView] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005263}
5264
5265
5266// Shader functions
5267
5268cmd VkResult vkCreateShaderModule(
5269 VkDevice device,
5270 const VkShaderModuleCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005271 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005272 VkShaderModule* pShaderModule) {
5273 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO)
5274 deviceObject := GetDevice(device)
5275
5276 shaderModule := ?
5277 pShaderModule[0] = shaderModule
5278 State.ShaderModules[shaderModule] = new!ShaderModuleObject(device: device)
5279
5280 return ?
5281}
5282
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005283cmd void vkDestroyShaderModule(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005284 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005285 VkShaderModule shaderModule,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005286 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005287 deviceObject := GetDevice(device)
5288 shaderModuleObject := GetShaderModule(shaderModule)
5289 assert(shaderModuleObject.device == device)
5290
5291 State.ShaderModules[shaderModule] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005292}
5293
Jesse Halld27f6aa2015-08-15 17:58:48 -07005294
5295// Pipeline functions
5296
5297cmd VkResult vkCreatePipelineCache(
5298 VkDevice device,
5299 const VkPipelineCacheCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005300 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005301 VkPipelineCache* pPipelineCache) {
5302 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO)
5303 deviceObject := GetDevice(device)
5304
5305 pipelineCache := ?
5306 pPipelineCache[0] = pipelineCache
5307 State.PipelineCaches[pipelineCache] = new!PipelineCacheObject(device: device)
5308
5309 return ?
5310}
5311
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005312cmd void vkDestroyPipelineCache(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005313 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005314 VkPipelineCache pipelineCache,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005315 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005316 deviceObject := GetDevice(device)
5317 pipelineCacheObject := GetPipelineCache(pipelineCache)
5318 assert(pipelineCacheObject.device == device)
5319
5320 State.PipelineCaches[pipelineCache] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005321}
5322
Jesse Halld27f6aa2015-08-15 17:58:48 -07005323cmd VkResult vkGetPipelineCacheData(
5324 VkDevice device,
5325 VkPipelineCache pipelineCache,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005326 platform.size_t* pDataSize,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005327 void* pData) {
5328 deviceObject := GetDevice(device)
5329 pipelineCacheObject := GetPipelineCache(pipelineCache)
5330 assert(pipelineCacheObject.device == device)
5331
5332 return ?
5333}
5334
5335cmd VkResult vkMergePipelineCaches(
5336 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005337 VkPipelineCache dstCache,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005338 u32 srcCacheCount,
5339 const VkPipelineCache* pSrcCaches) {
5340 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005341 dstCacheObject := GetPipelineCache(dstCache)
5342 assert(dstCacheObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005343
5344 srcCaches := pSrcCaches[0:srcCacheCount]
5345 for i in (0 .. srcCacheCount) {
5346 srcCache := srcCaches[i]
5347 srcCacheObject := GetPipelineCache(srcCache)
5348 assert(srcCacheObject.device == device)
5349 }
5350
5351 return ?
5352}
5353
5354cmd VkResult vkCreateGraphicsPipelines(
5355 VkDevice device,
5356 VkPipelineCache pipelineCache,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005357 u32 createInfoCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005358 const VkGraphicsPipelineCreateInfo* pCreateInfos,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005359 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005360 VkPipeline* pPipelines) {
5361 deviceObject := GetDevice(device)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005362 if pipelineCache != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005363 pipelineCacheObject := GetPipelineCache(pipelineCache)
5364 assert(pipelineCacheObject.device == device)
5365 }
5366
Jesse Hall03b6fe12015-11-24 12:44:21 -08005367 createInfos := pCreateInfos[0:createInfoCount]
5368 pipelines := pPipelines[0:createInfoCount]
5369 for i in (0 .. createInfoCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005370 pipeline := ?
5371 pipelines[i] = pipeline
5372 State.Pipelines[pipeline] = new!PipelineObject(device: device)
5373 }
5374
5375 return ?
5376}
5377
5378cmd VkResult vkCreateComputePipelines(
5379 VkDevice device,
5380 VkPipelineCache pipelineCache,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005381 u32 createInfoCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005382 const VkComputePipelineCreateInfo* pCreateInfos,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005383 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005384 VkPipeline* pPipelines) {
5385 deviceObject := GetDevice(device)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005386 if pipelineCache != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005387 pipelineCacheObject := GetPipelineCache(pipelineCache)
5388 assert(pipelineCacheObject.device == device)
5389 }
5390
Jesse Hall03b6fe12015-11-24 12:44:21 -08005391 createInfos := pCreateInfos[0:createInfoCount]
5392 pipelines := pPipelines[0:createInfoCount]
5393 for i in (0 .. createInfoCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005394 pipeline := ?
5395 pipelines[i] = pipeline
5396 State.Pipelines[pipeline] = new!PipelineObject(device: device)
5397 }
5398
5399 return ?
5400}
5401
5402@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005403cmd void vkDestroyPipeline(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005404 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005405 VkPipeline pipeline,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005406 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005407 deviceObject := GetDevice(device)
5408 pipelineObjects := GetPipeline(pipeline)
5409 assert(pipelineObjects.device == device)
5410
5411 State.Pipelines[pipeline] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005412}
5413
5414
5415// Pipeline layout functions
5416
5417@threadSafety("system")
5418cmd VkResult vkCreatePipelineLayout(
5419 VkDevice device,
5420 const VkPipelineLayoutCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005421 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005422 VkPipelineLayout* pPipelineLayout) {
5423 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO)
5424 deviceObject := GetDevice(device)
5425
5426 pipelineLayout := ?
5427 pPipelineLayout[0] = pipelineLayout
5428 State.PipelineLayouts[pipelineLayout] = new!PipelineLayoutObject(device: device)
5429
5430 return ?
5431}
5432
5433@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005434cmd void vkDestroyPipelineLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005435 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005436 VkPipelineLayout pipelineLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005437 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005438 deviceObject := GetDevice(device)
5439 pipelineLayoutObjects := GetPipelineLayout(pipelineLayout)
5440 assert(pipelineLayoutObjects.device == device)
5441
5442 State.PipelineLayouts[pipelineLayout] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005443}
5444
5445
5446// Sampler functions
5447
5448@threadSafety("system")
5449cmd VkResult vkCreateSampler(
5450 VkDevice device,
5451 const VkSamplerCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005452 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005453 VkSampler* pSampler) {
5454 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO)
5455 deviceObject := GetDevice(device)
5456
5457 sampler := ?
5458 pSampler[0] = sampler
5459 State.Samplers[sampler] = new!SamplerObject(device: device)
5460
5461 return ?
5462}
5463
5464@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005465cmd void vkDestroySampler(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005466 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005467 VkSampler sampler,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005468 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005469 deviceObject := GetDevice(device)
5470 samplerObject := GetSampler(sampler)
5471 assert(samplerObject.device == device)
5472
5473 State.Samplers[sampler] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005474}
5475
5476
5477// Descriptor set functions
5478
5479@threadSafety("system")
5480cmd VkResult vkCreateDescriptorSetLayout(
5481 VkDevice device,
5482 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005483 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005484 VkDescriptorSetLayout* pSetLayout) {
5485 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO)
5486 deviceObject := GetDevice(device)
5487
5488 setLayout := ?
5489 pSetLayout[0] = setLayout
5490 State.DescriptorSetLayouts[setLayout] = new!DescriptorSetLayoutObject(device: device)
5491
5492 return ?
5493}
5494
5495@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005496cmd void vkDestroyDescriptorSetLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005497 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005498 VkDescriptorSetLayout descriptorSetLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005499 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005500 deviceObject := GetDevice(device)
5501 descriptorSetLayoutObject := GetDescriptorSetLayout(descriptorSetLayout)
5502 assert(descriptorSetLayoutObject.device == device)
5503
5504 State.DescriptorSetLayouts[descriptorSetLayout] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005505}
5506
5507@threadSafety("system")
5508cmd VkResult vkCreateDescriptorPool(
5509 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005510 const VkDescriptorPoolCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005511 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005512 VkDescriptorPool* pDescriptorPool) {
5513 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO)
5514 deviceObject := GetDevice(device)
5515
5516 descriptorPool := ?
5517 pDescriptorPool[0] = descriptorPool
5518 State.DescriptorPools[descriptorPool] = new!DescriptorPoolObject(device: device)
5519
5520 return ?
5521}
5522
5523@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005524cmd void vkDestroyDescriptorPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005525 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005526 VkDescriptorPool descriptorPool,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005527 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005528 deviceObject := GetDevice(device)
5529 descriptorPoolObject := GetDescriptorPool(descriptorPool)
5530 assert(descriptorPoolObject.device == device)
5531
5532 State.DescriptorPools[descriptorPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005533}
5534
5535@threadSafety("app")
5536cmd VkResult vkResetDescriptorPool(
5537 VkDevice device,
Jesse Hallfbf97b02015-11-20 14:17:03 -08005538 VkDescriptorPool descriptorPool,
5539 VkDescriptorPoolResetFlags flags) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005540 deviceObject := GetDevice(device)
5541 descriptorPoolObject := GetDescriptorPool(descriptorPool)
5542 assert(descriptorPoolObject.device == device)
5543
5544 return ?
5545}
5546
5547@threadSafety("app")
Jesse Hall3fbc8562015-11-29 22:10:52 -08005548cmd VkResult vkAllocateDescriptorSets(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005549 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005550 const VkDescriptorSetAllocateInfo* pAllocateInfo,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005551 VkDescriptorSet* pDescriptorSets) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005552 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005553 allocInfo := pAllocateInfo[0]
Jesse Hallfbf97b02015-11-20 14:17:03 -08005554 descriptorPoolObject := GetDescriptorPool(allocInfo.descriptorPool)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005555
Jesse Hall03b6fe12015-11-24 12:44:21 -08005556 setLayouts := allocInfo.pSetLayouts[0:allocInfo.setCount]
5557 for i in (0 .. allocInfo.setCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005558 setLayout := setLayouts[i]
5559 setLayoutObject := GetDescriptorSetLayout(setLayout)
5560 assert(setLayoutObject.device == device)
5561 }
5562
Jesse Hall03b6fe12015-11-24 12:44:21 -08005563 descriptorSets := pDescriptorSets[0:allocInfo.setCount]
5564 for i in (0 .. allocInfo.setCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005565 descriptorSet := ?
5566 descriptorSets[i] = descriptorSet
5567 State.DescriptorSets[descriptorSet] = new!DescriptorSetObject(device: device)
5568 }
5569
5570 return ?
5571}
5572
Jesse Hallf09c6b12015-08-15 19:54:28 -07005573cmd VkResult vkFreeDescriptorSets(
5574 VkDevice device,
5575 VkDescriptorPool descriptorPool,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005576 u32 descriptorSetCount,
Jesse Hallf09c6b12015-08-15 19:54:28 -07005577 const VkDescriptorSet* pDescriptorSets) {
5578 deviceObject := GetDevice(device)
5579 descriptorPoolObject := GetDescriptorPool(descriptorPool)
5580
Jesse Hall03b6fe12015-11-24 12:44:21 -08005581 descriptorSets := pDescriptorSets[0:descriptorSetCount]
5582 for i in (0 .. descriptorSetCount) {
Jesse Hallf09c6b12015-08-15 19:54:28 -07005583 descriptorSet := descriptorSets[i]
5584 descriptorSetObject := GetDescriptorSet(descriptorSet)
5585 assert(descriptorSetObject.device == device)
5586 State.DescriptorSets[descriptorSet] = null
5587 }
5588
5589 return ?
5590}
5591
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005592cmd void vkUpdateDescriptorSets(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005593 VkDevice device,
Jesse Hallb00daad2015-11-29 19:46:20 -08005594 u32 descriptorWriteCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005595 const VkWriteDescriptorSet* pDescriptorWrites,
Jesse Hallb00daad2015-11-29 19:46:20 -08005596 u32 descriptorCopyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005597 const VkCopyDescriptorSet* pDescriptorCopies) {
5598 deviceObject := GetDevice(device)
5599
Jesse Hallb00daad2015-11-29 19:46:20 -08005600 descriptorWrites := pDescriptorWrites[0:descriptorWriteCount]
5601 for i in (0 .. descriptorWriteCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005602 descriptorWrite := descriptorWrites[i]
Jesse Hall3fbc8562015-11-29 22:10:52 -08005603 descriptorWriteObject := GetDescriptorSet(descriptorWrite.dstSet)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005604 assert(descriptorWriteObject.device == device)
5605 }
5606
Jesse Hallb00daad2015-11-29 19:46:20 -08005607 descriptorCopies := pDescriptorCopies[0:descriptorCopyCount]
5608 for i in (0 .. descriptorCopyCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005609 descriptorCopy := descriptorCopies[i]
Jesse Hall3fbc8562015-11-29 22:10:52 -08005610 descriptorCopyObject := GetDescriptorSet(descriptorCopy.dstSet)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005611 assert(descriptorCopyObject.device == device)
5612 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07005613}
5614
5615
5616// Framebuffer functions
5617
5618@threadSafety("system")
5619cmd VkResult vkCreateFramebuffer(
5620 VkDevice device,
5621 const VkFramebufferCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005622 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005623 VkFramebuffer* pFramebuffer) {
5624 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO)
5625 deviceObject := GetDevice(device)
5626
5627 framebuffer := ?
5628 pFramebuffer[0] = framebuffer
5629 State.Framebuffers[framebuffer] = new!FramebufferObject(device: device)
5630
5631 return ?
5632}
5633
5634@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005635cmd void vkDestroyFramebuffer(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005636 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005637 VkFramebuffer framebuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005638 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005639 deviceObject := GetDevice(device)
5640 framebufferObject := GetFramebuffer(framebuffer)
5641 assert(framebufferObject.device == device)
5642
5643 State.Framebuffers[framebuffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005644}
5645
5646
5647// Renderpass functions
5648
5649@threadSafety("system")
5650cmd VkResult vkCreateRenderPass(
5651 VkDevice device,
5652 const VkRenderPassCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005653 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005654 VkRenderPass* pRenderPass) {
5655 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO)
5656 deviceObject := GetDevice(device)
5657
5658 renderpass := ?
5659 pRenderPass[0] = renderpass
5660 State.RenderPasses[renderpass] = new!RenderPassObject(device: device)
5661
5662 return ?
5663}
5664
5665@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005666cmd void vkDestroyRenderPass(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005667 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005668 VkRenderPass renderPass,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005669 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005670 deviceObject := GetDevice(device)
5671 renderPassObject := GetRenderPass(renderPass)
5672 assert(renderPassObject.device == device)
5673
5674 State.RenderPasses[renderPass] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005675}
5676
Jesse Hall606a54e2015-11-19 22:17:28 -08005677cmd void vkGetRenderAreaGranularity(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005678 VkDevice device,
5679 VkRenderPass renderPass,
5680 VkExtent2D* pGranularity) {
5681 deviceObject := GetDevice(device)
5682 renderPassObject := GetRenderPass(renderPass)
5683
5684 granularity := ?
5685 pGranularity[0] = granularity
Jesse Halld27f6aa2015-08-15 17:58:48 -07005686}
5687
5688// Command pool functions
5689
5690cmd VkResult vkCreateCommandPool(
5691 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005692 const VkCommandPoolCreateInfo* pCreateInfo,
5693 const VkAllocationCallbacks* pAllocator,
5694 VkCommandPool* pCommandPool) {
5695 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005696 deviceObject := GetDevice(device)
5697
Jesse Hall3fbc8562015-11-29 22:10:52 -08005698 commandPool := ?
5699 pCommandPool[0] = commandPool
5700 State.CommandPools[commandPool] = new!CommandPoolObject(device: device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005701
5702 return ?
5703}
5704
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005705cmd void vkDestroyCommandPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005706 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005707 VkCommandPool commandPool,
5708 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005709 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005710 commandPoolObject := GetCommandPool(commandPool)
5711 assert(commandPoolObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005712
Jesse Hall3fbc8562015-11-29 22:10:52 -08005713 State.CommandPools[commandPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005714}
5715
5716cmd VkResult vkResetCommandPool(
5717 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005718 VkCommandPool commandPool,
5719 VkCommandPoolResetFlags flags) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005720 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005721 commandPoolObject := GetCommandPool(commandPool)
5722 assert(commandPoolObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005723
5724 return ?
5725}
5726
5727// Command buffer functions
5728
Jesse Hall3fbc8562015-11-29 22:10:52 -08005729macro void bindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) {
5730 memoryObject := GetDeviceMemory(memory)
5731 memoryObject.boundCommandBuffers[commandBuffer] = commandBuffer
Jesse Halld27f6aa2015-08-15 17:58:48 -07005732
Jesse Hall3fbc8562015-11-29 22:10:52 -08005733 commandBufferObject := GetCommandBuffer(commandBuffer)
5734 commandBufferObject.boundObjects[as!u64(obj)] = memory
Jesse Halld27f6aa2015-08-15 17:58:48 -07005735}
5736
Jesse Hall3fbc8562015-11-29 22:10:52 -08005737macro void unbindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) {
5738 memoryObject := GetDeviceMemory(memory)
5739 memoryObject.boundCommandBuffers[commandBuffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005740
Jesse Hall3fbc8562015-11-29 22:10:52 -08005741 commandBufferObject := GetCommandBuffer(commandBuffer)
5742 commandBufferObject.boundObjects[as!u64(obj)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005743}
5744
5745@threadSafety("system")
Jesse Hall3fbc8562015-11-29 22:10:52 -08005746cmd VkResult vkAllocateCommandBuffers(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005747 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005748 const VkCommandBufferAllocateInfo* pAllocateInfo,
5749 VkCommandBuffer* pCommandBuffers) {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08005750 assert(pAllocateInfo[0].sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005751
Jesse Hall3dd678a2016-01-08 21:52:01 -08005752 count := pAllocateInfo[0].commandBufferCount
Jesse Hall3fbc8562015-11-29 22:10:52 -08005753 commandBuffers := pCommandBuffers[0:count]
Jesse Hallfbf97b02015-11-20 14:17:03 -08005754 for i in (0 .. count) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005755 commandBuffer := ?
5756 commandBuffers[i] = commandBuffer
5757 State.CommandBuffers[commandBuffer] = new!CommandBufferObject(device: device)
Jesse Hallfbf97b02015-11-20 14:17:03 -08005758 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07005759
5760 return ?
5761}
5762
5763@threadSafety("system")
Jesse Hallfbf97b02015-11-20 14:17:03 -08005764cmd void vkFreeCommandBuffers(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005765 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005766 VkCommandPool commandPool,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005767 u32 commandBufferCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005768 const VkCommandBuffer* pCommandBuffers) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005769 deviceObject := GetDevice(device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005770
Jesse Hall3fbc8562015-11-29 22:10:52 -08005771 commandBuffers := pCommandBuffers[0:commandBufferCount]
Jesse Hall03b6fe12015-11-24 12:44:21 -08005772 for i in (0 .. commandBufferCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005773 commandBufferObject := GetCommandBuffer(commandBuffers[i])
5774 assert(commandBufferObject.device == device)
Jesse Hallfbf97b02015-11-20 14:17:03 -08005775 // TODO: iterate over boundObjects and clear memory bindings
Jesse Hall3fbc8562015-11-29 22:10:52 -08005776 State.CommandBuffers[commandBuffers[i]] = null
Jesse Hallfbf97b02015-11-20 14:17:03 -08005777 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07005778}
5779
5780@threadSafety("app")
5781cmd VkResult vkBeginCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005782 VkCommandBuffer commandBuffer,
5783 const VkCommandBufferBeginInfo* pBeginInfo) {
5784 assert(pBeginInfo.sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO)
5785 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005786
5787 // TODO: iterate over boundObjects and clear memory bindings
5788
5789 return ?
5790}
5791
5792@threadSafety("app")
5793cmd VkResult vkEndCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005794 VkCommandBuffer commandBuffer) {
5795 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005796
5797 return ?
5798}
5799
5800@threadSafety("app")
5801cmd VkResult vkResetCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005802 VkCommandBuffer commandBuffer,
5803 VkCommandBufferResetFlags flags) {
5804 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005805
5806 // TODO: iterate over boundObjects and clear memory bindings
5807
5808 return ?
5809}
5810
5811
5812// Command buffer building functions
5813
5814@threadSafety("app")
5815cmd void vkCmdBindPipeline(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005816 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005817 VkPipelineBindPoint pipelineBindPoint,
5818 VkPipeline pipeline) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005819 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005820 pipelineObject := GetPipeline(pipeline)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005821 assert(commandBufferObject.device == pipelineObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005822
Jesse Halld8bade02015-11-24 10:24:18 -08005823 queue := switch (pipelineBindPoint) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005824 case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT
5825 case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT
5826 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08005827 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005828}
5829
5830@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005831cmd void vkCmdSetViewport(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005832 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08005833 u32 firstViewport,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005834 u32 viewportCount,
5835 const VkViewport* pViewports) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005836 commandBufferObject := GetCommandBuffer(commandBuffer)
5837 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005838}
5839
5840@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005841cmd void vkCmdSetScissor(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005842 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08005843 u32 firstScissor,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005844 u32 scissorCount,
5845 const VkRect2D* pScissors) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005846 commandBufferObject := GetCommandBuffer(commandBuffer)
5847 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005848}
5849
5850@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005851cmd void vkCmdSetLineWidth(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005852 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005853 f32 lineWidth) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005854 commandBufferObject := GetCommandBuffer(commandBuffer)
5855 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005856}
5857
5858@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005859cmd void vkCmdSetDepthBias(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005860 VkCommandBuffer commandBuffer,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005861 f32 depthBiasConstantFactor,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005862 f32 depthBiasClamp,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005863 f32 depthBiasSlopeFactor) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005864 commandBufferObject := GetCommandBuffer(commandBuffer)
5865 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005866}
Jesse Halld27f6aa2015-08-15 17:58:48 -07005867
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005868@threadSafety("app")
5869cmd void vkCmdSetBlendConstants(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005870 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005871 // TODO(jessehall): apic only supports 'const' on pointer types. Using
5872 // an annotation as a quick hack to pass this to the template without
5873 // having to modify the AST and semantic model.
Jesse Hallb00daad2015-11-29 19:46:20 -08005874 @readonly f32[4] blendConstants) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005875 commandBufferObject := GetCommandBuffer(commandBuffer)
5876 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005877}
5878
5879@threadSafety("app")
5880cmd void vkCmdSetDepthBounds(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005881 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005882 f32 minDepthBounds,
5883 f32 maxDepthBounds) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005884 commandBufferObject := GetCommandBuffer(commandBuffer)
5885 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005886}
5887
5888@threadSafety("app")
5889cmd void vkCmdSetStencilCompareMask(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005890 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005891 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08005892 u32 compareMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005893 commandBufferObject := GetCommandBuffer(commandBuffer)
5894 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005895}
5896
5897@threadSafety("app")
5898cmd void vkCmdSetStencilWriteMask(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005899 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005900 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08005901 u32 writeMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005902 commandBufferObject := GetCommandBuffer(commandBuffer)
5903 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005904}
5905
5906@threadSafety("app")
5907cmd void vkCmdSetStencilReference(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005908 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005909 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08005910 u32 reference) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005911 commandBufferObject := GetCommandBuffer(commandBuffer)
5912 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005913}
5914
5915@threadSafety("app")
5916cmd void vkCmdBindDescriptorSets(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005917 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005918 VkPipelineBindPoint pipelineBindPoint,
5919 VkPipelineLayout layout,
5920 u32 firstSet,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005921 u32 descriptorSetCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005922 const VkDescriptorSet* pDescriptorSets,
5923 u32 dynamicOffsetCount,
5924 const u32* pDynamicOffsets) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005925 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005926
Jesse Hall03b6fe12015-11-24 12:44:21 -08005927 descriptorSets := pDescriptorSets[0:descriptorSetCount]
5928 for i in (0 .. descriptorSetCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005929 descriptorSet := descriptorSets[i]
5930 descriptorSetObject := GetDescriptorSet(descriptorSet)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005931 assert(commandBufferObject.device == descriptorSetObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005932 }
5933
5934 dynamicOffsets := pDynamicOffsets[0:dynamicOffsetCount]
5935 for i in (0 .. dynamicOffsetCount) {
5936 dynamicOffset := dynamicOffsets[i]
5937 }
5938
Jesse Halld8bade02015-11-24 10:24:18 -08005939 queue := switch (pipelineBindPoint) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005940 case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT
5941 case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT
5942 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08005943 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005944}
5945
5946@threadSafety("app")
5947cmd void vkCmdBindIndexBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005948 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005949 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005950 VkDeviceSize offset,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005951 VkIndexType indexType) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005952 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005953 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005954 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005955
Jesse Hall3fbc8562015-11-29 22:10:52 -08005956 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005957
Jesse Hall3fbc8562015-11-29 22:10:52 -08005958 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005959}
5960
5961@threadSafety("app")
5962cmd void vkCmdBindVertexBuffers(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005963 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08005964 u32 firstBinding,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005965 u32 bindingCount,
5966 const VkBuffer* pBuffers,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005967 const VkDeviceSize* pOffsets) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005968 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005969
Jesse Hallf9fa9a52016-01-08 16:08:51 -08005970 // TODO: check if not [firstBinding:firstBinding+bindingCount]
Jesse Halld27f6aa2015-08-15 17:58:48 -07005971 buffers := pBuffers[0:bindingCount]
5972 offsets := pOffsets[0:bindingCount]
5973 for i in (0 .. bindingCount) {
5974 buffer := buffers[i]
5975 offset := offsets[i]
5976 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005977 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005978
Jesse Hall3fbc8562015-11-29 22:10:52 -08005979 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005980 }
5981
Jesse Hall3fbc8562015-11-29 22:10:52 -08005982 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005983}
5984
5985@threadSafety("app")
5986cmd void vkCmdDraw(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005987 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005988 u32 vertexCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005989 u32 instanceCount,
5990 u32 firstVertex,
5991 u32 firstInstance) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005992 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005993
Jesse Hall3fbc8562015-11-29 22:10:52 -08005994 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005995}
5996
5997@threadSafety("app")
5998cmd void vkCmdDrawIndexed(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005999 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006000 u32 indexCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006001 u32 instanceCount,
6002 u32 firstIndex,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006003 s32 vertexOffset,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006004 u32 firstInstance) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006005 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006006
Jesse Hall3fbc8562015-11-29 22:10:52 -08006007 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006008}
6009
6010@threadSafety("app")
6011cmd void vkCmdDrawIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006012 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006013 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006014 VkDeviceSize offset,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006015 u32 drawCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006016 u32 stride) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006017 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006018 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006019 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006020
Jesse Hall3fbc8562015-11-29 22:10:52 -08006021 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006022
Jesse Hall3fbc8562015-11-29 22:10:52 -08006023 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006024}
6025
6026@threadSafety("app")
6027cmd void vkCmdDrawIndexedIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006028 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006029 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006030 VkDeviceSize offset,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006031 u32 drawCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006032 u32 stride) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006033 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006034 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006035 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006036
Jesse Hall3fbc8562015-11-29 22:10:52 -08006037 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006038
Jesse Hall3fbc8562015-11-29 22:10:52 -08006039 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006040}
6041
6042@threadSafety("app")
6043cmd void vkCmdDispatch(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006044 VkCommandBuffer commandBuffer,
Jesse Halld0599582017-03-10 18:35:38 -08006045 u32 groupCountX,
6046 u32 groupCountY,
6047 u32 groupCountZ) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006048 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006049
Jesse Hall3fbc8562015-11-29 22:10:52 -08006050 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006051}
6052
6053@threadSafety("app")
6054cmd void vkCmdDispatchIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006055 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006056 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006057 VkDeviceSize offset) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006058 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006059 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006060 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006061
Jesse Hall3fbc8562015-11-29 22:10:52 -08006062 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006063
Jesse Hall3fbc8562015-11-29 22:10:52 -08006064 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006065}
6066
6067@threadSafety("app")
6068cmd void vkCmdCopyBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006069 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006070 VkBuffer srcBuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006071 VkBuffer dstBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006072 u32 regionCount,
6073 const VkBufferCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006074 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006075 srcBufferObject := GetBuffer(srcBuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006076 dstBufferObject := GetBuffer(dstBuffer)
6077 assert(commandBufferObject.device == srcBufferObject.device)
6078 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006079
6080 regions := pRegions[0:regionCount]
6081 for i in (0 .. regionCount) {
6082 region := regions[i]
6083 }
6084
Jesse Hall3fbc8562015-11-29 22:10:52 -08006085 bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory)
6086 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006087
Jesse Hall65ab5522015-11-30 00:07:16 -08006088 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006089}
6090
6091@threadSafety("app")
6092cmd void vkCmdCopyImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006093 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006094 VkImage srcImage,
6095 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006096 VkImage dstImage,
6097 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006098 u32 regionCount,
6099 const VkImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006100 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006101 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006102 dstImageObject := GetImage(dstImage)
6103 assert(commandBufferObject.device == srcImageObject.device)
6104 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006105
6106 regions := pRegions[0:regionCount]
6107 for i in (0 .. regionCount) {
6108 region := regions[i]
6109 }
6110
Jesse Hall3fbc8562015-11-29 22:10:52 -08006111 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6112 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006113
Jesse Hall65ab5522015-11-30 00:07:16 -08006114 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006115}
6116
6117@threadSafety("app")
6118cmd void vkCmdBlitImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006119 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006120 VkImage srcImage,
6121 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006122 VkImage dstImage,
6123 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006124 u32 regionCount,
6125 const VkImageBlit* pRegions,
Jesse Hall23ff73f2015-11-29 14:36:39 -08006126 VkFilter filter) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006127 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006128 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006129 dstImageObject := GetImage(dstImage)
6130 assert(commandBufferObject.device == srcImageObject.device)
6131 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006132
6133 regions := pRegions[0:regionCount]
6134 for i in (0 .. regionCount) {
6135 region := regions[i]
6136 }
6137
Jesse Hall3fbc8562015-11-29 22:10:52 -08006138 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6139 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006140
Jesse Hall3fbc8562015-11-29 22:10:52 -08006141 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006142}
6143
6144@threadSafety("app")
6145cmd void vkCmdCopyBufferToImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006146 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006147 VkBuffer srcBuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006148 VkImage dstImage,
6149 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006150 u32 regionCount,
6151 const VkBufferImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006152 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006153 srcBufferObject := GetBuffer(srcBuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006154 dstImageObject := GetImage(dstImage)
6155 assert(commandBufferObject.device == srcBufferObject.device)
6156 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006157
6158 regions := pRegions[0:regionCount]
6159 for i in (0 .. regionCount) {
6160 region := regions[i]
6161 }
6162
Jesse Hall3fbc8562015-11-29 22:10:52 -08006163 bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory)
6164 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006165
Jesse Hall65ab5522015-11-30 00:07:16 -08006166 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006167}
6168
6169@threadSafety("app")
6170cmd void vkCmdCopyImageToBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006171 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006172 VkImage srcImage,
6173 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006174 VkBuffer dstBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006175 u32 regionCount,
6176 const VkBufferImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006177 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006178 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006179 dstBufferObject := GetBuffer(dstBuffer)
6180 assert(commandBufferObject.device == srcImageObject.device)
6181 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006182
6183 regions := pRegions[0:regionCount]
6184 for i in (0 .. regionCount) {
6185 region := regions[i]
6186 }
6187
Jesse Hall3fbc8562015-11-29 22:10:52 -08006188 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6189 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006190
Jesse Hall65ab5522015-11-30 00:07:16 -08006191 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006192}
6193
6194@threadSafety("app")
6195cmd void vkCmdUpdateBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006196 VkCommandBuffer commandBuffer,
6197 VkBuffer dstBuffer,
6198 VkDeviceSize dstOffset,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006199 VkDeviceSize dataSize,
Jesse Hall3f5499b2016-07-26 15:20:40 -07006200 const void* pData) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006201 commandBufferObject := GetCommandBuffer(commandBuffer)
6202 dstBufferObject := GetBuffer(dstBuffer)
6203 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006204
6205 data := pData[0:dataSize]
6206
Jesse Hall3fbc8562015-11-29 22:10:52 -08006207 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006208
Jesse Hall65ab5522015-11-30 00:07:16 -08006209 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006210}
6211
6212@threadSafety("app")
6213cmd void vkCmdFillBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006214 VkCommandBuffer commandBuffer,
6215 VkBuffer dstBuffer,
6216 VkDeviceSize dstOffset,
Jesse Hallb00daad2015-11-29 19:46:20 -08006217 VkDeviceSize size,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006218 u32 data) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006219 commandBufferObject := GetCommandBuffer(commandBuffer)
6220 dstBufferObject := GetBuffer(dstBuffer)
6221 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006222
Jesse Hall65ab5522015-11-30 00:07:16 -08006223 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006224}
6225
6226@threadSafety("app")
6227cmd void vkCmdClearColorImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006228 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006229 VkImage image,
6230 VkImageLayout imageLayout,
6231 const VkClearColorValue* pColor,
6232 u32 rangeCount,
6233 const VkImageSubresourceRange* pRanges) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006234 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006235 imageObject := GetImage(image)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006236 assert(commandBufferObject.device == imageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006237
6238 ranges := pRanges[0:rangeCount]
6239 for i in (0 .. rangeCount) {
6240 range := ranges[i]
6241 }
6242
Jesse Hall3fbc8562015-11-29 22:10:52 -08006243 bindCommandBuffer(commandBuffer, image, imageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006244
Jesse Hall3fbc8562015-11-29 22:10:52 -08006245 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006246}
6247
6248@threadSafety("app")
6249cmd void vkCmdClearDepthStencilImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006250 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006251 VkImage image,
6252 VkImageLayout imageLayout,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006253 const VkClearDepthStencilValue* pDepthStencil,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006254 u32 rangeCount,
6255 const VkImageSubresourceRange* pRanges) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006256 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006257 imageObject := GetImage(image)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006258 assert(commandBufferObject.device == imageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006259
6260 ranges := pRanges[0:rangeCount]
6261 for i in (0 .. rangeCount) {
6262 range := ranges[i]
6263 }
6264
Jesse Hall3fbc8562015-11-29 22:10:52 -08006265 bindCommandBuffer(commandBuffer, image, imageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006266
Jesse Hall3fbc8562015-11-29 22:10:52 -08006267 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006268}
6269
6270@threadSafety("app")
Jesse Hallae38f732015-11-19 21:32:50 -08006271cmd void vkCmdClearAttachments(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006272 VkCommandBuffer commandBuffer,
Jesse Hallae38f732015-11-19 21:32:50 -08006273 u32 attachmentCount,
6274 const VkClearAttachment* pAttachments,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006275 u32 rectCount,
Jesse Halla15a4bf2015-11-19 22:48:02 -08006276 const VkClearRect* pRects) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006277 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006278
6279 rects := pRects[0:rectCount]
6280 for i in (0 .. rectCount) {
6281 rect := rects[i]
6282 }
6283
Jesse Hall3fbc8562015-11-29 22:10:52 -08006284 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006285}
6286
6287@threadSafety("app")
6288cmd void vkCmdResolveImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006289 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006290 VkImage srcImage,
6291 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006292 VkImage dstImage,
6293 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006294 u32 regionCount,
6295 const VkImageResolve* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006296 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006297 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006298 dstImageObject := GetImage(dstImage)
6299 assert(commandBufferObject.device == srcImageObject.device)
6300 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006301
6302 regions := pRegions[0:regionCount]
6303 for i in (0 .. regionCount) {
6304 region := regions[i]
6305 }
6306
Jesse Hall3fbc8562015-11-29 22:10:52 -08006307 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6308 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006309
Jesse Hall3fbc8562015-11-29 22:10:52 -08006310 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006311}
6312
6313@threadSafety("app")
6314cmd void vkCmdSetEvent(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006315 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006316 VkEvent event,
6317 VkPipelineStageFlags stageMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006318 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006319 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006320 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006321}
6322
6323@threadSafety("app")
6324cmd void vkCmdResetEvent(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006325 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006326 VkEvent event,
6327 VkPipelineStageFlags stageMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006328 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006329 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006330 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006331}
6332
6333@threadSafety("app")
6334cmd void vkCmdWaitEvents(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006335 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006336 u32 eventCount,
6337 const VkEvent* pEvents,
6338 VkPipelineStageFlags srcStageMask,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006339 VkPipelineStageFlags dstStageMask,
6340 u32 memoryBarrierCount,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006341 const VkMemoryBarrier* pMemoryBarriers,
6342 u32 bufferMemoryBarrierCount,
6343 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
6344 u32 imageMemoryBarrierCount,
6345 const VkImageMemoryBarrier* pImageMemoryBarriers) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006346 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006347
6348 events := pEvents[0:eventCount]
6349 for i in (0 .. eventCount) {
6350 event := events[i]
6351 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006352 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006353 }
6354
Jesse Hall3dd678a2016-01-08 21:52:01 -08006355 memoryBarriers := pMemoryBarriers[0:memoryBarrierCount]
Jesse Hall3fbc8562015-11-29 22:10:52 -08006356 for i in (0 .. memoryBarrierCount) {
Jesse Hall3dd678a2016-01-08 21:52:01 -08006357 memoryBarrier := memoryBarriers[i]
6358 }
6359 bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount]
6360 for i in (0 .. bufferMemoryBarrierCount) {
6361 bufferMemoryBarrier := bufferMemoryBarriers[i]
6362 bufferObject := GetBuffer(bufferMemoryBarrier.buffer)
6363 assert(bufferObject.device == commandBufferObject.device)
6364 }
6365 imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount]
6366 for i in (0 .. imageMemoryBarrierCount) {
6367 imageMemoryBarrier := imageMemoryBarriers[i]
6368 imageObject := GetImage(imageMemoryBarrier.image)
6369 assert(imageObject.device == commandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006370 }
6371}
6372
6373@threadSafety("app")
6374cmd void vkCmdPipelineBarrier(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006375 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006376 VkPipelineStageFlags srcStageMask,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006377 VkPipelineStageFlags dstStageMask,
Jesse Halldc6d36c2015-11-29 19:12:15 -08006378 VkDependencyFlags dependencyFlags,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006379 u32 memoryBarrierCount,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006380 const VkMemoryBarrier* pMemoryBarriers,
6381 u32 bufferMemoryBarrierCount,
6382 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
6383 u32 imageMemoryBarrierCount,
6384 const VkImageMemoryBarrier* pImageMemoryBarriers) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006385 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006386
Jesse Hall3dd678a2016-01-08 21:52:01 -08006387 memoryBarriers := pMemoryBarriers[0:memoryBarrierCount]
Jesse Hall3fbc8562015-11-29 22:10:52 -08006388 for i in (0 .. memoryBarrierCount) {
Jesse Hall3dd678a2016-01-08 21:52:01 -08006389 memoryBarrier := memoryBarriers[i]
6390 }
6391 bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount]
6392 for i in (0 .. bufferMemoryBarrierCount) {
6393 bufferMemoryBarrier := bufferMemoryBarriers[i]
6394 bufferObject := GetBuffer(bufferMemoryBarrier.buffer)
6395 assert(bufferObject.device == commandBufferObject.device)
6396 }
6397 imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount]
6398 for i in (0 .. imageMemoryBarrierCount) {
6399 imageMemoryBarrier := imageMemoryBarriers[i]
6400 imageObject := GetImage(imageMemoryBarrier.image)
6401 assert(imageObject.device == commandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006402 }
6403}
6404
6405@threadSafety("app")
6406cmd void vkCmdBeginQuery(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006407 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006408 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006409 u32 query,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006410 VkQueryControlFlags flags) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006411 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006412 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006413 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006414}
6415
6416@threadSafety("app")
6417cmd void vkCmdEndQuery(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006418 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006419 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006420 u32 query) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006421 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006422 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006423 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006424}
6425
6426@threadSafety("app")
6427cmd void vkCmdResetQueryPool(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006428 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006429 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006430 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006431 u32 queryCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006432 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006433 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006434 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006435}
6436
6437@threadSafety("app")
6438cmd void vkCmdWriteTimestamp(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006439 VkCommandBuffer commandBuffer,
Jesse Hall6f39a6d2015-11-24 11:08:36 -08006440 VkPipelineStageFlagBits pipelineStage,
Jesse Halla3a7a1d2015-11-24 11:37:23 -08006441 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006442 u32 query) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006443 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halla3a7a1d2015-11-24 11:37:23 -08006444 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006445 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006446}
6447
6448@threadSafety("app")
6449cmd void vkCmdCopyQueryPoolResults(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006450 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006451 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006452 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006453 u32 queryCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006454 VkBuffer dstBuffer,
6455 VkDeviceSize dstOffset,
Jesse Halla9bb62b2015-11-21 19:31:56 -08006456 VkDeviceSize stride,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006457 VkQueryResultFlags flags) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006458 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006459 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006460 dstBufferObject := GetBuffer(dstBuffer)
6461 assert(commandBufferObject.device == queryPoolObject.device)
6462 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006463}
6464
6465cmd void vkCmdPushConstants(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006466 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006467 VkPipelineLayout layout,
6468 VkShaderStageFlags stageFlags,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006469 u32 offset,
6470 u32 size,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08006471 const void* pValues) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006472 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006473 layoutObject := GetPipelineLayout(layout)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006474 assert(commandBufferObject.device == layoutObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006475}
6476
6477@threadSafety("app")
6478cmd void vkCmdBeginRenderPass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006479 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006480 const VkRenderPassBeginInfo* pRenderPassBegin,
Jesse Hall65ab5522015-11-30 00:07:16 -08006481 VkSubpassContents contents) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006482 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006483 renderPassObject := GetRenderPass(pRenderPassBegin.renderPass)
6484 framebufferObject := GetFramebuffer(pRenderPassBegin.framebuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006485 assert(commandBufferObject.device == renderPassObject.device)
6486 assert(commandBufferObject.device == framebufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006487
Jesse Hall3fbc8562015-11-29 22:10:52 -08006488 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006489}
6490
6491cmd void vkCmdNextSubpass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006492 VkCommandBuffer commandBuffer,
Jesse Hall65ab5522015-11-30 00:07:16 -08006493 VkSubpassContents contents) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006494 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006495}
6496
6497@threadSafety("app")
6498cmd void vkCmdEndRenderPass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006499 VkCommandBuffer commandBuffer) {
6500 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006501
Jesse Hall3fbc8562015-11-29 22:10:52 -08006502 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006503}
6504
6505cmd void vkCmdExecuteCommands(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006506 VkCommandBuffer commandBuffer,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006507 u32 commandBufferCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006508 const VkCommandBuffer* pCommandBuffers) {
6509 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006510
Jesse Hall3dd678a2016-01-08 21:52:01 -08006511 commandBuffers := pCommandBuffers[0:commandBufferCount]
6512 for i in (0 .. commandBufferCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006513 secondaryCommandBuffer := commandBuffers[i]
6514 secondaryCommandBufferObject := GetCommandBuffer(secondaryCommandBuffer)
6515 assert(commandBufferObject.device == secondaryCommandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006516 }
6517}
6518
Jesse Halld0599582017-03-10 18:35:38 -08006519@extension("VK_KHR_surface") // 1
Jesse Hall1356b0d2015-11-23 17:24:58 -08006520cmd void vkDestroySurfaceKHR(
6521 VkInstance instance,
Jesse Hall0e74f002015-11-30 11:37:59 -08006522 VkSurfaceKHR surface,
6523 const VkAllocationCallbacks* pAllocator) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08006524 instanceObject := GetInstance(instance)
6525 surfaceObject := GetSurface(surface)
6526 assert(surfaceObject.instance == instance)
Michael Lentine88594d72015-11-12 12:49:45 -08006527
Jesse Hall1356b0d2015-11-23 17:24:58 -08006528 State.Surfaces[surface] = null
Jesse Hall2818f932015-11-19 21:19:17 -08006529}
6530
Jesse Halld0599582017-03-10 18:35:38 -08006531@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08006532cmd VkResult vkGetPhysicalDeviceSurfaceSupportKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08006533 VkPhysicalDevice physicalDevice,
6534 u32 queueFamilyIndex,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006535 VkSurfaceKHR surface,
Jesse Hallb00daad2015-11-29 19:46:20 -08006536 VkBool32* pSupported) {
6537 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08006538
6539 return ?
6540}
6541
Jesse Halld0599582017-03-10 18:35:38 -08006542@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08006543cmd VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
6544 VkPhysicalDevice physicalDevice,
6545 VkSurfaceKHR surface,
6546 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) {
6547 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6548
6549 surfaceCapabilities := ?
6550 pSurfaceCapabilities[0] = surfaceCapabilities
6551
6552 return ?
6553}
6554
Jesse Halld0599582017-03-10 18:35:38 -08006555@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08006556cmd VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(
6557 VkPhysicalDevice physicalDevice,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006558 VkSurfaceKHR surface,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006559 u32* pSurfaceFormatCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006560 VkSurfaceFormatKHR* pSurfaceFormats) {
Jesse Hallb00daad2015-11-29 19:46:20 -08006561 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08006562
6563 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08006564 pSurfaceFormatCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08006565 surfaceFormats := pSurfaceFormats[0:count]
6566
6567 for i in (0 .. count) {
6568 surfaceFormat := ?
6569 surfaceFormats[i] = surfaceFormat
6570 }
6571
6572 return ?
6573}
6574
Jesse Halld0599582017-03-10 18:35:38 -08006575@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08006576cmd VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(
6577 VkPhysicalDevice physicalDevice,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006578 VkSurfaceKHR surface,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006579 u32* pPresentModeCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006580 VkPresentModeKHR* pPresentModes) {
Jesse Hallb00daad2015-11-29 19:46:20 -08006581 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08006582
6583 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08006584 pPresentModeCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08006585 presentModes := pPresentModes[0:count]
6586
6587 for i in (0 .. count) {
6588 presentMode := ?
6589 presentModes[i] = presentMode
6590 }
6591
6592 return ?
6593}
6594
Jesse Halld0599582017-03-10 18:35:38 -08006595@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08006596cmd VkResult vkCreateSwapchainKHR(
6597 VkDevice device,
6598 const VkSwapchainCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006599 const VkAllocationCallbacks* pAllocator,
Michael Lentine88594d72015-11-12 12:49:45 -08006600 VkSwapchainKHR* pSwapchain) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08006601 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR)
Michael Lentine88594d72015-11-12 12:49:45 -08006602 deviceObject := GetDevice(device)
6603
6604 swapchain := ?
6605 pSwapchain[0] = swapchain
6606 State.Swapchains[swapchain] = new!SwapchainObject(device: device)
6607
6608 return ?
6609}
6610
Jesse Halld0599582017-03-10 18:35:38 -08006611@extension("VK_KHR_swapchain") // 2
Jesse Hall1356b0d2015-11-23 17:24:58 -08006612cmd void vkDestroySwapchainKHR(
Michael Lentine88594d72015-11-12 12:49:45 -08006613 VkDevice device,
Jesse Hall0e74f002015-11-30 11:37:59 -08006614 VkSwapchainKHR swapchain,
6615 const VkAllocationCallbacks* pAllocator) {
Michael Lentine88594d72015-11-12 12:49:45 -08006616 deviceObject := GetDevice(device)
6617 swapchainObject := GetSwapchain(swapchain)
6618 assert(swapchainObject.device == device)
6619
6620 State.Swapchains[swapchain] = null
Michael Lentine88594d72015-11-12 12:49:45 -08006621}
6622
Jesse Halld0599582017-03-10 18:35:38 -08006623@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08006624cmd VkResult vkGetSwapchainImagesKHR(
6625 VkDevice device,
6626 VkSwapchainKHR swapchain,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006627 u32* pSwapchainImageCount,
Michael Lentine88594d72015-11-12 12:49:45 -08006628 VkImage* pSwapchainImages) {
6629 deviceObject := GetDevice(device)
6630
6631 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08006632 pSwapchainImageCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08006633 swapchainImages := pSwapchainImages[0:count]
6634
6635 for i in (0 .. count) {
6636 swapchainImage := ?
6637 swapchainImages[i] = swapchainImage
Jesse Hall1356b0d2015-11-23 17:24:58 -08006638 State.Images[swapchainImage] = new!ImageObject(device: device)
Michael Lentine88594d72015-11-12 12:49:45 -08006639 }
6640
6641 return ?
6642}
6643
Jesse Halld0599582017-03-10 18:35:38 -08006644@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08006645cmd VkResult vkAcquireNextImageKHR(
6646 VkDevice device,
6647 VkSwapchainKHR swapchain,
6648 u64 timeout,
6649 VkSemaphore semaphore,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006650 VkFence fence,
Michael Lentine88594d72015-11-12 12:49:45 -08006651 u32* pImageIndex) {
6652 deviceObject := GetDevice(device)
6653 swapchainObject := GetSwapchain(swapchain)
6654
6655 imageIndex := ?
6656 pImageIndex[0] = imageIndex
6657
6658 return ?
6659}
6660
Jesse Halld0599582017-03-10 18:35:38 -08006661@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08006662cmd VkResult vkQueuePresentKHR(
6663 VkQueue queue,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08006664 const VkPresentInfoKHR* pPresentInfo) {
Michael Lentine88594d72015-11-12 12:49:45 -08006665 queueObject := GetQueue(queue)
6666
6667 presentInfo := ?
6668 pPresentInfo[0] = presentInfo
6669
6670 return ?
6671}
6672
Jesse Halld0599582017-03-10 18:35:38 -08006673@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08006674cmd VkResult vkGetPhysicalDeviceDisplayPropertiesKHR(
6675 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006676 u32* pPropertyCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006677 VkDisplayPropertiesKHR* pProperties) {
6678 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6679 return ?
6680}
6681
Jesse Halld0599582017-03-10 18:35:38 -08006682@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08006683cmd VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
6684 VkPhysicalDevice physicalDevice,
6685 u32* pPropertyCount,
6686 VkDisplayPlanePropertiesKHR* pProperties) {
6687 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6688 return ?
6689}
6690
Jesse Halld0599582017-03-10 18:35:38 -08006691@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08006692cmd VkResult vkGetDisplayPlaneSupportedDisplaysKHR(
6693 VkPhysicalDevice physicalDevice,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006694 u32 planeIndex,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08006695 u32* pDisplayCount,
6696 VkDisplayKHR* pDisplays) {
Jesse Halla6429252015-11-29 18:59:42 -08006697 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6698 return ?
6699}
6700
Jesse Halld0599582017-03-10 18:35:38 -08006701@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08006702cmd VkResult vkGetDisplayModePropertiesKHR(
6703 VkPhysicalDevice physicalDevice,
6704 VkDisplayKHR display,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006705 u32* pPropertyCount,
6706 VkDisplayModePropertiesKHR* pProperties) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08006707 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6708 return ?
6709}
6710
Jesse Halld0599582017-03-10 18:35:38 -08006711@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08006712cmd VkResult vkCreateDisplayModeKHR(
6713 VkPhysicalDevice physicalDevice,
6714 VkDisplayKHR display,
6715 const VkDisplayModeCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006716 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006717 VkDisplayModeKHR* pMode) {
6718 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6719 return ?
6720}
6721
Jesse Halld0599582017-03-10 18:35:38 -08006722@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08006723cmd VkResult vkGetDisplayPlaneCapabilitiesKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08006724 VkPhysicalDevice physicalDevice,
Jesse Hall9ba8bc82015-11-30 16:22:16 -08006725 VkDisplayModeKHR mode,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006726 u32 planeIndex,
Jesse Halla6429252015-11-29 18:59:42 -08006727 VkDisplayPlaneCapabilitiesKHR* pCapabilities) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08006728 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6729 return ?
6730}
6731
Jesse Halld0599582017-03-10 18:35:38 -08006732@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08006733cmd VkResult vkCreateDisplayPlaneSurfaceKHR(
6734 VkInstance instance,
6735 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006736 const VkAllocationCallbacks* pAllocator,
Jesse Halla6429252015-11-29 18:59:42 -08006737 VkSurfaceKHR* pSurface) {
6738 return ?
6739}
6740
Jesse Halld0599582017-03-10 18:35:38 -08006741@extension("VK_KHR_display_swapchain") // 4
Jesse Hall9ba8bc82015-11-30 16:22:16 -08006742cmd VkResult vkCreateSharedSwapchainsKHR(
6743 VkDevice device,
6744 u32 swapchainCount,
6745 const VkSwapchainCreateInfoKHR* pCreateInfos,
6746 const VkAllocationCallbacks* pAllocator,
6747 VkSwapchainKHR* pSwapchains) {
6748 return ?
6749}
6750
Jesse Halld0599582017-03-10 18:35:38 -08006751@extension("VK_KHR_xlib_surface") // 5
Jesse Halla6429252015-11-29 18:59:42 -08006752cmd VkResult vkCreateXlibSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08006753 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006754 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006755 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006756 VkSurfaceKHR* pSurface) {
6757 instanceObject := GetInstance(instance)
6758 return ?
6759}
6760
Jesse Halld0599582017-03-10 18:35:38 -08006761@extension("VK_KHR_xlib_surface") // 5
Jesse Halla6429252015-11-29 18:59:42 -08006762cmd VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR(
6763 VkPhysicalDevice physicalDevice,
6764 u32 queueFamilyIndex,
6765 platform.Display* dpy,
Jesse Hall65ab5522015-11-30 00:07:16 -08006766 platform.VisualID visualID) {
Jesse Halla6429252015-11-29 18:59:42 -08006767 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6768 return ?
6769}
6770
Jesse Halld0599582017-03-10 18:35:38 -08006771@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006772cmd VkResult vkCreateXcbSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08006773 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006774 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006775 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006776 VkSurfaceKHR* pSurface) {
6777 instanceObject := GetInstance(instance)
6778 return ?
6779}
6780
Jesse Halld0599582017-03-10 18:35:38 -08006781@extension("VK_KHR_xcb_surface") // 6
Jesse Halla6429252015-11-29 18:59:42 -08006782cmd VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR(
6783 VkPhysicalDevice physicalDevice,
6784 u32 queueFamilyIndex,
6785 platform.xcb_connection_t* connection,
6786 platform.xcb_visualid_t visual_id) {
6787 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6788 return ?
6789}
6790
Jesse Halld0599582017-03-10 18:35:38 -08006791@extension("VK_KHR_wayland_surface") // 7
Jesse Hall1356b0d2015-11-23 17:24:58 -08006792cmd VkResult vkCreateWaylandSurfaceKHR(
6793 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006794 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006795 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006796 VkSurfaceKHR* pSurface) {
6797 instanceObject := GetInstance(instance)
6798 return ?
6799}
6800
Jesse Halld0599582017-03-10 18:35:38 -08006801@extension("VK_KHR_wayland_surface") // 7
Jesse Halla6429252015-11-29 18:59:42 -08006802cmd VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR(
6803 VkPhysicalDevice physicalDevice,
6804 u32 queueFamilyIndex,
6805 platform.wl_display* display) {
6806 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6807 return ?
6808}
6809
Jesse Halld0599582017-03-10 18:35:38 -08006810@extension("VK_KHR_mir_surface") // 8
Jesse Hall1356b0d2015-11-23 17:24:58 -08006811cmd VkResult vkCreateMirSurfaceKHR(
6812 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006813 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006814 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006815 VkSurfaceKHR* pSurface) {
6816 instanceObject := GetInstance(instance)
6817 return ?
6818}
6819
Jesse Halld0599582017-03-10 18:35:38 -08006820@extension("VK_KHR_mir_surface") // 8
Jesse Halla6429252015-11-29 18:59:42 -08006821cmd VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR(
6822 VkPhysicalDevice physicalDevice,
6823 u32 queueFamilyIndex,
6824 platform.MirConnection* connection) {
6825 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6826 return ?
6827}
6828
Jesse Halld0599582017-03-10 18:35:38 -08006829@extension("VK_KHR_android_surface") // 9
Jesse Hall1356b0d2015-11-23 17:24:58 -08006830cmd VkResult vkCreateAndroidSurfaceKHR(
6831 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006832 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006833 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006834 VkSurfaceKHR* pSurface) {
6835 instanceObject := GetInstance(instance)
6836 return ?
6837}
6838
Jesse Halld0599582017-03-10 18:35:38 -08006839@extension("VK_KHR_win32_surface") // 10
Jesse Hall1356b0d2015-11-23 17:24:58 -08006840cmd VkResult vkCreateWin32SurfaceKHR(
6841 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006842 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006843 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006844 VkSurfaceKHR* pSurface) {
6845 instanceObject := GetInstance(instance)
6846 return ?
6847}
6848
Jesse Halld0599582017-03-10 18:35:38 -08006849@extension("VK_KHR_win32_surface") // 10
Jesse Halla6429252015-11-29 18:59:42 -08006850cmd VkResult vkGetPhysicalDeviceWin32PresentationSupportKHR(
6851 VkPhysicalDevice physicalDevice,
6852 u32 queueFamilyIndex) {
Jesse Halle2948d82016-02-25 04:19:32 -08006853 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Halla6429252015-11-29 18:59:42 -08006854 return ?
6855}
6856
Jesse Halld0599582017-03-10 18:35:38 -08006857@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08006858cmd VkResult vkGetSwapchainGrallocUsageANDROID(
6859 VkDevice device,
6860 VkFormat format,
6861 VkImageUsageFlags imageUsage,
6862 int* grallocUsage) {
6863 return ?
6864}
6865
Jesse Halld0599582017-03-10 18:35:38 -08006866@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08006867cmd VkResult vkAcquireImageANDROID(
6868 VkDevice device,
6869 VkImage image,
6870 int nativeFenceFd,
6871 VkSemaphore semaphore,
6872 VkFence fence) {
6873 return ?
6874}
6875
Jesse Halld0599582017-03-10 18:35:38 -08006876@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08006877cmd VkResult vkQueueSignalReleaseImageANDROID(
6878 VkQueue queue,
6879 u32 waitSemaphoreCount,
6880 const VkSemaphore* pWaitSemaphores,
6881 VkImage image,
6882 int* pNativeFenceFd) {
6883 return ?
6884}
6885
Jesse Halld0599582017-03-10 18:35:38 -08006886@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08006887@external type void* PFN_vkDebugReportCallbackEXT
Jesse Halld0599582017-03-10 18:35:38 -08006888@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08006889@pfn cmd VkBool32 vkDebugReportCallbackEXT(
6890 VkDebugReportFlagsEXT flags,
6891 VkDebugReportObjectTypeEXT objectType,
6892 u64 object,
6893 platform.size_t location,
6894 s32 messageCode,
6895 const char* pLayerPrefix,
6896 const char* pMessage,
6897 void* pUserData) {
6898 return ?
6899}
6900
Jesse Halld0599582017-03-10 18:35:38 -08006901@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08006902cmd VkResult vkCreateDebugReportCallbackEXT(
6903 VkInstance instance,
6904 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
6905 const VkAllocationCallbacks* pAllocator,
6906 VkDebugReportCallbackEXT* pCallback) {
6907 return ?
6908}
6909
Jesse Halld0599582017-03-10 18:35:38 -08006910@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08006911cmd void vkDestroyDebugReportCallbackEXT(
6912 VkInstance instance,
6913 VkDebugReportCallbackEXT callback,
6914 const VkAllocationCallbacks* pAllocator) {
6915}
6916
Jesse Halld0599582017-03-10 18:35:38 -08006917@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08006918cmd void vkDebugReportMessageEXT(
6919 VkInstance instance,
6920 VkDebugReportFlagsEXT flags,
6921 VkDebugReportObjectTypeEXT objectType,
6922 u64 object,
6923 platform.size_t location,
6924 s32 messageCode,
6925 const char* pLayerPrefix,
6926 const char* pMessage) {
6927}
6928
Jesse Halld0599582017-03-10 18:35:38 -08006929@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07006930cmd VkResult vkDebugMarkerSetObjectTagEXT(
6931 VkDevice device,
6932 VkDebugMarkerObjectTagInfoEXT* pTagInfo) {
6933 return ?
6934}
6935
Jesse Halld0599582017-03-10 18:35:38 -08006936@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07006937cmd VkResult vkDebugMarkerSetObjectNameEXT(
6938 VkDevice device,
6939 VkDebugMarkerObjectNameInfoEXT* pNameInfo) {
6940 return ?
6941}
6942
Jesse Halld0599582017-03-10 18:35:38 -08006943@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07006944cmd void vkCmdDebugMarkerBeginEXT(
6945 VkCommandBuffer commandBuffer,
6946 VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
6947}
6948
Jesse Halld0599582017-03-10 18:35:38 -08006949@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07006950cmd void vkCmdDebugMarkerEndEXT(
6951 VkCommandBuffer commandBuffer) {
6952}
6953
Jesse Halld0599582017-03-10 18:35:38 -08006954@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07006955cmd void vkCmdDebugMarkerInsertEXT(
6956 VkCommandBuffer commandBuffer,
6957 VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
6958}
6959
Jesse Halld0599582017-03-10 18:35:38 -08006960@extension("VK_AMD_draw_indirect_count") // 34
Jesse Halleb02c472017-02-24 15:13:45 -08006961cmd void vkCmdDrawIndirectCountAMD(
6962 VkCommandBuffer commandBuffer,
6963 VkBuffer buffer,
6964 VkDeviceSize offset,
6965 VkBuffer countBuffer,
6966 VkDeviceSize countBufferOffset,
6967 u32 maxDrawCount,
6968 u32 stride) {
6969}
6970
Jesse Halld0599582017-03-10 18:35:38 -08006971@extension("VK_AMD_draw_indirect_count") // 34
Jesse Halleb02c472017-02-24 15:13:45 -08006972cmd void vkCmdDrawIndexedIndirectCountAMD(
6973 VkCommandBuffer commandBuffer,
6974 VkBuffer buffer,
6975 VkDeviceSize offset,
6976 VkBuffer countBuffer,
6977 VkDeviceSize countBufferOffset,
6978 u32 maxDrawCount,
6979 u32 stride) {
6980}
6981
Jesse Halld0599582017-03-10 18:35:38 -08006982@extension("VK_NV_external_memory_capabilities") // 56
Jesse Halleb02c472017-02-24 15:13:45 -08006983cmd VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
6984 VkPhysicalDevice physicalDevice,
6985 VkFormat format,
6986 VkImageType type,
6987 VkImageTiling tiling,
6988 VkImageUsageFlags usage,
6989 VkImageCreateFlags flags,
6990 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
6991 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) {
6992 return ?
6993}
6994
Jesse Halld0599582017-03-10 18:35:38 -08006995@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08006996cmd VkResult vkGetMemoryWin32HandleNV(
6997 VkDevice device,
6998 VkDeviceMemory memory,
6999 VkExternalMemoryHandleTypeFlagsNV handleType,
7000 platform.HANDLE* pHandle) {
7001 return ?
7002}
7003
Jesse Halld0599582017-03-10 18:35:38 -08007004@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08007005cmd void vkGetPhysicalDeviceFeatures2KHR(
7006 VkPhysicalDevice physicalDevice,
7007 VkPhysicalDeviceFeatures2KHR* pFeatures) {
7008}
7009
Jesse Halld0599582017-03-10 18:35:38 -08007010@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08007011cmd void vkGetPhysicalDeviceProperties2KHR(
7012 VkPhysicalDevice physicalDevice,
7013 VkPhysicalDeviceProperties2KHR* pProperties) {
7014}
7015
Jesse Halld0599582017-03-10 18:35:38 -08007016@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08007017cmd void vkGetPhysicalDeviceFormatProperties2KHR(
7018 VkPhysicalDevice physicalDevice,
7019 VkFormat format,
7020 VkFormatProperties2KHR* pFormatProperties) {
7021}
7022
Jesse Halld0599582017-03-10 18:35:38 -08007023@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08007024cmd VkResult vkGetPhysicalDeviceImageFormatProperties2KHR(
7025 VkPhysicalDevice physicalDevice,
7026 const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo,
7027 VkImageFormatProperties2KHR* pImageFormatProperties) {
7028 return ?
7029}
7030
Jesse Halld0599582017-03-10 18:35:38 -08007031@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08007032cmd void vkGetPhysicalDeviceQueueFamilyProperties2KHR(
7033 VkPhysicalDevice physicalDevice,
7034 u32* pQueueFamilyPropertyCount,
7035 VkQueueFamilyProperties2KHR* pQueueFamilyProperties) {
7036}
7037
Jesse Halld0599582017-03-10 18:35:38 -08007038@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08007039cmd void vkGetPhysicalDeviceMemoryProperties2KHR(
7040 VkPhysicalDevice physicalDevice,
7041 VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties) {
7042}
7043
Jesse Halld0599582017-03-10 18:35:38 -08007044@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall08e2f482017-03-06 15:22:17 -08007045cmd void vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
7046 VkPhysicalDevice physicalDevice,
7047 const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo,
7048 u32* pPropertyCount,
7049 VkSparseImageFormatProperties2KHR* pProperties) {
7050}
7051
Jesse Halld0599582017-03-10 18:35:38 -08007052@extension("VK_KHX_device_group") // 61
7053cmd void vkGetDeviceGroupPeerMemoryFeaturesKHX(
7054 VkDevice device,
7055 u32 heapIndex,
7056 u32 localDeviceIndex,
7057 u32 remoteDeviceIndex,
7058 VkPeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures) {
7059}
7060
7061@extension("VK_KHX_device_group") // 61
7062cmd VkResult vkBindBufferMemory2KHX(
7063 VkDevice device,
7064 u32 bindInfoCount,
7065 const VkBindBufferMemoryInfoKHX* pBindInfos) {
7066 return ?
7067}
7068
7069@extension("VK_KHX_device_group") // 61
7070cmd VkResult vkBindImageMemory2KHX(
7071 VkDevice device,
7072 u32 bindInfoCount,
7073 const VkBindImageMemoryInfoKHX* pBindInfos) {
7074 return ?
7075}
7076
7077@extension("VK_KHX_device_group") // 61
7078cmd void vkCmdSetDeviceMaskKHX(
7079 VkCommandBuffer commandBuffer,
7080 u32 deviceMask) {
7081}
7082
7083@extension("VK_KHX_device_group") // 61
7084cmd VkResult vkGetDeviceGroupPresentCapabilitiesKHX(
7085 VkDevice device,
7086 VkDeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities) {
7087 return ?
7088}
7089
7090@extension("VK_KHX_device_group") // 61
7091cmd VkResult vkGetDeviceGroupSurfacePresentModesKHX(
7092 VkDevice device,
7093 VkSurfaceKHR surface,
7094 VkDeviceGroupPresentModeFlagsKHX* pModes) {
7095 return ?
7096}
7097
7098@extension("VK_KHX_device_group") // 61
7099cmd VkResult vkAcquireNextImage2KHX(
7100 VkDevice device,
7101 const VkAcquireNextImageInfoKHX* pAcquireInfo,
7102 u32* pImageIndex) {
7103 return ?
7104}
7105
7106@extension("VK_KHX_device_group") // 61
7107cmd void vkCmdDispatchBaseKHX(
7108 VkCommandBuffer commandBuffer,
7109 u32 baseGroupX,
7110 u32 baseGroupY,
7111 u32 baseGroupZ,
7112 u32 groupCountX,
7113 u32 groupCountY,
7114 u32 groupCountZ) {
7115}
7116
7117@extension("VK_KHX_device_group") // 61
7118cmd VkResult vkGetPhysicalDevicePresentRectanglesKHX(
7119 VkPhysicalDevice physicalDevice,
7120 VkSurfaceKHR surface,
7121 u32* pRectCount,
7122 VkRect2D* pRects) {
7123 return ?
7124}
7125
7126@extension("VK_NN_vi_surface") // 63
Jesse Hall08e2f482017-03-06 15:22:17 -08007127cmd VkResult vkCreateViSurfaceNN(
7128 VkInstance instance,
7129 const VkViSurfaceCreateInfoNN* pCreateInfo,
7130 const VkAllocationCallbacks* pAllocator,
7131 VkSurfaceKHR* pSurface) {
7132 return ?
7133}
7134
Jesse Halld0599582017-03-10 18:35:38 -08007135@extension("VK_KHR_maintenance1") // 70
Jesse Hall08e2f482017-03-06 15:22:17 -08007136cmd void vkTrimCommandPoolKHR(
7137 VkDevice device,
7138 VkCommandPool commandPool,
7139 VkCommandPoolTrimFlagsKHR flags) {
7140}
7141
Jesse Halld0599582017-03-10 18:35:38 -08007142@extension("VK_KHX_device_group_creation") // 71
7143cmd VkResult vkEnumeratePhysicalDeviceGroupsKHX(
7144 VkInstance instance,
7145 u32* pPhysicalDeviceGroupCount,
7146 VkPhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties) {
7147 return ?
7148}
7149
7150@extension("VK_KHX_external_memory_capabilities") // 72
7151cmd void vkGetPhysicalDeviceExternalBufferPropertiesKHX(
7152 VkPhysicalDevice physicalDevice,
7153 const VkPhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo,
7154 VkExternalBufferPropertiesKHX* pExternalBufferProperties) {
7155}
7156
Jesse Halld0599582017-03-10 18:35:38 -08007157@extension("VK_KHX_external_memory_win32") // 74
7158cmd VkResult vkGetMemoryWin32HandleKHX(
7159 VkDevice device,
7160 VkDeviceMemory memory,
7161 VkExternalMemoryHandleTypeFlagBitsKHX handleType,
7162 platform.HANDLE* pHandle) {
7163 return ?
7164}
7165
7166@extension("VK_KHX_external_memory_win32") // 74
7167cmd VkResult vkGetMemoryWin32HandlePropertiesKHX(
7168 VkDevice device,
7169 VkExternalMemoryHandleTypeFlagBitsKHX handleType,
7170 platform.HANDLE handle,
7171 VkMemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties) {
7172 return ?
7173}
7174
7175@extension("VK_KHX_external_memory_fd") // 75
7176cmd VkResult vkGetMemoryFdKHX(
7177 VkDevice device,
7178 VkDeviceMemory memory,
7179 VkExternalMemoryHandleTypeFlagBitsKHX handleType,
7180 s32* pFd) {
7181 return ?
7182}
7183
7184@extension("VK_KHX_external_memory_fd") // 75
7185cmd VkResult vkGetMemoryFdPropertiesKHX(
7186 VkDevice device,
7187 VkExternalMemoryHandleTypeFlagBitsKHX handleType,
7188 s32 fd,
7189 VkMemoryFdPropertiesKHX* pMemoryFdProperties) {
7190 return ?
7191}
7192
7193@extension("VK_KHX_external_semaphore_capabilities") // 77
7194cmd void vkGetPhysicalDeviceExternalSemaphorePropertiesKHX(
7195 VkPhysicalDevice physicalDevice,
7196 const VkPhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo,
7197 VkExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties) {
7198}
7199
7200@extension("VK_KHX_external_semaphore_win32") // 79
7201cmd VkResult vkImportSemaphoreWin32HandleKHX(
7202 VkDevice device,
7203 const VkImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo) {
7204 return ?
7205}
7206
7207@extension("VK_KHX_external_semaphore_win32") // 79
7208cmd VkResult vkGetSemaphoreWin32HandleKHX(
7209 VkDevice device,
7210 VkSemaphore semaphore,
7211 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType,
7212 platform.HANDLE* pHandle) {
7213 return ?
7214}
7215
7216@extension("VK_KHX_external_semaphore_fd") // 80
7217cmd VkResult vkImportSemaphoreFdKHX(
7218 VkDevice device,
7219 const VkImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo) {
7220 return ?
7221}
7222
7223@extension("VK_KHX_external_semaphore_fd") // 80
7224cmd VkResult vkGetSemaphoreFdKHX(
7225 VkDevice device,
7226 VkSemaphore semaphore,
7227 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType,
7228 s32* pFd) {
7229 return ?
7230}
7231
7232@extension("VK_KHR_push_descriptor") // 81
7233cmd void vkCmdPushDescriptorSetKHR(
7234 VkCommandBuffer commandBuffer,
7235 VkPipelineBindPoint pipelineBindPoint,
7236 VkPipelineLayout layout,
7237 u32 set,
7238 u32 descriptorWriteCount,
7239 const VkWriteDescriptorSet* pDescriptorWrites) {
7240}
7241
7242@extension("VK_KHR_descriptor_update_template") // 86
7243cmd VkResult vkCreateDescriptorUpdateTemplateKHR(
7244 VkDevice device,
7245 const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo,
7246 const VkAllocationCallbacks* pAllocator,
7247 VkDescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate) {
7248 return ?
7249}
7250
7251@extension("VK_KHR_descriptor_update_template") // 86
7252cmd void vkDestroyDescriptorUpdateTemplateKHR(
7253 VkDevice device,
7254 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
7255 const VkAllocationCallbacks* pAllocator) {
7256}
7257
7258@extension("VK_KHR_descriptor_update_template") // 86
7259cmd void vkUpdateDescriptorSetWithTemplateKHR(
7260 VkDevice device,
7261 VkDescriptorSet descriptorSet,
7262 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
7263 const void* pData) {
7264}
7265
7266@extension("VK_KHR_descriptor_update_template") // 86
7267cmd void vkCmdPushDescriptorSetWithTemplateKHR(
7268 VkCommandBuffer commandBuffer,
7269 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
7270 VkPipelineLayout layout,
7271 u32 set,
7272 const void* pData) {
7273}
7274
7275@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08007276cmd void vkCmdProcessCommandsNVX(
7277 VkCommandBuffer commandBuffer,
7278 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) {
7279}
7280
Jesse Halld0599582017-03-10 18:35:38 -08007281@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08007282cmd void vkCmdReserveSpaceForCommandsNVX(
7283 VkCommandBuffer commandBuffer,
7284 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) {
7285}
7286
Jesse Halld0599582017-03-10 18:35:38 -08007287@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08007288cmd VkResult vkCreateIndirectCommandsLayoutNVX(
7289 VkDevice device,
7290 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
7291 const VkAllocationCallbacks* pAllocator,
7292 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) {
7293 return ?
7294}
7295
Jesse Halld0599582017-03-10 18:35:38 -08007296@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08007297cmd void vkDestroyIndirectCommandsLayoutNVX(
7298 VkDevice device,
7299 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
7300 const VkAllocationCallbacks* pAllocator) {
7301}
7302
Jesse Halld0599582017-03-10 18:35:38 -08007303@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08007304cmd VkResult vkCreateObjectTableNVX(
7305 VkDevice device,
7306 const VkObjectTableCreateInfoNVX* pCreateInfo,
7307 const VkAllocationCallbacks* pAllocator,
7308 VkObjectTableNVX* pObjectTable) {
7309 return ?
7310}
7311
Jesse Halld0599582017-03-10 18:35:38 -08007312@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08007313cmd void vkDestroyObjectTableNVX(
7314 VkDevice device,
7315 VkObjectTableNVX objectTable,
7316 const VkAllocationCallbacks* pAllocator) {
7317}
7318
Jesse Halld0599582017-03-10 18:35:38 -08007319@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08007320cmd VkResult vkRegisterObjectsNVX(
7321 VkDevice device,
7322 VkObjectTableNVX objectTable,
7323 u32 objectCount,
7324 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
7325 const u32* pObjectIndices) {
7326 return ?
7327}
7328
Jesse Halld0599582017-03-10 18:35:38 -08007329@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08007330cmd VkResult vkUnregisterObjectsNVX(
7331 VkDevice device,
7332 VkObjectTableNVX objectTable,
7333 u32 objectCount,
7334 const VkObjectEntryTypeNVX* pObjectEntryTypes,
7335 const u32* pObjectIndices) {
7336 return ?
7337}
7338
Jesse Halld0599582017-03-10 18:35:38 -08007339@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08007340cmd void vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
7341 VkPhysicalDevice physicalDevice,
7342 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
7343 VkDeviceGeneratedCommandsLimitsNVX* pLimits) {
7344}
Jesse Halld27f6aa2015-08-15 17:58:48 -07007345
Jesse Halld0599582017-03-10 18:35:38 -08007346@extension("VK_NV_clip_space_w_scaling") // 88
7347cmd void vkCmdSetViewportWScalingNV(
7348 VkCommandBuffer commandBuffer,
7349 u32 firstViewport,
7350 u32 viewportCount,
7351 const VkViewportWScalingNV* pViewportWScalings) {
7352}
7353
7354@extension("VK_EXT_direct_mode_display") // 89
Jesse Hall08e2f482017-03-06 15:22:17 -08007355cmd VkResult vkReleaseDisplayEXT(
7356 VkPhysicalDevice physicalDevice,
7357 VkDisplayKHR display) {
7358 return ?
7359}
7360
Jesse Halld0599582017-03-10 18:35:38 -08007361@extension("VK_EXT_acquire_xlib_display") // 90
Jesse Hall08e2f482017-03-06 15:22:17 -08007362cmd VkResult vkAcquireXlibDisplayEXT(
7363 VkPhysicalDevice physicalDevice,
7364 platform.Display* dpy,
7365 VkDisplayKHR display) {
7366 return ?
7367}
7368
Jesse Halld0599582017-03-10 18:35:38 -08007369@extension("VK_EXT_acquire_xlib_display") // 90
Jesse Hall08e2f482017-03-06 15:22:17 -08007370cmd VkResult vkGetRandROutputDisplayEXT(
7371 VkPhysicalDevice physicalDevice,
7372 platform.Display* dpy,
7373 platform.RROutput rrOutput,
7374 VkDisplayKHR* pDisplay) {
7375 return ?
7376}
7377
Jesse Halld0599582017-03-10 18:35:38 -08007378@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall08e2f482017-03-06 15:22:17 -08007379cmd VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT(
7380 VkPhysicalDevice physicalDevice,
7381 VkSurfaceKHR surface,
7382 VkSurfaceCapabilities2EXT* pSurfaceCapabilities) {
7383 return ?
7384}
7385
Jesse Halld0599582017-03-10 18:35:38 -08007386@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08007387cmd VkResult vkDisplayPowerControlEXT(
7388 VkDevice device,
7389 VkDisplayKHR display,
7390 const VkDisplayPowerInfoEXT* pDisplayPowerInfo) {
7391 return ?
7392}
7393
Jesse Halld0599582017-03-10 18:35:38 -08007394@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08007395cmd VkResult vkRegisterDeviceEventEXT(
7396 VkDevice device,
7397 const VkDeviceEventInfoEXT* pDeviceEventInfo,
7398 const VkAllocationCallbacks* pAllocator,
7399 VkFence* pFence) {
7400 return ?
7401}
7402
Jesse Halld0599582017-03-10 18:35:38 -08007403@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08007404cmd VkResult vkRegisterDisplayEventEXT(
7405 VkDevice device,
7406 VkDisplayKHR display,
7407 const VkDisplayEventInfoEXT* pDisplayEventInfo,
7408 const VkAllocationCallbacks* pAllocator,
7409 VkFence* pFence) {
7410 return ?
7411}
7412
Jesse Halld0599582017-03-10 18:35:38 -08007413@extension("VK_EXT_display_control") // 92
Jesse Hall08e2f482017-03-06 15:22:17 -08007414cmd VkResult vkGetSwapchainCounterEXT(
7415 VkDevice device,
7416 VkSwapchainKHR swapchain,
7417 VkSurfaceCounterFlagBitsEXT counter,
7418 u64* pCounterValue) {
7419 return ?
7420}
7421
Jesse Halle8ec6a22017-03-10 21:01:57 -08007422@extension("VK_GOOGLE_display_timing") // 93
7423cmd VkResult vkGetRefreshCycleDurationGOOGLE(
7424 VkDevice device,
7425 VkSwapchainKHR swapchain,
7426 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) {
7427 return ?
7428}
7429
7430@extension("VK_GOOGLE_display_timing") // 93
7431cmd VkResult vkGetPastPresentationTimingGOOGLE(
7432 VkDevice device,
7433 VkSwapchainKHR swapchain,
7434 u32* pPresentationTimingCount,
7435 VkPastPresentationTimingGOOGLE* pPresentationTimings) {
7436 return ?
7437}
7438
Jesse Halld0599582017-03-10 18:35:38 -08007439@extension("VK_EXT_discard_rectangles") // 100
7440cmd void vkCmdSetDiscardRectangleEXT(
7441 VkCommandBuffer commandBuffer,
7442 u32 firstDiscardRectangle,
7443 u32 discardRectangleCount,
7444 const VkRect2D* pDiscardRectangles) {
7445}
7446
Jesse Halle8ec6a22017-03-10 21:01:57 -08007447@extension("VK_EXT_hdr_metadata") // 106
7448cmd void vkSetHdrMetadataEXT(
7449 VkDevice device,
7450 u32 swapchainCount,
7451 const VkSwapchainKHR* pSwapchains,
7452 const VkHdrMetadataEXT* pMetadata) {
7453}
7454
Jesse Halle5404242017-04-10 08:09:19 -07007455@extension("VK_KHR_shared_presentable_image") // 112
7456cmd VkResult vkGetSwapchainStatusKHR(
7457 VkDevice device,
7458 VkSwapchainKHR swapchain) {
7459 return ?
7460}
7461
7462//@extension("VK_KHR_get_surface_capabilities2") // 120
7463//cmd VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR(
7464// VkPhysicalDevice physicalDevice,
7465// const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7466// VkSurfaceCapabilities2KHR* pSurfaceCapabilities) {
7467// return ?
7468//}
7469
7470//@extension("VK_KHR_get_surface_capabilities2") // 120
7471//cmd VkResult vkGetPhysicalDeviceSurfaceFormats2KHR(
7472// VkPhysicalDevice physicalDevice,
7473// const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7474// u32* pSurfaceFormatCount,
7475// VkSurfaceFormat2KHR* pSurfaceFormats) {
7476// return ?
7477//}
7478
Jesse Halld0599582017-03-10 18:35:38 -08007479@extension("VK_MVK_ios_surface") // 123
7480cmd VkResult vkCreateIOSSurfaceMVK(
7481 VkInstance instance,
7482 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
7483 const VkAllocationCallbacks* pAllocator,
7484 VkSurfaceKHR* pSurface) {
7485 return ?
7486}
7487
7488@extension("VK_MVK_macos_surface") // 124
7489cmd VkResult vkCreateMacOSSurfaceMVK(
7490 VkInstance instance,
7491 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
7492 const VkAllocationCallbacks* pAllocator,
7493 VkSurfaceKHR* pSurface) {
7494 return ?
7495}
7496
Jesse Halld27f6aa2015-08-15 17:58:48 -07007497////////////////
7498// Validation //
7499////////////////
7500
7501extern void validate(string layerName, bool condition, string message)
7502
7503
7504/////////////////////////////
7505// Internal State Tracking //
7506/////////////////////////////
7507
7508StateObject State
7509
7510@internal class StateObject {
7511 // Dispatchable objects.
7512 map!(VkInstance, ref!InstanceObject) Instances
7513 map!(VkPhysicalDevice, ref!PhysicalDeviceObject) PhysicalDevices
7514 map!(VkDevice, ref!DeviceObject) Devices
7515 map!(VkQueue, ref!QueueObject) Queues
Jesse Hall3fbc8562015-11-29 22:10:52 -08007516 map!(VkCommandBuffer, ref!CommandBufferObject) CommandBuffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07007517
7518 // Non-dispatchable objects.
7519 map!(VkDeviceMemory, ref!DeviceMemoryObject) DeviceMemories
7520 map!(VkBuffer, ref!BufferObject) Buffers
7521 map!(VkBufferView, ref!BufferViewObject) BufferViews
7522 map!(VkImage, ref!ImageObject) Images
7523 map!(VkImageView, ref!ImageViewObject) ImageViews
Jesse Halld27f6aa2015-08-15 17:58:48 -07007524 map!(VkShaderModule, ref!ShaderModuleObject) ShaderModules
Jesse Halld27f6aa2015-08-15 17:58:48 -07007525 map!(VkPipeline, ref!PipelineObject) Pipelines
7526 map!(VkPipelineLayout, ref!PipelineLayoutObject) PipelineLayouts
7527 map!(VkSampler, ref!SamplerObject) Samplers
7528 map!(VkDescriptorSet, ref!DescriptorSetObject) DescriptorSets
7529 map!(VkDescriptorSetLayout, ref!DescriptorSetLayoutObject) DescriptorSetLayouts
7530 map!(VkDescriptorPool, ref!DescriptorPoolObject) DescriptorPools
Jesse Halld27f6aa2015-08-15 17:58:48 -07007531 map!(VkFence, ref!FenceObject) Fences
7532 map!(VkSemaphore, ref!SemaphoreObject) Semaphores
7533 map!(VkEvent, ref!EventObject) Events
7534 map!(VkQueryPool, ref!QueryPoolObject) QueryPools
7535 map!(VkFramebuffer, ref!FramebufferObject) Framebuffers
7536 map!(VkRenderPass, ref!RenderPassObject) RenderPasses
7537 map!(VkPipelineCache, ref!PipelineCacheObject) PipelineCaches
Jesse Hall3fbc8562015-11-29 22:10:52 -08007538 map!(VkCommandPool, ref!CommandPoolObject) CommandPools
Jesse Hall1356b0d2015-11-23 17:24:58 -08007539 map!(VkSurfaceKHR, ref!SurfaceObject) Surfaces
Michael Lentine88594d72015-11-12 12:49:45 -08007540 map!(VkSwapchainKHR, ref!SwapchainObject) Swapchains
Jesse Halld27f6aa2015-08-15 17:58:48 -07007541}
7542
7543@internal class InstanceObject {
7544}
7545
7546@internal class PhysicalDeviceObject {
7547 VkInstance instance
7548}
7549
7550@internal class DeviceObject {
7551 VkPhysicalDevice physicalDevice
7552}
7553
7554@internal class QueueObject {
7555 VkDevice device
7556 VkQueueFlags flags
7557}
7558
Jesse Hall3fbc8562015-11-29 22:10:52 -08007559@internal class CommandBufferObject {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007560 VkDevice device
7561 map!(u64, VkDeviceMemory) boundObjects
7562 VkQueueFlags queueFlags
7563}
7564
7565@internal class DeviceMemoryObject {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007566 VkDevice device
7567 VkDeviceSize allocationSize
7568 map!(u64, VkDeviceSize) boundObjects
7569 map!(VkCommandBuffer, VkCommandBuffer) boundCommandBuffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07007570}
7571
7572@internal class BufferObject {
7573 VkDevice device
Jesse Hall3fbc8562015-11-29 22:10:52 -08007574 VkDeviceMemory memory
7575 VkDeviceSize memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07007576}
7577
7578@internal class BufferViewObject {
7579 VkDevice device
7580 VkBuffer buffer
7581}
7582
7583@internal class ImageObject {
7584 VkDevice device
Jesse Hall3fbc8562015-11-29 22:10:52 -08007585 VkDeviceMemory memory
7586 VkDeviceSize memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07007587}
7588
7589@internal class ImageViewObject {
7590 VkDevice device
7591 VkImage image
7592}
7593
Jesse Halld27f6aa2015-08-15 17:58:48 -07007594@internal class ShaderObject {
7595 VkDevice device
7596}
7597
7598@internal class ShaderModuleObject {
7599 VkDevice device
7600}
7601
7602@internal class PipelineObject {
7603 VkDevice device
7604}
7605
7606@internal class PipelineLayoutObject {
7607 VkDevice device
7608}
7609
7610@internal class SamplerObject {
7611 VkDevice device
7612}
7613
7614@internal class DescriptorSetObject {
7615 VkDevice device
7616}
7617
7618@internal class DescriptorSetLayoutObject {
7619 VkDevice device
7620}
7621
7622@internal class DescriptorPoolObject {
7623 VkDevice device
7624}
7625
Jesse Halld27f6aa2015-08-15 17:58:48 -07007626@internal class FenceObject {
7627 VkDevice device
7628 bool signaled
7629}
7630
7631@internal class SemaphoreObject {
7632 VkDevice device
7633}
7634
7635@internal class EventObject {
7636 VkDevice device
7637}
7638
7639@internal class QueryPoolObject {
7640 VkDevice device
7641}
7642
7643@internal class FramebufferObject {
7644 VkDevice device
7645}
7646
7647@internal class RenderPassObject {
7648 VkDevice device
7649}
7650
7651@internal class PipelineCacheObject {
7652 VkDevice device
7653}
7654
Jesse Hall3fbc8562015-11-29 22:10:52 -08007655@internal class CommandPoolObject {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007656 VkDevice device
7657}
7658
Jesse Hall1356b0d2015-11-23 17:24:58 -08007659@internal class SurfaceObject {
7660 VkInstance instance
7661}
7662
Michael Lentine88594d72015-11-12 12:49:45 -08007663@internal class SwapchainObject {
7664 VkDevice device
7665}
7666
Jesse Halld27f6aa2015-08-15 17:58:48 -07007667macro ref!InstanceObject GetInstance(VkInstance instance) {
7668 assert(instance in State.Instances)
7669 return State.Instances[instance]
7670}
7671
7672macro ref!PhysicalDeviceObject GetPhysicalDevice(VkPhysicalDevice physicalDevice) {
7673 assert(physicalDevice in State.PhysicalDevices)
7674 return State.PhysicalDevices[physicalDevice]
7675}
7676
7677macro ref!DeviceObject GetDevice(VkDevice device) {
7678 assert(device in State.Devices)
7679 return State.Devices[device]
7680}
7681
7682macro ref!QueueObject GetQueue(VkQueue queue) {
7683 assert(queue in State.Queues)
7684 return State.Queues[queue]
7685}
7686
Jesse Hall3fbc8562015-11-29 22:10:52 -08007687macro ref!CommandBufferObject GetCommandBuffer(VkCommandBuffer commandBuffer) {
7688 assert(commandBuffer in State.CommandBuffers)
7689 return State.CommandBuffers[commandBuffer]
Jesse Halld27f6aa2015-08-15 17:58:48 -07007690}
7691
Jesse Hall3fbc8562015-11-29 22:10:52 -08007692macro ref!DeviceMemoryObject GetDeviceMemory(VkDeviceMemory memory) {
7693 assert(memory in State.DeviceMemories)
7694 return State.DeviceMemories[memory]
Jesse Halld27f6aa2015-08-15 17:58:48 -07007695}
7696
7697macro ref!BufferObject GetBuffer(VkBuffer buffer) {
7698 assert(buffer in State.Buffers)
7699 return State.Buffers[buffer]
7700}
7701
7702macro ref!BufferViewObject GetBufferView(VkBufferView bufferView) {
7703 assert(bufferView in State.BufferViews)
7704 return State.BufferViews[bufferView]
7705}
7706
7707macro ref!ImageObject GetImage(VkImage image) {
7708 assert(image in State.Images)
7709 return State.Images[image]
7710}
7711
7712macro ref!ImageViewObject GetImageView(VkImageView imageView) {
7713 assert(imageView in State.ImageViews)
7714 return State.ImageViews[imageView]
7715}
7716
Jesse Halld27f6aa2015-08-15 17:58:48 -07007717macro ref!ShaderModuleObject GetShaderModule(VkShaderModule shaderModule) {
7718 assert(shaderModule in State.ShaderModules)
7719 return State.ShaderModules[shaderModule]
7720}
7721
7722macro ref!PipelineObject GetPipeline(VkPipeline pipeline) {
7723 assert(pipeline in State.Pipelines)
7724 return State.Pipelines[pipeline]
7725}
7726
7727macro ref!PipelineLayoutObject GetPipelineLayout(VkPipelineLayout pipelineLayout) {
7728 assert(pipelineLayout in State.PipelineLayouts)
7729 return State.PipelineLayouts[pipelineLayout]
7730}
7731
7732macro ref!SamplerObject GetSampler(VkSampler sampler) {
7733 assert(sampler in State.Samplers)
7734 return State.Samplers[sampler]
7735}
7736
7737macro ref!DescriptorSetObject GetDescriptorSet(VkDescriptorSet descriptorSet) {
7738 assert(descriptorSet in State.DescriptorSets)
7739 return State.DescriptorSets[descriptorSet]
7740}
7741
7742macro ref!DescriptorSetLayoutObject GetDescriptorSetLayout(VkDescriptorSetLayout descriptorSetLayout) {
7743 assert(descriptorSetLayout in State.DescriptorSetLayouts)
7744 return State.DescriptorSetLayouts[descriptorSetLayout]
7745}
7746
7747macro ref!DescriptorPoolObject GetDescriptorPool(VkDescriptorPool descriptorPool) {
7748 assert(descriptorPool in State.DescriptorPools)
7749 return State.DescriptorPools[descriptorPool]
7750}
7751
Jesse Halld27f6aa2015-08-15 17:58:48 -07007752macro ref!FenceObject GetFence(VkFence fence) {
7753 assert(fence in State.Fences)
7754 return State.Fences[fence]
7755}
7756
7757macro ref!SemaphoreObject GetSemaphore(VkSemaphore semaphore) {
7758 assert(semaphore in State.Semaphores)
7759 return State.Semaphores[semaphore]
7760}
7761
7762macro ref!EventObject GetEvent(VkEvent event) {
7763 assert(event in State.Events)
7764 return State.Events[event]
7765}
7766
7767macro ref!QueryPoolObject GetQueryPool(VkQueryPool queryPool) {
7768 assert(queryPool in State.QueryPools)
7769 return State.QueryPools[queryPool]
7770}
7771
7772macro ref!FramebufferObject GetFramebuffer(VkFramebuffer framebuffer) {
7773 assert(framebuffer in State.Framebuffers)
7774 return State.Framebuffers[framebuffer]
7775}
7776
7777macro ref!RenderPassObject GetRenderPass(VkRenderPass renderPass) {
7778 assert(renderPass in State.RenderPasses)
7779 return State.RenderPasses[renderPass]
7780}
7781
7782macro ref!PipelineCacheObject GetPipelineCache(VkPipelineCache pipelineCache) {
7783 assert(pipelineCache in State.PipelineCaches)
7784 return State.PipelineCaches[pipelineCache]
7785}
7786
Jesse Hall3fbc8562015-11-29 22:10:52 -08007787macro ref!CommandPoolObject GetCommandPool(VkCommandPool commandPool) {
7788 assert(commandPool in State.CommandPools)
7789 return State.CommandPools[commandPool]
Jesse Hallf09c6b12015-08-15 19:54:28 -07007790}
Michael Lentine88594d72015-11-12 12:49:45 -08007791
Jesse Hall1356b0d2015-11-23 17:24:58 -08007792macro ref!SurfaceObject GetSurface(VkSurfaceKHR surface) {
7793 assert(surface in State.Surfaces)
7794 return State.Surfaces[surface]
7795}
7796
Michael Lentine88594d72015-11-12 12:49:45 -08007797macro ref!SwapchainObject GetSwapchain(VkSwapchainKHR swapchain) {
7798 assert(swapchain in State.Swapchains)
7799 return State.Swapchains[swapchain]
7800}
Jesse Halld8bade02015-11-24 10:24:18 -08007801
7802macro VkQueueFlags AddQueueFlag(VkQueueFlags flags, VkQueueFlagBits bit) {
7803 return as!VkQueueFlags(as!u32(flags) | as!u32(bit))
7804}