blob: 52c0b51736fbe6ee06806c6bf90d6de02e53bae2 [file] [log] [blame]
Jesse Halld27f6aa2015-08-15 17:58:48 -07001// Copyright (c) 2015 The Khronos Group Inc.
2//
3// Permission is hereby granted, free of charge, to any person obtaining a
4// copy of this software and/or associated documentation files (the
5// "Materials"), to deal in the Materials without restriction, including
6// without limitation the rights to use, copy, modify, merge, publish,
7// distribute, sublicense, and/or sell copies of the Materials, and to
8// permit persons to whom the Materials are furnished to do so, subject to
9// the following conditions:
10//
11// The above copyright notice and this permission notice shall be included
12// in all copies or substantial portions of the Materials.
13//
14// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
21
22import platform "platform.api"
23
24///////////////
25// Constants //
26///////////////
27
28// API version (major.minor.patch)
Jesse Hall3dd678a2016-01-08 21:52:01 -080029define VERSION_MAJOR 1
30define VERSION_MINOR 0
Jesse Hall7ba0ac72017-07-07 17:13:23 -070031define VERSION_PATCH 53
Jesse Halld27f6aa2015-08-15 17:58:48 -070032
33// API limits
Jesse Hall65ab5522015-11-30 00:07:16 -080034define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256
35define VK_UUID_SIZE 16
36define VK_MAX_EXTENSION_NAME_SIZE 256
37define VK_MAX_DESCRIPTION_SIZE 256
38define VK_MAX_MEMORY_TYPES 32
39define VK_MAX_MEMORY_HEAPS 16 /// The maximum number of unique memory heaps, each of which supporting 1 or more memory types.
Jesse Hallad250842017-03-10 18:35:38 -080040define VK_MAX_DEVICE_GROUP_SIZE_KHX 32
41define VK_LUID_SIZE_KHX 8
42define VK_QUEUE_FAMILY_EXTERNAL_KHX -2
Jesse Halld27f6aa2015-08-15 17:58:48 -070043
44// API keywords
45define VK_TRUE 1
46define VK_FALSE 0
Jesse Hall5ae3abb2015-10-08 14:00:22 -070047
48// API keyword, but needs special handling by some templates
49define NULL_HANDLE 0
Jesse Halld27f6aa2015-08-15 17:58:48 -070050
Jesse Halleb02c472017-02-24 15:13:45 -080051// 1
Jesse Hall33faaad2016-01-24 21:00:49 -080052@extension("VK_KHR_surface") define VK_KHR_SURFACE_SPEC_VERSION 25
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080053@extension("VK_KHR_surface") define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080054
Jesse Halleb02c472017-02-24 15:13:45 -080055// 2
Jesse Hall26763382016-05-20 07:13:52 -070056@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_SPEC_VERSION 68
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080057@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain"
Jesse Hall1356b0d2015-11-23 17:24:58 -080058
Jesse Halleb02c472017-02-24 15:13:45 -080059// 3
Jesse Hall543a7ff2016-01-08 16:38:30 -080060@extension("VK_KHR_display") define VK_KHR_DISPLAY_SPEC_VERSION 21
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080061@extension("VK_KHR_display") define VK_KHR_DISPLAY_EXTENSION_NAME "VK_KHR_display"
Jesse Hall1356b0d2015-11-23 17:24:58 -080062
Jesse Halleb02c472017-02-24 15:13:45 -080063// 4
Jesse Hall543a7ff2016-01-08 16:38:30 -080064@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 9
Jesse Hall0e74f002015-11-30 11:37:59 -080065@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
Jesse Hall1356b0d2015-11-23 17:24:58 -080066
Jesse Halleb02c472017-02-24 15:13:45 -080067// 5
Jesse Hall543a7ff2016-01-08 16:38:30 -080068@extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080069@extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_NAME "VK_KHR_xlib_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080070
Jesse Halleb02c472017-02-24 15:13:45 -080071// 6
Jesse Hall543a7ff2016-01-08 16:38:30 -080072@extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080073@extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_NAME "VK_KHR_xcb_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080074
Jesse Halleb02c472017-02-24 15:13:45 -080075// 7
Jesse Hallfdc8ab32017-03-10 21:01:57 -080076@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080077@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_NAME "VK_KHR_wayland_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080078
Jesse Halleb02c472017-02-24 15:13:45 -080079// 8
Jesse Hall543a7ff2016-01-08 16:38:30 -080080@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_SPEC_VERSION 4
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080081@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_NAME "VK_KHR_mir_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080082
Jesse Halleb02c472017-02-24 15:13:45 -080083// 9
Jesse Hall33faaad2016-01-24 21:00:49 -080084@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080085@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_NAME "VK_KHR_android_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080086
Jesse Halleb02c472017-02-24 15:13:45 -080087// 10
Jesse Hall7ba0ac72017-07-07 17:13:23 -070088@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080089@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_NAME "VK_KHR_win32_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080090
Jesse Halleb02c472017-02-24 15:13:45 -080091// 11
Chris Forbes1d4e5542017-02-15 19:38:50 +130092@extension("VK_ANDROID_native_buffer") define VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION 7
Chia-I Wub262ddc2016-03-22 07:38:20 +080093@extension("VK_ANDROID_native_buffer") define VK_ANDROID_NATIVE_BUFFER_NAME "VK_ANDROID_native_buffer"
94
Jesse Halleb02c472017-02-24 15:13:45 -080095// 12
Jesse Hall7ba0ac72017-07-07 17:13:23 -070096@extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_SPEC_VERSION 8
Jesse Hall715b86a2016-01-16 16:34:29 -080097@extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_NAME "VK_EXT_debug_report"
98
Jesse Halleb02c472017-02-24 15:13:45 -080099// 13
Jesse Hall26763382016-05-20 07:13:52 -0700100@extension("VK_NV_glsl_shader") define VK_NV_GLSL_SHADER_SPEC_VERSION 1
101@extension("VK_NV_glsl_shader") define VK_NV_GLSL_SHADER_NAME "VK_NV_glsl_shader"
102
Jesse Halleb02c472017-02-24 15:13:45 -0800103// 15
Jesse Hall26763382016-05-20 07:13:52 -0700104@extension("VK_KHR_sampler_mirror_clamp_to_edge") define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 1
105@extension("VK_KHR_sampler_mirror_clamp_to_edge") define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_NAME "VK_KHR_sampler_mirror_clamp_to_edge"
106
Jesse Halleb02c472017-02-24 15:13:45 -0800107// 16
Jesse Hall26763382016-05-20 07:13:52 -0700108@extension("VK_IMG_filter_cubic") define VK_IMG_FILTER_CUBIC_SPEC_VERSION 1
109@extension("VK_IMG_filter_cubic") define VK_IMG_FILTER_CUBIC_NAME "VK_IMG_filter_cubic"
110
Jesse Halleb02c472017-02-24 15:13:45 -0800111// 19
Jesse Hall26763382016-05-20 07:13:52 -0700112@extension("VK_AMD_rasterization_order") define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1
113@extension("VK_AMD_rasterization_order") define VK_AMD_RASTERIZATION_ORDER_NAME "VK_AMD_rasterization_order"
114
Jesse Halleb02c472017-02-24 15:13:45 -0800115// 21
Jesse Hall56d386a2016-07-26 15:20:40 -0700116@extension("VK_AMD_shader_trinary_minmax") define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1
117@extension("VK_AMD_shader_trinary_minmax") define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax"
118
Jesse Halleb02c472017-02-24 15:13:45 -0800119// 22
Jesse Hall56d386a2016-07-26 15:20:40 -0700120@extension("VK_AMD_shader_explicit_vertex_parameter") define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1
121@extension("VK_AMD_shader_explicit_vertex_parameter") define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter"
122
Jesse Halleb02c472017-02-24 15:13:45 -0800123// 23
Jesse Hall8f49fcb2017-03-06 16:02:58 -0800124@extension("VK_EXT_debug_marker") define VK_EXT_DEBUG_MARKER_SPEC_VERSION 4
Jesse Hall26763382016-05-20 07:13:52 -0700125@extension("VK_EXT_debug_marker") define VK_EXT_DEBUG_MARKER_NAME "VK_EXT_debug_marker"
126
Jesse Halleb02c472017-02-24 15:13:45 -0800127// 26
Jesse Hall56d386a2016-07-26 15:20:40 -0700128@extension("VK_AMD_gcn_shader") define VK_AMD_GCN_SHADER_SPEC_VERSION 1
129@extension("VK_AMD_gcn_shader") define VK_AMD_GCN_SHADER_EXTENSION_NAME "VK_AMD_gcn_shader"
130
Jesse Halleb02c472017-02-24 15:13:45 -0800131// 27
Jesse Hall56d386a2016-07-26 15:20:40 -0700132@extension("VK_NV_dedicated_allocation") define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1
133@extension("VK_NV_dedicated_allocation") define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation"
134
Jesse Halleb02c472017-02-24 15:13:45 -0800135// 28
Chris Forbes289cb792016-12-30 15:03:55 +1300136@extension("VK_IMG_format_pvrtc") define VK_IMG_FORMAT_PVRTC_SPEC_VERSION 1
137@extension("VK_IMG_format_pvrtc") define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc"
138
Jesse Halleb02c472017-02-24 15:13:45 -0800139// 34
140@extension("VK_AMD_draw_indirect_count") define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
141@extension("VK_AMD_draw_indirect_count") define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count"
142
143// 36
144@extension("VK_AMD_negative_viewport_height") define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1
145@extension("VK_AMD_negative_viewport_height") define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height"
146
147// 37
148@extension("VK_AMD_gpu_shader_half_float") define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 1
149@extension("VK_AMD_gpu_shader_half_float") define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float"
150
151// 38
152@extension("VK_AMD_shader_ballot") define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1
153@extension("VK_AMD_shader_ballot") define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot"
154
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700155// 42
156@extension("VK_AMD_texture_gather_bias_lod") define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1
157@extension("VK_AMD_texture_gather_bias_lod") define VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME "VK_AMD_texture_gather_bias_lod"
158
Jesse Hallad250842017-03-10 18:35:38 -0800159// 54
160@extension("VK_KHX_multiview") define VK_KHX_MULTIVIEW_SPEC_VERSION 1
161@extension("VK_KHX_multiview") define VK_KHX_MULTIVIEW_EXTENSION_NAME "VK_KHX_multiview"
162
Jesse Halleb02c472017-02-24 15:13:45 -0800163// 56
Chris Forbes289cb792016-12-30 15:03:55 +1300164@extension("VK_NV_external_memory_capabilities") define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
165@extension("VK_NV_external_memory_capabilities") define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities"
166
Jesse Halleb02c472017-02-24 15:13:45 -0800167// 57
Chris Forbes289cb792016-12-30 15:03:55 +1300168@extension("VK_NV_external_memory") define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1
169@extension("VK_NV_external_memory") define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory"
170
Jesse Halleb02c472017-02-24 15:13:45 -0800171// 58
Chris Forbes289cb792016-12-30 15:03:55 +1300172@extension("VK_NV_external_memory_win32") define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
173@extension("VK_NV_external_memory_win32") define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
174
Jesse Halleb02c472017-02-24 15:13:45 -0800175// 59
Chris Forbes289cb792016-12-30 15:03:55 +1300176@extension("VK_NV_win32_keyed_mutex") define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 1
177@extension("VK_NV_win32_keyed_mutex") define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
178
Jesse Hall889cd9a2017-02-25 22:12:23 -0800179// 60
180@extension("VK_KHR_get_physical_device_properties2") define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 1
181@extension("VK_KHR_get_physical_device_properties2") define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2"
182
Jesse Hallad250842017-03-10 18:35:38 -0800183// 61
184@extension("VK_KHX_device_group") define VK_KHX_DEVICE_GROUP_SPEC_VERSION 1
185@extension("VK_KHX_device_group") define VK_KHX_DEVICE_GROUP_EXTENSION_NAME "VK_KHX_device_group"
186
Jesse Halleb02c472017-02-24 15:13:45 -0800187// 62
Chris Forbes289cb792016-12-30 15:03:55 +1300188@extension("VK_EXT_validation_flags") define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 1
189@extension("VK_EXT_validation_flags") define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags"
190
Jesse Hall77ad05b2017-03-10 22:02:20 -0800191// 63
192@extension("VK_NN_vi_surface") define VK_NN_VI_SURFACE_SPEC_VERSION 1
193@extension("VK_NN_vi_surface") define VK_NN_VI_SURFACE_EXTENSION_NAME "VK_NN_vi_surface"
194
195// 64
196@extension("VK_KHR_shader_draw_parameters") define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1
197@extension("VK_KHR_shader_draw_parameters") define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters"
198
199// 65
200@extension("VK_EXT_shader_subgroup_ballot") define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1
201@extension("VK_EXT_shader_subgroup_ballot") define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot"
202
203// 66
204@extension("VK_EXT_shader_subgroup_vote") define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1
205@extension("VK_EXT_shader_subgroup_vote") define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote"
206
207// 70
208@extension("VK_KHR_maintenance1") define VK_KHR_MAINTENANCE1_SPEC_VERSION 1
209@extension("VK_KHR_maintenance1") define VK_KHR_MAINTENANCE1_EXTENSION_NAME "VK_KHR_maintenance1"
210
Jesse Hallad250842017-03-10 18:35:38 -0800211// 71
212@extension("VK_KHX_device_group_creation") define VK_KHX_DEVICE_GROUP_CREATION_SPEC_VERSION 1
213@extension("VK_KHX_device_group_creation") define VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHX_device_group_creation"
214
215// 72
216@extension("VK_KHX_external_memory_capabilities") define VK_KHX_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
217@extension("VK_KHX_external_memory_capabilities") define VK_KHX_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHX_external_memory_capabilities"
218
219// 73
220@extension("VK_KHX_external_memory") define VK_KHX_EXTERNAL_MEMORY_SPEC_VERSION 1
221@extension("VK_KHX_external_memory") define VK_KHX_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHX_external_memory"
222
223// 74
224@extension("VK_KHX_external_memory_win32") define VK_KHX_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
225@extension("VK_KHX_external_memory_win32") define VK_KHX_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHX_external_memory_win32"
226
227// 75
228@extension("VK_KHX_external_memory_fd") define VK_KHX_EXTERNAL_MEMORY_FD_SPEC_VERSION 1
229@extension("VK_KHX_external_memory_fd") define VK_KHX_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHX_external_memory_fd"
230
231// 76
232@extension("VK_KHX_win32_keyed_mutex") define VK_KHX_WIN32_KEYED_MUTEX_SPEC_VERSION 1
233@extension("VK_KHX_win32_keyed_mutex") define VK_KHX_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHX_win32_keyed_mutex"
234
235// 77
236@extension("VK_KHX_external_semaphore_capabilities") define VK_KHX_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1
237@extension("VK_KHX_external_semaphore_capabilities") define VK_KHX_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHX_external_semaphore_capabilities"
238
239// 78
240@extension("VK_KHX_external_semaphore") define VK_KHX_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
241@extension("VK_KHX_external_semaphore") define VK_KHX_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHX_external_semaphore"
242
243// 79
244@extension("VK_KHX_external_semaphore_win32") define VK_KHX_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1
245@extension("VK_KHX_external_semaphore_win32") define VK_KHX_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHX_external_semaphore_win32"
246
247// 80
248@extension("VK_KHX_external_semaphore_fd") define VK_KHX_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1
249@extension("VK_KHX_external_semaphore_fd") define VK_KHX_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHX_external_semaphore_fd"
250
251// 81
252@extension("VK_KHR_push_descriptor") define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 1
253@extension("VK_KHR_push_descriptor") define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor"
254
Jesse Hall889cd9a2017-02-25 22:12:23 -0800255// 85
256@extension("VK_KHR_incremental_present") define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1
Jesse Hallf5ad48b2017-03-20 13:09:19 -0700257@extension("VK_KHR_incremental_present") define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present"
Jesse Hall889cd9a2017-02-25 22:12:23 -0800258
Jesse Hallad250842017-03-10 18:35:38 -0800259// 86
260@extension("VK_KHR_descriptor_update_template") define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1
261@extension("VK_KHR_descriptor_update_template") define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template"
262
Jesse Halleb02c472017-02-24 15:13:45 -0800263// 87
Chris Forbes289cb792016-12-30 15:03:55 +1300264@extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 1
265@extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands"
266
Jesse Hallad250842017-03-10 18:35:38 -0800267// 88
268@extension("VK_NV_clip_space_w_scaling") define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1
269@extension("VK_NV_clip_space_w_scaling") define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling"
270
Jesse Hall77ad05b2017-03-10 22:02:20 -0800271// 89
272@extension("VK_EXT_direct_mode_display") define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1
273@extension("VK_EXT_direct_mode_display") define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display"
274
275// 90
276@extension("VK_EXT_acquire_xlib_display") define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1
277@extension("VK_EXT_acquire_xlib_display") define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display"
278
279// 91
280@extension("VK_EXT_display_surface_counter") define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1
281@extension("VK_EXT_display_surface_counter") define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter"
282
283// 92
284@extension("VK_EXT_display_control") define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1
285@extension("VK_EXT_display_control") define VK_EXT_DISPLAY_CONTROL_COUNTER_EXTENSION_NAME "VK_EXT_display_control"
286
Jesse Hall889cd9a2017-02-25 22:12:23 -0800287// 93
288@extension("VK_GOOGLE_display_timing") define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1
Jesse Hallfdc8ab32017-03-10 21:01:57 -0800289@extension("VK_GOOGLE_display_timing") define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing"
Jesse Hall889cd9a2017-02-25 22:12:23 -0800290
Jesse Hallad250842017-03-10 18:35:38 -0800291// 95
292@extension("VK_NV_sample_mask_override_coverage") define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1
293@extension("VK_NV_sample_mask_override_coverage") define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage"
294
295// 96
296@extension("VK_NV_geometry_shader_passthrough") define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1
297@extension("VK_NV_geometry_shader_passthrough") define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough"
298
299// 97
300@extension("VK_NV_viewport_array2") define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION 1
301@extension("VK_NV_viewport_array2") define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME "VK_NV_viewport_array2"
302
303// 98
304@extension("VK_NVX_multiview_per_view_attributes") define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1
305@extension("VK_NVX_multiview_per_view_attributes") define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes"
306
307// 99
308@extension("VK_NV_viewport_swizzle") define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1
309@extension("VK_NV_viewport_swizzle") define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle"
310
311// 100
312@extension("VK_EXT_discard_rectangles") define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1
313@extension("VK_EXT_discard_rectangles") define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
314
Jesse Hall77ad05b2017-03-10 22:02:20 -0800315// 105
Jesse Hallf5ad48b2017-03-20 13:09:19 -0700316@extension("VK_EXT_swapchain_colorspace") define VK_EXT_SWAPCHAIN_COLORSPACE_SPEC_VERSION 2
317@extension("VK_EXT_swapchain_colorspace") define VK_EXT_SWAPCHAIN_COLORSPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace"
Jesse Hall77ad05b2017-03-10 22:02:20 -0800318
Jesse Hall889cd9a2017-02-25 22:12:23 -0800319// 106
320@extension("VK_EXT_hdr_metadata") define VK_EXT_HDR_METADATA_SPEC_VERSION 1
321@extension("VK_EXT_hdr_metadata") define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata"
322
323// 112
Chris Forbes1d5f68c2017-01-31 10:17:01 +1300324@extension("VK_KHR_shared_presentable_image") define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1
325@extension("VK_KHR_shared_presentable_image") define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image"
Chris Forbes2e12cb82017-01-18 11:45:17 +1300326
Jesse Hall05556b12017-05-18 17:40:25 -0700327// 120
Chris Forbese2d3ee12017-03-16 16:10:15 +1300328@extension("VK_KHR_get_surface_capabilities2") define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1
329@extension("VK_KHR_get_surface_capabilities2") define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2"
330
Jesse Hallad250842017-03-10 18:35:38 -0800331// 123
332@extension("VK_MVK_ios_surface") define VK_MVK_IOS_SURFACE_SPEC_VERSION 1
333@extension("VK_MVK_ios_surface") define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface"
334
335// 124
336@extension("VK_MVK_macos_surface") define VK_MVK_MACOS_SURFACE_SPEC_VERSION 1
337@extension("VK_MVK_macos_surface") define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface"
338
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700339// 131
340@extension("VK_EXT_sampler_filter_minmax") define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 1
341@extension("VK_EXT_sampler_filter_minmax") define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
342
343// 133
344@extension("VK_AMD_gpu_shader_int16") define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 1
345@extension("VK_AMD_gpu_shader_int16") define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME "VK_AMD_gpu_shader_int16"
346
347// 149
348@extension("VK_EXT_blend_operation_advanced") define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2
349@extension("VK_EXT_blend_operation_advanced") define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
350
351// 150
352@extension("VK_NV_fragment_coverage_to_color") define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1
353@extension("VK_NV_fragment_coverage_to_color") define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME "VK_NV_fragment_coverage_to_color"
354
355// 153
356@extension("VK_NV_framebuffer_mixed_samples") define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1
357@extension("VK_NV_framebuffer_mixed_samples") define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME "VK_NV_framebuffer_mixed_samples"
358
359// 154
360@extension("VK_NV_fill_rectangle") define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1
361@extension("VK_NV_fill_rectangle") define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle"
362
Jesse Halld27f6aa2015-08-15 17:58:48 -0700363/////////////
364// Types //
365/////////////
366
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700367type u32 VkBool32
368type u32 VkFlags
369type u64 VkDeviceSize
370type u32 VkSampleMask
371
Jesse Halld27f6aa2015-08-15 17:58:48 -0700372/// Dispatchable handle types.
373@dispatchHandle type u64 VkInstance
374@dispatchHandle type u64 VkPhysicalDevice
375@dispatchHandle type u64 VkDevice
376@dispatchHandle type u64 VkQueue
Jesse Hall3fbc8562015-11-29 22:10:52 -0800377@dispatchHandle type u64 VkCommandBuffer
Jesse Halld27f6aa2015-08-15 17:58:48 -0700378
379/// Non dispatchable handle types.
380@nonDispatchHandle type u64 VkDeviceMemory
Jesse Hall3fbc8562015-11-29 22:10:52 -0800381@nonDispatchHandle type u64 VkCommandPool
Jesse Halld27f6aa2015-08-15 17:58:48 -0700382@nonDispatchHandle type u64 VkBuffer
383@nonDispatchHandle type u64 VkBufferView
384@nonDispatchHandle type u64 VkImage
385@nonDispatchHandle type u64 VkImageView
Jesse Halld27f6aa2015-08-15 17:58:48 -0700386@nonDispatchHandle type u64 VkShaderModule
Jesse Halld27f6aa2015-08-15 17:58:48 -0700387@nonDispatchHandle type u64 VkPipeline
388@nonDispatchHandle type u64 VkPipelineLayout
389@nonDispatchHandle type u64 VkSampler
390@nonDispatchHandle type u64 VkDescriptorSet
391@nonDispatchHandle type u64 VkDescriptorSetLayout
392@nonDispatchHandle type u64 VkDescriptorPool
Jesse Halld27f6aa2015-08-15 17:58:48 -0700393@nonDispatchHandle type u64 VkFence
394@nonDispatchHandle type u64 VkSemaphore
395@nonDispatchHandle type u64 VkEvent
396@nonDispatchHandle type u64 VkQueryPool
397@nonDispatchHandle type u64 VkFramebuffer
398@nonDispatchHandle type u64 VkRenderPass
399@nonDispatchHandle type u64 VkPipelineCache
Jesse Hall1356b0d2015-11-23 17:24:58 -0800400
Jesse Hallad250842017-03-10 18:35:38 -0800401// 1
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800402@extension("VK_KHR_surface") @nonDispatchHandle type u64 VkSurfaceKHR
Jesse Hall1356b0d2015-11-23 17:24:58 -0800403
Jesse Hallad250842017-03-10 18:35:38 -0800404// 2
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800405@extension("VK_KHR_swapchain") @nonDispatchHandle type u64 VkSwapchainKHR
Jesse Hall1356b0d2015-11-23 17:24:58 -0800406
Jesse Hallad250842017-03-10 18:35:38 -0800407// 3
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800408@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayKHR
409@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayModeKHR
Jesse Halld27f6aa2015-08-15 17:58:48 -0700410
Jesse Hallad250842017-03-10 18:35:38 -0800411// 12
Jesse Hall715b86a2016-01-16 16:34:29 -0800412@extension("VK_EXT_debug_report") @nonDispatchHandle type u64 VkDebugReportCallbackEXT
413
Jesse Hallad250842017-03-10 18:35:38 -0800414// 86
415@extension("VK_KHR_descriptor_update_template") @nonDispatchHandle type u64 VkDescriptorUpdateTemplateKHR
416
417// 87
Chris Forbes289cb792016-12-30 15:03:55 +1300418@extension("VK_NVX_device_generated_commands") @nonDispatchHandle type u64 VkObjectTableNVX
419@extension("VK_NVX_device_generated_commands") @nonDispatchHandle type u64 VkIndirectCommandsLayoutNVX
420
Jesse Halld27f6aa2015-08-15 17:58:48 -0700421
422/////////////
423// Enums //
424/////////////
425
426enum VkImageLayout {
427 VK_IMAGE_LAYOUT_UNDEFINED = 0x00000000, /// Implicit layout an image is when its contents are undefined due to various reasons (e.g. right after creation)
428 VK_IMAGE_LAYOUT_GENERAL = 0x00000001, /// General layout when image can be used for any kind of access
429 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 0x00000002, /// Optimal layout when image is only used for color attachment read/write
430 VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 0x00000003, /// Optimal layout when image is only used for depth/stencil attachment read/write
431 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 0x00000004, /// Optimal layout when image is used for read only depth/stencil attachment and shader access
432 VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 0x00000005, /// Optimal layout when image is used for read only shader access
Jesse Hall3fbc8562015-11-29 22:10:52 -0800433 VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 0x00000006, /// Optimal layout when image is used only as source of transfer operations
434 VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 0x00000007, /// Optimal layout when image is used only as destination of transfer operations
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700435 VK_IMAGE_LAYOUT_PREINITIALIZED = 0x00000008, /// Initial layout used when the data is populated by the CPU
Jesse Hall1356b0d2015-11-23 17:24:58 -0800436
Jesse Hallad250842017-03-10 18:35:38 -0800437 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -0800438 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
Chris Forbesaf3a1112017-01-31 15:37:03 +1300439
Jesse Hall05556b12017-05-18 17:40:25 -0700440 //@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbesaf3a1112017-01-31 15:37:03 +1300441 VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700442}
443
444enum VkAttachmentLoadOp {
445 VK_ATTACHMENT_LOAD_OP_LOAD = 0x00000000,
446 VK_ATTACHMENT_LOAD_OP_CLEAR = 0x00000001,
447 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 0x00000002,
448}
449
450enum VkAttachmentStoreOp {
451 VK_ATTACHMENT_STORE_OP_STORE = 0x00000000,
452 VK_ATTACHMENT_STORE_OP_DONT_CARE = 0x00000001,
453}
454
455enum VkImageType {
456 VK_IMAGE_TYPE_1D = 0x00000000,
457 VK_IMAGE_TYPE_2D = 0x00000001,
458 VK_IMAGE_TYPE_3D = 0x00000002,
459}
460
461enum VkImageTiling {
Jesse Hallc7467b72015-11-29 21:05:26 -0800462 VK_IMAGE_TILING_OPTIMAL = 0x00000000,
463 VK_IMAGE_TILING_LINEAR = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700464}
465
466enum VkImageViewType {
467 VK_IMAGE_VIEW_TYPE_1D = 0x00000000,
468 VK_IMAGE_VIEW_TYPE_2D = 0x00000001,
469 VK_IMAGE_VIEW_TYPE_3D = 0x00000002,
470 VK_IMAGE_VIEW_TYPE_CUBE = 0x00000003,
471 VK_IMAGE_VIEW_TYPE_1D_ARRAY = 0x00000004,
472 VK_IMAGE_VIEW_TYPE_2D_ARRAY = 0x00000005,
473 VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 0x00000006,
474}
475
Jesse Hall3fbc8562015-11-29 22:10:52 -0800476enum VkCommandBufferLevel {
477 VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0x00000000,
478 VK_COMMAND_BUFFER_LEVEL_SECONDARY = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700479}
480
Jesse Hall65ab5522015-11-30 00:07:16 -0800481enum VkComponentSwizzle {
482 VK_COMPONENT_SWIZZLE_IDENTITY = 0x00000000,
483 VK_COMPONENT_SWIZZLE_ZERO = 0x00000001,
484 VK_COMPONENT_SWIZZLE_ONE = 0x00000002,
485 VK_COMPONENT_SWIZZLE_R = 0x00000003,
486 VK_COMPONENT_SWIZZLE_G = 0x00000004,
487 VK_COMPONENT_SWIZZLE_B = 0x00000005,
488 VK_COMPONENT_SWIZZLE_A = 0x00000006,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700489}
490
491enum VkDescriptorType {
492 VK_DESCRIPTOR_TYPE_SAMPLER = 0x00000000,
493 VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 0x00000001,
494 VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 0x00000002,
495 VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 0x00000003,
496 VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 0x00000004,
497 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 0x00000005,
498 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 0x00000006,
499 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 0x00000007,
500 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 0x00000008,
501 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 0x00000009,
502 VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 0x0000000a,
503}
504
Jesse Halld27f6aa2015-08-15 17:58:48 -0700505enum VkQueryType {
506 VK_QUERY_TYPE_OCCLUSION = 0x00000000,
507 VK_QUERY_TYPE_PIPELINE_STATISTICS = 0x00000001, /// Optional
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800508 VK_QUERY_TYPE_TIMESTAMP = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700509}
510
Jesse Halld27f6aa2015-08-15 17:58:48 -0700511enum VkBorderColor {
512 VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0x00000000,
513 VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 0x00000001,
514 VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 0x00000002,
515 VK_BORDER_COLOR_INT_OPAQUE_BLACK = 0x00000003,
516 VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 0x00000004,
517 VK_BORDER_COLOR_INT_OPAQUE_WHITE = 0x00000005,
518}
519
520enum VkPipelineBindPoint {
Jesse Hallc7467b72015-11-29 21:05:26 -0800521 VK_PIPELINE_BIND_POINT_GRAPHICS = 0x00000000,
522 VK_PIPELINE_BIND_POINT_COMPUTE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700523}
524
525enum VkPrimitiveTopology {
526 VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0x00000000,
527 VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 0x00000001,
528 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 0x00000002,
529 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 0x00000003,
530 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 0x00000004,
531 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800532 VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 0x00000006,
533 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 0x00000007,
534 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 0x00000008,
535 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 0x00000009,
Jesse Hall091ed9e2015-11-30 00:55:29 -0800536 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 0x0000000a,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700537}
538
539enum VkSharingMode {
540 VK_SHARING_MODE_EXCLUSIVE = 0x00000000,
541 VK_SHARING_MODE_CONCURRENT = 0x00000001,
542}
543
544enum VkIndexType {
545 VK_INDEX_TYPE_UINT16 = 0x00000000,
546 VK_INDEX_TYPE_UINT32 = 0x00000001,
547}
548
Jesse Hall23ff73f2015-11-29 14:36:39 -0800549enum VkFilter {
550 VK_FILTER_NEAREST = 0x00000000,
551 VK_FILTER_LINEAR = 0x00000001,
Jesse Hall26763382016-05-20 07:13:52 -0700552
Jesse Hallad250842017-03-10 18:35:38 -0800553 //@extension("VK_IMG_filter_cubic") // 16
Jesse Hall26763382016-05-20 07:13:52 -0700554 VK_FILTER_CUBIC_IMG = 1000015000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700555}
556
Jesse Hall23ff73f2015-11-29 14:36:39 -0800557enum VkSamplerMipmapMode {
Jesse Hall23ff73f2015-11-29 14:36:39 -0800558 VK_SAMPLER_MIPMAP_MODE_NEAREST = 0x00000001, /// Choose nearest mip level
559 VK_SAMPLER_MIPMAP_MODE_LINEAR = 0x00000002, /// Linear filter between mip levels
Jesse Halld27f6aa2015-08-15 17:58:48 -0700560}
561
Jesse Hall23ff73f2015-11-29 14:36:39 -0800562enum VkSamplerAddressMode {
Jesse Hallc7467b72015-11-29 21:05:26 -0800563 VK_SAMPLER_ADDRESS_MODE_REPEAT = 0x00000000,
564 VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 0x00000001,
565 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 0x00000002,
566 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 0x00000003,
567 VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700568}
569
570enum VkCompareOp {
571 VK_COMPARE_OP_NEVER = 0x00000000,
572 VK_COMPARE_OP_LESS = 0x00000001,
573 VK_COMPARE_OP_EQUAL = 0x00000002,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800574 VK_COMPARE_OP_LESS_OR_EQUAL = 0x00000003,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700575 VK_COMPARE_OP_GREATER = 0x00000004,
576 VK_COMPARE_OP_NOT_EQUAL = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800577 VK_COMPARE_OP_GREATER_OR_EQUAL = 0x00000006,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700578 VK_COMPARE_OP_ALWAYS = 0x00000007,
579}
580
Jesse Hall65ab5522015-11-30 00:07:16 -0800581enum VkPolygonMode {
582 VK_POLYGON_MODE_FILL = 0x00000000,
583 VK_POLYGON_MODE_LINE = 0x00000001,
584 VK_POLYGON_MODE_POINT = 0x00000002,
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700585
586 //@extension("VK_NV_fill_rectangle") // 154
587 VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700588}
589
590enum VkFrontFace {
Jesse Hall3fbc8562015-11-29 22:10:52 -0800591 VK_FRONT_FACE_COUNTER_CLOCKWISE = 0x00000000,
592 VK_FRONT_FACE_CLOCKWISE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700593}
594
Jesse Hall65ab5522015-11-30 00:07:16 -0800595enum VkBlendFactor {
596 VK_BLEND_FACTOR_ZERO = 0x00000000,
597 VK_BLEND_FACTOR_ONE = 0x00000001,
598 VK_BLEND_FACTOR_SRC_COLOR = 0x00000002,
599 VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 0x00000003,
600 VK_BLEND_FACTOR_DST_COLOR = 0x00000004,
601 VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 0x00000005,
602 VK_BLEND_FACTOR_SRC_ALPHA = 0x00000006,
603 VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 0x00000007,
604 VK_BLEND_FACTOR_DST_ALPHA = 0x00000008,
605 VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 0x00000009,
606 VK_BLEND_FACTOR_CONSTANT_COLOR = 0x0000000a,
607 VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 0x0000000b,
608 VK_BLEND_FACTOR_CONSTANT_ALPHA = 0x0000000c,
609 VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 0x0000000d,
610 VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 0x0000000e,
611 VK_BLEND_FACTOR_SRC1_COLOR = 0x0000000f,
612 VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 0x00000010,
613 VK_BLEND_FACTOR_SRC1_ALPHA = 0x00000011,
614 VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 0x00000012,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700615}
616
617enum VkBlendOp {
618 VK_BLEND_OP_ADD = 0x00000000,
619 VK_BLEND_OP_SUBTRACT = 0x00000001,
620 VK_BLEND_OP_REVERSE_SUBTRACT = 0x00000002,
621 VK_BLEND_OP_MIN = 0x00000003,
622 VK_BLEND_OP_MAX = 0x00000004,
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700623
624 //@extension("VK_EXT_blend_operation_advanced") // 149
625 VK_BLEND_OP_ZERO_EXT = 1000148000,
626 VK_BLEND_OP_SRC_EXT = 1000148001,
627 VK_BLEND_OP_DST_EXT = 1000148002,
628 VK_BLEND_OP_SRC_OVER_EXT = 1000148003,
629 VK_BLEND_OP_DST_OVER_EXT = 1000148004,
630 VK_BLEND_OP_SRC_IN_EXT = 1000148005,
631 VK_BLEND_OP_DST_IN_EXT = 1000148006,
632 VK_BLEND_OP_SRC_OUT_EXT = 1000148007,
633 VK_BLEND_OP_DST_OUT_EXT = 1000148008,
634 VK_BLEND_OP_SRC_ATOP_EXT = 1000148009,
635 VK_BLEND_OP_DST_ATOP_EXT = 1000148010,
636 VK_BLEND_OP_XOR_EXT = 1000148011,
637 VK_BLEND_OP_MULTIPLY_EXT = 1000148012,
638 VK_BLEND_OP_SCREEN_EXT = 1000148013,
639 VK_BLEND_OP_OVERLAY_EXT = 1000148014,
640 VK_BLEND_OP_DARKEN_EXT = 1000148015,
641 VK_BLEND_OP_LIGHTEN_EXT = 1000148016,
642 VK_BLEND_OP_COLORDODGE_EXT = 1000148017,
643 VK_BLEND_OP_COLORBURN_EXT = 1000148018,
644 VK_BLEND_OP_HARDLIGHT_EXT = 1000148019,
645 VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020,
646 VK_BLEND_OP_DIFFERENCE_EXT = 1000148021,
647 VK_BLEND_OP_EXCLUSION_EXT = 1000148022,
648 VK_BLEND_OP_INVERT_EXT = 1000148023,
649 VK_BLEND_OP_INVERT_RGB_EXT = 1000148024,
650 VK_BLEND_OP_LINEARDODGE_EXT = 1000148025,
651 VK_BLEND_OP_LINEARBURN_EXT = 1000148026,
652 VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027,
653 VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028,
654 VK_BLEND_OP_PINLIGHT_EXT = 1000148029,
655 VK_BLEND_OP_HARDMIX_EXT = 1000148030,
656 VK_BLEND_OP_HSL_HUE_EXT = 1000148031,
657 VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032,
658 VK_BLEND_OP_HSL_COLOR_EXT = 1000148033,
659 VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034,
660 VK_BLEND_OP_PLUS_EXT = 1000148035,
661 VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036,
662 VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037,
663 VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038,
664 VK_BLEND_OP_MINUS_EXT = 1000148039,
665 VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040,
666 VK_BLEND_OP_CONTRAST_EXT = 1000148041,
667 VK_BLEND_OP_INVERT_OVG_EXT = 1000148042,
668 VK_BLEND_OP_RED_EXT = 1000148043,
669 VK_BLEND_OP_GREEN_EXT = 1000148044,
670 VK_BLEND_OP_BLUE_EXT = 1000148045,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700671}
672
673enum VkStencilOp {
674 VK_STENCIL_OP_KEEP = 0x00000000,
675 VK_STENCIL_OP_ZERO = 0x00000001,
676 VK_STENCIL_OP_REPLACE = 0x00000002,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800677 VK_STENCIL_OP_INCREMENT_AND_CLAMP = 0x00000003,
678 VK_STENCIL_OP_DECREMENT_AND_CLAMP = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700679 VK_STENCIL_OP_INVERT = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800680 VK_STENCIL_OP_INCREMENT_AND_WRAP = 0x00000006,
681 VK_STENCIL_OP_DECREMENT_AND_WRAP = 0x00000007,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700682}
683
684enum VkLogicOp {
685 VK_LOGIC_OP_CLEAR = 0x00000000,
686 VK_LOGIC_OP_AND = 0x00000001,
687 VK_LOGIC_OP_AND_REVERSE = 0x00000002,
688 VK_LOGIC_OP_COPY = 0x00000003,
689 VK_LOGIC_OP_AND_INVERTED = 0x00000004,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800690 VK_LOGIC_OP_NO_OP = 0x00000005,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700691 VK_LOGIC_OP_XOR = 0x00000006,
692 VK_LOGIC_OP_OR = 0x00000007,
693 VK_LOGIC_OP_NOR = 0x00000008,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800694 VK_LOGIC_OP_EQUIVALENT = 0x00000009,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700695 VK_LOGIC_OP_INVERT = 0x0000000a,
696 VK_LOGIC_OP_OR_REVERSE = 0x0000000b,
697 VK_LOGIC_OP_COPY_INVERTED = 0x0000000c,
698 VK_LOGIC_OP_OR_INVERTED = 0x0000000d,
699 VK_LOGIC_OP_NAND = 0x0000000e,
700 VK_LOGIC_OP_SET = 0x0000000f,
701}
702
Jesse Hall3fbc8562015-11-29 22:10:52 -0800703enum VkSystemAllocationScope {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800704 VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0x00000000,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800705 VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 0x00000001,
706 VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 0x00000002,
707 VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 0x00000003,
708 VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 0x00000004,
Jesse Hall03b6fe12015-11-24 12:44:21 -0800709}
710
Jesse Hall3fbc8562015-11-29 22:10:52 -0800711enum VkInternalAllocationType {
712 VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0x00000000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700713}
714
715enum VkPhysicalDeviceType {
716 VK_PHYSICAL_DEVICE_TYPE_OTHER = 0x00000000,
717 VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 0x00000001,
718 VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 0x00000002,
719 VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 0x00000003,
720 VK_PHYSICAL_DEVICE_TYPE_CPU = 0x00000004,
721}
722
Jesse Hall65ab5522015-11-30 00:07:16 -0800723enum VkVertexInputRate {
724 VK_VERTEX_INPUT_RATE_VERTEX = 0x00000000,
725 VK_VERTEX_INPUT_RATE_INSTANCE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700726}
727
728/// Vulkan format definitions
729enum VkFormat {
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800730 VK_FORMAT_UNDEFINED = 0,
731 VK_FORMAT_R4G4_UNORM_PACK8 = 1,
732 VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
733 VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
734 VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
735 VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
736 VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
737 VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
738 VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
739 VK_FORMAT_R8_UNORM = 9,
740 VK_FORMAT_R8_SNORM = 10,
741 VK_FORMAT_R8_USCALED = 11,
742 VK_FORMAT_R8_SSCALED = 12,
743 VK_FORMAT_R8_UINT = 13,
744 VK_FORMAT_R8_SINT = 14,
745 VK_FORMAT_R8_SRGB = 15,
746 VK_FORMAT_R8G8_UNORM = 16,
747 VK_FORMAT_R8G8_SNORM = 17,
748 VK_FORMAT_R8G8_USCALED = 18,
749 VK_FORMAT_R8G8_SSCALED = 19,
750 VK_FORMAT_R8G8_UINT = 20,
751 VK_FORMAT_R8G8_SINT = 21,
752 VK_FORMAT_R8G8_SRGB = 22,
753 VK_FORMAT_R8G8B8_UNORM = 23,
754 VK_FORMAT_R8G8B8_SNORM = 24,
755 VK_FORMAT_R8G8B8_USCALED = 25,
756 VK_FORMAT_R8G8B8_SSCALED = 26,
757 VK_FORMAT_R8G8B8_UINT = 27,
758 VK_FORMAT_R8G8B8_SINT = 28,
759 VK_FORMAT_R8G8B8_SRGB = 29,
760 VK_FORMAT_B8G8R8_UNORM = 30,
761 VK_FORMAT_B8G8R8_SNORM = 31,
762 VK_FORMAT_B8G8R8_USCALED = 32,
763 VK_FORMAT_B8G8R8_SSCALED = 33,
764 VK_FORMAT_B8G8R8_UINT = 34,
765 VK_FORMAT_B8G8R8_SINT = 35,
766 VK_FORMAT_B8G8R8_SRGB = 36,
767 VK_FORMAT_R8G8B8A8_UNORM = 37,
768 VK_FORMAT_R8G8B8A8_SNORM = 38,
769 VK_FORMAT_R8G8B8A8_USCALED = 39,
770 VK_FORMAT_R8G8B8A8_SSCALED = 40,
771 VK_FORMAT_R8G8B8A8_UINT = 41,
772 VK_FORMAT_R8G8B8A8_SINT = 42,
773 VK_FORMAT_R8G8B8A8_SRGB = 43,
774 VK_FORMAT_B8G8R8A8_UNORM = 44,
775 VK_FORMAT_B8G8R8A8_SNORM = 45,
776 VK_FORMAT_B8G8R8A8_USCALED = 46,
777 VK_FORMAT_B8G8R8A8_SSCALED = 47,
778 VK_FORMAT_B8G8R8A8_UINT = 48,
779 VK_FORMAT_B8G8R8A8_SINT = 49,
780 VK_FORMAT_B8G8R8A8_SRGB = 50,
781 VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
782 VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
783 VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
784 VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
785 VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
786 VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
787 VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
788 VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
789 VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
790 VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
791 VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
792 VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
793 VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
794 VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
795 VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
796 VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
797 VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
798 VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
799 VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
800 VK_FORMAT_R16_UNORM = 70,
801 VK_FORMAT_R16_SNORM = 71,
802 VK_FORMAT_R16_USCALED = 72,
803 VK_FORMAT_R16_SSCALED = 73,
804 VK_FORMAT_R16_UINT = 74,
805 VK_FORMAT_R16_SINT = 75,
806 VK_FORMAT_R16_SFLOAT = 76,
807 VK_FORMAT_R16G16_UNORM = 77,
808 VK_FORMAT_R16G16_SNORM = 78,
809 VK_FORMAT_R16G16_USCALED = 79,
810 VK_FORMAT_R16G16_SSCALED = 80,
811 VK_FORMAT_R16G16_UINT = 81,
812 VK_FORMAT_R16G16_SINT = 82,
813 VK_FORMAT_R16G16_SFLOAT = 83,
814 VK_FORMAT_R16G16B16_UNORM = 84,
815 VK_FORMAT_R16G16B16_SNORM = 85,
816 VK_FORMAT_R16G16B16_USCALED = 86,
817 VK_FORMAT_R16G16B16_SSCALED = 87,
818 VK_FORMAT_R16G16B16_UINT = 88,
819 VK_FORMAT_R16G16B16_SINT = 89,
820 VK_FORMAT_R16G16B16_SFLOAT = 90,
821 VK_FORMAT_R16G16B16A16_UNORM = 91,
822 VK_FORMAT_R16G16B16A16_SNORM = 92,
823 VK_FORMAT_R16G16B16A16_USCALED = 93,
824 VK_FORMAT_R16G16B16A16_SSCALED = 94,
825 VK_FORMAT_R16G16B16A16_UINT = 95,
826 VK_FORMAT_R16G16B16A16_SINT = 96,
827 VK_FORMAT_R16G16B16A16_SFLOAT = 97,
828 VK_FORMAT_R32_UINT = 98,
829 VK_FORMAT_R32_SINT = 99,
830 VK_FORMAT_R32_SFLOAT = 100,
831 VK_FORMAT_R32G32_UINT = 101,
832 VK_FORMAT_R32G32_SINT = 102,
833 VK_FORMAT_R32G32_SFLOAT = 103,
834 VK_FORMAT_R32G32B32_UINT = 104,
835 VK_FORMAT_R32G32B32_SINT = 105,
836 VK_FORMAT_R32G32B32_SFLOAT = 106,
837 VK_FORMAT_R32G32B32A32_UINT = 107,
838 VK_FORMAT_R32G32B32A32_SINT = 108,
839 VK_FORMAT_R32G32B32A32_SFLOAT = 109,
840 VK_FORMAT_R64_UINT = 110,
841 VK_FORMAT_R64_SINT = 111,
842 VK_FORMAT_R64_SFLOAT = 112,
843 VK_FORMAT_R64G64_UINT = 113,
844 VK_FORMAT_R64G64_SINT = 114,
845 VK_FORMAT_R64G64_SFLOAT = 115,
846 VK_FORMAT_R64G64B64_UINT = 116,
847 VK_FORMAT_R64G64B64_SINT = 117,
848 VK_FORMAT_R64G64B64_SFLOAT = 118,
849 VK_FORMAT_R64G64B64A64_UINT = 119,
850 VK_FORMAT_R64G64B64A64_SINT = 120,
851 VK_FORMAT_R64G64B64A64_SFLOAT = 121,
852 VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
853 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
854 VK_FORMAT_D16_UNORM = 124,
855 VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
856 VK_FORMAT_D32_SFLOAT = 126,
857 VK_FORMAT_S8_UINT = 127,
858 VK_FORMAT_D16_UNORM_S8_UINT = 128,
859 VK_FORMAT_D24_UNORM_S8_UINT = 129,
860 VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
861 VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
862 VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
863 VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
864 VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
865 VK_FORMAT_BC2_UNORM_BLOCK = 135,
866 VK_FORMAT_BC2_SRGB_BLOCK = 136,
867 VK_FORMAT_BC3_UNORM_BLOCK = 137,
868 VK_FORMAT_BC3_SRGB_BLOCK = 138,
869 VK_FORMAT_BC4_UNORM_BLOCK = 139,
870 VK_FORMAT_BC4_SNORM_BLOCK = 140,
871 VK_FORMAT_BC5_UNORM_BLOCK = 141,
872 VK_FORMAT_BC5_SNORM_BLOCK = 142,
873 VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
874 VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
875 VK_FORMAT_BC7_UNORM_BLOCK = 145,
876 VK_FORMAT_BC7_SRGB_BLOCK = 146,
877 VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
878 VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
879 VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
880 VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
881 VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
882 VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
883 VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
884 VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
885 VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
886 VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
887 VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
888 VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
889 VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
890 VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
891 VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
892 VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
893 VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
894 VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
895 VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
896 VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
897 VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
898 VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
899 VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
900 VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
901 VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
902 VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
903 VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
904 VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
905 VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
906 VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
907 VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
908 VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
909 VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
910 VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
911 VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
912 VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
913 VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
914 VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
Chris Forbes289cb792016-12-30 15:03:55 +1300915
Jesse Hallad250842017-03-10 18:35:38 -0800916 //@extension("VK_IMG_format_pvrtc") // 28
Jesse Halleb02c472017-02-24 15:13:45 -0800917 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
918 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
919 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
920 VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
921 VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
922 VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
923 VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
924 VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700925}
926
Jesse Halld27f6aa2015-08-15 17:58:48 -0700927/// Structure type enumerant
928enum VkStructureType {
929 VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
Jesse Hallc7467b72015-11-29 21:05:26 -0800930 VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
931 VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
932 VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
933 VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800934 VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
Jesse Hallc7467b72015-11-29 21:05:26 -0800935 VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
936 VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
937 VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
938 VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700939 VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
Jesse Hallc7467b72015-11-29 21:05:26 -0800940 VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
941 VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
942 VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
943 VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
944 VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
945 VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800946 VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
947 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
948 VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
949 VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
950 VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
951 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
952 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
953 VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
954 VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
955 VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
956 VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
957 VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
958 VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
959 VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
960 VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
961 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
962 VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800963 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800964 VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
965 VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
966 VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
967 VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
968 VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800969 VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
Jesse Hall3dd678a2016-01-08 21:52:01 -0800970 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
971 VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
972 VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
973 VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
974 VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
975 VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
976 VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
977 VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
Jesse Hall1356b0d2015-11-23 17:24:58 -0800978
Jesse Hallad250842017-03-10 18:35:38 -0800979 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -0800980 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
981 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
Jesse Hall1356b0d2015-11-23 17:24:58 -0800982
Jesse Hallad250842017-03-10 18:35:38 -0800983 //@extension("VK_KHR_display") // 3
Jesse Hallbd888842015-11-30 21:44:14 -0800984 VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
985 VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
Jesse Hall1356b0d2015-11-23 17:24:58 -0800986
Jesse Hallad250842017-03-10 18:35:38 -0800987 //@extension("VK_KHR_display_swapchain") // 4
Jesse Hallbd888842015-11-30 21:44:14 -0800988 VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR = 1000003000,
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800989
Jesse Hallad250842017-03-10 18:35:38 -0800990 //@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800991 VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
992
Jesse Hallad250842017-03-10 18:35:38 -0800993 //@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800994 VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
995
Jesse Hallad250842017-03-10 18:35:38 -0800996 //@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -0800997 VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
998
Jesse Hallad250842017-03-10 18:35:38 -0800999 //@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001000 VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000,
1001
Jesse Hallad250842017-03-10 18:35:38 -08001002 //@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001003 VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
1004
Jesse Hallad250842017-03-10 18:35:38 -08001005 //@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001006 VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
Jesse Hall543a7ff2016-01-08 16:38:30 -08001007
Jesse Hallad250842017-03-10 18:35:38 -08001008 //@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08001009 VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID = 1000010000,
Chris Forbes8e4438b2016-12-07 16:26:49 +13001010 VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID = 1000010001,
Chris Forbes1d4e5542017-02-15 19:38:50 +13001011 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID = 1000010002,
Chia-I Wub262ddc2016-03-22 07:38:20 +08001012
Jesse Hallad250842017-03-10 18:35:38 -08001013 //@extension("VK_EXT_debug_report") // 12
Jesse Hall26763382016-05-20 07:13:52 -07001014 VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
1015
Jesse Hallad250842017-03-10 18:35:38 -08001016 //@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07001017 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,
1018
Jesse Hallad250842017-03-10 18:35:38 -08001019 //@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07001020 VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,
Jesse Hall26763382016-05-20 07:13:52 -07001021 VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,
Jesse Hall26763382016-05-20 07:13:52 -07001022 VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,
Jesse Hall56d386a2016-07-26 15:20:40 -07001023
Jesse Hallad250842017-03-10 18:35:38 -08001024 //@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07001025 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
Jesse Hall56d386a2016-07-26 15:20:40 -07001026 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
Jesse Hall56d386a2016-07-26 15:20:40 -07001027 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
Chris Forbes289cb792016-12-30 15:03:55 +13001028
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001029 //@extension("VK_AMD_texture_gather_bias_lod") // 42
1030 VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000,
1031
Jesse Hallad250842017-03-10 18:35:38 -08001032 //@extension("VK_KHX_multiview") // 54
1033 VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX = 1000053000,
1034 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX = 1000053001,
1035 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX = 1000053002,
1036
1037 //@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08001038 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
1039 VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,
Chris Forbes289cb792016-12-30 15:03:55 +13001040
Jesse Hallad250842017-03-10 18:35:38 -08001041 //@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08001042 VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
1043 VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
Chris Forbes289cb792016-12-30 15:03:55 +13001044
Jesse Hallad250842017-03-10 18:35:38 -08001045 //@extension("VK_NV_win32_keyed_mutex") // 59
Chris Forbes289cb792016-12-30 15:03:55 +13001046 VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
1047
Jesse Hallad250842017-03-10 18:35:38 -08001048 //@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall889cd9a2017-02-25 22:12:23 -08001049 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000,
1050 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001,
1051 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002,
1052 VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003,
1053 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004,
1054 VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005,
1055 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006,
1056 VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007,
Chris Forbes1194ede2016-12-30 16:29:25 +13001057 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008,
1058
Jesse Hallad250842017-03-10 18:35:38 -08001059 //@extension("VK_KHX_device_group") // 61
1060 VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX = 1000060000,
1061 VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX = 1000060001,
1062 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX = 1000060002,
1063 VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX = 1000060003,
1064 VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX = 1000060004,
1065 VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX = 1000060005,
1066 VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX = 1000060006,
1067 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX = 1000060007,
1068 VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX = 1000060008,
1069 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX = 1000060009,
1070 VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX = 1000060010,
1071 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX = 1000060011,
1072 VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX = 1000060012,
1073
1074 //@extension("VK_EXT_validation_flags") // 62
Jesse Halleb02c472017-02-24 15:13:45 -08001075 VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
Chris Forbes289cb792016-12-30 15:03:55 +13001076
Jesse Hallad250842017-03-10 18:35:38 -08001077 //@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08001078 VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000,
1079
Jesse Hallad250842017-03-10 18:35:38 -08001080 //@extension("VK_KHX_device_group_creation") // 71
1081 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX = 1000070000,
1082 VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX = 1000070001,
1083
1084 //@extension("VK_KHX_external_memory_capabilities") // 72
1085 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHX = 1000071000,
1086 VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHX = 1000071001,
1087 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHX = 1000071002,
1088 VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHX = 1000071003,
1089 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHX = 1000071004,
Jesse Hallad250842017-03-10 18:35:38 -08001090
1091 //@extension("VK_KHX_external_memory") // 73
1092 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHX = 1000072000,
1093 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHX = 1000072001,
1094 VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHX = 1000072002,
1095
1096 //@extension("VK_KHX_external_memory_win32") // 74
1097 VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHX = 1000073000,
1098 VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHX = 1000073001,
1099 VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHX = 1000073002,
1100
1101 //@extension("VK_KHX_external_memory_fd") // 75
1102 VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHX = 1000074000,
1103 VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHX = 1000074001,
1104
1105 //@extension("VK_KHX_win32_keyed_mutex") // 76
1106 VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHX = 1000075000,
1107
1108 //@extension("VK_KHX_external_semaphore_capabilities") // 77
1109 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHX = 1000076000,
1110 VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHX = 1000076001,
1111
1112 //@extension("VK_KHX_external_semaphore") // 78
1113 VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHX = 1000077000,
1114
1115 //@extension("VK_KHX_external_semaphore_win32") // 79
1116 VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX = 1000078000,
1117 VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX = 1000078001,
1118 VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHX = 1000078002,
1119
1120 //@extension("VK_KHX_external_semaphore_fd") // 80
1121 VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHX = 1000079000,
1122
1123 //@extension("VK_KHR_push_descriptor") // 81
1124 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000,
1125
1126 //@extension("VK_KHR_incremental_present") // 85
Jesse Hall889cd9a2017-02-25 22:12:23 -08001127 VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
Chris Forbes289cb792016-12-30 15:03:55 +13001128
Jesse Hallad250842017-03-10 18:35:38 -08001129 //@extension("VK_KHR_descriptor_update_template") // 86
1130 VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000,
1131
1132 //@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08001133 VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
1134 VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
1135 VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = 1000086002,
1136 VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = 1000086003,
1137 VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004,
1138 VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001139
Jesse Hallad250842017-03-10 18:35:38 -08001140 //@extension("VK_NV_clip_space_w_scaling") // 88
1141 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000,
1142
1143 //@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08001144 VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000,
1145
Jesse Hallad250842017-03-10 18:35:38 -08001146 //@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001147 VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000,
1148 VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001,
1149 VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002,
1150 VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,
Jesse Hallad250842017-03-10 18:35:38 -08001151
1152 //@extension("VK_GOOGLE_display_timing") // 93
1153 VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000,
1154
1155 //@extension("VK_NVX_multiview_per_view_attributes") // 98
1156 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000,
1157
1158 //@extension("VK_NV_viewport_swizzle") // 99
1159 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000,
1160
1161 //@extension("VK_EXT_discard_rectangles") // 100
1162 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,
1163 VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,
1164
Jesse Hallfdc8ab32017-03-10 21:01:57 -08001165 //@extension("VK_EXT_hdr_metadata") // 106
1166 VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
1167
Jesse Hall05556b12017-05-18 17:40:25 -07001168 //@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbese2d3ee12017-03-16 16:10:15 +13001169 VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
1170
Jesse Hall05556b12017-05-18 17:40:25 -07001171 //@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13001172 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,
1173 VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001,
1174 VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002,
1175
Jesse Hallad250842017-03-10 18:35:38 -08001176 //@extension("VK_MVK_ios_surface") // 123
1177 VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000,
1178
1179 //@extension("VK_MVK_macos_surface") // 124
1180 VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001181
1182 //@extension("VK_EXT_sampler_filter_minmax") // 131
1183 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000,
1184 VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001,
1185
1186 //@extension("VK_EXT_blend_operation_advanced") // 149
1187 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000,
1188 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001,
1189 VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
1190
1191 //@extension("VK_NV_fragment_coverage_to_color") // 150
1192 VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000,
1193
1194 //@structure("VK_NV_framebuffer_mixed_samples") // 153
1195 VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001196}
1197
Jesse Hall65ab5522015-11-30 00:07:16 -08001198enum VkSubpassContents {
1199 VK_SUBPASS_CONTENTS_INLINE = 0x00000000,
1200 VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001201}
1202
Jesse Hall543a7ff2016-01-08 16:38:30 -08001203enum VkPipelineCacheHeaderVersion {
1204 VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
1205}
1206
Jesse Hallbd888842015-11-30 21:44:14 -08001207@lastUnused(-11)
Jesse Halld27f6aa2015-08-15 17:58:48 -07001208/// Error and return codes
1209enum VkResult {
1210 // Return codes for successful operation execution (positive values)
Jesse Hallbd888842015-11-30 21:44:14 -08001211 VK_SUCCESS = 0,
1212 VK_NOT_READY = 1,
1213 VK_TIMEOUT = 2,
1214 VK_EVENT_SET = 3,
1215 VK_EVENT_RESET = 4,
1216 VK_INCOMPLETE = 5,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001217
Jesse Hallad250842017-03-10 18:35:38 -08001218 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -08001219 VK_SUBOPTIMAL_KHR = 1000001003,
Jesse Hall1356b0d2015-11-23 17:24:58 -08001220
Jesse Halld27f6aa2015-08-15 17:58:48 -07001221 // Error codes (negative values)
Jesse Hallbd888842015-11-30 21:44:14 -08001222 VK_ERROR_OUT_OF_HOST_MEMORY = 0xFFFFFFFF, // -1
1223 VK_ERROR_OUT_OF_DEVICE_MEMORY = 0xFFFFFFFE, // -2
1224 VK_ERROR_INITIALIZATION_FAILED = 0xFFFFFFFD, // -3
1225 VK_ERROR_DEVICE_LOST = 0xFFFFFFFC, // -4
1226 VK_ERROR_MEMORY_MAP_FAILED = 0xFFFFFFFB, // -5
1227 VK_ERROR_LAYER_NOT_PRESENT = 0xFFFFFFFA, // -6
1228 VK_ERROR_EXTENSION_NOT_PRESENT = 0xFFFFFFF9, // -7
1229 VK_ERROR_FEATURE_NOT_PRESENT = 0xFFFFFFF8, // -8
1230 VK_ERROR_INCOMPATIBLE_DRIVER = 0xFFFFFFF7, // -9
1231 VK_ERROR_TOO_MANY_OBJECTS = 0xFFFFFFF6, // -10
1232 VK_ERROR_FORMAT_NOT_SUPPORTED = 0xFFFFFFF5, // -11
Jesse Hall56d386a2016-07-26 15:20:40 -07001233 VK_ERROR_FRAGMENTED_POOL = 0xFFFFFFF4, // -12
Jesse Hall1356b0d2015-11-23 17:24:58 -08001234
Jesse Hallad250842017-03-10 18:35:38 -08001235 //@extension("VK_KHR_surface") // 1
Jesse Hallbd888842015-11-30 21:44:14 -08001236 VK_ERROR_SURFACE_LOST_KHR = 0xC4653600, // -1000000000
Jesse Hallad250842017-03-10 18:35:38 -08001237 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = 0xC46535FF, // -1000000001
Jesse Halla6429252015-11-29 18:59:42 -08001238
Jesse Hallad250842017-03-10 18:35:38 -08001239 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -08001240 VK_ERROR_OUT_OF_DATE_KHR = 0xC4653214, // -1000001004
Jesse Hall1356b0d2015-11-23 17:24:58 -08001241
Jesse Hallad250842017-03-10 18:35:38 -08001242 //@extension("VK_KHR_display_swapchain") // 4
Jesse Hallbd888842015-11-30 21:44:14 -08001243 VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = 0xC4652A47, // -1000003001
Jesse Hall1356b0d2015-11-23 17:24:58 -08001244
Jesse Hallad250842017-03-10 18:35:38 -08001245 //@extension("VK_EXT_debug_report") // 12
Jesse Hall543a7ff2016-01-08 16:38:30 -08001246 VK_ERROR_VALIDATION_FAILED_EXT = 0xC4650B07, // -1000011001
Jesse Hall26763382016-05-20 07:13:52 -07001247
Jesse Hallad250842017-03-10 18:35:38 -08001248 //@extension("VK_NV_glsl_shader") // 13
Jesse Hall26763382016-05-20 07:13:52 -07001249 VK_ERROR_INVALID_SHADER_NV = 0xC4650720, // -1000012000
Jesse Hall77ad05b2017-03-10 22:02:20 -08001250
Jesse Hallad250842017-03-10 18:35:38 -08001251 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08001252 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = 0xC4642878, // -1000069000
Jesse Hallad250842017-03-10 18:35:38 -08001253
1254 //@extension("VK_KHX_external_memory") // 73
1255 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHX = 0xC4641CBD, // -1000072003
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001256}
1257
1258enum VkDynamicState {
1259 VK_DYNAMIC_STATE_VIEWPORT = 0x00000000,
1260 VK_DYNAMIC_STATE_SCISSOR = 0x00000001,
1261 VK_DYNAMIC_STATE_LINE_WIDTH = 0x00000002,
1262 VK_DYNAMIC_STATE_DEPTH_BIAS = 0x00000003,
1263 VK_DYNAMIC_STATE_BLEND_CONSTANTS = 0x00000004,
1264 VK_DYNAMIC_STATE_DEPTH_BOUNDS = 0x00000005,
1265 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 0x00000006,
1266 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 0x00000007,
1267 VK_DYNAMIC_STATE_STENCIL_REFERENCE = 0x00000008,
Jesse Hallad250842017-03-10 18:35:38 -08001268
1269 //@extension("VK_NV_clip_space_w_scaling") // 88
1270 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000,
1271
1272 //@extension("VK_EXT_discard_rectangles") // 100
1273 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001274}
1275
Jesse Hall05556b12017-05-18 17:40:25 -07001276enum VkObjectType {
1277 VK_OBJECT_TYPE_UNKNOWN = 0,
1278 VK_OBJECT_TYPE_INSTANCE = 1,
1279 VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,
1280 VK_OBJECT_TYPE_DEVICE = 3,
1281 VK_OBJECT_TYPE_QUEUE = 4,
1282 VK_OBJECT_TYPE_SEMAPHORE = 5,
1283 VK_OBJECT_TYPE_COMMAND_BUFFER = 6,
1284 VK_OBJECT_TYPE_FENCE = 7,
1285 VK_OBJECT_TYPE_DEVICE_MEMORY = 8,
1286 VK_OBJECT_TYPE_BUFFER = 9,
1287 VK_OBJECT_TYPE_IMAGE = 10,
1288 VK_OBJECT_TYPE_EVENT = 11,
1289 VK_OBJECT_TYPE_QUERY_POOL = 12,
1290 VK_OBJECT_TYPE_BUFFER_VIEW = 13,
1291 VK_OBJECT_TYPE_IMAGE_VIEW = 14,
1292 VK_OBJECT_TYPE_SHADER_MODULE = 15,
1293 VK_OBJECT_TYPE_PIPELINE_CACHE = 16,
1294 VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,
1295 VK_OBJECT_TYPE_RENDER_PASS = 18,
1296 VK_OBJECT_TYPE_PIPELINE = 19,
1297 VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,
1298 VK_OBJECT_TYPE_SAMPLER = 21,
1299 VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,
1300 VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,
1301 VK_OBJECT_TYPE_FRAMEBUFFER = 24,
1302 VK_OBJECT_TYPE_COMMAND_POOL = 25,
1303
1304 //@extension("VK_KHR_surface") // 1
1305 VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,
1306
1307 //@extension("VK_KHR_swapchain") // 2
1308 VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,
1309
1310 //@extension("VK_KHR_display") // 3
1311 VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000,
1312 VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001,
1313
1314 //@extension("VK_KHR_debug_report") // 12
1315 VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000,
1316
1317 //@extension("VK_KHR_descriptor_update_template") // 86
1318 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000,
1319
1320 //@extension("VK_NVX_device_generated_commands") // 87
1321 VK_OBJECT_TYPE_OBJECT_TABLE_NVX = 1000086000,
1322 VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = 1000086001,
1323}
1324
Jesse Hallad250842017-03-10 18:35:38 -08001325@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08001326enum VkPresentModeKHR {
1327 VK_PRESENT_MODE_IMMEDIATE_KHR = 0x00000000,
1328 VK_PRESENT_MODE_MAILBOX_KHR = 0x00000001,
1329 VK_PRESENT_MODE_FIFO_KHR = 0x00000002,
Jesse Hall03b6fe12015-11-24 12:44:21 -08001330 VK_PRESENT_MODE_FIFO_RELAXED_KHR = 0x00000003,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001331
Jesse Hall05556b12017-05-18 17:40:25 -07001332 //@extension("VK_KHR_shared_presentable_image") // 112
Jesse Hall77ad05b2017-03-10 22:02:20 -08001333 VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,
1334 VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,
Michael Lentine88594d72015-11-12 12:49:45 -08001335}
1336
Jesse Hallad250842017-03-10 18:35:38 -08001337@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08001338enum VkColorSpaceKHR {
1339 VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0x00000000,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001340
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001341 //@extension("VK_EXT_swapchain_colorspace") // 105
1342 VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
1343 VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
1344 VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003,
1345 VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
1346 VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
1347 VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
1348 VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
1349 VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
1350 VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
1351 VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
Courtney Goeltzenleuchter7f558ed2017-01-23 17:15:24 -07001352 VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
1353 VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001354 VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
Courtney Goeltzenleuchteredc88e72017-07-09 12:50:57 -06001355 VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014,
Michael Lentine88594d72015-11-12 12:49:45 -08001356}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001357
Jesse Hallad250842017-03-10 18:35:38 -08001358@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08001359enum VkDebugReportObjectTypeEXT {
1360 VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
1361 VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
1362 VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
1363 VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,
1364 VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,
1365 VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,
1366 VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,
1367 VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,
1368 VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,
1369 VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,
1370 VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,
1371 VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,
1372 VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,
1373 VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,
1374 VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,
1375 VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,
1376 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,
1377 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,
1378 VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,
1379 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,
1380 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,
1381 VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,
1382 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,
1383 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,
1384 VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,
1385 VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,
1386 VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
1387 VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001388 VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28,
Chris Forbes289cb792016-12-30 15:03:55 +13001389 VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29,
1390 VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,
1391 VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31,
1392 VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32,
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001393
1394 //extension("VK_KHR_descriptor_update_template") // 86
1395 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000,
Jesse Hall715b86a2016-01-16 16:34:29 -08001396}
1397
Jesse Hallad250842017-03-10 18:35:38 -08001398@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07001399enum VkRasterizationOrderAMD {
1400 VK_RASTERIZATION_ORDER_STRICT_AMD = 0,
1401 VK_RASTERIZATION_ORDER_RELAXED_AMD = 1,
1402}
1403
Jesse Hallad250842017-03-10 18:35:38 -08001404@extension("VK_EXT_validation_flags") // 62
Chris Forbes289cb792016-12-30 15:03:55 +13001405enum VkValidationCheckEXT {
1406 VK_VALIDATION_CHECK_ALL_EXT = 0,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001407 VK_VALIDATION_CHECK_SHADERS_EXT = 1,
Chris Forbes289cb792016-12-30 15:03:55 +13001408}
1409
Jesse Hallad250842017-03-10 18:35:38 -08001410@extension("VK_KHR_descriptor_update_template") // 86
1411enum VkDescriptorUpdateTemplateTypeKHR {
1412 VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0,
1413 VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1,
1414}
1415
1416@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001417enum VkIndirectCommandsTokenTypeNVX {
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001418 VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX = 0,
1419 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX = 1,
1420 VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX = 2,
1421 VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX = 3,
1422 VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX = 4,
1423 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX = 5,
1424 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX = 6,
1425 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX = 7,
Chris Forbes289cb792016-12-30 15:03:55 +13001426}
1427
Jesse Hallad250842017-03-10 18:35:38 -08001428@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001429enum VkObjectEntryTypeNVX {
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001430 VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX = 0,
1431 VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX = 1,
1432 VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX = 2,
1433 VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX = 3,
1434 VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX = 4,
Chris Forbes289cb792016-12-30 15:03:55 +13001435}
Jesse Hall715b86a2016-01-16 16:34:29 -08001436
Jesse Hallad250842017-03-10 18:35:38 -08001437@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001438enum VkDisplayPowerStateEXT {
1439 VK_DISPLAY_POWER_STATE_OFF_EXT = 0,
1440 VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,
1441 VK_DISPLAY_POWER_STATE_ON_EXT = 2,
1442}
1443
Jesse Hallad250842017-03-10 18:35:38 -08001444@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001445enum VkDeviceEventTypeEXT {
1446 VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0,
1447}
1448
Jesse Hallad250842017-03-10 18:35:38 -08001449@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001450enum VkDisplayEventTypeEXT {
1451 VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,
1452}
1453
Jesse Hallad250842017-03-10 18:35:38 -08001454@extension("VK_NV_viewport_swizzle") // 99
1455enum VkViewportCoordinateSwizzleNV {
1456 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0,
1457 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1,
1458 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2,
1459 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3,
1460 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4,
1461 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5,
1462 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6,
1463 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7,
1464}
1465
1466@extension("VK_EXT_discard_rectangles") // 100
1467enum VkDiscardRectangleModeEXT {
1468 VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,
1469 VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,
1470}
1471
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001472@extension("VK_EXT_sampler_filter_minmax") // 131
1473enum VkSamplerReductionModeEXT {
1474 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0,
1475 VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1,
1476 VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2,
1477}
1478
1479@extension("VK_EXT_blend_operation_advanced") // 149
1480enum VkBlendOverlapEXT {
1481 VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0,
1482 VK_BLEND_OVERLAP_DISJOINT_EXT = 1,
1483 VK_BLEND_OVERLAP_CONJOINT_EXT = 2,
1484}
1485
1486@extension("VK_NV_framebuffer_mixed_samples") // 153
1487enum VkCoverageModulationModeNV {
1488 VK_COVERAGE_MODULATION_MODE_NONE_NV = 0,
1489 VK_COVERAGE_MODULATION_MODE_RGB_NV = 1,
1490 VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2,
1491 VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3,
1492}
1493
Jesse Halld27f6aa2015-08-15 17:58:48 -07001494/////////////////
1495// Bitfields //
1496/////////////////
1497
Jesse Halld27f6aa2015-08-15 17:58:48 -07001498/// Queue capabilities
Jesse Halld8bade02015-11-24 10:24:18 -08001499type VkFlags VkQueueFlags
1500bitfield VkQueueFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001501 VK_QUEUE_GRAPHICS_BIT = 0x00000001, /// Queue supports graphics operations
1502 VK_QUEUE_COMPUTE_BIT = 0x00000002, /// Queue supports compute operations
Jesse Hall65ab5522015-11-30 00:07:16 -08001503 VK_QUEUE_TRANSFER_BIT = 0x00000004, /// Queue supports transfer operations
Jesse Hallb00daad2015-11-29 19:46:20 -08001504 VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008, /// Queue supports sparse resource memory management operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001505}
1506
1507/// Memory properties passed into vkAllocMemory().
Jesse Halld8bade02015-11-24 10:24:18 -08001508type VkFlags VkMemoryPropertyFlags
1509bitfield VkMemoryPropertyFlagBits {
Jesse Halld1af8122015-11-29 23:50:38 -08001510 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
1511 VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
1512 VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
1513 VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
1514 VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001515}
1516
1517/// Memory heap flags
Jesse Halld8bade02015-11-24 10:24:18 -08001518type VkFlags VkMemoryHeapFlags
1519bitfield VkMemoryHeapFlagBits {
Jesse Halld1af8122015-11-29 23:50:38 -08001520 VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
Jesse Hallad250842017-03-10 18:35:38 -08001521
1522 //@extension("VK_KHX_device_group_creation") // 71
1523 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001524}
1525
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001526/// Access flags
1527type VkFlags VkAccessFlags
1528bitfield VkAccessFlagBits {
1529 VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
1530 VK_ACCESS_INDEX_READ_BIT = 0x00000002,
1531 VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
1532 VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
1533 VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
1534 VK_ACCESS_SHADER_READ_BIT = 0x00000020,
1535 VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
1536 VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
1537 VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
1538 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
1539 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
1540 VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
1541 VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
1542 VK_ACCESS_HOST_READ_BIT = 0x00002000,
1543 VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
1544 VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
1545 VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
Chris Forbes289cb792016-12-30 15:03:55 +13001546
Jesse Hallad250842017-03-10 18:35:38 -08001547 //@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001548 VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000,
Chris Forbes289cb792016-12-30 15:03:55 +13001549 VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001550
1551 //@extension("VK_EXT_blend_operation_advanced") // 149
1552 VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001553}
1554
1555/// Buffer usage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001556type VkFlags VkBufferUsageFlags
1557bitfield VkBufferUsageFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -08001558 VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations
1559 VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001560 VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004, /// Can be used as TBO
1561 VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008, /// Can be used as IBO
1562 VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010, /// Can be used as UBO
1563 VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020, /// Can be used as SSBO
1564 VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, /// Can be used as source of fixed function index fetch (index buffer)
1565 VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, /// Can be used as source of fixed function vertex fetch (VBO)
1566 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, /// Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer)
1567}
1568
1569/// Buffer creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001570type VkFlags VkBufferCreateFlags
1571bitfield VkBufferCreateFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001572 VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Buffer should support sparse backing
Jesse Halld27f6aa2015-08-15 17:58:48 -07001573 VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Buffer should support sparse backing with partial residency
1574 VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004, /// Buffer should support constent data access to physical memory blocks mapped into multiple locations of sparse buffers
1575}
1576
1577/// Shader stage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001578type VkFlags VkShaderStageFlags
1579bitfield VkShaderStageFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001580 VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
Jesse Hallae38f732015-11-19 21:32:50 -08001581 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
1582 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001583 VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
1584 VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
1585 VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
Jesse Hallc7467b72015-11-29 21:05:26 -08001586 VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001587
1588 VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
1589}
1590
Jesse Hallfbf97b02015-11-20 14:17:03 -08001591/// Descriptor pool create flags
Jesse Halld8bade02015-11-24 10:24:18 -08001592type VkFlags VkDescriptorPoolCreateFlags
1593bitfield VkDescriptorPoolCreateFlagBits {
Jesse Hallfbf97b02015-11-20 14:17:03 -08001594 VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
1595}
1596
1597/// Descriptor pool reset flags
Jesse Halld8bade02015-11-24 10:24:18 -08001598type VkFlags VkDescriptorPoolResetFlags
Jesse Halla6429252015-11-29 18:59:42 -08001599//bitfield VkDescriptorPoolResetFlagBits {
1600//}
Jesse Hallfbf97b02015-11-20 14:17:03 -08001601
Jesse Halld27f6aa2015-08-15 17:58:48 -07001602/// Image usage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001603type VkFlags VkImageUsageFlags
1604bitfield VkImageUsageFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -08001605 VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations
1606 VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001607 VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004, /// Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
1608 VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008, /// Can be used as storage image (STORAGE_IMAGE descriptor type)
1609 VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010, /// Can be used as framebuffer color attachment
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001610 VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020, /// Can be used as framebuffer depth/stencil attachment
Jesse Halld27f6aa2015-08-15 17:58:48 -07001611 VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040, /// Image data not needed outside of rendering
1612 VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080, /// Can be used as framebuffer input attachment
1613}
1614
1615/// Image creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001616type VkFlags VkImageCreateFlags
1617bitfield VkImageCreateFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001618 VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Image should support sparse backing
Jesse Halld27f6aa2015-08-15 17:58:48 -07001619 VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Image should support sparse backing with partial residency
1620 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 -07001621 VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008, /// Allows image views to have different format than the base image
1622 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 -08001623
Jesse Hallad250842017-03-10 18:35:38 -08001624 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08001625 VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 0x00000020,
Jesse Hallad250842017-03-10 18:35:38 -08001626
1627 //@extension("VK_KHX_device_group") // 61
1628 VK_IMAGE_CREATE_BIND_SFR_BIT_KHX = 0x00000040,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001629}
1630
Jesse Hallb00daad2015-11-29 19:46:20 -08001631/// Image view creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001632type VkFlags VkImageViewCreateFlags
Jesse Hallb00daad2015-11-29 19:46:20 -08001633//bitfield VkImageViewCreateFlagBits {
1634//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001635
1636/// Pipeline creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001637type VkFlags VkPipelineCreateFlags
1638bitfield VkPipelineCreateFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001639 VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
1640 VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
1641 VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
Jesse Hallad250842017-03-10 18:35:38 -08001642
1643 //@extension("VK_KHX_device_group") // 61
1644 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX = 0x00000008,
1645 VK_PIPELINE_CREATE_DISPATCH_BASE_KHX = 0x00000010,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001646}
1647
Jesse Hall65ab5522015-11-30 00:07:16 -08001648/// Color component flags
1649type VkFlags VkColorComponentFlags
1650bitfield VkColorComponentFlagBits {
1651 VK_COLOR_COMPONENT_R_BIT = 0x00000001,
1652 VK_COLOR_COMPONENT_G_BIT = 0x00000002,
1653 VK_COLOR_COMPONENT_B_BIT = 0x00000004,
1654 VK_COLOR_COMPONENT_A_BIT = 0x00000008,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001655}
1656
1657/// Fence creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001658type VkFlags VkFenceCreateFlags
1659bitfield VkFenceCreateFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001660 VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
1661}
1662
1663/// Semaphore creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001664type VkFlags VkSemaphoreCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001665//bitfield VkSemaphoreCreateFlagBits {
1666//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001667
1668/// Format capability flags
Jesse Halld8bade02015-11-24 10:24:18 -08001669type VkFlags VkFormatFeatureFlags
1670bitfield VkFormatFeatureFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001671 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001, /// Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
1672 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002, /// Format can be used for storage images (STORAGE_IMAGE descriptor type)
1673 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004, /// Format supports atomic operations in case it's used for storage images
1674 VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008, /// Format can be used for uniform texel buffers (TBOs)
1675 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010, /// Format can be used for storage texel buffers (IBOs)
1676 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020, /// Format supports atomic operations in case it's used for storage texel buffers
1677 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040, /// Format can be used for vertex buffers (VBOs)
1678 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080, /// Format can be used for color attachment images
1679 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100, /// Format supports blending in case it's used for color attachment images
1680 VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200, /// Format can be used for depth/stencil attachment images
Jesse Hall3fbc8562015-11-29 22:10:52 -08001681 VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400, /// Format can be used as the source image of blits with vkCommandBlitImage
1682 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 -08001683 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
Jesse Hall26763382016-05-20 07:13:52 -07001684
Jesse Hallad250842017-03-10 18:35:38 -08001685 //@extension("VK_IMG_filter_cubic") // 16
Jesse Hall26763382016-05-20 07:13:52 -07001686 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001687
Jesse Hallad250842017-03-10 18:35:38 -08001688 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08001689 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 0x00004000,
1690 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 0x00008000,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001691
1692 //@extension("VK_EXT_sampler_filter_minmax") // 131
1693 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 0x00010000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001694}
1695
1696/// Query control flags
Jesse Halld8bade02015-11-24 10:24:18 -08001697type VkFlags VkQueryControlFlags
1698bitfield VkQueryControlFlagBits {
Jesse Hall65ab5522015-11-30 00:07:16 -08001699 VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001700}
1701
1702/// Query result flags
Jesse Halld8bade02015-11-24 10:24:18 -08001703type VkFlags VkQueryResultFlags
1704bitfield VkQueryResultFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001705 VK_QUERY_RESULT_64_BIT = 0x00000001, /// Results of the queries are written to the destination buffer as 64-bit values
1706 VK_QUERY_RESULT_WAIT_BIT = 0x00000002, /// Results of the queries are waited on before proceeding with the result copy
1707 VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, /// Besides the results of the query, the availability of the results is also written
1708 VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008, /// Copy the partial results of the query even if the final results aren't available
1709}
1710
1711/// Shader module creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001712type VkFlags VkShaderModuleCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001713//bitfield VkShaderModuleCreateFlagBits {
1714//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001715
Jesse Halld27f6aa2015-08-15 17:58:48 -07001716/// Event creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001717type VkFlags VkEventCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001718//bitfield VkEventCreateFlagBits {
1719//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001720
Jesse Halla15a4bf2015-11-19 22:48:02 -08001721/// Command buffer usage flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08001722type VkFlags VkCommandBufferUsageFlags
1723bitfield VkCommandBufferUsageFlagBits {
1724 VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
1725 VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
1726 VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001727}
1728
1729/// Pipeline statistics flags
Jesse Halld8bade02015-11-24 10:24:18 -08001730type VkFlags VkQueryPipelineStatisticFlags
1731bitfield VkQueryPipelineStatisticFlagBits {
Jesse Hallae38f732015-11-19 21:32:50 -08001732 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001, /// Optional
1733 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002, /// Optional
1734 VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004, /// Optional
1735 VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008, /// Optional
1736 VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010, /// Optional
1737 VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020, /// Optional
1738 VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040, /// Optional
1739 VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080, /// Optional
1740 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100, /// Optional
1741 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200, /// Optional
1742 VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400, /// Optional
Jesse Halld27f6aa2015-08-15 17:58:48 -07001743}
1744
1745/// Memory mapping flags
Jesse Halld8bade02015-11-24 10:24:18 -08001746type VkFlags VkMemoryMapFlags
Jesse Halla6429252015-11-29 18:59:42 -08001747//bitfield VkMemoryMapFlagBits {
1748//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001749
1750/// Bitfield of image aspects
Jesse Halld8bade02015-11-24 10:24:18 -08001751type VkFlags VkImageAspectFlags
1752bitfield VkImageAspectFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001753 VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
1754 VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
1755 VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
1756 VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
1757}
1758
1759/// Sparse memory bind flags
Jesse Halld8bade02015-11-24 10:24:18 -08001760type VkFlags VkSparseMemoryBindFlags
Jesse Hall091ed9e2015-11-30 00:55:29 -08001761bitfield VkSparseMemoryBindFlagBits {
1762 VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
1763}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001764
1765/// Sparse image memory requirements flags
Jesse Halld8bade02015-11-24 10:24:18 -08001766type VkFlags VkSparseImageFormatFlags
1767bitfield VkSparseImageFormatFlagBits {
Jesse Hallb00daad2015-11-29 19:46:20 -08001768 VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001, /// Image uses a single miptail region for all array slices
1769 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.
1770 VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004, /// Image uses a non-standard sparse block size
Jesse Halld27f6aa2015-08-15 17:58:48 -07001771}
1772
1773/// Pipeline stages
Jesse Halld8bade02015-11-24 10:24:18 -08001774type VkFlags VkPipelineStageFlags
1775bitfield VkPipelineStageFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001776 VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001, /// Before subsequent commands are processed
1777 VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002, /// Draw/DispatchIndirect command fetch
1778 VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004, /// Vertex/index fetch
1779 VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008, /// Vertex shading
Jesse Hallae38f732015-11-19 21:32:50 -08001780 VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010, /// Tessellation control shading
1781 VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020, /// Tessellation evaluation shading
Jesse Halld27f6aa2015-08-15 17:58:48 -07001782 VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040, /// Geometry shading
1783 VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080, /// Fragment shading
1784 VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100, /// Early fragment (depth/stencil) tests
1785 VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200, /// Late fragment (depth/stencil) tests
1786 VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400, /// Color attachment writes
1787 VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800, /// Compute shading
1788 VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000, /// Transfer/copy operations
Jesse Hall543a7ff2016-01-08 16:38:30 -08001789 VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
1790 VK_PIPELINE_STAGE_HOST_BIT = 0x00004000, /// Indicates host (CPU) is a source/sink of the dependency
Jesse Halld27f6aa2015-08-15 17:58:48 -07001791
Jesse Hall543a7ff2016-01-08 16:38:30 -08001792 VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000, /// All stages of the graphics pipeline
1793 VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000, /// All graphics, compute, copy, and transition commands
Chris Forbes289cb792016-12-30 15:03:55 +13001794
Jesse Hallad250842017-03-10 18:35:38 -08001795 //@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001796 VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001797}
1798
1799/// Render pass attachment description flags
Jesse Halld8bade02015-11-24 10:24:18 -08001800type VkFlags VkAttachmentDescriptionFlags
1801bitfield VkAttachmentDescriptionFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001802 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 -07001803}
1804
1805/// Subpass description flags
Jesse Halld8bade02015-11-24 10:24:18 -08001806type VkFlags VkSubpassDescriptionFlags
1807bitfield VkSubpassDescriptionFlagBits {
Jesse Hallad250842017-03-10 18:35:38 -08001808 //@extension("VK_NVX_multiview_per_view_attributes") // 98
1809 VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001,
1810 VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001811}
1812
1813/// Command pool creation flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08001814type VkFlags VkCommandPoolCreateFlags
1815bitfield VkCommandPoolCreateFlagBits {
1816 VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001, /// Command buffers have a short lifetime
1817 VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002, /// Command buffers may release their memory individually
Jesse Halld27f6aa2015-08-15 17:58:48 -07001818}
1819
1820/// Command pool reset flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08001821type VkFlags VkCommandPoolResetFlags
1822bitfield VkCommandPoolResetFlagBits {
1823 VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the pool
Jesse Halld27f6aa2015-08-15 17:58:48 -07001824}
1825
Jesse Hall3fbc8562015-11-29 22:10:52 -08001826type VkFlags VkCommandBufferResetFlags
1827bitfield VkCommandBufferResetFlagBits {
1828 VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the buffer
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001829}
1830
Jesse Halld8bade02015-11-24 10:24:18 -08001831type VkFlags VkSampleCountFlags
1832bitfield VkSampleCountFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001833 VK_SAMPLE_COUNT_1_BIT = 0x00000001,
1834 VK_SAMPLE_COUNT_2_BIT = 0x00000002,
1835 VK_SAMPLE_COUNT_4_BIT = 0x00000004,
1836 VK_SAMPLE_COUNT_8_BIT = 0x00000008,
1837 VK_SAMPLE_COUNT_16_BIT = 0x00000010,
1838 VK_SAMPLE_COUNT_32_BIT = 0x00000020,
1839 VK_SAMPLE_COUNT_64_BIT = 0x00000040,
1840}
1841
Jesse Halld8bade02015-11-24 10:24:18 -08001842type VkFlags VkStencilFaceFlags
1843bitfield VkStencilFaceFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001844 VK_STENCIL_FACE_FRONT_BIT = 0x00000001, /// Front face
1845 VK_STENCIL_FACE_BACK_BIT = 0x00000002, /// Back face
Jesse Hallc7467b72015-11-29 21:05:26 -08001846 VK_STENCIL_FRONT_AND_BACK = 0x00000003,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001847}
1848
Jesse Halla6429252015-11-29 18:59:42 -08001849/// Instance creation flags
1850type VkFlags VkInstanceCreateFlags
1851//bitfield VkInstanceCreateFlagBits {
1852//}
1853
1854/// Device creation flags
1855type VkFlags VkDeviceCreateFlags
1856//bitfield VkDeviceCreateFlagBits {
1857//}
1858
1859/// Device queue creation flags
1860type VkFlags VkDeviceQueueCreateFlags
1861//bitfield VkDeviceQueueCreateFlagBits {
1862//}
1863
1864/// Query pool creation flags
1865type VkFlags VkQueryPoolCreateFlags
1866//bitfield VkQueryPoolCreateFlagBits {
1867//}
1868
1869/// Buffer view creation flags
1870type VkFlags VkBufferViewCreateFlags
1871//bitfield VkBufferViewCreateFlagBits {
1872//}
1873
1874/// Pipeline cache creation flags
1875type VkFlags VkPipelineCacheCreateFlags
1876//bitfield VkPipelineCacheCreateFlagBits {
1877//}
1878
1879/// Pipeline shader stage creation flags
1880type VkFlags VkPipelineShaderStageCreateFlags
1881//bitfield VkPipelineShaderStageCreateFlagBits {
1882//}
1883
1884/// Descriptor set layout creation flags
1885type VkFlags VkDescriptorSetLayoutCreateFlags
Jesse Hallad250842017-03-10 18:35:38 -08001886bitfield VkDescriptorSetLayoutCreateFlagBits {
1887 //@extension("VK_KHR_push_descriptor") // 81
1888 VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
1889}
Jesse Halla6429252015-11-29 18:59:42 -08001890
1891/// Pipeline vertex input state creation flags
1892type VkFlags VkPipelineVertexInputStateCreateFlags
1893//bitfield VkPipelineVertexInputStateCreateFlagBits {
1894//}
1895
1896/// Pipeline input assembly state creation flags
1897type VkFlags VkPipelineInputAssemblyStateCreateFlags
1898//bitfield VkPipelineInputAssemblyStateCreateFlagBits {
1899//}
1900
1901/// Tessellation state creation flags
1902type VkFlags VkPipelineTessellationStateCreateFlags
1903//bitfield VkPipelineTessellationStateCreateFlagBits {
1904//}
1905
1906/// Viewport state creation flags
1907type VkFlags VkPipelineViewportStateCreateFlags
1908//bitfield VkPipelineViewportStateCreateFlagBits {
1909//}
1910
Jesse Hall3fbc8562015-11-29 22:10:52 -08001911/// Rasterization state creation flags
1912type VkFlags VkPipelineRasterizationStateCreateFlags
1913//bitfield VkPipelineRasterizationStateCreateFlagBits {
Jesse Halla6429252015-11-29 18:59:42 -08001914//}
1915
1916/// Multisample state creation flags
1917type VkFlags VkPipelineMultisampleStateCreateFlags
1918//bitfield VkPipelineMultisampleStateCreateFlagBits {
1919//}
1920
1921/// Color blend state creation flags
1922type VkFlags VkPipelineColorBlendStateCreateFlags
1923//bitfield VkPipelineColorBlendStateCreateFlagBits {
1924//}
1925
1926/// Depth/stencil state creation flags
1927type VkFlags VkPipelineDepthStencilStateCreateFlags
1928//bitfield VkPipelineDepthStencilStateCreateFlagBits {
1929//}
1930
1931/// Dynamic state creation flags
1932type VkFlags VkPipelineDynamicStateCreateFlags
1933//bitfield VkPipelineDynamicStateCreateFlagBits {
1934//}
1935
1936/// Pipeline layout creation flags
1937type VkFlags VkPipelineLayoutCreateFlags
1938//bitfield VkPipelineLayoutCreateFlagBits {
1939//}
1940
1941/// Sampler creation flags
1942type VkFlags VkSamplerCreateFlags
1943//bitfield VkSamplerCreateFlagBits {
1944//}
1945
1946/// Render pass creation flags
1947type VkFlags VkRenderPassCreateFlags
1948//bitfield VkRenderPassCreateFlagBits {
1949//}
1950
1951/// Framebuffer creation flags
1952type VkFlags VkFramebufferCreateFlags
1953//bitfield VkFramebufferCreateFlagBits {
1954//}
1955
Jesse Halldc6d36c2015-11-29 19:12:15 -08001956/// Dependency flags
1957type VkFlags VkDependencyFlags
1958bitfield VkDependencyFlagBits {
1959 VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
Jesse Hallad250842017-03-10 18:35:38 -08001960
1961 //@extension("VK_KHX_multiview") // 54
1962 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX = 0x00000002,
1963
1964 //@extension("VK_KHX_device_group") // 61
1965 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX = 0x00000004,
Jesse Halldc6d36c2015-11-29 19:12:15 -08001966}
1967
Jesse Hallc7467b72015-11-29 21:05:26 -08001968/// Cull mode flags
1969type VkFlags VkCullModeFlags
1970bitfield VkCullModeFlagBits {
1971 VK_CULL_MODE_NONE = 0x00000000,
1972 VK_CULL_MODE_FRONT_BIT = 0x00000001,
1973 VK_CULL_MODE_BACK_BIT = 0x00000002,
1974 VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
1975}
1976
Jesse Hallad250842017-03-10 18:35:38 -08001977@extension("VK_KHR_surface") // 1
Jesse Halld8bade02015-11-24 10:24:18 -08001978type VkFlags VkSurfaceTransformFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08001979@extension("VK_KHR_surface") // 1
Jesse Halld8bade02015-11-24 10:24:18 -08001980bitfield VkSurfaceTransformFlagBitsKHR {
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001981 VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
Jesse Hall9ba8bc82015-11-30 16:22:16 -08001982 VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
1983 VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
1984 VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
1985 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
1986 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
1987 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
1988 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
1989 VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
Michael Lentine88594d72015-11-12 12:49:45 -08001990}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001991
Jesse Hallad250842017-03-10 18:35:38 -08001992@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08001993type VkFlags VkCompositeAlphaFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08001994@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08001995bitfield VkCompositeAlphaFlagBitsKHR {
1996 VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
1997 VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
1998 VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
1999 VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
2000}
2001
Jesse Hallad250842017-03-10 18:35:38 -08002002@extension("VK_KHR_swapchain") // 2
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002003type VkFlags VkSwapchainCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002004@extension("VK_KHR_swapchain") // 2
2005bitfield VkSwapchainCreateFlagBitsKHR {
2006 //@extension("VK_KHX_device_group") // 61
2007 VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX = 0x00000001,
2008}
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002009
Jesse Hallad250842017-03-10 18:35:38 -08002010@extension("VK_KHR_display") // 3
Jesse Halld8bade02015-11-24 10:24:18 -08002011type VkFlags VkDisplayPlaneAlphaFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002012@extension("VK_KHR_display") // 3
Jesse Halld8bade02015-11-24 10:24:18 -08002013bitfield VkDisplayPlaneAlphaFlagBitsKHR {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002014 VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
2015 VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
2016 VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
2017 VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
Jesse Hall1356b0d2015-11-23 17:24:58 -08002018}
2019
Jesse Hallad250842017-03-10 18:35:38 -08002020@extension("VK_KHR_display") // 3
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002021type VkFlags VkDisplaySurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002022//@extension("VK_KHR_display") // 3
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002023//bitfield VkDisplaySurfaceCreateFlagBitsKHR {
2024//}
2025
Jesse Hallad250842017-03-10 18:35:38 -08002026@extension("VK_KHR_display") // 3
Jesse Hall9ba8bc82015-11-30 16:22:16 -08002027type VkFlags VkDisplayModeCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002028//@extension("VK_KHR_display") // 3
Jesse Hall9ba8bc82015-11-30 16:22:16 -08002029//bitfield VkDisplayModeCreateFlagBitsKHR {
2030//}
2031
Jesse Hallad250842017-03-10 18:35:38 -08002032@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002033type VkFlags VkXlibSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002034//@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002035//bitfield VkXlibSurfaceCreateFlagBitsKHR {
2036//}
2037
Jesse Hallad250842017-03-10 18:35:38 -08002038@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002039type VkFlags VkXcbSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002040//@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002041//bitfield VkXcbSurfaceCreateFlagBitsKHR {
2042//}
2043
Jesse Hallad250842017-03-10 18:35:38 -08002044@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002045type VkFlags VkWaylandSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002046//@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002047//bitfield VkWaylandSurfaceCreateFlagBitsKHR {
2048//}
2049
Jesse Hallad250842017-03-10 18:35:38 -08002050@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002051type VkFlags VkMirSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002052//@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002053//bitfield VkMirSurfaceCreateFlagBitsKHR {
2054//}
2055
Jesse Hallad250842017-03-10 18:35:38 -08002056@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002057type VkFlags VkAndroidSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002058//@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002059//bitfield VkAndroidSurfaceCreateFlagBitsKHR {
2060//}
2061
Jesse Hallad250842017-03-10 18:35:38 -08002062@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002063type VkFlags VkWin32SurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002064//@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002065//bitfield VkWin32SurfaceCreateFlagBitsKHR {
2066//}
2067
Jesse Hallad250842017-03-10 18:35:38 -08002068@extension("VK_ANDROID_native_buffer") // 11
Jesse Hall889cd9a2017-02-25 22:12:23 -08002069type VkFlags VkSwapchainImageUsageFlagsANDROID
Jesse Hallad250842017-03-10 18:35:38 -08002070@extension("VK_ANDROID_native_buffer") // 11
Jesse Hall889cd9a2017-02-25 22:12:23 -08002071bitfield VkSwapchainImageUsageFlagBitsANDROID {
2072 VK_SWAPCHAIN_IMAGE_USAGE_FLAGS_SHARED_BIT_ANDROID = 0x00000001,
2073}
2074
Jesse Hallad250842017-03-10 18:35:38 -08002075@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08002076type VkFlags VkDebugReportFlagsEXT
Jesse Hallad250842017-03-10 18:35:38 -08002077@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08002078bitfield VkDebugReportFlagBitsEXT {
Jesse Halle2948d82016-02-25 04:19:32 -08002079 VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,
2080 VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002,
2081 VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004,
Jesse Hall715b86a2016-01-16 16:34:29 -08002082 VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008,
2083 VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010,
2084}
2085
Jesse Hallad250842017-03-10 18:35:38 -08002086@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13002087type VkFlags VkExternalMemoryHandleTypeFlagsNV
Jesse Hallad250842017-03-10 18:35:38 -08002088@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13002089bitfield VkExternalMemoryHandleTypeFlagBitsNV {
Jesse Halleb02c472017-02-24 15:13:45 -08002090 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,
2091 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,
2092 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,
2093 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,
Chris Forbes289cb792016-12-30 15:03:55 +13002094}
2095
Jesse Hallad250842017-03-10 18:35:38 -08002096@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13002097type VkFlags VkExternalMemoryFeatureFlagsNV
Jesse Hallad250842017-03-10 18:35:38 -08002098@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13002099bitfield VkExternalMemoryFeatureFlagBitsNV {
Jesse Halleb02c472017-02-24 15:13:45 -08002100 VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001,
2101 VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002,
2102 VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004,
Chris Forbes289cb792016-12-30 15:03:55 +13002103}
2104
Jesse Hallad250842017-03-10 18:35:38 -08002105@extension("VK_KHX_device_group") // 61
2106type VkFlags VkPeerMemoryFeatureFlagsKHX
2107@extension("VK_KHX_device_group") // 61
2108bitfield VkPeerMemoryFeatureFlagBitsKHX {
2109 VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX = 0x00000001,
2110 VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX = 0x00000002,
2111 VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX = 0x00000004,
2112 VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX = 0x00000008,
2113}
2114
2115@extension("VK_KHX_device_group") // 61
2116type VkFlags VkMemoryAllocateFlagsKHX
2117@extension("VK_KHX_device_group") // 61
2118bitfield VkMemoryAllocateFlagBitsKHX {
2119 VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX = 0x00000001,
2120}
2121
2122@extension("VK_KHX_device_group") // 61
2123type VkFlags VkDeviceGroupPresentModeFlagsKHX
2124@extension("VK_KHX_device_group") // 61
2125bitfield VkDeviceGroupPresentModeFlagBitsKHX {
2126 VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX = 0x00000001,
2127 VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX = 0x00000002,
2128 VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX = 0x00000004,
2129 VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX = 0x00000008,
2130}
2131
2132@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08002133type VkFlags VkViSurfaceCreateFlagsNN
Jesse Hallad250842017-03-10 18:35:38 -08002134//@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08002135//bitfield VkViSurfaceCreateFlagBitsNN {
2136//}
2137
Jesse Hallad250842017-03-10 18:35:38 -08002138@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08002139type VkFlags VkCommandPoolTrimFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002140//@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08002141//bitfield VkCommandPoolTrimFlagBitsKHR {
2142//}
2143
Jesse Hallad250842017-03-10 18:35:38 -08002144@extension("VK_KHX_external_memory_capabilities") // 72
2145type VkFlags VkExternalMemoryHandleTypeFlagsKHX
2146@extension("VK_KHX_external_memory_capabilities") // 72
2147bitfield VkExternalMemoryHandleTypeFlagBitsKHX {
2148 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHX = 0x00000001,
2149 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX = 0x00000002,
2150 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX = 0x00000004,
2151 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHX = 0x00000008,
2152 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHX = 0x00000010,
2153 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHX = 0x00000020,
2154 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHX = 0x00000040,
2155}
2156
2157@extension("VK_KHX_external_memory_capabilities") // 72
2158type VkFlags VkExternalMemoryFeatureFlagsKHX
2159@extension("VK_KHX_external_memory_capabilities") // 72
2160bitfield VkExternalMemoryFeatureFlagBitsKHX {
2161 VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHX = 0x00000001,
2162 VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHX = 0x00000002,
2163 VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHX = 0x00000004,
2164}
2165
2166@extension("VK_KHX_external_semaphore_capabilities") // 77
2167type VkFlags VkExternalSemaphoreHandleTypeFlagsKHX
2168@extension("VK_KHX_external_semaphore_capabilities") // 77
2169bitfield VkExternalSemaphoreHandleTypeFlagBitsKHX {
2170 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHX = 0x00000001
2171 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX = 0x00000002
2172 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX = 0x00000004
2173 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHX = 0x00000008
2174 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHX = 0x00000010
2175}
2176
2177@extension("VK_KHX_external_semaphore_capabilities") // 77
2178type VkFlags VkExternalSemaphoreFeatureFlagsKHX
2179@extension("VK_KHX_external_semaphore_capabilities") // 77
2180bitfield VkExternalSemaphoreFeatureFlagBitsKHX {
2181 VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHX = 0x00000001,
2182 VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHX = 0x00000002,
2183}
2184
2185@extension("VK_KHR_descriptor_update_template") // 86
2186type VkFlags VkDescriptorUpdateTemplateCreateFlagsKHR
2187//@extension("VK_KHR_descriptor_update_template") // 86
2188//bitfield VkDescriptorUpdateTemplateCreateFlagBitsKHR {
2189//}
2190
2191@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002192type VkFlags VkIndirectCommandsLayoutUsageFlagsNVX
Jesse Hallad250842017-03-10 18:35:38 -08002193@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002194bitfield VkIndirectCommandsLayoutUsageFlagBitsNVX {
Jesse Halleb02c472017-02-24 15:13:45 -08002195 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = 0x00000001,
2196 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = 0x00000002,
2197 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = 0x00000004,
2198 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = 0x00000008,
Chris Forbes289cb792016-12-30 15:03:55 +13002199}
2200
Jesse Hallad250842017-03-10 18:35:38 -08002201@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002202type VkFlags VkObjectEntryUsageFlagsNVX
Jesse Hallad250842017-03-10 18:35:38 -08002203@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002204bitfield VkObjectEntryUsageFlagBitsNVX {
Jesse Halleb02c472017-02-24 15:13:45 -08002205 VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = 0x00000001,
2206 VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = 0x00000002,
Chris Forbes289cb792016-12-30 15:03:55 +13002207}
2208
Jesse Hallad250842017-03-10 18:35:38 -08002209@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08002210type VkFlags VkSurfaceCounterFlagsEXT
Jesse Hallad250842017-03-10 18:35:38 -08002211@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08002212bitfield VkSurfaceCounterFlagBitsEXT {
2213 VK_SURFACE_COUNTER_VBLANK_EXT = 0x00000001,
2214}
2215
Jesse Hallad250842017-03-10 18:35:38 -08002216@extension("VK_NV_viewport_swizzle") // 99
2217type VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV
2218//@extension("VK_NV_viewport_swizzle") // 99
2219//bitfield VkPipelineViewportSwizzleStateCreateFlagBitsNV {
2220//}
2221
2222@extension("VK_EXT_discard_rectangles") // 100
2223type VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT
2224//@extension("VK_EXT_discard_rectangles") // 100
2225//bitfield VkPipelineDiscardRectangleStateCreateFlagBitsEXT {
2226//}
2227
2228@extension("VK_MVK_ios_surface") // 123
2229type VkFlags VkIOSSurfaceCreateFlagsMVK
2230//@extension("VK_MVK_ios_surface") // 123
2231//bitfield VkIOSSurfaceCreateFlagBitsMVK {
2232//}
2233
2234@extension("VK_MVK_macos_surface") // 124
2235type VkFlags VkMacOSSurfaceCreateFlagsMVK
2236//@extension("VK_MVK_macos_surface") // 124
2237//bitfield VkMacOSSurfaceCreateFlagBitsMVK {
2238//}
2239
Jesse Hall7ba0ac72017-07-07 17:13:23 -07002240@extension("VK_NV_fragment_coverage_to_color") // 150
2241type VkFlags VkPipelineCoverageToColorStateCreateFlagsNV
2242@extension("VK_NV_fragment_coverage_to_color") // 150
2243//bitfield VkPipelineCoverageToColorStateCreateFlagBitsNV {
2244//}
2245
2246@extension("VK_NV_framebuffer_mixed_samples") // 153
2247type VkFlags VkPipelineCoverageModulationStateCreateFlagsNV
2248@extension("VK_NV_framebuffer_mixed_samples") // 153
2249//bitfield VkPipelineCoverageModulationStateCreateFlagBitsNV {
2250//}
2251
Jesse Halld27f6aa2015-08-15 17:58:48 -07002252//////////////////
2253// Structures //
2254//////////////////
2255
2256class VkOffset2D {
2257 s32 x
2258 s32 y
2259}
2260
2261class VkOffset3D {
2262 s32 x
2263 s32 y
2264 s32 z
2265}
2266
2267class VkExtent2D {
Jesse Hall3dd678a2016-01-08 21:52:01 -08002268 u32 width
2269 u32 height
Jesse Halld27f6aa2015-08-15 17:58:48 -07002270}
2271
2272class VkExtent3D {
Jesse Hall3dd678a2016-01-08 21:52:01 -08002273 u32 width
2274 u32 height
2275 u32 depth
Jesse Halld27f6aa2015-08-15 17:58:48 -07002276}
2277
2278class VkViewport {
Jesse Hall65ab5522015-11-30 00:07:16 -08002279 f32 x
2280 f32 y
Jesse Halld27f6aa2015-08-15 17:58:48 -07002281 f32 width
2282 f32 height
2283 f32 minDepth
2284 f32 maxDepth
2285}
2286
2287class VkRect2D {
2288 VkOffset2D offset
2289 VkExtent2D extent
2290}
2291
Jesse Halla15a4bf2015-11-19 22:48:02 -08002292class VkClearRect {
2293 VkRect2D rect
2294 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002295 u32 layerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002296}
2297
Jesse Hall65ab5522015-11-30 00:07:16 -08002298class VkComponentMapping {
2299 VkComponentSwizzle r
2300 VkComponentSwizzle g
2301 VkComponentSwizzle b
2302 VkComponentSwizzle a
Jesse Halld27f6aa2015-08-15 17:58:48 -07002303}
2304
2305class VkPhysicalDeviceProperties {
2306 u32 apiVersion
2307 u32 driverVersion
Jesse Hall65ab5522015-11-30 00:07:16 -08002308 u32 vendorID
2309 u32 deviceID
Jesse Halld27f6aa2015-08-15 17:58:48 -07002310 VkPhysicalDeviceType deviceType
Jesse Hall65ab5522015-11-30 00:07:16 -08002311 char[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE] deviceName
2312 u8[VK_UUID_SIZE] pipelineCacheUUID
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002313 VkPhysicalDeviceLimits limits
2314 VkPhysicalDeviceSparseProperties sparseProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07002315}
2316
2317class VkExtensionProperties {
Jesse Hall65ab5522015-11-30 00:07:16 -08002318 char[VK_MAX_EXTENSION_NAME_SIZE] extensionName /// extension name
Jesse Halld27f6aa2015-08-15 17:58:48 -07002319 u32 specVersion /// version of the extension specification implemented
2320}
2321
2322class VkLayerProperties {
Jesse Hall65ab5522015-11-30 00:07:16 -08002323 char[VK_MAX_EXTENSION_NAME_SIZE] layerName /// layer name
Jesse Hall3fbc8562015-11-29 22:10:52 -08002324 u32 specVersion /// version of the layer specification implemented
2325 u32 implementationVersion /// build or release version of the layer's library
Jesse Hall65ab5522015-11-30 00:07:16 -08002326 char[VK_MAX_DESCRIPTION_SIZE] description /// Free-form description of the layer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002327}
2328
Jesse Halla366a512015-11-19 22:30:07 -08002329class VkSubmitInfo {
Jesse Hall03b6fe12015-11-24 12:44:21 -08002330 VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_SUBMIT_INFO
2331 const void* pNext /// Next structure in chain
2332 u32 waitSemaphoreCount
Jesse Halla366a512015-11-19 22:30:07 -08002333 const VkSemaphore* pWaitSemaphores
Jesse Hall543a7ff2016-01-08 16:38:30 -08002334 const VkPipelineStageFlags* pWaitDstStageMask
Jesse Hall03b6fe12015-11-24 12:44:21 -08002335 u32 commandBufferCount
Jesse Hall3fbc8562015-11-29 22:10:52 -08002336 const VkCommandBuffer* pCommandBuffers
Jesse Hall03b6fe12015-11-24 12:44:21 -08002337 u32 signalSemaphoreCount
Jesse Halla366a512015-11-19 22:30:07 -08002338 const VkSemaphore* pSignalSemaphores
2339}
2340
Jesse Halld27f6aa2015-08-15 17:58:48 -07002341class VkApplicationInfo {
2342 VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_APPLICATION_INFO
2343 const void* pNext /// Next structure in chain
Jesse Hall3fbc8562015-11-29 22:10:52 -08002344 const char* pApplicationName
2345 u32 applicationVersion
Jesse Halld27f6aa2015-08-15 17:58:48 -07002346 const char* pEngineName
2347 u32 engineVersion
2348 u32 apiVersion
2349}
2350
Jesse Hall3fbc8562015-11-29 22:10:52 -08002351class VkAllocationCallbacks {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002352 void* pUserData
Jesse Hall3fbc8562015-11-29 22:10:52 -08002353 PFN_vkAllocationFunction pfnAllocation
2354 PFN_vkReallocationFunction pfnReallocation
Jesse Halld27f6aa2015-08-15 17:58:48 -07002355 PFN_vkFreeFunction pfnFree
Jesse Hall3fbc8562015-11-29 22:10:52 -08002356 PFN_vkInternalAllocationNotification pfnInternalAllocation
Jesse Hall03b6fe12015-11-24 12:44:21 -08002357 PFN_vkInternalFreeNotification pfnInternalFree
Jesse Halld27f6aa2015-08-15 17:58:48 -07002358}
2359
2360class VkDeviceQueueCreateInfo {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002361 VkStructureType sStype /// Should be VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
2362 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002363 VkDeviceQueueCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002364 u32 queueFamilyIndex
Jesse Halldba27f72015-11-30 14:25:46 -08002365 u32 queueCount
Jesse Hallfbf97b02015-11-20 14:17:03 -08002366 const f32* pQueuePriorities
Jesse Halld27f6aa2015-08-15 17:58:48 -07002367}
2368
2369class VkDeviceCreateInfo {
2370 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO
2371 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002372 VkDeviceCreateFlags flags
Jesse Halldba27f72015-11-30 14:25:46 -08002373 u32 queueCreateInfoCount
2374 const VkDeviceQueueCreateInfo* pQueueCreateInfos
Jesse Hall3dd678a2016-01-08 21:52:01 -08002375 u32 enabledLayerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002376 const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled
Jesse Hall3dd678a2016-01-08 21:52:01 -08002377 u32 enabledExtensionCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002378 const char* const* ppEnabledExtensionNames
2379 const VkPhysicalDeviceFeatures* pEnabledFeatures
Jesse Halld27f6aa2015-08-15 17:58:48 -07002380}
2381
2382class VkInstanceCreateInfo {
2383 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
2384 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002385 VkInstanceCreateFlags flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08002386 const VkApplicationInfo* pApplicationInfo
Jesse Hall3dd678a2016-01-08 21:52:01 -08002387 u32 enabledLayerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002388 const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled
Jesse Hall3dd678a2016-01-08 21:52:01 -08002389 u32 enabledExtensionCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002390 const char* const* ppEnabledExtensionNames /// Extension names to be enabled
2391}
2392
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002393class VkQueueFamilyProperties {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002394 VkQueueFlags queueFlags /// Queue flags
2395 u32 queueCount
Jesse Hallacfa5342015-11-19 21:51:33 -08002396 u32 timestampValidBits
Jesse Hall65ab5522015-11-30 00:07:16 -08002397 VkExtent3D minImageTransferGranularity
Jesse Halld27f6aa2015-08-15 17:58:48 -07002398}
2399
2400class VkPhysicalDeviceMemoryProperties {
2401 u32 memoryTypeCount
2402 VkMemoryType[VK_MAX_MEMORY_TYPES] memoryTypes
2403 u32 memoryHeapCount
2404 VkMemoryHeap[VK_MAX_MEMORY_HEAPS] memoryHeaps
2405}
2406
Jesse Hall3fbc8562015-11-29 22:10:52 -08002407class VkMemoryAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002408 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002409 const void* pNext /// Pointer to next structure
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002410 VkDeviceSize allocationSize /// Size of memory allocation
Jesse Halld27f6aa2015-08-15 17:58:48 -07002411 u32 memoryTypeIndex /// Index of the of the memory type to allocate from
2412}
2413
2414class VkMemoryRequirements {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002415 VkDeviceSize size /// Specified in bytes
2416 VkDeviceSize alignment /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002417 u32 memoryTypeBits /// Bitfield of the allowed memory type indices into memoryTypes[] for this object
2418}
2419
2420class VkSparseImageFormatProperties {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002421 VkImageAspectFlagBits aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002422 VkExtent3D imageGranularity
2423 VkSparseImageFormatFlags flags
2424}
2425
2426class VkSparseImageMemoryRequirements {
Jesse Hallb00daad2015-11-29 19:46:20 -08002427 VkSparseImageFormatProperties formatProperties
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002428 u32 imageMipTailFirstLod
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002429 VkDeviceSize imageMipTailSize /// Specified in bytes, must be a multiple of image block size / alignment
2430 VkDeviceSize imageMipTailOffset /// Specified in bytes, must be a multiple of image block size / alignment
2431 VkDeviceSize imageMipTailStride /// Specified in bytes, must be a multiple of image block size / alignment
Jesse Halld27f6aa2015-08-15 17:58:48 -07002432}
2433
2434class VkMemoryType {
2435 VkMemoryPropertyFlags propertyFlags /// Memory properties of this memory type
2436 u32 heapIndex /// Index of the memory heap allocations of this memory type are taken from
2437}
2438
2439class VkMemoryHeap {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002440 VkDeviceSize size /// Available memory in the heap
Jesse Halld27f6aa2015-08-15 17:58:48 -07002441 VkMemoryHeapFlags flags /// Flags for the heap
2442}
2443
2444class VkMappedMemoryRange {
2445 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
2446 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002447 VkDeviceMemory memory /// Mapped memory object
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002448 VkDeviceSize offset /// Offset within the mapped memory the range starts from
2449 VkDeviceSize size /// Size of the range within the mapped memory
Jesse Halld27f6aa2015-08-15 17:58:48 -07002450}
2451
2452class VkFormatProperties {
2453 VkFormatFeatureFlags linearTilingFeatures /// Format features in case of linear tiling
2454 VkFormatFeatureFlags optimalTilingFeatures /// Format features in case of optimal tiling
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002455 VkFormatFeatureFlags bufferFeatures /// Format features supported by buffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07002456}
2457
2458class VkImageFormatProperties {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002459 VkExtent3D maxExtent /// max image dimensions for this resource type
2460 u32 maxMipLevels /// max number of mipmap levels for this resource type
Jesse Halla15a4bf2015-11-19 22:48:02 -08002461 u32 maxArrayLayers /// max array layers for this resource type
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002462 VkSampleCountFlags sampleCounts /// supported sample counts for this resource type
2463 VkDeviceSize maxResourceSize /// max size (in bytes) of this resource type
2464}
2465
Jesse Halla15a4bf2015-11-19 22:48:02 -08002466class VkDescriptorImageInfo {
2467 VkSampler sampler
2468 VkImageView imageView
2469 VkImageLayout imageLayout
2470}
2471
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002472class VkDescriptorBufferInfo {
2473 VkBuffer buffer /// Buffer used for this descriptor when the descriptor is UNIFORM_BUFFER[_DYNAMIC]
2474 VkDeviceSize offset /// Base offset from buffer start in bytes to update in the descriptor set.
2475 VkDeviceSize range /// Size in bytes of the buffer resource for this descriptor update.
Jesse Halld27f6aa2015-08-15 17:58:48 -07002476}
2477
Jesse Halld27f6aa2015-08-15 17:58:48 -07002478class VkWriteDescriptorSet {
2479 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
2480 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002481 VkDescriptorSet dstSet /// Destination descriptor set
2482 u32 dstBinding /// Binding within the destination descriptor set to write
2483 u32 dstArrayElement /// Array element within the destination binding to write
Jesse Hall03b6fe12015-11-24 12:44:21 -08002484 u32 descriptorCount /// Number of descriptors to write (determines the size of the array pointed by <pDescriptors>)
Jesse Halld27f6aa2015-08-15 17:58:48 -07002485 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 -08002486 const VkDescriptorImageInfo* pImageInfo
2487 const VkDescriptorBufferInfo* pBufferInfo
2488 const VkBufferView* pTexelBufferView
Jesse Halld27f6aa2015-08-15 17:58:48 -07002489}
2490
2491class VkCopyDescriptorSet {
2492 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET
2493 const void* pNext /// Pointer to next structure
2494 VkDescriptorSet srcSet /// Source descriptor set
2495 u32 srcBinding /// Binding within the source descriptor set to copy from
2496 u32 srcArrayElement /// Array element within the source binding to copy from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002497 VkDescriptorSet dstSet /// Destination descriptor set
2498 u32 dstBinding /// Binding within the destination descriptor set to copy to
2499 u32 dstArrayElement /// Array element within the destination binding to copy to
Jesse Hall03b6fe12015-11-24 12:44:21 -08002500 u32 descriptorCount /// Number of descriptors to copy
Jesse Halld27f6aa2015-08-15 17:58:48 -07002501}
2502
2503class VkBufferCreateInfo {
2504 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
2505 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002506 VkBufferCreateFlags flags /// Buffer creation flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002507 VkDeviceSize size /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002508 VkBufferUsageFlags usage /// Buffer usage flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002509 VkSharingMode sharingMode
Jesse Hall03b6fe12015-11-24 12:44:21 -08002510 u32 queueFamilyIndexCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002511 const u32* pQueueFamilyIndices
2512}
2513
2514class VkBufferViewCreateInfo {
2515 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO
2516 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002517 VkBufferViewCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002518 VkBuffer buffer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002519 VkFormat format /// Optionally specifies format of elements
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002520 VkDeviceSize offset /// Specified in bytes
2521 VkDeviceSize range /// View size specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002522}
2523
2524class VkImageSubresource {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002525 VkImageAspectFlagBits aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002526 u32 mipLevel
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002527 u32 arrayLayer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002528}
2529
2530class VkImageSubresourceRange {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002531 VkImageAspectFlags aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002532 u32 baseMipLevel
Jesse Hall3fbc8562015-11-29 22:10:52 -08002533 u32 levelCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002534 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002535 u32 layerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002536}
2537
2538class VkMemoryBarrier {
2539 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_BARRIER
2540 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002541 VkAccessFlags srcAccessMask
2542 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002543}
2544
2545class VkBufferMemoryBarrier {
2546 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
2547 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002548 VkAccessFlags srcAccessMask
2549 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002550 u32 srcQueueFamilyIndex /// Queue family to transition ownership from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002551 u32 dstQueueFamilyIndex /// Queue family to transition ownership to
Jesse Halld27f6aa2015-08-15 17:58:48 -07002552 VkBuffer buffer /// Buffer to sync
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002553 VkDeviceSize offset /// Offset within the buffer to sync
2554 VkDeviceSize size /// Amount of bytes to sync
Jesse Halld27f6aa2015-08-15 17:58:48 -07002555}
2556
2557class VkImageMemoryBarrier {
2558 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
2559 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002560 VkAccessFlags srcAccessMask
2561 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002562 VkImageLayout oldLayout /// Current layout of the image
2563 VkImageLayout newLayout /// New layout to transition the image to
2564 u32 srcQueueFamilyIndex /// Queue family to transition ownership from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002565 u32 dstQueueFamilyIndex /// Queue family to transition ownership to
Jesse Halld27f6aa2015-08-15 17:58:48 -07002566 VkImage image /// Image to sync
2567 VkImageSubresourceRange subresourceRange /// Subresource range to sync
2568}
2569
2570class VkImageCreateInfo {
2571 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
2572 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002573 VkImageCreateFlags flags /// Image creation flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002574 VkImageType imageType
2575 VkFormat format
2576 VkExtent3D extent
2577 u32 mipLevels
Jesse Halla15a4bf2015-11-19 22:48:02 -08002578 u32 arrayLayers
Jesse Hall091ed9e2015-11-30 00:55:29 -08002579 VkSampleCountFlagBits samples
Jesse Halld27f6aa2015-08-15 17:58:48 -07002580 VkImageTiling tiling
2581 VkImageUsageFlags usage /// Image usage flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002582 VkSharingMode sharingMode /// Cross-queue-family sharing mode
Jesse Hall03b6fe12015-11-24 12:44:21 -08002583 u32 queueFamilyIndexCount /// Number of queue families to share across
Jesse Halld27f6aa2015-08-15 17:58:48 -07002584 const u32* pQueueFamilyIndices /// Array of queue family indices to share across
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002585 VkImageLayout initialLayout /// Initial image layout for all subresources
Jesse Halld27f6aa2015-08-15 17:58:48 -07002586}
2587
2588class VkSubresourceLayout {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002589 VkDeviceSize offset /// Specified in bytes
2590 VkDeviceSize size /// Specified in bytes
2591 VkDeviceSize rowPitch /// Specified in bytes
Jesse Hall543a7ff2016-01-08 16:38:30 -08002592 VkDeviceSize arrayPitch /// Specified in bytes
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002593 VkDeviceSize depthPitch /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002594}
2595
2596class VkImageViewCreateInfo {
2597 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
2598 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002599 VkImageViewCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002600 VkImage image
2601 VkImageViewType viewType
2602 VkFormat format
Jesse Hall65ab5522015-11-30 00:07:16 -08002603 VkComponentMapping components
Jesse Halld27f6aa2015-08-15 17:58:48 -07002604 VkImageSubresourceRange subresourceRange
Jesse Halld27f6aa2015-08-15 17:58:48 -07002605}
2606
2607class VkBufferCopy {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002608 VkDeviceSize srcOffset /// Specified in bytes
Jesse Hall3fbc8562015-11-29 22:10:52 -08002609 VkDeviceSize dstOffset /// Specified in bytes
Jesse Hallb00daad2015-11-29 19:46:20 -08002610 VkDeviceSize size /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002611}
2612
Jesse Halla6429252015-11-29 18:59:42 -08002613class VkSparseMemoryBind {
Jesse Hallb00daad2015-11-29 19:46:20 -08002614 VkDeviceSize resourceOffset /// Specified in bytes
2615 VkDeviceSize size /// Specified in bytes
Jesse Hall3fbc8562015-11-29 22:10:52 -08002616 VkDeviceMemory memory
2617 VkDeviceSize memoryOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002618 VkSparseMemoryBindFlags flags
2619}
2620
Jesse Halla6429252015-11-29 18:59:42 -08002621class VkSparseImageMemoryBind {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002622 VkImageSubresource subresource
2623 VkOffset3D offset
2624 VkExtent3D extent
Jesse Hall3fbc8562015-11-29 22:10:52 -08002625 VkDeviceMemory memory
2626 VkDeviceSize memoryOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002627 VkSparseMemoryBindFlags flags
2628}
2629
Jesse Halla6429252015-11-29 18:59:42 -08002630class VkSparseBufferMemoryBindInfo {
2631 VkBuffer buffer
2632 u32 bindCount
2633 const VkSparseMemoryBind* pBinds
2634}
2635
2636class VkSparseImageOpaqueMemoryBindInfo {
2637 VkImage image
2638 u32 bindCount
2639 const VkSparseMemoryBind* pBinds
2640}
2641
2642class VkSparseImageMemoryBindInfo {
2643 VkImage image
2644 u32 bindCount
2645 const VkSparseMemoryBind* pBinds
2646}
2647
2648class VkBindSparseInfo {
2649 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BIND_SPARSE_INFO
2650 const void* pNext
2651 u32 waitSemaphoreCount
2652 const VkSemaphore* pWaitSemaphores
2653 u32 numBufferBinds
2654 const VkSparseBufferMemoryBindInfo* pBufferBinds
2655 u32 numImageOpaqueBinds
2656 const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds
2657 u32 numImageBinds
2658 const VkSparseImageMemoryBindInfo* pImageBinds
2659 u32 signalSemaphoreCount
2660 const VkSemaphore* pSignalSemaphores
2661}
2662
Jesse Hall65ab5522015-11-30 00:07:16 -08002663class VkImageSubresourceLayers {
2664 VkImageAspectFlags aspectMask
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002665 u32 mipLevel
Jesse Halla15a4bf2015-11-19 22:48:02 -08002666 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002667 u32 layerCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002668}
2669
Jesse Halld27f6aa2015-08-15 17:58:48 -07002670class VkImageCopy {
Jesse Hall65ab5522015-11-30 00:07:16 -08002671 VkImageSubresourceLayers srcSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07002672 VkOffset3D srcOffset /// Specified in pixels for both compressed and uncompressed images
Jesse Hall65ab5522015-11-30 00:07:16 -08002673 VkImageSubresourceLayers dstSubresource
Jesse Hall3fbc8562015-11-29 22:10:52 -08002674 VkOffset3D dstOffset /// Specified in pixels for both compressed and uncompressed images
Jesse Halld27f6aa2015-08-15 17:58:48 -07002675 VkExtent3D extent /// Specified in pixels for both compressed and uncompressed images
2676}
2677
2678class VkImageBlit {
Jesse Hall65ab5522015-11-30 00:07:16 -08002679 VkImageSubresourceLayers srcSubresource
Jesse Hall3dd678a2016-01-08 21:52:01 -08002680 VkOffset3D[2] srcOffsets
Jesse Hall65ab5522015-11-30 00:07:16 -08002681 VkImageSubresourceLayers dstSubresource
Jesse Hall3dd678a2016-01-08 21:52:01 -08002682 VkOffset3D[2] dstOffsets
Jesse Halld27f6aa2015-08-15 17:58:48 -07002683}
2684
2685class VkBufferImageCopy {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002686 VkDeviceSize bufferOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002687 u32 bufferRowLength /// Specified in texels
2688 u32 bufferImageHeight
Jesse Hall65ab5522015-11-30 00:07:16 -08002689 VkImageSubresourceLayers imageSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07002690 VkOffset3D imageOffset /// Specified in pixels for both compressed and uncompressed images
2691 VkExtent3D imageExtent /// Specified in pixels for both compressed and uncompressed images
2692}
2693
2694class VkImageResolve {
Jesse Hall65ab5522015-11-30 00:07:16 -08002695 VkImageSubresourceLayers srcSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07002696 VkOffset3D srcOffset
Jesse Hall65ab5522015-11-30 00:07:16 -08002697 VkImageSubresourceLayers dstSubresource
Jesse Hall3fbc8562015-11-29 22:10:52 -08002698 VkOffset3D dstOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07002699 VkExtent3D extent
2700}
2701
2702class VkShaderModuleCreateInfo {
2703 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
2704 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002705 VkShaderModuleCreateFlags flags /// Reserved
Jesse Halld27f6aa2015-08-15 17:58:48 -07002706 platform.size_t codeSize /// Specified in bytes
Jesse Halla9bb62b2015-11-21 19:31:56 -08002707 const u32* pCode /// Binary code of size codeSize
Jesse Halld27f6aa2015-08-15 17:58:48 -07002708}
2709
Jesse Halld27f6aa2015-08-15 17:58:48 -07002710class VkDescriptorSetLayoutBinding {
Jesse Hall091ed9e2015-11-30 00:55:29 -08002711 u32 binding
Jesse Halld27f6aa2015-08-15 17:58:48 -07002712 VkDescriptorType descriptorType /// Type of the descriptors in this binding
Jesse Halldba27f72015-11-30 14:25:46 -08002713 u32 descriptorCount /// Number of descriptors in this binding
Jesse Halld27f6aa2015-08-15 17:58:48 -07002714 VkShaderStageFlags stageFlags /// Shader stages this binding is visible to
2715 const VkSampler* pImmutableSamplers /// Immutable samplers (used if descriptor type is SAMPLER or COMBINED_IMAGE_SAMPLER, is either NULL or contains <count> number of elements)
2716}
2717
2718class VkDescriptorSetLayoutCreateInfo {
2719 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
2720 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002721 VkDescriptorSetLayoutCreateFlags flags
Jesse Hall03b6fe12015-11-24 12:44:21 -08002722 u32 bindingCount /// Number of bindings in the descriptor set layout
Jesse Hall543a7ff2016-01-08 16:38:30 -08002723 const VkDescriptorSetLayoutBinding* pBindings /// Array of descriptor set layout bindings
Jesse Halld27f6aa2015-08-15 17:58:48 -07002724}
2725
Jesse Hall65ab5522015-11-30 00:07:16 -08002726class VkDescriptorPoolSize {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002727 VkDescriptorType type
Jesse Hall03b6fe12015-11-24 12:44:21 -08002728 u32 descriptorCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002729}
2730
2731class VkDescriptorPoolCreateInfo {
2732 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
2733 const void* pNext /// Pointer to next structure
Jesse Hallfbf97b02015-11-20 14:17:03 -08002734 VkDescriptorPoolCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002735 u32 maxSets
Jesse Hall65ab5522015-11-30 00:07:16 -08002736 u32 poolSizeCount
2737 const VkDescriptorPoolSize* pPoolSizes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002738}
2739
Jesse Hall3fbc8562015-11-29 22:10:52 -08002740class VkDescriptorSetAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002741 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
Jesse Hallfbf97b02015-11-20 14:17:03 -08002742 const void* pNext /// Pointer to next structure
2743 VkDescriptorPool descriptorPool
Jesse Hall03b6fe12015-11-24 12:44:21 -08002744 u32 setCount
Jesse Hallfbf97b02015-11-20 14:17:03 -08002745 const VkDescriptorSetLayout* pSetLayouts
2746}
2747
Jesse Halld27f6aa2015-08-15 17:58:48 -07002748class VkSpecializationMapEntry {
Jesse Hall65ab5522015-11-30 00:07:16 -08002749 u32 constantID /// The SpecConstant ID specified in the BIL
Jesse Halld27f6aa2015-08-15 17:58:48 -07002750 u32 offset /// Offset of the value in the data block
Jesse Hallb00daad2015-11-29 19:46:20 -08002751 platform.size_t size /// Size in bytes of the SpecConstant
Jesse Halld27f6aa2015-08-15 17:58:48 -07002752}
2753
2754class VkSpecializationInfo {
2755 u32 mapEntryCount /// Number of entries in the map
Jesse Hallb00daad2015-11-29 19:46:20 -08002756 const VkSpecializationMapEntry* pMapEntries /// Array of map entries
Jesse Halld27f6aa2015-08-15 17:58:48 -07002757 platform.size_t dataSize /// Size in bytes of pData
2758 const void* pData /// Pointer to SpecConstant data
2759}
2760
2761class VkPipelineShaderStageCreateInfo {
2762 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
2763 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002764 VkPipelineShaderStageCreateFlags flags
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002765 VkShaderStageFlagBits stage
2766 VkShaderModule module
2767 const char* pName
Jesse Halld27f6aa2015-08-15 17:58:48 -07002768 const VkSpecializationInfo* pSpecializationInfo
2769}
2770
2771class VkComputePipelineCreateInfo {
2772 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
2773 const void* pNext /// Pointer to next structure
Jesse Halld27f6aa2015-08-15 17:58:48 -07002774 VkPipelineCreateFlags flags /// Pipeline creation flags
Jesse Halla6429252015-11-29 18:59:42 -08002775 VkPipelineShaderStageCreateInfo stage
Jesse Halld27f6aa2015-08-15 17:58:48 -07002776 VkPipelineLayout layout /// Interface layout of the pipeline
2777 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
2778 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
2779}
2780
2781class VkVertexInputBindingDescription {
Jesse Hallb00daad2015-11-29 19:46:20 -08002782 u32 binding /// Vertex buffer binding id
2783 u32 stride /// Distance between vertices in bytes (0 = no advancement)
Jesse Hall65ab5522015-11-30 00:07:16 -08002784 VkVertexInputRate inputRate /// Rate at which binding is incremented
Jesse Halld27f6aa2015-08-15 17:58:48 -07002785}
2786
2787class VkVertexInputAttributeDescription {
Jesse Hallb00daad2015-11-29 19:46:20 -08002788 u32 location /// location of the shader vertex attrib
2789 u32 binding /// Vertex buffer binding id
2790 VkFormat format /// format of source data
2791 u32 offset /// Offset of first element in bytes from base of vertex
Jesse Halld27f6aa2015-08-15 17:58:48 -07002792}
2793
2794class VkPipelineVertexInputStateCreateInfo {
Jesse Hall03b6fe12015-11-24 12:44:21 -08002795 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
2796 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002797 VkPipelineVertexInputStateCreateFlags flags
Jesse Hall03b6fe12015-11-24 12:44:21 -08002798 u32 vertexBindingDescriptionCount /// number of bindings
Jesse Halld27f6aa2015-08-15 17:58:48 -07002799 const VkVertexInputBindingDescription* pVertexBindingDescriptions
Jesse Hall03b6fe12015-11-24 12:44:21 -08002800 u32 vertexAttributeDescriptionCount /// number of attributes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002801 const VkVertexInputAttributeDescription* pVertexAttributeDescriptions
2802}
2803
2804class VkPipelineInputAssemblyStateCreateInfo {
2805 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
2806 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002807 VkPipelineInputAssemblyStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002808 VkPrimitiveTopology topology
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002809 VkBool32 primitiveRestartEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002810}
2811
2812class VkPipelineTessellationStateCreateInfo {
2813 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
2814 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002815 VkPipelineTessellationStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002816 u32 patchControlPoints
2817}
2818
2819class VkPipelineViewportStateCreateInfo {
2820 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
2821 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002822 VkPipelineViewportStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002823 u32 viewportCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002824 const VkViewport* pViewports
2825 u32 scissorCount
2826 const VkRect2D* pScissors
Jesse Halld27f6aa2015-08-15 17:58:48 -07002827}
2828
Jesse Hall3fbc8562015-11-29 22:10:52 -08002829class VkPipelineRasterizationStateCreateInfo {
Jesse Hall65ab5522015-11-30 00:07:16 -08002830 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002831 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002832 VkPipelineRasterizationStateCreateFlags flags
Jesse Hallae38f732015-11-19 21:32:50 -08002833 VkBool32 depthClampEnable
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002834 VkBool32 rasterizerDiscardEnable
Jesse Hall65ab5522015-11-30 00:07:16 -08002835 VkPolygonMode polygonMode /// optional (GL45)
Jesse Hallc7467b72015-11-29 21:05:26 -08002836 VkCullModeFlags cullMode
Jesse Halld27f6aa2015-08-15 17:58:48 -07002837 VkFrontFace frontFace
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002838 VkBool32 depthBiasEnable
Jesse Halla9bb62b2015-11-21 19:31:56 -08002839 f32 depthBiasConstantFactor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002840 f32 depthBiasClamp
Jesse Halla9bb62b2015-11-21 19:31:56 -08002841 f32 depthBiasSlopeFactor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002842 f32 lineWidth
Jesse Halld27f6aa2015-08-15 17:58:48 -07002843}
2844
2845class VkPipelineMultisampleStateCreateInfo {
2846 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
2847 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002848 VkPipelineMultisampleStateCreateFlags flags
Jesse Hall091ed9e2015-11-30 00:55:29 -08002849 VkSampleCountFlagBits rasterizationSamples /// Number of samples used for rasterization
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002850 VkBool32 sampleShadingEnable /// optional (GL45)
Jesse Halld27f6aa2015-08-15 17:58:48 -07002851 f32 minSampleShading /// optional (GL45)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002852 const VkSampleMask* pSampleMask
Jesse Hallacfa5342015-11-19 21:51:33 -08002853 VkBool32 alphaToCoverageEnable
2854 VkBool32 alphaToOneEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002855}
2856
2857class VkPipelineColorBlendAttachmentState {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002858 VkBool32 blendEnable
Jesse Hall65ab5522015-11-30 00:07:16 -08002859 VkBlendFactor srcColorBlendFactor
2860 VkBlendFactor dstColorBlendFactor
2861 VkBlendOp colorBlendOp
2862 VkBlendFactor srcAlphaBlendFactor
2863 VkBlendFactor dstAlphaBlendFactor
2864 VkBlendOp alphaBlendOp
2865 VkColorComponentFlags colorWriteMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002866}
2867
2868class VkPipelineColorBlendStateCreateInfo {
2869 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
2870 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002871 VkPipelineColorBlendStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002872 VkBool32 logicOpEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002873 VkLogicOp logicOp
2874 u32 attachmentCount /// # of pAttachments
2875 const VkPipelineColorBlendAttachmentState* pAttachments
Jesse Hallb00daad2015-11-29 19:46:20 -08002876 f32[4] blendConstants
Jesse Halld27f6aa2015-08-15 17:58:48 -07002877}
2878
2879class VkStencilOpState {
Jesse Hall65ab5522015-11-30 00:07:16 -08002880 VkStencilOp failOp
2881 VkStencilOp passOp
2882 VkStencilOp depthFailOp
2883 VkCompareOp compareOp
2884 u32 compareMask
2885 u32 writeMask
2886 u32 reference
Jesse Halld27f6aa2015-08-15 17:58:48 -07002887}
2888
2889class VkPipelineDepthStencilStateCreateInfo {
2890 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
2891 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002892 VkPipelineDepthStencilStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002893 VkBool32 depthTestEnable
2894 VkBool32 depthWriteEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002895 VkCompareOp depthCompareOp
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002896 VkBool32 depthBoundsTestEnable /// optional (depth_bounds_test)
2897 VkBool32 stencilTestEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002898 VkStencilOpState front
2899 VkStencilOpState back
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002900 f32 minDepthBounds
2901 f32 maxDepthBounds
2902}
2903
2904class VkPipelineDynamicStateCreateInfo {
2905 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
2906 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002907 VkPipelineDynamicStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002908 u32 dynamicStateCount
2909 const VkDynamicState* pDynamicStates
Jesse Halld27f6aa2015-08-15 17:58:48 -07002910}
2911
2912class VkGraphicsPipelineCreateInfo {
Jesse Halla6429252015-11-29 18:59:42 -08002913 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
2914 const void* pNext /// Pointer to next structure
2915 VkPipelineCreateFlags flags /// Pipeline creation flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002916 u32 stageCount
Jesse Halla6429252015-11-29 18:59:42 -08002917 const VkPipelineShaderStageCreateInfo* pStages /// One entry for each active shader stage
Jesse Halld27f6aa2015-08-15 17:58:48 -07002918 const VkPipelineVertexInputStateCreateInfo* pVertexInputState
2919 const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState
2920 const VkPipelineTessellationStateCreateInfo* pTessellationState
2921 const VkPipelineViewportStateCreateInfo* pViewportState
Jesse Hall3fbc8562015-11-29 22:10:52 -08002922 const VkPipelineRasterizationStateCreateInfo* pRasterizationState
Jesse Halld27f6aa2015-08-15 17:58:48 -07002923 const VkPipelineMultisampleStateCreateInfo* pMultisampleState
2924 const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState
2925 const VkPipelineColorBlendStateCreateInfo* pColorBlendState
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002926 const VkPipelineDynamicStateCreateInfo* pDynamicState
Jesse Halla6429252015-11-29 18:59:42 -08002927 VkPipelineLayout layout /// Interface layout of the pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07002928 VkRenderPass renderPass
2929 u32 subpass
Jesse Halla6429252015-11-29 18:59:42 -08002930 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
2931 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 -07002932}
2933
2934class VkPipelineCacheCreateInfo {
Jesse Hallb00daad2015-11-29 19:46:20 -08002935 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
2936 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002937 VkPipelineCacheCreateFlags flags
Jesse Hallb00daad2015-11-29 19:46:20 -08002938 platform.size_t initialDataSize /// Size of initial data to populate cache, in bytes
2939 const void* pInitialData /// Initial data to populate cache
Jesse Halld27f6aa2015-08-15 17:58:48 -07002940}
2941
2942class VkPushConstantRange {
2943 VkShaderStageFlags stageFlags /// Which stages use the range
Jesse Hall03b6fe12015-11-24 12:44:21 -08002944 u32 offset /// Start of the range, in bytes
2945 u32 size /// Length of the range, in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002946}
2947
2948class VkPipelineLayoutCreateInfo {
2949 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
2950 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002951 VkPipelineLayoutCreateFlags flags
Jesse Hall3dd678a2016-01-08 21:52:01 -08002952 u32 descriptorSetCount /// Number of descriptor sets interfaced by the pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07002953 const VkDescriptorSetLayout* pSetLayouts /// Array of <setCount> number of descriptor set layout objects defining the layout of the
2954 u32 pushConstantRangeCount /// Number of push-constant ranges used by the pipeline
2955 const VkPushConstantRange* pPushConstantRanges /// Array of pushConstantRangeCount number of ranges used by various shader stages
2956}
2957
2958class VkSamplerCreateInfo {
2959 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
2960 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002961 VkSamplerCreateFlags flags
Jesse Hall23ff73f2015-11-29 14:36:39 -08002962 VkFilter magFilter /// Filter mode for magnification
2963 VkFilter minFilter /// Filter mode for minifiation
2964 VkSamplerMipmapMode mipmapMode /// Mipmap selection mode
2965 VkSamplerAddressMode addressModeU
2966 VkSamplerAddressMode addressModeV
2967 VkSamplerAddressMode addressModeW
Jesse Halld27f6aa2015-08-15 17:58:48 -07002968 f32 mipLodBias
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002969 VkBool32 anisotropyEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002970 f32 maxAnisotropy
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002971 VkBool32 compareEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002972 VkCompareOp compareOp
2973 f32 minLod
2974 f32 maxLod
2975 VkBorderColor borderColor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002976 VkBool32 unnormalizedCoordinates
Jesse Halld27f6aa2015-08-15 17:58:48 -07002977}
2978
Jesse Hall3fbc8562015-11-29 22:10:52 -08002979class VkCommandPoolCreateInfo {
2980 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002981 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002982 VkCommandPoolCreateFlags flags /// Command pool creation flags
Jesse Halla6429252015-11-29 18:59:42 -08002983 u32 queueFamilyIndex
Jesse Halld27f6aa2015-08-15 17:58:48 -07002984}
2985
Jesse Hall3fbc8562015-11-29 22:10:52 -08002986class VkCommandBufferAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002987 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002988 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002989 VkCommandPool commandPool
2990 VkCommandBufferLevel level
Jesse Hall3dd678a2016-01-08 21:52:01 -08002991 u32 commandBufferCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002992}
2993
Jesse Hall3dd678a2016-01-08 21:52:01 -08002994class VkCommandBufferInheritanceInfo {
2995 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002996 const void* pNext /// Pointer to next structure
Jesse Halld27f6aa2015-08-15 17:58:48 -07002997 VkRenderPass renderPass /// Render pass for secondary command buffers
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002998 u32 subpass
Jesse Halld27f6aa2015-08-15 17:58:48 -07002999 VkFramebuffer framebuffer /// Framebuffer for secondary command buffers
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003000 VkBool32 occlusionQueryEnable
3001 VkQueryControlFlags queryFlags
3002 VkQueryPipelineStatisticFlags pipelineStatistics
Jesse Halld27f6aa2015-08-15 17:58:48 -07003003}
3004
Jesse Hall3dd678a2016-01-08 21:52:01 -08003005class VkCommandBufferBeginInfo {
3006 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
3007 const void* pNext /// Pointer to next structure
3008 VkCommandBufferUsageFlags flags /// Command buffer usage flags
3009 const VkCommandBufferInheritanceInfo* pInheritanceInfo
3010}
3011
Jesse Halld27f6aa2015-08-15 17:58:48 -07003012class VkRenderPassBeginInfo {
3013 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
3014 const void* pNext /// Pointer to next structure
3015 VkRenderPass renderPass
3016 VkFramebuffer framebuffer
3017 VkRect2D renderArea
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003018 u32 clearValueCount
3019 const VkClearValue* pClearValues
Jesse Halld27f6aa2015-08-15 17:58:48 -07003020}
3021
3022@union
3023/// Union allowing specification of floating point, integer, or unsigned integer color data. Actual value selected is based on image/attachment being cleared.
3024class VkClearColorValue {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003025 f32[4] float32
3026 s32[4] int32
3027 u32[4] uint32
Jesse Halld27f6aa2015-08-15 17:58:48 -07003028}
3029
3030class VkClearDepthStencilValue {
3031 f32 depth
3032 u32 stencil
3033}
3034
3035@union
3036/// Union allowing specification of color, depth, and stencil color values. Actual value selected is based on attachment being cleared.
3037class VkClearValue {
3038 VkClearColorValue color
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003039 VkClearDepthStencilValue depthStencil
Jesse Halld27f6aa2015-08-15 17:58:48 -07003040}
3041
Jesse Hallae38f732015-11-19 21:32:50 -08003042class VkClearAttachment {
3043 VkImageAspectFlags aspectMask
3044 u32 colorAttachment
3045 VkClearValue clearValue
3046}
3047
Jesse Halld27f6aa2015-08-15 17:58:48 -07003048class VkAttachmentDescription {
Jesse Halla6429252015-11-29 18:59:42 -08003049 VkAttachmentDescriptionFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003050 VkFormat format
Jesse Hall091ed9e2015-11-30 00:55:29 -08003051 VkSampleCountFlagBits samples
Jesse Halld27f6aa2015-08-15 17:58:48 -07003052 VkAttachmentLoadOp loadOp /// Load op for color or depth data
3053 VkAttachmentStoreOp storeOp /// Store op for color or depth data
3054 VkAttachmentLoadOp stencilLoadOp /// Load op for stencil data
3055 VkAttachmentStoreOp stencilStoreOp /// Store op for stencil data
3056 VkImageLayout initialLayout
3057 VkImageLayout finalLayout
3058}
3059
3060class VkAttachmentReference {
3061 u32 attachment
3062 VkImageLayout layout
3063}
3064
3065class VkSubpassDescription {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003066 VkSubpassDescriptionFlags flags
Jesse Halla6429252015-11-29 18:59:42 -08003067 VkPipelineBindPoint pipelineBindPoint /// Must be VK_PIPELINE_BIND_POINT_GRAPHICS for now
Jesse Hall03b6fe12015-11-24 12:44:21 -08003068 u32 inputAttachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003069 const VkAttachmentReference* pInputAttachments
Jesse Hall03b6fe12015-11-24 12:44:21 -08003070 u32 colorAttachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003071 const VkAttachmentReference* pColorAttachments
3072 const VkAttachmentReference* pResolveAttachments
Jesse Hallc7467b72015-11-29 21:05:26 -08003073 const VkAttachmentReference* pDepthStencilAttachment
Jesse Hall03b6fe12015-11-24 12:44:21 -08003074 u32 preserveAttachmentCount
Jesse Hall3dd678a2016-01-08 21:52:01 -08003075 const u32* pPreserveAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003076}
3077
3078class VkSubpassDependency {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003079 u32 srcSubpass
Jesse Hall3fbc8562015-11-29 22:10:52 -08003080 u32 dstSubpass
Jesse Halld27f6aa2015-08-15 17:58:48 -07003081 VkPipelineStageFlags srcStageMask
Jesse Hall3fbc8562015-11-29 22:10:52 -08003082 VkPipelineStageFlags dstStageMask
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003083 VkAccessFlags srcAccessMask
3084 VkAccessFlags dstAccessMask
Jesse Halldc6d36c2015-11-29 19:12:15 -08003085 VkDependencyFlags dependencyFlags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003086}
3087
3088class VkRenderPassCreateInfo {
3089 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
3090 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003091 VkRenderPassCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003092 u32 attachmentCount
3093 const VkAttachmentDescription* pAttachments
3094 u32 subpassCount
3095 const VkSubpassDescription* pSubpasses
3096 u32 dependencyCount
3097 const VkSubpassDependency* pDependencies
3098}
3099
3100class VkEventCreateInfo {
3101 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_EVENT_CREATE_INFO
3102 const void* pNext /// Pointer to next structure
3103 VkEventCreateFlags flags /// Event creation flags
3104}
3105
3106class VkFenceCreateInfo {
3107 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FENCE_CREATE_INFO
3108 const void* pNext /// Pointer to next structure
3109 VkFenceCreateFlags flags /// Fence creation flags
3110}
3111
3112class VkPhysicalDeviceFeatures {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003113 VkBool32 robustBufferAccess /// out of bounds buffer accesses are well defined
3114 VkBool32 fullDrawIndexUint32 /// full 32-bit range of indices for indexed draw calls
3115 VkBool32 imageCubeArray /// image views which are arrays of cube maps
3116 VkBool32 independentBlend /// blending operations are controlled per-attachment
3117 VkBool32 geometryShader /// geometry stage
3118 VkBool32 tessellationShader /// tessellation control and evaluation stage
3119 VkBool32 sampleRateShading /// per-sample shading and interpolation
Jesse Hall3fbc8562015-11-29 22:10:52 -08003120 VkBool32 dualSrcBlend /// blend operations which take two sources
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003121 VkBool32 logicOp /// logic operations
3122 VkBool32 multiDrawIndirect /// multi draw indirect
Jesse Hall543a7ff2016-01-08 16:38:30 -08003123 VkBool32 drawIndirectFirstInstance
Jesse Hallae38f732015-11-19 21:32:50 -08003124 VkBool32 depthClamp /// depth clamping
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003125 VkBool32 depthBiasClamp /// depth bias clamping
3126 VkBool32 fillModeNonSolid /// point and wireframe fill modes
3127 VkBool32 depthBounds /// depth bounds test
3128 VkBool32 wideLines /// lines with width greater than 1
3129 VkBool32 largePoints /// points with size greater than 1
Jesse Hallfbf97b02015-11-20 14:17:03 -08003130 VkBool32 alphaToOne /// The fragment alpha channel can be forced to maximum representable alpha value
3131 VkBool32 multiViewport
3132 VkBool32 samplerAnisotropy
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003133 VkBool32 textureCompressionETC2 /// ETC texture compression formats
3134 VkBool32 textureCompressionASTC_LDR /// ASTC LDR texture compression formats
3135 VkBool32 textureCompressionBC /// BC1-7 texture compressed formats
Jesse Hall65ab5522015-11-30 00:07:16 -08003136 VkBool32 occlusionQueryPrecise
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003137 VkBool32 pipelineStatisticsQuery /// pipeline statistics query
Jesse Halldc6d36c2015-11-29 19:12:15 -08003138 VkBool32 vertexPipelineStoresAndAtomics
3139 VkBool32 fragmentStoresAndAtomics
3140 VkBool32 shaderTessellationAndGeometryPointSize
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003141 VkBool32 shaderImageGatherExtended /// texture gather with run-time values and independent offsets
3142 VkBool32 shaderStorageImageExtendedFormats /// the extended set of formats can be used for storage images
3143 VkBool32 shaderStorageImageMultisample /// multisample images can be used for storage images
Jesse Halld1af8122015-11-29 23:50:38 -08003144 VkBool32 shaderStorageImageReadWithoutFormat
3145 VkBool32 shaderStorageImageWriteWithoutFormat
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003146 VkBool32 shaderUniformBufferArrayDynamicIndexing /// arrays of uniform buffers can be accessed with dynamically uniform indices
3147 VkBool32 shaderSampledImageArrayDynamicIndexing /// arrays of sampled images can be accessed with dynamically uniform indices
3148 VkBool32 shaderStorageBufferArrayDynamicIndexing /// arrays of storage buffers can be accessed with dynamically uniform indices
3149 VkBool32 shaderStorageImageArrayDynamicIndexing /// arrays of storage images can be accessed with dynamically uniform indices
3150 VkBool32 shaderClipDistance /// clip distance in shaders
3151 VkBool32 shaderCullDistance /// cull distance in shaders
3152 VkBool32 shaderFloat64 /// 64-bit floats (doubles) in shaders
3153 VkBool32 shaderInt64 /// 64-bit integers in shaders
3154 VkBool32 shaderInt16 /// 16-bit integers in shaders
3155 VkBool32 shaderResourceResidency /// shader can use texture operations that return resource residency information (requires sparseNonResident support)
Jesse Hall65ab5522015-11-30 00:07:16 -08003156 VkBool32 shaderResourceMinLod /// shader can use texture operations that specify minimum resource LOD
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003157 VkBool32 sparseBinding /// Sparse resources support: Resource memory can be managed at opaque page level rather than object level
3158 VkBool32 sparseResidencyBuffer /// Sparse resources support: GPU can access partially resident buffers
3159 VkBool32 sparseResidencyImage2D /// Sparse resources support: GPU can access partially resident 2D (non-MSAA non-DepthStencil) images
3160 VkBool32 sparseResidencyImage3D /// Sparse resources support: GPU can access partially resident 3D images
3161 VkBool32 sparseResidency2Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 2 samples
3162 VkBool32 sparseResidency4Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 4 samples
3163 VkBool32 sparseResidency8Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 8 samples
3164 VkBool32 sparseResidency16Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 16 samples
3165 VkBool32 sparseResidencyAliased /// Sparse resources support: GPU can correctly access data aliased into multiple locations (opt-in)
Jesse Halld1af8122015-11-29 23:50:38 -08003166 VkBool32 variableMultisampleRate
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003167 VkBool32 inheritedQueries
Jesse Halld27f6aa2015-08-15 17:58:48 -07003168}
3169
3170class VkPhysicalDeviceLimits {
3171 /// resource maximum sizes
3172 u32 maxImageDimension1D /// max 1D image dimension
3173 u32 maxImageDimension2D /// max 2D image dimension
3174 u32 maxImageDimension3D /// max 3D image dimension
3175 u32 maxImageDimensionCube /// max cubemap image dimension
3176 u32 maxImageArrayLayers /// max layers for image arrays
Jesse Hallb00daad2015-11-29 19:46:20 -08003177 u32 maxTexelBufferElements
Jesse Hallfbf97b02015-11-20 14:17:03 -08003178 u32 maxUniformBufferRange /// max uniform buffer size (bytes)
3179 u32 maxStorageBufferRange /// max storage buffer size (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003180 u32 maxPushConstantsSize /// max size of the push constants pool (bytes)
3181 /// memory limits
3182 u32 maxMemoryAllocationCount /// max number of device memory allocations supported
Jesse Hall091ed9e2015-11-30 00:55:29 -08003183 u32 maxSamplerAllocationCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003184 VkDeviceSize bufferImageGranularity /// Granularity (in bytes) at which buffers and images can be bound to adjacent memory for simultaneous usage
3185 VkDeviceSize sparseAddressSpaceSize /// Total address space available for sparse allocations (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003186 /// descriptor set limits
3187 u32 maxBoundDescriptorSets /// max number of descriptors sets that can be bound to a pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07003188 u32 maxPerStageDescriptorSamplers /// max num of samplers allowed per-stage in a descriptor set
3189 u32 maxPerStageDescriptorUniformBuffers /// max num of uniform buffers allowed per-stage in a descriptor set
3190 u32 maxPerStageDescriptorStorageBuffers /// max num of storage buffers allowed per-stage in a descriptor set
3191 u32 maxPerStageDescriptorSampledImages /// max num of sampled images allowed per-stage in a descriptor set
3192 u32 maxPerStageDescriptorStorageImages /// max num of storage images allowed per-stage in a descriptor set
Jesse Halle1b12782015-11-30 11:27:32 -08003193 u32 maxPerStageDescriptorInputAttachments
Jesse Halldba27f72015-11-30 14:25:46 -08003194 u32 maxPerStageResources
Jesse Halld27f6aa2015-08-15 17:58:48 -07003195 u32 maxDescriptorSetSamplers /// max num of samplers allowed in all stages in a descriptor set
3196 u32 maxDescriptorSetUniformBuffers /// max num of uniform buffers allowed in all stages in a descriptor set
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003197 u32 maxDescriptorSetUniformBuffersDynamic /// max num of dynamic uniform buffers allowed in all stages in a descriptor set
Jesse Halld27f6aa2015-08-15 17:58:48 -07003198 u32 maxDescriptorSetStorageBuffers /// max num of storage buffers allowed in all stages in a descriptor set
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003199 u32 maxDescriptorSetStorageBuffersDynamic /// max num of dynamic storage buffers allowed in all stages in a descriptor set
Jesse Halld27f6aa2015-08-15 17:58:48 -07003200 u32 maxDescriptorSetSampledImages /// max num of sampled images allowed in all stages in a descriptor set
3201 u32 maxDescriptorSetStorageImages /// max num of storage images allowed in all stages in a descriptor set
Jesse Halle1b12782015-11-30 11:27:32 -08003202 u32 maxDescriptorSetInputAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003203 /// vertex stage limits
3204 u32 maxVertexInputAttributes /// max num of vertex input attribute slots
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003205 u32 maxVertexInputBindings /// max num of vertex input binding slots
Jesse Halld27f6aa2015-08-15 17:58:48 -07003206 u32 maxVertexInputAttributeOffset /// max vertex input attribute offset added to vertex buffer offset
3207 u32 maxVertexInputBindingStride /// max vertex input binding stride
3208 u32 maxVertexOutputComponents /// max num of output components written by vertex shader
3209 /// tessellation control stage limits
Jesse Hall3fbc8562015-11-29 22:10:52 -08003210 u32 maxTessellationGenerationLevel /// max level supported by tess primitive generator
Jesse Hallae38f732015-11-19 21:32:50 -08003211 u32 maxTessellationPatchSize /// max patch size (vertices)
3212 u32 maxTessellationControlPerVertexInputComponents /// max num of input components per-vertex in TCS
3213 u32 maxTessellationControlPerVertexOutputComponents /// max num of output components per-vertex in TCS
3214 u32 maxTessellationControlPerPatchOutputComponents /// max num of output components per-patch in TCS
3215 u32 maxTessellationControlTotalOutputComponents /// max total num of per-vertex and per-patch output components in TCS
3216 u32 maxTessellationEvaluationInputComponents /// max num of input components per vertex in TES
3217 u32 maxTessellationEvaluationOutputComponents /// max num of output components per vertex in TES
Jesse Halld27f6aa2015-08-15 17:58:48 -07003218 /// geometry stage limits
3219 u32 maxGeometryShaderInvocations /// max invocation count supported in geometry shader
3220 u32 maxGeometryInputComponents /// max num of input components read in geometry stage
3221 u32 maxGeometryOutputComponents /// max num of output components written in geometry stage
3222 u32 maxGeometryOutputVertices /// max num of vertices that can be emitted in geometry stage
3223 u32 maxGeometryTotalOutputComponents /// max total num of components (all vertices) written in geometry stage
3224 /// fragment stage limits
3225 u32 maxFragmentInputComponents /// max num of input compontents read in fragment stage
Jesse Hallfbf97b02015-11-20 14:17:03 -08003226 u32 maxFragmentOutputAttachments /// max num of output attachments written in fragment stage
Jesse Hall3fbc8562015-11-29 22:10:52 -08003227 u32 maxFragmentDualSrcAttachments /// max num of output attachments written when using dual source blending
Jesse Halld27f6aa2015-08-15 17:58:48 -07003228 u32 maxFragmentCombinedOutputResources /// max total num of storage buffers, storage images and output buffers
3229 /// compute stage limits
3230 u32 maxComputeSharedMemorySize /// max total storage size of work group local storage (bytes)
3231 u32[3] maxComputeWorkGroupCount /// max num of compute work groups that may be dispatched by a single command (x,y,z)
3232 u32 maxComputeWorkGroupInvocations /// max total compute invocations in a single local work group
3233 u32[3] maxComputeWorkGroupSize /// max local size of a compute work group (x,y,z)
3234
3235 u32 subPixelPrecisionBits /// num bits of subpixel precision in screen x and y
3236 u32 subTexelPrecisionBits /// num bits of subtexel precision
3237 u32 mipmapPrecisionBits /// num bits of mipmap precision
3238
3239 u32 maxDrawIndexedIndexValue /// max index value for indexed draw calls (for 32-bit indices)
Jesse Halldba27f72015-11-30 14:25:46 -08003240 u32 maxDrawIndirectCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003241
3242 f32 maxSamplerLodBias /// max absolute sampler level of detail bias
3243 f32 maxSamplerAnisotropy /// max degree of sampler anisotropy
3244
3245 u32 maxViewports /// max number of active viewports
Jesse Halld27f6aa2015-08-15 17:58:48 -07003246 u32[2] maxViewportDimensions /// max viewport dimensions (x,y)
3247 f32[2] viewportBoundsRange /// viewport bounds range (min,max)
3248 u32 viewportSubPixelBits /// num bits of subpixel precision for viewport
3249
Jesse Halldc6d36c2015-11-29 19:12:15 -08003250 platform.size_t minMemoryMapAlignment /// min required alignment of pointers returned by MapMemory (bytes)
3251 VkDeviceSize minTexelBufferOffsetAlignment /// min required alignment for texel buffer offsets (bytes)
3252 VkDeviceSize minUniformBufferOffsetAlignment /// min required alignment for uniform buffer sizes and offsets (bytes)
3253 VkDeviceSize minStorageBufferOffsetAlignment /// min required alignment for storage buffer offsets (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003254
Jesse Hallfbf97b02015-11-20 14:17:03 -08003255 s32 minTexelOffset /// min texel offset for OpTextureSampleOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07003256 u32 maxTexelOffset /// max texel offset for OpTextureSampleOffset
Jesse Hallfbf97b02015-11-20 14:17:03 -08003257 s32 minTexelGatherOffset /// min texel offset for OpTextureGatherOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07003258 u32 maxTexelGatherOffset /// max texel offset for OpTextureGatherOffset
3259 f32 minInterpolationOffset /// furthest negative offset for interpolateAtOffset
3260 f32 maxInterpolationOffset /// furthest positive offset for interpolateAtOffset
3261 u32 subPixelInterpolationOffsetBits /// num of subpixel bits for interpolateAtOffset
3262
3263 u32 maxFramebufferWidth /// max width for a framebuffer
3264 u32 maxFramebufferHeight /// max height for a framebuffer
3265 u32 maxFramebufferLayers /// max layer count for a layered framebuffer
Jesse Hall091ed9e2015-11-30 00:55:29 -08003266 VkSampleCountFlags framebufferColorSampleCounts
3267 VkSampleCountFlags framebufferDepthSampleCounts
3268 VkSampleCountFlags framebufferStencilSampleCounts
3269 VkSampleCountFlags framebufferNoAttachmentSampleCounts
Jesse Halld27f6aa2015-08-15 17:58:48 -07003270 u32 maxColorAttachments /// max num of framebuffer color attachments
3271
Jesse Hall091ed9e2015-11-30 00:55:29 -08003272 VkSampleCountFlags sampledImageColorSampleCounts
3273 VkSampleCountFlags sampledImageIntegerSampleCounts
3274 VkSampleCountFlags sampledImageDepthSampleCounts
3275 VkSampleCountFlags sampledImageStencilSampleCounts
3276 VkSampleCountFlags storageImageSampleCounts
Jesse Halld27f6aa2015-08-15 17:58:48 -07003277 u32 maxSampleMaskWords /// max num of sample mask words
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003278 VkBool32 timestampComputeAndGraphics
Jesse Halld27f6aa2015-08-15 17:58:48 -07003279
Jesse Halla9bb62b2015-11-21 19:31:56 -08003280 f32 timestampPeriod
Jesse Halld27f6aa2015-08-15 17:58:48 -07003281
3282 u32 maxClipDistances /// max number of clip distances
3283 u32 maxCullDistances /// max number of cull distances
3284 u32 maxCombinedClipAndCullDistances /// max combined number of user clipping
3285
Jesse Hallfbf97b02015-11-20 14:17:03 -08003286 u32 discreteQueuePriorities
3287
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003288 f32[2] pointSizeRange /// range (min,max) of supported point sizes
3289 f32[2] lineWidthRange /// range (min,max) of supported line widths
Jesse Halld27f6aa2015-08-15 17:58:48 -07003290 f32 pointSizeGranularity /// granularity of supported point sizes
3291 f32 lineWidthGranularity /// granularity of supported line widths
Jesse Hall03b6fe12015-11-24 12:44:21 -08003292 VkBool32 strictLines
Jesse Hall091ed9e2015-11-30 00:55:29 -08003293 VkBool32 standardSampleLocations
Jesse Halla9bb62b2015-11-21 19:31:56 -08003294
Jesse Hall65ab5522015-11-30 00:07:16 -08003295 VkDeviceSize optimalBufferCopyOffsetAlignment
3296 VkDeviceSize optimalBufferCopyRowPitchAlignment
Jesse Halldba27f72015-11-30 14:25:46 -08003297 VkDeviceSize nonCoherentAtomSize
Jesse Halld27f6aa2015-08-15 17:58:48 -07003298}
3299
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003300class VkPhysicalDeviceSparseProperties {
3301 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 -08003302 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 -07003303 VkBool32 residencyStandard3DBlockShape /// Sparse resources support: GPU will access all 3D sparse resources using the standard block shapes (based on pixel format)
3304 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 -07003305 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
3306}
3307
Jesse Halld27f6aa2015-08-15 17:58:48 -07003308class VkSemaphoreCreateInfo {
3309 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
3310 const void* pNext /// Pointer to next structure
3311 VkSemaphoreCreateFlags flags /// Semaphore creation flags
3312}
3313
3314class VkQueryPoolCreateInfo {
3315 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
3316 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003317 VkQueryPoolCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003318 VkQueryType queryType
Jesse Hall3dd678a2016-01-08 21:52:01 -08003319 u32 queryCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003320 VkQueryPipelineStatisticFlags pipelineStatistics /// Optional
3321}
3322
3323class VkFramebufferCreateInfo {
3324 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
3325 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003326 VkFramebufferCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003327 VkRenderPass renderPass
3328 u32 attachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003329 const VkImageView* pAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003330 u32 width
3331 u32 height
3332 u32 layers
3333}
3334
Jesse Hall3fbc8562015-11-29 22:10:52 -08003335class VkDrawIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003336 u32 vertexCount
3337 u32 instanceCount
3338 u32 firstVertex
3339 u32 firstInstance
3340}
3341
Jesse Hall3fbc8562015-11-29 22:10:52 -08003342class VkDrawIndexedIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003343 u32 indexCount
3344 u32 instanceCount
3345 u32 firstIndex
3346 s32 vertexOffset
3347 u32 firstInstance
3348}
3349
Jesse Hall3fbc8562015-11-29 22:10:52 -08003350class VkDispatchIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003351 u32 x
3352 u32 y
3353 u32 z
3354}
3355
Jesse Hallad250842017-03-10 18:35:38 -08003356@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08003357class VkSurfaceCapabilitiesKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003358 u32 minImageCount
3359 u32 maxImageCount
3360 VkExtent2D currentExtent
3361 VkExtent2D minImageExtent
3362 VkExtent2D maxImageExtent
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003363 u32 maxImageArrayLayers
Jesse Hall1356b0d2015-11-23 17:24:58 -08003364 VkSurfaceTransformFlagsKHR supportedTransforms
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003365 VkSurfaceTransformFlagBitsKHR currentTransform
Jesse Halla6429252015-11-29 18:59:42 -08003366 VkCompositeAlphaFlagsKHR supportedCompositeAlpha
Jesse Hall1356b0d2015-11-23 17:24:58 -08003367 VkImageUsageFlags supportedUsageFlags
Michael Lentine88594d72015-11-12 12:49:45 -08003368}
3369
Jesse Hallad250842017-03-10 18:35:38 -08003370@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08003371class VkSurfaceFormatKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003372 VkFormat format
3373 VkColorSpaceKHR colorSpace
Michael Lentine88594d72015-11-12 12:49:45 -08003374}
3375
Jesse Hallad250842017-03-10 18:35:38 -08003376@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08003377class VkSwapchainCreateInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003378 VkStructureType sType
3379 const void* pNext
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003380 VkSwapchainCreateFlagsKHR flags
Jesse Hall1356b0d2015-11-23 17:24:58 -08003381 VkSurfaceKHR surface
3382 u32 minImageCount
3383 VkFormat imageFormat
3384 VkColorSpaceKHR imageColorSpace
3385 VkExtent2D imageExtent
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003386 u32 imageArrayLayers
3387 VkImageUsageFlags imageUsage
Jesse Hall1356b0d2015-11-23 17:24:58 -08003388 VkSharingMode sharingMode
Jesse Hall03b6fe12015-11-24 12:44:21 -08003389 u32 queueFamilyIndexCount
Jesse Hall1356b0d2015-11-23 17:24:58 -08003390 const u32* pQueueFamilyIndices
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003391 VkSurfaceTransformFlagBitsKHR preTransform
3392 VkCompositeAlphaFlagBitsKHR compositeAlpha
Jesse Hall1356b0d2015-11-23 17:24:58 -08003393 VkPresentModeKHR presentMode
Jesse Hall1356b0d2015-11-23 17:24:58 -08003394 VkBool32 clipped
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003395 VkSwapchainKHR oldSwapchain
Michael Lentine88594d72015-11-12 12:49:45 -08003396}
3397
Jesse Hallad250842017-03-10 18:35:38 -08003398@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08003399class VkPresentInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003400 VkStructureType sType
3401 const void* pNext
Jesse Hallb00daad2015-11-29 19:46:20 -08003402 u32 waitSemaphoreCount
3403 const VkSemaphore* pWaitSemaphores
Jesse Hall1356b0d2015-11-23 17:24:58 -08003404 u32 swapchainCount
Jesse Hall03b6fe12015-11-24 12:44:21 -08003405 const VkSwapchainKHR* pSwapchains
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003406 const u32* pImageIndices
Jesse Halle1b12782015-11-30 11:27:32 -08003407 VkResult* pResults
Michael Lentine88594d72015-11-12 12:49:45 -08003408}
3409
Jesse Hallad250842017-03-10 18:35:38 -08003410@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003411class VkDisplayPropertiesKHR {
3412 VkDisplayKHR display
3413 const char* displayName
3414 VkExtent2D physicalDimensions
3415 VkExtent2D physicalResolution
3416 VkSurfaceTransformFlagsKHR supportedTransforms
Jesse Hall1356b0d2015-11-23 17:24:58 -08003417 VkBool32 planeReorderPossible
Jesse Halla6429252015-11-29 18:59:42 -08003418 VkBool32 persistentContent
Michael Lentine88594d72015-11-12 12:49:45 -08003419}
3420
Jesse Hallad250842017-03-10 18:35:38 -08003421@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003422class VkDisplayModeParametersKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003423 VkExtent2D visibleRegion
Jesse Halla6429252015-11-29 18:59:42 -08003424 u32 refreshRate
Michael Lentine88594d72015-11-12 12:49:45 -08003425}
Jesse Halld27f6aa2015-08-15 17:58:48 -07003426
Jesse Hallad250842017-03-10 18:35:38 -08003427@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003428class VkDisplayModePropertiesKHR {
3429 VkDisplayModeKHR displayMode
Jesse Halla6429252015-11-29 18:59:42 -08003430 VkDisplayModeParametersKHR parameters
Jesse Hall1356b0d2015-11-23 17:24:58 -08003431}
3432
Jesse Hallad250842017-03-10 18:35:38 -08003433@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003434class VkDisplayModeCreateInfoKHR {
3435 VkStructureType sType
3436 const void* pNext
Jesse Hall9ba8bc82015-11-30 16:22:16 -08003437 VkDisplayModeCreateFlagsKHR flags
Jesse Halla6429252015-11-29 18:59:42 -08003438 VkDisplayModeParametersKHR parameters
Jesse Hall1356b0d2015-11-23 17:24:58 -08003439}
3440
Jesse Hallad250842017-03-10 18:35:38 -08003441@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003442class VkDisplayPlanePropertiesKHR {
Jesse Halla6429252015-11-29 18:59:42 -08003443 VkDisplayKHR currentDisplay
3444 u32 currentStackIndex
3445}
3446
Jesse Hallad250842017-03-10 18:35:38 -08003447@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003448class VkDisplayPlaneCapabilitiesKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003449 VkDisplayPlaneAlphaFlagsKHR supportedAlpha
3450 VkOffset2D minSrcPosition
3451 VkOffset2D maxSrcPosition
3452 VkExtent2D minSrcExtent
3453 VkExtent2D maxSrcExtent
3454 VkOffset2D minDstPosition
3455 VkOffset2D maxDstPosition
3456 VkExtent2D minDstExtent
3457 VkExtent2D maxDstExtent
3458}
3459
Jesse Hallad250842017-03-10 18:35:38 -08003460@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003461class VkDisplaySurfaceCreateInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003462 VkStructureType sType
3463 const void* pNext
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003464 VkDisplaySurfaceCreateFlagsKHR flags
Jesse Hall1356b0d2015-11-23 17:24:58 -08003465 VkDisplayModeKHR displayMode
3466 u32 planeIndex
3467 u32 planeStackIndex
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003468 VkSurfaceTransformFlagBitsKHR transform
Jesse Hall1356b0d2015-11-23 17:24:58 -08003469 f32 globalAlpha
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003470 VkDisplayPlaneAlphaFlagBitsKHR alphaMode
3471 VkExtent2D imageExtent
Jesse Hall1356b0d2015-11-23 17:24:58 -08003472}
3473
Jesse Hallad250842017-03-10 18:35:38 -08003474@extension("VK_KHR_display_swapchain") // 4
Jesse Hall1356b0d2015-11-23 17:24:58 -08003475class VkDisplayPresentInfoKHR {
3476 VkStructureType sType
3477 const void* pNext
3478 VkRect2D srcRect
3479 VkRect2D dstRect
Jesse Halla6429252015-11-29 18:59:42 -08003480 VkBool32 persistent
Jesse Hall1356b0d2015-11-23 17:24:58 -08003481}
3482
Jesse Hallad250842017-03-10 18:35:38 -08003483@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003484class VkXlibSurfaceCreateInfoKHR {
3485 VkStructureType sType
3486 const void* pNext
3487 VkXlibSurfaceCreateFlagsKHR flags
3488 platform.Display* dpy
3489 platform.Window window
3490}
3491
Jesse Hallad250842017-03-10 18:35:38 -08003492@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003493class VkXcbSurfaceCreateInfoKHR {
3494 VkStructureType sType
3495 const void* pNext
3496 VkXcbSurfaceCreateFlagsKHR flags
3497 platform.xcb_connection_t* connection
3498 platform.xcb_window_t window
3499}
3500
Jesse Hallad250842017-03-10 18:35:38 -08003501@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003502class VkWaylandSurfaceCreateInfoKHR {
3503 VkStructureType sType
3504 const void* pNext
3505 VkWaylandSurfaceCreateFlagsKHR flags
3506 platform.wl_display* display
3507 platform.wl_surface* surface
3508}
3509
Jesse Hallad250842017-03-10 18:35:38 -08003510@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003511class VkMirSurfaceCreateInfoKHR {
3512 VkStructureType sType
3513 const void* pNext
3514 VkMirSurfaceCreateFlagsKHR flags
3515 platform.MirConnection* connection
3516 platform.MirSurface* mirSurface
3517}
3518
Jesse Hallad250842017-03-10 18:35:38 -08003519@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003520class VkAndroidSurfaceCreateInfoKHR {
3521 VkStructureType sType
3522 const void* pNext
3523 VkAndroidSurfaceCreateFlagsKHR flags
3524 platform.ANativeWindow* window
3525}
3526
Jesse Hallad250842017-03-10 18:35:38 -08003527@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003528class VkWin32SurfaceCreateInfoKHR {
3529 VkStructureType sType
3530 const void* pNext
3531 VkWin32SurfaceCreateFlagsKHR flags
3532 platform.HINSTANCE hinstance
3533 platform.HWND hwnd
3534}
3535
Jesse Hallad250842017-03-10 18:35:38 -08003536@extension("VK_ANDROID_native_buffer") // 11
Jesse Halld1abd742017-02-09 21:45:51 -08003537@internal class Gralloc1Usage {
3538 u64 consumer
3539 u64 producer
3540}
3541
Jesse Hallad250842017-03-10 18:35:38 -08003542@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08003543class VkNativeBufferANDROID {
3544 VkStructureType sType
3545 const void* pNext
3546 platform.buffer_handle_t handle
Jesse Halld1abd742017-02-09 21:45:51 -08003547 s32 stride
3548 s32 format
3549 s32 usage
3550 Gralloc1Usage usage2
Chia-I Wub262ddc2016-03-22 07:38:20 +08003551}
3552
Jesse Hallad250842017-03-10 18:35:38 -08003553@extension("VK_ANDROID_native_buffer") // 11
Chris Forbes8e4438b2016-12-07 16:26:49 +13003554class VkSwapchainImageCreateInfoANDROID {
3555 VkStructureType sType
3556 const void* pNext
Chris Forbes134d9582017-01-12 14:26:37 +13003557 VkSwapchainImageUsageFlagsANDROID flags
Chris Forbes48853712017-01-12 14:09:33 +13003558}
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07003559
Jesse Hallad250842017-03-10 18:35:38 -08003560@extension("VK_ANDROID_native_buffer") // 11
Chris Forbes1d4e5542017-02-15 19:38:50 +13003561class VkPhysicalDevicePresentationPropertiesANDROID {
3562 VkStructureType sType
3563 void* pNext
3564 VkBool32 sharedImage
3565}
3566
Jesse Hallad250842017-03-10 18:35:38 -08003567@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08003568class VkDebugReportCallbackCreateInfoEXT {
3569 VkStructureType sType
3570 const void* pNext
3571 VkDebugReportFlagsEXT flags
3572 PFN_vkDebugReportCallbackEXT pfnCallback
3573 void* pUserData
3574}
3575
Jesse Hallad250842017-03-10 18:35:38 -08003576@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07003577class VkPipelineRasterizationStateRasterizationOrderAMD {
3578 VkStructureType sType
3579 const void* pNext
3580 VkRasterizationOrderAMD rasterizationOrder
3581}
3582
Jesse Hallad250842017-03-10 18:35:38 -08003583@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003584class VkDebugMarkerObjectNameInfoEXT {
3585 VkStructureType sType
3586 const void* pNext
3587 VkDebugReportObjectTypeEXT objectType
3588 u64 object
3589 const char* pObjectName
3590}
3591
Jesse Hallad250842017-03-10 18:35:38 -08003592@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003593class VkDebugMarkerObjectTagInfoEXT {
3594 VkStructureType sType
3595 const void* pNext
3596 VkDebugReportObjectTypeEXT objectType
3597 u64 object
3598 u64 tagName
3599 platform.size_t tagSize
3600 const void* pTag
3601}
3602
Jesse Hallad250842017-03-10 18:35:38 -08003603@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003604class VkDebugMarkerMarkerInfoEXT {
3605 VkStructureType sType
3606 const void* pNext
3607 const char* pMarkerName
3608 f32[4] color
3609}
3610
Jesse Hallad250842017-03-10 18:35:38 -08003611@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07003612class VkDedicatedAllocationImageCreateInfoNV {
3613 VkStructureType sType
3614 const void* pNext
3615 VkBool32 dedicatedAllocation
3616}
3617
Jesse Hallad250842017-03-10 18:35:38 -08003618@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07003619class VkDedicatedAllocationBufferCreateInfoNV {
3620 VkStructureType sType
3621 const void* pNext
3622 VkBool32 dedicatedAllocation
3623}
3624
Jesse Hallad250842017-03-10 18:35:38 -08003625@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07003626class VkDedicatedAllocationMemoryAllocateInfoNV {
3627 VkStructureType sType
3628 const void* pNext
3629 VkImage image
3630 VkBuffer buffer
3631}
3632
Jesse Hall7ba0ac72017-07-07 17:13:23 -07003633@extension("VK_AMD_texture_gather_bias_lod") // 42
3634class VkTextureLODGatherFormatPropertiesAMD {
3635 VkStructureType sType
3636 void* pNext
3637 VkBool32 supportsTextureGatherLODBiasAMD
3638}
3639
Jesse Hallad250842017-03-10 18:35:38 -08003640@extension("VK_KHX_multiview") // 54
3641class VkRenderPassMultiviewCreateInfoKHX {
3642 VkStructureType sType
3643 const void* pNext
3644 u32 subpassCount
3645 const u32* pViewMasks
3646 u32 dependencyCount
3647 const s32* pViewOffsets
3648 u32 correlationMaskCount
3649 const u32* pCorrelationMasks
3650}
3651
3652@extension("VK_KHX_multiview") // 54
3653class VkPhysicalDeviceMultiviewFeaturesKHX {
3654 VkStructureType sType
3655 void* pNext
3656 VkBool32 multiview
3657 VkBool32 multiviewGeometryShader
3658 VkBool32 multiviewTessellationShader
3659}
3660
3661@extension("VK_KHX_multiview") // 54
3662class VkPhysicalDeviceMultiviewPropertiesKHX {
3663 VkStructureType sType
3664 void* pNext
3665 u32 maxMultiviewViewCount
3666 u32 maxMultiviewInstanceIndex
3667}
3668
3669@extension("VK_NV_external_memory_capabilities") // 56
Jesse Halleb02c472017-02-24 15:13:45 -08003670class VkExternalImageFormatPropertiesNV {
3671 VkImageFormatProperties imageFormatProperties
3672 VkExternalMemoryFeatureFlagsNV externalMemoryFeatures
3673 VkExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes
3674 VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes
3675}
3676
Jesse Hallad250842017-03-10 18:35:38 -08003677@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08003678class VkExternalMemoryImageCreateInfoNV {
3679 VkStructureType sType
3680 const void* pNext
3681 VkExternalMemoryHandleTypeFlagsNV handleTypes
3682}
3683
Jesse Hallad250842017-03-10 18:35:38 -08003684@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08003685class VkExportMemoryAllocateInfoNV {
3686 VkStructureType sType
3687 const void* pNext
3688 VkExternalMemoryHandleTypeFlagsNV handleTypes
3689}
3690
Jesse Hallad250842017-03-10 18:35:38 -08003691@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08003692class VkImportMemoryWin32HandleInfoNV {
3693 VkStructureType sType
3694 const void* pNext
3695 VkExternalMemoryHandleTypeFlagsNV handleType
3696 platform.HANDLE handle
3697}
3698
Jesse Hallad250842017-03-10 18:35:38 -08003699@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08003700class VkExportMemoryWin32HandleInfoNV {
3701 VkStructureType sType
3702 const void* pNext
3703 const platform.SECURITY_ATTRIBUTES* pAttributes
3704 platform.DWORD dwAccess
3705}
3706
Jesse Hallad250842017-03-10 18:35:38 -08003707@extension("VK_NV_win32_keyed_mutex") // 59
Jesse Halleb02c472017-02-24 15:13:45 -08003708class VkWin32KeyedMutexAcquireReleaseInfoNV {
3709 VkStructureType sType
3710 const void* pNext
3711 u32 acquireCount
3712 const VkDeviceMemory* pAcquireSyncs
3713 const u64* pAcquireKeys
3714 const u32* pAcquireTimeoutMilliseconds
3715 u32 releaseCount
3716 const VkDeviceMemory* pReleaseSyncs
3717 const u64* pReleaseKeys
3718}
3719
Jesse Hallad250842017-03-10 18:35:38 -08003720@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003721class VkPhysicalDeviceFeatures2KHR {
3722 VkStructureType sType
3723 void* pNext
3724 VkPhysicalDeviceFeatures features
3725}
3726
Jesse Hallad250842017-03-10 18:35:38 -08003727@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003728class VkPhysicalDeviceProperties2KHR {
3729 VkStructureType sType
3730 void* pNext
3731 VkPhysicalDeviceProperties properties
3732}
3733
Jesse Hallad250842017-03-10 18:35:38 -08003734@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003735class VkFormatProperties2KHR {
3736 VkStructureType sType
3737 void* pNext
3738 VkFormatProperties formatProperties
3739}
3740
Jesse Hallad250842017-03-10 18:35:38 -08003741@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003742class VkImageFormatProperties2KHR {
3743 VkStructureType sType
3744 void* pNext
3745 VkImageFormatProperties imageFormatProperties
3746}
3747
Jesse Hallad250842017-03-10 18:35:38 -08003748@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003749class VkPhysicalDeviceImageFormatInfo2KHR {
3750 VkStructureType sType
3751 const void* pNext
3752 VkFormat format
3753 VkImageType type
3754 VkImageTiling tiling
3755 VkImageUsageFlags usage
3756 VkImageCreateFlags flags
3757}
3758
Jesse Hallad250842017-03-10 18:35:38 -08003759@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003760class VkQueueFamilyProperties2KHR {
3761 VkStructureType sType
3762 void* pNext
3763 VkQueueFamilyProperties queueFamilyProperties
3764}
3765
Jesse Hallad250842017-03-10 18:35:38 -08003766@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003767class VkPhysicalDeviceMemoryProperties2KHR {
3768 VkStructureType sType
3769 void* pNext
3770 VkPhysicalDeviceMemoryProperties memoryProperties
3771}
3772
Jesse Hallad250842017-03-10 18:35:38 -08003773@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003774class VkSparseImageFormatProperties2KHR {
3775 VkStructureType sType
3776 void* pNext
3777 VkSparseImageFormatProperties properties
3778}
3779
Jesse Hallad250842017-03-10 18:35:38 -08003780@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003781class VkPhysicalDeviceSparseImageFormatInfo2KHR {
3782 VkStructureType sType
3783 const void* pNext
3784 VkFormat format
3785 VkImageType type
3786 VkSampleCountFlagBits samples
3787 VkImageUsageFlags usage
3788 VkImageTiling tiling
3789}
3790
Jesse Hallad250842017-03-10 18:35:38 -08003791@extension("VK_KHX_device_group") // 61
3792class VkMemoryAllocateFlagsInfoKHX {
3793 VkStructureType sType
3794 const void* pNext
3795 VkMemoryAllocateFlagsKHX flags
3796 u32 deviceMask
3797}
3798
3799@extension("VK_KHX_device_group") // 61
3800class VkBindBufferMemoryInfoKHX {
3801 VkStructureType sType
3802 const void* pNext
3803 VkBuffer buffer
3804 VkDeviceMemory memory
3805 VkDeviceSize memoryOffset
3806 u32 deviceIndexCount
3807 const u32* pDeviceIndices
3808}
3809
3810@extension("VK_KHX_device_group") // 61
3811class VkBindImageMemoryInfoKHX {
3812 VkStructureType sType
3813 const void* pNext
3814 VkImage image
3815 VkDeviceMemory memory
3816 VkDeviceSize memoryOffset
3817 u32 deviceIndexCount
3818 const u32* pDeviceIndices
3819 u32 SFRRectCount
3820 const VkRect2D* pSFRRects
3821}
3822
3823@extension("VK_KHX_device_group") // 61
3824class VkDeviceGroupRenderPassBeginInfoKHX {
3825 VkStructureType sType
3826 const void* pNext
3827 u32 deviceMask
3828 u32 deviceRenderAreaCount
3829 const VkRect2D* pDeviceRenderAreas
3830}
3831
3832@extension("VK_KHX_device_group") // 61
3833class VkDeviceGroupCommandBufferBeginInfoKHX {
3834 VkStructureType sType
3835 const void* pNext
3836 u32 deviceMask
3837}
3838
3839@extension("VK_KHX_device_group") // 61
3840class VkDeviceGroupSubmitInfoKHX {
3841 VkStructureType sType
3842 const void* pNext
3843 u32 waitSemaphoreCount
3844 const u32* pWaitSemaphoreDeviceIndices
3845 u32 commandBufferCount
3846 const u32* pCommandBufferDeviceMasks
3847 u32 signalSemaphoreCount
3848 const u32* pSignalSemaphoreDeviceIndices
3849}
3850
3851@extension("VK_KHX_device_group") // 61
3852class VkDeviceGroupBindSparseInfoKHX {
3853 VkStructureType sType
3854 const void* pNext
3855 u32 resourceDeviceIndex
3856 u32 memoryDeviceIndex
3857}
3858
3859@extension("VK_KHX_device_group") // 61
3860class VkDeviceGroupPresentCapabilitiesKHX {
3861 VkStructureType sType
3862 const void* pNext
3863 u32[VK_MAX_DEVICE_GROUP_SIZE_KHX] presentMask
3864 VkDeviceGroupPresentModeFlagsKHX modes
3865}
3866
3867@extension("VK_KHX_device_group") // 61
3868class VkImageSwapchainCreateInfoKHX {
3869 VkStructureType sType
3870 const void* pNext
3871 VkSwapchainKHR swapchain
3872}
3873
3874@extension("VK_KHX_device_group") // 61
3875class VkBindImageMemorySwapchainInfoKHX {
3876 VkStructureType sType
3877 const void* pNext
3878 VkSwapchainKHR swapchain
3879 u32 imageIndex
3880}
3881
3882@extension("VK_KHX_device_group") // 61
3883class VkAcquireNextImageInfoKHX {
3884 VkStructureType sType
3885 const void* pNext
3886 VkSwapchainKHR swapchain
3887 u64 timeout
3888 VkSemaphore semaphore
3889 VkFence fence
3890 u32 deviceMask
3891}
3892
3893@extension("VK_KHX_device_group") // 61
3894class VkDeviceGroupPresentInfoKHX {
3895 VkStructureType sType
3896 const void* pNext
3897 u32 swapchainCount
3898 const u32* pDeviceMasks
3899 VkDeviceGroupPresentModeFlagBitsKHX mode
3900}
3901
3902@extension("VK_KHX_device_group") // 61
3903class VkDeviceGroupSwapchainCreateInfoKHX {
3904 VkStructureType sType
3905 const void* pNext
3906 VkDeviceGroupPresentModeFlagsKHX modes
3907}
3908
3909@extension("VK_EXT_validation_flags") // 62
Chris Forbes289cb792016-12-30 15:03:55 +13003910class VkValidationFlagsEXT {
3911 VkStructureType sType
3912 const void* pNext
3913 u32 disabledValidationCheckCount
3914 VkValidationCheckEXT* pDisabledValidationChecks
3915}
3916
Jesse Hallad250842017-03-10 18:35:38 -08003917@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08003918class VkViSurfaceCreateInfoNN {
3919 VkStructureType sType
3920 const void* pNext
3921 VkViSurfaceCreateFlagsNN flags
3922 void* window
3923}
3924
Jesse Hallad250842017-03-10 18:35:38 -08003925@extension("VK_KHX_device_group_creation") // 71
3926class VkPhysicalDeviceGroupPropertiesKHX {
3927 VkStructureType sType
Jesse Hallf5ad48b2017-03-20 13:09:19 -07003928 void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08003929 u32 physicalDeviceCount
3930 VkPhysicalDevice[VK_MAX_DEVICE_GROUP_SIZE_KHX] physicalDevices
3931 VkBool32 subsetAllocation
3932}
3933
3934@extension("VK_KHX_device_group_creation") // 71
3935class VkDeviceGroupDeviceCreateInfoKHX {
3936 VkStructureType sType
3937 const void* pNext
3938 u32 physicalDeviceCount
3939 const VkPhysicalDevice* pPhysicalDevices
3940}
3941
3942@extension("VK_KHX_external_memory_capabilities") // 72
3943class VkExternalMemoryPropertiesKHX {
3944 VkExternalMemoryFeatureFlagsKHX externalMemoryFeatures
3945 VkExternalMemoryHandleTypeFlagsKHX exportFromImportedHandleTypes
3946 VkExternalMemoryHandleTypeFlagsKHX compatibleHandleTypes
3947}
3948
3949@extension("VK_KHX_external_memory_capabilities") // 72
3950class VkPhysicalDeviceExternalImageFormatInfoKHX {
3951 VkStructureType sType
3952 const void* pNext
3953 VkExternalMemoryHandleTypeFlagBitsKHX handleType
3954}
3955
3956@extension("VK_KHX_external_memory_capabilities") // 72
3957class VkExternalImageFormatPropertiesKHX {
3958 VkStructureType sType
3959 void* pNext
3960 VkExternalMemoryPropertiesKHX externalMemoryProperties
3961}
3962
3963@extension("VK_KHX_external_memory_capabilities") // 72
3964class VkPhysicalDeviceExternalBufferInfoKHX {
3965 VkStructureType sType
3966 const void* pNext
3967 VkBufferCreateFlags flags
3968 VkBufferUsageFlags usage
3969 VkExternalMemoryHandleTypeFlagBitsKHX handleType
3970}
3971
3972@extension("VK_KHX_external_memory_capabilities") // 72
3973class VkExternalBufferPropertiesKHX {
3974 VkStructureType sType
3975 void* pNext
3976 VkExternalMemoryPropertiesKHX externalMemoryProperties
3977}
3978
3979@extension("VK_KHX_external_memory_capabilities") // 72
3980class VkPhysicalDeviceIDPropertiesKHX {
3981 VkStructureType sType
3982 void* pNext
3983 u8[VK_UUID_SIZE] deviceUUID
3984 u8[VK_UUID_SIZE] driverUUID
3985 u8[VK_LUID_SIZE_KHX] deviceLUID
3986 VkBool32 deviceLUIDValid
3987}
3988
Jesse Hallad250842017-03-10 18:35:38 -08003989@extension("VK_KHX_external_memory") // 73
3990class VkExternalMemoryImageCreateInfoKHX {
3991 VkStructureType sType
3992 const void* pNext
3993 VkExternalMemoryHandleTypeFlagsKHX handleTypes
3994}
3995
3996@extension("VK_KHX_external_memory") // 73
3997class VkExternalMemoryBufferCreateInfoKHX {
3998 VkStructureType sType
3999 const void* pNext
4000 VkExternalMemoryHandleTypeFlagsKHX handleTypes
4001}
4002
4003@extension("VK_KHX_external_memory") // 73
4004class VkExportMemoryAllocateInfoKHX {
4005 VkStructureType sType
4006 const void* pNext
4007 VkExternalMemoryHandleTypeFlagsKHX handleTypes
4008}
4009
4010@extension("VK_KHX_external_memory_win32") // 74
4011class VkImportMemoryWin32HandleInfoKHX {
4012 VkStructureType sType
4013 const void* pNext
4014 VkExternalMemoryHandleTypeFlagBitsKHX handleType
4015 platform.HANDLE handle
4016}
4017
4018@extension("VK_KHX_external_memory_win32") // 74
4019class VkExportMemoryWin32HandleInfoKHX {
4020 VkStructureType sType
4021 const void* pNext
4022 const platform.SECURITY_ATTRIBUTES* pAttributes
4023 platform.DWORD dwAccess
4024 platform.LPCWSTR name
4025}
4026
4027@extension("VK_KHX_external_memory_win32") // 74
4028class VkMemoryWin32HandlePropertiesKHX {
4029 VkStructureType sType
4030 void* pNext
4031 u32 memoryTypeBits
4032}
4033
4034@extension("VK_KHX_external_memory_fd") // 75
4035class VkImportMemoryFdInfoKHX {
4036 VkStructureType sType
4037 const void* pNext
4038 VkExternalMemoryHandleTypeFlagBitsKHX handleType
4039 int fd
4040}
4041
4042@extension("VK_KHX_external_memory_fd") // 75
4043class VkMemoryFdPropertiesKHX {
4044 VkStructureType sType
4045 void* pNext
4046 u32 memoryTypeBits
4047}
4048
4049@extension("VK_KHX_win32_keyed_mutex") // 76
4050class VkWin32KeyedMutexAcquireReleaseInfoKHX {
4051 VkStructureType sType
4052 const void* pNext
4053 u32 acquireCount
4054 const VkDeviceMemory* pAcquireSyncs
4055 const u64* pAcquireKeys
4056 const u32* pAcquireTimeouts
4057 u32 releaseCount
4058 const VkDeviceMemory* pReleaseSyncs
4059 const u64* pReleaseKeys
4060}
4061
4062@extension("VK_KHX_external_semaphore_capabilities") // 77
4063class VkPhysicalDeviceExternalSemaphoreInfoKHX {
4064 VkStructureType sType
4065 const void* pNext
4066 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType
4067}
4068
4069@extension("VK_KHX_external_semaphore_capabilities") // 77
4070class VkExternalSemaphorePropertiesKHX {
4071 VkStructureType sType
4072 void* pNext
4073 VkExternalSemaphoreHandleTypeFlagsKHX exportFromImportedHandleTypes
4074 VkExternalSemaphoreHandleTypeFlagsKHX compatibleHandleTypes
4075 VkExternalSemaphoreFeatureFlagsKHX externalSemaphoreFeatures
4076}
4077
4078@extension("VK_KHX_external_semaphore") // 78
4079class VkExportSemaphoreCreateInfoKHX {
4080 VkStructureType sType
4081 const void* pNext
4082 VkExternalSemaphoreHandleTypeFlagsKHX handleTypes
4083}
4084
4085@extension("VK_KHX_external_semaphore_win32") // 79
4086class VkImportSemaphoreWin32HandleInfoKHX {
4087 VkStructureType sType
4088 const void* pNext
4089 VkSemaphore semaphore
4090 VkExternalSemaphoreHandleTypeFlagsKHX handleType
4091 platform.HANDLE handle
4092}
4093
4094@extension("VK_KHX_external_semaphore_win32") // 79
4095class VkExportSemaphoreWin32HandleInfoKHX {
4096 VkStructureType sType
4097 const void* pNext
4098 const platform.SECURITY_ATTRIBUTES* pAttributes
4099 platform.DWORD dwAccess
4100 platform.LPCWSTR name
4101}
4102
4103@extension("VK_KHX_external_semaphore_win32") // 79
4104class VkD3D12FenceSubmitInfoKHX {
4105 VkStructureType sType
4106 const void* pNext
4107 u32 waitSemaphoreValuesCount
4108 const u64* pWaitSemaphoreValues
4109 u32 signalSemaphoreValuesCount
4110 const u64* pSignalSemaphoreValues
4111}
4112
4113@extension("VK_KHX_external_semaphore_fd") // 80
4114class VkImportSemaphoreFdInfoKHX {
4115 VkStructureType sType
4116 const void* pNext
4117 VkSemaphore semaphore
4118 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType
4119 s32 fd
4120}
4121
4122@extension("VK_KHR_push_descriptor") // 81
4123class VkPhysicalDevicePushDescriptorPropertiesKHR {
4124 VkStructureType sType
4125 void* pNext
4126 u32 maxPushDescriptors
4127}
4128
4129@extension("VK_KHR_incremental_present") // 85
4130class VkRectLayerKHR {
4131 VkOffset2D offset
4132 VkExtent2D extent
4133 u32 layer
4134}
4135
4136@extension("VK_KHR_incremental_present") // 85
4137class VkPresentRegionKHR {
4138 u32 rectangleCount
4139 const VkRectLayerKHR* pRectangles
4140}
4141
4142@extension("VK_KHR_incremental_present") // 85
4143class VkPresentRegionsKHR {
4144 VkStructureType sType
4145 const void* pNext
4146 u32 swapchainCount
4147 const VkPresentRegionKHR* pRegions
4148}
4149
4150@extension("VK_KHR_descriptor_update_template") // 86
4151class VkDescriptorUpdateTemplateEntryKHR {
4152 u32 dstBinding
4153 u32 dstArrayElement
4154 u32 descriptorCount
4155 VkDescriptorType descriptorType
4156 platform.size_t offset
4157 platform.size_t stride
4158}
4159
4160@extension("VK_KHR_descriptor_update_template") // 86
4161class VkDescriptorUpdateTemplateCreateInfoKHR {
4162 VkStructureType sType
4163 void* pNext
4164 VkDescriptorUpdateTemplateCreateFlagsKHR flags
4165 u32 descriptorUpdateEntryCount
4166 const VkDescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries
4167 VkDescriptorUpdateTemplateTypeKHR templateType
4168 VkDescriptorSetLayout descriptorSetLayout
4169 VkPipelineBindPoint pipelineBindPoint
4170 VkPipelineLayout pipelineLayout
4171 u32 set
4172}
4173
4174@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004175class VkDeviceGeneratedCommandsFeaturesNVX {
4176 VkStructureType sType
4177 const void* pNext
4178 VkBool32 computeBindingPointSupport
4179}
4180
Jesse Hallad250842017-03-10 18:35:38 -08004181@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004182class VkDeviceGeneratedCommandsLimitsNVX {
4183 VkStructureType sType
4184 const void* pNext
4185 u32 maxIndirectCommandsLayoutTokenCount
4186 u32 maxObjectEntryCounts
4187 u32 minSequenceCountBufferOffsetAlignment
4188 u32 minSequenceIndexBufferOffsetAlignment
4189 u32 minCommandsTokenBufferOffsetAlignment
4190}
4191
Jesse Hallad250842017-03-10 18:35:38 -08004192@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004193class VkIndirectCommandsTokenNVX {
4194 VkIndirectCommandsTokenTypeNVX tokenType
4195 VkBuffer buffer
4196 VkDeviceSize offset
4197}
4198
Jesse Hallad250842017-03-10 18:35:38 -08004199@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004200class VkIndirectCommandsLayoutTokenNVX {
4201 VkIndirectCommandsTokenTypeNVX tokenType
4202 u32 bindingUnit
4203 u32 dynamicCount
4204 u32 divisor
4205}
4206
Jesse Hallad250842017-03-10 18:35:38 -08004207@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004208class VkIndirectCommandsLayoutCreateInfoNVX {
4209 VkStructureType sType
4210 const void* pNext
4211 VkPipelineBindPoint pipelineBindPoint
4212 VkIndirectCommandsLayoutUsageFlagsNVX flags
4213 u32 tokenCount
4214 const VkIndirectCommandsLayoutTokenNVX* pTokens
4215}
4216
Jesse Hallad250842017-03-10 18:35:38 -08004217@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004218class VkCmdProcessCommandsInfoNVX {
4219 VkStructureType sType
4220 const void* pNext
4221 VkObjectTableNVX objectTable
4222 VkIndirectCommandsLayoutNVX indirectCommandsLayout
4223 u32 indirectCommandsTokenCount
4224 const VkIndirectCommandsTokenNVX* pIndirectCommandsTokens
4225 u32 maxSequencesCount
4226 VkCommandBuffer targetCommandBuffer
4227 VkBuffer sequencesCountBuffer
4228 VkDeviceSize sequencesCountOffset
4229 VkBuffer sequencesIndexBuffer
4230 VkDeviceSize sequencesIndexOffset
4231}
4232
Jesse Hallad250842017-03-10 18:35:38 -08004233@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004234class VkCmdReserveSpaceForCommandsInfoNVX {
4235 VkStructureType sType
4236 const void* pNext
4237 VkObjectTableNVX objectTable
4238 VkIndirectCommandsLayoutNVX indirectCommandsLayout
4239 u32 maxSequencesCount
4240}
4241
Jesse Hallad250842017-03-10 18:35:38 -08004242@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004243class VkObjectTableCreateInfoNVX {
4244 VkStructureType sType
4245 const void* pNext
4246 u32 objectCount
4247 const VkObjectEntryTypeNVX* pObjectEntryTypes
4248 const u32* pObjectEntryCounts
4249 const VkObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags
4250 u32 maxUniformBuffersPerDescriptor
4251 u32 maxStorageBuffersPerDescriptor
4252 u32 maxStorageImagesPerDescriptor
4253 u32 maxSampledImagesPerDescriptor
4254 u32 maxPipelineLayouts
4255}
4256
Jesse Hallad250842017-03-10 18:35:38 -08004257@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004258class VkObjectTableEntryNVX {
4259 VkObjectEntryTypeNVX type
4260 VkObjectEntryUsageFlagsNVX flags
4261}
4262
Jesse Hallad250842017-03-10 18:35:38 -08004263@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004264class VkObjectTablePipelineEntryNVX {
4265 VkObjectEntryTypeNVX type
4266 VkObjectEntryUsageFlagsNVX flags
4267 VkPipeline pipeline
4268}
4269
Jesse Hallad250842017-03-10 18:35:38 -08004270@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004271class VkObjectTableDescriptorSetEntryNVX {
4272 VkObjectEntryTypeNVX type
4273 VkObjectEntryUsageFlagsNVX flags
4274 VkPipelineLayout pipelineLayout
4275 VkDescriptorSet descriptorSet
4276}
4277
Jesse Hallad250842017-03-10 18:35:38 -08004278@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004279class VkObjectTableVertexBufferEntryNVX {
4280 VkObjectEntryTypeNVX type
4281 VkObjectEntryUsageFlagsNVX flags
4282 VkBuffer buffer
4283}
4284
Jesse Hallad250842017-03-10 18:35:38 -08004285@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004286class VkObjectTableIndexBufferEntryNVX {
4287 VkObjectEntryTypeNVX type
4288 VkObjectEntryUsageFlagsNVX flags
4289 VkBuffer buffer
Jesse Hall77ad05b2017-03-10 22:02:20 -08004290 VkIndexType indexType
Chris Forbes289cb792016-12-30 15:03:55 +13004291}
4292
Jesse Hallad250842017-03-10 18:35:38 -08004293@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004294class VkObjectTablePushConstantEntryNVX {
4295 VkObjectEntryTypeNVX type
4296 VkObjectEntryUsageFlagsNVX flags
4297 VkPipelineLayout pipelineLayout
4298 VkShaderStageFlags stageFlags
4299}
4300
Jesse Hallad250842017-03-10 18:35:38 -08004301@extension("VK_NV_clip_space_w_scaling") // 88
4302class VkViewportWScalingNV {
4303 f32 xcoeff
4304 f32 ycoeff
Jesse Hall889cd9a2017-02-25 22:12:23 -08004305}
4306
Jesse Hallad250842017-03-10 18:35:38 -08004307@extension("VK_NV_clip_space_w_scaling") // 88
4308class VkPipelineViewportWScalingStateCreateInfoNV {
Jesse Hall889cd9a2017-02-25 22:12:23 -08004309 VkStructureType sType
4310 const void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08004311 VkBool32 viewportWScalingEnable
4312 u32 viewportCount
4313 const VkViewportWScalingNV* pViewportWScalings
Jesse Hall889cd9a2017-02-25 22:12:23 -08004314}
4315
Jesse Hallad250842017-03-10 18:35:38 -08004316@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08004317class VkSurfaceCapabilities2EXT {
4318 VkStructureType sType
4319 void* pNext
4320 u32 minImageCount
4321 u32 maxImageCount
4322 VkExtent2D currentExtent
4323 VkExtent2D minImageExtent
4324 VkExtent2D maxImageExtent
4325 u32 maxImageArrayLayers
4326 VkSurfaceTransformFlagsKHR supportedTransforms
4327 VkSurfaceTransformFlagBitsKHR currentTransform
4328 VkCompositeAlphaFlagsKHR supportedCompositeAlpha
4329 VkImageUsageFlags supportedUsageFlags
4330 VkSurfaceCounterFlagsEXT supportedSurfaceCounters
4331}
4332
Jesse Hallad250842017-03-10 18:35:38 -08004333@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08004334class VkDisplayPowerInfoEXT {
4335 VkStructureType sType
4336 const void* pNext
4337 VkDisplayPowerStateEXT powerState
4338}
4339
Jesse Hallad250842017-03-10 18:35:38 -08004340@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08004341class VkDeviceEventInfoEXT {
4342 VkStructureType sType
4343 const void* pNext
4344 VkDeviceEventTypeEXT deviceEvent
4345}
4346
Jesse Hallad250842017-03-10 18:35:38 -08004347@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08004348class VkDisplayEventInfoEXT {
4349 VkStructureType sType
4350 const void* pNext
4351 VkDisplayEventTypeEXT displayEvent
4352}
4353
Jesse Hallad250842017-03-10 18:35:38 -08004354@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08004355class VkSwapchainCounterCreateInfoEXT {
4356 VkStructureType sType
4357 const void* pNext
4358 VkSurfaceCounterFlagsEXT surfaceCounters
4359}
4360
Jesse Hallad250842017-03-10 18:35:38 -08004361@extension("VK_GOOGLE_display_timing") // 93
4362class VkRefreshCycleDurationGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004363 u64 refreshDuration
Jesse Hallad250842017-03-10 18:35:38 -08004364}
4365
4366@extension("VK_GOOGLE_display_timing") // 93
4367class VkPastPresentationTimingGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004368 u32 presentID
4369 u64 desiredPresentTime
4370 u64 actualPresentTime
4371 u64 earliestPresentTime
4372 u64 presentMargin
Jesse Hallad250842017-03-10 18:35:38 -08004373}
4374
4375@extension("VK_GOOGLE_display_timing") // 93
4376class VkPresentTimeGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004377 u32 presentID
4378 u64 desiredPresentTime
Jesse Hallad250842017-03-10 18:35:38 -08004379}
4380
4381@extension("VK_GOOGLE_display_timing") // 93
4382class VkPresentTimesInfoGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004383 VkStructureType sType
4384 const void* pNext
4385 u32 swapchainCount
4386 const VkPresentTimeGOOGLE* pTimes
Jesse Hallad250842017-03-10 18:35:38 -08004387}
4388
4389@extension("VK_NVX_multiview_per_view_attributes") // 98
4390class VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
4391 VkStructureType sType
4392 void* pNext
4393 VkBool32 perViewPositionAllComponents
4394}
4395
4396@extension("VK_NV_viewport_swizzle") // 99
4397class VkViewportSwizzleNV {
4398 VkViewportCoordinateSwizzleNV x
4399 VkViewportCoordinateSwizzleNV y
4400 VkViewportCoordinateSwizzleNV z
4401 VkViewportCoordinateSwizzleNV w
4402}
4403
4404@extension("VK_NV_viewport_swizzle") // 99
4405class VkPipelineViewportSwizzleStateCreateInfoNV {
4406 VkStructureType sType
4407 const void* pNext
4408 VkPipelineViewportSwizzleStateCreateFlagsNV flags
4409 u32 viewportCount
4410 const VkViewportSwizzleNV* pViewportSwizzles
4411}
4412
4413@extension("VK_EXT_discard_rectangles") // 100
4414class VkPhysicalDeviceDiscardRectanglePropertiesEXT {
4415 VkStructureType sType
Jesse Hallf5ad48b2017-03-20 13:09:19 -07004416 void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08004417 u32 maxDiscardRectangles
4418}
4419
4420@extension("VK_EXT_discard_rectangles") // 100
4421class VkPipelineDiscardRectangleStateCreateInfoEXT {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004422 VkStructureType sType
4423 const void* pNext
4424 VkPipelineDiscardRectangleStateCreateFlagsEXT flags
4425 VkDiscardRectangleModeEXT discardRectangleMode
4426 u32 discardRectangleCount
4427 const VkRect2D* pDiscardRectangles
Jesse Hallad250842017-03-10 18:35:38 -08004428}
4429
4430@extension("VK_EXT_hdr_metadata") // 106
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07004431class VkXYColorEXT {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004432 f32 x
4433 f32 y
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07004434}
4435
Jesse Hallad250842017-03-10 18:35:38 -08004436@extension("VK_EXT_hdr_metadata") // 106
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07004437class VkHdrMetadataEXT {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004438 VkStructureType sType
4439 const void* pNext
4440 VkXYColorEXT displayPrimaryRed
4441 VkXYColorEXT displayPrimaryGreen
4442 VkXYColorEXT displayPrimaryBlue
4443 VkXYColorEXT whitePoint
4444 f32 maxLuminance
4445 f32 minLuminance
4446 f32 maxContentLightLevel
4447 f32 maxFrameAverageLightLevel
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07004448}
4449
Jesse Hall05556b12017-05-18 17:40:25 -07004450@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbese2d3ee12017-03-16 16:10:15 +13004451class VkSharedPresentSurfaceCapabilitiesKHR {
4452 VkStructureType sType
4453 const void* pNext
4454 VkImageUsageFlags sharedPresentSupportedUsageFlags
4455}
4456
Jesse Hall05556b12017-05-18 17:40:25 -07004457@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13004458class VkPhysicalDeviceSurfaceInfo2KHR {
4459 VkStructureType sType
4460 const void* pNext
4461 VkSurfaceKHR surface
4462}
4463
Jesse Hall05556b12017-05-18 17:40:25 -07004464@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13004465class VkSurfaceCapabilities2KHR {
4466 VkStructureType sType
4467 void* pNext
4468 VkSurfaceCapabilitiesKHR surfaceCapabilities
4469}
4470
Jesse Hall05556b12017-05-18 17:40:25 -07004471@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13004472class VkSurfaceFormat2KHR {
4473 VkStructureType sType
4474 void* pNext
4475 VkSurfaceFormatKHR surfaceFormat
4476}
4477
Jesse Hallad250842017-03-10 18:35:38 -08004478@extension("VK_MVK_ios_surface") // 123
4479class VkIOSSurfaceCreateInfoMVK {
4480 VkStructureType sType
4481 const void* pNext
4482 VkIOSSurfaceCreateFlagsMVK flags
4483 const void* pView
4484}
4485
4486@extension("VK_MVK_macos_surface") // 124
4487class VkMacOSSurfaceCreateInfoMVK {
4488 VkStructureType sType
4489 const void* pNext
4490 VkMacOSSurfaceCreateFlagsMVK flags
4491 const void* pView
4492}
4493
Jesse Hall7ba0ac72017-07-07 17:13:23 -07004494@extension("VK_EXT_sampler_filter_minmax") // 131
4495class VkSamplerReductionModeCreateInfoEXT {
4496 VkStructureType sType
4497 const void* pNext
4498 VkSamplerReductionModeEXT reductionMode
4499}
4500
4501@extension("VK_EXT_sampler_filter_minmax") // 131
4502class VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
4503 VkStructureType sType
4504 void* pNext
4505 VkBool32 filterMinmaxSingleComponentFormats
4506 VkBool32 filterMinmaxImageComponentMapping
4507}
4508
4509@extension("VK_EXT_blend_operation_advanced") // 149
4510class VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
4511 VkStructureType sType
4512 void* pNext
4513 VkBool32 advancedBlendCoherentOperations
4514}
4515
4516@extension("VK_EXT_blend_operation_advanced") // 149
4517class VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
4518 VkStructureType sType
4519 void* pNext
4520 u32 advancedBlendMaxColorAttachments
4521 VkBool32 advancedBlendIndependentBlend
4522 VkBool32 advancedBlendNonPremultipliedSrcColor
4523 VkBool32 advancedBlendNonPremultipliedDstColor
4524 VkBool32 advancedBlendCorrelatedOverlap
4525 VkBool32 advancedBlendAllOperations
4526}
4527
4528@extension("VK_EXT_blend_operation_advanced") // 149
4529class VkPipelineColorBlendAdvancedStateCreateInfoEXT {
4530 VkStructureType sType
4531 const void* pNext
4532 VkBool32 srcPremultiplied
4533 VkBool32 dstPremultiplied
4534 VkBlendOverlapEXT blendOverlap
4535}
4536
4537@extension("VK_NV_fragment_coverage_to_color") // 150
4538class VkPipelineCoverageToColorStateCreateInfoNV {
4539 VkStructureType sType
4540 const void* pNext
4541 VkPipelineCoverageToColorStateCreateFlagsNV flags
4542 VkBool32 coverageToColorEnable
4543 u32 coverageToColorLocation
4544}
4545
4546@extension("VK_NV_framebuffer_mixed_samples") // 153
4547class VkPipelineCoverageModulationStateCreateInfoNV {
4548 VkStructureType sType
4549 const void* pNext
4550 VkPipelineCoverageModulationStateCreateFlagsNV flags
4551 VkCoverageModulationModeNV coverageModulationMode
4552 VkBool32 coverageModulationTableEnable
4553 u32 coverageModulationTableCount
4554 const f32* pCoverageModulationTable
4555}
4556
Jesse Halld27f6aa2015-08-15 17:58:48 -07004557////////////////
4558// Commands //
4559////////////////
4560
4561// Function pointers. TODO: add support for function pointers.
4562
4563@external type void* PFN_vkVoidFunction
4564@pfn cmd void vkVoidFunction() {
4565}
4566
Jesse Hall3fbc8562015-11-29 22:10:52 -08004567@external type void* PFN_vkAllocationFunction
4568@pfn cmd void* vkAllocationFunction(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004569 void* pUserData,
4570 platform.size_t size,
4571 platform.size_t alignment,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004572 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08004573 return ?
4574}
4575
Jesse Hall3fbc8562015-11-29 22:10:52 -08004576@external type void* PFN_vkReallocationFunction
4577@pfn cmd void* vkReallocationFunction(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004578 void* pUserData,
4579 void* pOriginal,
4580 platform.size_t size,
4581 platform.size_t alignment,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004582 VkSystemAllocationScope allocationScope) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004583 return ?
4584}
4585
4586@external type void* PFN_vkFreeFunction
4587@pfn cmd void vkFreeFunction(
4588 void* pUserData,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004589 void* pMemory) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004590}
4591
Jesse Hall3fbc8562015-11-29 22:10:52 -08004592@external type void* PFN_vkInternalAllocationNotification
4593@pfn cmd void vkInternalAllocationNotification(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004594 void* pUserData,
4595 platform.size_t size,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004596 VkInternalAllocationType allocationType,
4597 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08004598}
4599
4600@external type void* PFN_vkInternalFreeNotification
4601@pfn cmd void vkInternalFreeNotification(
4602 void* pUserData,
4603 platform.size_t size,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004604 VkInternalAllocationType allocationType,
4605 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08004606}
Jesse Halld27f6aa2015-08-15 17:58:48 -07004607
4608// Global functions
4609
4610@threadSafety("system")
4611cmd VkResult vkCreateInstance(
4612 const VkInstanceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004613 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004614 VkInstance* pInstance) {
4615 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO)
4616
4617 instance := ?
4618 pInstance[0] = instance
4619 State.Instances[instance] = new!InstanceObject()
4620
Jesse Hall3dd678a2016-01-08 21:52:01 -08004621 layers := pCreateInfo.ppEnabledLayerNames[0:pCreateInfo.enabledLayerCount]
4622 extensions := pCreateInfo.ppEnabledExtensionNames[0:pCreateInfo.enabledExtensionCount]
Jesse Halld27f6aa2015-08-15 17:58:48 -07004623
4624 return ?
4625}
4626
4627@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004628cmd void vkDestroyInstance(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004629 VkInstance instance,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004630 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004631 instanceObject := GetInstance(instance)
4632
4633 State.Instances[instance] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004634}
4635
4636@threadSafety("system")
4637cmd VkResult vkEnumeratePhysicalDevices(
4638 VkInstance instance,
4639 u32* pPhysicalDeviceCount,
4640 VkPhysicalDevice* pPhysicalDevices) {
4641 instanceObject := GetInstance(instance)
4642
4643 physicalDeviceCount := as!u32(?)
4644 pPhysicalDeviceCount[0] = physicalDeviceCount
4645 physicalDevices := pPhysicalDevices[0:physicalDeviceCount]
4646
4647 for i in (0 .. physicalDeviceCount) {
4648 physicalDevice := ?
4649 physicalDevices[i] = physicalDevice
4650 if !(physicalDevice in State.PhysicalDevices) {
4651 State.PhysicalDevices[physicalDevice] = new!PhysicalDeviceObject(instance: instance)
4652 }
4653 }
4654
4655 return ?
4656}
4657
4658cmd PFN_vkVoidFunction vkGetDeviceProcAddr(
4659 VkDevice device,
4660 const char* pName) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004661 if device != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004662 device := GetDevice(device)
4663 }
4664
4665 return ?
4666}
4667
4668cmd PFN_vkVoidFunction vkGetInstanceProcAddr(
4669 VkInstance instance,
4670 const char* pName) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004671 if instance != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004672 instanceObject := GetInstance(instance)
4673 }
4674
4675 return ?
4676}
4677
Jesse Hall606a54e2015-11-19 22:17:28 -08004678cmd void vkGetPhysicalDeviceProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004679 VkPhysicalDevice physicalDevice,
4680 VkPhysicalDeviceProperties* pProperties) {
4681 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4682
4683 properties := ?
4684 pProperties[0] = properties
Jesse Halld27f6aa2015-08-15 17:58:48 -07004685}
4686
Jesse Hall606a54e2015-11-19 22:17:28 -08004687cmd void vkGetPhysicalDeviceQueueFamilyProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004688 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004689 u32* pQueueFamilyPropertyCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004690 VkQueueFamilyProperties* pQueueFamilyProperties) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004691 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004692 // TODO: Figure out how to express fetch-count-or-properties
4693 // This version fails 'apic validate' with 'fence not allowed in
4694 // *semantic.Branch'. Other attempts have failed with the same or other
4695 // errors.
4696 // if pQueueFamilyProperties != null {
4697 // queuesProperties := pQueueFamilyProperties[0:pCount[0]]
4698 // for i in (0 .. pCount[0]) {
4699 // queueProperties := as!VkQueueFamilyProperties(?)
4700 // queuesProperties[i] = queueProperties
4701 // }
4702 // } else {
4703 // count := ?
4704 // pCount[0] = count
4705 // }
Jesse Halld27f6aa2015-08-15 17:58:48 -07004706}
4707
Jesse Hall606a54e2015-11-19 22:17:28 -08004708cmd void vkGetPhysicalDeviceMemoryProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004709 VkPhysicalDevice physicalDevice,
4710 VkPhysicalDeviceMemoryProperties* pMemoryProperties) {
4711 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4712
4713 memoryProperties := ?
4714 pMemoryProperties[0] = memoryProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07004715}
4716
Jesse Hall606a54e2015-11-19 22:17:28 -08004717cmd void vkGetPhysicalDeviceFeatures(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004718 VkPhysicalDevice physicalDevice,
4719 VkPhysicalDeviceFeatures* pFeatures) {
4720 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4721
4722 features := ?
4723 pFeatures[0] = features
Jesse Halld27f6aa2015-08-15 17:58:48 -07004724}
4725
Jesse Hall606a54e2015-11-19 22:17:28 -08004726cmd void vkGetPhysicalDeviceFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004727 VkPhysicalDevice physicalDevice,
4728 VkFormat format,
4729 VkFormatProperties* pFormatProperties) {
4730 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4731
4732 formatProperties := ?
4733 pFormatProperties[0] = formatProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07004734}
4735
Jesse Halla9e57032015-11-30 01:03:10 -08004736cmd VkResult vkGetPhysicalDeviceImageFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004737 VkPhysicalDevice physicalDevice,
4738 VkFormat format,
4739 VkImageType type,
4740 VkImageTiling tiling,
4741 VkImageUsageFlags usage,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004742 VkImageCreateFlags flags,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004743 VkImageFormatProperties* pImageFormatProperties) {
4744 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4745
4746 imageFormatProperties := ?
4747 pImageFormatProperties[0] = imageFormatProperties
Jesse Halla9e57032015-11-30 01:03:10 -08004748
4749 return ?
Jesse Halld27f6aa2015-08-15 17:58:48 -07004750}
4751
Jesse Halld27f6aa2015-08-15 17:58:48 -07004752
4753// Device functions
4754
4755@threadSafety("system")
4756cmd VkResult vkCreateDevice(
4757 VkPhysicalDevice physicalDevice,
4758 const VkDeviceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004759 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004760 VkDevice* pDevice) {
4761 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO)
4762 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4763
4764 device := ?
4765 pDevice[0] = device
4766 State.Devices[device] = new!DeviceObject(physicalDevice: physicalDevice)
4767
4768 return ?
4769}
4770
4771@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004772cmd void vkDestroyDevice(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004773 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004774 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004775 deviceObject := GetDevice(device)
4776
4777 State.Devices[device] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004778}
4779
4780
4781// Extension discovery functions
4782
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004783cmd VkResult vkEnumerateInstanceLayerProperties(
Jesse Hall03b6fe12015-11-24 12:44:21 -08004784 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004785 VkLayerProperties* pProperties) {
4786 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08004787 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07004788
4789 properties := pProperties[0:count]
4790 for i in (0 .. count) {
4791 property := ?
4792 properties[i] = property
4793 }
4794
4795 return ?
4796}
4797
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004798cmd VkResult vkEnumerateInstanceExtensionProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004799 const char* pLayerName,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004800 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004801 VkExtensionProperties* pProperties) {
4802 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08004803 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07004804
4805 properties := pProperties[0:count]
4806 for i in (0 .. count) {
4807 property := ?
4808 properties[i] = property
4809 }
4810
4811 return ?
4812}
4813
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004814cmd VkResult vkEnumerateDeviceLayerProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004815 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004816 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004817 VkLayerProperties* pProperties) {
4818 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4819 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08004820 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07004821
4822 properties := pProperties[0:count]
4823 for i in (0 .. count) {
4824 property := ?
4825 properties[i] = property
4826 }
4827
4828 return ?
4829}
4830
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004831cmd VkResult vkEnumerateDeviceExtensionProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004832 VkPhysicalDevice physicalDevice,
4833 const char* pLayerName,
Jesse Hall03b6fe12015-11-24 12:44:21 -08004834 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004835 VkExtensionProperties* pProperties) {
4836 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
4837
4838 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08004839 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07004840
4841 properties := pProperties[0:count]
4842 for i in (0 .. count) {
4843 property := ?
4844 properties[i] = property
4845 }
4846
4847 return ?
4848}
4849
4850
4851// Queue functions
4852
4853@threadSafety("system")
Jesse Hall606a54e2015-11-19 22:17:28 -08004854cmd void vkGetDeviceQueue(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004855 VkDevice device,
4856 u32 queueFamilyIndex,
4857 u32 queueIndex,
4858 VkQueue* pQueue) {
4859 deviceObject := GetDevice(device)
4860
4861 queue := ?
4862 pQueue[0] = queue
4863
4864 if !(queue in State.Queues) {
4865 State.Queues[queue] = new!QueueObject(device: device)
4866 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07004867}
4868
4869@threadSafety("app")
4870cmd VkResult vkQueueSubmit(
4871 VkQueue queue,
Jesse Halla366a512015-11-19 22:30:07 -08004872 u32 submitCount,
Jesse Hallb00daad2015-11-29 19:46:20 -08004873 const VkSubmitInfo* pSubmits,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004874 VkFence fence) {
4875 queueObject := GetQueue(queue)
4876
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004877 if fence != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004878 fenceObject := GetFence(fence)
4879 assert(fenceObject.device == queueObject.device)
4880 }
4881
Jesse Hall3fbc8562015-11-29 22:10:52 -08004882 // commandBuffers := pcommandBuffers[0:commandBufferCount]
4883 // for i in (0 .. commandBufferCount) {
4884 // commandBuffer := commandBuffers[i]
4885 // commandBufferObject := GetCommandBuffer(commandBuffer)
4886 // assert(commandBufferObject.device == queueObject.device)
Jesse Halla366a512015-11-19 22:30:07 -08004887 //
Jesse Hall3fbc8562015-11-29 22:10:52 -08004888 // validate("QueueCheck", commandBufferObject.queueFlags in queueObject.flags,
4889 // "vkQueueSubmit: enqueued commandBuffer requires missing queue capabilities.")
Jesse Halla366a512015-11-19 22:30:07 -08004890 // }
Jesse Halld27f6aa2015-08-15 17:58:48 -07004891
4892 return ?
4893}
4894
4895@threadSafety("system")
4896cmd VkResult vkQueueWaitIdle(
4897 VkQueue queue) {
4898 queueObject := GetQueue(queue)
4899
4900 return ?
4901}
4902
4903@threadSafety("system")
4904cmd VkResult vkDeviceWaitIdle(
4905 VkDevice device) {
4906 deviceObject := GetDevice(device)
4907
4908 return ?
4909}
4910
4911
4912// Memory functions
4913
4914@threadSafety("system")
Jesse Hall3fbc8562015-11-29 22:10:52 -08004915cmd VkResult vkAllocateMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004916 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004917 const VkMemoryAllocateInfo* pAllocateInfo,
4918 const VkAllocationCallbacks* pAllocator,
4919 VkDeviceMemory* pMemory) {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08004920 assert(pAllocateInfo.sType == VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004921 deviceObject := GetDevice(device)
4922
Jesse Hall3fbc8562015-11-29 22:10:52 -08004923 memory := ?
4924 pMemory[0] = memory
4925 State.DeviceMemories[memory] = new!DeviceMemoryObject(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004926 device: device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004927 allocationSize: pAllocateInfo[0].allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004928
4929 return ?
4930}
4931
4932@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004933cmd void vkFreeMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004934 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004935 VkDeviceMemory memory,
4936 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004937 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08004938 memoryObject := GetDeviceMemory(memory)
4939 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004940
4941 // Check that no objects are still bound before freeing.
Jesse Hall3fbc8562015-11-29 22:10:52 -08004942 validate("MemoryCheck", len(memoryObject.boundObjects) == 0,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004943 "vkFreeMemory: objects still bound")
Jesse Hall3fbc8562015-11-29 22:10:52 -08004944 validate("MemoryCheck", len(memoryObject.boundCommandBuffers) == 0,
4945 "vkFreeMemory: commandBuffers still bound")
4946 State.DeviceMemories[memory] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07004947}
4948
4949@threadSafety("app")
4950cmd VkResult vkMapMemory(
4951 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004952 VkDeviceMemory memory,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004953 VkDeviceSize offset,
4954 VkDeviceSize size,
Jesse Halld27f6aa2015-08-15 17:58:48 -07004955 VkMemoryMapFlags flags,
4956 void** ppData) {
4957 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08004958 memoryObject := GetDeviceMemory(memory)
4959 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004960
4961 assert(flags == as!VkMemoryMapFlags(0))
Jesse Hall3fbc8562015-11-29 22:10:52 -08004962 assert((offset + size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004963
4964 return ?
4965}
4966
4967@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004968cmd void vkUnmapMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07004969 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004970 VkDeviceMemory memory) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004971 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08004972 memoryObject := GetDeviceMemory(memory)
4973 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004974}
4975
4976cmd VkResult vkFlushMappedMemoryRanges(
4977 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004978 u32 memoryRangeCount
4979 const VkMappedMemoryRange* pMemoryRanges) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004980 deviceObject := GetDevice(device)
4981
Jesse Hall3fbc8562015-11-29 22:10:52 -08004982 memoryRanges := pMemoryRanges[0:memoryRangeCount]
4983 for i in (0 .. memoryRangeCount) {
4984 memoryRange := memoryRanges[i]
4985 memoryObject := GetDeviceMemory(memoryRange.memory)
4986 assert(memoryObject.device == device)
4987 assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004988 }
4989
4990 return ?
4991}
4992
4993cmd VkResult vkInvalidateMappedMemoryRanges(
4994 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08004995 u32 memoryRangeCount,
4996 const VkMappedMemoryRange* pMemoryRanges) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004997 deviceObject := GetDevice(device)
4998
Jesse Hall3fbc8562015-11-29 22:10:52 -08004999 memoryRanges := pMemoryRanges[0:memoryRangeCount]
5000 for i in (0 .. memoryRangeCount) {
5001 memoryRange := memoryRanges[i]
5002 memoryObject := GetDeviceMemory(memoryRange.memory)
5003 assert(memoryObject.device == device)
5004 assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005005 }
5006
5007 return ?
5008}
5009
5010
5011// Memory management API functions
5012
Jesse Hall606a54e2015-11-19 22:17:28 -08005013cmd void vkGetDeviceMemoryCommitment(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005014 VkDevice device,
5015 VkDeviceMemory memory,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005016 VkDeviceSize* pCommittedMemoryInBytes) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005017 deviceObject := GetDevice(device)
5018
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005019 if memory != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005020 memoryObject := GetDeviceMemory(memory)
5021 assert(memoryObject.device == device)
5022 }
5023
5024 committedMemoryInBytes := ?
5025 pCommittedMemoryInBytes[0] = committedMemoryInBytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07005026}
5027
Jesse Hall606a54e2015-11-19 22:17:28 -08005028cmd void vkGetBufferMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005029 VkDevice device,
5030 VkBuffer buffer,
5031 VkMemoryRequirements* pMemoryRequirements) {
5032 deviceObject := GetDevice(device)
5033 bufferObject := GetBuffer(buffer)
5034 assert(bufferObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005035}
5036
5037cmd VkResult vkBindBufferMemory(
5038 VkDevice device,
5039 VkBuffer buffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005040 VkDeviceMemory memory,
5041 VkDeviceSize memoryOffset) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005042 deviceObject := GetDevice(device)
5043 bufferObject := GetBuffer(buffer)
5044 assert(bufferObject.device == device)
5045
5046 // Unbind buffer from previous memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005047 if bufferObject.memory != NULL_HANDLE {
5048 memoryObject := GetDeviceMemory(bufferObject.memory)
5049 memoryObject.boundObjects[as!u64(buffer)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005050 }
5051
5052 // Bind buffer to given memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005053 if memory != NULL_HANDLE {
5054 memoryObject := GetDeviceMemory(memory)
5055 assert(memoryObject.device == device)
5056 memoryObject.boundObjects[as!u64(buffer)] = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07005057 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08005058 bufferObject.memory = memory
5059 bufferObject.memoryOffset = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07005060
5061 return ?
5062}
5063
Jesse Hall606a54e2015-11-19 22:17:28 -08005064cmd void vkGetImageMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005065 VkDevice device,
5066 VkImage image,
5067 VkMemoryRequirements* pMemoryRequirements) {
5068 deviceObject := GetDevice(device)
5069 imageObject := GetImage(image)
5070 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005071}
5072
5073cmd VkResult vkBindImageMemory(
5074 VkDevice device,
5075 VkImage image,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005076 VkDeviceMemory memory,
5077 VkDeviceSize memoryOffset) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005078 deviceObject := GetDevice(device)
5079 imageObject := GetImage(image)
5080 assert(imageObject.device == device)
5081
5082 // Unbind image from previous memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005083 if imageObject.memory != NULL_HANDLE {
5084 memoryObject := GetDeviceMemory(imageObject.memory)
5085 memoryObject.boundObjects[as!u64(image)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005086 }
5087
5088 // Bind image to given memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005089 if memory != NULL_HANDLE {
5090 memoryObject := GetDeviceMemory(memory)
5091 assert(memoryObject.device == device)
5092 memoryObject.boundObjects[as!u64(image)] = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07005093 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08005094 imageObject.memory = memory
5095 imageObject.memoryOffset = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07005096
5097 return ?
5098}
5099
Jesse Hall606a54e2015-11-19 22:17:28 -08005100cmd void vkGetImageSparseMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005101 VkDevice device,
5102 VkImage image,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005103 u32* pSparseMemoryRequirementCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005104 VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
5105 deviceObject := GetDevice(device)
5106 imageObject := GetImage(image)
5107 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005108}
5109
Jesse Hall606a54e2015-11-19 22:17:28 -08005110cmd void vkGetPhysicalDeviceSparseImageFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005111 VkPhysicalDevice physicalDevice,
5112 VkFormat format,
5113 VkImageType type,
Jesse Hall091ed9e2015-11-30 00:55:29 -08005114 VkSampleCountFlagBits samples,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005115 VkImageUsageFlags usage,
5116 VkImageTiling tiling,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005117 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005118 VkSparseImageFormatProperties* pProperties) {
5119 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005120}
5121
Jesse Halla6429252015-11-29 18:59:42 -08005122cmd VkResult vkQueueBindSparse(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005123 VkQueue queue,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005124 u32 bindInfoCount,
Jesse Halla6429252015-11-29 18:59:42 -08005125 const VkBindSparseInfo* pBindInfo,
5126 VkFence fence) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005127 queueObject := GetQueue(queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005128
5129 return ?
5130}
5131
5132
5133// Fence functions
5134
5135@threadSafety("system")
5136cmd VkResult vkCreateFence(
5137 VkDevice device,
5138 const VkFenceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005139 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005140 VkFence* pFence) {
5141 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FENCE_CREATE_INFO)
5142 deviceObject := GetDevice(device)
5143
5144 fence := ?
5145 pFence[0] = fence
5146 State.Fences[fence] = new!FenceObject(
Jesse Halld8bade02015-11-24 10:24:18 -08005147 device: device, signaled: (pCreateInfo.flags == as!VkFenceCreateFlags(VK_FENCE_CREATE_SIGNALED_BIT)))
Jesse Halld27f6aa2015-08-15 17:58:48 -07005148
5149 return ?
5150}
5151
5152@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005153cmd void vkDestroyFence(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005154 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005155 VkFence fence,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005156 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005157 deviceObject := GetDevice(device)
5158 fenceObject := GetFence(fence)
5159 assert(fenceObject.device == device)
5160
5161 State.Fences[fence] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005162}
5163
5164@threadSafety("system")
5165cmd VkResult vkResetFences(
5166 VkDevice device,
5167 u32 fenceCount,
5168 const VkFence* pFences) {
5169 deviceObject := GetDevice(device)
5170
5171 fences := pFences[0:fenceCount]
5172 for i in (0 .. fenceCount) {
5173 fence := fences[i]
5174 fenceObject := GetFence(fence)
5175 assert(fenceObject.device == device)
5176 fenceObject.signaled = false
5177 }
5178
5179 return ?
5180}
5181
5182@threadSafety("system")
5183cmd VkResult vkGetFenceStatus(
5184 VkDevice device,
5185 VkFence fence) {
5186 deviceObject := GetDevice(device)
5187 fenceObject := GetFence(fence)
5188 assert(fenceObject.device == device)
5189
5190 return ?
5191}
5192
5193@threadSafety("system")
5194cmd VkResult vkWaitForFences(
5195 VkDevice device,
5196 u32 fenceCount,
5197 const VkFence* pFences,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005198 VkBool32 waitAll,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005199 u64 timeout) { /// timeout in nanoseconds
5200 deviceObject := GetDevice(device)
5201
5202 fences := pFences[0:fenceCount]
5203 for i in (0 .. fenceCount) {
5204 fence := fences[i]
5205 fenceObject := GetFence(fence)
5206 assert(fenceObject.device == device)
5207 }
5208
5209 return ?
5210}
5211
5212
5213// Queue semaphore functions
5214
5215@threadSafety("system")
5216cmd VkResult vkCreateSemaphore(
5217 VkDevice device,
5218 const VkSemaphoreCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005219 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005220 VkSemaphore* pSemaphore) {
5221 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO)
5222 deviceObject := GetDevice(device)
5223
5224 semaphore := ?
5225 pSemaphore[0] = semaphore
5226 State.Semaphores[semaphore] = new!SemaphoreObject(device: device)
5227
5228 return ?
5229}
5230
5231@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005232cmd void vkDestroySemaphore(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005233 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005234 VkSemaphore semaphore,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005235 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005236 deviceObject := GetDevice(device)
5237 semaphoreObject := GetSemaphore(semaphore)
5238 assert(semaphoreObject.device == device)
5239
5240 State.Semaphores[semaphore] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005241}
5242
Jesse Halld27f6aa2015-08-15 17:58:48 -07005243
5244// Event functions
5245
5246@threadSafety("system")
5247cmd VkResult vkCreateEvent(
5248 VkDevice device,
5249 const VkEventCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005250 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005251 VkEvent* pEvent) {
5252 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_EVENT_CREATE_INFO)
5253 deviceObject := GetDevice(device)
5254
5255 event := ?
5256 pEvent[0] = event
5257 State.Events[event] = new!EventObject(device: device)
5258
5259 return ?
5260}
5261
5262@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005263cmd void vkDestroyEvent(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005264 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005265 VkEvent event,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005266 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005267 deviceObject := GetDevice(device)
5268 eventObject := GetEvent(event)
5269 assert(eventObject.device == device)
5270
5271 State.Events[event] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005272}
5273
5274@threadSafety("system")
5275cmd VkResult vkGetEventStatus(
5276 VkDevice device,
5277 VkEvent event) {
5278 deviceObject := GetDevice(device)
5279 eventObject := GetEvent(event)
5280 assert(eventObject.device == device)
5281
5282 return ?
5283}
5284
5285@threadSafety("system")
5286cmd VkResult vkSetEvent(
5287 VkDevice device,
5288 VkEvent event) {
5289 deviceObject := GetDevice(device)
5290 eventObject := GetEvent(event)
5291 assert(eventObject.device == device)
5292
5293 return ?
5294}
5295
5296@threadSafety("system")
5297cmd VkResult vkResetEvent(
5298 VkDevice device,
5299 VkEvent event) {
5300 deviceObject := GetDevice(device)
5301 eventObject := GetEvent(event)
5302 assert(eventObject.device == device)
5303
5304 return ?
5305}
5306
5307
5308// Query functions
5309
5310@threadSafety("system")
5311cmd VkResult vkCreateQueryPool(
5312 VkDevice device,
5313 const VkQueryPoolCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005314 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005315 VkQueryPool* pQueryPool) {
5316 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO)
5317 deviceObject := GetDevice(device)
5318
5319 queryPool := ?
5320 pQueryPool[0] = queryPool
5321 State.QueryPools[queryPool] = new!QueryPoolObject(device: device)
5322
5323 return ?
5324}
5325
5326@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005327cmd void vkDestroyQueryPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005328 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005329 VkQueryPool queryPool,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005330 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005331 deviceObject := GetDevice(device)
5332 queryPoolObject := GetQueryPool(queryPool)
5333 assert(queryPoolObject.device == device)
5334
5335 State.QueryPools[queryPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005336}
5337
5338@threadSafety("system")
5339cmd VkResult vkGetQueryPoolResults(
5340 VkDevice device,
5341 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08005342 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005343 u32 queryCount,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005344 platform.size_t dataSize,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005345 void* pData,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005346 VkDeviceSize stride,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005347 VkQueryResultFlags flags) {
5348 deviceObject := GetDevice(device)
5349 queryPoolObject := GetQueryPool(queryPool)
5350 assert(queryPoolObject.device == device)
5351
Jesse Halld27f6aa2015-08-15 17:58:48 -07005352 data := pData[0:dataSize]
5353
5354 return ?
5355}
5356
5357// Buffer functions
5358
5359@threadSafety("system")
5360cmd VkResult vkCreateBuffer(
5361 VkDevice device,
5362 const VkBufferCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005363 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005364 VkBuffer* pBuffer) {
5365 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO)
5366 deviceObject := GetDevice(device)
5367
5368 buffer := ?
5369 pBuffer[0] = buffer
5370 State.Buffers[buffer] = new!BufferObject(device: device)
5371
5372 return ?
5373}
5374
5375@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005376cmd void vkDestroyBuffer(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005377 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005378 VkBuffer buffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005379 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005380 deviceObject := GetDevice(device)
5381 bufferObject := GetBuffer(buffer)
5382 assert(bufferObject.device == device)
5383
Jesse Hall3fbc8562015-11-29 22:10:52 -08005384 assert(bufferObject.memory == 0)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005385 State.Buffers[buffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005386}
5387
5388
5389// Buffer view functions
5390
5391@threadSafety("system")
5392cmd VkResult vkCreateBufferView(
5393 VkDevice device,
5394 const VkBufferViewCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005395 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005396 VkBufferView* pView) {
5397 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO)
5398 deviceObject := GetDevice(device)
5399
5400 bufferObject := GetBuffer(pCreateInfo.buffer)
5401 assert(bufferObject.device == device)
5402
5403 view := ?
5404 pView[0] = view
5405 State.BufferViews[view] = new!BufferViewObject(device: device, buffer: pCreateInfo.buffer)
5406
5407 return ?
5408}
5409
5410@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005411cmd void vkDestroyBufferView(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005412 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005413 VkBufferView bufferView,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005414 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005415 deviceObject := GetDevice(device)
5416 bufferViewObject := GetBufferView(bufferView)
5417 assert(bufferViewObject.device == device)
5418
5419 State.BufferViews[bufferView] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005420}
5421
5422
5423// Image functions
5424
5425@threadSafety("system")
5426cmd VkResult vkCreateImage(
5427 VkDevice device,
5428 const VkImageCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005429 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005430 VkImage* pImage) {
5431 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO)
5432 deviceObject := GetDevice(device)
5433
5434 image := ?
5435 pImage[0] = image
5436 State.Images[image] = new!ImageObject(device: device)
5437
5438 return ?
5439}
5440
5441@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005442cmd void vkDestroyImage(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005443 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005444 VkImage image,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005445 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005446 deviceObject := GetDevice(device)
5447 imageObject := GetImage(image)
5448 assert(imageObject.device == device)
5449
Jesse Hall3fbc8562015-11-29 22:10:52 -08005450 assert(imageObject.memory == 0)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005451 State.Images[image] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005452}
5453
Jesse Hall606a54e2015-11-19 22:17:28 -08005454cmd void vkGetImageSubresourceLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005455 VkDevice device,
5456 VkImage image,
5457 const VkImageSubresource* pSubresource,
5458 VkSubresourceLayout* pLayout) {
5459 deviceObject := GetDevice(device)
5460 imageObject := GetImage(image)
5461 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005462}
5463
5464
5465// Image view functions
5466
5467@threadSafety("system")
5468cmd VkResult vkCreateImageView(
5469 VkDevice device,
5470 const VkImageViewCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005471 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005472 VkImageView* pView) {
5473 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO)
5474 deviceObject := GetDevice(device)
5475
5476 imageObject := GetImage(pCreateInfo.image)
5477 assert(imageObject.device == device)
5478
5479 view := ?
5480 pView[0] = view
5481 State.ImageViews[view] = new!ImageViewObject(device: device, image: pCreateInfo.image)
5482
5483 return ?
5484}
5485
5486@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005487cmd void vkDestroyImageView(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005488 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005489 VkImageView imageView,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005490 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005491 deviceObject := GetDevice(device)
5492 imageViewObject := GetImageView(imageView)
5493 assert(imageViewObject.device == device)
5494
5495 State.ImageViews[imageView] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005496}
5497
5498
5499// Shader functions
5500
5501cmd VkResult vkCreateShaderModule(
5502 VkDevice device,
5503 const VkShaderModuleCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005504 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005505 VkShaderModule* pShaderModule) {
5506 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO)
5507 deviceObject := GetDevice(device)
5508
5509 shaderModule := ?
5510 pShaderModule[0] = shaderModule
5511 State.ShaderModules[shaderModule] = new!ShaderModuleObject(device: device)
5512
5513 return ?
5514}
5515
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005516cmd void vkDestroyShaderModule(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005517 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005518 VkShaderModule shaderModule,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005519 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005520 deviceObject := GetDevice(device)
5521 shaderModuleObject := GetShaderModule(shaderModule)
5522 assert(shaderModuleObject.device == device)
5523
5524 State.ShaderModules[shaderModule] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005525}
5526
Jesse Halld27f6aa2015-08-15 17:58:48 -07005527
5528// Pipeline functions
5529
5530cmd VkResult vkCreatePipelineCache(
5531 VkDevice device,
5532 const VkPipelineCacheCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005533 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005534 VkPipelineCache* pPipelineCache) {
5535 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO)
5536 deviceObject := GetDevice(device)
5537
5538 pipelineCache := ?
5539 pPipelineCache[0] = pipelineCache
5540 State.PipelineCaches[pipelineCache] = new!PipelineCacheObject(device: device)
5541
5542 return ?
5543}
5544
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005545cmd void vkDestroyPipelineCache(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005546 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005547 VkPipelineCache pipelineCache,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005548 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005549 deviceObject := GetDevice(device)
5550 pipelineCacheObject := GetPipelineCache(pipelineCache)
5551 assert(pipelineCacheObject.device == device)
5552
5553 State.PipelineCaches[pipelineCache] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005554}
5555
Jesse Halld27f6aa2015-08-15 17:58:48 -07005556cmd VkResult vkGetPipelineCacheData(
5557 VkDevice device,
5558 VkPipelineCache pipelineCache,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005559 platform.size_t* pDataSize,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005560 void* pData) {
5561 deviceObject := GetDevice(device)
5562 pipelineCacheObject := GetPipelineCache(pipelineCache)
5563 assert(pipelineCacheObject.device == device)
5564
5565 return ?
5566}
5567
5568cmd VkResult vkMergePipelineCaches(
5569 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005570 VkPipelineCache dstCache,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005571 u32 srcCacheCount,
5572 const VkPipelineCache* pSrcCaches) {
5573 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005574 dstCacheObject := GetPipelineCache(dstCache)
5575 assert(dstCacheObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005576
5577 srcCaches := pSrcCaches[0:srcCacheCount]
5578 for i in (0 .. srcCacheCount) {
5579 srcCache := srcCaches[i]
5580 srcCacheObject := GetPipelineCache(srcCache)
5581 assert(srcCacheObject.device == device)
5582 }
5583
5584 return ?
5585}
5586
5587cmd VkResult vkCreateGraphicsPipelines(
5588 VkDevice device,
5589 VkPipelineCache pipelineCache,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005590 u32 createInfoCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005591 const VkGraphicsPipelineCreateInfo* pCreateInfos,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005592 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005593 VkPipeline* pPipelines) {
5594 deviceObject := GetDevice(device)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005595 if pipelineCache != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005596 pipelineCacheObject := GetPipelineCache(pipelineCache)
5597 assert(pipelineCacheObject.device == device)
5598 }
5599
Jesse Hall03b6fe12015-11-24 12:44:21 -08005600 createInfos := pCreateInfos[0:createInfoCount]
5601 pipelines := pPipelines[0:createInfoCount]
5602 for i in (0 .. createInfoCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005603 pipeline := ?
5604 pipelines[i] = pipeline
5605 State.Pipelines[pipeline] = new!PipelineObject(device: device)
5606 }
5607
5608 return ?
5609}
5610
5611cmd VkResult vkCreateComputePipelines(
5612 VkDevice device,
5613 VkPipelineCache pipelineCache,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005614 u32 createInfoCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005615 const VkComputePipelineCreateInfo* pCreateInfos,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005616 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005617 VkPipeline* pPipelines) {
5618 deviceObject := GetDevice(device)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005619 if pipelineCache != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005620 pipelineCacheObject := GetPipelineCache(pipelineCache)
5621 assert(pipelineCacheObject.device == device)
5622 }
5623
Jesse Hall03b6fe12015-11-24 12:44:21 -08005624 createInfos := pCreateInfos[0:createInfoCount]
5625 pipelines := pPipelines[0:createInfoCount]
5626 for i in (0 .. createInfoCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005627 pipeline := ?
5628 pipelines[i] = pipeline
5629 State.Pipelines[pipeline] = new!PipelineObject(device: device)
5630 }
5631
5632 return ?
5633}
5634
5635@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005636cmd void vkDestroyPipeline(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005637 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005638 VkPipeline pipeline,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005639 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005640 deviceObject := GetDevice(device)
5641 pipelineObjects := GetPipeline(pipeline)
5642 assert(pipelineObjects.device == device)
5643
5644 State.Pipelines[pipeline] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005645}
5646
5647
5648// Pipeline layout functions
5649
5650@threadSafety("system")
5651cmd VkResult vkCreatePipelineLayout(
5652 VkDevice device,
5653 const VkPipelineLayoutCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005654 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005655 VkPipelineLayout* pPipelineLayout) {
5656 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO)
5657 deviceObject := GetDevice(device)
5658
5659 pipelineLayout := ?
5660 pPipelineLayout[0] = pipelineLayout
5661 State.PipelineLayouts[pipelineLayout] = new!PipelineLayoutObject(device: device)
5662
5663 return ?
5664}
5665
5666@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005667cmd void vkDestroyPipelineLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005668 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005669 VkPipelineLayout pipelineLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005670 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005671 deviceObject := GetDevice(device)
5672 pipelineLayoutObjects := GetPipelineLayout(pipelineLayout)
5673 assert(pipelineLayoutObjects.device == device)
5674
5675 State.PipelineLayouts[pipelineLayout] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005676}
5677
5678
5679// Sampler functions
5680
5681@threadSafety("system")
5682cmd VkResult vkCreateSampler(
5683 VkDevice device,
5684 const VkSamplerCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005685 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005686 VkSampler* pSampler) {
5687 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO)
5688 deviceObject := GetDevice(device)
5689
5690 sampler := ?
5691 pSampler[0] = sampler
5692 State.Samplers[sampler] = new!SamplerObject(device: device)
5693
5694 return ?
5695}
5696
5697@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005698cmd void vkDestroySampler(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005699 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005700 VkSampler sampler,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005701 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005702 deviceObject := GetDevice(device)
5703 samplerObject := GetSampler(sampler)
5704 assert(samplerObject.device == device)
5705
5706 State.Samplers[sampler] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005707}
5708
5709
5710// Descriptor set functions
5711
5712@threadSafety("system")
5713cmd VkResult vkCreateDescriptorSetLayout(
5714 VkDevice device,
5715 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005716 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005717 VkDescriptorSetLayout* pSetLayout) {
5718 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO)
5719 deviceObject := GetDevice(device)
5720
5721 setLayout := ?
5722 pSetLayout[0] = setLayout
5723 State.DescriptorSetLayouts[setLayout] = new!DescriptorSetLayoutObject(device: device)
5724
5725 return ?
5726}
5727
5728@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005729cmd void vkDestroyDescriptorSetLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005730 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005731 VkDescriptorSetLayout descriptorSetLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005732 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005733 deviceObject := GetDevice(device)
5734 descriptorSetLayoutObject := GetDescriptorSetLayout(descriptorSetLayout)
5735 assert(descriptorSetLayoutObject.device == device)
5736
5737 State.DescriptorSetLayouts[descriptorSetLayout] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005738}
5739
5740@threadSafety("system")
5741cmd VkResult vkCreateDescriptorPool(
5742 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005743 const VkDescriptorPoolCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005744 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005745 VkDescriptorPool* pDescriptorPool) {
5746 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO)
5747 deviceObject := GetDevice(device)
5748
5749 descriptorPool := ?
5750 pDescriptorPool[0] = descriptorPool
5751 State.DescriptorPools[descriptorPool] = new!DescriptorPoolObject(device: device)
5752
5753 return ?
5754}
5755
5756@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005757cmd void vkDestroyDescriptorPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005758 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005759 VkDescriptorPool descriptorPool,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005760 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005761 deviceObject := GetDevice(device)
5762 descriptorPoolObject := GetDescriptorPool(descriptorPool)
5763 assert(descriptorPoolObject.device == device)
5764
5765 State.DescriptorPools[descriptorPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005766}
5767
5768@threadSafety("app")
5769cmd VkResult vkResetDescriptorPool(
5770 VkDevice device,
Jesse Hallfbf97b02015-11-20 14:17:03 -08005771 VkDescriptorPool descriptorPool,
5772 VkDescriptorPoolResetFlags flags) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005773 deviceObject := GetDevice(device)
5774 descriptorPoolObject := GetDescriptorPool(descriptorPool)
5775 assert(descriptorPoolObject.device == device)
5776
5777 return ?
5778}
5779
5780@threadSafety("app")
Jesse Hall3fbc8562015-11-29 22:10:52 -08005781cmd VkResult vkAllocateDescriptorSets(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005782 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005783 const VkDescriptorSetAllocateInfo* pAllocateInfo,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005784 VkDescriptorSet* pDescriptorSets) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005785 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005786 allocInfo := pAllocateInfo[0]
Jesse Hallfbf97b02015-11-20 14:17:03 -08005787 descriptorPoolObject := GetDescriptorPool(allocInfo.descriptorPool)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005788
Jesse Hall03b6fe12015-11-24 12:44:21 -08005789 setLayouts := allocInfo.pSetLayouts[0:allocInfo.setCount]
5790 for i in (0 .. allocInfo.setCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005791 setLayout := setLayouts[i]
5792 setLayoutObject := GetDescriptorSetLayout(setLayout)
5793 assert(setLayoutObject.device == device)
5794 }
5795
Jesse Hall03b6fe12015-11-24 12:44:21 -08005796 descriptorSets := pDescriptorSets[0:allocInfo.setCount]
5797 for i in (0 .. allocInfo.setCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005798 descriptorSet := ?
5799 descriptorSets[i] = descriptorSet
5800 State.DescriptorSets[descriptorSet] = new!DescriptorSetObject(device: device)
5801 }
5802
5803 return ?
5804}
5805
Jesse Hallf09c6b12015-08-15 19:54:28 -07005806cmd VkResult vkFreeDescriptorSets(
5807 VkDevice device,
5808 VkDescriptorPool descriptorPool,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005809 u32 descriptorSetCount,
Jesse Hallf09c6b12015-08-15 19:54:28 -07005810 const VkDescriptorSet* pDescriptorSets) {
5811 deviceObject := GetDevice(device)
5812 descriptorPoolObject := GetDescriptorPool(descriptorPool)
5813
Jesse Hall03b6fe12015-11-24 12:44:21 -08005814 descriptorSets := pDescriptorSets[0:descriptorSetCount]
5815 for i in (0 .. descriptorSetCount) {
Jesse Hallf09c6b12015-08-15 19:54:28 -07005816 descriptorSet := descriptorSets[i]
5817 descriptorSetObject := GetDescriptorSet(descriptorSet)
5818 assert(descriptorSetObject.device == device)
5819 State.DescriptorSets[descriptorSet] = null
5820 }
5821
5822 return ?
5823}
5824
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005825cmd void vkUpdateDescriptorSets(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005826 VkDevice device,
Jesse Hallb00daad2015-11-29 19:46:20 -08005827 u32 descriptorWriteCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005828 const VkWriteDescriptorSet* pDescriptorWrites,
Jesse Hallb00daad2015-11-29 19:46:20 -08005829 u32 descriptorCopyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005830 const VkCopyDescriptorSet* pDescriptorCopies) {
5831 deviceObject := GetDevice(device)
5832
Jesse Hallb00daad2015-11-29 19:46:20 -08005833 descriptorWrites := pDescriptorWrites[0:descriptorWriteCount]
5834 for i in (0 .. descriptorWriteCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005835 descriptorWrite := descriptorWrites[i]
Jesse Hall3fbc8562015-11-29 22:10:52 -08005836 descriptorWriteObject := GetDescriptorSet(descriptorWrite.dstSet)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005837 assert(descriptorWriteObject.device == device)
5838 }
5839
Jesse Hallb00daad2015-11-29 19:46:20 -08005840 descriptorCopies := pDescriptorCopies[0:descriptorCopyCount]
5841 for i in (0 .. descriptorCopyCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005842 descriptorCopy := descriptorCopies[i]
Jesse Hall3fbc8562015-11-29 22:10:52 -08005843 descriptorCopyObject := GetDescriptorSet(descriptorCopy.dstSet)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005844 assert(descriptorCopyObject.device == device)
5845 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07005846}
5847
5848
5849// Framebuffer functions
5850
5851@threadSafety("system")
5852cmd VkResult vkCreateFramebuffer(
5853 VkDevice device,
5854 const VkFramebufferCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005855 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005856 VkFramebuffer* pFramebuffer) {
5857 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO)
5858 deviceObject := GetDevice(device)
5859
5860 framebuffer := ?
5861 pFramebuffer[0] = framebuffer
5862 State.Framebuffers[framebuffer] = new!FramebufferObject(device: device)
5863
5864 return ?
5865}
5866
5867@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005868cmd void vkDestroyFramebuffer(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005869 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005870 VkFramebuffer framebuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005871 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005872 deviceObject := GetDevice(device)
5873 framebufferObject := GetFramebuffer(framebuffer)
5874 assert(framebufferObject.device == device)
5875
5876 State.Framebuffers[framebuffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005877}
5878
5879
5880// Renderpass functions
5881
5882@threadSafety("system")
5883cmd VkResult vkCreateRenderPass(
5884 VkDevice device,
5885 const VkRenderPassCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005886 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005887 VkRenderPass* pRenderPass) {
5888 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO)
5889 deviceObject := GetDevice(device)
5890
5891 renderpass := ?
5892 pRenderPass[0] = renderpass
5893 State.RenderPasses[renderpass] = new!RenderPassObject(device: device)
5894
5895 return ?
5896}
5897
5898@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005899cmd void vkDestroyRenderPass(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005900 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005901 VkRenderPass renderPass,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005902 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005903 deviceObject := GetDevice(device)
5904 renderPassObject := GetRenderPass(renderPass)
5905 assert(renderPassObject.device == device)
5906
5907 State.RenderPasses[renderPass] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005908}
5909
Jesse Hall606a54e2015-11-19 22:17:28 -08005910cmd void vkGetRenderAreaGranularity(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005911 VkDevice device,
5912 VkRenderPass renderPass,
5913 VkExtent2D* pGranularity) {
5914 deviceObject := GetDevice(device)
5915 renderPassObject := GetRenderPass(renderPass)
5916
5917 granularity := ?
5918 pGranularity[0] = granularity
Jesse Halld27f6aa2015-08-15 17:58:48 -07005919}
5920
5921// Command pool functions
5922
5923cmd VkResult vkCreateCommandPool(
5924 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005925 const VkCommandPoolCreateInfo* pCreateInfo,
5926 const VkAllocationCallbacks* pAllocator,
5927 VkCommandPool* pCommandPool) {
5928 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005929 deviceObject := GetDevice(device)
5930
Jesse Hall3fbc8562015-11-29 22:10:52 -08005931 commandPool := ?
5932 pCommandPool[0] = commandPool
5933 State.CommandPools[commandPool] = new!CommandPoolObject(device: device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005934
5935 return ?
5936}
5937
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005938cmd void vkDestroyCommandPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005939 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005940 VkCommandPool commandPool,
5941 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005942 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005943 commandPoolObject := GetCommandPool(commandPool)
5944 assert(commandPoolObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005945
Jesse Hall3fbc8562015-11-29 22:10:52 -08005946 State.CommandPools[commandPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005947}
5948
5949cmd VkResult vkResetCommandPool(
5950 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005951 VkCommandPool commandPool,
5952 VkCommandPoolResetFlags flags) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005953 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005954 commandPoolObject := GetCommandPool(commandPool)
5955 assert(commandPoolObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005956
5957 return ?
5958}
5959
5960// Command buffer functions
5961
Jesse Hall3fbc8562015-11-29 22:10:52 -08005962macro void bindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) {
5963 memoryObject := GetDeviceMemory(memory)
5964 memoryObject.boundCommandBuffers[commandBuffer] = commandBuffer
Jesse Halld27f6aa2015-08-15 17:58:48 -07005965
Jesse Hall3fbc8562015-11-29 22:10:52 -08005966 commandBufferObject := GetCommandBuffer(commandBuffer)
5967 commandBufferObject.boundObjects[as!u64(obj)] = memory
Jesse Halld27f6aa2015-08-15 17:58:48 -07005968}
5969
Jesse Hall3fbc8562015-11-29 22:10:52 -08005970macro void unbindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) {
5971 memoryObject := GetDeviceMemory(memory)
5972 memoryObject.boundCommandBuffers[commandBuffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005973
Jesse Hall3fbc8562015-11-29 22:10:52 -08005974 commandBufferObject := GetCommandBuffer(commandBuffer)
5975 commandBufferObject.boundObjects[as!u64(obj)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005976}
5977
5978@threadSafety("system")
Jesse Hall3fbc8562015-11-29 22:10:52 -08005979cmd VkResult vkAllocateCommandBuffers(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005980 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005981 const VkCommandBufferAllocateInfo* pAllocateInfo,
5982 VkCommandBuffer* pCommandBuffers) {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08005983 assert(pAllocateInfo[0].sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005984
Jesse Hall3dd678a2016-01-08 21:52:01 -08005985 count := pAllocateInfo[0].commandBufferCount
Jesse Hall3fbc8562015-11-29 22:10:52 -08005986 commandBuffers := pCommandBuffers[0:count]
Jesse Hallfbf97b02015-11-20 14:17:03 -08005987 for i in (0 .. count) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08005988 commandBuffer := ?
5989 commandBuffers[i] = commandBuffer
5990 State.CommandBuffers[commandBuffer] = new!CommandBufferObject(device: device)
Jesse Hallfbf97b02015-11-20 14:17:03 -08005991 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07005992
5993 return ?
5994}
5995
5996@threadSafety("system")
Jesse Hallfbf97b02015-11-20 14:17:03 -08005997cmd void vkFreeCommandBuffers(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005998 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005999 VkCommandPool commandPool,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006000 u32 commandBufferCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006001 const VkCommandBuffer* pCommandBuffers) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006002 deviceObject := GetDevice(device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006003
Jesse Hall3fbc8562015-11-29 22:10:52 -08006004 commandBuffers := pCommandBuffers[0:commandBufferCount]
Jesse Hall03b6fe12015-11-24 12:44:21 -08006005 for i in (0 .. commandBufferCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006006 commandBufferObject := GetCommandBuffer(commandBuffers[i])
6007 assert(commandBufferObject.device == device)
Jesse Hallfbf97b02015-11-20 14:17:03 -08006008 // TODO: iterate over boundObjects and clear memory bindings
Jesse Hall3fbc8562015-11-29 22:10:52 -08006009 State.CommandBuffers[commandBuffers[i]] = null
Jesse Hallfbf97b02015-11-20 14:17:03 -08006010 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07006011}
6012
6013@threadSafety("app")
6014cmd VkResult vkBeginCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006015 VkCommandBuffer commandBuffer,
6016 const VkCommandBufferBeginInfo* pBeginInfo) {
6017 assert(pBeginInfo.sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO)
6018 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006019
6020 // TODO: iterate over boundObjects and clear memory bindings
6021
6022 return ?
6023}
6024
6025@threadSafety("app")
6026cmd VkResult vkEndCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006027 VkCommandBuffer commandBuffer) {
6028 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006029
6030 return ?
6031}
6032
6033@threadSafety("app")
6034cmd VkResult vkResetCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006035 VkCommandBuffer commandBuffer,
6036 VkCommandBufferResetFlags flags) {
6037 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006038
6039 // TODO: iterate over boundObjects and clear memory bindings
6040
6041 return ?
6042}
6043
6044
6045// Command buffer building functions
6046
6047@threadSafety("app")
6048cmd void vkCmdBindPipeline(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006049 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006050 VkPipelineBindPoint pipelineBindPoint,
6051 VkPipeline pipeline) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006052 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006053 pipelineObject := GetPipeline(pipeline)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006054 assert(commandBufferObject.device == pipelineObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006055
Jesse Halld8bade02015-11-24 10:24:18 -08006056 queue := switch (pipelineBindPoint) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006057 case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT
6058 case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT
6059 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08006060 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006061}
6062
6063@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006064cmd void vkCmdSetViewport(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006065 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006066 u32 firstViewport,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006067 u32 viewportCount,
6068 const VkViewport* pViewports) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006069 commandBufferObject := GetCommandBuffer(commandBuffer)
6070 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006071}
6072
6073@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006074cmd void vkCmdSetScissor(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006075 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006076 u32 firstScissor,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006077 u32 scissorCount,
6078 const VkRect2D* pScissors) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006079 commandBufferObject := GetCommandBuffer(commandBuffer)
6080 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006081}
6082
6083@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006084cmd void vkCmdSetLineWidth(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006085 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006086 f32 lineWidth) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006087 commandBufferObject := GetCommandBuffer(commandBuffer)
6088 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006089}
6090
6091@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006092cmd void vkCmdSetDepthBias(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006093 VkCommandBuffer commandBuffer,
Jesse Halla9bb62b2015-11-21 19:31:56 -08006094 f32 depthBiasConstantFactor,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006095 f32 depthBiasClamp,
Jesse Halla9bb62b2015-11-21 19:31:56 -08006096 f32 depthBiasSlopeFactor) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006097 commandBufferObject := GetCommandBuffer(commandBuffer)
6098 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006099}
Jesse Halld27f6aa2015-08-15 17:58:48 -07006100
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006101@threadSafety("app")
6102cmd void vkCmdSetBlendConstants(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006103 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006104 // TODO(jessehall): apic only supports 'const' on pointer types. Using
6105 // an annotation as a quick hack to pass this to the template without
6106 // having to modify the AST and semantic model.
Jesse Hallb00daad2015-11-29 19:46:20 -08006107 @readonly f32[4] blendConstants) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006108 commandBufferObject := GetCommandBuffer(commandBuffer)
6109 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006110}
6111
6112@threadSafety("app")
6113cmd void vkCmdSetDepthBounds(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006114 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006115 f32 minDepthBounds,
6116 f32 maxDepthBounds) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006117 commandBufferObject := GetCommandBuffer(commandBuffer)
6118 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006119}
6120
6121@threadSafety("app")
6122cmd void vkCmdSetStencilCompareMask(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006123 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006124 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08006125 u32 compareMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006126 commandBufferObject := GetCommandBuffer(commandBuffer)
6127 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006128}
6129
6130@threadSafety("app")
6131cmd void vkCmdSetStencilWriteMask(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006132 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006133 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08006134 u32 writeMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006135 commandBufferObject := GetCommandBuffer(commandBuffer)
6136 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006137}
6138
6139@threadSafety("app")
6140cmd void vkCmdSetStencilReference(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006141 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006142 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08006143 u32 reference) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006144 commandBufferObject := GetCommandBuffer(commandBuffer)
6145 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006146}
6147
6148@threadSafety("app")
6149cmd void vkCmdBindDescriptorSets(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006150 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006151 VkPipelineBindPoint pipelineBindPoint,
6152 VkPipelineLayout layout,
6153 u32 firstSet,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006154 u32 descriptorSetCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006155 const VkDescriptorSet* pDescriptorSets,
6156 u32 dynamicOffsetCount,
6157 const u32* pDynamicOffsets) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006158 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006159
Jesse Hall03b6fe12015-11-24 12:44:21 -08006160 descriptorSets := pDescriptorSets[0:descriptorSetCount]
6161 for i in (0 .. descriptorSetCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006162 descriptorSet := descriptorSets[i]
6163 descriptorSetObject := GetDescriptorSet(descriptorSet)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006164 assert(commandBufferObject.device == descriptorSetObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006165 }
6166
6167 dynamicOffsets := pDynamicOffsets[0:dynamicOffsetCount]
6168 for i in (0 .. dynamicOffsetCount) {
6169 dynamicOffset := dynamicOffsets[i]
6170 }
6171
Jesse Halld8bade02015-11-24 10:24:18 -08006172 queue := switch (pipelineBindPoint) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006173 case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT
6174 case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT
6175 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08006176 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006177}
6178
6179@threadSafety("app")
6180cmd void vkCmdBindIndexBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006181 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006182 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006183 VkDeviceSize offset,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006184 VkIndexType indexType) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006185 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006186 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006187 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006188
Jesse Hall3fbc8562015-11-29 22:10:52 -08006189 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006190
Jesse Hall3fbc8562015-11-29 22:10:52 -08006191 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006192}
6193
6194@threadSafety("app")
6195cmd void vkCmdBindVertexBuffers(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006196 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006197 u32 firstBinding,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006198 u32 bindingCount,
6199 const VkBuffer* pBuffers,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006200 const VkDeviceSize* pOffsets) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006201 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006202
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006203 // TODO: check if not [firstBinding:firstBinding+bindingCount]
Jesse Halld27f6aa2015-08-15 17:58:48 -07006204 buffers := pBuffers[0:bindingCount]
6205 offsets := pOffsets[0:bindingCount]
6206 for i in (0 .. bindingCount) {
6207 buffer := buffers[i]
6208 offset := offsets[i]
6209 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006210 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006211
Jesse Hall3fbc8562015-11-29 22:10:52 -08006212 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006213 }
6214
Jesse Hall3fbc8562015-11-29 22:10:52 -08006215 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006216}
6217
6218@threadSafety("app")
6219cmd void vkCmdDraw(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006220 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006221 u32 vertexCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006222 u32 instanceCount,
6223 u32 firstVertex,
6224 u32 firstInstance) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006225 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006226
Jesse Hall3fbc8562015-11-29 22:10:52 -08006227 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006228}
6229
6230@threadSafety("app")
6231cmd void vkCmdDrawIndexed(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006232 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006233 u32 indexCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006234 u32 instanceCount,
6235 u32 firstIndex,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006236 s32 vertexOffset,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006237 u32 firstInstance) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006238 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006239
Jesse Hall3fbc8562015-11-29 22:10:52 -08006240 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006241}
6242
6243@threadSafety("app")
6244cmd void vkCmdDrawIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006245 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006246 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006247 VkDeviceSize offset,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006248 u32 drawCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006249 u32 stride) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006250 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006251 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006252 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006253
Jesse Hall3fbc8562015-11-29 22:10:52 -08006254 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006255
Jesse Hall3fbc8562015-11-29 22:10:52 -08006256 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006257}
6258
6259@threadSafety("app")
6260cmd void vkCmdDrawIndexedIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006261 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006262 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006263 VkDeviceSize offset,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006264 u32 drawCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006265 u32 stride) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006266 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006267 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006268 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006269
Jesse Hall3fbc8562015-11-29 22:10:52 -08006270 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006271
Jesse Hall3fbc8562015-11-29 22:10:52 -08006272 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006273}
6274
6275@threadSafety("app")
6276cmd void vkCmdDispatch(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006277 VkCommandBuffer commandBuffer,
Jesse Hallad250842017-03-10 18:35:38 -08006278 u32 groupCountX,
6279 u32 groupCountY,
6280 u32 groupCountZ) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006281 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006282
Jesse Hall3fbc8562015-11-29 22:10:52 -08006283 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006284}
6285
6286@threadSafety("app")
6287cmd void vkCmdDispatchIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006288 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006289 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006290 VkDeviceSize offset) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006291 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006292 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006293 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006294
Jesse Hall3fbc8562015-11-29 22:10:52 -08006295 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006296
Jesse Hall3fbc8562015-11-29 22:10:52 -08006297 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006298}
6299
6300@threadSafety("app")
6301cmd void vkCmdCopyBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006302 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006303 VkBuffer srcBuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006304 VkBuffer dstBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006305 u32 regionCount,
6306 const VkBufferCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006307 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006308 srcBufferObject := GetBuffer(srcBuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006309 dstBufferObject := GetBuffer(dstBuffer)
6310 assert(commandBufferObject.device == srcBufferObject.device)
6311 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006312
6313 regions := pRegions[0:regionCount]
6314 for i in (0 .. regionCount) {
6315 region := regions[i]
6316 }
6317
Jesse Hall3fbc8562015-11-29 22:10:52 -08006318 bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory)
6319 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006320
Jesse Hall65ab5522015-11-30 00:07:16 -08006321 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006322}
6323
6324@threadSafety("app")
6325cmd void vkCmdCopyImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006326 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006327 VkImage srcImage,
6328 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006329 VkImage dstImage,
6330 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006331 u32 regionCount,
6332 const VkImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006333 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006334 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006335 dstImageObject := GetImage(dstImage)
6336 assert(commandBufferObject.device == srcImageObject.device)
6337 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006338
6339 regions := pRegions[0:regionCount]
6340 for i in (0 .. regionCount) {
6341 region := regions[i]
6342 }
6343
Jesse Hall3fbc8562015-11-29 22:10:52 -08006344 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6345 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006346
Jesse Hall65ab5522015-11-30 00:07:16 -08006347 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006348}
6349
6350@threadSafety("app")
6351cmd void vkCmdBlitImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006352 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006353 VkImage srcImage,
6354 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006355 VkImage dstImage,
6356 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006357 u32 regionCount,
6358 const VkImageBlit* pRegions,
Jesse Hall23ff73f2015-11-29 14:36:39 -08006359 VkFilter filter) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006360 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006361 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006362 dstImageObject := GetImage(dstImage)
6363 assert(commandBufferObject.device == srcImageObject.device)
6364 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006365
6366 regions := pRegions[0:regionCount]
6367 for i in (0 .. regionCount) {
6368 region := regions[i]
6369 }
6370
Jesse Hall3fbc8562015-11-29 22:10:52 -08006371 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6372 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006373
Jesse Hall3fbc8562015-11-29 22:10:52 -08006374 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006375}
6376
6377@threadSafety("app")
6378cmd void vkCmdCopyBufferToImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006379 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006380 VkBuffer srcBuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006381 VkImage dstImage,
6382 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006383 u32 regionCount,
6384 const VkBufferImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006385 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006386 srcBufferObject := GetBuffer(srcBuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006387 dstImageObject := GetImage(dstImage)
6388 assert(commandBufferObject.device == srcBufferObject.device)
6389 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006390
6391 regions := pRegions[0:regionCount]
6392 for i in (0 .. regionCount) {
6393 region := regions[i]
6394 }
6395
Jesse Hall3fbc8562015-11-29 22:10:52 -08006396 bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory)
6397 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006398
Jesse Hall65ab5522015-11-30 00:07:16 -08006399 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006400}
6401
6402@threadSafety("app")
6403cmd void vkCmdCopyImageToBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006404 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006405 VkImage srcImage,
6406 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006407 VkBuffer dstBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006408 u32 regionCount,
6409 const VkBufferImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006410 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006411 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006412 dstBufferObject := GetBuffer(dstBuffer)
6413 assert(commandBufferObject.device == srcImageObject.device)
6414 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006415
6416 regions := pRegions[0:regionCount]
6417 for i in (0 .. regionCount) {
6418 region := regions[i]
6419 }
6420
Jesse Hall3fbc8562015-11-29 22:10:52 -08006421 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6422 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006423
Jesse Hall65ab5522015-11-30 00:07:16 -08006424 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006425}
6426
6427@threadSafety("app")
6428cmd void vkCmdUpdateBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006429 VkCommandBuffer commandBuffer,
6430 VkBuffer dstBuffer,
6431 VkDeviceSize dstOffset,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006432 VkDeviceSize dataSize,
Jesse Hall56d386a2016-07-26 15:20:40 -07006433 const void* pData) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006434 commandBufferObject := GetCommandBuffer(commandBuffer)
6435 dstBufferObject := GetBuffer(dstBuffer)
6436 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006437
6438 data := pData[0:dataSize]
6439
Jesse Hall3fbc8562015-11-29 22:10:52 -08006440 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006441
Jesse Hall65ab5522015-11-30 00:07:16 -08006442 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006443}
6444
6445@threadSafety("app")
6446cmd void vkCmdFillBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006447 VkCommandBuffer commandBuffer,
6448 VkBuffer dstBuffer,
6449 VkDeviceSize dstOffset,
Jesse Hallb00daad2015-11-29 19:46:20 -08006450 VkDeviceSize size,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006451 u32 data) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006452 commandBufferObject := GetCommandBuffer(commandBuffer)
6453 dstBufferObject := GetBuffer(dstBuffer)
6454 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006455
Jesse Hall65ab5522015-11-30 00:07:16 -08006456 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006457}
6458
6459@threadSafety("app")
6460cmd void vkCmdClearColorImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006461 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006462 VkImage image,
6463 VkImageLayout imageLayout,
6464 const VkClearColorValue* pColor,
6465 u32 rangeCount,
6466 const VkImageSubresourceRange* pRanges) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006467 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006468 imageObject := GetImage(image)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006469 assert(commandBufferObject.device == imageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006470
6471 ranges := pRanges[0:rangeCount]
6472 for i in (0 .. rangeCount) {
6473 range := ranges[i]
6474 }
6475
Jesse Hall3fbc8562015-11-29 22:10:52 -08006476 bindCommandBuffer(commandBuffer, image, imageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006477
Jesse Hall3fbc8562015-11-29 22:10:52 -08006478 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006479}
6480
6481@threadSafety("app")
6482cmd void vkCmdClearDepthStencilImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006483 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006484 VkImage image,
6485 VkImageLayout imageLayout,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006486 const VkClearDepthStencilValue* pDepthStencil,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006487 u32 rangeCount,
6488 const VkImageSubresourceRange* pRanges) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006489 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006490 imageObject := GetImage(image)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006491 assert(commandBufferObject.device == imageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006492
6493 ranges := pRanges[0:rangeCount]
6494 for i in (0 .. rangeCount) {
6495 range := ranges[i]
6496 }
6497
Jesse Hall3fbc8562015-11-29 22:10:52 -08006498 bindCommandBuffer(commandBuffer, image, imageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006499
Jesse Hall3fbc8562015-11-29 22:10:52 -08006500 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006501}
6502
6503@threadSafety("app")
Jesse Hallae38f732015-11-19 21:32:50 -08006504cmd void vkCmdClearAttachments(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006505 VkCommandBuffer commandBuffer,
Jesse Hallae38f732015-11-19 21:32:50 -08006506 u32 attachmentCount,
6507 const VkClearAttachment* pAttachments,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006508 u32 rectCount,
Jesse Halla15a4bf2015-11-19 22:48:02 -08006509 const VkClearRect* pRects) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006510 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006511
6512 rects := pRects[0:rectCount]
6513 for i in (0 .. rectCount) {
6514 rect := rects[i]
6515 }
6516
Jesse Hall3fbc8562015-11-29 22:10:52 -08006517 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006518}
6519
6520@threadSafety("app")
6521cmd void vkCmdResolveImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006522 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006523 VkImage srcImage,
6524 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006525 VkImage dstImage,
6526 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006527 u32 regionCount,
6528 const VkImageResolve* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006529 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006530 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006531 dstImageObject := GetImage(dstImage)
6532 assert(commandBufferObject.device == srcImageObject.device)
6533 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006534
6535 regions := pRegions[0:regionCount]
6536 for i in (0 .. regionCount) {
6537 region := regions[i]
6538 }
6539
Jesse Hall3fbc8562015-11-29 22:10:52 -08006540 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6541 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006542
Jesse Hall3fbc8562015-11-29 22:10:52 -08006543 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006544}
6545
6546@threadSafety("app")
6547cmd void vkCmdSetEvent(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006548 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006549 VkEvent event,
6550 VkPipelineStageFlags stageMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006551 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006552 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006553 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006554}
6555
6556@threadSafety("app")
6557cmd void vkCmdResetEvent(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006558 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006559 VkEvent event,
6560 VkPipelineStageFlags stageMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006561 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006562 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006563 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006564}
6565
6566@threadSafety("app")
6567cmd void vkCmdWaitEvents(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006568 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006569 u32 eventCount,
6570 const VkEvent* pEvents,
6571 VkPipelineStageFlags srcStageMask,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006572 VkPipelineStageFlags dstStageMask,
6573 u32 memoryBarrierCount,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006574 const VkMemoryBarrier* pMemoryBarriers,
6575 u32 bufferMemoryBarrierCount,
6576 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
6577 u32 imageMemoryBarrierCount,
6578 const VkImageMemoryBarrier* pImageMemoryBarriers) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006579 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006580
6581 events := pEvents[0:eventCount]
6582 for i in (0 .. eventCount) {
6583 event := events[i]
6584 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006585 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006586 }
6587
Jesse Hall3dd678a2016-01-08 21:52:01 -08006588 memoryBarriers := pMemoryBarriers[0:memoryBarrierCount]
Jesse Hall3fbc8562015-11-29 22:10:52 -08006589 for i in (0 .. memoryBarrierCount) {
Jesse Hall3dd678a2016-01-08 21:52:01 -08006590 memoryBarrier := memoryBarriers[i]
6591 }
6592 bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount]
6593 for i in (0 .. bufferMemoryBarrierCount) {
6594 bufferMemoryBarrier := bufferMemoryBarriers[i]
6595 bufferObject := GetBuffer(bufferMemoryBarrier.buffer)
6596 assert(bufferObject.device == commandBufferObject.device)
6597 }
6598 imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount]
6599 for i in (0 .. imageMemoryBarrierCount) {
6600 imageMemoryBarrier := imageMemoryBarriers[i]
6601 imageObject := GetImage(imageMemoryBarrier.image)
6602 assert(imageObject.device == commandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006603 }
6604}
6605
6606@threadSafety("app")
6607cmd void vkCmdPipelineBarrier(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006608 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006609 VkPipelineStageFlags srcStageMask,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006610 VkPipelineStageFlags dstStageMask,
Jesse Halldc6d36c2015-11-29 19:12:15 -08006611 VkDependencyFlags dependencyFlags,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006612 u32 memoryBarrierCount,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006613 const VkMemoryBarrier* pMemoryBarriers,
6614 u32 bufferMemoryBarrierCount,
6615 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
6616 u32 imageMemoryBarrierCount,
6617 const VkImageMemoryBarrier* pImageMemoryBarriers) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006618 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006619
Jesse Hall3dd678a2016-01-08 21:52:01 -08006620 memoryBarriers := pMemoryBarriers[0:memoryBarrierCount]
Jesse Hall3fbc8562015-11-29 22:10:52 -08006621 for i in (0 .. memoryBarrierCount) {
Jesse Hall3dd678a2016-01-08 21:52:01 -08006622 memoryBarrier := memoryBarriers[i]
6623 }
6624 bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount]
6625 for i in (0 .. bufferMemoryBarrierCount) {
6626 bufferMemoryBarrier := bufferMemoryBarriers[i]
6627 bufferObject := GetBuffer(bufferMemoryBarrier.buffer)
6628 assert(bufferObject.device == commandBufferObject.device)
6629 }
6630 imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount]
6631 for i in (0 .. imageMemoryBarrierCount) {
6632 imageMemoryBarrier := imageMemoryBarriers[i]
6633 imageObject := GetImage(imageMemoryBarrier.image)
6634 assert(imageObject.device == commandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006635 }
6636}
6637
6638@threadSafety("app")
6639cmd void vkCmdBeginQuery(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006640 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006641 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006642 u32 query,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006643 VkQueryControlFlags flags) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006644 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006645 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006646 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006647}
6648
6649@threadSafety("app")
6650cmd void vkCmdEndQuery(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006651 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006652 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006653 u32 query) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006654 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006655 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006656 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006657}
6658
6659@threadSafety("app")
6660cmd void vkCmdResetQueryPool(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006661 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006662 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006663 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006664 u32 queryCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006665 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006666 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006667 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006668}
6669
6670@threadSafety("app")
6671cmd void vkCmdWriteTimestamp(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006672 VkCommandBuffer commandBuffer,
Jesse Hall6f39a6d2015-11-24 11:08:36 -08006673 VkPipelineStageFlagBits pipelineStage,
Jesse Halla3a7a1d2015-11-24 11:37:23 -08006674 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006675 u32 query) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006676 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halla3a7a1d2015-11-24 11:37:23 -08006677 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006678 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006679}
6680
6681@threadSafety("app")
6682cmd void vkCmdCopyQueryPoolResults(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006683 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006684 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006685 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006686 u32 queryCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006687 VkBuffer dstBuffer,
6688 VkDeviceSize dstOffset,
Jesse Halla9bb62b2015-11-21 19:31:56 -08006689 VkDeviceSize stride,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006690 VkQueryResultFlags flags) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006691 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006692 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006693 dstBufferObject := GetBuffer(dstBuffer)
6694 assert(commandBufferObject.device == queryPoolObject.device)
6695 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006696}
6697
6698cmd void vkCmdPushConstants(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006699 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006700 VkPipelineLayout layout,
6701 VkShaderStageFlags stageFlags,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006702 u32 offset,
6703 u32 size,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08006704 const void* pValues) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006705 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006706 layoutObject := GetPipelineLayout(layout)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006707 assert(commandBufferObject.device == layoutObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006708}
6709
6710@threadSafety("app")
6711cmd void vkCmdBeginRenderPass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006712 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006713 const VkRenderPassBeginInfo* pRenderPassBegin,
Jesse Hall65ab5522015-11-30 00:07:16 -08006714 VkSubpassContents contents) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006715 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006716 renderPassObject := GetRenderPass(pRenderPassBegin.renderPass)
6717 framebufferObject := GetFramebuffer(pRenderPassBegin.framebuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006718 assert(commandBufferObject.device == renderPassObject.device)
6719 assert(commandBufferObject.device == framebufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006720
Jesse Hall3fbc8562015-11-29 22:10:52 -08006721 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006722}
6723
6724cmd void vkCmdNextSubpass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006725 VkCommandBuffer commandBuffer,
Jesse Hall65ab5522015-11-30 00:07:16 -08006726 VkSubpassContents contents) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006727 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006728}
6729
6730@threadSafety("app")
6731cmd void vkCmdEndRenderPass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006732 VkCommandBuffer commandBuffer) {
6733 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006734
Jesse Hall3fbc8562015-11-29 22:10:52 -08006735 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006736}
6737
6738cmd void vkCmdExecuteCommands(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006739 VkCommandBuffer commandBuffer,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006740 u32 commandBufferCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006741 const VkCommandBuffer* pCommandBuffers) {
6742 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006743
Jesse Hall3dd678a2016-01-08 21:52:01 -08006744 commandBuffers := pCommandBuffers[0:commandBufferCount]
6745 for i in (0 .. commandBufferCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006746 secondaryCommandBuffer := commandBuffers[i]
6747 secondaryCommandBufferObject := GetCommandBuffer(secondaryCommandBuffer)
6748 assert(commandBufferObject.device == secondaryCommandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006749 }
6750}
6751
Jesse Hallad250842017-03-10 18:35:38 -08006752@extension("VK_KHR_surface") // 1
Jesse Hall1356b0d2015-11-23 17:24:58 -08006753cmd void vkDestroySurfaceKHR(
6754 VkInstance instance,
Jesse Hall0e74f002015-11-30 11:37:59 -08006755 VkSurfaceKHR surface,
6756 const VkAllocationCallbacks* pAllocator) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08006757 instanceObject := GetInstance(instance)
6758 surfaceObject := GetSurface(surface)
6759 assert(surfaceObject.instance == instance)
Michael Lentine88594d72015-11-12 12:49:45 -08006760
Jesse Hall1356b0d2015-11-23 17:24:58 -08006761 State.Surfaces[surface] = null
Jesse Hall2818f932015-11-19 21:19:17 -08006762}
6763
Jesse Hallad250842017-03-10 18:35:38 -08006764@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08006765cmd VkResult vkGetPhysicalDeviceSurfaceSupportKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08006766 VkPhysicalDevice physicalDevice,
6767 u32 queueFamilyIndex,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006768 VkSurfaceKHR surface,
Jesse Hallb00daad2015-11-29 19:46:20 -08006769 VkBool32* pSupported) {
6770 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08006771
6772 return ?
6773}
6774
Jesse Hallad250842017-03-10 18:35:38 -08006775@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08006776cmd VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
6777 VkPhysicalDevice physicalDevice,
6778 VkSurfaceKHR surface,
6779 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) {
6780 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6781
6782 surfaceCapabilities := ?
6783 pSurfaceCapabilities[0] = surfaceCapabilities
6784
6785 return ?
6786}
6787
Jesse Hallad250842017-03-10 18:35:38 -08006788@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08006789cmd VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(
6790 VkPhysicalDevice physicalDevice,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006791 VkSurfaceKHR surface,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006792 u32* pSurfaceFormatCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006793 VkSurfaceFormatKHR* pSurfaceFormats) {
Jesse Hallb00daad2015-11-29 19:46:20 -08006794 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08006795
6796 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08006797 pSurfaceFormatCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08006798 surfaceFormats := pSurfaceFormats[0:count]
6799
6800 for i in (0 .. count) {
6801 surfaceFormat := ?
6802 surfaceFormats[i] = surfaceFormat
6803 }
6804
6805 return ?
6806}
6807
Jesse Hallad250842017-03-10 18:35:38 -08006808@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08006809cmd VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(
6810 VkPhysicalDevice physicalDevice,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006811 VkSurfaceKHR surface,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006812 u32* pPresentModeCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006813 VkPresentModeKHR* pPresentModes) {
Jesse Hallb00daad2015-11-29 19:46:20 -08006814 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08006815
6816 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08006817 pPresentModeCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08006818 presentModes := pPresentModes[0:count]
6819
6820 for i in (0 .. count) {
6821 presentMode := ?
6822 presentModes[i] = presentMode
6823 }
6824
6825 return ?
6826}
6827
Jesse Hallad250842017-03-10 18:35:38 -08006828@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08006829cmd VkResult vkCreateSwapchainKHR(
6830 VkDevice device,
6831 const VkSwapchainCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006832 const VkAllocationCallbacks* pAllocator,
Michael Lentine88594d72015-11-12 12:49:45 -08006833 VkSwapchainKHR* pSwapchain) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08006834 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR)
Michael Lentine88594d72015-11-12 12:49:45 -08006835 deviceObject := GetDevice(device)
6836
6837 swapchain := ?
6838 pSwapchain[0] = swapchain
6839 State.Swapchains[swapchain] = new!SwapchainObject(device: device)
6840
6841 return ?
6842}
6843
Jesse Hallad250842017-03-10 18:35:38 -08006844@extension("VK_KHR_swapchain") // 2
Jesse Hall1356b0d2015-11-23 17:24:58 -08006845cmd void vkDestroySwapchainKHR(
Michael Lentine88594d72015-11-12 12:49:45 -08006846 VkDevice device,
Jesse Hall0e74f002015-11-30 11:37:59 -08006847 VkSwapchainKHR swapchain,
6848 const VkAllocationCallbacks* pAllocator) {
Michael Lentine88594d72015-11-12 12:49:45 -08006849 deviceObject := GetDevice(device)
6850 swapchainObject := GetSwapchain(swapchain)
6851 assert(swapchainObject.device == device)
6852
6853 State.Swapchains[swapchain] = null
Michael Lentine88594d72015-11-12 12:49:45 -08006854}
6855
Jesse Hallad250842017-03-10 18:35:38 -08006856@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08006857cmd VkResult vkGetSwapchainImagesKHR(
6858 VkDevice device,
6859 VkSwapchainKHR swapchain,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006860 u32* pSwapchainImageCount,
Michael Lentine88594d72015-11-12 12:49:45 -08006861 VkImage* pSwapchainImages) {
6862 deviceObject := GetDevice(device)
6863
6864 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08006865 pSwapchainImageCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08006866 swapchainImages := pSwapchainImages[0:count]
6867
6868 for i in (0 .. count) {
6869 swapchainImage := ?
6870 swapchainImages[i] = swapchainImage
Jesse Hall1356b0d2015-11-23 17:24:58 -08006871 State.Images[swapchainImage] = new!ImageObject(device: device)
Michael Lentine88594d72015-11-12 12:49:45 -08006872 }
6873
6874 return ?
6875}
6876
Jesse Hallad250842017-03-10 18:35:38 -08006877@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08006878cmd VkResult vkAcquireNextImageKHR(
6879 VkDevice device,
6880 VkSwapchainKHR swapchain,
6881 u64 timeout,
6882 VkSemaphore semaphore,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006883 VkFence fence,
Michael Lentine88594d72015-11-12 12:49:45 -08006884 u32* pImageIndex) {
6885 deviceObject := GetDevice(device)
6886 swapchainObject := GetSwapchain(swapchain)
6887
6888 imageIndex := ?
6889 pImageIndex[0] = imageIndex
6890
6891 return ?
6892}
6893
Jesse Hallad250842017-03-10 18:35:38 -08006894@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08006895cmd VkResult vkQueuePresentKHR(
6896 VkQueue queue,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08006897 const VkPresentInfoKHR* pPresentInfo) {
Michael Lentine88594d72015-11-12 12:49:45 -08006898 queueObject := GetQueue(queue)
6899
6900 presentInfo := ?
6901 pPresentInfo[0] = presentInfo
6902
6903 return ?
6904}
6905
Jesse Hallad250842017-03-10 18:35:38 -08006906@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08006907cmd VkResult vkGetPhysicalDeviceDisplayPropertiesKHR(
6908 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006909 u32* pPropertyCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006910 VkDisplayPropertiesKHR* pProperties) {
6911 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6912 return ?
6913}
6914
Jesse Hallad250842017-03-10 18:35:38 -08006915@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08006916cmd VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
6917 VkPhysicalDevice physicalDevice,
6918 u32* pPropertyCount,
6919 VkDisplayPlanePropertiesKHR* pProperties) {
6920 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6921 return ?
6922}
6923
Jesse Hallad250842017-03-10 18:35:38 -08006924@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08006925cmd VkResult vkGetDisplayPlaneSupportedDisplaysKHR(
6926 VkPhysicalDevice physicalDevice,
Jesse Hall3dd678a2016-01-08 21:52:01 -08006927 u32 planeIndex,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08006928 u32* pDisplayCount,
6929 VkDisplayKHR* pDisplays) {
Jesse Halla6429252015-11-29 18:59:42 -08006930 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6931 return ?
6932}
6933
Jesse Hallad250842017-03-10 18:35:38 -08006934@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08006935cmd VkResult vkGetDisplayModePropertiesKHR(
6936 VkPhysicalDevice physicalDevice,
6937 VkDisplayKHR display,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006938 u32* pPropertyCount,
6939 VkDisplayModePropertiesKHR* pProperties) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08006940 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6941 return ?
6942}
6943
Jesse Hallad250842017-03-10 18:35:38 -08006944@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08006945cmd VkResult vkCreateDisplayModeKHR(
6946 VkPhysicalDevice physicalDevice,
6947 VkDisplayKHR display,
6948 const VkDisplayModeCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006949 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006950 VkDisplayModeKHR* pMode) {
6951 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6952 return ?
6953}
6954
Jesse Hallad250842017-03-10 18:35:38 -08006955@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08006956cmd VkResult vkGetDisplayPlaneCapabilitiesKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08006957 VkPhysicalDevice physicalDevice,
Jesse Hall9ba8bc82015-11-30 16:22:16 -08006958 VkDisplayModeKHR mode,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006959 u32 planeIndex,
Jesse Halla6429252015-11-29 18:59:42 -08006960 VkDisplayPlaneCapabilitiesKHR* pCapabilities) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08006961 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6962 return ?
6963}
6964
Jesse Hallad250842017-03-10 18:35:38 -08006965@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08006966cmd VkResult vkCreateDisplayPlaneSurfaceKHR(
6967 VkInstance instance,
6968 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006969 const VkAllocationCallbacks* pAllocator,
Jesse Halla6429252015-11-29 18:59:42 -08006970 VkSurfaceKHR* pSurface) {
6971 return ?
6972}
6973
Jesse Hallad250842017-03-10 18:35:38 -08006974@extension("VK_KHR_display_swapchain") // 4
Jesse Hall9ba8bc82015-11-30 16:22:16 -08006975cmd VkResult vkCreateSharedSwapchainsKHR(
6976 VkDevice device,
6977 u32 swapchainCount,
6978 const VkSwapchainCreateInfoKHR* pCreateInfos,
6979 const VkAllocationCallbacks* pAllocator,
6980 VkSwapchainKHR* pSwapchains) {
6981 return ?
6982}
6983
Jesse Hallad250842017-03-10 18:35:38 -08006984@extension("VK_KHR_xlib_surface") // 5
Jesse Halla6429252015-11-29 18:59:42 -08006985cmd VkResult vkCreateXlibSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08006986 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006987 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08006988 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08006989 VkSurfaceKHR* pSurface) {
6990 instanceObject := GetInstance(instance)
6991 return ?
6992}
6993
Jesse Hallad250842017-03-10 18:35:38 -08006994@extension("VK_KHR_xlib_surface") // 5
Jesse Halla6429252015-11-29 18:59:42 -08006995cmd VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR(
6996 VkPhysicalDevice physicalDevice,
6997 u32 queueFamilyIndex,
6998 platform.Display* dpy,
Jesse Hall65ab5522015-11-30 00:07:16 -08006999 platform.VisualID visualID) {
Jesse Halla6429252015-11-29 18:59:42 -08007000 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7001 return ?
7002}
7003
Jesse Hallad250842017-03-10 18:35:38 -08007004@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007005cmd VkResult vkCreateXcbSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08007006 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007007 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007008 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007009 VkSurfaceKHR* pSurface) {
7010 instanceObject := GetInstance(instance)
7011 return ?
7012}
7013
Jesse Hallad250842017-03-10 18:35:38 -08007014@extension("VK_KHR_xcb_surface") // 6
Jesse Halla6429252015-11-29 18:59:42 -08007015cmd VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR(
7016 VkPhysicalDevice physicalDevice,
7017 u32 queueFamilyIndex,
7018 platform.xcb_connection_t* connection,
7019 platform.xcb_visualid_t visual_id) {
7020 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7021 return ?
7022}
7023
Jesse Hallad250842017-03-10 18:35:38 -08007024@extension("VK_KHR_wayland_surface") // 7
Jesse Hall1356b0d2015-11-23 17:24:58 -08007025cmd VkResult vkCreateWaylandSurfaceKHR(
7026 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007027 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007028 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007029 VkSurfaceKHR* pSurface) {
7030 instanceObject := GetInstance(instance)
7031 return ?
7032}
7033
Jesse Hallad250842017-03-10 18:35:38 -08007034@extension("VK_KHR_wayland_surface") // 7
Jesse Halla6429252015-11-29 18:59:42 -08007035cmd VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR(
7036 VkPhysicalDevice physicalDevice,
7037 u32 queueFamilyIndex,
7038 platform.wl_display* display) {
7039 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7040 return ?
7041}
7042
Jesse Hallad250842017-03-10 18:35:38 -08007043@extension("VK_KHR_mir_surface") // 8
Jesse Hall1356b0d2015-11-23 17:24:58 -08007044cmd VkResult vkCreateMirSurfaceKHR(
7045 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007046 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007047 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007048 VkSurfaceKHR* pSurface) {
7049 instanceObject := GetInstance(instance)
7050 return ?
7051}
7052
Jesse Hallad250842017-03-10 18:35:38 -08007053@extension("VK_KHR_mir_surface") // 8
Jesse Halla6429252015-11-29 18:59:42 -08007054cmd VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR(
7055 VkPhysicalDevice physicalDevice,
7056 u32 queueFamilyIndex,
7057 platform.MirConnection* connection) {
7058 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7059 return ?
7060}
7061
Jesse Hallad250842017-03-10 18:35:38 -08007062@extension("VK_KHR_android_surface") // 9
Jesse Hall1356b0d2015-11-23 17:24:58 -08007063cmd VkResult vkCreateAndroidSurfaceKHR(
7064 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007065 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007066 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007067 VkSurfaceKHR* pSurface) {
7068 instanceObject := GetInstance(instance)
7069 return ?
7070}
7071
Jesse Hallad250842017-03-10 18:35:38 -08007072@extension("VK_KHR_win32_surface") // 10
Jesse Hall1356b0d2015-11-23 17:24:58 -08007073cmd VkResult vkCreateWin32SurfaceKHR(
7074 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007075 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007076 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007077 VkSurfaceKHR* pSurface) {
7078 instanceObject := GetInstance(instance)
7079 return ?
7080}
7081
Jesse Hallad250842017-03-10 18:35:38 -08007082@extension("VK_KHR_win32_surface") // 10
Jesse Halla6429252015-11-29 18:59:42 -08007083cmd VkResult vkGetPhysicalDeviceWin32PresentationSupportKHR(
7084 VkPhysicalDevice physicalDevice,
7085 u32 queueFamilyIndex) {
Jesse Halle2948d82016-02-25 04:19:32 -08007086 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Halla6429252015-11-29 18:59:42 -08007087 return ?
7088}
7089
Jesse Hallad250842017-03-10 18:35:38 -08007090@extension("VK_ANDROID_native_buffer") // 11
Jesse Halld1abd742017-02-09 21:45:51 -08007091@optional
Chia-I Wub262ddc2016-03-22 07:38:20 +08007092cmd VkResult vkGetSwapchainGrallocUsageANDROID(
7093 VkDevice device,
7094 VkFormat format,
7095 VkImageUsageFlags imageUsage,
Jesse Halld1abd742017-02-09 21:45:51 -08007096 s32* grallocUsage) {
Chia-I Wub262ddc2016-03-22 07:38:20 +08007097 return ?
7098}
7099
Jesse Hallad250842017-03-10 18:35:38 -08007100@extension("VK_ANDROID_native_buffer") // 11
Jesse Halld1abd742017-02-09 21:45:51 -08007101@optional
Chris Forbes8e4438b2016-12-07 16:26:49 +13007102cmd VkResult vkGetSwapchainGrallocUsage2ANDROID(
7103 VkDevice device,
7104 VkFormat format,
7105 VkImageUsageFlags imageUsage,
7106 VkSwapchainImageUsageFlagsANDROID swapchainImageUsage,
Jesse Halld1abd742017-02-09 21:45:51 -08007107 u64* grallocConsumerUsage,
7108 u64* grallocProducerUsage) {
Chris Forbes8e4438b2016-12-07 16:26:49 +13007109 return ?
7110}
7111
Jesse Hallad250842017-03-10 18:35:38 -08007112@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08007113cmd VkResult vkAcquireImageANDROID(
7114 VkDevice device,
7115 VkImage image,
7116 int nativeFenceFd,
7117 VkSemaphore semaphore,
7118 VkFence fence) {
7119 return ?
7120}
7121
Jesse Hallad250842017-03-10 18:35:38 -08007122@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08007123cmd VkResult vkQueueSignalReleaseImageANDROID(
7124 VkQueue queue,
7125 u32 waitSemaphoreCount,
7126 const VkSemaphore* pWaitSemaphores,
7127 VkImage image,
7128 int* pNativeFenceFd) {
7129 return ?
7130}
7131
Jesse Hallad250842017-03-10 18:35:38 -08007132@extension("VK_EXT_debug_report") // 12
7133@external type void* PFN_vkDebugReportCallbackEXT
7134@extension("VK_EXT_debug_report") // 12
7135@pfn cmd VkBool32 vkDebugReportCallbackEXT(
7136 VkDebugReportFlagsEXT flags,
7137 VkDebugReportObjectTypeEXT objectType,
7138 u64 object,
7139 platform.size_t location,
7140 s32 messageCode,
7141 const char* pLayerPrefix,
7142 const char* pMessage,
7143 void* pUserData) {
7144 return ?
7145}
7146
7147@extension("VK_EXT_debug_report") // 12
7148cmd VkResult vkCreateDebugReportCallbackEXT(
7149 VkInstance instance,
7150 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
7151 const VkAllocationCallbacks* pAllocator,
7152 VkDebugReportCallbackEXT* pCallback) {
7153 return ?
7154}
7155
7156@extension("VK_EXT_debug_report") // 12
7157cmd void vkDestroyDebugReportCallbackEXT(
7158 VkInstance instance,
7159 VkDebugReportCallbackEXT callback,
7160 const VkAllocationCallbacks* pAllocator) {
7161}
7162
7163@extension("VK_EXT_debug_report") // 12
7164cmd void vkDebugReportMessageEXT(
7165 VkInstance instance,
7166 VkDebugReportFlagsEXT flags,
7167 VkDebugReportObjectTypeEXT objectType,
7168 u64 object,
7169 platform.size_t location,
7170 s32 messageCode,
7171 const char* pLayerPrefix,
7172 const char* pMessage) {
7173}
7174
7175@extension("VK_EXT_debug_marker") // 23
7176cmd VkResult vkDebugMarkerSetObjectTagEXT(
7177 VkDevice device,
7178 VkDebugMarkerObjectTagInfoEXT* pTagInfo) {
7179 return ?
7180}
7181
7182@extension("VK_EXT_debug_marker") // 23
7183cmd VkResult vkDebugMarkerSetObjectNameEXT(
7184 VkDevice device,
7185 VkDebugMarkerObjectNameInfoEXT* pNameInfo) {
7186 return ?
7187}
7188
7189@extension("VK_EXT_debug_marker") // 23
7190cmd void vkCmdDebugMarkerBeginEXT(
7191 VkCommandBuffer commandBuffer,
7192 VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
7193}
7194
7195@extension("VK_EXT_debug_marker") // 23
7196cmd void vkCmdDebugMarkerEndEXT(
7197 VkCommandBuffer commandBuffer) {
7198}
7199
7200@extension("VK_EXT_debug_marker") // 23
7201cmd void vkCmdDebugMarkerInsertEXT(
7202 VkCommandBuffer commandBuffer,
7203 VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
7204}
7205
7206@extension("VK_AMD_draw_indirect_count") // 34
7207cmd void vkCmdDrawIndirectCountAMD(
7208 VkCommandBuffer commandBuffer,
7209 VkBuffer buffer,
7210 VkDeviceSize offset,
7211 VkBuffer countBuffer,
7212 VkDeviceSize countBufferOffset,
7213 u32 maxDrawCount,
7214 u32 stride) {
7215}
7216
7217@extension("VK_AMD_draw_indirect_count") // 34
7218cmd void vkCmdDrawIndexedIndirectCountAMD(
7219 VkCommandBuffer commandBuffer,
7220 VkBuffer buffer,
7221 VkDeviceSize offset,
7222 VkBuffer countBuffer,
7223 VkDeviceSize countBufferOffset,
7224 u32 maxDrawCount,
7225 u32 stride) {
7226}
7227
7228@extension("VK_NV_external_memory_capabilities") // 56
7229cmd VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
7230 VkPhysicalDevice physicalDevice,
7231 VkFormat format,
7232 VkImageType type,
7233 VkImageTiling tiling,
7234 VkImageUsageFlags usage,
7235 VkImageCreateFlags flags,
7236 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
7237 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) {
7238 return ?
7239}
7240
7241@extension("VK_NV_external_memory_win32") // 58
7242cmd VkResult vkGetMemoryWin32HandleNV(
7243 VkDevice device,
7244 VkDeviceMemory memory,
7245 VkExternalMemoryHandleTypeFlagsNV handleType,
7246 platform.HANDLE* pHandle) {
7247 return ?
7248}
7249
7250@extension("VK_KHR_get_physical_device_properties2") // 60
7251cmd void vkGetPhysicalDeviceFeatures2KHR(
7252 VkPhysicalDevice physicalDevice,
7253 VkPhysicalDeviceFeatures2KHR* pFeatures) {
7254}
7255
7256@extension("VK_KHR_get_physical_device_properties2") // 60
7257cmd void vkGetPhysicalDeviceProperties2KHR(
7258 VkPhysicalDevice physicalDevice,
7259 VkPhysicalDeviceProperties2KHR* pProperties) {
7260}
7261
7262@extension("VK_KHR_get_physical_device_properties2") // 60
7263cmd void vkGetPhysicalDeviceFormatProperties2KHR(
7264 VkPhysicalDevice physicalDevice,
7265 VkFormat format,
7266 VkFormatProperties2KHR* pFormatProperties) {
7267}
7268
7269@extension("VK_KHR_get_physical_device_properties2") // 60
7270cmd VkResult vkGetPhysicalDeviceImageFormatProperties2KHR(
7271 VkPhysicalDevice physicalDevice,
7272 const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo,
7273 VkImageFormatProperties2KHR* pImageFormatProperties) {
7274 return ?
7275}
7276
7277@extension("VK_KHR_get_physical_device_properties2") // 60
7278cmd void vkGetPhysicalDeviceQueueFamilyProperties2KHR(
7279 VkPhysicalDevice physicalDevice,
7280 u32* pQueueFamilyPropertyCount,
7281 VkQueueFamilyProperties2KHR* pQueueFamilyProperties) {
7282}
7283
7284@extension("VK_KHR_get_physical_device_properties2") // 60
7285cmd void vkGetPhysicalDeviceMemoryProperties2KHR(
7286 VkPhysicalDevice physicalDevice,
7287 VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties) {
7288}
7289
7290@extension("VK_KHR_get_physical_device_properties2") // 60
7291cmd void vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
7292 VkPhysicalDevice physicalDevice,
7293 const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo,
7294 u32* pPropertyCount,
7295 VkSparseImageFormatProperties2KHR* pProperties) {
7296}
7297
7298@extension("VK_KHX_device_group") // 61
7299cmd void vkGetDeviceGroupPeerMemoryFeaturesKHX(
7300 VkDevice device,
7301 u32 heapIndex,
7302 u32 localDeviceIndex,
7303 u32 remoteDeviceIndex,
7304 VkPeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures) {
7305}
7306
7307@extension("VK_KHX_device_group") // 61
7308cmd VkResult vkBindBufferMemory2KHX(
7309 VkDevice device,
7310 u32 bindInfoCount,
7311 const VkBindBufferMemoryInfoKHX* pBindInfos) {
7312 return ?
7313}
7314
7315@extension("VK_KHX_device_group") // 61
7316cmd VkResult vkBindImageMemory2KHX(
7317 VkDevice device,
7318 u32 bindInfoCount,
7319 const VkBindImageMemoryInfoKHX* pBindInfos) {
7320 return ?
7321}
7322
7323@extension("VK_KHX_device_group") // 61
7324cmd void vkCmdSetDeviceMaskKHX(
7325 VkCommandBuffer commandBuffer,
7326 u32 deviceMask) {
7327}
7328
7329@extension("VK_KHX_device_group") // 61
7330cmd VkResult vkGetDeviceGroupPresentCapabilitiesKHX(
7331 VkDevice device,
7332 VkDeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities) {
7333 return ?
7334}
7335
7336@extension("VK_KHX_device_group") // 61
7337cmd VkResult vkGetDeviceGroupSurfacePresentModesKHX(
7338 VkDevice device,
7339 VkSurfaceKHR surface,
7340 VkDeviceGroupPresentModeFlagsKHX* pModes) {
7341 return ?
7342}
7343
7344@extension("VK_KHX_device_group") // 61
7345cmd VkResult vkAcquireNextImage2KHX(
7346 VkDevice device,
7347 const VkAcquireNextImageInfoKHX* pAcquireInfo,
7348 u32* pImageIndex) {
7349 return ?
7350}
7351
7352@extension("VK_KHX_device_group") // 61
7353cmd void vkCmdDispatchBaseKHX(
7354 VkCommandBuffer commandBuffer,
7355 u32 baseGroupX,
7356 u32 baseGroupY,
7357 u32 baseGroupZ,
7358 u32 groupCountX,
7359 u32 groupCountY,
7360 u32 groupCountZ) {
7361}
7362
7363@extension("VK_KHX_device_group") // 61
7364cmd VkResult vkGetPhysicalDevicePresentRectanglesKHX(
7365 VkPhysicalDevice physicalDevice,
7366 VkSurfaceKHR surface,
7367 u32* pRectCount,
7368 VkRect2D* pRects) {
7369 return ?
7370}
7371
7372@extension("VK_NN_vi_surface") // 63
7373cmd VkResult vkCreateViSurfaceNN(
7374 VkInstance instance,
7375 const VkViSurfaceCreateInfoNN* pCreateInfo,
7376 const VkAllocationCallbacks* pAllocator,
7377 VkSurfaceKHR* pSurface) {
7378 return ?
7379}
7380
7381@extension("VK_KHR_maintenance1") // 70
7382cmd void vkTrimCommandPoolKHR(
7383 VkDevice device,
7384 VkCommandPool commandPool,
7385 VkCommandPoolTrimFlagsKHR flags) {
7386}
7387
7388@extension("VK_KHX_device_group_creation") // 71
7389cmd VkResult vkEnumeratePhysicalDeviceGroupsKHX(
7390 VkInstance instance,
7391 u32* pPhysicalDeviceGroupCount,
7392 VkPhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties) {
7393 return ?
7394}
7395
7396@extension("VK_KHX_external_memory_capabilities") // 72
7397cmd void vkGetPhysicalDeviceExternalBufferPropertiesKHX(
7398 VkPhysicalDevice physicalDevice,
7399 const VkPhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo,
7400 VkExternalBufferPropertiesKHX* pExternalBufferProperties) {
7401}
7402
Jesse Hallad250842017-03-10 18:35:38 -08007403@extension("VK_KHX_external_memory_win32") // 74
7404cmd VkResult vkGetMemoryWin32HandleKHX(
7405 VkDevice device,
7406 VkDeviceMemory memory,
7407 VkExternalMemoryHandleTypeFlagBitsKHX handleType,
7408 platform.HANDLE* pHandle) {
7409 return ?
7410}
7411
7412@extension("VK_KHX_external_memory_win32") // 74
7413cmd VkResult vkGetMemoryWin32HandlePropertiesKHX(
7414 VkDevice device,
7415 VkExternalMemoryHandleTypeFlagBitsKHX handleType,
7416 platform.HANDLE handle,
7417 VkMemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties) {
7418 return ?
7419}
7420
7421@extension("VK_KHX_external_memory_fd") // 75
7422cmd VkResult vkGetMemoryFdKHX(
7423 VkDevice device,
7424 VkDeviceMemory memory,
7425 VkExternalMemoryHandleTypeFlagBitsKHX handleType,
7426 s32* pFd) {
7427 return ?
7428}
7429
7430@extension("VK_KHX_external_memory_fd") // 75
7431cmd VkResult vkGetMemoryFdPropertiesKHX(
7432 VkDevice device,
7433 VkExternalMemoryHandleTypeFlagBitsKHX handleType,
7434 s32 fd,
7435 VkMemoryFdPropertiesKHX* pMemoryFdProperties) {
7436 return ?
7437}
7438
7439@extension("VK_KHX_external_semaphore_capabilities") // 77
7440cmd void vkGetPhysicalDeviceExternalSemaphorePropertiesKHX(
7441 VkPhysicalDevice physicalDevice,
7442 const VkPhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo,
7443 VkExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties) {
7444}
7445
7446@extension("VK_KHX_external_semaphore_win32") // 79
7447cmd VkResult vkImportSemaphoreWin32HandleKHX(
7448 VkDevice device,
7449 const VkImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo) {
7450 return ?
7451}
7452
7453@extension("VK_KHX_external_semaphore_win32") // 79
7454cmd VkResult vkGetSemaphoreWin32HandleKHX(
7455 VkDevice device,
7456 VkSemaphore semaphore,
7457 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType,
7458 platform.HANDLE* pHandle) {
7459 return ?
7460}
7461
7462@extension("VK_KHX_external_semaphore_fd") // 80
7463cmd VkResult vkImportSemaphoreFdKHX(
7464 VkDevice device,
7465 const VkImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo) {
7466 return ?
7467}
7468
7469@extension("VK_KHX_external_semaphore_fd") // 80
7470cmd VkResult vkGetSemaphoreFdKHX(
7471 VkDevice device,
7472 VkSemaphore semaphore,
7473 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType,
7474 s32* pFd) {
7475 return ?
7476}
7477
7478@extension("VK_KHR_push_descriptor") // 81
7479cmd void vkCmdPushDescriptorSetKHR(
7480 VkCommandBuffer commandBuffer,
7481 VkPipelineBindPoint pipelineBindPoint,
7482 VkPipelineLayout layout,
7483 u32 set,
7484 u32 descriptorWriteCount,
7485 const VkWriteDescriptorSet* pDescriptorWrites) {
7486}
7487
7488@extension("VK_KHR_descriptor_update_template") // 86
7489cmd VkResult vkCreateDescriptorUpdateTemplateKHR(
7490 VkDevice device,
7491 const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo,
7492 const VkAllocationCallbacks* pAllocator,
7493 VkDescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate) {
7494 return ?
7495}
7496
7497@extension("VK_KHR_descriptor_update_template") // 86
7498cmd void vkDestroyDescriptorUpdateTemplateKHR(
7499 VkDevice device,
7500 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
7501 const VkAllocationCallbacks* pAllocator) {
7502}
7503
7504@extension("VK_KHR_descriptor_update_template") // 86
7505cmd void vkUpdateDescriptorSetWithTemplateKHR(
7506 VkDevice device,
7507 VkDescriptorSet descriptorSet,
7508 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
7509 const void* pData) {
7510}
7511
7512@extension("VK_KHR_descriptor_update_template") // 86
7513cmd void vkCmdPushDescriptorSetWithTemplateKHR(
7514 VkCommandBuffer commandBuffer,
7515 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
7516 VkPipelineLayout layout,
7517 u32 set,
7518 const void* pData) {
7519}
7520
7521@extension("VK_NVX_device_generated_commands") // 87
7522cmd void vkCmdProcessCommandsNVX(
7523 VkCommandBuffer commandBuffer,
7524 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) {
7525}
7526
7527@extension("VK_NVX_device_generated_commands") // 87
7528cmd void vkCmdReserveSpaceForCommandsNVX(
7529 VkCommandBuffer commandBuffer,
7530 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) {
7531}
7532
7533@extension("VK_NVX_device_generated_commands") // 87
7534cmd VkResult vkCreateIndirectCommandsLayoutNVX(
7535 VkDevice device,
7536 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
7537 const VkAllocationCallbacks* pAllocator,
7538 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) {
7539 return ?
7540}
7541
7542@extension("VK_NVX_device_generated_commands") // 87
7543cmd void vkDestroyIndirectCommandsLayoutNVX(
7544 VkDevice device,
7545 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
7546 const VkAllocationCallbacks* pAllocator) {
7547}
7548
7549@extension("VK_NVX_device_generated_commands") // 87
7550cmd VkResult vkCreateObjectTableNVX(
7551 VkDevice device,
7552 const VkObjectTableCreateInfoNVX* pCreateInfo,
7553 const VkAllocationCallbacks* pAllocator,
7554 VkObjectTableNVX* pObjectTable) {
7555 return ?
7556}
7557
7558@extension("VK_NVX_device_generated_commands") // 87
7559cmd void vkDestroyObjectTableNVX(
7560 VkDevice device,
7561 VkObjectTableNVX objectTable,
7562 const VkAllocationCallbacks* pAllocator) {
7563}
7564
7565@extension("VK_NVX_device_generated_commands") // 87
7566cmd VkResult vkRegisterObjectsNVX(
7567 VkDevice device,
7568 VkObjectTableNVX objectTable,
7569 u32 objectCount,
7570 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
7571 const u32* pObjectIndices) {
7572 return ?
7573}
7574
7575@extension("VK_NVX_device_generated_commands") // 87
7576cmd VkResult vkUnregisterObjectsNVX(
7577 VkDevice device,
7578 VkObjectTableNVX objectTable,
7579 u32 objectCount,
7580 const VkObjectEntryTypeNVX* pObjectEntryTypes,
7581 const u32* pObjectIndices) {
7582 return ?
7583}
7584
7585@extension("VK_NVX_device_generated_commands") // 87
7586cmd void vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
7587 VkPhysicalDevice physicalDevice,
7588 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
7589 VkDeviceGeneratedCommandsLimitsNVX* pLimits) {
7590}
7591
7592@extension("VK_NV_clip_space_w_scaling") // 88
7593cmd void vkCmdSetViewportWScalingNV(
7594 VkCommandBuffer commandBuffer,
7595 u32 firstViewport,
7596 u32 viewportCount,
7597 const VkViewportWScalingNV* pViewportWScalings) {
7598}
7599
7600@extension("VK_EXT_direct_mode_display") // 89
7601cmd VkResult vkReleaseDisplayEXT(
7602 VkPhysicalDevice physicalDevice,
7603 VkDisplayKHR display) {
7604 return ?
7605}
7606
7607@extension("VK_EXT_acquire_xlib_display") // 90
7608cmd VkResult vkAcquireXlibDisplayEXT(
7609 VkPhysicalDevice physicalDevice,
7610 platform.Display* dpy,
7611 VkDisplayKHR display) {
7612 return ?
7613}
7614
7615@extension("VK_EXT_acquire_xlib_display") // 90
7616cmd VkResult vkGetRandROutputDisplayEXT(
7617 VkPhysicalDevice physicalDevice,
7618 platform.Display* dpy,
7619 platform.RROutput rrOutput,
7620 VkDisplayKHR* pDisplay) {
7621 return ?
7622}
7623
7624@extension("VK_EXT_display_surface_counter") // 91
7625cmd VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT(
7626 VkPhysicalDevice physicalDevice,
7627 VkSurfaceKHR surface,
7628 VkSurfaceCapabilities2EXT* pSurfaceCapabilities) {
7629 return ?
7630}
7631
7632@extension("VK_EXT_display_control") // 92
7633cmd VkResult vkDisplayPowerControlEXT(
7634 VkDevice device,
7635 VkDisplayKHR display,
7636 const VkDisplayPowerInfoEXT* pDisplayPowerInfo) {
7637 return ?
7638}
7639
7640@extension("VK_EXT_display_control") // 92
7641cmd VkResult vkRegisterDeviceEventEXT(
7642 VkDevice device,
7643 const VkDeviceEventInfoEXT* pDeviceEventInfo,
7644 const VkAllocationCallbacks* pAllocator,
7645 VkFence* pFence) {
7646 return ?
7647}
7648
7649@extension("VK_EXT_display_control") // 92
7650cmd VkResult vkRegisterDisplayEventEXT(
7651 VkDevice device,
7652 VkDisplayKHR display,
7653 const VkDisplayEventInfoEXT* pDisplayEventInfo,
7654 const VkAllocationCallbacks* pAllocator,
7655 VkFence* pFence) {
7656 return ?
7657}
7658
7659@extension("VK_EXT_display_control") // 92
7660cmd VkResult vkGetSwapchainCounterEXT(
7661 VkDevice device,
7662 VkSwapchainKHR swapchain,
7663 VkSurfaceCounterFlagBitsEXT counter,
7664 u64* pCounterValue) {
7665 return ?
7666}
7667
7668@extension("VK_GOOGLE_display_timing") // 93
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07007669cmd VkResult vkGetRefreshCycleDurationGOOGLE(
Jesse Hallfdc8ab32017-03-10 21:01:57 -08007670 VkDevice device,
7671 VkSwapchainKHR swapchain,
7672 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) {
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07007673 deviceObject := GetDevice(device)
7674 swapchainObject := GetSwapchain(swapchain)
7675
7676 displayTimingProperties := ?
7677 pDisplayTimingProperties[0] = displayTimingProperties
7678
7679 return ?
7680}
7681
Jesse Hallad250842017-03-10 18:35:38 -08007682@extension("VK_GOOGLE_display_timing") // 93
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07007683cmd VkResult vkGetPastPresentationTimingGOOGLE(
Jesse Hallfdc8ab32017-03-10 21:01:57 -08007684 VkDevice device,
7685 VkSwapchainKHR swapchain,
7686 u32* pPresentationTimingCount,
7687 VkPastPresentationTimingGOOGLE* pPresentationTimings) {
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07007688 return ?
7689}
7690
Jesse Hallad250842017-03-10 18:35:38 -08007691@extension("VK_EXT_discard_rectangles") // 100
7692cmd void vkCmdSetDiscardRectangleEXT(
Jesse Hall26763382016-05-20 07:13:52 -07007693 VkCommandBuffer commandBuffer,
Jesse Hallad250842017-03-10 18:35:38 -08007694 u32 firstDiscardRectangle,
7695 u32 discardRectangleCount,
7696 const VkRect2D* pDiscardRectangles) {
Jesse Hall26763382016-05-20 07:13:52 -07007697}
7698
Jesse Hallad250842017-03-10 18:35:38 -08007699@extension("VK_EXT_hdr_metadata") // 106
Jesse Hall889cd9a2017-02-25 22:12:23 -08007700cmd void vkSetHdrMetadataEXT(
Jesse Hallfdc8ab32017-03-10 21:01:57 -08007701 VkDevice device,
7702 u32 swapchainCount,
7703 const VkSwapchainKHR* pSwapchains,
7704 const VkHdrMetadataEXT* pMetadata) {
Jesse Hall889cd9a2017-02-25 22:12:23 -08007705}
7706
Jesse Hallad250842017-03-10 18:35:38 -08007707@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbes2e12cb82017-01-18 11:45:17 +13007708cmd VkResult vkGetSwapchainStatusKHR(
7709 VkDevice device,
7710 VkSwapchainKHR swapchain) {
7711 return ?
7712}
7713
Jesse Hall05556b12017-05-18 17:40:25 -07007714@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13007715cmd VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR(
7716 VkPhysicalDevice physicalDevice,
7717 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7718 VkSurfaceCapabilities2KHR* pSurfaceCapabilities) {
7719 return ?
7720}
7721
Jesse Hall05556b12017-05-18 17:40:25 -07007722@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13007723cmd VkResult vkGetPhysicalDeviceSurfaceFormats2KHR(
7724 VkPhysicalDevice physicalDevice,
7725 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
7726 u32* pSurfaceFormatCount,
7727 VkSurfaceFormat2KHR* pSurfaceFormats) {
7728 return ?
7729}
7730
Jesse Hallad250842017-03-10 18:35:38 -08007731@extension("VK_MVK_ios_surface") // 123
7732cmd VkResult vkCreateIOSSurfaceMVK(
7733 VkInstance instance,
7734 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
7735 const VkAllocationCallbacks* pAllocator,
7736 VkSurfaceKHR* pSurface) {
7737 return ?
7738}
7739
7740@extension("VK_MVK_macos_surface") // 124
7741cmd VkResult vkCreateMacOSSurfaceMVK(
7742 VkInstance instance,
7743 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
7744 const VkAllocationCallbacks* pAllocator,
7745 VkSurfaceKHR* pSurface) {
7746 return ?
7747}
7748
Jesse Halld27f6aa2015-08-15 17:58:48 -07007749////////////////
7750// Validation //
7751////////////////
7752
7753extern void validate(string layerName, bool condition, string message)
7754
7755
7756/////////////////////////////
7757// Internal State Tracking //
7758/////////////////////////////
7759
7760StateObject State
7761
7762@internal class StateObject {
7763 // Dispatchable objects.
7764 map!(VkInstance, ref!InstanceObject) Instances
7765 map!(VkPhysicalDevice, ref!PhysicalDeviceObject) PhysicalDevices
7766 map!(VkDevice, ref!DeviceObject) Devices
7767 map!(VkQueue, ref!QueueObject) Queues
Jesse Hall3fbc8562015-11-29 22:10:52 -08007768 map!(VkCommandBuffer, ref!CommandBufferObject) CommandBuffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07007769
7770 // Non-dispatchable objects.
7771 map!(VkDeviceMemory, ref!DeviceMemoryObject) DeviceMemories
7772 map!(VkBuffer, ref!BufferObject) Buffers
7773 map!(VkBufferView, ref!BufferViewObject) BufferViews
7774 map!(VkImage, ref!ImageObject) Images
7775 map!(VkImageView, ref!ImageViewObject) ImageViews
Jesse Halld27f6aa2015-08-15 17:58:48 -07007776 map!(VkShaderModule, ref!ShaderModuleObject) ShaderModules
Jesse Halld27f6aa2015-08-15 17:58:48 -07007777 map!(VkPipeline, ref!PipelineObject) Pipelines
7778 map!(VkPipelineLayout, ref!PipelineLayoutObject) PipelineLayouts
7779 map!(VkSampler, ref!SamplerObject) Samplers
7780 map!(VkDescriptorSet, ref!DescriptorSetObject) DescriptorSets
7781 map!(VkDescriptorSetLayout, ref!DescriptorSetLayoutObject) DescriptorSetLayouts
7782 map!(VkDescriptorPool, ref!DescriptorPoolObject) DescriptorPools
Jesse Halld27f6aa2015-08-15 17:58:48 -07007783 map!(VkFence, ref!FenceObject) Fences
7784 map!(VkSemaphore, ref!SemaphoreObject) Semaphores
7785 map!(VkEvent, ref!EventObject) Events
7786 map!(VkQueryPool, ref!QueryPoolObject) QueryPools
7787 map!(VkFramebuffer, ref!FramebufferObject) Framebuffers
7788 map!(VkRenderPass, ref!RenderPassObject) RenderPasses
7789 map!(VkPipelineCache, ref!PipelineCacheObject) PipelineCaches
Jesse Hall3fbc8562015-11-29 22:10:52 -08007790 map!(VkCommandPool, ref!CommandPoolObject) CommandPools
Jesse Hall1356b0d2015-11-23 17:24:58 -08007791 map!(VkSurfaceKHR, ref!SurfaceObject) Surfaces
Michael Lentine88594d72015-11-12 12:49:45 -08007792 map!(VkSwapchainKHR, ref!SwapchainObject) Swapchains
Jesse Halld27f6aa2015-08-15 17:58:48 -07007793}
7794
7795@internal class InstanceObject {
7796}
7797
7798@internal class PhysicalDeviceObject {
7799 VkInstance instance
7800}
7801
7802@internal class DeviceObject {
7803 VkPhysicalDevice physicalDevice
7804}
7805
7806@internal class QueueObject {
7807 VkDevice device
7808 VkQueueFlags flags
7809}
7810
Jesse Hall3fbc8562015-11-29 22:10:52 -08007811@internal class CommandBufferObject {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007812 VkDevice device
7813 map!(u64, VkDeviceMemory) boundObjects
7814 VkQueueFlags queueFlags
7815}
7816
7817@internal class DeviceMemoryObject {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007818 VkDevice device
7819 VkDeviceSize allocationSize
7820 map!(u64, VkDeviceSize) boundObjects
7821 map!(VkCommandBuffer, VkCommandBuffer) boundCommandBuffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07007822}
7823
7824@internal class BufferObject {
7825 VkDevice device
Jesse Hall3fbc8562015-11-29 22:10:52 -08007826 VkDeviceMemory memory
7827 VkDeviceSize memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07007828}
7829
7830@internal class BufferViewObject {
7831 VkDevice device
7832 VkBuffer buffer
7833}
7834
7835@internal class ImageObject {
7836 VkDevice device
Jesse Hall3fbc8562015-11-29 22:10:52 -08007837 VkDeviceMemory memory
7838 VkDeviceSize memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07007839}
7840
7841@internal class ImageViewObject {
7842 VkDevice device
7843 VkImage image
7844}
7845
Jesse Halld27f6aa2015-08-15 17:58:48 -07007846@internal class ShaderObject {
7847 VkDevice device
7848}
7849
7850@internal class ShaderModuleObject {
7851 VkDevice device
7852}
7853
7854@internal class PipelineObject {
7855 VkDevice device
7856}
7857
7858@internal class PipelineLayoutObject {
7859 VkDevice device
7860}
7861
7862@internal class SamplerObject {
7863 VkDevice device
7864}
7865
7866@internal class DescriptorSetObject {
7867 VkDevice device
7868}
7869
7870@internal class DescriptorSetLayoutObject {
7871 VkDevice device
7872}
7873
7874@internal class DescriptorPoolObject {
7875 VkDevice device
7876}
7877
Jesse Halld27f6aa2015-08-15 17:58:48 -07007878@internal class FenceObject {
7879 VkDevice device
7880 bool signaled
7881}
7882
7883@internal class SemaphoreObject {
7884 VkDevice device
7885}
7886
7887@internal class EventObject {
7888 VkDevice device
7889}
7890
7891@internal class QueryPoolObject {
7892 VkDevice device
7893}
7894
7895@internal class FramebufferObject {
7896 VkDevice device
7897}
7898
7899@internal class RenderPassObject {
7900 VkDevice device
7901}
7902
7903@internal class PipelineCacheObject {
7904 VkDevice device
7905}
7906
Jesse Hall3fbc8562015-11-29 22:10:52 -08007907@internal class CommandPoolObject {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007908 VkDevice device
7909}
7910
Jesse Hall1356b0d2015-11-23 17:24:58 -08007911@internal class SurfaceObject {
7912 VkInstance instance
7913}
7914
Michael Lentine88594d72015-11-12 12:49:45 -08007915@internal class SwapchainObject {
7916 VkDevice device
7917}
7918
Jesse Halld27f6aa2015-08-15 17:58:48 -07007919macro ref!InstanceObject GetInstance(VkInstance instance) {
7920 assert(instance in State.Instances)
7921 return State.Instances[instance]
7922}
7923
7924macro ref!PhysicalDeviceObject GetPhysicalDevice(VkPhysicalDevice physicalDevice) {
7925 assert(physicalDevice in State.PhysicalDevices)
7926 return State.PhysicalDevices[physicalDevice]
7927}
7928
7929macro ref!DeviceObject GetDevice(VkDevice device) {
7930 assert(device in State.Devices)
7931 return State.Devices[device]
7932}
7933
7934macro ref!QueueObject GetQueue(VkQueue queue) {
7935 assert(queue in State.Queues)
7936 return State.Queues[queue]
7937}
7938
Jesse Hall3fbc8562015-11-29 22:10:52 -08007939macro ref!CommandBufferObject GetCommandBuffer(VkCommandBuffer commandBuffer) {
7940 assert(commandBuffer in State.CommandBuffers)
7941 return State.CommandBuffers[commandBuffer]
Jesse Halld27f6aa2015-08-15 17:58:48 -07007942}
7943
Jesse Hall3fbc8562015-11-29 22:10:52 -08007944macro ref!DeviceMemoryObject GetDeviceMemory(VkDeviceMemory memory) {
7945 assert(memory in State.DeviceMemories)
7946 return State.DeviceMemories[memory]
Jesse Halld27f6aa2015-08-15 17:58:48 -07007947}
7948
7949macro ref!BufferObject GetBuffer(VkBuffer buffer) {
7950 assert(buffer in State.Buffers)
7951 return State.Buffers[buffer]
7952}
7953
7954macro ref!BufferViewObject GetBufferView(VkBufferView bufferView) {
7955 assert(bufferView in State.BufferViews)
7956 return State.BufferViews[bufferView]
7957}
7958
7959macro ref!ImageObject GetImage(VkImage image) {
7960 assert(image in State.Images)
7961 return State.Images[image]
7962}
7963
7964macro ref!ImageViewObject GetImageView(VkImageView imageView) {
7965 assert(imageView in State.ImageViews)
7966 return State.ImageViews[imageView]
7967}
7968
Jesse Halld27f6aa2015-08-15 17:58:48 -07007969macro ref!ShaderModuleObject GetShaderModule(VkShaderModule shaderModule) {
7970 assert(shaderModule in State.ShaderModules)
7971 return State.ShaderModules[shaderModule]
7972}
7973
7974macro ref!PipelineObject GetPipeline(VkPipeline pipeline) {
7975 assert(pipeline in State.Pipelines)
7976 return State.Pipelines[pipeline]
7977}
7978
7979macro ref!PipelineLayoutObject GetPipelineLayout(VkPipelineLayout pipelineLayout) {
7980 assert(pipelineLayout in State.PipelineLayouts)
7981 return State.PipelineLayouts[pipelineLayout]
7982}
7983
7984macro ref!SamplerObject GetSampler(VkSampler sampler) {
7985 assert(sampler in State.Samplers)
7986 return State.Samplers[sampler]
7987}
7988
7989macro ref!DescriptorSetObject GetDescriptorSet(VkDescriptorSet descriptorSet) {
7990 assert(descriptorSet in State.DescriptorSets)
7991 return State.DescriptorSets[descriptorSet]
7992}
7993
7994macro ref!DescriptorSetLayoutObject GetDescriptorSetLayout(VkDescriptorSetLayout descriptorSetLayout) {
7995 assert(descriptorSetLayout in State.DescriptorSetLayouts)
7996 return State.DescriptorSetLayouts[descriptorSetLayout]
7997}
7998
7999macro ref!DescriptorPoolObject GetDescriptorPool(VkDescriptorPool descriptorPool) {
8000 assert(descriptorPool in State.DescriptorPools)
8001 return State.DescriptorPools[descriptorPool]
8002}
8003
Jesse Halld27f6aa2015-08-15 17:58:48 -07008004macro ref!FenceObject GetFence(VkFence fence) {
8005 assert(fence in State.Fences)
8006 return State.Fences[fence]
8007}
8008
8009macro ref!SemaphoreObject GetSemaphore(VkSemaphore semaphore) {
8010 assert(semaphore in State.Semaphores)
8011 return State.Semaphores[semaphore]
8012}
8013
8014macro ref!EventObject GetEvent(VkEvent event) {
8015 assert(event in State.Events)
8016 return State.Events[event]
8017}
8018
8019macro ref!QueryPoolObject GetQueryPool(VkQueryPool queryPool) {
8020 assert(queryPool in State.QueryPools)
8021 return State.QueryPools[queryPool]
8022}
8023
8024macro ref!FramebufferObject GetFramebuffer(VkFramebuffer framebuffer) {
8025 assert(framebuffer in State.Framebuffers)
8026 return State.Framebuffers[framebuffer]
8027}
8028
8029macro ref!RenderPassObject GetRenderPass(VkRenderPass renderPass) {
8030 assert(renderPass in State.RenderPasses)
8031 return State.RenderPasses[renderPass]
8032}
8033
8034macro ref!PipelineCacheObject GetPipelineCache(VkPipelineCache pipelineCache) {
8035 assert(pipelineCache in State.PipelineCaches)
8036 return State.PipelineCaches[pipelineCache]
8037}
8038
Jesse Hall3fbc8562015-11-29 22:10:52 -08008039macro ref!CommandPoolObject GetCommandPool(VkCommandPool commandPool) {
8040 assert(commandPool in State.CommandPools)
8041 return State.CommandPools[commandPool]
Jesse Hallf09c6b12015-08-15 19:54:28 -07008042}
Michael Lentine88594d72015-11-12 12:49:45 -08008043
Jesse Hall1356b0d2015-11-23 17:24:58 -08008044macro ref!SurfaceObject GetSurface(VkSurfaceKHR surface) {
8045 assert(surface in State.Surfaces)
8046 return State.Surfaces[surface]
8047}
8048
Michael Lentine88594d72015-11-12 12:49:45 -08008049macro ref!SwapchainObject GetSwapchain(VkSwapchainKHR swapchain) {
8050 assert(swapchain in State.Swapchains)
8051 return State.Swapchains[swapchain]
8052}
Jesse Halld8bade02015-11-24 10:24:18 -08008053
8054macro VkQueueFlags AddQueueFlag(VkQueueFlags flags, VkQueueFlagBits bit) {
8055 return as!VkQueueFlags(as!u32(flags) | as!u32(bit))
8056}