blob: 3efc13163ed9f8e4047647c64541a1ce62c28660 [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 Hall05556b12017-05-18 17:40:25 -070031define VERSION_PATCH 49
Jesse Halld27f6aa2015-08-15 17:58:48 -070032
33// API limits
Jesse Hall65ab5522015-11-30 00:07:16 -080034define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256
35define VK_UUID_SIZE 16
36define VK_MAX_EXTENSION_NAME_SIZE 256
37define VK_MAX_DESCRIPTION_SIZE 256
38define VK_MAX_MEMORY_TYPES 32
39define VK_MAX_MEMORY_HEAPS 16 /// The maximum number of unique memory heaps, each of which supporting 1 or more memory types.
Jesse 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 Hall543a7ff2016-01-08 16:38:30 -080088@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_SPEC_VERSION 5
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080089@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_NAME "VK_KHR_win32_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080090
Jesse Halleb02c472017-02-24 15:13:45 -080091// 11
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 Hallf5ad48b2017-03-20 13:09:19 -070096@extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_SPEC_VERSION 6
Jesse Hall715b86a2016-01-16 16:34:29 -080097@extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_NAME "VK_EXT_debug_report"
98
Jesse Halleb02c472017-02-24 15:13:45 -080099// 13
Jesse Hall26763382016-05-20 07:13:52 -0700100@extension("VK_NV_glsl_shader") define VK_NV_GLSL_SHADER_SPEC_VERSION 1
101@extension("VK_NV_glsl_shader") define VK_NV_GLSL_SHADER_NAME "VK_NV_glsl_shader"
102
Jesse Halleb02c472017-02-24 15:13:45 -0800103// 15
Jesse Hall26763382016-05-20 07:13:52 -0700104@extension("VK_KHR_sampler_mirror_clamp_to_edge") define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 1
105@extension("VK_KHR_sampler_mirror_clamp_to_edge") define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_NAME "VK_KHR_sampler_mirror_clamp_to_edge"
106
Jesse Halleb02c472017-02-24 15:13:45 -0800107// 16
Jesse Hall26763382016-05-20 07:13:52 -0700108@extension("VK_IMG_filter_cubic") define VK_IMG_FILTER_CUBIC_SPEC_VERSION 1
109@extension("VK_IMG_filter_cubic") define VK_IMG_FILTER_CUBIC_NAME "VK_IMG_filter_cubic"
110
Jesse Halleb02c472017-02-24 15:13:45 -0800111// 19
Jesse Hall26763382016-05-20 07:13:52 -0700112@extension("VK_AMD_rasterization_order") define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1
113@extension("VK_AMD_rasterization_order") define VK_AMD_RASTERIZATION_ORDER_NAME "VK_AMD_rasterization_order"
114
Jesse Halleb02c472017-02-24 15:13:45 -0800115// 21
Jesse 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 Hallad250842017-03-10 18:35:38 -0800155// 54
156@extension("VK_KHX_multiview") define VK_KHX_MULTIVIEW_SPEC_VERSION 1
157@extension("VK_KHX_multiview") define VK_KHX_MULTIVIEW_EXTENSION_NAME "VK_KHX_multiview"
158
Jesse Halleb02c472017-02-24 15:13:45 -0800159// 56
Chris Forbes289cb792016-12-30 15:03:55 +1300160@extension("VK_NV_external_memory_capabilities") define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
161@extension("VK_NV_external_memory_capabilities") define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities"
162
Jesse Halleb02c472017-02-24 15:13:45 -0800163// 57
Chris Forbes289cb792016-12-30 15:03:55 +1300164@extension("VK_NV_external_memory") define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1
165@extension("VK_NV_external_memory") define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory"
166
Jesse Halleb02c472017-02-24 15:13:45 -0800167// 58
Chris Forbes289cb792016-12-30 15:03:55 +1300168@extension("VK_NV_external_memory_win32") define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
169@extension("VK_NV_external_memory_win32") define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
170
Jesse Halleb02c472017-02-24 15:13:45 -0800171// 59
Chris Forbes289cb792016-12-30 15:03:55 +1300172@extension("VK_NV_win32_keyed_mutex") define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 1
173@extension("VK_NV_win32_keyed_mutex") define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
174
Jesse Hall889cd9a2017-02-25 22:12:23 -0800175// 60
176@extension("VK_KHR_get_physical_device_properties2") define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 1
177@extension("VK_KHR_get_physical_device_properties2") define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2"
178
Jesse Hallad250842017-03-10 18:35:38 -0800179// 61
180@extension("VK_KHX_device_group") define VK_KHX_DEVICE_GROUP_SPEC_VERSION 1
181@extension("VK_KHX_device_group") define VK_KHX_DEVICE_GROUP_EXTENSION_NAME "VK_KHX_device_group"
182
Jesse Halleb02c472017-02-24 15:13:45 -0800183// 62
Chris Forbes289cb792016-12-30 15:03:55 +1300184@extension("VK_EXT_validation_flags") define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 1
185@extension("VK_EXT_validation_flags") define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags"
186
Jesse Hall77ad05b2017-03-10 22:02:20 -0800187// 63
188@extension("VK_NN_vi_surface") define VK_NN_VI_SURFACE_SPEC_VERSION 1
189@extension("VK_NN_vi_surface") define VK_NN_VI_SURFACE_EXTENSION_NAME "VK_NN_vi_surface"
190
191// 64
192@extension("VK_KHR_shader_draw_parameters") define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1
193@extension("VK_KHR_shader_draw_parameters") define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters"
194
195// 65
196@extension("VK_EXT_shader_subgroup_ballot") define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1
197@extension("VK_EXT_shader_subgroup_ballot") define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot"
198
199// 66
200@extension("VK_EXT_shader_subgroup_vote") define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1
201@extension("VK_EXT_shader_subgroup_vote") define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote"
202
203// 70
204@extension("VK_KHR_maintenance1") define VK_KHR_MAINTENANCE1_SPEC_VERSION 1
205@extension("VK_KHR_maintenance1") define VK_KHR_MAINTENANCE1_EXTENSION_NAME "VK_KHR_maintenance1"
206
Jesse Hallad250842017-03-10 18:35:38 -0800207// 71
208@extension("VK_KHX_device_group_creation") define VK_KHX_DEVICE_GROUP_CREATION_SPEC_VERSION 1
209@extension("VK_KHX_device_group_creation") define VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHX_device_group_creation"
210
211// 72
212@extension("VK_KHX_external_memory_capabilities") define VK_KHX_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
213@extension("VK_KHX_external_memory_capabilities") define VK_KHX_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHX_external_memory_capabilities"
214
215// 73
216@extension("VK_KHX_external_memory") define VK_KHX_EXTERNAL_MEMORY_SPEC_VERSION 1
217@extension("VK_KHX_external_memory") define VK_KHX_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHX_external_memory"
218
219// 74
220@extension("VK_KHX_external_memory_win32") define VK_KHX_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
221@extension("VK_KHX_external_memory_win32") define VK_KHX_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHX_external_memory_win32"
222
223// 75
224@extension("VK_KHX_external_memory_fd") define VK_KHX_EXTERNAL_MEMORY_FD_SPEC_VERSION 1
225@extension("VK_KHX_external_memory_fd") define VK_KHX_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHX_external_memory_fd"
226
227// 76
228@extension("VK_KHX_win32_keyed_mutex") define VK_KHX_WIN32_KEYED_MUTEX_SPEC_VERSION 1
229@extension("VK_KHX_win32_keyed_mutex") define VK_KHX_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHX_win32_keyed_mutex"
230
231// 77
232@extension("VK_KHX_external_semaphore_capabilities") define VK_KHX_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1
233@extension("VK_KHX_external_semaphore_capabilities") define VK_KHX_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHX_external_semaphore_capabilities"
234
235// 78
236@extension("VK_KHX_external_semaphore") define VK_KHX_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
237@extension("VK_KHX_external_semaphore") define VK_KHX_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHX_external_semaphore"
238
239// 79
240@extension("VK_KHX_external_semaphore_win32") define VK_KHX_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1
241@extension("VK_KHX_external_semaphore_win32") define VK_KHX_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHX_external_semaphore_win32"
242
243// 80
244@extension("VK_KHX_external_semaphore_fd") define VK_KHX_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1
245@extension("VK_KHX_external_semaphore_fd") define VK_KHX_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHX_external_semaphore_fd"
246
247// 81
248@extension("VK_KHR_push_descriptor") define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 1
249@extension("VK_KHR_push_descriptor") define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor"
250
Jesse Hall889cd9a2017-02-25 22:12:23 -0800251// 85
252@extension("VK_KHR_incremental_present") define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1
Jesse Hallf5ad48b2017-03-20 13:09:19 -0700253@extension("VK_KHR_incremental_present") define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present"
Jesse Hall889cd9a2017-02-25 22:12:23 -0800254
Jesse Hallad250842017-03-10 18:35:38 -0800255// 86
256@extension("VK_KHR_descriptor_update_template") define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1
257@extension("VK_KHR_descriptor_update_template") define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template"
258
Jesse Halleb02c472017-02-24 15:13:45 -0800259// 87
Chris Forbes289cb792016-12-30 15:03:55 +1300260@extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 1
261@extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands"
262
Jesse Hallad250842017-03-10 18:35:38 -0800263// 88
264@extension("VK_NV_clip_space_w_scaling") define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1
265@extension("VK_NV_clip_space_w_scaling") define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling"
266
Jesse Hall77ad05b2017-03-10 22:02:20 -0800267// 89
268@extension("VK_EXT_direct_mode_display") define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1
269@extension("VK_EXT_direct_mode_display") define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display"
270
271// 90
272@extension("VK_EXT_acquire_xlib_display") define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1
273@extension("VK_EXT_acquire_xlib_display") define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display"
274
275// 91
276@extension("VK_EXT_display_surface_counter") define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1
277@extension("VK_EXT_display_surface_counter") define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter"
278
279// 92
280@extension("VK_EXT_display_control") define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1
281@extension("VK_EXT_display_control") define VK_EXT_DISPLAY_CONTROL_COUNTER_EXTENSION_NAME "VK_EXT_display_control"
282
Jesse Hall889cd9a2017-02-25 22:12:23 -0800283// 93
284@extension("VK_GOOGLE_display_timing") define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1
Jesse Hallfdc8ab32017-03-10 21:01:57 -0800285@extension("VK_GOOGLE_display_timing") define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing"
Jesse Hall889cd9a2017-02-25 22:12:23 -0800286
Jesse Hallad250842017-03-10 18:35:38 -0800287// 95
288@extension("VK_NV_sample_mask_override_coverage") define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1
289@extension("VK_NV_sample_mask_override_coverage") define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage"
290
291// 96
292@extension("VK_NV_geometry_shader_passthrough") define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1
293@extension("VK_NV_geometry_shader_passthrough") define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough"
294
295// 97
296@extension("VK_NV_viewport_array2") define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION 1
297@extension("VK_NV_viewport_array2") define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME "VK_NV_viewport_array2"
298
299// 98
300@extension("VK_NVX_multiview_per_view_attributes") define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1
301@extension("VK_NVX_multiview_per_view_attributes") define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes"
302
303// 99
304@extension("VK_NV_viewport_swizzle") define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1
305@extension("VK_NV_viewport_swizzle") define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle"
306
307// 100
308@extension("VK_EXT_discard_rectangles") define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1
309@extension("VK_EXT_discard_rectangles") define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
310
Jesse Hall77ad05b2017-03-10 22:02:20 -0800311// 105
Jesse Hallf5ad48b2017-03-20 13:09:19 -0700312@extension("VK_EXT_swapchain_colorspace") define VK_EXT_SWAPCHAIN_COLORSPACE_SPEC_VERSION 2
313@extension("VK_EXT_swapchain_colorspace") define VK_EXT_SWAPCHAIN_COLORSPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace"
Jesse Hall77ad05b2017-03-10 22:02:20 -0800314
Jesse Hall889cd9a2017-02-25 22:12:23 -0800315// 106
316@extension("VK_EXT_hdr_metadata") define VK_EXT_HDR_METADATA_SPEC_VERSION 1
317@extension("VK_EXT_hdr_metadata") define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata"
318
319// 112
Chris Forbes1d5f68c2017-01-31 10:17:01 +1300320@extension("VK_KHR_shared_presentable_image") define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1
321@extension("VK_KHR_shared_presentable_image") define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image"
Chris Forbes2e12cb82017-01-18 11:45:17 +1300322
Jesse Hall05556b12017-05-18 17:40:25 -0700323// 120
Chris Forbese2d3ee12017-03-16 16:10:15 +1300324@extension("VK_KHR_get_surface_capabilities2") define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1
325@extension("VK_KHR_get_surface_capabilities2") define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2"
326
Jesse Hallad250842017-03-10 18:35:38 -0800327// 123
328@extension("VK_MVK_ios_surface") define VK_MVK_IOS_SURFACE_SPEC_VERSION 1
329@extension("VK_MVK_ios_surface") define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface"
330
331// 124
332@extension("VK_MVK_macos_surface") define VK_MVK_MACOS_SURFACE_SPEC_VERSION 1
333@extension("VK_MVK_macos_surface") define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface"
334
Jesse Halld27f6aa2015-08-15 17:58:48 -0700335/////////////
336// Types //
337/////////////
338
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700339type u32 VkBool32
340type u32 VkFlags
341type u64 VkDeviceSize
342type u32 VkSampleMask
343
Jesse Halld27f6aa2015-08-15 17:58:48 -0700344/// Dispatchable handle types.
345@dispatchHandle type u64 VkInstance
346@dispatchHandle type u64 VkPhysicalDevice
347@dispatchHandle type u64 VkDevice
348@dispatchHandle type u64 VkQueue
Jesse Hall3fbc8562015-11-29 22:10:52 -0800349@dispatchHandle type u64 VkCommandBuffer
Jesse Halld27f6aa2015-08-15 17:58:48 -0700350
351/// Non dispatchable handle types.
352@nonDispatchHandle type u64 VkDeviceMemory
Jesse Hall3fbc8562015-11-29 22:10:52 -0800353@nonDispatchHandle type u64 VkCommandPool
Jesse Halld27f6aa2015-08-15 17:58:48 -0700354@nonDispatchHandle type u64 VkBuffer
355@nonDispatchHandle type u64 VkBufferView
356@nonDispatchHandle type u64 VkImage
357@nonDispatchHandle type u64 VkImageView
Jesse Halld27f6aa2015-08-15 17:58:48 -0700358@nonDispatchHandle type u64 VkShaderModule
Jesse Halld27f6aa2015-08-15 17:58:48 -0700359@nonDispatchHandle type u64 VkPipeline
360@nonDispatchHandle type u64 VkPipelineLayout
361@nonDispatchHandle type u64 VkSampler
362@nonDispatchHandle type u64 VkDescriptorSet
363@nonDispatchHandle type u64 VkDescriptorSetLayout
364@nonDispatchHandle type u64 VkDescriptorPool
Jesse Halld27f6aa2015-08-15 17:58:48 -0700365@nonDispatchHandle type u64 VkFence
366@nonDispatchHandle type u64 VkSemaphore
367@nonDispatchHandle type u64 VkEvent
368@nonDispatchHandle type u64 VkQueryPool
369@nonDispatchHandle type u64 VkFramebuffer
370@nonDispatchHandle type u64 VkRenderPass
371@nonDispatchHandle type u64 VkPipelineCache
Jesse Hall1356b0d2015-11-23 17:24:58 -0800372
Jesse Hallad250842017-03-10 18:35:38 -0800373// 1
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800374@extension("VK_KHR_surface") @nonDispatchHandle type u64 VkSurfaceKHR
Jesse Hall1356b0d2015-11-23 17:24:58 -0800375
Jesse Hallad250842017-03-10 18:35:38 -0800376// 2
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800377@extension("VK_KHR_swapchain") @nonDispatchHandle type u64 VkSwapchainKHR
Jesse Hall1356b0d2015-11-23 17:24:58 -0800378
Jesse Hallad250842017-03-10 18:35:38 -0800379// 3
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800380@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayKHR
381@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayModeKHR
Jesse Halld27f6aa2015-08-15 17:58:48 -0700382
Jesse Hallad250842017-03-10 18:35:38 -0800383// 12
Jesse Hall715b86a2016-01-16 16:34:29 -0800384@extension("VK_EXT_debug_report") @nonDispatchHandle type u64 VkDebugReportCallbackEXT
385
Jesse Hallad250842017-03-10 18:35:38 -0800386// 86
387@extension("VK_KHR_descriptor_update_template") @nonDispatchHandle type u64 VkDescriptorUpdateTemplateKHR
388
389// 87
Chris Forbes289cb792016-12-30 15:03:55 +1300390@extension("VK_NVX_device_generated_commands") @nonDispatchHandle type u64 VkObjectTableNVX
391@extension("VK_NVX_device_generated_commands") @nonDispatchHandle type u64 VkIndirectCommandsLayoutNVX
392
Jesse Halld27f6aa2015-08-15 17:58:48 -0700393
394/////////////
395// Enums //
396/////////////
397
398enum VkImageLayout {
399 VK_IMAGE_LAYOUT_UNDEFINED = 0x00000000, /// Implicit layout an image is when its contents are undefined due to various reasons (e.g. right after creation)
400 VK_IMAGE_LAYOUT_GENERAL = 0x00000001, /// General layout when image can be used for any kind of access
401 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 0x00000002, /// Optimal layout when image is only used for color attachment read/write
402 VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 0x00000003, /// Optimal layout when image is only used for depth/stencil attachment read/write
403 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 0x00000004, /// Optimal layout when image is used for read only depth/stencil attachment and shader access
404 VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 0x00000005, /// Optimal layout when image is used for read only shader access
Jesse Hall3fbc8562015-11-29 22:10:52 -0800405 VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 0x00000006, /// Optimal layout when image is used only as source of transfer operations
406 VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 0x00000007, /// Optimal layout when image is used only as destination of transfer operations
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700407 VK_IMAGE_LAYOUT_PREINITIALIZED = 0x00000008, /// Initial layout used when the data is populated by the CPU
Jesse Hall1356b0d2015-11-23 17:24:58 -0800408
Jesse Hallad250842017-03-10 18:35:38 -0800409 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -0800410 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
Chris Forbesaf3a1112017-01-31 15:37:03 +1300411
Jesse Hall05556b12017-05-18 17:40:25 -0700412 //@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbesaf3a1112017-01-31 15:37:03 +1300413 VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700414}
415
416enum VkAttachmentLoadOp {
417 VK_ATTACHMENT_LOAD_OP_LOAD = 0x00000000,
418 VK_ATTACHMENT_LOAD_OP_CLEAR = 0x00000001,
419 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 0x00000002,
420}
421
422enum VkAttachmentStoreOp {
423 VK_ATTACHMENT_STORE_OP_STORE = 0x00000000,
424 VK_ATTACHMENT_STORE_OP_DONT_CARE = 0x00000001,
425}
426
427enum VkImageType {
428 VK_IMAGE_TYPE_1D = 0x00000000,
429 VK_IMAGE_TYPE_2D = 0x00000001,
430 VK_IMAGE_TYPE_3D = 0x00000002,
431}
432
433enum VkImageTiling {
Jesse Hallc7467b72015-11-29 21:05:26 -0800434 VK_IMAGE_TILING_OPTIMAL = 0x00000000,
435 VK_IMAGE_TILING_LINEAR = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700436}
437
438enum VkImageViewType {
439 VK_IMAGE_VIEW_TYPE_1D = 0x00000000,
440 VK_IMAGE_VIEW_TYPE_2D = 0x00000001,
441 VK_IMAGE_VIEW_TYPE_3D = 0x00000002,
442 VK_IMAGE_VIEW_TYPE_CUBE = 0x00000003,
443 VK_IMAGE_VIEW_TYPE_1D_ARRAY = 0x00000004,
444 VK_IMAGE_VIEW_TYPE_2D_ARRAY = 0x00000005,
445 VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 0x00000006,
446}
447
Jesse Hall3fbc8562015-11-29 22:10:52 -0800448enum VkCommandBufferLevel {
449 VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0x00000000,
450 VK_COMMAND_BUFFER_LEVEL_SECONDARY = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700451}
452
Jesse Hall65ab5522015-11-30 00:07:16 -0800453enum VkComponentSwizzle {
454 VK_COMPONENT_SWIZZLE_IDENTITY = 0x00000000,
455 VK_COMPONENT_SWIZZLE_ZERO = 0x00000001,
456 VK_COMPONENT_SWIZZLE_ONE = 0x00000002,
457 VK_COMPONENT_SWIZZLE_R = 0x00000003,
458 VK_COMPONENT_SWIZZLE_G = 0x00000004,
459 VK_COMPONENT_SWIZZLE_B = 0x00000005,
460 VK_COMPONENT_SWIZZLE_A = 0x00000006,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700461}
462
463enum VkDescriptorType {
464 VK_DESCRIPTOR_TYPE_SAMPLER = 0x00000000,
465 VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 0x00000001,
466 VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 0x00000002,
467 VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 0x00000003,
468 VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 0x00000004,
469 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 0x00000005,
470 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 0x00000006,
471 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 0x00000007,
472 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 0x00000008,
473 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 0x00000009,
474 VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 0x0000000a,
475}
476
Jesse Halld27f6aa2015-08-15 17:58:48 -0700477enum VkQueryType {
478 VK_QUERY_TYPE_OCCLUSION = 0x00000000,
479 VK_QUERY_TYPE_PIPELINE_STATISTICS = 0x00000001, /// Optional
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800480 VK_QUERY_TYPE_TIMESTAMP = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700481}
482
Jesse Halld27f6aa2015-08-15 17:58:48 -0700483enum VkBorderColor {
484 VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0x00000000,
485 VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 0x00000001,
486 VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 0x00000002,
487 VK_BORDER_COLOR_INT_OPAQUE_BLACK = 0x00000003,
488 VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 0x00000004,
489 VK_BORDER_COLOR_INT_OPAQUE_WHITE = 0x00000005,
490}
491
492enum VkPipelineBindPoint {
Jesse Hallc7467b72015-11-29 21:05:26 -0800493 VK_PIPELINE_BIND_POINT_GRAPHICS = 0x00000000,
494 VK_PIPELINE_BIND_POINT_COMPUTE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700495}
496
497enum VkPrimitiveTopology {
498 VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0x00000000,
499 VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 0x00000001,
500 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 0x00000002,
501 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 0x00000003,
502 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 0x00000004,
503 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800504 VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 0x00000006,
505 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 0x00000007,
506 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 0x00000008,
507 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 0x00000009,
Jesse Hall091ed9e2015-11-30 00:55:29 -0800508 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 0x0000000a,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700509}
510
511enum VkSharingMode {
512 VK_SHARING_MODE_EXCLUSIVE = 0x00000000,
513 VK_SHARING_MODE_CONCURRENT = 0x00000001,
514}
515
516enum VkIndexType {
517 VK_INDEX_TYPE_UINT16 = 0x00000000,
518 VK_INDEX_TYPE_UINT32 = 0x00000001,
519}
520
Jesse Hall23ff73f2015-11-29 14:36:39 -0800521enum VkFilter {
522 VK_FILTER_NEAREST = 0x00000000,
523 VK_FILTER_LINEAR = 0x00000001,
Jesse Hall26763382016-05-20 07:13:52 -0700524
Jesse Hallad250842017-03-10 18:35:38 -0800525 //@extension("VK_IMG_filter_cubic") // 16
Jesse Hall26763382016-05-20 07:13:52 -0700526 VK_FILTER_CUBIC_IMG = 1000015000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700527}
528
Jesse Hall23ff73f2015-11-29 14:36:39 -0800529enum VkSamplerMipmapMode {
Jesse Hall23ff73f2015-11-29 14:36:39 -0800530 VK_SAMPLER_MIPMAP_MODE_NEAREST = 0x00000001, /// Choose nearest mip level
531 VK_SAMPLER_MIPMAP_MODE_LINEAR = 0x00000002, /// Linear filter between mip levels
Jesse Halld27f6aa2015-08-15 17:58:48 -0700532}
533
Jesse Hall23ff73f2015-11-29 14:36:39 -0800534enum VkSamplerAddressMode {
Jesse Hallc7467b72015-11-29 21:05:26 -0800535 VK_SAMPLER_ADDRESS_MODE_REPEAT = 0x00000000,
536 VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 0x00000001,
537 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 0x00000002,
538 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 0x00000003,
539 VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700540}
541
542enum VkCompareOp {
543 VK_COMPARE_OP_NEVER = 0x00000000,
544 VK_COMPARE_OP_LESS = 0x00000001,
545 VK_COMPARE_OP_EQUAL = 0x00000002,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800546 VK_COMPARE_OP_LESS_OR_EQUAL = 0x00000003,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700547 VK_COMPARE_OP_GREATER = 0x00000004,
548 VK_COMPARE_OP_NOT_EQUAL = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800549 VK_COMPARE_OP_GREATER_OR_EQUAL = 0x00000006,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700550 VK_COMPARE_OP_ALWAYS = 0x00000007,
551}
552
Jesse Hall65ab5522015-11-30 00:07:16 -0800553enum VkPolygonMode {
554 VK_POLYGON_MODE_FILL = 0x00000000,
555 VK_POLYGON_MODE_LINE = 0x00000001,
556 VK_POLYGON_MODE_POINT = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700557}
558
559enum VkFrontFace {
Jesse Hall3fbc8562015-11-29 22:10:52 -0800560 VK_FRONT_FACE_COUNTER_CLOCKWISE = 0x00000000,
561 VK_FRONT_FACE_CLOCKWISE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700562}
563
Jesse Hall65ab5522015-11-30 00:07:16 -0800564enum VkBlendFactor {
565 VK_BLEND_FACTOR_ZERO = 0x00000000,
566 VK_BLEND_FACTOR_ONE = 0x00000001,
567 VK_BLEND_FACTOR_SRC_COLOR = 0x00000002,
568 VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 0x00000003,
569 VK_BLEND_FACTOR_DST_COLOR = 0x00000004,
570 VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 0x00000005,
571 VK_BLEND_FACTOR_SRC_ALPHA = 0x00000006,
572 VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 0x00000007,
573 VK_BLEND_FACTOR_DST_ALPHA = 0x00000008,
574 VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 0x00000009,
575 VK_BLEND_FACTOR_CONSTANT_COLOR = 0x0000000a,
576 VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 0x0000000b,
577 VK_BLEND_FACTOR_CONSTANT_ALPHA = 0x0000000c,
578 VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 0x0000000d,
579 VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 0x0000000e,
580 VK_BLEND_FACTOR_SRC1_COLOR = 0x0000000f,
581 VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 0x00000010,
582 VK_BLEND_FACTOR_SRC1_ALPHA = 0x00000011,
583 VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 0x00000012,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700584}
585
586enum VkBlendOp {
587 VK_BLEND_OP_ADD = 0x00000000,
588 VK_BLEND_OP_SUBTRACT = 0x00000001,
589 VK_BLEND_OP_REVERSE_SUBTRACT = 0x00000002,
590 VK_BLEND_OP_MIN = 0x00000003,
591 VK_BLEND_OP_MAX = 0x00000004,
592}
593
594enum VkStencilOp {
595 VK_STENCIL_OP_KEEP = 0x00000000,
596 VK_STENCIL_OP_ZERO = 0x00000001,
597 VK_STENCIL_OP_REPLACE = 0x00000002,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800598 VK_STENCIL_OP_INCREMENT_AND_CLAMP = 0x00000003,
599 VK_STENCIL_OP_DECREMENT_AND_CLAMP = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700600 VK_STENCIL_OP_INVERT = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800601 VK_STENCIL_OP_INCREMENT_AND_WRAP = 0x00000006,
602 VK_STENCIL_OP_DECREMENT_AND_WRAP = 0x00000007,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700603}
604
605enum VkLogicOp {
606 VK_LOGIC_OP_CLEAR = 0x00000000,
607 VK_LOGIC_OP_AND = 0x00000001,
608 VK_LOGIC_OP_AND_REVERSE = 0x00000002,
609 VK_LOGIC_OP_COPY = 0x00000003,
610 VK_LOGIC_OP_AND_INVERTED = 0x00000004,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800611 VK_LOGIC_OP_NO_OP = 0x00000005,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700612 VK_LOGIC_OP_XOR = 0x00000006,
613 VK_LOGIC_OP_OR = 0x00000007,
614 VK_LOGIC_OP_NOR = 0x00000008,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800615 VK_LOGIC_OP_EQUIVALENT = 0x00000009,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700616 VK_LOGIC_OP_INVERT = 0x0000000a,
617 VK_LOGIC_OP_OR_REVERSE = 0x0000000b,
618 VK_LOGIC_OP_COPY_INVERTED = 0x0000000c,
619 VK_LOGIC_OP_OR_INVERTED = 0x0000000d,
620 VK_LOGIC_OP_NAND = 0x0000000e,
621 VK_LOGIC_OP_SET = 0x0000000f,
622}
623
Jesse Hall3fbc8562015-11-29 22:10:52 -0800624enum VkSystemAllocationScope {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800625 VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0x00000000,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800626 VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 0x00000001,
627 VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 0x00000002,
628 VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 0x00000003,
629 VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 0x00000004,
Jesse Hall03b6fe12015-11-24 12:44:21 -0800630}
631
Jesse Hall3fbc8562015-11-29 22:10:52 -0800632enum VkInternalAllocationType {
633 VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0x00000000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700634}
635
636enum VkPhysicalDeviceType {
637 VK_PHYSICAL_DEVICE_TYPE_OTHER = 0x00000000,
638 VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 0x00000001,
639 VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 0x00000002,
640 VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 0x00000003,
641 VK_PHYSICAL_DEVICE_TYPE_CPU = 0x00000004,
642}
643
Jesse Hall65ab5522015-11-30 00:07:16 -0800644enum VkVertexInputRate {
645 VK_VERTEX_INPUT_RATE_VERTEX = 0x00000000,
646 VK_VERTEX_INPUT_RATE_INSTANCE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700647}
648
649/// Vulkan format definitions
650enum VkFormat {
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800651 VK_FORMAT_UNDEFINED = 0,
652 VK_FORMAT_R4G4_UNORM_PACK8 = 1,
653 VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
654 VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
655 VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
656 VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
657 VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
658 VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
659 VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
660 VK_FORMAT_R8_UNORM = 9,
661 VK_FORMAT_R8_SNORM = 10,
662 VK_FORMAT_R8_USCALED = 11,
663 VK_FORMAT_R8_SSCALED = 12,
664 VK_FORMAT_R8_UINT = 13,
665 VK_FORMAT_R8_SINT = 14,
666 VK_FORMAT_R8_SRGB = 15,
667 VK_FORMAT_R8G8_UNORM = 16,
668 VK_FORMAT_R8G8_SNORM = 17,
669 VK_FORMAT_R8G8_USCALED = 18,
670 VK_FORMAT_R8G8_SSCALED = 19,
671 VK_FORMAT_R8G8_UINT = 20,
672 VK_FORMAT_R8G8_SINT = 21,
673 VK_FORMAT_R8G8_SRGB = 22,
674 VK_FORMAT_R8G8B8_UNORM = 23,
675 VK_FORMAT_R8G8B8_SNORM = 24,
676 VK_FORMAT_R8G8B8_USCALED = 25,
677 VK_FORMAT_R8G8B8_SSCALED = 26,
678 VK_FORMAT_R8G8B8_UINT = 27,
679 VK_FORMAT_R8G8B8_SINT = 28,
680 VK_FORMAT_R8G8B8_SRGB = 29,
681 VK_FORMAT_B8G8R8_UNORM = 30,
682 VK_FORMAT_B8G8R8_SNORM = 31,
683 VK_FORMAT_B8G8R8_USCALED = 32,
684 VK_FORMAT_B8G8R8_SSCALED = 33,
685 VK_FORMAT_B8G8R8_UINT = 34,
686 VK_FORMAT_B8G8R8_SINT = 35,
687 VK_FORMAT_B8G8R8_SRGB = 36,
688 VK_FORMAT_R8G8B8A8_UNORM = 37,
689 VK_FORMAT_R8G8B8A8_SNORM = 38,
690 VK_FORMAT_R8G8B8A8_USCALED = 39,
691 VK_FORMAT_R8G8B8A8_SSCALED = 40,
692 VK_FORMAT_R8G8B8A8_UINT = 41,
693 VK_FORMAT_R8G8B8A8_SINT = 42,
694 VK_FORMAT_R8G8B8A8_SRGB = 43,
695 VK_FORMAT_B8G8R8A8_UNORM = 44,
696 VK_FORMAT_B8G8R8A8_SNORM = 45,
697 VK_FORMAT_B8G8R8A8_USCALED = 46,
698 VK_FORMAT_B8G8R8A8_SSCALED = 47,
699 VK_FORMAT_B8G8R8A8_UINT = 48,
700 VK_FORMAT_B8G8R8A8_SINT = 49,
701 VK_FORMAT_B8G8R8A8_SRGB = 50,
702 VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
703 VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
704 VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
705 VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
706 VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
707 VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
708 VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
709 VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
710 VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
711 VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
712 VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
713 VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
714 VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
715 VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
716 VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
717 VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
718 VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
719 VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
720 VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
721 VK_FORMAT_R16_UNORM = 70,
722 VK_FORMAT_R16_SNORM = 71,
723 VK_FORMAT_R16_USCALED = 72,
724 VK_FORMAT_R16_SSCALED = 73,
725 VK_FORMAT_R16_UINT = 74,
726 VK_FORMAT_R16_SINT = 75,
727 VK_FORMAT_R16_SFLOAT = 76,
728 VK_FORMAT_R16G16_UNORM = 77,
729 VK_FORMAT_R16G16_SNORM = 78,
730 VK_FORMAT_R16G16_USCALED = 79,
731 VK_FORMAT_R16G16_SSCALED = 80,
732 VK_FORMAT_R16G16_UINT = 81,
733 VK_FORMAT_R16G16_SINT = 82,
734 VK_FORMAT_R16G16_SFLOAT = 83,
735 VK_FORMAT_R16G16B16_UNORM = 84,
736 VK_FORMAT_R16G16B16_SNORM = 85,
737 VK_FORMAT_R16G16B16_USCALED = 86,
738 VK_FORMAT_R16G16B16_SSCALED = 87,
739 VK_FORMAT_R16G16B16_UINT = 88,
740 VK_FORMAT_R16G16B16_SINT = 89,
741 VK_FORMAT_R16G16B16_SFLOAT = 90,
742 VK_FORMAT_R16G16B16A16_UNORM = 91,
743 VK_FORMAT_R16G16B16A16_SNORM = 92,
744 VK_FORMAT_R16G16B16A16_USCALED = 93,
745 VK_FORMAT_R16G16B16A16_SSCALED = 94,
746 VK_FORMAT_R16G16B16A16_UINT = 95,
747 VK_FORMAT_R16G16B16A16_SINT = 96,
748 VK_FORMAT_R16G16B16A16_SFLOAT = 97,
749 VK_FORMAT_R32_UINT = 98,
750 VK_FORMAT_R32_SINT = 99,
751 VK_FORMAT_R32_SFLOAT = 100,
752 VK_FORMAT_R32G32_UINT = 101,
753 VK_FORMAT_R32G32_SINT = 102,
754 VK_FORMAT_R32G32_SFLOAT = 103,
755 VK_FORMAT_R32G32B32_UINT = 104,
756 VK_FORMAT_R32G32B32_SINT = 105,
757 VK_FORMAT_R32G32B32_SFLOAT = 106,
758 VK_FORMAT_R32G32B32A32_UINT = 107,
759 VK_FORMAT_R32G32B32A32_SINT = 108,
760 VK_FORMAT_R32G32B32A32_SFLOAT = 109,
761 VK_FORMAT_R64_UINT = 110,
762 VK_FORMAT_R64_SINT = 111,
763 VK_FORMAT_R64_SFLOAT = 112,
764 VK_FORMAT_R64G64_UINT = 113,
765 VK_FORMAT_R64G64_SINT = 114,
766 VK_FORMAT_R64G64_SFLOAT = 115,
767 VK_FORMAT_R64G64B64_UINT = 116,
768 VK_FORMAT_R64G64B64_SINT = 117,
769 VK_FORMAT_R64G64B64_SFLOAT = 118,
770 VK_FORMAT_R64G64B64A64_UINT = 119,
771 VK_FORMAT_R64G64B64A64_SINT = 120,
772 VK_FORMAT_R64G64B64A64_SFLOAT = 121,
773 VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
774 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
775 VK_FORMAT_D16_UNORM = 124,
776 VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
777 VK_FORMAT_D32_SFLOAT = 126,
778 VK_FORMAT_S8_UINT = 127,
779 VK_FORMAT_D16_UNORM_S8_UINT = 128,
780 VK_FORMAT_D24_UNORM_S8_UINT = 129,
781 VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
782 VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
783 VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
784 VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
785 VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
786 VK_FORMAT_BC2_UNORM_BLOCK = 135,
787 VK_FORMAT_BC2_SRGB_BLOCK = 136,
788 VK_FORMAT_BC3_UNORM_BLOCK = 137,
789 VK_FORMAT_BC3_SRGB_BLOCK = 138,
790 VK_FORMAT_BC4_UNORM_BLOCK = 139,
791 VK_FORMAT_BC4_SNORM_BLOCK = 140,
792 VK_FORMAT_BC5_UNORM_BLOCK = 141,
793 VK_FORMAT_BC5_SNORM_BLOCK = 142,
794 VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
795 VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
796 VK_FORMAT_BC7_UNORM_BLOCK = 145,
797 VK_FORMAT_BC7_SRGB_BLOCK = 146,
798 VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
799 VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
800 VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
801 VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
802 VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
803 VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
804 VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
805 VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
806 VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
807 VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
808 VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
809 VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
810 VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
811 VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
812 VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
813 VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
814 VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
815 VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
816 VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
817 VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
818 VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
819 VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
820 VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
821 VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
822 VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
823 VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
824 VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
825 VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
826 VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
827 VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
828 VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
829 VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
830 VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
831 VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
832 VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
833 VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
834 VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
835 VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
Chris Forbes289cb792016-12-30 15:03:55 +1300836
Jesse Hallad250842017-03-10 18:35:38 -0800837 //@extension("VK_IMG_format_pvrtc") // 28
Jesse Halleb02c472017-02-24 15:13:45 -0800838 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
839 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
840 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
841 VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
842 VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
843 VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
844 VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
845 VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700846}
847
Jesse Halld27f6aa2015-08-15 17:58:48 -0700848/// Structure type enumerant
849enum VkStructureType {
850 VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
Jesse Hallc7467b72015-11-29 21:05:26 -0800851 VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
852 VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
853 VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
854 VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800855 VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
Jesse Hallc7467b72015-11-29 21:05:26 -0800856 VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
857 VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
858 VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
859 VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700860 VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
Jesse Hallc7467b72015-11-29 21:05:26 -0800861 VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
862 VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
863 VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
864 VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
865 VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
866 VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800867 VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
868 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
869 VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
870 VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
871 VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
872 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
873 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
874 VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
875 VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
876 VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
877 VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
878 VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
879 VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
880 VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
881 VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
882 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
883 VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800884 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800885 VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
886 VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
887 VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
888 VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
889 VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800890 VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
Jesse Hall3dd678a2016-01-08 21:52:01 -0800891 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
892 VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
893 VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
894 VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
895 VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
896 VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
897 VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
898 VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
Jesse Hall1356b0d2015-11-23 17:24:58 -0800899
Jesse Hallad250842017-03-10 18:35:38 -0800900 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -0800901 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
902 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
Jesse Hall1356b0d2015-11-23 17:24:58 -0800903
Jesse Hallad250842017-03-10 18:35:38 -0800904 //@extension("VK_KHR_display") // 3
Jesse Hallbd888842015-11-30 21:44:14 -0800905 VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
906 VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
Jesse Hall1356b0d2015-11-23 17:24:58 -0800907
Jesse Hallad250842017-03-10 18:35:38 -0800908 //@extension("VK_KHR_display_swapchain") // 4
Jesse Hallbd888842015-11-30 21:44:14 -0800909 VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR = 1000003000,
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800910
Jesse Hallad250842017-03-10 18:35:38 -0800911 //@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800912 VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
913
Jesse Hallad250842017-03-10 18:35:38 -0800914 //@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800915 VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
916
Jesse Hallad250842017-03-10 18:35:38 -0800917 //@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800918 VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
919
Jesse Hallad250842017-03-10 18:35:38 -0800920 //@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800921 VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000,
922
Jesse Hallad250842017-03-10 18:35:38 -0800923 //@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800924 VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
925
Jesse Hallad250842017-03-10 18:35:38 -0800926 //@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800927 VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
Jesse Hall543a7ff2016-01-08 16:38:30 -0800928
Jesse Hallad250842017-03-10 18:35:38 -0800929 //@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +0800930 VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID = 1000010000,
Chris Forbes8e4438b2016-12-07 16:26:49 +1300931 VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID = 1000010001,
Chris Forbes1d4e5542017-02-15 19:38:50 +1300932 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID = 1000010002,
Chia-I Wub262ddc2016-03-22 07:38:20 +0800933
Jesse Hallad250842017-03-10 18:35:38 -0800934 //@extension("VK_EXT_debug_report") // 12
Jesse Hall26763382016-05-20 07:13:52 -0700935 VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
936
Jesse Hallad250842017-03-10 18:35:38 -0800937 //@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -0700938 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,
939
Jesse Hallad250842017-03-10 18:35:38 -0800940 //@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -0700941 VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,
Jesse Hall26763382016-05-20 07:13:52 -0700942 VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,
Jesse Hall26763382016-05-20 07:13:52 -0700943 VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,
Jesse Hall56d386a2016-07-26 15:20:40 -0700944
Jesse Hallad250842017-03-10 18:35:38 -0800945 //@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -0700946 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
Jesse Hall56d386a2016-07-26 15:20:40 -0700947 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
Jesse Hall56d386a2016-07-26 15:20:40 -0700948 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
Chris Forbes289cb792016-12-30 15:03:55 +1300949
Jesse Hallad250842017-03-10 18:35:38 -0800950 //@extension("VK_KHX_multiview") // 54
951 VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX = 1000053000,
952 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX = 1000053001,
953 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX = 1000053002,
954
955 //@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -0800956 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
957 VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,
Chris Forbes289cb792016-12-30 15:03:55 +1300958
Jesse Hallad250842017-03-10 18:35:38 -0800959 //@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -0800960 VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
961 VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
Chris Forbes289cb792016-12-30 15:03:55 +1300962
Jesse Hallad250842017-03-10 18:35:38 -0800963 //@extension("VK_NV_win32_keyed_mutex") // 59
Chris Forbes289cb792016-12-30 15:03:55 +1300964 VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
965
Jesse Hallad250842017-03-10 18:35:38 -0800966 //@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall889cd9a2017-02-25 22:12:23 -0800967 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000,
968 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001,
969 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002,
970 VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003,
971 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004,
972 VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005,
973 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006,
974 VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007,
Chris Forbes1194ede2016-12-30 16:29:25 +1300975 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008,
976
Jesse Hallad250842017-03-10 18:35:38 -0800977 //@extension("VK_KHX_device_group") // 61
978 VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX = 1000060000,
979 VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX = 1000060001,
980 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX = 1000060002,
981 VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX = 1000060003,
982 VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX = 1000060004,
983 VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX = 1000060005,
984 VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX = 1000060006,
985 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX = 1000060007,
986 VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX = 1000060008,
987 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX = 1000060009,
988 VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX = 1000060010,
989 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX = 1000060011,
990 VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX = 1000060012,
991
992 //@extension("VK_EXT_validation_flags") // 62
Jesse Halleb02c472017-02-24 15:13:45 -0800993 VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
Chris Forbes289cb792016-12-30 15:03:55 +1300994
Jesse Hallad250842017-03-10 18:35:38 -0800995 //@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -0800996 VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000,
997
Jesse Hallad250842017-03-10 18:35:38 -0800998 //@extension("VK_KHX_device_group_creation") // 71
999 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX = 1000070000,
1000 VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX = 1000070001,
1001
1002 //@extension("VK_KHX_external_memory_capabilities") // 72
1003 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHX = 1000071000,
1004 VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHX = 1000071001,
1005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHX = 1000071002,
1006 VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHX = 1000071003,
1007 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHX = 1000071004,
Jesse Hallad250842017-03-10 18:35:38 -08001008
1009 //@extension("VK_KHX_external_memory") // 73
1010 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHX = 1000072000,
1011 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHX = 1000072001,
1012 VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHX = 1000072002,
1013
1014 //@extension("VK_KHX_external_memory_win32") // 74
1015 VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHX = 1000073000,
1016 VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHX = 1000073001,
1017 VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHX = 1000073002,
1018
1019 //@extension("VK_KHX_external_memory_fd") // 75
1020 VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHX = 1000074000,
1021 VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHX = 1000074001,
1022
1023 //@extension("VK_KHX_win32_keyed_mutex") // 76
1024 VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHX = 1000075000,
1025
1026 //@extension("VK_KHX_external_semaphore_capabilities") // 77
1027 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHX = 1000076000,
1028 VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHX = 1000076001,
1029
1030 //@extension("VK_KHX_external_semaphore") // 78
1031 VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHX = 1000077000,
1032
1033 //@extension("VK_KHX_external_semaphore_win32") // 79
1034 VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX = 1000078000,
1035 VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX = 1000078001,
1036 VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHX = 1000078002,
1037
1038 //@extension("VK_KHX_external_semaphore_fd") // 80
1039 VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHX = 1000079000,
1040
1041 //@extension("VK_KHR_push_descriptor") // 81
1042 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000,
1043
1044 //@extension("VK_KHR_incremental_present") // 85
Jesse Hall889cd9a2017-02-25 22:12:23 -08001045 VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
Chris Forbes289cb792016-12-30 15:03:55 +13001046
Jesse Hallad250842017-03-10 18:35:38 -08001047 //@extension("VK_KHR_descriptor_update_template") // 86
1048 VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000,
1049
1050 //@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08001051 VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
1052 VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
1053 VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = 1000086002,
1054 VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = 1000086003,
1055 VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004,
1056 VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001057
Jesse Hallad250842017-03-10 18:35:38 -08001058 //@extension("VK_NV_clip_space_w_scaling") // 88
1059 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000,
1060
1061 //@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08001062 VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000,
1063
Jesse Hallad250842017-03-10 18:35:38 -08001064 //@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001065 VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000,
1066 VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001,
1067 VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002,
1068 VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,
Jesse Hallad250842017-03-10 18:35:38 -08001069
1070 //@extension("VK_GOOGLE_display_timing") // 93
1071 VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000,
1072
1073 //@extension("VK_NVX_multiview_per_view_attributes") // 98
1074 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000,
1075
1076 //@extension("VK_NV_viewport_swizzle") // 99
1077 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000,
1078
1079 //@extension("VK_EXT_discard_rectangles") // 100
1080 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,
1081 VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,
1082
Jesse Hallfdc8ab32017-03-10 21:01:57 -08001083 //@extension("VK_EXT_hdr_metadata") // 106
1084 VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
1085
Jesse Hall05556b12017-05-18 17:40:25 -07001086 //@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbese2d3ee12017-03-16 16:10:15 +13001087 VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
1088
Jesse Hall05556b12017-05-18 17:40:25 -07001089 //@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13001090 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,
1091 VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001,
1092 VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002,
1093
Jesse Hallad250842017-03-10 18:35:38 -08001094 //@extension("VK_MVK_ios_surface") // 123
1095 VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000,
1096
1097 //@extension("VK_MVK_macos_surface") // 124
1098 VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001099}
1100
Jesse Hall65ab5522015-11-30 00:07:16 -08001101enum VkSubpassContents {
1102 VK_SUBPASS_CONTENTS_INLINE = 0x00000000,
1103 VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001104}
1105
Jesse Hall543a7ff2016-01-08 16:38:30 -08001106enum VkPipelineCacheHeaderVersion {
1107 VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
1108}
1109
Jesse Hallbd888842015-11-30 21:44:14 -08001110@lastUnused(-11)
Jesse Halld27f6aa2015-08-15 17:58:48 -07001111/// Error and return codes
1112enum VkResult {
1113 // Return codes for successful operation execution (positive values)
Jesse Hallbd888842015-11-30 21:44:14 -08001114 VK_SUCCESS = 0,
1115 VK_NOT_READY = 1,
1116 VK_TIMEOUT = 2,
1117 VK_EVENT_SET = 3,
1118 VK_EVENT_RESET = 4,
1119 VK_INCOMPLETE = 5,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001120
Jesse Hallad250842017-03-10 18:35:38 -08001121 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -08001122 VK_SUBOPTIMAL_KHR = 1000001003,
Jesse Hall1356b0d2015-11-23 17:24:58 -08001123
Jesse Halld27f6aa2015-08-15 17:58:48 -07001124 // Error codes (negative values)
Jesse Hallbd888842015-11-30 21:44:14 -08001125 VK_ERROR_OUT_OF_HOST_MEMORY = 0xFFFFFFFF, // -1
1126 VK_ERROR_OUT_OF_DEVICE_MEMORY = 0xFFFFFFFE, // -2
1127 VK_ERROR_INITIALIZATION_FAILED = 0xFFFFFFFD, // -3
1128 VK_ERROR_DEVICE_LOST = 0xFFFFFFFC, // -4
1129 VK_ERROR_MEMORY_MAP_FAILED = 0xFFFFFFFB, // -5
1130 VK_ERROR_LAYER_NOT_PRESENT = 0xFFFFFFFA, // -6
1131 VK_ERROR_EXTENSION_NOT_PRESENT = 0xFFFFFFF9, // -7
1132 VK_ERROR_FEATURE_NOT_PRESENT = 0xFFFFFFF8, // -8
1133 VK_ERROR_INCOMPATIBLE_DRIVER = 0xFFFFFFF7, // -9
1134 VK_ERROR_TOO_MANY_OBJECTS = 0xFFFFFFF6, // -10
1135 VK_ERROR_FORMAT_NOT_SUPPORTED = 0xFFFFFFF5, // -11
Jesse Hall56d386a2016-07-26 15:20:40 -07001136 VK_ERROR_FRAGMENTED_POOL = 0xFFFFFFF4, // -12
Jesse Hall1356b0d2015-11-23 17:24:58 -08001137
Jesse Hallad250842017-03-10 18:35:38 -08001138 //@extension("VK_KHR_surface") // 1
Jesse Hallbd888842015-11-30 21:44:14 -08001139 VK_ERROR_SURFACE_LOST_KHR = 0xC4653600, // -1000000000
Jesse Hallad250842017-03-10 18:35:38 -08001140 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = 0xC46535FF, // -1000000001
Jesse Halla6429252015-11-29 18:59:42 -08001141
Jesse Hallad250842017-03-10 18:35:38 -08001142 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -08001143 VK_ERROR_OUT_OF_DATE_KHR = 0xC4653214, // -1000001004
Jesse Hall1356b0d2015-11-23 17:24:58 -08001144
Jesse Hallad250842017-03-10 18:35:38 -08001145 //@extension("VK_KHR_display_swapchain") // 4
Jesse Hallbd888842015-11-30 21:44:14 -08001146 VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = 0xC4652A47, // -1000003001
Jesse Hall1356b0d2015-11-23 17:24:58 -08001147
Jesse Hallad250842017-03-10 18:35:38 -08001148 //@extension("VK_EXT_debug_report") // 12
Jesse Hall543a7ff2016-01-08 16:38:30 -08001149 VK_ERROR_VALIDATION_FAILED_EXT = 0xC4650B07, // -1000011001
Jesse Hall26763382016-05-20 07:13:52 -07001150
Jesse Hallad250842017-03-10 18:35:38 -08001151 //@extension("VK_NV_glsl_shader") // 13
Jesse Hall26763382016-05-20 07:13:52 -07001152 VK_ERROR_INVALID_SHADER_NV = 0xC4650720, // -1000012000
Jesse Hall77ad05b2017-03-10 22:02:20 -08001153
Jesse Hallad250842017-03-10 18:35:38 -08001154 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08001155 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = 0xC4642878, // -1000069000
Jesse Hallad250842017-03-10 18:35:38 -08001156
1157 //@extension("VK_KHX_external_memory") // 73
1158 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHX = 0xC4641CBD, // -1000072003
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001159}
1160
1161enum VkDynamicState {
1162 VK_DYNAMIC_STATE_VIEWPORT = 0x00000000,
1163 VK_DYNAMIC_STATE_SCISSOR = 0x00000001,
1164 VK_DYNAMIC_STATE_LINE_WIDTH = 0x00000002,
1165 VK_DYNAMIC_STATE_DEPTH_BIAS = 0x00000003,
1166 VK_DYNAMIC_STATE_BLEND_CONSTANTS = 0x00000004,
1167 VK_DYNAMIC_STATE_DEPTH_BOUNDS = 0x00000005,
1168 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 0x00000006,
1169 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 0x00000007,
1170 VK_DYNAMIC_STATE_STENCIL_REFERENCE = 0x00000008,
Jesse Hallad250842017-03-10 18:35:38 -08001171
1172 //@extension("VK_NV_clip_space_w_scaling") // 88
1173 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000,
1174
1175 //@extension("VK_EXT_discard_rectangles") // 100
1176 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001177}
1178
Jesse Hall05556b12017-05-18 17:40:25 -07001179enum VkObjectType {
1180 VK_OBJECT_TYPE_UNKNOWN = 0,
1181 VK_OBJECT_TYPE_INSTANCE = 1,
1182 VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,
1183 VK_OBJECT_TYPE_DEVICE = 3,
1184 VK_OBJECT_TYPE_QUEUE = 4,
1185 VK_OBJECT_TYPE_SEMAPHORE = 5,
1186 VK_OBJECT_TYPE_COMMAND_BUFFER = 6,
1187 VK_OBJECT_TYPE_FENCE = 7,
1188 VK_OBJECT_TYPE_DEVICE_MEMORY = 8,
1189 VK_OBJECT_TYPE_BUFFER = 9,
1190 VK_OBJECT_TYPE_IMAGE = 10,
1191 VK_OBJECT_TYPE_EVENT = 11,
1192 VK_OBJECT_TYPE_QUERY_POOL = 12,
1193 VK_OBJECT_TYPE_BUFFER_VIEW = 13,
1194 VK_OBJECT_TYPE_IMAGE_VIEW = 14,
1195 VK_OBJECT_TYPE_SHADER_MODULE = 15,
1196 VK_OBJECT_TYPE_PIPELINE_CACHE = 16,
1197 VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,
1198 VK_OBJECT_TYPE_RENDER_PASS = 18,
1199 VK_OBJECT_TYPE_PIPELINE = 19,
1200 VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,
1201 VK_OBJECT_TYPE_SAMPLER = 21,
1202 VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,
1203 VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,
1204 VK_OBJECT_TYPE_FRAMEBUFFER = 24,
1205 VK_OBJECT_TYPE_COMMAND_POOL = 25,
1206
1207 //@extension("VK_KHR_surface") // 1
1208 VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,
1209
1210 //@extension("VK_KHR_swapchain") // 2
1211 VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,
1212
1213 //@extension("VK_KHR_display") // 3
1214 VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000,
1215 VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001,
1216
1217 //@extension("VK_KHR_debug_report") // 12
1218 VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000,
1219
1220 //@extension("VK_KHR_descriptor_update_template") // 86
1221 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000,
1222
1223 //@extension("VK_NVX_device_generated_commands") // 87
1224 VK_OBJECT_TYPE_OBJECT_TABLE_NVX = 1000086000,
1225 VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = 1000086001,
1226}
1227
Jesse Hallad250842017-03-10 18:35:38 -08001228@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08001229enum VkPresentModeKHR {
1230 VK_PRESENT_MODE_IMMEDIATE_KHR = 0x00000000,
1231 VK_PRESENT_MODE_MAILBOX_KHR = 0x00000001,
1232 VK_PRESENT_MODE_FIFO_KHR = 0x00000002,
Jesse Hall03b6fe12015-11-24 12:44:21 -08001233 VK_PRESENT_MODE_FIFO_RELAXED_KHR = 0x00000003,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001234
Jesse Hall05556b12017-05-18 17:40:25 -07001235 //@extension("VK_KHR_shared_presentable_image") // 112
Jesse Hall77ad05b2017-03-10 22:02:20 -08001236 VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,
1237 VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,
Michael Lentine88594d72015-11-12 12:49:45 -08001238}
1239
Jesse Hallad250842017-03-10 18:35:38 -08001240@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08001241enum VkColorSpaceKHR {
1242 VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0x00000000,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001243
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001244 //@extension("VK_EXT_swapchain_colorspace") // 105
1245 VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
1246 VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
1247 VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003,
1248 VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
1249 VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
1250 VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
1251 VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
1252 VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
1253 VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
1254 VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
Courtney Goeltzenleuchter7f558ed2017-01-23 17:15:24 -07001255 VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
1256 VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001257 VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
Michael Lentine88594d72015-11-12 12:49:45 -08001258}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001259
Jesse Hallad250842017-03-10 18:35:38 -08001260@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08001261enum VkDebugReportObjectTypeEXT {
1262 VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
1263 VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
1264 VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
1265 VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,
1266 VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,
1267 VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,
1268 VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,
1269 VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,
1270 VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,
1271 VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,
1272 VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,
1273 VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,
1274 VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,
1275 VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,
1276 VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,
1277 VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,
1278 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,
1279 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,
1280 VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,
1281 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,
1282 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,
1283 VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,
1284 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,
1285 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,
1286 VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,
1287 VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,
1288 VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
1289 VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
1290 VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28,
Chris Forbes289cb792016-12-30 15:03:55 +13001291 VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29,
1292 VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,
1293 VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31,
1294 VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32,
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001295
1296 //extension("VK_KHR_descriptor_update_template") // 86
1297 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000,
Jesse Hall715b86a2016-01-16 16:34:29 -08001298}
1299
Jesse Hallad250842017-03-10 18:35:38 -08001300@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08001301enum VkDebugReportErrorEXT {
1302 VK_DEBUG_REPORT_ERROR_NONE_EXT = 0,
1303 VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT = 1,
1304}
1305
Jesse Hallad250842017-03-10 18:35:38 -08001306@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07001307enum VkRasterizationOrderAMD {
1308 VK_RASTERIZATION_ORDER_STRICT_AMD = 0,
1309 VK_RASTERIZATION_ORDER_RELAXED_AMD = 1,
1310}
1311
Jesse Hallad250842017-03-10 18:35:38 -08001312@extension("VK_EXT_validation_flags") // 62
Chris Forbes289cb792016-12-30 15:03:55 +13001313enum VkValidationCheckEXT {
1314 VK_VALIDATION_CHECK_ALL_EXT = 0,
1315}
1316
Jesse Hallad250842017-03-10 18:35:38 -08001317@extension("VK_KHR_descriptor_update_template") // 86
1318enum VkDescriptorUpdateTemplateTypeKHR {
1319 VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0,
1320 VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1,
1321}
1322
1323@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001324enum VkIndirectCommandsTokenTypeNVX {
Jesse Halleb02c472017-02-24 15:13:45 -08001325 VK_INDIRECT_COMMANDS_TOKEN_PIPELINE_NVX = 0,
1326 VK_INDIRECT_COMMANDS_TOKEN_DESCRIPTOR_SET_NVX = 1,
1327 VK_INDIRECT_COMMANDS_TOKEN_INDEX_BUFFER_NVX = 2,
1328 VK_INDIRECT_COMMANDS_TOKEN_VERTEX_BUFFER_NVX = 3,
1329 VK_INDIRECT_COMMANDS_TOKEN_PUSH_CONSTANT_NVX = 4,
1330 VK_INDIRECT_COMMANDS_TOKEN_DRAW_INDEXED_NVX = 5,
1331 VK_INDIRECT_COMMANDS_TOKEN_DRAW_NVX = 6,
1332 VK_INDIRECT_COMMANDS_TOKEN_DISPATCH_NVX = 7,
Chris Forbes289cb792016-12-30 15:03:55 +13001333}
1334
Jesse Hallad250842017-03-10 18:35:38 -08001335@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001336enum VkObjectEntryTypeNVX {
Jesse Halleb02c472017-02-24 15:13:45 -08001337 VK_OBJECT_ENTRY_DESCRIPTOR_SET_NVX = 0,
1338 VK_OBJECT_ENTRY_PIPELINE_NVX = 1,
1339 VK_OBJECT_ENTRY_INDEX_BUFFER_NVX = 2,
1340 VK_OBJECT_ENTRY_VERTEX_BUFFER_NVX = 3,
1341 VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX = 4,
Chris Forbes289cb792016-12-30 15:03:55 +13001342}
Jesse Hall715b86a2016-01-16 16:34:29 -08001343
Jesse Hallad250842017-03-10 18:35:38 -08001344@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001345enum VkDisplayPowerStateEXT {
1346 VK_DISPLAY_POWER_STATE_OFF_EXT = 0,
1347 VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,
1348 VK_DISPLAY_POWER_STATE_ON_EXT = 2,
1349}
1350
Jesse Hallad250842017-03-10 18:35:38 -08001351@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001352enum VkDeviceEventTypeEXT {
1353 VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0,
1354}
1355
Jesse Hallad250842017-03-10 18:35:38 -08001356@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001357enum VkDisplayEventTypeEXT {
1358 VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,
1359}
1360
Jesse Hallad250842017-03-10 18:35:38 -08001361@extension("VK_NV_viewport_swizzle") // 99
1362enum VkViewportCoordinateSwizzleNV {
1363 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0,
1364 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1,
1365 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2,
1366 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3,
1367 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4,
1368 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5,
1369 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6,
1370 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7,
1371}
1372
1373@extension("VK_EXT_discard_rectangles") // 100
1374enum VkDiscardRectangleModeEXT {
1375 VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,
1376 VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,
1377}
1378
Jesse Halld27f6aa2015-08-15 17:58:48 -07001379/////////////////
1380// Bitfields //
1381/////////////////
1382
Jesse Halld27f6aa2015-08-15 17:58:48 -07001383/// Queue capabilities
Jesse Halld8bade02015-11-24 10:24:18 -08001384type VkFlags VkQueueFlags
1385bitfield VkQueueFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001386 VK_QUEUE_GRAPHICS_BIT = 0x00000001, /// Queue supports graphics operations
1387 VK_QUEUE_COMPUTE_BIT = 0x00000002, /// Queue supports compute operations
Jesse Hall65ab5522015-11-30 00:07:16 -08001388 VK_QUEUE_TRANSFER_BIT = 0x00000004, /// Queue supports transfer operations
Jesse Hallb00daad2015-11-29 19:46:20 -08001389 VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008, /// Queue supports sparse resource memory management operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001390}
1391
1392/// Memory properties passed into vkAllocMemory().
Jesse Halld8bade02015-11-24 10:24:18 -08001393type VkFlags VkMemoryPropertyFlags
1394bitfield VkMemoryPropertyFlagBits {
Jesse Halld1af8122015-11-29 23:50:38 -08001395 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
1396 VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
1397 VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
1398 VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
1399 VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001400}
1401
1402/// Memory heap flags
Jesse Halld8bade02015-11-24 10:24:18 -08001403type VkFlags VkMemoryHeapFlags
1404bitfield VkMemoryHeapFlagBits {
Jesse Halld1af8122015-11-29 23:50:38 -08001405 VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
Jesse Hallad250842017-03-10 18:35:38 -08001406
1407 //@extension("VK_KHX_device_group_creation") // 71
1408 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001409}
1410
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001411/// Access flags
1412type VkFlags VkAccessFlags
1413bitfield VkAccessFlagBits {
1414 VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
1415 VK_ACCESS_INDEX_READ_BIT = 0x00000002,
1416 VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
1417 VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
1418 VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
1419 VK_ACCESS_SHADER_READ_BIT = 0x00000020,
1420 VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
1421 VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
1422 VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
1423 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
1424 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
1425 VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
1426 VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
1427 VK_ACCESS_HOST_READ_BIT = 0x00002000,
1428 VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
1429 VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
1430 VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
Chris Forbes289cb792016-12-30 15:03:55 +13001431
Jesse Hallad250842017-03-10 18:35:38 -08001432 //@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001433 VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000,
Chris Forbes289cb792016-12-30 15:03:55 +13001434 VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001435}
1436
1437/// Buffer usage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001438type VkFlags VkBufferUsageFlags
1439bitfield VkBufferUsageFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -08001440 VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations
1441 VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001442 VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004, /// Can be used as TBO
1443 VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008, /// Can be used as IBO
1444 VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010, /// Can be used as UBO
1445 VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020, /// Can be used as SSBO
1446 VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, /// Can be used as source of fixed function index fetch (index buffer)
1447 VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, /// Can be used as source of fixed function vertex fetch (VBO)
1448 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, /// Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer)
1449}
1450
1451/// Buffer creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001452type VkFlags VkBufferCreateFlags
1453bitfield VkBufferCreateFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001454 VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Buffer should support sparse backing
Jesse Halld27f6aa2015-08-15 17:58:48 -07001455 VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Buffer should support sparse backing with partial residency
1456 VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004, /// Buffer should support constent data access to physical memory blocks mapped into multiple locations of sparse buffers
1457}
1458
1459/// Shader stage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001460type VkFlags VkShaderStageFlags
1461bitfield VkShaderStageFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001462 VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
Jesse Hallae38f732015-11-19 21:32:50 -08001463 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
1464 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001465 VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
1466 VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
1467 VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
Jesse Hallc7467b72015-11-29 21:05:26 -08001468 VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001469
1470 VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
1471}
1472
Jesse Hallfbf97b02015-11-20 14:17:03 -08001473/// Descriptor pool create flags
Jesse Halld8bade02015-11-24 10:24:18 -08001474type VkFlags VkDescriptorPoolCreateFlags
1475bitfield VkDescriptorPoolCreateFlagBits {
Jesse Hallfbf97b02015-11-20 14:17:03 -08001476 VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
1477}
1478
1479/// Descriptor pool reset flags
Jesse Halld8bade02015-11-24 10:24:18 -08001480type VkFlags VkDescriptorPoolResetFlags
Jesse Halla6429252015-11-29 18:59:42 -08001481//bitfield VkDescriptorPoolResetFlagBits {
1482//}
Jesse Hallfbf97b02015-11-20 14:17:03 -08001483
Jesse Halld27f6aa2015-08-15 17:58:48 -07001484/// Image usage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001485type VkFlags VkImageUsageFlags
1486bitfield VkImageUsageFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -08001487 VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations
1488 VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001489 VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004, /// Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
1490 VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008, /// Can be used as storage image (STORAGE_IMAGE descriptor type)
1491 VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010, /// Can be used as framebuffer color attachment
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001492 VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020, /// Can be used as framebuffer depth/stencil attachment
Jesse Halld27f6aa2015-08-15 17:58:48 -07001493 VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040, /// Image data not needed outside of rendering
1494 VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080, /// Can be used as framebuffer input attachment
1495}
1496
1497/// Image creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001498type VkFlags VkImageCreateFlags
1499bitfield VkImageCreateFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001500 VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Image should support sparse backing
Jesse Halld27f6aa2015-08-15 17:58:48 -07001501 VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Image should support sparse backing with partial residency
1502 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 -07001503 VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008, /// Allows image views to have different format than the base image
1504 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 -08001505
Jesse Hallad250842017-03-10 18:35:38 -08001506 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08001507 VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 0x00000020,
Jesse Hallad250842017-03-10 18:35:38 -08001508
1509 //@extension("VK_KHX_device_group") // 61
1510 VK_IMAGE_CREATE_BIND_SFR_BIT_KHX = 0x00000040,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001511}
1512
Jesse Hallb00daad2015-11-29 19:46:20 -08001513/// Image view creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001514type VkFlags VkImageViewCreateFlags
Jesse Hallb00daad2015-11-29 19:46:20 -08001515//bitfield VkImageViewCreateFlagBits {
1516//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001517
1518/// Pipeline creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001519type VkFlags VkPipelineCreateFlags
1520bitfield VkPipelineCreateFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001521 VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
1522 VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
1523 VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
Jesse Hallad250842017-03-10 18:35:38 -08001524
1525 //@extension("VK_KHX_device_group") // 61
1526 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX = 0x00000008,
1527 VK_PIPELINE_CREATE_DISPATCH_BASE_KHX = 0x00000010,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001528}
1529
Jesse Hall65ab5522015-11-30 00:07:16 -08001530/// Color component flags
1531type VkFlags VkColorComponentFlags
1532bitfield VkColorComponentFlagBits {
1533 VK_COLOR_COMPONENT_R_BIT = 0x00000001,
1534 VK_COLOR_COMPONENT_G_BIT = 0x00000002,
1535 VK_COLOR_COMPONENT_B_BIT = 0x00000004,
1536 VK_COLOR_COMPONENT_A_BIT = 0x00000008,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001537}
1538
1539/// Fence creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001540type VkFlags VkFenceCreateFlags
1541bitfield VkFenceCreateFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001542 VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
1543}
1544
1545/// Semaphore creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001546type VkFlags VkSemaphoreCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001547//bitfield VkSemaphoreCreateFlagBits {
1548//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001549
1550/// Format capability flags
Jesse Halld8bade02015-11-24 10:24:18 -08001551type VkFlags VkFormatFeatureFlags
1552bitfield VkFormatFeatureFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001553 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001, /// Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
1554 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002, /// Format can be used for storage images (STORAGE_IMAGE descriptor type)
1555 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004, /// Format supports atomic operations in case it's used for storage images
1556 VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008, /// Format can be used for uniform texel buffers (TBOs)
1557 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010, /// Format can be used for storage texel buffers (IBOs)
1558 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020, /// Format supports atomic operations in case it's used for storage texel buffers
1559 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040, /// Format can be used for vertex buffers (VBOs)
1560 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080, /// Format can be used for color attachment images
1561 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100, /// Format supports blending in case it's used for color attachment images
1562 VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200, /// Format can be used for depth/stencil attachment images
Jesse Hall3fbc8562015-11-29 22:10:52 -08001563 VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400, /// Format can be used as the source image of blits with vkCommandBlitImage
1564 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 -08001565 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
Jesse Hall26763382016-05-20 07:13:52 -07001566
Jesse Hallad250842017-03-10 18:35:38 -08001567 //@extension("VK_IMG_filter_cubic") // 16
Jesse Hall26763382016-05-20 07:13:52 -07001568 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001569
Jesse Hallad250842017-03-10 18:35:38 -08001570 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08001571 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 0x00004000,
1572 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 0x00008000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001573}
1574
1575/// Query control flags
Jesse Halld8bade02015-11-24 10:24:18 -08001576type VkFlags VkQueryControlFlags
1577bitfield VkQueryControlFlagBits {
Jesse Hall65ab5522015-11-30 00:07:16 -08001578 VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001579}
1580
1581/// Query result flags
Jesse Halld8bade02015-11-24 10:24:18 -08001582type VkFlags VkQueryResultFlags
1583bitfield VkQueryResultFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001584 VK_QUERY_RESULT_64_BIT = 0x00000001, /// Results of the queries are written to the destination buffer as 64-bit values
1585 VK_QUERY_RESULT_WAIT_BIT = 0x00000002, /// Results of the queries are waited on before proceeding with the result copy
1586 VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, /// Besides the results of the query, the availability of the results is also written
1587 VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008, /// Copy the partial results of the query even if the final results aren't available
1588}
1589
1590/// Shader module creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001591type VkFlags VkShaderModuleCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001592//bitfield VkShaderModuleCreateFlagBits {
1593//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001594
Jesse Halld27f6aa2015-08-15 17:58:48 -07001595/// Event creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001596type VkFlags VkEventCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001597//bitfield VkEventCreateFlagBits {
1598//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001599
Jesse Halla15a4bf2015-11-19 22:48:02 -08001600/// Command buffer usage flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08001601type VkFlags VkCommandBufferUsageFlags
1602bitfield VkCommandBufferUsageFlagBits {
1603 VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
1604 VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
1605 VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001606}
1607
1608/// Pipeline statistics flags
Jesse Halld8bade02015-11-24 10:24:18 -08001609type VkFlags VkQueryPipelineStatisticFlags
1610bitfield VkQueryPipelineStatisticFlagBits {
Jesse Hallae38f732015-11-19 21:32:50 -08001611 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001, /// Optional
1612 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002, /// Optional
1613 VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004, /// Optional
1614 VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008, /// Optional
1615 VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010, /// Optional
1616 VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020, /// Optional
1617 VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040, /// Optional
1618 VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080, /// Optional
1619 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100, /// Optional
1620 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200, /// Optional
1621 VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400, /// Optional
Jesse Halld27f6aa2015-08-15 17:58:48 -07001622}
1623
1624/// Memory mapping flags
Jesse Halld8bade02015-11-24 10:24:18 -08001625type VkFlags VkMemoryMapFlags
Jesse Halla6429252015-11-29 18:59:42 -08001626//bitfield VkMemoryMapFlagBits {
1627//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001628
1629/// Bitfield of image aspects
Jesse Halld8bade02015-11-24 10:24:18 -08001630type VkFlags VkImageAspectFlags
1631bitfield VkImageAspectFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001632 VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
1633 VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
1634 VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
1635 VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
1636}
1637
1638/// Sparse memory bind flags
Jesse Halld8bade02015-11-24 10:24:18 -08001639type VkFlags VkSparseMemoryBindFlags
Jesse Hall091ed9e2015-11-30 00:55:29 -08001640bitfield VkSparseMemoryBindFlagBits {
1641 VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
1642}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001643
1644/// Sparse image memory requirements flags
Jesse Halld8bade02015-11-24 10:24:18 -08001645type VkFlags VkSparseImageFormatFlags
1646bitfield VkSparseImageFormatFlagBits {
Jesse Hallb00daad2015-11-29 19:46:20 -08001647 VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001, /// Image uses a single miptail region for all array slices
1648 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.
1649 VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004, /// Image uses a non-standard sparse block size
Jesse Halld27f6aa2015-08-15 17:58:48 -07001650}
1651
1652/// Pipeline stages
Jesse Halld8bade02015-11-24 10:24:18 -08001653type VkFlags VkPipelineStageFlags
1654bitfield VkPipelineStageFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001655 VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001, /// Before subsequent commands are processed
1656 VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002, /// Draw/DispatchIndirect command fetch
1657 VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004, /// Vertex/index fetch
1658 VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008, /// Vertex shading
Jesse Hallae38f732015-11-19 21:32:50 -08001659 VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010, /// Tessellation control shading
1660 VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020, /// Tessellation evaluation shading
Jesse Halld27f6aa2015-08-15 17:58:48 -07001661 VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040, /// Geometry shading
1662 VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080, /// Fragment shading
1663 VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100, /// Early fragment (depth/stencil) tests
1664 VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200, /// Late fragment (depth/stencil) tests
1665 VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400, /// Color attachment writes
1666 VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800, /// Compute shading
1667 VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000, /// Transfer/copy operations
Jesse Hall543a7ff2016-01-08 16:38:30 -08001668 VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
1669 VK_PIPELINE_STAGE_HOST_BIT = 0x00004000, /// Indicates host (CPU) is a source/sink of the dependency
Jesse Halld27f6aa2015-08-15 17:58:48 -07001670
Jesse Hall543a7ff2016-01-08 16:38:30 -08001671 VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000, /// All stages of the graphics pipeline
1672 VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000, /// All graphics, compute, copy, and transition commands
Chris Forbes289cb792016-12-30 15:03:55 +13001673
Jesse Hallad250842017-03-10 18:35:38 -08001674 //@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001675 VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001676}
1677
1678/// Render pass attachment description flags
Jesse Halld8bade02015-11-24 10:24:18 -08001679type VkFlags VkAttachmentDescriptionFlags
1680bitfield VkAttachmentDescriptionFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001681 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 -07001682}
1683
1684/// Subpass description flags
Jesse Halld8bade02015-11-24 10:24:18 -08001685type VkFlags VkSubpassDescriptionFlags
1686bitfield VkSubpassDescriptionFlagBits {
Jesse Hallad250842017-03-10 18:35:38 -08001687 //@extension("VK_NVX_multiview_per_view_attributes") // 98
1688 VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001,
1689 VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001690}
1691
1692/// Command pool creation flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08001693type VkFlags VkCommandPoolCreateFlags
1694bitfield VkCommandPoolCreateFlagBits {
1695 VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001, /// Command buffers have a short lifetime
1696 VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002, /// Command buffers may release their memory individually
Jesse Halld27f6aa2015-08-15 17:58:48 -07001697}
1698
1699/// Command pool reset flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08001700type VkFlags VkCommandPoolResetFlags
1701bitfield VkCommandPoolResetFlagBits {
1702 VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the pool
Jesse Halld27f6aa2015-08-15 17:58:48 -07001703}
1704
Jesse Hall3fbc8562015-11-29 22:10:52 -08001705type VkFlags VkCommandBufferResetFlags
1706bitfield VkCommandBufferResetFlagBits {
1707 VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the buffer
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001708}
1709
Jesse Halld8bade02015-11-24 10:24:18 -08001710type VkFlags VkSampleCountFlags
1711bitfield VkSampleCountFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001712 VK_SAMPLE_COUNT_1_BIT = 0x00000001,
1713 VK_SAMPLE_COUNT_2_BIT = 0x00000002,
1714 VK_SAMPLE_COUNT_4_BIT = 0x00000004,
1715 VK_SAMPLE_COUNT_8_BIT = 0x00000008,
1716 VK_SAMPLE_COUNT_16_BIT = 0x00000010,
1717 VK_SAMPLE_COUNT_32_BIT = 0x00000020,
1718 VK_SAMPLE_COUNT_64_BIT = 0x00000040,
1719}
1720
Jesse Halld8bade02015-11-24 10:24:18 -08001721type VkFlags VkStencilFaceFlags
1722bitfield VkStencilFaceFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001723 VK_STENCIL_FACE_FRONT_BIT = 0x00000001, /// Front face
1724 VK_STENCIL_FACE_BACK_BIT = 0x00000002, /// Back face
Jesse Hallc7467b72015-11-29 21:05:26 -08001725 VK_STENCIL_FRONT_AND_BACK = 0x00000003,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001726}
1727
Jesse Halla6429252015-11-29 18:59:42 -08001728/// Instance creation flags
1729type VkFlags VkInstanceCreateFlags
1730//bitfield VkInstanceCreateFlagBits {
1731//}
1732
1733/// Device creation flags
1734type VkFlags VkDeviceCreateFlags
1735//bitfield VkDeviceCreateFlagBits {
1736//}
1737
1738/// Device queue creation flags
1739type VkFlags VkDeviceQueueCreateFlags
1740//bitfield VkDeviceQueueCreateFlagBits {
1741//}
1742
1743/// Query pool creation flags
1744type VkFlags VkQueryPoolCreateFlags
1745//bitfield VkQueryPoolCreateFlagBits {
1746//}
1747
1748/// Buffer view creation flags
1749type VkFlags VkBufferViewCreateFlags
1750//bitfield VkBufferViewCreateFlagBits {
1751//}
1752
1753/// Pipeline cache creation flags
1754type VkFlags VkPipelineCacheCreateFlags
1755//bitfield VkPipelineCacheCreateFlagBits {
1756//}
1757
1758/// Pipeline shader stage creation flags
1759type VkFlags VkPipelineShaderStageCreateFlags
1760//bitfield VkPipelineShaderStageCreateFlagBits {
1761//}
1762
1763/// Descriptor set layout creation flags
1764type VkFlags VkDescriptorSetLayoutCreateFlags
Jesse Hallad250842017-03-10 18:35:38 -08001765bitfield VkDescriptorSetLayoutCreateFlagBits {
1766 //@extension("VK_KHR_push_descriptor") // 81
1767 VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
1768}
Jesse Halla6429252015-11-29 18:59:42 -08001769
1770/// Pipeline vertex input state creation flags
1771type VkFlags VkPipelineVertexInputStateCreateFlags
1772//bitfield VkPipelineVertexInputStateCreateFlagBits {
1773//}
1774
1775/// Pipeline input assembly state creation flags
1776type VkFlags VkPipelineInputAssemblyStateCreateFlags
1777//bitfield VkPipelineInputAssemblyStateCreateFlagBits {
1778//}
1779
1780/// Tessellation state creation flags
1781type VkFlags VkPipelineTessellationStateCreateFlags
1782//bitfield VkPipelineTessellationStateCreateFlagBits {
1783//}
1784
1785/// Viewport state creation flags
1786type VkFlags VkPipelineViewportStateCreateFlags
1787//bitfield VkPipelineViewportStateCreateFlagBits {
1788//}
1789
Jesse Hall3fbc8562015-11-29 22:10:52 -08001790/// Rasterization state creation flags
1791type VkFlags VkPipelineRasterizationStateCreateFlags
1792//bitfield VkPipelineRasterizationStateCreateFlagBits {
Jesse Halla6429252015-11-29 18:59:42 -08001793//}
1794
1795/// Multisample state creation flags
1796type VkFlags VkPipelineMultisampleStateCreateFlags
1797//bitfield VkPipelineMultisampleStateCreateFlagBits {
1798//}
1799
1800/// Color blend state creation flags
1801type VkFlags VkPipelineColorBlendStateCreateFlags
1802//bitfield VkPipelineColorBlendStateCreateFlagBits {
1803//}
1804
1805/// Depth/stencil state creation flags
1806type VkFlags VkPipelineDepthStencilStateCreateFlags
1807//bitfield VkPipelineDepthStencilStateCreateFlagBits {
1808//}
1809
1810/// Dynamic state creation flags
1811type VkFlags VkPipelineDynamicStateCreateFlags
1812//bitfield VkPipelineDynamicStateCreateFlagBits {
1813//}
1814
1815/// Pipeline layout creation flags
1816type VkFlags VkPipelineLayoutCreateFlags
1817//bitfield VkPipelineLayoutCreateFlagBits {
1818//}
1819
1820/// Sampler creation flags
1821type VkFlags VkSamplerCreateFlags
1822//bitfield VkSamplerCreateFlagBits {
1823//}
1824
1825/// Render pass creation flags
1826type VkFlags VkRenderPassCreateFlags
1827//bitfield VkRenderPassCreateFlagBits {
1828//}
1829
1830/// Framebuffer creation flags
1831type VkFlags VkFramebufferCreateFlags
1832//bitfield VkFramebufferCreateFlagBits {
1833//}
1834
Jesse Halldc6d36c2015-11-29 19:12:15 -08001835/// Dependency flags
1836type VkFlags VkDependencyFlags
1837bitfield VkDependencyFlagBits {
1838 VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
Jesse Hallad250842017-03-10 18:35:38 -08001839
1840 //@extension("VK_KHX_multiview") // 54
1841 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX = 0x00000002,
1842
1843 //@extension("VK_KHX_device_group") // 61
1844 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX = 0x00000004,
Jesse Halldc6d36c2015-11-29 19:12:15 -08001845}
1846
Jesse Hallc7467b72015-11-29 21:05:26 -08001847/// Cull mode flags
1848type VkFlags VkCullModeFlags
1849bitfield VkCullModeFlagBits {
1850 VK_CULL_MODE_NONE = 0x00000000,
1851 VK_CULL_MODE_FRONT_BIT = 0x00000001,
1852 VK_CULL_MODE_BACK_BIT = 0x00000002,
1853 VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
1854}
1855
Jesse Hallad250842017-03-10 18:35:38 -08001856@extension("VK_KHR_surface") // 1
Jesse Halld8bade02015-11-24 10:24:18 -08001857type VkFlags VkSurfaceTransformFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08001858@extension("VK_KHR_surface") // 1
Jesse Halld8bade02015-11-24 10:24:18 -08001859bitfield VkSurfaceTransformFlagBitsKHR {
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001860 VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
Jesse Hall9ba8bc82015-11-30 16:22:16 -08001861 VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
1862 VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
1863 VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
1864 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
1865 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
1866 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
1867 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
1868 VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
Michael Lentine88594d72015-11-12 12:49:45 -08001869}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001870
Jesse Hallad250842017-03-10 18:35:38 -08001871@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08001872type VkFlags VkCompositeAlphaFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08001873@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08001874bitfield VkCompositeAlphaFlagBitsKHR {
1875 VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
1876 VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
1877 VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
1878 VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
1879}
1880
Jesse Hallad250842017-03-10 18:35:38 -08001881@extension("VK_KHR_swapchain") // 2
Jesse Hallf4ab2b12015-11-30 16:04:55 -08001882type VkFlags VkSwapchainCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08001883@extension("VK_KHR_swapchain") // 2
1884bitfield VkSwapchainCreateFlagBitsKHR {
1885 //@extension("VK_KHX_device_group") // 61
1886 VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX = 0x00000001,
1887}
Jesse Hallf4ab2b12015-11-30 16:04:55 -08001888
Jesse Hallad250842017-03-10 18:35:38 -08001889@extension("VK_KHR_display") // 3
Jesse Halld8bade02015-11-24 10:24:18 -08001890type VkFlags VkDisplayPlaneAlphaFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08001891@extension("VK_KHR_display") // 3
Jesse Halld8bade02015-11-24 10:24:18 -08001892bitfield VkDisplayPlaneAlphaFlagBitsKHR {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08001893 VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
1894 VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
1895 VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
1896 VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
Jesse Hall1356b0d2015-11-23 17:24:58 -08001897}
1898
Jesse Hallad250842017-03-10 18:35:38 -08001899@extension("VK_KHR_display") // 3
Jesse Hallf4ab2b12015-11-30 16:04:55 -08001900type VkFlags VkDisplaySurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08001901//@extension("VK_KHR_display") // 3
Jesse Hallf4ab2b12015-11-30 16:04:55 -08001902//bitfield VkDisplaySurfaceCreateFlagBitsKHR {
1903//}
1904
Jesse Hallad250842017-03-10 18:35:38 -08001905@extension("VK_KHR_display") // 3
Jesse Hall9ba8bc82015-11-30 16:22:16 -08001906type VkFlags VkDisplayModeCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08001907//@extension("VK_KHR_display") // 3
Jesse Hall9ba8bc82015-11-30 16:22:16 -08001908//bitfield VkDisplayModeCreateFlagBitsKHR {
1909//}
1910
Jesse Hallad250842017-03-10 18:35:38 -08001911@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001912type VkFlags VkXlibSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08001913//@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001914//bitfield VkXlibSurfaceCreateFlagBitsKHR {
1915//}
1916
Jesse Hallad250842017-03-10 18:35:38 -08001917@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001918type VkFlags VkXcbSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08001919//@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001920//bitfield VkXcbSurfaceCreateFlagBitsKHR {
1921//}
1922
Jesse Hallad250842017-03-10 18:35:38 -08001923@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001924type VkFlags VkWaylandSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08001925//@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001926//bitfield VkWaylandSurfaceCreateFlagBitsKHR {
1927//}
1928
Jesse Hallad250842017-03-10 18:35:38 -08001929@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001930type VkFlags VkMirSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08001931//@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001932//bitfield VkMirSurfaceCreateFlagBitsKHR {
1933//}
1934
Jesse Hallad250842017-03-10 18:35:38 -08001935@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001936type VkFlags VkAndroidSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08001937//@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001938//bitfield VkAndroidSurfaceCreateFlagBitsKHR {
1939//}
1940
Jesse Hallad250842017-03-10 18:35:38 -08001941@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001942type VkFlags VkWin32SurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08001943//@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001944//bitfield VkWin32SurfaceCreateFlagBitsKHR {
1945//}
1946
Jesse Hallad250842017-03-10 18:35:38 -08001947@extension("VK_ANDROID_native_buffer") // 11
Jesse Hall889cd9a2017-02-25 22:12:23 -08001948type VkFlags VkSwapchainImageUsageFlagsANDROID
Jesse Hallad250842017-03-10 18:35:38 -08001949@extension("VK_ANDROID_native_buffer") // 11
Jesse Hall889cd9a2017-02-25 22:12:23 -08001950bitfield VkSwapchainImageUsageFlagBitsANDROID {
1951 VK_SWAPCHAIN_IMAGE_USAGE_FLAGS_SHARED_BIT_ANDROID = 0x00000001,
1952}
1953
Jesse Hallad250842017-03-10 18:35:38 -08001954@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08001955type VkFlags VkDebugReportFlagsEXT
Jesse Hallad250842017-03-10 18:35:38 -08001956@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08001957bitfield VkDebugReportFlagBitsEXT {
Jesse Halle2948d82016-02-25 04:19:32 -08001958 VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,
1959 VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002,
1960 VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004,
Jesse Hall715b86a2016-01-16 16:34:29 -08001961 VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008,
1962 VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010,
1963}
1964
Jesse Hallad250842017-03-10 18:35:38 -08001965@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13001966type VkFlags VkExternalMemoryHandleTypeFlagsNV
Jesse Hallad250842017-03-10 18:35:38 -08001967@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13001968bitfield VkExternalMemoryHandleTypeFlagBitsNV {
Jesse Halleb02c472017-02-24 15:13:45 -08001969 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,
1970 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,
1971 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,
1972 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,
Chris Forbes289cb792016-12-30 15:03:55 +13001973}
1974
Jesse Hallad250842017-03-10 18:35:38 -08001975@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13001976type VkFlags VkExternalMemoryFeatureFlagsNV
Jesse Hallad250842017-03-10 18:35:38 -08001977@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13001978bitfield VkExternalMemoryFeatureFlagBitsNV {
Jesse Halleb02c472017-02-24 15:13:45 -08001979 VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001,
1980 VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002,
1981 VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004,
Chris Forbes289cb792016-12-30 15:03:55 +13001982}
1983
Jesse Hallad250842017-03-10 18:35:38 -08001984@extension("VK_KHX_device_group") // 61
1985type VkFlags VkPeerMemoryFeatureFlagsKHX
1986@extension("VK_KHX_device_group") // 61
1987bitfield VkPeerMemoryFeatureFlagBitsKHX {
1988 VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX = 0x00000001,
1989 VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX = 0x00000002,
1990 VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX = 0x00000004,
1991 VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX = 0x00000008,
1992}
1993
1994@extension("VK_KHX_device_group") // 61
1995type VkFlags VkMemoryAllocateFlagsKHX
1996@extension("VK_KHX_device_group") // 61
1997bitfield VkMemoryAllocateFlagBitsKHX {
1998 VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX = 0x00000001,
1999}
2000
2001@extension("VK_KHX_device_group") // 61
2002type VkFlags VkDeviceGroupPresentModeFlagsKHX
2003@extension("VK_KHX_device_group") // 61
2004bitfield VkDeviceGroupPresentModeFlagBitsKHX {
2005 VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX = 0x00000001,
2006 VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX = 0x00000002,
2007 VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX = 0x00000004,
2008 VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX = 0x00000008,
2009}
2010
2011@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08002012type VkFlags VkViSurfaceCreateFlagsNN
Jesse Hallad250842017-03-10 18:35:38 -08002013//@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08002014//bitfield VkViSurfaceCreateFlagBitsNN {
2015//}
2016
Jesse Hallad250842017-03-10 18:35:38 -08002017@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08002018type VkFlags VkCommandPoolTrimFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002019//@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08002020//bitfield VkCommandPoolTrimFlagBitsKHR {
2021//}
2022
Jesse Hallad250842017-03-10 18:35:38 -08002023@extension("VK_KHX_external_memory_capabilities") // 72
2024type VkFlags VkExternalMemoryHandleTypeFlagsKHX
2025@extension("VK_KHX_external_memory_capabilities") // 72
2026bitfield VkExternalMemoryHandleTypeFlagBitsKHX {
2027 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHX = 0x00000001,
2028 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX = 0x00000002,
2029 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX = 0x00000004,
2030 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHX = 0x00000008,
2031 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHX = 0x00000010,
2032 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHX = 0x00000020,
2033 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHX = 0x00000040,
2034}
2035
2036@extension("VK_KHX_external_memory_capabilities") // 72
2037type VkFlags VkExternalMemoryFeatureFlagsKHX
2038@extension("VK_KHX_external_memory_capabilities") // 72
2039bitfield VkExternalMemoryFeatureFlagBitsKHX {
2040 VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHX = 0x00000001,
2041 VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHX = 0x00000002,
2042 VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHX = 0x00000004,
2043}
2044
2045@extension("VK_KHX_external_semaphore_capabilities") // 77
2046type VkFlags VkExternalSemaphoreHandleTypeFlagsKHX
2047@extension("VK_KHX_external_semaphore_capabilities") // 77
2048bitfield VkExternalSemaphoreHandleTypeFlagBitsKHX {
2049 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHX = 0x00000001
2050 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX = 0x00000002
2051 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX = 0x00000004
2052 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHX = 0x00000008
2053 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHX = 0x00000010
2054}
2055
2056@extension("VK_KHX_external_semaphore_capabilities") // 77
2057type VkFlags VkExternalSemaphoreFeatureFlagsKHX
2058@extension("VK_KHX_external_semaphore_capabilities") // 77
2059bitfield VkExternalSemaphoreFeatureFlagBitsKHX {
2060 VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHX = 0x00000001,
2061 VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHX = 0x00000002,
2062}
2063
2064@extension("VK_KHR_descriptor_update_template") // 86
2065type VkFlags VkDescriptorUpdateTemplateCreateFlagsKHR
2066//@extension("VK_KHR_descriptor_update_template") // 86
2067//bitfield VkDescriptorUpdateTemplateCreateFlagBitsKHR {
2068//}
2069
2070@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002071type VkFlags VkIndirectCommandsLayoutUsageFlagsNVX
Jesse Hallad250842017-03-10 18:35:38 -08002072@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002073bitfield VkIndirectCommandsLayoutUsageFlagBitsNVX {
Jesse Halleb02c472017-02-24 15:13:45 -08002074 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = 0x00000001,
2075 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = 0x00000002,
2076 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = 0x00000004,
2077 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = 0x00000008,
Chris Forbes289cb792016-12-30 15:03:55 +13002078}
2079
Jesse Hallad250842017-03-10 18:35:38 -08002080@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002081type VkFlags VkObjectEntryUsageFlagsNVX
Jesse Hallad250842017-03-10 18:35:38 -08002082@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002083bitfield VkObjectEntryUsageFlagBitsNVX {
Jesse Halleb02c472017-02-24 15:13:45 -08002084 VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = 0x00000001,
2085 VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = 0x00000002,
Chris Forbes289cb792016-12-30 15:03:55 +13002086}
2087
Jesse Hallad250842017-03-10 18:35:38 -08002088@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08002089type VkFlags VkSurfaceCounterFlagsEXT
Jesse Hallad250842017-03-10 18:35:38 -08002090@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08002091bitfield VkSurfaceCounterFlagBitsEXT {
2092 VK_SURFACE_COUNTER_VBLANK_EXT = 0x00000001,
2093}
2094
Jesse Hallad250842017-03-10 18:35:38 -08002095@extension("VK_NV_viewport_swizzle") // 99
2096type VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV
2097//@extension("VK_NV_viewport_swizzle") // 99
2098//bitfield VkPipelineViewportSwizzleStateCreateFlagBitsNV {
2099//}
2100
2101@extension("VK_EXT_discard_rectangles") // 100
2102type VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT
2103//@extension("VK_EXT_discard_rectangles") // 100
2104//bitfield VkPipelineDiscardRectangleStateCreateFlagBitsEXT {
2105//}
2106
2107@extension("VK_MVK_ios_surface") // 123
2108type VkFlags VkIOSSurfaceCreateFlagsMVK
2109//@extension("VK_MVK_ios_surface") // 123
2110//bitfield VkIOSSurfaceCreateFlagBitsMVK {
2111//}
2112
2113@extension("VK_MVK_macos_surface") // 124
2114type VkFlags VkMacOSSurfaceCreateFlagsMVK
2115//@extension("VK_MVK_macos_surface") // 124
2116//bitfield VkMacOSSurfaceCreateFlagBitsMVK {
2117//}
2118
Jesse Halld27f6aa2015-08-15 17:58:48 -07002119//////////////////
2120// Structures //
2121//////////////////
2122
2123class VkOffset2D {
2124 s32 x
2125 s32 y
2126}
2127
2128class VkOffset3D {
2129 s32 x
2130 s32 y
2131 s32 z
2132}
2133
2134class VkExtent2D {
Jesse Hall3dd678a2016-01-08 21:52:01 -08002135 u32 width
2136 u32 height
Jesse Halld27f6aa2015-08-15 17:58:48 -07002137}
2138
2139class VkExtent3D {
Jesse Hall3dd678a2016-01-08 21:52:01 -08002140 u32 width
2141 u32 height
2142 u32 depth
Jesse Halld27f6aa2015-08-15 17:58:48 -07002143}
2144
2145class VkViewport {
Jesse Hall65ab5522015-11-30 00:07:16 -08002146 f32 x
2147 f32 y
Jesse Halld27f6aa2015-08-15 17:58:48 -07002148 f32 width
2149 f32 height
2150 f32 minDepth
2151 f32 maxDepth
2152}
2153
2154class VkRect2D {
2155 VkOffset2D offset
2156 VkExtent2D extent
2157}
2158
Jesse Halla15a4bf2015-11-19 22:48:02 -08002159class VkClearRect {
2160 VkRect2D rect
2161 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002162 u32 layerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002163}
2164
Jesse Hall65ab5522015-11-30 00:07:16 -08002165class VkComponentMapping {
2166 VkComponentSwizzle r
2167 VkComponentSwizzle g
2168 VkComponentSwizzle b
2169 VkComponentSwizzle a
Jesse Halld27f6aa2015-08-15 17:58:48 -07002170}
2171
2172class VkPhysicalDeviceProperties {
2173 u32 apiVersion
2174 u32 driverVersion
Jesse Hall65ab5522015-11-30 00:07:16 -08002175 u32 vendorID
2176 u32 deviceID
Jesse Halld27f6aa2015-08-15 17:58:48 -07002177 VkPhysicalDeviceType deviceType
Jesse Hall65ab5522015-11-30 00:07:16 -08002178 char[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE] deviceName
2179 u8[VK_UUID_SIZE] pipelineCacheUUID
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002180 VkPhysicalDeviceLimits limits
2181 VkPhysicalDeviceSparseProperties sparseProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07002182}
2183
2184class VkExtensionProperties {
Jesse Hall65ab5522015-11-30 00:07:16 -08002185 char[VK_MAX_EXTENSION_NAME_SIZE] extensionName /// extension name
Jesse Halld27f6aa2015-08-15 17:58:48 -07002186 u32 specVersion /// version of the extension specification implemented
2187}
2188
2189class VkLayerProperties {
Jesse Hall65ab5522015-11-30 00:07:16 -08002190 char[VK_MAX_EXTENSION_NAME_SIZE] layerName /// layer name
Jesse Hall3fbc8562015-11-29 22:10:52 -08002191 u32 specVersion /// version of the layer specification implemented
2192 u32 implementationVersion /// build or release version of the layer's library
Jesse Hall65ab5522015-11-30 00:07:16 -08002193 char[VK_MAX_DESCRIPTION_SIZE] description /// Free-form description of the layer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002194}
2195
Jesse Halla366a512015-11-19 22:30:07 -08002196class VkSubmitInfo {
Jesse Hall03b6fe12015-11-24 12:44:21 -08002197 VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_SUBMIT_INFO
2198 const void* pNext /// Next structure in chain
2199 u32 waitSemaphoreCount
Jesse Halla366a512015-11-19 22:30:07 -08002200 const VkSemaphore* pWaitSemaphores
Jesse Hall543a7ff2016-01-08 16:38:30 -08002201 const VkPipelineStageFlags* pWaitDstStageMask
Jesse Hall03b6fe12015-11-24 12:44:21 -08002202 u32 commandBufferCount
Jesse Hall3fbc8562015-11-29 22:10:52 -08002203 const VkCommandBuffer* pCommandBuffers
Jesse Hall03b6fe12015-11-24 12:44:21 -08002204 u32 signalSemaphoreCount
Jesse Halla366a512015-11-19 22:30:07 -08002205 const VkSemaphore* pSignalSemaphores
2206}
2207
Jesse Halld27f6aa2015-08-15 17:58:48 -07002208class VkApplicationInfo {
2209 VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_APPLICATION_INFO
2210 const void* pNext /// Next structure in chain
Jesse Hall3fbc8562015-11-29 22:10:52 -08002211 const char* pApplicationName
2212 u32 applicationVersion
Jesse Halld27f6aa2015-08-15 17:58:48 -07002213 const char* pEngineName
2214 u32 engineVersion
2215 u32 apiVersion
2216}
2217
Jesse Hall3fbc8562015-11-29 22:10:52 -08002218class VkAllocationCallbacks {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002219 void* pUserData
Jesse Hall3fbc8562015-11-29 22:10:52 -08002220 PFN_vkAllocationFunction pfnAllocation
2221 PFN_vkReallocationFunction pfnReallocation
Jesse Halld27f6aa2015-08-15 17:58:48 -07002222 PFN_vkFreeFunction pfnFree
Jesse Hall3fbc8562015-11-29 22:10:52 -08002223 PFN_vkInternalAllocationNotification pfnInternalAllocation
Jesse Hall03b6fe12015-11-24 12:44:21 -08002224 PFN_vkInternalFreeNotification pfnInternalFree
Jesse Halld27f6aa2015-08-15 17:58:48 -07002225}
2226
2227class VkDeviceQueueCreateInfo {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002228 VkStructureType sStype /// Should be VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
2229 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002230 VkDeviceQueueCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002231 u32 queueFamilyIndex
Jesse Halldba27f72015-11-30 14:25:46 -08002232 u32 queueCount
Jesse Hallfbf97b02015-11-20 14:17:03 -08002233 const f32* pQueuePriorities
Jesse Halld27f6aa2015-08-15 17:58:48 -07002234}
2235
2236class VkDeviceCreateInfo {
2237 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO
2238 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002239 VkDeviceCreateFlags flags
Jesse Halldba27f72015-11-30 14:25:46 -08002240 u32 queueCreateInfoCount
2241 const VkDeviceQueueCreateInfo* pQueueCreateInfos
Jesse Hall3dd678a2016-01-08 21:52:01 -08002242 u32 enabledLayerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002243 const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled
Jesse Hall3dd678a2016-01-08 21:52:01 -08002244 u32 enabledExtensionCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002245 const char* const* ppEnabledExtensionNames
2246 const VkPhysicalDeviceFeatures* pEnabledFeatures
Jesse Halld27f6aa2015-08-15 17:58:48 -07002247}
2248
2249class VkInstanceCreateInfo {
2250 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
2251 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002252 VkInstanceCreateFlags flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08002253 const VkApplicationInfo* pApplicationInfo
Jesse Hall3dd678a2016-01-08 21:52:01 -08002254 u32 enabledLayerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002255 const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled
Jesse Hall3dd678a2016-01-08 21:52:01 -08002256 u32 enabledExtensionCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002257 const char* const* ppEnabledExtensionNames /// Extension names to be enabled
2258}
2259
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002260class VkQueueFamilyProperties {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002261 VkQueueFlags queueFlags /// Queue flags
2262 u32 queueCount
Jesse Hallacfa5342015-11-19 21:51:33 -08002263 u32 timestampValidBits
Jesse Hall65ab5522015-11-30 00:07:16 -08002264 VkExtent3D minImageTransferGranularity
Jesse Halld27f6aa2015-08-15 17:58:48 -07002265}
2266
2267class VkPhysicalDeviceMemoryProperties {
2268 u32 memoryTypeCount
2269 VkMemoryType[VK_MAX_MEMORY_TYPES] memoryTypes
2270 u32 memoryHeapCount
2271 VkMemoryHeap[VK_MAX_MEMORY_HEAPS] memoryHeaps
2272}
2273
Jesse Hall3fbc8562015-11-29 22:10:52 -08002274class VkMemoryAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002275 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002276 const void* pNext /// Pointer to next structure
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002277 VkDeviceSize allocationSize /// Size of memory allocation
Jesse Halld27f6aa2015-08-15 17:58:48 -07002278 u32 memoryTypeIndex /// Index of the of the memory type to allocate from
2279}
2280
2281class VkMemoryRequirements {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002282 VkDeviceSize size /// Specified in bytes
2283 VkDeviceSize alignment /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002284 u32 memoryTypeBits /// Bitfield of the allowed memory type indices into memoryTypes[] for this object
2285}
2286
2287class VkSparseImageFormatProperties {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002288 VkImageAspectFlagBits aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002289 VkExtent3D imageGranularity
2290 VkSparseImageFormatFlags flags
2291}
2292
2293class VkSparseImageMemoryRequirements {
Jesse Hallb00daad2015-11-29 19:46:20 -08002294 VkSparseImageFormatProperties formatProperties
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002295 u32 imageMipTailFirstLod
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002296 VkDeviceSize imageMipTailSize /// Specified in bytes, must be a multiple of image block size / alignment
2297 VkDeviceSize imageMipTailOffset /// Specified in bytes, must be a multiple of image block size / alignment
2298 VkDeviceSize imageMipTailStride /// Specified in bytes, must be a multiple of image block size / alignment
Jesse Halld27f6aa2015-08-15 17:58:48 -07002299}
2300
2301class VkMemoryType {
2302 VkMemoryPropertyFlags propertyFlags /// Memory properties of this memory type
2303 u32 heapIndex /// Index of the memory heap allocations of this memory type are taken from
2304}
2305
2306class VkMemoryHeap {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002307 VkDeviceSize size /// Available memory in the heap
Jesse Halld27f6aa2015-08-15 17:58:48 -07002308 VkMemoryHeapFlags flags /// Flags for the heap
2309}
2310
2311class VkMappedMemoryRange {
2312 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
2313 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002314 VkDeviceMemory memory /// Mapped memory object
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002315 VkDeviceSize offset /// Offset within the mapped memory the range starts from
2316 VkDeviceSize size /// Size of the range within the mapped memory
Jesse Halld27f6aa2015-08-15 17:58:48 -07002317}
2318
2319class VkFormatProperties {
2320 VkFormatFeatureFlags linearTilingFeatures /// Format features in case of linear tiling
2321 VkFormatFeatureFlags optimalTilingFeatures /// Format features in case of optimal tiling
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002322 VkFormatFeatureFlags bufferFeatures /// Format features supported by buffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07002323}
2324
2325class VkImageFormatProperties {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002326 VkExtent3D maxExtent /// max image dimensions for this resource type
2327 u32 maxMipLevels /// max number of mipmap levels for this resource type
Jesse Halla15a4bf2015-11-19 22:48:02 -08002328 u32 maxArrayLayers /// max array layers for this resource type
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002329 VkSampleCountFlags sampleCounts /// supported sample counts for this resource type
2330 VkDeviceSize maxResourceSize /// max size (in bytes) of this resource type
2331}
2332
Jesse Halla15a4bf2015-11-19 22:48:02 -08002333class VkDescriptorImageInfo {
2334 VkSampler sampler
2335 VkImageView imageView
2336 VkImageLayout imageLayout
2337}
2338
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002339class VkDescriptorBufferInfo {
2340 VkBuffer buffer /// Buffer used for this descriptor when the descriptor is UNIFORM_BUFFER[_DYNAMIC]
2341 VkDeviceSize offset /// Base offset from buffer start in bytes to update in the descriptor set.
2342 VkDeviceSize range /// Size in bytes of the buffer resource for this descriptor update.
Jesse Halld27f6aa2015-08-15 17:58:48 -07002343}
2344
Jesse Halld27f6aa2015-08-15 17:58:48 -07002345class VkWriteDescriptorSet {
2346 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
2347 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002348 VkDescriptorSet dstSet /// Destination descriptor set
2349 u32 dstBinding /// Binding within the destination descriptor set to write
2350 u32 dstArrayElement /// Array element within the destination binding to write
Jesse Hall03b6fe12015-11-24 12:44:21 -08002351 u32 descriptorCount /// Number of descriptors to write (determines the size of the array pointed by <pDescriptors>)
Jesse Halld27f6aa2015-08-15 17:58:48 -07002352 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 -08002353 const VkDescriptorImageInfo* pImageInfo
2354 const VkDescriptorBufferInfo* pBufferInfo
2355 const VkBufferView* pTexelBufferView
Jesse Halld27f6aa2015-08-15 17:58:48 -07002356}
2357
2358class VkCopyDescriptorSet {
2359 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET
2360 const void* pNext /// Pointer to next structure
2361 VkDescriptorSet srcSet /// Source descriptor set
2362 u32 srcBinding /// Binding within the source descriptor set to copy from
2363 u32 srcArrayElement /// Array element within the source binding to copy from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002364 VkDescriptorSet dstSet /// Destination descriptor set
2365 u32 dstBinding /// Binding within the destination descriptor set to copy to
2366 u32 dstArrayElement /// Array element within the destination binding to copy to
Jesse Hall03b6fe12015-11-24 12:44:21 -08002367 u32 descriptorCount /// Number of descriptors to copy
Jesse Halld27f6aa2015-08-15 17:58:48 -07002368}
2369
2370class VkBufferCreateInfo {
2371 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
2372 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002373 VkBufferCreateFlags flags /// Buffer creation flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002374 VkDeviceSize size /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002375 VkBufferUsageFlags usage /// Buffer usage flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002376 VkSharingMode sharingMode
Jesse Hall03b6fe12015-11-24 12:44:21 -08002377 u32 queueFamilyIndexCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002378 const u32* pQueueFamilyIndices
2379}
2380
2381class VkBufferViewCreateInfo {
2382 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO
2383 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002384 VkBufferViewCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002385 VkBuffer buffer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002386 VkFormat format /// Optionally specifies format of elements
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002387 VkDeviceSize offset /// Specified in bytes
2388 VkDeviceSize range /// View size specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002389}
2390
2391class VkImageSubresource {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002392 VkImageAspectFlagBits aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002393 u32 mipLevel
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002394 u32 arrayLayer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002395}
2396
2397class VkImageSubresourceRange {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002398 VkImageAspectFlags aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002399 u32 baseMipLevel
Jesse Hall3fbc8562015-11-29 22:10:52 -08002400 u32 levelCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002401 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002402 u32 layerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002403}
2404
2405class VkMemoryBarrier {
2406 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_BARRIER
2407 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002408 VkAccessFlags srcAccessMask
2409 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002410}
2411
2412class VkBufferMemoryBarrier {
2413 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
2414 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002415 VkAccessFlags srcAccessMask
2416 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002417 u32 srcQueueFamilyIndex /// Queue family to transition ownership from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002418 u32 dstQueueFamilyIndex /// Queue family to transition ownership to
Jesse Halld27f6aa2015-08-15 17:58:48 -07002419 VkBuffer buffer /// Buffer to sync
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002420 VkDeviceSize offset /// Offset within the buffer to sync
2421 VkDeviceSize size /// Amount of bytes to sync
Jesse Halld27f6aa2015-08-15 17:58:48 -07002422}
2423
2424class VkImageMemoryBarrier {
2425 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
2426 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002427 VkAccessFlags srcAccessMask
2428 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002429 VkImageLayout oldLayout /// Current layout of the image
2430 VkImageLayout newLayout /// New layout to transition the image to
2431 u32 srcQueueFamilyIndex /// Queue family to transition ownership from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002432 u32 dstQueueFamilyIndex /// Queue family to transition ownership to
Jesse Halld27f6aa2015-08-15 17:58:48 -07002433 VkImage image /// Image to sync
2434 VkImageSubresourceRange subresourceRange /// Subresource range to sync
2435}
2436
2437class VkImageCreateInfo {
2438 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
2439 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002440 VkImageCreateFlags flags /// Image creation flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002441 VkImageType imageType
2442 VkFormat format
2443 VkExtent3D extent
2444 u32 mipLevels
Jesse Halla15a4bf2015-11-19 22:48:02 -08002445 u32 arrayLayers
Jesse Hall091ed9e2015-11-30 00:55:29 -08002446 VkSampleCountFlagBits samples
Jesse Halld27f6aa2015-08-15 17:58:48 -07002447 VkImageTiling tiling
2448 VkImageUsageFlags usage /// Image usage flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002449 VkSharingMode sharingMode /// Cross-queue-family sharing mode
Jesse Hall03b6fe12015-11-24 12:44:21 -08002450 u32 queueFamilyIndexCount /// Number of queue families to share across
Jesse Halld27f6aa2015-08-15 17:58:48 -07002451 const u32* pQueueFamilyIndices /// Array of queue family indices to share across
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002452 VkImageLayout initialLayout /// Initial image layout for all subresources
Jesse Halld27f6aa2015-08-15 17:58:48 -07002453}
2454
2455class VkSubresourceLayout {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002456 VkDeviceSize offset /// Specified in bytes
2457 VkDeviceSize size /// Specified in bytes
2458 VkDeviceSize rowPitch /// Specified in bytes
Jesse Hall543a7ff2016-01-08 16:38:30 -08002459 VkDeviceSize arrayPitch /// Specified in bytes
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002460 VkDeviceSize depthPitch /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002461}
2462
2463class VkImageViewCreateInfo {
2464 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
2465 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002466 VkImageViewCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002467 VkImage image
2468 VkImageViewType viewType
2469 VkFormat format
Jesse Hall65ab5522015-11-30 00:07:16 -08002470 VkComponentMapping components
Jesse Halld27f6aa2015-08-15 17:58:48 -07002471 VkImageSubresourceRange subresourceRange
Jesse Halld27f6aa2015-08-15 17:58:48 -07002472}
2473
2474class VkBufferCopy {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002475 VkDeviceSize srcOffset /// Specified in bytes
Jesse Hall3fbc8562015-11-29 22:10:52 -08002476 VkDeviceSize dstOffset /// Specified in bytes
Jesse Hallb00daad2015-11-29 19:46:20 -08002477 VkDeviceSize size /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002478}
2479
Jesse Halla6429252015-11-29 18:59:42 -08002480class VkSparseMemoryBind {
Jesse Hallb00daad2015-11-29 19:46:20 -08002481 VkDeviceSize resourceOffset /// Specified in bytes
2482 VkDeviceSize size /// Specified in bytes
Jesse Hall3fbc8562015-11-29 22:10:52 -08002483 VkDeviceMemory memory
2484 VkDeviceSize memoryOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002485 VkSparseMemoryBindFlags flags
2486}
2487
Jesse Halla6429252015-11-29 18:59:42 -08002488class VkSparseImageMemoryBind {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002489 VkImageSubresource subresource
2490 VkOffset3D offset
2491 VkExtent3D extent
Jesse Hall3fbc8562015-11-29 22:10:52 -08002492 VkDeviceMemory memory
2493 VkDeviceSize memoryOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002494 VkSparseMemoryBindFlags flags
2495}
2496
Jesse Halla6429252015-11-29 18:59:42 -08002497class VkSparseBufferMemoryBindInfo {
2498 VkBuffer buffer
2499 u32 bindCount
2500 const VkSparseMemoryBind* pBinds
2501}
2502
2503class VkSparseImageOpaqueMemoryBindInfo {
2504 VkImage image
2505 u32 bindCount
2506 const VkSparseMemoryBind* pBinds
2507}
2508
2509class VkSparseImageMemoryBindInfo {
2510 VkImage image
2511 u32 bindCount
2512 const VkSparseMemoryBind* pBinds
2513}
2514
2515class VkBindSparseInfo {
2516 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BIND_SPARSE_INFO
2517 const void* pNext
2518 u32 waitSemaphoreCount
2519 const VkSemaphore* pWaitSemaphores
2520 u32 numBufferBinds
2521 const VkSparseBufferMemoryBindInfo* pBufferBinds
2522 u32 numImageOpaqueBinds
2523 const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds
2524 u32 numImageBinds
2525 const VkSparseImageMemoryBindInfo* pImageBinds
2526 u32 signalSemaphoreCount
2527 const VkSemaphore* pSignalSemaphores
2528}
2529
Jesse Hall65ab5522015-11-30 00:07:16 -08002530class VkImageSubresourceLayers {
2531 VkImageAspectFlags aspectMask
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002532 u32 mipLevel
Jesse Halla15a4bf2015-11-19 22:48:02 -08002533 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002534 u32 layerCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002535}
2536
Jesse Halld27f6aa2015-08-15 17:58:48 -07002537class VkImageCopy {
Jesse Hall65ab5522015-11-30 00:07:16 -08002538 VkImageSubresourceLayers srcSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07002539 VkOffset3D srcOffset /// Specified in pixels for both compressed and uncompressed images
Jesse Hall65ab5522015-11-30 00:07:16 -08002540 VkImageSubresourceLayers dstSubresource
Jesse Hall3fbc8562015-11-29 22:10:52 -08002541 VkOffset3D dstOffset /// Specified in pixels for both compressed and uncompressed images
Jesse Halld27f6aa2015-08-15 17:58:48 -07002542 VkExtent3D extent /// Specified in pixels for both compressed and uncompressed images
2543}
2544
2545class VkImageBlit {
Jesse Hall65ab5522015-11-30 00:07:16 -08002546 VkImageSubresourceLayers srcSubresource
Jesse Hall3dd678a2016-01-08 21:52:01 -08002547 VkOffset3D[2] srcOffsets
Jesse Hall65ab5522015-11-30 00:07:16 -08002548 VkImageSubresourceLayers dstSubresource
Jesse Hall3dd678a2016-01-08 21:52:01 -08002549 VkOffset3D[2] dstOffsets
Jesse Halld27f6aa2015-08-15 17:58:48 -07002550}
2551
2552class VkBufferImageCopy {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002553 VkDeviceSize bufferOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002554 u32 bufferRowLength /// Specified in texels
2555 u32 bufferImageHeight
Jesse Hall65ab5522015-11-30 00:07:16 -08002556 VkImageSubresourceLayers imageSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07002557 VkOffset3D imageOffset /// Specified in pixels for both compressed and uncompressed images
2558 VkExtent3D imageExtent /// Specified in pixels for both compressed and uncompressed images
2559}
2560
2561class VkImageResolve {
Jesse Hall65ab5522015-11-30 00:07:16 -08002562 VkImageSubresourceLayers srcSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07002563 VkOffset3D srcOffset
Jesse Hall65ab5522015-11-30 00:07:16 -08002564 VkImageSubresourceLayers dstSubresource
Jesse Hall3fbc8562015-11-29 22:10:52 -08002565 VkOffset3D dstOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07002566 VkExtent3D extent
2567}
2568
2569class VkShaderModuleCreateInfo {
2570 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
2571 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002572 VkShaderModuleCreateFlags flags /// Reserved
Jesse Halld27f6aa2015-08-15 17:58:48 -07002573 platform.size_t codeSize /// Specified in bytes
Jesse Halla9bb62b2015-11-21 19:31:56 -08002574 const u32* pCode /// Binary code of size codeSize
Jesse Halld27f6aa2015-08-15 17:58:48 -07002575}
2576
Jesse Halld27f6aa2015-08-15 17:58:48 -07002577class VkDescriptorSetLayoutBinding {
Jesse Hall091ed9e2015-11-30 00:55:29 -08002578 u32 binding
Jesse Halld27f6aa2015-08-15 17:58:48 -07002579 VkDescriptorType descriptorType /// Type of the descriptors in this binding
Jesse Halldba27f72015-11-30 14:25:46 -08002580 u32 descriptorCount /// Number of descriptors in this binding
Jesse Halld27f6aa2015-08-15 17:58:48 -07002581 VkShaderStageFlags stageFlags /// Shader stages this binding is visible to
2582 const VkSampler* pImmutableSamplers /// Immutable samplers (used if descriptor type is SAMPLER or COMBINED_IMAGE_SAMPLER, is either NULL or contains <count> number of elements)
2583}
2584
2585class VkDescriptorSetLayoutCreateInfo {
2586 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
2587 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002588 VkDescriptorSetLayoutCreateFlags flags
Jesse Hall03b6fe12015-11-24 12:44:21 -08002589 u32 bindingCount /// Number of bindings in the descriptor set layout
Jesse Hall543a7ff2016-01-08 16:38:30 -08002590 const VkDescriptorSetLayoutBinding* pBindings /// Array of descriptor set layout bindings
Jesse Halld27f6aa2015-08-15 17:58:48 -07002591}
2592
Jesse Hall65ab5522015-11-30 00:07:16 -08002593class VkDescriptorPoolSize {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002594 VkDescriptorType type
Jesse Hall03b6fe12015-11-24 12:44:21 -08002595 u32 descriptorCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002596}
2597
2598class VkDescriptorPoolCreateInfo {
2599 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
2600 const void* pNext /// Pointer to next structure
Jesse Hallfbf97b02015-11-20 14:17:03 -08002601 VkDescriptorPoolCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002602 u32 maxSets
Jesse Hall65ab5522015-11-30 00:07:16 -08002603 u32 poolSizeCount
2604 const VkDescriptorPoolSize* pPoolSizes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002605}
2606
Jesse Hall3fbc8562015-11-29 22:10:52 -08002607class VkDescriptorSetAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002608 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
Jesse Hallfbf97b02015-11-20 14:17:03 -08002609 const void* pNext /// Pointer to next structure
2610 VkDescriptorPool descriptorPool
Jesse Hall03b6fe12015-11-24 12:44:21 -08002611 u32 setCount
Jesse Hallfbf97b02015-11-20 14:17:03 -08002612 const VkDescriptorSetLayout* pSetLayouts
2613}
2614
Jesse Halld27f6aa2015-08-15 17:58:48 -07002615class VkSpecializationMapEntry {
Jesse Hall65ab5522015-11-30 00:07:16 -08002616 u32 constantID /// The SpecConstant ID specified in the BIL
Jesse Halld27f6aa2015-08-15 17:58:48 -07002617 u32 offset /// Offset of the value in the data block
Jesse Hallb00daad2015-11-29 19:46:20 -08002618 platform.size_t size /// Size in bytes of the SpecConstant
Jesse Halld27f6aa2015-08-15 17:58:48 -07002619}
2620
2621class VkSpecializationInfo {
2622 u32 mapEntryCount /// Number of entries in the map
Jesse Hallb00daad2015-11-29 19:46:20 -08002623 const VkSpecializationMapEntry* pMapEntries /// Array of map entries
Jesse Halld27f6aa2015-08-15 17:58:48 -07002624 platform.size_t dataSize /// Size in bytes of pData
2625 const void* pData /// Pointer to SpecConstant data
2626}
2627
2628class VkPipelineShaderStageCreateInfo {
2629 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
2630 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002631 VkPipelineShaderStageCreateFlags flags
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002632 VkShaderStageFlagBits stage
2633 VkShaderModule module
2634 const char* pName
Jesse Halld27f6aa2015-08-15 17:58:48 -07002635 const VkSpecializationInfo* pSpecializationInfo
2636}
2637
2638class VkComputePipelineCreateInfo {
2639 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
2640 const void* pNext /// Pointer to next structure
Jesse Halld27f6aa2015-08-15 17:58:48 -07002641 VkPipelineCreateFlags flags /// Pipeline creation flags
Jesse Halla6429252015-11-29 18:59:42 -08002642 VkPipelineShaderStageCreateInfo stage
Jesse Halld27f6aa2015-08-15 17:58:48 -07002643 VkPipelineLayout layout /// Interface layout of the pipeline
2644 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
2645 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
2646}
2647
2648class VkVertexInputBindingDescription {
Jesse Hallb00daad2015-11-29 19:46:20 -08002649 u32 binding /// Vertex buffer binding id
2650 u32 stride /// Distance between vertices in bytes (0 = no advancement)
Jesse Hall65ab5522015-11-30 00:07:16 -08002651 VkVertexInputRate inputRate /// Rate at which binding is incremented
Jesse Halld27f6aa2015-08-15 17:58:48 -07002652}
2653
2654class VkVertexInputAttributeDescription {
Jesse Hallb00daad2015-11-29 19:46:20 -08002655 u32 location /// location of the shader vertex attrib
2656 u32 binding /// Vertex buffer binding id
2657 VkFormat format /// format of source data
2658 u32 offset /// Offset of first element in bytes from base of vertex
Jesse Halld27f6aa2015-08-15 17:58:48 -07002659}
2660
2661class VkPipelineVertexInputStateCreateInfo {
Jesse Hall03b6fe12015-11-24 12:44:21 -08002662 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
2663 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002664 VkPipelineVertexInputStateCreateFlags flags
Jesse Hall03b6fe12015-11-24 12:44:21 -08002665 u32 vertexBindingDescriptionCount /// number of bindings
Jesse Halld27f6aa2015-08-15 17:58:48 -07002666 const VkVertexInputBindingDescription* pVertexBindingDescriptions
Jesse Hall03b6fe12015-11-24 12:44:21 -08002667 u32 vertexAttributeDescriptionCount /// number of attributes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002668 const VkVertexInputAttributeDescription* pVertexAttributeDescriptions
2669}
2670
2671class VkPipelineInputAssemblyStateCreateInfo {
2672 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
2673 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002674 VkPipelineInputAssemblyStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002675 VkPrimitiveTopology topology
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002676 VkBool32 primitiveRestartEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002677}
2678
2679class VkPipelineTessellationStateCreateInfo {
2680 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
2681 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002682 VkPipelineTessellationStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002683 u32 patchControlPoints
2684}
2685
2686class VkPipelineViewportStateCreateInfo {
2687 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
2688 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002689 VkPipelineViewportStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002690 u32 viewportCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002691 const VkViewport* pViewports
2692 u32 scissorCount
2693 const VkRect2D* pScissors
Jesse Halld27f6aa2015-08-15 17:58:48 -07002694}
2695
Jesse Hall3fbc8562015-11-29 22:10:52 -08002696class VkPipelineRasterizationStateCreateInfo {
Jesse Hall65ab5522015-11-30 00:07:16 -08002697 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002698 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002699 VkPipelineRasterizationStateCreateFlags flags
Jesse Hallae38f732015-11-19 21:32:50 -08002700 VkBool32 depthClampEnable
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002701 VkBool32 rasterizerDiscardEnable
Jesse Hall65ab5522015-11-30 00:07:16 -08002702 VkPolygonMode polygonMode /// optional (GL45)
Jesse Hallc7467b72015-11-29 21:05:26 -08002703 VkCullModeFlags cullMode
Jesse Halld27f6aa2015-08-15 17:58:48 -07002704 VkFrontFace frontFace
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002705 VkBool32 depthBiasEnable
Jesse Halla9bb62b2015-11-21 19:31:56 -08002706 f32 depthBiasConstantFactor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002707 f32 depthBiasClamp
Jesse Halla9bb62b2015-11-21 19:31:56 -08002708 f32 depthBiasSlopeFactor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002709 f32 lineWidth
Jesse Halld27f6aa2015-08-15 17:58:48 -07002710}
2711
2712class VkPipelineMultisampleStateCreateInfo {
2713 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
2714 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002715 VkPipelineMultisampleStateCreateFlags flags
Jesse Hall091ed9e2015-11-30 00:55:29 -08002716 VkSampleCountFlagBits rasterizationSamples /// Number of samples used for rasterization
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002717 VkBool32 sampleShadingEnable /// optional (GL45)
Jesse Halld27f6aa2015-08-15 17:58:48 -07002718 f32 minSampleShading /// optional (GL45)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002719 const VkSampleMask* pSampleMask
Jesse Hallacfa5342015-11-19 21:51:33 -08002720 VkBool32 alphaToCoverageEnable
2721 VkBool32 alphaToOneEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002722}
2723
2724class VkPipelineColorBlendAttachmentState {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002725 VkBool32 blendEnable
Jesse Hall65ab5522015-11-30 00:07:16 -08002726 VkBlendFactor srcColorBlendFactor
2727 VkBlendFactor dstColorBlendFactor
2728 VkBlendOp colorBlendOp
2729 VkBlendFactor srcAlphaBlendFactor
2730 VkBlendFactor dstAlphaBlendFactor
2731 VkBlendOp alphaBlendOp
2732 VkColorComponentFlags colorWriteMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002733}
2734
2735class VkPipelineColorBlendStateCreateInfo {
2736 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
2737 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002738 VkPipelineColorBlendStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002739 VkBool32 logicOpEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002740 VkLogicOp logicOp
2741 u32 attachmentCount /// # of pAttachments
2742 const VkPipelineColorBlendAttachmentState* pAttachments
Jesse Hallb00daad2015-11-29 19:46:20 -08002743 f32[4] blendConstants
Jesse Halld27f6aa2015-08-15 17:58:48 -07002744}
2745
2746class VkStencilOpState {
Jesse Hall65ab5522015-11-30 00:07:16 -08002747 VkStencilOp failOp
2748 VkStencilOp passOp
2749 VkStencilOp depthFailOp
2750 VkCompareOp compareOp
2751 u32 compareMask
2752 u32 writeMask
2753 u32 reference
Jesse Halld27f6aa2015-08-15 17:58:48 -07002754}
2755
2756class VkPipelineDepthStencilStateCreateInfo {
2757 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
2758 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002759 VkPipelineDepthStencilStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002760 VkBool32 depthTestEnable
2761 VkBool32 depthWriteEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002762 VkCompareOp depthCompareOp
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002763 VkBool32 depthBoundsTestEnable /// optional (depth_bounds_test)
2764 VkBool32 stencilTestEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002765 VkStencilOpState front
2766 VkStencilOpState back
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002767 f32 minDepthBounds
2768 f32 maxDepthBounds
2769}
2770
2771class VkPipelineDynamicStateCreateInfo {
2772 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
2773 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002774 VkPipelineDynamicStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002775 u32 dynamicStateCount
2776 const VkDynamicState* pDynamicStates
Jesse Halld27f6aa2015-08-15 17:58:48 -07002777}
2778
2779class VkGraphicsPipelineCreateInfo {
Jesse Halla6429252015-11-29 18:59:42 -08002780 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
2781 const void* pNext /// Pointer to next structure
2782 VkPipelineCreateFlags flags /// Pipeline creation flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002783 u32 stageCount
Jesse Halla6429252015-11-29 18:59:42 -08002784 const VkPipelineShaderStageCreateInfo* pStages /// One entry for each active shader stage
Jesse Halld27f6aa2015-08-15 17:58:48 -07002785 const VkPipelineVertexInputStateCreateInfo* pVertexInputState
2786 const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState
2787 const VkPipelineTessellationStateCreateInfo* pTessellationState
2788 const VkPipelineViewportStateCreateInfo* pViewportState
Jesse Hall3fbc8562015-11-29 22:10:52 -08002789 const VkPipelineRasterizationStateCreateInfo* pRasterizationState
Jesse Halld27f6aa2015-08-15 17:58:48 -07002790 const VkPipelineMultisampleStateCreateInfo* pMultisampleState
2791 const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState
2792 const VkPipelineColorBlendStateCreateInfo* pColorBlendState
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002793 const VkPipelineDynamicStateCreateInfo* pDynamicState
Jesse Halla6429252015-11-29 18:59:42 -08002794 VkPipelineLayout layout /// Interface layout of the pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07002795 VkRenderPass renderPass
2796 u32 subpass
Jesse Halla6429252015-11-29 18:59:42 -08002797 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
2798 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 -07002799}
2800
2801class VkPipelineCacheCreateInfo {
Jesse Hallb00daad2015-11-29 19:46:20 -08002802 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
2803 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002804 VkPipelineCacheCreateFlags flags
Jesse Hallb00daad2015-11-29 19:46:20 -08002805 platform.size_t initialDataSize /// Size of initial data to populate cache, in bytes
2806 const void* pInitialData /// Initial data to populate cache
Jesse Halld27f6aa2015-08-15 17:58:48 -07002807}
2808
2809class VkPushConstantRange {
2810 VkShaderStageFlags stageFlags /// Which stages use the range
Jesse Hall03b6fe12015-11-24 12:44:21 -08002811 u32 offset /// Start of the range, in bytes
2812 u32 size /// Length of the range, in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002813}
2814
2815class VkPipelineLayoutCreateInfo {
2816 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
2817 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002818 VkPipelineLayoutCreateFlags flags
Jesse Hall3dd678a2016-01-08 21:52:01 -08002819 u32 descriptorSetCount /// Number of descriptor sets interfaced by the pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07002820 const VkDescriptorSetLayout* pSetLayouts /// Array of <setCount> number of descriptor set layout objects defining the layout of the
2821 u32 pushConstantRangeCount /// Number of push-constant ranges used by the pipeline
2822 const VkPushConstantRange* pPushConstantRanges /// Array of pushConstantRangeCount number of ranges used by various shader stages
2823}
2824
2825class VkSamplerCreateInfo {
2826 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
2827 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002828 VkSamplerCreateFlags flags
Jesse Hall23ff73f2015-11-29 14:36:39 -08002829 VkFilter magFilter /// Filter mode for magnification
2830 VkFilter minFilter /// Filter mode for minifiation
2831 VkSamplerMipmapMode mipmapMode /// Mipmap selection mode
2832 VkSamplerAddressMode addressModeU
2833 VkSamplerAddressMode addressModeV
2834 VkSamplerAddressMode addressModeW
Jesse Halld27f6aa2015-08-15 17:58:48 -07002835 f32 mipLodBias
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002836 VkBool32 anisotropyEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002837 f32 maxAnisotropy
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002838 VkBool32 compareEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002839 VkCompareOp compareOp
2840 f32 minLod
2841 f32 maxLod
2842 VkBorderColor borderColor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002843 VkBool32 unnormalizedCoordinates
Jesse Halld27f6aa2015-08-15 17:58:48 -07002844}
2845
Jesse Hall3fbc8562015-11-29 22:10:52 -08002846class VkCommandPoolCreateInfo {
2847 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002848 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002849 VkCommandPoolCreateFlags flags /// Command pool creation flags
Jesse Halla6429252015-11-29 18:59:42 -08002850 u32 queueFamilyIndex
Jesse Halld27f6aa2015-08-15 17:58:48 -07002851}
2852
Jesse Hall3fbc8562015-11-29 22:10:52 -08002853class VkCommandBufferAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002854 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002855 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002856 VkCommandPool commandPool
2857 VkCommandBufferLevel level
Jesse Hall3dd678a2016-01-08 21:52:01 -08002858 u32 commandBufferCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002859}
2860
Jesse Hall3dd678a2016-01-08 21:52:01 -08002861class VkCommandBufferInheritanceInfo {
2862 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002863 const void* pNext /// Pointer to next structure
Jesse Halld27f6aa2015-08-15 17:58:48 -07002864 VkRenderPass renderPass /// Render pass for secondary command buffers
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002865 u32 subpass
Jesse Halld27f6aa2015-08-15 17:58:48 -07002866 VkFramebuffer framebuffer /// Framebuffer for secondary command buffers
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002867 VkBool32 occlusionQueryEnable
2868 VkQueryControlFlags queryFlags
2869 VkQueryPipelineStatisticFlags pipelineStatistics
Jesse Halld27f6aa2015-08-15 17:58:48 -07002870}
2871
Jesse Hall3dd678a2016-01-08 21:52:01 -08002872class VkCommandBufferBeginInfo {
2873 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
2874 const void* pNext /// Pointer to next structure
2875 VkCommandBufferUsageFlags flags /// Command buffer usage flags
2876 const VkCommandBufferInheritanceInfo* pInheritanceInfo
2877}
2878
Jesse Halld27f6aa2015-08-15 17:58:48 -07002879class VkRenderPassBeginInfo {
2880 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
2881 const void* pNext /// Pointer to next structure
2882 VkRenderPass renderPass
2883 VkFramebuffer framebuffer
2884 VkRect2D renderArea
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002885 u32 clearValueCount
2886 const VkClearValue* pClearValues
Jesse Halld27f6aa2015-08-15 17:58:48 -07002887}
2888
2889@union
2890/// Union allowing specification of floating point, integer, or unsigned integer color data. Actual value selected is based on image/attachment being cleared.
2891class VkClearColorValue {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002892 f32[4] float32
2893 s32[4] int32
2894 u32[4] uint32
Jesse Halld27f6aa2015-08-15 17:58:48 -07002895}
2896
2897class VkClearDepthStencilValue {
2898 f32 depth
2899 u32 stencil
2900}
2901
2902@union
2903/// Union allowing specification of color, depth, and stencil color values. Actual value selected is based on attachment being cleared.
2904class VkClearValue {
2905 VkClearColorValue color
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002906 VkClearDepthStencilValue depthStencil
Jesse Halld27f6aa2015-08-15 17:58:48 -07002907}
2908
Jesse Hallae38f732015-11-19 21:32:50 -08002909class VkClearAttachment {
2910 VkImageAspectFlags aspectMask
2911 u32 colorAttachment
2912 VkClearValue clearValue
2913}
2914
Jesse Halld27f6aa2015-08-15 17:58:48 -07002915class VkAttachmentDescription {
Jesse Halla6429252015-11-29 18:59:42 -08002916 VkAttachmentDescriptionFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002917 VkFormat format
Jesse Hall091ed9e2015-11-30 00:55:29 -08002918 VkSampleCountFlagBits samples
Jesse Halld27f6aa2015-08-15 17:58:48 -07002919 VkAttachmentLoadOp loadOp /// Load op for color or depth data
2920 VkAttachmentStoreOp storeOp /// Store op for color or depth data
2921 VkAttachmentLoadOp stencilLoadOp /// Load op for stencil data
2922 VkAttachmentStoreOp stencilStoreOp /// Store op for stencil data
2923 VkImageLayout initialLayout
2924 VkImageLayout finalLayout
2925}
2926
2927class VkAttachmentReference {
2928 u32 attachment
2929 VkImageLayout layout
2930}
2931
2932class VkSubpassDescription {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002933 VkSubpassDescriptionFlags flags
Jesse Halla6429252015-11-29 18:59:42 -08002934 VkPipelineBindPoint pipelineBindPoint /// Must be VK_PIPELINE_BIND_POINT_GRAPHICS for now
Jesse Hall03b6fe12015-11-24 12:44:21 -08002935 u32 inputAttachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002936 const VkAttachmentReference* pInputAttachments
Jesse Hall03b6fe12015-11-24 12:44:21 -08002937 u32 colorAttachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002938 const VkAttachmentReference* pColorAttachments
2939 const VkAttachmentReference* pResolveAttachments
Jesse Hallc7467b72015-11-29 21:05:26 -08002940 const VkAttachmentReference* pDepthStencilAttachment
Jesse Hall03b6fe12015-11-24 12:44:21 -08002941 u32 preserveAttachmentCount
Jesse Hall3dd678a2016-01-08 21:52:01 -08002942 const u32* pPreserveAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07002943}
2944
2945class VkSubpassDependency {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002946 u32 srcSubpass
Jesse Hall3fbc8562015-11-29 22:10:52 -08002947 u32 dstSubpass
Jesse Halld27f6aa2015-08-15 17:58:48 -07002948 VkPipelineStageFlags srcStageMask
Jesse Hall3fbc8562015-11-29 22:10:52 -08002949 VkPipelineStageFlags dstStageMask
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002950 VkAccessFlags srcAccessMask
2951 VkAccessFlags dstAccessMask
Jesse Halldc6d36c2015-11-29 19:12:15 -08002952 VkDependencyFlags dependencyFlags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002953}
2954
2955class VkRenderPassCreateInfo {
2956 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
2957 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002958 VkRenderPassCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002959 u32 attachmentCount
2960 const VkAttachmentDescription* pAttachments
2961 u32 subpassCount
2962 const VkSubpassDescription* pSubpasses
2963 u32 dependencyCount
2964 const VkSubpassDependency* pDependencies
2965}
2966
2967class VkEventCreateInfo {
2968 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_EVENT_CREATE_INFO
2969 const void* pNext /// Pointer to next structure
2970 VkEventCreateFlags flags /// Event creation flags
2971}
2972
2973class VkFenceCreateInfo {
2974 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FENCE_CREATE_INFO
2975 const void* pNext /// Pointer to next structure
2976 VkFenceCreateFlags flags /// Fence creation flags
2977}
2978
2979class VkPhysicalDeviceFeatures {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002980 VkBool32 robustBufferAccess /// out of bounds buffer accesses are well defined
2981 VkBool32 fullDrawIndexUint32 /// full 32-bit range of indices for indexed draw calls
2982 VkBool32 imageCubeArray /// image views which are arrays of cube maps
2983 VkBool32 independentBlend /// blending operations are controlled per-attachment
2984 VkBool32 geometryShader /// geometry stage
2985 VkBool32 tessellationShader /// tessellation control and evaluation stage
2986 VkBool32 sampleRateShading /// per-sample shading and interpolation
Jesse Hall3fbc8562015-11-29 22:10:52 -08002987 VkBool32 dualSrcBlend /// blend operations which take two sources
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002988 VkBool32 logicOp /// logic operations
2989 VkBool32 multiDrawIndirect /// multi draw indirect
Jesse Hall543a7ff2016-01-08 16:38:30 -08002990 VkBool32 drawIndirectFirstInstance
Jesse Hallae38f732015-11-19 21:32:50 -08002991 VkBool32 depthClamp /// depth clamping
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002992 VkBool32 depthBiasClamp /// depth bias clamping
2993 VkBool32 fillModeNonSolid /// point and wireframe fill modes
2994 VkBool32 depthBounds /// depth bounds test
2995 VkBool32 wideLines /// lines with width greater than 1
2996 VkBool32 largePoints /// points with size greater than 1
Jesse Hallfbf97b02015-11-20 14:17:03 -08002997 VkBool32 alphaToOne /// The fragment alpha channel can be forced to maximum representable alpha value
2998 VkBool32 multiViewport
2999 VkBool32 samplerAnisotropy
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003000 VkBool32 textureCompressionETC2 /// ETC texture compression formats
3001 VkBool32 textureCompressionASTC_LDR /// ASTC LDR texture compression formats
3002 VkBool32 textureCompressionBC /// BC1-7 texture compressed formats
Jesse Hall65ab5522015-11-30 00:07:16 -08003003 VkBool32 occlusionQueryPrecise
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003004 VkBool32 pipelineStatisticsQuery /// pipeline statistics query
Jesse Halldc6d36c2015-11-29 19:12:15 -08003005 VkBool32 vertexPipelineStoresAndAtomics
3006 VkBool32 fragmentStoresAndAtomics
3007 VkBool32 shaderTessellationAndGeometryPointSize
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003008 VkBool32 shaderImageGatherExtended /// texture gather with run-time values and independent offsets
3009 VkBool32 shaderStorageImageExtendedFormats /// the extended set of formats can be used for storage images
3010 VkBool32 shaderStorageImageMultisample /// multisample images can be used for storage images
Jesse Halld1af8122015-11-29 23:50:38 -08003011 VkBool32 shaderStorageImageReadWithoutFormat
3012 VkBool32 shaderStorageImageWriteWithoutFormat
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003013 VkBool32 shaderUniformBufferArrayDynamicIndexing /// arrays of uniform buffers can be accessed with dynamically uniform indices
3014 VkBool32 shaderSampledImageArrayDynamicIndexing /// arrays of sampled images can be accessed with dynamically uniform indices
3015 VkBool32 shaderStorageBufferArrayDynamicIndexing /// arrays of storage buffers can be accessed with dynamically uniform indices
3016 VkBool32 shaderStorageImageArrayDynamicIndexing /// arrays of storage images can be accessed with dynamically uniform indices
3017 VkBool32 shaderClipDistance /// clip distance in shaders
3018 VkBool32 shaderCullDistance /// cull distance in shaders
3019 VkBool32 shaderFloat64 /// 64-bit floats (doubles) in shaders
3020 VkBool32 shaderInt64 /// 64-bit integers in shaders
3021 VkBool32 shaderInt16 /// 16-bit integers in shaders
3022 VkBool32 shaderResourceResidency /// shader can use texture operations that return resource residency information (requires sparseNonResident support)
Jesse Hall65ab5522015-11-30 00:07:16 -08003023 VkBool32 shaderResourceMinLod /// shader can use texture operations that specify minimum resource LOD
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003024 VkBool32 sparseBinding /// Sparse resources support: Resource memory can be managed at opaque page level rather than object level
3025 VkBool32 sparseResidencyBuffer /// Sparse resources support: GPU can access partially resident buffers
3026 VkBool32 sparseResidencyImage2D /// Sparse resources support: GPU can access partially resident 2D (non-MSAA non-DepthStencil) images
3027 VkBool32 sparseResidencyImage3D /// Sparse resources support: GPU can access partially resident 3D images
3028 VkBool32 sparseResidency2Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 2 samples
3029 VkBool32 sparseResidency4Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 4 samples
3030 VkBool32 sparseResidency8Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 8 samples
3031 VkBool32 sparseResidency16Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 16 samples
3032 VkBool32 sparseResidencyAliased /// Sparse resources support: GPU can correctly access data aliased into multiple locations (opt-in)
Jesse Halld1af8122015-11-29 23:50:38 -08003033 VkBool32 variableMultisampleRate
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003034 VkBool32 inheritedQueries
Jesse Halld27f6aa2015-08-15 17:58:48 -07003035}
3036
3037class VkPhysicalDeviceLimits {
3038 /// resource maximum sizes
3039 u32 maxImageDimension1D /// max 1D image dimension
3040 u32 maxImageDimension2D /// max 2D image dimension
3041 u32 maxImageDimension3D /// max 3D image dimension
3042 u32 maxImageDimensionCube /// max cubemap image dimension
3043 u32 maxImageArrayLayers /// max layers for image arrays
Jesse Hallb00daad2015-11-29 19:46:20 -08003044 u32 maxTexelBufferElements
Jesse Hallfbf97b02015-11-20 14:17:03 -08003045 u32 maxUniformBufferRange /// max uniform buffer size (bytes)
3046 u32 maxStorageBufferRange /// max storage buffer size (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003047 u32 maxPushConstantsSize /// max size of the push constants pool (bytes)
3048 /// memory limits
3049 u32 maxMemoryAllocationCount /// max number of device memory allocations supported
Jesse Hall091ed9e2015-11-30 00:55:29 -08003050 u32 maxSamplerAllocationCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003051 VkDeviceSize bufferImageGranularity /// Granularity (in bytes) at which buffers and images can be bound to adjacent memory for simultaneous usage
3052 VkDeviceSize sparseAddressSpaceSize /// Total address space available for sparse allocations (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003053 /// descriptor set limits
3054 u32 maxBoundDescriptorSets /// max number of descriptors sets that can be bound to a pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07003055 u32 maxPerStageDescriptorSamplers /// max num of samplers allowed per-stage in a descriptor set
3056 u32 maxPerStageDescriptorUniformBuffers /// max num of uniform buffers allowed per-stage in a descriptor set
3057 u32 maxPerStageDescriptorStorageBuffers /// max num of storage buffers allowed per-stage in a descriptor set
3058 u32 maxPerStageDescriptorSampledImages /// max num of sampled images allowed per-stage in a descriptor set
3059 u32 maxPerStageDescriptorStorageImages /// max num of storage images allowed per-stage in a descriptor set
Jesse Halle1b12782015-11-30 11:27:32 -08003060 u32 maxPerStageDescriptorInputAttachments
Jesse Halldba27f72015-11-30 14:25:46 -08003061 u32 maxPerStageResources
Jesse Halld27f6aa2015-08-15 17:58:48 -07003062 u32 maxDescriptorSetSamplers /// max num of samplers allowed in all stages in a descriptor set
3063 u32 maxDescriptorSetUniformBuffers /// max num of uniform buffers allowed in all stages in a descriptor set
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003064 u32 maxDescriptorSetUniformBuffersDynamic /// max num of dynamic uniform buffers allowed in all stages in a descriptor set
Jesse Halld27f6aa2015-08-15 17:58:48 -07003065 u32 maxDescriptorSetStorageBuffers /// max num of storage buffers allowed in all stages in a descriptor set
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003066 u32 maxDescriptorSetStorageBuffersDynamic /// max num of dynamic storage buffers allowed in all stages in a descriptor set
Jesse Halld27f6aa2015-08-15 17:58:48 -07003067 u32 maxDescriptorSetSampledImages /// max num of sampled images allowed in all stages in a descriptor set
3068 u32 maxDescriptorSetStorageImages /// max num of storage images allowed in all stages in a descriptor set
Jesse Halle1b12782015-11-30 11:27:32 -08003069 u32 maxDescriptorSetInputAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003070 /// vertex stage limits
3071 u32 maxVertexInputAttributes /// max num of vertex input attribute slots
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003072 u32 maxVertexInputBindings /// max num of vertex input binding slots
Jesse Halld27f6aa2015-08-15 17:58:48 -07003073 u32 maxVertexInputAttributeOffset /// max vertex input attribute offset added to vertex buffer offset
3074 u32 maxVertexInputBindingStride /// max vertex input binding stride
3075 u32 maxVertexOutputComponents /// max num of output components written by vertex shader
3076 /// tessellation control stage limits
Jesse Hall3fbc8562015-11-29 22:10:52 -08003077 u32 maxTessellationGenerationLevel /// max level supported by tess primitive generator
Jesse Hallae38f732015-11-19 21:32:50 -08003078 u32 maxTessellationPatchSize /// max patch size (vertices)
3079 u32 maxTessellationControlPerVertexInputComponents /// max num of input components per-vertex in TCS
3080 u32 maxTessellationControlPerVertexOutputComponents /// max num of output components per-vertex in TCS
3081 u32 maxTessellationControlPerPatchOutputComponents /// max num of output components per-patch in TCS
3082 u32 maxTessellationControlTotalOutputComponents /// max total num of per-vertex and per-patch output components in TCS
3083 u32 maxTessellationEvaluationInputComponents /// max num of input components per vertex in TES
3084 u32 maxTessellationEvaluationOutputComponents /// max num of output components per vertex in TES
Jesse Halld27f6aa2015-08-15 17:58:48 -07003085 /// geometry stage limits
3086 u32 maxGeometryShaderInvocations /// max invocation count supported in geometry shader
3087 u32 maxGeometryInputComponents /// max num of input components read in geometry stage
3088 u32 maxGeometryOutputComponents /// max num of output components written in geometry stage
3089 u32 maxGeometryOutputVertices /// max num of vertices that can be emitted in geometry stage
3090 u32 maxGeometryTotalOutputComponents /// max total num of components (all vertices) written in geometry stage
3091 /// fragment stage limits
3092 u32 maxFragmentInputComponents /// max num of input compontents read in fragment stage
Jesse Hallfbf97b02015-11-20 14:17:03 -08003093 u32 maxFragmentOutputAttachments /// max num of output attachments written in fragment stage
Jesse Hall3fbc8562015-11-29 22:10:52 -08003094 u32 maxFragmentDualSrcAttachments /// max num of output attachments written when using dual source blending
Jesse Halld27f6aa2015-08-15 17:58:48 -07003095 u32 maxFragmentCombinedOutputResources /// max total num of storage buffers, storage images and output buffers
3096 /// compute stage limits
3097 u32 maxComputeSharedMemorySize /// max total storage size of work group local storage (bytes)
3098 u32[3] maxComputeWorkGroupCount /// max num of compute work groups that may be dispatched by a single command (x,y,z)
3099 u32 maxComputeWorkGroupInvocations /// max total compute invocations in a single local work group
3100 u32[3] maxComputeWorkGroupSize /// max local size of a compute work group (x,y,z)
3101
3102 u32 subPixelPrecisionBits /// num bits of subpixel precision in screen x and y
3103 u32 subTexelPrecisionBits /// num bits of subtexel precision
3104 u32 mipmapPrecisionBits /// num bits of mipmap precision
3105
3106 u32 maxDrawIndexedIndexValue /// max index value for indexed draw calls (for 32-bit indices)
Jesse Halldba27f72015-11-30 14:25:46 -08003107 u32 maxDrawIndirectCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003108
3109 f32 maxSamplerLodBias /// max absolute sampler level of detail bias
3110 f32 maxSamplerAnisotropy /// max degree of sampler anisotropy
3111
3112 u32 maxViewports /// max number of active viewports
Jesse Halld27f6aa2015-08-15 17:58:48 -07003113 u32[2] maxViewportDimensions /// max viewport dimensions (x,y)
3114 f32[2] viewportBoundsRange /// viewport bounds range (min,max)
3115 u32 viewportSubPixelBits /// num bits of subpixel precision for viewport
3116
Jesse Halldc6d36c2015-11-29 19:12:15 -08003117 platform.size_t minMemoryMapAlignment /// min required alignment of pointers returned by MapMemory (bytes)
3118 VkDeviceSize minTexelBufferOffsetAlignment /// min required alignment for texel buffer offsets (bytes)
3119 VkDeviceSize minUniformBufferOffsetAlignment /// min required alignment for uniform buffer sizes and offsets (bytes)
3120 VkDeviceSize minStorageBufferOffsetAlignment /// min required alignment for storage buffer offsets (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003121
Jesse Hallfbf97b02015-11-20 14:17:03 -08003122 s32 minTexelOffset /// min texel offset for OpTextureSampleOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07003123 u32 maxTexelOffset /// max texel offset for OpTextureSampleOffset
Jesse Hallfbf97b02015-11-20 14:17:03 -08003124 s32 minTexelGatherOffset /// min texel offset for OpTextureGatherOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07003125 u32 maxTexelGatherOffset /// max texel offset for OpTextureGatherOffset
3126 f32 minInterpolationOffset /// furthest negative offset for interpolateAtOffset
3127 f32 maxInterpolationOffset /// furthest positive offset for interpolateAtOffset
3128 u32 subPixelInterpolationOffsetBits /// num of subpixel bits for interpolateAtOffset
3129
3130 u32 maxFramebufferWidth /// max width for a framebuffer
3131 u32 maxFramebufferHeight /// max height for a framebuffer
3132 u32 maxFramebufferLayers /// max layer count for a layered framebuffer
Jesse Hall091ed9e2015-11-30 00:55:29 -08003133 VkSampleCountFlags framebufferColorSampleCounts
3134 VkSampleCountFlags framebufferDepthSampleCounts
3135 VkSampleCountFlags framebufferStencilSampleCounts
3136 VkSampleCountFlags framebufferNoAttachmentSampleCounts
Jesse Halld27f6aa2015-08-15 17:58:48 -07003137 u32 maxColorAttachments /// max num of framebuffer color attachments
3138
Jesse Hall091ed9e2015-11-30 00:55:29 -08003139 VkSampleCountFlags sampledImageColorSampleCounts
3140 VkSampleCountFlags sampledImageIntegerSampleCounts
3141 VkSampleCountFlags sampledImageDepthSampleCounts
3142 VkSampleCountFlags sampledImageStencilSampleCounts
3143 VkSampleCountFlags storageImageSampleCounts
Jesse Halld27f6aa2015-08-15 17:58:48 -07003144 u32 maxSampleMaskWords /// max num of sample mask words
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003145 VkBool32 timestampComputeAndGraphics
Jesse Halld27f6aa2015-08-15 17:58:48 -07003146
Jesse Halla9bb62b2015-11-21 19:31:56 -08003147 f32 timestampPeriod
Jesse Halld27f6aa2015-08-15 17:58:48 -07003148
3149 u32 maxClipDistances /// max number of clip distances
3150 u32 maxCullDistances /// max number of cull distances
3151 u32 maxCombinedClipAndCullDistances /// max combined number of user clipping
3152
Jesse Hallfbf97b02015-11-20 14:17:03 -08003153 u32 discreteQueuePriorities
3154
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003155 f32[2] pointSizeRange /// range (min,max) of supported point sizes
3156 f32[2] lineWidthRange /// range (min,max) of supported line widths
Jesse Halld27f6aa2015-08-15 17:58:48 -07003157 f32 pointSizeGranularity /// granularity of supported point sizes
3158 f32 lineWidthGranularity /// granularity of supported line widths
Jesse Hall03b6fe12015-11-24 12:44:21 -08003159 VkBool32 strictLines
Jesse Hall091ed9e2015-11-30 00:55:29 -08003160 VkBool32 standardSampleLocations
Jesse Halla9bb62b2015-11-21 19:31:56 -08003161
Jesse Hall65ab5522015-11-30 00:07:16 -08003162 VkDeviceSize optimalBufferCopyOffsetAlignment
3163 VkDeviceSize optimalBufferCopyRowPitchAlignment
Jesse Halldba27f72015-11-30 14:25:46 -08003164 VkDeviceSize nonCoherentAtomSize
Jesse Halld27f6aa2015-08-15 17:58:48 -07003165}
3166
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003167class VkPhysicalDeviceSparseProperties {
3168 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 -08003169 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 -07003170 VkBool32 residencyStandard3DBlockShape /// Sparse resources support: GPU will access all 3D sparse resources using the standard block shapes (based on pixel format)
3171 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 -07003172 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
3173}
3174
Jesse Halld27f6aa2015-08-15 17:58:48 -07003175class VkSemaphoreCreateInfo {
3176 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
3177 const void* pNext /// Pointer to next structure
3178 VkSemaphoreCreateFlags flags /// Semaphore creation flags
3179}
3180
3181class VkQueryPoolCreateInfo {
3182 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
3183 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003184 VkQueryPoolCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003185 VkQueryType queryType
Jesse Hall3dd678a2016-01-08 21:52:01 -08003186 u32 queryCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003187 VkQueryPipelineStatisticFlags pipelineStatistics /// Optional
3188}
3189
3190class VkFramebufferCreateInfo {
3191 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
3192 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003193 VkFramebufferCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003194 VkRenderPass renderPass
3195 u32 attachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003196 const VkImageView* pAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003197 u32 width
3198 u32 height
3199 u32 layers
3200}
3201
Jesse Hall3fbc8562015-11-29 22:10:52 -08003202class VkDrawIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003203 u32 vertexCount
3204 u32 instanceCount
3205 u32 firstVertex
3206 u32 firstInstance
3207}
3208
Jesse Hall3fbc8562015-11-29 22:10:52 -08003209class VkDrawIndexedIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003210 u32 indexCount
3211 u32 instanceCount
3212 u32 firstIndex
3213 s32 vertexOffset
3214 u32 firstInstance
3215}
3216
Jesse Hall3fbc8562015-11-29 22:10:52 -08003217class VkDispatchIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003218 u32 x
3219 u32 y
3220 u32 z
3221}
3222
Jesse Hallad250842017-03-10 18:35:38 -08003223@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08003224class VkSurfaceCapabilitiesKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003225 u32 minImageCount
3226 u32 maxImageCount
3227 VkExtent2D currentExtent
3228 VkExtent2D minImageExtent
3229 VkExtent2D maxImageExtent
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003230 u32 maxImageArrayLayers
Jesse Hall1356b0d2015-11-23 17:24:58 -08003231 VkSurfaceTransformFlagsKHR supportedTransforms
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003232 VkSurfaceTransformFlagBitsKHR currentTransform
Jesse Halla6429252015-11-29 18:59:42 -08003233 VkCompositeAlphaFlagsKHR supportedCompositeAlpha
Jesse Hall1356b0d2015-11-23 17:24:58 -08003234 VkImageUsageFlags supportedUsageFlags
Michael Lentine88594d72015-11-12 12:49:45 -08003235}
3236
Jesse Hallad250842017-03-10 18:35:38 -08003237@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08003238class VkSurfaceFormatKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003239 VkFormat format
3240 VkColorSpaceKHR colorSpace
Michael Lentine88594d72015-11-12 12:49:45 -08003241}
3242
Jesse Hallad250842017-03-10 18:35:38 -08003243@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08003244class VkSwapchainCreateInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003245 VkStructureType sType
3246 const void* pNext
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003247 VkSwapchainCreateFlagsKHR flags
Jesse Hall1356b0d2015-11-23 17:24:58 -08003248 VkSurfaceKHR surface
3249 u32 minImageCount
3250 VkFormat imageFormat
3251 VkColorSpaceKHR imageColorSpace
3252 VkExtent2D imageExtent
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003253 u32 imageArrayLayers
3254 VkImageUsageFlags imageUsage
Jesse Hall1356b0d2015-11-23 17:24:58 -08003255 VkSharingMode sharingMode
Jesse Hall03b6fe12015-11-24 12:44:21 -08003256 u32 queueFamilyIndexCount
Jesse Hall1356b0d2015-11-23 17:24:58 -08003257 const u32* pQueueFamilyIndices
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003258 VkSurfaceTransformFlagBitsKHR preTransform
3259 VkCompositeAlphaFlagBitsKHR compositeAlpha
Jesse Hall1356b0d2015-11-23 17:24:58 -08003260 VkPresentModeKHR presentMode
Jesse Hall1356b0d2015-11-23 17:24:58 -08003261 VkBool32 clipped
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003262 VkSwapchainKHR oldSwapchain
Michael Lentine88594d72015-11-12 12:49:45 -08003263}
3264
Jesse Hallad250842017-03-10 18:35:38 -08003265@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08003266class VkPresentInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003267 VkStructureType sType
3268 const void* pNext
Jesse Hallb00daad2015-11-29 19:46:20 -08003269 u32 waitSemaphoreCount
3270 const VkSemaphore* pWaitSemaphores
Jesse Hall1356b0d2015-11-23 17:24:58 -08003271 u32 swapchainCount
Jesse Hall03b6fe12015-11-24 12:44:21 -08003272 const VkSwapchainKHR* pSwapchains
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003273 const u32* pImageIndices
Jesse Halle1b12782015-11-30 11:27:32 -08003274 VkResult* pResults
Michael Lentine88594d72015-11-12 12:49:45 -08003275}
3276
Jesse Hallad250842017-03-10 18:35:38 -08003277@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003278class VkDisplayPropertiesKHR {
3279 VkDisplayKHR display
3280 const char* displayName
3281 VkExtent2D physicalDimensions
3282 VkExtent2D physicalResolution
3283 VkSurfaceTransformFlagsKHR supportedTransforms
Jesse Hall1356b0d2015-11-23 17:24:58 -08003284 VkBool32 planeReorderPossible
Jesse Halla6429252015-11-29 18:59:42 -08003285 VkBool32 persistentContent
Michael Lentine88594d72015-11-12 12:49:45 -08003286}
3287
Jesse Hallad250842017-03-10 18:35:38 -08003288@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003289class VkDisplayModeParametersKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003290 VkExtent2D visibleRegion
Jesse Halla6429252015-11-29 18:59:42 -08003291 u32 refreshRate
Michael Lentine88594d72015-11-12 12:49:45 -08003292}
Jesse Halld27f6aa2015-08-15 17:58:48 -07003293
Jesse Hallad250842017-03-10 18:35:38 -08003294@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003295class VkDisplayModePropertiesKHR {
3296 VkDisplayModeKHR displayMode
Jesse Halla6429252015-11-29 18:59:42 -08003297 VkDisplayModeParametersKHR parameters
Jesse Hall1356b0d2015-11-23 17:24:58 -08003298}
3299
Jesse Hallad250842017-03-10 18:35:38 -08003300@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003301class VkDisplayModeCreateInfoKHR {
3302 VkStructureType sType
3303 const void* pNext
Jesse Hall9ba8bc82015-11-30 16:22:16 -08003304 VkDisplayModeCreateFlagsKHR flags
Jesse Halla6429252015-11-29 18:59:42 -08003305 VkDisplayModeParametersKHR parameters
Jesse Hall1356b0d2015-11-23 17:24:58 -08003306}
3307
Jesse Hallad250842017-03-10 18:35:38 -08003308@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003309class VkDisplayPlanePropertiesKHR {
Jesse Halla6429252015-11-29 18:59:42 -08003310 VkDisplayKHR currentDisplay
3311 u32 currentStackIndex
3312}
3313
Jesse Hallad250842017-03-10 18:35:38 -08003314@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003315class VkDisplayPlaneCapabilitiesKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003316 VkDisplayPlaneAlphaFlagsKHR supportedAlpha
3317 VkOffset2D minSrcPosition
3318 VkOffset2D maxSrcPosition
3319 VkExtent2D minSrcExtent
3320 VkExtent2D maxSrcExtent
3321 VkOffset2D minDstPosition
3322 VkOffset2D maxDstPosition
3323 VkExtent2D minDstExtent
3324 VkExtent2D maxDstExtent
3325}
3326
Jesse Hallad250842017-03-10 18:35:38 -08003327@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003328class VkDisplaySurfaceCreateInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003329 VkStructureType sType
3330 const void* pNext
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003331 VkDisplaySurfaceCreateFlagsKHR flags
Jesse Hall1356b0d2015-11-23 17:24:58 -08003332 VkDisplayModeKHR displayMode
3333 u32 planeIndex
3334 u32 planeStackIndex
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003335 VkSurfaceTransformFlagBitsKHR transform
Jesse Hall1356b0d2015-11-23 17:24:58 -08003336 f32 globalAlpha
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003337 VkDisplayPlaneAlphaFlagBitsKHR alphaMode
3338 VkExtent2D imageExtent
Jesse Hall1356b0d2015-11-23 17:24:58 -08003339}
3340
Jesse Hallad250842017-03-10 18:35:38 -08003341@extension("VK_KHR_display_swapchain") // 4
Jesse Hall1356b0d2015-11-23 17:24:58 -08003342class VkDisplayPresentInfoKHR {
3343 VkStructureType sType
3344 const void* pNext
3345 VkRect2D srcRect
3346 VkRect2D dstRect
Jesse Halla6429252015-11-29 18:59:42 -08003347 VkBool32 persistent
Jesse Hall1356b0d2015-11-23 17:24:58 -08003348}
3349
Jesse Hallad250842017-03-10 18:35:38 -08003350@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003351class VkXlibSurfaceCreateInfoKHR {
3352 VkStructureType sType
3353 const void* pNext
3354 VkXlibSurfaceCreateFlagsKHR flags
3355 platform.Display* dpy
3356 platform.Window window
3357}
3358
Jesse Hallad250842017-03-10 18:35:38 -08003359@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003360class VkXcbSurfaceCreateInfoKHR {
3361 VkStructureType sType
3362 const void* pNext
3363 VkXcbSurfaceCreateFlagsKHR flags
3364 platform.xcb_connection_t* connection
3365 platform.xcb_window_t window
3366}
3367
Jesse Hallad250842017-03-10 18:35:38 -08003368@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003369class VkWaylandSurfaceCreateInfoKHR {
3370 VkStructureType sType
3371 const void* pNext
3372 VkWaylandSurfaceCreateFlagsKHR flags
3373 platform.wl_display* display
3374 platform.wl_surface* surface
3375}
3376
Jesse Hallad250842017-03-10 18:35:38 -08003377@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003378class VkMirSurfaceCreateInfoKHR {
3379 VkStructureType sType
3380 const void* pNext
3381 VkMirSurfaceCreateFlagsKHR flags
3382 platform.MirConnection* connection
3383 platform.MirSurface* mirSurface
3384}
3385
Jesse Hallad250842017-03-10 18:35:38 -08003386@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003387class VkAndroidSurfaceCreateInfoKHR {
3388 VkStructureType sType
3389 const void* pNext
3390 VkAndroidSurfaceCreateFlagsKHR flags
3391 platform.ANativeWindow* window
3392}
3393
Jesse Hallad250842017-03-10 18:35:38 -08003394@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003395class VkWin32SurfaceCreateInfoKHR {
3396 VkStructureType sType
3397 const void* pNext
3398 VkWin32SurfaceCreateFlagsKHR flags
3399 platform.HINSTANCE hinstance
3400 platform.HWND hwnd
3401}
3402
Jesse Hallad250842017-03-10 18:35:38 -08003403@extension("VK_ANDROID_native_buffer") // 11
Jesse Halld1abd742017-02-09 21:45:51 -08003404@internal class Gralloc1Usage {
3405 u64 consumer
3406 u64 producer
3407}
3408
Jesse Hallad250842017-03-10 18:35:38 -08003409@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08003410class VkNativeBufferANDROID {
3411 VkStructureType sType
3412 const void* pNext
3413 platform.buffer_handle_t handle
Jesse Halld1abd742017-02-09 21:45:51 -08003414 s32 stride
3415 s32 format
3416 s32 usage
3417 Gralloc1Usage usage2
Chia-I Wub262ddc2016-03-22 07:38:20 +08003418}
3419
Jesse Hallad250842017-03-10 18:35:38 -08003420@extension("VK_ANDROID_native_buffer") // 11
Chris Forbes8e4438b2016-12-07 16:26:49 +13003421class VkSwapchainImageCreateInfoANDROID {
3422 VkStructureType sType
3423 const void* pNext
Chris Forbes134d9582017-01-12 14:26:37 +13003424 VkSwapchainImageUsageFlagsANDROID flags
Chris Forbes48853712017-01-12 14:09:33 +13003425}
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07003426
Jesse Hallad250842017-03-10 18:35:38 -08003427@extension("VK_ANDROID_native_buffer") // 11
Chris Forbes1d4e5542017-02-15 19:38:50 +13003428class VkPhysicalDevicePresentationPropertiesANDROID {
3429 VkStructureType sType
3430 void* pNext
3431 VkBool32 sharedImage
3432}
3433
Jesse Hallad250842017-03-10 18:35:38 -08003434@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08003435class VkDebugReportCallbackCreateInfoEXT {
3436 VkStructureType sType
3437 const void* pNext
3438 VkDebugReportFlagsEXT flags
3439 PFN_vkDebugReportCallbackEXT pfnCallback
3440 void* pUserData
3441}
3442
Jesse Hallad250842017-03-10 18:35:38 -08003443@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07003444class VkPipelineRasterizationStateRasterizationOrderAMD {
3445 VkStructureType sType
3446 const void* pNext
3447 VkRasterizationOrderAMD rasterizationOrder
3448}
3449
Jesse Hallad250842017-03-10 18:35:38 -08003450@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003451class VkDebugMarkerObjectNameInfoEXT {
3452 VkStructureType sType
3453 const void* pNext
3454 VkDebugReportObjectTypeEXT objectType
3455 u64 object
3456 const char* pObjectName
3457}
3458
Jesse Hallad250842017-03-10 18:35:38 -08003459@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003460class VkDebugMarkerObjectTagInfoEXT {
3461 VkStructureType sType
3462 const void* pNext
3463 VkDebugReportObjectTypeEXT objectType
3464 u64 object
3465 u64 tagName
3466 platform.size_t tagSize
3467 const void* pTag
3468}
3469
Jesse Hallad250842017-03-10 18:35:38 -08003470@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003471class VkDebugMarkerMarkerInfoEXT {
3472 VkStructureType sType
3473 const void* pNext
3474 const char* pMarkerName
3475 f32[4] color
3476}
3477
Jesse Hallad250842017-03-10 18:35:38 -08003478@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07003479class VkDedicatedAllocationImageCreateInfoNV {
3480 VkStructureType sType
3481 const void* pNext
3482 VkBool32 dedicatedAllocation
3483}
3484
Jesse Hallad250842017-03-10 18:35:38 -08003485@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07003486class VkDedicatedAllocationBufferCreateInfoNV {
3487 VkStructureType sType
3488 const void* pNext
3489 VkBool32 dedicatedAllocation
3490}
3491
Jesse Hallad250842017-03-10 18:35:38 -08003492@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07003493class VkDedicatedAllocationMemoryAllocateInfoNV {
3494 VkStructureType sType
3495 const void* pNext
3496 VkImage image
3497 VkBuffer buffer
3498}
3499
Jesse Hallad250842017-03-10 18:35:38 -08003500@extension("VK_KHX_multiview") // 54
3501class VkRenderPassMultiviewCreateInfoKHX {
3502 VkStructureType sType
3503 const void* pNext
3504 u32 subpassCount
3505 const u32* pViewMasks
3506 u32 dependencyCount
3507 const s32* pViewOffsets
3508 u32 correlationMaskCount
3509 const u32* pCorrelationMasks
3510}
3511
3512@extension("VK_KHX_multiview") // 54
3513class VkPhysicalDeviceMultiviewFeaturesKHX {
3514 VkStructureType sType
3515 void* pNext
3516 VkBool32 multiview
3517 VkBool32 multiviewGeometryShader
3518 VkBool32 multiviewTessellationShader
3519}
3520
3521@extension("VK_KHX_multiview") // 54
3522class VkPhysicalDeviceMultiviewPropertiesKHX {
3523 VkStructureType sType
3524 void* pNext
3525 u32 maxMultiviewViewCount
3526 u32 maxMultiviewInstanceIndex
3527}
3528
3529@extension("VK_NV_external_memory_capabilities") // 56
Jesse Halleb02c472017-02-24 15:13:45 -08003530class VkExternalImageFormatPropertiesNV {
3531 VkImageFormatProperties imageFormatProperties
3532 VkExternalMemoryFeatureFlagsNV externalMemoryFeatures
3533 VkExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes
3534 VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes
3535}
3536
Jesse Hallad250842017-03-10 18:35:38 -08003537@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08003538class VkExternalMemoryImageCreateInfoNV {
3539 VkStructureType sType
3540 const void* pNext
3541 VkExternalMemoryHandleTypeFlagsNV handleTypes
3542}
3543
Jesse Hallad250842017-03-10 18:35:38 -08003544@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08003545class VkExportMemoryAllocateInfoNV {
3546 VkStructureType sType
3547 const void* pNext
3548 VkExternalMemoryHandleTypeFlagsNV handleTypes
3549}
3550
Jesse Hallad250842017-03-10 18:35:38 -08003551@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08003552class VkImportMemoryWin32HandleInfoNV {
3553 VkStructureType sType
3554 const void* pNext
3555 VkExternalMemoryHandleTypeFlagsNV handleType
3556 platform.HANDLE handle
3557}
3558
Jesse Hallad250842017-03-10 18:35:38 -08003559@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08003560class VkExportMemoryWin32HandleInfoNV {
3561 VkStructureType sType
3562 const void* pNext
3563 const platform.SECURITY_ATTRIBUTES* pAttributes
3564 platform.DWORD dwAccess
3565}
3566
Jesse Hallad250842017-03-10 18:35:38 -08003567@extension("VK_NV_win32_keyed_mutex") // 59
Jesse Halleb02c472017-02-24 15:13:45 -08003568class VkWin32KeyedMutexAcquireReleaseInfoNV {
3569 VkStructureType sType
3570 const void* pNext
3571 u32 acquireCount
3572 const VkDeviceMemory* pAcquireSyncs
3573 const u64* pAcquireKeys
3574 const u32* pAcquireTimeoutMilliseconds
3575 u32 releaseCount
3576 const VkDeviceMemory* pReleaseSyncs
3577 const u64* pReleaseKeys
3578}
3579
Jesse Hallad250842017-03-10 18:35:38 -08003580@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003581class VkPhysicalDeviceFeatures2KHR {
3582 VkStructureType sType
3583 void* pNext
3584 VkPhysicalDeviceFeatures features
3585}
3586
Jesse Hallad250842017-03-10 18:35:38 -08003587@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003588class VkPhysicalDeviceProperties2KHR {
3589 VkStructureType sType
3590 void* pNext
3591 VkPhysicalDeviceProperties properties
3592}
3593
Jesse Hallad250842017-03-10 18:35:38 -08003594@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003595class VkFormatProperties2KHR {
3596 VkStructureType sType
3597 void* pNext
3598 VkFormatProperties formatProperties
3599}
3600
Jesse Hallad250842017-03-10 18:35:38 -08003601@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003602class VkImageFormatProperties2KHR {
3603 VkStructureType sType
3604 void* pNext
3605 VkImageFormatProperties imageFormatProperties
3606}
3607
Jesse Hallad250842017-03-10 18:35:38 -08003608@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003609class VkPhysicalDeviceImageFormatInfo2KHR {
3610 VkStructureType sType
3611 const void* pNext
3612 VkFormat format
3613 VkImageType type
3614 VkImageTiling tiling
3615 VkImageUsageFlags usage
3616 VkImageCreateFlags flags
3617}
3618
Jesse Hallad250842017-03-10 18:35:38 -08003619@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003620class VkQueueFamilyProperties2KHR {
3621 VkStructureType sType
3622 void* pNext
3623 VkQueueFamilyProperties queueFamilyProperties
3624}
3625
Jesse Hallad250842017-03-10 18:35:38 -08003626@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003627class VkPhysicalDeviceMemoryProperties2KHR {
3628 VkStructureType sType
3629 void* pNext
3630 VkPhysicalDeviceMemoryProperties memoryProperties
3631}
3632
Jesse Hallad250842017-03-10 18:35:38 -08003633@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003634class VkSparseImageFormatProperties2KHR {
3635 VkStructureType sType
3636 void* pNext
3637 VkSparseImageFormatProperties properties
3638}
3639
Jesse Hallad250842017-03-10 18:35:38 -08003640@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003641class VkPhysicalDeviceSparseImageFormatInfo2KHR {
3642 VkStructureType sType
3643 const void* pNext
3644 VkFormat format
3645 VkImageType type
3646 VkSampleCountFlagBits samples
3647 VkImageUsageFlags usage
3648 VkImageTiling tiling
3649}
3650
Jesse Hallad250842017-03-10 18:35:38 -08003651@extension("VK_KHX_device_group") // 61
3652class VkMemoryAllocateFlagsInfoKHX {
3653 VkStructureType sType
3654 const void* pNext
3655 VkMemoryAllocateFlagsKHX flags
3656 u32 deviceMask
3657}
3658
3659@extension("VK_KHX_device_group") // 61
3660class VkBindBufferMemoryInfoKHX {
3661 VkStructureType sType
3662 const void* pNext
3663 VkBuffer buffer
3664 VkDeviceMemory memory
3665 VkDeviceSize memoryOffset
3666 u32 deviceIndexCount
3667 const u32* pDeviceIndices
3668}
3669
3670@extension("VK_KHX_device_group") // 61
3671class VkBindImageMemoryInfoKHX {
3672 VkStructureType sType
3673 const void* pNext
3674 VkImage image
3675 VkDeviceMemory memory
3676 VkDeviceSize memoryOffset
3677 u32 deviceIndexCount
3678 const u32* pDeviceIndices
3679 u32 SFRRectCount
3680 const VkRect2D* pSFRRects
3681}
3682
3683@extension("VK_KHX_device_group") // 61
3684class VkDeviceGroupRenderPassBeginInfoKHX {
3685 VkStructureType sType
3686 const void* pNext
3687 u32 deviceMask
3688 u32 deviceRenderAreaCount
3689 const VkRect2D* pDeviceRenderAreas
3690}
3691
3692@extension("VK_KHX_device_group") // 61
3693class VkDeviceGroupCommandBufferBeginInfoKHX {
3694 VkStructureType sType
3695 const void* pNext
3696 u32 deviceMask
3697}
3698
3699@extension("VK_KHX_device_group") // 61
3700class VkDeviceGroupSubmitInfoKHX {
3701 VkStructureType sType
3702 const void* pNext
3703 u32 waitSemaphoreCount
3704 const u32* pWaitSemaphoreDeviceIndices
3705 u32 commandBufferCount
3706 const u32* pCommandBufferDeviceMasks
3707 u32 signalSemaphoreCount
3708 const u32* pSignalSemaphoreDeviceIndices
3709}
3710
3711@extension("VK_KHX_device_group") // 61
3712class VkDeviceGroupBindSparseInfoKHX {
3713 VkStructureType sType
3714 const void* pNext
3715 u32 resourceDeviceIndex
3716 u32 memoryDeviceIndex
3717}
3718
3719@extension("VK_KHX_device_group") // 61
3720class VkDeviceGroupPresentCapabilitiesKHX {
3721 VkStructureType sType
3722 const void* pNext
3723 u32[VK_MAX_DEVICE_GROUP_SIZE_KHX] presentMask
3724 VkDeviceGroupPresentModeFlagsKHX modes
3725}
3726
3727@extension("VK_KHX_device_group") // 61
3728class VkImageSwapchainCreateInfoKHX {
3729 VkStructureType sType
3730 const void* pNext
3731 VkSwapchainKHR swapchain
3732}
3733
3734@extension("VK_KHX_device_group") // 61
3735class VkBindImageMemorySwapchainInfoKHX {
3736 VkStructureType sType
3737 const void* pNext
3738 VkSwapchainKHR swapchain
3739 u32 imageIndex
3740}
3741
3742@extension("VK_KHX_device_group") // 61
3743class VkAcquireNextImageInfoKHX {
3744 VkStructureType sType
3745 const void* pNext
3746 VkSwapchainKHR swapchain
3747 u64 timeout
3748 VkSemaphore semaphore
3749 VkFence fence
3750 u32 deviceMask
3751}
3752
3753@extension("VK_KHX_device_group") // 61
3754class VkDeviceGroupPresentInfoKHX {
3755 VkStructureType sType
3756 const void* pNext
3757 u32 swapchainCount
3758 const u32* pDeviceMasks
3759 VkDeviceGroupPresentModeFlagBitsKHX mode
3760}
3761
3762@extension("VK_KHX_device_group") // 61
3763class VkDeviceGroupSwapchainCreateInfoKHX {
3764 VkStructureType sType
3765 const void* pNext
3766 VkDeviceGroupPresentModeFlagsKHX modes
3767}
3768
3769@extension("VK_EXT_validation_flags") // 62
Chris Forbes289cb792016-12-30 15:03:55 +13003770class VkValidationFlagsEXT {
3771 VkStructureType sType
3772 const void* pNext
3773 u32 disabledValidationCheckCount
3774 VkValidationCheckEXT* pDisabledValidationChecks
3775}
3776
Jesse Hallad250842017-03-10 18:35:38 -08003777@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08003778class VkViSurfaceCreateInfoNN {
3779 VkStructureType sType
3780 const void* pNext
3781 VkViSurfaceCreateFlagsNN flags
3782 void* window
3783}
3784
Jesse Hallad250842017-03-10 18:35:38 -08003785@extension("VK_KHX_device_group_creation") // 71
3786class VkPhysicalDeviceGroupPropertiesKHX {
3787 VkStructureType sType
Jesse Hallf5ad48b2017-03-20 13:09:19 -07003788 void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08003789 u32 physicalDeviceCount
3790 VkPhysicalDevice[VK_MAX_DEVICE_GROUP_SIZE_KHX] physicalDevices
3791 VkBool32 subsetAllocation
3792}
3793
3794@extension("VK_KHX_device_group_creation") // 71
3795class VkDeviceGroupDeviceCreateInfoKHX {
3796 VkStructureType sType
3797 const void* pNext
3798 u32 physicalDeviceCount
3799 const VkPhysicalDevice* pPhysicalDevices
3800}
3801
3802@extension("VK_KHX_external_memory_capabilities") // 72
3803class VkExternalMemoryPropertiesKHX {
3804 VkExternalMemoryFeatureFlagsKHX externalMemoryFeatures
3805 VkExternalMemoryHandleTypeFlagsKHX exportFromImportedHandleTypes
3806 VkExternalMemoryHandleTypeFlagsKHX compatibleHandleTypes
3807}
3808
3809@extension("VK_KHX_external_memory_capabilities") // 72
3810class VkPhysicalDeviceExternalImageFormatInfoKHX {
3811 VkStructureType sType
3812 const void* pNext
3813 VkExternalMemoryHandleTypeFlagBitsKHX handleType
3814}
3815
3816@extension("VK_KHX_external_memory_capabilities") // 72
3817class VkExternalImageFormatPropertiesKHX {
3818 VkStructureType sType
3819 void* pNext
3820 VkExternalMemoryPropertiesKHX externalMemoryProperties
3821}
3822
3823@extension("VK_KHX_external_memory_capabilities") // 72
3824class VkPhysicalDeviceExternalBufferInfoKHX {
3825 VkStructureType sType
3826 const void* pNext
3827 VkBufferCreateFlags flags
3828 VkBufferUsageFlags usage
3829 VkExternalMemoryHandleTypeFlagBitsKHX handleType
3830}
3831
3832@extension("VK_KHX_external_memory_capabilities") // 72
3833class VkExternalBufferPropertiesKHX {
3834 VkStructureType sType
3835 void* pNext
3836 VkExternalMemoryPropertiesKHX externalMemoryProperties
3837}
3838
3839@extension("VK_KHX_external_memory_capabilities") // 72
3840class VkPhysicalDeviceIDPropertiesKHX {
3841 VkStructureType sType
3842 void* pNext
3843 u8[VK_UUID_SIZE] deviceUUID
3844 u8[VK_UUID_SIZE] driverUUID
3845 u8[VK_LUID_SIZE_KHX] deviceLUID
3846 VkBool32 deviceLUIDValid
3847}
3848
Jesse Hallad250842017-03-10 18:35:38 -08003849@extension("VK_KHX_external_memory") // 73
3850class VkExternalMemoryImageCreateInfoKHX {
3851 VkStructureType sType
3852 const void* pNext
3853 VkExternalMemoryHandleTypeFlagsKHX handleTypes
3854}
3855
3856@extension("VK_KHX_external_memory") // 73
3857class VkExternalMemoryBufferCreateInfoKHX {
3858 VkStructureType sType
3859 const void* pNext
3860 VkExternalMemoryHandleTypeFlagsKHX handleTypes
3861}
3862
3863@extension("VK_KHX_external_memory") // 73
3864class VkExportMemoryAllocateInfoKHX {
3865 VkStructureType sType
3866 const void* pNext
3867 VkExternalMemoryHandleTypeFlagsKHX handleTypes
3868}
3869
3870@extension("VK_KHX_external_memory_win32") // 74
3871class VkImportMemoryWin32HandleInfoKHX {
3872 VkStructureType sType
3873 const void* pNext
3874 VkExternalMemoryHandleTypeFlagBitsKHX handleType
3875 platform.HANDLE handle
3876}
3877
3878@extension("VK_KHX_external_memory_win32") // 74
3879class VkExportMemoryWin32HandleInfoKHX {
3880 VkStructureType sType
3881 const void* pNext
3882 const platform.SECURITY_ATTRIBUTES* pAttributes
3883 platform.DWORD dwAccess
3884 platform.LPCWSTR name
3885}
3886
3887@extension("VK_KHX_external_memory_win32") // 74
3888class VkMemoryWin32HandlePropertiesKHX {
3889 VkStructureType sType
3890 void* pNext
3891 u32 memoryTypeBits
3892}
3893
3894@extension("VK_KHX_external_memory_fd") // 75
3895class VkImportMemoryFdInfoKHX {
3896 VkStructureType sType
3897 const void* pNext
3898 VkExternalMemoryHandleTypeFlagBitsKHX handleType
3899 int fd
3900}
3901
3902@extension("VK_KHX_external_memory_fd") // 75
3903class VkMemoryFdPropertiesKHX {
3904 VkStructureType sType
3905 void* pNext
3906 u32 memoryTypeBits
3907}
3908
3909@extension("VK_KHX_win32_keyed_mutex") // 76
3910class VkWin32KeyedMutexAcquireReleaseInfoKHX {
3911 VkStructureType sType
3912 const void* pNext
3913 u32 acquireCount
3914 const VkDeviceMemory* pAcquireSyncs
3915 const u64* pAcquireKeys
3916 const u32* pAcquireTimeouts
3917 u32 releaseCount
3918 const VkDeviceMemory* pReleaseSyncs
3919 const u64* pReleaseKeys
3920}
3921
3922@extension("VK_KHX_external_semaphore_capabilities") // 77
3923class VkPhysicalDeviceExternalSemaphoreInfoKHX {
3924 VkStructureType sType
3925 const void* pNext
3926 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType
3927}
3928
3929@extension("VK_KHX_external_semaphore_capabilities") // 77
3930class VkExternalSemaphorePropertiesKHX {
3931 VkStructureType sType
3932 void* pNext
3933 VkExternalSemaphoreHandleTypeFlagsKHX exportFromImportedHandleTypes
3934 VkExternalSemaphoreHandleTypeFlagsKHX compatibleHandleTypes
3935 VkExternalSemaphoreFeatureFlagsKHX externalSemaphoreFeatures
3936}
3937
3938@extension("VK_KHX_external_semaphore") // 78
3939class VkExportSemaphoreCreateInfoKHX {
3940 VkStructureType sType
3941 const void* pNext
3942 VkExternalSemaphoreHandleTypeFlagsKHX handleTypes
3943}
3944
3945@extension("VK_KHX_external_semaphore_win32") // 79
3946class VkImportSemaphoreWin32HandleInfoKHX {
3947 VkStructureType sType
3948 const void* pNext
3949 VkSemaphore semaphore
3950 VkExternalSemaphoreHandleTypeFlagsKHX handleType
3951 platform.HANDLE handle
3952}
3953
3954@extension("VK_KHX_external_semaphore_win32") // 79
3955class VkExportSemaphoreWin32HandleInfoKHX {
3956 VkStructureType sType
3957 const void* pNext
3958 const platform.SECURITY_ATTRIBUTES* pAttributes
3959 platform.DWORD dwAccess
3960 platform.LPCWSTR name
3961}
3962
3963@extension("VK_KHX_external_semaphore_win32") // 79
3964class VkD3D12FenceSubmitInfoKHX {
3965 VkStructureType sType
3966 const void* pNext
3967 u32 waitSemaphoreValuesCount
3968 const u64* pWaitSemaphoreValues
3969 u32 signalSemaphoreValuesCount
3970 const u64* pSignalSemaphoreValues
3971}
3972
3973@extension("VK_KHX_external_semaphore_fd") // 80
3974class VkImportSemaphoreFdInfoKHX {
3975 VkStructureType sType
3976 const void* pNext
3977 VkSemaphore semaphore
3978 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType
3979 s32 fd
3980}
3981
3982@extension("VK_KHR_push_descriptor") // 81
3983class VkPhysicalDevicePushDescriptorPropertiesKHR {
3984 VkStructureType sType
3985 void* pNext
3986 u32 maxPushDescriptors
3987}
3988
3989@extension("VK_KHR_incremental_present") // 85
3990class VkRectLayerKHR {
3991 VkOffset2D offset
3992 VkExtent2D extent
3993 u32 layer
3994}
3995
3996@extension("VK_KHR_incremental_present") // 85
3997class VkPresentRegionKHR {
3998 u32 rectangleCount
3999 const VkRectLayerKHR* pRectangles
4000}
4001
4002@extension("VK_KHR_incremental_present") // 85
4003class VkPresentRegionsKHR {
4004 VkStructureType sType
4005 const void* pNext
4006 u32 swapchainCount
4007 const VkPresentRegionKHR* pRegions
4008}
4009
4010@extension("VK_KHR_descriptor_update_template") // 86
4011class VkDescriptorUpdateTemplateEntryKHR {
4012 u32 dstBinding
4013 u32 dstArrayElement
4014 u32 descriptorCount
4015 VkDescriptorType descriptorType
4016 platform.size_t offset
4017 platform.size_t stride
4018}
4019
4020@extension("VK_KHR_descriptor_update_template") // 86
4021class VkDescriptorUpdateTemplateCreateInfoKHR {
4022 VkStructureType sType
4023 void* pNext
4024 VkDescriptorUpdateTemplateCreateFlagsKHR flags
4025 u32 descriptorUpdateEntryCount
4026 const VkDescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries
4027 VkDescriptorUpdateTemplateTypeKHR templateType
4028 VkDescriptorSetLayout descriptorSetLayout
4029 VkPipelineBindPoint pipelineBindPoint
4030 VkPipelineLayout pipelineLayout
4031 u32 set
4032}
4033
4034@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004035class VkDeviceGeneratedCommandsFeaturesNVX {
4036 VkStructureType sType
4037 const void* pNext
4038 VkBool32 computeBindingPointSupport
4039}
4040
Jesse Hallad250842017-03-10 18:35:38 -08004041@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004042class VkDeviceGeneratedCommandsLimitsNVX {
4043 VkStructureType sType
4044 const void* pNext
4045 u32 maxIndirectCommandsLayoutTokenCount
4046 u32 maxObjectEntryCounts
4047 u32 minSequenceCountBufferOffsetAlignment
4048 u32 minSequenceIndexBufferOffsetAlignment
4049 u32 minCommandsTokenBufferOffsetAlignment
4050}
4051
Jesse Hallad250842017-03-10 18:35:38 -08004052@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004053class VkIndirectCommandsTokenNVX {
4054 VkIndirectCommandsTokenTypeNVX tokenType
4055 VkBuffer buffer
4056 VkDeviceSize offset
4057}
4058
Jesse Hallad250842017-03-10 18:35:38 -08004059@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004060class VkIndirectCommandsLayoutTokenNVX {
4061 VkIndirectCommandsTokenTypeNVX tokenType
4062 u32 bindingUnit
4063 u32 dynamicCount
4064 u32 divisor
4065}
4066
Jesse Hallad250842017-03-10 18:35:38 -08004067@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004068class VkIndirectCommandsLayoutCreateInfoNVX {
4069 VkStructureType sType
4070 const void* pNext
4071 VkPipelineBindPoint pipelineBindPoint
4072 VkIndirectCommandsLayoutUsageFlagsNVX flags
4073 u32 tokenCount
4074 const VkIndirectCommandsLayoutTokenNVX* pTokens
4075}
4076
Jesse Hallad250842017-03-10 18:35:38 -08004077@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004078class VkCmdProcessCommandsInfoNVX {
4079 VkStructureType sType
4080 const void* pNext
4081 VkObjectTableNVX objectTable
4082 VkIndirectCommandsLayoutNVX indirectCommandsLayout
4083 u32 indirectCommandsTokenCount
4084 const VkIndirectCommandsTokenNVX* pIndirectCommandsTokens
4085 u32 maxSequencesCount
4086 VkCommandBuffer targetCommandBuffer
4087 VkBuffer sequencesCountBuffer
4088 VkDeviceSize sequencesCountOffset
4089 VkBuffer sequencesIndexBuffer
4090 VkDeviceSize sequencesIndexOffset
4091}
4092
Jesse Hallad250842017-03-10 18:35:38 -08004093@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004094class VkCmdReserveSpaceForCommandsInfoNVX {
4095 VkStructureType sType
4096 const void* pNext
4097 VkObjectTableNVX objectTable
4098 VkIndirectCommandsLayoutNVX indirectCommandsLayout
4099 u32 maxSequencesCount
4100}
4101
Jesse Hallad250842017-03-10 18:35:38 -08004102@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004103class VkObjectTableCreateInfoNVX {
4104 VkStructureType sType
4105 const void* pNext
4106 u32 objectCount
4107 const VkObjectEntryTypeNVX* pObjectEntryTypes
4108 const u32* pObjectEntryCounts
4109 const VkObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags
4110 u32 maxUniformBuffersPerDescriptor
4111 u32 maxStorageBuffersPerDescriptor
4112 u32 maxStorageImagesPerDescriptor
4113 u32 maxSampledImagesPerDescriptor
4114 u32 maxPipelineLayouts
4115}
4116
Jesse Hallad250842017-03-10 18:35:38 -08004117@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004118class VkObjectTableEntryNVX {
4119 VkObjectEntryTypeNVX type
4120 VkObjectEntryUsageFlagsNVX flags
4121}
4122
Jesse Hallad250842017-03-10 18:35:38 -08004123@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004124class VkObjectTablePipelineEntryNVX {
4125 VkObjectEntryTypeNVX type
4126 VkObjectEntryUsageFlagsNVX flags
4127 VkPipeline pipeline
4128}
4129
Jesse Hallad250842017-03-10 18:35:38 -08004130@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004131class VkObjectTableDescriptorSetEntryNVX {
4132 VkObjectEntryTypeNVX type
4133 VkObjectEntryUsageFlagsNVX flags
4134 VkPipelineLayout pipelineLayout
4135 VkDescriptorSet descriptorSet
4136}
4137
Jesse Hallad250842017-03-10 18:35:38 -08004138@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004139class VkObjectTableVertexBufferEntryNVX {
4140 VkObjectEntryTypeNVX type
4141 VkObjectEntryUsageFlagsNVX flags
4142 VkBuffer buffer
4143}
4144
Jesse Hallad250842017-03-10 18:35:38 -08004145@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004146class VkObjectTableIndexBufferEntryNVX {
4147 VkObjectEntryTypeNVX type
4148 VkObjectEntryUsageFlagsNVX flags
4149 VkBuffer buffer
Jesse Hall77ad05b2017-03-10 22:02:20 -08004150 VkIndexType indexType
Chris Forbes289cb792016-12-30 15:03:55 +13004151}
4152
Jesse Hallad250842017-03-10 18:35:38 -08004153@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004154class VkObjectTablePushConstantEntryNVX {
4155 VkObjectEntryTypeNVX type
4156 VkObjectEntryUsageFlagsNVX flags
4157 VkPipelineLayout pipelineLayout
4158 VkShaderStageFlags stageFlags
4159}
4160
Jesse Hallad250842017-03-10 18:35:38 -08004161@extension("VK_NV_clip_space_w_scaling") // 88
4162class VkViewportWScalingNV {
4163 f32 xcoeff
4164 f32 ycoeff
Jesse Hall889cd9a2017-02-25 22:12:23 -08004165}
4166
Jesse Hallad250842017-03-10 18:35:38 -08004167@extension("VK_NV_clip_space_w_scaling") // 88
4168class VkPipelineViewportWScalingStateCreateInfoNV {
Jesse Hall889cd9a2017-02-25 22:12:23 -08004169 VkStructureType sType
4170 const void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08004171 VkBool32 viewportWScalingEnable
4172 u32 viewportCount
4173 const VkViewportWScalingNV* pViewportWScalings
Jesse Hall889cd9a2017-02-25 22:12:23 -08004174}
4175
Jesse Hallad250842017-03-10 18:35:38 -08004176@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08004177class VkSurfaceCapabilities2EXT {
4178 VkStructureType sType
4179 void* pNext
4180 u32 minImageCount
4181 u32 maxImageCount
4182 VkExtent2D currentExtent
4183 VkExtent2D minImageExtent
4184 VkExtent2D maxImageExtent
4185 u32 maxImageArrayLayers
4186 VkSurfaceTransformFlagsKHR supportedTransforms
4187 VkSurfaceTransformFlagBitsKHR currentTransform
4188 VkCompositeAlphaFlagsKHR supportedCompositeAlpha
4189 VkImageUsageFlags supportedUsageFlags
4190 VkSurfaceCounterFlagsEXT supportedSurfaceCounters
4191}
4192
Jesse Hallad250842017-03-10 18:35:38 -08004193@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08004194class VkDisplayPowerInfoEXT {
4195 VkStructureType sType
4196 const void* pNext
4197 VkDisplayPowerStateEXT powerState
4198}
4199
Jesse Hallad250842017-03-10 18:35:38 -08004200@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08004201class VkDeviceEventInfoEXT {
4202 VkStructureType sType
4203 const void* pNext
4204 VkDeviceEventTypeEXT deviceEvent
4205}
4206
Jesse Hallad250842017-03-10 18:35:38 -08004207@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08004208class VkDisplayEventInfoEXT {
4209 VkStructureType sType
4210 const void* pNext
4211 VkDisplayEventTypeEXT displayEvent
4212}
4213
Jesse Hallad250842017-03-10 18:35:38 -08004214@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08004215class VkSwapchainCounterCreateInfoEXT {
4216 VkStructureType sType
4217 const void* pNext
4218 VkSurfaceCounterFlagsEXT surfaceCounters
4219}
4220
Jesse Hallad250842017-03-10 18:35:38 -08004221@extension("VK_GOOGLE_display_timing") // 93
4222class VkRefreshCycleDurationGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004223 u64 refreshDuration
Jesse Hallad250842017-03-10 18:35:38 -08004224}
4225
4226@extension("VK_GOOGLE_display_timing") // 93
4227class VkPastPresentationTimingGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004228 u32 presentID
4229 u64 desiredPresentTime
4230 u64 actualPresentTime
4231 u64 earliestPresentTime
4232 u64 presentMargin
Jesse Hallad250842017-03-10 18:35:38 -08004233}
4234
4235@extension("VK_GOOGLE_display_timing") // 93
4236class VkPresentTimeGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004237 u32 presentID
4238 u64 desiredPresentTime
Jesse Hallad250842017-03-10 18:35:38 -08004239}
4240
4241@extension("VK_GOOGLE_display_timing") // 93
4242class VkPresentTimesInfoGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004243 VkStructureType sType
4244 const void* pNext
4245 u32 swapchainCount
4246 const VkPresentTimeGOOGLE* pTimes
Jesse Hallad250842017-03-10 18:35:38 -08004247}
4248
4249@extension("VK_NVX_multiview_per_view_attributes") // 98
4250class VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
4251 VkStructureType sType
4252 void* pNext
4253 VkBool32 perViewPositionAllComponents
4254}
4255
4256@extension("VK_NV_viewport_swizzle") // 99
4257class VkViewportSwizzleNV {
4258 VkViewportCoordinateSwizzleNV x
4259 VkViewportCoordinateSwizzleNV y
4260 VkViewportCoordinateSwizzleNV z
4261 VkViewportCoordinateSwizzleNV w
4262}
4263
4264@extension("VK_NV_viewport_swizzle") // 99
4265class VkPipelineViewportSwizzleStateCreateInfoNV {
4266 VkStructureType sType
4267 const void* pNext
4268 VkPipelineViewportSwizzleStateCreateFlagsNV flags
4269 u32 viewportCount
4270 const VkViewportSwizzleNV* pViewportSwizzles
4271}
4272
4273@extension("VK_EXT_discard_rectangles") // 100
4274class VkPhysicalDeviceDiscardRectanglePropertiesEXT {
4275 VkStructureType sType
Jesse Hallf5ad48b2017-03-20 13:09:19 -07004276 void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08004277 u32 maxDiscardRectangles
4278}
4279
4280@extension("VK_EXT_discard_rectangles") // 100
4281class VkPipelineDiscardRectangleStateCreateInfoEXT {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004282 VkStructureType sType
4283 const void* pNext
4284 VkPipelineDiscardRectangleStateCreateFlagsEXT flags
4285 VkDiscardRectangleModeEXT discardRectangleMode
4286 u32 discardRectangleCount
4287 const VkRect2D* pDiscardRectangles
Jesse Hallad250842017-03-10 18:35:38 -08004288}
4289
4290@extension("VK_EXT_hdr_metadata") // 106
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07004291class VkXYColorEXT {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004292 f32 x
4293 f32 y
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07004294}
4295
Jesse Hallad250842017-03-10 18:35:38 -08004296@extension("VK_EXT_hdr_metadata") // 106
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07004297class VkHdrMetadataEXT {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004298 VkStructureType sType
4299 const void* pNext
4300 VkXYColorEXT displayPrimaryRed
4301 VkXYColorEXT displayPrimaryGreen
4302 VkXYColorEXT displayPrimaryBlue
4303 VkXYColorEXT whitePoint
4304 f32 maxLuminance
4305 f32 minLuminance
4306 f32 maxContentLightLevel
4307 f32 maxFrameAverageLightLevel
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07004308}
4309
Jesse Hall05556b12017-05-18 17:40:25 -07004310@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbese2d3ee12017-03-16 16:10:15 +13004311class VkSharedPresentSurfaceCapabilitiesKHR {
4312 VkStructureType sType
4313 const void* pNext
4314 VkImageUsageFlags sharedPresentSupportedUsageFlags
4315}
4316
Jesse Hall05556b12017-05-18 17:40:25 -07004317@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13004318class VkPhysicalDeviceSurfaceInfo2KHR {
4319 VkStructureType sType
4320 const void* pNext
4321 VkSurfaceKHR surface
4322}
4323
Jesse Hall05556b12017-05-18 17:40:25 -07004324@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13004325class VkSurfaceCapabilities2KHR {
4326 VkStructureType sType
4327 void* pNext
4328 VkSurfaceCapabilitiesKHR surfaceCapabilities
4329}
4330
Jesse Hall05556b12017-05-18 17:40:25 -07004331@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13004332class VkSurfaceFormat2KHR {
4333 VkStructureType sType
4334 void* pNext
4335 VkSurfaceFormatKHR surfaceFormat
4336}
4337
Jesse Hallad250842017-03-10 18:35:38 -08004338@extension("VK_MVK_ios_surface") // 123
4339class VkIOSSurfaceCreateInfoMVK {
4340 VkStructureType sType
4341 const void* pNext
4342 VkIOSSurfaceCreateFlagsMVK flags
4343 const void* pView
4344}
4345
4346@extension("VK_MVK_macos_surface") // 124
4347class VkMacOSSurfaceCreateInfoMVK {
4348 VkStructureType sType
4349 const void* pNext
4350 VkMacOSSurfaceCreateFlagsMVK flags
4351 const void* pView
4352}
4353
Jesse Halld27f6aa2015-08-15 17:58:48 -07004354////////////////
4355// Commands //
4356////////////////
4357
4358// Function pointers. TODO: add support for function pointers.
4359
4360@external type void* PFN_vkVoidFunction
4361@pfn cmd void vkVoidFunction() {
4362}
4363
Jesse Hall3fbc8562015-11-29 22:10:52 -08004364@external type void* PFN_vkAllocationFunction
4365@pfn cmd void* vkAllocationFunction(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004366 void* pUserData,
4367 platform.size_t size,
4368 platform.size_t alignment,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004369 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08004370 return ?
4371}
4372
Jesse Hall3fbc8562015-11-29 22:10:52 -08004373@external type void* PFN_vkReallocationFunction
4374@pfn cmd void* vkReallocationFunction(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004375 void* pUserData,
4376 void* pOriginal,
4377 platform.size_t size,
4378 platform.size_t alignment,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004379 VkSystemAllocationScope allocationScope) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004380 return ?
4381}
4382
4383@external type void* PFN_vkFreeFunction
4384@pfn cmd void vkFreeFunction(
4385 void* pUserData,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004386 void* pMemory) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004387}
4388
Jesse Hall3fbc8562015-11-29 22:10:52 -08004389@external type void* PFN_vkInternalAllocationNotification
4390@pfn cmd void vkInternalAllocationNotification(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004391 void* pUserData,
4392 platform.size_t size,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004393 VkInternalAllocationType allocationType,
4394 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08004395}
4396
4397@external type void* PFN_vkInternalFreeNotification
4398@pfn cmd void vkInternalFreeNotification(
4399 void* pUserData,
4400 platform.size_t size,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004401 VkInternalAllocationType allocationType,
4402 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08004403}
Jesse Halld27f6aa2015-08-15 17:58:48 -07004404
4405// Global functions
4406
4407@threadSafety("system")
4408cmd VkResult vkCreateInstance(
4409 const VkInstanceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004410 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004411 VkInstance* pInstance) {
4412 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO)
4413
4414 instance := ?
4415 pInstance[0] = instance
4416 State.Instances[instance] = new!InstanceObject()
4417
Jesse Hall3dd678a2016-01-08 21:52:01 -08004418 layers := pCreateInfo.ppEnabledLayerNames[0:pCreateInfo.enabledLayerCount]
4419 extensions := pCreateInfo.ppEnabledExtensionNames[0:pCreateInfo.enabledExtensionCount]
Jesse Halld27f6aa2015-08-15 17:58:48 -07004420
4421 return ?
4422}
4423
4424@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004425cmd void vkDestroyInstance(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004426 VkInstance instance,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004427 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004428 instanceObject := GetInstance(instance)
4429
4430 State.Instances[instance] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004431}
4432
4433@threadSafety("system")
4434cmd VkResult vkEnumeratePhysicalDevices(
4435 VkInstance instance,
4436 u32* pPhysicalDeviceCount,
4437 VkPhysicalDevice* pPhysicalDevices) {
4438 instanceObject := GetInstance(instance)
4439
4440 physicalDeviceCount := as!u32(?)
4441 pPhysicalDeviceCount[0] = physicalDeviceCount
4442 physicalDevices := pPhysicalDevices[0:physicalDeviceCount]
4443
4444 for i in (0 .. physicalDeviceCount) {
4445 physicalDevice := ?
4446 physicalDevices[i] = physicalDevice
4447 if !(physicalDevice in State.PhysicalDevices) {
4448 State.PhysicalDevices[physicalDevice] = new!PhysicalDeviceObject(instance: instance)
4449 }
4450 }
4451
4452 return ?
4453}
4454
4455cmd PFN_vkVoidFunction vkGetDeviceProcAddr(
4456 VkDevice device,
4457 const char* pName) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004458 if device != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004459 device := GetDevice(device)
4460 }
4461
4462 return ?
4463}
4464
4465cmd PFN_vkVoidFunction vkGetInstanceProcAddr(
4466 VkInstance instance,
4467 const char* pName) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004468 if instance != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004469 instanceObject := GetInstance(instance)
4470 }
4471
4472 return ?
4473}
4474
Jesse Hall606a54e2015-11-19 22:17:28 -08004475cmd void vkGetPhysicalDeviceProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004476 VkPhysicalDevice physicalDevice,
4477 VkPhysicalDeviceProperties* pProperties) {
4478 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4479
4480 properties := ?
4481 pProperties[0] = properties
Jesse Halld27f6aa2015-08-15 17:58:48 -07004482}
4483
Jesse Hall606a54e2015-11-19 22:17:28 -08004484cmd void vkGetPhysicalDeviceQueueFamilyProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004485 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004486 u32* pQueueFamilyPropertyCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004487 VkQueueFamilyProperties* pQueueFamilyProperties) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004488 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004489 // TODO: Figure out how to express fetch-count-or-properties
4490 // This version fails 'apic validate' with 'fence not allowed in
4491 // *semantic.Branch'. Other attempts have failed with the same or other
4492 // errors.
4493 // if pQueueFamilyProperties != null {
4494 // queuesProperties := pQueueFamilyProperties[0:pCount[0]]
4495 // for i in (0 .. pCount[0]) {
4496 // queueProperties := as!VkQueueFamilyProperties(?)
4497 // queuesProperties[i] = queueProperties
4498 // }
4499 // } else {
4500 // count := ?
4501 // pCount[0] = count
4502 // }
Jesse Halld27f6aa2015-08-15 17:58:48 -07004503}
4504
Jesse Hall606a54e2015-11-19 22:17:28 -08004505cmd void vkGetPhysicalDeviceMemoryProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004506 VkPhysicalDevice physicalDevice,
4507 VkPhysicalDeviceMemoryProperties* pMemoryProperties) {
4508 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4509
4510 memoryProperties := ?
4511 pMemoryProperties[0] = memoryProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07004512}
4513
Jesse Hall606a54e2015-11-19 22:17:28 -08004514cmd void vkGetPhysicalDeviceFeatures(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004515 VkPhysicalDevice physicalDevice,
4516 VkPhysicalDeviceFeatures* pFeatures) {
4517 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4518
4519 features := ?
4520 pFeatures[0] = features
Jesse Halld27f6aa2015-08-15 17:58:48 -07004521}
4522
Jesse Hall606a54e2015-11-19 22:17:28 -08004523cmd void vkGetPhysicalDeviceFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004524 VkPhysicalDevice physicalDevice,
4525 VkFormat format,
4526 VkFormatProperties* pFormatProperties) {
4527 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4528
4529 formatProperties := ?
4530 pFormatProperties[0] = formatProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07004531}
4532
Jesse Halla9e57032015-11-30 01:03:10 -08004533cmd VkResult vkGetPhysicalDeviceImageFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004534 VkPhysicalDevice physicalDevice,
4535 VkFormat format,
4536 VkImageType type,
4537 VkImageTiling tiling,
4538 VkImageUsageFlags usage,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004539 VkImageCreateFlags flags,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004540 VkImageFormatProperties* pImageFormatProperties) {
4541 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4542
4543 imageFormatProperties := ?
4544 pImageFormatProperties[0] = imageFormatProperties
Jesse Halla9e57032015-11-30 01:03:10 -08004545
4546 return ?
Jesse Halld27f6aa2015-08-15 17:58:48 -07004547}
4548
Jesse Halld27f6aa2015-08-15 17:58:48 -07004549
4550// Device functions
4551
4552@threadSafety("system")
4553cmd VkResult vkCreateDevice(
4554 VkPhysicalDevice physicalDevice,
4555 const VkDeviceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004556 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004557 VkDevice* pDevice) {
4558 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO)
4559 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4560
4561 device := ?
4562 pDevice[0] = device
4563 State.Devices[device] = new!DeviceObject(physicalDevice: physicalDevice)
4564
4565 return ?
4566}
4567
4568@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004569cmd void vkDestroyDevice(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004570 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004571 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004572 deviceObject := GetDevice(device)
4573
4574 State.Devices[device] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004575}
4576
4577
4578// Extension discovery functions
4579
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004580cmd VkResult vkEnumerateInstanceLayerProperties(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004581 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004582 VkLayerProperties* pProperties) {
4583 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08004584 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07004585
4586 properties := pProperties[0:count]
4587 for i in (0 .. count) {
4588 property := ?
4589 properties[i] = property
4590 }
4591
4592 return ?
4593}
4594
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004595cmd VkResult vkEnumerateInstanceExtensionProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004596 const char* pLayerName,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004597 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004598 VkExtensionProperties* pProperties) {
4599 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08004600 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07004601
4602 properties := pProperties[0:count]
4603 for i in (0 .. count) {
4604 property := ?
4605 properties[i] = property
4606 }
4607
4608 return ?
4609}
4610
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004611cmd VkResult vkEnumerateDeviceLayerProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004612 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004613 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004614 VkLayerProperties* pProperties) {
4615 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4616 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08004617 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07004618
4619 properties := pProperties[0:count]
4620 for i in (0 .. count) {
4621 property := ?
4622 properties[i] = property
4623 }
4624
4625 return ?
4626}
4627
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004628cmd VkResult vkEnumerateDeviceExtensionProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004629 VkPhysicalDevice physicalDevice,
4630 const char* pLayerName,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004631 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004632 VkExtensionProperties* pProperties) {
4633 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4634
4635 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08004636 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07004637
4638 properties := pProperties[0:count]
4639 for i in (0 .. count) {
4640 property := ?
4641 properties[i] = property
4642 }
4643
4644 return ?
4645}
4646
4647
4648// Queue functions
4649
4650@threadSafety("system")
Jesse Hall606a54e2015-11-19 22:17:28 -08004651cmd void vkGetDeviceQueue(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004652 VkDevice device,
4653 u32 queueFamilyIndex,
4654 u32 queueIndex,
4655 VkQueue* pQueue) {
4656 deviceObject := GetDevice(device)
4657
4658 queue := ?
4659 pQueue[0] = queue
4660
4661 if !(queue in State.Queues) {
4662 State.Queues[queue] = new!QueueObject(device: device)
4663 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07004664}
4665
4666@threadSafety("app")
4667cmd VkResult vkQueueSubmit(
4668 VkQueue queue,
Jesse Halla366a512015-11-19 22:30:07 -08004669 u32 submitCount,
Jesse Hallb00daad2015-11-29 19:46:20 -08004670 const VkSubmitInfo* pSubmits,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004671 VkFence fence) {
4672 queueObject := GetQueue(queue)
4673
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004674 if fence != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004675 fenceObject := GetFence(fence)
4676 assert(fenceObject.device == queueObject.device)
4677 }
4678
Jesse Hall3fbc8562015-11-29 22:10:52 -08004679 // commandBuffers := pcommandBuffers[0:commandBufferCount]
4680 // for i in (0 .. commandBufferCount) {
4681 // commandBuffer := commandBuffers[i]
4682 // commandBufferObject := GetCommandBuffer(commandBuffer)
4683 // assert(commandBufferObject.device == queueObject.device)
Jesse Halla366a512015-11-19 22:30:07 -08004684 //
Jesse Hall3fbc8562015-11-29 22:10:52 -08004685 // validate("QueueCheck", commandBufferObject.queueFlags in queueObject.flags,
4686 // "vkQueueSubmit: enqueued commandBuffer requires missing queue capabilities.")
Jesse Halla366a512015-11-19 22:30:07 -08004687 // }
Jesse Halld27f6aa2015-08-15 17:58:48 -07004688
4689 return ?
4690}
4691
4692@threadSafety("system")
4693cmd VkResult vkQueueWaitIdle(
4694 VkQueue queue) {
4695 queueObject := GetQueue(queue)
4696
4697 return ?
4698}
4699
4700@threadSafety("system")
4701cmd VkResult vkDeviceWaitIdle(
4702 VkDevice device) {
4703 deviceObject := GetDevice(device)
4704
4705 return ?
4706}
4707
4708
4709// Memory functions
4710
4711@threadSafety("system")
Jesse Hall3fbc8562015-11-29 22:10:52 -08004712cmd VkResult vkAllocateMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004713 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004714 const VkMemoryAllocateInfo* pAllocateInfo,
4715 const VkAllocationCallbacks* pAllocator,
4716 VkDeviceMemory* pMemory) {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08004717 assert(pAllocateInfo.sType == VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004718 deviceObject := GetDevice(device)
4719
Jesse Hall3fbc8562015-11-29 22:10:52 -08004720 memory := ?
4721 pMemory[0] = memory
4722 State.DeviceMemories[memory] = new!DeviceMemoryObject(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004723 device: device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004724 allocationSize: pAllocateInfo[0].allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004725
4726 return ?
4727}
4728
4729@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004730cmd void vkFreeMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004731 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004732 VkDeviceMemory memory,
4733 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004734 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08004735 memoryObject := GetDeviceMemory(memory)
4736 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004737
4738 // Check that no objects are still bound before freeing.
Jesse Hall3fbc8562015-11-29 22:10:52 -08004739 validate("MemoryCheck", len(memoryObject.boundObjects) == 0,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004740 "vkFreeMemory: objects still bound")
Jesse Hall3fbc8562015-11-29 22:10:52 -08004741 validate("MemoryCheck", len(memoryObject.boundCommandBuffers) == 0,
4742 "vkFreeMemory: commandBuffers still bound")
4743 State.DeviceMemories[memory] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004744}
4745
4746@threadSafety("app")
4747cmd VkResult vkMapMemory(
4748 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004749 VkDeviceMemory memory,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004750 VkDeviceSize offset,
4751 VkDeviceSize size,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004752 VkMemoryMapFlags flags,
4753 void** ppData) {
4754 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08004755 memoryObject := GetDeviceMemory(memory)
4756 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004757
4758 assert(flags == as!VkMemoryMapFlags(0))
Jesse Hall3fbc8562015-11-29 22:10:52 -08004759 assert((offset + size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004760
4761 return ?
4762}
4763
4764@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004765cmd void vkUnmapMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004766 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004767 VkDeviceMemory memory) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004768 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08004769 memoryObject := GetDeviceMemory(memory)
4770 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004771}
4772
4773cmd VkResult vkFlushMappedMemoryRanges(
4774 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004775 u32 memoryRangeCount
4776 const VkMappedMemoryRange* pMemoryRanges) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004777 deviceObject := GetDevice(device)
4778
Jesse Hall3fbc8562015-11-29 22:10:52 -08004779 memoryRanges := pMemoryRanges[0:memoryRangeCount]
4780 for i in (0 .. memoryRangeCount) {
4781 memoryRange := memoryRanges[i]
4782 memoryObject := GetDeviceMemory(memoryRange.memory)
4783 assert(memoryObject.device == device)
4784 assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004785 }
4786
4787 return ?
4788}
4789
4790cmd VkResult vkInvalidateMappedMemoryRanges(
4791 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004792 u32 memoryRangeCount,
4793 const VkMappedMemoryRange* pMemoryRanges) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004794 deviceObject := GetDevice(device)
4795
Jesse Hall3fbc8562015-11-29 22:10:52 -08004796 memoryRanges := pMemoryRanges[0:memoryRangeCount]
4797 for i in (0 .. memoryRangeCount) {
4798 memoryRange := memoryRanges[i]
4799 memoryObject := GetDeviceMemory(memoryRange.memory)
4800 assert(memoryObject.device == device)
4801 assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004802 }
4803
4804 return ?
4805}
4806
4807
4808// Memory management API functions
4809
Jesse Hall606a54e2015-11-19 22:17:28 -08004810cmd void vkGetDeviceMemoryCommitment(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004811 VkDevice device,
4812 VkDeviceMemory memory,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004813 VkDeviceSize* pCommittedMemoryInBytes) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004814 deviceObject := GetDevice(device)
4815
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004816 if memory != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004817 memoryObject := GetDeviceMemory(memory)
4818 assert(memoryObject.device == device)
4819 }
4820
4821 committedMemoryInBytes := ?
4822 pCommittedMemoryInBytes[0] = committedMemoryInBytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07004823}
4824
Jesse Hall606a54e2015-11-19 22:17:28 -08004825cmd void vkGetBufferMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004826 VkDevice device,
4827 VkBuffer buffer,
4828 VkMemoryRequirements* pMemoryRequirements) {
4829 deviceObject := GetDevice(device)
4830 bufferObject := GetBuffer(buffer)
4831 assert(bufferObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004832}
4833
4834cmd VkResult vkBindBufferMemory(
4835 VkDevice device,
4836 VkBuffer buffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004837 VkDeviceMemory memory,
4838 VkDeviceSize memoryOffset) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004839 deviceObject := GetDevice(device)
4840 bufferObject := GetBuffer(buffer)
4841 assert(bufferObject.device == device)
4842
4843 // Unbind buffer from previous memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08004844 if bufferObject.memory != NULL_HANDLE {
4845 memoryObject := GetDeviceMemory(bufferObject.memory)
4846 memoryObject.boundObjects[as!u64(buffer)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004847 }
4848
4849 // Bind buffer to given memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08004850 if memory != NULL_HANDLE {
4851 memoryObject := GetDeviceMemory(memory)
4852 assert(memoryObject.device == device)
4853 memoryObject.boundObjects[as!u64(buffer)] = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07004854 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08004855 bufferObject.memory = memory
4856 bufferObject.memoryOffset = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07004857
4858 return ?
4859}
4860
Jesse Hall606a54e2015-11-19 22:17:28 -08004861cmd void vkGetImageMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004862 VkDevice device,
4863 VkImage image,
4864 VkMemoryRequirements* pMemoryRequirements) {
4865 deviceObject := GetDevice(device)
4866 imageObject := GetImage(image)
4867 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004868}
4869
4870cmd VkResult vkBindImageMemory(
4871 VkDevice device,
4872 VkImage image,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004873 VkDeviceMemory memory,
4874 VkDeviceSize memoryOffset) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004875 deviceObject := GetDevice(device)
4876 imageObject := GetImage(image)
4877 assert(imageObject.device == device)
4878
4879 // Unbind image from previous memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08004880 if imageObject.memory != NULL_HANDLE {
4881 memoryObject := GetDeviceMemory(imageObject.memory)
4882 memoryObject.boundObjects[as!u64(image)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004883 }
4884
4885 // Bind image to given memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08004886 if memory != NULL_HANDLE {
4887 memoryObject := GetDeviceMemory(memory)
4888 assert(memoryObject.device == device)
4889 memoryObject.boundObjects[as!u64(image)] = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07004890 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08004891 imageObject.memory = memory
4892 imageObject.memoryOffset = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07004893
4894 return ?
4895}
4896
Jesse Hall606a54e2015-11-19 22:17:28 -08004897cmd void vkGetImageSparseMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004898 VkDevice device,
4899 VkImage image,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004900 u32* pSparseMemoryRequirementCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004901 VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
4902 deviceObject := GetDevice(device)
4903 imageObject := GetImage(image)
4904 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004905}
4906
Jesse Hall606a54e2015-11-19 22:17:28 -08004907cmd void vkGetPhysicalDeviceSparseImageFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004908 VkPhysicalDevice physicalDevice,
4909 VkFormat format,
4910 VkImageType type,
Jesse Hall091ed9e2015-11-30 00:55:29 -08004911 VkSampleCountFlagBits samples,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004912 VkImageUsageFlags usage,
4913 VkImageTiling tiling,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004914 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004915 VkSparseImageFormatProperties* pProperties) {
4916 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004917}
4918
Jesse Halla6429252015-11-29 18:59:42 -08004919cmd VkResult vkQueueBindSparse(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004920 VkQueue queue,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004921 u32 bindInfoCount,
Jesse Halla6429252015-11-29 18:59:42 -08004922 const VkBindSparseInfo* pBindInfo,
4923 VkFence fence) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004924 queueObject := GetQueue(queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004925
4926 return ?
4927}
4928
4929
4930// Fence functions
4931
4932@threadSafety("system")
4933cmd VkResult vkCreateFence(
4934 VkDevice device,
4935 const VkFenceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004936 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004937 VkFence* pFence) {
4938 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FENCE_CREATE_INFO)
4939 deviceObject := GetDevice(device)
4940
4941 fence := ?
4942 pFence[0] = fence
4943 State.Fences[fence] = new!FenceObject(
Jesse Halld8bade02015-11-24 10:24:18 -08004944 device: device, signaled: (pCreateInfo.flags == as!VkFenceCreateFlags(VK_FENCE_CREATE_SIGNALED_BIT)))
Jesse Halld27f6aa2015-08-15 17:58:48 -07004945
4946 return ?
4947}
4948
4949@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004950cmd void vkDestroyFence(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004951 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004952 VkFence fence,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004953 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004954 deviceObject := GetDevice(device)
4955 fenceObject := GetFence(fence)
4956 assert(fenceObject.device == device)
4957
4958 State.Fences[fence] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004959}
4960
4961@threadSafety("system")
4962cmd VkResult vkResetFences(
4963 VkDevice device,
4964 u32 fenceCount,
4965 const VkFence* pFences) {
4966 deviceObject := GetDevice(device)
4967
4968 fences := pFences[0:fenceCount]
4969 for i in (0 .. fenceCount) {
4970 fence := fences[i]
4971 fenceObject := GetFence(fence)
4972 assert(fenceObject.device == device)
4973 fenceObject.signaled = false
4974 }
4975
4976 return ?
4977}
4978
4979@threadSafety("system")
4980cmd VkResult vkGetFenceStatus(
4981 VkDevice device,
4982 VkFence fence) {
4983 deviceObject := GetDevice(device)
4984 fenceObject := GetFence(fence)
4985 assert(fenceObject.device == device)
4986
4987 return ?
4988}
4989
4990@threadSafety("system")
4991cmd VkResult vkWaitForFences(
4992 VkDevice device,
4993 u32 fenceCount,
4994 const VkFence* pFences,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004995 VkBool32 waitAll,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004996 u64 timeout) { /// timeout in nanoseconds
4997 deviceObject := GetDevice(device)
4998
4999 fences := pFences[0:fenceCount]
5000 for i in (0 .. fenceCount) {
5001 fence := fences[i]
5002 fenceObject := GetFence(fence)
5003 assert(fenceObject.device == device)
5004 }
5005
5006 return ?
5007}
5008
5009
5010// Queue semaphore functions
5011
5012@threadSafety("system")
5013cmd VkResult vkCreateSemaphore(
5014 VkDevice device,
5015 const VkSemaphoreCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005016 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005017 VkSemaphore* pSemaphore) {
5018 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO)
5019 deviceObject := GetDevice(device)
5020
5021 semaphore := ?
5022 pSemaphore[0] = semaphore
5023 State.Semaphores[semaphore] = new!SemaphoreObject(device: device)
5024
5025 return ?
5026}
5027
5028@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005029cmd void vkDestroySemaphore(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005030 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005031 VkSemaphore semaphore,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005032 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005033 deviceObject := GetDevice(device)
5034 semaphoreObject := GetSemaphore(semaphore)
5035 assert(semaphoreObject.device == device)
5036
5037 State.Semaphores[semaphore] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005038}
5039
Jesse Halld27f6aa2015-08-15 17:58:48 -07005040
5041// Event functions
5042
5043@threadSafety("system")
5044cmd VkResult vkCreateEvent(
5045 VkDevice device,
5046 const VkEventCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005047 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005048 VkEvent* pEvent) {
5049 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_EVENT_CREATE_INFO)
5050 deviceObject := GetDevice(device)
5051
5052 event := ?
5053 pEvent[0] = event
5054 State.Events[event] = new!EventObject(device: device)
5055
5056 return ?
5057}
5058
5059@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005060cmd void vkDestroyEvent(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005061 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005062 VkEvent event,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005063 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005064 deviceObject := GetDevice(device)
5065 eventObject := GetEvent(event)
5066 assert(eventObject.device == device)
5067
5068 State.Events[event] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005069}
5070
5071@threadSafety("system")
5072cmd VkResult vkGetEventStatus(
5073 VkDevice device,
5074 VkEvent event) {
5075 deviceObject := GetDevice(device)
5076 eventObject := GetEvent(event)
5077 assert(eventObject.device == device)
5078
5079 return ?
5080}
5081
5082@threadSafety("system")
5083cmd VkResult vkSetEvent(
5084 VkDevice device,
5085 VkEvent event) {
5086 deviceObject := GetDevice(device)
5087 eventObject := GetEvent(event)
5088 assert(eventObject.device == device)
5089
5090 return ?
5091}
5092
5093@threadSafety("system")
5094cmd VkResult vkResetEvent(
5095 VkDevice device,
5096 VkEvent event) {
5097 deviceObject := GetDevice(device)
5098 eventObject := GetEvent(event)
5099 assert(eventObject.device == device)
5100
5101 return ?
5102}
5103
5104
5105// Query functions
5106
5107@threadSafety("system")
5108cmd VkResult vkCreateQueryPool(
5109 VkDevice device,
5110 const VkQueryPoolCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005111 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005112 VkQueryPool* pQueryPool) {
5113 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO)
5114 deviceObject := GetDevice(device)
5115
5116 queryPool := ?
5117 pQueryPool[0] = queryPool
5118 State.QueryPools[queryPool] = new!QueryPoolObject(device: device)
5119
5120 return ?
5121}
5122
5123@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005124cmd void vkDestroyQueryPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005125 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005126 VkQueryPool queryPool,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005127 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005128 deviceObject := GetDevice(device)
5129 queryPoolObject := GetQueryPool(queryPool)
5130 assert(queryPoolObject.device == device)
5131
5132 State.QueryPools[queryPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005133}
5134
5135@threadSafety("system")
5136cmd VkResult vkGetQueryPoolResults(
5137 VkDevice device,
5138 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08005139 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005140 u32 queryCount,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005141 platform.size_t dataSize,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005142 void* pData,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005143 VkDeviceSize stride,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005144 VkQueryResultFlags flags) {
5145 deviceObject := GetDevice(device)
5146 queryPoolObject := GetQueryPool(queryPool)
5147 assert(queryPoolObject.device == device)
5148
Jesse Halld27f6aa2015-08-15 17:58:48 -07005149 data := pData[0:dataSize]
5150
5151 return ?
5152}
5153
5154// Buffer functions
5155
5156@threadSafety("system")
5157cmd VkResult vkCreateBuffer(
5158 VkDevice device,
5159 const VkBufferCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005160 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005161 VkBuffer* pBuffer) {
5162 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO)
5163 deviceObject := GetDevice(device)
5164
5165 buffer := ?
5166 pBuffer[0] = buffer
5167 State.Buffers[buffer] = new!BufferObject(device: device)
5168
5169 return ?
5170}
5171
5172@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005173cmd void vkDestroyBuffer(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005174 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005175 VkBuffer buffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005176 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005177 deviceObject := GetDevice(device)
5178 bufferObject := GetBuffer(buffer)
5179 assert(bufferObject.device == device)
5180
Jesse Hall3fbc8562015-11-29 22:10:52 -08005181 assert(bufferObject.memory == 0)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005182 State.Buffers[buffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005183}
5184
5185
5186// Buffer view functions
5187
5188@threadSafety("system")
5189cmd VkResult vkCreateBufferView(
5190 VkDevice device,
5191 const VkBufferViewCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005192 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005193 VkBufferView* pView) {
5194 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO)
5195 deviceObject := GetDevice(device)
5196
5197 bufferObject := GetBuffer(pCreateInfo.buffer)
5198 assert(bufferObject.device == device)
5199
5200 view := ?
5201 pView[0] = view
5202 State.BufferViews[view] = new!BufferViewObject(device: device, buffer: pCreateInfo.buffer)
5203
5204 return ?
5205}
5206
5207@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005208cmd void vkDestroyBufferView(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005209 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005210 VkBufferView bufferView,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005211 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005212 deviceObject := GetDevice(device)
5213 bufferViewObject := GetBufferView(bufferView)
5214 assert(bufferViewObject.device == device)
5215
5216 State.BufferViews[bufferView] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005217}
5218
5219
5220// Image functions
5221
5222@threadSafety("system")
5223cmd VkResult vkCreateImage(
5224 VkDevice device,
5225 const VkImageCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005226 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005227 VkImage* pImage) {
5228 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO)
5229 deviceObject := GetDevice(device)
5230
5231 image := ?
5232 pImage[0] = image
5233 State.Images[image] = new!ImageObject(device: device)
5234
5235 return ?
5236}
5237
5238@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005239cmd void vkDestroyImage(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005240 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005241 VkImage image,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005242 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005243 deviceObject := GetDevice(device)
5244 imageObject := GetImage(image)
5245 assert(imageObject.device == device)
5246
Jesse Hall3fbc8562015-11-29 22:10:52 -08005247 assert(imageObject.memory == 0)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005248 State.Images[image] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005249}
5250
Jesse Hall606a54e2015-11-19 22:17:28 -08005251cmd void vkGetImageSubresourceLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005252 VkDevice device,
5253 VkImage image,
5254 const VkImageSubresource* pSubresource,
5255 VkSubresourceLayout* pLayout) {
5256 deviceObject := GetDevice(device)
5257 imageObject := GetImage(image)
5258 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005259}
5260
5261
5262// Image view functions
5263
5264@threadSafety("system")
5265cmd VkResult vkCreateImageView(
5266 VkDevice device,
5267 const VkImageViewCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005268 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005269 VkImageView* pView) {
5270 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO)
5271 deviceObject := GetDevice(device)
5272
5273 imageObject := GetImage(pCreateInfo.image)
5274 assert(imageObject.device == device)
5275
5276 view := ?
5277 pView[0] = view
5278 State.ImageViews[view] = new!ImageViewObject(device: device, image: pCreateInfo.image)
5279
5280 return ?
5281}
5282
5283@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005284cmd void vkDestroyImageView(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005285 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005286 VkImageView imageView,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005287 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005288 deviceObject := GetDevice(device)
5289 imageViewObject := GetImageView(imageView)
5290 assert(imageViewObject.device == device)
5291
5292 State.ImageViews[imageView] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005293}
5294
5295
5296// Shader functions
5297
5298cmd VkResult vkCreateShaderModule(
5299 VkDevice device,
5300 const VkShaderModuleCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005301 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005302 VkShaderModule* pShaderModule) {
5303 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO)
5304 deviceObject := GetDevice(device)
5305
5306 shaderModule := ?
5307 pShaderModule[0] = shaderModule
5308 State.ShaderModules[shaderModule] = new!ShaderModuleObject(device: device)
5309
5310 return ?
5311}
5312
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005313cmd void vkDestroyShaderModule(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005314 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005315 VkShaderModule shaderModule,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005316 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005317 deviceObject := GetDevice(device)
5318 shaderModuleObject := GetShaderModule(shaderModule)
5319 assert(shaderModuleObject.device == device)
5320
5321 State.ShaderModules[shaderModule] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005322}
5323
Jesse Halld27f6aa2015-08-15 17:58:48 -07005324
5325// Pipeline functions
5326
5327cmd VkResult vkCreatePipelineCache(
5328 VkDevice device,
5329 const VkPipelineCacheCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005330 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005331 VkPipelineCache* pPipelineCache) {
5332 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO)
5333 deviceObject := GetDevice(device)
5334
5335 pipelineCache := ?
5336 pPipelineCache[0] = pipelineCache
5337 State.PipelineCaches[pipelineCache] = new!PipelineCacheObject(device: device)
5338
5339 return ?
5340}
5341
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005342cmd void vkDestroyPipelineCache(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005343 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005344 VkPipelineCache pipelineCache,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005345 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005346 deviceObject := GetDevice(device)
5347 pipelineCacheObject := GetPipelineCache(pipelineCache)
5348 assert(pipelineCacheObject.device == device)
5349
5350 State.PipelineCaches[pipelineCache] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005351}
5352
Jesse Halld27f6aa2015-08-15 17:58:48 -07005353cmd VkResult vkGetPipelineCacheData(
5354 VkDevice device,
5355 VkPipelineCache pipelineCache,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005356 platform.size_t* pDataSize,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005357 void* pData) {
5358 deviceObject := GetDevice(device)
5359 pipelineCacheObject := GetPipelineCache(pipelineCache)
5360 assert(pipelineCacheObject.device == device)
5361
5362 return ?
5363}
5364
5365cmd VkResult vkMergePipelineCaches(
5366 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005367 VkPipelineCache dstCache,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005368 u32 srcCacheCount,
5369 const VkPipelineCache* pSrcCaches) {
5370 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005371 dstCacheObject := GetPipelineCache(dstCache)
5372 assert(dstCacheObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005373
5374 srcCaches := pSrcCaches[0:srcCacheCount]
5375 for i in (0 .. srcCacheCount) {
5376 srcCache := srcCaches[i]
5377 srcCacheObject := GetPipelineCache(srcCache)
5378 assert(srcCacheObject.device == device)
5379 }
5380
5381 return ?
5382}
5383
5384cmd VkResult vkCreateGraphicsPipelines(
5385 VkDevice device,
5386 VkPipelineCache pipelineCache,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005387 u32 createInfoCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005388 const VkGraphicsPipelineCreateInfo* pCreateInfos,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005389 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005390 VkPipeline* pPipelines) {
5391 deviceObject := GetDevice(device)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005392 if pipelineCache != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005393 pipelineCacheObject := GetPipelineCache(pipelineCache)
5394 assert(pipelineCacheObject.device == device)
5395 }
5396
Jesse Hall03b6fe12015-11-24 12:44:21 -08005397 createInfos := pCreateInfos[0:createInfoCount]
5398 pipelines := pPipelines[0:createInfoCount]
5399 for i in (0 .. createInfoCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005400 pipeline := ?
5401 pipelines[i] = pipeline
5402 State.Pipelines[pipeline] = new!PipelineObject(device: device)
5403 }
5404
5405 return ?
5406}
5407
5408cmd VkResult vkCreateComputePipelines(
5409 VkDevice device,
5410 VkPipelineCache pipelineCache,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005411 u32 createInfoCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005412 const VkComputePipelineCreateInfo* pCreateInfos,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005413 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005414 VkPipeline* pPipelines) {
5415 deviceObject := GetDevice(device)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005416 if pipelineCache != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005417 pipelineCacheObject := GetPipelineCache(pipelineCache)
5418 assert(pipelineCacheObject.device == device)
5419 }
5420
Jesse Hall03b6fe12015-11-24 12:44:21 -08005421 createInfos := pCreateInfos[0:createInfoCount]
5422 pipelines := pPipelines[0:createInfoCount]
5423 for i in (0 .. createInfoCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005424 pipeline := ?
5425 pipelines[i] = pipeline
5426 State.Pipelines[pipeline] = new!PipelineObject(device: device)
5427 }
5428
5429 return ?
5430}
5431
5432@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005433cmd void vkDestroyPipeline(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005434 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005435 VkPipeline pipeline,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005436 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005437 deviceObject := GetDevice(device)
5438 pipelineObjects := GetPipeline(pipeline)
5439 assert(pipelineObjects.device == device)
5440
5441 State.Pipelines[pipeline] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005442}
5443
5444
5445// Pipeline layout functions
5446
5447@threadSafety("system")
5448cmd VkResult vkCreatePipelineLayout(
5449 VkDevice device,
5450 const VkPipelineLayoutCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005451 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005452 VkPipelineLayout* pPipelineLayout) {
5453 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO)
5454 deviceObject := GetDevice(device)
5455
5456 pipelineLayout := ?
5457 pPipelineLayout[0] = pipelineLayout
5458 State.PipelineLayouts[pipelineLayout] = new!PipelineLayoutObject(device: device)
5459
5460 return ?
5461}
5462
5463@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005464cmd void vkDestroyPipelineLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005465 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005466 VkPipelineLayout pipelineLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005467 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005468 deviceObject := GetDevice(device)
5469 pipelineLayoutObjects := GetPipelineLayout(pipelineLayout)
5470 assert(pipelineLayoutObjects.device == device)
5471
5472 State.PipelineLayouts[pipelineLayout] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005473}
5474
5475
5476// Sampler functions
5477
5478@threadSafety("system")
5479cmd VkResult vkCreateSampler(
5480 VkDevice device,
5481 const VkSamplerCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005482 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005483 VkSampler* pSampler) {
5484 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO)
5485 deviceObject := GetDevice(device)
5486
5487 sampler := ?
5488 pSampler[0] = sampler
5489 State.Samplers[sampler] = new!SamplerObject(device: device)
5490
5491 return ?
5492}
5493
5494@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005495cmd void vkDestroySampler(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005496 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005497 VkSampler sampler,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005498 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005499 deviceObject := GetDevice(device)
5500 samplerObject := GetSampler(sampler)
5501 assert(samplerObject.device == device)
5502
5503 State.Samplers[sampler] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005504}
5505
5506
5507// Descriptor set functions
5508
5509@threadSafety("system")
5510cmd VkResult vkCreateDescriptorSetLayout(
5511 VkDevice device,
5512 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005513 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005514 VkDescriptorSetLayout* pSetLayout) {
5515 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO)
5516 deviceObject := GetDevice(device)
5517
5518 setLayout := ?
5519 pSetLayout[0] = setLayout
5520 State.DescriptorSetLayouts[setLayout] = new!DescriptorSetLayoutObject(device: device)
5521
5522 return ?
5523}
5524
5525@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005526cmd void vkDestroyDescriptorSetLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005527 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005528 VkDescriptorSetLayout descriptorSetLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005529 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005530 deviceObject := GetDevice(device)
5531 descriptorSetLayoutObject := GetDescriptorSetLayout(descriptorSetLayout)
5532 assert(descriptorSetLayoutObject.device == device)
5533
5534 State.DescriptorSetLayouts[descriptorSetLayout] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005535}
5536
5537@threadSafety("system")
5538cmd VkResult vkCreateDescriptorPool(
5539 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005540 const VkDescriptorPoolCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005541 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005542 VkDescriptorPool* pDescriptorPool) {
5543 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO)
5544 deviceObject := GetDevice(device)
5545
5546 descriptorPool := ?
5547 pDescriptorPool[0] = descriptorPool
5548 State.DescriptorPools[descriptorPool] = new!DescriptorPoolObject(device: device)
5549
5550 return ?
5551}
5552
5553@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005554cmd void vkDestroyDescriptorPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005555 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005556 VkDescriptorPool descriptorPool,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005557 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005558 deviceObject := GetDevice(device)
5559 descriptorPoolObject := GetDescriptorPool(descriptorPool)
5560 assert(descriptorPoolObject.device == device)
5561
5562 State.DescriptorPools[descriptorPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005563}
5564
5565@threadSafety("app")
5566cmd VkResult vkResetDescriptorPool(
5567 VkDevice device,
Jesse Hallfbf97b02015-11-20 14:17:03 -08005568 VkDescriptorPool descriptorPool,
5569 VkDescriptorPoolResetFlags flags) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005570 deviceObject := GetDevice(device)
5571 descriptorPoolObject := GetDescriptorPool(descriptorPool)
5572 assert(descriptorPoolObject.device == device)
5573
5574 return ?
5575}
5576
5577@threadSafety("app")
Jesse Hall3fbc8562015-11-29 22:10:52 -08005578cmd VkResult vkAllocateDescriptorSets(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005579 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005580 const VkDescriptorSetAllocateInfo* pAllocateInfo,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005581 VkDescriptorSet* pDescriptorSets) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005582 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005583 allocInfo := pAllocateInfo[0]
Jesse Hallfbf97b02015-11-20 14:17:03 -08005584 descriptorPoolObject := GetDescriptorPool(allocInfo.descriptorPool)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005585
Jesse Hall03b6fe12015-11-24 12:44:21 -08005586 setLayouts := allocInfo.pSetLayouts[0:allocInfo.setCount]
5587 for i in (0 .. allocInfo.setCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005588 setLayout := setLayouts[i]
5589 setLayoutObject := GetDescriptorSetLayout(setLayout)
5590 assert(setLayoutObject.device == device)
5591 }
5592
Jesse Hall03b6fe12015-11-24 12:44:21 -08005593 descriptorSets := pDescriptorSets[0:allocInfo.setCount]
5594 for i in (0 .. allocInfo.setCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005595 descriptorSet := ?
5596 descriptorSets[i] = descriptorSet
5597 State.DescriptorSets[descriptorSet] = new!DescriptorSetObject(device: device)
5598 }
5599
5600 return ?
5601}
5602
Jesse Hallf09c6b12015-08-15 19:54:28 -07005603cmd VkResult vkFreeDescriptorSets(
5604 VkDevice device,
5605 VkDescriptorPool descriptorPool,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005606 u32 descriptorSetCount,
Jesse Hallf09c6b12015-08-15 19:54:28 -07005607 const VkDescriptorSet* pDescriptorSets) {
5608 deviceObject := GetDevice(device)
5609 descriptorPoolObject := GetDescriptorPool(descriptorPool)
5610
Jesse Hall03b6fe12015-11-24 12:44:21 -08005611 descriptorSets := pDescriptorSets[0:descriptorSetCount]
5612 for i in (0 .. descriptorSetCount) {
Jesse Hallf09c6b12015-08-15 19:54:28 -07005613 descriptorSet := descriptorSets[i]
5614 descriptorSetObject := GetDescriptorSet(descriptorSet)
5615 assert(descriptorSetObject.device == device)
5616 State.DescriptorSets[descriptorSet] = null
5617 }
5618
5619 return ?
5620}
5621
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005622cmd void vkUpdateDescriptorSets(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005623 VkDevice device,
Jesse Hallb00daad2015-11-29 19:46:20 -08005624 u32 descriptorWriteCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005625 const VkWriteDescriptorSet* pDescriptorWrites,
Jesse Hallb00daad2015-11-29 19:46:20 -08005626 u32 descriptorCopyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005627 const VkCopyDescriptorSet* pDescriptorCopies) {
5628 deviceObject := GetDevice(device)
5629
Jesse Hallb00daad2015-11-29 19:46:20 -08005630 descriptorWrites := pDescriptorWrites[0:descriptorWriteCount]
5631 for i in (0 .. descriptorWriteCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005632 descriptorWrite := descriptorWrites[i]
Jesse Hall3fbc8562015-11-29 22:10:52 -08005633 descriptorWriteObject := GetDescriptorSet(descriptorWrite.dstSet)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005634 assert(descriptorWriteObject.device == device)
5635 }
5636
Jesse Hallb00daad2015-11-29 19:46:20 -08005637 descriptorCopies := pDescriptorCopies[0:descriptorCopyCount]
5638 for i in (0 .. descriptorCopyCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005639 descriptorCopy := descriptorCopies[i]
Jesse Hall3fbc8562015-11-29 22:10:52 -08005640 descriptorCopyObject := GetDescriptorSet(descriptorCopy.dstSet)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005641 assert(descriptorCopyObject.device == device)
5642 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07005643}
5644
5645
5646// Framebuffer functions
5647
5648@threadSafety("system")
5649cmd VkResult vkCreateFramebuffer(
5650 VkDevice device,
5651 const VkFramebufferCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005652 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005653 VkFramebuffer* pFramebuffer) {
5654 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO)
5655 deviceObject := GetDevice(device)
5656
5657 framebuffer := ?
5658 pFramebuffer[0] = framebuffer
5659 State.Framebuffers[framebuffer] = new!FramebufferObject(device: device)
5660
5661 return ?
5662}
5663
5664@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005665cmd void vkDestroyFramebuffer(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005666 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005667 VkFramebuffer framebuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005668 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005669 deviceObject := GetDevice(device)
5670 framebufferObject := GetFramebuffer(framebuffer)
5671 assert(framebufferObject.device == device)
5672
5673 State.Framebuffers[framebuffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005674}
5675
5676
5677// Renderpass functions
5678
5679@threadSafety("system")
5680cmd VkResult vkCreateRenderPass(
5681 VkDevice device,
5682 const VkRenderPassCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005683 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005684 VkRenderPass* pRenderPass) {
5685 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO)
5686 deviceObject := GetDevice(device)
5687
5688 renderpass := ?
5689 pRenderPass[0] = renderpass
5690 State.RenderPasses[renderpass] = new!RenderPassObject(device: device)
5691
5692 return ?
5693}
5694
5695@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005696cmd void vkDestroyRenderPass(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005697 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005698 VkRenderPass renderPass,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005699 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005700 deviceObject := GetDevice(device)
5701 renderPassObject := GetRenderPass(renderPass)
5702 assert(renderPassObject.device == device)
5703
5704 State.RenderPasses[renderPass] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005705}
5706
Jesse Hall606a54e2015-11-19 22:17:28 -08005707cmd void vkGetRenderAreaGranularity(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005708 VkDevice device,
5709 VkRenderPass renderPass,
5710 VkExtent2D* pGranularity) {
5711 deviceObject := GetDevice(device)
5712 renderPassObject := GetRenderPass(renderPass)
5713
5714 granularity := ?
5715 pGranularity[0] = granularity
Jesse Halld27f6aa2015-08-15 17:58:48 -07005716}
5717
5718// Command pool functions
5719
5720cmd VkResult vkCreateCommandPool(
5721 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005722 const VkCommandPoolCreateInfo* pCreateInfo,
5723 const VkAllocationCallbacks* pAllocator,
5724 VkCommandPool* pCommandPool) {
5725 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005726 deviceObject := GetDevice(device)
5727
Jesse Hall3fbc8562015-11-29 22:10:52 -08005728 commandPool := ?
5729 pCommandPool[0] = commandPool
5730 State.CommandPools[commandPool] = new!CommandPoolObject(device: device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005731
5732 return ?
5733}
5734
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005735cmd void vkDestroyCommandPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005736 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005737 VkCommandPool commandPool,
5738 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005739 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005740 commandPoolObject := GetCommandPool(commandPool)
5741 assert(commandPoolObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005742
Jesse Hall3fbc8562015-11-29 22:10:52 -08005743 State.CommandPools[commandPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005744}
5745
5746cmd VkResult vkResetCommandPool(
5747 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005748 VkCommandPool commandPool,
5749 VkCommandPoolResetFlags flags) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005750 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005751 commandPoolObject := GetCommandPool(commandPool)
5752 assert(commandPoolObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005753
5754 return ?
5755}
5756
5757// Command buffer functions
5758
Jesse Hall3fbc8562015-11-29 22:10:52 -08005759macro void bindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) {
5760 memoryObject := GetDeviceMemory(memory)
5761 memoryObject.boundCommandBuffers[commandBuffer] = commandBuffer
Jesse Halld27f6aa2015-08-15 17:58:48 -07005762
Jesse Hall3fbc8562015-11-29 22:10:52 -08005763 commandBufferObject := GetCommandBuffer(commandBuffer)
5764 commandBufferObject.boundObjects[as!u64(obj)] = memory
Jesse Halld27f6aa2015-08-15 17:58:48 -07005765}
5766
Jesse Hall3fbc8562015-11-29 22:10:52 -08005767macro void unbindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) {
5768 memoryObject := GetDeviceMemory(memory)
5769 memoryObject.boundCommandBuffers[commandBuffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005770
Jesse Hall3fbc8562015-11-29 22:10:52 -08005771 commandBufferObject := GetCommandBuffer(commandBuffer)
5772 commandBufferObject.boundObjects[as!u64(obj)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005773}
5774
5775@threadSafety("system")
Jesse Hall3fbc8562015-11-29 22:10:52 -08005776cmd VkResult vkAllocateCommandBuffers(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005777 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005778 const VkCommandBufferAllocateInfo* pAllocateInfo,
5779 VkCommandBuffer* pCommandBuffers) {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08005780 assert(pAllocateInfo[0].sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005781
Jesse Hall3dd678a2016-01-08 21:52:01 -08005782 count := pAllocateInfo[0].commandBufferCount
Jesse Hall3fbc8562015-11-29 22:10:52 -08005783 commandBuffers := pCommandBuffers[0:count]
Jesse Hallfbf97b02015-11-20 14:17:03 -08005784 for i in (0 .. count) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005785 commandBuffer := ?
5786 commandBuffers[i] = commandBuffer
5787 State.CommandBuffers[commandBuffer] = new!CommandBufferObject(device: device)
Jesse Hallfbf97b02015-11-20 14:17:03 -08005788 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07005789
5790 return ?
5791}
5792
5793@threadSafety("system")
Jesse Hallfbf97b02015-11-20 14:17:03 -08005794cmd void vkFreeCommandBuffers(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005795 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005796 VkCommandPool commandPool,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005797 u32 commandBufferCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005798 const VkCommandBuffer* pCommandBuffers) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005799 deviceObject := GetDevice(device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005800
Jesse Hall3fbc8562015-11-29 22:10:52 -08005801 commandBuffers := pCommandBuffers[0:commandBufferCount]
Jesse Hall03b6fe12015-11-24 12:44:21 -08005802 for i in (0 .. commandBufferCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005803 commandBufferObject := GetCommandBuffer(commandBuffers[i])
5804 assert(commandBufferObject.device == device)
Jesse Hallfbf97b02015-11-20 14:17:03 -08005805 // TODO: iterate over boundObjects and clear memory bindings
Jesse Hall3fbc8562015-11-29 22:10:52 -08005806 State.CommandBuffers[commandBuffers[i]] = null
Jesse Hallfbf97b02015-11-20 14:17:03 -08005807 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07005808}
5809
5810@threadSafety("app")
5811cmd VkResult vkBeginCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005812 VkCommandBuffer commandBuffer,
5813 const VkCommandBufferBeginInfo* pBeginInfo) {
5814 assert(pBeginInfo.sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO)
5815 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005816
5817 // TODO: iterate over boundObjects and clear memory bindings
5818
5819 return ?
5820}
5821
5822@threadSafety("app")
5823cmd VkResult vkEndCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005824 VkCommandBuffer commandBuffer) {
5825 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005826
5827 return ?
5828}
5829
5830@threadSafety("app")
5831cmd VkResult vkResetCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005832 VkCommandBuffer commandBuffer,
5833 VkCommandBufferResetFlags flags) {
5834 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005835
5836 // TODO: iterate over boundObjects and clear memory bindings
5837
5838 return ?
5839}
5840
5841
5842// Command buffer building functions
5843
5844@threadSafety("app")
5845cmd void vkCmdBindPipeline(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005846 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005847 VkPipelineBindPoint pipelineBindPoint,
5848 VkPipeline pipeline) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005849 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005850 pipelineObject := GetPipeline(pipeline)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005851 assert(commandBufferObject.device == pipelineObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005852
Jesse Halld8bade02015-11-24 10:24:18 -08005853 queue := switch (pipelineBindPoint) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005854 case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT
5855 case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT
5856 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08005857 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005858}
5859
5860@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005861cmd void vkCmdSetViewport(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005862 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08005863 u32 firstViewport,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005864 u32 viewportCount,
5865 const VkViewport* pViewports) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005866 commandBufferObject := GetCommandBuffer(commandBuffer)
5867 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005868}
5869
5870@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005871cmd void vkCmdSetScissor(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005872 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08005873 u32 firstScissor,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005874 u32 scissorCount,
5875 const VkRect2D* pScissors) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005876 commandBufferObject := GetCommandBuffer(commandBuffer)
5877 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005878}
5879
5880@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005881cmd void vkCmdSetLineWidth(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005882 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005883 f32 lineWidth) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005884 commandBufferObject := GetCommandBuffer(commandBuffer)
5885 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005886}
5887
5888@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005889cmd void vkCmdSetDepthBias(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005890 VkCommandBuffer commandBuffer,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005891 f32 depthBiasConstantFactor,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005892 f32 depthBiasClamp,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005893 f32 depthBiasSlopeFactor) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005894 commandBufferObject := GetCommandBuffer(commandBuffer)
5895 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005896}
Jesse Halld27f6aa2015-08-15 17:58:48 -07005897
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005898@threadSafety("app")
5899cmd void vkCmdSetBlendConstants(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005900 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005901 // TODO(jessehall): apic only supports 'const' on pointer types. Using
5902 // an annotation as a quick hack to pass this to the template without
5903 // having to modify the AST and semantic model.
Jesse Hallb00daad2015-11-29 19:46:20 -08005904 @readonly f32[4] blendConstants) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005905 commandBufferObject := GetCommandBuffer(commandBuffer)
5906 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005907}
5908
5909@threadSafety("app")
5910cmd void vkCmdSetDepthBounds(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005911 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005912 f32 minDepthBounds,
5913 f32 maxDepthBounds) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005914 commandBufferObject := GetCommandBuffer(commandBuffer)
5915 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005916}
5917
5918@threadSafety("app")
5919cmd void vkCmdSetStencilCompareMask(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005920 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005921 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08005922 u32 compareMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005923 commandBufferObject := GetCommandBuffer(commandBuffer)
5924 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005925}
5926
5927@threadSafety("app")
5928cmd void vkCmdSetStencilWriteMask(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005929 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005930 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08005931 u32 writeMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005932 commandBufferObject := GetCommandBuffer(commandBuffer)
5933 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005934}
5935
5936@threadSafety("app")
5937cmd void vkCmdSetStencilReference(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005938 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005939 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08005940 u32 reference) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005941 commandBufferObject := GetCommandBuffer(commandBuffer)
5942 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005943}
5944
5945@threadSafety("app")
5946cmd void vkCmdBindDescriptorSets(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005947 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005948 VkPipelineBindPoint pipelineBindPoint,
5949 VkPipelineLayout layout,
5950 u32 firstSet,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005951 u32 descriptorSetCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005952 const VkDescriptorSet* pDescriptorSets,
5953 u32 dynamicOffsetCount,
5954 const u32* pDynamicOffsets) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005955 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005956
Jesse Hall03b6fe12015-11-24 12:44:21 -08005957 descriptorSets := pDescriptorSets[0:descriptorSetCount]
5958 for i in (0 .. descriptorSetCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005959 descriptorSet := descriptorSets[i]
5960 descriptorSetObject := GetDescriptorSet(descriptorSet)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005961 assert(commandBufferObject.device == descriptorSetObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005962 }
5963
5964 dynamicOffsets := pDynamicOffsets[0:dynamicOffsetCount]
5965 for i in (0 .. dynamicOffsetCount) {
5966 dynamicOffset := dynamicOffsets[i]
5967 }
5968
Jesse Halld8bade02015-11-24 10:24:18 -08005969 queue := switch (pipelineBindPoint) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005970 case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT
5971 case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT
5972 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08005973 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005974}
5975
5976@threadSafety("app")
5977cmd void vkCmdBindIndexBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005978 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005979 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005980 VkDeviceSize offset,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005981 VkIndexType indexType) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005982 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005983 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005984 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005985
Jesse Hall3fbc8562015-11-29 22:10:52 -08005986 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005987
Jesse Hall3fbc8562015-11-29 22:10:52 -08005988 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005989}
5990
5991@threadSafety("app")
5992cmd void vkCmdBindVertexBuffers(
Jesse Hall3fbc8562015-11-29 22:10:52 -08005993 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08005994 u32 firstBinding,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005995 u32 bindingCount,
5996 const VkBuffer* pBuffers,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005997 const VkDeviceSize* pOffsets) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005998 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005999
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006000 // TODO: check if not [firstBinding:firstBinding+bindingCount]
Jesse Halld27f6aa2015-08-15 17:58:48 -07006001 buffers := pBuffers[0:bindingCount]
6002 offsets := pOffsets[0:bindingCount]
6003 for i in (0 .. bindingCount) {
6004 buffer := buffers[i]
6005 offset := offsets[i]
6006 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006007 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006008
Jesse Hall3fbc8562015-11-29 22:10:52 -08006009 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006010 }
6011
Jesse Hall3fbc8562015-11-29 22:10:52 -08006012 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006013}
6014
6015@threadSafety("app")
6016cmd void vkCmdDraw(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006017 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006018 u32 vertexCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006019 u32 instanceCount,
6020 u32 firstVertex,
6021 u32 firstInstance) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006022 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006023
Jesse Hall3fbc8562015-11-29 22:10:52 -08006024 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006025}
6026
6027@threadSafety("app")
6028cmd void vkCmdDrawIndexed(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006029 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006030 u32 indexCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006031 u32 instanceCount,
6032 u32 firstIndex,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006033 s32 vertexOffset,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006034 u32 firstInstance) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006035 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006036
Jesse Hall3fbc8562015-11-29 22:10:52 -08006037 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006038}
6039
6040@threadSafety("app")
6041cmd void vkCmdDrawIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006042 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006043 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006044 VkDeviceSize offset,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006045 u32 drawCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006046 u32 stride) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006047 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006048 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006049 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006050
Jesse Hall3fbc8562015-11-29 22:10:52 -08006051 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006052
Jesse Hall3fbc8562015-11-29 22:10:52 -08006053 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006054}
6055
6056@threadSafety("app")
6057cmd void vkCmdDrawIndexedIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006058 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006059 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006060 VkDeviceSize offset,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006061 u32 drawCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006062 u32 stride) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006063 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006064 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006065 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006066
Jesse Hall3fbc8562015-11-29 22:10:52 -08006067 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006068
Jesse Hall3fbc8562015-11-29 22:10:52 -08006069 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006070}
6071
6072@threadSafety("app")
6073cmd void vkCmdDispatch(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006074 VkCommandBuffer commandBuffer,
Jesse Hallad250842017-03-10 18:35:38 -08006075 u32 groupCountX,
6076 u32 groupCountY,
6077 u32 groupCountZ) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006078 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006079
Jesse Hall3fbc8562015-11-29 22:10:52 -08006080 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006081}
6082
6083@threadSafety("app")
6084cmd void vkCmdDispatchIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006085 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006086 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006087 VkDeviceSize offset) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006088 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006089 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006090 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006091
Jesse Hall3fbc8562015-11-29 22:10:52 -08006092 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006093
Jesse Hall3fbc8562015-11-29 22:10:52 -08006094 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006095}
6096
6097@threadSafety("app")
6098cmd void vkCmdCopyBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006099 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006100 VkBuffer srcBuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006101 VkBuffer dstBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006102 u32 regionCount,
6103 const VkBufferCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006104 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006105 srcBufferObject := GetBuffer(srcBuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006106 dstBufferObject := GetBuffer(dstBuffer)
6107 assert(commandBufferObject.device == srcBufferObject.device)
6108 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006109
6110 regions := pRegions[0:regionCount]
6111 for i in (0 .. regionCount) {
6112 region := regions[i]
6113 }
6114
Jesse Hall3fbc8562015-11-29 22:10:52 -08006115 bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory)
6116 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006117
Jesse Hall65ab5522015-11-30 00:07:16 -08006118 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006119}
6120
6121@threadSafety("app")
6122cmd void vkCmdCopyImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006123 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006124 VkImage srcImage,
6125 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006126 VkImage dstImage,
6127 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006128 u32 regionCount,
6129 const VkImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006130 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006131 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006132 dstImageObject := GetImage(dstImage)
6133 assert(commandBufferObject.device == srcImageObject.device)
6134 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006135
6136 regions := pRegions[0:regionCount]
6137 for i in (0 .. regionCount) {
6138 region := regions[i]
6139 }
6140
Jesse Hall3fbc8562015-11-29 22:10:52 -08006141 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6142 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006143
Jesse Hall65ab5522015-11-30 00:07:16 -08006144 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006145}
6146
6147@threadSafety("app")
6148cmd void vkCmdBlitImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006149 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006150 VkImage srcImage,
6151 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006152 VkImage dstImage,
6153 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006154 u32 regionCount,
6155 const VkImageBlit* pRegions,
Jesse Hall23ff73f2015-11-29 14:36:39 -08006156 VkFilter filter) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006157 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006158 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006159 dstImageObject := GetImage(dstImage)
6160 assert(commandBufferObject.device == srcImageObject.device)
6161 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006162
6163 regions := pRegions[0:regionCount]
6164 for i in (0 .. regionCount) {
6165 region := regions[i]
6166 }
6167
Jesse Hall3fbc8562015-11-29 22:10:52 -08006168 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6169 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006170
Jesse Hall3fbc8562015-11-29 22:10:52 -08006171 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006172}
6173
6174@threadSafety("app")
6175cmd void vkCmdCopyBufferToImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006176 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006177 VkBuffer srcBuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006178 VkImage dstImage,
6179 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006180 u32 regionCount,
6181 const VkBufferImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006182 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006183 srcBufferObject := GetBuffer(srcBuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006184 dstImageObject := GetImage(dstImage)
6185 assert(commandBufferObject.device == srcBufferObject.device)
6186 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006187
6188 regions := pRegions[0:regionCount]
6189 for i in (0 .. regionCount) {
6190 region := regions[i]
6191 }
6192
Jesse Hall3fbc8562015-11-29 22:10:52 -08006193 bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory)
6194 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006195
Jesse Hall65ab5522015-11-30 00:07:16 -08006196 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006197}
6198
6199@threadSafety("app")
6200cmd void vkCmdCopyImageToBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006201 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006202 VkImage srcImage,
6203 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006204 VkBuffer dstBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006205 u32 regionCount,
6206 const VkBufferImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006207 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006208 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006209 dstBufferObject := GetBuffer(dstBuffer)
6210 assert(commandBufferObject.device == srcImageObject.device)
6211 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006212
6213 regions := pRegions[0:regionCount]
6214 for i in (0 .. regionCount) {
6215 region := regions[i]
6216 }
6217
Jesse Hall3fbc8562015-11-29 22:10:52 -08006218 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6219 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006220
Jesse Hall65ab5522015-11-30 00:07:16 -08006221 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006222}
6223
6224@threadSafety("app")
6225cmd void vkCmdUpdateBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006226 VkCommandBuffer commandBuffer,
6227 VkBuffer dstBuffer,
6228 VkDeviceSize dstOffset,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006229 VkDeviceSize dataSize,
Jesse Hall56d386a2016-07-26 15:20:40 -07006230 const void* pData) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006231 commandBufferObject := GetCommandBuffer(commandBuffer)
6232 dstBufferObject := GetBuffer(dstBuffer)
6233 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006234
6235 data := pData[0:dataSize]
6236
Jesse Hall3fbc8562015-11-29 22:10:52 -08006237 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006238
Jesse Hall65ab5522015-11-30 00:07:16 -08006239 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006240}
6241
6242@threadSafety("app")
6243cmd void vkCmdFillBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006244 VkCommandBuffer commandBuffer,
6245 VkBuffer dstBuffer,
6246 VkDeviceSize dstOffset,
Jesse Hallb00daad2015-11-29 19:46:20 -08006247 VkDeviceSize size,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006248 u32 data) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006249 commandBufferObject := GetCommandBuffer(commandBuffer)
6250 dstBufferObject := GetBuffer(dstBuffer)
6251 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006252
Jesse Hall65ab5522015-11-30 00:07:16 -08006253 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006254}
6255
6256@threadSafety("app")
6257cmd void vkCmdClearColorImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006258 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006259 VkImage image,
6260 VkImageLayout imageLayout,
6261 const VkClearColorValue* pColor,
6262 u32 rangeCount,
6263 const VkImageSubresourceRange* pRanges) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006264 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006265 imageObject := GetImage(image)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006266 assert(commandBufferObject.device == imageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006267
6268 ranges := pRanges[0:rangeCount]
6269 for i in (0 .. rangeCount) {
6270 range := ranges[i]
6271 }
6272
Jesse Hall3fbc8562015-11-29 22:10:52 -08006273 bindCommandBuffer(commandBuffer, image, imageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006274
Jesse Hall3fbc8562015-11-29 22:10:52 -08006275 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006276}
6277
6278@threadSafety("app")
6279cmd void vkCmdClearDepthStencilImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006280 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006281 VkImage image,
6282 VkImageLayout imageLayout,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006283 const VkClearDepthStencilValue* pDepthStencil,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006284 u32 rangeCount,
6285 const VkImageSubresourceRange* pRanges) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006286 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006287 imageObject := GetImage(image)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006288 assert(commandBufferObject.device == imageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006289
6290 ranges := pRanges[0:rangeCount]
6291 for i in (0 .. rangeCount) {
6292 range := ranges[i]
6293 }
6294
Jesse Hall3fbc8562015-11-29 22:10:52 -08006295 bindCommandBuffer(commandBuffer, image, imageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006296
Jesse Hall3fbc8562015-11-29 22:10:52 -08006297 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006298}
6299
6300@threadSafety("app")
Jesse Hallae38f732015-11-19 21:32:50 -08006301cmd void vkCmdClearAttachments(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006302 VkCommandBuffer commandBuffer,
Jesse Hallae38f732015-11-19 21:32:50 -08006303 u32 attachmentCount,
6304 const VkClearAttachment* pAttachments,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006305 u32 rectCount,
Jesse Halla15a4bf2015-11-19 22:48:02 -08006306 const VkClearRect* pRects) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006307 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006308
6309 rects := pRects[0:rectCount]
6310 for i in (0 .. rectCount) {
6311 rect := rects[i]
6312 }
6313
Jesse Hall3fbc8562015-11-29 22:10:52 -08006314 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006315}
6316
6317@threadSafety("app")
6318cmd void vkCmdResolveImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006319 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006320 VkImage srcImage,
6321 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006322 VkImage dstImage,
6323 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006324 u32 regionCount,
6325 const VkImageResolve* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006326 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006327 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006328 dstImageObject := GetImage(dstImage)
6329 assert(commandBufferObject.device == srcImageObject.device)
6330 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006331
6332 regions := pRegions[0:regionCount]
6333 for i in (0 .. regionCount) {
6334 region := regions[i]
6335 }
6336
Jesse Hall3fbc8562015-11-29 22:10:52 -08006337 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6338 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006339
Jesse Hall3fbc8562015-11-29 22:10:52 -08006340 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006341}
6342
6343@threadSafety("app")
6344cmd void vkCmdSetEvent(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006345 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006346 VkEvent event,
6347 VkPipelineStageFlags stageMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006348 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006349 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006350 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006351}
6352
6353@threadSafety("app")
6354cmd void vkCmdResetEvent(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006355 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006356 VkEvent event,
6357 VkPipelineStageFlags stageMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006358 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006359 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006360 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006361}
6362
6363@threadSafety("app")
6364cmd void vkCmdWaitEvents(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006365 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006366 u32 eventCount,
6367 const VkEvent* pEvents,
6368 VkPipelineStageFlags srcStageMask,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006369 VkPipelineStageFlags dstStageMask,
6370 u32 memoryBarrierCount,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006371 const VkMemoryBarrier* pMemoryBarriers,
6372 u32 bufferMemoryBarrierCount,
6373 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
6374 u32 imageMemoryBarrierCount,
6375 const VkImageMemoryBarrier* pImageMemoryBarriers) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006376 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006377
6378 events := pEvents[0:eventCount]
6379 for i in (0 .. eventCount) {
6380 event := events[i]
6381 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006382 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006383 }
6384
Jesse Hall3dd678a2016-01-08 21:52:01 -08006385 memoryBarriers := pMemoryBarriers[0:memoryBarrierCount]
Jesse Hall3fbc8562015-11-29 22:10:52 -08006386 for i in (0 .. memoryBarrierCount) {
Jesse Hall3dd678a2016-01-08 21:52:01 -08006387 memoryBarrier := memoryBarriers[i]
6388 }
6389 bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount]
6390 for i in (0 .. bufferMemoryBarrierCount) {
6391 bufferMemoryBarrier := bufferMemoryBarriers[i]
6392 bufferObject := GetBuffer(bufferMemoryBarrier.buffer)
6393 assert(bufferObject.device == commandBufferObject.device)
6394 }
6395 imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount]
6396 for i in (0 .. imageMemoryBarrierCount) {
6397 imageMemoryBarrier := imageMemoryBarriers[i]
6398 imageObject := GetImage(imageMemoryBarrier.image)
6399 assert(imageObject.device == commandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006400 }
6401}
6402
6403@threadSafety("app")
6404cmd void vkCmdPipelineBarrier(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006405 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006406 VkPipelineStageFlags srcStageMask,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006407 VkPipelineStageFlags dstStageMask,
Jesse Halldc6d36c2015-11-29 19:12:15 -08006408 VkDependencyFlags dependencyFlags,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006409 u32 memoryBarrierCount,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006410 const VkMemoryBarrier* pMemoryBarriers,
6411 u32 bufferMemoryBarrierCount,
6412 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
6413 u32 imageMemoryBarrierCount,
6414 const VkImageMemoryBarrier* pImageMemoryBarriers) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006415 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006416
Jesse Hall3dd678a2016-01-08 21:52:01 -08006417 memoryBarriers := pMemoryBarriers[0:memoryBarrierCount]
Jesse Hall3fbc8562015-11-29 22:10:52 -08006418 for i in (0 .. memoryBarrierCount) {
Jesse Hall3dd678a2016-01-08 21:52:01 -08006419 memoryBarrier := memoryBarriers[i]
6420 }
6421 bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount]
6422 for i in (0 .. bufferMemoryBarrierCount) {
6423 bufferMemoryBarrier := bufferMemoryBarriers[i]
6424 bufferObject := GetBuffer(bufferMemoryBarrier.buffer)
6425 assert(bufferObject.device == commandBufferObject.device)
6426 }
6427 imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount]
6428 for i in (0 .. imageMemoryBarrierCount) {
6429 imageMemoryBarrier := imageMemoryBarriers[i]
6430 imageObject := GetImage(imageMemoryBarrier.image)
6431 assert(imageObject.device == commandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006432 }
6433}
6434
6435@threadSafety("app")
6436cmd void vkCmdBeginQuery(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006437 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006438 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006439 u32 query,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006440 VkQueryControlFlags flags) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006441 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006442 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006443 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006444}
6445
6446@threadSafety("app")
6447cmd void vkCmdEndQuery(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006448 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006449 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006450 u32 query) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006451 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006452 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006453 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006454}
6455
6456@threadSafety("app")
6457cmd void vkCmdResetQueryPool(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006458 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006459 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006460 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006461 u32 queryCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006462 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006463 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006464 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006465}
6466
6467@threadSafety("app")
6468cmd void vkCmdWriteTimestamp(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006469 VkCommandBuffer commandBuffer,
Jesse Hall6f39a6d2015-11-24 11:08:36 -08006470 VkPipelineStageFlagBits pipelineStage,
Jesse Halla3a7a1d2015-11-24 11:37:23 -08006471 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006472 u32 query) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006473 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halla3a7a1d2015-11-24 11:37:23 -08006474 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006475 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006476}
6477
6478@threadSafety("app")
6479cmd void vkCmdCopyQueryPoolResults(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006480 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006481 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006482 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006483 u32 queryCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006484 VkBuffer dstBuffer,
6485 VkDeviceSize dstOffset,
Jesse Halla9bb62b2015-11-21 19:31:56 -08006486 VkDeviceSize stride,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006487 VkQueryResultFlags flags) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006488 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006489 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006490 dstBufferObject := GetBuffer(dstBuffer)
6491 assert(commandBufferObject.device == queryPoolObject.device)
6492 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006493}
6494
6495cmd void vkCmdPushConstants(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006496 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006497 VkPipelineLayout layout,
6498 VkShaderStageFlags stageFlags,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006499 u32 offset,
6500 u32 size,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08006501 const void* pValues) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006502 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006503 layoutObject := GetPipelineLayout(layout)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006504 assert(commandBufferObject.device == layoutObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006505}
6506
6507@threadSafety("app")
6508cmd void vkCmdBeginRenderPass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006509 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006510 const VkRenderPassBeginInfo* pRenderPassBegin,
Jesse Hall65ab5522015-11-30 00:07:16 -08006511 VkSubpassContents contents) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006512 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006513 renderPassObject := GetRenderPass(pRenderPassBegin.renderPass)
6514 framebufferObject := GetFramebuffer(pRenderPassBegin.framebuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006515 assert(commandBufferObject.device == renderPassObject.device)
6516 assert(commandBufferObject.device == framebufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006517
Jesse Hall3fbc8562015-11-29 22:10:52 -08006518 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006519}
6520
6521cmd void vkCmdNextSubpass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006522 VkCommandBuffer commandBuffer,
Jesse Hall65ab5522015-11-30 00:07:16 -08006523 VkSubpassContents contents) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006524 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006525}
6526
6527@threadSafety("app")
6528cmd void vkCmdEndRenderPass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006529 VkCommandBuffer commandBuffer) {
6530 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006531
Jesse Hall3fbc8562015-11-29 22:10:52 -08006532 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006533}
6534
6535cmd void vkCmdExecuteCommands(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006536 VkCommandBuffer commandBuffer,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006537 u32 commandBufferCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006538 const VkCommandBuffer* pCommandBuffers) {
6539 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006540
Jesse Hall3dd678a2016-01-08 21:52:01 -08006541 commandBuffers := pCommandBuffers[0:commandBufferCount]
6542 for i in (0 .. commandBufferCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006543 secondaryCommandBuffer := commandBuffers[i]
6544 secondaryCommandBufferObject := GetCommandBuffer(secondaryCommandBuffer)
6545 assert(commandBufferObject.device == secondaryCommandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006546 }
6547}
6548
Jesse Hallad250842017-03-10 18:35:38 -08006549@extension("VK_KHR_surface") // 1
Jesse Hall1356b0d2015-11-23 17:24:58 -08006550cmd void vkDestroySurfaceKHR(
6551 VkInstance instance,
Jesse Hall0e74f002015-11-30 11:37:59 -08006552 VkSurfaceKHR surface,
6553 const VkAllocationCallbacks* pAllocator) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08006554 instanceObject := GetInstance(instance)
6555 surfaceObject := GetSurface(surface)
6556 assert(surfaceObject.instance == instance)
Michael Lentine88594d72015-11-12 12:49:45 -08006557
Jesse Hall1356b0d2015-11-23 17:24:58 -08006558 State.Surfaces[surface] = null
Jesse Hall2818f932015-11-19 21:19:17 -08006559}
6560
Jesse Hallad250842017-03-10 18:35:38 -08006561@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08006562cmd VkResult vkGetPhysicalDeviceSurfaceSupportKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08006563 VkPhysicalDevice physicalDevice,
6564 u32 queueFamilyIndex,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006565 VkSurfaceKHR surface,
Jesse Hallb00daad2015-11-29 19:46:20 -08006566 VkBool32* pSupported) {
6567 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08006568
6569 return ?
6570}
6571
Jesse Hallad250842017-03-10 18:35:38 -08006572@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08006573cmd VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
6574 VkPhysicalDevice physicalDevice,
6575 VkSurfaceKHR surface,
6576 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) {
6577 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6578
6579 surfaceCapabilities := ?
6580 pSurfaceCapabilities[0] = surfaceCapabilities
6581
6582 return ?
6583}
6584
Jesse Hallad250842017-03-10 18:35:38 -08006585@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08006586cmd VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(
6587 VkPhysicalDevice physicalDevice,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006588 VkSurfaceKHR surface,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006589 u32* pSurfaceFormatCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006590 VkSurfaceFormatKHR* pSurfaceFormats) {
Jesse Hallb00daad2015-11-29 19:46:20 -08006591 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08006592
6593 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08006594 pSurfaceFormatCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08006595 surfaceFormats := pSurfaceFormats[0:count]
6596
6597 for i in (0 .. count) {
6598 surfaceFormat := ?
6599 surfaceFormats[i] = surfaceFormat
6600 }
6601
6602 return ?
6603}
6604
Jesse Hallad250842017-03-10 18:35:38 -08006605@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08006606cmd VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(
6607 VkPhysicalDevice physicalDevice,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006608 VkSurfaceKHR surface,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006609 u32* pPresentModeCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006610 VkPresentModeKHR* pPresentModes) {
Jesse Hallb00daad2015-11-29 19:46:20 -08006611 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08006612
6613 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08006614 pPresentModeCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08006615 presentModes := pPresentModes[0:count]
6616
6617 for i in (0 .. count) {
6618 presentMode := ?
6619 presentModes[i] = presentMode
6620 }
6621
6622 return ?
6623}
6624
Jesse Hallad250842017-03-10 18:35:38 -08006625@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08006626cmd VkResult vkCreateSwapchainKHR(
6627 VkDevice device,
6628 const VkSwapchainCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006629 const VkAllocationCallbacks* pAllocator,
Michael Lentine88594d72015-11-12 12:49:45 -08006630 VkSwapchainKHR* pSwapchain) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08006631 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR)
Michael Lentine88594d72015-11-12 12:49:45 -08006632 deviceObject := GetDevice(device)
6633
6634 swapchain := ?
6635 pSwapchain[0] = swapchain
6636 State.Swapchains[swapchain] = new!SwapchainObject(device: device)
6637
6638 return ?
6639}
6640
Jesse Hallad250842017-03-10 18:35:38 -08006641@extension("VK_KHR_swapchain") // 2
Jesse Hall1356b0d2015-11-23 17:24:58 -08006642cmd void vkDestroySwapchainKHR(
Michael Lentine88594d72015-11-12 12:49:45 -08006643 VkDevice device,
Jesse Hall0e74f002015-11-30 11:37:59 -08006644 VkSwapchainKHR swapchain,
6645 const VkAllocationCallbacks* pAllocator) {
Michael Lentine88594d72015-11-12 12:49:45 -08006646 deviceObject := GetDevice(device)
6647 swapchainObject := GetSwapchain(swapchain)
6648 assert(swapchainObject.device == device)
6649
6650 State.Swapchains[swapchain] = null
Michael Lentine88594d72015-11-12 12:49:45 -08006651}
6652
Jesse Hallad250842017-03-10 18:35:38 -08006653@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08006654cmd VkResult vkGetSwapchainImagesKHR(
6655 VkDevice device,
6656 VkSwapchainKHR swapchain,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006657 u32* pSwapchainImageCount,
Michael Lentine88594d72015-11-12 12:49:45 -08006658 VkImage* pSwapchainImages) {
6659 deviceObject := GetDevice(device)
6660
6661 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08006662 pSwapchainImageCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08006663 swapchainImages := pSwapchainImages[0:count]
6664
6665 for i in (0 .. count) {
6666 swapchainImage := ?
6667 swapchainImages[i] = swapchainImage
Jesse Hall1356b0d2015-11-23 17:24:58 -08006668 State.Images[swapchainImage] = new!ImageObject(device: device)
Michael Lentine88594d72015-11-12 12:49:45 -08006669 }
6670
6671 return ?
6672}
6673
Jesse Hallad250842017-03-10 18:35:38 -08006674@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08006675cmd VkResult vkAcquireNextImageKHR(
6676 VkDevice device,
6677 VkSwapchainKHR swapchain,
6678 u64 timeout,
6679 VkSemaphore semaphore,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006680 VkFence fence,
Michael Lentine88594d72015-11-12 12:49:45 -08006681 u32* pImageIndex) {
6682 deviceObject := GetDevice(device)
6683 swapchainObject := GetSwapchain(swapchain)
6684
6685 imageIndex := ?
6686 pImageIndex[0] = imageIndex
6687
6688 return ?
6689}
6690
Jesse Hallad250842017-03-10 18:35:38 -08006691@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08006692cmd VkResult vkQueuePresentKHR(
6693 VkQueue queue,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08006694 const VkPresentInfoKHR* pPresentInfo) {
Michael Lentine88594d72015-11-12 12:49:45 -08006695 queueObject := GetQueue(queue)
6696
6697 presentInfo := ?
6698 pPresentInfo[0] = presentInfo
6699
6700 return ?
6701}
6702
Jesse Hallad250842017-03-10 18:35:38 -08006703@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08006704cmd VkResult vkGetPhysicalDeviceDisplayPropertiesKHR(
6705 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006706 u32* pPropertyCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006707 VkDisplayPropertiesKHR* pProperties) {
6708 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6709 return ?
6710}
6711
Jesse Hallad250842017-03-10 18:35:38 -08006712@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08006713cmd VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
6714 VkPhysicalDevice physicalDevice,
6715 u32* pPropertyCount,
6716 VkDisplayPlanePropertiesKHR* pProperties) {
6717 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6718 return ?
6719}
6720
Jesse Hallad250842017-03-10 18:35:38 -08006721@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08006722cmd VkResult vkGetDisplayPlaneSupportedDisplaysKHR(
6723 VkPhysicalDevice physicalDevice,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006724 u32 planeIndex,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08006725 u32* pDisplayCount,
6726 VkDisplayKHR* pDisplays) {
Jesse Halla6429252015-11-29 18:59:42 -08006727 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6728 return ?
6729}
6730
Jesse Hallad250842017-03-10 18:35:38 -08006731@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08006732cmd VkResult vkGetDisplayModePropertiesKHR(
6733 VkPhysicalDevice physicalDevice,
6734 VkDisplayKHR display,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006735 u32* pPropertyCount,
6736 VkDisplayModePropertiesKHR* pProperties) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08006737 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6738 return ?
6739}
6740
Jesse Hallad250842017-03-10 18:35:38 -08006741@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08006742cmd VkResult vkCreateDisplayModeKHR(
6743 VkPhysicalDevice physicalDevice,
6744 VkDisplayKHR display,
6745 const VkDisplayModeCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006746 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006747 VkDisplayModeKHR* pMode) {
6748 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6749 return ?
6750}
6751
Jesse Hallad250842017-03-10 18:35:38 -08006752@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08006753cmd VkResult vkGetDisplayPlaneCapabilitiesKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08006754 VkPhysicalDevice physicalDevice,
Jesse Hall9ba8bc82015-11-30 16:22:16 -08006755 VkDisplayModeKHR mode,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006756 u32 planeIndex,
Jesse Halla6429252015-11-29 18:59:42 -08006757 VkDisplayPlaneCapabilitiesKHR* pCapabilities) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08006758 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6759 return ?
6760}
6761
Jesse Hallad250842017-03-10 18:35:38 -08006762@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08006763cmd VkResult vkCreateDisplayPlaneSurfaceKHR(
6764 VkInstance instance,
6765 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006766 const VkAllocationCallbacks* pAllocator,
Jesse Halla6429252015-11-29 18:59:42 -08006767 VkSurfaceKHR* pSurface) {
6768 return ?
6769}
6770
Jesse Hallad250842017-03-10 18:35:38 -08006771@extension("VK_KHR_display_swapchain") // 4
Jesse Hall9ba8bc82015-11-30 16:22:16 -08006772cmd VkResult vkCreateSharedSwapchainsKHR(
6773 VkDevice device,
6774 u32 swapchainCount,
6775 const VkSwapchainCreateInfoKHR* pCreateInfos,
6776 const VkAllocationCallbacks* pAllocator,
6777 VkSwapchainKHR* pSwapchains) {
6778 return ?
6779}
6780
Jesse Hallad250842017-03-10 18:35:38 -08006781@extension("VK_KHR_xlib_surface") // 5
Jesse Halla6429252015-11-29 18:59:42 -08006782cmd VkResult vkCreateXlibSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08006783 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006784 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006785 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006786 VkSurfaceKHR* pSurface) {
6787 instanceObject := GetInstance(instance)
6788 return ?
6789}
6790
Jesse Hallad250842017-03-10 18:35:38 -08006791@extension("VK_KHR_xlib_surface") // 5
Jesse Halla6429252015-11-29 18:59:42 -08006792cmd VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR(
6793 VkPhysicalDevice physicalDevice,
6794 u32 queueFamilyIndex,
6795 platform.Display* dpy,
Jesse Hall65ab5522015-11-30 00:07:16 -08006796 platform.VisualID visualID) {
Jesse Halla6429252015-11-29 18:59:42 -08006797 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6798 return ?
6799}
6800
Jesse Hallad250842017-03-10 18:35:38 -08006801@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006802cmd VkResult vkCreateXcbSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08006803 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006804 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006805 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006806 VkSurfaceKHR* pSurface) {
6807 instanceObject := GetInstance(instance)
6808 return ?
6809}
6810
Jesse Hallad250842017-03-10 18:35:38 -08006811@extension("VK_KHR_xcb_surface") // 6
Jesse Halla6429252015-11-29 18:59:42 -08006812cmd VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR(
6813 VkPhysicalDevice physicalDevice,
6814 u32 queueFamilyIndex,
6815 platform.xcb_connection_t* connection,
6816 platform.xcb_visualid_t visual_id) {
6817 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6818 return ?
6819}
6820
Jesse Hallad250842017-03-10 18:35:38 -08006821@extension("VK_KHR_wayland_surface") // 7
Jesse Hall1356b0d2015-11-23 17:24:58 -08006822cmd VkResult vkCreateWaylandSurfaceKHR(
6823 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006824 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006825 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006826 VkSurfaceKHR* pSurface) {
6827 instanceObject := GetInstance(instance)
6828 return ?
6829}
6830
Jesse Hallad250842017-03-10 18:35:38 -08006831@extension("VK_KHR_wayland_surface") // 7
Jesse Halla6429252015-11-29 18:59:42 -08006832cmd VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR(
6833 VkPhysicalDevice physicalDevice,
6834 u32 queueFamilyIndex,
6835 platform.wl_display* display) {
6836 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6837 return ?
6838}
6839
Jesse Hallad250842017-03-10 18:35:38 -08006840@extension("VK_KHR_mir_surface") // 8
Jesse Hall1356b0d2015-11-23 17:24:58 -08006841cmd VkResult vkCreateMirSurfaceKHR(
6842 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006843 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006844 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006845 VkSurfaceKHR* pSurface) {
6846 instanceObject := GetInstance(instance)
6847 return ?
6848}
6849
Jesse Hallad250842017-03-10 18:35:38 -08006850@extension("VK_KHR_mir_surface") // 8
Jesse Halla6429252015-11-29 18:59:42 -08006851cmd VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR(
6852 VkPhysicalDevice physicalDevice,
6853 u32 queueFamilyIndex,
6854 platform.MirConnection* connection) {
6855 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6856 return ?
6857}
6858
Jesse Hallad250842017-03-10 18:35:38 -08006859@extension("VK_KHR_android_surface") // 9
Jesse Hall1356b0d2015-11-23 17:24:58 -08006860cmd VkResult vkCreateAndroidSurfaceKHR(
6861 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006862 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006863 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006864 VkSurfaceKHR* pSurface) {
6865 instanceObject := GetInstance(instance)
6866 return ?
6867}
6868
Jesse Hallad250842017-03-10 18:35:38 -08006869@extension("VK_KHR_win32_surface") // 10
Jesse Hall1356b0d2015-11-23 17:24:58 -08006870cmd VkResult vkCreateWin32SurfaceKHR(
6871 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006872 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006873 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006874 VkSurfaceKHR* pSurface) {
6875 instanceObject := GetInstance(instance)
6876 return ?
6877}
6878
Jesse Hallad250842017-03-10 18:35:38 -08006879@extension("VK_KHR_win32_surface") // 10
Jesse Halla6429252015-11-29 18:59:42 -08006880cmd VkResult vkGetPhysicalDeviceWin32PresentationSupportKHR(
6881 VkPhysicalDevice physicalDevice,
6882 u32 queueFamilyIndex) {
Jesse Halle2948d82016-02-25 04:19:32 -08006883 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Halla6429252015-11-29 18:59:42 -08006884 return ?
6885}
6886
Jesse Hallad250842017-03-10 18:35:38 -08006887@extension("VK_ANDROID_native_buffer") // 11
Jesse Halld1abd742017-02-09 21:45:51 -08006888@optional
Chia-I Wub262ddc2016-03-22 07:38:20 +08006889cmd VkResult vkGetSwapchainGrallocUsageANDROID(
6890 VkDevice device,
6891 VkFormat format,
6892 VkImageUsageFlags imageUsage,
Jesse Halld1abd742017-02-09 21:45:51 -08006893 s32* grallocUsage) {
Chia-I Wub262ddc2016-03-22 07:38:20 +08006894 return ?
6895}
6896
Jesse Hallad250842017-03-10 18:35:38 -08006897@extension("VK_ANDROID_native_buffer") // 11
Jesse Halld1abd742017-02-09 21:45:51 -08006898@optional
Chris Forbes8e4438b2016-12-07 16:26:49 +13006899cmd VkResult vkGetSwapchainGrallocUsage2ANDROID(
6900 VkDevice device,
6901 VkFormat format,
6902 VkImageUsageFlags imageUsage,
6903 VkSwapchainImageUsageFlagsANDROID swapchainImageUsage,
Jesse Halld1abd742017-02-09 21:45:51 -08006904 u64* grallocConsumerUsage,
6905 u64* grallocProducerUsage) {
Chris Forbes8e4438b2016-12-07 16:26:49 +13006906 return ?
6907}
6908
Jesse Hallad250842017-03-10 18:35:38 -08006909@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08006910cmd VkResult vkAcquireImageANDROID(
6911 VkDevice device,
6912 VkImage image,
6913 int nativeFenceFd,
6914 VkSemaphore semaphore,
6915 VkFence fence) {
6916 return ?
6917}
6918
Jesse Hallad250842017-03-10 18:35:38 -08006919@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08006920cmd VkResult vkQueueSignalReleaseImageANDROID(
6921 VkQueue queue,
6922 u32 waitSemaphoreCount,
6923 const VkSemaphore* pWaitSemaphores,
6924 VkImage image,
6925 int* pNativeFenceFd) {
6926 return ?
6927}
6928
Jesse Hallad250842017-03-10 18:35:38 -08006929@extension("VK_EXT_debug_report") // 12
6930@external type void* PFN_vkDebugReportCallbackEXT
6931@extension("VK_EXT_debug_report") // 12
6932@pfn cmd VkBool32 vkDebugReportCallbackEXT(
6933 VkDebugReportFlagsEXT flags,
6934 VkDebugReportObjectTypeEXT objectType,
6935 u64 object,
6936 platform.size_t location,
6937 s32 messageCode,
6938 const char* pLayerPrefix,
6939 const char* pMessage,
6940 void* pUserData) {
6941 return ?
6942}
6943
6944@extension("VK_EXT_debug_report") // 12
6945cmd VkResult vkCreateDebugReportCallbackEXT(
6946 VkInstance instance,
6947 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
6948 const VkAllocationCallbacks* pAllocator,
6949 VkDebugReportCallbackEXT* pCallback) {
6950 return ?
6951}
6952
6953@extension("VK_EXT_debug_report") // 12
6954cmd void vkDestroyDebugReportCallbackEXT(
6955 VkInstance instance,
6956 VkDebugReportCallbackEXT callback,
6957 const VkAllocationCallbacks* pAllocator) {
6958}
6959
6960@extension("VK_EXT_debug_report") // 12
6961cmd void vkDebugReportMessageEXT(
6962 VkInstance instance,
6963 VkDebugReportFlagsEXT flags,
6964 VkDebugReportObjectTypeEXT objectType,
6965 u64 object,
6966 platform.size_t location,
6967 s32 messageCode,
6968 const char* pLayerPrefix,
6969 const char* pMessage) {
6970}
6971
6972@extension("VK_EXT_debug_marker") // 23
6973cmd VkResult vkDebugMarkerSetObjectTagEXT(
6974 VkDevice device,
6975 VkDebugMarkerObjectTagInfoEXT* pTagInfo) {
6976 return ?
6977}
6978
6979@extension("VK_EXT_debug_marker") // 23
6980cmd VkResult vkDebugMarkerSetObjectNameEXT(
6981 VkDevice device,
6982 VkDebugMarkerObjectNameInfoEXT* pNameInfo) {
6983 return ?
6984}
6985
6986@extension("VK_EXT_debug_marker") // 23
6987cmd void vkCmdDebugMarkerBeginEXT(
6988 VkCommandBuffer commandBuffer,
6989 VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
6990}
6991
6992@extension("VK_EXT_debug_marker") // 23
6993cmd void vkCmdDebugMarkerEndEXT(
6994 VkCommandBuffer commandBuffer) {
6995}
6996
6997@extension("VK_EXT_debug_marker") // 23
6998cmd void vkCmdDebugMarkerInsertEXT(
6999 VkCommandBuffer commandBuffer,
7000 VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
7001}
7002
7003@extension("VK_AMD_draw_indirect_count") // 34
7004cmd void vkCmdDrawIndirectCountAMD(
7005 VkCommandBuffer commandBuffer,
7006 VkBuffer buffer,
7007 VkDeviceSize offset,
7008 VkBuffer countBuffer,
7009 VkDeviceSize countBufferOffset,
7010 u32 maxDrawCount,
7011 u32 stride) {
7012}
7013
7014@extension("VK_AMD_draw_indirect_count") // 34
7015cmd void vkCmdDrawIndexedIndirectCountAMD(
7016 VkCommandBuffer commandBuffer,
7017 VkBuffer buffer,
7018 VkDeviceSize offset,
7019 VkBuffer countBuffer,
7020 VkDeviceSize countBufferOffset,
7021 u32 maxDrawCount,
7022 u32 stride) {
7023}
7024
7025@extension("VK_NV_external_memory_capabilities") // 56
7026cmd VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
7027 VkPhysicalDevice physicalDevice,
7028 VkFormat format,
7029 VkImageType type,
7030 VkImageTiling tiling,
7031 VkImageUsageFlags usage,
7032 VkImageCreateFlags flags,
7033 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
7034 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) {
7035 return ?
7036}
7037
7038@extension("VK_NV_external_memory_win32") // 58
7039cmd VkResult vkGetMemoryWin32HandleNV(
7040 VkDevice device,
7041 VkDeviceMemory memory,
7042 VkExternalMemoryHandleTypeFlagsNV handleType,
7043 platform.HANDLE* pHandle) {
7044 return ?
7045}
7046
7047@extension("VK_KHR_get_physical_device_properties2") // 60
7048cmd void vkGetPhysicalDeviceFeatures2KHR(
7049 VkPhysicalDevice physicalDevice,
7050 VkPhysicalDeviceFeatures2KHR* pFeatures) {
7051}
7052
7053@extension("VK_KHR_get_physical_device_properties2") // 60
7054cmd void vkGetPhysicalDeviceProperties2KHR(
7055 VkPhysicalDevice physicalDevice,
7056 VkPhysicalDeviceProperties2KHR* pProperties) {
7057}
7058
7059@extension("VK_KHR_get_physical_device_properties2") // 60
7060cmd void vkGetPhysicalDeviceFormatProperties2KHR(
7061 VkPhysicalDevice physicalDevice,
7062 VkFormat format,
7063 VkFormatProperties2KHR* pFormatProperties) {
7064}
7065
7066@extension("VK_KHR_get_physical_device_properties2") // 60
7067cmd VkResult vkGetPhysicalDeviceImageFormatProperties2KHR(
7068 VkPhysicalDevice physicalDevice,
7069 const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo,
7070 VkImageFormatProperties2KHR* pImageFormatProperties) {
7071 return ?
7072}
7073
7074@extension("VK_KHR_get_physical_device_properties2") // 60
7075cmd void vkGetPhysicalDeviceQueueFamilyProperties2KHR(
7076 VkPhysicalDevice physicalDevice,
7077 u32* pQueueFamilyPropertyCount,
7078 VkQueueFamilyProperties2KHR* pQueueFamilyProperties) {
7079}
7080
7081@extension("VK_KHR_get_physical_device_properties2") // 60
7082cmd void vkGetPhysicalDeviceMemoryProperties2KHR(
7083 VkPhysicalDevice physicalDevice,
7084 VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties) {
7085}
7086
7087@extension("VK_KHR_get_physical_device_properties2") // 60
7088cmd void vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
7089 VkPhysicalDevice physicalDevice,
7090 const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo,
7091 u32* pPropertyCount,
7092 VkSparseImageFormatProperties2KHR* pProperties) {
7093}
7094
7095@extension("VK_KHX_device_group") // 61
7096cmd void vkGetDeviceGroupPeerMemoryFeaturesKHX(
7097 VkDevice device,
7098 u32 heapIndex,
7099 u32 localDeviceIndex,
7100 u32 remoteDeviceIndex,
7101 VkPeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures) {
7102}
7103
7104@extension("VK_KHX_device_group") // 61
7105cmd VkResult vkBindBufferMemory2KHX(
7106 VkDevice device,
7107 u32 bindInfoCount,
7108 const VkBindBufferMemoryInfoKHX* pBindInfos) {
7109 return ?
7110}
7111
7112@extension("VK_KHX_device_group") // 61
7113cmd VkResult vkBindImageMemory2KHX(
7114 VkDevice device,
7115 u32 bindInfoCount,
7116 const VkBindImageMemoryInfoKHX* pBindInfos) {
7117 return ?
7118}
7119
7120@extension("VK_KHX_device_group") // 61
7121cmd void vkCmdSetDeviceMaskKHX(
7122 VkCommandBuffer commandBuffer,
7123 u32 deviceMask) {
7124}
7125
7126@extension("VK_KHX_device_group") // 61
7127cmd VkResult vkGetDeviceGroupPresentCapabilitiesKHX(
7128 VkDevice device,
7129 VkDeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities) {
7130 return ?
7131}
7132
7133@extension("VK_KHX_device_group") // 61
7134cmd VkResult vkGetDeviceGroupSurfacePresentModesKHX(
7135 VkDevice device,
7136 VkSurfaceKHR surface,
7137 VkDeviceGroupPresentModeFlagsKHX* pModes) {
7138 return ?
7139}
7140
7141@extension("VK_KHX_device_group") // 61
7142cmd VkResult vkAcquireNextImage2KHX(
7143 VkDevice device,
7144 const VkAcquireNextImageInfoKHX* pAcquireInfo,
7145 u32* pImageIndex) {
7146 return ?
7147}
7148
7149@extension("VK_KHX_device_group") // 61
7150cmd void vkCmdDispatchBaseKHX(
7151 VkCommandBuffer commandBuffer,
7152 u32 baseGroupX,
7153 u32 baseGroupY,
7154 u32 baseGroupZ,
7155 u32 groupCountX,
7156 u32 groupCountY,
7157 u32 groupCountZ) {
7158}
7159
7160@extension("VK_KHX_device_group") // 61
7161cmd VkResult vkGetPhysicalDevicePresentRectanglesKHX(
7162 VkPhysicalDevice physicalDevice,
7163 VkSurfaceKHR surface,
7164 u32* pRectCount,
7165 VkRect2D* pRects) {
7166 return ?
7167}
7168
7169@extension("VK_NN_vi_surface") // 63
7170cmd VkResult vkCreateViSurfaceNN(
7171 VkInstance instance,
7172 const VkViSurfaceCreateInfoNN* pCreateInfo,
7173 const VkAllocationCallbacks* pAllocator,
7174 VkSurfaceKHR* pSurface) {
7175 return ?
7176}
7177
7178@extension("VK_KHR_maintenance1") // 70
7179cmd void vkTrimCommandPoolKHR(
7180 VkDevice device,
7181 VkCommandPool commandPool,
7182 VkCommandPoolTrimFlagsKHR flags) {
7183}
7184
7185@extension("VK_KHX_device_group_creation") // 71
7186cmd VkResult vkEnumeratePhysicalDeviceGroupsKHX(
7187 VkInstance instance,
7188 u32* pPhysicalDeviceGroupCount,
7189 VkPhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties) {
7190 return ?
7191}
7192
7193@extension("VK_KHX_external_memory_capabilities") // 72
7194cmd void vkGetPhysicalDeviceExternalBufferPropertiesKHX(
7195 VkPhysicalDevice physicalDevice,
7196 const VkPhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo,
7197 VkExternalBufferPropertiesKHX* pExternalBufferProperties) {
7198}
7199
Jesse Hallad250842017-03-10 18:35:38 -08007200@extension("VK_KHX_external_memory_win32") // 74
7201cmd VkResult vkGetMemoryWin32HandleKHX(
7202 VkDevice device,
7203 VkDeviceMemory memory,
7204 VkExternalMemoryHandleTypeFlagBitsKHX handleType,
7205 platform.HANDLE* pHandle) {
7206 return ?
7207}
7208
7209@extension("VK_KHX_external_memory_win32") // 74
7210cmd VkResult vkGetMemoryWin32HandlePropertiesKHX(
7211 VkDevice device,
7212 VkExternalMemoryHandleTypeFlagBitsKHX handleType,
7213 platform.HANDLE handle,
7214 VkMemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties) {
7215 return ?
7216}
7217
7218@extension("VK_KHX_external_memory_fd") // 75
7219cmd VkResult vkGetMemoryFdKHX(
7220 VkDevice device,
7221 VkDeviceMemory memory,
7222 VkExternalMemoryHandleTypeFlagBitsKHX handleType,
7223 s32* pFd) {
7224 return ?
7225}
7226
7227@extension("VK_KHX_external_memory_fd") // 75
7228cmd VkResult vkGetMemoryFdPropertiesKHX(
7229 VkDevice device,
7230 VkExternalMemoryHandleTypeFlagBitsKHX handleType,
7231 s32 fd,
7232 VkMemoryFdPropertiesKHX* pMemoryFdProperties) {
7233 return ?
7234}
7235
7236@extension("VK_KHX_external_semaphore_capabilities") // 77
7237cmd void vkGetPhysicalDeviceExternalSemaphorePropertiesKHX(
7238 VkPhysicalDevice physicalDevice,
7239 const VkPhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo,
7240 VkExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties) {
7241}
7242
7243@extension("VK_KHX_external_semaphore_win32") // 79
7244cmd VkResult vkImportSemaphoreWin32HandleKHX(
7245 VkDevice device,
7246 const VkImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo) {
7247 return ?
7248}
7249
7250@extension("VK_KHX_external_semaphore_win32") // 79
7251cmd VkResult vkGetSemaphoreWin32HandleKHX(
7252 VkDevice device,
7253 VkSemaphore semaphore,
7254 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType,
7255 platform.HANDLE* pHandle) {
7256 return ?
7257}
7258
7259@extension("VK_KHX_external_semaphore_fd") // 80
7260cmd VkResult vkImportSemaphoreFdKHX(
7261 VkDevice device,
7262 const VkImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo) {
7263 return ?
7264}
7265
7266@extension("VK_KHX_external_semaphore_fd") // 80
7267cmd VkResult vkGetSemaphoreFdKHX(
7268 VkDevice device,
7269 VkSemaphore semaphore,
7270 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType,
7271 s32* pFd) {
7272 return ?
7273}
7274
7275@extension("VK_KHR_push_descriptor") // 81
7276cmd void vkCmdPushDescriptorSetKHR(
7277 VkCommandBuffer commandBuffer,
7278 VkPipelineBindPoint pipelineBindPoint,
7279 VkPipelineLayout layout,
7280 u32 set,
7281 u32 descriptorWriteCount,
7282 const VkWriteDescriptorSet* pDescriptorWrites) {
7283}
7284
7285@extension("VK_KHR_descriptor_update_template") // 86
7286cmd VkResult vkCreateDescriptorUpdateTemplateKHR(
7287 VkDevice device,
7288 const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo,
7289 const VkAllocationCallbacks* pAllocator,
7290 VkDescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate) {
7291 return ?
7292}
7293
7294@extension("VK_KHR_descriptor_update_template") // 86
7295cmd void vkDestroyDescriptorUpdateTemplateKHR(
7296 VkDevice device,
7297 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
7298 const VkAllocationCallbacks* pAllocator) {
7299}
7300
7301@extension("VK_KHR_descriptor_update_template") // 86
7302cmd void vkUpdateDescriptorSetWithTemplateKHR(
7303 VkDevice device,
7304 VkDescriptorSet descriptorSet,
7305 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
7306 const void* pData) {
7307}
7308
7309@extension("VK_KHR_descriptor_update_template") // 86
7310cmd void vkCmdPushDescriptorSetWithTemplateKHR(
7311 VkCommandBuffer commandBuffer,
7312 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
7313 VkPipelineLayout layout,
7314 u32 set,
7315 const void* pData) {
7316}
7317
7318@extension("VK_NVX_device_generated_commands") // 87
7319cmd void vkCmdProcessCommandsNVX(
7320 VkCommandBuffer commandBuffer,
7321 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) {
7322}
7323
7324@extension("VK_NVX_device_generated_commands") // 87
7325cmd void vkCmdReserveSpaceForCommandsNVX(
7326 VkCommandBuffer commandBuffer,
7327 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) {
7328}
7329
7330@extension("VK_NVX_device_generated_commands") // 87
7331cmd VkResult vkCreateIndirectCommandsLayoutNVX(
7332 VkDevice device,
7333 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
7334 const VkAllocationCallbacks* pAllocator,
7335 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) {
7336 return ?
7337}
7338
7339@extension("VK_NVX_device_generated_commands") // 87
7340cmd void vkDestroyIndirectCommandsLayoutNVX(
7341 VkDevice device,
7342 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
7343 const VkAllocationCallbacks* pAllocator) {
7344}
7345
7346@extension("VK_NVX_device_generated_commands") // 87
7347cmd VkResult vkCreateObjectTableNVX(
7348 VkDevice device,
7349 const VkObjectTableCreateInfoNVX* pCreateInfo,
7350 const VkAllocationCallbacks* pAllocator,
7351 VkObjectTableNVX* pObjectTable) {
7352 return ?
7353}
7354
7355@extension("VK_NVX_device_generated_commands") // 87
7356cmd void vkDestroyObjectTableNVX(
7357 VkDevice device,
7358 VkObjectTableNVX objectTable,
7359 const VkAllocationCallbacks* pAllocator) {
7360}
7361
7362@extension("VK_NVX_device_generated_commands") // 87
7363cmd VkResult vkRegisterObjectsNVX(
7364 VkDevice device,
7365 VkObjectTableNVX objectTable,
7366 u32 objectCount,
7367 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
7368 const u32* pObjectIndices) {
7369 return ?
7370}
7371
7372@extension("VK_NVX_device_generated_commands") // 87
7373cmd VkResult vkUnregisterObjectsNVX(
7374 VkDevice device,
7375 VkObjectTableNVX objectTable,
7376 u32 objectCount,
7377 const VkObjectEntryTypeNVX* pObjectEntryTypes,
7378 const u32* pObjectIndices) {
7379 return ?
7380}
7381
7382@extension("VK_NVX_device_generated_commands") // 87
7383cmd void vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
7384 VkPhysicalDevice physicalDevice,
7385 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
7386 VkDeviceGeneratedCommandsLimitsNVX* pLimits) {
7387}
7388
7389@extension("VK_NV_clip_space_w_scaling") // 88
7390cmd void vkCmdSetViewportWScalingNV(
7391 VkCommandBuffer commandBuffer,
7392 u32 firstViewport,
7393 u32 viewportCount,
7394 const VkViewportWScalingNV* pViewportWScalings) {
7395}
7396
7397@extension("VK_EXT_direct_mode_display") // 89
7398cmd VkResult vkReleaseDisplayEXT(
7399 VkPhysicalDevice physicalDevice,
7400 VkDisplayKHR display) {
7401 return ?
7402}
7403
7404@extension("VK_EXT_acquire_xlib_display") // 90
7405cmd VkResult vkAcquireXlibDisplayEXT(
7406 VkPhysicalDevice physicalDevice,
7407 platform.Display* dpy,
7408 VkDisplayKHR display) {
7409 return ?
7410}
7411
7412@extension("VK_EXT_acquire_xlib_display") // 90
7413cmd VkResult vkGetRandROutputDisplayEXT(
7414 VkPhysicalDevice physicalDevice,
7415 platform.Display* dpy,
7416 platform.RROutput rrOutput,
7417 VkDisplayKHR* pDisplay) {
7418 return ?
7419}
7420
7421@extension("VK_EXT_display_surface_counter") // 91
7422cmd VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT(
7423 VkPhysicalDevice physicalDevice,
7424 VkSurfaceKHR surface,
7425 VkSurfaceCapabilities2EXT* pSurfaceCapabilities) {
7426 return ?
7427}
7428
7429@extension("VK_EXT_display_control") // 92
7430cmd VkResult vkDisplayPowerControlEXT(
7431 VkDevice device,
7432 VkDisplayKHR display,
7433 const VkDisplayPowerInfoEXT* pDisplayPowerInfo) {
7434 return ?
7435}
7436
7437@extension("VK_EXT_display_control") // 92
7438cmd VkResult vkRegisterDeviceEventEXT(
7439 VkDevice device,
7440 const VkDeviceEventInfoEXT* pDeviceEventInfo,
7441 const VkAllocationCallbacks* pAllocator,
7442 VkFence* pFence) {
7443 return ?
7444}
7445
7446@extension("VK_EXT_display_control") // 92
7447cmd VkResult vkRegisterDisplayEventEXT(
7448 VkDevice device,
7449 VkDisplayKHR display,
7450 const VkDisplayEventInfoEXT* pDisplayEventInfo,
7451 const VkAllocationCallbacks* pAllocator,
7452 VkFence* pFence) {
7453 return ?
7454}
7455
7456@extension("VK_EXT_display_control") // 92
7457cmd VkResult vkGetSwapchainCounterEXT(
7458 VkDevice device,
7459 VkSwapchainKHR swapchain,
7460 VkSurfaceCounterFlagBitsEXT counter,
7461 u64* pCounterValue) {
7462 return ?
7463}
7464
7465@extension("VK_GOOGLE_display_timing") // 93
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07007466cmd VkResult vkGetRefreshCycleDurationGOOGLE(
Jesse Hallfdc8ab32017-03-10 21:01:57 -08007467 VkDevice device,
7468 VkSwapchainKHR swapchain,
7469 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) {
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07007470 deviceObject := GetDevice(device)
7471 swapchainObject := GetSwapchain(swapchain)
7472
7473 displayTimingProperties := ?
7474 pDisplayTimingProperties[0] = displayTimingProperties
7475
7476 return ?
7477}
7478
Jesse Hallad250842017-03-10 18:35:38 -08007479@extension("VK_GOOGLE_display_timing") // 93
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07007480cmd VkResult vkGetPastPresentationTimingGOOGLE(
Jesse Hallfdc8ab32017-03-10 21:01:57 -08007481 VkDevice device,
7482 VkSwapchainKHR swapchain,
7483 u32* pPresentationTimingCount,
7484 VkPastPresentationTimingGOOGLE* pPresentationTimings) {
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07007485 return ?
7486}
7487
Jesse Hallad250842017-03-10 18:35:38 -08007488@extension("VK_EXT_discard_rectangles") // 100
7489cmd void vkCmdSetDiscardRectangleEXT(
Jesse Hall26763382016-05-20 07:13:52 -07007490 VkCommandBuffer commandBuffer,
Jesse Hallad250842017-03-10 18:35:38 -08007491 u32 firstDiscardRectangle,
7492 u32 discardRectangleCount,
7493 const VkRect2D* pDiscardRectangles) {
Jesse Hall26763382016-05-20 07:13:52 -07007494}
7495
Jesse Hallad250842017-03-10 18:35:38 -08007496@extension("VK_EXT_hdr_metadata") // 106
Jesse Hall889cd9a2017-02-25 22:12:23 -08007497cmd void vkSetHdrMetadataEXT(
Jesse Hallfdc8ab32017-03-10 21:01:57 -08007498 VkDevice device,
7499 u32 swapchainCount,
7500 const VkSwapchainKHR* pSwapchains,
7501 const VkHdrMetadataEXT* pMetadata) {
Jesse Hall889cd9a2017-02-25 22:12:23 -08007502}
7503
Jesse Hallad250842017-03-10 18:35:38 -08007504@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbes2e12cb82017-01-18 11:45:17 +13007505cmd VkResult vkGetSwapchainStatusKHR(
7506 VkDevice device,
7507 VkSwapchainKHR swapchain) {
7508 return ?
7509}
7510
Jesse Hall05556b12017-05-18 17:40:25 -07007511@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13007512cmd VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR(
7513 VkPhysicalDevice physicalDevice,
7514 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7515 VkSurfaceCapabilities2KHR* pSurfaceCapabilities) {
7516 return ?
7517}
7518
Jesse Hall05556b12017-05-18 17:40:25 -07007519@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13007520cmd VkResult vkGetPhysicalDeviceSurfaceFormats2KHR(
7521 VkPhysicalDevice physicalDevice,
7522 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7523 u32* pSurfaceFormatCount,
7524 VkSurfaceFormat2KHR* pSurfaceFormats) {
7525 return ?
7526}
7527
Jesse Hallad250842017-03-10 18:35:38 -08007528@extension("VK_MVK_ios_surface") // 123
7529cmd VkResult vkCreateIOSSurfaceMVK(
7530 VkInstance instance,
7531 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
7532 const VkAllocationCallbacks* pAllocator,
7533 VkSurfaceKHR* pSurface) {
7534 return ?
7535}
7536
7537@extension("VK_MVK_macos_surface") // 124
7538cmd VkResult vkCreateMacOSSurfaceMVK(
7539 VkInstance instance,
7540 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
7541 const VkAllocationCallbacks* pAllocator,
7542 VkSurfaceKHR* pSurface) {
7543 return ?
7544}
7545
Jesse Halld27f6aa2015-08-15 17:58:48 -07007546////////////////
7547// Validation //
7548////////////////
7549
7550extern void validate(string layerName, bool condition, string message)
7551
7552
7553/////////////////////////////
7554// Internal State Tracking //
7555/////////////////////////////
7556
7557StateObject State
7558
7559@internal class StateObject {
7560 // Dispatchable objects.
7561 map!(VkInstance, ref!InstanceObject) Instances
7562 map!(VkPhysicalDevice, ref!PhysicalDeviceObject) PhysicalDevices
7563 map!(VkDevice, ref!DeviceObject) Devices
7564 map!(VkQueue, ref!QueueObject) Queues
Jesse Hall3fbc8562015-11-29 22:10:52 -08007565 map!(VkCommandBuffer, ref!CommandBufferObject) CommandBuffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07007566
7567 // Non-dispatchable objects.
7568 map!(VkDeviceMemory, ref!DeviceMemoryObject) DeviceMemories
7569 map!(VkBuffer, ref!BufferObject) Buffers
7570 map!(VkBufferView, ref!BufferViewObject) BufferViews
7571 map!(VkImage, ref!ImageObject) Images
7572 map!(VkImageView, ref!ImageViewObject) ImageViews
Jesse Halld27f6aa2015-08-15 17:58:48 -07007573 map!(VkShaderModule, ref!ShaderModuleObject) ShaderModules
Jesse Halld27f6aa2015-08-15 17:58:48 -07007574 map!(VkPipeline, ref!PipelineObject) Pipelines
7575 map!(VkPipelineLayout, ref!PipelineLayoutObject) PipelineLayouts
7576 map!(VkSampler, ref!SamplerObject) Samplers
7577 map!(VkDescriptorSet, ref!DescriptorSetObject) DescriptorSets
7578 map!(VkDescriptorSetLayout, ref!DescriptorSetLayoutObject) DescriptorSetLayouts
7579 map!(VkDescriptorPool, ref!DescriptorPoolObject) DescriptorPools
Jesse Halld27f6aa2015-08-15 17:58:48 -07007580 map!(VkFence, ref!FenceObject) Fences
7581 map!(VkSemaphore, ref!SemaphoreObject) Semaphores
7582 map!(VkEvent, ref!EventObject) Events
7583 map!(VkQueryPool, ref!QueryPoolObject) QueryPools
7584 map!(VkFramebuffer, ref!FramebufferObject) Framebuffers
7585 map!(VkRenderPass, ref!RenderPassObject) RenderPasses
7586 map!(VkPipelineCache, ref!PipelineCacheObject) PipelineCaches
Jesse Hall3fbc8562015-11-29 22:10:52 -08007587 map!(VkCommandPool, ref!CommandPoolObject) CommandPools
Jesse Hall1356b0d2015-11-23 17:24:58 -08007588 map!(VkSurfaceKHR, ref!SurfaceObject) Surfaces
Michael Lentine88594d72015-11-12 12:49:45 -08007589 map!(VkSwapchainKHR, ref!SwapchainObject) Swapchains
Jesse Halld27f6aa2015-08-15 17:58:48 -07007590}
7591
7592@internal class InstanceObject {
7593}
7594
7595@internal class PhysicalDeviceObject {
7596 VkInstance instance
7597}
7598
7599@internal class DeviceObject {
7600 VkPhysicalDevice physicalDevice
7601}
7602
7603@internal class QueueObject {
7604 VkDevice device
7605 VkQueueFlags flags
7606}
7607
Jesse Hall3fbc8562015-11-29 22:10:52 -08007608@internal class CommandBufferObject {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007609 VkDevice device
7610 map!(u64, VkDeviceMemory) boundObjects
7611 VkQueueFlags queueFlags
7612}
7613
7614@internal class DeviceMemoryObject {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007615 VkDevice device
7616 VkDeviceSize allocationSize
7617 map!(u64, VkDeviceSize) boundObjects
7618 map!(VkCommandBuffer, VkCommandBuffer) boundCommandBuffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07007619}
7620
7621@internal class BufferObject {
7622 VkDevice device
Jesse Hall3fbc8562015-11-29 22:10:52 -08007623 VkDeviceMemory memory
7624 VkDeviceSize memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07007625}
7626
7627@internal class BufferViewObject {
7628 VkDevice device
7629 VkBuffer buffer
7630}
7631
7632@internal class ImageObject {
7633 VkDevice device
Jesse Hall3fbc8562015-11-29 22:10:52 -08007634 VkDeviceMemory memory
7635 VkDeviceSize memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07007636}
7637
7638@internal class ImageViewObject {
7639 VkDevice device
7640 VkImage image
7641}
7642
Jesse Halld27f6aa2015-08-15 17:58:48 -07007643@internal class ShaderObject {
7644 VkDevice device
7645}
7646
7647@internal class ShaderModuleObject {
7648 VkDevice device
7649}
7650
7651@internal class PipelineObject {
7652 VkDevice device
7653}
7654
7655@internal class PipelineLayoutObject {
7656 VkDevice device
7657}
7658
7659@internal class SamplerObject {
7660 VkDevice device
7661}
7662
7663@internal class DescriptorSetObject {
7664 VkDevice device
7665}
7666
7667@internal class DescriptorSetLayoutObject {
7668 VkDevice device
7669}
7670
7671@internal class DescriptorPoolObject {
7672 VkDevice device
7673}
7674
Jesse Halld27f6aa2015-08-15 17:58:48 -07007675@internal class FenceObject {
7676 VkDevice device
7677 bool signaled
7678}
7679
7680@internal class SemaphoreObject {
7681 VkDevice device
7682}
7683
7684@internal class EventObject {
7685 VkDevice device
7686}
7687
7688@internal class QueryPoolObject {
7689 VkDevice device
7690}
7691
7692@internal class FramebufferObject {
7693 VkDevice device
7694}
7695
7696@internal class RenderPassObject {
7697 VkDevice device
7698}
7699
7700@internal class PipelineCacheObject {
7701 VkDevice device
7702}
7703
Jesse Hall3fbc8562015-11-29 22:10:52 -08007704@internal class CommandPoolObject {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007705 VkDevice device
7706}
7707
Jesse Hall1356b0d2015-11-23 17:24:58 -08007708@internal class SurfaceObject {
7709 VkInstance instance
7710}
7711
Michael Lentine88594d72015-11-12 12:49:45 -08007712@internal class SwapchainObject {
7713 VkDevice device
7714}
7715
Jesse Halld27f6aa2015-08-15 17:58:48 -07007716macro ref!InstanceObject GetInstance(VkInstance instance) {
7717 assert(instance in State.Instances)
7718 return State.Instances[instance]
7719}
7720
7721macro ref!PhysicalDeviceObject GetPhysicalDevice(VkPhysicalDevice physicalDevice) {
7722 assert(physicalDevice in State.PhysicalDevices)
7723 return State.PhysicalDevices[physicalDevice]
7724}
7725
7726macro ref!DeviceObject GetDevice(VkDevice device) {
7727 assert(device in State.Devices)
7728 return State.Devices[device]
7729}
7730
7731macro ref!QueueObject GetQueue(VkQueue queue) {
7732 assert(queue in State.Queues)
7733 return State.Queues[queue]
7734}
7735
Jesse Hall3fbc8562015-11-29 22:10:52 -08007736macro ref!CommandBufferObject GetCommandBuffer(VkCommandBuffer commandBuffer) {
7737 assert(commandBuffer in State.CommandBuffers)
7738 return State.CommandBuffers[commandBuffer]
Jesse Halld27f6aa2015-08-15 17:58:48 -07007739}
7740
Jesse Hall3fbc8562015-11-29 22:10:52 -08007741macro ref!DeviceMemoryObject GetDeviceMemory(VkDeviceMemory memory) {
7742 assert(memory in State.DeviceMemories)
7743 return State.DeviceMemories[memory]
Jesse Halld27f6aa2015-08-15 17:58:48 -07007744}
7745
7746macro ref!BufferObject GetBuffer(VkBuffer buffer) {
7747 assert(buffer in State.Buffers)
7748 return State.Buffers[buffer]
7749}
7750
7751macro ref!BufferViewObject GetBufferView(VkBufferView bufferView) {
7752 assert(bufferView in State.BufferViews)
7753 return State.BufferViews[bufferView]
7754}
7755
7756macro ref!ImageObject GetImage(VkImage image) {
7757 assert(image in State.Images)
7758 return State.Images[image]
7759}
7760
7761macro ref!ImageViewObject GetImageView(VkImageView imageView) {
7762 assert(imageView in State.ImageViews)
7763 return State.ImageViews[imageView]
7764}
7765
Jesse Halld27f6aa2015-08-15 17:58:48 -07007766macro ref!ShaderModuleObject GetShaderModule(VkShaderModule shaderModule) {
7767 assert(shaderModule in State.ShaderModules)
7768 return State.ShaderModules[shaderModule]
7769}
7770
7771macro ref!PipelineObject GetPipeline(VkPipeline pipeline) {
7772 assert(pipeline in State.Pipelines)
7773 return State.Pipelines[pipeline]
7774}
7775
7776macro ref!PipelineLayoutObject GetPipelineLayout(VkPipelineLayout pipelineLayout) {
7777 assert(pipelineLayout in State.PipelineLayouts)
7778 return State.PipelineLayouts[pipelineLayout]
7779}
7780
7781macro ref!SamplerObject GetSampler(VkSampler sampler) {
7782 assert(sampler in State.Samplers)
7783 return State.Samplers[sampler]
7784}
7785
7786macro ref!DescriptorSetObject GetDescriptorSet(VkDescriptorSet descriptorSet) {
7787 assert(descriptorSet in State.DescriptorSets)
7788 return State.DescriptorSets[descriptorSet]
7789}
7790
7791macro ref!DescriptorSetLayoutObject GetDescriptorSetLayout(VkDescriptorSetLayout descriptorSetLayout) {
7792 assert(descriptorSetLayout in State.DescriptorSetLayouts)
7793 return State.DescriptorSetLayouts[descriptorSetLayout]
7794}
7795
7796macro ref!DescriptorPoolObject GetDescriptorPool(VkDescriptorPool descriptorPool) {
7797 assert(descriptorPool in State.DescriptorPools)
7798 return State.DescriptorPools[descriptorPool]
7799}
7800
Jesse Halld27f6aa2015-08-15 17:58:48 -07007801macro ref!FenceObject GetFence(VkFence fence) {
7802 assert(fence in State.Fences)
7803 return State.Fences[fence]
7804}
7805
7806macro ref!SemaphoreObject GetSemaphore(VkSemaphore semaphore) {
7807 assert(semaphore in State.Semaphores)
7808 return State.Semaphores[semaphore]
7809}
7810
7811macro ref!EventObject GetEvent(VkEvent event) {
7812 assert(event in State.Events)
7813 return State.Events[event]
7814}
7815
7816macro ref!QueryPoolObject GetQueryPool(VkQueryPool queryPool) {
7817 assert(queryPool in State.QueryPools)
7818 return State.QueryPools[queryPool]
7819}
7820
7821macro ref!FramebufferObject GetFramebuffer(VkFramebuffer framebuffer) {
7822 assert(framebuffer in State.Framebuffers)
7823 return State.Framebuffers[framebuffer]
7824}
7825
7826macro ref!RenderPassObject GetRenderPass(VkRenderPass renderPass) {
7827 assert(renderPass in State.RenderPasses)
7828 return State.RenderPasses[renderPass]
7829}
7830
7831macro ref!PipelineCacheObject GetPipelineCache(VkPipelineCache pipelineCache) {
7832 assert(pipelineCache in State.PipelineCaches)
7833 return State.PipelineCaches[pipelineCache]
7834}
7835
Jesse Hall3fbc8562015-11-29 22:10:52 -08007836macro ref!CommandPoolObject GetCommandPool(VkCommandPool commandPool) {
7837 assert(commandPool in State.CommandPools)
7838 return State.CommandPools[commandPool]
Jesse Hallf09c6b12015-08-15 19:54:28 -07007839}
Michael Lentine88594d72015-11-12 12:49:45 -08007840
Jesse Hall1356b0d2015-11-23 17:24:58 -08007841macro ref!SurfaceObject GetSurface(VkSurfaceKHR surface) {
7842 assert(surface in State.Surfaces)
7843 return State.Surfaces[surface]
7844}
7845
Michael Lentine88594d72015-11-12 12:49:45 -08007846macro ref!SwapchainObject GetSwapchain(VkSwapchainKHR swapchain) {
7847 assert(swapchain in State.Swapchains)
7848 return State.Swapchains[swapchain]
7849}
Jesse Halld8bade02015-11-24 10:24:18 -08007850
7851macro VkQueueFlags AddQueueFlag(VkQueueFlags flags, VkQueueFlagBits bit) {
7852 return as!VkQueueFlags(as!u32(flags) | as!u32(bit))
7853}