blob: 0b390171aea28113862ccedaa2288d241c3cb53b [file] [log] [blame]
Jesse Halld27f6aa2015-08-15 17:58:48 -07001// Copyright (c) 2015 The Khronos Group Inc.
2//
3// Permission is hereby granted, free of charge, to any person obtaining a
4// copy of this software and/or associated documentation files (the
5// "Materials"), to deal in the Materials without restriction, including
6// without limitation the rights to use, copy, modify, merge, publish,
7// distribute, sublicense, and/or sell copies of the Materials, and to
8// permit persons to whom the Materials are furnished to do so, subject to
9// the following conditions:
10//
11// The above copyright notice and this permission notice shall be included
12// in all copies or substantial portions of the Materials.
13//
14// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
21
22import platform "platform.api"
23
24///////////////
25// Constants //
26///////////////
27
28// API version (major.minor.patch)
Jesse Hall3dd678a2016-01-08 21:52:01 -080029define VERSION_MAJOR 1
30define VERSION_MINOR 0
Jesse Hall7ba0ac72017-07-07 17:13:23 -070031define VERSION_PATCH 53
Jesse Halld27f6aa2015-08-15 17:58:48 -070032
33// API limits
Jesse Hall65ab5522015-11-30 00:07:16 -080034define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256
35define VK_UUID_SIZE 16
36define VK_MAX_EXTENSION_NAME_SIZE 256
37define VK_MAX_DESCRIPTION_SIZE 256
38define VK_MAX_MEMORY_TYPES 32
39define VK_MAX_MEMORY_HEAPS 16 /// The maximum number of unique memory heaps, each of which supporting 1 or more memory types.
Jesse Hallad250842017-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 Hallfdc8ab32017-03-10 21:01:57 -080076@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080077@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_NAME "VK_KHR_wayland_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080078
Jesse Halleb02c472017-02-24 15:13:45 -080079// 8
Jesse Hall543a7ff2016-01-08 16:38:30 -080080@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_SPEC_VERSION 4
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080081@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_NAME "VK_KHR_mir_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080082
Jesse Halleb02c472017-02-24 15:13:45 -080083// 9
Jesse Hall33faaad2016-01-24 21:00:49 -080084@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080085@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_NAME "VK_KHR_android_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080086
Jesse Halleb02c472017-02-24 15:13:45 -080087// 10
Jesse Hall7ba0ac72017-07-07 17:13:23 -070088@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080089@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_NAME "VK_KHR_win32_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080090
Jesse Halleb02c472017-02-24 15:13:45 -080091// 11
Chris Forbes1d4e5542017-02-15 19:38:50 +130092@extension("VK_ANDROID_native_buffer") define VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION 7
Chia-I Wub262ddc2016-03-22 07:38:20 +080093@extension("VK_ANDROID_native_buffer") define VK_ANDROID_NATIVE_BUFFER_NAME "VK_ANDROID_native_buffer"
94
Jesse Halleb02c472017-02-24 15:13:45 -080095// 12
Jesse Hall7ba0ac72017-07-07 17:13:23 -070096@extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_SPEC_VERSION 8
Jesse Hall715b86a2016-01-16 16:34:29 -080097@extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_NAME "VK_EXT_debug_report"
98
Jesse Halleb02c472017-02-24 15:13:45 -080099// 13
Jesse Hall26763382016-05-20 07:13:52 -0700100@extension("VK_NV_glsl_shader") define VK_NV_GLSL_SHADER_SPEC_VERSION 1
101@extension("VK_NV_glsl_shader") define VK_NV_GLSL_SHADER_NAME "VK_NV_glsl_shader"
102
Jesse Halleb02c472017-02-24 15:13:45 -0800103// 15
Jesse Hall26763382016-05-20 07:13:52 -0700104@extension("VK_KHR_sampler_mirror_clamp_to_edge") define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 1
105@extension("VK_KHR_sampler_mirror_clamp_to_edge") define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_NAME "VK_KHR_sampler_mirror_clamp_to_edge"
106
Jesse Halleb02c472017-02-24 15:13:45 -0800107// 16
Jesse Hall26763382016-05-20 07:13:52 -0700108@extension("VK_IMG_filter_cubic") define VK_IMG_FILTER_CUBIC_SPEC_VERSION 1
109@extension("VK_IMG_filter_cubic") define VK_IMG_FILTER_CUBIC_NAME "VK_IMG_filter_cubic"
110
Jesse Halleb02c472017-02-24 15:13:45 -0800111// 19
Jesse Hall26763382016-05-20 07:13:52 -0700112@extension("VK_AMD_rasterization_order") define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1
113@extension("VK_AMD_rasterization_order") define VK_AMD_RASTERIZATION_ORDER_NAME "VK_AMD_rasterization_order"
114
Jesse Halleb02c472017-02-24 15:13:45 -0800115// 21
Jesse Hall56d386a2016-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 Hall56d386a2016-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 Hall8f49fcb2017-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 Hall56d386a2016-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 Hall56d386a2016-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
Chris Forbes289cb792016-12-30 15:03:55 +1300136@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
Jesse Halleb02c472017-02-24 15:13:45 -0800139// 34
140@extension("VK_AMD_draw_indirect_count") define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
141@extension("VK_AMD_draw_indirect_count") define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count"
142
143// 36
144@extension("VK_AMD_negative_viewport_height") define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1
145@extension("VK_AMD_negative_viewport_height") define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height"
146
147// 37
148@extension("VK_AMD_gpu_shader_half_float") define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 1
149@extension("VK_AMD_gpu_shader_half_float") define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float"
150
151// 38
152@extension("VK_AMD_shader_ballot") define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1
153@extension("VK_AMD_shader_ballot") define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot"
154
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700155// 42
156@extension("VK_AMD_texture_gather_bias_lod") define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1
157@extension("VK_AMD_texture_gather_bias_lod") define VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME "VK_AMD_texture_gather_bias_lod"
158
Jesse Hallad250842017-03-10 18:35:38 -0800159// 54
160@extension("VK_KHX_multiview") define VK_KHX_MULTIVIEW_SPEC_VERSION 1
161@extension("VK_KHX_multiview") define VK_KHX_MULTIVIEW_EXTENSION_NAME "VK_KHX_multiview"
162
Jesse Halleb02c472017-02-24 15:13:45 -0800163// 56
Chris Forbes289cb792016-12-30 15:03:55 +1300164@extension("VK_NV_external_memory_capabilities") define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
165@extension("VK_NV_external_memory_capabilities") define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities"
166
Jesse Halleb02c472017-02-24 15:13:45 -0800167// 57
Chris Forbes289cb792016-12-30 15:03:55 +1300168@extension("VK_NV_external_memory") define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1
169@extension("VK_NV_external_memory") define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory"
170
Jesse Halleb02c472017-02-24 15:13:45 -0800171// 58
Chris Forbes289cb792016-12-30 15:03:55 +1300172@extension("VK_NV_external_memory_win32") define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
173@extension("VK_NV_external_memory_win32") define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
174
Jesse Halleb02c472017-02-24 15:13:45 -0800175// 59
Chris Forbes289cb792016-12-30 15:03:55 +1300176@extension("VK_NV_win32_keyed_mutex") define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 1
177@extension("VK_NV_win32_keyed_mutex") define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
178
Jesse Hall889cd9a2017-02-25 22:12:23 -0800179// 60
180@extension("VK_KHR_get_physical_device_properties2") define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 1
181@extension("VK_KHR_get_physical_device_properties2") define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2"
182
Jesse Hallad250842017-03-10 18:35:38 -0800183// 61
184@extension("VK_KHX_device_group") define VK_KHX_DEVICE_GROUP_SPEC_VERSION 1
185@extension("VK_KHX_device_group") define VK_KHX_DEVICE_GROUP_EXTENSION_NAME "VK_KHX_device_group"
186
Jesse Halleb02c472017-02-24 15:13:45 -0800187// 62
Chris Forbes289cb792016-12-30 15:03:55 +1300188@extension("VK_EXT_validation_flags") define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 1
189@extension("VK_EXT_validation_flags") define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags"
190
Jesse Hall77ad05b2017-03-10 22:02:20 -0800191// 63
192@extension("VK_NN_vi_surface") define VK_NN_VI_SURFACE_SPEC_VERSION 1
193@extension("VK_NN_vi_surface") define VK_NN_VI_SURFACE_EXTENSION_NAME "VK_NN_vi_surface"
194
195// 64
196@extension("VK_KHR_shader_draw_parameters") define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1
197@extension("VK_KHR_shader_draw_parameters") define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters"
198
199// 65
200@extension("VK_EXT_shader_subgroup_ballot") define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1
201@extension("VK_EXT_shader_subgroup_ballot") define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot"
202
203// 66
204@extension("VK_EXT_shader_subgroup_vote") define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1
205@extension("VK_EXT_shader_subgroup_vote") define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote"
206
207// 70
208@extension("VK_KHR_maintenance1") define VK_KHR_MAINTENANCE1_SPEC_VERSION 1
209@extension("VK_KHR_maintenance1") define VK_KHR_MAINTENANCE1_EXTENSION_NAME "VK_KHR_maintenance1"
210
Jesse Hallad250842017-03-10 18:35:38 -0800211// 71
212@extension("VK_KHX_device_group_creation") define VK_KHX_DEVICE_GROUP_CREATION_SPEC_VERSION 1
213@extension("VK_KHX_device_group_creation") define VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHX_device_group_creation"
214
215// 72
216@extension("VK_KHX_external_memory_capabilities") define VK_KHX_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
217@extension("VK_KHX_external_memory_capabilities") define VK_KHX_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHX_external_memory_capabilities"
218
219// 73
220@extension("VK_KHX_external_memory") define VK_KHX_EXTERNAL_MEMORY_SPEC_VERSION 1
221@extension("VK_KHX_external_memory") define VK_KHX_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHX_external_memory"
222
223// 74
224@extension("VK_KHX_external_memory_win32") define VK_KHX_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
225@extension("VK_KHX_external_memory_win32") define VK_KHX_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHX_external_memory_win32"
226
227// 75
228@extension("VK_KHX_external_memory_fd") define VK_KHX_EXTERNAL_MEMORY_FD_SPEC_VERSION 1
229@extension("VK_KHX_external_memory_fd") define VK_KHX_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHX_external_memory_fd"
230
231// 76
232@extension("VK_KHX_win32_keyed_mutex") define VK_KHX_WIN32_KEYED_MUTEX_SPEC_VERSION 1
233@extension("VK_KHX_win32_keyed_mutex") define VK_KHX_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHX_win32_keyed_mutex"
234
235// 77
236@extension("VK_KHX_external_semaphore_capabilities") define VK_KHX_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1
237@extension("VK_KHX_external_semaphore_capabilities") define VK_KHX_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHX_external_semaphore_capabilities"
238
239// 78
240@extension("VK_KHX_external_semaphore") define VK_KHX_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
241@extension("VK_KHX_external_semaphore") define VK_KHX_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHX_external_semaphore"
242
243// 79
244@extension("VK_KHX_external_semaphore_win32") define VK_KHX_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1
245@extension("VK_KHX_external_semaphore_win32") define VK_KHX_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHX_external_semaphore_win32"
246
247// 80
248@extension("VK_KHX_external_semaphore_fd") define VK_KHX_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1
249@extension("VK_KHX_external_semaphore_fd") define VK_KHX_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHX_external_semaphore_fd"
250
251// 81
252@extension("VK_KHR_push_descriptor") define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 1
253@extension("VK_KHR_push_descriptor") define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor"
254
Jesse Hall889cd9a2017-02-25 22:12:23 -0800255// 85
256@extension("VK_KHR_incremental_present") define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1
Jesse Hallf5ad48b2017-03-20 13:09:19 -0700257@extension("VK_KHR_incremental_present") define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present"
Jesse Hall889cd9a2017-02-25 22:12:23 -0800258
Jesse Hallad250842017-03-10 18:35:38 -0800259// 86
260@extension("VK_KHR_descriptor_update_template") define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1
261@extension("VK_KHR_descriptor_update_template") define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template"
262
Jesse Halleb02c472017-02-24 15:13:45 -0800263// 87
Chris Forbes289cb792016-12-30 15:03:55 +1300264@extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 1
265@extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands"
266
Jesse Hallad250842017-03-10 18:35:38 -0800267// 88
268@extension("VK_NV_clip_space_w_scaling") define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1
269@extension("VK_NV_clip_space_w_scaling") define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling"
270
Jesse Hall77ad05b2017-03-10 22:02:20 -0800271// 89
272@extension("VK_EXT_direct_mode_display") define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1
273@extension("VK_EXT_direct_mode_display") define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display"
274
275// 90
276@extension("VK_EXT_acquire_xlib_display") define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1
277@extension("VK_EXT_acquire_xlib_display") define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display"
278
279// 91
280@extension("VK_EXT_display_surface_counter") define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1
281@extension("VK_EXT_display_surface_counter") define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter"
282
283// 92
284@extension("VK_EXT_display_control") define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1
285@extension("VK_EXT_display_control") define VK_EXT_DISPLAY_CONTROL_COUNTER_EXTENSION_NAME "VK_EXT_display_control"
286
Jesse Hall889cd9a2017-02-25 22:12:23 -0800287// 93
288@extension("VK_GOOGLE_display_timing") define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1
Jesse Hallfdc8ab32017-03-10 21:01:57 -0800289@extension("VK_GOOGLE_display_timing") define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing"
Jesse Hall889cd9a2017-02-25 22:12:23 -0800290
Jesse Hallad250842017-03-10 18:35:38 -0800291// 95
292@extension("VK_NV_sample_mask_override_coverage") define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1
293@extension("VK_NV_sample_mask_override_coverage") define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage"
294
295// 96
296@extension("VK_NV_geometry_shader_passthrough") define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1
297@extension("VK_NV_geometry_shader_passthrough") define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough"
298
299// 97
300@extension("VK_NV_viewport_array2") define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION 1
301@extension("VK_NV_viewport_array2") define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME "VK_NV_viewport_array2"
302
303// 98
304@extension("VK_NVX_multiview_per_view_attributes") define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1
305@extension("VK_NVX_multiview_per_view_attributes") define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes"
306
307// 99
308@extension("VK_NV_viewport_swizzle") define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1
309@extension("VK_NV_viewport_swizzle") define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle"
310
311// 100
312@extension("VK_EXT_discard_rectangles") define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1
313@extension("VK_EXT_discard_rectangles") define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
314
Jesse Hall77ad05b2017-03-10 22:02:20 -0800315// 105
Jesse Hallf5ad48b2017-03-20 13:09:19 -0700316@extension("VK_EXT_swapchain_colorspace") define VK_EXT_SWAPCHAIN_COLORSPACE_SPEC_VERSION 2
317@extension("VK_EXT_swapchain_colorspace") define VK_EXT_SWAPCHAIN_COLORSPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace"
Jesse Hall77ad05b2017-03-10 22:02:20 -0800318
Jesse Hall889cd9a2017-02-25 22:12:23 -0800319// 106
320@extension("VK_EXT_hdr_metadata") define VK_EXT_HDR_METADATA_SPEC_VERSION 1
321@extension("VK_EXT_hdr_metadata") define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata"
322
323// 112
Chris Forbes1d5f68c2017-01-31 10:17:01 +1300324@extension("VK_KHR_shared_presentable_image") define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1
325@extension("VK_KHR_shared_presentable_image") define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image"
Chris Forbes2e12cb82017-01-18 11:45:17 +1300326
Jesse Hall05556b12017-05-18 17:40:25 -0700327// 120
Chris Forbese2d3ee12017-03-16 16:10:15 +1300328@extension("VK_KHR_get_surface_capabilities2") define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1
329@extension("VK_KHR_get_surface_capabilities2") define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2"
330
Jesse Hallad250842017-03-10 18:35:38 -0800331// 123
332@extension("VK_MVK_ios_surface") define VK_MVK_IOS_SURFACE_SPEC_VERSION 1
333@extension("VK_MVK_ios_surface") define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface"
334
335// 124
336@extension("VK_MVK_macos_surface") define VK_MVK_MACOS_SURFACE_SPEC_VERSION 1
337@extension("VK_MVK_macos_surface") define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface"
338
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700339// 131
340@extension("VK_EXT_sampler_filter_minmax") define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 1
341@extension("VK_EXT_sampler_filter_minmax") define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
342
343// 133
344@extension("VK_AMD_gpu_shader_int16") define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 1
345@extension("VK_AMD_gpu_shader_int16") define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME "VK_AMD_gpu_shader_int16"
346
347// 149
348@extension("VK_EXT_blend_operation_advanced") define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2
349@extension("VK_EXT_blend_operation_advanced") define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
350
351// 150
352@extension("VK_NV_fragment_coverage_to_color") define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1
353@extension("VK_NV_fragment_coverage_to_color") define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME "VK_NV_fragment_coverage_to_color"
354
355// 153
356@extension("VK_NV_framebuffer_mixed_samples") define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1
357@extension("VK_NV_framebuffer_mixed_samples") define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME "VK_NV_framebuffer_mixed_samples"
358
359// 154
360@extension("VK_NV_fill_rectangle") define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1
361@extension("VK_NV_fill_rectangle") define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle"
362
Jesse Halld27f6aa2015-08-15 17:58:48 -0700363/////////////
364// Types //
365/////////////
366
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700367type u32 VkBool32
368type u32 VkFlags
369type u64 VkDeviceSize
370type u32 VkSampleMask
371
Jesse Halld27f6aa2015-08-15 17:58:48 -0700372/// Dispatchable handle types.
373@dispatchHandle type u64 VkInstance
374@dispatchHandle type u64 VkPhysicalDevice
375@dispatchHandle type u64 VkDevice
376@dispatchHandle type u64 VkQueue
Jesse Hall3fbc8562015-11-29 22:10:52 -0800377@dispatchHandle type u64 VkCommandBuffer
Jesse Halld27f6aa2015-08-15 17:58:48 -0700378
379/// Non dispatchable handle types.
380@nonDispatchHandle type u64 VkDeviceMemory
Jesse Hall3fbc8562015-11-29 22:10:52 -0800381@nonDispatchHandle type u64 VkCommandPool
Jesse Halld27f6aa2015-08-15 17:58:48 -0700382@nonDispatchHandle type u64 VkBuffer
383@nonDispatchHandle type u64 VkBufferView
384@nonDispatchHandle type u64 VkImage
385@nonDispatchHandle type u64 VkImageView
Jesse Halld27f6aa2015-08-15 17:58:48 -0700386@nonDispatchHandle type u64 VkShaderModule
Jesse Halld27f6aa2015-08-15 17:58:48 -0700387@nonDispatchHandle type u64 VkPipeline
388@nonDispatchHandle type u64 VkPipelineLayout
389@nonDispatchHandle type u64 VkSampler
390@nonDispatchHandle type u64 VkDescriptorSet
391@nonDispatchHandle type u64 VkDescriptorSetLayout
392@nonDispatchHandle type u64 VkDescriptorPool
Jesse Halld27f6aa2015-08-15 17:58:48 -0700393@nonDispatchHandle type u64 VkFence
394@nonDispatchHandle type u64 VkSemaphore
395@nonDispatchHandle type u64 VkEvent
396@nonDispatchHandle type u64 VkQueryPool
397@nonDispatchHandle type u64 VkFramebuffer
398@nonDispatchHandle type u64 VkRenderPass
399@nonDispatchHandle type u64 VkPipelineCache
Jesse Hall1356b0d2015-11-23 17:24:58 -0800400
Jesse Hallad250842017-03-10 18:35:38 -0800401// 1
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800402@extension("VK_KHR_surface") @nonDispatchHandle type u64 VkSurfaceKHR
Jesse Hall1356b0d2015-11-23 17:24:58 -0800403
Jesse Hallad250842017-03-10 18:35:38 -0800404// 2
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800405@extension("VK_KHR_swapchain") @nonDispatchHandle type u64 VkSwapchainKHR
Jesse Hall1356b0d2015-11-23 17:24:58 -0800406
Jesse Hallad250842017-03-10 18:35:38 -0800407// 3
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800408@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayKHR
409@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayModeKHR
Jesse Halld27f6aa2015-08-15 17:58:48 -0700410
Jesse Hallad250842017-03-10 18:35:38 -0800411// 12
Jesse Hall715b86a2016-01-16 16:34:29 -0800412@extension("VK_EXT_debug_report") @nonDispatchHandle type u64 VkDebugReportCallbackEXT
413
Jesse Hallad250842017-03-10 18:35:38 -0800414// 86
415@extension("VK_KHR_descriptor_update_template") @nonDispatchHandle type u64 VkDescriptorUpdateTemplateKHR
416
417// 87
Chris Forbes289cb792016-12-30 15:03:55 +1300418@extension("VK_NVX_device_generated_commands") @nonDispatchHandle type u64 VkObjectTableNVX
419@extension("VK_NVX_device_generated_commands") @nonDispatchHandle type u64 VkIndirectCommandsLayoutNVX
420
Jesse Halld27f6aa2015-08-15 17:58:48 -0700421
422/////////////
423// Enums //
424/////////////
425
426enum VkImageLayout {
427 VK_IMAGE_LAYOUT_UNDEFINED = 0x00000000, /// Implicit layout an image is when its contents are undefined due to various reasons (e.g. right after creation)
428 VK_IMAGE_LAYOUT_GENERAL = 0x00000001, /// General layout when image can be used for any kind of access
429 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 0x00000002, /// Optimal layout when image is only used for color attachment read/write
430 VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 0x00000003, /// Optimal layout when image is only used for depth/stencil attachment read/write
431 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 0x00000004, /// Optimal layout when image is used for read only depth/stencil attachment and shader access
432 VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 0x00000005, /// Optimal layout when image is used for read only shader access
Jesse Hall3fbc8562015-11-29 22:10:52 -0800433 VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 0x00000006, /// Optimal layout when image is used only as source of transfer operations
434 VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 0x00000007, /// Optimal layout when image is used only as destination of transfer operations
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700435 VK_IMAGE_LAYOUT_PREINITIALIZED = 0x00000008, /// Initial layout used when the data is populated by the CPU
Jesse Hall1356b0d2015-11-23 17:24:58 -0800436
Jesse Hallad250842017-03-10 18:35:38 -0800437 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -0800438 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
Chris Forbesaf3a1112017-01-31 15:37:03 +1300439
Jesse Hall05556b12017-05-18 17:40:25 -0700440 //@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbesaf3a1112017-01-31 15:37:03 +1300441 VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700442}
443
444enum VkAttachmentLoadOp {
445 VK_ATTACHMENT_LOAD_OP_LOAD = 0x00000000,
446 VK_ATTACHMENT_LOAD_OP_CLEAR = 0x00000001,
447 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 0x00000002,
448}
449
450enum VkAttachmentStoreOp {
451 VK_ATTACHMENT_STORE_OP_STORE = 0x00000000,
452 VK_ATTACHMENT_STORE_OP_DONT_CARE = 0x00000001,
453}
454
455enum VkImageType {
456 VK_IMAGE_TYPE_1D = 0x00000000,
457 VK_IMAGE_TYPE_2D = 0x00000001,
458 VK_IMAGE_TYPE_3D = 0x00000002,
459}
460
461enum VkImageTiling {
Jesse Hallc7467b72015-11-29 21:05:26 -0800462 VK_IMAGE_TILING_OPTIMAL = 0x00000000,
463 VK_IMAGE_TILING_LINEAR = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700464}
465
466enum VkImageViewType {
467 VK_IMAGE_VIEW_TYPE_1D = 0x00000000,
468 VK_IMAGE_VIEW_TYPE_2D = 0x00000001,
469 VK_IMAGE_VIEW_TYPE_3D = 0x00000002,
470 VK_IMAGE_VIEW_TYPE_CUBE = 0x00000003,
471 VK_IMAGE_VIEW_TYPE_1D_ARRAY = 0x00000004,
472 VK_IMAGE_VIEW_TYPE_2D_ARRAY = 0x00000005,
473 VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 0x00000006,
474}
475
Jesse Hall3fbc8562015-11-29 22:10:52 -0800476enum VkCommandBufferLevel {
477 VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0x00000000,
478 VK_COMMAND_BUFFER_LEVEL_SECONDARY = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700479}
480
Jesse Hall65ab5522015-11-30 00:07:16 -0800481enum VkComponentSwizzle {
482 VK_COMPONENT_SWIZZLE_IDENTITY = 0x00000000,
483 VK_COMPONENT_SWIZZLE_ZERO = 0x00000001,
484 VK_COMPONENT_SWIZZLE_ONE = 0x00000002,
485 VK_COMPONENT_SWIZZLE_R = 0x00000003,
486 VK_COMPONENT_SWIZZLE_G = 0x00000004,
487 VK_COMPONENT_SWIZZLE_B = 0x00000005,
488 VK_COMPONENT_SWIZZLE_A = 0x00000006,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700489}
490
491enum VkDescriptorType {
492 VK_DESCRIPTOR_TYPE_SAMPLER = 0x00000000,
493 VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 0x00000001,
494 VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 0x00000002,
495 VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 0x00000003,
496 VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 0x00000004,
497 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 0x00000005,
498 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 0x00000006,
499 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 0x00000007,
500 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 0x00000008,
501 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 0x00000009,
502 VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 0x0000000a,
503}
504
Jesse Halld27f6aa2015-08-15 17:58:48 -0700505enum VkQueryType {
506 VK_QUERY_TYPE_OCCLUSION = 0x00000000,
507 VK_QUERY_TYPE_PIPELINE_STATISTICS = 0x00000001, /// Optional
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800508 VK_QUERY_TYPE_TIMESTAMP = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700509}
510
Jesse Halld27f6aa2015-08-15 17:58:48 -0700511enum VkBorderColor {
512 VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0x00000000,
513 VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 0x00000001,
514 VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 0x00000002,
515 VK_BORDER_COLOR_INT_OPAQUE_BLACK = 0x00000003,
516 VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 0x00000004,
517 VK_BORDER_COLOR_INT_OPAQUE_WHITE = 0x00000005,
518}
519
520enum VkPipelineBindPoint {
Jesse Hallc7467b72015-11-29 21:05:26 -0800521 VK_PIPELINE_BIND_POINT_GRAPHICS = 0x00000000,
522 VK_PIPELINE_BIND_POINT_COMPUTE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700523}
524
525enum VkPrimitiveTopology {
526 VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0x00000000,
527 VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 0x00000001,
528 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 0x00000002,
529 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 0x00000003,
530 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 0x00000004,
531 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800532 VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 0x00000006,
533 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 0x00000007,
534 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 0x00000008,
535 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 0x00000009,
Jesse Hall091ed9e2015-11-30 00:55:29 -0800536 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 0x0000000a,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700537}
538
539enum VkSharingMode {
540 VK_SHARING_MODE_EXCLUSIVE = 0x00000000,
541 VK_SHARING_MODE_CONCURRENT = 0x00000001,
542}
543
544enum VkIndexType {
545 VK_INDEX_TYPE_UINT16 = 0x00000000,
546 VK_INDEX_TYPE_UINT32 = 0x00000001,
547}
548
Jesse Hall23ff73f2015-11-29 14:36:39 -0800549enum VkFilter {
550 VK_FILTER_NEAREST = 0x00000000,
551 VK_FILTER_LINEAR = 0x00000001,
Jesse Hall26763382016-05-20 07:13:52 -0700552
Jesse Hallad250842017-03-10 18:35:38 -0800553 //@extension("VK_IMG_filter_cubic") // 16
Jesse Hall26763382016-05-20 07:13:52 -0700554 VK_FILTER_CUBIC_IMG = 1000015000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700555}
556
Jesse Hall23ff73f2015-11-29 14:36:39 -0800557enum VkSamplerMipmapMode {
Jesse Hall23ff73f2015-11-29 14:36:39 -0800558 VK_SAMPLER_MIPMAP_MODE_NEAREST = 0x00000001, /// Choose nearest mip level
559 VK_SAMPLER_MIPMAP_MODE_LINEAR = 0x00000002, /// Linear filter between mip levels
Jesse Halld27f6aa2015-08-15 17:58:48 -0700560}
561
Jesse Hall23ff73f2015-11-29 14:36:39 -0800562enum VkSamplerAddressMode {
Jesse Hallc7467b72015-11-29 21:05:26 -0800563 VK_SAMPLER_ADDRESS_MODE_REPEAT = 0x00000000,
564 VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 0x00000001,
565 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 0x00000002,
566 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 0x00000003,
567 VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700568}
569
570enum VkCompareOp {
571 VK_COMPARE_OP_NEVER = 0x00000000,
572 VK_COMPARE_OP_LESS = 0x00000001,
573 VK_COMPARE_OP_EQUAL = 0x00000002,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800574 VK_COMPARE_OP_LESS_OR_EQUAL = 0x00000003,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700575 VK_COMPARE_OP_GREATER = 0x00000004,
576 VK_COMPARE_OP_NOT_EQUAL = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800577 VK_COMPARE_OP_GREATER_OR_EQUAL = 0x00000006,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700578 VK_COMPARE_OP_ALWAYS = 0x00000007,
579}
580
Jesse Hall65ab5522015-11-30 00:07:16 -0800581enum VkPolygonMode {
582 VK_POLYGON_MODE_FILL = 0x00000000,
583 VK_POLYGON_MODE_LINE = 0x00000001,
584 VK_POLYGON_MODE_POINT = 0x00000002,
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700585
586 //@extension("VK_NV_fill_rectangle") // 154
587 VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700588}
589
590enum VkFrontFace {
Jesse Hall3fbc8562015-11-29 22:10:52 -0800591 VK_FRONT_FACE_COUNTER_CLOCKWISE = 0x00000000,
592 VK_FRONT_FACE_CLOCKWISE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700593}
594
Jesse Hall65ab5522015-11-30 00:07:16 -0800595enum VkBlendFactor {
596 VK_BLEND_FACTOR_ZERO = 0x00000000,
597 VK_BLEND_FACTOR_ONE = 0x00000001,
598 VK_BLEND_FACTOR_SRC_COLOR = 0x00000002,
599 VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 0x00000003,
600 VK_BLEND_FACTOR_DST_COLOR = 0x00000004,
601 VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 0x00000005,
602 VK_BLEND_FACTOR_SRC_ALPHA = 0x00000006,
603 VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 0x00000007,
604 VK_BLEND_FACTOR_DST_ALPHA = 0x00000008,
605 VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 0x00000009,
606 VK_BLEND_FACTOR_CONSTANT_COLOR = 0x0000000a,
607 VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 0x0000000b,
608 VK_BLEND_FACTOR_CONSTANT_ALPHA = 0x0000000c,
609 VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 0x0000000d,
610 VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 0x0000000e,
611 VK_BLEND_FACTOR_SRC1_COLOR = 0x0000000f,
612 VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 0x00000010,
613 VK_BLEND_FACTOR_SRC1_ALPHA = 0x00000011,
614 VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 0x00000012,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700615}
616
617enum VkBlendOp {
618 VK_BLEND_OP_ADD = 0x00000000,
619 VK_BLEND_OP_SUBTRACT = 0x00000001,
620 VK_BLEND_OP_REVERSE_SUBTRACT = 0x00000002,
621 VK_BLEND_OP_MIN = 0x00000003,
622 VK_BLEND_OP_MAX = 0x00000004,
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700623
624 //@extension("VK_EXT_blend_operation_advanced") // 149
625 VK_BLEND_OP_ZERO_EXT = 1000148000,
626 VK_BLEND_OP_SRC_EXT = 1000148001,
627 VK_BLEND_OP_DST_EXT = 1000148002,
628 VK_BLEND_OP_SRC_OVER_EXT = 1000148003,
629 VK_BLEND_OP_DST_OVER_EXT = 1000148004,
630 VK_BLEND_OP_SRC_IN_EXT = 1000148005,
631 VK_BLEND_OP_DST_IN_EXT = 1000148006,
632 VK_BLEND_OP_SRC_OUT_EXT = 1000148007,
633 VK_BLEND_OP_DST_OUT_EXT = 1000148008,
634 VK_BLEND_OP_SRC_ATOP_EXT = 1000148009,
635 VK_BLEND_OP_DST_ATOP_EXT = 1000148010,
636 VK_BLEND_OP_XOR_EXT = 1000148011,
637 VK_BLEND_OP_MULTIPLY_EXT = 1000148012,
638 VK_BLEND_OP_SCREEN_EXT = 1000148013,
639 VK_BLEND_OP_OVERLAY_EXT = 1000148014,
640 VK_BLEND_OP_DARKEN_EXT = 1000148015,
641 VK_BLEND_OP_LIGHTEN_EXT = 1000148016,
642 VK_BLEND_OP_COLORDODGE_EXT = 1000148017,
643 VK_BLEND_OP_COLORBURN_EXT = 1000148018,
644 VK_BLEND_OP_HARDLIGHT_EXT = 1000148019,
645 VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020,
646 VK_BLEND_OP_DIFFERENCE_EXT = 1000148021,
647 VK_BLEND_OP_EXCLUSION_EXT = 1000148022,
648 VK_BLEND_OP_INVERT_EXT = 1000148023,
649 VK_BLEND_OP_INVERT_RGB_EXT = 1000148024,
650 VK_BLEND_OP_LINEARDODGE_EXT = 1000148025,
651 VK_BLEND_OP_LINEARBURN_EXT = 1000148026,
652 VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027,
653 VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028,
654 VK_BLEND_OP_PINLIGHT_EXT = 1000148029,
655 VK_BLEND_OP_HARDMIX_EXT = 1000148030,
656 VK_BLEND_OP_HSL_HUE_EXT = 1000148031,
657 VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032,
658 VK_BLEND_OP_HSL_COLOR_EXT = 1000148033,
659 VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034,
660 VK_BLEND_OP_PLUS_EXT = 1000148035,
661 VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036,
662 VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037,
663 VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038,
664 VK_BLEND_OP_MINUS_EXT = 1000148039,
665 VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040,
666 VK_BLEND_OP_CONTRAST_EXT = 1000148041,
667 VK_BLEND_OP_INVERT_OVG_EXT = 1000148042,
668 VK_BLEND_OP_RED_EXT = 1000148043,
669 VK_BLEND_OP_GREEN_EXT = 1000148044,
670 VK_BLEND_OP_BLUE_EXT = 1000148045,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700671}
672
673enum VkStencilOp {
674 VK_STENCIL_OP_KEEP = 0x00000000,
675 VK_STENCIL_OP_ZERO = 0x00000001,
676 VK_STENCIL_OP_REPLACE = 0x00000002,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800677 VK_STENCIL_OP_INCREMENT_AND_CLAMP = 0x00000003,
678 VK_STENCIL_OP_DECREMENT_AND_CLAMP = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700679 VK_STENCIL_OP_INVERT = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800680 VK_STENCIL_OP_INCREMENT_AND_WRAP = 0x00000006,
681 VK_STENCIL_OP_DECREMENT_AND_WRAP = 0x00000007,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700682}
683
684enum VkLogicOp {
685 VK_LOGIC_OP_CLEAR = 0x00000000,
686 VK_LOGIC_OP_AND = 0x00000001,
687 VK_LOGIC_OP_AND_REVERSE = 0x00000002,
688 VK_LOGIC_OP_COPY = 0x00000003,
689 VK_LOGIC_OP_AND_INVERTED = 0x00000004,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800690 VK_LOGIC_OP_NO_OP = 0x00000005,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700691 VK_LOGIC_OP_XOR = 0x00000006,
692 VK_LOGIC_OP_OR = 0x00000007,
693 VK_LOGIC_OP_NOR = 0x00000008,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800694 VK_LOGIC_OP_EQUIVALENT = 0x00000009,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700695 VK_LOGIC_OP_INVERT = 0x0000000a,
696 VK_LOGIC_OP_OR_REVERSE = 0x0000000b,
697 VK_LOGIC_OP_COPY_INVERTED = 0x0000000c,
698 VK_LOGIC_OP_OR_INVERTED = 0x0000000d,
699 VK_LOGIC_OP_NAND = 0x0000000e,
700 VK_LOGIC_OP_SET = 0x0000000f,
701}
702
Jesse Hall3fbc8562015-11-29 22:10:52 -0800703enum VkSystemAllocationScope {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800704 VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0x00000000,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800705 VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 0x00000001,
706 VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 0x00000002,
707 VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 0x00000003,
708 VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 0x00000004,
Jesse Hall03b6fe12015-11-24 12:44:21 -0800709}
710
Jesse Hall3fbc8562015-11-29 22:10:52 -0800711enum VkInternalAllocationType {
712 VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0x00000000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700713}
714
715enum VkPhysicalDeviceType {
716 VK_PHYSICAL_DEVICE_TYPE_OTHER = 0x00000000,
717 VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 0x00000001,
718 VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 0x00000002,
719 VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 0x00000003,
720 VK_PHYSICAL_DEVICE_TYPE_CPU = 0x00000004,
721}
722
Jesse Hall65ab5522015-11-30 00:07:16 -0800723enum VkVertexInputRate {
724 VK_VERTEX_INPUT_RATE_VERTEX = 0x00000000,
725 VK_VERTEX_INPUT_RATE_INSTANCE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700726}
727
728/// Vulkan format definitions
729enum VkFormat {
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800730 VK_FORMAT_UNDEFINED = 0,
731 VK_FORMAT_R4G4_UNORM_PACK8 = 1,
732 VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
733 VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
734 VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
735 VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
736 VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
737 VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
738 VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
739 VK_FORMAT_R8_UNORM = 9,
740 VK_FORMAT_R8_SNORM = 10,
741 VK_FORMAT_R8_USCALED = 11,
742 VK_FORMAT_R8_SSCALED = 12,
743 VK_FORMAT_R8_UINT = 13,
744 VK_FORMAT_R8_SINT = 14,
745 VK_FORMAT_R8_SRGB = 15,
746 VK_FORMAT_R8G8_UNORM = 16,
747 VK_FORMAT_R8G8_SNORM = 17,
748 VK_FORMAT_R8G8_USCALED = 18,
749 VK_FORMAT_R8G8_SSCALED = 19,
750 VK_FORMAT_R8G8_UINT = 20,
751 VK_FORMAT_R8G8_SINT = 21,
752 VK_FORMAT_R8G8_SRGB = 22,
753 VK_FORMAT_R8G8B8_UNORM = 23,
754 VK_FORMAT_R8G8B8_SNORM = 24,
755 VK_FORMAT_R8G8B8_USCALED = 25,
756 VK_FORMAT_R8G8B8_SSCALED = 26,
757 VK_FORMAT_R8G8B8_UINT = 27,
758 VK_FORMAT_R8G8B8_SINT = 28,
759 VK_FORMAT_R8G8B8_SRGB = 29,
760 VK_FORMAT_B8G8R8_UNORM = 30,
761 VK_FORMAT_B8G8R8_SNORM = 31,
762 VK_FORMAT_B8G8R8_USCALED = 32,
763 VK_FORMAT_B8G8R8_SSCALED = 33,
764 VK_FORMAT_B8G8R8_UINT = 34,
765 VK_FORMAT_B8G8R8_SINT = 35,
766 VK_FORMAT_B8G8R8_SRGB = 36,
767 VK_FORMAT_R8G8B8A8_UNORM = 37,
768 VK_FORMAT_R8G8B8A8_SNORM = 38,
769 VK_FORMAT_R8G8B8A8_USCALED = 39,
770 VK_FORMAT_R8G8B8A8_SSCALED = 40,
771 VK_FORMAT_R8G8B8A8_UINT = 41,
772 VK_FORMAT_R8G8B8A8_SINT = 42,
773 VK_FORMAT_R8G8B8A8_SRGB = 43,
774 VK_FORMAT_B8G8R8A8_UNORM = 44,
775 VK_FORMAT_B8G8R8A8_SNORM = 45,
776 VK_FORMAT_B8G8R8A8_USCALED = 46,
777 VK_FORMAT_B8G8R8A8_SSCALED = 47,
778 VK_FORMAT_B8G8R8A8_UINT = 48,
779 VK_FORMAT_B8G8R8A8_SINT = 49,
780 VK_FORMAT_B8G8R8A8_SRGB = 50,
781 VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
782 VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
783 VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
784 VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
785 VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
786 VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
787 VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
788 VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
789 VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
790 VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
791 VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
792 VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
793 VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
794 VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
795 VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
796 VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
797 VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
798 VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
799 VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
800 VK_FORMAT_R16_UNORM = 70,
801 VK_FORMAT_R16_SNORM = 71,
802 VK_FORMAT_R16_USCALED = 72,
803 VK_FORMAT_R16_SSCALED = 73,
804 VK_FORMAT_R16_UINT = 74,
805 VK_FORMAT_R16_SINT = 75,
806 VK_FORMAT_R16_SFLOAT = 76,
807 VK_FORMAT_R16G16_UNORM = 77,
808 VK_FORMAT_R16G16_SNORM = 78,
809 VK_FORMAT_R16G16_USCALED = 79,
810 VK_FORMAT_R16G16_SSCALED = 80,
811 VK_FORMAT_R16G16_UINT = 81,
812 VK_FORMAT_R16G16_SINT = 82,
813 VK_FORMAT_R16G16_SFLOAT = 83,
814 VK_FORMAT_R16G16B16_UNORM = 84,
815 VK_FORMAT_R16G16B16_SNORM = 85,
816 VK_FORMAT_R16G16B16_USCALED = 86,
817 VK_FORMAT_R16G16B16_SSCALED = 87,
818 VK_FORMAT_R16G16B16_UINT = 88,
819 VK_FORMAT_R16G16B16_SINT = 89,
820 VK_FORMAT_R16G16B16_SFLOAT = 90,
821 VK_FORMAT_R16G16B16A16_UNORM = 91,
822 VK_FORMAT_R16G16B16A16_SNORM = 92,
823 VK_FORMAT_R16G16B16A16_USCALED = 93,
824 VK_FORMAT_R16G16B16A16_SSCALED = 94,
825 VK_FORMAT_R16G16B16A16_UINT = 95,
826 VK_FORMAT_R16G16B16A16_SINT = 96,
827 VK_FORMAT_R16G16B16A16_SFLOAT = 97,
828 VK_FORMAT_R32_UINT = 98,
829 VK_FORMAT_R32_SINT = 99,
830 VK_FORMAT_R32_SFLOAT = 100,
831 VK_FORMAT_R32G32_UINT = 101,
832 VK_FORMAT_R32G32_SINT = 102,
833 VK_FORMAT_R32G32_SFLOAT = 103,
834 VK_FORMAT_R32G32B32_UINT = 104,
835 VK_FORMAT_R32G32B32_SINT = 105,
836 VK_FORMAT_R32G32B32_SFLOAT = 106,
837 VK_FORMAT_R32G32B32A32_UINT = 107,
838 VK_FORMAT_R32G32B32A32_SINT = 108,
839 VK_FORMAT_R32G32B32A32_SFLOAT = 109,
840 VK_FORMAT_R64_UINT = 110,
841 VK_FORMAT_R64_SINT = 111,
842 VK_FORMAT_R64_SFLOAT = 112,
843 VK_FORMAT_R64G64_UINT = 113,
844 VK_FORMAT_R64G64_SINT = 114,
845 VK_FORMAT_R64G64_SFLOAT = 115,
846 VK_FORMAT_R64G64B64_UINT = 116,
847 VK_FORMAT_R64G64B64_SINT = 117,
848 VK_FORMAT_R64G64B64_SFLOAT = 118,
849 VK_FORMAT_R64G64B64A64_UINT = 119,
850 VK_FORMAT_R64G64B64A64_SINT = 120,
851 VK_FORMAT_R64G64B64A64_SFLOAT = 121,
852 VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
853 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
854 VK_FORMAT_D16_UNORM = 124,
855 VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
856 VK_FORMAT_D32_SFLOAT = 126,
857 VK_FORMAT_S8_UINT = 127,
858 VK_FORMAT_D16_UNORM_S8_UINT = 128,
859 VK_FORMAT_D24_UNORM_S8_UINT = 129,
860 VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
861 VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
862 VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
863 VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
864 VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
865 VK_FORMAT_BC2_UNORM_BLOCK = 135,
866 VK_FORMAT_BC2_SRGB_BLOCK = 136,
867 VK_FORMAT_BC3_UNORM_BLOCK = 137,
868 VK_FORMAT_BC3_SRGB_BLOCK = 138,
869 VK_FORMAT_BC4_UNORM_BLOCK = 139,
870 VK_FORMAT_BC4_SNORM_BLOCK = 140,
871 VK_FORMAT_BC5_UNORM_BLOCK = 141,
872 VK_FORMAT_BC5_SNORM_BLOCK = 142,
873 VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
874 VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
875 VK_FORMAT_BC7_UNORM_BLOCK = 145,
876 VK_FORMAT_BC7_SRGB_BLOCK = 146,
877 VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
878 VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
879 VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
880 VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
881 VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
882 VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
883 VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
884 VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
885 VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
886 VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
887 VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
888 VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
889 VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
890 VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
891 VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
892 VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
893 VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
894 VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
895 VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
896 VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
897 VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
898 VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
899 VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
900 VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
901 VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
902 VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
903 VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
904 VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
905 VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
906 VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
907 VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
908 VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
909 VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
910 VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
911 VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
912 VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
913 VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
914 VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
Chris Forbes289cb792016-12-30 15:03:55 +1300915
Jesse Hallad250842017-03-10 18:35:38 -0800916 //@extension("VK_IMG_format_pvrtc") // 28
Jesse Halleb02c472017-02-24 15:13:45 -0800917 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
918 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
919 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
920 VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
921 VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
922 VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
923 VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
924 VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700925}
926
Jesse Halld27f6aa2015-08-15 17:58:48 -0700927/// Structure type enumerant
928enum VkStructureType {
929 VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
Jesse Hallc7467b72015-11-29 21:05:26 -0800930 VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
931 VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
932 VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
933 VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800934 VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
Jesse Hallc7467b72015-11-29 21:05:26 -0800935 VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
936 VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
937 VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
938 VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700939 VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
Jesse Hallc7467b72015-11-29 21:05:26 -0800940 VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
941 VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
942 VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
943 VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
944 VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
945 VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800946 VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
947 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
948 VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
949 VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
950 VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
951 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
952 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
953 VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
954 VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
955 VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
956 VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
957 VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
958 VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
959 VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
960 VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
961 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
962 VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800963 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800964 VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
965 VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
966 VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
967 VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
968 VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800969 VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
Jesse Hall3dd678a2016-01-08 21:52:01 -0800970 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
971 VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
972 VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
973 VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
974 VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
975 VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
976 VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
977 VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
Jesse Hall1356b0d2015-11-23 17:24:58 -0800978
Jesse Hallad250842017-03-10 18:35:38 -0800979 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -0800980 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
981 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
Jesse Hall1356b0d2015-11-23 17:24:58 -0800982
Jesse Hallad250842017-03-10 18:35:38 -0800983 //@extension("VK_KHR_display") // 3
Jesse Hallbd888842015-11-30 21:44:14 -0800984 VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
985 VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
Jesse Hall1356b0d2015-11-23 17:24:58 -0800986
Jesse Hallad250842017-03-10 18:35:38 -0800987 //@extension("VK_KHR_display_swapchain") // 4
Jesse Hallbd888842015-11-30 21:44:14 -0800988 VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR = 1000003000,
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800989
Jesse Hallad250842017-03-10 18:35:38 -0800990 //@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800991 VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
992
Jesse Hallad250842017-03-10 18:35:38 -0800993 //@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800994 VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
995
Jesse Hallad250842017-03-10 18:35:38 -0800996 //@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800997 VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
998
Jesse Hallad250842017-03-10 18:35:38 -0800999 //@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001000 VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000,
1001
Jesse Hallad250842017-03-10 18:35:38 -08001002 //@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001003 VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
1004
Jesse Hallad250842017-03-10 18:35:38 -08001005 //@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001006 VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
Jesse Hall543a7ff2016-01-08 16:38:30 -08001007
Jesse Hallad250842017-03-10 18:35:38 -08001008 //@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08001009 VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID = 1000010000,
Chris Forbes8e4438b2016-12-07 16:26:49 +13001010 VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID = 1000010001,
Chris Forbes1d4e5542017-02-15 19:38:50 +13001011 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID = 1000010002,
Chia-I Wub262ddc2016-03-22 07:38:20 +08001012
Jesse Hallad250842017-03-10 18:35:38 -08001013 //@extension("VK_EXT_debug_report") // 12
Jesse Hall26763382016-05-20 07:13:52 -07001014 VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
1015
Jesse Hallad250842017-03-10 18:35:38 -08001016 //@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07001017 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,
1018
Jesse Hallad250842017-03-10 18:35:38 -08001019 //@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07001020 VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,
Jesse Hall26763382016-05-20 07:13:52 -07001021 VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,
Jesse Hall26763382016-05-20 07:13:52 -07001022 VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,
Jesse Hall56d386a2016-07-26 15:20:40 -07001023
Jesse Hallad250842017-03-10 18:35:38 -08001024 //@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07001025 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
Jesse Hall56d386a2016-07-26 15:20:40 -07001026 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
Jesse Hall56d386a2016-07-26 15:20:40 -07001027 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
Chris Forbes289cb792016-12-30 15:03:55 +13001028
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001029 //@extension("VK_AMD_texture_gather_bias_lod") // 42
1030 VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000,
1031
Jesse Hallad250842017-03-10 18:35:38 -08001032 //@extension("VK_KHX_multiview") // 54
1033 VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX = 1000053000,
1034 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX = 1000053001,
1035 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX = 1000053002,
1036
1037 //@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08001038 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
1039 VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,
Chris Forbes289cb792016-12-30 15:03:55 +13001040
Jesse Hallad250842017-03-10 18:35:38 -08001041 //@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08001042 VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
1043 VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
Chris Forbes289cb792016-12-30 15:03:55 +13001044
Jesse Hallad250842017-03-10 18:35:38 -08001045 //@extension("VK_NV_win32_keyed_mutex") // 59
Chris Forbes289cb792016-12-30 15:03:55 +13001046 VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
1047
Jesse Hallad250842017-03-10 18:35:38 -08001048 //@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall889cd9a2017-02-25 22:12:23 -08001049 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000,
1050 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001,
1051 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002,
1052 VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003,
1053 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004,
1054 VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005,
1055 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006,
1056 VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007,
Chris Forbes1194ede2016-12-30 16:29:25 +13001057 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008,
1058
Jesse Hallad250842017-03-10 18:35:38 -08001059 //@extension("VK_KHX_device_group") // 61
1060 VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX = 1000060000,
1061 VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX = 1000060001,
1062 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX = 1000060002,
1063 VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX = 1000060003,
1064 VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX = 1000060004,
1065 VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX = 1000060005,
1066 VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX = 1000060006,
1067 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX = 1000060007,
1068 VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX = 1000060008,
1069 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX = 1000060009,
1070 VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX = 1000060010,
1071 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX = 1000060011,
1072 VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX = 1000060012,
1073
1074 //@extension("VK_EXT_validation_flags") // 62
Jesse Halleb02c472017-02-24 15:13:45 -08001075 VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
Chris Forbes289cb792016-12-30 15:03:55 +13001076
Jesse Hallad250842017-03-10 18:35:38 -08001077 //@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08001078 VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000,
1079
Jesse Hallad250842017-03-10 18:35:38 -08001080 //@extension("VK_KHX_device_group_creation") // 71
1081 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX = 1000070000,
1082 VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX = 1000070001,
1083
1084 //@extension("VK_KHX_external_memory_capabilities") // 72
1085 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHX = 1000071000,
1086 VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHX = 1000071001,
1087 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHX = 1000071002,
1088 VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHX = 1000071003,
1089 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHX = 1000071004,
Jesse Hallad250842017-03-10 18:35:38 -08001090
1091 //@extension("VK_KHX_external_memory") // 73
1092 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHX = 1000072000,
1093 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHX = 1000072001,
1094 VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHX = 1000072002,
1095
1096 //@extension("VK_KHX_external_memory_win32") // 74
1097 VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHX = 1000073000,
1098 VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHX = 1000073001,
1099 VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHX = 1000073002,
1100
1101 //@extension("VK_KHX_external_memory_fd") // 75
1102 VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHX = 1000074000,
1103 VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHX = 1000074001,
1104
1105 //@extension("VK_KHX_win32_keyed_mutex") // 76
1106 VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHX = 1000075000,
1107
1108 //@extension("VK_KHX_external_semaphore_capabilities") // 77
1109 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHX = 1000076000,
1110 VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHX = 1000076001,
1111
1112 //@extension("VK_KHX_external_semaphore") // 78
1113 VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHX = 1000077000,
1114
1115 //@extension("VK_KHX_external_semaphore_win32") // 79
1116 VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX = 1000078000,
1117 VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX = 1000078001,
1118 VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHX = 1000078002,
1119
1120 //@extension("VK_KHX_external_semaphore_fd") // 80
1121 VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHX = 1000079000,
1122
1123 //@extension("VK_KHR_push_descriptor") // 81
1124 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000,
1125
1126 //@extension("VK_KHR_incremental_present") // 85
Jesse Hall889cd9a2017-02-25 22:12:23 -08001127 VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
Chris Forbes289cb792016-12-30 15:03:55 +13001128
Jesse Hallad250842017-03-10 18:35:38 -08001129 //@extension("VK_KHR_descriptor_update_template") // 86
1130 VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000,
1131
1132 //@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08001133 VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
1134 VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
1135 VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = 1000086002,
1136 VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = 1000086003,
1137 VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004,
1138 VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001139
Jesse Hallad250842017-03-10 18:35:38 -08001140 //@extension("VK_NV_clip_space_w_scaling") // 88
1141 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000,
1142
1143 //@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08001144 VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000,
1145
Jesse Hallad250842017-03-10 18:35:38 -08001146 //@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001147 VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000,
1148 VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001,
1149 VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002,
1150 VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,
Jesse Hallad250842017-03-10 18:35:38 -08001151
1152 //@extension("VK_GOOGLE_display_timing") // 93
1153 VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000,
1154
1155 //@extension("VK_NVX_multiview_per_view_attributes") // 98
1156 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000,
1157
1158 //@extension("VK_NV_viewport_swizzle") // 99
1159 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000,
1160
1161 //@extension("VK_EXT_discard_rectangles") // 100
1162 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,
1163 VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,
1164
Jesse Hallfdc8ab32017-03-10 21:01:57 -08001165 //@extension("VK_EXT_hdr_metadata") // 106
1166 VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
1167
Jesse Hall05556b12017-05-18 17:40:25 -07001168 //@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbese2d3ee12017-03-16 16:10:15 +13001169 VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
1170
Jesse Hall05556b12017-05-18 17:40:25 -07001171 //@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13001172 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,
1173 VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001,
1174 VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002,
1175
Jesse Hallad250842017-03-10 18:35:38 -08001176 //@extension("VK_MVK_ios_surface") // 123
1177 VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000,
1178
1179 //@extension("VK_MVK_macos_surface") // 124
1180 VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001181
1182 //@extension("VK_EXT_sampler_filter_minmax") // 131
1183 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000,
1184 VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001,
1185
1186 //@extension("VK_EXT_blend_operation_advanced") // 149
1187 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000,
1188 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001,
1189 VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
1190
1191 //@extension("VK_NV_fragment_coverage_to_color") // 150
1192 VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000,
1193
1194 //@structure("VK_NV_framebuffer_mixed_samples") // 153
1195 VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001196}
1197
Jesse Hall65ab5522015-11-30 00:07:16 -08001198enum VkSubpassContents {
1199 VK_SUBPASS_CONTENTS_INLINE = 0x00000000,
1200 VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001201}
1202
Jesse Hall543a7ff2016-01-08 16:38:30 -08001203enum VkPipelineCacheHeaderVersion {
1204 VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
1205}
1206
Jesse Hallbd888842015-11-30 21:44:14 -08001207@lastUnused(-11)
Jesse Halld27f6aa2015-08-15 17:58:48 -07001208/// Error and return codes
1209enum VkResult {
1210 // Return codes for successful operation execution (positive values)
Jesse Hallbd888842015-11-30 21:44:14 -08001211 VK_SUCCESS = 0,
1212 VK_NOT_READY = 1,
1213 VK_TIMEOUT = 2,
1214 VK_EVENT_SET = 3,
1215 VK_EVENT_RESET = 4,
1216 VK_INCOMPLETE = 5,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001217
Jesse Hallad250842017-03-10 18:35:38 -08001218 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -08001219 VK_SUBOPTIMAL_KHR = 1000001003,
Jesse Hall1356b0d2015-11-23 17:24:58 -08001220
Jesse Halld27f6aa2015-08-15 17:58:48 -07001221 // Error codes (negative values)
Jesse Hallbd888842015-11-30 21:44:14 -08001222 VK_ERROR_OUT_OF_HOST_MEMORY = 0xFFFFFFFF, // -1
1223 VK_ERROR_OUT_OF_DEVICE_MEMORY = 0xFFFFFFFE, // -2
1224 VK_ERROR_INITIALIZATION_FAILED = 0xFFFFFFFD, // -3
1225 VK_ERROR_DEVICE_LOST = 0xFFFFFFFC, // -4
1226 VK_ERROR_MEMORY_MAP_FAILED = 0xFFFFFFFB, // -5
1227 VK_ERROR_LAYER_NOT_PRESENT = 0xFFFFFFFA, // -6
1228 VK_ERROR_EXTENSION_NOT_PRESENT = 0xFFFFFFF9, // -7
1229 VK_ERROR_FEATURE_NOT_PRESENT = 0xFFFFFFF8, // -8
1230 VK_ERROR_INCOMPATIBLE_DRIVER = 0xFFFFFFF7, // -9
1231 VK_ERROR_TOO_MANY_OBJECTS = 0xFFFFFFF6, // -10
1232 VK_ERROR_FORMAT_NOT_SUPPORTED = 0xFFFFFFF5, // -11
Jesse Hall56d386a2016-07-26 15:20:40 -07001233 VK_ERROR_FRAGMENTED_POOL = 0xFFFFFFF4, // -12
Jesse Hall1356b0d2015-11-23 17:24:58 -08001234
Jesse Hallad250842017-03-10 18:35:38 -08001235 //@extension("VK_KHR_surface") // 1
Jesse Hallbd888842015-11-30 21:44:14 -08001236 VK_ERROR_SURFACE_LOST_KHR = 0xC4653600, // -1000000000
Jesse Hallad250842017-03-10 18:35:38 -08001237 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = 0xC46535FF, // -1000000001
Jesse Halla6429252015-11-29 18:59:42 -08001238
Jesse Hallad250842017-03-10 18:35:38 -08001239 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -08001240 VK_ERROR_OUT_OF_DATE_KHR = 0xC4653214, // -1000001004
Jesse Hall1356b0d2015-11-23 17:24:58 -08001241
Jesse Hallad250842017-03-10 18:35:38 -08001242 //@extension("VK_KHR_display_swapchain") // 4
Jesse Hallbd888842015-11-30 21:44:14 -08001243 VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = 0xC4652A47, // -1000003001
Jesse Hall1356b0d2015-11-23 17:24:58 -08001244
Jesse Hallad250842017-03-10 18:35:38 -08001245 //@extension("VK_EXT_debug_report") // 12
Jesse Hall543a7ff2016-01-08 16:38:30 -08001246 VK_ERROR_VALIDATION_FAILED_EXT = 0xC4650B07, // -1000011001
Jesse Hall26763382016-05-20 07:13:52 -07001247
Jesse Hallad250842017-03-10 18:35:38 -08001248 //@extension("VK_NV_glsl_shader") // 13
Jesse Hall26763382016-05-20 07:13:52 -07001249 VK_ERROR_INVALID_SHADER_NV = 0xC4650720, // -1000012000
Jesse Hall77ad05b2017-03-10 22:02:20 -08001250
Jesse Hallad250842017-03-10 18:35:38 -08001251 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08001252 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = 0xC4642878, // -1000069000
Jesse Hallad250842017-03-10 18:35:38 -08001253
1254 //@extension("VK_KHX_external_memory") // 73
1255 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHX = 0xC4641CBD, // -1000072003
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001256}
1257
1258enum VkDynamicState {
1259 VK_DYNAMIC_STATE_VIEWPORT = 0x00000000,
1260 VK_DYNAMIC_STATE_SCISSOR = 0x00000001,
1261 VK_DYNAMIC_STATE_LINE_WIDTH = 0x00000002,
1262 VK_DYNAMIC_STATE_DEPTH_BIAS = 0x00000003,
1263 VK_DYNAMIC_STATE_BLEND_CONSTANTS = 0x00000004,
1264 VK_DYNAMIC_STATE_DEPTH_BOUNDS = 0x00000005,
1265 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 0x00000006,
1266 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 0x00000007,
1267 VK_DYNAMIC_STATE_STENCIL_REFERENCE = 0x00000008,
Jesse Hallad250842017-03-10 18:35:38 -08001268
1269 //@extension("VK_NV_clip_space_w_scaling") // 88
1270 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000,
1271
1272 //@extension("VK_EXT_discard_rectangles") // 100
1273 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001274}
1275
Jesse Hall05556b12017-05-18 17:40:25 -07001276enum VkObjectType {
1277 VK_OBJECT_TYPE_UNKNOWN = 0,
1278 VK_OBJECT_TYPE_INSTANCE = 1,
1279 VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,
1280 VK_OBJECT_TYPE_DEVICE = 3,
1281 VK_OBJECT_TYPE_QUEUE = 4,
1282 VK_OBJECT_TYPE_SEMAPHORE = 5,
1283 VK_OBJECT_TYPE_COMMAND_BUFFER = 6,
1284 VK_OBJECT_TYPE_FENCE = 7,
1285 VK_OBJECT_TYPE_DEVICE_MEMORY = 8,
1286 VK_OBJECT_TYPE_BUFFER = 9,
1287 VK_OBJECT_TYPE_IMAGE = 10,
1288 VK_OBJECT_TYPE_EVENT = 11,
1289 VK_OBJECT_TYPE_QUERY_POOL = 12,
1290 VK_OBJECT_TYPE_BUFFER_VIEW = 13,
1291 VK_OBJECT_TYPE_IMAGE_VIEW = 14,
1292 VK_OBJECT_TYPE_SHADER_MODULE = 15,
1293 VK_OBJECT_TYPE_PIPELINE_CACHE = 16,
1294 VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,
1295 VK_OBJECT_TYPE_RENDER_PASS = 18,
1296 VK_OBJECT_TYPE_PIPELINE = 19,
1297 VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,
1298 VK_OBJECT_TYPE_SAMPLER = 21,
1299 VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,
1300 VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,
1301 VK_OBJECT_TYPE_FRAMEBUFFER = 24,
1302 VK_OBJECT_TYPE_COMMAND_POOL = 25,
1303
1304 //@extension("VK_KHR_surface") // 1
1305 VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,
1306
1307 //@extension("VK_KHR_swapchain") // 2
1308 VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,
1309
1310 //@extension("VK_KHR_display") // 3
1311 VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000,
1312 VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001,
1313
1314 //@extension("VK_KHR_debug_report") // 12
1315 VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000,
1316
1317 //@extension("VK_KHR_descriptor_update_template") // 86
1318 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000,
1319
1320 //@extension("VK_NVX_device_generated_commands") // 87
1321 VK_OBJECT_TYPE_OBJECT_TABLE_NVX = 1000086000,
1322 VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = 1000086001,
1323}
1324
Jesse Hallad250842017-03-10 18:35:38 -08001325@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08001326enum VkPresentModeKHR {
1327 VK_PRESENT_MODE_IMMEDIATE_KHR = 0x00000000,
1328 VK_PRESENT_MODE_MAILBOX_KHR = 0x00000001,
1329 VK_PRESENT_MODE_FIFO_KHR = 0x00000002,
Jesse Hall03b6fe12015-11-24 12:44:21 -08001330 VK_PRESENT_MODE_FIFO_RELAXED_KHR = 0x00000003,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001331
Jesse Hall05556b12017-05-18 17:40:25 -07001332 //@extension("VK_KHR_shared_presentable_image") // 112
Jesse Hall77ad05b2017-03-10 22:02:20 -08001333 VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,
1334 VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,
Michael Lentine88594d72015-11-12 12:49:45 -08001335}
1336
Jesse Hallad250842017-03-10 18:35:38 -08001337@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08001338enum VkColorSpaceKHR {
1339 VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0x00000000,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001340
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001341 //@extension("VK_EXT_swapchain_colorspace") // 105
1342 VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
1343 VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
1344 VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003,
1345 VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
1346 VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
1347 VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
1348 VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
1349 VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
1350 VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
1351 VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
Courtney Goeltzenleuchter7f558ed2017-01-23 17:15:24 -07001352 VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
1353 VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001354 VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
Michael Lentine88594d72015-11-12 12:49:45 -08001355}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001356
Jesse Hallad250842017-03-10 18:35:38 -08001357@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08001358enum VkDebugReportObjectTypeEXT {
1359 VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
1360 VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
1361 VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
1362 VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,
1363 VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,
1364 VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,
1365 VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,
1366 VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,
1367 VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,
1368 VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,
1369 VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,
1370 VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,
1371 VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,
1372 VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,
1373 VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,
1374 VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,
1375 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,
1376 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,
1377 VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,
1378 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,
1379 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,
1380 VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,
1381 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,
1382 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,
1383 VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,
1384 VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,
1385 VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
1386 VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001387 VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28,
Chris Forbes289cb792016-12-30 15:03:55 +13001388 VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29,
1389 VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,
1390 VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31,
1391 VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32,
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001392
1393 //extension("VK_KHR_descriptor_update_template") // 86
1394 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000,
Jesse Hall715b86a2016-01-16 16:34:29 -08001395}
1396
Jesse Hallad250842017-03-10 18:35:38 -08001397@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07001398enum VkRasterizationOrderAMD {
1399 VK_RASTERIZATION_ORDER_STRICT_AMD = 0,
1400 VK_RASTERIZATION_ORDER_RELAXED_AMD = 1,
1401}
1402
Jesse Hallad250842017-03-10 18:35:38 -08001403@extension("VK_EXT_validation_flags") // 62
Chris Forbes289cb792016-12-30 15:03:55 +13001404enum VkValidationCheckEXT {
1405 VK_VALIDATION_CHECK_ALL_EXT = 0,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001406 VK_VALIDATION_CHECK_SHADERS_EXT = 1,
Chris Forbes289cb792016-12-30 15:03:55 +13001407}
1408
Jesse Hallad250842017-03-10 18:35:38 -08001409@extension("VK_KHR_descriptor_update_template") // 86
1410enum VkDescriptorUpdateTemplateTypeKHR {
1411 VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0,
1412 VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1,
1413}
1414
1415@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001416enum VkIndirectCommandsTokenTypeNVX {
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001417 VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX = 0,
1418 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX = 1,
1419 VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX = 2,
1420 VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX = 3,
1421 VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX = 4,
1422 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX = 5,
1423 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX = 6,
1424 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX = 7,
Chris Forbes289cb792016-12-30 15:03:55 +13001425}
1426
Jesse Hallad250842017-03-10 18:35:38 -08001427@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001428enum VkObjectEntryTypeNVX {
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001429 VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX = 0,
1430 VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX = 1,
1431 VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX = 2,
1432 VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX = 3,
1433 VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX = 4,
Chris Forbes289cb792016-12-30 15:03:55 +13001434}
Jesse Hall715b86a2016-01-16 16:34:29 -08001435
Jesse Hallad250842017-03-10 18:35:38 -08001436@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001437enum VkDisplayPowerStateEXT {
1438 VK_DISPLAY_POWER_STATE_OFF_EXT = 0,
1439 VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,
1440 VK_DISPLAY_POWER_STATE_ON_EXT = 2,
1441}
1442
Jesse Hallad250842017-03-10 18:35:38 -08001443@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001444enum VkDeviceEventTypeEXT {
1445 VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0,
1446}
1447
Jesse Hallad250842017-03-10 18:35:38 -08001448@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001449enum VkDisplayEventTypeEXT {
1450 VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,
1451}
1452
Jesse Hallad250842017-03-10 18:35:38 -08001453@extension("VK_NV_viewport_swizzle") // 99
1454enum VkViewportCoordinateSwizzleNV {
1455 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0,
1456 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1,
1457 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2,
1458 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3,
1459 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4,
1460 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5,
1461 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6,
1462 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7,
1463}
1464
1465@extension("VK_EXT_discard_rectangles") // 100
1466enum VkDiscardRectangleModeEXT {
1467 VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,
1468 VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,
1469}
1470
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001471@extension("VK_EXT_sampler_filter_minmax") // 131
1472enum VkSamplerReductionModeEXT {
1473 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0,
1474 VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1,
1475 VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2,
1476}
1477
1478@extension("VK_EXT_blend_operation_advanced") // 149
1479enum VkBlendOverlapEXT {
1480 VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0,
1481 VK_BLEND_OVERLAP_DISJOINT_EXT = 1,
1482 VK_BLEND_OVERLAP_CONJOINT_EXT = 2,
1483}
1484
1485@extension("VK_NV_framebuffer_mixed_samples") // 153
1486enum VkCoverageModulationModeNV {
1487 VK_COVERAGE_MODULATION_MODE_NONE_NV = 0,
1488 VK_COVERAGE_MODULATION_MODE_RGB_NV = 1,
1489 VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2,
1490 VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3,
1491}
1492
Jesse Halld27f6aa2015-08-15 17:58:48 -07001493/////////////////
1494// Bitfields //
1495/////////////////
1496
Jesse Halld27f6aa2015-08-15 17:58:48 -07001497/// Queue capabilities
Jesse Halld8bade02015-11-24 10:24:18 -08001498type VkFlags VkQueueFlags
1499bitfield VkQueueFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001500 VK_QUEUE_GRAPHICS_BIT = 0x00000001, /// Queue supports graphics operations
1501 VK_QUEUE_COMPUTE_BIT = 0x00000002, /// Queue supports compute operations
Jesse Hall65ab5522015-11-30 00:07:16 -08001502 VK_QUEUE_TRANSFER_BIT = 0x00000004, /// Queue supports transfer operations
Jesse Hallb00daad2015-11-29 19:46:20 -08001503 VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008, /// Queue supports sparse resource memory management operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001504}
1505
1506/// Memory properties passed into vkAllocMemory().
Jesse Halld8bade02015-11-24 10:24:18 -08001507type VkFlags VkMemoryPropertyFlags
1508bitfield VkMemoryPropertyFlagBits {
Jesse Halld1af8122015-11-29 23:50:38 -08001509 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
1510 VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
1511 VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
1512 VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
1513 VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001514}
1515
1516/// Memory heap flags
Jesse Halld8bade02015-11-24 10:24:18 -08001517type VkFlags VkMemoryHeapFlags
1518bitfield VkMemoryHeapFlagBits {
Jesse Halld1af8122015-11-29 23:50:38 -08001519 VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
Jesse Hallad250842017-03-10 18:35:38 -08001520
1521 //@extension("VK_KHX_device_group_creation") // 71
1522 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001523}
1524
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001525/// Access flags
1526type VkFlags VkAccessFlags
1527bitfield VkAccessFlagBits {
1528 VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
1529 VK_ACCESS_INDEX_READ_BIT = 0x00000002,
1530 VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
1531 VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
1532 VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
1533 VK_ACCESS_SHADER_READ_BIT = 0x00000020,
1534 VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
1535 VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
1536 VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
1537 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
1538 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
1539 VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
1540 VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
1541 VK_ACCESS_HOST_READ_BIT = 0x00002000,
1542 VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
1543 VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
1544 VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
Chris Forbes289cb792016-12-30 15:03:55 +13001545
Jesse Hallad250842017-03-10 18:35:38 -08001546 //@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001547 VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000,
Chris Forbes289cb792016-12-30 15:03:55 +13001548 VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001549
1550 //@extension("VK_EXT_blend_operation_advanced") // 149
1551 VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001552}
1553
1554/// Buffer usage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001555type VkFlags VkBufferUsageFlags
1556bitfield VkBufferUsageFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -08001557 VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations
1558 VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001559 VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004, /// Can be used as TBO
1560 VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008, /// Can be used as IBO
1561 VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010, /// Can be used as UBO
1562 VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020, /// Can be used as SSBO
1563 VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, /// Can be used as source of fixed function index fetch (index buffer)
1564 VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, /// Can be used as source of fixed function vertex fetch (VBO)
1565 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, /// Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer)
1566}
1567
1568/// Buffer creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001569type VkFlags VkBufferCreateFlags
1570bitfield VkBufferCreateFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001571 VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Buffer should support sparse backing
Jesse Halld27f6aa2015-08-15 17:58:48 -07001572 VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Buffer should support sparse backing with partial residency
1573 VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004, /// Buffer should support constent data access to physical memory blocks mapped into multiple locations of sparse buffers
1574}
1575
1576/// Shader stage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001577type VkFlags VkShaderStageFlags
1578bitfield VkShaderStageFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001579 VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
Jesse Hallae38f732015-11-19 21:32:50 -08001580 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
1581 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001582 VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
1583 VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
1584 VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
Jesse Hallc7467b72015-11-29 21:05:26 -08001585 VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001586
1587 VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
1588}
1589
Jesse Hallfbf97b02015-11-20 14:17:03 -08001590/// Descriptor pool create flags
Jesse Halld8bade02015-11-24 10:24:18 -08001591type VkFlags VkDescriptorPoolCreateFlags
1592bitfield VkDescriptorPoolCreateFlagBits {
Jesse Hallfbf97b02015-11-20 14:17:03 -08001593 VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
1594}
1595
1596/// Descriptor pool reset flags
Jesse Halld8bade02015-11-24 10:24:18 -08001597type VkFlags VkDescriptorPoolResetFlags
Jesse Halla6429252015-11-29 18:59:42 -08001598//bitfield VkDescriptorPoolResetFlagBits {
1599//}
Jesse Hallfbf97b02015-11-20 14:17:03 -08001600
Jesse Halld27f6aa2015-08-15 17:58:48 -07001601/// Image usage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001602type VkFlags VkImageUsageFlags
1603bitfield VkImageUsageFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -08001604 VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations
1605 VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001606 VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004, /// Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
1607 VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008, /// Can be used as storage image (STORAGE_IMAGE descriptor type)
1608 VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010, /// Can be used as framebuffer color attachment
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001609 VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020, /// Can be used as framebuffer depth/stencil attachment
Jesse Halld27f6aa2015-08-15 17:58:48 -07001610 VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040, /// Image data not needed outside of rendering
1611 VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080, /// Can be used as framebuffer input attachment
1612}
1613
1614/// Image creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001615type VkFlags VkImageCreateFlags
1616bitfield VkImageCreateFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001617 VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Image should support sparse backing
Jesse Halld27f6aa2015-08-15 17:58:48 -07001618 VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Image should support sparse backing with partial residency
1619 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 -07001620 VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008, /// Allows image views to have different format than the base image
1621 VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010, /// Allows creating image views with cube type from the created image
Jesse Hall77ad05b2017-03-10 22:02:20 -08001622
Jesse Hallad250842017-03-10 18:35:38 -08001623 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08001624 VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 0x00000020,
Jesse Hallad250842017-03-10 18:35:38 -08001625
1626 //@extension("VK_KHX_device_group") // 61
1627 VK_IMAGE_CREATE_BIND_SFR_BIT_KHX = 0x00000040,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001628}
1629
Jesse Hallb00daad2015-11-29 19:46:20 -08001630/// Image view creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001631type VkFlags VkImageViewCreateFlags
Jesse Hallb00daad2015-11-29 19:46:20 -08001632//bitfield VkImageViewCreateFlagBits {
1633//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001634
1635/// Pipeline creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001636type VkFlags VkPipelineCreateFlags
1637bitfield VkPipelineCreateFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001638 VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
1639 VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
1640 VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
Jesse Hallad250842017-03-10 18:35:38 -08001641
1642 //@extension("VK_KHX_device_group") // 61
1643 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX = 0x00000008,
1644 VK_PIPELINE_CREATE_DISPATCH_BASE_KHX = 0x00000010,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001645}
1646
Jesse Hall65ab5522015-11-30 00:07:16 -08001647/// Color component flags
1648type VkFlags VkColorComponentFlags
1649bitfield VkColorComponentFlagBits {
1650 VK_COLOR_COMPONENT_R_BIT = 0x00000001,
1651 VK_COLOR_COMPONENT_G_BIT = 0x00000002,
1652 VK_COLOR_COMPONENT_B_BIT = 0x00000004,
1653 VK_COLOR_COMPONENT_A_BIT = 0x00000008,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001654}
1655
1656/// Fence creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001657type VkFlags VkFenceCreateFlags
1658bitfield VkFenceCreateFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001659 VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
1660}
1661
1662/// Semaphore creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001663type VkFlags VkSemaphoreCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001664//bitfield VkSemaphoreCreateFlagBits {
1665//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001666
1667/// Format capability flags
Jesse Halld8bade02015-11-24 10:24:18 -08001668type VkFlags VkFormatFeatureFlags
1669bitfield VkFormatFeatureFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001670 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001, /// Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
1671 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002, /// Format can be used for storage images (STORAGE_IMAGE descriptor type)
1672 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004, /// Format supports atomic operations in case it's used for storage images
1673 VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008, /// Format can be used for uniform texel buffers (TBOs)
1674 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010, /// Format can be used for storage texel buffers (IBOs)
1675 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020, /// Format supports atomic operations in case it's used for storage texel buffers
1676 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040, /// Format can be used for vertex buffers (VBOs)
1677 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080, /// Format can be used for color attachment images
1678 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100, /// Format supports blending in case it's used for color attachment images
1679 VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200, /// Format can be used for depth/stencil attachment images
Jesse Hall3fbc8562015-11-29 22:10:52 -08001680 VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400, /// Format can be used as the source image of blits with vkCommandBlitImage
1681 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 -08001682 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
Jesse Hall26763382016-05-20 07:13:52 -07001683
Jesse Hallad250842017-03-10 18:35:38 -08001684 //@extension("VK_IMG_filter_cubic") // 16
Jesse Hall26763382016-05-20 07:13:52 -07001685 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001686
Jesse Hallad250842017-03-10 18:35:38 -08001687 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08001688 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 0x00004000,
1689 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 0x00008000,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001690
1691 //@extension("VK_EXT_sampler_filter_minmax") // 131
1692 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 0x00010000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001693}
1694
1695/// Query control flags
Jesse Halld8bade02015-11-24 10:24:18 -08001696type VkFlags VkQueryControlFlags
1697bitfield VkQueryControlFlagBits {
Jesse Hall65ab5522015-11-30 00:07:16 -08001698 VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001699}
1700
1701/// Query result flags
Jesse Halld8bade02015-11-24 10:24:18 -08001702type VkFlags VkQueryResultFlags
1703bitfield VkQueryResultFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001704 VK_QUERY_RESULT_64_BIT = 0x00000001, /// Results of the queries are written to the destination buffer as 64-bit values
1705 VK_QUERY_RESULT_WAIT_BIT = 0x00000002, /// Results of the queries are waited on before proceeding with the result copy
1706 VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, /// Besides the results of the query, the availability of the results is also written
1707 VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008, /// Copy the partial results of the query even if the final results aren't available
1708}
1709
1710/// Shader module creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001711type VkFlags VkShaderModuleCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001712//bitfield VkShaderModuleCreateFlagBits {
1713//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001714
Jesse Halld27f6aa2015-08-15 17:58:48 -07001715/// Event creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001716type VkFlags VkEventCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001717//bitfield VkEventCreateFlagBits {
1718//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001719
Jesse Halla15a4bf2015-11-19 22:48:02 -08001720/// Command buffer usage flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08001721type VkFlags VkCommandBufferUsageFlags
1722bitfield VkCommandBufferUsageFlagBits {
1723 VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
1724 VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
1725 VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001726}
1727
1728/// Pipeline statistics flags
Jesse Halld8bade02015-11-24 10:24:18 -08001729type VkFlags VkQueryPipelineStatisticFlags
1730bitfield VkQueryPipelineStatisticFlagBits {
Jesse Hallae38f732015-11-19 21:32:50 -08001731 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001, /// Optional
1732 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002, /// Optional
1733 VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004, /// Optional
1734 VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008, /// Optional
1735 VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010, /// Optional
1736 VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020, /// Optional
1737 VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040, /// Optional
1738 VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080, /// Optional
1739 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100, /// Optional
1740 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200, /// Optional
1741 VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400, /// Optional
Jesse Halld27f6aa2015-08-15 17:58:48 -07001742}
1743
1744/// Memory mapping flags
Jesse Halld8bade02015-11-24 10:24:18 -08001745type VkFlags VkMemoryMapFlags
Jesse Halla6429252015-11-29 18:59:42 -08001746//bitfield VkMemoryMapFlagBits {
1747//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001748
1749/// Bitfield of image aspects
Jesse Halld8bade02015-11-24 10:24:18 -08001750type VkFlags VkImageAspectFlags
1751bitfield VkImageAspectFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001752 VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
1753 VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
1754 VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
1755 VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
1756}
1757
1758/// Sparse memory bind flags
Jesse Halld8bade02015-11-24 10:24:18 -08001759type VkFlags VkSparseMemoryBindFlags
Jesse Hall091ed9e2015-11-30 00:55:29 -08001760bitfield VkSparseMemoryBindFlagBits {
1761 VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
1762}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001763
1764/// Sparse image memory requirements flags
Jesse Halld8bade02015-11-24 10:24:18 -08001765type VkFlags VkSparseImageFormatFlags
1766bitfield VkSparseImageFormatFlagBits {
Jesse Hallb00daad2015-11-29 19:46:20 -08001767 VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001, /// Image uses a single miptail region for all array slices
1768 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.
1769 VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004, /// Image uses a non-standard sparse block size
Jesse Halld27f6aa2015-08-15 17:58:48 -07001770}
1771
1772/// Pipeline stages
Jesse Halld8bade02015-11-24 10:24:18 -08001773type VkFlags VkPipelineStageFlags
1774bitfield VkPipelineStageFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001775 VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001, /// Before subsequent commands are processed
1776 VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002, /// Draw/DispatchIndirect command fetch
1777 VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004, /// Vertex/index fetch
1778 VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008, /// Vertex shading
Jesse Hallae38f732015-11-19 21:32:50 -08001779 VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010, /// Tessellation control shading
1780 VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020, /// Tessellation evaluation shading
Jesse Halld27f6aa2015-08-15 17:58:48 -07001781 VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040, /// Geometry shading
1782 VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080, /// Fragment shading
1783 VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100, /// Early fragment (depth/stencil) tests
1784 VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200, /// Late fragment (depth/stencil) tests
1785 VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400, /// Color attachment writes
1786 VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800, /// Compute shading
1787 VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000, /// Transfer/copy operations
Jesse Hall543a7ff2016-01-08 16:38:30 -08001788 VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
1789 VK_PIPELINE_STAGE_HOST_BIT = 0x00004000, /// Indicates host (CPU) is a source/sink of the dependency
Jesse Halld27f6aa2015-08-15 17:58:48 -07001790
Jesse Hall543a7ff2016-01-08 16:38:30 -08001791 VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000, /// All stages of the graphics pipeline
1792 VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000, /// All graphics, compute, copy, and transition commands
Chris Forbes289cb792016-12-30 15:03:55 +13001793
Jesse Hallad250842017-03-10 18:35:38 -08001794 //@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001795 VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001796}
1797
1798/// Render pass attachment description flags
Jesse Halld8bade02015-11-24 10:24:18 -08001799type VkFlags VkAttachmentDescriptionFlags
1800bitfield VkAttachmentDescriptionFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001801 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 -07001802}
1803
1804/// Subpass description flags
Jesse Halld8bade02015-11-24 10:24:18 -08001805type VkFlags VkSubpassDescriptionFlags
1806bitfield VkSubpassDescriptionFlagBits {
Jesse Hallad250842017-03-10 18:35:38 -08001807 //@extension("VK_NVX_multiview_per_view_attributes") // 98
1808 VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001,
1809 VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001810}
1811
1812/// Command pool creation flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08001813type VkFlags VkCommandPoolCreateFlags
1814bitfield VkCommandPoolCreateFlagBits {
1815 VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001, /// Command buffers have a short lifetime
1816 VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002, /// Command buffers may release their memory individually
Jesse Halld27f6aa2015-08-15 17:58:48 -07001817}
1818
1819/// Command pool reset flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08001820type VkFlags VkCommandPoolResetFlags
1821bitfield VkCommandPoolResetFlagBits {
1822 VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the pool
Jesse Halld27f6aa2015-08-15 17:58:48 -07001823}
1824
Jesse Hall3fbc8562015-11-29 22:10:52 -08001825type VkFlags VkCommandBufferResetFlags
1826bitfield VkCommandBufferResetFlagBits {
1827 VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the buffer
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001828}
1829
Jesse Halld8bade02015-11-24 10:24:18 -08001830type VkFlags VkSampleCountFlags
1831bitfield VkSampleCountFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001832 VK_SAMPLE_COUNT_1_BIT = 0x00000001,
1833 VK_SAMPLE_COUNT_2_BIT = 0x00000002,
1834 VK_SAMPLE_COUNT_4_BIT = 0x00000004,
1835 VK_SAMPLE_COUNT_8_BIT = 0x00000008,
1836 VK_SAMPLE_COUNT_16_BIT = 0x00000010,
1837 VK_SAMPLE_COUNT_32_BIT = 0x00000020,
1838 VK_SAMPLE_COUNT_64_BIT = 0x00000040,
1839}
1840
Jesse Halld8bade02015-11-24 10:24:18 -08001841type VkFlags VkStencilFaceFlags
1842bitfield VkStencilFaceFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001843 VK_STENCIL_FACE_FRONT_BIT = 0x00000001, /// Front face
1844 VK_STENCIL_FACE_BACK_BIT = 0x00000002, /// Back face
Jesse Hallc7467b72015-11-29 21:05:26 -08001845 VK_STENCIL_FRONT_AND_BACK = 0x00000003,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001846}
1847
Jesse Halla6429252015-11-29 18:59:42 -08001848/// Instance creation flags
1849type VkFlags VkInstanceCreateFlags
1850//bitfield VkInstanceCreateFlagBits {
1851//}
1852
1853/// Device creation flags
1854type VkFlags VkDeviceCreateFlags
1855//bitfield VkDeviceCreateFlagBits {
1856//}
1857
1858/// Device queue creation flags
1859type VkFlags VkDeviceQueueCreateFlags
1860//bitfield VkDeviceQueueCreateFlagBits {
1861//}
1862
1863/// Query pool creation flags
1864type VkFlags VkQueryPoolCreateFlags
1865//bitfield VkQueryPoolCreateFlagBits {
1866//}
1867
1868/// Buffer view creation flags
1869type VkFlags VkBufferViewCreateFlags
1870//bitfield VkBufferViewCreateFlagBits {
1871//}
1872
1873/// Pipeline cache creation flags
1874type VkFlags VkPipelineCacheCreateFlags
1875//bitfield VkPipelineCacheCreateFlagBits {
1876//}
1877
1878/// Pipeline shader stage creation flags
1879type VkFlags VkPipelineShaderStageCreateFlags
1880//bitfield VkPipelineShaderStageCreateFlagBits {
1881//}
1882
1883/// Descriptor set layout creation flags
1884type VkFlags VkDescriptorSetLayoutCreateFlags
Jesse Hallad250842017-03-10 18:35:38 -08001885bitfield VkDescriptorSetLayoutCreateFlagBits {
1886 //@extension("VK_KHR_push_descriptor") // 81
1887 VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
1888}
Jesse Halla6429252015-11-29 18:59:42 -08001889
1890/// Pipeline vertex input state creation flags
1891type VkFlags VkPipelineVertexInputStateCreateFlags
1892//bitfield VkPipelineVertexInputStateCreateFlagBits {
1893//}
1894
1895/// Pipeline input assembly state creation flags
1896type VkFlags VkPipelineInputAssemblyStateCreateFlags
1897//bitfield VkPipelineInputAssemblyStateCreateFlagBits {
1898//}
1899
1900/// Tessellation state creation flags
1901type VkFlags VkPipelineTessellationStateCreateFlags
1902//bitfield VkPipelineTessellationStateCreateFlagBits {
1903//}
1904
1905/// Viewport state creation flags
1906type VkFlags VkPipelineViewportStateCreateFlags
1907//bitfield VkPipelineViewportStateCreateFlagBits {
1908//}
1909
Jesse Hall3fbc8562015-11-29 22:10:52 -08001910/// Rasterization state creation flags
1911type VkFlags VkPipelineRasterizationStateCreateFlags
1912//bitfield VkPipelineRasterizationStateCreateFlagBits {
Jesse Halla6429252015-11-29 18:59:42 -08001913//}
1914
1915/// Multisample state creation flags
1916type VkFlags VkPipelineMultisampleStateCreateFlags
1917//bitfield VkPipelineMultisampleStateCreateFlagBits {
1918//}
1919
1920/// Color blend state creation flags
1921type VkFlags VkPipelineColorBlendStateCreateFlags
1922//bitfield VkPipelineColorBlendStateCreateFlagBits {
1923//}
1924
1925/// Depth/stencil state creation flags
1926type VkFlags VkPipelineDepthStencilStateCreateFlags
1927//bitfield VkPipelineDepthStencilStateCreateFlagBits {
1928//}
1929
1930/// Dynamic state creation flags
1931type VkFlags VkPipelineDynamicStateCreateFlags
1932//bitfield VkPipelineDynamicStateCreateFlagBits {
1933//}
1934
1935/// Pipeline layout creation flags
1936type VkFlags VkPipelineLayoutCreateFlags
1937//bitfield VkPipelineLayoutCreateFlagBits {
1938//}
1939
1940/// Sampler creation flags
1941type VkFlags VkSamplerCreateFlags
1942//bitfield VkSamplerCreateFlagBits {
1943//}
1944
1945/// Render pass creation flags
1946type VkFlags VkRenderPassCreateFlags
1947//bitfield VkRenderPassCreateFlagBits {
1948//}
1949
1950/// Framebuffer creation flags
1951type VkFlags VkFramebufferCreateFlags
1952//bitfield VkFramebufferCreateFlagBits {
1953//}
1954
Jesse Halldc6d36c2015-11-29 19:12:15 -08001955/// Dependency flags
1956type VkFlags VkDependencyFlags
1957bitfield VkDependencyFlagBits {
1958 VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
Jesse Hallad250842017-03-10 18:35:38 -08001959
1960 //@extension("VK_KHX_multiview") // 54
1961 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX = 0x00000002,
1962
1963 //@extension("VK_KHX_device_group") // 61
1964 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX = 0x00000004,
Jesse Halldc6d36c2015-11-29 19:12:15 -08001965}
1966
Jesse Hallc7467b72015-11-29 21:05:26 -08001967/// Cull mode flags
1968type VkFlags VkCullModeFlags
1969bitfield VkCullModeFlagBits {
1970 VK_CULL_MODE_NONE = 0x00000000,
1971 VK_CULL_MODE_FRONT_BIT = 0x00000001,
1972 VK_CULL_MODE_BACK_BIT = 0x00000002,
1973 VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
1974}
1975
Jesse Hallad250842017-03-10 18:35:38 -08001976@extension("VK_KHR_surface") // 1
Jesse Halld8bade02015-11-24 10:24:18 -08001977type VkFlags VkSurfaceTransformFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08001978@extension("VK_KHR_surface") // 1
Jesse Halld8bade02015-11-24 10:24:18 -08001979bitfield VkSurfaceTransformFlagBitsKHR {
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001980 VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
Jesse Hall9ba8bc82015-11-30 16:22:16 -08001981 VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
1982 VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
1983 VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
1984 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
1985 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
1986 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
1987 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
1988 VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
Michael Lentine88594d72015-11-12 12:49:45 -08001989}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001990
Jesse Hallad250842017-03-10 18:35:38 -08001991@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08001992type VkFlags VkCompositeAlphaFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08001993@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08001994bitfield VkCompositeAlphaFlagBitsKHR {
1995 VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
1996 VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
1997 VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
1998 VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
1999}
2000
Jesse Hallad250842017-03-10 18:35:38 -08002001@extension("VK_KHR_swapchain") // 2
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002002type VkFlags VkSwapchainCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002003@extension("VK_KHR_swapchain") // 2
2004bitfield VkSwapchainCreateFlagBitsKHR {
2005 //@extension("VK_KHX_device_group") // 61
2006 VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX = 0x00000001,
2007}
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002008
Jesse Hallad250842017-03-10 18:35:38 -08002009@extension("VK_KHR_display") // 3
Jesse Halld8bade02015-11-24 10:24:18 -08002010type VkFlags VkDisplayPlaneAlphaFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002011@extension("VK_KHR_display") // 3
Jesse Halld8bade02015-11-24 10:24:18 -08002012bitfield VkDisplayPlaneAlphaFlagBitsKHR {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002013 VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
2014 VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
2015 VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
2016 VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
Jesse Hall1356b0d2015-11-23 17:24:58 -08002017}
2018
Jesse Hallad250842017-03-10 18:35:38 -08002019@extension("VK_KHR_display") // 3
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002020type VkFlags VkDisplaySurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002021//@extension("VK_KHR_display") // 3
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002022//bitfield VkDisplaySurfaceCreateFlagBitsKHR {
2023//}
2024
Jesse Hallad250842017-03-10 18:35:38 -08002025@extension("VK_KHR_display") // 3
Jesse Hall9ba8bc82015-11-30 16:22:16 -08002026type VkFlags VkDisplayModeCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002027//@extension("VK_KHR_display") // 3
Jesse Hall9ba8bc82015-11-30 16:22:16 -08002028//bitfield VkDisplayModeCreateFlagBitsKHR {
2029//}
2030
Jesse Hallad250842017-03-10 18:35:38 -08002031@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002032type VkFlags VkXlibSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002033//@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002034//bitfield VkXlibSurfaceCreateFlagBitsKHR {
2035//}
2036
Jesse Hallad250842017-03-10 18:35:38 -08002037@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002038type VkFlags VkXcbSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002039//@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002040//bitfield VkXcbSurfaceCreateFlagBitsKHR {
2041//}
2042
Jesse Hallad250842017-03-10 18:35:38 -08002043@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002044type VkFlags VkWaylandSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002045//@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002046//bitfield VkWaylandSurfaceCreateFlagBitsKHR {
2047//}
2048
Jesse Hallad250842017-03-10 18:35:38 -08002049@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002050type VkFlags VkMirSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002051//@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002052//bitfield VkMirSurfaceCreateFlagBitsKHR {
2053//}
2054
Jesse Hallad250842017-03-10 18:35:38 -08002055@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002056type VkFlags VkAndroidSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002057//@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002058//bitfield VkAndroidSurfaceCreateFlagBitsKHR {
2059//}
2060
Jesse Hallad250842017-03-10 18:35:38 -08002061@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002062type VkFlags VkWin32SurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002063//@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002064//bitfield VkWin32SurfaceCreateFlagBitsKHR {
2065//}
2066
Jesse Hallad250842017-03-10 18:35:38 -08002067@extension("VK_ANDROID_native_buffer") // 11
Jesse Hall889cd9a2017-02-25 22:12:23 -08002068type VkFlags VkSwapchainImageUsageFlagsANDROID
Jesse Hallad250842017-03-10 18:35:38 -08002069@extension("VK_ANDROID_native_buffer") // 11
Jesse Hall889cd9a2017-02-25 22:12:23 -08002070bitfield VkSwapchainImageUsageFlagBitsANDROID {
2071 VK_SWAPCHAIN_IMAGE_USAGE_FLAGS_SHARED_BIT_ANDROID = 0x00000001,
2072}
2073
Jesse Hallad250842017-03-10 18:35:38 -08002074@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08002075type VkFlags VkDebugReportFlagsEXT
Jesse Hallad250842017-03-10 18:35:38 -08002076@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08002077bitfield VkDebugReportFlagBitsEXT {
Jesse Halle2948d82016-02-25 04:19:32 -08002078 VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,
2079 VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002,
2080 VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004,
Jesse Hall715b86a2016-01-16 16:34:29 -08002081 VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008,
2082 VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010,
2083}
2084
Jesse Hallad250842017-03-10 18:35:38 -08002085@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13002086type VkFlags VkExternalMemoryHandleTypeFlagsNV
Jesse Hallad250842017-03-10 18:35:38 -08002087@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13002088bitfield VkExternalMemoryHandleTypeFlagBitsNV {
Jesse Halleb02c472017-02-24 15:13:45 -08002089 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,
2090 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,
2091 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,
2092 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,
Chris Forbes289cb792016-12-30 15:03:55 +13002093}
2094
Jesse Hallad250842017-03-10 18:35:38 -08002095@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13002096type VkFlags VkExternalMemoryFeatureFlagsNV
Jesse Hallad250842017-03-10 18:35:38 -08002097@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13002098bitfield VkExternalMemoryFeatureFlagBitsNV {
Jesse Halleb02c472017-02-24 15:13:45 -08002099 VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001,
2100 VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002,
2101 VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004,
Chris Forbes289cb792016-12-30 15:03:55 +13002102}
2103
Jesse Hallad250842017-03-10 18:35:38 -08002104@extension("VK_KHX_device_group") // 61
2105type VkFlags VkPeerMemoryFeatureFlagsKHX
2106@extension("VK_KHX_device_group") // 61
2107bitfield VkPeerMemoryFeatureFlagBitsKHX {
2108 VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX = 0x00000001,
2109 VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX = 0x00000002,
2110 VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX = 0x00000004,
2111 VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX = 0x00000008,
2112}
2113
2114@extension("VK_KHX_device_group") // 61
2115type VkFlags VkMemoryAllocateFlagsKHX
2116@extension("VK_KHX_device_group") // 61
2117bitfield VkMemoryAllocateFlagBitsKHX {
2118 VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX = 0x00000001,
2119}
2120
2121@extension("VK_KHX_device_group") // 61
2122type VkFlags VkDeviceGroupPresentModeFlagsKHX
2123@extension("VK_KHX_device_group") // 61
2124bitfield VkDeviceGroupPresentModeFlagBitsKHX {
2125 VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX = 0x00000001,
2126 VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX = 0x00000002,
2127 VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX = 0x00000004,
2128 VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX = 0x00000008,
2129}
2130
2131@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08002132type VkFlags VkViSurfaceCreateFlagsNN
Jesse Hallad250842017-03-10 18:35:38 -08002133//@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08002134//bitfield VkViSurfaceCreateFlagBitsNN {
2135//}
2136
Jesse Hallad250842017-03-10 18:35:38 -08002137@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08002138type VkFlags VkCommandPoolTrimFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002139//@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08002140//bitfield VkCommandPoolTrimFlagBitsKHR {
2141//}
2142
Jesse Hallad250842017-03-10 18:35:38 -08002143@extension("VK_KHX_external_memory_capabilities") // 72
2144type VkFlags VkExternalMemoryHandleTypeFlagsKHX
2145@extension("VK_KHX_external_memory_capabilities") // 72
2146bitfield VkExternalMemoryHandleTypeFlagBitsKHX {
2147 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHX = 0x00000001,
2148 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX = 0x00000002,
2149 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX = 0x00000004,
2150 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHX = 0x00000008,
2151 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHX = 0x00000010,
2152 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHX = 0x00000020,
2153 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHX = 0x00000040,
2154}
2155
2156@extension("VK_KHX_external_memory_capabilities") // 72
2157type VkFlags VkExternalMemoryFeatureFlagsKHX
2158@extension("VK_KHX_external_memory_capabilities") // 72
2159bitfield VkExternalMemoryFeatureFlagBitsKHX {
2160 VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHX = 0x00000001,
2161 VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHX = 0x00000002,
2162 VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHX = 0x00000004,
2163}
2164
2165@extension("VK_KHX_external_semaphore_capabilities") // 77
2166type VkFlags VkExternalSemaphoreHandleTypeFlagsKHX
2167@extension("VK_KHX_external_semaphore_capabilities") // 77
2168bitfield VkExternalSemaphoreHandleTypeFlagBitsKHX {
2169 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHX = 0x00000001
2170 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX = 0x00000002
2171 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX = 0x00000004
2172 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHX = 0x00000008
2173 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHX = 0x00000010
2174}
2175
2176@extension("VK_KHX_external_semaphore_capabilities") // 77
2177type VkFlags VkExternalSemaphoreFeatureFlagsKHX
2178@extension("VK_KHX_external_semaphore_capabilities") // 77
2179bitfield VkExternalSemaphoreFeatureFlagBitsKHX {
2180 VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHX = 0x00000001,
2181 VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHX = 0x00000002,
2182}
2183
2184@extension("VK_KHR_descriptor_update_template") // 86
2185type VkFlags VkDescriptorUpdateTemplateCreateFlagsKHR
2186//@extension("VK_KHR_descriptor_update_template") // 86
2187//bitfield VkDescriptorUpdateTemplateCreateFlagBitsKHR {
2188//}
2189
2190@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002191type VkFlags VkIndirectCommandsLayoutUsageFlagsNVX
Jesse Hallad250842017-03-10 18:35:38 -08002192@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002193bitfield VkIndirectCommandsLayoutUsageFlagBitsNVX {
Jesse Halleb02c472017-02-24 15:13:45 -08002194 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = 0x00000001,
2195 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = 0x00000002,
2196 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = 0x00000004,
2197 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = 0x00000008,
Chris Forbes289cb792016-12-30 15:03:55 +13002198}
2199
Jesse Hallad250842017-03-10 18:35:38 -08002200@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002201type VkFlags VkObjectEntryUsageFlagsNVX
Jesse Hallad250842017-03-10 18:35:38 -08002202@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002203bitfield VkObjectEntryUsageFlagBitsNVX {
Jesse Halleb02c472017-02-24 15:13:45 -08002204 VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = 0x00000001,
2205 VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = 0x00000002,
Chris Forbes289cb792016-12-30 15:03:55 +13002206}
2207
Jesse Hallad250842017-03-10 18:35:38 -08002208@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08002209type VkFlags VkSurfaceCounterFlagsEXT
Jesse Hallad250842017-03-10 18:35:38 -08002210@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08002211bitfield VkSurfaceCounterFlagBitsEXT {
2212 VK_SURFACE_COUNTER_VBLANK_EXT = 0x00000001,
2213}
2214
Jesse Hallad250842017-03-10 18:35:38 -08002215@extension("VK_NV_viewport_swizzle") // 99
2216type VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV
2217//@extension("VK_NV_viewport_swizzle") // 99
2218//bitfield VkPipelineViewportSwizzleStateCreateFlagBitsNV {
2219//}
2220
2221@extension("VK_EXT_discard_rectangles") // 100
2222type VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT
2223//@extension("VK_EXT_discard_rectangles") // 100
2224//bitfield VkPipelineDiscardRectangleStateCreateFlagBitsEXT {
2225//}
2226
2227@extension("VK_MVK_ios_surface") // 123
2228type VkFlags VkIOSSurfaceCreateFlagsMVK
2229//@extension("VK_MVK_ios_surface") // 123
2230//bitfield VkIOSSurfaceCreateFlagBitsMVK {
2231//}
2232
2233@extension("VK_MVK_macos_surface") // 124
2234type VkFlags VkMacOSSurfaceCreateFlagsMVK
2235//@extension("VK_MVK_macos_surface") // 124
2236//bitfield VkMacOSSurfaceCreateFlagBitsMVK {
2237//}
2238
Jesse Hall7ba0ac72017-07-07 17:13:23 -07002239@extension("VK_NV_fragment_coverage_to_color") // 150
2240type VkFlags VkPipelineCoverageToColorStateCreateFlagsNV
2241@extension("VK_NV_fragment_coverage_to_color") // 150
2242//bitfield VkPipelineCoverageToColorStateCreateFlagBitsNV {
2243//}
2244
2245@extension("VK_NV_framebuffer_mixed_samples") // 153
2246type VkFlags VkPipelineCoverageModulationStateCreateFlagsNV
2247@extension("VK_NV_framebuffer_mixed_samples") // 153
2248//bitfield VkPipelineCoverageModulationStateCreateFlagBitsNV {
2249//}
2250
Jesse Halld27f6aa2015-08-15 17:58:48 -07002251//////////////////
2252// Structures //
2253//////////////////
2254
2255class VkOffset2D {
2256 s32 x
2257 s32 y
2258}
2259
2260class VkOffset3D {
2261 s32 x
2262 s32 y
2263 s32 z
2264}
2265
2266class VkExtent2D {
Jesse Hall3dd678a2016-01-08 21:52:01 -08002267 u32 width
2268 u32 height
Jesse Halld27f6aa2015-08-15 17:58:48 -07002269}
2270
2271class VkExtent3D {
Jesse Hall3dd678a2016-01-08 21:52:01 -08002272 u32 width
2273 u32 height
2274 u32 depth
Jesse Halld27f6aa2015-08-15 17:58:48 -07002275}
2276
2277class VkViewport {
Jesse Hall65ab5522015-11-30 00:07:16 -08002278 f32 x
2279 f32 y
Jesse Halld27f6aa2015-08-15 17:58:48 -07002280 f32 width
2281 f32 height
2282 f32 minDepth
2283 f32 maxDepth
2284}
2285
2286class VkRect2D {
2287 VkOffset2D offset
2288 VkExtent2D extent
2289}
2290
Jesse Halla15a4bf2015-11-19 22:48:02 -08002291class VkClearRect {
2292 VkRect2D rect
2293 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002294 u32 layerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002295}
2296
Jesse Hall65ab5522015-11-30 00:07:16 -08002297class VkComponentMapping {
2298 VkComponentSwizzle r
2299 VkComponentSwizzle g
2300 VkComponentSwizzle b
2301 VkComponentSwizzle a
Jesse Halld27f6aa2015-08-15 17:58:48 -07002302}
2303
2304class VkPhysicalDeviceProperties {
2305 u32 apiVersion
2306 u32 driverVersion
Jesse Hall65ab5522015-11-30 00:07:16 -08002307 u32 vendorID
2308 u32 deviceID
Jesse Halld27f6aa2015-08-15 17:58:48 -07002309 VkPhysicalDeviceType deviceType
Jesse Hall65ab5522015-11-30 00:07:16 -08002310 char[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE] deviceName
2311 u8[VK_UUID_SIZE] pipelineCacheUUID
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002312 VkPhysicalDeviceLimits limits
2313 VkPhysicalDeviceSparseProperties sparseProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07002314}
2315
2316class VkExtensionProperties {
Jesse Hall65ab5522015-11-30 00:07:16 -08002317 char[VK_MAX_EXTENSION_NAME_SIZE] extensionName /// extension name
Jesse Halld27f6aa2015-08-15 17:58:48 -07002318 u32 specVersion /// version of the extension specification implemented
2319}
2320
2321class VkLayerProperties {
Jesse Hall65ab5522015-11-30 00:07:16 -08002322 char[VK_MAX_EXTENSION_NAME_SIZE] layerName /// layer name
Jesse Hall3fbc8562015-11-29 22:10:52 -08002323 u32 specVersion /// version of the layer specification implemented
2324 u32 implementationVersion /// build or release version of the layer's library
Jesse Hall65ab5522015-11-30 00:07:16 -08002325 char[VK_MAX_DESCRIPTION_SIZE] description /// Free-form description of the layer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002326}
2327
Jesse Halla366a512015-11-19 22:30:07 -08002328class VkSubmitInfo {
Jesse Hall03b6fe12015-11-24 12:44:21 -08002329 VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_SUBMIT_INFO
2330 const void* pNext /// Next structure in chain
2331 u32 waitSemaphoreCount
Jesse Halla366a512015-11-19 22:30:07 -08002332 const VkSemaphore* pWaitSemaphores
Jesse Hall543a7ff2016-01-08 16:38:30 -08002333 const VkPipelineStageFlags* pWaitDstStageMask
Jesse Hall03b6fe12015-11-24 12:44:21 -08002334 u32 commandBufferCount
Jesse Hall3fbc8562015-11-29 22:10:52 -08002335 const VkCommandBuffer* pCommandBuffers
Jesse Hall03b6fe12015-11-24 12:44:21 -08002336 u32 signalSemaphoreCount
Jesse Halla366a512015-11-19 22:30:07 -08002337 const VkSemaphore* pSignalSemaphores
2338}
2339
Jesse Halld27f6aa2015-08-15 17:58:48 -07002340class VkApplicationInfo {
2341 VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_APPLICATION_INFO
2342 const void* pNext /// Next structure in chain
Jesse Hall3fbc8562015-11-29 22:10:52 -08002343 const char* pApplicationName
2344 u32 applicationVersion
Jesse Halld27f6aa2015-08-15 17:58:48 -07002345 const char* pEngineName
2346 u32 engineVersion
2347 u32 apiVersion
2348}
2349
Jesse Hall3fbc8562015-11-29 22:10:52 -08002350class VkAllocationCallbacks {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002351 void* pUserData
Jesse Hall3fbc8562015-11-29 22:10:52 -08002352 PFN_vkAllocationFunction pfnAllocation
2353 PFN_vkReallocationFunction pfnReallocation
Jesse Halld27f6aa2015-08-15 17:58:48 -07002354 PFN_vkFreeFunction pfnFree
Jesse Hall3fbc8562015-11-29 22:10:52 -08002355 PFN_vkInternalAllocationNotification pfnInternalAllocation
Jesse Hall03b6fe12015-11-24 12:44:21 -08002356 PFN_vkInternalFreeNotification pfnInternalFree
Jesse Halld27f6aa2015-08-15 17:58:48 -07002357}
2358
2359class VkDeviceQueueCreateInfo {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002360 VkStructureType sStype /// Should be VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
2361 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002362 VkDeviceQueueCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002363 u32 queueFamilyIndex
Jesse Halldba27f72015-11-30 14:25:46 -08002364 u32 queueCount
Jesse Hallfbf97b02015-11-20 14:17:03 -08002365 const f32* pQueuePriorities
Jesse Halld27f6aa2015-08-15 17:58:48 -07002366}
2367
2368class VkDeviceCreateInfo {
2369 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO
2370 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002371 VkDeviceCreateFlags flags
Jesse Halldba27f72015-11-30 14:25:46 -08002372 u32 queueCreateInfoCount
2373 const VkDeviceQueueCreateInfo* pQueueCreateInfos
Jesse Hall3dd678a2016-01-08 21:52:01 -08002374 u32 enabledLayerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002375 const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled
Jesse Hall3dd678a2016-01-08 21:52:01 -08002376 u32 enabledExtensionCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002377 const char* const* ppEnabledExtensionNames
2378 const VkPhysicalDeviceFeatures* pEnabledFeatures
Jesse Halld27f6aa2015-08-15 17:58:48 -07002379}
2380
2381class VkInstanceCreateInfo {
2382 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
2383 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002384 VkInstanceCreateFlags flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08002385 const VkApplicationInfo* pApplicationInfo
Jesse Hall3dd678a2016-01-08 21:52:01 -08002386 u32 enabledLayerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002387 const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled
Jesse Hall3dd678a2016-01-08 21:52:01 -08002388 u32 enabledExtensionCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002389 const char* const* ppEnabledExtensionNames /// Extension names to be enabled
2390}
2391
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002392class VkQueueFamilyProperties {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002393 VkQueueFlags queueFlags /// Queue flags
2394 u32 queueCount
Jesse Hallacfa5342015-11-19 21:51:33 -08002395 u32 timestampValidBits
Jesse Hall65ab5522015-11-30 00:07:16 -08002396 VkExtent3D minImageTransferGranularity
Jesse Halld27f6aa2015-08-15 17:58:48 -07002397}
2398
2399class VkPhysicalDeviceMemoryProperties {
2400 u32 memoryTypeCount
2401 VkMemoryType[VK_MAX_MEMORY_TYPES] memoryTypes
2402 u32 memoryHeapCount
2403 VkMemoryHeap[VK_MAX_MEMORY_HEAPS] memoryHeaps
2404}
2405
Jesse Hall3fbc8562015-11-29 22:10:52 -08002406class VkMemoryAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002407 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002408 const void* pNext /// Pointer to next structure
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002409 VkDeviceSize allocationSize /// Size of memory allocation
Jesse Halld27f6aa2015-08-15 17:58:48 -07002410 u32 memoryTypeIndex /// Index of the of the memory type to allocate from
2411}
2412
2413class VkMemoryRequirements {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002414 VkDeviceSize size /// Specified in bytes
2415 VkDeviceSize alignment /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002416 u32 memoryTypeBits /// Bitfield of the allowed memory type indices into memoryTypes[] for this object
2417}
2418
2419class VkSparseImageFormatProperties {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002420 VkImageAspectFlagBits aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002421 VkExtent3D imageGranularity
2422 VkSparseImageFormatFlags flags
2423}
2424
2425class VkSparseImageMemoryRequirements {
Jesse Hallb00daad2015-11-29 19:46:20 -08002426 VkSparseImageFormatProperties formatProperties
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002427 u32 imageMipTailFirstLod
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002428 VkDeviceSize imageMipTailSize /// Specified in bytes, must be a multiple of image block size / alignment
2429 VkDeviceSize imageMipTailOffset /// Specified in bytes, must be a multiple of image block size / alignment
2430 VkDeviceSize imageMipTailStride /// Specified in bytes, must be a multiple of image block size / alignment
Jesse Halld27f6aa2015-08-15 17:58:48 -07002431}
2432
2433class VkMemoryType {
2434 VkMemoryPropertyFlags propertyFlags /// Memory properties of this memory type
2435 u32 heapIndex /// Index of the memory heap allocations of this memory type are taken from
2436}
2437
2438class VkMemoryHeap {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002439 VkDeviceSize size /// Available memory in the heap
Jesse Halld27f6aa2015-08-15 17:58:48 -07002440 VkMemoryHeapFlags flags /// Flags for the heap
2441}
2442
2443class VkMappedMemoryRange {
2444 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
2445 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002446 VkDeviceMemory memory /// Mapped memory object
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002447 VkDeviceSize offset /// Offset within the mapped memory the range starts from
2448 VkDeviceSize size /// Size of the range within the mapped memory
Jesse Halld27f6aa2015-08-15 17:58:48 -07002449}
2450
2451class VkFormatProperties {
2452 VkFormatFeatureFlags linearTilingFeatures /// Format features in case of linear tiling
2453 VkFormatFeatureFlags optimalTilingFeatures /// Format features in case of optimal tiling
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002454 VkFormatFeatureFlags bufferFeatures /// Format features supported by buffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07002455}
2456
2457class VkImageFormatProperties {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002458 VkExtent3D maxExtent /// max image dimensions for this resource type
2459 u32 maxMipLevels /// max number of mipmap levels for this resource type
Jesse Halla15a4bf2015-11-19 22:48:02 -08002460 u32 maxArrayLayers /// max array layers for this resource type
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002461 VkSampleCountFlags sampleCounts /// supported sample counts for this resource type
2462 VkDeviceSize maxResourceSize /// max size (in bytes) of this resource type
2463}
2464
Jesse Halla15a4bf2015-11-19 22:48:02 -08002465class VkDescriptorImageInfo {
2466 VkSampler sampler
2467 VkImageView imageView
2468 VkImageLayout imageLayout
2469}
2470
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002471class VkDescriptorBufferInfo {
2472 VkBuffer buffer /// Buffer used for this descriptor when the descriptor is UNIFORM_BUFFER[_DYNAMIC]
2473 VkDeviceSize offset /// Base offset from buffer start in bytes to update in the descriptor set.
2474 VkDeviceSize range /// Size in bytes of the buffer resource for this descriptor update.
Jesse Halld27f6aa2015-08-15 17:58:48 -07002475}
2476
Jesse Halld27f6aa2015-08-15 17:58:48 -07002477class VkWriteDescriptorSet {
2478 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
2479 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002480 VkDescriptorSet dstSet /// Destination descriptor set
2481 u32 dstBinding /// Binding within the destination descriptor set to write
2482 u32 dstArrayElement /// Array element within the destination binding to write
Jesse Hall03b6fe12015-11-24 12:44:21 -08002483 u32 descriptorCount /// Number of descriptors to write (determines the size of the array pointed by <pDescriptors>)
Jesse Halld27f6aa2015-08-15 17:58:48 -07002484 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 -08002485 const VkDescriptorImageInfo* pImageInfo
2486 const VkDescriptorBufferInfo* pBufferInfo
2487 const VkBufferView* pTexelBufferView
Jesse Halld27f6aa2015-08-15 17:58:48 -07002488}
2489
2490class VkCopyDescriptorSet {
2491 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET
2492 const void* pNext /// Pointer to next structure
2493 VkDescriptorSet srcSet /// Source descriptor set
2494 u32 srcBinding /// Binding within the source descriptor set to copy from
2495 u32 srcArrayElement /// Array element within the source binding to copy from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002496 VkDescriptorSet dstSet /// Destination descriptor set
2497 u32 dstBinding /// Binding within the destination descriptor set to copy to
2498 u32 dstArrayElement /// Array element within the destination binding to copy to
Jesse Hall03b6fe12015-11-24 12:44:21 -08002499 u32 descriptorCount /// Number of descriptors to copy
Jesse Halld27f6aa2015-08-15 17:58:48 -07002500}
2501
2502class VkBufferCreateInfo {
2503 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
2504 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002505 VkBufferCreateFlags flags /// Buffer creation flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002506 VkDeviceSize size /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002507 VkBufferUsageFlags usage /// Buffer usage flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002508 VkSharingMode sharingMode
Jesse Hall03b6fe12015-11-24 12:44:21 -08002509 u32 queueFamilyIndexCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002510 const u32* pQueueFamilyIndices
2511}
2512
2513class VkBufferViewCreateInfo {
2514 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO
2515 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002516 VkBufferViewCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002517 VkBuffer buffer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002518 VkFormat format /// Optionally specifies format of elements
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002519 VkDeviceSize offset /// Specified in bytes
2520 VkDeviceSize range /// View size specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002521}
2522
2523class VkImageSubresource {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002524 VkImageAspectFlagBits aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002525 u32 mipLevel
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002526 u32 arrayLayer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002527}
2528
2529class VkImageSubresourceRange {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002530 VkImageAspectFlags aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002531 u32 baseMipLevel
Jesse Hall3fbc8562015-11-29 22:10:52 -08002532 u32 levelCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002533 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002534 u32 layerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002535}
2536
2537class VkMemoryBarrier {
2538 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_BARRIER
2539 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002540 VkAccessFlags srcAccessMask
2541 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002542}
2543
2544class VkBufferMemoryBarrier {
2545 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
2546 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002547 VkAccessFlags srcAccessMask
2548 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002549 u32 srcQueueFamilyIndex /// Queue family to transition ownership from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002550 u32 dstQueueFamilyIndex /// Queue family to transition ownership to
Jesse Halld27f6aa2015-08-15 17:58:48 -07002551 VkBuffer buffer /// Buffer to sync
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002552 VkDeviceSize offset /// Offset within the buffer to sync
2553 VkDeviceSize size /// Amount of bytes to sync
Jesse Halld27f6aa2015-08-15 17:58:48 -07002554}
2555
2556class VkImageMemoryBarrier {
2557 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
2558 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002559 VkAccessFlags srcAccessMask
2560 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002561 VkImageLayout oldLayout /// Current layout of the image
2562 VkImageLayout newLayout /// New layout to transition the image to
2563 u32 srcQueueFamilyIndex /// Queue family to transition ownership from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002564 u32 dstQueueFamilyIndex /// Queue family to transition ownership to
Jesse Halld27f6aa2015-08-15 17:58:48 -07002565 VkImage image /// Image to sync
2566 VkImageSubresourceRange subresourceRange /// Subresource range to sync
2567}
2568
2569class VkImageCreateInfo {
2570 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
2571 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002572 VkImageCreateFlags flags /// Image creation flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002573 VkImageType imageType
2574 VkFormat format
2575 VkExtent3D extent
2576 u32 mipLevels
Jesse Halla15a4bf2015-11-19 22:48:02 -08002577 u32 arrayLayers
Jesse Hall091ed9e2015-11-30 00:55:29 -08002578 VkSampleCountFlagBits samples
Jesse Halld27f6aa2015-08-15 17:58:48 -07002579 VkImageTiling tiling
2580 VkImageUsageFlags usage /// Image usage flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002581 VkSharingMode sharingMode /// Cross-queue-family sharing mode
Jesse Hall03b6fe12015-11-24 12:44:21 -08002582 u32 queueFamilyIndexCount /// Number of queue families to share across
Jesse Halld27f6aa2015-08-15 17:58:48 -07002583 const u32* pQueueFamilyIndices /// Array of queue family indices to share across
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002584 VkImageLayout initialLayout /// Initial image layout for all subresources
Jesse Halld27f6aa2015-08-15 17:58:48 -07002585}
2586
2587class VkSubresourceLayout {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002588 VkDeviceSize offset /// Specified in bytes
2589 VkDeviceSize size /// Specified in bytes
2590 VkDeviceSize rowPitch /// Specified in bytes
Jesse Hall543a7ff2016-01-08 16:38:30 -08002591 VkDeviceSize arrayPitch /// Specified in bytes
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002592 VkDeviceSize depthPitch /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002593}
2594
2595class VkImageViewCreateInfo {
2596 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
2597 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002598 VkImageViewCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002599 VkImage image
2600 VkImageViewType viewType
2601 VkFormat format
Jesse Hall65ab5522015-11-30 00:07:16 -08002602 VkComponentMapping components
Jesse Halld27f6aa2015-08-15 17:58:48 -07002603 VkImageSubresourceRange subresourceRange
Jesse Halld27f6aa2015-08-15 17:58:48 -07002604}
2605
2606class VkBufferCopy {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002607 VkDeviceSize srcOffset /// Specified in bytes
Jesse Hall3fbc8562015-11-29 22:10:52 -08002608 VkDeviceSize dstOffset /// Specified in bytes
Jesse Hallb00daad2015-11-29 19:46:20 -08002609 VkDeviceSize size /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002610}
2611
Jesse Halla6429252015-11-29 18:59:42 -08002612class VkSparseMemoryBind {
Jesse Hallb00daad2015-11-29 19:46:20 -08002613 VkDeviceSize resourceOffset /// Specified in bytes
2614 VkDeviceSize size /// Specified in bytes
Jesse Hall3fbc8562015-11-29 22:10:52 -08002615 VkDeviceMemory memory
2616 VkDeviceSize memoryOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002617 VkSparseMemoryBindFlags flags
2618}
2619
Jesse Halla6429252015-11-29 18:59:42 -08002620class VkSparseImageMemoryBind {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002621 VkImageSubresource subresource
2622 VkOffset3D offset
2623 VkExtent3D extent
Jesse Hall3fbc8562015-11-29 22:10:52 -08002624 VkDeviceMemory memory
2625 VkDeviceSize memoryOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002626 VkSparseMemoryBindFlags flags
2627}
2628
Jesse Halla6429252015-11-29 18:59:42 -08002629class VkSparseBufferMemoryBindInfo {
2630 VkBuffer buffer
2631 u32 bindCount
2632 const VkSparseMemoryBind* pBinds
2633}
2634
2635class VkSparseImageOpaqueMemoryBindInfo {
2636 VkImage image
2637 u32 bindCount
2638 const VkSparseMemoryBind* pBinds
2639}
2640
2641class VkSparseImageMemoryBindInfo {
2642 VkImage image
2643 u32 bindCount
2644 const VkSparseMemoryBind* pBinds
2645}
2646
2647class VkBindSparseInfo {
2648 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BIND_SPARSE_INFO
2649 const void* pNext
2650 u32 waitSemaphoreCount
2651 const VkSemaphore* pWaitSemaphores
2652 u32 numBufferBinds
2653 const VkSparseBufferMemoryBindInfo* pBufferBinds
2654 u32 numImageOpaqueBinds
2655 const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds
2656 u32 numImageBinds
2657 const VkSparseImageMemoryBindInfo* pImageBinds
2658 u32 signalSemaphoreCount
2659 const VkSemaphore* pSignalSemaphores
2660}
2661
Jesse Hall65ab5522015-11-30 00:07:16 -08002662class VkImageSubresourceLayers {
2663 VkImageAspectFlags aspectMask
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002664 u32 mipLevel
Jesse Halla15a4bf2015-11-19 22:48:02 -08002665 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002666 u32 layerCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002667}
2668
Jesse Halld27f6aa2015-08-15 17:58:48 -07002669class VkImageCopy {
Jesse Hall65ab5522015-11-30 00:07:16 -08002670 VkImageSubresourceLayers srcSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07002671 VkOffset3D srcOffset /// Specified in pixels for both compressed and uncompressed images
Jesse Hall65ab5522015-11-30 00:07:16 -08002672 VkImageSubresourceLayers dstSubresource
Jesse Hall3fbc8562015-11-29 22:10:52 -08002673 VkOffset3D dstOffset /// Specified in pixels for both compressed and uncompressed images
Jesse Halld27f6aa2015-08-15 17:58:48 -07002674 VkExtent3D extent /// Specified in pixels for both compressed and uncompressed images
2675}
2676
2677class VkImageBlit {
Jesse Hall65ab5522015-11-30 00:07:16 -08002678 VkImageSubresourceLayers srcSubresource
Jesse Hall3dd678a2016-01-08 21:52:01 -08002679 VkOffset3D[2] srcOffsets
Jesse Hall65ab5522015-11-30 00:07:16 -08002680 VkImageSubresourceLayers dstSubresource
Jesse Hall3dd678a2016-01-08 21:52:01 -08002681 VkOffset3D[2] dstOffsets
Jesse Halld27f6aa2015-08-15 17:58:48 -07002682}
2683
2684class VkBufferImageCopy {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002685 VkDeviceSize bufferOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002686 u32 bufferRowLength /// Specified in texels
2687 u32 bufferImageHeight
Jesse Hall65ab5522015-11-30 00:07:16 -08002688 VkImageSubresourceLayers imageSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07002689 VkOffset3D imageOffset /// Specified in pixels for both compressed and uncompressed images
2690 VkExtent3D imageExtent /// Specified in pixels for both compressed and uncompressed images
2691}
2692
2693class VkImageResolve {
Jesse Hall65ab5522015-11-30 00:07:16 -08002694 VkImageSubresourceLayers srcSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07002695 VkOffset3D srcOffset
Jesse Hall65ab5522015-11-30 00:07:16 -08002696 VkImageSubresourceLayers dstSubresource
Jesse Hall3fbc8562015-11-29 22:10:52 -08002697 VkOffset3D dstOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07002698 VkExtent3D extent
2699}
2700
2701class VkShaderModuleCreateInfo {
2702 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
2703 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002704 VkShaderModuleCreateFlags flags /// Reserved
Jesse Halld27f6aa2015-08-15 17:58:48 -07002705 platform.size_t codeSize /// Specified in bytes
Jesse Halla9bb62b2015-11-21 19:31:56 -08002706 const u32* pCode /// Binary code of size codeSize
Jesse Halld27f6aa2015-08-15 17:58:48 -07002707}
2708
Jesse Halld27f6aa2015-08-15 17:58:48 -07002709class VkDescriptorSetLayoutBinding {
Jesse Hall091ed9e2015-11-30 00:55:29 -08002710 u32 binding
Jesse Halld27f6aa2015-08-15 17:58:48 -07002711 VkDescriptorType descriptorType /// Type of the descriptors in this binding
Jesse Halldba27f72015-11-30 14:25:46 -08002712 u32 descriptorCount /// Number of descriptors in this binding
Jesse Halld27f6aa2015-08-15 17:58:48 -07002713 VkShaderStageFlags stageFlags /// Shader stages this binding is visible to
2714 const VkSampler* pImmutableSamplers /// Immutable samplers (used if descriptor type is SAMPLER or COMBINED_IMAGE_SAMPLER, is either NULL or contains <count> number of elements)
2715}
2716
2717class VkDescriptorSetLayoutCreateInfo {
2718 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
2719 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002720 VkDescriptorSetLayoutCreateFlags flags
Jesse Hall03b6fe12015-11-24 12:44:21 -08002721 u32 bindingCount /// Number of bindings in the descriptor set layout
Jesse Hall543a7ff2016-01-08 16:38:30 -08002722 const VkDescriptorSetLayoutBinding* pBindings /// Array of descriptor set layout bindings
Jesse Halld27f6aa2015-08-15 17:58:48 -07002723}
2724
Jesse Hall65ab5522015-11-30 00:07:16 -08002725class VkDescriptorPoolSize {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002726 VkDescriptorType type
Jesse Hall03b6fe12015-11-24 12:44:21 -08002727 u32 descriptorCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002728}
2729
2730class VkDescriptorPoolCreateInfo {
2731 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
2732 const void* pNext /// Pointer to next structure
Jesse Hallfbf97b02015-11-20 14:17:03 -08002733 VkDescriptorPoolCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002734 u32 maxSets
Jesse Hall65ab5522015-11-30 00:07:16 -08002735 u32 poolSizeCount
2736 const VkDescriptorPoolSize* pPoolSizes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002737}
2738
Jesse Hall3fbc8562015-11-29 22:10:52 -08002739class VkDescriptorSetAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002740 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
Jesse Hallfbf97b02015-11-20 14:17:03 -08002741 const void* pNext /// Pointer to next structure
2742 VkDescriptorPool descriptorPool
Jesse Hall03b6fe12015-11-24 12:44:21 -08002743 u32 setCount
Jesse Hallfbf97b02015-11-20 14:17:03 -08002744 const VkDescriptorSetLayout* pSetLayouts
2745}
2746
Jesse Halld27f6aa2015-08-15 17:58:48 -07002747class VkSpecializationMapEntry {
Jesse Hall65ab5522015-11-30 00:07:16 -08002748 u32 constantID /// The SpecConstant ID specified in the BIL
Jesse Halld27f6aa2015-08-15 17:58:48 -07002749 u32 offset /// Offset of the value in the data block
Jesse Hallb00daad2015-11-29 19:46:20 -08002750 platform.size_t size /// Size in bytes of the SpecConstant
Jesse Halld27f6aa2015-08-15 17:58:48 -07002751}
2752
2753class VkSpecializationInfo {
2754 u32 mapEntryCount /// Number of entries in the map
Jesse Hallb00daad2015-11-29 19:46:20 -08002755 const VkSpecializationMapEntry* pMapEntries /// Array of map entries
Jesse Halld27f6aa2015-08-15 17:58:48 -07002756 platform.size_t dataSize /// Size in bytes of pData
2757 const void* pData /// Pointer to SpecConstant data
2758}
2759
2760class VkPipelineShaderStageCreateInfo {
2761 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
2762 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002763 VkPipelineShaderStageCreateFlags flags
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002764 VkShaderStageFlagBits stage
2765 VkShaderModule module
2766 const char* pName
Jesse Halld27f6aa2015-08-15 17:58:48 -07002767 const VkSpecializationInfo* pSpecializationInfo
2768}
2769
2770class VkComputePipelineCreateInfo {
2771 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
2772 const void* pNext /// Pointer to next structure
Jesse Halld27f6aa2015-08-15 17:58:48 -07002773 VkPipelineCreateFlags flags /// Pipeline creation flags
Jesse Halla6429252015-11-29 18:59:42 -08002774 VkPipelineShaderStageCreateInfo stage
Jesse Halld27f6aa2015-08-15 17:58:48 -07002775 VkPipelineLayout layout /// Interface layout of the pipeline
2776 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
2777 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
2778}
2779
2780class VkVertexInputBindingDescription {
Jesse Hallb00daad2015-11-29 19:46:20 -08002781 u32 binding /// Vertex buffer binding id
2782 u32 stride /// Distance between vertices in bytes (0 = no advancement)
Jesse Hall65ab5522015-11-30 00:07:16 -08002783 VkVertexInputRate inputRate /// Rate at which binding is incremented
Jesse Halld27f6aa2015-08-15 17:58:48 -07002784}
2785
2786class VkVertexInputAttributeDescription {
Jesse Hallb00daad2015-11-29 19:46:20 -08002787 u32 location /// location of the shader vertex attrib
2788 u32 binding /// Vertex buffer binding id
2789 VkFormat format /// format of source data
2790 u32 offset /// Offset of first element in bytes from base of vertex
Jesse Halld27f6aa2015-08-15 17:58:48 -07002791}
2792
2793class VkPipelineVertexInputStateCreateInfo {
Jesse Hall03b6fe12015-11-24 12:44:21 -08002794 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
2795 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002796 VkPipelineVertexInputStateCreateFlags flags
Jesse Hall03b6fe12015-11-24 12:44:21 -08002797 u32 vertexBindingDescriptionCount /// number of bindings
Jesse Halld27f6aa2015-08-15 17:58:48 -07002798 const VkVertexInputBindingDescription* pVertexBindingDescriptions
Jesse Hall03b6fe12015-11-24 12:44:21 -08002799 u32 vertexAttributeDescriptionCount /// number of attributes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002800 const VkVertexInputAttributeDescription* pVertexAttributeDescriptions
2801}
2802
2803class VkPipelineInputAssemblyStateCreateInfo {
2804 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
2805 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002806 VkPipelineInputAssemblyStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002807 VkPrimitiveTopology topology
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002808 VkBool32 primitiveRestartEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002809}
2810
2811class VkPipelineTessellationStateCreateInfo {
2812 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
2813 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002814 VkPipelineTessellationStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002815 u32 patchControlPoints
2816}
2817
2818class VkPipelineViewportStateCreateInfo {
2819 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
2820 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002821 VkPipelineViewportStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002822 u32 viewportCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002823 const VkViewport* pViewports
2824 u32 scissorCount
2825 const VkRect2D* pScissors
Jesse Halld27f6aa2015-08-15 17:58:48 -07002826}
2827
Jesse Hall3fbc8562015-11-29 22:10:52 -08002828class VkPipelineRasterizationStateCreateInfo {
Jesse Hall65ab5522015-11-30 00:07:16 -08002829 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002830 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002831 VkPipelineRasterizationStateCreateFlags flags
Jesse Hallae38f732015-11-19 21:32:50 -08002832 VkBool32 depthClampEnable
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002833 VkBool32 rasterizerDiscardEnable
Jesse Hall65ab5522015-11-30 00:07:16 -08002834 VkPolygonMode polygonMode /// optional (GL45)
Jesse Hallc7467b72015-11-29 21:05:26 -08002835 VkCullModeFlags cullMode
Jesse Halld27f6aa2015-08-15 17:58:48 -07002836 VkFrontFace frontFace
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002837 VkBool32 depthBiasEnable
Jesse Halla9bb62b2015-11-21 19:31:56 -08002838 f32 depthBiasConstantFactor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002839 f32 depthBiasClamp
Jesse Halla9bb62b2015-11-21 19:31:56 -08002840 f32 depthBiasSlopeFactor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002841 f32 lineWidth
Jesse Halld27f6aa2015-08-15 17:58:48 -07002842}
2843
2844class VkPipelineMultisampleStateCreateInfo {
2845 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
2846 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002847 VkPipelineMultisampleStateCreateFlags flags
Jesse Hall091ed9e2015-11-30 00:55:29 -08002848 VkSampleCountFlagBits rasterizationSamples /// Number of samples used for rasterization
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002849 VkBool32 sampleShadingEnable /// optional (GL45)
Jesse Halld27f6aa2015-08-15 17:58:48 -07002850 f32 minSampleShading /// optional (GL45)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002851 const VkSampleMask* pSampleMask
Jesse Hallacfa5342015-11-19 21:51:33 -08002852 VkBool32 alphaToCoverageEnable
2853 VkBool32 alphaToOneEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002854}
2855
2856class VkPipelineColorBlendAttachmentState {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002857 VkBool32 blendEnable
Jesse Hall65ab5522015-11-30 00:07:16 -08002858 VkBlendFactor srcColorBlendFactor
2859 VkBlendFactor dstColorBlendFactor
2860 VkBlendOp colorBlendOp
2861 VkBlendFactor srcAlphaBlendFactor
2862 VkBlendFactor dstAlphaBlendFactor
2863 VkBlendOp alphaBlendOp
2864 VkColorComponentFlags colorWriteMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002865}
2866
2867class VkPipelineColorBlendStateCreateInfo {
2868 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
2869 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002870 VkPipelineColorBlendStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002871 VkBool32 logicOpEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002872 VkLogicOp logicOp
2873 u32 attachmentCount /// # of pAttachments
2874 const VkPipelineColorBlendAttachmentState* pAttachments
Jesse Hallb00daad2015-11-29 19:46:20 -08002875 f32[4] blendConstants
Jesse Halld27f6aa2015-08-15 17:58:48 -07002876}
2877
2878class VkStencilOpState {
Jesse Hall65ab5522015-11-30 00:07:16 -08002879 VkStencilOp failOp
2880 VkStencilOp passOp
2881 VkStencilOp depthFailOp
2882 VkCompareOp compareOp
2883 u32 compareMask
2884 u32 writeMask
2885 u32 reference
Jesse Halld27f6aa2015-08-15 17:58:48 -07002886}
2887
2888class VkPipelineDepthStencilStateCreateInfo {
2889 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
2890 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002891 VkPipelineDepthStencilStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002892 VkBool32 depthTestEnable
2893 VkBool32 depthWriteEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002894 VkCompareOp depthCompareOp
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002895 VkBool32 depthBoundsTestEnable /// optional (depth_bounds_test)
2896 VkBool32 stencilTestEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002897 VkStencilOpState front
2898 VkStencilOpState back
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002899 f32 minDepthBounds
2900 f32 maxDepthBounds
2901}
2902
2903class VkPipelineDynamicStateCreateInfo {
2904 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
2905 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002906 VkPipelineDynamicStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002907 u32 dynamicStateCount
2908 const VkDynamicState* pDynamicStates
Jesse Halld27f6aa2015-08-15 17:58:48 -07002909}
2910
2911class VkGraphicsPipelineCreateInfo {
Jesse Halla6429252015-11-29 18:59:42 -08002912 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
2913 const void* pNext /// Pointer to next structure
2914 VkPipelineCreateFlags flags /// Pipeline creation flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002915 u32 stageCount
Jesse Halla6429252015-11-29 18:59:42 -08002916 const VkPipelineShaderStageCreateInfo* pStages /// One entry for each active shader stage
Jesse Halld27f6aa2015-08-15 17:58:48 -07002917 const VkPipelineVertexInputStateCreateInfo* pVertexInputState
2918 const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState
2919 const VkPipelineTessellationStateCreateInfo* pTessellationState
2920 const VkPipelineViewportStateCreateInfo* pViewportState
Jesse Hall3fbc8562015-11-29 22:10:52 -08002921 const VkPipelineRasterizationStateCreateInfo* pRasterizationState
Jesse Halld27f6aa2015-08-15 17:58:48 -07002922 const VkPipelineMultisampleStateCreateInfo* pMultisampleState
2923 const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState
2924 const VkPipelineColorBlendStateCreateInfo* pColorBlendState
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002925 const VkPipelineDynamicStateCreateInfo* pDynamicState
Jesse Halla6429252015-11-29 18:59:42 -08002926 VkPipelineLayout layout /// Interface layout of the pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07002927 VkRenderPass renderPass
2928 u32 subpass
Jesse Halla6429252015-11-29 18:59:42 -08002929 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
2930 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 -07002931}
2932
2933class VkPipelineCacheCreateInfo {
Jesse Hallb00daad2015-11-29 19:46:20 -08002934 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
2935 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002936 VkPipelineCacheCreateFlags flags
Jesse Hallb00daad2015-11-29 19:46:20 -08002937 platform.size_t initialDataSize /// Size of initial data to populate cache, in bytes
2938 const void* pInitialData /// Initial data to populate cache
Jesse Halld27f6aa2015-08-15 17:58:48 -07002939}
2940
2941class VkPushConstantRange {
2942 VkShaderStageFlags stageFlags /// Which stages use the range
Jesse Hall03b6fe12015-11-24 12:44:21 -08002943 u32 offset /// Start of the range, in bytes
2944 u32 size /// Length of the range, in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002945}
2946
2947class VkPipelineLayoutCreateInfo {
2948 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
2949 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002950 VkPipelineLayoutCreateFlags flags
Jesse Hall3dd678a2016-01-08 21:52:01 -08002951 u32 descriptorSetCount /// Number of descriptor sets interfaced by the pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07002952 const VkDescriptorSetLayout* pSetLayouts /// Array of <setCount> number of descriptor set layout objects defining the layout of the
2953 u32 pushConstantRangeCount /// Number of push-constant ranges used by the pipeline
2954 const VkPushConstantRange* pPushConstantRanges /// Array of pushConstantRangeCount number of ranges used by various shader stages
2955}
2956
2957class VkSamplerCreateInfo {
2958 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
2959 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002960 VkSamplerCreateFlags flags
Jesse Hall23ff73f2015-11-29 14:36:39 -08002961 VkFilter magFilter /// Filter mode for magnification
2962 VkFilter minFilter /// Filter mode for minifiation
2963 VkSamplerMipmapMode mipmapMode /// Mipmap selection mode
2964 VkSamplerAddressMode addressModeU
2965 VkSamplerAddressMode addressModeV
2966 VkSamplerAddressMode addressModeW
Jesse Halld27f6aa2015-08-15 17:58:48 -07002967 f32 mipLodBias
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002968 VkBool32 anisotropyEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002969 f32 maxAnisotropy
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002970 VkBool32 compareEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002971 VkCompareOp compareOp
2972 f32 minLod
2973 f32 maxLod
2974 VkBorderColor borderColor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002975 VkBool32 unnormalizedCoordinates
Jesse Halld27f6aa2015-08-15 17:58:48 -07002976}
2977
Jesse Hall3fbc8562015-11-29 22:10:52 -08002978class VkCommandPoolCreateInfo {
2979 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002980 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002981 VkCommandPoolCreateFlags flags /// Command pool creation flags
Jesse Halla6429252015-11-29 18:59:42 -08002982 u32 queueFamilyIndex
Jesse Halld27f6aa2015-08-15 17:58:48 -07002983}
2984
Jesse Hall3fbc8562015-11-29 22:10:52 -08002985class VkCommandBufferAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002986 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002987 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002988 VkCommandPool commandPool
2989 VkCommandBufferLevel level
Jesse Hall3dd678a2016-01-08 21:52:01 -08002990 u32 commandBufferCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002991}
2992
Jesse Hall3dd678a2016-01-08 21:52:01 -08002993class VkCommandBufferInheritanceInfo {
2994 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002995 const void* pNext /// Pointer to next structure
Jesse Halld27f6aa2015-08-15 17:58:48 -07002996 VkRenderPass renderPass /// Render pass for secondary command buffers
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002997 u32 subpass
Jesse Halld27f6aa2015-08-15 17:58:48 -07002998 VkFramebuffer framebuffer /// Framebuffer for secondary command buffers
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002999 VkBool32 occlusionQueryEnable
3000 VkQueryControlFlags queryFlags
3001 VkQueryPipelineStatisticFlags pipelineStatistics
Jesse Halld27f6aa2015-08-15 17:58:48 -07003002}
3003
Jesse Hall3dd678a2016-01-08 21:52:01 -08003004class VkCommandBufferBeginInfo {
3005 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
3006 const void* pNext /// Pointer to next structure
3007 VkCommandBufferUsageFlags flags /// Command buffer usage flags
3008 const VkCommandBufferInheritanceInfo* pInheritanceInfo
3009}
3010
Jesse Halld27f6aa2015-08-15 17:58:48 -07003011class VkRenderPassBeginInfo {
3012 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
3013 const void* pNext /// Pointer to next structure
3014 VkRenderPass renderPass
3015 VkFramebuffer framebuffer
3016 VkRect2D renderArea
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003017 u32 clearValueCount
3018 const VkClearValue* pClearValues
Jesse Halld27f6aa2015-08-15 17:58:48 -07003019}
3020
3021@union
3022/// Union allowing specification of floating point, integer, or unsigned integer color data. Actual value selected is based on image/attachment being cleared.
3023class VkClearColorValue {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003024 f32[4] float32
3025 s32[4] int32
3026 u32[4] uint32
Jesse Halld27f6aa2015-08-15 17:58:48 -07003027}
3028
3029class VkClearDepthStencilValue {
3030 f32 depth
3031 u32 stencil
3032}
3033
3034@union
3035/// Union allowing specification of color, depth, and stencil color values. Actual value selected is based on attachment being cleared.
3036class VkClearValue {
3037 VkClearColorValue color
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003038 VkClearDepthStencilValue depthStencil
Jesse Halld27f6aa2015-08-15 17:58:48 -07003039}
3040
Jesse Hallae38f732015-11-19 21:32:50 -08003041class VkClearAttachment {
3042 VkImageAspectFlags aspectMask
3043 u32 colorAttachment
3044 VkClearValue clearValue
3045}
3046
Jesse Halld27f6aa2015-08-15 17:58:48 -07003047class VkAttachmentDescription {
Jesse Halla6429252015-11-29 18:59:42 -08003048 VkAttachmentDescriptionFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003049 VkFormat format
Jesse Hall091ed9e2015-11-30 00:55:29 -08003050 VkSampleCountFlagBits samples
Jesse Halld27f6aa2015-08-15 17:58:48 -07003051 VkAttachmentLoadOp loadOp /// Load op for color or depth data
3052 VkAttachmentStoreOp storeOp /// Store op for color or depth data
3053 VkAttachmentLoadOp stencilLoadOp /// Load op for stencil data
3054 VkAttachmentStoreOp stencilStoreOp /// Store op for stencil data
3055 VkImageLayout initialLayout
3056 VkImageLayout finalLayout
3057}
3058
3059class VkAttachmentReference {
3060 u32 attachment
3061 VkImageLayout layout
3062}
3063
3064class VkSubpassDescription {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003065 VkSubpassDescriptionFlags flags
Jesse Halla6429252015-11-29 18:59:42 -08003066 VkPipelineBindPoint pipelineBindPoint /// Must be VK_PIPELINE_BIND_POINT_GRAPHICS for now
Jesse Hall03b6fe12015-11-24 12:44:21 -08003067 u32 inputAttachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003068 const VkAttachmentReference* pInputAttachments
Jesse Hall03b6fe12015-11-24 12:44:21 -08003069 u32 colorAttachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003070 const VkAttachmentReference* pColorAttachments
3071 const VkAttachmentReference* pResolveAttachments
Jesse Hallc7467b72015-11-29 21:05:26 -08003072 const VkAttachmentReference* pDepthStencilAttachment
Jesse Hall03b6fe12015-11-24 12:44:21 -08003073 u32 preserveAttachmentCount
Jesse Hall3dd678a2016-01-08 21:52:01 -08003074 const u32* pPreserveAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003075}
3076
3077class VkSubpassDependency {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003078 u32 srcSubpass
Jesse Hall3fbc8562015-11-29 22:10:52 -08003079 u32 dstSubpass
Jesse Halld27f6aa2015-08-15 17:58:48 -07003080 VkPipelineStageFlags srcStageMask
Jesse Hall3fbc8562015-11-29 22:10:52 -08003081 VkPipelineStageFlags dstStageMask
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003082 VkAccessFlags srcAccessMask
3083 VkAccessFlags dstAccessMask
Jesse Halldc6d36c2015-11-29 19:12:15 -08003084 VkDependencyFlags dependencyFlags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003085}
3086
3087class VkRenderPassCreateInfo {
3088 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
3089 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003090 VkRenderPassCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003091 u32 attachmentCount
3092 const VkAttachmentDescription* pAttachments
3093 u32 subpassCount
3094 const VkSubpassDescription* pSubpasses
3095 u32 dependencyCount
3096 const VkSubpassDependency* pDependencies
3097}
3098
3099class VkEventCreateInfo {
3100 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_EVENT_CREATE_INFO
3101 const void* pNext /// Pointer to next structure
3102 VkEventCreateFlags flags /// Event creation flags
3103}
3104
3105class VkFenceCreateInfo {
3106 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FENCE_CREATE_INFO
3107 const void* pNext /// Pointer to next structure
3108 VkFenceCreateFlags flags /// Fence creation flags
3109}
3110
3111class VkPhysicalDeviceFeatures {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003112 VkBool32 robustBufferAccess /// out of bounds buffer accesses are well defined
3113 VkBool32 fullDrawIndexUint32 /// full 32-bit range of indices for indexed draw calls
3114 VkBool32 imageCubeArray /// image views which are arrays of cube maps
3115 VkBool32 independentBlend /// blending operations are controlled per-attachment
3116 VkBool32 geometryShader /// geometry stage
3117 VkBool32 tessellationShader /// tessellation control and evaluation stage
3118 VkBool32 sampleRateShading /// per-sample shading and interpolation
Jesse Hall3fbc8562015-11-29 22:10:52 -08003119 VkBool32 dualSrcBlend /// blend operations which take two sources
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003120 VkBool32 logicOp /// logic operations
3121 VkBool32 multiDrawIndirect /// multi draw indirect
Jesse Hall543a7ff2016-01-08 16:38:30 -08003122 VkBool32 drawIndirectFirstInstance
Jesse Hallae38f732015-11-19 21:32:50 -08003123 VkBool32 depthClamp /// depth clamping
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003124 VkBool32 depthBiasClamp /// depth bias clamping
3125 VkBool32 fillModeNonSolid /// point and wireframe fill modes
3126 VkBool32 depthBounds /// depth bounds test
3127 VkBool32 wideLines /// lines with width greater than 1
3128 VkBool32 largePoints /// points with size greater than 1
Jesse Hallfbf97b02015-11-20 14:17:03 -08003129 VkBool32 alphaToOne /// The fragment alpha channel can be forced to maximum representable alpha value
3130 VkBool32 multiViewport
3131 VkBool32 samplerAnisotropy
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003132 VkBool32 textureCompressionETC2 /// ETC texture compression formats
3133 VkBool32 textureCompressionASTC_LDR /// ASTC LDR texture compression formats
3134 VkBool32 textureCompressionBC /// BC1-7 texture compressed formats
Jesse Hall65ab5522015-11-30 00:07:16 -08003135 VkBool32 occlusionQueryPrecise
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003136 VkBool32 pipelineStatisticsQuery /// pipeline statistics query
Jesse Halldc6d36c2015-11-29 19:12:15 -08003137 VkBool32 vertexPipelineStoresAndAtomics
3138 VkBool32 fragmentStoresAndAtomics
3139 VkBool32 shaderTessellationAndGeometryPointSize
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003140 VkBool32 shaderImageGatherExtended /// texture gather with run-time values and independent offsets
3141 VkBool32 shaderStorageImageExtendedFormats /// the extended set of formats can be used for storage images
3142 VkBool32 shaderStorageImageMultisample /// multisample images can be used for storage images
Jesse Halld1af8122015-11-29 23:50:38 -08003143 VkBool32 shaderStorageImageReadWithoutFormat
3144 VkBool32 shaderStorageImageWriteWithoutFormat
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003145 VkBool32 shaderUniformBufferArrayDynamicIndexing /// arrays of uniform buffers can be accessed with dynamically uniform indices
3146 VkBool32 shaderSampledImageArrayDynamicIndexing /// arrays of sampled images can be accessed with dynamically uniform indices
3147 VkBool32 shaderStorageBufferArrayDynamicIndexing /// arrays of storage buffers can be accessed with dynamically uniform indices
3148 VkBool32 shaderStorageImageArrayDynamicIndexing /// arrays of storage images can be accessed with dynamically uniform indices
3149 VkBool32 shaderClipDistance /// clip distance in shaders
3150 VkBool32 shaderCullDistance /// cull distance in shaders
3151 VkBool32 shaderFloat64 /// 64-bit floats (doubles) in shaders
3152 VkBool32 shaderInt64 /// 64-bit integers in shaders
3153 VkBool32 shaderInt16 /// 16-bit integers in shaders
3154 VkBool32 shaderResourceResidency /// shader can use texture operations that return resource residency information (requires sparseNonResident support)
Jesse Hall65ab5522015-11-30 00:07:16 -08003155 VkBool32 shaderResourceMinLod /// shader can use texture operations that specify minimum resource LOD
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003156 VkBool32 sparseBinding /// Sparse resources support: Resource memory can be managed at opaque page level rather than object level
3157 VkBool32 sparseResidencyBuffer /// Sparse resources support: GPU can access partially resident buffers
3158 VkBool32 sparseResidencyImage2D /// Sparse resources support: GPU can access partially resident 2D (non-MSAA non-DepthStencil) images
3159 VkBool32 sparseResidencyImage3D /// Sparse resources support: GPU can access partially resident 3D images
3160 VkBool32 sparseResidency2Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 2 samples
3161 VkBool32 sparseResidency4Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 4 samples
3162 VkBool32 sparseResidency8Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 8 samples
3163 VkBool32 sparseResidency16Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 16 samples
3164 VkBool32 sparseResidencyAliased /// Sparse resources support: GPU can correctly access data aliased into multiple locations (opt-in)
Jesse Halld1af8122015-11-29 23:50:38 -08003165 VkBool32 variableMultisampleRate
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003166 VkBool32 inheritedQueries
Jesse Halld27f6aa2015-08-15 17:58:48 -07003167}
3168
3169class VkPhysicalDeviceLimits {
3170 /// resource maximum sizes
3171 u32 maxImageDimension1D /// max 1D image dimension
3172 u32 maxImageDimension2D /// max 2D image dimension
3173 u32 maxImageDimension3D /// max 3D image dimension
3174 u32 maxImageDimensionCube /// max cubemap image dimension
3175 u32 maxImageArrayLayers /// max layers for image arrays
Jesse Hallb00daad2015-11-29 19:46:20 -08003176 u32 maxTexelBufferElements
Jesse Hallfbf97b02015-11-20 14:17:03 -08003177 u32 maxUniformBufferRange /// max uniform buffer size (bytes)
3178 u32 maxStorageBufferRange /// max storage buffer size (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003179 u32 maxPushConstantsSize /// max size of the push constants pool (bytes)
3180 /// memory limits
3181 u32 maxMemoryAllocationCount /// max number of device memory allocations supported
Jesse Hall091ed9e2015-11-30 00:55:29 -08003182 u32 maxSamplerAllocationCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003183 VkDeviceSize bufferImageGranularity /// Granularity (in bytes) at which buffers and images can be bound to adjacent memory for simultaneous usage
3184 VkDeviceSize sparseAddressSpaceSize /// Total address space available for sparse allocations (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003185 /// descriptor set limits
3186 u32 maxBoundDescriptorSets /// max number of descriptors sets that can be bound to a pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07003187 u32 maxPerStageDescriptorSamplers /// max num of samplers allowed per-stage in a descriptor set
3188 u32 maxPerStageDescriptorUniformBuffers /// max num of uniform buffers allowed per-stage in a descriptor set
3189 u32 maxPerStageDescriptorStorageBuffers /// max num of storage buffers allowed per-stage in a descriptor set
3190 u32 maxPerStageDescriptorSampledImages /// max num of sampled images allowed per-stage in a descriptor set
3191 u32 maxPerStageDescriptorStorageImages /// max num of storage images allowed per-stage in a descriptor set
Jesse Halle1b12782015-11-30 11:27:32 -08003192 u32 maxPerStageDescriptorInputAttachments
Jesse Halldba27f72015-11-30 14:25:46 -08003193 u32 maxPerStageResources
Jesse Halld27f6aa2015-08-15 17:58:48 -07003194 u32 maxDescriptorSetSamplers /// max num of samplers allowed in all stages in a descriptor set
3195 u32 maxDescriptorSetUniformBuffers /// max num of uniform buffers allowed in all stages in a descriptor set
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003196 u32 maxDescriptorSetUniformBuffersDynamic /// max num of dynamic uniform buffers allowed in all stages in a descriptor set
Jesse Halld27f6aa2015-08-15 17:58:48 -07003197 u32 maxDescriptorSetStorageBuffers /// max num of storage buffers allowed in all stages in a descriptor set
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003198 u32 maxDescriptorSetStorageBuffersDynamic /// max num of dynamic storage buffers allowed in all stages in a descriptor set
Jesse Halld27f6aa2015-08-15 17:58:48 -07003199 u32 maxDescriptorSetSampledImages /// max num of sampled images allowed in all stages in a descriptor set
3200 u32 maxDescriptorSetStorageImages /// max num of storage images allowed in all stages in a descriptor set
Jesse Halle1b12782015-11-30 11:27:32 -08003201 u32 maxDescriptorSetInputAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003202 /// vertex stage limits
3203 u32 maxVertexInputAttributes /// max num of vertex input attribute slots
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003204 u32 maxVertexInputBindings /// max num of vertex input binding slots
Jesse Halld27f6aa2015-08-15 17:58:48 -07003205 u32 maxVertexInputAttributeOffset /// max vertex input attribute offset added to vertex buffer offset
3206 u32 maxVertexInputBindingStride /// max vertex input binding stride
3207 u32 maxVertexOutputComponents /// max num of output components written by vertex shader
3208 /// tessellation control stage limits
Jesse Hall3fbc8562015-11-29 22:10:52 -08003209 u32 maxTessellationGenerationLevel /// max level supported by tess primitive generator
Jesse Hallae38f732015-11-19 21:32:50 -08003210 u32 maxTessellationPatchSize /// max patch size (vertices)
3211 u32 maxTessellationControlPerVertexInputComponents /// max num of input components per-vertex in TCS
3212 u32 maxTessellationControlPerVertexOutputComponents /// max num of output components per-vertex in TCS
3213 u32 maxTessellationControlPerPatchOutputComponents /// max num of output components per-patch in TCS
3214 u32 maxTessellationControlTotalOutputComponents /// max total num of per-vertex and per-patch output components in TCS
3215 u32 maxTessellationEvaluationInputComponents /// max num of input components per vertex in TES
3216 u32 maxTessellationEvaluationOutputComponents /// max num of output components per vertex in TES
Jesse Halld27f6aa2015-08-15 17:58:48 -07003217 /// geometry stage limits
3218 u32 maxGeometryShaderInvocations /// max invocation count supported in geometry shader
3219 u32 maxGeometryInputComponents /// max num of input components read in geometry stage
3220 u32 maxGeometryOutputComponents /// max num of output components written in geometry stage
3221 u32 maxGeometryOutputVertices /// max num of vertices that can be emitted in geometry stage
3222 u32 maxGeometryTotalOutputComponents /// max total num of components (all vertices) written in geometry stage
3223 /// fragment stage limits
3224 u32 maxFragmentInputComponents /// max num of input compontents read in fragment stage
Jesse Hallfbf97b02015-11-20 14:17:03 -08003225 u32 maxFragmentOutputAttachments /// max num of output attachments written in fragment stage
Jesse Hall3fbc8562015-11-29 22:10:52 -08003226 u32 maxFragmentDualSrcAttachments /// max num of output attachments written when using dual source blending
Jesse Halld27f6aa2015-08-15 17:58:48 -07003227 u32 maxFragmentCombinedOutputResources /// max total num of storage buffers, storage images and output buffers
3228 /// compute stage limits
3229 u32 maxComputeSharedMemorySize /// max total storage size of work group local storage (bytes)
3230 u32[3] maxComputeWorkGroupCount /// max num of compute work groups that may be dispatched by a single command (x,y,z)
3231 u32 maxComputeWorkGroupInvocations /// max total compute invocations in a single local work group
3232 u32[3] maxComputeWorkGroupSize /// max local size of a compute work group (x,y,z)
3233
3234 u32 subPixelPrecisionBits /// num bits of subpixel precision in screen x and y
3235 u32 subTexelPrecisionBits /// num bits of subtexel precision
3236 u32 mipmapPrecisionBits /// num bits of mipmap precision
3237
3238 u32 maxDrawIndexedIndexValue /// max index value for indexed draw calls (for 32-bit indices)
Jesse Halldba27f72015-11-30 14:25:46 -08003239 u32 maxDrawIndirectCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003240
3241 f32 maxSamplerLodBias /// max absolute sampler level of detail bias
3242 f32 maxSamplerAnisotropy /// max degree of sampler anisotropy
3243
3244 u32 maxViewports /// max number of active viewports
Jesse Halld27f6aa2015-08-15 17:58:48 -07003245 u32[2] maxViewportDimensions /// max viewport dimensions (x,y)
3246 f32[2] viewportBoundsRange /// viewport bounds range (min,max)
3247 u32 viewportSubPixelBits /// num bits of subpixel precision for viewport
3248
Jesse Halldc6d36c2015-11-29 19:12:15 -08003249 platform.size_t minMemoryMapAlignment /// min required alignment of pointers returned by MapMemory (bytes)
3250 VkDeviceSize minTexelBufferOffsetAlignment /// min required alignment for texel buffer offsets (bytes)
3251 VkDeviceSize minUniformBufferOffsetAlignment /// min required alignment for uniform buffer sizes and offsets (bytes)
3252 VkDeviceSize minStorageBufferOffsetAlignment /// min required alignment for storage buffer offsets (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003253
Jesse Hallfbf97b02015-11-20 14:17:03 -08003254 s32 minTexelOffset /// min texel offset for OpTextureSampleOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07003255 u32 maxTexelOffset /// max texel offset for OpTextureSampleOffset
Jesse Hallfbf97b02015-11-20 14:17:03 -08003256 s32 minTexelGatherOffset /// min texel offset for OpTextureGatherOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07003257 u32 maxTexelGatherOffset /// max texel offset for OpTextureGatherOffset
3258 f32 minInterpolationOffset /// furthest negative offset for interpolateAtOffset
3259 f32 maxInterpolationOffset /// furthest positive offset for interpolateAtOffset
3260 u32 subPixelInterpolationOffsetBits /// num of subpixel bits for interpolateAtOffset
3261
3262 u32 maxFramebufferWidth /// max width for a framebuffer
3263 u32 maxFramebufferHeight /// max height for a framebuffer
3264 u32 maxFramebufferLayers /// max layer count for a layered framebuffer
Jesse Hall091ed9e2015-11-30 00:55:29 -08003265 VkSampleCountFlags framebufferColorSampleCounts
3266 VkSampleCountFlags framebufferDepthSampleCounts
3267 VkSampleCountFlags framebufferStencilSampleCounts
3268 VkSampleCountFlags framebufferNoAttachmentSampleCounts
Jesse Halld27f6aa2015-08-15 17:58:48 -07003269 u32 maxColorAttachments /// max num of framebuffer color attachments
3270
Jesse Hall091ed9e2015-11-30 00:55:29 -08003271 VkSampleCountFlags sampledImageColorSampleCounts
3272 VkSampleCountFlags sampledImageIntegerSampleCounts
3273 VkSampleCountFlags sampledImageDepthSampleCounts
3274 VkSampleCountFlags sampledImageStencilSampleCounts
3275 VkSampleCountFlags storageImageSampleCounts
Jesse Halld27f6aa2015-08-15 17:58:48 -07003276 u32 maxSampleMaskWords /// max num of sample mask words
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003277 VkBool32 timestampComputeAndGraphics
Jesse Halld27f6aa2015-08-15 17:58:48 -07003278
Jesse Halla9bb62b2015-11-21 19:31:56 -08003279 f32 timestampPeriod
Jesse Halld27f6aa2015-08-15 17:58:48 -07003280
3281 u32 maxClipDistances /// max number of clip distances
3282 u32 maxCullDistances /// max number of cull distances
3283 u32 maxCombinedClipAndCullDistances /// max combined number of user clipping
3284
Jesse Hallfbf97b02015-11-20 14:17:03 -08003285 u32 discreteQueuePriorities
3286
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003287 f32[2] pointSizeRange /// range (min,max) of supported point sizes
3288 f32[2] lineWidthRange /// range (min,max) of supported line widths
Jesse Halld27f6aa2015-08-15 17:58:48 -07003289 f32 pointSizeGranularity /// granularity of supported point sizes
3290 f32 lineWidthGranularity /// granularity of supported line widths
Jesse Hall03b6fe12015-11-24 12:44:21 -08003291 VkBool32 strictLines
Jesse Hall091ed9e2015-11-30 00:55:29 -08003292 VkBool32 standardSampleLocations
Jesse Halla9bb62b2015-11-21 19:31:56 -08003293
Jesse Hall65ab5522015-11-30 00:07:16 -08003294 VkDeviceSize optimalBufferCopyOffsetAlignment
3295 VkDeviceSize optimalBufferCopyRowPitchAlignment
Jesse Halldba27f72015-11-30 14:25:46 -08003296 VkDeviceSize nonCoherentAtomSize
Jesse Halld27f6aa2015-08-15 17:58:48 -07003297}
3298
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003299class VkPhysicalDeviceSparseProperties {
3300 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 -08003301 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 -07003302 VkBool32 residencyStandard3DBlockShape /// Sparse resources support: GPU will access all 3D sparse resources using the standard block shapes (based on pixel format)
3303 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 -07003304 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
3305}
3306
Jesse Halld27f6aa2015-08-15 17:58:48 -07003307class VkSemaphoreCreateInfo {
3308 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
3309 const void* pNext /// Pointer to next structure
3310 VkSemaphoreCreateFlags flags /// Semaphore creation flags
3311}
3312
3313class VkQueryPoolCreateInfo {
3314 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
3315 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003316 VkQueryPoolCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003317 VkQueryType queryType
Jesse Hall3dd678a2016-01-08 21:52:01 -08003318 u32 queryCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003319 VkQueryPipelineStatisticFlags pipelineStatistics /// Optional
3320}
3321
3322class VkFramebufferCreateInfo {
3323 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
3324 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003325 VkFramebufferCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003326 VkRenderPass renderPass
3327 u32 attachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003328 const VkImageView* pAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003329 u32 width
3330 u32 height
3331 u32 layers
3332}
3333
Jesse Hall3fbc8562015-11-29 22:10:52 -08003334class VkDrawIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003335 u32 vertexCount
3336 u32 instanceCount
3337 u32 firstVertex
3338 u32 firstInstance
3339}
3340
Jesse Hall3fbc8562015-11-29 22:10:52 -08003341class VkDrawIndexedIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003342 u32 indexCount
3343 u32 instanceCount
3344 u32 firstIndex
3345 s32 vertexOffset
3346 u32 firstInstance
3347}
3348
Jesse Hall3fbc8562015-11-29 22:10:52 -08003349class VkDispatchIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003350 u32 x
3351 u32 y
3352 u32 z
3353}
3354
Jesse Hallad250842017-03-10 18:35:38 -08003355@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08003356class VkSurfaceCapabilitiesKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003357 u32 minImageCount
3358 u32 maxImageCount
3359 VkExtent2D currentExtent
3360 VkExtent2D minImageExtent
3361 VkExtent2D maxImageExtent
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003362 u32 maxImageArrayLayers
Jesse Hall1356b0d2015-11-23 17:24:58 -08003363 VkSurfaceTransformFlagsKHR supportedTransforms
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003364 VkSurfaceTransformFlagBitsKHR currentTransform
Jesse Halla6429252015-11-29 18:59:42 -08003365 VkCompositeAlphaFlagsKHR supportedCompositeAlpha
Jesse Hall1356b0d2015-11-23 17:24:58 -08003366 VkImageUsageFlags supportedUsageFlags
Michael Lentine88594d72015-11-12 12:49:45 -08003367}
3368
Jesse Hallad250842017-03-10 18:35:38 -08003369@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08003370class VkSurfaceFormatKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003371 VkFormat format
3372 VkColorSpaceKHR colorSpace
Michael Lentine88594d72015-11-12 12:49:45 -08003373}
3374
Jesse Hallad250842017-03-10 18:35:38 -08003375@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08003376class VkSwapchainCreateInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003377 VkStructureType sType
3378 const void* pNext
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003379 VkSwapchainCreateFlagsKHR flags
Jesse Hall1356b0d2015-11-23 17:24:58 -08003380 VkSurfaceKHR surface
3381 u32 minImageCount
3382 VkFormat imageFormat
3383 VkColorSpaceKHR imageColorSpace
3384 VkExtent2D imageExtent
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003385 u32 imageArrayLayers
3386 VkImageUsageFlags imageUsage
Jesse Hall1356b0d2015-11-23 17:24:58 -08003387 VkSharingMode sharingMode
Jesse Hall03b6fe12015-11-24 12:44:21 -08003388 u32 queueFamilyIndexCount
Jesse Hall1356b0d2015-11-23 17:24:58 -08003389 const u32* pQueueFamilyIndices
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003390 VkSurfaceTransformFlagBitsKHR preTransform
3391 VkCompositeAlphaFlagBitsKHR compositeAlpha
Jesse Hall1356b0d2015-11-23 17:24:58 -08003392 VkPresentModeKHR presentMode
Jesse Hall1356b0d2015-11-23 17:24:58 -08003393 VkBool32 clipped
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003394 VkSwapchainKHR oldSwapchain
Michael Lentine88594d72015-11-12 12:49:45 -08003395}
3396
Jesse Hallad250842017-03-10 18:35:38 -08003397@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08003398class VkPresentInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003399 VkStructureType sType
3400 const void* pNext
Jesse Hallb00daad2015-11-29 19:46:20 -08003401 u32 waitSemaphoreCount
3402 const VkSemaphore* pWaitSemaphores
Jesse Hall1356b0d2015-11-23 17:24:58 -08003403 u32 swapchainCount
Jesse Hall03b6fe12015-11-24 12:44:21 -08003404 const VkSwapchainKHR* pSwapchains
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003405 const u32* pImageIndices
Jesse Halle1b12782015-11-30 11:27:32 -08003406 VkResult* pResults
Michael Lentine88594d72015-11-12 12:49:45 -08003407}
3408
Jesse Hallad250842017-03-10 18:35:38 -08003409@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003410class VkDisplayPropertiesKHR {
3411 VkDisplayKHR display
3412 const char* displayName
3413 VkExtent2D physicalDimensions
3414 VkExtent2D physicalResolution
3415 VkSurfaceTransformFlagsKHR supportedTransforms
Jesse Hall1356b0d2015-11-23 17:24:58 -08003416 VkBool32 planeReorderPossible
Jesse Halla6429252015-11-29 18:59:42 -08003417 VkBool32 persistentContent
Michael Lentine88594d72015-11-12 12:49:45 -08003418}
3419
Jesse Hallad250842017-03-10 18:35:38 -08003420@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003421class VkDisplayModeParametersKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003422 VkExtent2D visibleRegion
Jesse Halla6429252015-11-29 18:59:42 -08003423 u32 refreshRate
Michael Lentine88594d72015-11-12 12:49:45 -08003424}
Jesse Halld27f6aa2015-08-15 17:58:48 -07003425
Jesse Hallad250842017-03-10 18:35:38 -08003426@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003427class VkDisplayModePropertiesKHR {
3428 VkDisplayModeKHR displayMode
Jesse Halla6429252015-11-29 18:59:42 -08003429 VkDisplayModeParametersKHR parameters
Jesse Hall1356b0d2015-11-23 17:24:58 -08003430}
3431
Jesse Hallad250842017-03-10 18:35:38 -08003432@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003433class VkDisplayModeCreateInfoKHR {
3434 VkStructureType sType
3435 const void* pNext
Jesse Hall9ba8bc82015-11-30 16:22:16 -08003436 VkDisplayModeCreateFlagsKHR flags
Jesse Halla6429252015-11-29 18:59:42 -08003437 VkDisplayModeParametersKHR parameters
Jesse Hall1356b0d2015-11-23 17:24:58 -08003438}
3439
Jesse Hallad250842017-03-10 18:35:38 -08003440@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003441class VkDisplayPlanePropertiesKHR {
Jesse Halla6429252015-11-29 18:59:42 -08003442 VkDisplayKHR currentDisplay
3443 u32 currentStackIndex
3444}
3445
Jesse Hallad250842017-03-10 18:35:38 -08003446@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003447class VkDisplayPlaneCapabilitiesKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003448 VkDisplayPlaneAlphaFlagsKHR supportedAlpha
3449 VkOffset2D minSrcPosition
3450 VkOffset2D maxSrcPosition
3451 VkExtent2D minSrcExtent
3452 VkExtent2D maxSrcExtent
3453 VkOffset2D minDstPosition
3454 VkOffset2D maxDstPosition
3455 VkExtent2D minDstExtent
3456 VkExtent2D maxDstExtent
3457}
3458
Jesse Hallad250842017-03-10 18:35:38 -08003459@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003460class VkDisplaySurfaceCreateInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003461 VkStructureType sType
3462 const void* pNext
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003463 VkDisplaySurfaceCreateFlagsKHR flags
Jesse Hall1356b0d2015-11-23 17:24:58 -08003464 VkDisplayModeKHR displayMode
3465 u32 planeIndex
3466 u32 planeStackIndex
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003467 VkSurfaceTransformFlagBitsKHR transform
Jesse Hall1356b0d2015-11-23 17:24:58 -08003468 f32 globalAlpha
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003469 VkDisplayPlaneAlphaFlagBitsKHR alphaMode
3470 VkExtent2D imageExtent
Jesse Hall1356b0d2015-11-23 17:24:58 -08003471}
3472
Jesse Hallad250842017-03-10 18:35:38 -08003473@extension("VK_KHR_display_swapchain") // 4
Jesse Hall1356b0d2015-11-23 17:24:58 -08003474class VkDisplayPresentInfoKHR {
3475 VkStructureType sType
3476 const void* pNext
3477 VkRect2D srcRect
3478 VkRect2D dstRect
Jesse Halla6429252015-11-29 18:59:42 -08003479 VkBool32 persistent
Jesse Hall1356b0d2015-11-23 17:24:58 -08003480}
3481
Jesse Hallad250842017-03-10 18:35:38 -08003482@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003483class VkXlibSurfaceCreateInfoKHR {
3484 VkStructureType sType
3485 const void* pNext
3486 VkXlibSurfaceCreateFlagsKHR flags
3487 platform.Display* dpy
3488 platform.Window window
3489}
3490
Jesse Hallad250842017-03-10 18:35:38 -08003491@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003492class VkXcbSurfaceCreateInfoKHR {
3493 VkStructureType sType
3494 const void* pNext
3495 VkXcbSurfaceCreateFlagsKHR flags
3496 platform.xcb_connection_t* connection
3497 platform.xcb_window_t window
3498}
3499
Jesse Hallad250842017-03-10 18:35:38 -08003500@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003501class VkWaylandSurfaceCreateInfoKHR {
3502 VkStructureType sType
3503 const void* pNext
3504 VkWaylandSurfaceCreateFlagsKHR flags
3505 platform.wl_display* display
3506 platform.wl_surface* surface
3507}
3508
Jesse Hallad250842017-03-10 18:35:38 -08003509@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003510class VkMirSurfaceCreateInfoKHR {
3511 VkStructureType sType
3512 const void* pNext
3513 VkMirSurfaceCreateFlagsKHR flags
3514 platform.MirConnection* connection
3515 platform.MirSurface* mirSurface
3516}
3517
Jesse Hallad250842017-03-10 18:35:38 -08003518@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003519class VkAndroidSurfaceCreateInfoKHR {
3520 VkStructureType sType
3521 const void* pNext
3522 VkAndroidSurfaceCreateFlagsKHR flags
3523 platform.ANativeWindow* window
3524}
3525
Jesse Hallad250842017-03-10 18:35:38 -08003526@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003527class VkWin32SurfaceCreateInfoKHR {
3528 VkStructureType sType
3529 const void* pNext
3530 VkWin32SurfaceCreateFlagsKHR flags
3531 platform.HINSTANCE hinstance
3532 platform.HWND hwnd
3533}
3534
Jesse Hallad250842017-03-10 18:35:38 -08003535@extension("VK_ANDROID_native_buffer") // 11
Jesse Halld1abd742017-02-09 21:45:51 -08003536@internal class Gralloc1Usage {
3537 u64 consumer
3538 u64 producer
3539}
3540
Jesse Hallad250842017-03-10 18:35:38 -08003541@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08003542class VkNativeBufferANDROID {
3543 VkStructureType sType
3544 const void* pNext
3545 platform.buffer_handle_t handle
Jesse Halld1abd742017-02-09 21:45:51 -08003546 s32 stride
3547 s32 format
3548 s32 usage
3549 Gralloc1Usage usage2
Chia-I Wub262ddc2016-03-22 07:38:20 +08003550}
3551
Jesse Hallad250842017-03-10 18:35:38 -08003552@extension("VK_ANDROID_native_buffer") // 11
Chris Forbes8e4438b2016-12-07 16:26:49 +13003553class VkSwapchainImageCreateInfoANDROID {
3554 VkStructureType sType
3555 const void* pNext
Chris Forbes134d9582017-01-12 14:26:37 +13003556 VkSwapchainImageUsageFlagsANDROID flags
Chris Forbes48853712017-01-12 14:09:33 +13003557}
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07003558
Jesse Hallad250842017-03-10 18:35:38 -08003559@extension("VK_ANDROID_native_buffer") // 11
Chris Forbes1d4e5542017-02-15 19:38:50 +13003560class VkPhysicalDevicePresentationPropertiesANDROID {
3561 VkStructureType sType
3562 void* pNext
3563 VkBool32 sharedImage
3564}
3565
Jesse Hallad250842017-03-10 18:35:38 -08003566@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08003567class VkDebugReportCallbackCreateInfoEXT {
3568 VkStructureType sType
3569 const void* pNext
3570 VkDebugReportFlagsEXT flags
3571 PFN_vkDebugReportCallbackEXT pfnCallback
3572 void* pUserData
3573}
3574
Jesse Hallad250842017-03-10 18:35:38 -08003575@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07003576class VkPipelineRasterizationStateRasterizationOrderAMD {
3577 VkStructureType sType
3578 const void* pNext
3579 VkRasterizationOrderAMD rasterizationOrder
3580}
3581
Jesse Hallad250842017-03-10 18:35:38 -08003582@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003583class VkDebugMarkerObjectNameInfoEXT {
3584 VkStructureType sType
3585 const void* pNext
3586 VkDebugReportObjectTypeEXT objectType
3587 u64 object
3588 const char* pObjectName
3589}
3590
Jesse Hallad250842017-03-10 18:35:38 -08003591@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003592class VkDebugMarkerObjectTagInfoEXT {
3593 VkStructureType sType
3594 const void* pNext
3595 VkDebugReportObjectTypeEXT objectType
3596 u64 object
3597 u64 tagName
3598 platform.size_t tagSize
3599 const void* pTag
3600}
3601
Jesse Hallad250842017-03-10 18:35:38 -08003602@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003603class VkDebugMarkerMarkerInfoEXT {
3604 VkStructureType sType
3605 const void* pNext
3606 const char* pMarkerName
3607 f32[4] color
3608}
3609
Jesse Hallad250842017-03-10 18:35:38 -08003610@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07003611class VkDedicatedAllocationImageCreateInfoNV {
3612 VkStructureType sType
3613 const void* pNext
3614 VkBool32 dedicatedAllocation
3615}
3616
Jesse Hallad250842017-03-10 18:35:38 -08003617@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07003618class VkDedicatedAllocationBufferCreateInfoNV {
3619 VkStructureType sType
3620 const void* pNext
3621 VkBool32 dedicatedAllocation
3622}
3623
Jesse Hallad250842017-03-10 18:35:38 -08003624@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07003625class VkDedicatedAllocationMemoryAllocateInfoNV {
3626 VkStructureType sType
3627 const void* pNext
3628 VkImage image
3629 VkBuffer buffer
3630}
3631
Jesse Hall7ba0ac72017-07-07 17:13:23 -07003632@extension("VK_AMD_texture_gather_bias_lod") // 42
3633class VkTextureLODGatherFormatPropertiesAMD {
3634 VkStructureType sType
3635 void* pNext
3636 VkBool32 supportsTextureGatherLODBiasAMD
3637}
3638
Jesse Hallad250842017-03-10 18:35:38 -08003639@extension("VK_KHX_multiview") // 54
3640class VkRenderPassMultiviewCreateInfoKHX {
3641 VkStructureType sType
3642 const void* pNext
3643 u32 subpassCount
3644 const u32* pViewMasks
3645 u32 dependencyCount
3646 const s32* pViewOffsets
3647 u32 correlationMaskCount
3648 const u32* pCorrelationMasks
3649}
3650
3651@extension("VK_KHX_multiview") // 54
3652class VkPhysicalDeviceMultiviewFeaturesKHX {
3653 VkStructureType sType
3654 void* pNext
3655 VkBool32 multiview
3656 VkBool32 multiviewGeometryShader
3657 VkBool32 multiviewTessellationShader
3658}
3659
3660@extension("VK_KHX_multiview") // 54
3661class VkPhysicalDeviceMultiviewPropertiesKHX {
3662 VkStructureType sType
3663 void* pNext
3664 u32 maxMultiviewViewCount
3665 u32 maxMultiviewInstanceIndex
3666}
3667
3668@extension("VK_NV_external_memory_capabilities") // 56
Jesse Halleb02c472017-02-24 15:13:45 -08003669class VkExternalImageFormatPropertiesNV {
3670 VkImageFormatProperties imageFormatProperties
3671 VkExternalMemoryFeatureFlagsNV externalMemoryFeatures
3672 VkExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes
3673 VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes
3674}
3675
Jesse Hallad250842017-03-10 18:35:38 -08003676@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08003677class VkExternalMemoryImageCreateInfoNV {
3678 VkStructureType sType
3679 const void* pNext
3680 VkExternalMemoryHandleTypeFlagsNV handleTypes
3681}
3682
Jesse Hallad250842017-03-10 18:35:38 -08003683@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08003684class VkExportMemoryAllocateInfoNV {
3685 VkStructureType sType
3686 const void* pNext
3687 VkExternalMemoryHandleTypeFlagsNV handleTypes
3688}
3689
Jesse Hallad250842017-03-10 18:35:38 -08003690@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08003691class VkImportMemoryWin32HandleInfoNV {
3692 VkStructureType sType
3693 const void* pNext
3694 VkExternalMemoryHandleTypeFlagsNV handleType
3695 platform.HANDLE handle
3696}
3697
Jesse Hallad250842017-03-10 18:35:38 -08003698@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08003699class VkExportMemoryWin32HandleInfoNV {
3700 VkStructureType sType
3701 const void* pNext
3702 const platform.SECURITY_ATTRIBUTES* pAttributes
3703 platform.DWORD dwAccess
3704}
3705
Jesse Hallad250842017-03-10 18:35:38 -08003706@extension("VK_NV_win32_keyed_mutex") // 59
Jesse Halleb02c472017-02-24 15:13:45 -08003707class VkWin32KeyedMutexAcquireReleaseInfoNV {
3708 VkStructureType sType
3709 const void* pNext
3710 u32 acquireCount
3711 const VkDeviceMemory* pAcquireSyncs
3712 const u64* pAcquireKeys
3713 const u32* pAcquireTimeoutMilliseconds
3714 u32 releaseCount
3715 const VkDeviceMemory* pReleaseSyncs
3716 const u64* pReleaseKeys
3717}
3718
Jesse Hallad250842017-03-10 18:35:38 -08003719@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003720class VkPhysicalDeviceFeatures2KHR {
3721 VkStructureType sType
3722 void* pNext
3723 VkPhysicalDeviceFeatures features
3724}
3725
Jesse Hallad250842017-03-10 18:35:38 -08003726@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003727class VkPhysicalDeviceProperties2KHR {
3728 VkStructureType sType
3729 void* pNext
3730 VkPhysicalDeviceProperties properties
3731}
3732
Jesse Hallad250842017-03-10 18:35:38 -08003733@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003734class VkFormatProperties2KHR {
3735 VkStructureType sType
3736 void* pNext
3737 VkFormatProperties formatProperties
3738}
3739
Jesse Hallad250842017-03-10 18:35:38 -08003740@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003741class VkImageFormatProperties2KHR {
3742 VkStructureType sType
3743 void* pNext
3744 VkImageFormatProperties imageFormatProperties
3745}
3746
Jesse Hallad250842017-03-10 18:35:38 -08003747@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003748class VkPhysicalDeviceImageFormatInfo2KHR {
3749 VkStructureType sType
3750 const void* pNext
3751 VkFormat format
3752 VkImageType type
3753 VkImageTiling tiling
3754 VkImageUsageFlags usage
3755 VkImageCreateFlags flags
3756}
3757
Jesse Hallad250842017-03-10 18:35:38 -08003758@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003759class VkQueueFamilyProperties2KHR {
3760 VkStructureType sType
3761 void* pNext
3762 VkQueueFamilyProperties queueFamilyProperties
3763}
3764
Jesse Hallad250842017-03-10 18:35:38 -08003765@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003766class VkPhysicalDeviceMemoryProperties2KHR {
3767 VkStructureType sType
3768 void* pNext
3769 VkPhysicalDeviceMemoryProperties memoryProperties
3770}
3771
Jesse Hallad250842017-03-10 18:35:38 -08003772@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003773class VkSparseImageFormatProperties2KHR {
3774 VkStructureType sType
3775 void* pNext
3776 VkSparseImageFormatProperties properties
3777}
3778
Jesse Hallad250842017-03-10 18:35:38 -08003779@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003780class VkPhysicalDeviceSparseImageFormatInfo2KHR {
3781 VkStructureType sType
3782 const void* pNext
3783 VkFormat format
3784 VkImageType type
3785 VkSampleCountFlagBits samples
3786 VkImageUsageFlags usage
3787 VkImageTiling tiling
3788}
3789
Jesse Hallad250842017-03-10 18:35:38 -08003790@extension("VK_KHX_device_group") // 61
3791class VkMemoryAllocateFlagsInfoKHX {
3792 VkStructureType sType
3793 const void* pNext
3794 VkMemoryAllocateFlagsKHX flags
3795 u32 deviceMask
3796}
3797
3798@extension("VK_KHX_device_group") // 61
3799class VkBindBufferMemoryInfoKHX {
3800 VkStructureType sType
3801 const void* pNext
3802 VkBuffer buffer
3803 VkDeviceMemory memory
3804 VkDeviceSize memoryOffset
3805 u32 deviceIndexCount
3806 const u32* pDeviceIndices
3807}
3808
3809@extension("VK_KHX_device_group") // 61
3810class VkBindImageMemoryInfoKHX {
3811 VkStructureType sType
3812 const void* pNext
3813 VkImage image
3814 VkDeviceMemory memory
3815 VkDeviceSize memoryOffset
3816 u32 deviceIndexCount
3817 const u32* pDeviceIndices
3818 u32 SFRRectCount
3819 const VkRect2D* pSFRRects
3820}
3821
3822@extension("VK_KHX_device_group") // 61
3823class VkDeviceGroupRenderPassBeginInfoKHX {
3824 VkStructureType sType
3825 const void* pNext
3826 u32 deviceMask
3827 u32 deviceRenderAreaCount
3828 const VkRect2D* pDeviceRenderAreas
3829}
3830
3831@extension("VK_KHX_device_group") // 61
3832class VkDeviceGroupCommandBufferBeginInfoKHX {
3833 VkStructureType sType
3834 const void* pNext
3835 u32 deviceMask
3836}
3837
3838@extension("VK_KHX_device_group") // 61
3839class VkDeviceGroupSubmitInfoKHX {
3840 VkStructureType sType
3841 const void* pNext
3842 u32 waitSemaphoreCount
3843 const u32* pWaitSemaphoreDeviceIndices
3844 u32 commandBufferCount
3845 const u32* pCommandBufferDeviceMasks
3846 u32 signalSemaphoreCount
3847 const u32* pSignalSemaphoreDeviceIndices
3848}
3849
3850@extension("VK_KHX_device_group") // 61
3851class VkDeviceGroupBindSparseInfoKHX {
3852 VkStructureType sType
3853 const void* pNext
3854 u32 resourceDeviceIndex
3855 u32 memoryDeviceIndex
3856}
3857
3858@extension("VK_KHX_device_group") // 61
3859class VkDeviceGroupPresentCapabilitiesKHX {
3860 VkStructureType sType
3861 const void* pNext
3862 u32[VK_MAX_DEVICE_GROUP_SIZE_KHX] presentMask
3863 VkDeviceGroupPresentModeFlagsKHX modes
3864}
3865
3866@extension("VK_KHX_device_group") // 61
3867class VkImageSwapchainCreateInfoKHX {
3868 VkStructureType sType
3869 const void* pNext
3870 VkSwapchainKHR swapchain
3871}
3872
3873@extension("VK_KHX_device_group") // 61
3874class VkBindImageMemorySwapchainInfoKHX {
3875 VkStructureType sType
3876 const void* pNext
3877 VkSwapchainKHR swapchain
3878 u32 imageIndex
3879}
3880
3881@extension("VK_KHX_device_group") // 61
3882class VkAcquireNextImageInfoKHX {
3883 VkStructureType sType
3884 const void* pNext
3885 VkSwapchainKHR swapchain
3886 u64 timeout
3887 VkSemaphore semaphore
3888 VkFence fence
3889 u32 deviceMask
3890}
3891
3892@extension("VK_KHX_device_group") // 61
3893class VkDeviceGroupPresentInfoKHX {
3894 VkStructureType sType
3895 const void* pNext
3896 u32 swapchainCount
3897 const u32* pDeviceMasks
3898 VkDeviceGroupPresentModeFlagBitsKHX mode
3899}
3900
3901@extension("VK_KHX_device_group") // 61
3902class VkDeviceGroupSwapchainCreateInfoKHX {
3903 VkStructureType sType
3904 const void* pNext
3905 VkDeviceGroupPresentModeFlagsKHX modes
3906}
3907
3908@extension("VK_EXT_validation_flags") // 62
Chris Forbes289cb792016-12-30 15:03:55 +13003909class VkValidationFlagsEXT {
3910 VkStructureType sType
3911 const void* pNext
3912 u32 disabledValidationCheckCount
3913 VkValidationCheckEXT* pDisabledValidationChecks
3914}
3915
Jesse Hallad250842017-03-10 18:35:38 -08003916@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08003917class VkViSurfaceCreateInfoNN {
3918 VkStructureType sType
3919 const void* pNext
3920 VkViSurfaceCreateFlagsNN flags
3921 void* window
3922}
3923
Jesse Hallad250842017-03-10 18:35:38 -08003924@extension("VK_KHX_device_group_creation") // 71
3925class VkPhysicalDeviceGroupPropertiesKHX {
3926 VkStructureType sType
Jesse Hallf5ad48b2017-03-20 13:09:19 -07003927 void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08003928 u32 physicalDeviceCount
3929 VkPhysicalDevice[VK_MAX_DEVICE_GROUP_SIZE_KHX] physicalDevices
3930 VkBool32 subsetAllocation
3931}
3932
3933@extension("VK_KHX_device_group_creation") // 71
3934class VkDeviceGroupDeviceCreateInfoKHX {
3935 VkStructureType sType
3936 const void* pNext
3937 u32 physicalDeviceCount
3938 const VkPhysicalDevice* pPhysicalDevices
3939}
3940
3941@extension("VK_KHX_external_memory_capabilities") // 72
3942class VkExternalMemoryPropertiesKHX {
3943 VkExternalMemoryFeatureFlagsKHX externalMemoryFeatures
3944 VkExternalMemoryHandleTypeFlagsKHX exportFromImportedHandleTypes
3945 VkExternalMemoryHandleTypeFlagsKHX compatibleHandleTypes
3946}
3947
3948@extension("VK_KHX_external_memory_capabilities") // 72
3949class VkPhysicalDeviceExternalImageFormatInfoKHX {
3950 VkStructureType sType
3951 const void* pNext
3952 VkExternalMemoryHandleTypeFlagBitsKHX handleType
3953}
3954
3955@extension("VK_KHX_external_memory_capabilities") // 72
3956class VkExternalImageFormatPropertiesKHX {
3957 VkStructureType sType
3958 void* pNext
3959 VkExternalMemoryPropertiesKHX externalMemoryProperties
3960}
3961
3962@extension("VK_KHX_external_memory_capabilities") // 72
3963class VkPhysicalDeviceExternalBufferInfoKHX {
3964 VkStructureType sType
3965 const void* pNext
3966 VkBufferCreateFlags flags
3967 VkBufferUsageFlags usage
3968 VkExternalMemoryHandleTypeFlagBitsKHX handleType
3969}
3970
3971@extension("VK_KHX_external_memory_capabilities") // 72
3972class VkExternalBufferPropertiesKHX {
3973 VkStructureType sType
3974 void* pNext
3975 VkExternalMemoryPropertiesKHX externalMemoryProperties
3976}
3977
3978@extension("VK_KHX_external_memory_capabilities") // 72
3979class VkPhysicalDeviceIDPropertiesKHX {
3980 VkStructureType sType
3981 void* pNext
3982 u8[VK_UUID_SIZE] deviceUUID
3983 u8[VK_UUID_SIZE] driverUUID
3984 u8[VK_LUID_SIZE_KHX] deviceLUID
3985 VkBool32 deviceLUIDValid
3986}
3987
Jesse Hallad250842017-03-10 18:35:38 -08003988@extension("VK_KHX_external_memory") // 73
3989class VkExternalMemoryImageCreateInfoKHX {
3990 VkStructureType sType
3991 const void* pNext
3992 VkExternalMemoryHandleTypeFlagsKHX handleTypes
3993}
3994
3995@extension("VK_KHX_external_memory") // 73
3996class VkExternalMemoryBufferCreateInfoKHX {
3997 VkStructureType sType
3998 const void* pNext
3999 VkExternalMemoryHandleTypeFlagsKHX handleTypes
4000}
4001
4002@extension("VK_KHX_external_memory") // 73
4003class VkExportMemoryAllocateInfoKHX {
4004 VkStructureType sType
4005 const void* pNext
4006 VkExternalMemoryHandleTypeFlagsKHX handleTypes
4007}
4008
4009@extension("VK_KHX_external_memory_win32") // 74
4010class VkImportMemoryWin32HandleInfoKHX {
4011 VkStructureType sType
4012 const void* pNext
4013 VkExternalMemoryHandleTypeFlagBitsKHX handleType
4014 platform.HANDLE handle
4015}
4016
4017@extension("VK_KHX_external_memory_win32") // 74
4018class VkExportMemoryWin32HandleInfoKHX {
4019 VkStructureType sType
4020 const void* pNext
4021 const platform.SECURITY_ATTRIBUTES* pAttributes
4022 platform.DWORD dwAccess
4023 platform.LPCWSTR name
4024}
4025
4026@extension("VK_KHX_external_memory_win32") // 74
4027class VkMemoryWin32HandlePropertiesKHX {
4028 VkStructureType sType
4029 void* pNext
4030 u32 memoryTypeBits
4031}
4032
4033@extension("VK_KHX_external_memory_fd") // 75
4034class VkImportMemoryFdInfoKHX {
4035 VkStructureType sType
4036 const void* pNext
4037 VkExternalMemoryHandleTypeFlagBitsKHX handleType
4038 int fd
4039}
4040
4041@extension("VK_KHX_external_memory_fd") // 75
4042class VkMemoryFdPropertiesKHX {
4043 VkStructureType sType
4044 void* pNext
4045 u32 memoryTypeBits
4046}
4047
4048@extension("VK_KHX_win32_keyed_mutex") // 76
4049class VkWin32KeyedMutexAcquireReleaseInfoKHX {
4050 VkStructureType sType
4051 const void* pNext
4052 u32 acquireCount
4053 const VkDeviceMemory* pAcquireSyncs
4054 const u64* pAcquireKeys
4055 const u32* pAcquireTimeouts
4056 u32 releaseCount
4057 const VkDeviceMemory* pReleaseSyncs
4058 const u64* pReleaseKeys
4059}
4060
4061@extension("VK_KHX_external_semaphore_capabilities") // 77
4062class VkPhysicalDeviceExternalSemaphoreInfoKHX {
4063 VkStructureType sType
4064 const void* pNext
4065 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType
4066}
4067
4068@extension("VK_KHX_external_semaphore_capabilities") // 77
4069class VkExternalSemaphorePropertiesKHX {
4070 VkStructureType sType
4071 void* pNext
4072 VkExternalSemaphoreHandleTypeFlagsKHX exportFromImportedHandleTypes
4073 VkExternalSemaphoreHandleTypeFlagsKHX compatibleHandleTypes
4074 VkExternalSemaphoreFeatureFlagsKHX externalSemaphoreFeatures
4075}
4076
4077@extension("VK_KHX_external_semaphore") // 78
4078class VkExportSemaphoreCreateInfoKHX {
4079 VkStructureType sType
4080 const void* pNext
4081 VkExternalSemaphoreHandleTypeFlagsKHX handleTypes
4082}
4083
4084@extension("VK_KHX_external_semaphore_win32") // 79
4085class VkImportSemaphoreWin32HandleInfoKHX {
4086 VkStructureType sType
4087 const void* pNext
4088 VkSemaphore semaphore
4089 VkExternalSemaphoreHandleTypeFlagsKHX handleType
4090 platform.HANDLE handle
4091}
4092
4093@extension("VK_KHX_external_semaphore_win32") // 79
4094class VkExportSemaphoreWin32HandleInfoKHX {
4095 VkStructureType sType
4096 const void* pNext
4097 const platform.SECURITY_ATTRIBUTES* pAttributes
4098 platform.DWORD dwAccess
4099 platform.LPCWSTR name
4100}
4101
4102@extension("VK_KHX_external_semaphore_win32") // 79
4103class VkD3D12FenceSubmitInfoKHX {
4104 VkStructureType sType
4105 const void* pNext
4106 u32 waitSemaphoreValuesCount
4107 const u64* pWaitSemaphoreValues
4108 u32 signalSemaphoreValuesCount
4109 const u64* pSignalSemaphoreValues
4110}
4111
4112@extension("VK_KHX_external_semaphore_fd") // 80
4113class VkImportSemaphoreFdInfoKHX {
4114 VkStructureType sType
4115 const void* pNext
4116 VkSemaphore semaphore
4117 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType
4118 s32 fd
4119}
4120
4121@extension("VK_KHR_push_descriptor") // 81
4122class VkPhysicalDevicePushDescriptorPropertiesKHR {
4123 VkStructureType sType
4124 void* pNext
4125 u32 maxPushDescriptors
4126}
4127
4128@extension("VK_KHR_incremental_present") // 85
4129class VkRectLayerKHR {
4130 VkOffset2D offset
4131 VkExtent2D extent
4132 u32 layer
4133}
4134
4135@extension("VK_KHR_incremental_present") // 85
4136class VkPresentRegionKHR {
4137 u32 rectangleCount
4138 const VkRectLayerKHR* pRectangles
4139}
4140
4141@extension("VK_KHR_incremental_present") // 85
4142class VkPresentRegionsKHR {
4143 VkStructureType sType
4144 const void* pNext
4145 u32 swapchainCount
4146 const VkPresentRegionKHR* pRegions
4147}
4148
4149@extension("VK_KHR_descriptor_update_template") // 86
4150class VkDescriptorUpdateTemplateEntryKHR {
4151 u32 dstBinding
4152 u32 dstArrayElement
4153 u32 descriptorCount
4154 VkDescriptorType descriptorType
4155 platform.size_t offset
4156 platform.size_t stride
4157}
4158
4159@extension("VK_KHR_descriptor_update_template") // 86
4160class VkDescriptorUpdateTemplateCreateInfoKHR {
4161 VkStructureType sType
4162 void* pNext
4163 VkDescriptorUpdateTemplateCreateFlagsKHR flags
4164 u32 descriptorUpdateEntryCount
4165 const VkDescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries
4166 VkDescriptorUpdateTemplateTypeKHR templateType
4167 VkDescriptorSetLayout descriptorSetLayout
4168 VkPipelineBindPoint pipelineBindPoint
4169 VkPipelineLayout pipelineLayout
4170 u32 set
4171}
4172
4173@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004174class VkDeviceGeneratedCommandsFeaturesNVX {
4175 VkStructureType sType
4176 const void* pNext
4177 VkBool32 computeBindingPointSupport
4178}
4179
Jesse Hallad250842017-03-10 18:35:38 -08004180@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004181class VkDeviceGeneratedCommandsLimitsNVX {
4182 VkStructureType sType
4183 const void* pNext
4184 u32 maxIndirectCommandsLayoutTokenCount
4185 u32 maxObjectEntryCounts
4186 u32 minSequenceCountBufferOffsetAlignment
4187 u32 minSequenceIndexBufferOffsetAlignment
4188 u32 minCommandsTokenBufferOffsetAlignment
4189}
4190
Jesse Hallad250842017-03-10 18:35:38 -08004191@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004192class VkIndirectCommandsTokenNVX {
4193 VkIndirectCommandsTokenTypeNVX tokenType
4194 VkBuffer buffer
4195 VkDeviceSize offset
4196}
4197
Jesse Hallad250842017-03-10 18:35:38 -08004198@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004199class VkIndirectCommandsLayoutTokenNVX {
4200 VkIndirectCommandsTokenTypeNVX tokenType
4201 u32 bindingUnit
4202 u32 dynamicCount
4203 u32 divisor
4204}
4205
Jesse Hallad250842017-03-10 18:35:38 -08004206@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004207class VkIndirectCommandsLayoutCreateInfoNVX {
4208 VkStructureType sType
4209 const void* pNext
4210 VkPipelineBindPoint pipelineBindPoint
4211 VkIndirectCommandsLayoutUsageFlagsNVX flags
4212 u32 tokenCount
4213 const VkIndirectCommandsLayoutTokenNVX* pTokens
4214}
4215
Jesse Hallad250842017-03-10 18:35:38 -08004216@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004217class VkCmdProcessCommandsInfoNVX {
4218 VkStructureType sType
4219 const void* pNext
4220 VkObjectTableNVX objectTable
4221 VkIndirectCommandsLayoutNVX indirectCommandsLayout
4222 u32 indirectCommandsTokenCount
4223 const VkIndirectCommandsTokenNVX* pIndirectCommandsTokens
4224 u32 maxSequencesCount
4225 VkCommandBuffer targetCommandBuffer
4226 VkBuffer sequencesCountBuffer
4227 VkDeviceSize sequencesCountOffset
4228 VkBuffer sequencesIndexBuffer
4229 VkDeviceSize sequencesIndexOffset
4230}
4231
Jesse Hallad250842017-03-10 18:35:38 -08004232@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004233class VkCmdReserveSpaceForCommandsInfoNVX {
4234 VkStructureType sType
4235 const void* pNext
4236 VkObjectTableNVX objectTable
4237 VkIndirectCommandsLayoutNVX indirectCommandsLayout
4238 u32 maxSequencesCount
4239}
4240
Jesse Hallad250842017-03-10 18:35:38 -08004241@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004242class VkObjectTableCreateInfoNVX {
4243 VkStructureType sType
4244 const void* pNext
4245 u32 objectCount
4246 const VkObjectEntryTypeNVX* pObjectEntryTypes
4247 const u32* pObjectEntryCounts
4248 const VkObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags
4249 u32 maxUniformBuffersPerDescriptor
4250 u32 maxStorageBuffersPerDescriptor
4251 u32 maxStorageImagesPerDescriptor
4252 u32 maxSampledImagesPerDescriptor
4253 u32 maxPipelineLayouts
4254}
4255
Jesse Hallad250842017-03-10 18:35:38 -08004256@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004257class VkObjectTableEntryNVX {
4258 VkObjectEntryTypeNVX type
4259 VkObjectEntryUsageFlagsNVX flags
4260}
4261
Jesse Hallad250842017-03-10 18:35:38 -08004262@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004263class VkObjectTablePipelineEntryNVX {
4264 VkObjectEntryTypeNVX type
4265 VkObjectEntryUsageFlagsNVX flags
4266 VkPipeline pipeline
4267}
4268
Jesse Hallad250842017-03-10 18:35:38 -08004269@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004270class VkObjectTableDescriptorSetEntryNVX {
4271 VkObjectEntryTypeNVX type
4272 VkObjectEntryUsageFlagsNVX flags
4273 VkPipelineLayout pipelineLayout
4274 VkDescriptorSet descriptorSet
4275}
4276
Jesse Hallad250842017-03-10 18:35:38 -08004277@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004278class VkObjectTableVertexBufferEntryNVX {
4279 VkObjectEntryTypeNVX type
4280 VkObjectEntryUsageFlagsNVX flags
4281 VkBuffer buffer
4282}
4283
Jesse Hallad250842017-03-10 18:35:38 -08004284@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004285class VkObjectTableIndexBufferEntryNVX {
4286 VkObjectEntryTypeNVX type
4287 VkObjectEntryUsageFlagsNVX flags
4288 VkBuffer buffer
Jesse Hall77ad05b2017-03-10 22:02:20 -08004289 VkIndexType indexType
Chris Forbes289cb792016-12-30 15:03:55 +13004290}
4291
Jesse Hallad250842017-03-10 18:35:38 -08004292@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004293class VkObjectTablePushConstantEntryNVX {
4294 VkObjectEntryTypeNVX type
4295 VkObjectEntryUsageFlagsNVX flags
4296 VkPipelineLayout pipelineLayout
4297 VkShaderStageFlags stageFlags
4298}
4299
Jesse Hallad250842017-03-10 18:35:38 -08004300@extension("VK_NV_clip_space_w_scaling") // 88
4301class VkViewportWScalingNV {
4302 f32 xcoeff
4303 f32 ycoeff
Jesse Hall889cd9a2017-02-25 22:12:23 -08004304}
4305
Jesse Hallad250842017-03-10 18:35:38 -08004306@extension("VK_NV_clip_space_w_scaling") // 88
4307class VkPipelineViewportWScalingStateCreateInfoNV {
Jesse Hall889cd9a2017-02-25 22:12:23 -08004308 VkStructureType sType
4309 const void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08004310 VkBool32 viewportWScalingEnable
4311 u32 viewportCount
4312 const VkViewportWScalingNV* pViewportWScalings
Jesse Hall889cd9a2017-02-25 22:12:23 -08004313}
4314
Jesse Hallad250842017-03-10 18:35:38 -08004315@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08004316class VkSurfaceCapabilities2EXT {
4317 VkStructureType sType
4318 void* pNext
4319 u32 minImageCount
4320 u32 maxImageCount
4321 VkExtent2D currentExtent
4322 VkExtent2D minImageExtent
4323 VkExtent2D maxImageExtent
4324 u32 maxImageArrayLayers
4325 VkSurfaceTransformFlagsKHR supportedTransforms
4326 VkSurfaceTransformFlagBitsKHR currentTransform
4327 VkCompositeAlphaFlagsKHR supportedCompositeAlpha
4328 VkImageUsageFlags supportedUsageFlags
4329 VkSurfaceCounterFlagsEXT supportedSurfaceCounters
4330}
4331
Jesse Hallad250842017-03-10 18:35:38 -08004332@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08004333class VkDisplayPowerInfoEXT {
4334 VkStructureType sType
4335 const void* pNext
4336 VkDisplayPowerStateEXT powerState
4337}
4338
Jesse Hallad250842017-03-10 18:35:38 -08004339@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08004340class VkDeviceEventInfoEXT {
4341 VkStructureType sType
4342 const void* pNext
4343 VkDeviceEventTypeEXT deviceEvent
4344}
4345
Jesse Hallad250842017-03-10 18:35:38 -08004346@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08004347class VkDisplayEventInfoEXT {
4348 VkStructureType sType
4349 const void* pNext
4350 VkDisplayEventTypeEXT displayEvent
4351}
4352
Jesse Hallad250842017-03-10 18:35:38 -08004353@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08004354class VkSwapchainCounterCreateInfoEXT {
4355 VkStructureType sType
4356 const void* pNext
4357 VkSurfaceCounterFlagsEXT surfaceCounters
4358}
4359
Jesse Hallad250842017-03-10 18:35:38 -08004360@extension("VK_GOOGLE_display_timing") // 93
4361class VkRefreshCycleDurationGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004362 u64 refreshDuration
Jesse Hallad250842017-03-10 18:35:38 -08004363}
4364
4365@extension("VK_GOOGLE_display_timing") // 93
4366class VkPastPresentationTimingGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004367 u32 presentID
4368 u64 desiredPresentTime
4369 u64 actualPresentTime
4370 u64 earliestPresentTime
4371 u64 presentMargin
Jesse Hallad250842017-03-10 18:35:38 -08004372}
4373
4374@extension("VK_GOOGLE_display_timing") // 93
4375class VkPresentTimeGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004376 u32 presentID
4377 u64 desiredPresentTime
Jesse Hallad250842017-03-10 18:35:38 -08004378}
4379
4380@extension("VK_GOOGLE_display_timing") // 93
4381class VkPresentTimesInfoGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004382 VkStructureType sType
4383 const void* pNext
4384 u32 swapchainCount
4385 const VkPresentTimeGOOGLE* pTimes
Jesse Hallad250842017-03-10 18:35:38 -08004386}
4387
4388@extension("VK_NVX_multiview_per_view_attributes") // 98
4389class VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
4390 VkStructureType sType
4391 void* pNext
4392 VkBool32 perViewPositionAllComponents
4393}
4394
4395@extension("VK_NV_viewport_swizzle") // 99
4396class VkViewportSwizzleNV {
4397 VkViewportCoordinateSwizzleNV x
4398 VkViewportCoordinateSwizzleNV y
4399 VkViewportCoordinateSwizzleNV z
4400 VkViewportCoordinateSwizzleNV w
4401}
4402
4403@extension("VK_NV_viewport_swizzle") // 99
4404class VkPipelineViewportSwizzleStateCreateInfoNV {
4405 VkStructureType sType
4406 const void* pNext
4407 VkPipelineViewportSwizzleStateCreateFlagsNV flags
4408 u32 viewportCount
4409 const VkViewportSwizzleNV* pViewportSwizzles
4410}
4411
4412@extension("VK_EXT_discard_rectangles") // 100
4413class VkPhysicalDeviceDiscardRectanglePropertiesEXT {
4414 VkStructureType sType
Jesse Hallf5ad48b2017-03-20 13:09:19 -07004415 void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08004416 u32 maxDiscardRectangles
4417}
4418
4419@extension("VK_EXT_discard_rectangles") // 100
4420class VkPipelineDiscardRectangleStateCreateInfoEXT {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004421 VkStructureType sType
4422 const void* pNext
4423 VkPipelineDiscardRectangleStateCreateFlagsEXT flags
4424 VkDiscardRectangleModeEXT discardRectangleMode
4425 u32 discardRectangleCount
4426 const VkRect2D* pDiscardRectangles
Jesse Hallad250842017-03-10 18:35:38 -08004427}
4428
4429@extension("VK_EXT_hdr_metadata") // 106
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07004430class VkXYColorEXT {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004431 f32 x
4432 f32 y
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07004433}
4434
Jesse Hallad250842017-03-10 18:35:38 -08004435@extension("VK_EXT_hdr_metadata") // 106
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07004436class VkHdrMetadataEXT {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004437 VkStructureType sType
4438 const void* pNext
4439 VkXYColorEXT displayPrimaryRed
4440 VkXYColorEXT displayPrimaryGreen
4441 VkXYColorEXT displayPrimaryBlue
4442 VkXYColorEXT whitePoint
4443 f32 maxLuminance
4444 f32 minLuminance
4445 f32 maxContentLightLevel
4446 f32 maxFrameAverageLightLevel
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07004447}
4448
Jesse Hall05556b12017-05-18 17:40:25 -07004449@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbese2d3ee12017-03-16 16:10:15 +13004450class VkSharedPresentSurfaceCapabilitiesKHR {
4451 VkStructureType sType
4452 const void* pNext
4453 VkImageUsageFlags sharedPresentSupportedUsageFlags
4454}
4455
Jesse Hall05556b12017-05-18 17:40:25 -07004456@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13004457class VkPhysicalDeviceSurfaceInfo2KHR {
4458 VkStructureType sType
4459 const void* pNext
4460 VkSurfaceKHR surface
4461}
4462
Jesse Hall05556b12017-05-18 17:40:25 -07004463@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13004464class VkSurfaceCapabilities2KHR {
4465 VkStructureType sType
4466 void* pNext
4467 VkSurfaceCapabilitiesKHR surfaceCapabilities
4468}
4469
Jesse Hall05556b12017-05-18 17:40:25 -07004470@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13004471class VkSurfaceFormat2KHR {
4472 VkStructureType sType
4473 void* pNext
4474 VkSurfaceFormatKHR surfaceFormat
4475}
4476
Jesse Hallad250842017-03-10 18:35:38 -08004477@extension("VK_MVK_ios_surface") // 123
4478class VkIOSSurfaceCreateInfoMVK {
4479 VkStructureType sType
4480 const void* pNext
4481 VkIOSSurfaceCreateFlagsMVK flags
4482 const void* pView
4483}
4484
4485@extension("VK_MVK_macos_surface") // 124
4486class VkMacOSSurfaceCreateInfoMVK {
4487 VkStructureType sType
4488 const void* pNext
4489 VkMacOSSurfaceCreateFlagsMVK flags
4490 const void* pView
4491}
4492
Jesse Hall7ba0ac72017-07-07 17:13:23 -07004493@extension("VK_EXT_sampler_filter_minmax") // 131
4494class VkSamplerReductionModeCreateInfoEXT {
4495 VkStructureType sType
4496 const void* pNext
4497 VkSamplerReductionModeEXT reductionMode
4498}
4499
4500@extension("VK_EXT_sampler_filter_minmax") // 131
4501class VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
4502 VkStructureType sType
4503 void* pNext
4504 VkBool32 filterMinmaxSingleComponentFormats
4505 VkBool32 filterMinmaxImageComponentMapping
4506}
4507
4508@extension("VK_EXT_blend_operation_advanced") // 149
4509class VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
4510 VkStructureType sType
4511 void* pNext
4512 VkBool32 advancedBlendCoherentOperations
4513}
4514
4515@extension("VK_EXT_blend_operation_advanced") // 149
4516class VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
4517 VkStructureType sType
4518 void* pNext
4519 u32 advancedBlendMaxColorAttachments
4520 VkBool32 advancedBlendIndependentBlend
4521 VkBool32 advancedBlendNonPremultipliedSrcColor
4522 VkBool32 advancedBlendNonPremultipliedDstColor
4523 VkBool32 advancedBlendCorrelatedOverlap
4524 VkBool32 advancedBlendAllOperations
4525}
4526
4527@extension("VK_EXT_blend_operation_advanced") // 149
4528class VkPipelineColorBlendAdvancedStateCreateInfoEXT {
4529 VkStructureType sType
4530 const void* pNext
4531 VkBool32 srcPremultiplied
4532 VkBool32 dstPremultiplied
4533 VkBlendOverlapEXT blendOverlap
4534}
4535
4536@extension("VK_NV_fragment_coverage_to_color") // 150
4537class VkPipelineCoverageToColorStateCreateInfoNV {
4538 VkStructureType sType
4539 const void* pNext
4540 VkPipelineCoverageToColorStateCreateFlagsNV flags
4541 VkBool32 coverageToColorEnable
4542 u32 coverageToColorLocation
4543}
4544
4545@extension("VK_NV_framebuffer_mixed_samples") // 153
4546class VkPipelineCoverageModulationStateCreateInfoNV {
4547 VkStructureType sType
4548 const void* pNext
4549 VkPipelineCoverageModulationStateCreateFlagsNV flags
4550 VkCoverageModulationModeNV coverageModulationMode
4551 VkBool32 coverageModulationTableEnable
4552 u32 coverageModulationTableCount
4553 const f32* pCoverageModulationTable
4554}
4555
Jesse Halld27f6aa2015-08-15 17:58:48 -07004556////////////////
4557// Commands //
4558////////////////
4559
4560// Function pointers. TODO: add support for function pointers.
4561
4562@external type void* PFN_vkVoidFunction
4563@pfn cmd void vkVoidFunction() {
4564}
4565
Jesse Hall3fbc8562015-11-29 22:10:52 -08004566@external type void* PFN_vkAllocationFunction
4567@pfn cmd void* vkAllocationFunction(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004568 void* pUserData,
4569 platform.size_t size,
4570 platform.size_t alignment,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004571 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08004572 return ?
4573}
4574
Jesse Hall3fbc8562015-11-29 22:10:52 -08004575@external type void* PFN_vkReallocationFunction
4576@pfn cmd void* vkReallocationFunction(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004577 void* pUserData,
4578 void* pOriginal,
4579 platform.size_t size,
4580 platform.size_t alignment,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004581 VkSystemAllocationScope allocationScope) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004582 return ?
4583}
4584
4585@external type void* PFN_vkFreeFunction
4586@pfn cmd void vkFreeFunction(
4587 void* pUserData,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004588 void* pMemory) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004589}
4590
Jesse Hall3fbc8562015-11-29 22:10:52 -08004591@external type void* PFN_vkInternalAllocationNotification
4592@pfn cmd void vkInternalAllocationNotification(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004593 void* pUserData,
4594 platform.size_t size,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004595 VkInternalAllocationType allocationType,
4596 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08004597}
4598
4599@external type void* PFN_vkInternalFreeNotification
4600@pfn cmd void vkInternalFreeNotification(
4601 void* pUserData,
4602 platform.size_t size,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004603 VkInternalAllocationType allocationType,
4604 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08004605}
Jesse Halld27f6aa2015-08-15 17:58:48 -07004606
4607// Global functions
4608
4609@threadSafety("system")
4610cmd VkResult vkCreateInstance(
4611 const VkInstanceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004612 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004613 VkInstance* pInstance) {
4614 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO)
4615
4616 instance := ?
4617 pInstance[0] = instance
4618 State.Instances[instance] = new!InstanceObject()
4619
Jesse Hall3dd678a2016-01-08 21:52:01 -08004620 layers := pCreateInfo.ppEnabledLayerNames[0:pCreateInfo.enabledLayerCount]
4621 extensions := pCreateInfo.ppEnabledExtensionNames[0:pCreateInfo.enabledExtensionCount]
Jesse Halld27f6aa2015-08-15 17:58:48 -07004622
4623 return ?
4624}
4625
4626@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004627cmd void vkDestroyInstance(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004628 VkInstance instance,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004629 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004630 instanceObject := GetInstance(instance)
4631
4632 State.Instances[instance] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004633}
4634
4635@threadSafety("system")
4636cmd VkResult vkEnumeratePhysicalDevices(
4637 VkInstance instance,
4638 u32* pPhysicalDeviceCount,
4639 VkPhysicalDevice* pPhysicalDevices) {
4640 instanceObject := GetInstance(instance)
4641
4642 physicalDeviceCount := as!u32(?)
4643 pPhysicalDeviceCount[0] = physicalDeviceCount
4644 physicalDevices := pPhysicalDevices[0:physicalDeviceCount]
4645
4646 for i in (0 .. physicalDeviceCount) {
4647 physicalDevice := ?
4648 physicalDevices[i] = physicalDevice
4649 if !(physicalDevice in State.PhysicalDevices) {
4650 State.PhysicalDevices[physicalDevice] = new!PhysicalDeviceObject(instance: instance)
4651 }
4652 }
4653
4654 return ?
4655}
4656
4657cmd PFN_vkVoidFunction vkGetDeviceProcAddr(
4658 VkDevice device,
4659 const char* pName) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004660 if device != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004661 device := GetDevice(device)
4662 }
4663
4664 return ?
4665}
4666
4667cmd PFN_vkVoidFunction vkGetInstanceProcAddr(
4668 VkInstance instance,
4669 const char* pName) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004670 if instance != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004671 instanceObject := GetInstance(instance)
4672 }
4673
4674 return ?
4675}
4676
Jesse Hall606a54e2015-11-19 22:17:28 -08004677cmd void vkGetPhysicalDeviceProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004678 VkPhysicalDevice physicalDevice,
4679 VkPhysicalDeviceProperties* pProperties) {
4680 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4681
4682 properties := ?
4683 pProperties[0] = properties
Jesse Halld27f6aa2015-08-15 17:58:48 -07004684}
4685
Jesse Hall606a54e2015-11-19 22:17:28 -08004686cmd void vkGetPhysicalDeviceQueueFamilyProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004687 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004688 u32* pQueueFamilyPropertyCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004689 VkQueueFamilyProperties* pQueueFamilyProperties) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004690 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004691 // TODO: Figure out how to express fetch-count-or-properties
4692 // This version fails 'apic validate' with 'fence not allowed in
4693 // *semantic.Branch'. Other attempts have failed with the same or other
4694 // errors.
4695 // if pQueueFamilyProperties != null {
4696 // queuesProperties := pQueueFamilyProperties[0:pCount[0]]
4697 // for i in (0 .. pCount[0]) {
4698 // queueProperties := as!VkQueueFamilyProperties(?)
4699 // queuesProperties[i] = queueProperties
4700 // }
4701 // } else {
4702 // count := ?
4703 // pCount[0] = count
4704 // }
Jesse Halld27f6aa2015-08-15 17:58:48 -07004705}
4706
Jesse Hall606a54e2015-11-19 22:17:28 -08004707cmd void vkGetPhysicalDeviceMemoryProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004708 VkPhysicalDevice physicalDevice,
4709 VkPhysicalDeviceMemoryProperties* pMemoryProperties) {
4710 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4711
4712 memoryProperties := ?
4713 pMemoryProperties[0] = memoryProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07004714}
4715
Jesse Hall606a54e2015-11-19 22:17:28 -08004716cmd void vkGetPhysicalDeviceFeatures(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004717 VkPhysicalDevice physicalDevice,
4718 VkPhysicalDeviceFeatures* pFeatures) {
4719 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4720
4721 features := ?
4722 pFeatures[0] = features
Jesse Halld27f6aa2015-08-15 17:58:48 -07004723}
4724
Jesse Hall606a54e2015-11-19 22:17:28 -08004725cmd void vkGetPhysicalDeviceFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004726 VkPhysicalDevice physicalDevice,
4727 VkFormat format,
4728 VkFormatProperties* pFormatProperties) {
4729 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4730
4731 formatProperties := ?
4732 pFormatProperties[0] = formatProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07004733}
4734
Jesse Halla9e57032015-11-30 01:03:10 -08004735cmd VkResult vkGetPhysicalDeviceImageFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004736 VkPhysicalDevice physicalDevice,
4737 VkFormat format,
4738 VkImageType type,
4739 VkImageTiling tiling,
4740 VkImageUsageFlags usage,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004741 VkImageCreateFlags flags,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004742 VkImageFormatProperties* pImageFormatProperties) {
4743 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4744
4745 imageFormatProperties := ?
4746 pImageFormatProperties[0] = imageFormatProperties
Jesse Halla9e57032015-11-30 01:03:10 -08004747
4748 return ?
Jesse Halld27f6aa2015-08-15 17:58:48 -07004749}
4750
Jesse Halld27f6aa2015-08-15 17:58:48 -07004751
4752// Device functions
4753
4754@threadSafety("system")
4755cmd VkResult vkCreateDevice(
4756 VkPhysicalDevice physicalDevice,
4757 const VkDeviceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004758 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004759 VkDevice* pDevice) {
4760 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO)
4761 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4762
4763 device := ?
4764 pDevice[0] = device
4765 State.Devices[device] = new!DeviceObject(physicalDevice: physicalDevice)
4766
4767 return ?
4768}
4769
4770@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004771cmd void vkDestroyDevice(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004772 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004773 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004774 deviceObject := GetDevice(device)
4775
4776 State.Devices[device] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004777}
4778
4779
4780// Extension discovery functions
4781
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004782cmd VkResult vkEnumerateInstanceLayerProperties(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004783 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004784 VkLayerProperties* pProperties) {
4785 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08004786 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07004787
4788 properties := pProperties[0:count]
4789 for i in (0 .. count) {
4790 property := ?
4791 properties[i] = property
4792 }
4793
4794 return ?
4795}
4796
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004797cmd VkResult vkEnumerateInstanceExtensionProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004798 const char* pLayerName,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004799 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004800 VkExtensionProperties* pProperties) {
4801 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08004802 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07004803
4804 properties := pProperties[0:count]
4805 for i in (0 .. count) {
4806 property := ?
4807 properties[i] = property
4808 }
4809
4810 return ?
4811}
4812
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004813cmd VkResult vkEnumerateDeviceLayerProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004814 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004815 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004816 VkLayerProperties* pProperties) {
4817 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4818 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08004819 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07004820
4821 properties := pProperties[0:count]
4822 for i in (0 .. count) {
4823 property := ?
4824 properties[i] = property
4825 }
4826
4827 return ?
4828}
4829
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004830cmd VkResult vkEnumerateDeviceExtensionProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004831 VkPhysicalDevice physicalDevice,
4832 const char* pLayerName,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004833 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004834 VkExtensionProperties* pProperties) {
4835 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4836
4837 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08004838 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07004839
4840 properties := pProperties[0:count]
4841 for i in (0 .. count) {
4842 property := ?
4843 properties[i] = property
4844 }
4845
4846 return ?
4847}
4848
4849
4850// Queue functions
4851
4852@threadSafety("system")
Jesse Hall606a54e2015-11-19 22:17:28 -08004853cmd void vkGetDeviceQueue(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004854 VkDevice device,
4855 u32 queueFamilyIndex,
4856 u32 queueIndex,
4857 VkQueue* pQueue) {
4858 deviceObject := GetDevice(device)
4859
4860 queue := ?
4861 pQueue[0] = queue
4862
4863 if !(queue in State.Queues) {
4864 State.Queues[queue] = new!QueueObject(device: device)
4865 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07004866}
4867
4868@threadSafety("app")
4869cmd VkResult vkQueueSubmit(
4870 VkQueue queue,
Jesse Halla366a512015-11-19 22:30:07 -08004871 u32 submitCount,
Jesse Hallb00daad2015-11-29 19:46:20 -08004872 const VkSubmitInfo* pSubmits,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004873 VkFence fence) {
4874 queueObject := GetQueue(queue)
4875
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004876 if fence != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004877 fenceObject := GetFence(fence)
4878 assert(fenceObject.device == queueObject.device)
4879 }
4880
Jesse Hall3fbc8562015-11-29 22:10:52 -08004881 // commandBuffers := pcommandBuffers[0:commandBufferCount]
4882 // for i in (0 .. commandBufferCount) {
4883 // commandBuffer := commandBuffers[i]
4884 // commandBufferObject := GetCommandBuffer(commandBuffer)
4885 // assert(commandBufferObject.device == queueObject.device)
Jesse Halla366a512015-11-19 22:30:07 -08004886 //
Jesse Hall3fbc8562015-11-29 22:10:52 -08004887 // validate("QueueCheck", commandBufferObject.queueFlags in queueObject.flags,
4888 // "vkQueueSubmit: enqueued commandBuffer requires missing queue capabilities.")
Jesse Halla366a512015-11-19 22:30:07 -08004889 // }
Jesse Halld27f6aa2015-08-15 17:58:48 -07004890
4891 return ?
4892}
4893
4894@threadSafety("system")
4895cmd VkResult vkQueueWaitIdle(
4896 VkQueue queue) {
4897 queueObject := GetQueue(queue)
4898
4899 return ?
4900}
4901
4902@threadSafety("system")
4903cmd VkResult vkDeviceWaitIdle(
4904 VkDevice device) {
4905 deviceObject := GetDevice(device)
4906
4907 return ?
4908}
4909
4910
4911// Memory functions
4912
4913@threadSafety("system")
Jesse Hall3fbc8562015-11-29 22:10:52 -08004914cmd VkResult vkAllocateMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004915 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004916 const VkMemoryAllocateInfo* pAllocateInfo,
4917 const VkAllocationCallbacks* pAllocator,
4918 VkDeviceMemory* pMemory) {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08004919 assert(pAllocateInfo.sType == VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004920 deviceObject := GetDevice(device)
4921
Jesse Hall3fbc8562015-11-29 22:10:52 -08004922 memory := ?
4923 pMemory[0] = memory
4924 State.DeviceMemories[memory] = new!DeviceMemoryObject(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004925 device: device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004926 allocationSize: pAllocateInfo[0].allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004927
4928 return ?
4929}
4930
4931@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004932cmd void vkFreeMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004933 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004934 VkDeviceMemory memory,
4935 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004936 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08004937 memoryObject := GetDeviceMemory(memory)
4938 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004939
4940 // Check that no objects are still bound before freeing.
Jesse Hall3fbc8562015-11-29 22:10:52 -08004941 validate("MemoryCheck", len(memoryObject.boundObjects) == 0,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004942 "vkFreeMemory: objects still bound")
Jesse Hall3fbc8562015-11-29 22:10:52 -08004943 validate("MemoryCheck", len(memoryObject.boundCommandBuffers) == 0,
4944 "vkFreeMemory: commandBuffers still bound")
4945 State.DeviceMemories[memory] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004946}
4947
4948@threadSafety("app")
4949cmd VkResult vkMapMemory(
4950 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004951 VkDeviceMemory memory,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004952 VkDeviceSize offset,
4953 VkDeviceSize size,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004954 VkMemoryMapFlags flags,
4955 void** ppData) {
4956 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08004957 memoryObject := GetDeviceMemory(memory)
4958 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004959
4960 assert(flags == as!VkMemoryMapFlags(0))
Jesse Hall3fbc8562015-11-29 22:10:52 -08004961 assert((offset + size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004962
4963 return ?
4964}
4965
4966@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004967cmd void vkUnmapMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004968 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004969 VkDeviceMemory memory) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004970 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08004971 memoryObject := GetDeviceMemory(memory)
4972 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004973}
4974
4975cmd VkResult vkFlushMappedMemoryRanges(
4976 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004977 u32 memoryRangeCount
4978 const VkMappedMemoryRange* pMemoryRanges) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004979 deviceObject := GetDevice(device)
4980
Jesse Hall3fbc8562015-11-29 22:10:52 -08004981 memoryRanges := pMemoryRanges[0:memoryRangeCount]
4982 for i in (0 .. memoryRangeCount) {
4983 memoryRange := memoryRanges[i]
4984 memoryObject := GetDeviceMemory(memoryRange.memory)
4985 assert(memoryObject.device == device)
4986 assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004987 }
4988
4989 return ?
4990}
4991
4992cmd VkResult vkInvalidateMappedMemoryRanges(
4993 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004994 u32 memoryRangeCount,
4995 const VkMappedMemoryRange* pMemoryRanges) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004996 deviceObject := GetDevice(device)
4997
Jesse Hall3fbc8562015-11-29 22:10:52 -08004998 memoryRanges := pMemoryRanges[0:memoryRangeCount]
4999 for i in (0 .. memoryRangeCount) {
5000 memoryRange := memoryRanges[i]
5001 memoryObject := GetDeviceMemory(memoryRange.memory)
5002 assert(memoryObject.device == device)
5003 assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005004 }
5005
5006 return ?
5007}
5008
5009
5010// Memory management API functions
5011
Jesse Hall606a54e2015-11-19 22:17:28 -08005012cmd void vkGetDeviceMemoryCommitment(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005013 VkDevice device,
5014 VkDeviceMemory memory,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005015 VkDeviceSize* pCommittedMemoryInBytes) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005016 deviceObject := GetDevice(device)
5017
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005018 if memory != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005019 memoryObject := GetDeviceMemory(memory)
5020 assert(memoryObject.device == device)
5021 }
5022
5023 committedMemoryInBytes := ?
5024 pCommittedMemoryInBytes[0] = committedMemoryInBytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07005025}
5026
Jesse Hall606a54e2015-11-19 22:17:28 -08005027cmd void vkGetBufferMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005028 VkDevice device,
5029 VkBuffer buffer,
5030 VkMemoryRequirements* pMemoryRequirements) {
5031 deviceObject := GetDevice(device)
5032 bufferObject := GetBuffer(buffer)
5033 assert(bufferObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005034}
5035
5036cmd VkResult vkBindBufferMemory(
5037 VkDevice device,
5038 VkBuffer buffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005039 VkDeviceMemory memory,
5040 VkDeviceSize memoryOffset) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005041 deviceObject := GetDevice(device)
5042 bufferObject := GetBuffer(buffer)
5043 assert(bufferObject.device == device)
5044
5045 // Unbind buffer from previous memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005046 if bufferObject.memory != NULL_HANDLE {
5047 memoryObject := GetDeviceMemory(bufferObject.memory)
5048 memoryObject.boundObjects[as!u64(buffer)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005049 }
5050
5051 // Bind buffer to given memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005052 if memory != NULL_HANDLE {
5053 memoryObject := GetDeviceMemory(memory)
5054 assert(memoryObject.device == device)
5055 memoryObject.boundObjects[as!u64(buffer)] = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07005056 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08005057 bufferObject.memory = memory
5058 bufferObject.memoryOffset = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07005059
5060 return ?
5061}
5062
Jesse Hall606a54e2015-11-19 22:17:28 -08005063cmd void vkGetImageMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005064 VkDevice device,
5065 VkImage image,
5066 VkMemoryRequirements* pMemoryRequirements) {
5067 deviceObject := GetDevice(device)
5068 imageObject := GetImage(image)
5069 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005070}
5071
5072cmd VkResult vkBindImageMemory(
5073 VkDevice device,
5074 VkImage image,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005075 VkDeviceMemory memory,
5076 VkDeviceSize memoryOffset) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005077 deviceObject := GetDevice(device)
5078 imageObject := GetImage(image)
5079 assert(imageObject.device == device)
5080
5081 // Unbind image from previous memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005082 if imageObject.memory != NULL_HANDLE {
5083 memoryObject := GetDeviceMemory(imageObject.memory)
5084 memoryObject.boundObjects[as!u64(image)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005085 }
5086
5087 // Bind image to given memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005088 if memory != NULL_HANDLE {
5089 memoryObject := GetDeviceMemory(memory)
5090 assert(memoryObject.device == device)
5091 memoryObject.boundObjects[as!u64(image)] = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07005092 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08005093 imageObject.memory = memory
5094 imageObject.memoryOffset = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07005095
5096 return ?
5097}
5098
Jesse Hall606a54e2015-11-19 22:17:28 -08005099cmd void vkGetImageSparseMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005100 VkDevice device,
5101 VkImage image,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005102 u32* pSparseMemoryRequirementCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005103 VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
5104 deviceObject := GetDevice(device)
5105 imageObject := GetImage(image)
5106 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005107}
5108
Jesse Hall606a54e2015-11-19 22:17:28 -08005109cmd void vkGetPhysicalDeviceSparseImageFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005110 VkPhysicalDevice physicalDevice,
5111 VkFormat format,
5112 VkImageType type,
Jesse Hall091ed9e2015-11-30 00:55:29 -08005113 VkSampleCountFlagBits samples,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005114 VkImageUsageFlags usage,
5115 VkImageTiling tiling,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005116 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005117 VkSparseImageFormatProperties* pProperties) {
5118 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005119}
5120
Jesse Halla6429252015-11-29 18:59:42 -08005121cmd VkResult vkQueueBindSparse(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005122 VkQueue queue,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005123 u32 bindInfoCount,
Jesse Halla6429252015-11-29 18:59:42 -08005124 const VkBindSparseInfo* pBindInfo,
5125 VkFence fence) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005126 queueObject := GetQueue(queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005127
5128 return ?
5129}
5130
5131
5132// Fence functions
5133
5134@threadSafety("system")
5135cmd VkResult vkCreateFence(
5136 VkDevice device,
5137 const VkFenceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005138 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005139 VkFence* pFence) {
5140 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FENCE_CREATE_INFO)
5141 deviceObject := GetDevice(device)
5142
5143 fence := ?
5144 pFence[0] = fence
5145 State.Fences[fence] = new!FenceObject(
Jesse Halld8bade02015-11-24 10:24:18 -08005146 device: device, signaled: (pCreateInfo.flags == as!VkFenceCreateFlags(VK_FENCE_CREATE_SIGNALED_BIT)))
Jesse Halld27f6aa2015-08-15 17:58:48 -07005147
5148 return ?
5149}
5150
5151@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005152cmd void vkDestroyFence(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005153 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005154 VkFence fence,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005155 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005156 deviceObject := GetDevice(device)
5157 fenceObject := GetFence(fence)
5158 assert(fenceObject.device == device)
5159
5160 State.Fences[fence] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005161}
5162
5163@threadSafety("system")
5164cmd VkResult vkResetFences(
5165 VkDevice device,
5166 u32 fenceCount,
5167 const VkFence* pFences) {
5168 deviceObject := GetDevice(device)
5169
5170 fences := pFences[0:fenceCount]
5171 for i in (0 .. fenceCount) {
5172 fence := fences[i]
5173 fenceObject := GetFence(fence)
5174 assert(fenceObject.device == device)
5175 fenceObject.signaled = false
5176 }
5177
5178 return ?
5179}
5180
5181@threadSafety("system")
5182cmd VkResult vkGetFenceStatus(
5183 VkDevice device,
5184 VkFence fence) {
5185 deviceObject := GetDevice(device)
5186 fenceObject := GetFence(fence)
5187 assert(fenceObject.device == device)
5188
5189 return ?
5190}
5191
5192@threadSafety("system")
5193cmd VkResult vkWaitForFences(
5194 VkDevice device,
5195 u32 fenceCount,
5196 const VkFence* pFences,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005197 VkBool32 waitAll,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005198 u64 timeout) { /// timeout in nanoseconds
5199 deviceObject := GetDevice(device)
5200
5201 fences := pFences[0:fenceCount]
5202 for i in (0 .. fenceCount) {
5203 fence := fences[i]
5204 fenceObject := GetFence(fence)
5205 assert(fenceObject.device == device)
5206 }
5207
5208 return ?
5209}
5210
5211
5212// Queue semaphore functions
5213
5214@threadSafety("system")
5215cmd VkResult vkCreateSemaphore(
5216 VkDevice device,
5217 const VkSemaphoreCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005218 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005219 VkSemaphore* pSemaphore) {
5220 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO)
5221 deviceObject := GetDevice(device)
5222
5223 semaphore := ?
5224 pSemaphore[0] = semaphore
5225 State.Semaphores[semaphore] = new!SemaphoreObject(device: device)
5226
5227 return ?
5228}
5229
5230@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005231cmd void vkDestroySemaphore(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005232 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005233 VkSemaphore semaphore,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005234 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005235 deviceObject := GetDevice(device)
5236 semaphoreObject := GetSemaphore(semaphore)
5237 assert(semaphoreObject.device == device)
5238
5239 State.Semaphores[semaphore] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005240}
5241
Jesse Halld27f6aa2015-08-15 17:58:48 -07005242
5243// Event functions
5244
5245@threadSafety("system")
5246cmd VkResult vkCreateEvent(
5247 VkDevice device,
5248 const VkEventCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005249 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005250 VkEvent* pEvent) {
5251 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_EVENT_CREATE_INFO)
5252 deviceObject := GetDevice(device)
5253
5254 event := ?
5255 pEvent[0] = event
5256 State.Events[event] = new!EventObject(device: device)
5257
5258 return ?
5259}
5260
5261@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005262cmd void vkDestroyEvent(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005263 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005264 VkEvent event,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005265 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005266 deviceObject := GetDevice(device)
5267 eventObject := GetEvent(event)
5268 assert(eventObject.device == device)
5269
5270 State.Events[event] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005271}
5272
5273@threadSafety("system")
5274cmd VkResult vkGetEventStatus(
5275 VkDevice device,
5276 VkEvent event) {
5277 deviceObject := GetDevice(device)
5278 eventObject := GetEvent(event)
5279 assert(eventObject.device == device)
5280
5281 return ?
5282}
5283
5284@threadSafety("system")
5285cmd VkResult vkSetEvent(
5286 VkDevice device,
5287 VkEvent event) {
5288 deviceObject := GetDevice(device)
5289 eventObject := GetEvent(event)
5290 assert(eventObject.device == device)
5291
5292 return ?
5293}
5294
5295@threadSafety("system")
5296cmd VkResult vkResetEvent(
5297 VkDevice device,
5298 VkEvent event) {
5299 deviceObject := GetDevice(device)
5300 eventObject := GetEvent(event)
5301 assert(eventObject.device == device)
5302
5303 return ?
5304}
5305
5306
5307// Query functions
5308
5309@threadSafety("system")
5310cmd VkResult vkCreateQueryPool(
5311 VkDevice device,
5312 const VkQueryPoolCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005313 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005314 VkQueryPool* pQueryPool) {
5315 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO)
5316 deviceObject := GetDevice(device)
5317
5318 queryPool := ?
5319 pQueryPool[0] = queryPool
5320 State.QueryPools[queryPool] = new!QueryPoolObject(device: device)
5321
5322 return ?
5323}
5324
5325@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005326cmd void vkDestroyQueryPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005327 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005328 VkQueryPool queryPool,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005329 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005330 deviceObject := GetDevice(device)
5331 queryPoolObject := GetQueryPool(queryPool)
5332 assert(queryPoolObject.device == device)
5333
5334 State.QueryPools[queryPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005335}
5336
5337@threadSafety("system")
5338cmd VkResult vkGetQueryPoolResults(
5339 VkDevice device,
5340 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08005341 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005342 u32 queryCount,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005343 platform.size_t dataSize,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005344 void* pData,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005345 VkDeviceSize stride,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005346 VkQueryResultFlags flags) {
5347 deviceObject := GetDevice(device)
5348 queryPoolObject := GetQueryPool(queryPool)
5349 assert(queryPoolObject.device == device)
5350
Jesse Halld27f6aa2015-08-15 17:58:48 -07005351 data := pData[0:dataSize]
5352
5353 return ?
5354}
5355
5356// Buffer functions
5357
5358@threadSafety("system")
5359cmd VkResult vkCreateBuffer(
5360 VkDevice device,
5361 const VkBufferCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005362 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005363 VkBuffer* pBuffer) {
5364 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO)
5365 deviceObject := GetDevice(device)
5366
5367 buffer := ?
5368 pBuffer[0] = buffer
5369 State.Buffers[buffer] = new!BufferObject(device: device)
5370
5371 return ?
5372}
5373
5374@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005375cmd void vkDestroyBuffer(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005376 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005377 VkBuffer buffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005378 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005379 deviceObject := GetDevice(device)
5380 bufferObject := GetBuffer(buffer)
5381 assert(bufferObject.device == device)
5382
Jesse Hall3fbc8562015-11-29 22:10:52 -08005383 assert(bufferObject.memory == 0)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005384 State.Buffers[buffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005385}
5386
5387
5388// Buffer view functions
5389
5390@threadSafety("system")
5391cmd VkResult vkCreateBufferView(
5392 VkDevice device,
5393 const VkBufferViewCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005394 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005395 VkBufferView* pView) {
5396 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO)
5397 deviceObject := GetDevice(device)
5398
5399 bufferObject := GetBuffer(pCreateInfo.buffer)
5400 assert(bufferObject.device == device)
5401
5402 view := ?
5403 pView[0] = view
5404 State.BufferViews[view] = new!BufferViewObject(device: device, buffer: pCreateInfo.buffer)
5405
5406 return ?
5407}
5408
5409@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005410cmd void vkDestroyBufferView(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005411 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005412 VkBufferView bufferView,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005413 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005414 deviceObject := GetDevice(device)
5415 bufferViewObject := GetBufferView(bufferView)
5416 assert(bufferViewObject.device == device)
5417
5418 State.BufferViews[bufferView] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005419}
5420
5421
5422// Image functions
5423
5424@threadSafety("system")
5425cmd VkResult vkCreateImage(
5426 VkDevice device,
5427 const VkImageCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005428 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005429 VkImage* pImage) {
5430 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO)
5431 deviceObject := GetDevice(device)
5432
5433 image := ?
5434 pImage[0] = image
5435 State.Images[image] = new!ImageObject(device: device)
5436
5437 return ?
5438}
5439
5440@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005441cmd void vkDestroyImage(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005442 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005443 VkImage image,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005444 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005445 deviceObject := GetDevice(device)
5446 imageObject := GetImage(image)
5447 assert(imageObject.device == device)
5448
Jesse Hall3fbc8562015-11-29 22:10:52 -08005449 assert(imageObject.memory == 0)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005450 State.Images[image] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005451}
5452
Jesse Hall606a54e2015-11-19 22:17:28 -08005453cmd void vkGetImageSubresourceLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005454 VkDevice device,
5455 VkImage image,
5456 const VkImageSubresource* pSubresource,
5457 VkSubresourceLayout* pLayout) {
5458 deviceObject := GetDevice(device)
5459 imageObject := GetImage(image)
5460 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005461}
5462
5463
5464// Image view functions
5465
5466@threadSafety("system")
5467cmd VkResult vkCreateImageView(
5468 VkDevice device,
5469 const VkImageViewCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005470 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005471 VkImageView* pView) {
5472 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO)
5473 deviceObject := GetDevice(device)
5474
5475 imageObject := GetImage(pCreateInfo.image)
5476 assert(imageObject.device == device)
5477
5478 view := ?
5479 pView[0] = view
5480 State.ImageViews[view] = new!ImageViewObject(device: device, image: pCreateInfo.image)
5481
5482 return ?
5483}
5484
5485@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005486cmd void vkDestroyImageView(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005487 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005488 VkImageView imageView,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005489 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005490 deviceObject := GetDevice(device)
5491 imageViewObject := GetImageView(imageView)
5492 assert(imageViewObject.device == device)
5493
5494 State.ImageViews[imageView] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005495}
5496
5497
5498// Shader functions
5499
5500cmd VkResult vkCreateShaderModule(
5501 VkDevice device,
5502 const VkShaderModuleCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005503 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005504 VkShaderModule* pShaderModule) {
5505 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO)
5506 deviceObject := GetDevice(device)
5507
5508 shaderModule := ?
5509 pShaderModule[0] = shaderModule
5510 State.ShaderModules[shaderModule] = new!ShaderModuleObject(device: device)
5511
5512 return ?
5513}
5514
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005515cmd void vkDestroyShaderModule(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005516 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005517 VkShaderModule shaderModule,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005518 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005519 deviceObject := GetDevice(device)
5520 shaderModuleObject := GetShaderModule(shaderModule)
5521 assert(shaderModuleObject.device == device)
5522
5523 State.ShaderModules[shaderModule] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005524}
5525
Jesse Halld27f6aa2015-08-15 17:58:48 -07005526
5527// Pipeline functions
5528
5529cmd VkResult vkCreatePipelineCache(
5530 VkDevice device,
5531 const VkPipelineCacheCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005532 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005533 VkPipelineCache* pPipelineCache) {
5534 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO)
5535 deviceObject := GetDevice(device)
5536
5537 pipelineCache := ?
5538 pPipelineCache[0] = pipelineCache
5539 State.PipelineCaches[pipelineCache] = new!PipelineCacheObject(device: device)
5540
5541 return ?
5542}
5543
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005544cmd void vkDestroyPipelineCache(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005545 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005546 VkPipelineCache pipelineCache,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005547 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005548 deviceObject := GetDevice(device)
5549 pipelineCacheObject := GetPipelineCache(pipelineCache)
5550 assert(pipelineCacheObject.device == device)
5551
5552 State.PipelineCaches[pipelineCache] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005553}
5554
Jesse Halld27f6aa2015-08-15 17:58:48 -07005555cmd VkResult vkGetPipelineCacheData(
5556 VkDevice device,
5557 VkPipelineCache pipelineCache,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005558 platform.size_t* pDataSize,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005559 void* pData) {
5560 deviceObject := GetDevice(device)
5561 pipelineCacheObject := GetPipelineCache(pipelineCache)
5562 assert(pipelineCacheObject.device == device)
5563
5564 return ?
5565}
5566
5567cmd VkResult vkMergePipelineCaches(
5568 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005569 VkPipelineCache dstCache,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005570 u32 srcCacheCount,
5571 const VkPipelineCache* pSrcCaches) {
5572 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005573 dstCacheObject := GetPipelineCache(dstCache)
5574 assert(dstCacheObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005575
5576 srcCaches := pSrcCaches[0:srcCacheCount]
5577 for i in (0 .. srcCacheCount) {
5578 srcCache := srcCaches[i]
5579 srcCacheObject := GetPipelineCache(srcCache)
5580 assert(srcCacheObject.device == device)
5581 }
5582
5583 return ?
5584}
5585
5586cmd VkResult vkCreateGraphicsPipelines(
5587 VkDevice device,
5588 VkPipelineCache pipelineCache,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005589 u32 createInfoCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005590 const VkGraphicsPipelineCreateInfo* pCreateInfos,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005591 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005592 VkPipeline* pPipelines) {
5593 deviceObject := GetDevice(device)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005594 if pipelineCache != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005595 pipelineCacheObject := GetPipelineCache(pipelineCache)
5596 assert(pipelineCacheObject.device == device)
5597 }
5598
Jesse Hall03b6fe12015-11-24 12:44:21 -08005599 createInfos := pCreateInfos[0:createInfoCount]
5600 pipelines := pPipelines[0:createInfoCount]
5601 for i in (0 .. createInfoCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005602 pipeline := ?
5603 pipelines[i] = pipeline
5604 State.Pipelines[pipeline] = new!PipelineObject(device: device)
5605 }
5606
5607 return ?
5608}
5609
5610cmd VkResult vkCreateComputePipelines(
5611 VkDevice device,
5612 VkPipelineCache pipelineCache,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005613 u32 createInfoCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005614 const VkComputePipelineCreateInfo* pCreateInfos,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005615 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005616 VkPipeline* pPipelines) {
5617 deviceObject := GetDevice(device)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005618 if pipelineCache != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005619 pipelineCacheObject := GetPipelineCache(pipelineCache)
5620 assert(pipelineCacheObject.device == device)
5621 }
5622
Jesse Hall03b6fe12015-11-24 12:44:21 -08005623 createInfos := pCreateInfos[0:createInfoCount]
5624 pipelines := pPipelines[0:createInfoCount]
5625 for i in (0 .. createInfoCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005626 pipeline := ?
5627 pipelines[i] = pipeline
5628 State.Pipelines[pipeline] = new!PipelineObject(device: device)
5629 }
5630
5631 return ?
5632}
5633
5634@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005635cmd void vkDestroyPipeline(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005636 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005637 VkPipeline pipeline,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005638 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005639 deviceObject := GetDevice(device)
5640 pipelineObjects := GetPipeline(pipeline)
5641 assert(pipelineObjects.device == device)
5642
5643 State.Pipelines[pipeline] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005644}
5645
5646
5647// Pipeline layout functions
5648
5649@threadSafety("system")
5650cmd VkResult vkCreatePipelineLayout(
5651 VkDevice device,
5652 const VkPipelineLayoutCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005653 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005654 VkPipelineLayout* pPipelineLayout) {
5655 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO)
5656 deviceObject := GetDevice(device)
5657
5658 pipelineLayout := ?
5659 pPipelineLayout[0] = pipelineLayout
5660 State.PipelineLayouts[pipelineLayout] = new!PipelineLayoutObject(device: device)
5661
5662 return ?
5663}
5664
5665@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005666cmd void vkDestroyPipelineLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005667 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005668 VkPipelineLayout pipelineLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005669 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005670 deviceObject := GetDevice(device)
5671 pipelineLayoutObjects := GetPipelineLayout(pipelineLayout)
5672 assert(pipelineLayoutObjects.device == device)
5673
5674 State.PipelineLayouts[pipelineLayout] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005675}
5676
5677
5678// Sampler functions
5679
5680@threadSafety("system")
5681cmd VkResult vkCreateSampler(
5682 VkDevice device,
5683 const VkSamplerCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005684 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005685 VkSampler* pSampler) {
5686 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO)
5687 deviceObject := GetDevice(device)
5688
5689 sampler := ?
5690 pSampler[0] = sampler
5691 State.Samplers[sampler] = new!SamplerObject(device: device)
5692
5693 return ?
5694}
5695
5696@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005697cmd void vkDestroySampler(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005698 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005699 VkSampler sampler,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005700 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005701 deviceObject := GetDevice(device)
5702 samplerObject := GetSampler(sampler)
5703 assert(samplerObject.device == device)
5704
5705 State.Samplers[sampler] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005706}
5707
5708
5709// Descriptor set functions
5710
5711@threadSafety("system")
5712cmd VkResult vkCreateDescriptorSetLayout(
5713 VkDevice device,
5714 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005715 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005716 VkDescriptorSetLayout* pSetLayout) {
5717 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO)
5718 deviceObject := GetDevice(device)
5719
5720 setLayout := ?
5721 pSetLayout[0] = setLayout
5722 State.DescriptorSetLayouts[setLayout] = new!DescriptorSetLayoutObject(device: device)
5723
5724 return ?
5725}
5726
5727@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005728cmd void vkDestroyDescriptorSetLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005729 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005730 VkDescriptorSetLayout descriptorSetLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005731 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005732 deviceObject := GetDevice(device)
5733 descriptorSetLayoutObject := GetDescriptorSetLayout(descriptorSetLayout)
5734 assert(descriptorSetLayoutObject.device == device)
5735
5736 State.DescriptorSetLayouts[descriptorSetLayout] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005737}
5738
5739@threadSafety("system")
5740cmd VkResult vkCreateDescriptorPool(
5741 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005742 const VkDescriptorPoolCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005743 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005744 VkDescriptorPool* pDescriptorPool) {
5745 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO)
5746 deviceObject := GetDevice(device)
5747
5748 descriptorPool := ?
5749 pDescriptorPool[0] = descriptorPool
5750 State.DescriptorPools[descriptorPool] = new!DescriptorPoolObject(device: device)
5751
5752 return ?
5753}
5754
5755@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005756cmd void vkDestroyDescriptorPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005757 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005758 VkDescriptorPool descriptorPool,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005759 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005760 deviceObject := GetDevice(device)
5761 descriptorPoolObject := GetDescriptorPool(descriptorPool)
5762 assert(descriptorPoolObject.device == device)
5763
5764 State.DescriptorPools[descriptorPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005765}
5766
5767@threadSafety("app")
5768cmd VkResult vkResetDescriptorPool(
5769 VkDevice device,
Jesse Hallfbf97b02015-11-20 14:17:03 -08005770 VkDescriptorPool descriptorPool,
5771 VkDescriptorPoolResetFlags flags) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005772 deviceObject := GetDevice(device)
5773 descriptorPoolObject := GetDescriptorPool(descriptorPool)
5774 assert(descriptorPoolObject.device == device)
5775
5776 return ?
5777}
5778
5779@threadSafety("app")
Jesse Hall3fbc8562015-11-29 22:10:52 -08005780cmd VkResult vkAllocateDescriptorSets(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005781 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005782 const VkDescriptorSetAllocateInfo* pAllocateInfo,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005783 VkDescriptorSet* pDescriptorSets) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005784 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005785 allocInfo := pAllocateInfo[0]
Jesse Hallfbf97b02015-11-20 14:17:03 -08005786 descriptorPoolObject := GetDescriptorPool(allocInfo.descriptorPool)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005787
Jesse Hall03b6fe12015-11-24 12:44:21 -08005788 setLayouts := allocInfo.pSetLayouts[0:allocInfo.setCount]
5789 for i in (0 .. allocInfo.setCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005790 setLayout := setLayouts[i]
5791 setLayoutObject := GetDescriptorSetLayout(setLayout)
5792 assert(setLayoutObject.device == device)
5793 }
5794
Jesse Hall03b6fe12015-11-24 12:44:21 -08005795 descriptorSets := pDescriptorSets[0:allocInfo.setCount]
5796 for i in (0 .. allocInfo.setCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005797 descriptorSet := ?
5798 descriptorSets[i] = descriptorSet
5799 State.DescriptorSets[descriptorSet] = new!DescriptorSetObject(device: device)
5800 }
5801
5802 return ?
5803}
5804
Jesse Hallf09c6b12015-08-15 19:54:28 -07005805cmd VkResult vkFreeDescriptorSets(
5806 VkDevice device,
5807 VkDescriptorPool descriptorPool,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005808 u32 descriptorSetCount,
Jesse Hallf09c6b12015-08-15 19:54:28 -07005809 const VkDescriptorSet* pDescriptorSets) {
5810 deviceObject := GetDevice(device)
5811 descriptorPoolObject := GetDescriptorPool(descriptorPool)
5812
Jesse Hall03b6fe12015-11-24 12:44:21 -08005813 descriptorSets := pDescriptorSets[0:descriptorSetCount]
5814 for i in (0 .. descriptorSetCount) {
Jesse Hallf09c6b12015-08-15 19:54:28 -07005815 descriptorSet := descriptorSets[i]
5816 descriptorSetObject := GetDescriptorSet(descriptorSet)
5817 assert(descriptorSetObject.device == device)
5818 State.DescriptorSets[descriptorSet] = null
5819 }
5820
5821 return ?
5822}
5823
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005824cmd void vkUpdateDescriptorSets(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005825 VkDevice device,
Jesse Hallb00daad2015-11-29 19:46:20 -08005826 u32 descriptorWriteCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005827 const VkWriteDescriptorSet* pDescriptorWrites,
Jesse Hallb00daad2015-11-29 19:46:20 -08005828 u32 descriptorCopyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005829 const VkCopyDescriptorSet* pDescriptorCopies) {
5830 deviceObject := GetDevice(device)
5831
Jesse Hallb00daad2015-11-29 19:46:20 -08005832 descriptorWrites := pDescriptorWrites[0:descriptorWriteCount]
5833 for i in (0 .. descriptorWriteCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005834 descriptorWrite := descriptorWrites[i]
Jesse Hall3fbc8562015-11-29 22:10:52 -08005835 descriptorWriteObject := GetDescriptorSet(descriptorWrite.dstSet)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005836 assert(descriptorWriteObject.device == device)
5837 }
5838
Jesse Hallb00daad2015-11-29 19:46:20 -08005839 descriptorCopies := pDescriptorCopies[0:descriptorCopyCount]
5840 for i in (0 .. descriptorCopyCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005841 descriptorCopy := descriptorCopies[i]
Jesse Hall3fbc8562015-11-29 22:10:52 -08005842 descriptorCopyObject := GetDescriptorSet(descriptorCopy.dstSet)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005843 assert(descriptorCopyObject.device == device)
5844 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07005845}
5846
5847
5848// Framebuffer functions
5849
5850@threadSafety("system")
5851cmd VkResult vkCreateFramebuffer(
5852 VkDevice device,
5853 const VkFramebufferCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005854 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005855 VkFramebuffer* pFramebuffer) {
5856 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO)
5857 deviceObject := GetDevice(device)
5858
5859 framebuffer := ?
5860 pFramebuffer[0] = framebuffer
5861 State.Framebuffers[framebuffer] = new!FramebufferObject(device: device)
5862
5863 return ?
5864}
5865
5866@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005867cmd void vkDestroyFramebuffer(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005868 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005869 VkFramebuffer framebuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005870 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005871 deviceObject := GetDevice(device)
5872 framebufferObject := GetFramebuffer(framebuffer)
5873 assert(framebufferObject.device == device)
5874
5875 State.Framebuffers[framebuffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005876}
5877
5878
5879// Renderpass functions
5880
5881@threadSafety("system")
5882cmd VkResult vkCreateRenderPass(
5883 VkDevice device,
5884 const VkRenderPassCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005885 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005886 VkRenderPass* pRenderPass) {
5887 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO)
5888 deviceObject := GetDevice(device)
5889
5890 renderpass := ?
5891 pRenderPass[0] = renderpass
5892 State.RenderPasses[renderpass] = new!RenderPassObject(device: device)
5893
5894 return ?
5895}
5896
5897@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005898cmd void vkDestroyRenderPass(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005899 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005900 VkRenderPass renderPass,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005901 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005902 deviceObject := GetDevice(device)
5903 renderPassObject := GetRenderPass(renderPass)
5904 assert(renderPassObject.device == device)
5905
5906 State.RenderPasses[renderPass] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005907}
5908
Jesse Hall606a54e2015-11-19 22:17:28 -08005909cmd void vkGetRenderAreaGranularity(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005910 VkDevice device,
5911 VkRenderPass renderPass,
5912 VkExtent2D* pGranularity) {
5913 deviceObject := GetDevice(device)
5914 renderPassObject := GetRenderPass(renderPass)
5915
5916 granularity := ?
5917 pGranularity[0] = granularity
Jesse Halld27f6aa2015-08-15 17:58:48 -07005918}
5919
5920// Command pool functions
5921
5922cmd VkResult vkCreateCommandPool(
5923 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005924 const VkCommandPoolCreateInfo* pCreateInfo,
5925 const VkAllocationCallbacks* pAllocator,
5926 VkCommandPool* pCommandPool) {
5927 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005928 deviceObject := GetDevice(device)
5929
Jesse Hall3fbc8562015-11-29 22:10:52 -08005930 commandPool := ?
5931 pCommandPool[0] = commandPool
5932 State.CommandPools[commandPool] = new!CommandPoolObject(device: device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005933
5934 return ?
5935}
5936
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005937cmd void vkDestroyCommandPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005938 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005939 VkCommandPool commandPool,
5940 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005941 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005942 commandPoolObject := GetCommandPool(commandPool)
5943 assert(commandPoolObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005944
Jesse Hall3fbc8562015-11-29 22:10:52 -08005945 State.CommandPools[commandPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005946}
5947
5948cmd VkResult vkResetCommandPool(
5949 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005950 VkCommandPool commandPool,
5951 VkCommandPoolResetFlags flags) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005952 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005953 commandPoolObject := GetCommandPool(commandPool)
5954 assert(commandPoolObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005955
5956 return ?
5957}
5958
5959// Command buffer functions
5960
Jesse Hall3fbc8562015-11-29 22:10:52 -08005961macro void bindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) {
5962 memoryObject := GetDeviceMemory(memory)
5963 memoryObject.boundCommandBuffers[commandBuffer] = commandBuffer
Jesse Halld27f6aa2015-08-15 17:58:48 -07005964
Jesse Hall3fbc8562015-11-29 22:10:52 -08005965 commandBufferObject := GetCommandBuffer(commandBuffer)
5966 commandBufferObject.boundObjects[as!u64(obj)] = memory
Jesse Halld27f6aa2015-08-15 17:58:48 -07005967}
5968
Jesse Hall3fbc8562015-11-29 22:10:52 -08005969macro void unbindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) {
5970 memoryObject := GetDeviceMemory(memory)
5971 memoryObject.boundCommandBuffers[commandBuffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005972
Jesse Hall3fbc8562015-11-29 22:10:52 -08005973 commandBufferObject := GetCommandBuffer(commandBuffer)
5974 commandBufferObject.boundObjects[as!u64(obj)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005975}
5976
5977@threadSafety("system")
Jesse Hall3fbc8562015-11-29 22:10:52 -08005978cmd VkResult vkAllocateCommandBuffers(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005979 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005980 const VkCommandBufferAllocateInfo* pAllocateInfo,
5981 VkCommandBuffer* pCommandBuffers) {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08005982 assert(pAllocateInfo[0].sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005983
Jesse Hall3dd678a2016-01-08 21:52:01 -08005984 count := pAllocateInfo[0].commandBufferCount
Jesse Hall3fbc8562015-11-29 22:10:52 -08005985 commandBuffers := pCommandBuffers[0:count]
Jesse Hallfbf97b02015-11-20 14:17:03 -08005986 for i in (0 .. count) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005987 commandBuffer := ?
5988 commandBuffers[i] = commandBuffer
5989 State.CommandBuffers[commandBuffer] = new!CommandBufferObject(device: device)
Jesse Hallfbf97b02015-11-20 14:17:03 -08005990 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07005991
5992 return ?
5993}
5994
5995@threadSafety("system")
Jesse Hallfbf97b02015-11-20 14:17:03 -08005996cmd void vkFreeCommandBuffers(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005997 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005998 VkCommandPool commandPool,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005999 u32 commandBufferCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006000 const VkCommandBuffer* pCommandBuffers) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006001 deviceObject := GetDevice(device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006002
Jesse Hall3fbc8562015-11-29 22:10:52 -08006003 commandBuffers := pCommandBuffers[0:commandBufferCount]
Jesse Hall03b6fe12015-11-24 12:44:21 -08006004 for i in (0 .. commandBufferCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006005 commandBufferObject := GetCommandBuffer(commandBuffers[i])
6006 assert(commandBufferObject.device == device)
Jesse Hallfbf97b02015-11-20 14:17:03 -08006007 // TODO: iterate over boundObjects and clear memory bindings
Jesse Hall3fbc8562015-11-29 22:10:52 -08006008 State.CommandBuffers[commandBuffers[i]] = null
Jesse Hallfbf97b02015-11-20 14:17:03 -08006009 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07006010}
6011
6012@threadSafety("app")
6013cmd VkResult vkBeginCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006014 VkCommandBuffer commandBuffer,
6015 const VkCommandBufferBeginInfo* pBeginInfo) {
6016 assert(pBeginInfo.sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO)
6017 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006018
6019 // TODO: iterate over boundObjects and clear memory bindings
6020
6021 return ?
6022}
6023
6024@threadSafety("app")
6025cmd VkResult vkEndCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006026 VkCommandBuffer commandBuffer) {
6027 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006028
6029 return ?
6030}
6031
6032@threadSafety("app")
6033cmd VkResult vkResetCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006034 VkCommandBuffer commandBuffer,
6035 VkCommandBufferResetFlags flags) {
6036 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006037
6038 // TODO: iterate over boundObjects and clear memory bindings
6039
6040 return ?
6041}
6042
6043
6044// Command buffer building functions
6045
6046@threadSafety("app")
6047cmd void vkCmdBindPipeline(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006048 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006049 VkPipelineBindPoint pipelineBindPoint,
6050 VkPipeline pipeline) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006051 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006052 pipelineObject := GetPipeline(pipeline)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006053 assert(commandBufferObject.device == pipelineObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006054
Jesse Halld8bade02015-11-24 10:24:18 -08006055 queue := switch (pipelineBindPoint) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006056 case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT
6057 case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT
6058 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08006059 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006060}
6061
6062@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006063cmd void vkCmdSetViewport(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006064 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006065 u32 firstViewport,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006066 u32 viewportCount,
6067 const VkViewport* pViewports) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006068 commandBufferObject := GetCommandBuffer(commandBuffer)
6069 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006070}
6071
6072@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006073cmd void vkCmdSetScissor(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006074 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006075 u32 firstScissor,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006076 u32 scissorCount,
6077 const VkRect2D* pScissors) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006078 commandBufferObject := GetCommandBuffer(commandBuffer)
6079 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006080}
6081
6082@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006083cmd void vkCmdSetLineWidth(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006084 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006085 f32 lineWidth) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006086 commandBufferObject := GetCommandBuffer(commandBuffer)
6087 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006088}
6089
6090@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006091cmd void vkCmdSetDepthBias(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006092 VkCommandBuffer commandBuffer,
Jesse Halla9bb62b2015-11-21 19:31:56 -08006093 f32 depthBiasConstantFactor,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006094 f32 depthBiasClamp,
Jesse Halla9bb62b2015-11-21 19:31:56 -08006095 f32 depthBiasSlopeFactor) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006096 commandBufferObject := GetCommandBuffer(commandBuffer)
6097 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006098}
Jesse Halld27f6aa2015-08-15 17:58:48 -07006099
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006100@threadSafety("app")
6101cmd void vkCmdSetBlendConstants(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006102 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006103 // TODO(jessehall): apic only supports 'const' on pointer types. Using
6104 // an annotation as a quick hack to pass this to the template without
6105 // having to modify the AST and semantic model.
Jesse Hallb00daad2015-11-29 19:46:20 -08006106 @readonly f32[4] blendConstants) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006107 commandBufferObject := GetCommandBuffer(commandBuffer)
6108 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006109}
6110
6111@threadSafety("app")
6112cmd void vkCmdSetDepthBounds(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006113 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006114 f32 minDepthBounds,
6115 f32 maxDepthBounds) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006116 commandBufferObject := GetCommandBuffer(commandBuffer)
6117 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006118}
6119
6120@threadSafety("app")
6121cmd void vkCmdSetStencilCompareMask(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006122 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006123 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08006124 u32 compareMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006125 commandBufferObject := GetCommandBuffer(commandBuffer)
6126 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006127}
6128
6129@threadSafety("app")
6130cmd void vkCmdSetStencilWriteMask(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006131 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006132 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08006133 u32 writeMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006134 commandBufferObject := GetCommandBuffer(commandBuffer)
6135 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006136}
6137
6138@threadSafety("app")
6139cmd void vkCmdSetStencilReference(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006140 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006141 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08006142 u32 reference) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006143 commandBufferObject := GetCommandBuffer(commandBuffer)
6144 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006145}
6146
6147@threadSafety("app")
6148cmd void vkCmdBindDescriptorSets(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006149 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006150 VkPipelineBindPoint pipelineBindPoint,
6151 VkPipelineLayout layout,
6152 u32 firstSet,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006153 u32 descriptorSetCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006154 const VkDescriptorSet* pDescriptorSets,
6155 u32 dynamicOffsetCount,
6156 const u32* pDynamicOffsets) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006157 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006158
Jesse Hall03b6fe12015-11-24 12:44:21 -08006159 descriptorSets := pDescriptorSets[0:descriptorSetCount]
6160 for i in (0 .. descriptorSetCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006161 descriptorSet := descriptorSets[i]
6162 descriptorSetObject := GetDescriptorSet(descriptorSet)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006163 assert(commandBufferObject.device == descriptorSetObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006164 }
6165
6166 dynamicOffsets := pDynamicOffsets[0:dynamicOffsetCount]
6167 for i in (0 .. dynamicOffsetCount) {
6168 dynamicOffset := dynamicOffsets[i]
6169 }
6170
Jesse Halld8bade02015-11-24 10:24:18 -08006171 queue := switch (pipelineBindPoint) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006172 case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT
6173 case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT
6174 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08006175 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006176}
6177
6178@threadSafety("app")
6179cmd void vkCmdBindIndexBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006180 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006181 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006182 VkDeviceSize offset,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006183 VkIndexType indexType) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006184 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006185 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006186 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006187
Jesse Hall3fbc8562015-11-29 22:10:52 -08006188 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006189
Jesse Hall3fbc8562015-11-29 22:10:52 -08006190 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006191}
6192
6193@threadSafety("app")
6194cmd void vkCmdBindVertexBuffers(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006195 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006196 u32 firstBinding,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006197 u32 bindingCount,
6198 const VkBuffer* pBuffers,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006199 const VkDeviceSize* pOffsets) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006200 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006201
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006202 // TODO: check if not [firstBinding:firstBinding+bindingCount]
Jesse Halld27f6aa2015-08-15 17:58:48 -07006203 buffers := pBuffers[0:bindingCount]
6204 offsets := pOffsets[0:bindingCount]
6205 for i in (0 .. bindingCount) {
6206 buffer := buffers[i]
6207 offset := offsets[i]
6208 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006209 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006210
Jesse Hall3fbc8562015-11-29 22:10:52 -08006211 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006212 }
6213
Jesse Hall3fbc8562015-11-29 22:10:52 -08006214 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006215}
6216
6217@threadSafety("app")
6218cmd void vkCmdDraw(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006219 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006220 u32 vertexCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006221 u32 instanceCount,
6222 u32 firstVertex,
6223 u32 firstInstance) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006224 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006225
Jesse Hall3fbc8562015-11-29 22:10:52 -08006226 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006227}
6228
6229@threadSafety("app")
6230cmd void vkCmdDrawIndexed(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006231 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006232 u32 indexCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006233 u32 instanceCount,
6234 u32 firstIndex,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006235 s32 vertexOffset,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006236 u32 firstInstance) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006237 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006238
Jesse Hall3fbc8562015-11-29 22:10:52 -08006239 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006240}
6241
6242@threadSafety("app")
6243cmd void vkCmdDrawIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006244 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006245 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006246 VkDeviceSize offset,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006247 u32 drawCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006248 u32 stride) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006249 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006250 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006251 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006252
Jesse Hall3fbc8562015-11-29 22:10:52 -08006253 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006254
Jesse Hall3fbc8562015-11-29 22:10:52 -08006255 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006256}
6257
6258@threadSafety("app")
6259cmd void vkCmdDrawIndexedIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006260 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006261 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006262 VkDeviceSize offset,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006263 u32 drawCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006264 u32 stride) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006265 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006266 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006267 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006268
Jesse Hall3fbc8562015-11-29 22:10:52 -08006269 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006270
Jesse Hall3fbc8562015-11-29 22:10:52 -08006271 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006272}
6273
6274@threadSafety("app")
6275cmd void vkCmdDispatch(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006276 VkCommandBuffer commandBuffer,
Jesse Hallad250842017-03-10 18:35:38 -08006277 u32 groupCountX,
6278 u32 groupCountY,
6279 u32 groupCountZ) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006280 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006281
Jesse Hall3fbc8562015-11-29 22:10:52 -08006282 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006283}
6284
6285@threadSafety("app")
6286cmd void vkCmdDispatchIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006287 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006288 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006289 VkDeviceSize offset) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006290 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006291 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006292 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006293
Jesse Hall3fbc8562015-11-29 22:10:52 -08006294 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006295
Jesse Hall3fbc8562015-11-29 22:10:52 -08006296 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006297}
6298
6299@threadSafety("app")
6300cmd void vkCmdCopyBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006301 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006302 VkBuffer srcBuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006303 VkBuffer dstBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006304 u32 regionCount,
6305 const VkBufferCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006306 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006307 srcBufferObject := GetBuffer(srcBuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006308 dstBufferObject := GetBuffer(dstBuffer)
6309 assert(commandBufferObject.device == srcBufferObject.device)
6310 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006311
6312 regions := pRegions[0:regionCount]
6313 for i in (0 .. regionCount) {
6314 region := regions[i]
6315 }
6316
Jesse Hall3fbc8562015-11-29 22:10:52 -08006317 bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory)
6318 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006319
Jesse Hall65ab5522015-11-30 00:07:16 -08006320 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006321}
6322
6323@threadSafety("app")
6324cmd void vkCmdCopyImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006325 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006326 VkImage srcImage,
6327 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006328 VkImage dstImage,
6329 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006330 u32 regionCount,
6331 const VkImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006332 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006333 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006334 dstImageObject := GetImage(dstImage)
6335 assert(commandBufferObject.device == srcImageObject.device)
6336 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006337
6338 regions := pRegions[0:regionCount]
6339 for i in (0 .. regionCount) {
6340 region := regions[i]
6341 }
6342
Jesse Hall3fbc8562015-11-29 22:10:52 -08006343 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6344 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006345
Jesse Hall65ab5522015-11-30 00:07:16 -08006346 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006347}
6348
6349@threadSafety("app")
6350cmd void vkCmdBlitImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006351 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006352 VkImage srcImage,
6353 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006354 VkImage dstImage,
6355 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006356 u32 regionCount,
6357 const VkImageBlit* pRegions,
Jesse Hall23ff73f2015-11-29 14:36:39 -08006358 VkFilter filter) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006359 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006360 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006361 dstImageObject := GetImage(dstImage)
6362 assert(commandBufferObject.device == srcImageObject.device)
6363 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006364
6365 regions := pRegions[0:regionCount]
6366 for i in (0 .. regionCount) {
6367 region := regions[i]
6368 }
6369
Jesse Hall3fbc8562015-11-29 22:10:52 -08006370 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6371 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006372
Jesse Hall3fbc8562015-11-29 22:10:52 -08006373 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006374}
6375
6376@threadSafety("app")
6377cmd void vkCmdCopyBufferToImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006378 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006379 VkBuffer srcBuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006380 VkImage dstImage,
6381 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006382 u32 regionCount,
6383 const VkBufferImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006384 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006385 srcBufferObject := GetBuffer(srcBuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006386 dstImageObject := GetImage(dstImage)
6387 assert(commandBufferObject.device == srcBufferObject.device)
6388 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006389
6390 regions := pRegions[0:regionCount]
6391 for i in (0 .. regionCount) {
6392 region := regions[i]
6393 }
6394
Jesse Hall3fbc8562015-11-29 22:10:52 -08006395 bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory)
6396 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006397
Jesse Hall65ab5522015-11-30 00:07:16 -08006398 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006399}
6400
6401@threadSafety("app")
6402cmd void vkCmdCopyImageToBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006403 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006404 VkImage srcImage,
6405 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006406 VkBuffer dstBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006407 u32 regionCount,
6408 const VkBufferImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006409 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006410 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006411 dstBufferObject := GetBuffer(dstBuffer)
6412 assert(commandBufferObject.device == srcImageObject.device)
6413 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006414
6415 regions := pRegions[0:regionCount]
6416 for i in (0 .. regionCount) {
6417 region := regions[i]
6418 }
6419
Jesse Hall3fbc8562015-11-29 22:10:52 -08006420 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6421 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006422
Jesse Hall65ab5522015-11-30 00:07:16 -08006423 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006424}
6425
6426@threadSafety("app")
6427cmd void vkCmdUpdateBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006428 VkCommandBuffer commandBuffer,
6429 VkBuffer dstBuffer,
6430 VkDeviceSize dstOffset,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006431 VkDeviceSize dataSize,
Jesse Hall56d386a2016-07-26 15:20:40 -07006432 const void* pData) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006433 commandBufferObject := GetCommandBuffer(commandBuffer)
6434 dstBufferObject := GetBuffer(dstBuffer)
6435 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006436
6437 data := pData[0:dataSize]
6438
Jesse Hall3fbc8562015-11-29 22:10:52 -08006439 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006440
Jesse Hall65ab5522015-11-30 00:07:16 -08006441 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006442}
6443
6444@threadSafety("app")
6445cmd void vkCmdFillBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006446 VkCommandBuffer commandBuffer,
6447 VkBuffer dstBuffer,
6448 VkDeviceSize dstOffset,
Jesse Hallb00daad2015-11-29 19:46:20 -08006449 VkDeviceSize size,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006450 u32 data) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006451 commandBufferObject := GetCommandBuffer(commandBuffer)
6452 dstBufferObject := GetBuffer(dstBuffer)
6453 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006454
Jesse Hall65ab5522015-11-30 00:07:16 -08006455 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006456}
6457
6458@threadSafety("app")
6459cmd void vkCmdClearColorImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006460 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006461 VkImage image,
6462 VkImageLayout imageLayout,
6463 const VkClearColorValue* pColor,
6464 u32 rangeCount,
6465 const VkImageSubresourceRange* pRanges) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006466 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006467 imageObject := GetImage(image)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006468 assert(commandBufferObject.device == imageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006469
6470 ranges := pRanges[0:rangeCount]
6471 for i in (0 .. rangeCount) {
6472 range := ranges[i]
6473 }
6474
Jesse Hall3fbc8562015-11-29 22:10:52 -08006475 bindCommandBuffer(commandBuffer, image, imageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006476
Jesse Hall3fbc8562015-11-29 22:10:52 -08006477 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006478}
6479
6480@threadSafety("app")
6481cmd void vkCmdClearDepthStencilImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006482 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006483 VkImage image,
6484 VkImageLayout imageLayout,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006485 const VkClearDepthStencilValue* pDepthStencil,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006486 u32 rangeCount,
6487 const VkImageSubresourceRange* pRanges) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006488 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006489 imageObject := GetImage(image)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006490 assert(commandBufferObject.device == imageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006491
6492 ranges := pRanges[0:rangeCount]
6493 for i in (0 .. rangeCount) {
6494 range := ranges[i]
6495 }
6496
Jesse Hall3fbc8562015-11-29 22:10:52 -08006497 bindCommandBuffer(commandBuffer, image, imageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006498
Jesse Hall3fbc8562015-11-29 22:10:52 -08006499 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006500}
6501
6502@threadSafety("app")
Jesse Hallae38f732015-11-19 21:32:50 -08006503cmd void vkCmdClearAttachments(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006504 VkCommandBuffer commandBuffer,
Jesse Hallae38f732015-11-19 21:32:50 -08006505 u32 attachmentCount,
6506 const VkClearAttachment* pAttachments,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006507 u32 rectCount,
Jesse Halla15a4bf2015-11-19 22:48:02 -08006508 const VkClearRect* pRects) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006509 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006510
6511 rects := pRects[0:rectCount]
6512 for i in (0 .. rectCount) {
6513 rect := rects[i]
6514 }
6515
Jesse Hall3fbc8562015-11-29 22:10:52 -08006516 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006517}
6518
6519@threadSafety("app")
6520cmd void vkCmdResolveImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006521 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006522 VkImage srcImage,
6523 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006524 VkImage dstImage,
6525 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006526 u32 regionCount,
6527 const VkImageResolve* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006528 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006529 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006530 dstImageObject := GetImage(dstImage)
6531 assert(commandBufferObject.device == srcImageObject.device)
6532 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006533
6534 regions := pRegions[0:regionCount]
6535 for i in (0 .. regionCount) {
6536 region := regions[i]
6537 }
6538
Jesse Hall3fbc8562015-11-29 22:10:52 -08006539 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6540 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006541
Jesse Hall3fbc8562015-11-29 22:10:52 -08006542 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006543}
6544
6545@threadSafety("app")
6546cmd void vkCmdSetEvent(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006547 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006548 VkEvent event,
6549 VkPipelineStageFlags stageMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006550 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006551 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006552 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006553}
6554
6555@threadSafety("app")
6556cmd void vkCmdResetEvent(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006557 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006558 VkEvent event,
6559 VkPipelineStageFlags stageMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006560 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006561 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006562 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006563}
6564
6565@threadSafety("app")
6566cmd void vkCmdWaitEvents(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006567 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006568 u32 eventCount,
6569 const VkEvent* pEvents,
6570 VkPipelineStageFlags srcStageMask,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006571 VkPipelineStageFlags dstStageMask,
6572 u32 memoryBarrierCount,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006573 const VkMemoryBarrier* pMemoryBarriers,
6574 u32 bufferMemoryBarrierCount,
6575 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
6576 u32 imageMemoryBarrierCount,
6577 const VkImageMemoryBarrier* pImageMemoryBarriers) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006578 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006579
6580 events := pEvents[0:eventCount]
6581 for i in (0 .. eventCount) {
6582 event := events[i]
6583 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006584 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006585 }
6586
Jesse Hall3dd678a2016-01-08 21:52:01 -08006587 memoryBarriers := pMemoryBarriers[0:memoryBarrierCount]
Jesse Hall3fbc8562015-11-29 22:10:52 -08006588 for i in (0 .. memoryBarrierCount) {
Jesse Hall3dd678a2016-01-08 21:52:01 -08006589 memoryBarrier := memoryBarriers[i]
6590 }
6591 bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount]
6592 for i in (0 .. bufferMemoryBarrierCount) {
6593 bufferMemoryBarrier := bufferMemoryBarriers[i]
6594 bufferObject := GetBuffer(bufferMemoryBarrier.buffer)
6595 assert(bufferObject.device == commandBufferObject.device)
6596 }
6597 imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount]
6598 for i in (0 .. imageMemoryBarrierCount) {
6599 imageMemoryBarrier := imageMemoryBarriers[i]
6600 imageObject := GetImage(imageMemoryBarrier.image)
6601 assert(imageObject.device == commandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006602 }
6603}
6604
6605@threadSafety("app")
6606cmd void vkCmdPipelineBarrier(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006607 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006608 VkPipelineStageFlags srcStageMask,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006609 VkPipelineStageFlags dstStageMask,
Jesse Halldc6d36c2015-11-29 19:12:15 -08006610 VkDependencyFlags dependencyFlags,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006611 u32 memoryBarrierCount,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006612 const VkMemoryBarrier* pMemoryBarriers,
6613 u32 bufferMemoryBarrierCount,
6614 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
6615 u32 imageMemoryBarrierCount,
6616 const VkImageMemoryBarrier* pImageMemoryBarriers) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006617 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006618
Jesse Hall3dd678a2016-01-08 21:52:01 -08006619 memoryBarriers := pMemoryBarriers[0:memoryBarrierCount]
Jesse Hall3fbc8562015-11-29 22:10:52 -08006620 for i in (0 .. memoryBarrierCount) {
Jesse Hall3dd678a2016-01-08 21:52:01 -08006621 memoryBarrier := memoryBarriers[i]
6622 }
6623 bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount]
6624 for i in (0 .. bufferMemoryBarrierCount) {
6625 bufferMemoryBarrier := bufferMemoryBarriers[i]
6626 bufferObject := GetBuffer(bufferMemoryBarrier.buffer)
6627 assert(bufferObject.device == commandBufferObject.device)
6628 }
6629 imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount]
6630 for i in (0 .. imageMemoryBarrierCount) {
6631 imageMemoryBarrier := imageMemoryBarriers[i]
6632 imageObject := GetImage(imageMemoryBarrier.image)
6633 assert(imageObject.device == commandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006634 }
6635}
6636
6637@threadSafety("app")
6638cmd void vkCmdBeginQuery(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006639 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006640 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006641 u32 query,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006642 VkQueryControlFlags flags) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006643 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006644 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006645 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006646}
6647
6648@threadSafety("app")
6649cmd void vkCmdEndQuery(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006650 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006651 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006652 u32 query) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006653 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006654 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006655 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006656}
6657
6658@threadSafety("app")
6659cmd void vkCmdResetQueryPool(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006660 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006661 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006662 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006663 u32 queryCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006664 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006665 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006666 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006667}
6668
6669@threadSafety("app")
6670cmd void vkCmdWriteTimestamp(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006671 VkCommandBuffer commandBuffer,
Jesse Hall6f39a6d2015-11-24 11:08:36 -08006672 VkPipelineStageFlagBits pipelineStage,
Jesse Halla3a7a1d2015-11-24 11:37:23 -08006673 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006674 u32 query) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006675 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halla3a7a1d2015-11-24 11:37:23 -08006676 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006677 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006678}
6679
6680@threadSafety("app")
6681cmd void vkCmdCopyQueryPoolResults(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006682 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006683 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006684 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006685 u32 queryCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006686 VkBuffer dstBuffer,
6687 VkDeviceSize dstOffset,
Jesse Halla9bb62b2015-11-21 19:31:56 -08006688 VkDeviceSize stride,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006689 VkQueryResultFlags flags) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006690 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006691 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006692 dstBufferObject := GetBuffer(dstBuffer)
6693 assert(commandBufferObject.device == queryPoolObject.device)
6694 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006695}
6696
6697cmd void vkCmdPushConstants(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006698 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006699 VkPipelineLayout layout,
6700 VkShaderStageFlags stageFlags,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006701 u32 offset,
6702 u32 size,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08006703 const void* pValues) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006704 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006705 layoutObject := GetPipelineLayout(layout)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006706 assert(commandBufferObject.device == layoutObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006707}
6708
6709@threadSafety("app")
6710cmd void vkCmdBeginRenderPass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006711 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006712 const VkRenderPassBeginInfo* pRenderPassBegin,
Jesse Hall65ab5522015-11-30 00:07:16 -08006713 VkSubpassContents contents) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006714 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006715 renderPassObject := GetRenderPass(pRenderPassBegin.renderPass)
6716 framebufferObject := GetFramebuffer(pRenderPassBegin.framebuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006717 assert(commandBufferObject.device == renderPassObject.device)
6718 assert(commandBufferObject.device == framebufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006719
Jesse Hall3fbc8562015-11-29 22:10:52 -08006720 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006721}
6722
6723cmd void vkCmdNextSubpass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006724 VkCommandBuffer commandBuffer,
Jesse Hall65ab5522015-11-30 00:07:16 -08006725 VkSubpassContents contents) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006726 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006727}
6728
6729@threadSafety("app")
6730cmd void vkCmdEndRenderPass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006731 VkCommandBuffer commandBuffer) {
6732 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006733
Jesse Hall3fbc8562015-11-29 22:10:52 -08006734 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006735}
6736
6737cmd void vkCmdExecuteCommands(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006738 VkCommandBuffer commandBuffer,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006739 u32 commandBufferCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006740 const VkCommandBuffer* pCommandBuffers) {
6741 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006742
Jesse Hall3dd678a2016-01-08 21:52:01 -08006743 commandBuffers := pCommandBuffers[0:commandBufferCount]
6744 for i in (0 .. commandBufferCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006745 secondaryCommandBuffer := commandBuffers[i]
6746 secondaryCommandBufferObject := GetCommandBuffer(secondaryCommandBuffer)
6747 assert(commandBufferObject.device == secondaryCommandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006748 }
6749}
6750
Jesse Hallad250842017-03-10 18:35:38 -08006751@extension("VK_KHR_surface") // 1
Jesse Hall1356b0d2015-11-23 17:24:58 -08006752cmd void vkDestroySurfaceKHR(
6753 VkInstance instance,
Jesse Hall0e74f002015-11-30 11:37:59 -08006754 VkSurfaceKHR surface,
6755 const VkAllocationCallbacks* pAllocator) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08006756 instanceObject := GetInstance(instance)
6757 surfaceObject := GetSurface(surface)
6758 assert(surfaceObject.instance == instance)
Michael Lentine88594d72015-11-12 12:49:45 -08006759
Jesse Hall1356b0d2015-11-23 17:24:58 -08006760 State.Surfaces[surface] = null
Jesse Hall2818f932015-11-19 21:19:17 -08006761}
6762
Jesse Hallad250842017-03-10 18:35:38 -08006763@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08006764cmd VkResult vkGetPhysicalDeviceSurfaceSupportKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08006765 VkPhysicalDevice physicalDevice,
6766 u32 queueFamilyIndex,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006767 VkSurfaceKHR surface,
Jesse Hallb00daad2015-11-29 19:46:20 -08006768 VkBool32* pSupported) {
6769 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08006770
6771 return ?
6772}
6773
Jesse Hallad250842017-03-10 18:35:38 -08006774@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08006775cmd VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
6776 VkPhysicalDevice physicalDevice,
6777 VkSurfaceKHR surface,
6778 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) {
6779 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6780
6781 surfaceCapabilities := ?
6782 pSurfaceCapabilities[0] = surfaceCapabilities
6783
6784 return ?
6785}
6786
Jesse Hallad250842017-03-10 18:35:38 -08006787@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08006788cmd VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(
6789 VkPhysicalDevice physicalDevice,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006790 VkSurfaceKHR surface,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006791 u32* pSurfaceFormatCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006792 VkSurfaceFormatKHR* pSurfaceFormats) {
Jesse Hallb00daad2015-11-29 19:46:20 -08006793 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08006794
6795 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08006796 pSurfaceFormatCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08006797 surfaceFormats := pSurfaceFormats[0:count]
6798
6799 for i in (0 .. count) {
6800 surfaceFormat := ?
6801 surfaceFormats[i] = surfaceFormat
6802 }
6803
6804 return ?
6805}
6806
Jesse Hallad250842017-03-10 18:35:38 -08006807@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08006808cmd VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(
6809 VkPhysicalDevice physicalDevice,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006810 VkSurfaceKHR surface,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006811 u32* pPresentModeCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006812 VkPresentModeKHR* pPresentModes) {
Jesse Hallb00daad2015-11-29 19:46:20 -08006813 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08006814
6815 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08006816 pPresentModeCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08006817 presentModes := pPresentModes[0:count]
6818
6819 for i in (0 .. count) {
6820 presentMode := ?
6821 presentModes[i] = presentMode
6822 }
6823
6824 return ?
6825}
6826
Jesse Hallad250842017-03-10 18:35:38 -08006827@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08006828cmd VkResult vkCreateSwapchainKHR(
6829 VkDevice device,
6830 const VkSwapchainCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006831 const VkAllocationCallbacks* pAllocator,
Michael Lentine88594d72015-11-12 12:49:45 -08006832 VkSwapchainKHR* pSwapchain) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08006833 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR)
Michael Lentine88594d72015-11-12 12:49:45 -08006834 deviceObject := GetDevice(device)
6835
6836 swapchain := ?
6837 pSwapchain[0] = swapchain
6838 State.Swapchains[swapchain] = new!SwapchainObject(device: device)
6839
6840 return ?
6841}
6842
Jesse Hallad250842017-03-10 18:35:38 -08006843@extension("VK_KHR_swapchain") // 2
Jesse Hall1356b0d2015-11-23 17:24:58 -08006844cmd void vkDestroySwapchainKHR(
Michael Lentine88594d72015-11-12 12:49:45 -08006845 VkDevice device,
Jesse Hall0e74f002015-11-30 11:37:59 -08006846 VkSwapchainKHR swapchain,
6847 const VkAllocationCallbacks* pAllocator) {
Michael Lentine88594d72015-11-12 12:49:45 -08006848 deviceObject := GetDevice(device)
6849 swapchainObject := GetSwapchain(swapchain)
6850 assert(swapchainObject.device == device)
6851
6852 State.Swapchains[swapchain] = null
Michael Lentine88594d72015-11-12 12:49:45 -08006853}
6854
Jesse Hallad250842017-03-10 18:35:38 -08006855@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08006856cmd VkResult vkGetSwapchainImagesKHR(
6857 VkDevice device,
6858 VkSwapchainKHR swapchain,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006859 u32* pSwapchainImageCount,
Michael Lentine88594d72015-11-12 12:49:45 -08006860 VkImage* pSwapchainImages) {
6861 deviceObject := GetDevice(device)
6862
6863 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08006864 pSwapchainImageCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08006865 swapchainImages := pSwapchainImages[0:count]
6866
6867 for i in (0 .. count) {
6868 swapchainImage := ?
6869 swapchainImages[i] = swapchainImage
Jesse Hall1356b0d2015-11-23 17:24:58 -08006870 State.Images[swapchainImage] = new!ImageObject(device: device)
Michael Lentine88594d72015-11-12 12:49:45 -08006871 }
6872
6873 return ?
6874}
6875
Jesse Hallad250842017-03-10 18:35:38 -08006876@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08006877cmd VkResult vkAcquireNextImageKHR(
6878 VkDevice device,
6879 VkSwapchainKHR swapchain,
6880 u64 timeout,
6881 VkSemaphore semaphore,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006882 VkFence fence,
Michael Lentine88594d72015-11-12 12:49:45 -08006883 u32* pImageIndex) {
6884 deviceObject := GetDevice(device)
6885 swapchainObject := GetSwapchain(swapchain)
6886
6887 imageIndex := ?
6888 pImageIndex[0] = imageIndex
6889
6890 return ?
6891}
6892
Jesse Hallad250842017-03-10 18:35:38 -08006893@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08006894cmd VkResult vkQueuePresentKHR(
6895 VkQueue queue,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08006896 const VkPresentInfoKHR* pPresentInfo) {
Michael Lentine88594d72015-11-12 12:49:45 -08006897 queueObject := GetQueue(queue)
6898
6899 presentInfo := ?
6900 pPresentInfo[0] = presentInfo
6901
6902 return ?
6903}
6904
Jesse Hallad250842017-03-10 18:35:38 -08006905@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08006906cmd VkResult vkGetPhysicalDeviceDisplayPropertiesKHR(
6907 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006908 u32* pPropertyCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006909 VkDisplayPropertiesKHR* pProperties) {
6910 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6911 return ?
6912}
6913
Jesse Hallad250842017-03-10 18:35:38 -08006914@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08006915cmd VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
6916 VkPhysicalDevice physicalDevice,
6917 u32* pPropertyCount,
6918 VkDisplayPlanePropertiesKHR* pProperties) {
6919 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6920 return ?
6921}
6922
Jesse Hallad250842017-03-10 18:35:38 -08006923@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08006924cmd VkResult vkGetDisplayPlaneSupportedDisplaysKHR(
6925 VkPhysicalDevice physicalDevice,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006926 u32 planeIndex,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08006927 u32* pDisplayCount,
6928 VkDisplayKHR* pDisplays) {
Jesse Halla6429252015-11-29 18:59:42 -08006929 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6930 return ?
6931}
6932
Jesse Hallad250842017-03-10 18:35:38 -08006933@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08006934cmd VkResult vkGetDisplayModePropertiesKHR(
6935 VkPhysicalDevice physicalDevice,
6936 VkDisplayKHR display,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006937 u32* pPropertyCount,
6938 VkDisplayModePropertiesKHR* pProperties) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08006939 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6940 return ?
6941}
6942
Jesse Hallad250842017-03-10 18:35:38 -08006943@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08006944cmd VkResult vkCreateDisplayModeKHR(
6945 VkPhysicalDevice physicalDevice,
6946 VkDisplayKHR display,
6947 const VkDisplayModeCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006948 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006949 VkDisplayModeKHR* pMode) {
6950 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6951 return ?
6952}
6953
Jesse Hallad250842017-03-10 18:35:38 -08006954@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08006955cmd VkResult vkGetDisplayPlaneCapabilitiesKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08006956 VkPhysicalDevice physicalDevice,
Jesse Hall9ba8bc82015-11-30 16:22:16 -08006957 VkDisplayModeKHR mode,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006958 u32 planeIndex,
Jesse Halla6429252015-11-29 18:59:42 -08006959 VkDisplayPlaneCapabilitiesKHR* pCapabilities) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08006960 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6961 return ?
6962}
6963
Jesse Hallad250842017-03-10 18:35:38 -08006964@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08006965cmd VkResult vkCreateDisplayPlaneSurfaceKHR(
6966 VkInstance instance,
6967 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006968 const VkAllocationCallbacks* pAllocator,
Jesse Halla6429252015-11-29 18:59:42 -08006969 VkSurfaceKHR* pSurface) {
6970 return ?
6971}
6972
Jesse Hallad250842017-03-10 18:35:38 -08006973@extension("VK_KHR_display_swapchain") // 4
Jesse Hall9ba8bc82015-11-30 16:22:16 -08006974cmd VkResult vkCreateSharedSwapchainsKHR(
6975 VkDevice device,
6976 u32 swapchainCount,
6977 const VkSwapchainCreateInfoKHR* pCreateInfos,
6978 const VkAllocationCallbacks* pAllocator,
6979 VkSwapchainKHR* pSwapchains) {
6980 return ?
6981}
6982
Jesse Hallad250842017-03-10 18:35:38 -08006983@extension("VK_KHR_xlib_surface") // 5
Jesse Halla6429252015-11-29 18:59:42 -08006984cmd VkResult vkCreateXlibSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08006985 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006986 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006987 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006988 VkSurfaceKHR* pSurface) {
6989 instanceObject := GetInstance(instance)
6990 return ?
6991}
6992
Jesse Hallad250842017-03-10 18:35:38 -08006993@extension("VK_KHR_xlib_surface") // 5
Jesse Halla6429252015-11-29 18:59:42 -08006994cmd VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR(
6995 VkPhysicalDevice physicalDevice,
6996 u32 queueFamilyIndex,
6997 platform.Display* dpy,
Jesse Hall65ab5522015-11-30 00:07:16 -08006998 platform.VisualID visualID) {
Jesse Halla6429252015-11-29 18:59:42 -08006999 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7000 return ?
7001}
7002
Jesse Hallad250842017-03-10 18:35:38 -08007003@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007004cmd VkResult vkCreateXcbSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08007005 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007006 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007007 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007008 VkSurfaceKHR* pSurface) {
7009 instanceObject := GetInstance(instance)
7010 return ?
7011}
7012
Jesse Hallad250842017-03-10 18:35:38 -08007013@extension("VK_KHR_xcb_surface") // 6
Jesse Halla6429252015-11-29 18:59:42 -08007014cmd VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR(
7015 VkPhysicalDevice physicalDevice,
7016 u32 queueFamilyIndex,
7017 platform.xcb_connection_t* connection,
7018 platform.xcb_visualid_t visual_id) {
7019 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7020 return ?
7021}
7022
Jesse Hallad250842017-03-10 18:35:38 -08007023@extension("VK_KHR_wayland_surface") // 7
Jesse Hall1356b0d2015-11-23 17:24:58 -08007024cmd VkResult vkCreateWaylandSurfaceKHR(
7025 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007026 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007027 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007028 VkSurfaceKHR* pSurface) {
7029 instanceObject := GetInstance(instance)
7030 return ?
7031}
7032
Jesse Hallad250842017-03-10 18:35:38 -08007033@extension("VK_KHR_wayland_surface") // 7
Jesse Halla6429252015-11-29 18:59:42 -08007034cmd VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR(
7035 VkPhysicalDevice physicalDevice,
7036 u32 queueFamilyIndex,
7037 platform.wl_display* display) {
7038 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7039 return ?
7040}
7041
Jesse Hallad250842017-03-10 18:35:38 -08007042@extension("VK_KHR_mir_surface") // 8
Jesse Hall1356b0d2015-11-23 17:24:58 -08007043cmd VkResult vkCreateMirSurfaceKHR(
7044 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007045 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007046 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007047 VkSurfaceKHR* pSurface) {
7048 instanceObject := GetInstance(instance)
7049 return ?
7050}
7051
Jesse Hallad250842017-03-10 18:35:38 -08007052@extension("VK_KHR_mir_surface") // 8
Jesse Halla6429252015-11-29 18:59:42 -08007053cmd VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR(
7054 VkPhysicalDevice physicalDevice,
7055 u32 queueFamilyIndex,
7056 platform.MirConnection* connection) {
7057 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7058 return ?
7059}
7060
Jesse Hallad250842017-03-10 18:35:38 -08007061@extension("VK_KHR_android_surface") // 9
Jesse Hall1356b0d2015-11-23 17:24:58 -08007062cmd VkResult vkCreateAndroidSurfaceKHR(
7063 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007064 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007065 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007066 VkSurfaceKHR* pSurface) {
7067 instanceObject := GetInstance(instance)
7068 return ?
7069}
7070
Jesse Hallad250842017-03-10 18:35:38 -08007071@extension("VK_KHR_win32_surface") // 10
Jesse Hall1356b0d2015-11-23 17:24:58 -08007072cmd VkResult vkCreateWin32SurfaceKHR(
7073 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007074 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007075 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007076 VkSurfaceKHR* pSurface) {
7077 instanceObject := GetInstance(instance)
7078 return ?
7079}
7080
Jesse Hallad250842017-03-10 18:35:38 -08007081@extension("VK_KHR_win32_surface") // 10
Jesse Halla6429252015-11-29 18:59:42 -08007082cmd VkResult vkGetPhysicalDeviceWin32PresentationSupportKHR(
7083 VkPhysicalDevice physicalDevice,
7084 u32 queueFamilyIndex) {
Jesse Halle2948d82016-02-25 04:19:32 -08007085 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Halla6429252015-11-29 18:59:42 -08007086 return ?
7087}
7088
Jesse Hallad250842017-03-10 18:35:38 -08007089@extension("VK_ANDROID_native_buffer") // 11
Jesse Halld1abd742017-02-09 21:45:51 -08007090@optional
Chia-I Wub262ddc2016-03-22 07:38:20 +08007091cmd VkResult vkGetSwapchainGrallocUsageANDROID(
7092 VkDevice device,
7093 VkFormat format,
7094 VkImageUsageFlags imageUsage,
Jesse Halld1abd742017-02-09 21:45:51 -08007095 s32* grallocUsage) {
Chia-I Wub262ddc2016-03-22 07:38:20 +08007096 return ?
7097}
7098
Jesse Hallad250842017-03-10 18:35:38 -08007099@extension("VK_ANDROID_native_buffer") // 11
Jesse Halld1abd742017-02-09 21:45:51 -08007100@optional
Chris Forbes8e4438b2016-12-07 16:26:49 +13007101cmd VkResult vkGetSwapchainGrallocUsage2ANDROID(
7102 VkDevice device,
7103 VkFormat format,
7104 VkImageUsageFlags imageUsage,
7105 VkSwapchainImageUsageFlagsANDROID swapchainImageUsage,
Jesse Halld1abd742017-02-09 21:45:51 -08007106 u64* grallocConsumerUsage,
7107 u64* grallocProducerUsage) {
Chris Forbes8e4438b2016-12-07 16:26:49 +13007108 return ?
7109}
7110
Jesse Hallad250842017-03-10 18:35:38 -08007111@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08007112cmd VkResult vkAcquireImageANDROID(
7113 VkDevice device,
7114 VkImage image,
7115 int nativeFenceFd,
7116 VkSemaphore semaphore,
7117 VkFence fence) {
7118 return ?
7119}
7120
Jesse Hallad250842017-03-10 18:35:38 -08007121@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08007122cmd VkResult vkQueueSignalReleaseImageANDROID(
7123 VkQueue queue,
7124 u32 waitSemaphoreCount,
7125 const VkSemaphore* pWaitSemaphores,
7126 VkImage image,
7127 int* pNativeFenceFd) {
7128 return ?
7129}
7130
Jesse Hallad250842017-03-10 18:35:38 -08007131@extension("VK_EXT_debug_report") // 12
7132@external type void* PFN_vkDebugReportCallbackEXT
7133@extension("VK_EXT_debug_report") // 12
7134@pfn cmd VkBool32 vkDebugReportCallbackEXT(
7135 VkDebugReportFlagsEXT flags,
7136 VkDebugReportObjectTypeEXT objectType,
7137 u64 object,
7138 platform.size_t location,
7139 s32 messageCode,
7140 const char* pLayerPrefix,
7141 const char* pMessage,
7142 void* pUserData) {
7143 return ?
7144}
7145
7146@extension("VK_EXT_debug_report") // 12
7147cmd VkResult vkCreateDebugReportCallbackEXT(
7148 VkInstance instance,
7149 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
7150 const VkAllocationCallbacks* pAllocator,
7151 VkDebugReportCallbackEXT* pCallback) {
7152 return ?
7153}
7154
7155@extension("VK_EXT_debug_report") // 12
7156cmd void vkDestroyDebugReportCallbackEXT(
7157 VkInstance instance,
7158 VkDebugReportCallbackEXT callback,
7159 const VkAllocationCallbacks* pAllocator) {
7160}
7161
7162@extension("VK_EXT_debug_report") // 12
7163cmd void vkDebugReportMessageEXT(
7164 VkInstance instance,
7165 VkDebugReportFlagsEXT flags,
7166 VkDebugReportObjectTypeEXT objectType,
7167 u64 object,
7168 platform.size_t location,
7169 s32 messageCode,
7170 const char* pLayerPrefix,
7171 const char* pMessage) {
7172}
7173
7174@extension("VK_EXT_debug_marker") // 23
7175cmd VkResult vkDebugMarkerSetObjectTagEXT(
7176 VkDevice device,
7177 VkDebugMarkerObjectTagInfoEXT* pTagInfo) {
7178 return ?
7179}
7180
7181@extension("VK_EXT_debug_marker") // 23
7182cmd VkResult vkDebugMarkerSetObjectNameEXT(
7183 VkDevice device,
7184 VkDebugMarkerObjectNameInfoEXT* pNameInfo) {
7185 return ?
7186}
7187
7188@extension("VK_EXT_debug_marker") // 23
7189cmd void vkCmdDebugMarkerBeginEXT(
7190 VkCommandBuffer commandBuffer,
7191 VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
7192}
7193
7194@extension("VK_EXT_debug_marker") // 23
7195cmd void vkCmdDebugMarkerEndEXT(
7196 VkCommandBuffer commandBuffer) {
7197}
7198
7199@extension("VK_EXT_debug_marker") // 23
7200cmd void vkCmdDebugMarkerInsertEXT(
7201 VkCommandBuffer commandBuffer,
7202 VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
7203}
7204
7205@extension("VK_AMD_draw_indirect_count") // 34
7206cmd void vkCmdDrawIndirectCountAMD(
7207 VkCommandBuffer commandBuffer,
7208 VkBuffer buffer,
7209 VkDeviceSize offset,
7210 VkBuffer countBuffer,
7211 VkDeviceSize countBufferOffset,
7212 u32 maxDrawCount,
7213 u32 stride) {
7214}
7215
7216@extension("VK_AMD_draw_indirect_count") // 34
7217cmd void vkCmdDrawIndexedIndirectCountAMD(
7218 VkCommandBuffer commandBuffer,
7219 VkBuffer buffer,
7220 VkDeviceSize offset,
7221 VkBuffer countBuffer,
7222 VkDeviceSize countBufferOffset,
7223 u32 maxDrawCount,
7224 u32 stride) {
7225}
7226
7227@extension("VK_NV_external_memory_capabilities") // 56
7228cmd VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
7229 VkPhysicalDevice physicalDevice,
7230 VkFormat format,
7231 VkImageType type,
7232 VkImageTiling tiling,
7233 VkImageUsageFlags usage,
7234 VkImageCreateFlags flags,
7235 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
7236 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) {
7237 return ?
7238}
7239
7240@extension("VK_NV_external_memory_win32") // 58
7241cmd VkResult vkGetMemoryWin32HandleNV(
7242 VkDevice device,
7243 VkDeviceMemory memory,
7244 VkExternalMemoryHandleTypeFlagsNV handleType,
7245 platform.HANDLE* pHandle) {
7246 return ?
7247}
7248
7249@extension("VK_KHR_get_physical_device_properties2") // 60
7250cmd void vkGetPhysicalDeviceFeatures2KHR(
7251 VkPhysicalDevice physicalDevice,
7252 VkPhysicalDeviceFeatures2KHR* pFeatures) {
7253}
7254
7255@extension("VK_KHR_get_physical_device_properties2") // 60
7256cmd void vkGetPhysicalDeviceProperties2KHR(
7257 VkPhysicalDevice physicalDevice,
7258 VkPhysicalDeviceProperties2KHR* pProperties) {
7259}
7260
7261@extension("VK_KHR_get_physical_device_properties2") // 60
7262cmd void vkGetPhysicalDeviceFormatProperties2KHR(
7263 VkPhysicalDevice physicalDevice,
7264 VkFormat format,
7265 VkFormatProperties2KHR* pFormatProperties) {
7266}
7267
7268@extension("VK_KHR_get_physical_device_properties2") // 60
7269cmd VkResult vkGetPhysicalDeviceImageFormatProperties2KHR(
7270 VkPhysicalDevice physicalDevice,
7271 const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo,
7272 VkImageFormatProperties2KHR* pImageFormatProperties) {
7273 return ?
7274}
7275
7276@extension("VK_KHR_get_physical_device_properties2") // 60
7277cmd void vkGetPhysicalDeviceQueueFamilyProperties2KHR(
7278 VkPhysicalDevice physicalDevice,
7279 u32* pQueueFamilyPropertyCount,
7280 VkQueueFamilyProperties2KHR* pQueueFamilyProperties) {
7281}
7282
7283@extension("VK_KHR_get_physical_device_properties2") // 60
7284cmd void vkGetPhysicalDeviceMemoryProperties2KHR(
7285 VkPhysicalDevice physicalDevice,
7286 VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties) {
7287}
7288
7289@extension("VK_KHR_get_physical_device_properties2") // 60
7290cmd void vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
7291 VkPhysicalDevice physicalDevice,
7292 const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo,
7293 u32* pPropertyCount,
7294 VkSparseImageFormatProperties2KHR* pProperties) {
7295}
7296
7297@extension("VK_KHX_device_group") // 61
7298cmd void vkGetDeviceGroupPeerMemoryFeaturesKHX(
7299 VkDevice device,
7300 u32 heapIndex,
7301 u32 localDeviceIndex,
7302 u32 remoteDeviceIndex,
7303 VkPeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures) {
7304}
7305
7306@extension("VK_KHX_device_group") // 61
7307cmd VkResult vkBindBufferMemory2KHX(
7308 VkDevice device,
7309 u32 bindInfoCount,
7310 const VkBindBufferMemoryInfoKHX* pBindInfos) {
7311 return ?
7312}
7313
7314@extension("VK_KHX_device_group") // 61
7315cmd VkResult vkBindImageMemory2KHX(
7316 VkDevice device,
7317 u32 bindInfoCount,
7318 const VkBindImageMemoryInfoKHX* pBindInfos) {
7319 return ?
7320}
7321
7322@extension("VK_KHX_device_group") // 61
7323cmd void vkCmdSetDeviceMaskKHX(
7324 VkCommandBuffer commandBuffer,
7325 u32 deviceMask) {
7326}
7327
7328@extension("VK_KHX_device_group") // 61
7329cmd VkResult vkGetDeviceGroupPresentCapabilitiesKHX(
7330 VkDevice device,
7331 VkDeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities) {
7332 return ?
7333}
7334
7335@extension("VK_KHX_device_group") // 61
7336cmd VkResult vkGetDeviceGroupSurfacePresentModesKHX(
7337 VkDevice device,
7338 VkSurfaceKHR surface,
7339 VkDeviceGroupPresentModeFlagsKHX* pModes) {
7340 return ?
7341}
7342
7343@extension("VK_KHX_device_group") // 61
7344cmd VkResult vkAcquireNextImage2KHX(
7345 VkDevice device,
7346 const VkAcquireNextImageInfoKHX* pAcquireInfo,
7347 u32* pImageIndex) {
7348 return ?
7349}
7350
7351@extension("VK_KHX_device_group") // 61
7352cmd void vkCmdDispatchBaseKHX(
7353 VkCommandBuffer commandBuffer,
7354 u32 baseGroupX,
7355 u32 baseGroupY,
7356 u32 baseGroupZ,
7357 u32 groupCountX,
7358 u32 groupCountY,
7359 u32 groupCountZ) {
7360}
7361
7362@extension("VK_KHX_device_group") // 61
7363cmd VkResult vkGetPhysicalDevicePresentRectanglesKHX(
7364 VkPhysicalDevice physicalDevice,
7365 VkSurfaceKHR surface,
7366 u32* pRectCount,
7367 VkRect2D* pRects) {
7368 return ?
7369}
7370
7371@extension("VK_NN_vi_surface") // 63
7372cmd VkResult vkCreateViSurfaceNN(
7373 VkInstance instance,
7374 const VkViSurfaceCreateInfoNN* pCreateInfo,
7375 const VkAllocationCallbacks* pAllocator,
7376 VkSurfaceKHR* pSurface) {
7377 return ?
7378}
7379
7380@extension("VK_KHR_maintenance1") // 70
7381cmd void vkTrimCommandPoolKHR(
7382 VkDevice device,
7383 VkCommandPool commandPool,
7384 VkCommandPoolTrimFlagsKHR flags) {
7385}
7386
7387@extension("VK_KHX_device_group_creation") // 71
7388cmd VkResult vkEnumeratePhysicalDeviceGroupsKHX(
7389 VkInstance instance,
7390 u32* pPhysicalDeviceGroupCount,
7391 VkPhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties) {
7392 return ?
7393}
7394
7395@extension("VK_KHX_external_memory_capabilities") // 72
7396cmd void vkGetPhysicalDeviceExternalBufferPropertiesKHX(
7397 VkPhysicalDevice physicalDevice,
7398 const VkPhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo,
7399 VkExternalBufferPropertiesKHX* pExternalBufferProperties) {
7400}
7401
Jesse Hallad250842017-03-10 18:35:38 -08007402@extension("VK_KHX_external_memory_win32") // 74
7403cmd VkResult vkGetMemoryWin32HandleKHX(
7404 VkDevice device,
7405 VkDeviceMemory memory,
7406 VkExternalMemoryHandleTypeFlagBitsKHX handleType,
7407 platform.HANDLE* pHandle) {
7408 return ?
7409}
7410
7411@extension("VK_KHX_external_memory_win32") // 74
7412cmd VkResult vkGetMemoryWin32HandlePropertiesKHX(
7413 VkDevice device,
7414 VkExternalMemoryHandleTypeFlagBitsKHX handleType,
7415 platform.HANDLE handle,
7416 VkMemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties) {
7417 return ?
7418}
7419
7420@extension("VK_KHX_external_memory_fd") // 75
7421cmd VkResult vkGetMemoryFdKHX(
7422 VkDevice device,
7423 VkDeviceMemory memory,
7424 VkExternalMemoryHandleTypeFlagBitsKHX handleType,
7425 s32* pFd) {
7426 return ?
7427}
7428
7429@extension("VK_KHX_external_memory_fd") // 75
7430cmd VkResult vkGetMemoryFdPropertiesKHX(
7431 VkDevice device,
7432 VkExternalMemoryHandleTypeFlagBitsKHX handleType,
7433 s32 fd,
7434 VkMemoryFdPropertiesKHX* pMemoryFdProperties) {
7435 return ?
7436}
7437
7438@extension("VK_KHX_external_semaphore_capabilities") // 77
7439cmd void vkGetPhysicalDeviceExternalSemaphorePropertiesKHX(
7440 VkPhysicalDevice physicalDevice,
7441 const VkPhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo,
7442 VkExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties) {
7443}
7444
7445@extension("VK_KHX_external_semaphore_win32") // 79
7446cmd VkResult vkImportSemaphoreWin32HandleKHX(
7447 VkDevice device,
7448 const VkImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo) {
7449 return ?
7450}
7451
7452@extension("VK_KHX_external_semaphore_win32") // 79
7453cmd VkResult vkGetSemaphoreWin32HandleKHX(
7454 VkDevice device,
7455 VkSemaphore semaphore,
7456 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType,
7457 platform.HANDLE* pHandle) {
7458 return ?
7459}
7460
7461@extension("VK_KHX_external_semaphore_fd") // 80
7462cmd VkResult vkImportSemaphoreFdKHX(
7463 VkDevice device,
7464 const VkImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo) {
7465 return ?
7466}
7467
7468@extension("VK_KHX_external_semaphore_fd") // 80
7469cmd VkResult vkGetSemaphoreFdKHX(
7470 VkDevice device,
7471 VkSemaphore semaphore,
7472 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType,
7473 s32* pFd) {
7474 return ?
7475}
7476
7477@extension("VK_KHR_push_descriptor") // 81
7478cmd void vkCmdPushDescriptorSetKHR(
7479 VkCommandBuffer commandBuffer,
7480 VkPipelineBindPoint pipelineBindPoint,
7481 VkPipelineLayout layout,
7482 u32 set,
7483 u32 descriptorWriteCount,
7484 const VkWriteDescriptorSet* pDescriptorWrites) {
7485}
7486
7487@extension("VK_KHR_descriptor_update_template") // 86
7488cmd VkResult vkCreateDescriptorUpdateTemplateKHR(
7489 VkDevice device,
7490 const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo,
7491 const VkAllocationCallbacks* pAllocator,
7492 VkDescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate) {
7493 return ?
7494}
7495
7496@extension("VK_KHR_descriptor_update_template") // 86
7497cmd void vkDestroyDescriptorUpdateTemplateKHR(
7498 VkDevice device,
7499 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
7500 const VkAllocationCallbacks* pAllocator) {
7501}
7502
7503@extension("VK_KHR_descriptor_update_template") // 86
7504cmd void vkUpdateDescriptorSetWithTemplateKHR(
7505 VkDevice device,
7506 VkDescriptorSet descriptorSet,
7507 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
7508 const void* pData) {
7509}
7510
7511@extension("VK_KHR_descriptor_update_template") // 86
7512cmd void vkCmdPushDescriptorSetWithTemplateKHR(
7513 VkCommandBuffer commandBuffer,
7514 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
7515 VkPipelineLayout layout,
7516 u32 set,
7517 const void* pData) {
7518}
7519
7520@extension("VK_NVX_device_generated_commands") // 87
7521cmd void vkCmdProcessCommandsNVX(
7522 VkCommandBuffer commandBuffer,
7523 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) {
7524}
7525
7526@extension("VK_NVX_device_generated_commands") // 87
7527cmd void vkCmdReserveSpaceForCommandsNVX(
7528 VkCommandBuffer commandBuffer,
7529 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) {
7530}
7531
7532@extension("VK_NVX_device_generated_commands") // 87
7533cmd VkResult vkCreateIndirectCommandsLayoutNVX(
7534 VkDevice device,
7535 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
7536 const VkAllocationCallbacks* pAllocator,
7537 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) {
7538 return ?
7539}
7540
7541@extension("VK_NVX_device_generated_commands") // 87
7542cmd void vkDestroyIndirectCommandsLayoutNVX(
7543 VkDevice device,
7544 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
7545 const VkAllocationCallbacks* pAllocator) {
7546}
7547
7548@extension("VK_NVX_device_generated_commands") // 87
7549cmd VkResult vkCreateObjectTableNVX(
7550 VkDevice device,
7551 const VkObjectTableCreateInfoNVX* pCreateInfo,
7552 const VkAllocationCallbacks* pAllocator,
7553 VkObjectTableNVX* pObjectTable) {
7554 return ?
7555}
7556
7557@extension("VK_NVX_device_generated_commands") // 87
7558cmd void vkDestroyObjectTableNVX(
7559 VkDevice device,
7560 VkObjectTableNVX objectTable,
7561 const VkAllocationCallbacks* pAllocator) {
7562}
7563
7564@extension("VK_NVX_device_generated_commands") // 87
7565cmd VkResult vkRegisterObjectsNVX(
7566 VkDevice device,
7567 VkObjectTableNVX objectTable,
7568 u32 objectCount,
7569 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
7570 const u32* pObjectIndices) {
7571 return ?
7572}
7573
7574@extension("VK_NVX_device_generated_commands") // 87
7575cmd VkResult vkUnregisterObjectsNVX(
7576 VkDevice device,
7577 VkObjectTableNVX objectTable,
7578 u32 objectCount,
7579 const VkObjectEntryTypeNVX* pObjectEntryTypes,
7580 const u32* pObjectIndices) {
7581 return ?
7582}
7583
7584@extension("VK_NVX_device_generated_commands") // 87
7585cmd void vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
7586 VkPhysicalDevice physicalDevice,
7587 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
7588 VkDeviceGeneratedCommandsLimitsNVX* pLimits) {
7589}
7590
7591@extension("VK_NV_clip_space_w_scaling") // 88
7592cmd void vkCmdSetViewportWScalingNV(
7593 VkCommandBuffer commandBuffer,
7594 u32 firstViewport,
7595 u32 viewportCount,
7596 const VkViewportWScalingNV* pViewportWScalings) {
7597}
7598
7599@extension("VK_EXT_direct_mode_display") // 89
7600cmd VkResult vkReleaseDisplayEXT(
7601 VkPhysicalDevice physicalDevice,
7602 VkDisplayKHR display) {
7603 return ?
7604}
7605
7606@extension("VK_EXT_acquire_xlib_display") // 90
7607cmd VkResult vkAcquireXlibDisplayEXT(
7608 VkPhysicalDevice physicalDevice,
7609 platform.Display* dpy,
7610 VkDisplayKHR display) {
7611 return ?
7612}
7613
7614@extension("VK_EXT_acquire_xlib_display") // 90
7615cmd VkResult vkGetRandROutputDisplayEXT(
7616 VkPhysicalDevice physicalDevice,
7617 platform.Display* dpy,
7618 platform.RROutput rrOutput,
7619 VkDisplayKHR* pDisplay) {
7620 return ?
7621}
7622
7623@extension("VK_EXT_display_surface_counter") // 91
7624cmd VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT(
7625 VkPhysicalDevice physicalDevice,
7626 VkSurfaceKHR surface,
7627 VkSurfaceCapabilities2EXT* pSurfaceCapabilities) {
7628 return ?
7629}
7630
7631@extension("VK_EXT_display_control") // 92
7632cmd VkResult vkDisplayPowerControlEXT(
7633 VkDevice device,
7634 VkDisplayKHR display,
7635 const VkDisplayPowerInfoEXT* pDisplayPowerInfo) {
7636 return ?
7637}
7638
7639@extension("VK_EXT_display_control") // 92
7640cmd VkResult vkRegisterDeviceEventEXT(
7641 VkDevice device,
7642 const VkDeviceEventInfoEXT* pDeviceEventInfo,
7643 const VkAllocationCallbacks* pAllocator,
7644 VkFence* pFence) {
7645 return ?
7646}
7647
7648@extension("VK_EXT_display_control") // 92
7649cmd VkResult vkRegisterDisplayEventEXT(
7650 VkDevice device,
7651 VkDisplayKHR display,
7652 const VkDisplayEventInfoEXT* pDisplayEventInfo,
7653 const VkAllocationCallbacks* pAllocator,
7654 VkFence* pFence) {
7655 return ?
7656}
7657
7658@extension("VK_EXT_display_control") // 92
7659cmd VkResult vkGetSwapchainCounterEXT(
7660 VkDevice device,
7661 VkSwapchainKHR swapchain,
7662 VkSurfaceCounterFlagBitsEXT counter,
7663 u64* pCounterValue) {
7664 return ?
7665}
7666
7667@extension("VK_GOOGLE_display_timing") // 93
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07007668cmd VkResult vkGetRefreshCycleDurationGOOGLE(
Jesse Hallfdc8ab32017-03-10 21:01:57 -08007669 VkDevice device,
7670 VkSwapchainKHR swapchain,
7671 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) {
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07007672 deviceObject := GetDevice(device)
7673 swapchainObject := GetSwapchain(swapchain)
7674
7675 displayTimingProperties := ?
7676 pDisplayTimingProperties[0] = displayTimingProperties
7677
7678 return ?
7679}
7680
Jesse Hallad250842017-03-10 18:35:38 -08007681@extension("VK_GOOGLE_display_timing") // 93
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07007682cmd VkResult vkGetPastPresentationTimingGOOGLE(
Jesse Hallfdc8ab32017-03-10 21:01:57 -08007683 VkDevice device,
7684 VkSwapchainKHR swapchain,
7685 u32* pPresentationTimingCount,
7686 VkPastPresentationTimingGOOGLE* pPresentationTimings) {
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07007687 return ?
7688}
7689
Jesse Hallad250842017-03-10 18:35:38 -08007690@extension("VK_EXT_discard_rectangles") // 100
7691cmd void vkCmdSetDiscardRectangleEXT(
Jesse Hall26763382016-05-20 07:13:52 -07007692 VkCommandBuffer commandBuffer,
Jesse Hallad250842017-03-10 18:35:38 -08007693 u32 firstDiscardRectangle,
7694 u32 discardRectangleCount,
7695 const VkRect2D* pDiscardRectangles) {
Jesse Hall26763382016-05-20 07:13:52 -07007696}
7697
Jesse Hallad250842017-03-10 18:35:38 -08007698@extension("VK_EXT_hdr_metadata") // 106
Jesse Hall889cd9a2017-02-25 22:12:23 -08007699cmd void vkSetHdrMetadataEXT(
Jesse Hallfdc8ab32017-03-10 21:01:57 -08007700 VkDevice device,
7701 u32 swapchainCount,
7702 const VkSwapchainKHR* pSwapchains,
7703 const VkHdrMetadataEXT* pMetadata) {
Jesse Hall889cd9a2017-02-25 22:12:23 -08007704}
7705
Jesse Hallad250842017-03-10 18:35:38 -08007706@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbes2e12cb82017-01-18 11:45:17 +13007707cmd VkResult vkGetSwapchainStatusKHR(
7708 VkDevice device,
7709 VkSwapchainKHR swapchain) {
7710 return ?
7711}
7712
Jesse Hall05556b12017-05-18 17:40:25 -07007713@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13007714cmd VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR(
7715 VkPhysicalDevice physicalDevice,
7716 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7717 VkSurfaceCapabilities2KHR* pSurfaceCapabilities) {
7718 return ?
7719}
7720
Jesse Hall05556b12017-05-18 17:40:25 -07007721@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13007722cmd VkResult vkGetPhysicalDeviceSurfaceFormats2KHR(
7723 VkPhysicalDevice physicalDevice,
7724 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7725 u32* pSurfaceFormatCount,
7726 VkSurfaceFormat2KHR* pSurfaceFormats) {
7727 return ?
7728}
7729
Jesse Hallad250842017-03-10 18:35:38 -08007730@extension("VK_MVK_ios_surface") // 123
7731cmd VkResult vkCreateIOSSurfaceMVK(
7732 VkInstance instance,
7733 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
7734 const VkAllocationCallbacks* pAllocator,
7735 VkSurfaceKHR* pSurface) {
7736 return ?
7737}
7738
7739@extension("VK_MVK_macos_surface") // 124
7740cmd VkResult vkCreateMacOSSurfaceMVK(
7741 VkInstance instance,
7742 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
7743 const VkAllocationCallbacks* pAllocator,
7744 VkSurfaceKHR* pSurface) {
7745 return ?
7746}
7747
Jesse Halld27f6aa2015-08-15 17:58:48 -07007748////////////////
7749// Validation //
7750////////////////
7751
7752extern void validate(string layerName, bool condition, string message)
7753
7754
7755/////////////////////////////
7756// Internal State Tracking //
7757/////////////////////////////
7758
7759StateObject State
7760
7761@internal class StateObject {
7762 // Dispatchable objects.
7763 map!(VkInstance, ref!InstanceObject) Instances
7764 map!(VkPhysicalDevice, ref!PhysicalDeviceObject) PhysicalDevices
7765 map!(VkDevice, ref!DeviceObject) Devices
7766 map!(VkQueue, ref!QueueObject) Queues
Jesse Hall3fbc8562015-11-29 22:10:52 -08007767 map!(VkCommandBuffer, ref!CommandBufferObject) CommandBuffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07007768
7769 // Non-dispatchable objects.
7770 map!(VkDeviceMemory, ref!DeviceMemoryObject) DeviceMemories
7771 map!(VkBuffer, ref!BufferObject) Buffers
7772 map!(VkBufferView, ref!BufferViewObject) BufferViews
7773 map!(VkImage, ref!ImageObject) Images
7774 map!(VkImageView, ref!ImageViewObject) ImageViews
Jesse Halld27f6aa2015-08-15 17:58:48 -07007775 map!(VkShaderModule, ref!ShaderModuleObject) ShaderModules
Jesse Halld27f6aa2015-08-15 17:58:48 -07007776 map!(VkPipeline, ref!PipelineObject) Pipelines
7777 map!(VkPipelineLayout, ref!PipelineLayoutObject) PipelineLayouts
7778 map!(VkSampler, ref!SamplerObject) Samplers
7779 map!(VkDescriptorSet, ref!DescriptorSetObject) DescriptorSets
7780 map!(VkDescriptorSetLayout, ref!DescriptorSetLayoutObject) DescriptorSetLayouts
7781 map!(VkDescriptorPool, ref!DescriptorPoolObject) DescriptorPools
Jesse Halld27f6aa2015-08-15 17:58:48 -07007782 map!(VkFence, ref!FenceObject) Fences
7783 map!(VkSemaphore, ref!SemaphoreObject) Semaphores
7784 map!(VkEvent, ref!EventObject) Events
7785 map!(VkQueryPool, ref!QueryPoolObject) QueryPools
7786 map!(VkFramebuffer, ref!FramebufferObject) Framebuffers
7787 map!(VkRenderPass, ref!RenderPassObject) RenderPasses
7788 map!(VkPipelineCache, ref!PipelineCacheObject) PipelineCaches
Jesse Hall3fbc8562015-11-29 22:10:52 -08007789 map!(VkCommandPool, ref!CommandPoolObject) CommandPools
Jesse Hall1356b0d2015-11-23 17:24:58 -08007790 map!(VkSurfaceKHR, ref!SurfaceObject) Surfaces
Michael Lentine88594d72015-11-12 12:49:45 -08007791 map!(VkSwapchainKHR, ref!SwapchainObject) Swapchains
Jesse Halld27f6aa2015-08-15 17:58:48 -07007792}
7793
7794@internal class InstanceObject {
7795}
7796
7797@internal class PhysicalDeviceObject {
7798 VkInstance instance
7799}
7800
7801@internal class DeviceObject {
7802 VkPhysicalDevice physicalDevice
7803}
7804
7805@internal class QueueObject {
7806 VkDevice device
7807 VkQueueFlags flags
7808}
7809
Jesse Hall3fbc8562015-11-29 22:10:52 -08007810@internal class CommandBufferObject {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007811 VkDevice device
7812 map!(u64, VkDeviceMemory) boundObjects
7813 VkQueueFlags queueFlags
7814}
7815
7816@internal class DeviceMemoryObject {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007817 VkDevice device
7818 VkDeviceSize allocationSize
7819 map!(u64, VkDeviceSize) boundObjects
7820 map!(VkCommandBuffer, VkCommandBuffer) boundCommandBuffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07007821}
7822
7823@internal class BufferObject {
7824 VkDevice device
Jesse Hall3fbc8562015-11-29 22:10:52 -08007825 VkDeviceMemory memory
7826 VkDeviceSize memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07007827}
7828
7829@internal class BufferViewObject {
7830 VkDevice device
7831 VkBuffer buffer
7832}
7833
7834@internal class ImageObject {
7835 VkDevice device
Jesse Hall3fbc8562015-11-29 22:10:52 -08007836 VkDeviceMemory memory
7837 VkDeviceSize memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07007838}
7839
7840@internal class ImageViewObject {
7841 VkDevice device
7842 VkImage image
7843}
7844
Jesse Halld27f6aa2015-08-15 17:58:48 -07007845@internal class ShaderObject {
7846 VkDevice device
7847}
7848
7849@internal class ShaderModuleObject {
7850 VkDevice device
7851}
7852
7853@internal class PipelineObject {
7854 VkDevice device
7855}
7856
7857@internal class PipelineLayoutObject {
7858 VkDevice device
7859}
7860
7861@internal class SamplerObject {
7862 VkDevice device
7863}
7864
7865@internal class DescriptorSetObject {
7866 VkDevice device
7867}
7868
7869@internal class DescriptorSetLayoutObject {
7870 VkDevice device
7871}
7872
7873@internal class DescriptorPoolObject {
7874 VkDevice device
7875}
7876
Jesse Halld27f6aa2015-08-15 17:58:48 -07007877@internal class FenceObject {
7878 VkDevice device
7879 bool signaled
7880}
7881
7882@internal class SemaphoreObject {
7883 VkDevice device
7884}
7885
7886@internal class EventObject {
7887 VkDevice device
7888}
7889
7890@internal class QueryPoolObject {
7891 VkDevice device
7892}
7893
7894@internal class FramebufferObject {
7895 VkDevice device
7896}
7897
7898@internal class RenderPassObject {
7899 VkDevice device
7900}
7901
7902@internal class PipelineCacheObject {
7903 VkDevice device
7904}
7905
Jesse Hall3fbc8562015-11-29 22:10:52 -08007906@internal class CommandPoolObject {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007907 VkDevice device
7908}
7909
Jesse Hall1356b0d2015-11-23 17:24:58 -08007910@internal class SurfaceObject {
7911 VkInstance instance
7912}
7913
Michael Lentine88594d72015-11-12 12:49:45 -08007914@internal class SwapchainObject {
7915 VkDevice device
7916}
7917
Jesse Halld27f6aa2015-08-15 17:58:48 -07007918macro ref!InstanceObject GetInstance(VkInstance instance) {
7919 assert(instance in State.Instances)
7920 return State.Instances[instance]
7921}
7922
7923macro ref!PhysicalDeviceObject GetPhysicalDevice(VkPhysicalDevice physicalDevice) {
7924 assert(physicalDevice in State.PhysicalDevices)
7925 return State.PhysicalDevices[physicalDevice]
7926}
7927
7928macro ref!DeviceObject GetDevice(VkDevice device) {
7929 assert(device in State.Devices)
7930 return State.Devices[device]
7931}
7932
7933macro ref!QueueObject GetQueue(VkQueue queue) {
7934 assert(queue in State.Queues)
7935 return State.Queues[queue]
7936}
7937
Jesse Hall3fbc8562015-11-29 22:10:52 -08007938macro ref!CommandBufferObject GetCommandBuffer(VkCommandBuffer commandBuffer) {
7939 assert(commandBuffer in State.CommandBuffers)
7940 return State.CommandBuffers[commandBuffer]
Jesse Halld27f6aa2015-08-15 17:58:48 -07007941}
7942
Jesse Hall3fbc8562015-11-29 22:10:52 -08007943macro ref!DeviceMemoryObject GetDeviceMemory(VkDeviceMemory memory) {
7944 assert(memory in State.DeviceMemories)
7945 return State.DeviceMemories[memory]
Jesse Halld27f6aa2015-08-15 17:58:48 -07007946}
7947
7948macro ref!BufferObject GetBuffer(VkBuffer buffer) {
7949 assert(buffer in State.Buffers)
7950 return State.Buffers[buffer]
7951}
7952
7953macro ref!BufferViewObject GetBufferView(VkBufferView bufferView) {
7954 assert(bufferView in State.BufferViews)
7955 return State.BufferViews[bufferView]
7956}
7957
7958macro ref!ImageObject GetImage(VkImage image) {
7959 assert(image in State.Images)
7960 return State.Images[image]
7961}
7962
7963macro ref!ImageViewObject GetImageView(VkImageView imageView) {
7964 assert(imageView in State.ImageViews)
7965 return State.ImageViews[imageView]
7966}
7967
Jesse Halld27f6aa2015-08-15 17:58:48 -07007968macro ref!ShaderModuleObject GetShaderModule(VkShaderModule shaderModule) {
7969 assert(shaderModule in State.ShaderModules)
7970 return State.ShaderModules[shaderModule]
7971}
7972
7973macro ref!PipelineObject GetPipeline(VkPipeline pipeline) {
7974 assert(pipeline in State.Pipelines)
7975 return State.Pipelines[pipeline]
7976}
7977
7978macro ref!PipelineLayoutObject GetPipelineLayout(VkPipelineLayout pipelineLayout) {
7979 assert(pipelineLayout in State.PipelineLayouts)
7980 return State.PipelineLayouts[pipelineLayout]
7981}
7982
7983macro ref!SamplerObject GetSampler(VkSampler sampler) {
7984 assert(sampler in State.Samplers)
7985 return State.Samplers[sampler]
7986}
7987
7988macro ref!DescriptorSetObject GetDescriptorSet(VkDescriptorSet descriptorSet) {
7989 assert(descriptorSet in State.DescriptorSets)
7990 return State.DescriptorSets[descriptorSet]
7991}
7992
7993macro ref!DescriptorSetLayoutObject GetDescriptorSetLayout(VkDescriptorSetLayout descriptorSetLayout) {
7994 assert(descriptorSetLayout in State.DescriptorSetLayouts)
7995 return State.DescriptorSetLayouts[descriptorSetLayout]
7996}
7997
7998macro ref!DescriptorPoolObject GetDescriptorPool(VkDescriptorPool descriptorPool) {
7999 assert(descriptorPool in State.DescriptorPools)
8000 return State.DescriptorPools[descriptorPool]
8001}
8002
Jesse Halld27f6aa2015-08-15 17:58:48 -07008003macro ref!FenceObject GetFence(VkFence fence) {
8004 assert(fence in State.Fences)
8005 return State.Fences[fence]
8006}
8007
8008macro ref!SemaphoreObject GetSemaphore(VkSemaphore semaphore) {
8009 assert(semaphore in State.Semaphores)
8010 return State.Semaphores[semaphore]
8011}
8012
8013macro ref!EventObject GetEvent(VkEvent event) {
8014 assert(event in State.Events)
8015 return State.Events[event]
8016}
8017
8018macro ref!QueryPoolObject GetQueryPool(VkQueryPool queryPool) {
8019 assert(queryPool in State.QueryPools)
8020 return State.QueryPools[queryPool]
8021}
8022
8023macro ref!FramebufferObject GetFramebuffer(VkFramebuffer framebuffer) {
8024 assert(framebuffer in State.Framebuffers)
8025 return State.Framebuffers[framebuffer]
8026}
8027
8028macro ref!RenderPassObject GetRenderPass(VkRenderPass renderPass) {
8029 assert(renderPass in State.RenderPasses)
8030 return State.RenderPasses[renderPass]
8031}
8032
8033macro ref!PipelineCacheObject GetPipelineCache(VkPipelineCache pipelineCache) {
8034 assert(pipelineCache in State.PipelineCaches)
8035 return State.PipelineCaches[pipelineCache]
8036}
8037
Jesse Hall3fbc8562015-11-29 22:10:52 -08008038macro ref!CommandPoolObject GetCommandPool(VkCommandPool commandPool) {
8039 assert(commandPool in State.CommandPools)
8040 return State.CommandPools[commandPool]
Jesse Hallf09c6b12015-08-15 19:54:28 -07008041}
Michael Lentine88594d72015-11-12 12:49:45 -08008042
Jesse Hall1356b0d2015-11-23 17:24:58 -08008043macro ref!SurfaceObject GetSurface(VkSurfaceKHR surface) {
8044 assert(surface in State.Surfaces)
8045 return State.Surfaces[surface]
8046}
8047
Michael Lentine88594d72015-11-12 12:49:45 -08008048macro ref!SwapchainObject GetSwapchain(VkSwapchainKHR swapchain) {
8049 assert(swapchain in State.Swapchains)
8050 return State.Swapchains[swapchain]
8051}
Jesse Halld8bade02015-11-24 10:24:18 -08008052
8053macro VkQueueFlags AddQueueFlag(VkQueueFlags flags, VkQueueFlagBits bit) {
8054 return as!VkQueueFlags(as!u32(flags) | as!u32(bit))
8055}