blob: d0e834638cd16a3d7a4fb4731f09dc21f58f25d3 [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
Daniel Kochf25f5bb2017-10-05 00:26:58 -040030define VERSION_MINOR 1
Jesse Hall35b4de12018-01-17 22:06:20 -080031define VERSION_PATCH 68
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.
Ian Elliottcd8ad332017-10-13 09:21:12 -060040@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -040041define VK_MAX_DEVICE_GROUP_SIZE 32
Jesse Hall35b4de12018-01-17 22:06:20 -080042@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -040043define VK_LUID_SIZE 8
Jesse Hall35b4de12018-01-17 22:06:20 -080044@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -040045define VK_QUEUE_FAMILY_EXTERNAL -2
Jesse Hall35b4de12018-01-17 22:06:20 -080046@extension("VK_EXT_queue_family_foreign")
47define VK_QUEUE_FAMILY_FOREIGN_EXT -3
Jesse Halld27f6aa2015-08-15 17:58:48 -070048
49// API keywords
50define VK_TRUE 1
51define VK_FALSE 0
Jesse Hall5ae3abb2015-10-08 14:00:22 -070052
53// API keyword, but needs special handling by some templates
54define NULL_HANDLE 0
Jesse Halld27f6aa2015-08-15 17:58:48 -070055
Jesse Halleb02c472017-02-24 15:13:45 -080056// 1
Jesse Hall33faaad2016-01-24 21:00:49 -080057@extension("VK_KHR_surface") define VK_KHR_SURFACE_SPEC_VERSION 25
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080058@extension("VK_KHR_surface") define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080059
Jesse Halleb02c472017-02-24 15:13:45 -080060// 2
Daniel Kochf25f5bb2017-10-05 00:26:58 -040061@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_SPEC_VERSION 70
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080062@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain"
Jesse Hall1356b0d2015-11-23 17:24:58 -080063
Jesse Halleb02c472017-02-24 15:13:45 -080064// 3
Jesse Hall543a7ff2016-01-08 16:38:30 -080065@extension("VK_KHR_display") define VK_KHR_DISPLAY_SPEC_VERSION 21
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080066@extension("VK_KHR_display") define VK_KHR_DISPLAY_EXTENSION_NAME "VK_KHR_display"
Jesse Hall1356b0d2015-11-23 17:24:58 -080067
Jesse Halleb02c472017-02-24 15:13:45 -080068// 4
Jesse Hall543a7ff2016-01-08 16:38:30 -080069@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 9
Jesse Hall0e74f002015-11-30 11:37:59 -080070@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
Jesse Hall1356b0d2015-11-23 17:24:58 -080071
Jesse Halleb02c472017-02-24 15:13:45 -080072// 5
Jesse Hall543a7ff2016-01-08 16:38:30 -080073@extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080074@extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_NAME "VK_KHR_xlib_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080075
Jesse Halleb02c472017-02-24 15:13:45 -080076// 6
Jesse Hall543a7ff2016-01-08 16:38:30 -080077@extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080078@extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_NAME "VK_KHR_xcb_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080079
Jesse Halleb02c472017-02-24 15:13:45 -080080// 7
Jesse Hallfdc8ab32017-03-10 21:01:57 -080081@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080082@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_NAME "VK_KHR_wayland_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080083
Jesse Halleb02c472017-02-24 15:13:45 -080084// 8
Jesse Hall543a7ff2016-01-08 16:38:30 -080085@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_SPEC_VERSION 4
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080086@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_NAME "VK_KHR_mir_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080087
Jesse Halleb02c472017-02-24 15:13:45 -080088// 9
Jesse Hall33faaad2016-01-24 21:00:49 -080089@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080090@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_NAME "VK_KHR_android_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080091
Jesse Halleb02c472017-02-24 15:13:45 -080092// 10
Jesse Hall7ba0ac72017-07-07 17:13:23 -070093@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080094@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_NAME "VK_KHR_win32_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080095
Jesse Halleb02c472017-02-24 15:13:45 -080096// 11
Chris Forbes1d4e5542017-02-15 19:38:50 +130097@extension("VK_ANDROID_native_buffer") define VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION 7
Chia-I Wub262ddc2016-03-22 07:38:20 +080098@extension("VK_ANDROID_native_buffer") define VK_ANDROID_NATIVE_BUFFER_NAME "VK_ANDROID_native_buffer"
99
Jesse Halleb02c472017-02-24 15:13:45 -0800100// 12
Daniel Kochf25f5bb2017-10-05 00:26:58 -0400101@extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_SPEC_VERSION 9
Jesse Hall715b86a2016-01-16 16:34:29 -0800102@extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_NAME "VK_EXT_debug_report"
103
Jesse Halleb02c472017-02-24 15:13:45 -0800104// 13
Jesse Hall26763382016-05-20 07:13:52 -0700105@extension("VK_NV_glsl_shader") define VK_NV_GLSL_SHADER_SPEC_VERSION 1
106@extension("VK_NV_glsl_shader") define VK_NV_GLSL_SHADER_NAME "VK_NV_glsl_shader"
107
Jesse Hall77726222017-09-19 14:49:27 -0500108// 14
109@extension("VK_EXT_depth_range_unrestricted") define VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION 1
110@extension("VK_EXT_depth_range_unrestricted") define VK_EXT_DEPTH_RANGE_UNRESTRICTED_NAME "VK_EXT_depth_range_unrestricted"
111
Jesse Halleb02c472017-02-24 15:13:45 -0800112// 15
Jesse Hall26763382016-05-20 07:13:52 -0700113@extension("VK_KHR_sampler_mirror_clamp_to_edge") define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 1
114@extension("VK_KHR_sampler_mirror_clamp_to_edge") define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_NAME "VK_KHR_sampler_mirror_clamp_to_edge"
115
Jesse Halleb02c472017-02-24 15:13:45 -0800116// 16
Jesse Hall26763382016-05-20 07:13:52 -0700117@extension("VK_IMG_filter_cubic") define VK_IMG_FILTER_CUBIC_SPEC_VERSION 1
118@extension("VK_IMG_filter_cubic") define VK_IMG_FILTER_CUBIC_NAME "VK_IMG_filter_cubic"
119
Jesse Halleb02c472017-02-24 15:13:45 -0800120// 19
Jesse Hall26763382016-05-20 07:13:52 -0700121@extension("VK_AMD_rasterization_order") define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1
122@extension("VK_AMD_rasterization_order") define VK_AMD_RASTERIZATION_ORDER_NAME "VK_AMD_rasterization_order"
123
Jesse Halleb02c472017-02-24 15:13:45 -0800124// 21
Jesse Hall56d386a2016-07-26 15:20:40 -0700125@extension("VK_AMD_shader_trinary_minmax") define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1
126@extension("VK_AMD_shader_trinary_minmax") define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax"
127
Jesse Halleb02c472017-02-24 15:13:45 -0800128// 22
Jesse Hall56d386a2016-07-26 15:20:40 -0700129@extension("VK_AMD_shader_explicit_vertex_parameter") define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1
130@extension("VK_AMD_shader_explicit_vertex_parameter") define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter"
131
Jesse Halleb02c472017-02-24 15:13:45 -0800132// 23
Jesse Hall8f49fcb2017-03-06 16:02:58 -0800133@extension("VK_EXT_debug_marker") define VK_EXT_DEBUG_MARKER_SPEC_VERSION 4
Jesse Hall26763382016-05-20 07:13:52 -0700134@extension("VK_EXT_debug_marker") define VK_EXT_DEBUG_MARKER_NAME "VK_EXT_debug_marker"
135
Jesse Halleb02c472017-02-24 15:13:45 -0800136// 26
Jesse Hall56d386a2016-07-26 15:20:40 -0700137@extension("VK_AMD_gcn_shader") define VK_AMD_GCN_SHADER_SPEC_VERSION 1
138@extension("VK_AMD_gcn_shader") define VK_AMD_GCN_SHADER_EXTENSION_NAME "VK_AMD_gcn_shader"
139
Jesse Halleb02c472017-02-24 15:13:45 -0800140// 27
Jesse Hall56d386a2016-07-26 15:20:40 -0700141@extension("VK_NV_dedicated_allocation") define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1
142@extension("VK_NV_dedicated_allocation") define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation"
143
Jesse Halleb02c472017-02-24 15:13:45 -0800144// 28
Chris Forbes289cb792016-12-30 15:03:55 +1300145@extension("VK_IMG_format_pvrtc") define VK_IMG_FORMAT_PVRTC_SPEC_VERSION 1
146@extension("VK_IMG_format_pvrtc") define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc"
147
Jesse Halleb02c472017-02-24 15:13:45 -0800148// 34
149@extension("VK_AMD_draw_indirect_count") define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
150@extension("VK_AMD_draw_indirect_count") define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count"
151
152// 36
153@extension("VK_AMD_negative_viewport_height") define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1
154@extension("VK_AMD_negative_viewport_height") define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height"
155
156// 37
157@extension("VK_AMD_gpu_shader_half_float") define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 1
158@extension("VK_AMD_gpu_shader_half_float") define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float"
159
160// 38
161@extension("VK_AMD_shader_ballot") define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1
162@extension("VK_AMD_shader_ballot") define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot"
163
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700164// 42
165@extension("VK_AMD_texture_gather_bias_lod") define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1
166@extension("VK_AMD_texture_gather_bias_lod") define VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME "VK_AMD_texture_gather_bias_lod"
167
Jesse Hall35b4de12018-01-17 22:06:20 -0800168// 43
169@extension("VK_AMD_shader_info") define VK_AMD_SHADER_INFO_SPEC_VERSION 1
170@extension("VK_AMD_shader_info") define VK_AMD_SHADER_INFO_EXTENSION_NAME "VK_AMD_shader_info"
171
172// 47
173@extension("VK_AMD_shader_image_load_store_lod") define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1
174@extension("VK_AMD_shader_image_load_store_lod") define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME "VK_AMD_shader_image_load_store_lod"
175
Jesse Hallad250842017-03-10 18:35:38 -0800176// 54
Daniel Kochf25f5bb2017-10-05 00:26:58 -0400177@extension("VK_KHR_multiview") define VK_KHR_MULTIVIEW_SPEC_VERSION 1
178@extension("VK_KHR_multiview") define VK_KHR_MULTIVIEW_EXTENSION_NAME "VK_KHR_multiview"
Jesse Hallad250842017-03-10 18:35:38 -0800179
Jesse Halleb02c472017-02-24 15:13:45 -0800180// 56
Chris Forbes289cb792016-12-30 15:03:55 +1300181@extension("VK_NV_external_memory_capabilities") define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
182@extension("VK_NV_external_memory_capabilities") define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities"
183
Jesse Halleb02c472017-02-24 15:13:45 -0800184// 57
Chris Forbes289cb792016-12-30 15:03:55 +1300185@extension("VK_NV_external_memory") define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1
186@extension("VK_NV_external_memory") define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory"
187
Jesse Halleb02c472017-02-24 15:13:45 -0800188// 58
Chris Forbes289cb792016-12-30 15:03:55 +1300189@extension("VK_NV_external_memory_win32") define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
190@extension("VK_NV_external_memory_win32") define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
191
Jesse Halleb02c472017-02-24 15:13:45 -0800192// 59
Chris Forbes289cb792016-12-30 15:03:55 +1300193@extension("VK_NV_win32_keyed_mutex") define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 1
194@extension("VK_NV_win32_keyed_mutex") define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
195
Jesse Hall889cd9a2017-02-25 22:12:23 -0800196// 60
197@extension("VK_KHR_get_physical_device_properties2") define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 1
198@extension("VK_KHR_get_physical_device_properties2") define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2"
199
Jesse Hallad250842017-03-10 18:35:38 -0800200// 61
Daniel Kochf25f5bb2017-10-05 00:26:58 -0400201@extension("VK_KHR_device_group") define VK_KHR_DEVICE_GROUP_SPEC_VERSION 3
202@extension("VK_KHR_device_group") define VK_KHR_DEVICE_GROUP_EXTENSION_NAME "VK_KHR_device_group"
Jesse Hallad250842017-03-10 18:35:38 -0800203
Jesse Halleb02c472017-02-24 15:13:45 -0800204// 62
Chris Forbes289cb792016-12-30 15:03:55 +1300205@extension("VK_EXT_validation_flags") define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 1
206@extension("VK_EXT_validation_flags") define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags"
207
Jesse Hall77ad05b2017-03-10 22:02:20 -0800208// 63
209@extension("VK_NN_vi_surface") define VK_NN_VI_SURFACE_SPEC_VERSION 1
210@extension("VK_NN_vi_surface") define VK_NN_VI_SURFACE_EXTENSION_NAME "VK_NN_vi_surface"
211
212// 64
213@extension("VK_KHR_shader_draw_parameters") define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1
214@extension("VK_KHR_shader_draw_parameters") define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters"
215
216// 65
217@extension("VK_EXT_shader_subgroup_ballot") define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1
218@extension("VK_EXT_shader_subgroup_ballot") define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot"
219
220// 66
221@extension("VK_EXT_shader_subgroup_vote") define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1
222@extension("VK_EXT_shader_subgroup_vote") define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote"
223
224// 70
225@extension("VK_KHR_maintenance1") define VK_KHR_MAINTENANCE1_SPEC_VERSION 1
226@extension("VK_KHR_maintenance1") define VK_KHR_MAINTENANCE1_EXTENSION_NAME "VK_KHR_maintenance1"
227
Jesse Hallad250842017-03-10 18:35:38 -0800228// 71
Daniel Kochf25f5bb2017-10-05 00:26:58 -0400229@extension("VK_KHR_device_group_creation") define VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION 1
230@extension("VK_KHR_device_group_creation") define VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHR_device_group_creation"
Jesse Hallad250842017-03-10 18:35:38 -0800231
232// 72
Jesse Hall9492f992017-08-28 12:10:06 -0700233@extension("VK_KHR_external_memory_capabilities") define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
234@extension("VK_KHR_external_memory_capabilities") define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_memory_capabilities"
Jesse Hallad250842017-03-10 18:35:38 -0800235
236// 73
Jesse Hall9492f992017-08-28 12:10:06 -0700237@extension("VK_KHR_external_memory") define VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION 1
238@extension("VK_KHR_external_memory") define VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHR_external_memory"
Jesse Hallad250842017-03-10 18:35:38 -0800239
240// 74
Jesse Hall9492f992017-08-28 12:10:06 -0700241@extension("VK_KHR_external_memory_win32") define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
242@extension("VK_KHR_external_memory_win32") define VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHR_external_memory_win32"
Jesse Hallad250842017-03-10 18:35:38 -0800243
244// 75
Jesse Hall9492f992017-08-28 12:10:06 -0700245@extension("VK_KHR_external_memory_fd") define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1
246@extension("VK_KHR_external_memory_fd") define VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHR_external_memory_fd"
Jesse Hallad250842017-03-10 18:35:38 -0800247
248// 76
Jesse Hall9492f992017-08-28 12:10:06 -0700249@extension("VK_KHR_win32_keyed_mutex") define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1
250@extension("VK_KHR_win32_keyed_mutex") define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHR_win32_keyed_mutex"
Jesse Hallad250842017-03-10 18:35:38 -0800251
252// 77
Jesse Hall9492f992017-08-28 12:10:06 -0700253@extension("VK_KHR_external_semaphore_capabilities") define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1
254@extension("VK_KHR_external_semaphore_capabilities") define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_semaphore_capabilities"
Jesse Hallad250842017-03-10 18:35:38 -0800255
256// 78
Jesse Hall9492f992017-08-28 12:10:06 -0700257@extension("VK_KHR_external_semaphore") define VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
258@extension("VK_KHR_external_semaphore") define VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHR_external_semaphore"
Jesse Hallad250842017-03-10 18:35:38 -0800259
260// 79
Jesse Hall9492f992017-08-28 12:10:06 -0700261@extension("VK_KHR_external_semaphore_win32") define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1
262@extension("VK_KHR_external_semaphore_win32") define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHR_external_semaphore_win32"
Jesse Hallad250842017-03-10 18:35:38 -0800263
264// 80
Jesse Hall9492f992017-08-28 12:10:06 -0700265@extension("VK_KHR_external_semaphore_fd") define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1
266@extension("VK_KHR_external_semaphore_fd") define VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHR_external_semaphore_fd"
Jesse Hallad250842017-03-10 18:35:38 -0800267
268// 81
Daniel Kochf25f5bb2017-10-05 00:26:58 -0400269@extension("VK_KHR_push_descriptor") define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 2
Jesse Hallad250842017-03-10 18:35:38 -0800270@extension("VK_KHR_push_descriptor") define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor"
271
Jesse Hall9492f992017-08-28 12:10:06 -0700272// 84
273@extension("VK_KHR_16bit_storage") define VK_KHR_16BIT_STORAGE_SPEC_VERSION 1
274@extension("VK_KHR_16bit_storage") define VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage"
275
Jesse Hall889cd9a2017-02-25 22:12:23 -0800276// 85
277@extension("VK_KHR_incremental_present") define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1
Jesse Hallf5ad48b2017-03-20 13:09:19 -0700278@extension("VK_KHR_incremental_present") define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present"
Jesse Hall889cd9a2017-02-25 22:12:23 -0800279
Jesse Hallad250842017-03-10 18:35:38 -0800280// 86
281@extension("VK_KHR_descriptor_update_template") define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1
282@extension("VK_KHR_descriptor_update_template") define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template"
283
Jesse Halleb02c472017-02-24 15:13:45 -0800284// 87
Jesse Hall77726222017-09-19 14:49:27 -0500285@extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3
Chris Forbes289cb792016-12-30 15:03:55 +1300286@extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands"
287
Jesse Hallad250842017-03-10 18:35:38 -0800288// 88
289@extension("VK_NV_clip_space_w_scaling") define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1
290@extension("VK_NV_clip_space_w_scaling") define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling"
291
Jesse Hall77ad05b2017-03-10 22:02:20 -0800292// 89
293@extension("VK_EXT_direct_mode_display") define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1
294@extension("VK_EXT_direct_mode_display") define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display"
295
296// 90
297@extension("VK_EXT_acquire_xlib_display") define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1
298@extension("VK_EXT_acquire_xlib_display") define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display"
299
300// 91
301@extension("VK_EXT_display_surface_counter") define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1
302@extension("VK_EXT_display_surface_counter") define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter"
303
304// 92
305@extension("VK_EXT_display_control") define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1
306@extension("VK_EXT_display_control") define VK_EXT_DISPLAY_CONTROL_COUNTER_EXTENSION_NAME "VK_EXT_display_control"
307
Jesse Hall889cd9a2017-02-25 22:12:23 -0800308// 93
309@extension("VK_GOOGLE_display_timing") define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1
Jesse Hallfdc8ab32017-03-10 21:01:57 -0800310@extension("VK_GOOGLE_display_timing") define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing"
Jesse Hall889cd9a2017-02-25 22:12:23 -0800311
Jesse Hallad250842017-03-10 18:35:38 -0800312// 95
313@extension("VK_NV_sample_mask_override_coverage") define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1
314@extension("VK_NV_sample_mask_override_coverage") define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage"
315
316// 96
317@extension("VK_NV_geometry_shader_passthrough") define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1
318@extension("VK_NV_geometry_shader_passthrough") define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough"
319
320// 97
321@extension("VK_NV_viewport_array2") define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION 1
322@extension("VK_NV_viewport_array2") define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME "VK_NV_viewport_array2"
323
324// 98
325@extension("VK_NVX_multiview_per_view_attributes") define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1
326@extension("VK_NVX_multiview_per_view_attributes") define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes"
327
328// 99
329@extension("VK_NV_viewport_swizzle") define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1
330@extension("VK_NV_viewport_swizzle") define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle"
331
332// 100
333@extension("VK_EXT_discard_rectangles") define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1
334@extension("VK_EXT_discard_rectangles") define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
335
Jesse Hall35b4de12018-01-17 22:06:20 -0800336// 102
337@extension("VK_EXT_conservative_rasterization") define VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION 1
338@extension("VK_EXT_conservative_rasterization") define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME "VK_EXT_conservative_rasterization"
339
Jesse Hall77ad05b2017-03-10 22:02:20 -0800340// 105
Jesse Hall77726222017-09-19 14:49:27 -0500341@extension("VK_EXT_swapchain_colorspace") define VK_EXT_SWAPCHAIN_COLORSPACE_SPEC_VERSION 3
Jesse Hallf5ad48b2017-03-20 13:09:19 -0700342@extension("VK_EXT_swapchain_colorspace") define VK_EXT_SWAPCHAIN_COLORSPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace"
Jesse Hall77ad05b2017-03-10 22:02:20 -0800343
Jesse Hall889cd9a2017-02-25 22:12:23 -0800344// 106
345@extension("VK_EXT_hdr_metadata") define VK_EXT_HDR_METADATA_SPEC_VERSION 1
346@extension("VK_EXT_hdr_metadata") define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata"
347
348// 112
Chris Forbes1d5f68c2017-01-31 10:17:01 +1300349@extension("VK_KHR_shared_presentable_image") define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1
350@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 +1300351
Jesse Hall9492f992017-08-28 12:10:06 -0700352// 113
353@extension("VK_KHR_external_fence_capabilities") define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION 1
354@extension("VK_KHR_external_fence_capabilities") define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_fence_capabilities"
355
356// 114
357@extension("VK_KHR_external_fence") define VK_KHR_EXTERNAL_FENCE_SPEC_VERSION 1
358@extension("VK_KHR_external_fence") define VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME "VK_KHR_external_fence"
359
360// 115
361@extension("VK_KHR_external_fence_win32") define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1
362@extension("VK_KHR_external_fence_win32") define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32"
363
364// 116
365@extension("VK_KHR_external_fence_fd") define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1
366@extension("VK_KHR_external_fence_fd") define VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME "VK_KHR_external_fence_fd"
367
Jesse Hall076f95d2017-09-20 11:34:47 -0700368// 118
369@extension("VK_KHR_maintenance2") define VK_KHR_MAINTENANCE2_SPEC_VERSION 1
370@extension("VK_KHR_maintenance2") define VK_KHR_MAINTENANCE2_EXTENSION_NAME "VK_KHR_maintenance2"
371
Jesse Hall05556b12017-05-18 17:40:25 -0700372// 120
Chris Forbese2d3ee12017-03-16 16:10:15 +1300373@extension("VK_KHR_get_surface_capabilities2") define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1
374@extension("VK_KHR_get_surface_capabilities2") define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2"
375
Jesse Hall9492f992017-08-28 12:10:06 -0700376// 121
377@extension("VK_KHR_variable_pointers") define VK_KHR_VARIABLE_POINTERS_SPEC_VERSION 1
378@extension("VK_KHR_variable_pointers") define VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME "VK_KHR_variable_pointers"
379
Jesse Hallad250842017-03-10 18:35:38 -0800380// 123
381@extension("VK_MVK_ios_surface") define VK_MVK_IOS_SURFACE_SPEC_VERSION 1
382@extension("VK_MVK_ios_surface") define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface"
383
384// 124
385@extension("VK_MVK_macos_surface") define VK_MVK_MACOS_SURFACE_SPEC_VERSION 1
386@extension("VK_MVK_macos_surface") define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface"
387
Jesse Hall35b4de12018-01-17 22:06:20 -0800388// 126
389@extension("VK_EXT_external_memory_dma_buf") define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1
390@extension("VK_EXT_external_memory_dma_buf") define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME "VK_EXT_external_memory_dma_buf"
391
392// 127
393@extension("VK_EXT_queue_family_foreign") define VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION 1
394@extension("VK_EXT_queue_family_foreign") define VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME "VK_EXT_queue_family_foreign"
395
Jesse Hall9492f992017-08-28 12:10:06 -0700396// 128
Jesse Hall77726222017-09-19 14:49:27 -0500397@extension("VK_KHR_dedicated_allocation") define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3
Jesse Hall9492f992017-08-28 12:10:06 -0700398@extension("VK_KHR_dedicated_allocation") define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation"
399
Jesse Hall35b4de12018-01-17 22:06:20 -0800400// 128
401@extension("VK_EXT_debug_utils") define VK_EXT_DEBUG_UTILS_SPEC_VERSION 1
402@extension("VK_EXT_debug_utils") define VK_EXT_DEBUG_UTILS_EXTENSION_NAME "VK_EXT_debug_utils"
403
Jesse Halle2be6b82018-01-18 15:04:37 -0800404// 130
405@extension("VK_ANDROID_external_memory_android_hardware_buffer") define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 2
406@extension("VK_ANDROID_external_memory_android_hardware_buffer") define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME "VK_ANDROID_external_memory_android_hardware_buffer"
407
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700408// 131
409@extension("VK_EXT_sampler_filter_minmax") define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 1
410@extension("VK_EXT_sampler_filter_minmax") define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
411
Jesse Hall9492f992017-08-28 12:10:06 -0700412// 132
413@extension("VK_KHR_storage_buffer_storage_class") define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION 1
414@extension("VK_KHR_storage_buffer_storage_class") define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME "VK_KHR_storage_buffer_storage_class"
415
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700416// 133
417@extension("VK_AMD_gpu_shader_int16") define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 1
418@extension("VK_AMD_gpu_shader_int16") define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME "VK_AMD_gpu_shader_int16"
419
Jesse Hall77726222017-09-19 14:49:27 -0500420// 137
421@extension("VK_AMD_mixed_attachment_samples") define VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION 1
422@extension("VK_AMD_mixed_attachment_samples") define VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME "VK_AMD_mixed_attachment_samples"
423
424// 138
425@extension("VK_AMD_shader_fragment_mask") define VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION 1
426@extension("VK_AMD_shader_fragment_mask") define VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME "VK_AMD_shader_fragment_mask"
427
428// 141
429@extension("VK_EXT_shader_stencil_export") define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1
430@extension("VK_EXT_shader_stencil_export") define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME "VK_EXT_shader_stencil_export"
431
432// 144
433@extension("VK_EXT_sample_locations") define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1
434@extension("VK_EXT_sample_locations") define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations"
435
436// 145
437@extension("VK_KHR_relaxed_block_layout") define VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION 1
438@extension("VK_KHR_relaxed_block_layout") define VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME "VK_KHR_relaxed_block_layout"
439
Jesse Hall9492f992017-08-28 12:10:06 -0700440// 147
441@extension("VK_KHR_get_memory_requirements2") define VK_KHR_GET_MEMORY_REQUIREMENTS2_SPEC_VERSION 1
442@extension("VK_KHR_get_memory_requirements2") define VK_KHR_GET_MEMORY_REQUIREMENTS2_EXTENSION_NAME "VK_KHR_get_memory_requirements2"
443
Jesse Hall076f95d2017-09-20 11:34:47 -0700444// 148
445@extension("VK_KHR_image_format_list") define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1
446@extension("VK_KHR_image_format_list") define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME "VK_KHR_image_format_list"
447
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700448// 149
449@extension("VK_EXT_blend_operation_advanced") define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2
450@extension("VK_EXT_blend_operation_advanced") define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
451
452// 150
453@extension("VK_NV_fragment_coverage_to_color") define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1
454@extension("VK_NV_fragment_coverage_to_color") define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME "VK_NV_fragment_coverage_to_color"
455
456// 153
457@extension("VK_NV_framebuffer_mixed_samples") define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1
458@extension("VK_NV_framebuffer_mixed_samples") define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME "VK_NV_framebuffer_mixed_samples"
459
460// 154
461@extension("VK_NV_fill_rectangle") define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1
462@extension("VK_NV_fill_rectangle") define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle"
463
Jesse Hall77726222017-09-19 14:49:27 -0500464// 156
465@extension("VK_EXT_post_depth_coverage") define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1
466@extension("VK_EXT_post_depth_coverage") define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage"
467
Jesse Hall076f95d2017-09-20 11:34:47 -0700468// 157
469@extension("VK_KHR_sampler_ycbcr_conversion") define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 1
470@extension("VK_KHR_sampler_ycbcr_conversion") define VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME "VK_KHR_sampler_ycbcr_conversion"
471
472// 158
473@extension("VK_KHR_bind_memory2") define VK_KHR_BIND_MEMORY2_SPEC_VERSION 1
474@extension("VK_KHR_bind_memory2") define VK_KHR_BIND_MEMORY2_EXTENSION_NAME "VK_KHR_bind_memory2"
475
Jesse Hall77726222017-09-19 14:49:27 -0500476// 161
477@extension("VK_EXT_validation_cache") define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1
478@extension("VK_EXT_validation_cache") define VK_EXT_VALIDATION_CACHE_EXTENSION_NAME "VK_EXT_validation_cache"
479
480// 165
481@extension("VK_EXT_shader_viewport_index_layer") define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION 1
482@extension("VK_EXT_shader_viewport_index_layer") define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME "VK_EXT_shader_viewport_index_layer"
483
Daniel Kochf25f5bb2017-10-05 00:26:58 -0400484// 169
485@extension("VK_KHR_maintenance3") define VK_KHR_MAINTENANCE3_SPEC_VERSION 1
486@extension("VK_KHR_maintenance3") define VK_KHR_MAINTENANCE3_EXTENSION_NAME "VK_KHR_maintenance3"
487
Jesse Hall35b4de12018-01-17 22:06:20 -0800488// 175
489@extension("VK_EXT_global_priority") define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 1
490@extension("VK_EXT_global_priority") define VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME "VK_EXT_global_priority"
491
492// 179
493@extension("VK_EXT_external_memory_host") define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1
494@extension("VK_EXT_external_memory_host") define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host"
495
Jesse Halld27f6aa2015-08-15 17:58:48 -0700496/////////////
497// Types //
498/////////////
499
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700500type u32 VkBool32
501type u32 VkFlags
502type u64 VkDeviceSize
503type u32 VkSampleMask
504
Jesse Halld27f6aa2015-08-15 17:58:48 -0700505/// Dispatchable handle types.
506@dispatchHandle type u64 VkInstance
507@dispatchHandle type u64 VkPhysicalDevice
508@dispatchHandle type u64 VkDevice
509@dispatchHandle type u64 VkQueue
Jesse Hall3fbc8562015-11-29 22:10:52 -0800510@dispatchHandle type u64 VkCommandBuffer
Jesse Halld27f6aa2015-08-15 17:58:48 -0700511
512/// Non dispatchable handle types.
513@nonDispatchHandle type u64 VkDeviceMemory
Jesse Hall3fbc8562015-11-29 22:10:52 -0800514@nonDispatchHandle type u64 VkCommandPool
Jesse Halld27f6aa2015-08-15 17:58:48 -0700515@nonDispatchHandle type u64 VkBuffer
516@nonDispatchHandle type u64 VkBufferView
517@nonDispatchHandle type u64 VkImage
518@nonDispatchHandle type u64 VkImageView
Jesse Halld27f6aa2015-08-15 17:58:48 -0700519@nonDispatchHandle type u64 VkShaderModule
Jesse Halld27f6aa2015-08-15 17:58:48 -0700520@nonDispatchHandle type u64 VkPipeline
521@nonDispatchHandle type u64 VkPipelineLayout
522@nonDispatchHandle type u64 VkSampler
523@nonDispatchHandle type u64 VkDescriptorSet
524@nonDispatchHandle type u64 VkDescriptorSetLayout
525@nonDispatchHandle type u64 VkDescriptorPool
Jesse Halld27f6aa2015-08-15 17:58:48 -0700526@nonDispatchHandle type u64 VkFence
527@nonDispatchHandle type u64 VkSemaphore
528@nonDispatchHandle type u64 VkEvent
529@nonDispatchHandle type u64 VkQueryPool
530@nonDispatchHandle type u64 VkFramebuffer
531@nonDispatchHandle type u64 VkRenderPass
532@nonDispatchHandle type u64 VkPipelineCache
Jesse Hall1356b0d2015-11-23 17:24:58 -0800533
Ian Elliottcd8ad332017-10-13 09:21:12 -0600534@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -0400535@nonDispatchHandle type u64 VkSamplerYcbcrConversion
536@nonDispatchHandle type u64 VkDescriptorUpdateTemplate
537
Jesse Hallad250842017-03-10 18:35:38 -0800538// 1
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800539@extension("VK_KHR_surface") @nonDispatchHandle type u64 VkSurfaceKHR
Jesse Hall1356b0d2015-11-23 17:24:58 -0800540
Jesse Hallad250842017-03-10 18:35:38 -0800541// 2
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800542@extension("VK_KHR_swapchain") @nonDispatchHandle type u64 VkSwapchainKHR
Jesse Hall1356b0d2015-11-23 17:24:58 -0800543
Jesse Hallad250842017-03-10 18:35:38 -0800544// 3
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800545@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayKHR
546@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayModeKHR
Jesse Halld27f6aa2015-08-15 17:58:48 -0700547
Jesse Hallad250842017-03-10 18:35:38 -0800548// 12
Jesse Hall715b86a2016-01-16 16:34:29 -0800549@extension("VK_EXT_debug_report") @nonDispatchHandle type u64 VkDebugReportCallbackEXT
550
Jesse Hallad250842017-03-10 18:35:38 -0800551// 86
552@extension("VK_KHR_descriptor_update_template") @nonDispatchHandle type u64 VkDescriptorUpdateTemplateKHR
553
554// 87
Chris Forbes289cb792016-12-30 15:03:55 +1300555@extension("VK_NVX_device_generated_commands") @nonDispatchHandle type u64 VkObjectTableNVX
556@extension("VK_NVX_device_generated_commands") @nonDispatchHandle type u64 VkIndirectCommandsLayoutNVX
557
Jesse Hall35b4de12018-01-17 22:06:20 -0800558// 129
559@extension("VK_EXT_debug_utils") @nonDispatchHandle type u64 VkDebugUtilsMessengerEXT
560
Jesse Hall076f95d2017-09-20 11:34:47 -0700561// 157
562@extension("VK_KHR_sampler_ycbcr_conversion") @nonDispatchHandle type u64 VkSamplerYcbcrConversionKHR
563
Jesse Hall77726222017-09-19 14:49:27 -0500564// 161
565@extension("VK_EXT_validation_cache") @nonDispatchHandle type u64 VkValidationCacheEXT
Jesse Halld27f6aa2015-08-15 17:58:48 -0700566
567/////////////
568// Enums //
569/////////////
570
571enum VkImageLayout {
572 VK_IMAGE_LAYOUT_UNDEFINED = 0x00000000, /// Implicit layout an image is when its contents are undefined due to various reasons (e.g. right after creation)
573 VK_IMAGE_LAYOUT_GENERAL = 0x00000001, /// General layout when image can be used for any kind of access
574 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 0x00000002, /// Optimal layout when image is only used for color attachment read/write
575 VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 0x00000003, /// Optimal layout when image is only used for depth/stencil attachment read/write
576 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 0x00000004, /// Optimal layout when image is used for read only depth/stencil attachment and shader access
577 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 -0800578 VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 0x00000006, /// Optimal layout when image is used only as source of transfer operations
579 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 -0700580 VK_IMAGE_LAYOUT_PREINITIALIZED = 0x00000008, /// Initial layout used when the data is populated by the CPU
Jesse Hall1356b0d2015-11-23 17:24:58 -0800581
Ian Elliottcd8ad332017-10-13 09:21:12 -0600582 //@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -0400583 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000,
584 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001,
585
Jesse Hallad250842017-03-10 18:35:38 -0800586 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -0800587 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
Chris Forbesaf3a1112017-01-31 15:37:03 +1300588
Jesse Hall05556b12017-05-18 17:40:25 -0700589 //@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbesaf3a1112017-01-31 15:37:03 +1300590 VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
Jesse Hall076f95d2017-09-20 11:34:47 -0700591
592 //@extension("VK_KHR_maintenance2") // 118
593 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000117000,
594 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000117001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700595}
596
597enum VkAttachmentLoadOp {
598 VK_ATTACHMENT_LOAD_OP_LOAD = 0x00000000,
599 VK_ATTACHMENT_LOAD_OP_CLEAR = 0x00000001,
600 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 0x00000002,
601}
602
603enum VkAttachmentStoreOp {
604 VK_ATTACHMENT_STORE_OP_STORE = 0x00000000,
605 VK_ATTACHMENT_STORE_OP_DONT_CARE = 0x00000001,
606}
607
608enum VkImageType {
609 VK_IMAGE_TYPE_1D = 0x00000000,
610 VK_IMAGE_TYPE_2D = 0x00000001,
611 VK_IMAGE_TYPE_3D = 0x00000002,
612}
613
614enum VkImageTiling {
Jesse Hallc7467b72015-11-29 21:05:26 -0800615 VK_IMAGE_TILING_OPTIMAL = 0x00000000,
616 VK_IMAGE_TILING_LINEAR = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700617}
618
619enum VkImageViewType {
620 VK_IMAGE_VIEW_TYPE_1D = 0x00000000,
621 VK_IMAGE_VIEW_TYPE_2D = 0x00000001,
622 VK_IMAGE_VIEW_TYPE_3D = 0x00000002,
623 VK_IMAGE_VIEW_TYPE_CUBE = 0x00000003,
624 VK_IMAGE_VIEW_TYPE_1D_ARRAY = 0x00000004,
625 VK_IMAGE_VIEW_TYPE_2D_ARRAY = 0x00000005,
626 VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 0x00000006,
627}
628
Jesse Hall3fbc8562015-11-29 22:10:52 -0800629enum VkCommandBufferLevel {
630 VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0x00000000,
631 VK_COMMAND_BUFFER_LEVEL_SECONDARY = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700632}
633
Jesse Hall65ab5522015-11-30 00:07:16 -0800634enum VkComponentSwizzle {
635 VK_COMPONENT_SWIZZLE_IDENTITY = 0x00000000,
636 VK_COMPONENT_SWIZZLE_ZERO = 0x00000001,
637 VK_COMPONENT_SWIZZLE_ONE = 0x00000002,
638 VK_COMPONENT_SWIZZLE_R = 0x00000003,
639 VK_COMPONENT_SWIZZLE_G = 0x00000004,
640 VK_COMPONENT_SWIZZLE_B = 0x00000005,
641 VK_COMPONENT_SWIZZLE_A = 0x00000006,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700642}
643
644enum VkDescriptorType {
645 VK_DESCRIPTOR_TYPE_SAMPLER = 0x00000000,
646 VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 0x00000001,
647 VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 0x00000002,
648 VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 0x00000003,
649 VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 0x00000004,
650 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 0x00000005,
651 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 0x00000006,
652 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 0x00000007,
653 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 0x00000008,
654 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 0x00000009,
655 VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 0x0000000a,
656}
657
Jesse Halld27f6aa2015-08-15 17:58:48 -0700658enum VkQueryType {
659 VK_QUERY_TYPE_OCCLUSION = 0x00000000,
660 VK_QUERY_TYPE_PIPELINE_STATISTICS = 0x00000001, /// Optional
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800661 VK_QUERY_TYPE_TIMESTAMP = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700662}
663
Jesse Halld27f6aa2015-08-15 17:58:48 -0700664enum VkBorderColor {
665 VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0x00000000,
666 VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 0x00000001,
667 VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 0x00000002,
668 VK_BORDER_COLOR_INT_OPAQUE_BLACK = 0x00000003,
669 VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 0x00000004,
670 VK_BORDER_COLOR_INT_OPAQUE_WHITE = 0x00000005,
671}
672
673enum VkPipelineBindPoint {
Jesse Hallc7467b72015-11-29 21:05:26 -0800674 VK_PIPELINE_BIND_POINT_GRAPHICS = 0x00000000,
675 VK_PIPELINE_BIND_POINT_COMPUTE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700676}
677
678enum VkPrimitiveTopology {
679 VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0x00000000,
680 VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 0x00000001,
681 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 0x00000002,
682 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 0x00000003,
683 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 0x00000004,
684 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800685 VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 0x00000006,
686 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 0x00000007,
687 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 0x00000008,
688 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 0x00000009,
Jesse Hall091ed9e2015-11-30 00:55:29 -0800689 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 0x0000000a,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700690}
691
692enum VkSharingMode {
693 VK_SHARING_MODE_EXCLUSIVE = 0x00000000,
694 VK_SHARING_MODE_CONCURRENT = 0x00000001,
695}
696
697enum VkIndexType {
698 VK_INDEX_TYPE_UINT16 = 0x00000000,
699 VK_INDEX_TYPE_UINT32 = 0x00000001,
700}
701
Jesse Hall23ff73f2015-11-29 14:36:39 -0800702enum VkFilter {
703 VK_FILTER_NEAREST = 0x00000000,
704 VK_FILTER_LINEAR = 0x00000001,
Jesse Hall26763382016-05-20 07:13:52 -0700705
Jesse Hallad250842017-03-10 18:35:38 -0800706 //@extension("VK_IMG_filter_cubic") // 16
Jesse Hall26763382016-05-20 07:13:52 -0700707 VK_FILTER_CUBIC_IMG = 1000015000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700708}
709
Jesse Hall23ff73f2015-11-29 14:36:39 -0800710enum VkSamplerMipmapMode {
Jesse Hall23ff73f2015-11-29 14:36:39 -0800711 VK_SAMPLER_MIPMAP_MODE_NEAREST = 0x00000001, /// Choose nearest mip level
712 VK_SAMPLER_MIPMAP_MODE_LINEAR = 0x00000002, /// Linear filter between mip levels
Jesse Halld27f6aa2015-08-15 17:58:48 -0700713}
714
Jesse Hall23ff73f2015-11-29 14:36:39 -0800715enum VkSamplerAddressMode {
Jesse Hallc7467b72015-11-29 21:05:26 -0800716 VK_SAMPLER_ADDRESS_MODE_REPEAT = 0x00000000,
717 VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 0x00000001,
718 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 0x00000002,
719 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 0x00000003,
720 VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700721}
722
723enum VkCompareOp {
724 VK_COMPARE_OP_NEVER = 0x00000000,
725 VK_COMPARE_OP_LESS = 0x00000001,
726 VK_COMPARE_OP_EQUAL = 0x00000002,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800727 VK_COMPARE_OP_LESS_OR_EQUAL = 0x00000003,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700728 VK_COMPARE_OP_GREATER = 0x00000004,
729 VK_COMPARE_OP_NOT_EQUAL = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800730 VK_COMPARE_OP_GREATER_OR_EQUAL = 0x00000006,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700731 VK_COMPARE_OP_ALWAYS = 0x00000007,
732}
733
Jesse Hall65ab5522015-11-30 00:07:16 -0800734enum VkPolygonMode {
735 VK_POLYGON_MODE_FILL = 0x00000000,
736 VK_POLYGON_MODE_LINE = 0x00000001,
737 VK_POLYGON_MODE_POINT = 0x00000002,
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700738
739 //@extension("VK_NV_fill_rectangle") // 154
740 VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700741}
742
743enum VkFrontFace {
Jesse Hall3fbc8562015-11-29 22:10:52 -0800744 VK_FRONT_FACE_COUNTER_CLOCKWISE = 0x00000000,
745 VK_FRONT_FACE_CLOCKWISE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700746}
747
Jesse Hall65ab5522015-11-30 00:07:16 -0800748enum VkBlendFactor {
749 VK_BLEND_FACTOR_ZERO = 0x00000000,
750 VK_BLEND_FACTOR_ONE = 0x00000001,
751 VK_BLEND_FACTOR_SRC_COLOR = 0x00000002,
752 VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 0x00000003,
753 VK_BLEND_FACTOR_DST_COLOR = 0x00000004,
754 VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 0x00000005,
755 VK_BLEND_FACTOR_SRC_ALPHA = 0x00000006,
756 VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 0x00000007,
757 VK_BLEND_FACTOR_DST_ALPHA = 0x00000008,
758 VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 0x00000009,
759 VK_BLEND_FACTOR_CONSTANT_COLOR = 0x0000000a,
760 VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 0x0000000b,
761 VK_BLEND_FACTOR_CONSTANT_ALPHA = 0x0000000c,
762 VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 0x0000000d,
763 VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 0x0000000e,
764 VK_BLEND_FACTOR_SRC1_COLOR = 0x0000000f,
765 VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 0x00000010,
766 VK_BLEND_FACTOR_SRC1_ALPHA = 0x00000011,
767 VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 0x00000012,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700768}
769
770enum VkBlendOp {
771 VK_BLEND_OP_ADD = 0x00000000,
772 VK_BLEND_OP_SUBTRACT = 0x00000001,
773 VK_BLEND_OP_REVERSE_SUBTRACT = 0x00000002,
774 VK_BLEND_OP_MIN = 0x00000003,
775 VK_BLEND_OP_MAX = 0x00000004,
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700776
777 //@extension("VK_EXT_blend_operation_advanced") // 149
778 VK_BLEND_OP_ZERO_EXT = 1000148000,
779 VK_BLEND_OP_SRC_EXT = 1000148001,
780 VK_BLEND_OP_DST_EXT = 1000148002,
781 VK_BLEND_OP_SRC_OVER_EXT = 1000148003,
782 VK_BLEND_OP_DST_OVER_EXT = 1000148004,
783 VK_BLEND_OP_SRC_IN_EXT = 1000148005,
784 VK_BLEND_OP_DST_IN_EXT = 1000148006,
785 VK_BLEND_OP_SRC_OUT_EXT = 1000148007,
786 VK_BLEND_OP_DST_OUT_EXT = 1000148008,
787 VK_BLEND_OP_SRC_ATOP_EXT = 1000148009,
788 VK_BLEND_OP_DST_ATOP_EXT = 1000148010,
789 VK_BLEND_OP_XOR_EXT = 1000148011,
790 VK_BLEND_OP_MULTIPLY_EXT = 1000148012,
791 VK_BLEND_OP_SCREEN_EXT = 1000148013,
792 VK_BLEND_OP_OVERLAY_EXT = 1000148014,
793 VK_BLEND_OP_DARKEN_EXT = 1000148015,
794 VK_BLEND_OP_LIGHTEN_EXT = 1000148016,
795 VK_BLEND_OP_COLORDODGE_EXT = 1000148017,
796 VK_BLEND_OP_COLORBURN_EXT = 1000148018,
797 VK_BLEND_OP_HARDLIGHT_EXT = 1000148019,
798 VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020,
799 VK_BLEND_OP_DIFFERENCE_EXT = 1000148021,
800 VK_BLEND_OP_EXCLUSION_EXT = 1000148022,
801 VK_BLEND_OP_INVERT_EXT = 1000148023,
802 VK_BLEND_OP_INVERT_RGB_EXT = 1000148024,
803 VK_BLEND_OP_LINEARDODGE_EXT = 1000148025,
804 VK_BLEND_OP_LINEARBURN_EXT = 1000148026,
805 VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027,
806 VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028,
807 VK_BLEND_OP_PINLIGHT_EXT = 1000148029,
808 VK_BLEND_OP_HARDMIX_EXT = 1000148030,
809 VK_BLEND_OP_HSL_HUE_EXT = 1000148031,
810 VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032,
811 VK_BLEND_OP_HSL_COLOR_EXT = 1000148033,
812 VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034,
813 VK_BLEND_OP_PLUS_EXT = 1000148035,
814 VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036,
815 VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037,
816 VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038,
817 VK_BLEND_OP_MINUS_EXT = 1000148039,
818 VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040,
819 VK_BLEND_OP_CONTRAST_EXT = 1000148041,
820 VK_BLEND_OP_INVERT_OVG_EXT = 1000148042,
821 VK_BLEND_OP_RED_EXT = 1000148043,
822 VK_BLEND_OP_GREEN_EXT = 1000148044,
823 VK_BLEND_OP_BLUE_EXT = 1000148045,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700824}
825
826enum VkStencilOp {
827 VK_STENCIL_OP_KEEP = 0x00000000,
828 VK_STENCIL_OP_ZERO = 0x00000001,
829 VK_STENCIL_OP_REPLACE = 0x00000002,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800830 VK_STENCIL_OP_INCREMENT_AND_CLAMP = 0x00000003,
831 VK_STENCIL_OP_DECREMENT_AND_CLAMP = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700832 VK_STENCIL_OP_INVERT = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800833 VK_STENCIL_OP_INCREMENT_AND_WRAP = 0x00000006,
834 VK_STENCIL_OP_DECREMENT_AND_WRAP = 0x00000007,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700835}
836
837enum VkLogicOp {
838 VK_LOGIC_OP_CLEAR = 0x00000000,
839 VK_LOGIC_OP_AND = 0x00000001,
840 VK_LOGIC_OP_AND_REVERSE = 0x00000002,
841 VK_LOGIC_OP_COPY = 0x00000003,
842 VK_LOGIC_OP_AND_INVERTED = 0x00000004,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800843 VK_LOGIC_OP_NO_OP = 0x00000005,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700844 VK_LOGIC_OP_XOR = 0x00000006,
845 VK_LOGIC_OP_OR = 0x00000007,
846 VK_LOGIC_OP_NOR = 0x00000008,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800847 VK_LOGIC_OP_EQUIVALENT = 0x00000009,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700848 VK_LOGIC_OP_INVERT = 0x0000000a,
849 VK_LOGIC_OP_OR_REVERSE = 0x0000000b,
850 VK_LOGIC_OP_COPY_INVERTED = 0x0000000c,
851 VK_LOGIC_OP_OR_INVERTED = 0x0000000d,
852 VK_LOGIC_OP_NAND = 0x0000000e,
853 VK_LOGIC_OP_SET = 0x0000000f,
854}
855
Jesse Hall3fbc8562015-11-29 22:10:52 -0800856enum VkSystemAllocationScope {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800857 VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0x00000000,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800858 VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 0x00000001,
859 VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 0x00000002,
860 VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 0x00000003,
861 VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 0x00000004,
Jesse Hall03b6fe12015-11-24 12:44:21 -0800862}
863
Jesse Hall3fbc8562015-11-29 22:10:52 -0800864enum VkInternalAllocationType {
865 VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0x00000000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700866}
867
868enum VkPhysicalDeviceType {
869 VK_PHYSICAL_DEVICE_TYPE_OTHER = 0x00000000,
870 VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 0x00000001,
871 VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 0x00000002,
872 VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 0x00000003,
873 VK_PHYSICAL_DEVICE_TYPE_CPU = 0x00000004,
874}
875
Jesse Hall65ab5522015-11-30 00:07:16 -0800876enum VkVertexInputRate {
877 VK_VERTEX_INPUT_RATE_VERTEX = 0x00000000,
878 VK_VERTEX_INPUT_RATE_INSTANCE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700879}
880
881/// Vulkan format definitions
882enum VkFormat {
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800883 VK_FORMAT_UNDEFINED = 0,
884 VK_FORMAT_R4G4_UNORM_PACK8 = 1,
885 VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
886 VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
887 VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
888 VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
889 VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
890 VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
891 VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
892 VK_FORMAT_R8_UNORM = 9,
893 VK_FORMAT_R8_SNORM = 10,
894 VK_FORMAT_R8_USCALED = 11,
895 VK_FORMAT_R8_SSCALED = 12,
896 VK_FORMAT_R8_UINT = 13,
897 VK_FORMAT_R8_SINT = 14,
898 VK_FORMAT_R8_SRGB = 15,
899 VK_FORMAT_R8G8_UNORM = 16,
900 VK_FORMAT_R8G8_SNORM = 17,
901 VK_FORMAT_R8G8_USCALED = 18,
902 VK_FORMAT_R8G8_SSCALED = 19,
903 VK_FORMAT_R8G8_UINT = 20,
904 VK_FORMAT_R8G8_SINT = 21,
905 VK_FORMAT_R8G8_SRGB = 22,
906 VK_FORMAT_R8G8B8_UNORM = 23,
907 VK_FORMAT_R8G8B8_SNORM = 24,
908 VK_FORMAT_R8G8B8_USCALED = 25,
909 VK_FORMAT_R8G8B8_SSCALED = 26,
910 VK_FORMAT_R8G8B8_UINT = 27,
911 VK_FORMAT_R8G8B8_SINT = 28,
912 VK_FORMAT_R8G8B8_SRGB = 29,
913 VK_FORMAT_B8G8R8_UNORM = 30,
914 VK_FORMAT_B8G8R8_SNORM = 31,
915 VK_FORMAT_B8G8R8_USCALED = 32,
916 VK_FORMAT_B8G8R8_SSCALED = 33,
917 VK_FORMAT_B8G8R8_UINT = 34,
918 VK_FORMAT_B8G8R8_SINT = 35,
919 VK_FORMAT_B8G8R8_SRGB = 36,
920 VK_FORMAT_R8G8B8A8_UNORM = 37,
921 VK_FORMAT_R8G8B8A8_SNORM = 38,
922 VK_FORMAT_R8G8B8A8_USCALED = 39,
923 VK_FORMAT_R8G8B8A8_SSCALED = 40,
924 VK_FORMAT_R8G8B8A8_UINT = 41,
925 VK_FORMAT_R8G8B8A8_SINT = 42,
926 VK_FORMAT_R8G8B8A8_SRGB = 43,
927 VK_FORMAT_B8G8R8A8_UNORM = 44,
928 VK_FORMAT_B8G8R8A8_SNORM = 45,
929 VK_FORMAT_B8G8R8A8_USCALED = 46,
930 VK_FORMAT_B8G8R8A8_SSCALED = 47,
931 VK_FORMAT_B8G8R8A8_UINT = 48,
932 VK_FORMAT_B8G8R8A8_SINT = 49,
933 VK_FORMAT_B8G8R8A8_SRGB = 50,
934 VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
935 VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
936 VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
937 VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
938 VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
939 VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
940 VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
941 VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
942 VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
943 VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
944 VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
945 VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
946 VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
947 VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
948 VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
949 VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
950 VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
951 VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
952 VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
953 VK_FORMAT_R16_UNORM = 70,
954 VK_FORMAT_R16_SNORM = 71,
955 VK_FORMAT_R16_USCALED = 72,
956 VK_FORMAT_R16_SSCALED = 73,
957 VK_FORMAT_R16_UINT = 74,
958 VK_FORMAT_R16_SINT = 75,
959 VK_FORMAT_R16_SFLOAT = 76,
960 VK_FORMAT_R16G16_UNORM = 77,
961 VK_FORMAT_R16G16_SNORM = 78,
962 VK_FORMAT_R16G16_USCALED = 79,
963 VK_FORMAT_R16G16_SSCALED = 80,
964 VK_FORMAT_R16G16_UINT = 81,
965 VK_FORMAT_R16G16_SINT = 82,
966 VK_FORMAT_R16G16_SFLOAT = 83,
967 VK_FORMAT_R16G16B16_UNORM = 84,
968 VK_FORMAT_R16G16B16_SNORM = 85,
969 VK_FORMAT_R16G16B16_USCALED = 86,
970 VK_FORMAT_R16G16B16_SSCALED = 87,
971 VK_FORMAT_R16G16B16_UINT = 88,
972 VK_FORMAT_R16G16B16_SINT = 89,
973 VK_FORMAT_R16G16B16_SFLOAT = 90,
974 VK_FORMAT_R16G16B16A16_UNORM = 91,
975 VK_FORMAT_R16G16B16A16_SNORM = 92,
976 VK_FORMAT_R16G16B16A16_USCALED = 93,
977 VK_FORMAT_R16G16B16A16_SSCALED = 94,
978 VK_FORMAT_R16G16B16A16_UINT = 95,
979 VK_FORMAT_R16G16B16A16_SINT = 96,
980 VK_FORMAT_R16G16B16A16_SFLOAT = 97,
981 VK_FORMAT_R32_UINT = 98,
982 VK_FORMAT_R32_SINT = 99,
983 VK_FORMAT_R32_SFLOAT = 100,
984 VK_FORMAT_R32G32_UINT = 101,
985 VK_FORMAT_R32G32_SINT = 102,
986 VK_FORMAT_R32G32_SFLOAT = 103,
987 VK_FORMAT_R32G32B32_UINT = 104,
988 VK_FORMAT_R32G32B32_SINT = 105,
989 VK_FORMAT_R32G32B32_SFLOAT = 106,
990 VK_FORMAT_R32G32B32A32_UINT = 107,
991 VK_FORMAT_R32G32B32A32_SINT = 108,
992 VK_FORMAT_R32G32B32A32_SFLOAT = 109,
993 VK_FORMAT_R64_UINT = 110,
994 VK_FORMAT_R64_SINT = 111,
995 VK_FORMAT_R64_SFLOAT = 112,
996 VK_FORMAT_R64G64_UINT = 113,
997 VK_FORMAT_R64G64_SINT = 114,
998 VK_FORMAT_R64G64_SFLOAT = 115,
999 VK_FORMAT_R64G64B64_UINT = 116,
1000 VK_FORMAT_R64G64B64_SINT = 117,
1001 VK_FORMAT_R64G64B64_SFLOAT = 118,
1002 VK_FORMAT_R64G64B64A64_UINT = 119,
1003 VK_FORMAT_R64G64B64A64_SINT = 120,
1004 VK_FORMAT_R64G64B64A64_SFLOAT = 121,
1005 VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
1006 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
1007 VK_FORMAT_D16_UNORM = 124,
1008 VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
1009 VK_FORMAT_D32_SFLOAT = 126,
1010 VK_FORMAT_S8_UINT = 127,
1011 VK_FORMAT_D16_UNORM_S8_UINT = 128,
1012 VK_FORMAT_D24_UNORM_S8_UINT = 129,
1013 VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
1014 VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
1015 VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
1016 VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
1017 VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
1018 VK_FORMAT_BC2_UNORM_BLOCK = 135,
1019 VK_FORMAT_BC2_SRGB_BLOCK = 136,
1020 VK_FORMAT_BC3_UNORM_BLOCK = 137,
1021 VK_FORMAT_BC3_SRGB_BLOCK = 138,
1022 VK_FORMAT_BC4_UNORM_BLOCK = 139,
1023 VK_FORMAT_BC4_SNORM_BLOCK = 140,
1024 VK_FORMAT_BC5_UNORM_BLOCK = 141,
1025 VK_FORMAT_BC5_SNORM_BLOCK = 142,
1026 VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
1027 VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
1028 VK_FORMAT_BC7_UNORM_BLOCK = 145,
1029 VK_FORMAT_BC7_SRGB_BLOCK = 146,
1030 VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
1031 VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
1032 VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
1033 VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
1034 VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
1035 VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
1036 VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
1037 VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
1038 VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
1039 VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
1040 VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
1041 VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
1042 VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
1043 VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
1044 VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
1045 VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
1046 VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
1047 VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
1048 VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
1049 VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
1050 VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
1051 VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
1052 VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
1053 VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
1054 VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
1055 VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
1056 VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
1057 VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
1058 VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
1059 VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
1060 VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
1061 VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
1062 VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
1063 VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
1064 VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
1065 VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
1066 VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
1067 VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
Chris Forbes289cb792016-12-30 15:03:55 +13001068
Ian Elliottcd8ad332017-10-13 09:21:12 -06001069 //@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04001070 VK_FORMAT_G8B8G8R8_422_UNORM = 1000156000,
1071 VK_FORMAT_B8G8R8G8_422_UNORM = 1000156001,
1072 VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM = 1000156002,
1073 VK_FORMAT_G8_B8R8_2PLANE_420_UNORM = 1000156003,
1074 VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM = 1000156004,
1075 VK_FORMAT_G8_B8R8_2PLANE_422_UNORM = 1000156005,
1076 VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM = 1000156006,
1077 VK_FORMAT_R10X6_UNORM_PACK16 = 1000156007,
1078 VK_FORMAT_R10X6G10X6_UNORM_2PACK16 = 1000156008,
1079 VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16 = 1000156009,
1080 VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16 = 1000156010,
1081 VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16 = 1000156011,
1082 VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16 = 1000156012,
1083 VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16 = 1000156013,
1084 VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16 = 1000156014,
1085 VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16 = 1000156015,
1086 VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16 = 1000156016,
1087 VK_FORMAT_R12X4_UNORM_PACK16 = 1000156017,
1088 VK_FORMAT_R12X4G12X4_UNORM_2PACK16 = 1000156018,
1089 VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16 = 1000156019,
1090 VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16 = 1000156020,
1091 VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16 = 1000156021,
1092 VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16 = 1000156022,
1093 VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16 = 1000156023,
1094 VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16 = 1000156024,
1095 VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16 = 1000156025,
1096 VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16 = 1000156026,
1097 VK_FORMAT_G16B16G16R16_422_UNORM = 1000156027,
1098 VK_FORMAT_B16G16R16G16_422_UNORM = 1000156028,
1099 VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM = 1000156029,
1100 VK_FORMAT_G16_B16R16_2PLANE_420_UNORM = 1000156030,
1101 VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM = 1000156031,
1102 VK_FORMAT_G16_B16R16_2PLANE_422_UNORM = 1000156032,
1103 VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM = 1000156033,
1104
Jesse Hallad250842017-03-10 18:35:38 -08001105 //@extension("VK_IMG_format_pvrtc") // 28
Jesse Halleb02c472017-02-24 15:13:45 -08001106 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
1107 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
1108 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
1109 VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
1110 VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
1111 VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
1112 VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
1113 VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
Jesse Hall076f95d2017-09-20 11:34:47 -07001114
1115 //@extension("VK_KHR_sampler_ycbcr_conversion") // 157
1116 VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 1000156000,
1117 VK_FORMAT_B8G8R8G8_422_UNORM_KHR = 1000156001,
1118 VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = 1000156002,
1119 VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = 1000156003,
1120 VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = 1000156004,
1121 VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = 1000156005,
1122 VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = 1000156006,
1123 VK_FORMAT_R10X6_UNORM_PACK16_KHR = 1000156007,
1124 VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = 1000156008,
1125 VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = 1000156009,
1126 VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = 1000156010,
1127 VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = 1000156011,
1128 VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = 1000156012,
1129 VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = 1000156013,
1130 VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = 1000156014,
1131 VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = 1000156015,
1132 VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = 1000156016,
1133 VK_FORMAT_R12X4_UNORM_PACK16_KHR = 1000156017,
1134 VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = 1000156018,
1135 VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = 1000156019,
1136 VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = 1000156020,
1137 VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = 1000156021,
1138 VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = 1000156022,
1139 VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = 1000156023,
1140 VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = 1000156024,
1141 VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = 1000156025,
1142 VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = 1000156026,
1143 VK_FORMAT_G16B16G16R16_422_UNORM_KHR = 1000156027,
1144 VK_FORMAT_B16G16R16G16_422_UNORM_KHR = 1000156028,
1145 VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = 1000156029,
1146 VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = 1000156030,
1147 VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = 1000156031,
1148 VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = 1000156032,
1149 VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = 1000156033,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001150}
1151
Jesse Halld27f6aa2015-08-15 17:58:48 -07001152/// Structure type enumerant
1153enum VkStructureType {
1154 VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
Jesse Hallc7467b72015-11-29 21:05:26 -08001155 VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
1156 VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
1157 VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
1158 VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08001159 VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
Jesse Hallc7467b72015-11-29 21:05:26 -08001160 VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
1161 VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
1162 VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
1163 VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001164 VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
Jesse Hallc7467b72015-11-29 21:05:26 -08001165 VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
1166 VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
1167 VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
1168 VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
1169 VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
1170 VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001171 VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
1172 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
1173 VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
1174 VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
1175 VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
1176 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
1177 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
1178 VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
1179 VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
1180 VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
1181 VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
1182 VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
1183 VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
1184 VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
1185 VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
1186 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
1187 VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08001188 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001189 VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
1190 VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
1191 VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
1192 VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
1193 VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08001194 VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
Jesse Hall3dd678a2016-01-08 21:52:01 -08001195 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
1196 VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
1197 VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
1198 VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
1199 VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
1200 VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
1201 VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
1202 VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
Jesse Hall1356b0d2015-11-23 17:24:58 -08001203
Ian Elliottcd8ad332017-10-13 09:21:12 -06001204 //@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04001205 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000,
1206 VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000,
1207 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001,
1208 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000,
1209 VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000,
1210 VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001,
1211 VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000,
1212 VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003,
1213 VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004,
1214 VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005,
1215 VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006,
1216 VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013,
1217 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014,
1218 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000,
1219 VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001,
1220 VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000,
1221 VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001,
1222 VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002,
1223 VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003,
1224 VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004,
1225 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000,
1226 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001,
1227 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002,
1228 VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003,
1229 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004,
1230 VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005,
1231 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006,
1232 VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007,
1233 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008,
1234 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000,
1235 VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001,
1236 VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002,
1237 VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003,
1238 VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000,
1239 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001,
1240 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002,
1241 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES = 1000120000,
1242 VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000,
1243 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001,
1244 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002,
1245 VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003,
1246 VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000,
1247 VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001,
1248 VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002,
1249 VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003,
1250 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004,
1251 VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005,
1252 VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000,
1253 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000,
1254 VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001,
1255 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002,
1256 VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003,
1257 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004,
1258 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000,
1259 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001,
1260 VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002,
1261 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000,
1262 VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001,
1263 VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000,
1264 VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000,
1265 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000,
1266 VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001,
1267 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000,
1268 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001,
1269 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES = 1000063000,
1270 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007,
1271
Jesse Hallad250842017-03-10 18:35:38 -08001272 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -08001273 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
1274 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
Daniel Kochf25f5bb2017-10-05 00:26:58 -04001275 // added as interaction from VK_KHR_device_group / VK 1.1
1276 VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008,
1277 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009,
1278 VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010,
1279 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011,
1280 VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012,
Jesse Hall1356b0d2015-11-23 17:24:58 -08001281
Jesse Hallad250842017-03-10 18:35:38 -08001282 //@extension("VK_KHR_display") // 3
Jesse Hallbd888842015-11-30 21:44:14 -08001283 VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
1284 VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
Jesse Hall1356b0d2015-11-23 17:24:58 -08001285
Jesse Hallad250842017-03-10 18:35:38 -08001286 //@extension("VK_KHR_display_swapchain") // 4
Jesse Hallbd888842015-11-30 21:44:14 -08001287 VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR = 1000003000,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001288
Jesse Hallad250842017-03-10 18:35:38 -08001289 //@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001290 VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
1291
Jesse Hallad250842017-03-10 18:35:38 -08001292 //@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001293 VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
1294
Jesse Hallad250842017-03-10 18:35:38 -08001295 //@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001296 VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
1297
Jesse Hallad250842017-03-10 18:35:38 -08001298 //@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001299 VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000,
1300
Jesse Hallad250842017-03-10 18:35:38 -08001301 //@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001302 VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
1303
Jesse Hallad250842017-03-10 18:35:38 -08001304 //@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001305 VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
Jesse Hall543a7ff2016-01-08 16:38:30 -08001306
Jesse Hallad250842017-03-10 18:35:38 -08001307 //@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08001308 VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID = 1000010000,
Chris Forbes8e4438b2016-12-07 16:26:49 +13001309 VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID = 1000010001,
Chris Forbes1d4e5542017-02-15 19:38:50 +13001310 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID = 1000010002,
Chia-I Wub262ddc2016-03-22 07:38:20 +08001311
Jesse Hallad250842017-03-10 18:35:38 -08001312 //@extension("VK_EXT_debug_report") // 12
Jesse Hall26763382016-05-20 07:13:52 -07001313 VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
1314
Jesse Hallad250842017-03-10 18:35:38 -08001315 //@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07001316 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,
1317
Jesse Hallad250842017-03-10 18:35:38 -08001318 //@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07001319 VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,
Jesse Hall26763382016-05-20 07:13:52 -07001320 VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,
Jesse Hall26763382016-05-20 07:13:52 -07001321 VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,
Jesse Hall56d386a2016-07-26 15:20:40 -07001322
Jesse Hallad250842017-03-10 18:35:38 -08001323 //@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07001324 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
Jesse Hall56d386a2016-07-26 15:20:40 -07001325 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
Jesse Hall56d386a2016-07-26 15:20:40 -07001326 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
Chris Forbes289cb792016-12-30 15:03:55 +13001327
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001328 //@extension("VK_AMD_texture_gather_bias_lod") // 42
1329 VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000,
1330
Daniel Kochf25f5bb2017-10-05 00:26:58 -04001331 //@extension("VK_KHR_multiview") // 54
1332 VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR = 1000053000,
1333 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR = 1000053001,
1334 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR = 1000053002,
Jesse Hallad250842017-03-10 18:35:38 -08001335
1336 //@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08001337 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
1338 VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,
Chris Forbes289cb792016-12-30 15:03:55 +13001339
Jesse Hallad250842017-03-10 18:35:38 -08001340 //@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08001341 VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
1342 VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
Chris Forbes289cb792016-12-30 15:03:55 +13001343
Jesse Hallad250842017-03-10 18:35:38 -08001344 //@extension("VK_NV_win32_keyed_mutex") // 59
Chris Forbes289cb792016-12-30 15:03:55 +13001345 VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
1346
Jesse Hallad250842017-03-10 18:35:38 -08001347 //@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall889cd9a2017-02-25 22:12:23 -08001348 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000,
1349 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001,
1350 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002,
1351 VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003,
1352 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004,
1353 VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005,
1354 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006,
1355 VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007,
Chris Forbes1194ede2016-12-30 16:29:25 +13001356 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008,
1357
Daniel Kochf25f5bb2017-10-05 00:26:58 -04001358 //@extension("VK_KHR_device_group") // 61
1359 VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR = 1000060000,
1360 VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR = 1000060003,
1361 VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = 1000060004,
1362 VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR = 1000060005,
1363 VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR = 1000060006,
1364 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007,
1365 // tokens 08-12 are listed with VK_KHR_swapchain
1366 VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060013,
1367 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR = 1000060014,
Jesse Hallad250842017-03-10 18:35:38 -08001368
1369 //@extension("VK_EXT_validation_flags") // 62
Jesse Halleb02c472017-02-24 15:13:45 -08001370 VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
Chris Forbes289cb792016-12-30 15:03:55 +13001371
Jesse Hallad250842017-03-10 18:35:38 -08001372 //@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08001373 VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000,
1374
Daniel Kochf25f5bb2017-10-05 00:26:58 -04001375 //@extension("VK_KHR_device_group_creation") // 71
1376 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR = 1000070000,
1377 VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR = 1000070001,
Jesse Hallad250842017-03-10 18:35:38 -08001378
Jesse Hall9492f992017-08-28 12:10:06 -07001379 //@extension("VK_KHR_external_memory_capabilities") // 72
1380 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000,
1381 VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001,
1382 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002,
1383 VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003,
1384 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004,
Jesse Hallad250842017-03-10 18:35:38 -08001385
Jesse Hall9492f992017-08-28 12:10:06 -07001386 //@extension("VK_KHR_external_memory") // 73
1387 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000,
1388 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001,
1389 VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002,
Jesse Hallad250842017-03-10 18:35:38 -08001390
Jesse Hall9492f992017-08-28 12:10:06 -07001391 //@extension("VK_KHR_external_memory_win32") // 74
1392 VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000,
1393 VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001,
1394 VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002,
Jesse Hallad250842017-03-10 18:35:38 -08001395
Jesse Hall9492f992017-08-28 12:10:06 -07001396 //@extension("VK_KHR_external_memory_fd") // 75
1397 VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000,
1398 VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001,
Jesse Hallad250842017-03-10 18:35:38 -08001399
Jesse Hall9492f992017-08-28 12:10:06 -07001400 //@extension("VK_KHR_win32_keyed_mutex") // 76
1401 VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000,
Jesse Hallad250842017-03-10 18:35:38 -08001402
Jesse Hall9492f992017-08-28 12:10:06 -07001403 //@extension("VK_KHR_external_semaphore_capabilities") // 77
1404 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000,
1405 VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001,
Jesse Hallad250842017-03-10 18:35:38 -08001406
Jesse Hall9492f992017-08-28 12:10:06 -07001407 //@extension("VK_KHR_external_semaphore") // 78
1408 VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000,
Jesse Hallad250842017-03-10 18:35:38 -08001409
Jesse Hall9492f992017-08-28 12:10:06 -07001410 //@extension("VK_KHR_external_semaphore_win32") // 79
1411 VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000,
1412 VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001,
1413 VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002,
Jesse Hallad250842017-03-10 18:35:38 -08001414
Jesse Hall9492f992017-08-28 12:10:06 -07001415 //@extension("VK_KHR_external_semaphore_fd") // 80
1416 VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000,
1417 VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001,
Jesse Hallad250842017-03-10 18:35:38 -08001418
1419 //@extension("VK_KHR_push_descriptor") // 81
1420 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000,
1421
Jesse Hall9492f992017-08-28 12:10:06 -07001422 //@extension("VK_KHR_16bit_storage") // 84
1423 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000,
1424
Jesse Hallad250842017-03-10 18:35:38 -08001425 //@extension("VK_KHR_incremental_present") // 85
Jesse Hall889cd9a2017-02-25 22:12:23 -08001426 VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
Chris Forbes289cb792016-12-30 15:03:55 +13001427
Jesse Hallad250842017-03-10 18:35:38 -08001428 //@extension("VK_KHR_descriptor_update_template") // 86
1429 VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000,
1430
1431 //@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08001432 VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
1433 VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
1434 VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = 1000086002,
1435 VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = 1000086003,
1436 VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004,
1437 VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001438
Jesse Hallad250842017-03-10 18:35:38 -08001439 //@extension("VK_NV_clip_space_w_scaling") // 88
1440 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000,
1441
1442 //@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77726222017-09-19 14:49:27 -05001443 VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001444
Jesse Hallad250842017-03-10 18:35:38 -08001445 //@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001446 VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000,
1447 VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001,
1448 VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002,
1449 VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,
Jesse Hallad250842017-03-10 18:35:38 -08001450
1451 //@extension("VK_GOOGLE_display_timing") // 93
1452 VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000,
1453
1454 //@extension("VK_NVX_multiview_per_view_attributes") // 98
1455 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000,
1456
1457 //@extension("VK_NV_viewport_swizzle") // 99
1458 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000,
1459
1460 //@extension("VK_EXT_discard_rectangles") // 100
1461 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,
1462 VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,
1463
Jesse Hall35b4de12018-01-17 22:06:20 -08001464 //@extension("VK_EXT_conservative_rasterization") // 102
1465 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000,
1466 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001,
1467
Jesse Hallfdc8ab32017-03-10 21:01:57 -08001468 //@extension("VK_EXT_hdr_metadata") // 106
1469 VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
1470
Jesse Hall05556b12017-05-18 17:40:25 -07001471 //@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbese2d3ee12017-03-16 16:10:15 +13001472 VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
1473
Jesse Hall9492f992017-08-28 12:10:06 -07001474 //@extension("VK_KHR_external_fence_capabilities") // 113
1475 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000,
1476 VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001,
1477
1478 //@extension("VK_KHR_external_fence") // 114
1479 VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000,
1480
1481 //@extension("VK_KHR_external_fence_win32") // 115
1482 VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000,
1483 VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001,
1484 VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002,
1485
1486 //@extension("VK_KHR_external_fence_fd") // 117
1487 VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000,
1488 VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001,
1489
Jesse Hall076f95d2017-09-20 11:34:47 -07001490 //@extension("VK_KHR_maintenance2") // 118
1491 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000,
1492 VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001,
1493 VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002,
1494 VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003,
1495
Jesse Hall05556b12017-05-18 17:40:25 -07001496 //@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13001497 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,
1498 VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001,
1499 VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002,
1500
Jesse Hall9492f992017-08-28 12:10:06 -07001501 //@extension("VK_KHR_variable_pointers") // 121
1502 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000,
1503
Jesse Hallad250842017-03-10 18:35:38 -08001504 //@extension("VK_MVK_ios_surface") // 123
1505 VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000,
1506
1507 //@extension("VK_MVK_macos_surface") // 124
1508 VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001509
Jesse Hall9492f992017-08-28 12:10:06 -07001510 //@extension("VK_KHR_dedicated_allocation") // 128
1511 VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000,
1512 VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001,
1513
Jesse Hall35b4de12018-01-17 22:06:20 -08001514 //@extension("VK_EXT_debug_utils") // 129
1515 VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000,
1516 VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001,
1517 VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002,
1518 VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003,
1519 VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004,
1520
Jesse Halle2be6b82018-01-18 15:04:37 -08001521 //@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130
1522 VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000,
1523 VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001,
1524 VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002,
1525 VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003,
1526 VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004,
1527 VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005,
1528
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001529 //@extension("VK_EXT_sampler_filter_minmax") // 131
1530 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000,
1531 VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001,
1532
Jesse Hall77726222017-09-19 14:49:27 -05001533 //@extension("VK_EXT_sample_locations") // 144
1534 VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000,
1535 VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001,
1536 VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002,
1537 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003,
1538 VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004,
1539
Jesse Hall9492f992017-08-28 12:10:06 -07001540 //@extension("VK_KHR_get_memory_requirements2") // 147
1541 VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000,
1542 VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001,
1543 VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002,
1544 VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003,
1545 VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004,
1546
Jesse Hall076f95d2017-09-20 11:34:47 -07001547 //@extension("VK_KHR_image_format_list") // 148
1548 VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000,
1549
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001550 //@extension("VK_EXT_blend_operation_advanced") // 149
1551 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000,
1552 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001,
1553 VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
1554
1555 //@extension("VK_NV_fragment_coverage_to_color") // 150
1556 VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000,
1557
Jesse Hall77726222017-09-19 14:49:27 -05001558 //@extension("VK_NV_framebuffer_mixed_samples") // 153
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001559 VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000,
Jesse Hall77726222017-09-19 14:49:27 -05001560
Jesse Hall076f95d2017-09-20 11:34:47 -07001561 //@extension("VK_KHR_sampler_ycbcr_conversion") // 157
1562 VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = 1000156000,
1563 VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = 1000156001,
1564 VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = 1000156002,
1565 VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = 1000156003,
1566 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004,
1567 VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = 1000156005,
1568
1569 //@extension("VK_KHR_bind_memory2") // 158
1570 VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = 1000157000,
1571 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = 1000157001,
1572
Jesse Hall77726222017-09-19 14:49:27 -05001573 //@extension("VK_EXT_validation_cache") // 161
1574 VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,
1575 VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
Daniel Kochf25f5bb2017-10-05 00:26:58 -04001576
1577 //@extension("VK_KHR_maintenance3") // 169
1578 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR = 1000168000,
1579 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR = 1000168001,
Jesse Hall35b4de12018-01-17 22:06:20 -08001580
1581 //@extension("VK_EXT_global_priority") // 175
1582 VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000,
1583
1584 //@extension("VK_EXT_external_memory_host") // 179
1585 VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000,
1586 VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001,
1587 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001588}
1589
Jesse Hall65ab5522015-11-30 00:07:16 -08001590enum VkSubpassContents {
1591 VK_SUBPASS_CONTENTS_INLINE = 0x00000000,
1592 VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001593}
1594
Jesse Hall543a7ff2016-01-08 16:38:30 -08001595enum VkPipelineCacheHeaderVersion {
1596 VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
1597}
1598
Jesse Hallbd888842015-11-30 21:44:14 -08001599@lastUnused(-11)
Jesse Halld27f6aa2015-08-15 17:58:48 -07001600/// Error and return codes
1601enum VkResult {
1602 // Return codes for successful operation execution (positive values)
Jesse Hallbd888842015-11-30 21:44:14 -08001603 VK_SUCCESS = 0,
1604 VK_NOT_READY = 1,
1605 VK_TIMEOUT = 2,
1606 VK_EVENT_SET = 3,
1607 VK_EVENT_RESET = 4,
1608 VK_INCOMPLETE = 5,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001609
Jesse Hallad250842017-03-10 18:35:38 -08001610 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -08001611 VK_SUBOPTIMAL_KHR = 1000001003,
Jesse Hall1356b0d2015-11-23 17:24:58 -08001612
Jesse Halld27f6aa2015-08-15 17:58:48 -07001613 // Error codes (negative values)
Jesse Hallbd888842015-11-30 21:44:14 -08001614 VK_ERROR_OUT_OF_HOST_MEMORY = 0xFFFFFFFF, // -1
1615 VK_ERROR_OUT_OF_DEVICE_MEMORY = 0xFFFFFFFE, // -2
1616 VK_ERROR_INITIALIZATION_FAILED = 0xFFFFFFFD, // -3
1617 VK_ERROR_DEVICE_LOST = 0xFFFFFFFC, // -4
1618 VK_ERROR_MEMORY_MAP_FAILED = 0xFFFFFFFB, // -5
1619 VK_ERROR_LAYER_NOT_PRESENT = 0xFFFFFFFA, // -6
1620 VK_ERROR_EXTENSION_NOT_PRESENT = 0xFFFFFFF9, // -7
1621 VK_ERROR_FEATURE_NOT_PRESENT = 0xFFFFFFF8, // -8
1622 VK_ERROR_INCOMPATIBLE_DRIVER = 0xFFFFFFF7, // -9
1623 VK_ERROR_TOO_MANY_OBJECTS = 0xFFFFFFF6, // -10
1624 VK_ERROR_FORMAT_NOT_SUPPORTED = 0xFFFFFFF5, // -11
Jesse Hall56d386a2016-07-26 15:20:40 -07001625 VK_ERROR_FRAGMENTED_POOL = 0xFFFFFFF4, // -12
Jesse Hall1356b0d2015-11-23 17:24:58 -08001626
Ian Elliottcd8ad332017-10-13 09:21:12 -06001627 //@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04001628 VK_ERROR_OUT_OF_POOL_MEMORY = 0xC4642878, // -1000069000
1629 VK_ERROR_INVALID_EXTERNAL_HANDLE = 0xC4641CBD, // -1000072003
1630
Jesse Hallad250842017-03-10 18:35:38 -08001631 //@extension("VK_KHR_surface") // 1
Jesse Hallbd888842015-11-30 21:44:14 -08001632 VK_ERROR_SURFACE_LOST_KHR = 0xC4653600, // -1000000000
Jesse Hallad250842017-03-10 18:35:38 -08001633 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = 0xC46535FF, // -1000000001
Jesse Halla6429252015-11-29 18:59:42 -08001634
Jesse Hallad250842017-03-10 18:35:38 -08001635 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -08001636 VK_ERROR_OUT_OF_DATE_KHR = 0xC4653214, // -1000001004
Jesse Hall1356b0d2015-11-23 17:24:58 -08001637
Jesse Hallad250842017-03-10 18:35:38 -08001638 //@extension("VK_KHR_display_swapchain") // 4
Jesse Hallbd888842015-11-30 21:44:14 -08001639 VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = 0xC4652A47, // -1000003001
Jesse Hall1356b0d2015-11-23 17:24:58 -08001640
Jesse Hallad250842017-03-10 18:35:38 -08001641 //@extension("VK_EXT_debug_report") // 12
Jesse Hall543a7ff2016-01-08 16:38:30 -08001642 VK_ERROR_VALIDATION_FAILED_EXT = 0xC4650B07, // -1000011001
Jesse Hall26763382016-05-20 07:13:52 -07001643
Jesse Hallad250842017-03-10 18:35:38 -08001644 //@extension("VK_NV_glsl_shader") // 13
Jesse Hall26763382016-05-20 07:13:52 -07001645 VK_ERROR_INVALID_SHADER_NV = 0xC4650720, // -1000012000
Jesse Hall77ad05b2017-03-10 22:02:20 -08001646
Jesse Hallad250842017-03-10 18:35:38 -08001647 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08001648 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = 0xC4642878, // -1000069000
Jesse Hallad250842017-03-10 18:35:38 -08001649
Jesse Hall35b4de12018-01-17 22:06:20 -08001650 //@extension("VK_EXT_global_priority") // 175
1651 VK_ERROR_NOT_PERMITTED_EXT = 0xC4628E4F, // -1000174001
1652
Jesse Hall9492f992017-08-28 12:10:06 -07001653 //@extension("VK_KHR_external_memory") // 73
1654 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = 0xC4641CBD, // -1000072003
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001655}
1656
1657enum VkDynamicState {
1658 VK_DYNAMIC_STATE_VIEWPORT = 0x00000000,
1659 VK_DYNAMIC_STATE_SCISSOR = 0x00000001,
1660 VK_DYNAMIC_STATE_LINE_WIDTH = 0x00000002,
1661 VK_DYNAMIC_STATE_DEPTH_BIAS = 0x00000003,
1662 VK_DYNAMIC_STATE_BLEND_CONSTANTS = 0x00000004,
1663 VK_DYNAMIC_STATE_DEPTH_BOUNDS = 0x00000005,
1664 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 0x00000006,
1665 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 0x00000007,
1666 VK_DYNAMIC_STATE_STENCIL_REFERENCE = 0x00000008,
Jesse Hallad250842017-03-10 18:35:38 -08001667
1668 //@extension("VK_NV_clip_space_w_scaling") // 88
1669 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000,
1670
1671 //@extension("VK_EXT_discard_rectangles") // 100
1672 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
Jesse Hall77726222017-09-19 14:49:27 -05001673
1674 //@extension("VK_EXT_sample_locations") // 144
1675 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001676}
1677
Jesse Hall05556b12017-05-18 17:40:25 -07001678enum VkObjectType {
1679 VK_OBJECT_TYPE_UNKNOWN = 0,
1680 VK_OBJECT_TYPE_INSTANCE = 1,
1681 VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,
1682 VK_OBJECT_TYPE_DEVICE = 3,
1683 VK_OBJECT_TYPE_QUEUE = 4,
1684 VK_OBJECT_TYPE_SEMAPHORE = 5,
1685 VK_OBJECT_TYPE_COMMAND_BUFFER = 6,
1686 VK_OBJECT_TYPE_FENCE = 7,
1687 VK_OBJECT_TYPE_DEVICE_MEMORY = 8,
1688 VK_OBJECT_TYPE_BUFFER = 9,
1689 VK_OBJECT_TYPE_IMAGE = 10,
1690 VK_OBJECT_TYPE_EVENT = 11,
1691 VK_OBJECT_TYPE_QUERY_POOL = 12,
1692 VK_OBJECT_TYPE_BUFFER_VIEW = 13,
1693 VK_OBJECT_TYPE_IMAGE_VIEW = 14,
1694 VK_OBJECT_TYPE_SHADER_MODULE = 15,
1695 VK_OBJECT_TYPE_PIPELINE_CACHE = 16,
1696 VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,
1697 VK_OBJECT_TYPE_RENDER_PASS = 18,
1698 VK_OBJECT_TYPE_PIPELINE = 19,
1699 VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,
1700 VK_OBJECT_TYPE_SAMPLER = 21,
1701 VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,
1702 VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,
1703 VK_OBJECT_TYPE_FRAMEBUFFER = 24,
1704 VK_OBJECT_TYPE_COMMAND_POOL = 25,
1705
Ian Elliottcd8ad332017-10-13 09:21:12 -06001706 //@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04001707 VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION = 1000156000,
1708 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000,
1709
Jesse Hall05556b12017-05-18 17:40:25 -07001710 //@extension("VK_KHR_surface") // 1
1711 VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,
1712
1713 //@extension("VK_KHR_swapchain") // 2
1714 VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,
1715
1716 //@extension("VK_KHR_display") // 3
1717 VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000,
1718 VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001,
1719
1720 //@extension("VK_KHR_debug_report") // 12
1721 VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000,
1722
1723 //@extension("VK_KHR_descriptor_update_template") // 86
1724 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000,
1725
1726 //@extension("VK_NVX_device_generated_commands") // 87
1727 VK_OBJECT_TYPE_OBJECT_TABLE_NVX = 1000086000,
1728 VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = 1000086001,
Jesse Hall77726222017-09-19 14:49:27 -05001729
Jesse Hall35b4de12018-01-17 22:06:20 -08001730 //@extension("VK_EXT_debug_utils") // 129
1731 VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000,
1732
Jesse Hall076f95d2017-09-20 11:34:47 -07001733 //@extension("VK_KHR_sampler_ycbcr_conversion") // 157
1734 VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000,
1735
Jesse Hall77726222017-09-19 14:49:27 -05001736 //@extension("VK_EXT_validation_cache") // 161
1737 VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000,
Jesse Hall05556b12017-05-18 17:40:25 -07001738}
1739
Daniel Kochf25f5bb2017-10-05 00:26:58 -04001740
Ian Elliottcd8ad332017-10-13 09:21:12 -06001741//@vulkan1_1 enums
Daniel Kochf25f5bb2017-10-05 00:26:58 -04001742
1743enum VkPointClippingBehavior {
1744 VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES = 0,
1745 VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY = 1,
1746}
1747
1748enum VkTessellationDomainOrigin {
1749 VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT = 0,
1750 VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT = 1,
1751}
1752
1753enum VkSamplerYcbcrModelConversion {
1754 VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY = 0,
1755 VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY = 1,
1756 VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709 = 2,
1757 VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601 = 3,
1758 VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020 = 4,
1759}
1760
1761enum VkSamplerYcbcrRange {
1762 VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0,
1763 VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1,
1764}
1765
1766enum VkChromaLocation {
1767 VK_CHROMA_LOCATION_COSITED_EVEN = 0,
1768 VK_CHROMA_LOCATION_MIDPOINT = 1,
1769}
1770
1771enum VkDescriptorUpdateTemplateType {
1772 VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0,
1773 VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1,
1774}
1775
Jesse Hallad250842017-03-10 18:35:38 -08001776@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08001777enum VkPresentModeKHR {
1778 VK_PRESENT_MODE_IMMEDIATE_KHR = 0x00000000,
1779 VK_PRESENT_MODE_MAILBOX_KHR = 0x00000001,
1780 VK_PRESENT_MODE_FIFO_KHR = 0x00000002,
Jesse Hall03b6fe12015-11-24 12:44:21 -08001781 VK_PRESENT_MODE_FIFO_RELAXED_KHR = 0x00000003,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001782
Jesse Hall05556b12017-05-18 17:40:25 -07001783 //@extension("VK_KHR_shared_presentable_image") // 112
Jesse Hall77ad05b2017-03-10 22:02:20 -08001784 VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,
1785 VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,
Michael Lentine88594d72015-11-12 12:49:45 -08001786}
1787
Jesse Hallad250842017-03-10 18:35:38 -08001788@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08001789enum VkColorSpaceKHR {
Daniel Kochf25f5bb2017-10-05 00:26:58 -04001790 VK_COLOR_SPACE_SRGB_NONLINEAR_KHR = 0x00000000,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001791
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001792 //@extension("VK_EXT_swapchain_colorspace") // 105
1793 VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
1794 VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
1795 VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003,
1796 VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
1797 VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
1798 VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
1799 VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
1800 VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
1801 VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
1802 VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
Courtney Goeltzenleuchter7f558ed2017-01-23 17:15:24 -07001803 VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
1804 VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001805 VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
Jesse Hall77726222017-09-19 14:49:27 -05001806 VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014,
Michael Lentine88594d72015-11-12 12:49:45 -08001807}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001808
Jesse Hallad250842017-03-10 18:35:38 -08001809@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08001810enum VkDebugReportObjectTypeEXT {
1811 VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
1812 VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
1813 VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
1814 VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,
1815 VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,
1816 VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,
1817 VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,
1818 VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,
1819 VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,
1820 VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,
1821 VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,
1822 VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,
1823 VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,
1824 VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,
1825 VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,
1826 VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,
1827 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,
1828 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,
1829 VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,
1830 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,
1831 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,
1832 VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,
1833 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,
1834 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,
1835 VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,
1836 VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,
1837 VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
1838 VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001839 VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28,
Chris Forbes289cb792016-12-30 15:03:55 +13001840 VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29,
1841 VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,
1842 VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31,
1843 VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32,
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001844
Jesse Hall77726222017-09-19 14:49:27 -05001845 //extension("VK_EXT_validation_cache") // 161
Jesse Hall35b4de12018-01-17 22:06:20 -08001846 VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT = 33,
Jesse Hall77726222017-09-19 14:49:27 -05001847
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001848 //extension("VK_KHR_descriptor_update_template") // 86
1849 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000,
Jesse Hall77726222017-09-19 14:49:27 -05001850
Jesse Hall076f95d2017-09-20 11:34:47 -07001851 //@extension("VK_KHR_sampler_ycbcr_conversion") // 157
1852 VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000,
Jesse Hall715b86a2016-01-16 16:34:29 -08001853}
1854
Jesse Hallad250842017-03-10 18:35:38 -08001855@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07001856enum VkRasterizationOrderAMD {
1857 VK_RASTERIZATION_ORDER_STRICT_AMD = 0,
1858 VK_RASTERIZATION_ORDER_RELAXED_AMD = 1,
1859}
1860
Jesse Hall35b4de12018-01-17 22:06:20 -08001861@extension("VK_AMD_shader_info") // 43
1862enum VkShaderInfoTypeAMD {
1863 VK_SHADER_INFO_TYPE_STATISTICS_AMD = 0,
1864 VK_SHADER_INFO_TYPE_BINARY_AMD = 1,
1865 VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD = 2,
1866}
1867
Jesse Hallad250842017-03-10 18:35:38 -08001868@extension("VK_EXT_validation_flags") // 62
Chris Forbes289cb792016-12-30 15:03:55 +13001869enum VkValidationCheckEXT {
1870 VK_VALIDATION_CHECK_ALL_EXT = 0,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001871 VK_VALIDATION_CHECK_SHADERS_EXT = 1,
Chris Forbes289cb792016-12-30 15:03:55 +13001872}
1873
Jesse Hallad250842017-03-10 18:35:38 -08001874@extension("VK_KHR_descriptor_update_template") // 86
1875enum VkDescriptorUpdateTemplateTypeKHR {
1876 VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0,
1877 VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1,
1878}
1879
1880@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001881enum VkIndirectCommandsTokenTypeNVX {
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001882 VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX = 0,
1883 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX = 1,
1884 VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX = 2,
1885 VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX = 3,
1886 VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX = 4,
1887 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX = 5,
1888 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX = 6,
1889 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX = 7,
Chris Forbes289cb792016-12-30 15:03:55 +13001890}
1891
Jesse Hallad250842017-03-10 18:35:38 -08001892@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001893enum VkObjectEntryTypeNVX {
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001894 VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX = 0,
1895 VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX = 1,
1896 VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX = 2,
1897 VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX = 3,
1898 VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX = 4,
Chris Forbes289cb792016-12-30 15:03:55 +13001899}
Jesse Hall715b86a2016-01-16 16:34:29 -08001900
Jesse Hallad250842017-03-10 18:35:38 -08001901@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001902enum VkDisplayPowerStateEXT {
1903 VK_DISPLAY_POWER_STATE_OFF_EXT = 0,
1904 VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,
1905 VK_DISPLAY_POWER_STATE_ON_EXT = 2,
1906}
1907
Jesse Hallad250842017-03-10 18:35:38 -08001908@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001909enum VkDeviceEventTypeEXT {
1910 VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0,
1911}
1912
Jesse Hallad250842017-03-10 18:35:38 -08001913@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001914enum VkDisplayEventTypeEXT {
1915 VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,
1916}
1917
Jesse Hallad250842017-03-10 18:35:38 -08001918@extension("VK_NV_viewport_swizzle") // 99
1919enum VkViewportCoordinateSwizzleNV {
1920 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0,
1921 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1,
1922 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2,
1923 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3,
1924 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4,
1925 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5,
1926 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6,
1927 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7,
1928}
1929
1930@extension("VK_EXT_discard_rectangles") // 100
1931enum VkDiscardRectangleModeEXT {
1932 VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,
1933 VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,
1934}
1935
Jesse Hall35b4de12018-01-17 22:06:20 -08001936@extension("VK_EXT_conservative_rasterization") // 102
1937enum VkConservativeRasterizationModeEXT {
1938 VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT = 0,
1939 VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT = 1,
1940 VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT = 2,
1941}
1942
Jesse Hall076f95d2017-09-20 11:34:47 -07001943@extension("VK_KHR_maintenance2") // 118
1944enum VkPointClippingBehaviorKHR {
1945 VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = 0,
1946 VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = 1,
1947}
1948
1949@extension("VK_KHR_maintenance2") // 118
1950enum VkTessellationDomainOriginKHR {
1951 VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = 0,
1952 VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = 1,
1953}
1954
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001955@extension("VK_EXT_sampler_filter_minmax") // 131
1956enum VkSamplerReductionModeEXT {
1957 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0,
1958 VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1,
1959 VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2,
1960}
1961
1962@extension("VK_EXT_blend_operation_advanced") // 149
1963enum VkBlendOverlapEXT {
1964 VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0,
1965 VK_BLEND_OVERLAP_DISJOINT_EXT = 1,
1966 VK_BLEND_OVERLAP_CONJOINT_EXT = 2,
1967}
1968
1969@extension("VK_NV_framebuffer_mixed_samples") // 153
1970enum VkCoverageModulationModeNV {
1971 VK_COVERAGE_MODULATION_MODE_NONE_NV = 0,
1972 VK_COVERAGE_MODULATION_MODE_RGB_NV = 1,
1973 VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2,
1974 VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3,
1975}
1976
Jesse Hall076f95d2017-09-20 11:34:47 -07001977@extension("VK_KHR_sampler_ycbcr_conversion") // 157
1978enum VkSamplerYcbcrModelConversionKHR {
1979 VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = 0,
1980 VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = 1,
1981 VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = 2,
1982 VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = 3,
1983 VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = 4,
1984}
1985
1986@extension("VK_KHR_sampler_ycbcr_conversion") // 157
1987enum VkSamplerYcbcrRangeKHR {
1988 VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = 0,
1989 VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = 1,
1990}
1991
1992@extension("VK_KHR_sampler_ycbcr_conversion") // 157
1993enum VkChromaLocationKHR {
1994 VK_CHROMA_LOCATION_COSITED_EVEN_KHR = 0,
1995 VK_CHROMA_LOCATION_MIDPOINT_KHR = 1,
1996}
1997
Jesse Hall77726222017-09-19 14:49:27 -05001998@extension("VK_EXT_validation_cache") // 161
1999enum VkValidationCacheHeaderVersionEXT {
2000 VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1,
2001}
2002
Jesse Hall35b4de12018-01-17 22:06:20 -08002003@extension("VK_EXT_global_priority") // 175
2004enum VkQueueGlobalPriorityEXT {
2005 VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128,
2006 VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256,
2007 VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512,
2008 VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024,
2009}
2010
Jesse Halld27f6aa2015-08-15 17:58:48 -07002011/////////////////
2012// Bitfields //
2013/////////////////
2014
Jesse Halld27f6aa2015-08-15 17:58:48 -07002015/// Queue capabilities
Jesse Halld8bade02015-11-24 10:24:18 -08002016type VkFlags VkQueueFlags
2017bitfield VkQueueFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002018 VK_QUEUE_GRAPHICS_BIT = 0x00000001, /// Queue supports graphics operations
2019 VK_QUEUE_COMPUTE_BIT = 0x00000002, /// Queue supports compute operations
Jesse Hall65ab5522015-11-30 00:07:16 -08002020 VK_QUEUE_TRANSFER_BIT = 0x00000004, /// Queue supports transfer operations
Jesse Hallb00daad2015-11-29 19:46:20 -08002021 VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008, /// Queue supports sparse resource memory management operations
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002022
Ian Elliottcd8ad332017-10-13 09:21:12 -06002023 //@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002024 VK_QUEUE_PROTECTED_BIT = 0x00000010,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002025}
2026
2027/// Memory properties passed into vkAllocMemory().
Jesse Halld8bade02015-11-24 10:24:18 -08002028type VkFlags VkMemoryPropertyFlags
2029bitfield VkMemoryPropertyFlagBits {
Jesse Halld1af8122015-11-29 23:50:38 -08002030 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
2031 VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
2032 VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
2033 VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
2034 VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002035
Ian Elliottcd8ad332017-10-13 09:21:12 -06002036 //@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002037 VK_MEMORY_PROPERTY_PROTECTED_BIT = 0x00000020,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002038}
2039
2040/// Memory heap flags
Jesse Halld8bade02015-11-24 10:24:18 -08002041type VkFlags VkMemoryHeapFlags
2042bitfield VkMemoryHeapFlagBits {
Jesse Halld1af8122015-11-29 23:50:38 -08002043 VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
Jesse Hallad250842017-03-10 18:35:38 -08002044
Ian Elliottcd8ad332017-10-13 09:21:12 -06002045 //@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002046 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 0x00000002,
2047
2048 //@extension("VK_KHR_device_group_creation") // 71
2049 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002050}
2051
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002052/// Access flags
2053type VkFlags VkAccessFlags
2054bitfield VkAccessFlagBits {
2055 VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
2056 VK_ACCESS_INDEX_READ_BIT = 0x00000002,
2057 VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
2058 VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
2059 VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
2060 VK_ACCESS_SHADER_READ_BIT = 0x00000020,
2061 VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
2062 VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
2063 VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
2064 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
2065 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
2066 VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
2067 VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
2068 VK_ACCESS_HOST_READ_BIT = 0x00002000,
2069 VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
2070 VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
2071 VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
Chris Forbes289cb792016-12-30 15:03:55 +13002072
Jesse Hallad250842017-03-10 18:35:38 -08002073 //@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002074 VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000,
Chris Forbes289cb792016-12-30 15:03:55 +13002075 VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07002076
2077 //@extension("VK_EXT_blend_operation_advanced") // 149
2078 VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002079}
2080
2081/// Buffer usage flags
Jesse Halld8bade02015-11-24 10:24:18 -08002082type VkFlags VkBufferUsageFlags
2083bitfield VkBufferUsageFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -08002084 VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations
2085 VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07002086 VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004, /// Can be used as TBO
2087 VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008, /// Can be used as IBO
2088 VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010, /// Can be used as UBO
2089 VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020, /// Can be used as SSBO
2090 VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, /// Can be used as source of fixed function index fetch (index buffer)
2091 VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, /// Can be used as source of fixed function vertex fetch (VBO)
2092 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, /// Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer)
2093}
2094
2095/// Buffer creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08002096type VkFlags VkBufferCreateFlags
2097bitfield VkBufferCreateFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002098 VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Buffer should support sparse backing
Jesse Halld27f6aa2015-08-15 17:58:48 -07002099 VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Buffer should support sparse backing with partial residency
2100 VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004, /// Buffer should support constent data access to physical memory blocks mapped into multiple locations of sparse buffers
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002101
Ian Elliottcd8ad332017-10-13 09:21:12 -06002102 //@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002103 VK_BUFFER_CREATE_PROTECTED_BIT = 0x00000008,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002104}
2105
2106/// Shader stage flags
Jesse Halld8bade02015-11-24 10:24:18 -08002107type VkFlags VkShaderStageFlags
2108bitfield VkShaderStageFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002109 VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
Jesse Hallae38f732015-11-19 21:32:50 -08002110 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
2111 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002112 VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
2113 VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
2114 VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
Jesse Hallc7467b72015-11-29 21:05:26 -08002115 VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002116
2117 VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
2118}
2119
Jesse Hallfbf97b02015-11-20 14:17:03 -08002120/// Descriptor pool create flags
Jesse Halld8bade02015-11-24 10:24:18 -08002121type VkFlags VkDescriptorPoolCreateFlags
2122bitfield VkDescriptorPoolCreateFlagBits {
Jesse Hallfbf97b02015-11-20 14:17:03 -08002123 VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
2124}
2125
2126/// Descriptor pool reset flags
Jesse Halld8bade02015-11-24 10:24:18 -08002127type VkFlags VkDescriptorPoolResetFlags
Jesse Halla6429252015-11-29 18:59:42 -08002128//bitfield VkDescriptorPoolResetFlagBits {
2129//}
Jesse Hallfbf97b02015-11-20 14:17:03 -08002130
Jesse Halld27f6aa2015-08-15 17:58:48 -07002131/// Image usage flags
Jesse Halld8bade02015-11-24 10:24:18 -08002132type VkFlags VkImageUsageFlags
2133bitfield VkImageUsageFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -08002134 VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations
2135 VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07002136 VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004, /// Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
2137 VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008, /// Can be used as storage image (STORAGE_IMAGE descriptor type)
2138 VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010, /// Can be used as framebuffer color attachment
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002139 VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020, /// Can be used as framebuffer depth/stencil attachment
Jesse Halld27f6aa2015-08-15 17:58:48 -07002140 VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040, /// Image data not needed outside of rendering
2141 VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080, /// Can be used as framebuffer input attachment
2142}
2143
2144/// Image creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08002145type VkFlags VkImageCreateFlags
2146bitfield VkImageCreateFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002147 VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Image should support sparse backing
Jesse Halld27f6aa2015-08-15 17:58:48 -07002148 VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Image should support sparse backing with partial residency
2149 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 -07002150 VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008, /// Allows image views to have different format than the base image
2151 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 -08002152
Ian Elliottcd8ad332017-10-13 09:21:12 -06002153 //@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002154 VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT = 0x00000020,
Jesse Hall35b4de12018-01-17 22:06:20 -08002155 VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT = 0x00000040,
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002156 VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT = 0x00000080,
2157 VK_IMAGE_CREATE_EXTENDED_USAGE_BIT = 0x00000100,
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002158 VK_IMAGE_CREATE_DISJOINT_BIT = 0x00000200,
Ian Elliottcd8ad332017-10-13 09:21:12 -06002159 VK_IMAGE_CREATE_ALIAS_BIT = 0x00000400,
2160 VK_IMAGE_CREATE_PROTECTED_BIT = 0x00000800,
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002161
Jesse Hallad250842017-03-10 18:35:38 -08002162 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08002163 VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 0x00000020,
Jesse Hallad250842017-03-10 18:35:38 -08002164
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002165 //@extension("VK_KHR_device_group") // 61
2166 VK_IMAGE_CREATE_BIND_SFR_BIT_KHR = 0x00000040,
Jesse Hall77726222017-09-19 14:49:27 -05002167
Jesse Hall076f95d2017-09-20 11:34:47 -07002168 //@extension("VK_KHR_maintenance2") // 118
2169 VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 0x00000080,
2170 VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 0x00000100,
2171
2172 //@extension("VK_KHR_sampler_ycbcr_conversion") // 157
2173 VK_IMAGE_CREATE_DISJOINT_BIT_KHR = 0x00000200,
2174
2175 //@extension("VK_KHR_bind_memory2") // 158
2176 VK_IMAGE_CREATE_ALIAS_BIT_KHR = 0x00000400,
Ian Elliottcd8ad332017-10-13 09:21:12 -06002177
2178 //@extension("VK_EXT_sample_locations") // 144
2179 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002180}
2181
Jesse Hallb00daad2015-11-29 19:46:20 -08002182/// Image view creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08002183type VkFlags VkImageViewCreateFlags
Jesse Hallb00daad2015-11-29 19:46:20 -08002184//bitfield VkImageViewCreateFlagBits {
2185//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07002186
2187/// Pipeline creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08002188type VkFlags VkPipelineCreateFlags
2189bitfield VkPipelineCreateFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002190 VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
2191 VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
2192 VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
Jesse Hallad250842017-03-10 18:35:38 -08002193
Ian Elliottcd8ad332017-10-13 09:21:12 -06002194 //@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002195 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008,
2196 VK_PIPELINE_CREATE_DISPATCH_BASE = 0x00000010,
2197
2198 //@extension("VK_KHR_device_group") // 61
2199 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 0x00000008,
2200 VK_PIPELINE_CREATE_DISPATCH_BASE_KHR = 0x00000010,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002201}
2202
Jesse Hall65ab5522015-11-30 00:07:16 -08002203/// Color component flags
2204type VkFlags VkColorComponentFlags
2205bitfield VkColorComponentFlagBits {
2206 VK_COLOR_COMPONENT_R_BIT = 0x00000001,
2207 VK_COLOR_COMPONENT_G_BIT = 0x00000002,
2208 VK_COLOR_COMPONENT_B_BIT = 0x00000004,
2209 VK_COLOR_COMPONENT_A_BIT = 0x00000008,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002210}
2211
2212/// Fence creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08002213type VkFlags VkFenceCreateFlags
2214bitfield VkFenceCreateFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002215 VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
2216}
2217
2218/// Semaphore creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08002219type VkFlags VkSemaphoreCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08002220//bitfield VkSemaphoreCreateFlagBits {
2221//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07002222
2223/// Format capability flags
Jesse Halld8bade02015-11-24 10:24:18 -08002224type VkFlags VkFormatFeatureFlags
2225bitfield VkFormatFeatureFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002226 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001, /// Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
2227 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002, /// Format can be used for storage images (STORAGE_IMAGE descriptor type)
2228 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004, /// Format supports atomic operations in case it's used for storage images
2229 VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008, /// Format can be used for uniform texel buffers (TBOs)
2230 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010, /// Format can be used for storage texel buffers (IBOs)
2231 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020, /// Format supports atomic operations in case it's used for storage texel buffers
2232 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040, /// Format can be used for vertex buffers (VBOs)
2233 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080, /// Format can be used for color attachment images
2234 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100, /// Format supports blending in case it's used for color attachment images
2235 VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200, /// Format can be used for depth/stencil attachment images
Jesse Hall3fbc8562015-11-29 22:10:52 -08002236 VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400, /// Format can be used as the source image of blits with vkCommandBlitImage
2237 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 -08002238 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
Jesse Hall26763382016-05-20 07:13:52 -07002239
Ian Elliottcd8ad332017-10-13 09:21:12 -06002240 //@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002241 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT = 0x00004000,
2242 VK_FORMAT_FEATURE_TRANSFER_DST_BIT = 0x00008000,
2243 VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT = 0x00020000,
2244 VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT = 0x00040000,
2245 VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT = 0x00080000,
2246 VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT = 0x00100000,
2247 VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT = 0x00200000,
2248 VK_FORMAT_FEATURE_DISJOINT_BIT = 0x00400000,
2249 VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT = 0x00800000,
2250
Jesse Hallad250842017-03-10 18:35:38 -08002251 //@extension("VK_IMG_filter_cubic") // 16
Jesse Hall26763382016-05-20 07:13:52 -07002252 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
Jesse Hall77ad05b2017-03-10 22:02:20 -08002253
Jesse Hallad250842017-03-10 18:35:38 -08002254 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08002255 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 0x00004000,
2256 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 0x00008000,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07002257
2258 //@extension("VK_EXT_sampler_filter_minmax") // 131
2259 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 0x00010000,
Jesse Hall076f95d2017-09-20 11:34:47 -07002260
2261 //@extension("VK_KHR_sampler_ycbcr_conversion") // 157
2262 VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 0x00020000,
2263 VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 0x00040000,
2264 VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 0x00080000,
2265 VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 0x00100000,
2266 VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 0x00200000,
2267 VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = 0x00400000,
2268 VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = 0x00800000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002269}
2270
2271/// Query control flags
Jesse Halld8bade02015-11-24 10:24:18 -08002272type VkFlags VkQueryControlFlags
2273bitfield VkQueryControlFlagBits {
Jesse Hall65ab5522015-11-30 00:07:16 -08002274 VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002275}
2276
2277/// Query result flags
Jesse Halld8bade02015-11-24 10:24:18 -08002278type VkFlags VkQueryResultFlags
2279bitfield VkQueryResultFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002280 VK_QUERY_RESULT_64_BIT = 0x00000001, /// Results of the queries are written to the destination buffer as 64-bit values
2281 VK_QUERY_RESULT_WAIT_BIT = 0x00000002, /// Results of the queries are waited on before proceeding with the result copy
2282 VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, /// Besides the results of the query, the availability of the results is also written
2283 VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008, /// Copy the partial results of the query even if the final results aren't available
2284}
2285
2286/// Shader module creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08002287type VkFlags VkShaderModuleCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08002288//bitfield VkShaderModuleCreateFlagBits {
2289//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07002290
Jesse Halld27f6aa2015-08-15 17:58:48 -07002291/// Event creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08002292type VkFlags VkEventCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08002293//bitfield VkEventCreateFlagBits {
2294//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07002295
Jesse Halla15a4bf2015-11-19 22:48:02 -08002296/// Command buffer usage flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08002297type VkFlags VkCommandBufferUsageFlags
2298bitfield VkCommandBufferUsageFlagBits {
2299 VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
2300 VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
2301 VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002302}
2303
2304/// Pipeline statistics flags
Jesse Halld8bade02015-11-24 10:24:18 -08002305type VkFlags VkQueryPipelineStatisticFlags
2306bitfield VkQueryPipelineStatisticFlagBits {
Jesse Hallae38f732015-11-19 21:32:50 -08002307 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001, /// Optional
2308 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002, /// Optional
2309 VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004, /// Optional
2310 VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008, /// Optional
2311 VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010, /// Optional
2312 VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020, /// Optional
2313 VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040, /// Optional
2314 VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080, /// Optional
2315 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100, /// Optional
2316 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200, /// Optional
2317 VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400, /// Optional
Jesse Halld27f6aa2015-08-15 17:58:48 -07002318}
2319
2320/// Memory mapping flags
Jesse Halld8bade02015-11-24 10:24:18 -08002321type VkFlags VkMemoryMapFlags
Jesse Halla6429252015-11-29 18:59:42 -08002322//bitfield VkMemoryMapFlagBits {
2323//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07002324
2325/// Bitfield of image aspects
Jesse Halld8bade02015-11-24 10:24:18 -08002326type VkFlags VkImageAspectFlags
2327bitfield VkImageAspectFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002328 VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
2329 VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
2330 VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
2331 VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
Jesse Hall076f95d2017-09-20 11:34:47 -07002332
Ian Elliottcd8ad332017-10-13 09:21:12 -06002333 //@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002334 VK_IMAGE_ASPECT_PLANE_0_BIT = 0x00000010,
2335 VK_IMAGE_ASPECT_PLANE_1_BIT = 0x00000020,
2336 VK_IMAGE_ASPECT_PLANE_2_BIT = 0x00000040,
2337
Jesse Hall076f95d2017-09-20 11:34:47 -07002338 //@extension("VK_KHR_sampler_ycbcr_conversion") // 157
2339 VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = 0x00000010,
2340 VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = 0x00000020,
2341 VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = 0x00000040,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002342}
2343
2344/// Sparse memory bind flags
Jesse Halld8bade02015-11-24 10:24:18 -08002345type VkFlags VkSparseMemoryBindFlags
Jesse Hall091ed9e2015-11-30 00:55:29 -08002346bitfield VkSparseMemoryBindFlagBits {
2347 VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
2348}
Jesse Halld27f6aa2015-08-15 17:58:48 -07002349
2350/// Sparse image memory requirements flags
Jesse Halld8bade02015-11-24 10:24:18 -08002351type VkFlags VkSparseImageFormatFlags
2352bitfield VkSparseImageFormatFlagBits {
Jesse Hallb00daad2015-11-29 19:46:20 -08002353 VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001, /// Image uses a single miptail region for all array slices
2354 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.
2355 VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004, /// Image uses a non-standard sparse block size
Jesse Halld27f6aa2015-08-15 17:58:48 -07002356}
2357
2358/// Pipeline stages
Jesse Halld8bade02015-11-24 10:24:18 -08002359type VkFlags VkPipelineStageFlags
2360bitfield VkPipelineStageFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002361 VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001, /// Before subsequent commands are processed
2362 VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002, /// Draw/DispatchIndirect command fetch
2363 VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004, /// Vertex/index fetch
2364 VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008, /// Vertex shading
Jesse Hallae38f732015-11-19 21:32:50 -08002365 VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010, /// Tessellation control shading
2366 VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020, /// Tessellation evaluation shading
Jesse Halld27f6aa2015-08-15 17:58:48 -07002367 VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040, /// Geometry shading
2368 VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080, /// Fragment shading
2369 VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100, /// Early fragment (depth/stencil) tests
2370 VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200, /// Late fragment (depth/stencil) tests
2371 VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400, /// Color attachment writes
2372 VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800, /// Compute shading
2373 VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000, /// Transfer/copy operations
Jesse Hall543a7ff2016-01-08 16:38:30 -08002374 VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
2375 VK_PIPELINE_STAGE_HOST_BIT = 0x00004000, /// Indicates host (CPU) is a source/sink of the dependency
Jesse Halld27f6aa2015-08-15 17:58:48 -07002376
Jesse Hall543a7ff2016-01-08 16:38:30 -08002377 VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000, /// All stages of the graphics pipeline
2378 VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000, /// All graphics, compute, copy, and transition commands
Chris Forbes289cb792016-12-30 15:03:55 +13002379
Jesse Hallad250842017-03-10 18:35:38 -08002380 //@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002381 VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002382}
2383
2384/// Render pass attachment description flags
Jesse Halld8bade02015-11-24 10:24:18 -08002385type VkFlags VkAttachmentDescriptionFlags
2386bitfield VkAttachmentDescriptionFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002387 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 -07002388}
2389
2390/// Subpass description flags
Jesse Halld8bade02015-11-24 10:24:18 -08002391type VkFlags VkSubpassDescriptionFlags
2392bitfield VkSubpassDescriptionFlagBits {
Jesse Hallad250842017-03-10 18:35:38 -08002393 //@extension("VK_NVX_multiview_per_view_attributes") // 98
2394 VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001,
2395 VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002396}
2397
2398/// Command pool creation flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08002399type VkFlags VkCommandPoolCreateFlags
2400bitfield VkCommandPoolCreateFlagBits {
2401 VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001, /// Command buffers have a short lifetime
2402 VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002, /// Command buffers may release their memory individually
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002403
Ian Elliottcd8ad332017-10-13 09:21:12 -06002404 //@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002405 VK_COMMAND_POOL_CREATE_PROTECTED_BIT = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002406}
2407
2408/// Command pool reset flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08002409type VkFlags VkCommandPoolResetFlags
2410bitfield VkCommandPoolResetFlagBits {
2411 VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the pool
Jesse Halld27f6aa2015-08-15 17:58:48 -07002412}
2413
Jesse Hall3fbc8562015-11-29 22:10:52 -08002414type VkFlags VkCommandBufferResetFlags
2415bitfield VkCommandBufferResetFlagBits {
2416 VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the buffer
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002417}
2418
Jesse Halld8bade02015-11-24 10:24:18 -08002419type VkFlags VkSampleCountFlags
2420bitfield VkSampleCountFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002421 VK_SAMPLE_COUNT_1_BIT = 0x00000001,
2422 VK_SAMPLE_COUNT_2_BIT = 0x00000002,
2423 VK_SAMPLE_COUNT_4_BIT = 0x00000004,
2424 VK_SAMPLE_COUNT_8_BIT = 0x00000008,
2425 VK_SAMPLE_COUNT_16_BIT = 0x00000010,
2426 VK_SAMPLE_COUNT_32_BIT = 0x00000020,
2427 VK_SAMPLE_COUNT_64_BIT = 0x00000040,
2428}
2429
Jesse Halld8bade02015-11-24 10:24:18 -08002430type VkFlags VkStencilFaceFlags
2431bitfield VkStencilFaceFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002432 VK_STENCIL_FACE_FRONT_BIT = 0x00000001, /// Front face
2433 VK_STENCIL_FACE_BACK_BIT = 0x00000002, /// Back face
Jesse Hallc7467b72015-11-29 21:05:26 -08002434 VK_STENCIL_FRONT_AND_BACK = 0x00000003,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002435}
2436
Jesse Halla6429252015-11-29 18:59:42 -08002437/// Instance creation flags
2438type VkFlags VkInstanceCreateFlags
2439//bitfield VkInstanceCreateFlagBits {
2440//}
2441
2442/// Device creation flags
2443type VkFlags VkDeviceCreateFlags
2444//bitfield VkDeviceCreateFlagBits {
2445//}
2446
2447/// Device queue creation flags
2448type VkFlags VkDeviceQueueCreateFlags
Ian Elliottcd8ad332017-10-13 09:21:12 -06002449@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002450bitfield VkDeviceQueueCreateFlagBits {
2451 VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 0x00000001,
2452}
Jesse Halla6429252015-11-29 18:59:42 -08002453
2454/// Query pool creation flags
2455type VkFlags VkQueryPoolCreateFlags
2456//bitfield VkQueryPoolCreateFlagBits {
2457//}
2458
2459/// Buffer view creation flags
2460type VkFlags VkBufferViewCreateFlags
2461//bitfield VkBufferViewCreateFlagBits {
2462//}
2463
2464/// Pipeline cache creation flags
2465type VkFlags VkPipelineCacheCreateFlags
2466//bitfield VkPipelineCacheCreateFlagBits {
2467//}
2468
2469/// Pipeline shader stage creation flags
2470type VkFlags VkPipelineShaderStageCreateFlags
2471//bitfield VkPipelineShaderStageCreateFlagBits {
2472//}
2473
2474/// Descriptor set layout creation flags
2475type VkFlags VkDescriptorSetLayoutCreateFlags
Jesse Hallad250842017-03-10 18:35:38 -08002476bitfield VkDescriptorSetLayoutCreateFlagBits {
2477 //@extension("VK_KHR_push_descriptor") // 81
2478 VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
2479}
Jesse Halla6429252015-11-29 18:59:42 -08002480
2481/// Pipeline vertex input state creation flags
2482type VkFlags VkPipelineVertexInputStateCreateFlags
2483//bitfield VkPipelineVertexInputStateCreateFlagBits {
2484//}
2485
2486/// Pipeline input assembly state creation flags
2487type VkFlags VkPipelineInputAssemblyStateCreateFlags
2488//bitfield VkPipelineInputAssemblyStateCreateFlagBits {
2489//}
2490
2491/// Tessellation state creation flags
2492type VkFlags VkPipelineTessellationStateCreateFlags
2493//bitfield VkPipelineTessellationStateCreateFlagBits {
2494//}
2495
2496/// Viewport state creation flags
2497type VkFlags VkPipelineViewportStateCreateFlags
2498//bitfield VkPipelineViewportStateCreateFlagBits {
2499//}
2500
Jesse Hall3fbc8562015-11-29 22:10:52 -08002501/// Rasterization state creation flags
2502type VkFlags VkPipelineRasterizationStateCreateFlags
2503//bitfield VkPipelineRasterizationStateCreateFlagBits {
Jesse Halla6429252015-11-29 18:59:42 -08002504//}
2505
2506/// Multisample state creation flags
2507type VkFlags VkPipelineMultisampleStateCreateFlags
2508//bitfield VkPipelineMultisampleStateCreateFlagBits {
2509//}
2510
2511/// Color blend state creation flags
2512type VkFlags VkPipelineColorBlendStateCreateFlags
2513//bitfield VkPipelineColorBlendStateCreateFlagBits {
2514//}
2515
2516/// Depth/stencil state creation flags
2517type VkFlags VkPipelineDepthStencilStateCreateFlags
2518//bitfield VkPipelineDepthStencilStateCreateFlagBits {
2519//}
2520
2521/// Dynamic state creation flags
2522type VkFlags VkPipelineDynamicStateCreateFlags
2523//bitfield VkPipelineDynamicStateCreateFlagBits {
2524//}
2525
2526/// Pipeline layout creation flags
2527type VkFlags VkPipelineLayoutCreateFlags
2528//bitfield VkPipelineLayoutCreateFlagBits {
2529//}
2530
2531/// Sampler creation flags
2532type VkFlags VkSamplerCreateFlags
2533//bitfield VkSamplerCreateFlagBits {
2534//}
2535
2536/// Render pass creation flags
2537type VkFlags VkRenderPassCreateFlags
2538//bitfield VkRenderPassCreateFlagBits {
2539//}
2540
2541/// Framebuffer creation flags
2542type VkFlags VkFramebufferCreateFlags
2543//bitfield VkFramebufferCreateFlagBits {
2544//}
2545
Jesse Halldc6d36c2015-11-29 19:12:15 -08002546/// Dependency flags
2547type VkFlags VkDependencyFlags
2548bitfield VkDependencyFlagBits {
2549 VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
Jesse Hallad250842017-03-10 18:35:38 -08002550
Ian Elliottcd8ad332017-10-13 09:21:12 -06002551 //@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002552 VK_DEPENDENCY_DEVICE_GROUP_BIT = 0x00000004,
2553 VK_DEPENDENCY_VIEW_LOCAL_BIT = 0x00000002,
Jesse Hallad250842017-03-10 18:35:38 -08002554
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002555 //@extension("VK_KHR_multiview") // 54
2556 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR = 0x00000002,
2557
2558 //@extension("VK_KHR_device_group") // 61
2559 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR = 0x00000004,
Jesse Halldc6d36c2015-11-29 19:12:15 -08002560}
2561
Jesse Hallc7467b72015-11-29 21:05:26 -08002562/// Cull mode flags
2563type VkFlags VkCullModeFlags
2564bitfield VkCullModeFlagBits {
2565 VK_CULL_MODE_NONE = 0x00000000,
2566 VK_CULL_MODE_FRONT_BIT = 0x00000001,
2567 VK_CULL_MODE_BACK_BIT = 0x00000002,
2568 VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
2569}
2570
Ian Elliottcd8ad332017-10-13 09:21:12 -06002571//@vulkan1_1 flags
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002572
2573/// Subgroup feature flags
2574type VkFlags VkSubgroupFeatureFlags
2575bitfield VkSubgroupFeatureFlagBits {
2576 VK_SUBGROUP_FEATURE_BASIC_BIT = 0x00000001,
2577 VK_SUBGROUP_FEATURE_VOTE_BIT = 0x00000002,
2578 VK_SUBGROUP_FEATURE_ARITHMETIC_BIT = 0x00000004,
2579 VK_SUBGROUP_FEATURE_BALLOT_BIT = 0x00000008,
2580 VK_SUBGROUP_FEATURE_SHUFFLE_BIT = 0x00000010,
2581 VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT = 0x00000020,
2582 VK_SUBGROUP_FEATURE_CLUSTERED_BIT = 0x00000040,
2583 VK_SUBGROUP_FEATURE_QUAD_BIT = 0x00000080,
2584}
2585
2586/// Peer memory feature flags
2587type VkFlags VkPeerMemoryFeatureFlags
2588bitfield VkPeerMemoryFeatureFlagBits {
2589 VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT = 0x00000001,
2590 VK_PEER_MEMORY_FEATURE_COPY_DST_BIT = 0x00000002,
2591 VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT = 0x00000004,
2592 VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT = 0x00000008,
2593}
2594
2595/// Memory allocation flags
2596type VkFlags VkMemoryAllocateFlags
2597bitfield VkMemoryAllocateFlagBits {
2598 VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT = 0x00000001,
2599}
2600
2601type VkFlags VkCommandPoolTrimFlags
2602//bitfield VkCommandPoolTrimFlagBits {
2603//}
2604
2605type VkFlags VkDescriptorUpdateTemplateCreateFlags
2606//bitfield VkDescriptorUpdateTemplateCreateFlagBits {
2607//}
2608
2609/// External memory handle type flags
2610type VkFlags VkExternalMemoryHandleTypeFlags
2611bitfield VkExternalMemoryHandleTypeFlagBits {
2612 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
2613 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
2614 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
2615 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT = 0x00000008,
2616 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT = 0x00000010,
2617 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT = 0x00000020,
2618 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT = 0x00000040,
Jesse Hall35b4de12018-01-17 22:06:20 -08002619
Jesse Hall35b4de12018-01-17 22:06:20 -08002620 //@extension("VK_EXT_external_memory_host") // 179
Jesse Halle2be6b82018-01-18 15:04:37 -08002621 VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT = 0x00000080,
2622 VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT = 0x00000100,
2623
2624 //@extension("VK_EXT_external_memory_dma_buf") // 126
2625 VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT = 0x00000200,
2626
2627 //@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130
2628 VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID = 0x00000400,
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002629}
2630
2631/// External memory feature flags
2632type VkFlags VkExternalMemoryFeatureFlags
2633bitfield VkExternalMemoryFeatureFlagBits {
2634 VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT = 0x00000001,
2635 VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT = 0x00000002,
2636 VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT = 0x00000004,
2637}
2638
2639/// External fence handle type flags
2640type VkFlags VkExternalFenceHandleTypeFlags
2641bitfield VkExternalFenceHandleTypeFlagBits {
2642 VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
2643 VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
2644 VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
2645 VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000008,
2646}
2647
2648/// External fence feature flags
2649type VkFlags VkExternalFenceFeatureFlags
2650bitfield VkExternalFenceFeatureFlagBits {
2651 VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT = 0x00000001,
2652 VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT = 0x00000002,
2653}
2654
2655/// Fence import flags
2656type VkFlags VkFenceImportFlags
2657bitfield VkFenceImportFlagBits {
2658 VK_FENCE_IMPORT_TEMPORARY_BIT = 0x00000001,
2659}
2660
2661/// Semaphore import flags
2662type VkFlags VkSemaphoreImportFlags
2663bitfield VkSemaphoreImportFlagBits {
2664 VK_SEMAPHORE_IMPORT_TEMPORARY_BIT = 0x00000001,
2665}
2666
2667/// External semaphore handle type flags
2668type VkFlags VkExternalSemaphoreHandleTypeFlags
2669bitfield VkExternalSemaphoreHandleTypeFlagBits {
2670 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT = 0x00000001,
2671 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT = 0x00000002,
2672 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT = 0x00000004,
2673 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT = 0x00000008,
2674 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT = 0x00000010,
2675}
2676
2677/// External semaphore feature flags
2678type VkFlags VkExternalSemaphoreFeatureFlags
2679bitfield VkExternalSemaphoreFeatureFlagBits {
2680 VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT = 0x00000001,
2681 VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT = 0x00000002,
2682}
2683
Jesse Hallad250842017-03-10 18:35:38 -08002684@extension("VK_KHR_surface") // 1
Jesse Halld8bade02015-11-24 10:24:18 -08002685type VkFlags VkSurfaceTransformFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002686@extension("VK_KHR_surface") // 1
Jesse Halld8bade02015-11-24 10:24:18 -08002687bitfield VkSurfaceTransformFlagBitsKHR {
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002688 VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
Jesse Hall9ba8bc82015-11-30 16:22:16 -08002689 VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
2690 VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
2691 VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
2692 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
2693 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
2694 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
2695 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
2696 VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
Michael Lentine88594d72015-11-12 12:49:45 -08002697}
Jesse Halld27f6aa2015-08-15 17:58:48 -07002698
Jesse Hallad250842017-03-10 18:35:38 -08002699@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08002700type VkFlags VkCompositeAlphaFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002701@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08002702bitfield VkCompositeAlphaFlagBitsKHR {
2703 VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
2704 VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
2705 VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
2706 VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
2707}
2708
Jesse Hallad250842017-03-10 18:35:38 -08002709@extension("VK_KHR_swapchain") // 2
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002710type VkFlags VkSwapchainCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002711@extension("VK_KHR_swapchain") // 2
2712bitfield VkSwapchainCreateFlagBitsKHR {
Ian Elliottcd8ad332017-10-13 09:21:12 -06002713 //@vulkan1_1
Jesse Hall35b4de12018-01-17 22:06:20 -08002714 VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0x00000001,
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002715 VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR = 0x00000002,
2716}
2717
Ian Elliottcd8ad332017-10-13 09:21:12 -06002718@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002719@extension("VK_KHR_swapchain") // 2
2720type VkFlags VkDeviceGroupPresentModeFlagsKHR
Ian Elliottcd8ad332017-10-13 09:21:12 -06002721@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002722@extension("VK_KHR_swapchain") // 2
2723bitfield VkDeviceGroupPresentModeFlagBitsKHR {
2724 VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR = 0x00000001,
2725 VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR = 0x00000002,
2726 VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR = 0x00000004,
2727 VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 0x00000008,
Jesse Hallad250842017-03-10 18:35:38 -08002728}
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002729
Jesse Hallad250842017-03-10 18:35:38 -08002730@extension("VK_KHR_display") // 3
Jesse Halld8bade02015-11-24 10:24:18 -08002731type VkFlags VkDisplayPlaneAlphaFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002732@extension("VK_KHR_display") // 3
Jesse Halld8bade02015-11-24 10:24:18 -08002733bitfield VkDisplayPlaneAlphaFlagBitsKHR {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002734 VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
2735 VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
2736 VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
2737 VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
Jesse Hall1356b0d2015-11-23 17:24:58 -08002738}
2739
Jesse Hallad250842017-03-10 18:35:38 -08002740@extension("VK_KHR_display") // 3
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002741type VkFlags VkDisplaySurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002742//@extension("VK_KHR_display") // 3
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002743//bitfield VkDisplaySurfaceCreateFlagBitsKHR {
2744//}
2745
Jesse Hallad250842017-03-10 18:35:38 -08002746@extension("VK_KHR_display") // 3
Jesse Hall9ba8bc82015-11-30 16:22:16 -08002747type VkFlags VkDisplayModeCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002748//@extension("VK_KHR_display") // 3
Jesse Hall9ba8bc82015-11-30 16:22:16 -08002749//bitfield VkDisplayModeCreateFlagBitsKHR {
2750//}
2751
Jesse Hallad250842017-03-10 18:35:38 -08002752@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002753type VkFlags VkXlibSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002754//@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002755//bitfield VkXlibSurfaceCreateFlagBitsKHR {
2756//}
2757
Jesse Hallad250842017-03-10 18:35:38 -08002758@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002759type VkFlags VkXcbSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002760//@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002761//bitfield VkXcbSurfaceCreateFlagBitsKHR {
2762//}
2763
Jesse Hallad250842017-03-10 18:35:38 -08002764@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002765type VkFlags VkWaylandSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002766//@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002767//bitfield VkWaylandSurfaceCreateFlagBitsKHR {
2768//}
2769
Jesse Hallad250842017-03-10 18:35:38 -08002770@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002771type VkFlags VkMirSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002772//@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002773//bitfield VkMirSurfaceCreateFlagBitsKHR {
2774//}
2775
Jesse Hallad250842017-03-10 18:35:38 -08002776@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002777type VkFlags VkAndroidSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002778//@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002779//bitfield VkAndroidSurfaceCreateFlagBitsKHR {
2780//}
2781
Jesse Hallad250842017-03-10 18:35:38 -08002782@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002783type VkFlags VkWin32SurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002784//@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002785//bitfield VkWin32SurfaceCreateFlagBitsKHR {
2786//}
2787
Jesse Hallad250842017-03-10 18:35:38 -08002788@extension("VK_ANDROID_native_buffer") // 11
Jesse Hall889cd9a2017-02-25 22:12:23 -08002789type VkFlags VkSwapchainImageUsageFlagsANDROID
Jesse Hallad250842017-03-10 18:35:38 -08002790@extension("VK_ANDROID_native_buffer") // 11
Jesse Hall889cd9a2017-02-25 22:12:23 -08002791bitfield VkSwapchainImageUsageFlagBitsANDROID {
2792 VK_SWAPCHAIN_IMAGE_USAGE_FLAGS_SHARED_BIT_ANDROID = 0x00000001,
2793}
2794
Jesse Hallad250842017-03-10 18:35:38 -08002795@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08002796type VkFlags VkDebugReportFlagsEXT
Jesse Hallad250842017-03-10 18:35:38 -08002797@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08002798bitfield VkDebugReportFlagBitsEXT {
Jesse Halle2948d82016-02-25 04:19:32 -08002799 VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,
2800 VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002,
2801 VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004,
Jesse Hall715b86a2016-01-16 16:34:29 -08002802 VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008,
2803 VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010,
2804}
2805
Jesse Hallad250842017-03-10 18:35:38 -08002806@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13002807type VkFlags VkExternalMemoryHandleTypeFlagsNV
Jesse Hallad250842017-03-10 18:35:38 -08002808@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13002809bitfield VkExternalMemoryHandleTypeFlagBitsNV {
Jesse Halleb02c472017-02-24 15:13:45 -08002810 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,
2811 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,
2812 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,
2813 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,
Chris Forbes289cb792016-12-30 15:03:55 +13002814}
2815
Jesse Hallad250842017-03-10 18:35:38 -08002816@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13002817type VkFlags VkExternalMemoryFeatureFlagsNV
Jesse Hallad250842017-03-10 18:35:38 -08002818@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13002819bitfield VkExternalMemoryFeatureFlagBitsNV {
Jesse Halleb02c472017-02-24 15:13:45 -08002820 VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001,
2821 VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002,
2822 VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004,
Chris Forbes289cb792016-12-30 15:03:55 +13002823}
2824
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002825@extension("VK_KHR_device_group") // 61
2826type VkFlags VkPeerMemoryFeatureFlagsKHR
2827@extension("VK_KHR_device_group") // 61
2828bitfield VkPeerMemoryFeatureFlagBitsKHR {
2829 VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR = 0x00000001,
2830 VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR = 0x00000002,
2831 VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR = 0x00000004,
2832 VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR = 0x00000008,
Jesse Hallad250842017-03-10 18:35:38 -08002833}
2834
Daniel Kochf25f5bb2017-10-05 00:26:58 -04002835@extension("VK_KHR_device_group") // 61
2836type VkFlags VkMemoryAllocateFlagsKHR
2837@extension("VK_KHR_device_group") // 61
2838bitfield VkMemoryAllocateFlagBitsKHR {
2839 VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR = 0x00000001,
Jesse Hallad250842017-03-10 18:35:38 -08002840}
2841
2842@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08002843type VkFlags VkViSurfaceCreateFlagsNN
Jesse Hallad250842017-03-10 18:35:38 -08002844//@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08002845//bitfield VkViSurfaceCreateFlagBitsNN {
2846//}
2847
Jesse Hallad250842017-03-10 18:35:38 -08002848@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08002849type VkFlags VkCommandPoolTrimFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002850//@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08002851//bitfield VkCommandPoolTrimFlagBitsKHR {
2852//}
2853
Jesse Hall9492f992017-08-28 12:10:06 -07002854@extension("VK_KHR_external_memory_capabilities") // 72
2855type VkFlags VkExternalMemoryHandleTypeFlagsKHR
2856@extension("VK_KHR_external_memory_capabilities") // 72
2857bitfield VkExternalMemoryHandleTypeFlagBitsKHR {
2858 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 0x00000001,
2859 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 0x00000002,
2860 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 0x00000004,
2861 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 0x00000008,
2862 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 0x00000010,
2863 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 0x00000020,
2864 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 0x00000040,
Jesse Hallad250842017-03-10 18:35:38 -08002865}
2866
Jesse Hall9492f992017-08-28 12:10:06 -07002867@extension("VK_KHR_external_memory_capabilities") // 72
2868type VkFlags VkExternalMemoryFeatureFlagsKHR
2869@extension("VK_KHR_external_memory_capabilities") // 72
2870bitfield VkExternalMemoryFeatureFlagBitsKHR {
2871 VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 0x00000001,
2872 VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 0x00000002,
2873 VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 0x00000004,
Jesse Hallad250842017-03-10 18:35:38 -08002874}
2875
Jesse Hall9492f992017-08-28 12:10:06 -07002876@extension("VK_KHR_external_semaphore_capabilities") // 77
2877type VkFlags VkExternalSemaphoreHandleTypeFlagsKHR
2878@extension("VK_KHR_external_semaphore_capabilities") // 77
2879bitfield VkExternalSemaphoreHandleTypeFlagBitsKHR {
2880 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 0x00000001
2881 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 0x00000002
2882 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 0x00000004
2883 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 0x00000008
2884 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHR = 0x00000010
Jesse Hallad250842017-03-10 18:35:38 -08002885}
2886
Jesse Hall9492f992017-08-28 12:10:06 -07002887@extension("VK_KHR_external_semaphore_capabilities") // 77
2888type VkFlags VkExternalSemaphoreFeatureFlagsKHR
2889@extension("VK_KHR_external_semaphore_capabilities") // 77
2890bitfield VkExternalSemaphoreFeatureFlagBitsKHR {
2891 VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 0x00000001,
2892 VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 0x00000002,
2893}
2894
2895@extension("VK_KHR_external_semaphore") // 78
2896type VkFlags VkSemaphoreImportFlagsKHR
2897@extension("VK_KHR_external_semaphore") // 78
2898bitfield VkSemaphoreImportFlagBitsKHR {
2899 VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 0x00000001,
Jesse Hallad250842017-03-10 18:35:38 -08002900}
2901
2902@extension("VK_KHR_descriptor_update_template") // 86
2903type VkFlags VkDescriptorUpdateTemplateCreateFlagsKHR
2904//@extension("VK_KHR_descriptor_update_template") // 86
2905//bitfield VkDescriptorUpdateTemplateCreateFlagBitsKHR {
2906//}
2907
2908@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002909type VkFlags VkIndirectCommandsLayoutUsageFlagsNVX
Jesse Hallad250842017-03-10 18:35:38 -08002910@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002911bitfield VkIndirectCommandsLayoutUsageFlagBitsNVX {
Jesse Halleb02c472017-02-24 15:13:45 -08002912 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = 0x00000001,
2913 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = 0x00000002,
2914 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = 0x00000004,
2915 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = 0x00000008,
Chris Forbes289cb792016-12-30 15:03:55 +13002916}
2917
Jesse Hallad250842017-03-10 18:35:38 -08002918@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002919type VkFlags VkObjectEntryUsageFlagsNVX
Jesse Hallad250842017-03-10 18:35:38 -08002920@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002921bitfield VkObjectEntryUsageFlagBitsNVX {
Jesse Halleb02c472017-02-24 15:13:45 -08002922 VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = 0x00000001,
2923 VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = 0x00000002,
Chris Forbes289cb792016-12-30 15:03:55 +13002924}
2925
Jesse Hallad250842017-03-10 18:35:38 -08002926@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08002927type VkFlags VkSurfaceCounterFlagsEXT
Jesse Hallad250842017-03-10 18:35:38 -08002928@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08002929bitfield VkSurfaceCounterFlagBitsEXT {
2930 VK_SURFACE_COUNTER_VBLANK_EXT = 0x00000001,
2931}
2932
Jesse Hallad250842017-03-10 18:35:38 -08002933@extension("VK_NV_viewport_swizzle") // 99
2934type VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV
2935//@extension("VK_NV_viewport_swizzle") // 99
2936//bitfield VkPipelineViewportSwizzleStateCreateFlagBitsNV {
2937//}
2938
2939@extension("VK_EXT_discard_rectangles") // 100
2940type VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT
2941//@extension("VK_EXT_discard_rectangles") // 100
2942//bitfield VkPipelineDiscardRectangleStateCreateFlagBitsEXT {
2943//}
2944
Jesse Hall35b4de12018-01-17 22:06:20 -08002945@extension("VK_EXT_conservative_rasterization") // 102
2946type VkFlags VkPipelineRasterizationConservativeStateCreateFlagsEXT
2947//@extension("VK_EXT_conservative_rasterization") // 102
2948//bitfield VkPipelineRasterizationConservativeStateCreateFlagBitsEXT {
2949//}
2950
Jesse Hall9492f992017-08-28 12:10:06 -07002951@extension("VK_KHR_external_fence_capabilities") // 113
2952type VkFlags VkExternalFenceHandleTypeFlagsKHR
2953@extension("VK_KHR_external_fence_capabilities") // 113
2954bitfield VkExternalFenceHandleTypeFlagBitsKHR {
2955 VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 0x00000001,
2956 VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 0x00000002,
2957 VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 0x00000004,
2958 VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 0x00000008,
2959}
2960
2961@extension("VK_KHR_external_fence_capabilities") // 113
2962type VkFlags VkExternalFenceFeatureFlagsKHR
2963@extension("VK_KHR_external_fence_capabilities") // 113
2964bitfield VkExternalFenceFeatureFlagBitsKHR {
2965 VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 0x00000001,
2966 VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 0x00000002,
2967}
2968
2969@extension("VK_KHR_external_fence") // 114
2970type VkFlags VkFenceImportFlagsKHR
2971@extension("VK_KHR_external_fence") // 114
2972bitfield VkFenceImportFlagBitsKHR {
2973 VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 0x00000001,
2974}
2975
Jesse Hallad250842017-03-10 18:35:38 -08002976@extension("VK_MVK_ios_surface") // 123
2977type VkFlags VkIOSSurfaceCreateFlagsMVK
2978//@extension("VK_MVK_ios_surface") // 123
2979//bitfield VkIOSSurfaceCreateFlagBitsMVK {
2980//}
2981
2982@extension("VK_MVK_macos_surface") // 124
2983type VkFlags VkMacOSSurfaceCreateFlagsMVK
2984//@extension("VK_MVK_macos_surface") // 124
2985//bitfield VkMacOSSurfaceCreateFlagBitsMVK {
2986//}
2987
Jesse Hall35b4de12018-01-17 22:06:20 -08002988@extension("VK_EXT_debug_utils") // 129
2989type VkFlags VkDebugUtilsMessengerCallbackDataFlagsEXT
2990//@extension("VK_EXT_debug_utils") // 129
2991//bitfield VkDebugUtilsMessengerCallbackDataFlagBitsEXT {
2992//}
2993
2994@extension("VK_EXT_debug_utils") // 129
2995type VkFlags VkDebugUtilsMessengerCreateFlagsEXT
2996//@extension("VK_EXT_debug_utils") // 129
2997//bitfield VkDebugUtilsMessengerCreateFlagBitsEXT {
2998//}
2999
3000@extension("VK_EXT_debug_utils") // 129
3001type VkFlags VkDebugUtilsMessageSeverityFlagsEXT
3002@extension("VK_EXT_debug_utils") // 129
3003bitfield VkDebugUtilsMessageSeverityFlagBitsEXT {
3004 VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001,
3005 VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT = 0x00000010,
3006 VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0x00000100,
3007 VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT = 0x00001000,
3008}
3009
3010@extension("VK_EXT_debug_utils") // 129
3011type VkFlags VkDebugUtilsMessageTypeFlagsEXT
3012@extension("VK_EXT_debug_utils") // 129
3013bitfield VkDebugUtilsMessageTypeFlagBitsEXT {
3014 VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT = 0x00000001,
3015 VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT = 0x00000002,
3016 VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004,
3017}
3018
Jesse Hall7ba0ac72017-07-07 17:13:23 -07003019@extension("VK_NV_fragment_coverage_to_color") // 150
3020type VkFlags VkPipelineCoverageToColorStateCreateFlagsNV
3021@extension("VK_NV_fragment_coverage_to_color") // 150
3022//bitfield VkPipelineCoverageToColorStateCreateFlagBitsNV {
3023//}
3024
3025@extension("VK_NV_framebuffer_mixed_samples") // 153
3026type VkFlags VkPipelineCoverageModulationStateCreateFlagsNV
3027@extension("VK_NV_framebuffer_mixed_samples") // 153
3028//bitfield VkPipelineCoverageModulationStateCreateFlagBitsNV {
3029//}
3030
Jesse Hall77726222017-09-19 14:49:27 -05003031@extension("VK_EXT_validation_cache") // 161
3032type VkFlags VkValidationCacheCreateFlagsEXT
3033@extension("VK_EXT_validation_cache") // 161
3034//bitfield VkValidationCacheCreateFlagBitsEXT {
3035//}
3036
Jesse Halld27f6aa2015-08-15 17:58:48 -07003037//////////////////
3038// Structures //
3039//////////////////
3040
3041class VkOffset2D {
3042 s32 x
3043 s32 y
3044}
3045
3046class VkOffset3D {
3047 s32 x
3048 s32 y
3049 s32 z
3050}
3051
3052class VkExtent2D {
Jesse Hall3dd678a2016-01-08 21:52:01 -08003053 u32 width
3054 u32 height
Jesse Halld27f6aa2015-08-15 17:58:48 -07003055}
3056
3057class VkExtent3D {
Jesse Hall3dd678a2016-01-08 21:52:01 -08003058 u32 width
3059 u32 height
3060 u32 depth
Jesse Halld27f6aa2015-08-15 17:58:48 -07003061}
3062
3063class VkViewport {
Jesse Hall65ab5522015-11-30 00:07:16 -08003064 f32 x
3065 f32 y
Jesse Halld27f6aa2015-08-15 17:58:48 -07003066 f32 width
3067 f32 height
3068 f32 minDepth
3069 f32 maxDepth
3070}
3071
3072class VkRect2D {
3073 VkOffset2D offset
3074 VkExtent2D extent
3075}
3076
Jesse Halla15a4bf2015-11-19 22:48:02 -08003077class VkClearRect {
3078 VkRect2D rect
3079 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08003080 u32 layerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003081}
3082
Jesse Hall65ab5522015-11-30 00:07:16 -08003083class VkComponentMapping {
3084 VkComponentSwizzle r
3085 VkComponentSwizzle g
3086 VkComponentSwizzle b
3087 VkComponentSwizzle a
Jesse Halld27f6aa2015-08-15 17:58:48 -07003088}
3089
3090class VkPhysicalDeviceProperties {
3091 u32 apiVersion
3092 u32 driverVersion
Jesse Hall65ab5522015-11-30 00:07:16 -08003093 u32 vendorID
3094 u32 deviceID
Jesse Halld27f6aa2015-08-15 17:58:48 -07003095 VkPhysicalDeviceType deviceType
Jesse Hall65ab5522015-11-30 00:07:16 -08003096 char[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE] deviceName
3097 u8[VK_UUID_SIZE] pipelineCacheUUID
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003098 VkPhysicalDeviceLimits limits
3099 VkPhysicalDeviceSparseProperties sparseProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07003100}
3101
3102class VkExtensionProperties {
Jesse Hall65ab5522015-11-30 00:07:16 -08003103 char[VK_MAX_EXTENSION_NAME_SIZE] extensionName /// extension name
Jesse Halld27f6aa2015-08-15 17:58:48 -07003104 u32 specVersion /// version of the extension specification implemented
3105}
3106
3107class VkLayerProperties {
Jesse Hall65ab5522015-11-30 00:07:16 -08003108 char[VK_MAX_EXTENSION_NAME_SIZE] layerName /// layer name
Jesse Hall3fbc8562015-11-29 22:10:52 -08003109 u32 specVersion /// version of the layer specification implemented
3110 u32 implementationVersion /// build or release version of the layer's library
Jesse Hall65ab5522015-11-30 00:07:16 -08003111 char[VK_MAX_DESCRIPTION_SIZE] description /// Free-form description of the layer
Jesse Halld27f6aa2015-08-15 17:58:48 -07003112}
3113
Jesse Halla366a512015-11-19 22:30:07 -08003114class VkSubmitInfo {
Jesse Hall03b6fe12015-11-24 12:44:21 -08003115 VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_SUBMIT_INFO
3116 const void* pNext /// Next structure in chain
3117 u32 waitSemaphoreCount
Jesse Halla366a512015-11-19 22:30:07 -08003118 const VkSemaphore* pWaitSemaphores
Jesse Hall543a7ff2016-01-08 16:38:30 -08003119 const VkPipelineStageFlags* pWaitDstStageMask
Jesse Hall03b6fe12015-11-24 12:44:21 -08003120 u32 commandBufferCount
Jesse Hall3fbc8562015-11-29 22:10:52 -08003121 const VkCommandBuffer* pCommandBuffers
Jesse Hall03b6fe12015-11-24 12:44:21 -08003122 u32 signalSemaphoreCount
Jesse Halla366a512015-11-19 22:30:07 -08003123 const VkSemaphore* pSignalSemaphores
3124}
3125
Jesse Halld27f6aa2015-08-15 17:58:48 -07003126class VkApplicationInfo {
3127 VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_APPLICATION_INFO
3128 const void* pNext /// Next structure in chain
Jesse Hall3fbc8562015-11-29 22:10:52 -08003129 const char* pApplicationName
3130 u32 applicationVersion
Jesse Halld27f6aa2015-08-15 17:58:48 -07003131 const char* pEngineName
3132 u32 engineVersion
3133 u32 apiVersion
3134}
3135
Jesse Hall3fbc8562015-11-29 22:10:52 -08003136class VkAllocationCallbacks {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003137 void* pUserData
Jesse Hall3fbc8562015-11-29 22:10:52 -08003138 PFN_vkAllocationFunction pfnAllocation
3139 PFN_vkReallocationFunction pfnReallocation
Jesse Halld27f6aa2015-08-15 17:58:48 -07003140 PFN_vkFreeFunction pfnFree
Jesse Hall3fbc8562015-11-29 22:10:52 -08003141 PFN_vkInternalAllocationNotification pfnInternalAllocation
Jesse Hall03b6fe12015-11-24 12:44:21 -08003142 PFN_vkInternalFreeNotification pfnInternalFree
Jesse Halld27f6aa2015-08-15 17:58:48 -07003143}
3144
3145class VkDeviceQueueCreateInfo {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003146 VkStructureType sStype /// Should be VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
3147 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003148 VkDeviceQueueCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003149 u32 queueFamilyIndex
Jesse Halldba27f72015-11-30 14:25:46 -08003150 u32 queueCount
Jesse Hallfbf97b02015-11-20 14:17:03 -08003151 const f32* pQueuePriorities
Jesse Halld27f6aa2015-08-15 17:58:48 -07003152}
3153
3154class VkDeviceCreateInfo {
3155 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO
3156 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003157 VkDeviceCreateFlags flags
Jesse Halldba27f72015-11-30 14:25:46 -08003158 u32 queueCreateInfoCount
3159 const VkDeviceQueueCreateInfo* pQueueCreateInfos
Jesse Hall3dd678a2016-01-08 21:52:01 -08003160 u32 enabledLayerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003161 const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled
Jesse Hall3dd678a2016-01-08 21:52:01 -08003162 u32 enabledExtensionCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003163 const char* const* ppEnabledExtensionNames
3164 const VkPhysicalDeviceFeatures* pEnabledFeatures
Jesse Halld27f6aa2015-08-15 17:58:48 -07003165}
3166
3167class VkInstanceCreateInfo {
3168 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
3169 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003170 VkInstanceCreateFlags flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08003171 const VkApplicationInfo* pApplicationInfo
Jesse Hall3dd678a2016-01-08 21:52:01 -08003172 u32 enabledLayerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003173 const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled
Jesse Hall3dd678a2016-01-08 21:52:01 -08003174 u32 enabledExtensionCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003175 const char* const* ppEnabledExtensionNames /// Extension names to be enabled
3176}
3177
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003178class VkQueueFamilyProperties {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003179 VkQueueFlags queueFlags /// Queue flags
3180 u32 queueCount
Jesse Hallacfa5342015-11-19 21:51:33 -08003181 u32 timestampValidBits
Jesse Hall65ab5522015-11-30 00:07:16 -08003182 VkExtent3D minImageTransferGranularity
Jesse Halld27f6aa2015-08-15 17:58:48 -07003183}
3184
3185class VkPhysicalDeviceMemoryProperties {
3186 u32 memoryTypeCount
3187 VkMemoryType[VK_MAX_MEMORY_TYPES] memoryTypes
3188 u32 memoryHeapCount
3189 VkMemoryHeap[VK_MAX_MEMORY_HEAPS] memoryHeaps
3190}
3191
Jesse Hall3fbc8562015-11-29 22:10:52 -08003192class VkMemoryAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003193 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07003194 const void* pNext /// Pointer to next structure
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003195 VkDeviceSize allocationSize /// Size of memory allocation
Jesse Halld27f6aa2015-08-15 17:58:48 -07003196 u32 memoryTypeIndex /// Index of the of the memory type to allocate from
3197}
3198
3199class VkMemoryRequirements {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003200 VkDeviceSize size /// Specified in bytes
3201 VkDeviceSize alignment /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07003202 u32 memoryTypeBits /// Bitfield of the allowed memory type indices into memoryTypes[] for this object
3203}
3204
3205class VkSparseImageFormatProperties {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003206 VkImageAspectFlagBits aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07003207 VkExtent3D imageGranularity
3208 VkSparseImageFormatFlags flags
3209}
3210
3211class VkSparseImageMemoryRequirements {
Jesse Hallb00daad2015-11-29 19:46:20 -08003212 VkSparseImageFormatProperties formatProperties
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003213 u32 imageMipTailFirstLod
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003214 VkDeviceSize imageMipTailSize /// Specified in bytes, must be a multiple of image block size / alignment
3215 VkDeviceSize imageMipTailOffset /// Specified in bytes, must be a multiple of image block size / alignment
3216 VkDeviceSize imageMipTailStride /// Specified in bytes, must be a multiple of image block size / alignment
Jesse Halld27f6aa2015-08-15 17:58:48 -07003217}
3218
3219class VkMemoryType {
3220 VkMemoryPropertyFlags propertyFlags /// Memory properties of this memory type
3221 u32 heapIndex /// Index of the memory heap allocations of this memory type are taken from
3222}
3223
3224class VkMemoryHeap {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003225 VkDeviceSize size /// Available memory in the heap
Jesse Halld27f6aa2015-08-15 17:58:48 -07003226 VkMemoryHeapFlags flags /// Flags for the heap
3227}
3228
3229class VkMappedMemoryRange {
3230 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
3231 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08003232 VkDeviceMemory memory /// Mapped memory object
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003233 VkDeviceSize offset /// Offset within the mapped memory the range starts from
3234 VkDeviceSize size /// Size of the range within the mapped memory
Jesse Halld27f6aa2015-08-15 17:58:48 -07003235}
3236
3237class VkFormatProperties {
3238 VkFormatFeatureFlags linearTilingFeatures /// Format features in case of linear tiling
3239 VkFormatFeatureFlags optimalTilingFeatures /// Format features in case of optimal tiling
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003240 VkFormatFeatureFlags bufferFeatures /// Format features supported by buffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07003241}
3242
3243class VkImageFormatProperties {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003244 VkExtent3D maxExtent /// max image dimensions for this resource type
3245 u32 maxMipLevels /// max number of mipmap levels for this resource type
Jesse Halla15a4bf2015-11-19 22:48:02 -08003246 u32 maxArrayLayers /// max array layers for this resource type
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003247 VkSampleCountFlags sampleCounts /// supported sample counts for this resource type
3248 VkDeviceSize maxResourceSize /// max size (in bytes) of this resource type
3249}
3250
Jesse Halla15a4bf2015-11-19 22:48:02 -08003251class VkDescriptorImageInfo {
3252 VkSampler sampler
3253 VkImageView imageView
3254 VkImageLayout imageLayout
3255}
3256
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003257class VkDescriptorBufferInfo {
3258 VkBuffer buffer /// Buffer used for this descriptor when the descriptor is UNIFORM_BUFFER[_DYNAMIC]
3259 VkDeviceSize offset /// Base offset from buffer start in bytes to update in the descriptor set.
3260 VkDeviceSize range /// Size in bytes of the buffer resource for this descriptor update.
Jesse Halld27f6aa2015-08-15 17:58:48 -07003261}
3262
Jesse Halld27f6aa2015-08-15 17:58:48 -07003263class VkWriteDescriptorSet {
3264 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
3265 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08003266 VkDescriptorSet dstSet /// Destination descriptor set
3267 u32 dstBinding /// Binding within the destination descriptor set to write
3268 u32 dstArrayElement /// Array element within the destination binding to write
Jesse Hall03b6fe12015-11-24 12:44:21 -08003269 u32 descriptorCount /// Number of descriptors to write (determines the size of the array pointed by <pDescriptors>)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003270 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 -08003271 const VkDescriptorImageInfo* pImageInfo
3272 const VkDescriptorBufferInfo* pBufferInfo
3273 const VkBufferView* pTexelBufferView
Jesse Halld27f6aa2015-08-15 17:58:48 -07003274}
3275
3276class VkCopyDescriptorSet {
3277 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET
3278 const void* pNext /// Pointer to next structure
3279 VkDescriptorSet srcSet /// Source descriptor set
3280 u32 srcBinding /// Binding within the source descriptor set to copy from
3281 u32 srcArrayElement /// Array element within the source binding to copy from
Jesse Hall3fbc8562015-11-29 22:10:52 -08003282 VkDescriptorSet dstSet /// Destination descriptor set
3283 u32 dstBinding /// Binding within the destination descriptor set to copy to
3284 u32 dstArrayElement /// Array element within the destination binding to copy to
Jesse Hall03b6fe12015-11-24 12:44:21 -08003285 u32 descriptorCount /// Number of descriptors to copy
Jesse Halld27f6aa2015-08-15 17:58:48 -07003286}
3287
3288class VkBufferCreateInfo {
3289 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
3290 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08003291 VkBufferCreateFlags flags /// Buffer creation flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003292 VkDeviceSize size /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07003293 VkBufferUsageFlags usage /// Buffer usage flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003294 VkSharingMode sharingMode
Jesse Hall03b6fe12015-11-24 12:44:21 -08003295 u32 queueFamilyIndexCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003296 const u32* pQueueFamilyIndices
3297}
3298
3299class VkBufferViewCreateInfo {
3300 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO
3301 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08003302 VkBufferViewCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003303 VkBuffer buffer
Jesse Halld27f6aa2015-08-15 17:58:48 -07003304 VkFormat format /// Optionally specifies format of elements
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003305 VkDeviceSize offset /// Specified in bytes
3306 VkDeviceSize range /// View size specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07003307}
3308
3309class VkImageSubresource {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003310 VkImageAspectFlagBits aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07003311 u32 mipLevel
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003312 u32 arrayLayer
Jesse Halld27f6aa2015-08-15 17:58:48 -07003313}
3314
3315class VkImageSubresourceRange {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003316 VkImageAspectFlags aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07003317 u32 baseMipLevel
Jesse Hall3fbc8562015-11-29 22:10:52 -08003318 u32 levelCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003319 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08003320 u32 layerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003321}
3322
3323class VkMemoryBarrier {
3324 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_BARRIER
3325 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003326 VkAccessFlags srcAccessMask
3327 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07003328}
3329
3330class VkBufferMemoryBarrier {
3331 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
3332 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003333 VkAccessFlags srcAccessMask
3334 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07003335 u32 srcQueueFamilyIndex /// Queue family to transition ownership from
Jesse Hall3fbc8562015-11-29 22:10:52 -08003336 u32 dstQueueFamilyIndex /// Queue family to transition ownership to
Jesse Halld27f6aa2015-08-15 17:58:48 -07003337 VkBuffer buffer /// Buffer to sync
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003338 VkDeviceSize offset /// Offset within the buffer to sync
3339 VkDeviceSize size /// Amount of bytes to sync
Jesse Halld27f6aa2015-08-15 17:58:48 -07003340}
3341
3342class VkImageMemoryBarrier {
3343 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
3344 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003345 VkAccessFlags srcAccessMask
3346 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07003347 VkImageLayout oldLayout /// Current layout of the image
3348 VkImageLayout newLayout /// New layout to transition the image to
3349 u32 srcQueueFamilyIndex /// Queue family to transition ownership from
Jesse Hall3fbc8562015-11-29 22:10:52 -08003350 u32 dstQueueFamilyIndex /// Queue family to transition ownership to
Jesse Halld27f6aa2015-08-15 17:58:48 -07003351 VkImage image /// Image to sync
3352 VkImageSubresourceRange subresourceRange /// Subresource range to sync
3353}
3354
3355class VkImageCreateInfo {
3356 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
3357 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08003358 VkImageCreateFlags flags /// Image creation flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003359 VkImageType imageType
3360 VkFormat format
3361 VkExtent3D extent
3362 u32 mipLevels
Jesse Halla15a4bf2015-11-19 22:48:02 -08003363 u32 arrayLayers
Jesse Hall091ed9e2015-11-30 00:55:29 -08003364 VkSampleCountFlagBits samples
Jesse Halld27f6aa2015-08-15 17:58:48 -07003365 VkImageTiling tiling
3366 VkImageUsageFlags usage /// Image usage flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003367 VkSharingMode sharingMode /// Cross-queue-family sharing mode
Jesse Hall03b6fe12015-11-24 12:44:21 -08003368 u32 queueFamilyIndexCount /// Number of queue families to share across
Jesse Halld27f6aa2015-08-15 17:58:48 -07003369 const u32* pQueueFamilyIndices /// Array of queue family indices to share across
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003370 VkImageLayout initialLayout /// Initial image layout for all subresources
Jesse Halld27f6aa2015-08-15 17:58:48 -07003371}
3372
3373class VkSubresourceLayout {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003374 VkDeviceSize offset /// Specified in bytes
3375 VkDeviceSize size /// Specified in bytes
3376 VkDeviceSize rowPitch /// Specified in bytes
Jesse Hall543a7ff2016-01-08 16:38:30 -08003377 VkDeviceSize arrayPitch /// Specified in bytes
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003378 VkDeviceSize depthPitch /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07003379}
3380
3381class VkImageViewCreateInfo {
3382 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
3383 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003384 VkImageViewCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003385 VkImage image
3386 VkImageViewType viewType
3387 VkFormat format
Jesse Hall65ab5522015-11-30 00:07:16 -08003388 VkComponentMapping components
Jesse Halld27f6aa2015-08-15 17:58:48 -07003389 VkImageSubresourceRange subresourceRange
Jesse Halld27f6aa2015-08-15 17:58:48 -07003390}
3391
3392class VkBufferCopy {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003393 VkDeviceSize srcOffset /// Specified in bytes
Jesse Hall3fbc8562015-11-29 22:10:52 -08003394 VkDeviceSize dstOffset /// Specified in bytes
Jesse Hallb00daad2015-11-29 19:46:20 -08003395 VkDeviceSize size /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07003396}
3397
Jesse Halla6429252015-11-29 18:59:42 -08003398class VkSparseMemoryBind {
Jesse Hallb00daad2015-11-29 19:46:20 -08003399 VkDeviceSize resourceOffset /// Specified in bytes
3400 VkDeviceSize size /// Specified in bytes
Jesse Hall3fbc8562015-11-29 22:10:52 -08003401 VkDeviceMemory memory
3402 VkDeviceSize memoryOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07003403 VkSparseMemoryBindFlags flags
3404}
3405
Jesse Halla6429252015-11-29 18:59:42 -08003406class VkSparseImageMemoryBind {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003407 VkImageSubresource subresource
3408 VkOffset3D offset
3409 VkExtent3D extent
Jesse Hall3fbc8562015-11-29 22:10:52 -08003410 VkDeviceMemory memory
3411 VkDeviceSize memoryOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07003412 VkSparseMemoryBindFlags flags
3413}
3414
Jesse Halla6429252015-11-29 18:59:42 -08003415class VkSparseBufferMemoryBindInfo {
3416 VkBuffer buffer
3417 u32 bindCount
3418 const VkSparseMemoryBind* pBinds
3419}
3420
3421class VkSparseImageOpaqueMemoryBindInfo {
3422 VkImage image
3423 u32 bindCount
3424 const VkSparseMemoryBind* pBinds
3425}
3426
3427class VkSparseImageMemoryBindInfo {
3428 VkImage image
3429 u32 bindCount
3430 const VkSparseMemoryBind* pBinds
3431}
3432
3433class VkBindSparseInfo {
3434 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BIND_SPARSE_INFO
3435 const void* pNext
3436 u32 waitSemaphoreCount
3437 const VkSemaphore* pWaitSemaphores
3438 u32 numBufferBinds
3439 const VkSparseBufferMemoryBindInfo* pBufferBinds
3440 u32 numImageOpaqueBinds
3441 const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds
3442 u32 numImageBinds
3443 const VkSparseImageMemoryBindInfo* pImageBinds
3444 u32 signalSemaphoreCount
3445 const VkSemaphore* pSignalSemaphores
3446}
3447
Jesse Hall65ab5522015-11-30 00:07:16 -08003448class VkImageSubresourceLayers {
3449 VkImageAspectFlags aspectMask
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003450 u32 mipLevel
Jesse Halla15a4bf2015-11-19 22:48:02 -08003451 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08003452 u32 layerCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003453}
3454
Jesse Halld27f6aa2015-08-15 17:58:48 -07003455class VkImageCopy {
Jesse Hall65ab5522015-11-30 00:07:16 -08003456 VkImageSubresourceLayers srcSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07003457 VkOffset3D srcOffset /// Specified in pixels for both compressed and uncompressed images
Jesse Hall65ab5522015-11-30 00:07:16 -08003458 VkImageSubresourceLayers dstSubresource
Jesse Hall3fbc8562015-11-29 22:10:52 -08003459 VkOffset3D dstOffset /// Specified in pixels for both compressed and uncompressed images
Jesse Halld27f6aa2015-08-15 17:58:48 -07003460 VkExtent3D extent /// Specified in pixels for both compressed and uncompressed images
3461}
3462
3463class VkImageBlit {
Jesse Hall65ab5522015-11-30 00:07:16 -08003464 VkImageSubresourceLayers srcSubresource
Jesse Hall3dd678a2016-01-08 21:52:01 -08003465 VkOffset3D[2] srcOffsets
Jesse Hall65ab5522015-11-30 00:07:16 -08003466 VkImageSubresourceLayers dstSubresource
Jesse Hall3dd678a2016-01-08 21:52:01 -08003467 VkOffset3D[2] dstOffsets
Jesse Halld27f6aa2015-08-15 17:58:48 -07003468}
3469
3470class VkBufferImageCopy {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003471 VkDeviceSize bufferOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07003472 u32 bufferRowLength /// Specified in texels
3473 u32 bufferImageHeight
Jesse Hall65ab5522015-11-30 00:07:16 -08003474 VkImageSubresourceLayers imageSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07003475 VkOffset3D imageOffset /// Specified in pixels for both compressed and uncompressed images
3476 VkExtent3D imageExtent /// Specified in pixels for both compressed and uncompressed images
3477}
3478
3479class VkImageResolve {
Jesse Hall65ab5522015-11-30 00:07:16 -08003480 VkImageSubresourceLayers srcSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07003481 VkOffset3D srcOffset
Jesse Hall65ab5522015-11-30 00:07:16 -08003482 VkImageSubresourceLayers dstSubresource
Jesse Hall3fbc8562015-11-29 22:10:52 -08003483 VkOffset3D dstOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07003484 VkExtent3D extent
3485}
3486
3487class VkShaderModuleCreateInfo {
3488 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
3489 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003490 VkShaderModuleCreateFlags flags /// Reserved
Jesse Halld27f6aa2015-08-15 17:58:48 -07003491 platform.size_t codeSize /// Specified in bytes
Jesse Halla9bb62b2015-11-21 19:31:56 -08003492 const u32* pCode /// Binary code of size codeSize
Jesse Halld27f6aa2015-08-15 17:58:48 -07003493}
3494
Jesse Halld27f6aa2015-08-15 17:58:48 -07003495class VkDescriptorSetLayoutBinding {
Jesse Hall091ed9e2015-11-30 00:55:29 -08003496 u32 binding
Jesse Halld27f6aa2015-08-15 17:58:48 -07003497 VkDescriptorType descriptorType /// Type of the descriptors in this binding
Jesse Halldba27f72015-11-30 14:25:46 -08003498 u32 descriptorCount /// Number of descriptors in this binding
Jesse Halld27f6aa2015-08-15 17:58:48 -07003499 VkShaderStageFlags stageFlags /// Shader stages this binding is visible to
3500 const VkSampler* pImmutableSamplers /// Immutable samplers (used if descriptor type is SAMPLER or COMBINED_IMAGE_SAMPLER, is either NULL or contains <count> number of elements)
3501}
3502
3503class VkDescriptorSetLayoutCreateInfo {
3504 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
3505 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003506 VkDescriptorSetLayoutCreateFlags flags
Jesse Hall03b6fe12015-11-24 12:44:21 -08003507 u32 bindingCount /// Number of bindings in the descriptor set layout
Jesse Hall543a7ff2016-01-08 16:38:30 -08003508 const VkDescriptorSetLayoutBinding* pBindings /// Array of descriptor set layout bindings
Jesse Halld27f6aa2015-08-15 17:58:48 -07003509}
3510
Jesse Hall65ab5522015-11-30 00:07:16 -08003511class VkDescriptorPoolSize {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003512 VkDescriptorType type
Jesse Hall03b6fe12015-11-24 12:44:21 -08003513 u32 descriptorCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003514}
3515
3516class VkDescriptorPoolCreateInfo {
3517 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
3518 const void* pNext /// Pointer to next structure
Jesse Hallfbf97b02015-11-20 14:17:03 -08003519 VkDescriptorPoolCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003520 u32 maxSets
Jesse Hall65ab5522015-11-30 00:07:16 -08003521 u32 poolSizeCount
3522 const VkDescriptorPoolSize* pPoolSizes
Jesse Halld27f6aa2015-08-15 17:58:48 -07003523}
3524
Jesse Hall3fbc8562015-11-29 22:10:52 -08003525class VkDescriptorSetAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003526 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
Jesse Hallfbf97b02015-11-20 14:17:03 -08003527 const void* pNext /// Pointer to next structure
3528 VkDescriptorPool descriptorPool
Jesse Hall03b6fe12015-11-24 12:44:21 -08003529 u32 setCount
Jesse Hallfbf97b02015-11-20 14:17:03 -08003530 const VkDescriptorSetLayout* pSetLayouts
3531}
3532
Jesse Halld27f6aa2015-08-15 17:58:48 -07003533class VkSpecializationMapEntry {
Jesse Hall65ab5522015-11-30 00:07:16 -08003534 u32 constantID /// The SpecConstant ID specified in the BIL
Jesse Halld27f6aa2015-08-15 17:58:48 -07003535 u32 offset /// Offset of the value in the data block
Jesse Hallb00daad2015-11-29 19:46:20 -08003536 platform.size_t size /// Size in bytes of the SpecConstant
Jesse Halld27f6aa2015-08-15 17:58:48 -07003537}
3538
3539class VkSpecializationInfo {
3540 u32 mapEntryCount /// Number of entries in the map
Jesse Hallb00daad2015-11-29 19:46:20 -08003541 const VkSpecializationMapEntry* pMapEntries /// Array of map entries
Jesse Halld27f6aa2015-08-15 17:58:48 -07003542 platform.size_t dataSize /// Size in bytes of pData
3543 const void* pData /// Pointer to SpecConstant data
3544}
3545
3546class VkPipelineShaderStageCreateInfo {
3547 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
3548 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003549 VkPipelineShaderStageCreateFlags flags
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003550 VkShaderStageFlagBits stage
3551 VkShaderModule module
3552 const char* pName
Jesse Halld27f6aa2015-08-15 17:58:48 -07003553 const VkSpecializationInfo* pSpecializationInfo
3554}
3555
3556class VkComputePipelineCreateInfo {
3557 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
3558 const void* pNext /// Pointer to next structure
Jesse Halld27f6aa2015-08-15 17:58:48 -07003559 VkPipelineCreateFlags flags /// Pipeline creation flags
Jesse Halla6429252015-11-29 18:59:42 -08003560 VkPipelineShaderStageCreateInfo stage
Jesse Halld27f6aa2015-08-15 17:58:48 -07003561 VkPipelineLayout layout /// Interface layout of the pipeline
3562 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
3563 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
3564}
3565
3566class VkVertexInputBindingDescription {
Jesse Hallb00daad2015-11-29 19:46:20 -08003567 u32 binding /// Vertex buffer binding id
3568 u32 stride /// Distance between vertices in bytes (0 = no advancement)
Jesse Hall65ab5522015-11-30 00:07:16 -08003569 VkVertexInputRate inputRate /// Rate at which binding is incremented
Jesse Halld27f6aa2015-08-15 17:58:48 -07003570}
3571
3572class VkVertexInputAttributeDescription {
Jesse Hallb00daad2015-11-29 19:46:20 -08003573 u32 location /// location of the shader vertex attrib
3574 u32 binding /// Vertex buffer binding id
3575 VkFormat format /// format of source data
3576 u32 offset /// Offset of first element in bytes from base of vertex
Jesse Halld27f6aa2015-08-15 17:58:48 -07003577}
3578
3579class VkPipelineVertexInputStateCreateInfo {
Jesse Hall03b6fe12015-11-24 12:44:21 -08003580 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
3581 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003582 VkPipelineVertexInputStateCreateFlags flags
Jesse Hall03b6fe12015-11-24 12:44:21 -08003583 u32 vertexBindingDescriptionCount /// number of bindings
Jesse Halld27f6aa2015-08-15 17:58:48 -07003584 const VkVertexInputBindingDescription* pVertexBindingDescriptions
Jesse Hall03b6fe12015-11-24 12:44:21 -08003585 u32 vertexAttributeDescriptionCount /// number of attributes
Jesse Halld27f6aa2015-08-15 17:58:48 -07003586 const VkVertexInputAttributeDescription* pVertexAttributeDescriptions
3587}
3588
3589class VkPipelineInputAssemblyStateCreateInfo {
3590 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
3591 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003592 VkPipelineInputAssemblyStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003593 VkPrimitiveTopology topology
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003594 VkBool32 primitiveRestartEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07003595}
3596
3597class VkPipelineTessellationStateCreateInfo {
3598 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
3599 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003600 VkPipelineTessellationStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003601 u32 patchControlPoints
3602}
3603
3604class VkPipelineViewportStateCreateInfo {
3605 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
3606 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003607 VkPipelineViewportStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003608 u32 viewportCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003609 const VkViewport* pViewports
3610 u32 scissorCount
3611 const VkRect2D* pScissors
Jesse Halld27f6aa2015-08-15 17:58:48 -07003612}
3613
Jesse Hall3fbc8562015-11-29 22:10:52 -08003614class VkPipelineRasterizationStateCreateInfo {
Jesse Hall65ab5522015-11-30 00:07:16 -08003615 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07003616 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08003617 VkPipelineRasterizationStateCreateFlags flags
Jesse Hallae38f732015-11-19 21:32:50 -08003618 VkBool32 depthClampEnable
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003619 VkBool32 rasterizerDiscardEnable
Jesse Hall65ab5522015-11-30 00:07:16 -08003620 VkPolygonMode polygonMode /// optional (GL45)
Jesse Hallc7467b72015-11-29 21:05:26 -08003621 VkCullModeFlags cullMode
Jesse Halld27f6aa2015-08-15 17:58:48 -07003622 VkFrontFace frontFace
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003623 VkBool32 depthBiasEnable
Jesse Halla9bb62b2015-11-21 19:31:56 -08003624 f32 depthBiasConstantFactor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003625 f32 depthBiasClamp
Jesse Halla9bb62b2015-11-21 19:31:56 -08003626 f32 depthBiasSlopeFactor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003627 f32 lineWidth
Jesse Halld27f6aa2015-08-15 17:58:48 -07003628}
3629
3630class VkPipelineMultisampleStateCreateInfo {
3631 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
3632 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003633 VkPipelineMultisampleStateCreateFlags flags
Jesse Hall091ed9e2015-11-30 00:55:29 -08003634 VkSampleCountFlagBits rasterizationSamples /// Number of samples used for rasterization
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003635 VkBool32 sampleShadingEnable /// optional (GL45)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003636 f32 minSampleShading /// optional (GL45)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003637 const VkSampleMask* pSampleMask
Jesse Hallacfa5342015-11-19 21:51:33 -08003638 VkBool32 alphaToCoverageEnable
3639 VkBool32 alphaToOneEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07003640}
3641
3642class VkPipelineColorBlendAttachmentState {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003643 VkBool32 blendEnable
Jesse Hall65ab5522015-11-30 00:07:16 -08003644 VkBlendFactor srcColorBlendFactor
3645 VkBlendFactor dstColorBlendFactor
3646 VkBlendOp colorBlendOp
3647 VkBlendFactor srcAlphaBlendFactor
3648 VkBlendFactor dstAlphaBlendFactor
3649 VkBlendOp alphaBlendOp
3650 VkColorComponentFlags colorWriteMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07003651}
3652
3653class VkPipelineColorBlendStateCreateInfo {
3654 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
3655 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003656 VkPipelineColorBlendStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003657 VkBool32 logicOpEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07003658 VkLogicOp logicOp
3659 u32 attachmentCount /// # of pAttachments
3660 const VkPipelineColorBlendAttachmentState* pAttachments
Jesse Hallb00daad2015-11-29 19:46:20 -08003661 f32[4] blendConstants
Jesse Halld27f6aa2015-08-15 17:58:48 -07003662}
3663
3664class VkStencilOpState {
Jesse Hall65ab5522015-11-30 00:07:16 -08003665 VkStencilOp failOp
3666 VkStencilOp passOp
3667 VkStencilOp depthFailOp
3668 VkCompareOp compareOp
3669 u32 compareMask
3670 u32 writeMask
3671 u32 reference
Jesse Halld27f6aa2015-08-15 17:58:48 -07003672}
3673
3674class VkPipelineDepthStencilStateCreateInfo {
3675 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
3676 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003677 VkPipelineDepthStencilStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003678 VkBool32 depthTestEnable
3679 VkBool32 depthWriteEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07003680 VkCompareOp depthCompareOp
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003681 VkBool32 depthBoundsTestEnable /// optional (depth_bounds_test)
3682 VkBool32 stencilTestEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07003683 VkStencilOpState front
3684 VkStencilOpState back
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003685 f32 minDepthBounds
3686 f32 maxDepthBounds
3687}
3688
3689class VkPipelineDynamicStateCreateInfo {
3690 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
3691 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003692 VkPipelineDynamicStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003693 u32 dynamicStateCount
3694 const VkDynamicState* pDynamicStates
Jesse Halld27f6aa2015-08-15 17:58:48 -07003695}
3696
3697class VkGraphicsPipelineCreateInfo {
Jesse Halla6429252015-11-29 18:59:42 -08003698 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
3699 const void* pNext /// Pointer to next structure
3700 VkPipelineCreateFlags flags /// Pipeline creation flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003701 u32 stageCount
Jesse Halla6429252015-11-29 18:59:42 -08003702 const VkPipelineShaderStageCreateInfo* pStages /// One entry for each active shader stage
Jesse Halld27f6aa2015-08-15 17:58:48 -07003703 const VkPipelineVertexInputStateCreateInfo* pVertexInputState
3704 const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState
3705 const VkPipelineTessellationStateCreateInfo* pTessellationState
3706 const VkPipelineViewportStateCreateInfo* pViewportState
Jesse Hall3fbc8562015-11-29 22:10:52 -08003707 const VkPipelineRasterizationStateCreateInfo* pRasterizationState
Jesse Halld27f6aa2015-08-15 17:58:48 -07003708 const VkPipelineMultisampleStateCreateInfo* pMultisampleState
3709 const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState
3710 const VkPipelineColorBlendStateCreateInfo* pColorBlendState
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003711 const VkPipelineDynamicStateCreateInfo* pDynamicState
Jesse Halla6429252015-11-29 18:59:42 -08003712 VkPipelineLayout layout /// Interface layout of the pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07003713 VkRenderPass renderPass
3714 u32 subpass
Jesse Halla6429252015-11-29 18:59:42 -08003715 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
3716 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 -07003717}
3718
3719class VkPipelineCacheCreateInfo {
Jesse Hallb00daad2015-11-29 19:46:20 -08003720 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
3721 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003722 VkPipelineCacheCreateFlags flags
Jesse Hallb00daad2015-11-29 19:46:20 -08003723 platform.size_t initialDataSize /// Size of initial data to populate cache, in bytes
3724 const void* pInitialData /// Initial data to populate cache
Jesse Halld27f6aa2015-08-15 17:58:48 -07003725}
3726
3727class VkPushConstantRange {
3728 VkShaderStageFlags stageFlags /// Which stages use the range
Jesse Hall03b6fe12015-11-24 12:44:21 -08003729 u32 offset /// Start of the range, in bytes
3730 u32 size /// Length of the range, in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07003731}
3732
3733class VkPipelineLayoutCreateInfo {
3734 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
3735 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003736 VkPipelineLayoutCreateFlags flags
Jesse Hall3dd678a2016-01-08 21:52:01 -08003737 u32 descriptorSetCount /// Number of descriptor sets interfaced by the pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07003738 const VkDescriptorSetLayout* pSetLayouts /// Array of <setCount> number of descriptor set layout objects defining the layout of the
3739 u32 pushConstantRangeCount /// Number of push-constant ranges used by the pipeline
3740 const VkPushConstantRange* pPushConstantRanges /// Array of pushConstantRangeCount number of ranges used by various shader stages
3741}
3742
3743class VkSamplerCreateInfo {
3744 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
3745 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003746 VkSamplerCreateFlags flags
Jesse Hall23ff73f2015-11-29 14:36:39 -08003747 VkFilter magFilter /// Filter mode for magnification
3748 VkFilter minFilter /// Filter mode for minifiation
3749 VkSamplerMipmapMode mipmapMode /// Mipmap selection mode
3750 VkSamplerAddressMode addressModeU
3751 VkSamplerAddressMode addressModeV
3752 VkSamplerAddressMode addressModeW
Jesse Halld27f6aa2015-08-15 17:58:48 -07003753 f32 mipLodBias
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003754 VkBool32 anisotropyEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07003755 f32 maxAnisotropy
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003756 VkBool32 compareEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07003757 VkCompareOp compareOp
3758 f32 minLod
3759 f32 maxLod
3760 VkBorderColor borderColor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003761 VkBool32 unnormalizedCoordinates
Jesse Halld27f6aa2015-08-15 17:58:48 -07003762}
3763
Jesse Hall3fbc8562015-11-29 22:10:52 -08003764class VkCommandPoolCreateInfo {
3765 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07003766 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08003767 VkCommandPoolCreateFlags flags /// Command pool creation flags
Jesse Halla6429252015-11-29 18:59:42 -08003768 u32 queueFamilyIndex
Jesse Halld27f6aa2015-08-15 17:58:48 -07003769}
3770
Jesse Hall3fbc8562015-11-29 22:10:52 -08003771class VkCommandBufferAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003772 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07003773 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08003774 VkCommandPool commandPool
3775 VkCommandBufferLevel level
Jesse Hall3dd678a2016-01-08 21:52:01 -08003776 u32 commandBufferCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003777}
3778
Jesse Hall3dd678a2016-01-08 21:52:01 -08003779class VkCommandBufferInheritanceInfo {
3780 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07003781 const void* pNext /// Pointer to next structure
Jesse Halld27f6aa2015-08-15 17:58:48 -07003782 VkRenderPass renderPass /// Render pass for secondary command buffers
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003783 u32 subpass
Jesse Halld27f6aa2015-08-15 17:58:48 -07003784 VkFramebuffer framebuffer /// Framebuffer for secondary command buffers
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003785 VkBool32 occlusionQueryEnable
3786 VkQueryControlFlags queryFlags
3787 VkQueryPipelineStatisticFlags pipelineStatistics
Jesse Halld27f6aa2015-08-15 17:58:48 -07003788}
3789
Jesse Hall3dd678a2016-01-08 21:52:01 -08003790class VkCommandBufferBeginInfo {
3791 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
3792 const void* pNext /// Pointer to next structure
3793 VkCommandBufferUsageFlags flags /// Command buffer usage flags
3794 const VkCommandBufferInheritanceInfo* pInheritanceInfo
3795}
3796
Jesse Halld27f6aa2015-08-15 17:58:48 -07003797class VkRenderPassBeginInfo {
3798 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
3799 const void* pNext /// Pointer to next structure
3800 VkRenderPass renderPass
3801 VkFramebuffer framebuffer
3802 VkRect2D renderArea
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003803 u32 clearValueCount
3804 const VkClearValue* pClearValues
Jesse Halld27f6aa2015-08-15 17:58:48 -07003805}
3806
3807@union
3808/// Union allowing specification of floating point, integer, or unsigned integer color data. Actual value selected is based on image/attachment being cleared.
3809class VkClearColorValue {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003810 f32[4] float32
3811 s32[4] int32
3812 u32[4] uint32
Jesse Halld27f6aa2015-08-15 17:58:48 -07003813}
3814
3815class VkClearDepthStencilValue {
3816 f32 depth
3817 u32 stencil
3818}
3819
3820@union
3821/// Union allowing specification of color, depth, and stencil color values. Actual value selected is based on attachment being cleared.
3822class VkClearValue {
3823 VkClearColorValue color
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003824 VkClearDepthStencilValue depthStencil
Jesse Halld27f6aa2015-08-15 17:58:48 -07003825}
3826
Jesse Hallae38f732015-11-19 21:32:50 -08003827class VkClearAttachment {
3828 VkImageAspectFlags aspectMask
3829 u32 colorAttachment
3830 VkClearValue clearValue
3831}
3832
Jesse Halld27f6aa2015-08-15 17:58:48 -07003833class VkAttachmentDescription {
Jesse Halla6429252015-11-29 18:59:42 -08003834 VkAttachmentDescriptionFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003835 VkFormat format
Jesse Hall091ed9e2015-11-30 00:55:29 -08003836 VkSampleCountFlagBits samples
Jesse Halld27f6aa2015-08-15 17:58:48 -07003837 VkAttachmentLoadOp loadOp /// Load op for color or depth data
3838 VkAttachmentStoreOp storeOp /// Store op for color or depth data
3839 VkAttachmentLoadOp stencilLoadOp /// Load op for stencil data
3840 VkAttachmentStoreOp stencilStoreOp /// Store op for stencil data
3841 VkImageLayout initialLayout
3842 VkImageLayout finalLayout
3843}
3844
3845class VkAttachmentReference {
3846 u32 attachment
3847 VkImageLayout layout
3848}
3849
3850class VkSubpassDescription {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003851 VkSubpassDescriptionFlags flags
Jesse Halla6429252015-11-29 18:59:42 -08003852 VkPipelineBindPoint pipelineBindPoint /// Must be VK_PIPELINE_BIND_POINT_GRAPHICS for now
Jesse Hall03b6fe12015-11-24 12:44:21 -08003853 u32 inputAttachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003854 const VkAttachmentReference* pInputAttachments
Jesse Hall03b6fe12015-11-24 12:44:21 -08003855 u32 colorAttachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003856 const VkAttachmentReference* pColorAttachments
3857 const VkAttachmentReference* pResolveAttachments
Jesse Hallc7467b72015-11-29 21:05:26 -08003858 const VkAttachmentReference* pDepthStencilAttachment
Jesse Hall03b6fe12015-11-24 12:44:21 -08003859 u32 preserveAttachmentCount
Jesse Hall3dd678a2016-01-08 21:52:01 -08003860 const u32* pPreserveAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003861}
3862
3863class VkSubpassDependency {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003864 u32 srcSubpass
Jesse Hall3fbc8562015-11-29 22:10:52 -08003865 u32 dstSubpass
Jesse Halld27f6aa2015-08-15 17:58:48 -07003866 VkPipelineStageFlags srcStageMask
Jesse Hall3fbc8562015-11-29 22:10:52 -08003867 VkPipelineStageFlags dstStageMask
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003868 VkAccessFlags srcAccessMask
3869 VkAccessFlags dstAccessMask
Jesse Halldc6d36c2015-11-29 19:12:15 -08003870 VkDependencyFlags dependencyFlags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003871}
3872
3873class VkRenderPassCreateInfo {
3874 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
3875 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003876 VkRenderPassCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003877 u32 attachmentCount
3878 const VkAttachmentDescription* pAttachments
3879 u32 subpassCount
3880 const VkSubpassDescription* pSubpasses
3881 u32 dependencyCount
3882 const VkSubpassDependency* pDependencies
3883}
3884
3885class VkEventCreateInfo {
3886 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_EVENT_CREATE_INFO
3887 const void* pNext /// Pointer to next structure
3888 VkEventCreateFlags flags /// Event creation flags
3889}
3890
3891class VkFenceCreateInfo {
3892 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FENCE_CREATE_INFO
3893 const void* pNext /// Pointer to next structure
3894 VkFenceCreateFlags flags /// Fence creation flags
3895}
3896
3897class VkPhysicalDeviceFeatures {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003898 VkBool32 robustBufferAccess /// out of bounds buffer accesses are well defined
3899 VkBool32 fullDrawIndexUint32 /// full 32-bit range of indices for indexed draw calls
3900 VkBool32 imageCubeArray /// image views which are arrays of cube maps
3901 VkBool32 independentBlend /// blending operations are controlled per-attachment
3902 VkBool32 geometryShader /// geometry stage
3903 VkBool32 tessellationShader /// tessellation control and evaluation stage
3904 VkBool32 sampleRateShading /// per-sample shading and interpolation
Jesse Hall3fbc8562015-11-29 22:10:52 -08003905 VkBool32 dualSrcBlend /// blend operations which take two sources
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003906 VkBool32 logicOp /// logic operations
3907 VkBool32 multiDrawIndirect /// multi draw indirect
Jesse Hall543a7ff2016-01-08 16:38:30 -08003908 VkBool32 drawIndirectFirstInstance
Jesse Hallae38f732015-11-19 21:32:50 -08003909 VkBool32 depthClamp /// depth clamping
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003910 VkBool32 depthBiasClamp /// depth bias clamping
3911 VkBool32 fillModeNonSolid /// point and wireframe fill modes
3912 VkBool32 depthBounds /// depth bounds test
3913 VkBool32 wideLines /// lines with width greater than 1
3914 VkBool32 largePoints /// points with size greater than 1
Jesse Hallfbf97b02015-11-20 14:17:03 -08003915 VkBool32 alphaToOne /// The fragment alpha channel can be forced to maximum representable alpha value
3916 VkBool32 multiViewport
3917 VkBool32 samplerAnisotropy
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003918 VkBool32 textureCompressionETC2 /// ETC texture compression formats
3919 VkBool32 textureCompressionASTC_LDR /// ASTC LDR texture compression formats
3920 VkBool32 textureCompressionBC /// BC1-7 texture compressed formats
Jesse Hall65ab5522015-11-30 00:07:16 -08003921 VkBool32 occlusionQueryPrecise
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003922 VkBool32 pipelineStatisticsQuery /// pipeline statistics query
Jesse Halldc6d36c2015-11-29 19:12:15 -08003923 VkBool32 vertexPipelineStoresAndAtomics
3924 VkBool32 fragmentStoresAndAtomics
3925 VkBool32 shaderTessellationAndGeometryPointSize
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003926 VkBool32 shaderImageGatherExtended /// texture gather with run-time values and independent offsets
3927 VkBool32 shaderStorageImageExtendedFormats /// the extended set of formats can be used for storage images
3928 VkBool32 shaderStorageImageMultisample /// multisample images can be used for storage images
Jesse Halld1af8122015-11-29 23:50:38 -08003929 VkBool32 shaderStorageImageReadWithoutFormat
3930 VkBool32 shaderStorageImageWriteWithoutFormat
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003931 VkBool32 shaderUniformBufferArrayDynamicIndexing /// arrays of uniform buffers can be accessed with dynamically uniform indices
3932 VkBool32 shaderSampledImageArrayDynamicIndexing /// arrays of sampled images can be accessed with dynamically uniform indices
3933 VkBool32 shaderStorageBufferArrayDynamicIndexing /// arrays of storage buffers can be accessed with dynamically uniform indices
3934 VkBool32 shaderStorageImageArrayDynamicIndexing /// arrays of storage images can be accessed with dynamically uniform indices
3935 VkBool32 shaderClipDistance /// clip distance in shaders
3936 VkBool32 shaderCullDistance /// cull distance in shaders
3937 VkBool32 shaderFloat64 /// 64-bit floats (doubles) in shaders
3938 VkBool32 shaderInt64 /// 64-bit integers in shaders
3939 VkBool32 shaderInt16 /// 16-bit integers in shaders
3940 VkBool32 shaderResourceResidency /// shader can use texture operations that return resource residency information (requires sparseNonResident support)
Jesse Hall65ab5522015-11-30 00:07:16 -08003941 VkBool32 shaderResourceMinLod /// shader can use texture operations that specify minimum resource LOD
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003942 VkBool32 sparseBinding /// Sparse resources support: Resource memory can be managed at opaque page level rather than object level
3943 VkBool32 sparseResidencyBuffer /// Sparse resources support: GPU can access partially resident buffers
3944 VkBool32 sparseResidencyImage2D /// Sparse resources support: GPU can access partially resident 2D (non-MSAA non-DepthStencil) images
3945 VkBool32 sparseResidencyImage3D /// Sparse resources support: GPU can access partially resident 3D images
3946 VkBool32 sparseResidency2Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 2 samples
3947 VkBool32 sparseResidency4Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 4 samples
3948 VkBool32 sparseResidency8Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 8 samples
3949 VkBool32 sparseResidency16Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 16 samples
3950 VkBool32 sparseResidencyAliased /// Sparse resources support: GPU can correctly access data aliased into multiple locations (opt-in)
Jesse Halld1af8122015-11-29 23:50:38 -08003951 VkBool32 variableMultisampleRate
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003952 VkBool32 inheritedQueries
Jesse Halld27f6aa2015-08-15 17:58:48 -07003953}
3954
3955class VkPhysicalDeviceLimits {
3956 /// resource maximum sizes
3957 u32 maxImageDimension1D /// max 1D image dimension
3958 u32 maxImageDimension2D /// max 2D image dimension
3959 u32 maxImageDimension3D /// max 3D image dimension
3960 u32 maxImageDimensionCube /// max cubemap image dimension
3961 u32 maxImageArrayLayers /// max layers for image arrays
Jesse Hallb00daad2015-11-29 19:46:20 -08003962 u32 maxTexelBufferElements
Jesse Hallfbf97b02015-11-20 14:17:03 -08003963 u32 maxUniformBufferRange /// max uniform buffer size (bytes)
3964 u32 maxStorageBufferRange /// max storage buffer size (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003965 u32 maxPushConstantsSize /// max size of the push constants pool (bytes)
3966 /// memory limits
3967 u32 maxMemoryAllocationCount /// max number of device memory allocations supported
Jesse Hall091ed9e2015-11-30 00:55:29 -08003968 u32 maxSamplerAllocationCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003969 VkDeviceSize bufferImageGranularity /// Granularity (in bytes) at which buffers and images can be bound to adjacent memory for simultaneous usage
3970 VkDeviceSize sparseAddressSpaceSize /// Total address space available for sparse allocations (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003971 /// descriptor set limits
3972 u32 maxBoundDescriptorSets /// max number of descriptors sets that can be bound to a pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07003973 u32 maxPerStageDescriptorSamplers /// max num of samplers allowed per-stage in a descriptor set
3974 u32 maxPerStageDescriptorUniformBuffers /// max num of uniform buffers allowed per-stage in a descriptor set
3975 u32 maxPerStageDescriptorStorageBuffers /// max num of storage buffers allowed per-stage in a descriptor set
3976 u32 maxPerStageDescriptorSampledImages /// max num of sampled images allowed per-stage in a descriptor set
3977 u32 maxPerStageDescriptorStorageImages /// max num of storage images allowed per-stage in a descriptor set
Jesse Halle1b12782015-11-30 11:27:32 -08003978 u32 maxPerStageDescriptorInputAttachments
Jesse Halldba27f72015-11-30 14:25:46 -08003979 u32 maxPerStageResources
Jesse Halld27f6aa2015-08-15 17:58:48 -07003980 u32 maxDescriptorSetSamplers /// max num of samplers allowed in all stages in a descriptor set
3981 u32 maxDescriptorSetUniformBuffers /// max num of uniform buffers allowed in all stages in a descriptor set
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003982 u32 maxDescriptorSetUniformBuffersDynamic /// max num of dynamic uniform buffers allowed in all stages in a descriptor set
Jesse Halld27f6aa2015-08-15 17:58:48 -07003983 u32 maxDescriptorSetStorageBuffers /// max num of storage buffers allowed in all stages in a descriptor set
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003984 u32 maxDescriptorSetStorageBuffersDynamic /// max num of dynamic storage buffers allowed in all stages in a descriptor set
Jesse Halld27f6aa2015-08-15 17:58:48 -07003985 u32 maxDescriptorSetSampledImages /// max num of sampled images allowed in all stages in a descriptor set
3986 u32 maxDescriptorSetStorageImages /// max num of storage images allowed in all stages in a descriptor set
Jesse Halle1b12782015-11-30 11:27:32 -08003987 u32 maxDescriptorSetInputAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003988 /// vertex stage limits
3989 u32 maxVertexInputAttributes /// max num of vertex input attribute slots
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003990 u32 maxVertexInputBindings /// max num of vertex input binding slots
Jesse Halld27f6aa2015-08-15 17:58:48 -07003991 u32 maxVertexInputAttributeOffset /// max vertex input attribute offset added to vertex buffer offset
3992 u32 maxVertexInputBindingStride /// max vertex input binding stride
3993 u32 maxVertexOutputComponents /// max num of output components written by vertex shader
3994 /// tessellation control stage limits
Jesse Hall3fbc8562015-11-29 22:10:52 -08003995 u32 maxTessellationGenerationLevel /// max level supported by tess primitive generator
Jesse Hallae38f732015-11-19 21:32:50 -08003996 u32 maxTessellationPatchSize /// max patch size (vertices)
3997 u32 maxTessellationControlPerVertexInputComponents /// max num of input components per-vertex in TCS
3998 u32 maxTessellationControlPerVertexOutputComponents /// max num of output components per-vertex in TCS
3999 u32 maxTessellationControlPerPatchOutputComponents /// max num of output components per-patch in TCS
4000 u32 maxTessellationControlTotalOutputComponents /// max total num of per-vertex and per-patch output components in TCS
4001 u32 maxTessellationEvaluationInputComponents /// max num of input components per vertex in TES
4002 u32 maxTessellationEvaluationOutputComponents /// max num of output components per vertex in TES
Jesse Halld27f6aa2015-08-15 17:58:48 -07004003 /// geometry stage limits
4004 u32 maxGeometryShaderInvocations /// max invocation count supported in geometry shader
4005 u32 maxGeometryInputComponents /// max num of input components read in geometry stage
4006 u32 maxGeometryOutputComponents /// max num of output components written in geometry stage
4007 u32 maxGeometryOutputVertices /// max num of vertices that can be emitted in geometry stage
4008 u32 maxGeometryTotalOutputComponents /// max total num of components (all vertices) written in geometry stage
4009 /// fragment stage limits
4010 u32 maxFragmentInputComponents /// max num of input compontents read in fragment stage
Jesse Hallfbf97b02015-11-20 14:17:03 -08004011 u32 maxFragmentOutputAttachments /// max num of output attachments written in fragment stage
Jesse Hall3fbc8562015-11-29 22:10:52 -08004012 u32 maxFragmentDualSrcAttachments /// max num of output attachments written when using dual source blending
Jesse Halld27f6aa2015-08-15 17:58:48 -07004013 u32 maxFragmentCombinedOutputResources /// max total num of storage buffers, storage images and output buffers
4014 /// compute stage limits
4015 u32 maxComputeSharedMemorySize /// max total storage size of work group local storage (bytes)
4016 u32[3] maxComputeWorkGroupCount /// max num of compute work groups that may be dispatched by a single command (x,y,z)
4017 u32 maxComputeWorkGroupInvocations /// max total compute invocations in a single local work group
4018 u32[3] maxComputeWorkGroupSize /// max local size of a compute work group (x,y,z)
4019
4020 u32 subPixelPrecisionBits /// num bits of subpixel precision in screen x and y
4021 u32 subTexelPrecisionBits /// num bits of subtexel precision
4022 u32 mipmapPrecisionBits /// num bits of mipmap precision
4023
4024 u32 maxDrawIndexedIndexValue /// max index value for indexed draw calls (for 32-bit indices)
Jesse Halldba27f72015-11-30 14:25:46 -08004025 u32 maxDrawIndirectCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07004026
4027 f32 maxSamplerLodBias /// max absolute sampler level of detail bias
4028 f32 maxSamplerAnisotropy /// max degree of sampler anisotropy
4029
4030 u32 maxViewports /// max number of active viewports
Jesse Halld27f6aa2015-08-15 17:58:48 -07004031 u32[2] maxViewportDimensions /// max viewport dimensions (x,y)
4032 f32[2] viewportBoundsRange /// viewport bounds range (min,max)
4033 u32 viewportSubPixelBits /// num bits of subpixel precision for viewport
4034
Jesse Halldc6d36c2015-11-29 19:12:15 -08004035 platform.size_t minMemoryMapAlignment /// min required alignment of pointers returned by MapMemory (bytes)
4036 VkDeviceSize minTexelBufferOffsetAlignment /// min required alignment for texel buffer offsets (bytes)
4037 VkDeviceSize minUniformBufferOffsetAlignment /// min required alignment for uniform buffer sizes and offsets (bytes)
4038 VkDeviceSize minStorageBufferOffsetAlignment /// min required alignment for storage buffer offsets (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07004039
Jesse Hallfbf97b02015-11-20 14:17:03 -08004040 s32 minTexelOffset /// min texel offset for OpTextureSampleOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07004041 u32 maxTexelOffset /// max texel offset for OpTextureSampleOffset
Jesse Hallfbf97b02015-11-20 14:17:03 -08004042 s32 minTexelGatherOffset /// min texel offset for OpTextureGatherOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07004043 u32 maxTexelGatherOffset /// max texel offset for OpTextureGatherOffset
4044 f32 minInterpolationOffset /// furthest negative offset for interpolateAtOffset
4045 f32 maxInterpolationOffset /// furthest positive offset for interpolateAtOffset
4046 u32 subPixelInterpolationOffsetBits /// num of subpixel bits for interpolateAtOffset
4047
4048 u32 maxFramebufferWidth /// max width for a framebuffer
4049 u32 maxFramebufferHeight /// max height for a framebuffer
4050 u32 maxFramebufferLayers /// max layer count for a layered framebuffer
Jesse Hall091ed9e2015-11-30 00:55:29 -08004051 VkSampleCountFlags framebufferColorSampleCounts
4052 VkSampleCountFlags framebufferDepthSampleCounts
4053 VkSampleCountFlags framebufferStencilSampleCounts
4054 VkSampleCountFlags framebufferNoAttachmentSampleCounts
Jesse Halld27f6aa2015-08-15 17:58:48 -07004055 u32 maxColorAttachments /// max num of framebuffer color attachments
4056
Jesse Hall091ed9e2015-11-30 00:55:29 -08004057 VkSampleCountFlags sampledImageColorSampleCounts
4058 VkSampleCountFlags sampledImageIntegerSampleCounts
4059 VkSampleCountFlags sampledImageDepthSampleCounts
4060 VkSampleCountFlags sampledImageStencilSampleCounts
4061 VkSampleCountFlags storageImageSampleCounts
Jesse Halld27f6aa2015-08-15 17:58:48 -07004062 u32 maxSampleMaskWords /// max num of sample mask words
Jesse Hallf9fa9a52016-01-08 16:08:51 -08004063 VkBool32 timestampComputeAndGraphics
Jesse Halld27f6aa2015-08-15 17:58:48 -07004064
Jesse Halla9bb62b2015-11-21 19:31:56 -08004065 f32 timestampPeriod
Jesse Halld27f6aa2015-08-15 17:58:48 -07004066
4067 u32 maxClipDistances /// max number of clip distances
4068 u32 maxCullDistances /// max number of cull distances
4069 u32 maxCombinedClipAndCullDistances /// max combined number of user clipping
4070
Jesse Hallfbf97b02015-11-20 14:17:03 -08004071 u32 discreteQueuePriorities
4072
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004073 f32[2] pointSizeRange /// range (min,max) of supported point sizes
4074 f32[2] lineWidthRange /// range (min,max) of supported line widths
Jesse Halld27f6aa2015-08-15 17:58:48 -07004075 f32 pointSizeGranularity /// granularity of supported point sizes
4076 f32 lineWidthGranularity /// granularity of supported line widths
Jesse Hall03b6fe12015-11-24 12:44:21 -08004077 VkBool32 strictLines
Jesse Hall091ed9e2015-11-30 00:55:29 -08004078 VkBool32 standardSampleLocations
Jesse Halla9bb62b2015-11-21 19:31:56 -08004079
Jesse Hall65ab5522015-11-30 00:07:16 -08004080 VkDeviceSize optimalBufferCopyOffsetAlignment
4081 VkDeviceSize optimalBufferCopyRowPitchAlignment
Jesse Halldba27f72015-11-30 14:25:46 -08004082 VkDeviceSize nonCoherentAtomSize
Jesse Halld27f6aa2015-08-15 17:58:48 -07004083}
4084
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004085class VkPhysicalDeviceSparseProperties {
4086 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 -08004087 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 -07004088 VkBool32 residencyStandard3DBlockShape /// Sparse resources support: GPU will access all 3D sparse resources using the standard block shapes (based on pixel format)
4089 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 -07004090 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
4091}
4092
Jesse Halld27f6aa2015-08-15 17:58:48 -07004093class VkSemaphoreCreateInfo {
4094 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
4095 const void* pNext /// Pointer to next structure
4096 VkSemaphoreCreateFlags flags /// Semaphore creation flags
4097}
4098
4099class VkQueryPoolCreateInfo {
4100 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
4101 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08004102 VkQueryPoolCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07004103 VkQueryType queryType
Jesse Hall3dd678a2016-01-08 21:52:01 -08004104 u32 queryCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07004105 VkQueryPipelineStatisticFlags pipelineStatistics /// Optional
4106}
4107
4108class VkFramebufferCreateInfo {
4109 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
4110 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08004111 VkFramebufferCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07004112 VkRenderPass renderPass
4113 u32 attachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07004114 const VkImageView* pAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07004115 u32 width
4116 u32 height
4117 u32 layers
4118}
4119
Jesse Hall3fbc8562015-11-29 22:10:52 -08004120class VkDrawIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004121 u32 vertexCount
4122 u32 instanceCount
4123 u32 firstVertex
4124 u32 firstInstance
4125}
4126
Jesse Hall3fbc8562015-11-29 22:10:52 -08004127class VkDrawIndexedIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004128 u32 indexCount
4129 u32 instanceCount
4130 u32 firstIndex
4131 s32 vertexOffset
4132 u32 firstInstance
4133}
4134
Jesse Hall3fbc8562015-11-29 22:10:52 -08004135class VkDispatchIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07004136 u32 x
4137 u32 y
4138 u32 z
4139}
4140
Ian Elliottcd8ad332017-10-13 09:21:12 -06004141//@vulkan1_1 structures
Daniel Kochf25f5bb2017-10-05 00:26:58 -04004142
4143class VkPhysicalDeviceSubgroupProperties {
4144 VkStructureType sType
4145 void* pNext
4146 u32 subgroupSize
4147 VkShaderStageFlags supportedStages
4148 VkSubgroupFeatureFlags supportedOperations
4149 VkBool32 quadOperationsInAllStages
4150}
4151
4152class VkBindBufferMemoryInfo {
4153 VkStructureType sType
4154 const void* pNext
4155 VkBuffer buffer
4156 VkDeviceMemory memory
4157 VkDeviceSize memoryOffset
4158}
4159
4160class VkBindImageMemoryInfo {
4161 VkStructureType sType
4162 const void* pNext
4163 VkImage image
4164 VkDeviceMemory memory
4165 VkDeviceSize memoryOffset
4166}
4167
4168class VkPhysicalDevice16BitStorageFeatures {
4169 VkStructureType sType
4170 void* pNext
4171 VkBool32 storageBuffer16BitAccess
4172 VkBool32 uniformAndStorageBuffer16BitAccess
4173 VkBool32 storagePushConstant16
4174 VkBool32 storageInputOutput16
4175}
4176
4177class VkMemoryDedicatedRequirements {
4178 VkStructureType sType
4179 void* pNext
4180 VkBool32 prefersDedicatedAllocation
4181 VkBool32 requiresDedicatedAllocation
4182}
4183
4184class VkMemoryDedicatedAllocateInfo {
4185 VkStructureType sType
4186 const void* pNext
4187 VkImage image
4188 VkBuffer buffer
4189}
4190
4191class VkMemoryAllocateFlagsInfo {
4192 VkStructureType sType
4193 const void* pNext
4194 VkMemoryAllocateFlags flags
4195 u32 deviceMask
4196}
4197
4198class VkDeviceGroupRenderPassBeginInfo {
4199 VkStructureType sType
4200 const void* pNext
4201 u32 deviceMask
4202 u32 deviceRenderAreaCount
4203 const VkRect2D* pDeviceRenderAreas
4204}
4205
4206class VkDeviceGroupCommandBufferBeginInfo {
4207 VkStructureType sType
4208 const void* pNext
4209 u32 deviceMask
4210}
4211
4212class VkDeviceGroupSubmitInfo {
4213 VkStructureType sType
4214 const void* pNext
4215 u32 waitSemaphoreCount
4216 const u32* pWaitSemaphoreDeviceIndices
4217 u32 commandBufferCount
4218 const u32* pCommandBufferDeviceMasks
4219 u32 signalSemaphoreCount
4220 const u32* pSignalSemaphoreDeviceIndices
4221}
4222
4223class VkDeviceGroupBindSparseInfo {
4224 VkStructureType sType
4225 const void* pNext
4226 u32 resourceDeviceIndex
4227 u32 memoryDeviceIndex
4228}
4229
4230class VkBindBufferMemoryDeviceGroupInfo {
4231 VkStructureType sType
4232 const void* pNext
4233 u32 deviceIndexCount
4234 const u32* pDeviceIndices
4235}
4236
4237class VkBindImageMemoryDeviceGroupInfo {
4238 VkStructureType sType
4239 const void* pNext
4240 u32 deviceIndexCount
4241 const u32* pDeviceIndices
Jesse Hall35b4de12018-01-17 22:06:20 -08004242 u32 splitInstanceBindRegionCount
4243 const VkRect2D* pSplitInstanceBindRegions
Daniel Kochf25f5bb2017-10-05 00:26:58 -04004244}
4245
4246class VkPhysicalDeviceGroupProperties {
4247 VkStructureType sType
4248 void* pNext
4249 u32 physicalDeviceCount
4250 VkPhysicalDevice[VK_MAX_DEVICE_GROUP_SIZE] physicalDevices
4251 VkBool32 subsetAllocation
4252}
4253
4254class VkDeviceGroupDeviceCreateInfo {
4255 VkStructureType sType
4256 const void* pNext
4257 u32 physicalDeviceCount
4258 const VkPhysicalDevice* pPhysicalDevices
4259}
4260
4261class VkBufferMemoryRequirementsInfo2 {
4262 VkStructureType sType
4263 const void* pNext
4264 VkBuffer buffer
4265}
4266
4267class VkImageMemoryRequirementsInfo2 {
4268 VkStructureType sType
4269 const void* pNext
4270 VkImage image
4271}
4272
4273class VkImageSparseMemoryRequirementsInfo2 {
4274 VkStructureType sType
4275 const void* pNext
4276 VkImage image
4277}
4278
4279class VkMemoryRequirements2 {
4280 VkStructureType sType
4281 void* pNext
4282 VkMemoryRequirements memoryRequirements
4283}
4284
4285class VkSparseImageMemoryRequirements2 {
4286 VkStructureType sType
4287 void* pNext
4288 VkSparseImageMemoryRequirements memoryRequirements
4289}
4290
4291class VkPhysicalDeviceFeatures2 {
4292 VkStructureType sType
4293 void* pNext
4294 VkPhysicalDeviceFeatures features
4295}
4296
4297class VkPhysicalDeviceProperties2 {
4298 VkStructureType sType
4299 void* pNext
4300 VkPhysicalDeviceProperties properties
4301}
4302
4303class VkFormatProperties2 {
4304 VkStructureType sType
4305 void* pNext
4306 VkFormatProperties formatProperties
4307}
4308
4309class VkImageFormatProperties2 {
4310 VkStructureType sType
4311 void* pNext
4312 VkImageFormatProperties imageFormatProperties
4313}
4314
4315class VkPhysicalDeviceImageFormatInfo2 {
4316 VkStructureType sType
4317 const void* pNext
4318 VkFormat format
4319 VkImageType type
4320 VkImageTiling tiling
4321 VkImageUsageFlags usage
4322 VkImageCreateFlags flags
4323}
4324
4325class VkQueueFamilyProperties2 {
4326 VkStructureType sType
4327 void* pNext
4328 VkQueueFamilyProperties queueFamilyProperties
4329}
4330
4331class VkPhysicalDeviceMemoryProperties2 {
4332 VkStructureType sType
4333 void* pNext
4334 VkPhysicalDeviceMemoryProperties memoryProperties
4335}
4336
4337class VkSparseImageFormatProperties2 {
4338 VkStructureType sType
4339 void* pNext
4340 VkSparseImageFormatProperties properties
4341}
4342
4343class VkPhysicalDeviceSparseImageFormatInfo2 {
4344 VkStructureType sType
4345 const void* pNext
4346 VkFormat format
4347 VkImageType type
4348 VkSampleCountFlagBits samples
4349 VkImageUsageFlags usage
4350 VkImageTiling tiling
4351}
4352
4353class VkPhysicalDevicePointClippingProperties {
4354 VkStructureType sType
4355 void* pNext
4356 VkPointClippingBehavior pointClippingBehavior
4357}
4358
4359class VkInputAttachmentAspectReference {
4360 u32 subpass
4361 u32 inputAttachmentIndex
4362 VkImageAspectFlags aspectMask
4363}
4364
4365class VkRenderPassInputAttachmentAspectCreateInfo {
4366 VkStructureType sType
4367 const void* pNext
4368 u32 aspectReferenceCount
4369 const VkInputAttachmentAspectReference* pAspectReferences
4370}
4371
4372class VkImageViewUsageCreateInfo {
4373 VkStructureType sType
4374 const void* pNext
4375 VkImageUsageFlags usage
4376}
4377
4378class VkPipelineTessellationDomainOriginStateCreateInfo {
4379 VkStructureType sType
4380 const void* pNext
4381 VkTessellationDomainOrigin domainOrigin
4382}
4383
4384class VkRenderPassMultiviewCreateInfo {
4385 VkStructureType sType
4386 const void* pNext
4387 u32 subpassCount
4388 const u32* pViewMasks
4389 u32 dependencyCount
4390 const s32* pViewOffsets
4391 u32 correlationMaskCount
4392 const u32* pCorrelationMasks
4393}
4394
4395class VkPhysicalDeviceMultiviewFeatures {
4396 VkStructureType sType
4397 void* pNext
4398 VkBool32 multiview
4399 VkBool32 multiviewGeometryShader
4400 VkBool32 multiviewTessellationShader
4401}
4402
4403class VkPhysicalDeviceMultiviewProperties {
4404 VkStructureType sType
4405 void* pNext
4406 u32 maxMultiviewViewCount
4407 u32 maxMultiviewInstanceIndex
4408}
4409
4410class VkPhysicalDeviceVariablePointerFeatures {
4411 VkStructureType sType
4412 void* pNext
4413 VkBool32 variablePointersStorageBuffer
4414 VkBool32 variablePointers
4415}
4416
4417class VkPhysicalDeviceProtectedMemoryFeatures {
4418 VkStructureType sType
4419 void* pNext
4420 VkBool32 protectedMemory
4421}
4422
4423class VkPhysicalDeviceProtectedMemoryProperties {
4424 VkStructureType sType
4425 void* pNext
4426 VkBool32 protectedNoFault
4427}
4428
4429class VkDeviceQueueInfo2 {
4430 VkStructureType sType
4431 const void* pNext
4432 VkDeviceQueueCreateFlags flags
4433 u32 queueFamilyIndex
4434 u32 queueIndex
4435}
4436
4437class VkProtectedSubmitInfo {
4438 VkStructureType sType
4439 const void* pNext
4440 VkBool32 protectedSubmit
4441}
4442
4443class VkSamplerYcbcrConversionCreateInfo {
4444 VkStructureType sType
4445 const void* pNext
4446 VkFormat format
4447 VkSamplerYcbcrModelConversion ycbcrModel
4448 VkSamplerYcbcrRange ycbcrRange
4449 VkComponentMapping components
4450 VkChromaLocation xChromaOffset
4451 VkChromaLocation yChromaOffset
4452 VkFilter chromaFilter
4453 VkBool32 forceExplicitReconstruction
4454}
4455
4456class VkSamplerYcbcrConversionInfo {
4457 VkStructureType sType
4458 const void* pNext
4459 VkSamplerYcbcrConversion conversion
4460}
4461
4462class VkBindImagePlaneMemoryInfo {
4463 VkStructureType sType
4464 const void* pNext
4465 VkImageAspectFlagBits planeAspect
4466}
4467
4468class VkImagePlaneMemoryRequirementsInfo {
4469 VkStructureType sType
4470 const void* pNext
4471 VkImageAspectFlagBits planeAspect
4472}
4473
4474class VkPhysicalDeviceSamplerYcbcrConversionFeatures {
4475 VkStructureType sType
4476 void* pNext
4477 VkBool32 samplerYcbcrConversion
4478}
4479
4480class VkSamplerYcbcrConversionImageFormatProperties {
4481 VkStructureType sType
4482 void* pNext
4483 u32 combinedImageSamplerDescriptorCount
4484}
4485
4486class VkDescriptorUpdateTemplateEntry {
4487 u32 dstBinding
4488 u32 dstArrayElement
4489 u32 descriptorCount
4490 VkDescriptorType descriptorType
4491 platform.size_t offset
4492 platform.size_t stride
4493}
4494
4495class VkDescriptorUpdateTemplateCreateInfo {
4496 VkStructureType sType
4497 void* pNext
4498 VkDescriptorUpdateTemplateCreateFlags flags
4499 u32 descriptorUpdateEntryCount
4500 const VkDescriptorUpdateTemplateEntry* pDescriptorUpdateEntries
4501 VkDescriptorUpdateTemplateType templateType
4502 VkDescriptorSetLayout descriptorSetLayout
4503 VkPipelineBindPoint pipelineBindPoint
4504 VkPipelineLayout pipelineLayout
4505 u32 set
4506}
4507
4508class VkExternalMemoryProperties {
4509 VkExternalMemoryFeatureFlags externalMemoryFeatures
4510 VkExternalMemoryHandleTypeFlags exportFromImportedHandleTypes
4511 VkExternalMemoryHandleTypeFlags compatibleHandleTypes
4512}
4513
4514class VkPhysicalDeviceExternalImageFormatInfo {
4515 VkStructureType sType
4516 const void* pNext
4517 VkExternalMemoryHandleTypeFlagBits handleType
4518}
4519
4520class VkExternalImageFormatProperties {
4521 VkStructureType sType
4522 void* pNext
4523 VkExternalMemoryProperties externalMemoryProperties
4524}
4525
4526class VkPhysicalDeviceExternalBufferInfo {
4527 VkStructureType sType
4528 const void* pNext
4529 VkBufferCreateFlags flags
4530 VkBufferUsageFlags usage
4531 VkExternalMemoryHandleTypeFlagBits handleType
4532}
4533
4534class VkExternalBufferProperties {
4535 VkStructureType sType
4536 void* pNext
4537 VkExternalMemoryProperties externalMemoryProperties
4538}
4539
4540class VkPhysicalDeviceIDProperties {
4541 VkStructureType sType
4542 void* pNext
4543 u8[VK_UUID_SIZE] deviceUUID
4544 u8[VK_UUID_SIZE] driverUUID
4545 u8[VK_LUID_SIZE] deviceLUID
4546 u32 deviceNodeMask
4547 VkBool32 deviceLUIDValid
4548}
4549
4550class VkExternalMemoryImageCreateInfo {
4551 VkStructureType sType
4552 const void* pNext
4553 VkExternalMemoryHandleTypeFlags handleTypes
4554}
4555
4556class VkExternalMemoryBufferCreateInfo {
4557 VkStructureType sType
4558 const void* pNext
4559 VkExternalMemoryHandleTypeFlags handleTypes
4560}
4561
4562class VkExportMemoryAllocateInfo {
4563 VkStructureType sType
4564 const void* pNext
4565 VkExternalMemoryHandleTypeFlags handleTypes
4566}
4567
4568class VkPhysicalDeviceExternalFenceInfo {
4569 VkStructureType sType
4570 const void* pNext
4571 VkExternalFenceHandleTypeFlagBits handleType
4572}
4573
4574class VkExternalFenceProperties {
4575 VkStructureType sType
4576 void* pNext
4577 VkExternalFenceHandleTypeFlags exportFromImportedHandleTypes
4578 VkExternalFenceHandleTypeFlags compatibleHandleTypes
4579 VkExternalFenceFeatureFlags externalFenceFeatures
4580}
4581
4582class VkExportFenceCreateInfo {
4583 VkStructureType sType
4584 const void* pNext
4585 VkExternalFenceHandleTypeFlags handleTypes
4586}
4587
4588class VkExportSemaphoreCreateInfo {
4589 VkStructureType sType
4590 const void* pNext
4591 VkExternalSemaphoreHandleTypeFlags handleTypes
4592}
4593
4594class VkPhysicalDeviceExternalSemaphoreInfo {
4595 VkStructureType sType
4596 const void* pNext
4597 VkExternalSemaphoreHandleTypeFlagBits handleType
4598}
4599
4600class VkExternalSemaphoreProperties {
4601 VkStructureType sType
4602 void* pNext
4603 VkExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes
4604 VkExternalSemaphoreHandleTypeFlags compatibleHandleTypes
4605 VkExternalSemaphoreFeatureFlags externalSemaphoreFeatures
4606}
4607
4608class VkPhysicalDeviceMaintenance3Properties {
4609 VkStructureType sType
4610 void* pNext
4611 u32 maxPerSetDescriptors
4612 VkDeviceSize maxMemoryAllocationSize
4613}
4614
4615class VkDescriptorSetLayoutSupport {
4616 VkStructureType sType
4617 void* pNext
4618 VkBool32 supported
4619}
4620
4621class VkPhysicalDeviceShaderDrawParameterFeatures {
4622 VkStructureType sType
4623 void* pNext
4624 VkBool32 shaderDrawParameters
4625}
4626
4627
Jesse Hallad250842017-03-10 18:35:38 -08004628@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08004629class VkSurfaceCapabilitiesKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08004630 u32 minImageCount
4631 u32 maxImageCount
4632 VkExtent2D currentExtent
4633 VkExtent2D minImageExtent
4634 VkExtent2D maxImageExtent
Jesse Hallf4ab2b12015-11-30 16:04:55 -08004635 u32 maxImageArrayLayers
Jesse Hall1356b0d2015-11-23 17:24:58 -08004636 VkSurfaceTransformFlagsKHR supportedTransforms
Jesse Hallf4ab2b12015-11-30 16:04:55 -08004637 VkSurfaceTransformFlagBitsKHR currentTransform
Jesse Halla6429252015-11-29 18:59:42 -08004638 VkCompositeAlphaFlagsKHR supportedCompositeAlpha
Jesse Hall1356b0d2015-11-23 17:24:58 -08004639 VkImageUsageFlags supportedUsageFlags
Michael Lentine88594d72015-11-12 12:49:45 -08004640}
4641
Jesse Hallad250842017-03-10 18:35:38 -08004642@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08004643class VkSurfaceFormatKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08004644 VkFormat format
4645 VkColorSpaceKHR colorSpace
Michael Lentine88594d72015-11-12 12:49:45 -08004646}
4647
Jesse Hallad250842017-03-10 18:35:38 -08004648@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08004649class VkSwapchainCreateInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08004650 VkStructureType sType
4651 const void* pNext
Jesse Hallf4ab2b12015-11-30 16:04:55 -08004652 VkSwapchainCreateFlagsKHR flags
Jesse Hall1356b0d2015-11-23 17:24:58 -08004653 VkSurfaceKHR surface
4654 u32 minImageCount
4655 VkFormat imageFormat
4656 VkColorSpaceKHR imageColorSpace
4657 VkExtent2D imageExtent
Jesse Hallf4ab2b12015-11-30 16:04:55 -08004658 u32 imageArrayLayers
4659 VkImageUsageFlags imageUsage
Jesse Hall1356b0d2015-11-23 17:24:58 -08004660 VkSharingMode sharingMode
Jesse Hall03b6fe12015-11-24 12:44:21 -08004661 u32 queueFamilyIndexCount
Jesse Hall1356b0d2015-11-23 17:24:58 -08004662 const u32* pQueueFamilyIndices
Jesse Hallf4ab2b12015-11-30 16:04:55 -08004663 VkSurfaceTransformFlagBitsKHR preTransform
4664 VkCompositeAlphaFlagBitsKHR compositeAlpha
Jesse Hall1356b0d2015-11-23 17:24:58 -08004665 VkPresentModeKHR presentMode
Jesse Hall1356b0d2015-11-23 17:24:58 -08004666 VkBool32 clipped
Jesse Hallf4ab2b12015-11-30 16:04:55 -08004667 VkSwapchainKHR oldSwapchain
Michael Lentine88594d72015-11-12 12:49:45 -08004668}
4669
Jesse Hallad250842017-03-10 18:35:38 -08004670@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08004671class VkPresentInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08004672 VkStructureType sType
4673 const void* pNext
Jesse Hallb00daad2015-11-29 19:46:20 -08004674 u32 waitSemaphoreCount
4675 const VkSemaphore* pWaitSemaphores
Jesse Hall1356b0d2015-11-23 17:24:58 -08004676 u32 swapchainCount
Jesse Hall03b6fe12015-11-24 12:44:21 -08004677 const VkSwapchainKHR* pSwapchains
Jesse Hallf4ab2b12015-11-30 16:04:55 -08004678 const u32* pImageIndices
Jesse Halle1b12782015-11-30 11:27:32 -08004679 VkResult* pResults
Michael Lentine88594d72015-11-12 12:49:45 -08004680}
4681
Ian Elliottcd8ad332017-10-13 09:21:12 -06004682@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04004683@extension("VK_KHR_swapchain") // 2
4684class VkImageSwapchainCreateInfoKHR {
4685 VkStructureType sType
4686 const void* pNext
4687 VkSwapchainKHR swapchain
4688}
4689
Ian Elliottcd8ad332017-10-13 09:21:12 -06004690@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04004691@extension("VK_KHR_swapchain") // 2
4692class VkBindImageMemorySwapchainInfoKHR {
4693 VkStructureType sType
4694 const void* pNext
4695 VkSwapchainKHR swapchain
4696 u32 imageIndex
4697}
4698
Ian Elliottcd8ad332017-10-13 09:21:12 -06004699@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04004700@extension("VK_KHR_swapchain") // 2
4701class VkAcquireNextImageInfoKHR {
4702 VkStructureType sType
4703 const void* pNext
4704 VkSwapchainKHR swapchain
4705 u64 timeout
4706 VkSemaphore semaphore
4707 VkFence fence
4708 u32 deviceMask
4709}
4710
Ian Elliottcd8ad332017-10-13 09:21:12 -06004711@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04004712@extension("VK_KHR_swapchain") // 2
4713class VkDeviceGroupPresentCapabilitiesKHR {
4714 VkStructureType sType
4715 const void* pNext
4716 u32[VK_MAX_DEVICE_GROUP_SIZE] presentMask
4717 VkDeviceGroupPresentModeFlagsKHR modes
4718}
4719
Ian Elliottcd8ad332017-10-13 09:21:12 -06004720@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04004721@extension("VK_KHR_swapchain") // 2
4722class VkDeviceGroupPresentInfoKHR {
4723 VkStructureType sType
4724 const void* pNext
4725 u32 swapchainCount
4726 const u32* pDeviceMasks
4727 VkDeviceGroupPresentModeFlagBitsKHR mode
4728}
4729
Ian Elliottcd8ad332017-10-13 09:21:12 -06004730@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04004731@extension("VK_KHR_swapchain") // 2
4732class VkDeviceGroupSwapchainCreateInfoKHR {
4733 VkStructureType sType
4734 const void* pNext
4735 VkDeviceGroupPresentModeFlagsKHR modes
4736}
4737
Jesse Hallad250842017-03-10 18:35:38 -08004738@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08004739class VkDisplayPropertiesKHR {
4740 VkDisplayKHR display
4741 const char* displayName
4742 VkExtent2D physicalDimensions
4743 VkExtent2D physicalResolution
4744 VkSurfaceTransformFlagsKHR supportedTransforms
Jesse Hall1356b0d2015-11-23 17:24:58 -08004745 VkBool32 planeReorderPossible
Jesse Halla6429252015-11-29 18:59:42 -08004746 VkBool32 persistentContent
Michael Lentine88594d72015-11-12 12:49:45 -08004747}
4748
Jesse Hallad250842017-03-10 18:35:38 -08004749@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08004750class VkDisplayModeParametersKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08004751 VkExtent2D visibleRegion
Jesse Halla6429252015-11-29 18:59:42 -08004752 u32 refreshRate
Michael Lentine88594d72015-11-12 12:49:45 -08004753}
Jesse Halld27f6aa2015-08-15 17:58:48 -07004754
Jesse Hallad250842017-03-10 18:35:38 -08004755@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08004756class VkDisplayModePropertiesKHR {
4757 VkDisplayModeKHR displayMode
Jesse Halla6429252015-11-29 18:59:42 -08004758 VkDisplayModeParametersKHR parameters
Jesse Hall1356b0d2015-11-23 17:24:58 -08004759}
4760
Jesse Hallad250842017-03-10 18:35:38 -08004761@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08004762class VkDisplayModeCreateInfoKHR {
4763 VkStructureType sType
4764 const void* pNext
Jesse Hall9ba8bc82015-11-30 16:22:16 -08004765 VkDisplayModeCreateFlagsKHR flags
Jesse Halla6429252015-11-29 18:59:42 -08004766 VkDisplayModeParametersKHR parameters
Jesse Hall1356b0d2015-11-23 17:24:58 -08004767}
4768
Jesse Hallad250842017-03-10 18:35:38 -08004769@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08004770class VkDisplayPlanePropertiesKHR {
Jesse Halla6429252015-11-29 18:59:42 -08004771 VkDisplayKHR currentDisplay
4772 u32 currentStackIndex
4773}
4774
Jesse Hallad250842017-03-10 18:35:38 -08004775@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08004776class VkDisplayPlaneCapabilitiesKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08004777 VkDisplayPlaneAlphaFlagsKHR supportedAlpha
4778 VkOffset2D minSrcPosition
4779 VkOffset2D maxSrcPosition
4780 VkExtent2D minSrcExtent
4781 VkExtent2D maxSrcExtent
4782 VkOffset2D minDstPosition
4783 VkOffset2D maxDstPosition
4784 VkExtent2D minDstExtent
4785 VkExtent2D maxDstExtent
4786}
4787
Jesse Hallad250842017-03-10 18:35:38 -08004788@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08004789class VkDisplaySurfaceCreateInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08004790 VkStructureType sType
4791 const void* pNext
Jesse Hallf4ab2b12015-11-30 16:04:55 -08004792 VkDisplaySurfaceCreateFlagsKHR flags
Jesse Hall1356b0d2015-11-23 17:24:58 -08004793 VkDisplayModeKHR displayMode
4794 u32 planeIndex
4795 u32 planeStackIndex
Jesse Hallf4ab2b12015-11-30 16:04:55 -08004796 VkSurfaceTransformFlagBitsKHR transform
Jesse Hall1356b0d2015-11-23 17:24:58 -08004797 f32 globalAlpha
Jesse Hallf4ab2b12015-11-30 16:04:55 -08004798 VkDisplayPlaneAlphaFlagBitsKHR alphaMode
4799 VkExtent2D imageExtent
Jesse Hall1356b0d2015-11-23 17:24:58 -08004800}
4801
Jesse Hallad250842017-03-10 18:35:38 -08004802@extension("VK_KHR_display_swapchain") // 4
Jesse Hall1356b0d2015-11-23 17:24:58 -08004803class VkDisplayPresentInfoKHR {
4804 VkStructureType sType
4805 const void* pNext
4806 VkRect2D srcRect
4807 VkRect2D dstRect
Jesse Halla6429252015-11-29 18:59:42 -08004808 VkBool32 persistent
Jesse Hall1356b0d2015-11-23 17:24:58 -08004809}
4810
Jesse Hallad250842017-03-10 18:35:38 -08004811@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08004812class VkXlibSurfaceCreateInfoKHR {
4813 VkStructureType sType
4814 const void* pNext
4815 VkXlibSurfaceCreateFlagsKHR flags
4816 platform.Display* dpy
4817 platform.Window window
4818}
4819
Jesse Hallad250842017-03-10 18:35:38 -08004820@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08004821class VkXcbSurfaceCreateInfoKHR {
4822 VkStructureType sType
4823 const void* pNext
4824 VkXcbSurfaceCreateFlagsKHR flags
4825 platform.xcb_connection_t* connection
4826 platform.xcb_window_t window
4827}
4828
Jesse Hallad250842017-03-10 18:35:38 -08004829@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08004830class VkWaylandSurfaceCreateInfoKHR {
4831 VkStructureType sType
4832 const void* pNext
4833 VkWaylandSurfaceCreateFlagsKHR flags
4834 platform.wl_display* display
4835 platform.wl_surface* surface
4836}
4837
Jesse Hallad250842017-03-10 18:35:38 -08004838@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08004839class VkMirSurfaceCreateInfoKHR {
4840 VkStructureType sType
4841 const void* pNext
4842 VkMirSurfaceCreateFlagsKHR flags
4843 platform.MirConnection* connection
4844 platform.MirSurface* mirSurface
4845}
4846
Jesse Hallad250842017-03-10 18:35:38 -08004847@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08004848class VkAndroidSurfaceCreateInfoKHR {
4849 VkStructureType sType
4850 const void* pNext
4851 VkAndroidSurfaceCreateFlagsKHR flags
4852 platform.ANativeWindow* window
4853}
4854
Jesse Hallad250842017-03-10 18:35:38 -08004855@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08004856class VkWin32SurfaceCreateInfoKHR {
4857 VkStructureType sType
4858 const void* pNext
4859 VkWin32SurfaceCreateFlagsKHR flags
4860 platform.HINSTANCE hinstance
4861 platform.HWND hwnd
4862}
4863
Jesse Hallad250842017-03-10 18:35:38 -08004864@extension("VK_ANDROID_native_buffer") // 11
Jesse Halld1abd742017-02-09 21:45:51 -08004865@internal class Gralloc1Usage {
4866 u64 consumer
4867 u64 producer
4868}
4869
Jesse Hallad250842017-03-10 18:35:38 -08004870@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08004871class VkNativeBufferANDROID {
4872 VkStructureType sType
4873 const void* pNext
4874 platform.buffer_handle_t handle
Jesse Halld1abd742017-02-09 21:45:51 -08004875 s32 stride
4876 s32 format
4877 s32 usage
4878 Gralloc1Usage usage2
Chia-I Wub262ddc2016-03-22 07:38:20 +08004879}
4880
Jesse Hallad250842017-03-10 18:35:38 -08004881@extension("VK_ANDROID_native_buffer") // 11
Chris Forbes8e4438b2016-12-07 16:26:49 +13004882class VkSwapchainImageCreateInfoANDROID {
4883 VkStructureType sType
4884 const void* pNext
Chris Forbes134d9582017-01-12 14:26:37 +13004885 VkSwapchainImageUsageFlagsANDROID flags
Chris Forbes48853712017-01-12 14:09:33 +13004886}
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07004887
Jesse Hallad250842017-03-10 18:35:38 -08004888@extension("VK_ANDROID_native_buffer") // 11
Chris Forbes1d4e5542017-02-15 19:38:50 +13004889class VkPhysicalDevicePresentationPropertiesANDROID {
4890 VkStructureType sType
4891 void* pNext
4892 VkBool32 sharedImage
4893}
4894
Jesse Hallad250842017-03-10 18:35:38 -08004895@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08004896class VkDebugReportCallbackCreateInfoEXT {
4897 VkStructureType sType
4898 const void* pNext
4899 VkDebugReportFlagsEXT flags
4900 PFN_vkDebugReportCallbackEXT pfnCallback
4901 void* pUserData
4902}
4903
Jesse Hallad250842017-03-10 18:35:38 -08004904@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07004905class VkPipelineRasterizationStateRasterizationOrderAMD {
4906 VkStructureType sType
4907 const void* pNext
4908 VkRasterizationOrderAMD rasterizationOrder
4909}
4910
Jesse Hallad250842017-03-10 18:35:38 -08004911@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07004912class VkDebugMarkerObjectNameInfoEXT {
4913 VkStructureType sType
4914 const void* pNext
4915 VkDebugReportObjectTypeEXT objectType
4916 u64 object
4917 const char* pObjectName
4918}
4919
Jesse Hallad250842017-03-10 18:35:38 -08004920@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07004921class VkDebugMarkerObjectTagInfoEXT {
4922 VkStructureType sType
4923 const void* pNext
4924 VkDebugReportObjectTypeEXT objectType
4925 u64 object
4926 u64 tagName
4927 platform.size_t tagSize
4928 const void* pTag
4929}
4930
Jesse Hallad250842017-03-10 18:35:38 -08004931@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07004932class VkDebugMarkerMarkerInfoEXT {
4933 VkStructureType sType
4934 const void* pNext
4935 const char* pMarkerName
4936 f32[4] color
4937}
4938
Jesse Hallad250842017-03-10 18:35:38 -08004939@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07004940class VkDedicatedAllocationImageCreateInfoNV {
4941 VkStructureType sType
4942 const void* pNext
4943 VkBool32 dedicatedAllocation
4944}
4945
Jesse Hallad250842017-03-10 18:35:38 -08004946@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07004947class VkDedicatedAllocationBufferCreateInfoNV {
4948 VkStructureType sType
4949 const void* pNext
4950 VkBool32 dedicatedAllocation
4951}
4952
Jesse Hallad250842017-03-10 18:35:38 -08004953@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07004954class VkDedicatedAllocationMemoryAllocateInfoNV {
4955 VkStructureType sType
4956 const void* pNext
4957 VkImage image
4958 VkBuffer buffer
4959}
4960
Jesse Hall7ba0ac72017-07-07 17:13:23 -07004961@extension("VK_AMD_texture_gather_bias_lod") // 42
4962class VkTextureLODGatherFormatPropertiesAMD {
4963 VkStructureType sType
4964 void* pNext
4965 VkBool32 supportsTextureGatherLODBiasAMD
4966}
4967
Jesse Hall35b4de12018-01-17 22:06:20 -08004968@extension("VK_AMD_shader_info") // 43
4969class VkShaderResourceUsageAMD {
4970 u32 numUsedVgprs
4971 u32 numUsedSgprs
4972 u32 ldsSizePerLocalWorkGroup
4973 platform.size_t ldsUsageSizeInBytes
4974 platform.size_t scratchMemUsageInBytes
4975}
4976
4977@extension("VK_AMD_shader_info") // 43
4978class VkShaderStatisticsInfoAMD {
4979 VkShaderStageFlags shaderStageMask
4980 VkShaderResourceUsageAMD resourceUsage
4981 u32 numPhysicalVgprs
4982 u32 numPhysicalSgprs
4983 u32 numAvailableVgprs
4984 u32 numAvailableSgprs
4985 u32[3] computeWorkGroupSize
4986}
4987
Daniel Kochf25f5bb2017-10-05 00:26:58 -04004988@extension("VK_KHR_multiview") // 54
4989class VkRenderPassMultiviewCreateInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004990 VkStructureType sType
4991 const void* pNext
4992 u32 subpassCount
4993 const u32* pViewMasks
4994 u32 dependencyCount
4995 const s32* pViewOffsets
4996 u32 correlationMaskCount
4997 const u32* pCorrelationMasks
4998}
4999
Daniel Kochf25f5bb2017-10-05 00:26:58 -04005000@extension("VK_KHR_multiview") // 54
5001class VkPhysicalDeviceMultiviewFeaturesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005002 VkStructureType sType
5003 void* pNext
5004 VkBool32 multiview
5005 VkBool32 multiviewGeometryShader
5006 VkBool32 multiviewTessellationShader
5007}
5008
Daniel Kochf25f5bb2017-10-05 00:26:58 -04005009@extension("VK_KHR_multiview") // 54
5010class VkPhysicalDeviceMultiviewPropertiesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005011 VkStructureType sType
5012 void* pNext
5013 u32 maxMultiviewViewCount
5014 u32 maxMultiviewInstanceIndex
5015}
5016
5017@extension("VK_NV_external_memory_capabilities") // 56
Jesse Halleb02c472017-02-24 15:13:45 -08005018class VkExternalImageFormatPropertiesNV {
5019 VkImageFormatProperties imageFormatProperties
5020 VkExternalMemoryFeatureFlagsNV externalMemoryFeatures
5021 VkExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes
5022 VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes
5023}
5024
Jesse Hallad250842017-03-10 18:35:38 -08005025@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08005026class VkExternalMemoryImageCreateInfoNV {
5027 VkStructureType sType
5028 const void* pNext
5029 VkExternalMemoryHandleTypeFlagsNV handleTypes
5030}
5031
Jesse Hallad250842017-03-10 18:35:38 -08005032@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08005033class VkExportMemoryAllocateInfoNV {
5034 VkStructureType sType
5035 const void* pNext
5036 VkExternalMemoryHandleTypeFlagsNV handleTypes
5037}
5038
Jesse Hallad250842017-03-10 18:35:38 -08005039@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08005040class VkImportMemoryWin32HandleInfoNV {
5041 VkStructureType sType
5042 const void* pNext
5043 VkExternalMemoryHandleTypeFlagsNV handleType
5044 platform.HANDLE handle
5045}
5046
Jesse Hallad250842017-03-10 18:35:38 -08005047@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08005048class VkExportMemoryWin32HandleInfoNV {
5049 VkStructureType sType
5050 const void* pNext
5051 const platform.SECURITY_ATTRIBUTES* pAttributes
5052 platform.DWORD dwAccess
5053}
5054
Jesse Hallad250842017-03-10 18:35:38 -08005055@extension("VK_NV_win32_keyed_mutex") // 59
Jesse Halleb02c472017-02-24 15:13:45 -08005056class VkWin32KeyedMutexAcquireReleaseInfoNV {
5057 VkStructureType sType
5058 const void* pNext
5059 u32 acquireCount
5060 const VkDeviceMemory* pAcquireSyncs
5061 const u64* pAcquireKeys
5062 const u32* pAcquireTimeoutMilliseconds
5063 u32 releaseCount
5064 const VkDeviceMemory* pReleaseSyncs
5065 const u64* pReleaseKeys
5066}
5067
Jesse Hallad250842017-03-10 18:35:38 -08005068@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13005069class VkPhysicalDeviceFeatures2KHR {
5070 VkStructureType sType
5071 void* pNext
5072 VkPhysicalDeviceFeatures features
5073}
5074
Jesse Hallad250842017-03-10 18:35:38 -08005075@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13005076class VkPhysicalDeviceProperties2KHR {
5077 VkStructureType sType
5078 void* pNext
5079 VkPhysicalDeviceProperties properties
5080}
5081
Jesse Hallad250842017-03-10 18:35:38 -08005082@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13005083class VkFormatProperties2KHR {
5084 VkStructureType sType
5085 void* pNext
5086 VkFormatProperties formatProperties
5087}
5088
Jesse Hallad250842017-03-10 18:35:38 -08005089@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13005090class VkImageFormatProperties2KHR {
5091 VkStructureType sType
5092 void* pNext
5093 VkImageFormatProperties imageFormatProperties
5094}
5095
Jesse Hallad250842017-03-10 18:35:38 -08005096@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13005097class VkPhysicalDeviceImageFormatInfo2KHR {
5098 VkStructureType sType
5099 const void* pNext
5100 VkFormat format
5101 VkImageType type
5102 VkImageTiling tiling
5103 VkImageUsageFlags usage
5104 VkImageCreateFlags flags
5105}
5106
Jesse Hallad250842017-03-10 18:35:38 -08005107@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13005108class VkQueueFamilyProperties2KHR {
5109 VkStructureType sType
5110 void* pNext
5111 VkQueueFamilyProperties queueFamilyProperties
5112}
5113
Jesse Hallad250842017-03-10 18:35:38 -08005114@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13005115class VkPhysicalDeviceMemoryProperties2KHR {
5116 VkStructureType sType
5117 void* pNext
5118 VkPhysicalDeviceMemoryProperties memoryProperties
5119}
5120
Jesse Hallad250842017-03-10 18:35:38 -08005121@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13005122class VkSparseImageFormatProperties2KHR {
5123 VkStructureType sType
5124 void* pNext
5125 VkSparseImageFormatProperties properties
5126}
5127
Jesse Hallad250842017-03-10 18:35:38 -08005128@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13005129class VkPhysicalDeviceSparseImageFormatInfo2KHR {
5130 VkStructureType sType
5131 const void* pNext
5132 VkFormat format
5133 VkImageType type
5134 VkSampleCountFlagBits samples
5135 VkImageUsageFlags usage
5136 VkImageTiling tiling
5137}
5138
Daniel Kochf25f5bb2017-10-05 00:26:58 -04005139@extension("VK_KHR_device_group") // 61
5140class VkMemoryAllocateFlagsInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005141 VkStructureType sType
5142 const void* pNext
Daniel Kochf25f5bb2017-10-05 00:26:58 -04005143 VkMemoryAllocateFlagsKHR flags
Jesse Hallad250842017-03-10 18:35:38 -08005144 u32 deviceMask
5145}
5146
Daniel Kochf25f5bb2017-10-05 00:26:58 -04005147@extension("VK_KHR_device_group") // 61
5148class VkBindBufferMemoryDeviceGroupInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005149 VkStructureType sType
5150 const void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08005151 u32 deviceIndexCount
5152 const u32* pDeviceIndices
5153}
5154
Daniel Kochf25f5bb2017-10-05 00:26:58 -04005155@extension("VK_KHR_device_group") // 61
5156class VkBindImageMemoryDeviceGroupInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005157 VkStructureType sType
5158 const void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08005159 u32 deviceIndexCount
5160 const u32* pDeviceIndices
5161 u32 SFRRectCount
5162 const VkRect2D* pSFRRects
5163}
5164
Daniel Kochf25f5bb2017-10-05 00:26:58 -04005165@extension("VK_KHR_device_group") // 61
5166class VkDeviceGroupRenderPassBeginInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005167 VkStructureType sType
5168 const void* pNext
5169 u32 deviceMask
5170 u32 deviceRenderAreaCount
5171 const VkRect2D* pDeviceRenderAreas
5172}
5173
Daniel Kochf25f5bb2017-10-05 00:26:58 -04005174@extension("VK_KHR_device_group") // 61
5175class VkDeviceGroupCommandBufferBeginInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005176 VkStructureType sType
5177 const void* pNext
5178 u32 deviceMask
5179}
5180
Daniel Kochf25f5bb2017-10-05 00:26:58 -04005181@extension("VK_KHR_device_group") // 61
5182class VkDeviceGroupSubmitInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005183 VkStructureType sType
5184 const void* pNext
5185 u32 waitSemaphoreCount
5186 const u32* pWaitSemaphoreDeviceIndices
5187 u32 commandBufferCount
5188 const u32* pCommandBufferDeviceMasks
5189 u32 signalSemaphoreCount
5190 const u32* pSignalSemaphoreDeviceIndices
5191}
5192
Daniel Kochf25f5bb2017-10-05 00:26:58 -04005193@extension("VK_KHR_device_group") // 61
5194class VkDeviceGroupBindSparseInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005195 VkStructureType sType
5196 const void* pNext
5197 u32 resourceDeviceIndex
5198 u32 memoryDeviceIndex
5199}
5200
Jesse Hallad250842017-03-10 18:35:38 -08005201@extension("VK_EXT_validation_flags") // 62
Chris Forbes289cb792016-12-30 15:03:55 +13005202class VkValidationFlagsEXT {
5203 VkStructureType sType
5204 const void* pNext
5205 u32 disabledValidationCheckCount
5206 VkValidationCheckEXT* pDisabledValidationChecks
5207}
5208
Jesse Hallad250842017-03-10 18:35:38 -08005209@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08005210class VkViSurfaceCreateInfoNN {
5211 VkStructureType sType
5212 const void* pNext
5213 VkViSurfaceCreateFlagsNN flags
5214 void* window
5215}
5216
Daniel Kochf25f5bb2017-10-05 00:26:58 -04005217@extension("VK_KHR_device_group_creation") // 71
5218class VkPhysicalDeviceGroupPropertiesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005219 VkStructureType sType
Jesse Hallf5ad48b2017-03-20 13:09:19 -07005220 void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08005221 u32 physicalDeviceCount
Daniel Kochf25f5bb2017-10-05 00:26:58 -04005222 VkPhysicalDevice[VK_MAX_DEVICE_GROUP_SIZE] physicalDevices
Jesse Hallad250842017-03-10 18:35:38 -08005223 VkBool32 subsetAllocation
5224}
5225
Daniel Kochf25f5bb2017-10-05 00:26:58 -04005226@extension("VK_KHR_device_group_creation") // 71
5227class VkDeviceGroupDeviceCreateInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005228 VkStructureType sType
5229 const void* pNext
5230 u32 physicalDeviceCount
5231 const VkPhysicalDevice* pPhysicalDevices
5232}
5233
Jesse Hall9492f992017-08-28 12:10:06 -07005234@extension("VK_KHR_external_memory_capabilities") // 72
5235class VkExternalMemoryPropertiesKHR {
5236 VkExternalMemoryFeatureFlagsKHR externalMemoryFeatures
5237 VkExternalMemoryHandleTypeFlagsKHR exportFromImportedHandleTypes
5238 VkExternalMemoryHandleTypeFlagsKHR compatibleHandleTypes
Jesse Hallad250842017-03-10 18:35:38 -08005239}
5240
Jesse Hall9492f992017-08-28 12:10:06 -07005241@extension("VK_KHR_external_memory_capabilities") // 72
5242class VkPhysicalDeviceExternalImageFormatInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005243 VkStructureType sType
5244 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07005245 VkExternalMemoryHandleTypeFlagBitsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08005246}
5247
Jesse Hall9492f992017-08-28 12:10:06 -07005248@extension("VK_KHR_external_memory_capabilities") // 72
5249class VkExternalImageFormatPropertiesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005250 VkStructureType sType
5251 void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07005252 VkExternalMemoryPropertiesKHR externalMemoryProperties
Jesse Hallad250842017-03-10 18:35:38 -08005253}
5254
Jesse Hall9492f992017-08-28 12:10:06 -07005255@extension("VK_KHR_external_memory_capabilities") // 72
5256class VkPhysicalDeviceExternalBufferInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005257 VkStructureType sType
5258 const void* pNext
5259 VkBufferCreateFlags flags
5260 VkBufferUsageFlags usage
Jesse Hall9492f992017-08-28 12:10:06 -07005261 VkExternalMemoryHandleTypeFlagBitsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08005262}
5263
Jesse Hall9492f992017-08-28 12:10:06 -07005264@extension("VK_KHR_external_memory_capabilities") // 72
5265class VkExternalBufferPropertiesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005266 VkStructureType sType
5267 void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07005268 VkExternalMemoryPropertiesKHR externalMemoryProperties
Jesse Hallad250842017-03-10 18:35:38 -08005269}
5270
Jesse Hall9492f992017-08-28 12:10:06 -07005271@extension("VK_KHR_external_memory_capabilities") // 72
5272class VkPhysicalDeviceIDPropertiesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005273 VkStructureType sType
5274 void* pNext
5275 u8[VK_UUID_SIZE] deviceUUID
5276 u8[VK_UUID_SIZE] driverUUID
Daniel Kochf25f5bb2017-10-05 00:26:58 -04005277 u8[VK_LUID_SIZE] deviceLUID
Jesse Hall9492f992017-08-28 12:10:06 -07005278 u32 deviceNodeMask
Jesse Hallad250842017-03-10 18:35:38 -08005279 VkBool32 deviceLUIDValid
5280}
5281
Jesse Hall9492f992017-08-28 12:10:06 -07005282@extension("VK_KHR_external_memory") // 73
5283class VkExternalMemoryImageCreateInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005284 VkStructureType sType
5285 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07005286 VkExternalMemoryHandleTypeFlagsKHR handleTypes
Jesse Hallad250842017-03-10 18:35:38 -08005287}
5288
Jesse Hall9492f992017-08-28 12:10:06 -07005289@extension("VK_KHR_external_memory") // 73
5290class VkExternalMemoryBufferCreateInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005291 VkStructureType sType
5292 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07005293 VkExternalMemoryHandleTypeFlagsKHR handleTypes
Jesse Hallad250842017-03-10 18:35:38 -08005294}
5295
Jesse Hall9492f992017-08-28 12:10:06 -07005296@extension("VK_KHR_external_memory") // 73
5297class VkExportMemoryAllocateInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005298 VkStructureType sType
5299 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07005300 VkExternalMemoryHandleTypeFlagsKHR handleTypes
Jesse Hallad250842017-03-10 18:35:38 -08005301}
5302
Jesse Hall9492f992017-08-28 12:10:06 -07005303@extension("VK_KHR_external_memory_win32") // 74
5304class VkImportMemoryWin32HandleInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005305 VkStructureType sType
5306 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07005307 VkExternalMemoryHandleTypeFlagBitsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08005308 platform.HANDLE handle
Jesse Hall9492f992017-08-28 12:10:06 -07005309 platform.LPCWSTR name
Jesse Hallad250842017-03-10 18:35:38 -08005310}
5311
Jesse Hall9492f992017-08-28 12:10:06 -07005312@extension("VK_KHR_external_memory_win32") // 74
5313class VkExportMemoryWin32HandleInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005314 VkStructureType sType
5315 const void* pNext
5316 const platform.SECURITY_ATTRIBUTES* pAttributes
5317 platform.DWORD dwAccess
5318 platform.LPCWSTR name
5319}
5320
Jesse Hall9492f992017-08-28 12:10:06 -07005321@extension("VK_KHR_external_memory_win32") // 74
5322class VkMemoryWin32HandlePropertiesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005323 VkStructureType sType
5324 void* pNext
5325 u32 memoryTypeBits
5326}
5327
Jesse Hall9492f992017-08-28 12:10:06 -07005328@extension("VK_KHR_external_memory_win32") // 74
5329class VkMemoryGetWin32HandleInfoKHR {
5330 VkStructureType sType
5331 void* pNext
5332 VkDeviceMemory memory
5333 VkExternalMemoryHandleTypeFlagBitsKHR handleType
5334}
5335
5336@extension("VK_KHR_external_memory_fd") // 75
5337class VkImportMemoryFdInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005338 VkStructureType sType
5339 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07005340 VkExternalMemoryHandleTypeFlagBitsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08005341 int fd
5342}
5343
Jesse Hall9492f992017-08-28 12:10:06 -07005344@extension("VK_KHR_external_memory_fd") // 75
5345class VkMemoryFdPropertiesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005346 VkStructureType sType
5347 void* pNext
5348 u32 memoryTypeBits
5349}
5350
Jesse Hall9492f992017-08-28 12:10:06 -07005351@extension("VK_KHR_external_memory_fd") // 75
5352class VkMemoryGetFdInfoKHR {
5353 VkStructureType sType
5354 void* pNext
5355 VkDeviceMemory memory
5356 VkExternalMemoryHandleTypeFlagBitsKHR handleType
5357}
5358
5359@extension("VK_KHR_win32_keyed_mutex") // 76
5360class VkWin32KeyedMutexAcquireReleaseInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005361 VkStructureType sType
5362 const void* pNext
5363 u32 acquireCount
5364 const VkDeviceMemory* pAcquireSyncs
5365 const u64* pAcquireKeys
5366 const u32* pAcquireTimeouts
5367 u32 releaseCount
5368 const VkDeviceMemory* pReleaseSyncs
5369 const u64* pReleaseKeys
5370}
5371
Jesse Hall9492f992017-08-28 12:10:06 -07005372@extension("VK_KHR_external_semaphore_capabilities") // 77
5373class VkPhysicalDeviceExternalSemaphoreInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005374 VkStructureType sType
5375 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07005376 VkExternalSemaphoreHandleTypeFlagBitsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08005377}
5378
Jesse Hall9492f992017-08-28 12:10:06 -07005379@extension("VK_KHR_external_semaphore_capabilities") // 77
5380class VkExternalSemaphorePropertiesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005381 VkStructureType sType
5382 void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07005383 VkExternalSemaphoreHandleTypeFlagsKHR exportFromImportedHandleTypes
5384 VkExternalSemaphoreHandleTypeFlagsKHR compatibleHandleTypes
5385 VkExternalSemaphoreFeatureFlagsKHR externalSemaphoreFeatures
Jesse Hallad250842017-03-10 18:35:38 -08005386}
5387
Jesse Hall9492f992017-08-28 12:10:06 -07005388@extension("VK_KHR_external_semaphore") // 78
5389class VkExportSemaphoreCreateInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005390 VkStructureType sType
5391 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07005392 VkExternalSemaphoreHandleTypeFlagsKHR handleTypes
Jesse Hallad250842017-03-10 18:35:38 -08005393}
5394
Jesse Hall9492f992017-08-28 12:10:06 -07005395@extension("VK_KHR_external_semaphore_win32") // 79
5396class VkImportSemaphoreWin32HandleInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005397 VkStructureType sType
5398 const void* pNext
5399 VkSemaphore semaphore
Jesse Hall9492f992017-08-28 12:10:06 -07005400 VkSemaphoreImportFlagsKHR flags
5401 VkExternalSemaphoreHandleTypeFlagsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08005402 platform.HANDLE handle
Jesse Hall9492f992017-08-28 12:10:06 -07005403 platform.LPCWSTR name
Jesse Hallad250842017-03-10 18:35:38 -08005404}
5405
Jesse Hall9492f992017-08-28 12:10:06 -07005406@extension("VK_KHR_external_semaphore_win32") // 79
5407class VkExportSemaphoreWin32HandleInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005408 VkStructureType sType
5409 const void* pNext
5410 const platform.SECURITY_ATTRIBUTES* pAttributes
5411 platform.DWORD dwAccess
5412 platform.LPCWSTR name
5413}
5414
Jesse Hall9492f992017-08-28 12:10:06 -07005415@extension("VK_KHR_external_semaphore_win32") // 79
5416class VkD3D12FenceSubmitInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005417 VkStructureType sType
5418 const void* pNext
5419 u32 waitSemaphoreValuesCount
5420 const u64* pWaitSemaphoreValues
5421 u32 signalSemaphoreValuesCount
5422 const u64* pSignalSemaphoreValues
5423}
5424
Jesse Hall9492f992017-08-28 12:10:06 -07005425@extension("VK_KHR_external_semaphore_win32") // 79
5426class VkSemaphoreGetWin32HandleInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08005427 VkStructureType sType
5428 const void* pNext
5429 VkSemaphore semaphore
Jesse Hall9492f992017-08-28 12:10:06 -07005430 VkExternalSemaphoreHandleTypeFlagBitsKHR handleType
5431}
5432
5433@extension("VK_KHR_external_semaphore_fd") // 80
5434class VkImportSemaphoreFdInfoKHR {
5435 VkStructureType sType
5436 const void* pNext
5437 VkSemaphore semaphore
5438 VkSemaphoreImportFlagsKHR flags
5439 VkExternalSemaphoreHandleTypeFlagBitsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08005440 s32 fd
5441}
5442
Jesse Hall9492f992017-08-28 12:10:06 -07005443@extension("VK_KHR_external_semaphore_fd") // 80
5444class VkSemaphoreGetFdInfoKHR {
5445 VkStructureType sType
5446 const void* pNext
5447 VkSemaphore semaphore
5448 VkExternalSemaphoreHandleTypeFlagBitsKHR handleType
5449}
5450
Jesse Hallad250842017-03-10 18:35:38 -08005451@extension("VK_KHR_push_descriptor") // 81
5452class VkPhysicalDevicePushDescriptorPropertiesKHR {
5453 VkStructureType sType
5454 void* pNext
5455 u32 maxPushDescriptors
5456}
5457
Jesse Hall9492f992017-08-28 12:10:06 -07005458@extension("VK_KHR_16bit_storage") // 84
5459class VkPhysicalDevice16BitStorageFeaturesKHR {
5460 VkStructureType sType
5461 void* pNext
5462 VkBool32 storageBuffer16BitAccess
5463 VkBool32 uniformAndStorageBuffer16BitAccess
5464 VkBool32 storagePushConstant16
5465 VkBool32 storageInputOutput16
5466}
5467
Jesse Hallad250842017-03-10 18:35:38 -08005468@extension("VK_KHR_incremental_present") // 85
5469class VkRectLayerKHR {
5470 VkOffset2D offset
5471 VkExtent2D extent
5472 u32 layer
5473}
5474
5475@extension("VK_KHR_incremental_present") // 85
5476class VkPresentRegionKHR {
5477 u32 rectangleCount
5478 const VkRectLayerKHR* pRectangles
5479}
5480
5481@extension("VK_KHR_incremental_present") // 85
5482class VkPresentRegionsKHR {
5483 VkStructureType sType
5484 const void* pNext
5485 u32 swapchainCount
5486 const VkPresentRegionKHR* pRegions
5487}
5488
5489@extension("VK_KHR_descriptor_update_template") // 86
5490class VkDescriptorUpdateTemplateEntryKHR {
5491 u32 dstBinding
5492 u32 dstArrayElement
5493 u32 descriptorCount
5494 VkDescriptorType descriptorType
5495 platform.size_t offset
5496 platform.size_t stride
5497}
5498
5499@extension("VK_KHR_descriptor_update_template") // 86
5500class VkDescriptorUpdateTemplateCreateInfoKHR {
5501 VkStructureType sType
5502 void* pNext
5503 VkDescriptorUpdateTemplateCreateFlagsKHR flags
5504 u32 descriptorUpdateEntryCount
5505 const VkDescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries
5506 VkDescriptorUpdateTemplateTypeKHR templateType
5507 VkDescriptorSetLayout descriptorSetLayout
5508 VkPipelineBindPoint pipelineBindPoint
5509 VkPipelineLayout pipelineLayout
5510 u32 set
5511}
5512
5513@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13005514class VkDeviceGeneratedCommandsFeaturesNVX {
5515 VkStructureType sType
5516 const void* pNext
5517 VkBool32 computeBindingPointSupport
5518}
5519
Jesse Hallad250842017-03-10 18:35:38 -08005520@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13005521class VkDeviceGeneratedCommandsLimitsNVX {
5522 VkStructureType sType
5523 const void* pNext
5524 u32 maxIndirectCommandsLayoutTokenCount
5525 u32 maxObjectEntryCounts
5526 u32 minSequenceCountBufferOffsetAlignment
5527 u32 minSequenceIndexBufferOffsetAlignment
5528 u32 minCommandsTokenBufferOffsetAlignment
5529}
5530
Jesse Hallad250842017-03-10 18:35:38 -08005531@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13005532class VkIndirectCommandsTokenNVX {
5533 VkIndirectCommandsTokenTypeNVX tokenType
5534 VkBuffer buffer
5535 VkDeviceSize offset
5536}
5537
Jesse Hallad250842017-03-10 18:35:38 -08005538@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13005539class VkIndirectCommandsLayoutTokenNVX {
5540 VkIndirectCommandsTokenTypeNVX tokenType
5541 u32 bindingUnit
5542 u32 dynamicCount
5543 u32 divisor
5544}
5545
Jesse Hallad250842017-03-10 18:35:38 -08005546@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13005547class VkIndirectCommandsLayoutCreateInfoNVX {
5548 VkStructureType sType
5549 const void* pNext
5550 VkPipelineBindPoint pipelineBindPoint
5551 VkIndirectCommandsLayoutUsageFlagsNVX flags
5552 u32 tokenCount
5553 const VkIndirectCommandsLayoutTokenNVX* pTokens
5554}
5555
Jesse Hallad250842017-03-10 18:35:38 -08005556@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13005557class VkCmdProcessCommandsInfoNVX {
5558 VkStructureType sType
5559 const void* pNext
5560 VkObjectTableNVX objectTable
5561 VkIndirectCommandsLayoutNVX indirectCommandsLayout
5562 u32 indirectCommandsTokenCount
5563 const VkIndirectCommandsTokenNVX* pIndirectCommandsTokens
5564 u32 maxSequencesCount
5565 VkCommandBuffer targetCommandBuffer
5566 VkBuffer sequencesCountBuffer
5567 VkDeviceSize sequencesCountOffset
5568 VkBuffer sequencesIndexBuffer
5569 VkDeviceSize sequencesIndexOffset
5570}
5571
Jesse Hallad250842017-03-10 18:35:38 -08005572@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13005573class VkCmdReserveSpaceForCommandsInfoNVX {
5574 VkStructureType sType
5575 const void* pNext
5576 VkObjectTableNVX objectTable
5577 VkIndirectCommandsLayoutNVX indirectCommandsLayout
5578 u32 maxSequencesCount
5579}
5580
Jesse Hallad250842017-03-10 18:35:38 -08005581@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13005582class VkObjectTableCreateInfoNVX {
5583 VkStructureType sType
5584 const void* pNext
5585 u32 objectCount
5586 const VkObjectEntryTypeNVX* pObjectEntryTypes
5587 const u32* pObjectEntryCounts
5588 const VkObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags
5589 u32 maxUniformBuffersPerDescriptor
5590 u32 maxStorageBuffersPerDescriptor
5591 u32 maxStorageImagesPerDescriptor
5592 u32 maxSampledImagesPerDescriptor
5593 u32 maxPipelineLayouts
5594}
5595
Jesse Hallad250842017-03-10 18:35:38 -08005596@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13005597class VkObjectTableEntryNVX {
5598 VkObjectEntryTypeNVX type
5599 VkObjectEntryUsageFlagsNVX flags
5600}
5601
Jesse Hallad250842017-03-10 18:35:38 -08005602@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13005603class VkObjectTablePipelineEntryNVX {
5604 VkObjectEntryTypeNVX type
5605 VkObjectEntryUsageFlagsNVX flags
5606 VkPipeline pipeline
5607}
5608
Jesse Hallad250842017-03-10 18:35:38 -08005609@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13005610class VkObjectTableDescriptorSetEntryNVX {
5611 VkObjectEntryTypeNVX type
5612 VkObjectEntryUsageFlagsNVX flags
5613 VkPipelineLayout pipelineLayout
5614 VkDescriptorSet descriptorSet
5615}
5616
Jesse Hallad250842017-03-10 18:35:38 -08005617@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13005618class VkObjectTableVertexBufferEntryNVX {
5619 VkObjectEntryTypeNVX type
5620 VkObjectEntryUsageFlagsNVX flags
5621 VkBuffer buffer
5622}
5623
Jesse Hallad250842017-03-10 18:35:38 -08005624@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13005625class VkObjectTableIndexBufferEntryNVX {
5626 VkObjectEntryTypeNVX type
5627 VkObjectEntryUsageFlagsNVX flags
5628 VkBuffer buffer
Jesse Hall77ad05b2017-03-10 22:02:20 -08005629 VkIndexType indexType
Chris Forbes289cb792016-12-30 15:03:55 +13005630}
5631
Jesse Hallad250842017-03-10 18:35:38 -08005632@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13005633class VkObjectTablePushConstantEntryNVX {
5634 VkObjectEntryTypeNVX type
5635 VkObjectEntryUsageFlagsNVX flags
5636 VkPipelineLayout pipelineLayout
5637 VkShaderStageFlags stageFlags
5638}
5639
Jesse Hallad250842017-03-10 18:35:38 -08005640@extension("VK_NV_clip_space_w_scaling") // 88
5641class VkViewportWScalingNV {
5642 f32 xcoeff
5643 f32 ycoeff
Jesse Hall889cd9a2017-02-25 22:12:23 -08005644}
5645
Jesse Hallad250842017-03-10 18:35:38 -08005646@extension("VK_NV_clip_space_w_scaling") // 88
5647class VkPipelineViewportWScalingStateCreateInfoNV {
Jesse Hall889cd9a2017-02-25 22:12:23 -08005648 VkStructureType sType
5649 const void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08005650 VkBool32 viewportWScalingEnable
5651 u32 viewportCount
5652 const VkViewportWScalingNV* pViewportWScalings
Jesse Hall889cd9a2017-02-25 22:12:23 -08005653}
5654
Jesse Hallad250842017-03-10 18:35:38 -08005655@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08005656class VkSurfaceCapabilities2EXT {
5657 VkStructureType sType
5658 void* pNext
5659 u32 minImageCount
5660 u32 maxImageCount
5661 VkExtent2D currentExtent
5662 VkExtent2D minImageExtent
5663 VkExtent2D maxImageExtent
5664 u32 maxImageArrayLayers
5665 VkSurfaceTransformFlagsKHR supportedTransforms
5666 VkSurfaceTransformFlagBitsKHR currentTransform
5667 VkCompositeAlphaFlagsKHR supportedCompositeAlpha
5668 VkImageUsageFlags supportedUsageFlags
5669 VkSurfaceCounterFlagsEXT supportedSurfaceCounters
5670}
5671
Jesse Hallad250842017-03-10 18:35:38 -08005672@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08005673class VkDisplayPowerInfoEXT {
5674 VkStructureType sType
5675 const void* pNext
5676 VkDisplayPowerStateEXT powerState
5677}
5678
Jesse Hallad250842017-03-10 18:35:38 -08005679@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08005680class VkDeviceEventInfoEXT {
5681 VkStructureType sType
5682 const void* pNext
5683 VkDeviceEventTypeEXT deviceEvent
5684}
5685
Jesse Hallad250842017-03-10 18:35:38 -08005686@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08005687class VkDisplayEventInfoEXT {
5688 VkStructureType sType
5689 const void* pNext
5690 VkDisplayEventTypeEXT displayEvent
5691}
5692
Jesse Hallad250842017-03-10 18:35:38 -08005693@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08005694class VkSwapchainCounterCreateInfoEXT {
5695 VkStructureType sType
5696 const void* pNext
5697 VkSurfaceCounterFlagsEXT surfaceCounters
5698}
5699
Jesse Hallad250842017-03-10 18:35:38 -08005700@extension("VK_GOOGLE_display_timing") // 93
5701class VkRefreshCycleDurationGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08005702 u64 refreshDuration
Jesse Hallad250842017-03-10 18:35:38 -08005703}
5704
5705@extension("VK_GOOGLE_display_timing") // 93
5706class VkPastPresentationTimingGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08005707 u32 presentID
5708 u64 desiredPresentTime
5709 u64 actualPresentTime
5710 u64 earliestPresentTime
5711 u64 presentMargin
Jesse Hallad250842017-03-10 18:35:38 -08005712}
5713
5714@extension("VK_GOOGLE_display_timing") // 93
5715class VkPresentTimeGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08005716 u32 presentID
5717 u64 desiredPresentTime
Jesse Hallad250842017-03-10 18:35:38 -08005718}
5719
5720@extension("VK_GOOGLE_display_timing") // 93
5721class VkPresentTimesInfoGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08005722 VkStructureType sType
5723 const void* pNext
5724 u32 swapchainCount
5725 const VkPresentTimeGOOGLE* pTimes
Jesse Hallad250842017-03-10 18:35:38 -08005726}
5727
5728@extension("VK_NVX_multiview_per_view_attributes") // 98
5729class VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
5730 VkStructureType sType
5731 void* pNext
5732 VkBool32 perViewPositionAllComponents
5733}
5734
5735@extension("VK_NV_viewport_swizzle") // 99
5736class VkViewportSwizzleNV {
5737 VkViewportCoordinateSwizzleNV x
5738 VkViewportCoordinateSwizzleNV y
5739 VkViewportCoordinateSwizzleNV z
5740 VkViewportCoordinateSwizzleNV w
5741}
5742
5743@extension("VK_NV_viewport_swizzle") // 99
5744class VkPipelineViewportSwizzleStateCreateInfoNV {
5745 VkStructureType sType
5746 const void* pNext
5747 VkPipelineViewportSwizzleStateCreateFlagsNV flags
5748 u32 viewportCount
5749 const VkViewportSwizzleNV* pViewportSwizzles
5750}
5751
5752@extension("VK_EXT_discard_rectangles") // 100
5753class VkPhysicalDeviceDiscardRectanglePropertiesEXT {
5754 VkStructureType sType
Jesse Hallf5ad48b2017-03-20 13:09:19 -07005755 void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08005756 u32 maxDiscardRectangles
5757}
5758
5759@extension("VK_EXT_discard_rectangles") // 100
5760class VkPipelineDiscardRectangleStateCreateInfoEXT {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08005761 VkStructureType sType
5762 const void* pNext
5763 VkPipelineDiscardRectangleStateCreateFlagsEXT flags
5764 VkDiscardRectangleModeEXT discardRectangleMode
5765 u32 discardRectangleCount
5766 const VkRect2D* pDiscardRectangles
Jesse Hallad250842017-03-10 18:35:38 -08005767}
5768
Jesse Hall35b4de12018-01-17 22:06:20 -08005769@extension("VK_EXT_conservative_rasterization") // 102
5770class VkPhysicalDeviceConservativeRasterizationPropertiesEXT {
5771 VkStructureType sType
5772 void* pNext
5773 f32 primitiveOverestimationSize
5774 f32 maxExtraPrimitiveOverestimationSize
5775 f32 extraPrimitiveOverestimationSizeGranularity
5776 VkBool32 primitiveUnderestimation
5777 VkBool32 conservativePointAndLineRasterization
5778 VkBool32 degenerateTrianglesRasterized
5779 VkBool32 degenerateLinesRasterized
5780 VkBool32 fullyCoveredFragmentShaderInputVariable
5781 VkBool32 conservativeRasterizationPostDepthCoverage
5782}
5783
5784@extension("VK_EXT_conservative_rasterization") // 102
5785class VkPipelineRasterizationConservativeStateCreateInfoEXT {
5786 VkStructureType sType
5787 const void* pNext
5788 VkPipelineRasterizationConservativeStateCreateFlagsEXT flags
5789 VkConservativeRasterizationModeEXT conservativeRasterizationMode
5790 f32 extraPrimitiveOverestimationSize
5791}
5792
Jesse Hallad250842017-03-10 18:35:38 -08005793@extension("VK_EXT_hdr_metadata") // 106
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07005794class VkXYColorEXT {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08005795 f32 x
5796 f32 y
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07005797}
5798
Jesse Hallad250842017-03-10 18:35:38 -08005799@extension("VK_EXT_hdr_metadata") // 106
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07005800class VkHdrMetadataEXT {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08005801 VkStructureType sType
5802 const void* pNext
5803 VkXYColorEXT displayPrimaryRed
5804 VkXYColorEXT displayPrimaryGreen
5805 VkXYColorEXT displayPrimaryBlue
5806 VkXYColorEXT whitePoint
5807 f32 maxLuminance
5808 f32 minLuminance
5809 f32 maxContentLightLevel
5810 f32 maxFrameAverageLightLevel
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07005811}
5812
Jesse Hall05556b12017-05-18 17:40:25 -07005813@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbese2d3ee12017-03-16 16:10:15 +13005814class VkSharedPresentSurfaceCapabilitiesKHR {
5815 VkStructureType sType
5816 const void* pNext
5817 VkImageUsageFlags sharedPresentSupportedUsageFlags
5818}
5819
Jesse Hall9492f992017-08-28 12:10:06 -07005820@extension("VK_KHR_external_fence_capabilities") // 113
5821class VkPhysicalDeviceExternalFenceInfoKHR {
5822 VkStructureType sType
5823 const void* pNext
5824 VkExternalFenceHandleTypeFlagBitsKHR handleType
5825}
5826
5827@extension("VK_KHR_external_fence_capabilities") // 113
5828class VkExternalFencePropertiesKHR {
5829 VkStructureType sType
5830 void* pNext
5831 VkExternalFenceHandleTypeFlagsKHR exportFromImportedHandleTypes
5832 VkExternalFenceHandleTypeFlagsKHR compatibleHandleTypes
5833 VkExternalFenceFeatureFlagsKHR externalFenceFeatures
5834}
5835
5836@extension("VK_KHR_external_fence") // 114
5837class VkExportFenceCreateInfoKHR {
5838 VkStructureType sType
5839 const void* pNext
5840 VkExternalFenceHandleTypeFlagsKHR handleTypes
5841}
5842
5843@extension("VK_KHR_external_fence_win32") // 115
5844class VkImportFenceWin32HandleInfoKHR {
5845 VkStructureType sType
5846 const void* pNext
5847 VkFence fence
5848 VkFenceImportFlagsKHR flags
5849 VkExternalFenceHandleTypeFlagBitsKHR handleType
5850 platform.HANDLE handle
5851 platform.LPCWSTR name
5852}
5853
5854@extension("VK_KHR_external_fence_win32") // 115
5855class VkExportFenceWin32HandleInfoKHR {
5856 VkStructureType sType
5857 const void* pNext
5858 const platform.SECURITY_ATTRIBUTES* pAttributes
5859 platform.DWORD dwAccess
5860 platform.LPCWSTR name
5861}
5862
5863@extension("VK_KHR_external_fence_win32") // 115
5864class VkFenceGetWin32HandleInfoKHR {
5865 VkStructureType sType
5866 const void* pNext
5867 VkFence fence
5868 VkExternalFenceHandleTypeFlagBitsKHR handleType
5869}
5870
5871@extension("VK_KHR_external_fence_fd") // 116
5872class VkImportFenceFdInfoKHR {
5873 VkStructureType sType
5874 const void* pNext
5875 VkFence fence
5876 VkFenceImportFlagsKHR flags
5877 VkExternalFenceHandleTypeFlagBitsKHR handleType
5878 int fd
5879}
5880
5881@extension("VK_KHR_external_fence_fd") // 116
5882class VkFenceGetFdInfoKHR {
5883 VkStructureType sType
5884 const void* pNext
5885 VkFence fence
5886 VkExternalFenceHandleTypeFlagBitsKHR handleType
5887}
5888
Jesse Hall076f95d2017-09-20 11:34:47 -07005889@extension("VK_KHR_maintenance2") // 118
5890class VkPhysicalDevicePointClippingPropertiesKHR {
5891 VkStructureType sType
5892 void* pNext
5893 VkPointClippingBehaviorKHR pointClippingBehavior
5894}
5895
5896@extension("VK_KHR_maintenance2") // 118
5897class VkInputAttachmentAspectReferenceKHR {
5898 u32 subpass
5899 u32 inputAttachmentIndex
5900 VkImageAspectFlags aspectMask
5901}
5902
5903@extension("VK_KHR_maintenance2") // 118
5904class VkRenderPassInputAttachmentAspectCreateInfoKHR {
5905 VkStructureType sType
5906 const void* pNext
5907 u32 aspectReferenceCount
5908 const VkInputAttachmentAspectReferenceKHR* pAspectReferences
5909}
5910
5911@extension("VK_KHR_maintenance2") // 118
5912class VkImageViewUsageCreateInfoKHR {
5913 VkStructureType sType
5914 const void* pNext
5915 VkImageUsageFlags usage
5916}
5917
5918@extension("VK_KHR_maintenance2") // 118
5919class VkPipelineTessellationDomainOriginStateCreateInfoKHR {
5920 VkStructureType sType
5921 const void* pNext
5922 VkTessellationDomainOriginKHR domainOrigin
5923}
5924
Jesse Hall05556b12017-05-18 17:40:25 -07005925@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13005926class VkPhysicalDeviceSurfaceInfo2KHR {
5927 VkStructureType sType
5928 const void* pNext
5929 VkSurfaceKHR surface
5930}
5931
Jesse Hall05556b12017-05-18 17:40:25 -07005932@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13005933class VkSurfaceCapabilities2KHR {
5934 VkStructureType sType
5935 void* pNext
5936 VkSurfaceCapabilitiesKHR surfaceCapabilities
5937}
5938
Jesse Hall05556b12017-05-18 17:40:25 -07005939@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13005940class VkSurfaceFormat2KHR {
5941 VkStructureType sType
5942 void* pNext
5943 VkSurfaceFormatKHR surfaceFormat
5944}
5945
Jesse Hall9492f992017-08-28 12:10:06 -07005946@extension("VK_KHR_variable_pointers") // 121
5947class VkPhysicalDeviceVariablePointerFeaturesKHR {
5948 VkStructureType sType
5949 void* pNext
5950 VkBool32 variablePointersStorageBuffer
5951 VkBool32 variablePointers
5952}
5953
Jesse Hallad250842017-03-10 18:35:38 -08005954@extension("VK_MVK_ios_surface") // 123
5955class VkIOSSurfaceCreateInfoMVK {
5956 VkStructureType sType
5957 const void* pNext
5958 VkIOSSurfaceCreateFlagsMVK flags
5959 const void* pView
5960}
5961
5962@extension("VK_MVK_macos_surface") // 124
5963class VkMacOSSurfaceCreateInfoMVK {
5964 VkStructureType sType
5965 const void* pNext
5966 VkMacOSSurfaceCreateFlagsMVK flags
5967 const void* pView
5968}
5969
Jesse Hall9492f992017-08-28 12:10:06 -07005970@extension("VK_KHR_dedicated_allocation") // 128
5971class VkMemoryDedicatedRequirementsKHR {
5972 VkStructureType sType
5973 void* pNext
5974 VkBool32 prefersDedicatedAllocation
5975 VkBool32 requiresDedicatedAllocation
5976}
5977
5978@extension("VK_KHR_dedicated_allocation") // 128
5979class VkMemoryDedicatedAllocateInfoKHR {
5980 VkStructureType sType
5981 const void* pNext
5982 VkImage image
5983 VkBuffer buffer
5984}
5985
Jesse Hall35b4de12018-01-17 22:06:20 -08005986@extension("VK_EXT_debug_utils") // 129
5987class VkDebugUtilsObjectNameInfoEXT {
5988 VkStructureType sType
5989 const void* pNext
5990 VkObjectType objectType
5991 u64 objectHandle
5992 const char* pObjectName
5993}
5994
5995@extension("VK_EXT_debug_utils") // 129
5996class VkDebugUtilsObjectTagInfoEXT {
5997 VkStructureType sType
5998 const void* pNext
5999 VkObjectType objectType
6000 u64 objectHandle
6001 u64 tagName
6002 platform.size_t tagSize
6003 const void* pTag
6004}
6005
6006@extension("VK_EXT_debug_utils") // 129
6007class VkDebugUtilsLabelEXT {
6008 VkStructureType sType
6009 const void* pNext
6010 const char* pLabelName
6011 f32[4] color
6012}
6013
6014@extension("VK_EXT_debug_utils") // 129
6015class VkDebugUtilsMessengerCallbackDataEXT {
6016 VkStructureType sType
6017 const void* pNext
6018 VkDebugUtilsMessengerCallbackDataFlagsEXT flags
6019 const char* pMessageIdName
6020 s32 messageIdNumber
6021 const char* pMessage
6022 u32 queueLabelCount
6023 VkDebugUtilsLabelEXT* pQueueLabels
6024 u32 cmdBufLabelCount
6025 VkDebugUtilsLabelEXT* pCmdBufLabels
6026 u32 objectCount
6027 VkDebugUtilsObjectNameInfoEXT* pObjects
6028}
6029
6030@extension("VK_EXT_debug_utils") // 129
6031class VkDebugUtilsMessengerCreateInfoEXT {
6032 VkStructureType sType
6033 const void* pNext
6034 VkDebugUtilsMessengerCreateFlagsEXT flags
6035 VkDebugUtilsMessageSeverityFlagsEXT messageSeverity
6036 VkDebugUtilsMessageTypeFlagsEXT messageType
6037 PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback
6038 void* pUserData
6039}
6040
Jesse Halle2be6b82018-01-18 15:04:37 -08006041@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 131
6042class VkAndroidHardwareBufferUsageANDROID {
6043 VkStructureType sType
6044 void* pNext
6045 u64 androidHardwareBufferUsage
6046}
6047
6048@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130
6049class VkAndroidHardwareBufferPropertiesANDROID {
6050 VkStructureType sType
6051 void* pNext
6052 VkDeviceSize allocationSize
6053 u32 memoryTypeBits
6054}
6055
6056@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130
6057class VkAndroidHardwareBufferFormatPropertiesANDROID {
6058 VkStructureType sType
6059 void* pNext
6060 VkFormat format
6061 u64 externalFormat
6062 VkFormatFeatureFlags formatFeatures
6063 VkComponentMapping samplerYcbcrConversionComponents
6064 VkSamplerYcbcrModelConversion suggestedYcbcrModel
6065 VkSamplerYcbcrRange suggestedYcbcrRange
6066 VkChromaLocation suggestedXChromaOffset
6067 VkChromaLocation suggestedYChromaOffset
6068}
6069
6070@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130
6071class VkImportAndroidHardwareBufferInfoANDROID {
6072 VkStructureType sType
6073 const void* pNext
6074 platform.AHardwareBuffer* buffer
6075}
6076
6077@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130
6078class VkMemoryGetAndroidHardwareBufferInfoANDROID {
6079 VkStructureType sType
6080 const void* pNext
6081 VkDeviceMemory memory
6082}
6083
6084@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130
6085class VkExternalFormatANDROID {
6086 VkStructureType sType
6087 void* pNext
6088 u64 externalFormat
6089}
6090
Jesse Hall7ba0ac72017-07-07 17:13:23 -07006091@extension("VK_EXT_sampler_filter_minmax") // 131
6092class VkSamplerReductionModeCreateInfoEXT {
6093 VkStructureType sType
6094 const void* pNext
6095 VkSamplerReductionModeEXT reductionMode
6096}
6097
6098@extension("VK_EXT_sampler_filter_minmax") // 131
6099class VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
6100 VkStructureType sType
6101 void* pNext
6102 VkBool32 filterMinmaxSingleComponentFormats
6103 VkBool32 filterMinmaxImageComponentMapping
6104}
6105
Jesse Hall77726222017-09-19 14:49:27 -05006106@extension("VK_EXT_sample_locations") // 144
6107class VkSampleLocationEXT {
6108 f32 x
6109 f32 y
6110}
6111
6112@extension("VK_EXT_sample_locations") // 144
6113class VkSampleLocationsInfoEXT {
6114 VkStructureType sType
6115 const void* pNext
6116 VkSampleCountFlagBits sampleLocationsPerPixel
6117 VkExtent2D sampleLocationGridSize
6118 u32 sampleLocationsCount
6119 const VkSampleLocationEXT* pSampleLocations
6120}
6121
6122@extension("VK_EXT_sample_locations") // 144
6123class VkAttachmentSampleLocationsEXT {
6124 u32 attachmentIndex
6125 VkSampleLocationsInfoEXT sampleLocationsInfo
6126}
6127
6128@extension("VK_EXT_sample_locations") // 144
6129class VkSubpassSampleLocationsEXT {
6130 u32 subpassIndex
6131 VkSampleLocationsInfoEXT sampleLocationsInfo
6132}
6133
6134@extension("VK_EXT_sample_locations") // 144
6135class VkRenderPassSampleLocationsBeginInfoEXT {
6136 VkStructureType sType
6137 const void* pNext
6138 u32 attachmentInitialSampleLocationsCount
6139 const VkAttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations
6140 u32 postSubpassSampleLocationsCount
Jesse Hall35b4de12018-01-17 22:06:20 -08006141 const VkSubpassSampleLocationsEXT* pPostSubpassSampleLocations
Jesse Hall77726222017-09-19 14:49:27 -05006142}
6143
6144@extension("VK_EXT_sample_locations") // 144
6145class VkPipelineSampleLocationsStateCreateInfoEXT {
6146 VkStructureType sType
6147 const void* pNext
6148 VkBool32 sampleLocationsEnable
6149 VkSampleLocationsInfoEXT sampleLocationsInfo
6150}
6151
6152@extension("VK_EXT_sample_locations") // 144
6153class VkPhysicalDeviceSampleLocationsPropertiesEXT {
6154 VkStructureType sType
6155 void* pNext
6156 VkSampleCountFlags sampleLocationSampleCounts
6157 VkExtent2D maxSampleLocationGridSize
6158 f32[2] sampleLocationCoordinateRange
6159 u32 sampleLocationSubPixelBits
6160 VkBool32 variableSampleLocations
6161}
6162
6163@extension("VK_EXT_sample_locations") // 144
6164class VkMultisamplePropertiesEXT {
6165 VkStructureType sType
6166 void* pNext
6167 VkExtent2D maxSampleLocationGridSize
6168}
6169
Jesse Hall9492f992017-08-28 12:10:06 -07006170@extension("VK_KHR_get_memory_requirements2") // 147
6171class VkBufferMemoryRequirementsInfo2KHR {
6172 VkStructureType sType
6173 const void* pNext
6174 VkBuffer buffer
6175}
6176
6177@extension("VK_KHR_get_memory_requirements2") // 147
6178class VkImageMemoryRequirementsInfo2KHR {
6179 VkStructureType sType
6180 const void* pNext
6181 VkImage image
6182}
6183
6184@extension("VK_KHR_get_memory_requirements2") // 147
6185class VkImageSparseMemoryRequirementsInfo2KHR {
6186 VkStructureType sType
6187 const void* pNext
6188 VkImage image
6189}
6190
6191@extension("VK_KHR_get_memory_requirements2") // 147
6192class VkMemoryRequirements2KHR {
6193 VkStructureType sType
6194 void* pNext
6195 VkMemoryRequirements memoryRequirements
6196}
6197
6198@extension("VK_KHR_get_memory_requirements2") // 147
6199class VkSparseImageMemoryRequirements2KHR {
6200 VkStructureType sType
6201 void* pNext
6202 VkSparseImageMemoryRequirements memoryRequirements
6203}
6204
Jesse Hall076f95d2017-09-20 11:34:47 -07006205@extension("VK_KHR_image_format_list") // 148
6206class VkImageFormatListCreateInfoKHR {
6207 VkStructureType sType
6208 const void* pNext
6209 u32 viewFormatCount
6210 const VkFormat* pViewFormats
6211}
6212
Jesse Hall7ba0ac72017-07-07 17:13:23 -07006213@extension("VK_EXT_blend_operation_advanced") // 149
6214class VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
6215 VkStructureType sType
6216 void* pNext
6217 VkBool32 advancedBlendCoherentOperations
6218}
6219
6220@extension("VK_EXT_blend_operation_advanced") // 149
6221class VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
6222 VkStructureType sType
6223 void* pNext
6224 u32 advancedBlendMaxColorAttachments
6225 VkBool32 advancedBlendIndependentBlend
6226 VkBool32 advancedBlendNonPremultipliedSrcColor
6227 VkBool32 advancedBlendNonPremultipliedDstColor
6228 VkBool32 advancedBlendCorrelatedOverlap
6229 VkBool32 advancedBlendAllOperations
6230}
6231
6232@extension("VK_EXT_blend_operation_advanced") // 149
6233class VkPipelineColorBlendAdvancedStateCreateInfoEXT {
6234 VkStructureType sType
6235 const void* pNext
6236 VkBool32 srcPremultiplied
6237 VkBool32 dstPremultiplied
6238 VkBlendOverlapEXT blendOverlap
6239}
6240
6241@extension("VK_NV_fragment_coverage_to_color") // 150
6242class VkPipelineCoverageToColorStateCreateInfoNV {
6243 VkStructureType sType
6244 const void* pNext
6245 VkPipelineCoverageToColorStateCreateFlagsNV flags
6246 VkBool32 coverageToColorEnable
6247 u32 coverageToColorLocation
6248}
6249
6250@extension("VK_NV_framebuffer_mixed_samples") // 153
6251class VkPipelineCoverageModulationStateCreateInfoNV {
6252 VkStructureType sType
6253 const void* pNext
6254 VkPipelineCoverageModulationStateCreateFlagsNV flags
6255 VkCoverageModulationModeNV coverageModulationMode
6256 VkBool32 coverageModulationTableEnable
6257 u32 coverageModulationTableCount
6258 const f32* pCoverageModulationTable
6259}
6260
Jesse Hall076f95d2017-09-20 11:34:47 -07006261@extension("VK_KHR_sampler_ycbcr_conversion") // 157
6262class VkSamplerYcbcrConversionCreateInfoKHR {
6263 VkStructureType sType
6264 const void* pNext
6265 VkFormat format
6266 VkSamplerYcbcrModelConversionKHR ycbcrModel
6267 VkSamplerYcbcrRangeKHR ycbcrRange
6268 VkComponentMapping components
6269 VkChromaLocationKHR xChromaOffset
6270 VkChromaLocationKHR yChromaOffset
6271 VkFilter chromaFilter
6272 VkBool32 forceExplicitReconstruction
6273}
6274
6275@extension("VK_KHR_sampler_ycbcr_conversion") // 157
6276class VkSamplerYcbcrConversionInfoKHR {
6277 VkStructureType sType
6278 const void* pNext
6279 VkSamplerYcbcrConversionKHR conversion
6280}
6281
6282@extension("VK_KHR_sampler_ycbcr_conversion") // 157
6283class VkBindImagePlaneMemoryInfoKHR {
6284 VkStructureType sType
6285 const void* pNext
6286 VkImageAspectFlagBits planeAspect
6287}
6288
6289@extension("VK_KHR_sampler_ycbcr_conversion") // 157
6290class VkImagePlaneMemoryRequirementsInfoKHR {
6291 VkStructureType sType
6292 const void* pNext
6293 VkImageAspectFlagBits planeAspect
6294}
6295
6296@extension("VK_KHR_sampler_ycbcr_conversion") // 157
6297class VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR {
6298 VkStructureType sType
6299 void* pNext
6300 VkBool32 samplerYcbcrConversion
6301}
6302
6303@extension("VK_KHR_sampler_ycbcr_conversion") // 157
6304class VkSamplerYcbcrConversionImageFormatPropertiesKHR {
6305 VkStructureType sType
6306 void* pNext
6307 u32 combinedImageSamplerDescriptorCount
6308}
6309
6310@extension("VK_KHR_bind_memory2") // 158
6311class VkBindBufferMemoryInfoKHR {
6312 VkStructureType sType
6313 const void* pNext
6314 VkBuffer buffer
6315 VkDeviceMemory memory
6316 VkDeviceSize memoryOffset
6317}
6318
6319@extension("VK_KHR_bind_memory2") // 158
6320class VkBindImageMemoryInfoKHR {
6321 VkStructureType sType
6322 const void* pNext
6323 VkImage image
6324 VkDeviceMemory memory
6325 VkDeviceSize memoryOffset
6326}
6327
Jesse Hall77726222017-09-19 14:49:27 -05006328@extension("VK_EXT_validation_cache") // 161
6329class VkValidationCacheCreateInfoEXT {
6330 VkStructureType sType
6331 const void* pNext
6332 VkValidationCacheCreateFlagsEXT flags
6333 platform.size_t initialDataSize
6334 const void* pInitialData
6335}
6336
6337@extension("VK_EXT_validation_cache") // 161
6338class VkShaderModuleValidationCacheCreateInfoEXT {
6339 VkStructureType sType
6340 const void* pNext
6341 VkValidationCacheEXT validationCache
6342}
6343
Daniel Kochf25f5bb2017-10-05 00:26:58 -04006344@extension("VK_KHR_maintenance3") // 169
6345class VkPhysicalDeviceMaintenance3PropertiesKHR {
6346 VkStructureType sType
6347 void* pNext
6348 u32 maxPerSetDescriptors
6349 VkDeviceSize maxMemoryAllocationSize
6350}
6351
6352@extension("VK_KHR_maintenance3") // 169
6353class VkDescriptorSetLayoutSupportKHR {
6354 VkStructureType sType
6355 void* pNext
6356 VkBool32 supported
6357}
6358
Jesse Hall35b4de12018-01-17 22:06:20 -08006359@extension("VK_EXT_global_priority") // 175
6360class VkDeviceQueueGlobalPriorityCreateInfoEXT {
6361 VkStructureType sType
6362 const void* pNext
6363 VkQueueGlobalPriorityEXT globalPriority
6364}
6365
6366@extension("VK_EXT_external_memory_host") // 179
6367class VkImportMemoryHostPointerInfoEXT {
6368 VkStructureType sType
6369 const void* pNext
6370 VkExternalMemoryHandleTypeFlagBits handleType
6371 void* pHostPointer
6372}
6373
6374@extension("VK_EXT_external_memory_host") // 179
6375class VkMemoryHostPointerPropertiesEXT {
6376 VkStructureType sType
6377 void* pNext
6378 u32 memoryTypeBits
6379}
6380
6381@extension("VK_EXT_external_memory_host") // 179
6382class VkPhysicalDeviceExternalMemoryHostPropertiesEXT {
6383 VkStructureType sType
6384 void* pNext
6385 VkDeviceSize minImportedHostPointerAlignment
6386}
6387
Daniel Kochf25f5bb2017-10-05 00:26:58 -04006388
Jesse Halld27f6aa2015-08-15 17:58:48 -07006389////////////////
6390// Commands //
6391////////////////
6392
6393// Function pointers. TODO: add support for function pointers.
6394
6395@external type void* PFN_vkVoidFunction
6396@pfn cmd void vkVoidFunction() {
6397}
6398
Jesse Hall3fbc8562015-11-29 22:10:52 -08006399@external type void* PFN_vkAllocationFunction
6400@pfn cmd void* vkAllocationFunction(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006401 void* pUserData,
6402 platform.size_t size,
6403 platform.size_t alignment,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006404 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08006405 return ?
6406}
6407
Jesse Hall3fbc8562015-11-29 22:10:52 -08006408@external type void* PFN_vkReallocationFunction
6409@pfn cmd void* vkReallocationFunction(
Jesse Hall03b6fe12015-11-24 12:44:21 -08006410 void* pUserData,
6411 void* pOriginal,
6412 platform.size_t size,
6413 platform.size_t alignment,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006414 VkSystemAllocationScope allocationScope) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006415 return ?
6416}
6417
6418@external type void* PFN_vkFreeFunction
6419@pfn cmd void vkFreeFunction(
6420 void* pUserData,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006421 void* pMemory) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006422}
6423
Jesse Hall3fbc8562015-11-29 22:10:52 -08006424@external type void* PFN_vkInternalAllocationNotification
6425@pfn cmd void vkInternalAllocationNotification(
Jesse Hall03b6fe12015-11-24 12:44:21 -08006426 void* pUserData,
6427 platform.size_t size,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006428 VkInternalAllocationType allocationType,
6429 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08006430}
6431
6432@external type void* PFN_vkInternalFreeNotification
6433@pfn cmd void vkInternalFreeNotification(
6434 void* pUserData,
6435 platform.size_t size,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006436 VkInternalAllocationType allocationType,
6437 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08006438}
Jesse Halld27f6aa2015-08-15 17:58:48 -07006439
6440// Global functions
6441
6442@threadSafety("system")
6443cmd VkResult vkCreateInstance(
6444 const VkInstanceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006445 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006446 VkInstance* pInstance) {
6447 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO)
6448
6449 instance := ?
6450 pInstance[0] = instance
6451 State.Instances[instance] = new!InstanceObject()
6452
Jesse Hall3dd678a2016-01-08 21:52:01 -08006453 layers := pCreateInfo.ppEnabledLayerNames[0:pCreateInfo.enabledLayerCount]
6454 extensions := pCreateInfo.ppEnabledExtensionNames[0:pCreateInfo.enabledExtensionCount]
Jesse Halld27f6aa2015-08-15 17:58:48 -07006455
6456 return ?
6457}
6458
6459@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006460cmd void vkDestroyInstance(
Jesse Hall03b6fe12015-11-24 12:44:21 -08006461 VkInstance instance,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006462 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006463 instanceObject := GetInstance(instance)
6464
6465 State.Instances[instance] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006466}
6467
6468@threadSafety("system")
6469cmd VkResult vkEnumeratePhysicalDevices(
6470 VkInstance instance,
6471 u32* pPhysicalDeviceCount,
6472 VkPhysicalDevice* pPhysicalDevices) {
6473 instanceObject := GetInstance(instance)
6474
6475 physicalDeviceCount := as!u32(?)
6476 pPhysicalDeviceCount[0] = physicalDeviceCount
6477 physicalDevices := pPhysicalDevices[0:physicalDeviceCount]
6478
6479 for i in (0 .. physicalDeviceCount) {
6480 physicalDevice := ?
6481 physicalDevices[i] = physicalDevice
6482 if !(physicalDevice in State.PhysicalDevices) {
6483 State.PhysicalDevices[physicalDevice] = new!PhysicalDeviceObject(instance: instance)
6484 }
6485 }
6486
6487 return ?
6488}
6489
6490cmd PFN_vkVoidFunction vkGetDeviceProcAddr(
6491 VkDevice device,
6492 const char* pName) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006493 if device != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006494 device := GetDevice(device)
6495 }
6496
6497 return ?
6498}
6499
6500cmd PFN_vkVoidFunction vkGetInstanceProcAddr(
6501 VkInstance instance,
6502 const char* pName) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006503 if instance != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006504 instanceObject := GetInstance(instance)
6505 }
6506
6507 return ?
6508}
6509
Jesse Hall606a54e2015-11-19 22:17:28 -08006510cmd void vkGetPhysicalDeviceProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006511 VkPhysicalDevice physicalDevice,
6512 VkPhysicalDeviceProperties* pProperties) {
6513 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6514
6515 properties := ?
6516 pProperties[0] = properties
Jesse Halld27f6aa2015-08-15 17:58:48 -07006517}
6518
Jesse Hall606a54e2015-11-19 22:17:28 -08006519cmd void vkGetPhysicalDeviceQueueFamilyProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006520 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006521 u32* pQueueFamilyPropertyCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006522 VkQueueFamilyProperties* pQueueFamilyProperties) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006523 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006524 // TODO: Figure out how to express fetch-count-or-properties
6525 // This version fails 'apic validate' with 'fence not allowed in
6526 // *semantic.Branch'. Other attempts have failed with the same or other
6527 // errors.
6528 // if pQueueFamilyProperties != null {
6529 // queuesProperties := pQueueFamilyProperties[0:pCount[0]]
6530 // for i in (0 .. pCount[0]) {
6531 // queueProperties := as!VkQueueFamilyProperties(?)
6532 // queuesProperties[i] = queueProperties
6533 // }
6534 // } else {
6535 // count := ?
6536 // pCount[0] = count
6537 // }
Jesse Halld27f6aa2015-08-15 17:58:48 -07006538}
6539
Jesse Hall606a54e2015-11-19 22:17:28 -08006540cmd void vkGetPhysicalDeviceMemoryProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006541 VkPhysicalDevice physicalDevice,
6542 VkPhysicalDeviceMemoryProperties* pMemoryProperties) {
6543 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6544
6545 memoryProperties := ?
6546 pMemoryProperties[0] = memoryProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07006547}
6548
Jesse Hall606a54e2015-11-19 22:17:28 -08006549cmd void vkGetPhysicalDeviceFeatures(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006550 VkPhysicalDevice physicalDevice,
6551 VkPhysicalDeviceFeatures* pFeatures) {
6552 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6553
6554 features := ?
6555 pFeatures[0] = features
Jesse Halld27f6aa2015-08-15 17:58:48 -07006556}
6557
Jesse Hall606a54e2015-11-19 22:17:28 -08006558cmd void vkGetPhysicalDeviceFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006559 VkPhysicalDevice physicalDevice,
6560 VkFormat format,
6561 VkFormatProperties* pFormatProperties) {
6562 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6563
6564 formatProperties := ?
6565 pFormatProperties[0] = formatProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07006566}
6567
Jesse Halla9e57032015-11-30 01:03:10 -08006568cmd VkResult vkGetPhysicalDeviceImageFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006569 VkPhysicalDevice physicalDevice,
6570 VkFormat format,
6571 VkImageType type,
6572 VkImageTiling tiling,
6573 VkImageUsageFlags usage,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006574 VkImageCreateFlags flags,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006575 VkImageFormatProperties* pImageFormatProperties) {
6576 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6577
6578 imageFormatProperties := ?
6579 pImageFormatProperties[0] = imageFormatProperties
Jesse Halla9e57032015-11-30 01:03:10 -08006580
6581 return ?
Jesse Halld27f6aa2015-08-15 17:58:48 -07006582}
6583
Jesse Halld27f6aa2015-08-15 17:58:48 -07006584
6585// Device functions
6586
6587@threadSafety("system")
6588cmd VkResult vkCreateDevice(
6589 VkPhysicalDevice physicalDevice,
6590 const VkDeviceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006591 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006592 VkDevice* pDevice) {
6593 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO)
6594 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6595
6596 device := ?
6597 pDevice[0] = device
6598 State.Devices[device] = new!DeviceObject(physicalDevice: physicalDevice)
6599
6600 return ?
6601}
6602
6603@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006604cmd void vkDestroyDevice(
Jesse Hall03b6fe12015-11-24 12:44:21 -08006605 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006606 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006607 deviceObject := GetDevice(device)
6608
6609 State.Devices[device] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006610}
6611
6612
6613// Extension discovery functions
6614
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006615cmd VkResult vkEnumerateInstanceLayerProperties(
Jesse Hall03b6fe12015-11-24 12:44:21 -08006616 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006617 VkLayerProperties* pProperties) {
6618 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08006619 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07006620
6621 properties := pProperties[0:count]
6622 for i in (0 .. count) {
6623 property := ?
6624 properties[i] = property
6625 }
6626
6627 return ?
6628}
6629
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006630cmd VkResult vkEnumerateInstanceExtensionProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006631 const char* pLayerName,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006632 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006633 VkExtensionProperties* pProperties) {
6634 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08006635 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07006636
6637 properties := pProperties[0:count]
6638 for i in (0 .. count) {
6639 property := ?
6640 properties[i] = property
6641 }
6642
6643 return ?
6644}
6645
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006646cmd VkResult vkEnumerateDeviceLayerProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006647 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006648 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006649 VkLayerProperties* pProperties) {
6650 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6651 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08006652 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07006653
6654 properties := pProperties[0:count]
6655 for i in (0 .. count) {
6656 property := ?
6657 properties[i] = property
6658 }
6659
6660 return ?
6661}
6662
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006663cmd VkResult vkEnumerateDeviceExtensionProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006664 VkPhysicalDevice physicalDevice,
6665 const char* pLayerName,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006666 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006667 VkExtensionProperties* pProperties) {
6668 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
6669
6670 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08006671 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07006672
6673 properties := pProperties[0:count]
6674 for i in (0 .. count) {
6675 property := ?
6676 properties[i] = property
6677 }
6678
6679 return ?
6680}
6681
6682
6683// Queue functions
6684
6685@threadSafety("system")
Jesse Hall606a54e2015-11-19 22:17:28 -08006686cmd void vkGetDeviceQueue(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006687 VkDevice device,
6688 u32 queueFamilyIndex,
6689 u32 queueIndex,
6690 VkQueue* pQueue) {
6691 deviceObject := GetDevice(device)
6692
6693 queue := ?
6694 pQueue[0] = queue
6695
6696 if !(queue in State.Queues) {
6697 State.Queues[queue] = new!QueueObject(device: device)
6698 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07006699}
6700
6701@threadSafety("app")
6702cmd VkResult vkQueueSubmit(
6703 VkQueue queue,
Jesse Halla366a512015-11-19 22:30:07 -08006704 u32 submitCount,
Jesse Hallb00daad2015-11-29 19:46:20 -08006705 const VkSubmitInfo* pSubmits,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006706 VkFence fence) {
6707 queueObject := GetQueue(queue)
6708
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006709 if fence != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006710 fenceObject := GetFence(fence)
6711 assert(fenceObject.device == queueObject.device)
6712 }
6713
Jesse Hall3fbc8562015-11-29 22:10:52 -08006714 // commandBuffers := pcommandBuffers[0:commandBufferCount]
6715 // for i in (0 .. commandBufferCount) {
6716 // commandBuffer := commandBuffers[i]
6717 // commandBufferObject := GetCommandBuffer(commandBuffer)
6718 // assert(commandBufferObject.device == queueObject.device)
Jesse Halla366a512015-11-19 22:30:07 -08006719 //
Jesse Hall3fbc8562015-11-29 22:10:52 -08006720 // validate("QueueCheck", commandBufferObject.queueFlags in queueObject.flags,
6721 // "vkQueueSubmit: enqueued commandBuffer requires missing queue capabilities.")
Jesse Halla366a512015-11-19 22:30:07 -08006722 // }
Jesse Halld27f6aa2015-08-15 17:58:48 -07006723
6724 return ?
6725}
6726
6727@threadSafety("system")
6728cmd VkResult vkQueueWaitIdle(
6729 VkQueue queue) {
6730 queueObject := GetQueue(queue)
6731
6732 return ?
6733}
6734
6735@threadSafety("system")
6736cmd VkResult vkDeviceWaitIdle(
6737 VkDevice device) {
6738 deviceObject := GetDevice(device)
6739
6740 return ?
6741}
6742
6743
6744// Memory functions
6745
6746@threadSafety("system")
Jesse Hall3fbc8562015-11-29 22:10:52 -08006747cmd VkResult vkAllocateMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006748 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006749 const VkMemoryAllocateInfo* pAllocateInfo,
6750 const VkAllocationCallbacks* pAllocator,
6751 VkDeviceMemory* pMemory) {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08006752 assert(pAllocateInfo.sType == VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006753 deviceObject := GetDevice(device)
6754
Jesse Hall3fbc8562015-11-29 22:10:52 -08006755 memory := ?
6756 pMemory[0] = memory
6757 State.DeviceMemories[memory] = new!DeviceMemoryObject(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006758 device: device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006759 allocationSize: pAllocateInfo[0].allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006760
6761 return ?
6762}
6763
6764@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006765cmd void vkFreeMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006766 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006767 VkDeviceMemory memory,
6768 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006769 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006770 memoryObject := GetDeviceMemory(memory)
6771 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006772
6773 // Check that no objects are still bound before freeing.
Jesse Hall3fbc8562015-11-29 22:10:52 -08006774 validate("MemoryCheck", len(memoryObject.boundObjects) == 0,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006775 "vkFreeMemory: objects still bound")
Jesse Hall3fbc8562015-11-29 22:10:52 -08006776 validate("MemoryCheck", len(memoryObject.boundCommandBuffers) == 0,
6777 "vkFreeMemory: commandBuffers still bound")
6778 State.DeviceMemories[memory] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006779}
6780
6781@threadSafety("app")
6782cmd VkResult vkMapMemory(
6783 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006784 VkDeviceMemory memory,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006785 VkDeviceSize offset,
6786 VkDeviceSize size,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006787 VkMemoryMapFlags flags,
6788 void** ppData) {
6789 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006790 memoryObject := GetDeviceMemory(memory)
6791 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006792
6793 assert(flags == as!VkMemoryMapFlags(0))
Jesse Hall3fbc8562015-11-29 22:10:52 -08006794 assert((offset + size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006795
6796 return ?
6797}
6798
6799@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006800cmd void vkUnmapMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006801 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006802 VkDeviceMemory memory) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006803 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006804 memoryObject := GetDeviceMemory(memory)
6805 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006806}
6807
6808cmd VkResult vkFlushMappedMemoryRanges(
6809 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006810 u32 memoryRangeCount
6811 const VkMappedMemoryRange* pMemoryRanges) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006812 deviceObject := GetDevice(device)
6813
Jesse Hall3fbc8562015-11-29 22:10:52 -08006814 memoryRanges := pMemoryRanges[0:memoryRangeCount]
6815 for i in (0 .. memoryRangeCount) {
6816 memoryRange := memoryRanges[i]
6817 memoryObject := GetDeviceMemory(memoryRange.memory)
6818 assert(memoryObject.device == device)
6819 assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006820 }
6821
6822 return ?
6823}
6824
6825cmd VkResult vkInvalidateMappedMemoryRanges(
6826 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006827 u32 memoryRangeCount,
6828 const VkMappedMemoryRange* pMemoryRanges) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006829 deviceObject := GetDevice(device)
6830
Jesse Hall3fbc8562015-11-29 22:10:52 -08006831 memoryRanges := pMemoryRanges[0:memoryRangeCount]
6832 for i in (0 .. memoryRangeCount) {
6833 memoryRange := memoryRanges[i]
6834 memoryObject := GetDeviceMemory(memoryRange.memory)
6835 assert(memoryObject.device == device)
6836 assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006837 }
6838
6839 return ?
6840}
6841
6842
6843// Memory management API functions
6844
Jesse Hall606a54e2015-11-19 22:17:28 -08006845cmd void vkGetDeviceMemoryCommitment(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006846 VkDevice device,
6847 VkDeviceMemory memory,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006848 VkDeviceSize* pCommittedMemoryInBytes) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006849 deviceObject := GetDevice(device)
6850
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006851 if memory != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006852 memoryObject := GetDeviceMemory(memory)
6853 assert(memoryObject.device == device)
6854 }
6855
6856 committedMemoryInBytes := ?
6857 pCommittedMemoryInBytes[0] = committedMemoryInBytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07006858}
6859
Jesse Hall606a54e2015-11-19 22:17:28 -08006860cmd void vkGetBufferMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006861 VkDevice device,
6862 VkBuffer buffer,
6863 VkMemoryRequirements* pMemoryRequirements) {
6864 deviceObject := GetDevice(device)
6865 bufferObject := GetBuffer(buffer)
6866 assert(bufferObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006867}
6868
6869cmd VkResult vkBindBufferMemory(
6870 VkDevice device,
6871 VkBuffer buffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006872 VkDeviceMemory memory,
6873 VkDeviceSize memoryOffset) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006874 deviceObject := GetDevice(device)
6875 bufferObject := GetBuffer(buffer)
6876 assert(bufferObject.device == device)
6877
6878 // Unbind buffer from previous memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08006879 if bufferObject.memory != NULL_HANDLE {
6880 memoryObject := GetDeviceMemory(bufferObject.memory)
6881 memoryObject.boundObjects[as!u64(buffer)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006882 }
6883
6884 // Bind buffer to given memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08006885 if memory != NULL_HANDLE {
6886 memoryObject := GetDeviceMemory(memory)
6887 assert(memoryObject.device == device)
6888 memoryObject.boundObjects[as!u64(buffer)] = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07006889 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08006890 bufferObject.memory = memory
6891 bufferObject.memoryOffset = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07006892
6893 return ?
6894}
6895
Jesse Hall606a54e2015-11-19 22:17:28 -08006896cmd void vkGetImageMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006897 VkDevice device,
6898 VkImage image,
6899 VkMemoryRequirements* pMemoryRequirements) {
6900 deviceObject := GetDevice(device)
6901 imageObject := GetImage(image)
6902 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006903}
6904
6905cmd VkResult vkBindImageMemory(
6906 VkDevice device,
6907 VkImage image,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006908 VkDeviceMemory memory,
6909 VkDeviceSize memoryOffset) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006910 deviceObject := GetDevice(device)
6911 imageObject := GetImage(image)
6912 assert(imageObject.device == device)
6913
6914 // Unbind image from previous memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08006915 if imageObject.memory != NULL_HANDLE {
6916 memoryObject := GetDeviceMemory(imageObject.memory)
6917 memoryObject.boundObjects[as!u64(image)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006918 }
6919
6920 // Bind image to given memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08006921 if memory != NULL_HANDLE {
6922 memoryObject := GetDeviceMemory(memory)
6923 assert(memoryObject.device == device)
6924 memoryObject.boundObjects[as!u64(image)] = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07006925 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08006926 imageObject.memory = memory
6927 imageObject.memoryOffset = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07006928
6929 return ?
6930}
6931
Jesse Hall606a54e2015-11-19 22:17:28 -08006932cmd void vkGetImageSparseMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006933 VkDevice device,
6934 VkImage image,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006935 u32* pSparseMemoryRequirementCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006936 VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
6937 deviceObject := GetDevice(device)
6938 imageObject := GetImage(image)
6939 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006940}
6941
Jesse Hall606a54e2015-11-19 22:17:28 -08006942cmd void vkGetPhysicalDeviceSparseImageFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006943 VkPhysicalDevice physicalDevice,
6944 VkFormat format,
6945 VkImageType type,
Jesse Hall091ed9e2015-11-30 00:55:29 -08006946 VkSampleCountFlagBits samples,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006947 VkImageUsageFlags usage,
6948 VkImageTiling tiling,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006949 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006950 VkSparseImageFormatProperties* pProperties) {
6951 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006952}
6953
Jesse Halla6429252015-11-29 18:59:42 -08006954cmd VkResult vkQueueBindSparse(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006955 VkQueue queue,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006956 u32 bindInfoCount,
Jesse Halla6429252015-11-29 18:59:42 -08006957 const VkBindSparseInfo* pBindInfo,
6958 VkFence fence) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006959 queueObject := GetQueue(queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006960
6961 return ?
6962}
6963
6964
6965// Fence functions
6966
6967@threadSafety("system")
6968cmd VkResult vkCreateFence(
6969 VkDevice device,
6970 const VkFenceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006971 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006972 VkFence* pFence) {
6973 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FENCE_CREATE_INFO)
6974 deviceObject := GetDevice(device)
6975
6976 fence := ?
6977 pFence[0] = fence
6978 State.Fences[fence] = new!FenceObject(
Jesse Halld8bade02015-11-24 10:24:18 -08006979 device: device, signaled: (pCreateInfo.flags == as!VkFenceCreateFlags(VK_FENCE_CREATE_SIGNALED_BIT)))
Jesse Halld27f6aa2015-08-15 17:58:48 -07006980
6981 return ?
6982}
6983
6984@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006985cmd void vkDestroyFence(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006986 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006987 VkFence fence,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006988 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006989 deviceObject := GetDevice(device)
6990 fenceObject := GetFence(fence)
6991 assert(fenceObject.device == device)
6992
6993 State.Fences[fence] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006994}
6995
6996@threadSafety("system")
6997cmd VkResult vkResetFences(
6998 VkDevice device,
6999 u32 fenceCount,
7000 const VkFence* pFences) {
7001 deviceObject := GetDevice(device)
7002
7003 fences := pFences[0:fenceCount]
7004 for i in (0 .. fenceCount) {
7005 fence := fences[i]
7006 fenceObject := GetFence(fence)
7007 assert(fenceObject.device == device)
7008 fenceObject.signaled = false
7009 }
7010
7011 return ?
7012}
7013
7014@threadSafety("system")
7015cmd VkResult vkGetFenceStatus(
7016 VkDevice device,
7017 VkFence fence) {
7018 deviceObject := GetDevice(device)
7019 fenceObject := GetFence(fence)
7020 assert(fenceObject.device == device)
7021
7022 return ?
7023}
7024
7025@threadSafety("system")
7026cmd VkResult vkWaitForFences(
7027 VkDevice device,
7028 u32 fenceCount,
7029 const VkFence* pFences,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007030 VkBool32 waitAll,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007031 u64 timeout) { /// timeout in nanoseconds
7032 deviceObject := GetDevice(device)
7033
7034 fences := pFences[0:fenceCount]
7035 for i in (0 .. fenceCount) {
7036 fence := fences[i]
7037 fenceObject := GetFence(fence)
7038 assert(fenceObject.device == device)
7039 }
7040
7041 return ?
7042}
7043
7044
7045// Queue semaphore functions
7046
7047@threadSafety("system")
7048cmd VkResult vkCreateSemaphore(
7049 VkDevice device,
7050 const VkSemaphoreCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007051 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007052 VkSemaphore* pSemaphore) {
7053 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO)
7054 deviceObject := GetDevice(device)
7055
7056 semaphore := ?
7057 pSemaphore[0] = semaphore
7058 State.Semaphores[semaphore] = new!SemaphoreObject(device: device)
7059
7060 return ?
7061}
7062
7063@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007064cmd void vkDestroySemaphore(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007065 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007066 VkSemaphore semaphore,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007067 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007068 deviceObject := GetDevice(device)
7069 semaphoreObject := GetSemaphore(semaphore)
7070 assert(semaphoreObject.device == device)
7071
7072 State.Semaphores[semaphore] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07007073}
7074
Jesse Halld27f6aa2015-08-15 17:58:48 -07007075
7076// Event functions
7077
7078@threadSafety("system")
7079cmd VkResult vkCreateEvent(
7080 VkDevice device,
7081 const VkEventCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007082 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007083 VkEvent* pEvent) {
7084 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_EVENT_CREATE_INFO)
7085 deviceObject := GetDevice(device)
7086
7087 event := ?
7088 pEvent[0] = event
7089 State.Events[event] = new!EventObject(device: device)
7090
7091 return ?
7092}
7093
7094@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007095cmd void vkDestroyEvent(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007096 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007097 VkEvent event,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007098 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007099 deviceObject := GetDevice(device)
7100 eventObject := GetEvent(event)
7101 assert(eventObject.device == device)
7102
7103 State.Events[event] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07007104}
7105
7106@threadSafety("system")
7107cmd VkResult vkGetEventStatus(
7108 VkDevice device,
7109 VkEvent event) {
7110 deviceObject := GetDevice(device)
7111 eventObject := GetEvent(event)
7112 assert(eventObject.device == device)
7113
7114 return ?
7115}
7116
7117@threadSafety("system")
7118cmd VkResult vkSetEvent(
7119 VkDevice device,
7120 VkEvent event) {
7121 deviceObject := GetDevice(device)
7122 eventObject := GetEvent(event)
7123 assert(eventObject.device == device)
7124
7125 return ?
7126}
7127
7128@threadSafety("system")
7129cmd VkResult vkResetEvent(
7130 VkDevice device,
7131 VkEvent event) {
7132 deviceObject := GetDevice(device)
7133 eventObject := GetEvent(event)
7134 assert(eventObject.device == device)
7135
7136 return ?
7137}
7138
7139
7140// Query functions
7141
7142@threadSafety("system")
7143cmd VkResult vkCreateQueryPool(
7144 VkDevice device,
7145 const VkQueryPoolCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007146 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007147 VkQueryPool* pQueryPool) {
7148 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO)
7149 deviceObject := GetDevice(device)
7150
7151 queryPool := ?
7152 pQueryPool[0] = queryPool
7153 State.QueryPools[queryPool] = new!QueryPoolObject(device: device)
7154
7155 return ?
7156}
7157
7158@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007159cmd void vkDestroyQueryPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007160 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007161 VkQueryPool queryPool,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007162 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007163 deviceObject := GetDevice(device)
7164 queryPoolObject := GetQueryPool(queryPool)
7165 assert(queryPoolObject.device == device)
7166
7167 State.QueryPools[queryPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07007168}
7169
7170@threadSafety("system")
7171cmd VkResult vkGetQueryPoolResults(
7172 VkDevice device,
7173 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007174 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007175 u32 queryCount,
Jesse Halla9bb62b2015-11-21 19:31:56 -08007176 platform.size_t dataSize,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007177 void* pData,
Jesse Halla9bb62b2015-11-21 19:31:56 -08007178 VkDeviceSize stride,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007179 VkQueryResultFlags flags) {
7180 deviceObject := GetDevice(device)
7181 queryPoolObject := GetQueryPool(queryPool)
7182 assert(queryPoolObject.device == device)
7183
Jesse Halld27f6aa2015-08-15 17:58:48 -07007184 data := pData[0:dataSize]
7185
7186 return ?
7187}
7188
7189// Buffer functions
7190
7191@threadSafety("system")
7192cmd VkResult vkCreateBuffer(
7193 VkDevice device,
7194 const VkBufferCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007195 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007196 VkBuffer* pBuffer) {
7197 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO)
7198 deviceObject := GetDevice(device)
7199
7200 buffer := ?
7201 pBuffer[0] = buffer
7202 State.Buffers[buffer] = new!BufferObject(device: device)
7203
7204 return ?
7205}
7206
7207@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007208cmd void vkDestroyBuffer(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007209 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007210 VkBuffer buffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007211 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007212 deviceObject := GetDevice(device)
7213 bufferObject := GetBuffer(buffer)
7214 assert(bufferObject.device == device)
7215
Jesse Hall3fbc8562015-11-29 22:10:52 -08007216 assert(bufferObject.memory == 0)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007217 State.Buffers[buffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07007218}
7219
7220
7221// Buffer view functions
7222
7223@threadSafety("system")
7224cmd VkResult vkCreateBufferView(
7225 VkDevice device,
7226 const VkBufferViewCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007227 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007228 VkBufferView* pView) {
7229 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO)
7230 deviceObject := GetDevice(device)
7231
7232 bufferObject := GetBuffer(pCreateInfo.buffer)
7233 assert(bufferObject.device == device)
7234
7235 view := ?
7236 pView[0] = view
7237 State.BufferViews[view] = new!BufferViewObject(device: device, buffer: pCreateInfo.buffer)
7238
7239 return ?
7240}
7241
7242@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007243cmd void vkDestroyBufferView(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007244 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007245 VkBufferView bufferView,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007246 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007247 deviceObject := GetDevice(device)
7248 bufferViewObject := GetBufferView(bufferView)
7249 assert(bufferViewObject.device == device)
7250
7251 State.BufferViews[bufferView] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07007252}
7253
7254
7255// Image functions
7256
7257@threadSafety("system")
7258cmd VkResult vkCreateImage(
7259 VkDevice device,
7260 const VkImageCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007261 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007262 VkImage* pImage) {
7263 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO)
7264 deviceObject := GetDevice(device)
7265
7266 image := ?
7267 pImage[0] = image
7268 State.Images[image] = new!ImageObject(device: device)
7269
7270 return ?
7271}
7272
7273@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007274cmd void vkDestroyImage(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007275 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007276 VkImage image,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007277 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007278 deviceObject := GetDevice(device)
7279 imageObject := GetImage(image)
7280 assert(imageObject.device == device)
7281
Jesse Hall3fbc8562015-11-29 22:10:52 -08007282 assert(imageObject.memory == 0)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007283 State.Images[image] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07007284}
7285
Jesse Hall606a54e2015-11-19 22:17:28 -08007286cmd void vkGetImageSubresourceLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007287 VkDevice device,
7288 VkImage image,
7289 const VkImageSubresource* pSubresource,
7290 VkSubresourceLayout* pLayout) {
7291 deviceObject := GetDevice(device)
7292 imageObject := GetImage(image)
7293 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007294}
7295
7296
7297// Image view functions
7298
7299@threadSafety("system")
7300cmd VkResult vkCreateImageView(
7301 VkDevice device,
7302 const VkImageViewCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007303 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007304 VkImageView* pView) {
7305 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO)
7306 deviceObject := GetDevice(device)
7307
7308 imageObject := GetImage(pCreateInfo.image)
7309 assert(imageObject.device == device)
7310
7311 view := ?
7312 pView[0] = view
7313 State.ImageViews[view] = new!ImageViewObject(device: device, image: pCreateInfo.image)
7314
7315 return ?
7316}
7317
7318@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007319cmd void vkDestroyImageView(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007320 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007321 VkImageView imageView,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007322 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007323 deviceObject := GetDevice(device)
7324 imageViewObject := GetImageView(imageView)
7325 assert(imageViewObject.device == device)
7326
7327 State.ImageViews[imageView] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07007328}
7329
7330
7331// Shader functions
7332
7333cmd VkResult vkCreateShaderModule(
7334 VkDevice device,
7335 const VkShaderModuleCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007336 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007337 VkShaderModule* pShaderModule) {
7338 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO)
7339 deviceObject := GetDevice(device)
7340
7341 shaderModule := ?
7342 pShaderModule[0] = shaderModule
7343 State.ShaderModules[shaderModule] = new!ShaderModuleObject(device: device)
7344
7345 return ?
7346}
7347
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007348cmd void vkDestroyShaderModule(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007349 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007350 VkShaderModule shaderModule,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007351 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007352 deviceObject := GetDevice(device)
7353 shaderModuleObject := GetShaderModule(shaderModule)
7354 assert(shaderModuleObject.device == device)
7355
7356 State.ShaderModules[shaderModule] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07007357}
7358
Jesse Halld27f6aa2015-08-15 17:58:48 -07007359
7360// Pipeline functions
7361
7362cmd VkResult vkCreatePipelineCache(
7363 VkDevice device,
7364 const VkPipelineCacheCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007365 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007366 VkPipelineCache* pPipelineCache) {
7367 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO)
7368 deviceObject := GetDevice(device)
7369
7370 pipelineCache := ?
7371 pPipelineCache[0] = pipelineCache
7372 State.PipelineCaches[pipelineCache] = new!PipelineCacheObject(device: device)
7373
7374 return ?
7375}
7376
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007377cmd void vkDestroyPipelineCache(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007378 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007379 VkPipelineCache pipelineCache,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007380 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007381 deviceObject := GetDevice(device)
7382 pipelineCacheObject := GetPipelineCache(pipelineCache)
7383 assert(pipelineCacheObject.device == device)
7384
7385 State.PipelineCaches[pipelineCache] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07007386}
7387
Jesse Halld27f6aa2015-08-15 17:58:48 -07007388cmd VkResult vkGetPipelineCacheData(
7389 VkDevice device,
7390 VkPipelineCache pipelineCache,
Jesse Halla9bb62b2015-11-21 19:31:56 -08007391 platform.size_t* pDataSize,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007392 void* pData) {
7393 deviceObject := GetDevice(device)
7394 pipelineCacheObject := GetPipelineCache(pipelineCache)
7395 assert(pipelineCacheObject.device == device)
7396
7397 return ?
7398}
7399
7400cmd VkResult vkMergePipelineCaches(
7401 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007402 VkPipelineCache dstCache,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007403 u32 srcCacheCount,
7404 const VkPipelineCache* pSrcCaches) {
7405 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007406 dstCacheObject := GetPipelineCache(dstCache)
7407 assert(dstCacheObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007408
7409 srcCaches := pSrcCaches[0:srcCacheCount]
7410 for i in (0 .. srcCacheCount) {
7411 srcCache := srcCaches[i]
7412 srcCacheObject := GetPipelineCache(srcCache)
7413 assert(srcCacheObject.device == device)
7414 }
7415
7416 return ?
7417}
7418
7419cmd VkResult vkCreateGraphicsPipelines(
7420 VkDevice device,
7421 VkPipelineCache pipelineCache,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007422 u32 createInfoCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007423 const VkGraphicsPipelineCreateInfo* pCreateInfos,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007424 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007425 VkPipeline* pPipelines) {
7426 deviceObject := GetDevice(device)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007427 if pipelineCache != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007428 pipelineCacheObject := GetPipelineCache(pipelineCache)
7429 assert(pipelineCacheObject.device == device)
7430 }
7431
Jesse Hall03b6fe12015-11-24 12:44:21 -08007432 createInfos := pCreateInfos[0:createInfoCount]
7433 pipelines := pPipelines[0:createInfoCount]
7434 for i in (0 .. createInfoCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007435 pipeline := ?
7436 pipelines[i] = pipeline
7437 State.Pipelines[pipeline] = new!PipelineObject(device: device)
7438 }
7439
7440 return ?
7441}
7442
7443cmd VkResult vkCreateComputePipelines(
7444 VkDevice device,
7445 VkPipelineCache pipelineCache,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007446 u32 createInfoCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007447 const VkComputePipelineCreateInfo* pCreateInfos,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007448 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007449 VkPipeline* pPipelines) {
7450 deviceObject := GetDevice(device)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007451 if pipelineCache != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007452 pipelineCacheObject := GetPipelineCache(pipelineCache)
7453 assert(pipelineCacheObject.device == device)
7454 }
7455
Jesse Hall03b6fe12015-11-24 12:44:21 -08007456 createInfos := pCreateInfos[0:createInfoCount]
7457 pipelines := pPipelines[0:createInfoCount]
7458 for i in (0 .. createInfoCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007459 pipeline := ?
7460 pipelines[i] = pipeline
7461 State.Pipelines[pipeline] = new!PipelineObject(device: device)
7462 }
7463
7464 return ?
7465}
7466
7467@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007468cmd void vkDestroyPipeline(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007469 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007470 VkPipeline pipeline,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007471 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007472 deviceObject := GetDevice(device)
7473 pipelineObjects := GetPipeline(pipeline)
7474 assert(pipelineObjects.device == device)
7475
7476 State.Pipelines[pipeline] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07007477}
7478
7479
7480// Pipeline layout functions
7481
7482@threadSafety("system")
7483cmd VkResult vkCreatePipelineLayout(
7484 VkDevice device,
7485 const VkPipelineLayoutCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007486 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007487 VkPipelineLayout* pPipelineLayout) {
7488 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO)
7489 deviceObject := GetDevice(device)
7490
7491 pipelineLayout := ?
7492 pPipelineLayout[0] = pipelineLayout
7493 State.PipelineLayouts[pipelineLayout] = new!PipelineLayoutObject(device: device)
7494
7495 return ?
7496}
7497
7498@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007499cmd void vkDestroyPipelineLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007500 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007501 VkPipelineLayout pipelineLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007502 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007503 deviceObject := GetDevice(device)
7504 pipelineLayoutObjects := GetPipelineLayout(pipelineLayout)
7505 assert(pipelineLayoutObjects.device == device)
7506
7507 State.PipelineLayouts[pipelineLayout] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07007508}
7509
7510
7511// Sampler functions
7512
7513@threadSafety("system")
7514cmd VkResult vkCreateSampler(
7515 VkDevice device,
7516 const VkSamplerCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007517 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007518 VkSampler* pSampler) {
7519 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO)
7520 deviceObject := GetDevice(device)
7521
7522 sampler := ?
7523 pSampler[0] = sampler
7524 State.Samplers[sampler] = new!SamplerObject(device: device)
7525
7526 return ?
7527}
7528
7529@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007530cmd void vkDestroySampler(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007531 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007532 VkSampler sampler,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007533 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007534 deviceObject := GetDevice(device)
7535 samplerObject := GetSampler(sampler)
7536 assert(samplerObject.device == device)
7537
7538 State.Samplers[sampler] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07007539}
7540
7541
7542// Descriptor set functions
7543
7544@threadSafety("system")
7545cmd VkResult vkCreateDescriptorSetLayout(
7546 VkDevice device,
7547 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007548 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007549 VkDescriptorSetLayout* pSetLayout) {
7550 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO)
7551 deviceObject := GetDevice(device)
7552
7553 setLayout := ?
7554 pSetLayout[0] = setLayout
7555 State.DescriptorSetLayouts[setLayout] = new!DescriptorSetLayoutObject(device: device)
7556
7557 return ?
7558}
7559
7560@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007561cmd void vkDestroyDescriptorSetLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007562 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007563 VkDescriptorSetLayout descriptorSetLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007564 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007565 deviceObject := GetDevice(device)
7566 descriptorSetLayoutObject := GetDescriptorSetLayout(descriptorSetLayout)
7567 assert(descriptorSetLayoutObject.device == device)
7568
7569 State.DescriptorSetLayouts[descriptorSetLayout] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07007570}
7571
7572@threadSafety("system")
7573cmd VkResult vkCreateDescriptorPool(
7574 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007575 const VkDescriptorPoolCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007576 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007577 VkDescriptorPool* pDescriptorPool) {
7578 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO)
7579 deviceObject := GetDevice(device)
7580
7581 descriptorPool := ?
7582 pDescriptorPool[0] = descriptorPool
7583 State.DescriptorPools[descriptorPool] = new!DescriptorPoolObject(device: device)
7584
7585 return ?
7586}
7587
7588@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007589cmd void vkDestroyDescriptorPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007590 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007591 VkDescriptorPool descriptorPool,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007592 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007593 deviceObject := GetDevice(device)
7594 descriptorPoolObject := GetDescriptorPool(descriptorPool)
7595 assert(descriptorPoolObject.device == device)
7596
7597 State.DescriptorPools[descriptorPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07007598}
7599
7600@threadSafety("app")
7601cmd VkResult vkResetDescriptorPool(
7602 VkDevice device,
Jesse Hallfbf97b02015-11-20 14:17:03 -08007603 VkDescriptorPool descriptorPool,
7604 VkDescriptorPoolResetFlags flags) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007605 deviceObject := GetDevice(device)
7606 descriptorPoolObject := GetDescriptorPool(descriptorPool)
7607 assert(descriptorPoolObject.device == device)
7608
7609 return ?
7610}
7611
7612@threadSafety("app")
Jesse Hall3fbc8562015-11-29 22:10:52 -08007613cmd VkResult vkAllocateDescriptorSets(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007614 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007615 const VkDescriptorSetAllocateInfo* pAllocateInfo,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007616 VkDescriptorSet* pDescriptorSets) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007617 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007618 allocInfo := pAllocateInfo[0]
Jesse Hallfbf97b02015-11-20 14:17:03 -08007619 descriptorPoolObject := GetDescriptorPool(allocInfo.descriptorPool)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007620
Jesse Hall03b6fe12015-11-24 12:44:21 -08007621 setLayouts := allocInfo.pSetLayouts[0:allocInfo.setCount]
7622 for i in (0 .. allocInfo.setCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007623 setLayout := setLayouts[i]
7624 setLayoutObject := GetDescriptorSetLayout(setLayout)
7625 assert(setLayoutObject.device == device)
7626 }
7627
Jesse Hall03b6fe12015-11-24 12:44:21 -08007628 descriptorSets := pDescriptorSets[0:allocInfo.setCount]
7629 for i in (0 .. allocInfo.setCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007630 descriptorSet := ?
7631 descriptorSets[i] = descriptorSet
7632 State.DescriptorSets[descriptorSet] = new!DescriptorSetObject(device: device)
7633 }
7634
7635 return ?
7636}
7637
Jesse Hallf09c6b12015-08-15 19:54:28 -07007638cmd VkResult vkFreeDescriptorSets(
7639 VkDevice device,
7640 VkDescriptorPool descriptorPool,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007641 u32 descriptorSetCount,
Jesse Hallf09c6b12015-08-15 19:54:28 -07007642 const VkDescriptorSet* pDescriptorSets) {
7643 deviceObject := GetDevice(device)
7644 descriptorPoolObject := GetDescriptorPool(descriptorPool)
7645
Jesse Hall03b6fe12015-11-24 12:44:21 -08007646 descriptorSets := pDescriptorSets[0:descriptorSetCount]
7647 for i in (0 .. descriptorSetCount) {
Jesse Hallf09c6b12015-08-15 19:54:28 -07007648 descriptorSet := descriptorSets[i]
7649 descriptorSetObject := GetDescriptorSet(descriptorSet)
7650 assert(descriptorSetObject.device == device)
7651 State.DescriptorSets[descriptorSet] = null
7652 }
7653
7654 return ?
7655}
7656
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007657cmd void vkUpdateDescriptorSets(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007658 VkDevice device,
Jesse Hallb00daad2015-11-29 19:46:20 -08007659 u32 descriptorWriteCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007660 const VkWriteDescriptorSet* pDescriptorWrites,
Jesse Hallb00daad2015-11-29 19:46:20 -08007661 u32 descriptorCopyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007662 const VkCopyDescriptorSet* pDescriptorCopies) {
7663 deviceObject := GetDevice(device)
7664
Jesse Hallb00daad2015-11-29 19:46:20 -08007665 descriptorWrites := pDescriptorWrites[0:descriptorWriteCount]
7666 for i in (0 .. descriptorWriteCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007667 descriptorWrite := descriptorWrites[i]
Jesse Hall3fbc8562015-11-29 22:10:52 -08007668 descriptorWriteObject := GetDescriptorSet(descriptorWrite.dstSet)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007669 assert(descriptorWriteObject.device == device)
7670 }
7671
Jesse Hallb00daad2015-11-29 19:46:20 -08007672 descriptorCopies := pDescriptorCopies[0:descriptorCopyCount]
7673 for i in (0 .. descriptorCopyCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007674 descriptorCopy := descriptorCopies[i]
Jesse Hall3fbc8562015-11-29 22:10:52 -08007675 descriptorCopyObject := GetDescriptorSet(descriptorCopy.dstSet)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007676 assert(descriptorCopyObject.device == device)
7677 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07007678}
7679
7680
7681// Framebuffer functions
7682
7683@threadSafety("system")
7684cmd VkResult vkCreateFramebuffer(
7685 VkDevice device,
7686 const VkFramebufferCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007687 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007688 VkFramebuffer* pFramebuffer) {
7689 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO)
7690 deviceObject := GetDevice(device)
7691
7692 framebuffer := ?
7693 pFramebuffer[0] = framebuffer
7694 State.Framebuffers[framebuffer] = new!FramebufferObject(device: device)
7695
7696 return ?
7697}
7698
7699@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007700cmd void vkDestroyFramebuffer(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007701 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007702 VkFramebuffer framebuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007703 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007704 deviceObject := GetDevice(device)
7705 framebufferObject := GetFramebuffer(framebuffer)
7706 assert(framebufferObject.device == device)
7707
7708 State.Framebuffers[framebuffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07007709}
7710
7711
7712// Renderpass functions
7713
7714@threadSafety("system")
7715cmd VkResult vkCreateRenderPass(
7716 VkDevice device,
7717 const VkRenderPassCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007718 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007719 VkRenderPass* pRenderPass) {
7720 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO)
7721 deviceObject := GetDevice(device)
7722
7723 renderpass := ?
7724 pRenderPass[0] = renderpass
7725 State.RenderPasses[renderpass] = new!RenderPassObject(device: device)
7726
7727 return ?
7728}
7729
7730@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007731cmd void vkDestroyRenderPass(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007732 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007733 VkRenderPass renderPass,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007734 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007735 deviceObject := GetDevice(device)
7736 renderPassObject := GetRenderPass(renderPass)
7737 assert(renderPassObject.device == device)
7738
7739 State.RenderPasses[renderPass] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07007740}
7741
Jesse Hall606a54e2015-11-19 22:17:28 -08007742cmd void vkGetRenderAreaGranularity(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007743 VkDevice device,
7744 VkRenderPass renderPass,
7745 VkExtent2D* pGranularity) {
7746 deviceObject := GetDevice(device)
7747 renderPassObject := GetRenderPass(renderPass)
7748
7749 granularity := ?
7750 pGranularity[0] = granularity
Jesse Halld27f6aa2015-08-15 17:58:48 -07007751}
7752
7753// Command pool functions
7754
7755cmd VkResult vkCreateCommandPool(
7756 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007757 const VkCommandPoolCreateInfo* pCreateInfo,
7758 const VkAllocationCallbacks* pAllocator,
7759 VkCommandPool* pCommandPool) {
7760 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007761 deviceObject := GetDevice(device)
7762
Jesse Hall3fbc8562015-11-29 22:10:52 -08007763 commandPool := ?
7764 pCommandPool[0] = commandPool
7765 State.CommandPools[commandPool] = new!CommandPoolObject(device: device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007766
7767 return ?
7768}
7769
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007770cmd void vkDestroyCommandPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007771 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007772 VkCommandPool commandPool,
7773 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007774 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007775 commandPoolObject := GetCommandPool(commandPool)
7776 assert(commandPoolObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007777
Jesse Hall3fbc8562015-11-29 22:10:52 -08007778 State.CommandPools[commandPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07007779}
7780
7781cmd VkResult vkResetCommandPool(
7782 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007783 VkCommandPool commandPool,
7784 VkCommandPoolResetFlags flags) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007785 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007786 commandPoolObject := GetCommandPool(commandPool)
7787 assert(commandPoolObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007788
7789 return ?
7790}
7791
7792// Command buffer functions
7793
Jesse Hall3fbc8562015-11-29 22:10:52 -08007794macro void bindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) {
7795 memoryObject := GetDeviceMemory(memory)
7796 memoryObject.boundCommandBuffers[commandBuffer] = commandBuffer
Jesse Halld27f6aa2015-08-15 17:58:48 -07007797
Jesse Hall3fbc8562015-11-29 22:10:52 -08007798 commandBufferObject := GetCommandBuffer(commandBuffer)
7799 commandBufferObject.boundObjects[as!u64(obj)] = memory
Jesse Halld27f6aa2015-08-15 17:58:48 -07007800}
7801
Jesse Hall3fbc8562015-11-29 22:10:52 -08007802macro void unbindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) {
7803 memoryObject := GetDeviceMemory(memory)
7804 memoryObject.boundCommandBuffers[commandBuffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07007805
Jesse Hall3fbc8562015-11-29 22:10:52 -08007806 commandBufferObject := GetCommandBuffer(commandBuffer)
7807 commandBufferObject.boundObjects[as!u64(obj)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07007808}
7809
7810@threadSafety("system")
Jesse Hall3fbc8562015-11-29 22:10:52 -08007811cmd VkResult vkAllocateCommandBuffers(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007812 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007813 const VkCommandBufferAllocateInfo* pAllocateInfo,
7814 VkCommandBuffer* pCommandBuffers) {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08007815 assert(pAllocateInfo[0].sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007816
Jesse Hall3dd678a2016-01-08 21:52:01 -08007817 count := pAllocateInfo[0].commandBufferCount
Jesse Hall3fbc8562015-11-29 22:10:52 -08007818 commandBuffers := pCommandBuffers[0:count]
Jesse Hallfbf97b02015-11-20 14:17:03 -08007819 for i in (0 .. count) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007820 commandBuffer := ?
7821 commandBuffers[i] = commandBuffer
7822 State.CommandBuffers[commandBuffer] = new!CommandBufferObject(device: device)
Jesse Hallfbf97b02015-11-20 14:17:03 -08007823 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07007824
7825 return ?
7826}
7827
7828@threadSafety("system")
Jesse Hallfbf97b02015-11-20 14:17:03 -08007829cmd void vkFreeCommandBuffers(
Jesse Halld27f6aa2015-08-15 17:58:48 -07007830 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007831 VkCommandPool commandPool,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007832 u32 commandBufferCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007833 const VkCommandBuffer* pCommandBuffers) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007834 deviceObject := GetDevice(device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007835
Jesse Hall3fbc8562015-11-29 22:10:52 -08007836 commandBuffers := pCommandBuffers[0:commandBufferCount]
Jesse Hall03b6fe12015-11-24 12:44:21 -08007837 for i in (0 .. commandBufferCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007838 commandBufferObject := GetCommandBuffer(commandBuffers[i])
7839 assert(commandBufferObject.device == device)
Jesse Hallfbf97b02015-11-20 14:17:03 -08007840 // TODO: iterate over boundObjects and clear memory bindings
Jesse Hall3fbc8562015-11-29 22:10:52 -08007841 State.CommandBuffers[commandBuffers[i]] = null
Jesse Hallfbf97b02015-11-20 14:17:03 -08007842 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07007843}
7844
7845@threadSafety("app")
7846cmd VkResult vkBeginCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007847 VkCommandBuffer commandBuffer,
7848 const VkCommandBufferBeginInfo* pBeginInfo) {
7849 assert(pBeginInfo.sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO)
7850 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007851
7852 // TODO: iterate over boundObjects and clear memory bindings
7853
7854 return ?
7855}
7856
7857@threadSafety("app")
7858cmd VkResult vkEndCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007859 VkCommandBuffer commandBuffer) {
7860 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007861
7862 return ?
7863}
7864
7865@threadSafety("app")
7866cmd VkResult vkResetCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007867 VkCommandBuffer commandBuffer,
7868 VkCommandBufferResetFlags flags) {
7869 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007870
7871 // TODO: iterate over boundObjects and clear memory bindings
7872
7873 return ?
7874}
7875
7876
7877// Command buffer building functions
7878
7879@threadSafety("app")
7880cmd void vkCmdBindPipeline(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007881 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007882 VkPipelineBindPoint pipelineBindPoint,
7883 VkPipeline pipeline) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007884 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007885 pipelineObject := GetPipeline(pipeline)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007886 assert(commandBufferObject.device == pipelineObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007887
Jesse Halld8bade02015-11-24 10:24:18 -08007888 queue := switch (pipelineBindPoint) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007889 case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT
7890 case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT
7891 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08007892 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007893}
7894
7895@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007896cmd void vkCmdSetViewport(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007897 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007898 u32 firstViewport,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007899 u32 viewportCount,
7900 const VkViewport* pViewports) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007901 commandBufferObject := GetCommandBuffer(commandBuffer)
7902 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007903}
7904
7905@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007906cmd void vkCmdSetScissor(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007907 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007908 u32 firstScissor,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007909 u32 scissorCount,
7910 const VkRect2D* pScissors) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007911 commandBufferObject := GetCommandBuffer(commandBuffer)
7912 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007913}
7914
7915@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007916cmd void vkCmdSetLineWidth(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007917 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007918 f32 lineWidth) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007919 commandBufferObject := GetCommandBuffer(commandBuffer)
7920 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007921}
7922
7923@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007924cmd void vkCmdSetDepthBias(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007925 VkCommandBuffer commandBuffer,
Jesse Halla9bb62b2015-11-21 19:31:56 -08007926 f32 depthBiasConstantFactor,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007927 f32 depthBiasClamp,
Jesse Halla9bb62b2015-11-21 19:31:56 -08007928 f32 depthBiasSlopeFactor) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007929 commandBufferObject := GetCommandBuffer(commandBuffer)
7930 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007931}
Jesse Halld27f6aa2015-08-15 17:58:48 -07007932
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007933@threadSafety("app")
7934cmd void vkCmdSetBlendConstants(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007935 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007936 // TODO(jessehall): apic only supports 'const' on pointer types. Using
7937 // an annotation as a quick hack to pass this to the template without
7938 // having to modify the AST and semantic model.
Jesse Hallb00daad2015-11-29 19:46:20 -08007939 @readonly f32[4] blendConstants) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007940 commandBufferObject := GetCommandBuffer(commandBuffer)
7941 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007942}
7943
7944@threadSafety("app")
7945cmd void vkCmdSetDepthBounds(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007946 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007947 f32 minDepthBounds,
7948 f32 maxDepthBounds) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007949 commandBufferObject := GetCommandBuffer(commandBuffer)
7950 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007951}
7952
7953@threadSafety("app")
7954cmd void vkCmdSetStencilCompareMask(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007955 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007956 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08007957 u32 compareMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007958 commandBufferObject := GetCommandBuffer(commandBuffer)
7959 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007960}
7961
7962@threadSafety("app")
7963cmd void vkCmdSetStencilWriteMask(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007964 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007965 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08007966 u32 writeMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007967 commandBufferObject := GetCommandBuffer(commandBuffer)
7968 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007969}
7970
7971@threadSafety("app")
7972cmd void vkCmdSetStencilReference(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007973 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007974 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08007975 u32 reference) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007976 commandBufferObject := GetCommandBuffer(commandBuffer)
7977 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007978}
7979
7980@threadSafety("app")
7981cmd void vkCmdBindDescriptorSets(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007982 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007983 VkPipelineBindPoint pipelineBindPoint,
7984 VkPipelineLayout layout,
7985 u32 firstSet,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007986 u32 descriptorSetCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007987 const VkDescriptorSet* pDescriptorSets,
7988 u32 dynamicOffsetCount,
7989 const u32* pDynamicOffsets) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007990 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007991
Jesse Hall03b6fe12015-11-24 12:44:21 -08007992 descriptorSets := pDescriptorSets[0:descriptorSetCount]
7993 for i in (0 .. descriptorSetCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07007994 descriptorSet := descriptorSets[i]
7995 descriptorSetObject := GetDescriptorSet(descriptorSet)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007996 assert(commandBufferObject.device == descriptorSetObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007997 }
7998
7999 dynamicOffsets := pDynamicOffsets[0:dynamicOffsetCount]
8000 for i in (0 .. dynamicOffsetCount) {
8001 dynamicOffset := dynamicOffsets[i]
8002 }
8003
Jesse Halld8bade02015-11-24 10:24:18 -08008004 queue := switch (pipelineBindPoint) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07008005 case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT
8006 case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT
8007 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08008008 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008009}
8010
8011@threadSafety("app")
8012cmd void vkCmdBindIndexBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008013 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008014 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07008015 VkDeviceSize offset,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008016 VkIndexType indexType) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008017 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008018 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008019 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008020
Jesse Hall3fbc8562015-11-29 22:10:52 -08008021 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008022
Jesse Hall3fbc8562015-11-29 22:10:52 -08008023 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008024}
8025
8026@threadSafety("app")
8027cmd void vkCmdBindVertexBuffers(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008028 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08008029 u32 firstBinding,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008030 u32 bindingCount,
8031 const VkBuffer* pBuffers,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07008032 const VkDeviceSize* pOffsets) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008033 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008034
Jesse Hallf9fa9a52016-01-08 16:08:51 -08008035 // TODO: check if not [firstBinding:firstBinding+bindingCount]
Jesse Halld27f6aa2015-08-15 17:58:48 -07008036 buffers := pBuffers[0:bindingCount]
8037 offsets := pOffsets[0:bindingCount]
8038 for i in (0 .. bindingCount) {
8039 buffer := buffers[i]
8040 offset := offsets[i]
8041 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008042 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008043
Jesse Hall3fbc8562015-11-29 22:10:52 -08008044 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008045 }
8046
Jesse Hall3fbc8562015-11-29 22:10:52 -08008047 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008048}
8049
8050@threadSafety("app")
8051cmd void vkCmdDraw(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008052 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008053 u32 vertexCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07008054 u32 instanceCount,
8055 u32 firstVertex,
8056 u32 firstInstance) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008057 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008058
Jesse Hall3fbc8562015-11-29 22:10:52 -08008059 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008060}
8061
8062@threadSafety("app")
8063cmd void vkCmdDrawIndexed(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008064 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008065 u32 indexCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07008066 u32 instanceCount,
8067 u32 firstIndex,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008068 s32 vertexOffset,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07008069 u32 firstInstance) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008070 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008071
Jesse Hall3fbc8562015-11-29 22:10:52 -08008072 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008073}
8074
8075@threadSafety("app")
8076cmd void vkCmdDrawIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008077 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008078 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07008079 VkDeviceSize offset,
Jesse Hall03b6fe12015-11-24 12:44:21 -08008080 u32 drawCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008081 u32 stride) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008082 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008083 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008084 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008085
Jesse Hall3fbc8562015-11-29 22:10:52 -08008086 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008087
Jesse Hall3fbc8562015-11-29 22:10:52 -08008088 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008089}
8090
8091@threadSafety("app")
8092cmd void vkCmdDrawIndexedIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008093 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008094 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07008095 VkDeviceSize offset,
Jesse Hall03b6fe12015-11-24 12:44:21 -08008096 u32 drawCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008097 u32 stride) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008098 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008099 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008100 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008101
Jesse Hall3fbc8562015-11-29 22:10:52 -08008102 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008103
Jesse Hall3fbc8562015-11-29 22:10:52 -08008104 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008105}
8106
8107@threadSafety("app")
8108cmd void vkCmdDispatch(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008109 VkCommandBuffer commandBuffer,
Jesse Hallad250842017-03-10 18:35:38 -08008110 u32 groupCountX,
8111 u32 groupCountY,
8112 u32 groupCountZ) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008113 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008114
Jesse Hall3fbc8562015-11-29 22:10:52 -08008115 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008116}
8117
8118@threadSafety("app")
8119cmd void vkCmdDispatchIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008120 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008121 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07008122 VkDeviceSize offset) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008123 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008124 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008125 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008126
Jesse Hall3fbc8562015-11-29 22:10:52 -08008127 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008128
Jesse Hall3fbc8562015-11-29 22:10:52 -08008129 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008130}
8131
8132@threadSafety("app")
8133cmd void vkCmdCopyBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008134 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008135 VkBuffer srcBuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08008136 VkBuffer dstBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008137 u32 regionCount,
8138 const VkBufferCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008139 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008140 srcBufferObject := GetBuffer(srcBuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008141 dstBufferObject := GetBuffer(dstBuffer)
8142 assert(commandBufferObject.device == srcBufferObject.device)
8143 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008144
8145 regions := pRegions[0:regionCount]
8146 for i in (0 .. regionCount) {
8147 region := regions[i]
8148 }
8149
Jesse Hall3fbc8562015-11-29 22:10:52 -08008150 bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory)
8151 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008152
Jesse Hall65ab5522015-11-30 00:07:16 -08008153 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008154}
8155
8156@threadSafety("app")
8157cmd void vkCmdCopyImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008158 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008159 VkImage srcImage,
8160 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08008161 VkImage dstImage,
8162 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008163 u32 regionCount,
8164 const VkImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008165 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008166 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008167 dstImageObject := GetImage(dstImage)
8168 assert(commandBufferObject.device == srcImageObject.device)
8169 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008170
8171 regions := pRegions[0:regionCount]
8172 for i in (0 .. regionCount) {
8173 region := regions[i]
8174 }
8175
Jesse Hall3fbc8562015-11-29 22:10:52 -08008176 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
8177 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008178
Jesse Hall65ab5522015-11-30 00:07:16 -08008179 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008180}
8181
8182@threadSafety("app")
8183cmd void vkCmdBlitImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008184 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008185 VkImage srcImage,
8186 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08008187 VkImage dstImage,
8188 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008189 u32 regionCount,
8190 const VkImageBlit* pRegions,
Jesse Hall23ff73f2015-11-29 14:36:39 -08008191 VkFilter filter) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008192 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008193 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008194 dstImageObject := GetImage(dstImage)
8195 assert(commandBufferObject.device == srcImageObject.device)
8196 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008197
8198 regions := pRegions[0:regionCount]
8199 for i in (0 .. regionCount) {
8200 region := regions[i]
8201 }
8202
Jesse Hall3fbc8562015-11-29 22:10:52 -08008203 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
8204 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008205
Jesse Hall3fbc8562015-11-29 22:10:52 -08008206 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008207}
8208
8209@threadSafety("app")
8210cmd void vkCmdCopyBufferToImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008211 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008212 VkBuffer srcBuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08008213 VkImage dstImage,
8214 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008215 u32 regionCount,
8216 const VkBufferImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008217 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008218 srcBufferObject := GetBuffer(srcBuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008219 dstImageObject := GetImage(dstImage)
8220 assert(commandBufferObject.device == srcBufferObject.device)
8221 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008222
8223 regions := pRegions[0:regionCount]
8224 for i in (0 .. regionCount) {
8225 region := regions[i]
8226 }
8227
Jesse Hall3fbc8562015-11-29 22:10:52 -08008228 bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory)
8229 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008230
Jesse Hall65ab5522015-11-30 00:07:16 -08008231 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008232}
8233
8234@threadSafety("app")
8235cmd void vkCmdCopyImageToBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008236 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008237 VkImage srcImage,
8238 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08008239 VkBuffer dstBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008240 u32 regionCount,
8241 const VkBufferImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008242 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008243 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008244 dstBufferObject := GetBuffer(dstBuffer)
8245 assert(commandBufferObject.device == srcImageObject.device)
8246 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008247
8248 regions := pRegions[0:regionCount]
8249 for i in (0 .. regionCount) {
8250 region := regions[i]
8251 }
8252
Jesse Hall3fbc8562015-11-29 22:10:52 -08008253 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
8254 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008255
Jesse Hall65ab5522015-11-30 00:07:16 -08008256 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008257}
8258
8259@threadSafety("app")
8260cmd void vkCmdUpdateBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008261 VkCommandBuffer commandBuffer,
8262 VkBuffer dstBuffer,
8263 VkDeviceSize dstOffset,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07008264 VkDeviceSize dataSize,
Jesse Hall56d386a2016-07-26 15:20:40 -07008265 const void* pData) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008266 commandBufferObject := GetCommandBuffer(commandBuffer)
8267 dstBufferObject := GetBuffer(dstBuffer)
8268 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008269
8270 data := pData[0:dataSize]
8271
Jesse Hall3fbc8562015-11-29 22:10:52 -08008272 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008273
Jesse Hall65ab5522015-11-30 00:07:16 -08008274 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008275}
8276
8277@threadSafety("app")
8278cmd void vkCmdFillBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008279 VkCommandBuffer commandBuffer,
8280 VkBuffer dstBuffer,
8281 VkDeviceSize dstOffset,
Jesse Hallb00daad2015-11-29 19:46:20 -08008282 VkDeviceSize size,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008283 u32 data) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008284 commandBufferObject := GetCommandBuffer(commandBuffer)
8285 dstBufferObject := GetBuffer(dstBuffer)
8286 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008287
Jesse Hall65ab5522015-11-30 00:07:16 -08008288 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008289}
8290
8291@threadSafety("app")
8292cmd void vkCmdClearColorImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008293 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008294 VkImage image,
8295 VkImageLayout imageLayout,
8296 const VkClearColorValue* pColor,
8297 u32 rangeCount,
8298 const VkImageSubresourceRange* pRanges) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008299 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008300 imageObject := GetImage(image)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008301 assert(commandBufferObject.device == imageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008302
8303 ranges := pRanges[0:rangeCount]
8304 for i in (0 .. rangeCount) {
8305 range := ranges[i]
8306 }
8307
Jesse Hall3fbc8562015-11-29 22:10:52 -08008308 bindCommandBuffer(commandBuffer, image, imageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008309
Jesse Hall3fbc8562015-11-29 22:10:52 -08008310 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008311}
8312
8313@threadSafety("app")
8314cmd void vkCmdClearDepthStencilImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008315 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008316 VkImage image,
8317 VkImageLayout imageLayout,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07008318 const VkClearDepthStencilValue* pDepthStencil,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008319 u32 rangeCount,
8320 const VkImageSubresourceRange* pRanges) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008321 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008322 imageObject := GetImage(image)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008323 assert(commandBufferObject.device == imageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008324
8325 ranges := pRanges[0:rangeCount]
8326 for i in (0 .. rangeCount) {
8327 range := ranges[i]
8328 }
8329
Jesse Hall3fbc8562015-11-29 22:10:52 -08008330 bindCommandBuffer(commandBuffer, image, imageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008331
Jesse Hall3fbc8562015-11-29 22:10:52 -08008332 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008333}
8334
8335@threadSafety("app")
Jesse Hallae38f732015-11-19 21:32:50 -08008336cmd void vkCmdClearAttachments(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008337 VkCommandBuffer commandBuffer,
Jesse Hallae38f732015-11-19 21:32:50 -08008338 u32 attachmentCount,
8339 const VkClearAttachment* pAttachments,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008340 u32 rectCount,
Jesse Halla15a4bf2015-11-19 22:48:02 -08008341 const VkClearRect* pRects) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008342 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008343
8344 rects := pRects[0:rectCount]
8345 for i in (0 .. rectCount) {
8346 rect := rects[i]
8347 }
8348
Jesse Hall3fbc8562015-11-29 22:10:52 -08008349 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008350}
8351
8352@threadSafety("app")
8353cmd void vkCmdResolveImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008354 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008355 VkImage srcImage,
8356 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08008357 VkImage dstImage,
8358 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008359 u32 regionCount,
8360 const VkImageResolve* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008361 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008362 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008363 dstImageObject := GetImage(dstImage)
8364 assert(commandBufferObject.device == srcImageObject.device)
8365 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008366
8367 regions := pRegions[0:regionCount]
8368 for i in (0 .. regionCount) {
8369 region := regions[i]
8370 }
8371
Jesse Hall3fbc8562015-11-29 22:10:52 -08008372 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
8373 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008374
Jesse Hall3fbc8562015-11-29 22:10:52 -08008375 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008376}
8377
8378@threadSafety("app")
8379cmd void vkCmdSetEvent(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008380 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008381 VkEvent event,
8382 VkPipelineStageFlags stageMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008383 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008384 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008385 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008386}
8387
8388@threadSafety("app")
8389cmd void vkCmdResetEvent(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008390 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008391 VkEvent event,
8392 VkPipelineStageFlags stageMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008393 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008394 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008395 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008396}
8397
8398@threadSafety("app")
8399cmd void vkCmdWaitEvents(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008400 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008401 u32 eventCount,
8402 const VkEvent* pEvents,
8403 VkPipelineStageFlags srcStageMask,
Jesse Hall3fbc8562015-11-29 22:10:52 -08008404 VkPipelineStageFlags dstStageMask,
8405 u32 memoryBarrierCount,
Jesse Hall3dd678a2016-01-08 21:52:01 -08008406 const VkMemoryBarrier* pMemoryBarriers,
8407 u32 bufferMemoryBarrierCount,
8408 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
8409 u32 imageMemoryBarrierCount,
8410 const VkImageMemoryBarrier* pImageMemoryBarriers) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008411 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008412
8413 events := pEvents[0:eventCount]
8414 for i in (0 .. eventCount) {
8415 event := events[i]
8416 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008417 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008418 }
8419
Jesse Hall3dd678a2016-01-08 21:52:01 -08008420 memoryBarriers := pMemoryBarriers[0:memoryBarrierCount]
Jesse Hall3fbc8562015-11-29 22:10:52 -08008421 for i in (0 .. memoryBarrierCount) {
Jesse Hall3dd678a2016-01-08 21:52:01 -08008422 memoryBarrier := memoryBarriers[i]
8423 }
8424 bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount]
8425 for i in (0 .. bufferMemoryBarrierCount) {
8426 bufferMemoryBarrier := bufferMemoryBarriers[i]
8427 bufferObject := GetBuffer(bufferMemoryBarrier.buffer)
8428 assert(bufferObject.device == commandBufferObject.device)
8429 }
8430 imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount]
8431 for i in (0 .. imageMemoryBarrierCount) {
8432 imageMemoryBarrier := imageMemoryBarriers[i]
8433 imageObject := GetImage(imageMemoryBarrier.image)
8434 assert(imageObject.device == commandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008435 }
8436}
8437
8438@threadSafety("app")
8439cmd void vkCmdPipelineBarrier(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008440 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008441 VkPipelineStageFlags srcStageMask,
Jesse Hall3fbc8562015-11-29 22:10:52 -08008442 VkPipelineStageFlags dstStageMask,
Jesse Halldc6d36c2015-11-29 19:12:15 -08008443 VkDependencyFlags dependencyFlags,
Jesse Hall3fbc8562015-11-29 22:10:52 -08008444 u32 memoryBarrierCount,
Jesse Hall3dd678a2016-01-08 21:52:01 -08008445 const VkMemoryBarrier* pMemoryBarriers,
8446 u32 bufferMemoryBarrierCount,
8447 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
8448 u32 imageMemoryBarrierCount,
8449 const VkImageMemoryBarrier* pImageMemoryBarriers) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008450 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008451
Jesse Hall3dd678a2016-01-08 21:52:01 -08008452 memoryBarriers := pMemoryBarriers[0:memoryBarrierCount]
Jesse Hall3fbc8562015-11-29 22:10:52 -08008453 for i in (0 .. memoryBarrierCount) {
Jesse Hall3dd678a2016-01-08 21:52:01 -08008454 memoryBarrier := memoryBarriers[i]
8455 }
8456 bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount]
8457 for i in (0 .. bufferMemoryBarrierCount) {
8458 bufferMemoryBarrier := bufferMemoryBarriers[i]
8459 bufferObject := GetBuffer(bufferMemoryBarrier.buffer)
8460 assert(bufferObject.device == commandBufferObject.device)
8461 }
8462 imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount]
8463 for i in (0 .. imageMemoryBarrierCount) {
8464 imageMemoryBarrier := imageMemoryBarriers[i]
8465 imageObject := GetImage(imageMemoryBarrier.image)
8466 assert(imageObject.device == commandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008467 }
8468}
8469
8470@threadSafety("app")
8471cmd void vkCmdBeginQuery(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008472 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008473 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08008474 u32 query,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008475 VkQueryControlFlags flags) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008476 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008477 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008478 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008479}
8480
8481@threadSafety("app")
8482cmd void vkCmdEndQuery(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008483 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008484 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08008485 u32 query) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008486 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008487 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008488 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008489}
8490
8491@threadSafety("app")
8492cmd void vkCmdResetQueryPool(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008493 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008494 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08008495 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008496 u32 queryCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008497 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008498 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008499 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008500}
8501
8502@threadSafety("app")
8503cmd void vkCmdWriteTimestamp(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008504 VkCommandBuffer commandBuffer,
Jesse Hall6f39a6d2015-11-24 11:08:36 -08008505 VkPipelineStageFlagBits pipelineStage,
Jesse Halla3a7a1d2015-11-24 11:37:23 -08008506 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08008507 u32 query) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008508 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halla3a7a1d2015-11-24 11:37:23 -08008509 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008510 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008511}
8512
8513@threadSafety("app")
8514cmd void vkCmdCopyQueryPoolResults(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008515 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008516 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08008517 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008518 u32 queryCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08008519 VkBuffer dstBuffer,
8520 VkDeviceSize dstOffset,
Jesse Halla9bb62b2015-11-21 19:31:56 -08008521 VkDeviceSize stride,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008522 VkQueryResultFlags flags) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008523 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008524 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008525 dstBufferObject := GetBuffer(dstBuffer)
8526 assert(commandBufferObject.device == queryPoolObject.device)
8527 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008528}
8529
8530cmd void vkCmdPushConstants(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008531 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008532 VkPipelineLayout layout,
8533 VkShaderStageFlags stageFlags,
Jesse Hall03b6fe12015-11-24 12:44:21 -08008534 u32 offset,
8535 u32 size,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08008536 const void* pValues) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008537 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008538 layoutObject := GetPipelineLayout(layout)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008539 assert(commandBufferObject.device == layoutObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008540}
8541
8542@threadSafety("app")
8543cmd void vkCmdBeginRenderPass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008544 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07008545 const VkRenderPassBeginInfo* pRenderPassBegin,
Jesse Hall65ab5522015-11-30 00:07:16 -08008546 VkSubpassContents contents) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008547 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008548 renderPassObject := GetRenderPass(pRenderPassBegin.renderPass)
8549 framebufferObject := GetFramebuffer(pRenderPassBegin.framebuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08008550 assert(commandBufferObject.device == renderPassObject.device)
8551 assert(commandBufferObject.device == framebufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008552
Jesse Hall3fbc8562015-11-29 22:10:52 -08008553 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008554}
8555
8556cmd void vkCmdNextSubpass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008557 VkCommandBuffer commandBuffer,
Jesse Hall65ab5522015-11-30 00:07:16 -08008558 VkSubpassContents contents) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008559 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008560}
8561
8562@threadSafety("app")
8563cmd void vkCmdEndRenderPass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008564 VkCommandBuffer commandBuffer) {
8565 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008566
Jesse Hall3fbc8562015-11-29 22:10:52 -08008567 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008568}
8569
8570cmd void vkCmdExecuteCommands(
Jesse Hall3fbc8562015-11-29 22:10:52 -08008571 VkCommandBuffer commandBuffer,
Jesse Hall3dd678a2016-01-08 21:52:01 -08008572 u32 commandBufferCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08008573 const VkCommandBuffer* pCommandBuffers) {
8574 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008575
Jesse Hall3dd678a2016-01-08 21:52:01 -08008576 commandBuffers := pCommandBuffers[0:commandBufferCount]
8577 for i in (0 .. commandBufferCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008578 secondaryCommandBuffer := commandBuffers[i]
8579 secondaryCommandBufferObject := GetCommandBuffer(secondaryCommandBuffer)
8580 assert(commandBufferObject.device == secondaryCommandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07008581 }
8582}
8583
Ian Elliottcd8ad332017-10-13 09:21:12 -06008584//@vulkan1_1 functions
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008585
Ian Elliottcd8ad332017-10-13 09:21:12 -06008586@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008587cmd VkResult vkEnumerateInstanceVersion(
8588 u32* pApiVersion) {
8589 return ?
8590}
8591
Ian Elliottcd8ad332017-10-13 09:21:12 -06008592@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008593cmd VkResult vkBindBufferMemory2(
8594 VkDevice device,
8595 u32 bindInfoCount,
8596 const VkBindBufferMemoryInfo* pBindInfos) {
8597 return ?
8598}
8599
Ian Elliottcd8ad332017-10-13 09:21:12 -06008600@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008601cmd VkResult vkBindImageMemory2(
8602 VkDevice device,
8603 u32 bindInfoCount,
8604 const VkBindImageMemoryInfo* pBindInfos) {
8605 return ?
8606}
8607
Ian Elliottcd8ad332017-10-13 09:21:12 -06008608@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008609cmd void vkGetDeviceGroupPeerMemoryFeatures(
8610 VkDevice device,
8611 u32 heapIndex,
8612 u32 localDeviceIndex,
8613 u32 remoteDeviceIndex,
8614 VkPeerMemoryFeatureFlags* pPeerMemoryFeatures) {
8615}
8616
Ian Elliottcd8ad332017-10-13 09:21:12 -06008617@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008618cmd void vkCmdSetDeviceMask(
8619 VkCommandBuffer commandBuffer,
8620 u32 deviceMask) {
8621}
8622
Ian Elliottcd8ad332017-10-13 09:21:12 -06008623@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008624cmd void vkCmdDispatchBase(
8625 VkCommandBuffer commandBuffer,
8626 u32 baseGroupX,
8627 u32 baseGroupY,
8628 u32 baseGroupZ,
8629 u32 groupCountX,
8630 u32 groupCountY,
8631 u32 groupCountZ) {
8632}
8633
8634@threadSafety("system")
Ian Elliottcd8ad332017-10-13 09:21:12 -06008635@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008636cmd VkResult vkEnumeratePhysicalDeviceGroups(
8637 VkInstance instance,
8638 u32* pPhysicalDeviceGroupCount,
8639 VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties) {
8640 instanceObject := GetInstance(instance)
8641
8642 physicalDeviceGroupCount := as!u32(?)
8643 pPhysicalDeviceGroupCount[0] = physicalDeviceGroupCount
8644 physicalDevices := pPhysicalDeviceGroupProperties[0:physicalDeviceGroupCount]
8645
8646 for i in (0 .. physicalDeviceGroupCount) {
8647 physicalDevice := ?
8648 physicalDevices[i] = physicalDevice
8649 if !(physicalDevice in State.PhysicalDevices) {
8650 State.PhysicalDevices[physicalDevice] = new!PhysicalDeviceObject(instance: instance)
8651 }
8652 }
8653
8654 return ?
8655}
8656
Ian Elliottcd8ad332017-10-13 09:21:12 -06008657@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008658cmd void vkGetImageMemoryRequirements2(
8659 VkDevice device,
8660 const VkImageMemoryRequirementsInfo2* pInfo,
8661 VkMemoryRequirements2* pMemoryRequirements) {
8662}
8663
Ian Elliottcd8ad332017-10-13 09:21:12 -06008664@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008665cmd void vkGetBufferMemoryRequirements2(
8666 VkDevice device,
8667 const VkBufferMemoryRequirementsInfo2* pInfo,
8668 VkMemoryRequirements2* pMemoryRequirements) {
8669}
8670
Ian Elliottcd8ad332017-10-13 09:21:12 -06008671@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008672cmd void vkGetImageSparseMemoryRequirements2(
8673 VkDevice device,
8674 const VkImageSparseMemoryRequirementsInfo2* pInfo,
8675 u32* pSparseMemoryRequirementCount,
8676 VkSparseImageMemoryRequirements2* pSparseMemoryRequirements) {
8677}
8678
Ian Elliottcd8ad332017-10-13 09:21:12 -06008679@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008680cmd void vkGetPhysicalDeviceFeatures2(
8681 VkPhysicalDevice physicalDevice,
8682 VkPhysicalDeviceFeatures2* pFeatures) {
8683}
8684
Ian Elliottcd8ad332017-10-13 09:21:12 -06008685@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008686cmd void vkGetPhysicalDeviceProperties2(
8687 VkPhysicalDevice physicalDevice,
8688 VkPhysicalDeviceProperties2* pProperties) {
8689}
8690
Ian Elliottcd8ad332017-10-13 09:21:12 -06008691@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008692cmd void vkGetPhysicalDeviceFormatProperties2(
8693 VkPhysicalDevice physicalDevice,
8694 VkFormat format,
8695 VkFormatProperties2* pFormatProperties) {
8696}
8697
Ian Elliottcd8ad332017-10-13 09:21:12 -06008698@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008699cmd VkResult vkGetPhysicalDeviceImageFormatProperties2(
8700 VkPhysicalDevice physicalDevice,
8701 const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo,
8702 VkImageFormatProperties2* pImageFormatProperties) {
8703 return ?
8704}
8705
Ian Elliottcd8ad332017-10-13 09:21:12 -06008706@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008707cmd void vkGetPhysicalDeviceQueueFamilyProperties2(
8708 VkPhysicalDevice physicalDevice,
8709 u32* pQueueFamilyPropertyCount,
8710 VkQueueFamilyProperties2* pQueueFamilyProperties) {
8711}
8712
Ian Elliottcd8ad332017-10-13 09:21:12 -06008713@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008714cmd void vkGetPhysicalDeviceMemoryProperties2(
8715 VkPhysicalDevice physicalDevice,
8716 VkPhysicalDeviceMemoryProperties2* pMemoryProperties) {
8717}
8718
Ian Elliottcd8ad332017-10-13 09:21:12 -06008719@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008720cmd void vkGetPhysicalDeviceSparseImageFormatProperties2(
8721 VkPhysicalDevice physicalDevice,
8722 const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo,
8723 u32* pPropertyCount,
8724 VkSparseImageFormatProperties2* pProperties) {
8725}
8726
Ian Elliottcd8ad332017-10-13 09:21:12 -06008727@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008728cmd void vkTrimCommandPool(
8729 VkDevice device,
8730 VkCommandPool commandPool,
8731 VkCommandPoolTrimFlags flags) {
8732}
8733
8734
Ian Elliottcd8ad332017-10-13 09:21:12 -06008735@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008736cmd void vkGetDeviceQueue2(
8737 VkDevice device,
8738 const VkDeviceQueueInfo2* pQueueInfo,
8739 VkQueue* pQueue) {
8740 deviceObject := GetDevice(device)
8741
8742 queue := ?
8743 pQueue[0] = queue
8744
8745 if !(queue in State.Queues) {
8746 State.Queues[queue] = new!QueueObject(device: device)
8747 }
8748}
8749
Ian Elliottcd8ad332017-10-13 09:21:12 -06008750@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008751cmd VkResult vkCreateSamplerYcbcrConversion(
8752 VkDevice device,
8753 const VkSamplerYcbcrConversionCreateInfo* pCreateInfo,
8754 const VkAllocationCallbacks* pAllocator,
8755 VkSamplerYcbcrConversion* pYcbcrConversion) {
8756 return ?
8757}
8758
Ian Elliottcd8ad332017-10-13 09:21:12 -06008759@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008760cmd void vkDestroySamplerYcbcrConversion(
8761 VkDevice device,
8762 VkSamplerYcbcrConversion ycbcrConversion,
8763 const VkAllocationCallbacks* pAllocator) {
8764}
8765
Ian Elliottcd8ad332017-10-13 09:21:12 -06008766@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008767cmd VkResult vkCreateDescriptorUpdateTemplate(
8768 VkDevice device,
8769 const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo,
8770 const VkAllocationCallbacks* pAllocator,
8771 VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate) {
8772 return ?
8773}
8774
Ian Elliottcd8ad332017-10-13 09:21:12 -06008775@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008776cmd void vkDestroyDescriptorUpdateTemplate(
8777 VkDevice device,
8778 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
8779 const VkAllocationCallbacks* pAllocator) {
8780}
8781
Ian Elliottcd8ad332017-10-13 09:21:12 -06008782@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008783cmd void vkUpdateDescriptorSetWithTemplate(
8784 VkDevice device,
8785 VkDescriptorSet descriptorSet,
8786 VkDescriptorUpdateTemplate descriptorUpdateTemplate,
8787 const void* pData) {
8788}
8789
Ian Elliottcd8ad332017-10-13 09:21:12 -06008790@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008791cmd void vkGetPhysicalDeviceExternalBufferProperties(
8792 VkPhysicalDevice physicalDevice,
8793 const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo,
8794 VkExternalBufferProperties* pExternalBufferProperties) {
8795}
8796
Ian Elliottcd8ad332017-10-13 09:21:12 -06008797@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008798cmd void vkGetPhysicalDeviceExternalFenceProperties(
8799 VkPhysicalDevice physicalDevice,
8800 const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo,
8801 VkExternalFenceProperties* pExternalFenceProperties) {
8802}
8803
Ian Elliottcd8ad332017-10-13 09:21:12 -06008804@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008805cmd void vkGetPhysicalDeviceExternalSemaphoreProperties(
8806 VkPhysicalDevice physicalDevice,
8807 const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo,
8808 VkExternalSemaphoreProperties* pExternalSemaphoreProperties) {
8809}
8810
Ian Elliottcd8ad332017-10-13 09:21:12 -06008811@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008812cmd void vkGetDescriptorSetLayoutSupport(
8813 VkDevice device,
8814 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
8815 VkDescriptorSetLayoutSupport* pSupport) {
8816}
8817
8818
Jesse Hallad250842017-03-10 18:35:38 -08008819@extension("VK_KHR_surface") // 1
Jesse Hall1356b0d2015-11-23 17:24:58 -08008820cmd void vkDestroySurfaceKHR(
8821 VkInstance instance,
Jesse Hall0e74f002015-11-30 11:37:59 -08008822 VkSurfaceKHR surface,
8823 const VkAllocationCallbacks* pAllocator) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08008824 instanceObject := GetInstance(instance)
8825 surfaceObject := GetSurface(surface)
8826 assert(surfaceObject.instance == instance)
Michael Lentine88594d72015-11-12 12:49:45 -08008827
Jesse Hall1356b0d2015-11-23 17:24:58 -08008828 State.Surfaces[surface] = null
Jesse Hall2818f932015-11-19 21:19:17 -08008829}
8830
Jesse Hallad250842017-03-10 18:35:38 -08008831@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08008832cmd VkResult vkGetPhysicalDeviceSurfaceSupportKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08008833 VkPhysicalDevice physicalDevice,
8834 u32 queueFamilyIndex,
Jesse Hall1356b0d2015-11-23 17:24:58 -08008835 VkSurfaceKHR surface,
Jesse Hallb00daad2015-11-29 19:46:20 -08008836 VkBool32* pSupported) {
8837 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08008838
8839 return ?
8840}
8841
Jesse Hallad250842017-03-10 18:35:38 -08008842@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08008843cmd VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
8844 VkPhysicalDevice physicalDevice,
8845 VkSurfaceKHR surface,
8846 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) {
8847 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
8848
8849 surfaceCapabilities := ?
8850 pSurfaceCapabilities[0] = surfaceCapabilities
8851
8852 return ?
8853}
8854
Jesse Hallad250842017-03-10 18:35:38 -08008855@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08008856cmd VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(
8857 VkPhysicalDevice physicalDevice,
Jesse Hall1356b0d2015-11-23 17:24:58 -08008858 VkSurfaceKHR surface,
Jesse Hall03b6fe12015-11-24 12:44:21 -08008859 u32* pSurfaceFormatCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08008860 VkSurfaceFormatKHR* pSurfaceFormats) {
Jesse Hallb00daad2015-11-29 19:46:20 -08008861 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08008862
8863 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08008864 pSurfaceFormatCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08008865 surfaceFormats := pSurfaceFormats[0:count]
8866
8867 for i in (0 .. count) {
8868 surfaceFormat := ?
8869 surfaceFormats[i] = surfaceFormat
8870 }
8871
8872 return ?
8873}
8874
Jesse Hallad250842017-03-10 18:35:38 -08008875@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08008876cmd VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(
8877 VkPhysicalDevice physicalDevice,
Jesse Hall1356b0d2015-11-23 17:24:58 -08008878 VkSurfaceKHR surface,
Jesse Hall03b6fe12015-11-24 12:44:21 -08008879 u32* pPresentModeCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08008880 VkPresentModeKHR* pPresentModes) {
Jesse Hallb00daad2015-11-29 19:46:20 -08008881 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08008882
8883 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08008884 pPresentModeCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08008885 presentModes := pPresentModes[0:count]
8886
8887 for i in (0 .. count) {
8888 presentMode := ?
8889 presentModes[i] = presentMode
8890 }
8891
8892 return ?
8893}
8894
Jesse Hallad250842017-03-10 18:35:38 -08008895@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08008896cmd VkResult vkCreateSwapchainKHR(
8897 VkDevice device,
8898 const VkSwapchainCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08008899 const VkAllocationCallbacks* pAllocator,
Michael Lentine88594d72015-11-12 12:49:45 -08008900 VkSwapchainKHR* pSwapchain) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08008901 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR)
Michael Lentine88594d72015-11-12 12:49:45 -08008902 deviceObject := GetDevice(device)
8903
8904 swapchain := ?
8905 pSwapchain[0] = swapchain
8906 State.Swapchains[swapchain] = new!SwapchainObject(device: device)
8907
8908 return ?
8909}
8910
Jesse Hallad250842017-03-10 18:35:38 -08008911@extension("VK_KHR_swapchain") // 2
Jesse Hall1356b0d2015-11-23 17:24:58 -08008912cmd void vkDestroySwapchainKHR(
Michael Lentine88594d72015-11-12 12:49:45 -08008913 VkDevice device,
Jesse Hall0e74f002015-11-30 11:37:59 -08008914 VkSwapchainKHR swapchain,
8915 const VkAllocationCallbacks* pAllocator) {
Michael Lentine88594d72015-11-12 12:49:45 -08008916 deviceObject := GetDevice(device)
8917 swapchainObject := GetSwapchain(swapchain)
8918 assert(swapchainObject.device == device)
8919
8920 State.Swapchains[swapchain] = null
Michael Lentine88594d72015-11-12 12:49:45 -08008921}
8922
Jesse Hallad250842017-03-10 18:35:38 -08008923@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08008924cmd VkResult vkGetSwapchainImagesKHR(
8925 VkDevice device,
8926 VkSwapchainKHR swapchain,
Jesse Hall03b6fe12015-11-24 12:44:21 -08008927 u32* pSwapchainImageCount,
Michael Lentine88594d72015-11-12 12:49:45 -08008928 VkImage* pSwapchainImages) {
8929 deviceObject := GetDevice(device)
8930
8931 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08008932 pSwapchainImageCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08008933 swapchainImages := pSwapchainImages[0:count]
8934
8935 for i in (0 .. count) {
8936 swapchainImage := ?
8937 swapchainImages[i] = swapchainImage
Jesse Hall1356b0d2015-11-23 17:24:58 -08008938 State.Images[swapchainImage] = new!ImageObject(device: device)
Michael Lentine88594d72015-11-12 12:49:45 -08008939 }
8940
8941 return ?
8942}
8943
Jesse Hallad250842017-03-10 18:35:38 -08008944@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08008945cmd VkResult vkAcquireNextImageKHR(
8946 VkDevice device,
8947 VkSwapchainKHR swapchain,
8948 u64 timeout,
8949 VkSemaphore semaphore,
Jesse Hall1356b0d2015-11-23 17:24:58 -08008950 VkFence fence,
Michael Lentine88594d72015-11-12 12:49:45 -08008951 u32* pImageIndex) {
8952 deviceObject := GetDevice(device)
8953 swapchainObject := GetSwapchain(swapchain)
8954
8955 imageIndex := ?
8956 pImageIndex[0] = imageIndex
8957
8958 return ?
8959}
8960
Jesse Hallad250842017-03-10 18:35:38 -08008961@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08008962cmd VkResult vkQueuePresentKHR(
8963 VkQueue queue,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08008964 const VkPresentInfoKHR* pPresentInfo) {
Michael Lentine88594d72015-11-12 12:49:45 -08008965 queueObject := GetQueue(queue)
8966
8967 presentInfo := ?
8968 pPresentInfo[0] = presentInfo
8969
8970 return ?
8971}
8972
Ian Elliottcd8ad332017-10-13 09:21:12 -06008973@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008974@extension("VK_KHR_swapchain") // 2
8975cmd VkResult vkGetDeviceGroupPresentCapabilitiesKHR(
8976 VkDevice device,
8977 VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities) {
8978 return ?
8979}
8980
Ian Elliottcd8ad332017-10-13 09:21:12 -06008981@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008982@extension("VK_KHR_swapchain") // 2
8983cmd VkResult vkGetDeviceGroupSurfacePresentModesKHR(
8984 VkDevice device,
8985 VkSurfaceKHR surface,
8986 VkDeviceGroupPresentModeFlagsKHR* pModes) {
8987 return ?
8988}
8989
Ian Elliottcd8ad332017-10-13 09:21:12 -06008990@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04008991@extension("VK_KHR_swapchain") // 2
8992cmd VkResult vkGetPhysicalDevicePresentRectanglesKHR(
8993 VkPhysicalDevice physicalDevice,
8994 VkSurfaceKHR surface,
8995 u32* pRectCount,
8996 VkRect2D* pRects) {
8997 return ?
8998}
8999
Ian Elliottcd8ad332017-10-13 09:21:12 -06009000@vulkan1_1
Daniel Kochf25f5bb2017-10-05 00:26:58 -04009001@extension("VK_KHR_swapchain") // 2
9002cmd VkResult vkAcquireNextImage2KHR(
9003 VkDevice device,
9004 const VkAcquireNextImageInfoKHR* pAcquireInfo,
9005 u32* pImageIndex) {
9006 return ?
9007}
9008
Jesse Hallad250842017-03-10 18:35:38 -08009009@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08009010cmd VkResult vkGetPhysicalDeviceDisplayPropertiesKHR(
9011 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08009012 u32* pPropertyCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08009013 VkDisplayPropertiesKHR* pProperties) {
9014 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
9015 return ?
9016}
9017
Jesse Hallad250842017-03-10 18:35:38 -08009018@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08009019cmd VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
9020 VkPhysicalDevice physicalDevice,
9021 u32* pPropertyCount,
9022 VkDisplayPlanePropertiesKHR* pProperties) {
9023 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
9024 return ?
9025}
9026
Jesse Hallad250842017-03-10 18:35:38 -08009027@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08009028cmd VkResult vkGetDisplayPlaneSupportedDisplaysKHR(
9029 VkPhysicalDevice physicalDevice,
Jesse Hall3dd678a2016-01-08 21:52:01 -08009030 u32 planeIndex,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08009031 u32* pDisplayCount,
9032 VkDisplayKHR* pDisplays) {
Jesse Halla6429252015-11-29 18:59:42 -08009033 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
9034 return ?
9035}
9036
Jesse Hallad250842017-03-10 18:35:38 -08009037@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08009038cmd VkResult vkGetDisplayModePropertiesKHR(
9039 VkPhysicalDevice physicalDevice,
9040 VkDisplayKHR display,
Jesse Hall03b6fe12015-11-24 12:44:21 -08009041 u32* pPropertyCount,
9042 VkDisplayModePropertiesKHR* pProperties) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08009043 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
9044 return ?
9045}
9046
Jesse Hallad250842017-03-10 18:35:38 -08009047@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08009048cmd VkResult vkCreateDisplayModeKHR(
9049 VkPhysicalDevice physicalDevice,
9050 VkDisplayKHR display,
9051 const VkDisplayModeCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08009052 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08009053 VkDisplayModeKHR* pMode) {
9054 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
9055 return ?
9056}
9057
Jesse Hallad250842017-03-10 18:35:38 -08009058@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08009059cmd VkResult vkGetDisplayPlaneCapabilitiesKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08009060 VkPhysicalDevice physicalDevice,
Jesse Hall9ba8bc82015-11-30 16:22:16 -08009061 VkDisplayModeKHR mode,
Jesse Hall1356b0d2015-11-23 17:24:58 -08009062 u32 planeIndex,
Jesse Halla6429252015-11-29 18:59:42 -08009063 VkDisplayPlaneCapabilitiesKHR* pCapabilities) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08009064 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
9065 return ?
9066}
9067
Jesse Hallad250842017-03-10 18:35:38 -08009068@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08009069cmd VkResult vkCreateDisplayPlaneSurfaceKHR(
9070 VkInstance instance,
9071 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08009072 const VkAllocationCallbacks* pAllocator,
Jesse Halla6429252015-11-29 18:59:42 -08009073 VkSurfaceKHR* pSurface) {
9074 return ?
9075}
9076
Jesse Hallad250842017-03-10 18:35:38 -08009077@extension("VK_KHR_display_swapchain") // 4
Jesse Hall9ba8bc82015-11-30 16:22:16 -08009078cmd VkResult vkCreateSharedSwapchainsKHR(
9079 VkDevice device,
9080 u32 swapchainCount,
9081 const VkSwapchainCreateInfoKHR* pCreateInfos,
9082 const VkAllocationCallbacks* pAllocator,
9083 VkSwapchainKHR* pSwapchains) {
9084 return ?
9085}
9086
Jesse Hallad250842017-03-10 18:35:38 -08009087@extension("VK_KHR_xlib_surface") // 5
Jesse Halla6429252015-11-29 18:59:42 -08009088cmd VkResult vkCreateXlibSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08009089 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08009090 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08009091 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08009092 VkSurfaceKHR* pSurface) {
9093 instanceObject := GetInstance(instance)
9094 return ?
9095}
9096
Jesse Hallad250842017-03-10 18:35:38 -08009097@extension("VK_KHR_xlib_surface") // 5
Jesse Halla6429252015-11-29 18:59:42 -08009098cmd VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR(
9099 VkPhysicalDevice physicalDevice,
9100 u32 queueFamilyIndex,
9101 platform.Display* dpy,
Jesse Hall65ab5522015-11-30 00:07:16 -08009102 platform.VisualID visualID) {
Jesse Halla6429252015-11-29 18:59:42 -08009103 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
9104 return ?
9105}
9106
Jesse Hallad250842017-03-10 18:35:38 -08009107@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08009108cmd VkResult vkCreateXcbSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08009109 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08009110 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08009111 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08009112 VkSurfaceKHR* pSurface) {
9113 instanceObject := GetInstance(instance)
9114 return ?
9115}
9116
Jesse Hallad250842017-03-10 18:35:38 -08009117@extension("VK_KHR_xcb_surface") // 6
Jesse Halla6429252015-11-29 18:59:42 -08009118cmd VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR(
9119 VkPhysicalDevice physicalDevice,
9120 u32 queueFamilyIndex,
9121 platform.xcb_connection_t* connection,
9122 platform.xcb_visualid_t visual_id) {
9123 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
9124 return ?
9125}
9126
Jesse Hallad250842017-03-10 18:35:38 -08009127@extension("VK_KHR_wayland_surface") // 7
Jesse Hall1356b0d2015-11-23 17:24:58 -08009128cmd VkResult vkCreateWaylandSurfaceKHR(
9129 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08009130 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08009131 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08009132 VkSurfaceKHR* pSurface) {
9133 instanceObject := GetInstance(instance)
9134 return ?
9135}
9136
Jesse Hallad250842017-03-10 18:35:38 -08009137@extension("VK_KHR_wayland_surface") // 7
Jesse Halla6429252015-11-29 18:59:42 -08009138cmd VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR(
9139 VkPhysicalDevice physicalDevice,
9140 u32 queueFamilyIndex,
9141 platform.wl_display* display) {
9142 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
9143 return ?
9144}
9145
Jesse Hallad250842017-03-10 18:35:38 -08009146@extension("VK_KHR_mir_surface") // 8
Jesse Hall1356b0d2015-11-23 17:24:58 -08009147cmd VkResult vkCreateMirSurfaceKHR(
9148 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08009149 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08009150 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08009151 VkSurfaceKHR* pSurface) {
9152 instanceObject := GetInstance(instance)
9153 return ?
9154}
9155
Jesse Hallad250842017-03-10 18:35:38 -08009156@extension("VK_KHR_mir_surface") // 8
Jesse Halla6429252015-11-29 18:59:42 -08009157cmd VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR(
9158 VkPhysicalDevice physicalDevice,
9159 u32 queueFamilyIndex,
9160 platform.MirConnection* connection) {
9161 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
9162 return ?
9163}
9164
Jesse Hallad250842017-03-10 18:35:38 -08009165@extension("VK_KHR_android_surface") // 9
Jesse Hall1356b0d2015-11-23 17:24:58 -08009166cmd VkResult vkCreateAndroidSurfaceKHR(
9167 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08009168 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08009169 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08009170 VkSurfaceKHR* pSurface) {
9171 instanceObject := GetInstance(instance)
9172 return ?
9173}
9174
Jesse Hallad250842017-03-10 18:35:38 -08009175@extension("VK_KHR_win32_surface") // 10
Jesse Hall1356b0d2015-11-23 17:24:58 -08009176cmd VkResult vkCreateWin32SurfaceKHR(
9177 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08009178 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08009179 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08009180 VkSurfaceKHR* pSurface) {
9181 instanceObject := GetInstance(instance)
9182 return ?
9183}
9184
Jesse Hallad250842017-03-10 18:35:38 -08009185@extension("VK_KHR_win32_surface") // 10
Jesse Halla6429252015-11-29 18:59:42 -08009186cmd VkResult vkGetPhysicalDeviceWin32PresentationSupportKHR(
9187 VkPhysicalDevice physicalDevice,
9188 u32 queueFamilyIndex) {
Jesse Halle2948d82016-02-25 04:19:32 -08009189 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Halla6429252015-11-29 18:59:42 -08009190 return ?
9191}
9192
Jesse Hallad250842017-03-10 18:35:38 -08009193@extension("VK_ANDROID_native_buffer") // 11
Jesse Halld1abd742017-02-09 21:45:51 -08009194@optional
Chia-I Wub262ddc2016-03-22 07:38:20 +08009195cmd VkResult vkGetSwapchainGrallocUsageANDROID(
9196 VkDevice device,
9197 VkFormat format,
9198 VkImageUsageFlags imageUsage,
Jesse Halld1abd742017-02-09 21:45:51 -08009199 s32* grallocUsage) {
Chia-I Wub262ddc2016-03-22 07:38:20 +08009200 return ?
9201}
9202
Jesse Hallad250842017-03-10 18:35:38 -08009203@extension("VK_ANDROID_native_buffer") // 11
Jesse Halld1abd742017-02-09 21:45:51 -08009204@optional
Chris Forbes8e4438b2016-12-07 16:26:49 +13009205cmd VkResult vkGetSwapchainGrallocUsage2ANDROID(
9206 VkDevice device,
9207 VkFormat format,
9208 VkImageUsageFlags imageUsage,
9209 VkSwapchainImageUsageFlagsANDROID swapchainImageUsage,
Jesse Halld1abd742017-02-09 21:45:51 -08009210 u64* grallocConsumerUsage,
9211 u64* grallocProducerUsage) {
Chris Forbes8e4438b2016-12-07 16:26:49 +13009212 return ?
9213}
9214
Jesse Hallad250842017-03-10 18:35:38 -08009215@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08009216cmd VkResult vkAcquireImageANDROID(
9217 VkDevice device,
9218 VkImage image,
9219 int nativeFenceFd,
9220 VkSemaphore semaphore,
9221 VkFence fence) {
9222 return ?
9223}
9224
Jesse Hallad250842017-03-10 18:35:38 -08009225@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08009226cmd VkResult vkQueueSignalReleaseImageANDROID(
9227 VkQueue queue,
9228 u32 waitSemaphoreCount,
9229 const VkSemaphore* pWaitSemaphores,
9230 VkImage image,
9231 int* pNativeFenceFd) {
9232 return ?
9233}
9234
Jesse Hallad250842017-03-10 18:35:38 -08009235@extension("VK_EXT_debug_report") // 12
9236@external type void* PFN_vkDebugReportCallbackEXT
9237@extension("VK_EXT_debug_report") // 12
9238@pfn cmd VkBool32 vkDebugReportCallbackEXT(
9239 VkDebugReportFlagsEXT flags,
9240 VkDebugReportObjectTypeEXT objectType,
9241 u64 object,
9242 platform.size_t location,
9243 s32 messageCode,
9244 const char* pLayerPrefix,
9245 const char* pMessage,
9246 void* pUserData) {
9247 return ?
9248}
9249
9250@extension("VK_EXT_debug_report") // 12
9251cmd VkResult vkCreateDebugReportCallbackEXT(
9252 VkInstance instance,
9253 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
9254 const VkAllocationCallbacks* pAllocator,
9255 VkDebugReportCallbackEXT* pCallback) {
9256 return ?
9257}
9258
9259@extension("VK_EXT_debug_report") // 12
9260cmd void vkDestroyDebugReportCallbackEXT(
9261 VkInstance instance,
9262 VkDebugReportCallbackEXT callback,
9263 const VkAllocationCallbacks* pAllocator) {
9264}
9265
9266@extension("VK_EXT_debug_report") // 12
9267cmd void vkDebugReportMessageEXT(
9268 VkInstance instance,
9269 VkDebugReportFlagsEXT flags,
9270 VkDebugReportObjectTypeEXT objectType,
9271 u64 object,
9272 platform.size_t location,
9273 s32 messageCode,
9274 const char* pLayerPrefix,
9275 const char* pMessage) {
9276}
9277
9278@extension("VK_EXT_debug_marker") // 23
9279cmd VkResult vkDebugMarkerSetObjectTagEXT(
9280 VkDevice device,
Jesse Hall77726222017-09-19 14:49:27 -05009281 const VkDebugMarkerObjectTagInfoEXT* pTagInfo) {
Jesse Hallad250842017-03-10 18:35:38 -08009282 return ?
9283}
9284
9285@extension("VK_EXT_debug_marker") // 23
9286cmd VkResult vkDebugMarkerSetObjectNameEXT(
9287 VkDevice device,
Jesse Hall77726222017-09-19 14:49:27 -05009288 const VkDebugMarkerObjectNameInfoEXT* pNameInfo) {
Jesse Hallad250842017-03-10 18:35:38 -08009289 return ?
9290}
9291
9292@extension("VK_EXT_debug_marker") // 23
9293cmd void vkCmdDebugMarkerBeginEXT(
9294 VkCommandBuffer commandBuffer,
Jesse Hall77726222017-09-19 14:49:27 -05009295 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
Jesse Hallad250842017-03-10 18:35:38 -08009296}
9297
9298@extension("VK_EXT_debug_marker") // 23
9299cmd void vkCmdDebugMarkerEndEXT(
9300 VkCommandBuffer commandBuffer) {
9301}
9302
9303@extension("VK_EXT_debug_marker") // 23
9304cmd void vkCmdDebugMarkerInsertEXT(
9305 VkCommandBuffer commandBuffer,
Jesse Hall77726222017-09-19 14:49:27 -05009306 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
Jesse Hallad250842017-03-10 18:35:38 -08009307}
9308
9309@extension("VK_AMD_draw_indirect_count") // 34
9310cmd void vkCmdDrawIndirectCountAMD(
9311 VkCommandBuffer commandBuffer,
9312 VkBuffer buffer,
9313 VkDeviceSize offset,
9314 VkBuffer countBuffer,
9315 VkDeviceSize countBufferOffset,
9316 u32 maxDrawCount,
9317 u32 stride) {
9318}
9319
9320@extension("VK_AMD_draw_indirect_count") // 34
9321cmd void vkCmdDrawIndexedIndirectCountAMD(
9322 VkCommandBuffer commandBuffer,
9323 VkBuffer buffer,
9324 VkDeviceSize offset,
9325 VkBuffer countBuffer,
9326 VkDeviceSize countBufferOffset,
9327 u32 maxDrawCount,
9328 u32 stride) {
9329}
9330
Jesse Hall35b4de12018-01-17 22:06:20 -08009331@extension("VK_AMD_shader_info") // 43
9332cmd VkResult vkGetShaderInfoAMD(
9333 VkDevice device,
9334 VkPipeline pipeline,
9335 VkShaderStageFlagBits shaderStage,
9336 VkShaderInfoTypeAMD infoType,
9337 platform.size_t* pInfoSize,
9338 void* pInfo) {
9339 return ?
9340}
9341
Jesse Hallad250842017-03-10 18:35:38 -08009342@extension("VK_NV_external_memory_capabilities") // 56
9343cmd VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
9344 VkPhysicalDevice physicalDevice,
9345 VkFormat format,
9346 VkImageType type,
9347 VkImageTiling tiling,
9348 VkImageUsageFlags usage,
9349 VkImageCreateFlags flags,
9350 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
9351 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) {
9352 return ?
9353}
9354
9355@extension("VK_NV_external_memory_win32") // 58
9356cmd VkResult vkGetMemoryWin32HandleNV(
9357 VkDevice device,
9358 VkDeviceMemory memory,
9359 VkExternalMemoryHandleTypeFlagsNV handleType,
9360 platform.HANDLE* pHandle) {
9361 return ?
9362}
9363
9364@extension("VK_KHR_get_physical_device_properties2") // 60
9365cmd void vkGetPhysicalDeviceFeatures2KHR(
9366 VkPhysicalDevice physicalDevice,
9367 VkPhysicalDeviceFeatures2KHR* pFeatures) {
9368}
9369
9370@extension("VK_KHR_get_physical_device_properties2") // 60
9371cmd void vkGetPhysicalDeviceProperties2KHR(
9372 VkPhysicalDevice physicalDevice,
9373 VkPhysicalDeviceProperties2KHR* pProperties) {
9374}
9375
9376@extension("VK_KHR_get_physical_device_properties2") // 60
9377cmd void vkGetPhysicalDeviceFormatProperties2KHR(
9378 VkPhysicalDevice physicalDevice,
9379 VkFormat format,
9380 VkFormatProperties2KHR* pFormatProperties) {
9381}
9382
9383@extension("VK_KHR_get_physical_device_properties2") // 60
9384cmd VkResult vkGetPhysicalDeviceImageFormatProperties2KHR(
9385 VkPhysicalDevice physicalDevice,
9386 const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo,
9387 VkImageFormatProperties2KHR* pImageFormatProperties) {
9388 return ?
9389}
9390
9391@extension("VK_KHR_get_physical_device_properties2") // 60
9392cmd void vkGetPhysicalDeviceQueueFamilyProperties2KHR(
9393 VkPhysicalDevice physicalDevice,
9394 u32* pQueueFamilyPropertyCount,
9395 VkQueueFamilyProperties2KHR* pQueueFamilyProperties) {
9396}
9397
9398@extension("VK_KHR_get_physical_device_properties2") // 60
9399cmd void vkGetPhysicalDeviceMemoryProperties2KHR(
9400 VkPhysicalDevice physicalDevice,
9401 VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties) {
9402}
9403
9404@extension("VK_KHR_get_physical_device_properties2") // 60
9405cmd void vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
9406 VkPhysicalDevice physicalDevice,
9407 const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo,
9408 u32* pPropertyCount,
9409 VkSparseImageFormatProperties2KHR* pProperties) {
9410}
9411
Daniel Kochf25f5bb2017-10-05 00:26:58 -04009412@extension("VK_KHR_device_group") // 61
9413cmd void vkGetDeviceGroupPeerMemoryFeaturesKHR(
Jesse Hallad250842017-03-10 18:35:38 -08009414 VkDevice device,
9415 u32 heapIndex,
9416 u32 localDeviceIndex,
9417 u32 remoteDeviceIndex,
Daniel Kochf25f5bb2017-10-05 00:26:58 -04009418 VkPeerMemoryFeatureFlagsKHR* pPeerMemoryFeatures) {
Jesse Hallad250842017-03-10 18:35:38 -08009419}
9420
Daniel Kochf25f5bb2017-10-05 00:26:58 -04009421@extension("VK_KHR_device_group") // 61
9422cmd void vkCmdSetDeviceMaskKHR(
Jesse Hallad250842017-03-10 18:35:38 -08009423 VkCommandBuffer commandBuffer,
9424 u32 deviceMask) {
9425}
9426
Jesse Hallad250842017-03-10 18:35:38 -08009427
Daniel Kochf25f5bb2017-10-05 00:26:58 -04009428@extension("VK_KHR_device_group") // 61
9429cmd void vkCmdDispatchBaseKHR(
Jesse Hallad250842017-03-10 18:35:38 -08009430 VkCommandBuffer commandBuffer,
9431 u32 baseGroupX,
9432 u32 baseGroupY,
9433 u32 baseGroupZ,
9434 u32 groupCountX,
9435 u32 groupCountY,
9436 u32 groupCountZ) {
9437}
9438
Jesse Hallad250842017-03-10 18:35:38 -08009439@extension("VK_NN_vi_surface") // 63
9440cmd VkResult vkCreateViSurfaceNN(
9441 VkInstance instance,
9442 const VkViSurfaceCreateInfoNN* pCreateInfo,
9443 const VkAllocationCallbacks* pAllocator,
9444 VkSurfaceKHR* pSurface) {
9445 return ?
9446}
9447
9448@extension("VK_KHR_maintenance1") // 70
9449cmd void vkTrimCommandPoolKHR(
9450 VkDevice device,
9451 VkCommandPool commandPool,
9452 VkCommandPoolTrimFlagsKHR flags) {
9453}
9454
Daniel Kochf25f5bb2017-10-05 00:26:58 -04009455@extension("VK_KHR_device_group_creation") // 71
9456@threadSafety("system")
9457cmd VkResult vkEnumeratePhysicalDeviceGroupsKHR(
Jesse Hallad250842017-03-10 18:35:38 -08009458 VkInstance instance,
9459 u32* pPhysicalDeviceGroupCount,
Daniel Kochf25f5bb2017-10-05 00:26:58 -04009460 VkPhysicalDeviceGroupPropertiesKHR* pPhysicalDeviceGroupProperties) {
9461 instanceObject := GetInstance(instance)
9462
9463 physicalDeviceGroupCount := as!u32(?)
9464 pPhysicalDeviceGroupCount[0] = physicalDeviceGroupCount
9465 physicalDevices := pPhysicalDeviceGroupProperties[0:physicalDeviceGroupCount]
9466
9467 for i in (0 .. physicalDeviceGroupCount) {
9468 physicalDevice := ?
9469 physicalDevices[i] = physicalDevice
9470 if !(physicalDevice in State.PhysicalDevices) {
9471 State.PhysicalDevices[physicalDevice] = new!PhysicalDeviceObject(instance: instance)
9472 }
9473 }
9474
Jesse Hallad250842017-03-10 18:35:38 -08009475 return ?
9476}
9477
Jesse Hall9492f992017-08-28 12:10:06 -07009478@extension("VK_KHR_external_memory_capabilities") // 72
9479cmd void vkGetPhysicalDeviceExternalBufferPropertiesKHR(
Jesse Hallad250842017-03-10 18:35:38 -08009480 VkPhysicalDevice physicalDevice,
Jesse Hall9492f992017-08-28 12:10:06 -07009481 const VkPhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo,
9482 VkExternalBufferPropertiesKHR* pExternalBufferProperties) {
Jesse Hallad250842017-03-10 18:35:38 -08009483}
9484
Jesse Hall9492f992017-08-28 12:10:06 -07009485@extension("VK_KHR_external_memory_win32") // 74
9486cmd VkResult vkGetMemoryWin32HandleKHR(
Jesse Hallad250842017-03-10 18:35:38 -08009487 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07009488 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
Jesse Hallad250842017-03-10 18:35:38 -08009489 platform.HANDLE* pHandle) {
9490 return ?
9491}
9492
Jesse Hall9492f992017-08-28 12:10:06 -07009493@extension("VK_KHR_external_memory_win32") // 74
9494cmd VkResult vkGetMemoryWin32HandlePropertiesKHR(
Jesse Hallad250842017-03-10 18:35:38 -08009495 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07009496 VkExternalMemoryHandleTypeFlagBitsKHR handleType,
Jesse Hallad250842017-03-10 18:35:38 -08009497 platform.HANDLE handle,
Jesse Hall9492f992017-08-28 12:10:06 -07009498 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) {
Jesse Hallad250842017-03-10 18:35:38 -08009499 return ?
9500}
9501
Jesse Hall9492f992017-08-28 12:10:06 -07009502@extension("VK_KHR_external_memory_fd") // 75
9503cmd VkResult vkGetMemoryFdKHR(
Jesse Hallad250842017-03-10 18:35:38 -08009504 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07009505 const VkMemoryGetFdInfoKHR* pGetFdInfo,
Jesse Hallad250842017-03-10 18:35:38 -08009506 s32* pFd) {
9507 return ?
9508}
9509
Jesse Hall9492f992017-08-28 12:10:06 -07009510@extension("VK_KHR_external_memory_fd") // 75
9511cmd VkResult vkGetMemoryFdPropertiesKHR(
Jesse Hallad250842017-03-10 18:35:38 -08009512 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07009513 VkExternalMemoryHandleTypeFlagBitsKHR handleType,
Jesse Hallad250842017-03-10 18:35:38 -08009514 s32 fd,
Jesse Hall9492f992017-08-28 12:10:06 -07009515 VkMemoryFdPropertiesKHR* pMemoryFdProperties) {
Jesse Hallad250842017-03-10 18:35:38 -08009516 return ?
9517}
9518
Jesse Hall9492f992017-08-28 12:10:06 -07009519@extension("VK_KHR_external_semaphore_capabilities") // 77
9520cmd void vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
Jesse Hallad250842017-03-10 18:35:38 -08009521 VkPhysicalDevice physicalDevice,
Jesse Hall9492f992017-08-28 12:10:06 -07009522 const VkPhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo,
9523 VkExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties) {
Jesse Hallad250842017-03-10 18:35:38 -08009524}
9525
Jesse Hall9492f992017-08-28 12:10:06 -07009526@extension("VK_KHR_external_semaphore_win32") // 79
9527cmd VkResult vkImportSemaphoreWin32HandleKHR(
Jesse Hallad250842017-03-10 18:35:38 -08009528 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07009529 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) {
Jesse Hallad250842017-03-10 18:35:38 -08009530 return ?
9531}
9532
Jesse Hall9492f992017-08-28 12:10:06 -07009533@extension("VK_KHR_external_semaphore_win32") // 79
9534cmd VkResult vkGetSemaphoreWin32HandleKHR(
Jesse Hallad250842017-03-10 18:35:38 -08009535 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07009536 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
Jesse Hallad250842017-03-10 18:35:38 -08009537 platform.HANDLE* pHandle) {
9538 return ?
9539}
9540
Jesse Hall9492f992017-08-28 12:10:06 -07009541@extension("VK_KHR_external_semaphore_fd") // 80
9542cmd VkResult vkImportSemaphoreFdKHR(
Jesse Hallad250842017-03-10 18:35:38 -08009543 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07009544 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) {
Jesse Hallad250842017-03-10 18:35:38 -08009545 return ?
9546}
9547
Jesse Hall9492f992017-08-28 12:10:06 -07009548@extension("VK_KHR_external_semaphore_fd") // 80
9549cmd VkResult vkGetSemaphoreFdKHR(
Jesse Hallad250842017-03-10 18:35:38 -08009550 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07009551 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
Jesse Hallad250842017-03-10 18:35:38 -08009552 s32* pFd) {
9553 return ?
9554}
9555
9556@extension("VK_KHR_push_descriptor") // 81
9557cmd void vkCmdPushDescriptorSetKHR(
9558 VkCommandBuffer commandBuffer,
9559 VkPipelineBindPoint pipelineBindPoint,
9560 VkPipelineLayout layout,
9561 u32 set,
9562 u32 descriptorWriteCount,
9563 const VkWriteDescriptorSet* pDescriptorWrites) {
9564}
9565
9566@extension("VK_KHR_descriptor_update_template") // 86
9567cmd VkResult vkCreateDescriptorUpdateTemplateKHR(
9568 VkDevice device,
9569 const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo,
9570 const VkAllocationCallbacks* pAllocator,
9571 VkDescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate) {
9572 return ?
9573}
9574
9575@extension("VK_KHR_descriptor_update_template") // 86
9576cmd void vkDestroyDescriptorUpdateTemplateKHR(
9577 VkDevice device,
9578 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
9579 const VkAllocationCallbacks* pAllocator) {
9580}
9581
9582@extension("VK_KHR_descriptor_update_template") // 86
9583cmd void vkUpdateDescriptorSetWithTemplateKHR(
9584 VkDevice device,
9585 VkDescriptorSet descriptorSet,
9586 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
9587 const void* pData) {
9588}
9589
9590@extension("VK_KHR_descriptor_update_template") // 86
9591cmd void vkCmdPushDescriptorSetWithTemplateKHR(
9592 VkCommandBuffer commandBuffer,
9593 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
9594 VkPipelineLayout layout,
9595 u32 set,
9596 const void* pData) {
9597}
9598
9599@extension("VK_NVX_device_generated_commands") // 87
9600cmd void vkCmdProcessCommandsNVX(
9601 VkCommandBuffer commandBuffer,
9602 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) {
9603}
9604
9605@extension("VK_NVX_device_generated_commands") // 87
9606cmd void vkCmdReserveSpaceForCommandsNVX(
9607 VkCommandBuffer commandBuffer,
9608 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) {
9609}
9610
9611@extension("VK_NVX_device_generated_commands") // 87
9612cmd VkResult vkCreateIndirectCommandsLayoutNVX(
9613 VkDevice device,
9614 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
9615 const VkAllocationCallbacks* pAllocator,
9616 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) {
9617 return ?
9618}
9619
9620@extension("VK_NVX_device_generated_commands") // 87
9621cmd void vkDestroyIndirectCommandsLayoutNVX(
9622 VkDevice device,
9623 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
9624 const VkAllocationCallbacks* pAllocator) {
9625}
9626
9627@extension("VK_NVX_device_generated_commands") // 87
9628cmd VkResult vkCreateObjectTableNVX(
9629 VkDevice device,
9630 const VkObjectTableCreateInfoNVX* pCreateInfo,
9631 const VkAllocationCallbacks* pAllocator,
9632 VkObjectTableNVX* pObjectTable) {
9633 return ?
9634}
9635
9636@extension("VK_NVX_device_generated_commands") // 87
9637cmd void vkDestroyObjectTableNVX(
9638 VkDevice device,
9639 VkObjectTableNVX objectTable,
9640 const VkAllocationCallbacks* pAllocator) {
9641}
9642
9643@extension("VK_NVX_device_generated_commands") // 87
9644cmd VkResult vkRegisterObjectsNVX(
9645 VkDevice device,
9646 VkObjectTableNVX objectTable,
9647 u32 objectCount,
9648 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
9649 const u32* pObjectIndices) {
9650 return ?
9651}
9652
9653@extension("VK_NVX_device_generated_commands") // 87
9654cmd VkResult vkUnregisterObjectsNVX(
9655 VkDevice device,
9656 VkObjectTableNVX objectTable,
9657 u32 objectCount,
9658 const VkObjectEntryTypeNVX* pObjectEntryTypes,
9659 const u32* pObjectIndices) {
9660 return ?
9661}
9662
9663@extension("VK_NVX_device_generated_commands") // 87
9664cmd void vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
9665 VkPhysicalDevice physicalDevice,
9666 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
9667 VkDeviceGeneratedCommandsLimitsNVX* pLimits) {
9668}
9669
9670@extension("VK_NV_clip_space_w_scaling") // 88
9671cmd void vkCmdSetViewportWScalingNV(
9672 VkCommandBuffer commandBuffer,
9673 u32 firstViewport,
9674 u32 viewportCount,
9675 const VkViewportWScalingNV* pViewportWScalings) {
9676}
9677
9678@extension("VK_EXT_direct_mode_display") // 89
9679cmd VkResult vkReleaseDisplayEXT(
9680 VkPhysicalDevice physicalDevice,
9681 VkDisplayKHR display) {
9682 return ?
9683}
9684
9685@extension("VK_EXT_acquire_xlib_display") // 90
9686cmd VkResult vkAcquireXlibDisplayEXT(
9687 VkPhysicalDevice physicalDevice,
9688 platform.Display* dpy,
9689 VkDisplayKHR display) {
9690 return ?
9691}
9692
9693@extension("VK_EXT_acquire_xlib_display") // 90
9694cmd VkResult vkGetRandROutputDisplayEXT(
9695 VkPhysicalDevice physicalDevice,
9696 platform.Display* dpy,
9697 platform.RROutput rrOutput,
9698 VkDisplayKHR* pDisplay) {
9699 return ?
9700}
9701
9702@extension("VK_EXT_display_surface_counter") // 91
9703cmd VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT(
9704 VkPhysicalDevice physicalDevice,
9705 VkSurfaceKHR surface,
9706 VkSurfaceCapabilities2EXT* pSurfaceCapabilities) {
9707 return ?
9708}
9709
9710@extension("VK_EXT_display_control") // 92
9711cmd VkResult vkDisplayPowerControlEXT(
9712 VkDevice device,
9713 VkDisplayKHR display,
9714 const VkDisplayPowerInfoEXT* pDisplayPowerInfo) {
9715 return ?
9716}
9717
9718@extension("VK_EXT_display_control") // 92
9719cmd VkResult vkRegisterDeviceEventEXT(
9720 VkDevice device,
9721 const VkDeviceEventInfoEXT* pDeviceEventInfo,
9722 const VkAllocationCallbacks* pAllocator,
9723 VkFence* pFence) {
9724 return ?
9725}
9726
9727@extension("VK_EXT_display_control") // 92
9728cmd VkResult vkRegisterDisplayEventEXT(
9729 VkDevice device,
9730 VkDisplayKHR display,
9731 const VkDisplayEventInfoEXT* pDisplayEventInfo,
9732 const VkAllocationCallbacks* pAllocator,
9733 VkFence* pFence) {
9734 return ?
9735}
9736
9737@extension("VK_EXT_display_control") // 92
9738cmd VkResult vkGetSwapchainCounterEXT(
9739 VkDevice device,
9740 VkSwapchainKHR swapchain,
9741 VkSurfaceCounterFlagBitsEXT counter,
9742 u64* pCounterValue) {
9743 return ?
9744}
9745
9746@extension("VK_GOOGLE_display_timing") // 93
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07009747cmd VkResult vkGetRefreshCycleDurationGOOGLE(
Jesse Hallfdc8ab32017-03-10 21:01:57 -08009748 VkDevice device,
9749 VkSwapchainKHR swapchain,
9750 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) {
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07009751 deviceObject := GetDevice(device)
9752 swapchainObject := GetSwapchain(swapchain)
9753
9754 displayTimingProperties := ?
9755 pDisplayTimingProperties[0] = displayTimingProperties
9756
9757 return ?
9758}
9759
Jesse Hallad250842017-03-10 18:35:38 -08009760@extension("VK_GOOGLE_display_timing") // 93
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07009761cmd VkResult vkGetPastPresentationTimingGOOGLE(
Jesse Hallfdc8ab32017-03-10 21:01:57 -08009762 VkDevice device,
9763 VkSwapchainKHR swapchain,
9764 u32* pPresentationTimingCount,
9765 VkPastPresentationTimingGOOGLE* pPresentationTimings) {
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07009766 return ?
9767}
9768
Jesse Hallad250842017-03-10 18:35:38 -08009769@extension("VK_EXT_discard_rectangles") // 100
9770cmd void vkCmdSetDiscardRectangleEXT(
Jesse Hall26763382016-05-20 07:13:52 -07009771 VkCommandBuffer commandBuffer,
Jesse Hallad250842017-03-10 18:35:38 -08009772 u32 firstDiscardRectangle,
9773 u32 discardRectangleCount,
9774 const VkRect2D* pDiscardRectangles) {
Jesse Hall26763382016-05-20 07:13:52 -07009775}
9776
Jesse Hallad250842017-03-10 18:35:38 -08009777@extension("VK_EXT_hdr_metadata") // 106
Jesse Hall889cd9a2017-02-25 22:12:23 -08009778cmd void vkSetHdrMetadataEXT(
Jesse Hallfdc8ab32017-03-10 21:01:57 -08009779 VkDevice device,
9780 u32 swapchainCount,
9781 const VkSwapchainKHR* pSwapchains,
9782 const VkHdrMetadataEXT* pMetadata) {
Jesse Hall889cd9a2017-02-25 22:12:23 -08009783}
9784
Jesse Hallad250842017-03-10 18:35:38 -08009785@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbes2e12cb82017-01-18 11:45:17 +13009786cmd VkResult vkGetSwapchainStatusKHR(
9787 VkDevice device,
9788 VkSwapchainKHR swapchain) {
9789 return ?
9790}
9791
Jesse Hall9492f992017-08-28 12:10:06 -07009792@extension("VK_KHR_external_fence_capabilities") // 113
9793cmd void vkGetPhysicalDeviceExternalFencePropertiesKHR(
9794 VkPhysicalDevice physicalDevice,
9795 const VkPhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo,
9796 VkExternalFencePropertiesKHR* pExternalFenceProperties) {
9797}
9798
9799@extension("VK_KHR_external_fence_win32") // 115
9800cmd VkResult vkImportFenceWin32HandleKHR(
9801 VkDevice device,
9802 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) {
9803 return ?
9804}
9805
9806@extension("VK_KHR_external_fence_win32") // 115
9807cmd VkResult vkGetFenceWin32HandleKHR(
9808 VkDevice device,
9809 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
9810 platform.HANDLE* pHandle) {
9811 return ?
9812}
9813
9814@extension("VK_KHR_external_fence_fd") // 116
9815cmd VkResult vkImportFenceFdKHR(
9816 VkDevice device,
9817 const VkImportFenceFdInfoKHR* pImportFenceFdInfo) {
9818 return ?
9819}
9820
9821@extension("VK_KHR_external_fence_fd") // 116
9822cmd VkResult vkGetFenceFdKHR(
9823 VkDevice device,
9824 const VkFenceGetFdInfoKHR* pGetFdInfo,
9825 int* pFd) {
9826 return ?
9827}
9828
Jesse Hall05556b12017-05-18 17:40:25 -07009829@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13009830cmd VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR(
9831 VkPhysicalDevice physicalDevice,
9832 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
9833 VkSurfaceCapabilities2KHR* pSurfaceCapabilities) {
9834 return ?
9835}
9836
Jesse Hall05556b12017-05-18 17:40:25 -07009837@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13009838cmd VkResult vkGetPhysicalDeviceSurfaceFormats2KHR(
9839 VkPhysicalDevice physicalDevice,
9840 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
9841 u32* pSurfaceFormatCount,
9842 VkSurfaceFormat2KHR* pSurfaceFormats) {
9843 return ?
9844}
9845
Jesse Hallad250842017-03-10 18:35:38 -08009846@extension("VK_MVK_ios_surface") // 123
9847cmd VkResult vkCreateIOSSurfaceMVK(
9848 VkInstance instance,
9849 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
9850 const VkAllocationCallbacks* pAllocator,
9851 VkSurfaceKHR* pSurface) {
9852 return ?
9853}
9854
9855@extension("VK_MVK_macos_surface") // 124
9856cmd VkResult vkCreateMacOSSurfaceMVK(
9857 VkInstance instance,
9858 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
9859 const VkAllocationCallbacks* pAllocator,
9860 VkSurfaceKHR* pSurface) {
9861 return ?
9862}
9863
Jesse Hall35b4de12018-01-17 22:06:20 -08009864@extension("VK_EXT_debug_utils") // 129
9865@external type void* PFN_vkDebugUtilsMessengerCallbackEXT
9866@extension("VK_EXT_debug_utils") // 129
9867@pfn cmd VkBool32 vkDebugUtilsMessengerCallbackEXT(
9868 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
9869 VkDebugUtilsMessageTypeFlagsEXT messageType,
9870 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData,
9871 void* pUserData) {
9872 return ?
9873}
9874
9875@extension("VK_EXT_debug_utils") // 129
9876cmd VkResult vkSetDebugUtilsObjectNameEXT(
9877 VkDevice device,
9878 const VkDebugUtilsObjectNameInfoEXT* pNameInfo) {
9879 return ?
9880}
9881
9882@extension("VK_EXT_debug_utils") // 129
9883cmd VkResult vkSetDebugUtilsObjectTagEXT(
9884 VkDevice device,
9885 const VkDebugUtilsObjectTagInfoEXT* pTagInfo) {
9886 return ?
9887}
9888
9889@extension("VK_EXT_debug_utils") // 129
9890cmd void vkQueueBeginDebugUtilsLabelEXT(
9891 VkQueue queue,
9892 const VkDebugUtilsLabelEXT* pLabelInfo) {
9893}
9894
9895@extension("VK_EXT_debug_utils") // 129
9896cmd void vkQueueEndDebugUtilsLabelEXT(VkQueue queue) {
9897}
9898
9899@extension("VK_EXT_debug_utils") // 129
9900cmd void vkQueueInsertDebugUtilsLabelEXT(
9901 VkQueue queue,
9902 const VkDebugUtilsLabelEXT* pLabelInfo) {
9903}
9904
9905@extension("VK_EXT_debug_utils") // 129
9906cmd void vkCmdBeginDebugUtilsLabelEXT(
9907 VkCommandBuffer commandBuffer,
9908 const VkDebugUtilsLabelEXT* pLabelInfo) {
9909}
9910
9911@extension("VK_EXT_debug_utils") // 129
9912cmd void vkCmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer) {
9913}
9914
9915@extension("VK_EXT_debug_utils") // 129
9916cmd void vkCmdInsertDebugUtilsLabelEXT(
9917 VkCommandBuffer commandBuffer,
9918 const VkDebugUtilsLabelEXT* pLabelInfo) {
9919}
9920
9921@extension("VK_EXT_debug_utils") // 129
9922cmd VkResult vkCreateDebugUtilsMessengerEXT(
9923 VkInstance instance,
9924 const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo,
9925 const VkAllocationCallbacks* pAllocator,
9926 VkDebugUtilsMessengerEXT* pMessenger) {
9927 return ?
9928}
9929
9930@extension("VK_EXT_debug_utils") // 129
9931cmd void vkDestroyDebugUtilsMessengerEXT(
9932 VkInstance instance,
9933 VkDebugUtilsMessengerEXT messenger,
9934 const VkAllocationCallbacks* pAllocator) {
9935}
9936
9937@extension("VK_EXT_debug_utils") // 129
9938cmd void vkSubmitDebugUtilsMessageEXT(
9939 VkInstance instance,
9940 VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity,
9941 VkDebugUtilsMessageTypeFlagsEXT messageTypes,
9942 const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData) {
9943}
9944
Jesse Halle2be6b82018-01-18 15:04:37 -08009945@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130
9946@vulkan1_1 // extension requires 1.1, and should become non-optional when 1.1 does
9947cmd VkResult vkGetAndroidHardwareBufferPropertiesANDROID(
9948 VkDevice device,
9949 const platform.AHardwareBuffer* buffer,
9950 VkAndroidHardwareBufferPropertiesANDROID* pProperties) {
9951 return ?
9952}
9953
9954@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130
9955@vulkan1_1 // extension requires 1.1, and should become non-optional when 1.1 does
9956cmd VkResult vkGetMemoryAndroidHardwareBufferANDROID(
9957 VkDevice device,
9958 const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo,
9959 platform.AHardwareBuffer** pBuffer) {
9960 return ?
9961}
9962
Jesse Hall77726222017-09-19 14:49:27 -05009963@extension("VK_EXT_sample_locations") // 144
9964cmd void vkCmdSetSampleLocationsEXT(
9965 VkCommandBuffer commandBuffer,
9966 const VkSampleLocationsInfoEXT* pSampleLocationsInfo) {
9967}
9968
9969@extension("VK_EXT_sample_locations") // 144
9970cmd void vkGetPhysicalDeviceMultisamplePropertiesEXT(
9971 VkPhysicalDevice physicalDevice,
9972 VkSampleCountFlagBits samples,
9973 VkMultisamplePropertiesEXT* pMultisampleProperties) {
9974}
9975
Jesse Hall9492f992017-08-28 12:10:06 -07009976@extension("VK_KHR_get_memory_requirements2") // 147
9977cmd void vkGetImageMemoryRequirements2KHR(
9978 VkDevice device,
9979 const VkImageMemoryRequirementsInfo2KHR* pInfo,
9980 VkMemoryRequirements2KHR* pMemoryRequirements) {
9981}
9982
9983@extension("VK_KHR_get_memory_requirements2") // 147
9984cmd void vkGetBufferMemoryRequirements2KHR(
9985 VkDevice device,
9986 const VkBufferMemoryRequirementsInfo2KHR* pInfo,
9987 VkMemoryRequirements2KHR* pMemoryRequirements) {
9988}
9989
9990@extension("VK_KHR_get_memory_requirements2") // 147
9991cmd void vkGetImageSparseMemoryRequirements2KHR(
9992 VkDevice device,
9993 const VkImageSparseMemoryRequirementsInfo2KHR* pInfo,
9994 u32* pSparseMemoryRequirementCount,
9995 VkSparseImageMemoryRequirements2KHR* pSparseMemoryRequirements) {
9996}
9997
Jesse Hall076f95d2017-09-20 11:34:47 -07009998@extension("VK_KHR_sampler_ycbcr_conversion") // 157
9999cmd VkResult vkCreateSamplerYcbcrConversionKHR(
10000 VkDevice device,
10001 const VkSamplerYcbcrConversionCreateInfoKHR* pCreateInfo,
10002 const VkAllocationCallbacks* pAllocator,
10003 VkSamplerYcbcrConversionKHR* pYcbcrConversion) {
10004 return ?
10005}
10006
10007@extension("VK_KHR_sampler_ycbcr_conversion") // 157
10008cmd void vkDestroySamplerYcbcrConversionKHR(
10009 VkDevice device,
10010 VkSamplerYcbcrConversionKHR ycbcrConversion,
10011 const VkAllocationCallbacks* pAllocator) {
10012}
10013
10014@extension("VK_KHR_bind_memory2") // 158
10015cmd VkResult vkBindBufferMemory2KHR(
10016 VkDevice device,
10017 u32 bindInfoCount,
10018 const VkBindBufferMemoryInfoKHR* pBindInfos) {
10019 return ?
10020}
10021
10022@extension("VK_KHR_bind_memory2") // 158
10023cmd VkResult vkBindImageMemory2KHR(
10024 VkDevice device,
10025 u32 bindInfoCount,
10026 const VkBindImageMemoryInfoKHR* pBindInfos) {
10027 return ?
10028}
10029
Jesse Hall77726222017-09-19 14:49:27 -050010030@extension("VK_EXT_validation_cache") // 161
10031cmd VkResult vkCreateValidationCacheEXT(
10032 VkDevice device,
10033 const VkValidationCacheCreateInfoEXT* pCreateInfo,
10034 const VkAllocationCallbacks* pAllocator,
10035 VkValidationCacheEXT* pValidationCache) {
10036 return ?
10037}
10038
10039@extension("VK_EXT_validation_cache") // 161
10040cmd void vkDestroyValidationCacheEXT(
10041 VkDevice device,
10042 VkValidationCacheEXT validationCache,
10043 const VkAllocationCallbacks* pAllocator) {
10044}
10045
10046@extension("VK_EXT_validation_cache") // 161
10047cmd VkResult vkMergeValidationCachesEXT(
10048 VkDevice device,
10049 VkValidationCacheEXT dstCache,
10050 u32 srcCacheCount,
10051 const VkValidationCacheEXT* pSrcCaches) {
10052 return ?
10053}
10054
10055@extension("VK_EXT_validation_cache") // 161
10056cmd VkResult vkGetValidationCacheDataEXT(
10057 VkDevice device,
10058 VkValidationCacheEXT validationCache,
10059 platform.size_t* pDataSize,
10060 void* pData) {
10061 return ?
10062}
10063
Daniel Kochf25f5bb2017-10-05 00:26:58 -040010064@extension("VK_KHR_maintenance3") // 169
10065cmd void vkGetDescriptorSetLayoutSupportKHR(
10066 VkDevice device,
10067 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
10068 VkDescriptorSetLayoutSupportKHR* pSupport) {
10069}
10070
Jesse Hall35b4de12018-01-17 22:06:20 -080010071@extension("VK_EXT_external_memory_host") // 179
10072cmd VkResult vkGetMemoryHostPointerPropertiesEXT(
10073 VkDevice device,
10074 VkExternalMemoryHandleTypeFlagBits handleType,
10075 const void* pHostPointer,
10076 VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties) {
10077 return ?
10078}
10079
Jesse Halld27f6aa2015-08-15 17:58:48 -070010080////////////////
10081// Validation //
10082////////////////
10083
10084extern void validate(string layerName, bool condition, string message)
10085
10086
10087/////////////////////////////
10088// Internal State Tracking //
10089/////////////////////////////
10090
10091StateObject State
10092
10093@internal class StateObject {
10094 // Dispatchable objects.
10095 map!(VkInstance, ref!InstanceObject) Instances
10096 map!(VkPhysicalDevice, ref!PhysicalDeviceObject) PhysicalDevices
10097 map!(VkDevice, ref!DeviceObject) Devices
10098 map!(VkQueue, ref!QueueObject) Queues
Jesse Hall3fbc8562015-11-29 22:10:52 -080010099 map!(VkCommandBuffer, ref!CommandBufferObject) CommandBuffers
Jesse Halld27f6aa2015-08-15 17:58:48 -070010100
10101 // Non-dispatchable objects.
10102 map!(VkDeviceMemory, ref!DeviceMemoryObject) DeviceMemories
10103 map!(VkBuffer, ref!BufferObject) Buffers
10104 map!(VkBufferView, ref!BufferViewObject) BufferViews
10105 map!(VkImage, ref!ImageObject) Images
10106 map!(VkImageView, ref!ImageViewObject) ImageViews
Jesse Halld27f6aa2015-08-15 17:58:48 -070010107 map!(VkShaderModule, ref!ShaderModuleObject) ShaderModules
Jesse Halld27f6aa2015-08-15 17:58:48 -070010108 map!(VkPipeline, ref!PipelineObject) Pipelines
10109 map!(VkPipelineLayout, ref!PipelineLayoutObject) PipelineLayouts
10110 map!(VkSampler, ref!SamplerObject) Samplers
10111 map!(VkDescriptorSet, ref!DescriptorSetObject) DescriptorSets
10112 map!(VkDescriptorSetLayout, ref!DescriptorSetLayoutObject) DescriptorSetLayouts
10113 map!(VkDescriptorPool, ref!DescriptorPoolObject) DescriptorPools
Jesse Halld27f6aa2015-08-15 17:58:48 -070010114 map!(VkFence, ref!FenceObject) Fences
10115 map!(VkSemaphore, ref!SemaphoreObject) Semaphores
10116 map!(VkEvent, ref!EventObject) Events
10117 map!(VkQueryPool, ref!QueryPoolObject) QueryPools
10118 map!(VkFramebuffer, ref!FramebufferObject) Framebuffers
10119 map!(VkRenderPass, ref!RenderPassObject) RenderPasses
10120 map!(VkPipelineCache, ref!PipelineCacheObject) PipelineCaches
Jesse Hall3fbc8562015-11-29 22:10:52 -080010121 map!(VkCommandPool, ref!CommandPoolObject) CommandPools
Jesse Hall1356b0d2015-11-23 17:24:58 -080010122 map!(VkSurfaceKHR, ref!SurfaceObject) Surfaces
Michael Lentine88594d72015-11-12 12:49:45 -080010123 map!(VkSwapchainKHR, ref!SwapchainObject) Swapchains
Jesse Halld27f6aa2015-08-15 17:58:48 -070010124}
10125
10126@internal class InstanceObject {
10127}
10128
10129@internal class PhysicalDeviceObject {
10130 VkInstance instance
10131}
10132
10133@internal class DeviceObject {
10134 VkPhysicalDevice physicalDevice
10135}
10136
10137@internal class QueueObject {
10138 VkDevice device
10139 VkQueueFlags flags
10140}
10141
Jesse Hall3fbc8562015-11-29 22:10:52 -080010142@internal class CommandBufferObject {
Jesse Halld27f6aa2015-08-15 17:58:48 -070010143 VkDevice device
10144 map!(u64, VkDeviceMemory) boundObjects
10145 VkQueueFlags queueFlags
10146}
10147
10148@internal class DeviceMemoryObject {
Jesse Hall3fbc8562015-11-29 22:10:52 -080010149 VkDevice device
10150 VkDeviceSize allocationSize
10151 map!(u64, VkDeviceSize) boundObjects
10152 map!(VkCommandBuffer, VkCommandBuffer) boundCommandBuffers
Jesse Halld27f6aa2015-08-15 17:58:48 -070010153}
10154
10155@internal class BufferObject {
10156 VkDevice device
Jesse Hall3fbc8562015-11-29 22:10:52 -080010157 VkDeviceMemory memory
10158 VkDeviceSize memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -070010159}
10160
10161@internal class BufferViewObject {
10162 VkDevice device
10163 VkBuffer buffer
10164}
10165
10166@internal class ImageObject {
10167 VkDevice device
Jesse Hall3fbc8562015-11-29 22:10:52 -080010168 VkDeviceMemory memory
10169 VkDeviceSize memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -070010170}
10171
10172@internal class ImageViewObject {
10173 VkDevice device
10174 VkImage image
10175}
10176
Jesse Halld27f6aa2015-08-15 17:58:48 -070010177@internal class ShaderObject {
10178 VkDevice device
10179}
10180
10181@internal class ShaderModuleObject {
10182 VkDevice device
10183}
10184
10185@internal class PipelineObject {
10186 VkDevice device
10187}
10188
10189@internal class PipelineLayoutObject {
10190 VkDevice device
10191}
10192
10193@internal class SamplerObject {
10194 VkDevice device
10195}
10196
10197@internal class DescriptorSetObject {
10198 VkDevice device
10199}
10200
10201@internal class DescriptorSetLayoutObject {
10202 VkDevice device
10203}
10204
10205@internal class DescriptorPoolObject {
10206 VkDevice device
10207}
10208
Jesse Halld27f6aa2015-08-15 17:58:48 -070010209@internal class FenceObject {
10210 VkDevice device
10211 bool signaled
10212}
10213
10214@internal class SemaphoreObject {
10215 VkDevice device
10216}
10217
10218@internal class EventObject {
10219 VkDevice device
10220}
10221
10222@internal class QueryPoolObject {
10223 VkDevice device
10224}
10225
10226@internal class FramebufferObject {
10227 VkDevice device
10228}
10229
10230@internal class RenderPassObject {
10231 VkDevice device
10232}
10233
10234@internal class PipelineCacheObject {
10235 VkDevice device
10236}
10237
Jesse Hall3fbc8562015-11-29 22:10:52 -080010238@internal class CommandPoolObject {
Jesse Halld27f6aa2015-08-15 17:58:48 -070010239 VkDevice device
10240}
10241
Jesse Hall1356b0d2015-11-23 17:24:58 -080010242@internal class SurfaceObject {
10243 VkInstance instance
10244}
10245
Michael Lentine88594d72015-11-12 12:49:45 -080010246@internal class SwapchainObject {
10247 VkDevice device
10248}
10249
Jesse Halld27f6aa2015-08-15 17:58:48 -070010250macro ref!InstanceObject GetInstance(VkInstance instance) {
10251 assert(instance in State.Instances)
10252 return State.Instances[instance]
10253}
10254
10255macro ref!PhysicalDeviceObject GetPhysicalDevice(VkPhysicalDevice physicalDevice) {
10256 assert(physicalDevice in State.PhysicalDevices)
10257 return State.PhysicalDevices[physicalDevice]
10258}
10259
10260macro ref!DeviceObject GetDevice(VkDevice device) {
10261 assert(device in State.Devices)
10262 return State.Devices[device]
10263}
10264
10265macro ref!QueueObject GetQueue(VkQueue queue) {
10266 assert(queue in State.Queues)
10267 return State.Queues[queue]
10268}
10269
Jesse Hall3fbc8562015-11-29 22:10:52 -080010270macro ref!CommandBufferObject GetCommandBuffer(VkCommandBuffer commandBuffer) {
10271 assert(commandBuffer in State.CommandBuffers)
10272 return State.CommandBuffers[commandBuffer]
Jesse Halld27f6aa2015-08-15 17:58:48 -070010273}
10274
Jesse Hall3fbc8562015-11-29 22:10:52 -080010275macro ref!DeviceMemoryObject GetDeviceMemory(VkDeviceMemory memory) {
10276 assert(memory in State.DeviceMemories)
10277 return State.DeviceMemories[memory]
Jesse Halld27f6aa2015-08-15 17:58:48 -070010278}
10279
10280macro ref!BufferObject GetBuffer(VkBuffer buffer) {
10281 assert(buffer in State.Buffers)
10282 return State.Buffers[buffer]
10283}
10284
10285macro ref!BufferViewObject GetBufferView(VkBufferView bufferView) {
10286 assert(bufferView in State.BufferViews)
10287 return State.BufferViews[bufferView]
10288}
10289
10290macro ref!ImageObject GetImage(VkImage image) {
10291 assert(image in State.Images)
10292 return State.Images[image]
10293}
10294
10295macro ref!ImageViewObject GetImageView(VkImageView imageView) {
10296 assert(imageView in State.ImageViews)
10297 return State.ImageViews[imageView]
10298}
10299
Jesse Halld27f6aa2015-08-15 17:58:48 -070010300macro ref!ShaderModuleObject GetShaderModule(VkShaderModule shaderModule) {
10301 assert(shaderModule in State.ShaderModules)
10302 return State.ShaderModules[shaderModule]
10303}
10304
10305macro ref!PipelineObject GetPipeline(VkPipeline pipeline) {
10306 assert(pipeline in State.Pipelines)
10307 return State.Pipelines[pipeline]
10308}
10309
10310macro ref!PipelineLayoutObject GetPipelineLayout(VkPipelineLayout pipelineLayout) {
10311 assert(pipelineLayout in State.PipelineLayouts)
10312 return State.PipelineLayouts[pipelineLayout]
10313}
10314
10315macro ref!SamplerObject GetSampler(VkSampler sampler) {
10316 assert(sampler in State.Samplers)
10317 return State.Samplers[sampler]
10318}
10319
10320macro ref!DescriptorSetObject GetDescriptorSet(VkDescriptorSet descriptorSet) {
10321 assert(descriptorSet in State.DescriptorSets)
10322 return State.DescriptorSets[descriptorSet]
10323}
10324
10325macro ref!DescriptorSetLayoutObject GetDescriptorSetLayout(VkDescriptorSetLayout descriptorSetLayout) {
10326 assert(descriptorSetLayout in State.DescriptorSetLayouts)
10327 return State.DescriptorSetLayouts[descriptorSetLayout]
10328}
10329
10330macro ref!DescriptorPoolObject GetDescriptorPool(VkDescriptorPool descriptorPool) {
10331 assert(descriptorPool in State.DescriptorPools)
10332 return State.DescriptorPools[descriptorPool]
10333}
10334
Jesse Halld27f6aa2015-08-15 17:58:48 -070010335macro ref!FenceObject GetFence(VkFence fence) {
10336 assert(fence in State.Fences)
10337 return State.Fences[fence]
10338}
10339
10340macro ref!SemaphoreObject GetSemaphore(VkSemaphore semaphore) {
10341 assert(semaphore in State.Semaphores)
10342 return State.Semaphores[semaphore]
10343}
10344
10345macro ref!EventObject GetEvent(VkEvent event) {
10346 assert(event in State.Events)
10347 return State.Events[event]
10348}
10349
10350macro ref!QueryPoolObject GetQueryPool(VkQueryPool queryPool) {
10351 assert(queryPool in State.QueryPools)
10352 return State.QueryPools[queryPool]
10353}
10354
10355macro ref!FramebufferObject GetFramebuffer(VkFramebuffer framebuffer) {
10356 assert(framebuffer in State.Framebuffers)
10357 return State.Framebuffers[framebuffer]
10358}
10359
10360macro ref!RenderPassObject GetRenderPass(VkRenderPass renderPass) {
10361 assert(renderPass in State.RenderPasses)
10362 return State.RenderPasses[renderPass]
10363}
10364
10365macro ref!PipelineCacheObject GetPipelineCache(VkPipelineCache pipelineCache) {
10366 assert(pipelineCache in State.PipelineCaches)
10367 return State.PipelineCaches[pipelineCache]
10368}
10369
Jesse Hall3fbc8562015-11-29 22:10:52 -080010370macro ref!CommandPoolObject GetCommandPool(VkCommandPool commandPool) {
10371 assert(commandPool in State.CommandPools)
10372 return State.CommandPools[commandPool]
Jesse Hallf09c6b12015-08-15 19:54:28 -070010373}
Michael Lentine88594d72015-11-12 12:49:45 -080010374
Jesse Hall1356b0d2015-11-23 17:24:58 -080010375macro ref!SurfaceObject GetSurface(VkSurfaceKHR surface) {
10376 assert(surface in State.Surfaces)
10377 return State.Surfaces[surface]
10378}
10379
Michael Lentine88594d72015-11-12 12:49:45 -080010380macro ref!SwapchainObject GetSwapchain(VkSwapchainKHR swapchain) {
10381 assert(swapchain in State.Swapchains)
10382 return State.Swapchains[swapchain]
10383}
Jesse Halld8bade02015-11-24 10:24:18 -080010384
10385macro VkQueueFlags AddQueueFlag(VkQueueFlags flags, VkQueueFlagBits bit) {
10386 return as!VkQueueFlags(as!u32(flags) | as!u32(bit))
10387}