blob: 7a8647a7cda81c608e7e9bc5f106550bcb58bc35 [file] [log] [blame]
Jesse Halld27f6aa2015-08-15 17:58:48 -07001// Copyright (c) 2015 The Khronos Group Inc.
2//
3// Permission is hereby granted, free of charge, to any person obtaining a
4// copy of this software and/or associated documentation files (the
5// "Materials"), to deal in the Materials without restriction, including
6// without limitation the rights to use, copy, modify, merge, publish,
7// distribute, sublicense, and/or sell copies of the Materials, and to
8// permit persons to whom the Materials are furnished to do so, subject to
9// the following conditions:
10//
11// The above copyright notice and this permission notice shall be included
12// in all copies or substantial portions of the Materials.
13//
14// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17// IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18// CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19// TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20// MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
21
22import platform "platform.api"
23
24///////////////
25// Constants //
26///////////////
27
28// API version (major.minor.patch)
Jesse Hall3dd678a2016-01-08 21:52:01 -080029define VERSION_MAJOR 1
30define VERSION_MINOR 0
Jesse Hall77726222017-09-19 14:49:27 -050031define VERSION_PATCH 60
Jesse Halld27f6aa2015-08-15 17:58:48 -070032
33// API limits
Jesse Hall65ab5522015-11-30 00:07:16 -080034define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256
35define VK_UUID_SIZE 16
36define VK_MAX_EXTENSION_NAME_SIZE 256
37define VK_MAX_DESCRIPTION_SIZE 256
38define VK_MAX_MEMORY_TYPES 32
39define VK_MAX_MEMORY_HEAPS 16 /// The maximum number of unique memory heaps, each of which supporting 1 or more memory types.
Jesse Hallad250842017-03-10 18:35:38 -080040define VK_MAX_DEVICE_GROUP_SIZE_KHX 32
Jesse Hall9492f992017-08-28 12:10:06 -070041//@extension("VK_KHR_external_memory_capabilities")
42define VK_LUID_SIZE_KHR 8
43//@extension("VK_KHR_external_memory")
44define VK_QUEUE_FAMILY_EXTERNAL_KHR -2
Jesse Halld27f6aa2015-08-15 17:58:48 -070045
46// API keywords
47define VK_TRUE 1
48define VK_FALSE 0
Jesse Hall5ae3abb2015-10-08 14:00:22 -070049
50// API keyword, but needs special handling by some templates
51define NULL_HANDLE 0
Jesse Halld27f6aa2015-08-15 17:58:48 -070052
Jesse Halleb02c472017-02-24 15:13:45 -080053// 1
Jesse Hall33faaad2016-01-24 21:00:49 -080054@extension("VK_KHR_surface") define VK_KHR_SURFACE_SPEC_VERSION 25
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080055@extension("VK_KHR_surface") define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080056
Jesse Halleb02c472017-02-24 15:13:45 -080057// 2
Jesse Hall26763382016-05-20 07:13:52 -070058@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_SPEC_VERSION 68
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080059@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain"
Jesse Hall1356b0d2015-11-23 17:24:58 -080060
Jesse Halleb02c472017-02-24 15:13:45 -080061// 3
Jesse Hall543a7ff2016-01-08 16:38:30 -080062@extension("VK_KHR_display") define VK_KHR_DISPLAY_SPEC_VERSION 21
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080063@extension("VK_KHR_display") define VK_KHR_DISPLAY_EXTENSION_NAME "VK_KHR_display"
Jesse Hall1356b0d2015-11-23 17:24:58 -080064
Jesse Halleb02c472017-02-24 15:13:45 -080065// 4
Jesse Hall543a7ff2016-01-08 16:38:30 -080066@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 9
Jesse Hall0e74f002015-11-30 11:37:59 -080067@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain"
Jesse Hall1356b0d2015-11-23 17:24:58 -080068
Jesse Halleb02c472017-02-24 15:13:45 -080069// 5
Jesse Hall543a7ff2016-01-08 16:38:30 -080070@extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080071@extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_NAME "VK_KHR_xlib_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080072
Jesse Halleb02c472017-02-24 15:13:45 -080073// 6
Jesse Hall543a7ff2016-01-08 16:38:30 -080074@extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080075@extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_NAME "VK_KHR_xcb_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080076
Jesse Halleb02c472017-02-24 15:13:45 -080077// 7
Jesse Hallfdc8ab32017-03-10 21:01:57 -080078@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080079@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_NAME "VK_KHR_wayland_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080080
Jesse Halleb02c472017-02-24 15:13:45 -080081// 8
Jesse Hall543a7ff2016-01-08 16:38:30 -080082@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_SPEC_VERSION 4
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080083@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_NAME "VK_KHR_mir_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080084
Jesse Halleb02c472017-02-24 15:13:45 -080085// 9
Jesse Hall33faaad2016-01-24 21:00:49 -080086@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080087@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_NAME "VK_KHR_android_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080088
Jesse Halleb02c472017-02-24 15:13:45 -080089// 10
Jesse Hall7ba0ac72017-07-07 17:13:23 -070090@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_SPEC_VERSION 6
Jesse Hall3e0dc8f2015-11-30 00:42:57 -080091@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_NAME "VK_KHR_win32_surface"
Jesse Hall1356b0d2015-11-23 17:24:58 -080092
Jesse Halleb02c472017-02-24 15:13:45 -080093// 11
Chris Forbes1d4e5542017-02-15 19:38:50 +130094@extension("VK_ANDROID_native_buffer") define VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION 7
Chia-I Wub262ddc2016-03-22 07:38:20 +080095@extension("VK_ANDROID_native_buffer") define VK_ANDROID_NATIVE_BUFFER_NAME "VK_ANDROID_native_buffer"
96
Jesse Halleb02c472017-02-24 15:13:45 -080097// 12
Jesse Hall7ba0ac72017-07-07 17:13:23 -070098@extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_SPEC_VERSION 8
Jesse Hall715b86a2016-01-16 16:34:29 -080099@extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_NAME "VK_EXT_debug_report"
100
Jesse Halleb02c472017-02-24 15:13:45 -0800101// 13
Jesse Hall26763382016-05-20 07:13:52 -0700102@extension("VK_NV_glsl_shader") define VK_NV_GLSL_SHADER_SPEC_VERSION 1
103@extension("VK_NV_glsl_shader") define VK_NV_GLSL_SHADER_NAME "VK_NV_glsl_shader"
104
Jesse Hall77726222017-09-19 14:49:27 -0500105// 14
106@extension("VK_EXT_depth_range_unrestricted") define VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION 1
107@extension("VK_EXT_depth_range_unrestricted") define VK_EXT_DEPTH_RANGE_UNRESTRICTED_NAME "VK_EXT_depth_range_unrestricted"
108
Jesse Halleb02c472017-02-24 15:13:45 -0800109// 15
Jesse Hall26763382016-05-20 07:13:52 -0700110@extension("VK_KHR_sampler_mirror_clamp_to_edge") define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 1
111@extension("VK_KHR_sampler_mirror_clamp_to_edge") define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_NAME "VK_KHR_sampler_mirror_clamp_to_edge"
112
Jesse Halleb02c472017-02-24 15:13:45 -0800113// 16
Jesse Hall26763382016-05-20 07:13:52 -0700114@extension("VK_IMG_filter_cubic") define VK_IMG_FILTER_CUBIC_SPEC_VERSION 1
115@extension("VK_IMG_filter_cubic") define VK_IMG_FILTER_CUBIC_NAME "VK_IMG_filter_cubic"
116
Jesse Halleb02c472017-02-24 15:13:45 -0800117// 19
Jesse Hall26763382016-05-20 07:13:52 -0700118@extension("VK_AMD_rasterization_order") define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1
119@extension("VK_AMD_rasterization_order") define VK_AMD_RASTERIZATION_ORDER_NAME "VK_AMD_rasterization_order"
120
Jesse Halleb02c472017-02-24 15:13:45 -0800121// 21
Jesse Hall56d386a2016-07-26 15:20:40 -0700122@extension("VK_AMD_shader_trinary_minmax") define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1
123@extension("VK_AMD_shader_trinary_minmax") define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax"
124
Jesse Halleb02c472017-02-24 15:13:45 -0800125// 22
Jesse Hall56d386a2016-07-26 15:20:40 -0700126@extension("VK_AMD_shader_explicit_vertex_parameter") define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1
127@extension("VK_AMD_shader_explicit_vertex_parameter") define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter"
128
Jesse Halleb02c472017-02-24 15:13:45 -0800129// 23
Jesse Hall8f49fcb2017-03-06 16:02:58 -0800130@extension("VK_EXT_debug_marker") define VK_EXT_DEBUG_MARKER_SPEC_VERSION 4
Jesse Hall26763382016-05-20 07:13:52 -0700131@extension("VK_EXT_debug_marker") define VK_EXT_DEBUG_MARKER_NAME "VK_EXT_debug_marker"
132
Jesse Halleb02c472017-02-24 15:13:45 -0800133// 26
Jesse Hall56d386a2016-07-26 15:20:40 -0700134@extension("VK_AMD_gcn_shader") define VK_AMD_GCN_SHADER_SPEC_VERSION 1
135@extension("VK_AMD_gcn_shader") define VK_AMD_GCN_SHADER_EXTENSION_NAME "VK_AMD_gcn_shader"
136
Jesse Halleb02c472017-02-24 15:13:45 -0800137// 27
Jesse Hall56d386a2016-07-26 15:20:40 -0700138@extension("VK_NV_dedicated_allocation") define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1
139@extension("VK_NV_dedicated_allocation") define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation"
140
Jesse Halleb02c472017-02-24 15:13:45 -0800141// 28
Chris Forbes289cb792016-12-30 15:03:55 +1300142@extension("VK_IMG_format_pvrtc") define VK_IMG_FORMAT_PVRTC_SPEC_VERSION 1
143@extension("VK_IMG_format_pvrtc") define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc"
144
Jesse Halleb02c472017-02-24 15:13:45 -0800145// 34
146@extension("VK_AMD_draw_indirect_count") define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1
147@extension("VK_AMD_draw_indirect_count") define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count"
148
149// 36
150@extension("VK_AMD_negative_viewport_height") define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1
151@extension("VK_AMD_negative_viewport_height") define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height"
152
153// 37
154@extension("VK_AMD_gpu_shader_half_float") define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 1
155@extension("VK_AMD_gpu_shader_half_float") define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float"
156
157// 38
158@extension("VK_AMD_shader_ballot") define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1
159@extension("VK_AMD_shader_ballot") define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot"
160
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700161// 42
162@extension("VK_AMD_texture_gather_bias_lod") define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1
163@extension("VK_AMD_texture_gather_bias_lod") define VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME "VK_AMD_texture_gather_bias_lod"
164
Jesse Hallad250842017-03-10 18:35:38 -0800165// 54
166@extension("VK_KHX_multiview") define VK_KHX_MULTIVIEW_SPEC_VERSION 1
167@extension("VK_KHX_multiview") define VK_KHX_MULTIVIEW_EXTENSION_NAME "VK_KHX_multiview"
168
Jesse Halleb02c472017-02-24 15:13:45 -0800169// 56
Chris Forbes289cb792016-12-30 15:03:55 +1300170@extension("VK_NV_external_memory_capabilities") define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
171@extension("VK_NV_external_memory_capabilities") define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities"
172
Jesse Halleb02c472017-02-24 15:13:45 -0800173// 57
Chris Forbes289cb792016-12-30 15:03:55 +1300174@extension("VK_NV_external_memory") define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1
175@extension("VK_NV_external_memory") define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory"
176
Jesse Halleb02c472017-02-24 15:13:45 -0800177// 58
Chris Forbes289cb792016-12-30 15:03:55 +1300178@extension("VK_NV_external_memory_win32") define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
179@extension("VK_NV_external_memory_win32") define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32"
180
Jesse Halleb02c472017-02-24 15:13:45 -0800181// 59
Chris Forbes289cb792016-12-30 15:03:55 +1300182@extension("VK_NV_win32_keyed_mutex") define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 1
183@extension("VK_NV_win32_keyed_mutex") define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex"
184
Jesse Hall889cd9a2017-02-25 22:12:23 -0800185// 60
186@extension("VK_KHR_get_physical_device_properties2") define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 1
187@extension("VK_KHR_get_physical_device_properties2") define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2"
188
Jesse Hallad250842017-03-10 18:35:38 -0800189// 61
190@extension("VK_KHX_device_group") define VK_KHX_DEVICE_GROUP_SPEC_VERSION 1
191@extension("VK_KHX_device_group") define VK_KHX_DEVICE_GROUP_EXTENSION_NAME "VK_KHX_device_group"
192
Jesse Halleb02c472017-02-24 15:13:45 -0800193// 62
Chris Forbes289cb792016-12-30 15:03:55 +1300194@extension("VK_EXT_validation_flags") define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 1
195@extension("VK_EXT_validation_flags") define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags"
196
Jesse Hall77ad05b2017-03-10 22:02:20 -0800197// 63
198@extension("VK_NN_vi_surface") define VK_NN_VI_SURFACE_SPEC_VERSION 1
199@extension("VK_NN_vi_surface") define VK_NN_VI_SURFACE_EXTENSION_NAME "VK_NN_vi_surface"
200
201// 64
202@extension("VK_KHR_shader_draw_parameters") define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1
203@extension("VK_KHR_shader_draw_parameters") define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters"
204
205// 65
206@extension("VK_EXT_shader_subgroup_ballot") define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1
207@extension("VK_EXT_shader_subgroup_ballot") define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot"
208
209// 66
210@extension("VK_EXT_shader_subgroup_vote") define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1
211@extension("VK_EXT_shader_subgroup_vote") define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote"
212
213// 70
214@extension("VK_KHR_maintenance1") define VK_KHR_MAINTENANCE1_SPEC_VERSION 1
215@extension("VK_KHR_maintenance1") define VK_KHR_MAINTENANCE1_EXTENSION_NAME "VK_KHR_maintenance1"
216
Jesse Hallad250842017-03-10 18:35:38 -0800217// 71
218@extension("VK_KHX_device_group_creation") define VK_KHX_DEVICE_GROUP_CREATION_SPEC_VERSION 1
219@extension("VK_KHX_device_group_creation") define VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHX_device_group_creation"
220
221// 72
Jesse Hall9492f992017-08-28 12:10:06 -0700222@extension("VK_KHR_external_memory_capabilities") define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1
223@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 -0800224
225// 73
Jesse Hall9492f992017-08-28 12:10:06 -0700226@extension("VK_KHR_external_memory") define VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION 1
227@extension("VK_KHR_external_memory") define VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHR_external_memory"
Jesse Hallad250842017-03-10 18:35:38 -0800228
229// 74
Jesse Hall9492f992017-08-28 12:10:06 -0700230@extension("VK_KHR_external_memory_win32") define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1
231@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 -0800232
233// 75
Jesse Hall9492f992017-08-28 12:10:06 -0700234@extension("VK_KHR_external_memory_fd") define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1
235@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 -0800236
237// 76
Jesse Hall9492f992017-08-28 12:10:06 -0700238@extension("VK_KHR_win32_keyed_mutex") define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1
239@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 -0800240
241// 77
Jesse Hall9492f992017-08-28 12:10:06 -0700242@extension("VK_KHR_external_semaphore_capabilities") define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1
243@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 -0800244
245// 78
Jesse Hall9492f992017-08-28 12:10:06 -0700246@extension("VK_KHR_external_semaphore") define VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION 1
247@extension("VK_KHR_external_semaphore") define VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHR_external_semaphore"
Jesse Hallad250842017-03-10 18:35:38 -0800248
249// 79
Jesse Hall9492f992017-08-28 12:10:06 -0700250@extension("VK_KHR_external_semaphore_win32") define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1
251@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 -0800252
253// 80
Jesse Hall9492f992017-08-28 12:10:06 -0700254@extension("VK_KHR_external_semaphore_fd") define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1
255@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 -0800256
257// 81
258@extension("VK_KHR_push_descriptor") define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 1
259@extension("VK_KHR_push_descriptor") define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor"
260
Jesse Hall9492f992017-08-28 12:10:06 -0700261// 84
262@extension("VK_KHR_16bit_storage") define VK_KHR_16BIT_STORAGE_SPEC_VERSION 1
263@extension("VK_KHR_16bit_storage") define VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage"
264
Jesse Hall889cd9a2017-02-25 22:12:23 -0800265// 85
266@extension("VK_KHR_incremental_present") define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1
Jesse Hallf5ad48b2017-03-20 13:09:19 -0700267@extension("VK_KHR_incremental_present") define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present"
Jesse Hall889cd9a2017-02-25 22:12:23 -0800268
Jesse Hallad250842017-03-10 18:35:38 -0800269// 86
270@extension("VK_KHR_descriptor_update_template") define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1
271@extension("VK_KHR_descriptor_update_template") define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template"
272
Jesse Halleb02c472017-02-24 15:13:45 -0800273// 87
Jesse Hall77726222017-09-19 14:49:27 -0500274@extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3
Chris Forbes289cb792016-12-30 15:03:55 +1300275@extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands"
276
Jesse Hallad250842017-03-10 18:35:38 -0800277// 88
278@extension("VK_NV_clip_space_w_scaling") define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1
279@extension("VK_NV_clip_space_w_scaling") define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling"
280
Jesse Hall77ad05b2017-03-10 22:02:20 -0800281// 89
282@extension("VK_EXT_direct_mode_display") define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1
283@extension("VK_EXT_direct_mode_display") define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display"
284
285// 90
286@extension("VK_EXT_acquire_xlib_display") define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1
287@extension("VK_EXT_acquire_xlib_display") define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display"
288
289// 91
290@extension("VK_EXT_display_surface_counter") define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1
291@extension("VK_EXT_display_surface_counter") define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter"
292
293// 92
294@extension("VK_EXT_display_control") define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1
295@extension("VK_EXT_display_control") define VK_EXT_DISPLAY_CONTROL_COUNTER_EXTENSION_NAME "VK_EXT_display_control"
296
Jesse Hall889cd9a2017-02-25 22:12:23 -0800297// 93
298@extension("VK_GOOGLE_display_timing") define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1
Jesse Hallfdc8ab32017-03-10 21:01:57 -0800299@extension("VK_GOOGLE_display_timing") define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing"
Jesse Hall889cd9a2017-02-25 22:12:23 -0800300
Jesse Hallad250842017-03-10 18:35:38 -0800301// 95
302@extension("VK_NV_sample_mask_override_coverage") define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1
303@extension("VK_NV_sample_mask_override_coverage") define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage"
304
305// 96
306@extension("VK_NV_geometry_shader_passthrough") define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1
307@extension("VK_NV_geometry_shader_passthrough") define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough"
308
309// 97
310@extension("VK_NV_viewport_array2") define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION 1
311@extension("VK_NV_viewport_array2") define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME "VK_NV_viewport_array2"
312
313// 98
314@extension("VK_NVX_multiview_per_view_attributes") define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1
315@extension("VK_NVX_multiview_per_view_attributes") define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes"
316
317// 99
318@extension("VK_NV_viewport_swizzle") define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1
319@extension("VK_NV_viewport_swizzle") define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle"
320
321// 100
322@extension("VK_EXT_discard_rectangles") define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1
323@extension("VK_EXT_discard_rectangles") define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles"
324
Jesse Hall77ad05b2017-03-10 22:02:20 -0800325// 105
Jesse Hall77726222017-09-19 14:49:27 -0500326@extension("VK_EXT_swapchain_colorspace") define VK_EXT_SWAPCHAIN_COLORSPACE_SPEC_VERSION 3
Jesse Hallf5ad48b2017-03-20 13:09:19 -0700327@extension("VK_EXT_swapchain_colorspace") define VK_EXT_SWAPCHAIN_COLORSPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace"
Jesse Hall77ad05b2017-03-10 22:02:20 -0800328
Jesse Hall889cd9a2017-02-25 22:12:23 -0800329// 106
330@extension("VK_EXT_hdr_metadata") define VK_EXT_HDR_METADATA_SPEC_VERSION 1
331@extension("VK_EXT_hdr_metadata") define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata"
332
333// 112
Chris Forbes1d5f68c2017-01-31 10:17:01 +1300334@extension("VK_KHR_shared_presentable_image") define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1
335@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 +1300336
Jesse Hall9492f992017-08-28 12:10:06 -0700337// 113
338@extension("VK_KHR_external_fence_capabilities") define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION 1
339@extension("VK_KHR_external_fence_capabilities") define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_fence_capabilities"
340
341// 114
342@extension("VK_KHR_external_fence") define VK_KHR_EXTERNAL_FENCE_SPEC_VERSION 1
343@extension("VK_KHR_external_fence") define VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME "VK_KHR_external_fence"
344
345// 115
346@extension("VK_KHR_external_fence_win32") define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1
347@extension("VK_KHR_external_fence_win32") define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32"
348
349// 116
350@extension("VK_KHR_external_fence_fd") define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1
351@extension("VK_KHR_external_fence_fd") define VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME "VK_KHR_external_fence_fd"
352
Jesse Hall05556b12017-05-18 17:40:25 -0700353// 120
Chris Forbese2d3ee12017-03-16 16:10:15 +1300354@extension("VK_KHR_get_surface_capabilities2") define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1
355@extension("VK_KHR_get_surface_capabilities2") define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2"
356
Jesse Hall9492f992017-08-28 12:10:06 -0700357// 121
358@extension("VK_KHR_variable_pointers") define VK_KHR_VARIABLE_POINTERS_SPEC_VERSION 1
359@extension("VK_KHR_variable_pointers") define VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME "VK_KHR_variable_pointers"
360
Jesse Hallad250842017-03-10 18:35:38 -0800361// 123
362@extension("VK_MVK_ios_surface") define VK_MVK_IOS_SURFACE_SPEC_VERSION 1
363@extension("VK_MVK_ios_surface") define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface"
364
365// 124
366@extension("VK_MVK_macos_surface") define VK_MVK_MACOS_SURFACE_SPEC_VERSION 1
367@extension("VK_MVK_macos_surface") define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface"
368
Jesse Hall9492f992017-08-28 12:10:06 -0700369// 128
Jesse Hall77726222017-09-19 14:49:27 -0500370@extension("VK_KHR_dedicated_allocation") define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3
Jesse Hall9492f992017-08-28 12:10:06 -0700371@extension("VK_KHR_dedicated_allocation") define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation"
372
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700373// 131
374@extension("VK_EXT_sampler_filter_minmax") define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 1
375@extension("VK_EXT_sampler_filter_minmax") define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
376
Jesse Hall9492f992017-08-28 12:10:06 -0700377// 132
378@extension("VK_KHR_storage_buffer_storage_class") define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION 1
379@extension("VK_KHR_storage_buffer_storage_class") define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME "VK_KHR_storage_buffer_storage_class"
380
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700381// 133
382@extension("VK_AMD_gpu_shader_int16") define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 1
383@extension("VK_AMD_gpu_shader_int16") define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME "VK_AMD_gpu_shader_int16"
384
Jesse Hall77726222017-09-19 14:49:27 -0500385// 137
386@extension("VK_AMD_mixed_attachment_samples") define VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION 1
387@extension("VK_AMD_mixed_attachment_samples") define VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME "VK_AMD_mixed_attachment_samples"
388
389// 138
390@extension("VK_AMD_shader_fragment_mask") define VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION 1
391@extension("VK_AMD_shader_fragment_mask") define VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME "VK_AMD_shader_fragment_mask"
392
393// 141
394@extension("VK_EXT_shader_stencil_export") define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1
395@extension("VK_EXT_shader_stencil_export") define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME "VK_EXT_shader_stencil_export"
396
397// 144
398@extension("VK_EXT_sample_locations") define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1
399@extension("VK_EXT_sample_locations") define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations"
400
401// 145
402@extension("VK_KHR_relaxed_block_layout") define VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION 1
403@extension("VK_KHR_relaxed_block_layout") define VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME "VK_KHR_relaxed_block_layout"
404
Jesse Hall9492f992017-08-28 12:10:06 -0700405// 147
406@extension("VK_KHR_get_memory_requirements2") define VK_KHR_GET_MEMORY_REQUIREMENTS2_SPEC_VERSION 1
407@extension("VK_KHR_get_memory_requirements2") define VK_KHR_GET_MEMORY_REQUIREMENTS2_EXTENSION_NAME "VK_KHR_get_memory_requirements2"
408
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700409// 149
410@extension("VK_EXT_blend_operation_advanced") define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2
411@extension("VK_EXT_blend_operation_advanced") define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
412
413// 150
414@extension("VK_NV_fragment_coverage_to_color") define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1
415@extension("VK_NV_fragment_coverage_to_color") define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME "VK_NV_fragment_coverage_to_color"
416
417// 153
418@extension("VK_NV_framebuffer_mixed_samples") define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1
419@extension("VK_NV_framebuffer_mixed_samples") define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME "VK_NV_framebuffer_mixed_samples"
420
421// 154
422@extension("VK_NV_fill_rectangle") define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1
423@extension("VK_NV_fill_rectangle") define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle"
424
Jesse Hall77726222017-09-19 14:49:27 -0500425// 156
426@extension("VK_EXT_post_depth_coverage") define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1
427@extension("VK_EXT_post_depth_coverage") define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage"
428
429// 161
430@extension("VK_EXT_validation_cache") define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1
431@extension("VK_EXT_validation_cache") define VK_EXT_VALIDATION_CACHE_EXTENSION_NAME "VK_EXT_validation_cache"
432
433// 165
434@extension("VK_EXT_shader_viewport_index_layer") define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION 1
435@extension("VK_EXT_shader_viewport_index_layer") define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME "VK_EXT_shader_viewport_index_layer"
436
Jesse Halld27f6aa2015-08-15 17:58:48 -0700437/////////////
438// Types //
439/////////////
440
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700441type u32 VkBool32
442type u32 VkFlags
443type u64 VkDeviceSize
444type u32 VkSampleMask
445
Jesse Halld27f6aa2015-08-15 17:58:48 -0700446/// Dispatchable handle types.
447@dispatchHandle type u64 VkInstance
448@dispatchHandle type u64 VkPhysicalDevice
449@dispatchHandle type u64 VkDevice
450@dispatchHandle type u64 VkQueue
Jesse Hall3fbc8562015-11-29 22:10:52 -0800451@dispatchHandle type u64 VkCommandBuffer
Jesse Halld27f6aa2015-08-15 17:58:48 -0700452
453/// Non dispatchable handle types.
454@nonDispatchHandle type u64 VkDeviceMemory
Jesse Hall3fbc8562015-11-29 22:10:52 -0800455@nonDispatchHandle type u64 VkCommandPool
Jesse Halld27f6aa2015-08-15 17:58:48 -0700456@nonDispatchHandle type u64 VkBuffer
457@nonDispatchHandle type u64 VkBufferView
458@nonDispatchHandle type u64 VkImage
459@nonDispatchHandle type u64 VkImageView
Jesse Halld27f6aa2015-08-15 17:58:48 -0700460@nonDispatchHandle type u64 VkShaderModule
Jesse Halld27f6aa2015-08-15 17:58:48 -0700461@nonDispatchHandle type u64 VkPipeline
462@nonDispatchHandle type u64 VkPipelineLayout
463@nonDispatchHandle type u64 VkSampler
464@nonDispatchHandle type u64 VkDescriptorSet
465@nonDispatchHandle type u64 VkDescriptorSetLayout
466@nonDispatchHandle type u64 VkDescriptorPool
Jesse Halld27f6aa2015-08-15 17:58:48 -0700467@nonDispatchHandle type u64 VkFence
468@nonDispatchHandle type u64 VkSemaphore
469@nonDispatchHandle type u64 VkEvent
470@nonDispatchHandle type u64 VkQueryPool
471@nonDispatchHandle type u64 VkFramebuffer
472@nonDispatchHandle type u64 VkRenderPass
473@nonDispatchHandle type u64 VkPipelineCache
Jesse Hall1356b0d2015-11-23 17:24:58 -0800474
Jesse Hallad250842017-03-10 18:35:38 -0800475// 1
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800476@extension("VK_KHR_surface") @nonDispatchHandle type u64 VkSurfaceKHR
Jesse Hall1356b0d2015-11-23 17:24:58 -0800477
Jesse Hallad250842017-03-10 18:35:38 -0800478// 2
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800479@extension("VK_KHR_swapchain") @nonDispatchHandle type u64 VkSwapchainKHR
Jesse Hall1356b0d2015-11-23 17:24:58 -0800480
Jesse Hallad250842017-03-10 18:35:38 -0800481// 3
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800482@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayKHR
483@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayModeKHR
Jesse Halld27f6aa2015-08-15 17:58:48 -0700484
Jesse Hallad250842017-03-10 18:35:38 -0800485// 12
Jesse Hall715b86a2016-01-16 16:34:29 -0800486@extension("VK_EXT_debug_report") @nonDispatchHandle type u64 VkDebugReportCallbackEXT
487
Jesse Hallad250842017-03-10 18:35:38 -0800488// 86
489@extension("VK_KHR_descriptor_update_template") @nonDispatchHandle type u64 VkDescriptorUpdateTemplateKHR
490
491// 87
Chris Forbes289cb792016-12-30 15:03:55 +1300492@extension("VK_NVX_device_generated_commands") @nonDispatchHandle type u64 VkObjectTableNVX
493@extension("VK_NVX_device_generated_commands") @nonDispatchHandle type u64 VkIndirectCommandsLayoutNVX
494
Jesse Hall77726222017-09-19 14:49:27 -0500495// 161
496@extension("VK_EXT_validation_cache") @nonDispatchHandle type u64 VkValidationCacheEXT
Jesse Halld27f6aa2015-08-15 17:58:48 -0700497
498/////////////
499// Enums //
500/////////////
501
502enum VkImageLayout {
503 VK_IMAGE_LAYOUT_UNDEFINED = 0x00000000, /// Implicit layout an image is when its contents are undefined due to various reasons (e.g. right after creation)
504 VK_IMAGE_LAYOUT_GENERAL = 0x00000001, /// General layout when image can be used for any kind of access
505 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 0x00000002, /// Optimal layout when image is only used for color attachment read/write
506 VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 0x00000003, /// Optimal layout when image is only used for depth/stencil attachment read/write
507 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 0x00000004, /// Optimal layout when image is used for read only depth/stencil attachment and shader access
508 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 -0800509 VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 0x00000006, /// Optimal layout when image is used only as source of transfer operations
510 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 -0700511 VK_IMAGE_LAYOUT_PREINITIALIZED = 0x00000008, /// Initial layout used when the data is populated by the CPU
Jesse Hall1356b0d2015-11-23 17:24:58 -0800512
Jesse Hallad250842017-03-10 18:35:38 -0800513 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -0800514 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
Chris Forbesaf3a1112017-01-31 15:37:03 +1300515
Jesse Hall05556b12017-05-18 17:40:25 -0700516 //@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbesaf3a1112017-01-31 15:37:03 +1300517 VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700518}
519
520enum VkAttachmentLoadOp {
521 VK_ATTACHMENT_LOAD_OP_LOAD = 0x00000000,
522 VK_ATTACHMENT_LOAD_OP_CLEAR = 0x00000001,
523 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 0x00000002,
524}
525
526enum VkAttachmentStoreOp {
527 VK_ATTACHMENT_STORE_OP_STORE = 0x00000000,
528 VK_ATTACHMENT_STORE_OP_DONT_CARE = 0x00000001,
529}
530
531enum VkImageType {
532 VK_IMAGE_TYPE_1D = 0x00000000,
533 VK_IMAGE_TYPE_2D = 0x00000001,
534 VK_IMAGE_TYPE_3D = 0x00000002,
535}
536
537enum VkImageTiling {
Jesse Hallc7467b72015-11-29 21:05:26 -0800538 VK_IMAGE_TILING_OPTIMAL = 0x00000000,
539 VK_IMAGE_TILING_LINEAR = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700540}
541
542enum VkImageViewType {
543 VK_IMAGE_VIEW_TYPE_1D = 0x00000000,
544 VK_IMAGE_VIEW_TYPE_2D = 0x00000001,
545 VK_IMAGE_VIEW_TYPE_3D = 0x00000002,
546 VK_IMAGE_VIEW_TYPE_CUBE = 0x00000003,
547 VK_IMAGE_VIEW_TYPE_1D_ARRAY = 0x00000004,
548 VK_IMAGE_VIEW_TYPE_2D_ARRAY = 0x00000005,
549 VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 0x00000006,
550}
551
Jesse Hall3fbc8562015-11-29 22:10:52 -0800552enum VkCommandBufferLevel {
553 VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0x00000000,
554 VK_COMMAND_BUFFER_LEVEL_SECONDARY = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700555}
556
Jesse Hall65ab5522015-11-30 00:07:16 -0800557enum VkComponentSwizzle {
558 VK_COMPONENT_SWIZZLE_IDENTITY = 0x00000000,
559 VK_COMPONENT_SWIZZLE_ZERO = 0x00000001,
560 VK_COMPONENT_SWIZZLE_ONE = 0x00000002,
561 VK_COMPONENT_SWIZZLE_R = 0x00000003,
562 VK_COMPONENT_SWIZZLE_G = 0x00000004,
563 VK_COMPONENT_SWIZZLE_B = 0x00000005,
564 VK_COMPONENT_SWIZZLE_A = 0x00000006,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700565}
566
567enum VkDescriptorType {
568 VK_DESCRIPTOR_TYPE_SAMPLER = 0x00000000,
569 VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 0x00000001,
570 VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 0x00000002,
571 VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 0x00000003,
572 VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 0x00000004,
573 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 0x00000005,
574 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 0x00000006,
575 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 0x00000007,
576 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 0x00000008,
577 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 0x00000009,
578 VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 0x0000000a,
579}
580
Jesse Halld27f6aa2015-08-15 17:58:48 -0700581enum VkQueryType {
582 VK_QUERY_TYPE_OCCLUSION = 0x00000000,
583 VK_QUERY_TYPE_PIPELINE_STATISTICS = 0x00000001, /// Optional
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800584 VK_QUERY_TYPE_TIMESTAMP = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700585}
586
Jesse Halld27f6aa2015-08-15 17:58:48 -0700587enum VkBorderColor {
588 VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0x00000000,
589 VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 0x00000001,
590 VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 0x00000002,
591 VK_BORDER_COLOR_INT_OPAQUE_BLACK = 0x00000003,
592 VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 0x00000004,
593 VK_BORDER_COLOR_INT_OPAQUE_WHITE = 0x00000005,
594}
595
596enum VkPipelineBindPoint {
Jesse Hallc7467b72015-11-29 21:05:26 -0800597 VK_PIPELINE_BIND_POINT_GRAPHICS = 0x00000000,
598 VK_PIPELINE_BIND_POINT_COMPUTE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700599}
600
601enum VkPrimitiveTopology {
602 VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0x00000000,
603 VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 0x00000001,
604 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 0x00000002,
605 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 0x00000003,
606 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 0x00000004,
607 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800608 VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 0x00000006,
609 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 0x00000007,
610 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 0x00000008,
611 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 0x00000009,
Jesse Hall091ed9e2015-11-30 00:55:29 -0800612 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 0x0000000a,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700613}
614
615enum VkSharingMode {
616 VK_SHARING_MODE_EXCLUSIVE = 0x00000000,
617 VK_SHARING_MODE_CONCURRENT = 0x00000001,
618}
619
620enum VkIndexType {
621 VK_INDEX_TYPE_UINT16 = 0x00000000,
622 VK_INDEX_TYPE_UINT32 = 0x00000001,
623}
624
Jesse Hall23ff73f2015-11-29 14:36:39 -0800625enum VkFilter {
626 VK_FILTER_NEAREST = 0x00000000,
627 VK_FILTER_LINEAR = 0x00000001,
Jesse Hall26763382016-05-20 07:13:52 -0700628
Jesse Hallad250842017-03-10 18:35:38 -0800629 //@extension("VK_IMG_filter_cubic") // 16
Jesse Hall26763382016-05-20 07:13:52 -0700630 VK_FILTER_CUBIC_IMG = 1000015000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700631}
632
Jesse Hall23ff73f2015-11-29 14:36:39 -0800633enum VkSamplerMipmapMode {
Jesse Hall23ff73f2015-11-29 14:36:39 -0800634 VK_SAMPLER_MIPMAP_MODE_NEAREST = 0x00000001, /// Choose nearest mip level
635 VK_SAMPLER_MIPMAP_MODE_LINEAR = 0x00000002, /// Linear filter between mip levels
Jesse Halld27f6aa2015-08-15 17:58:48 -0700636}
637
Jesse Hall23ff73f2015-11-29 14:36:39 -0800638enum VkSamplerAddressMode {
Jesse Hallc7467b72015-11-29 21:05:26 -0800639 VK_SAMPLER_ADDRESS_MODE_REPEAT = 0x00000000,
640 VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 0x00000001,
641 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 0x00000002,
642 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 0x00000003,
643 VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700644}
645
646enum VkCompareOp {
647 VK_COMPARE_OP_NEVER = 0x00000000,
648 VK_COMPARE_OP_LESS = 0x00000001,
649 VK_COMPARE_OP_EQUAL = 0x00000002,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800650 VK_COMPARE_OP_LESS_OR_EQUAL = 0x00000003,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700651 VK_COMPARE_OP_GREATER = 0x00000004,
652 VK_COMPARE_OP_NOT_EQUAL = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800653 VK_COMPARE_OP_GREATER_OR_EQUAL = 0x00000006,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700654 VK_COMPARE_OP_ALWAYS = 0x00000007,
655}
656
Jesse Hall65ab5522015-11-30 00:07:16 -0800657enum VkPolygonMode {
658 VK_POLYGON_MODE_FILL = 0x00000000,
659 VK_POLYGON_MODE_LINE = 0x00000001,
660 VK_POLYGON_MODE_POINT = 0x00000002,
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700661
662 //@extension("VK_NV_fill_rectangle") // 154
663 VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700664}
665
666enum VkFrontFace {
Jesse Hall3fbc8562015-11-29 22:10:52 -0800667 VK_FRONT_FACE_COUNTER_CLOCKWISE = 0x00000000,
668 VK_FRONT_FACE_CLOCKWISE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700669}
670
Jesse Hall65ab5522015-11-30 00:07:16 -0800671enum VkBlendFactor {
672 VK_BLEND_FACTOR_ZERO = 0x00000000,
673 VK_BLEND_FACTOR_ONE = 0x00000001,
674 VK_BLEND_FACTOR_SRC_COLOR = 0x00000002,
675 VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 0x00000003,
676 VK_BLEND_FACTOR_DST_COLOR = 0x00000004,
677 VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 0x00000005,
678 VK_BLEND_FACTOR_SRC_ALPHA = 0x00000006,
679 VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 0x00000007,
680 VK_BLEND_FACTOR_DST_ALPHA = 0x00000008,
681 VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 0x00000009,
682 VK_BLEND_FACTOR_CONSTANT_COLOR = 0x0000000a,
683 VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 0x0000000b,
684 VK_BLEND_FACTOR_CONSTANT_ALPHA = 0x0000000c,
685 VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 0x0000000d,
686 VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 0x0000000e,
687 VK_BLEND_FACTOR_SRC1_COLOR = 0x0000000f,
688 VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 0x00000010,
689 VK_BLEND_FACTOR_SRC1_ALPHA = 0x00000011,
690 VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 0x00000012,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700691}
692
693enum VkBlendOp {
694 VK_BLEND_OP_ADD = 0x00000000,
695 VK_BLEND_OP_SUBTRACT = 0x00000001,
696 VK_BLEND_OP_REVERSE_SUBTRACT = 0x00000002,
697 VK_BLEND_OP_MIN = 0x00000003,
698 VK_BLEND_OP_MAX = 0x00000004,
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700699
700 //@extension("VK_EXT_blend_operation_advanced") // 149
701 VK_BLEND_OP_ZERO_EXT = 1000148000,
702 VK_BLEND_OP_SRC_EXT = 1000148001,
703 VK_BLEND_OP_DST_EXT = 1000148002,
704 VK_BLEND_OP_SRC_OVER_EXT = 1000148003,
705 VK_BLEND_OP_DST_OVER_EXT = 1000148004,
706 VK_BLEND_OP_SRC_IN_EXT = 1000148005,
707 VK_BLEND_OP_DST_IN_EXT = 1000148006,
708 VK_BLEND_OP_SRC_OUT_EXT = 1000148007,
709 VK_BLEND_OP_DST_OUT_EXT = 1000148008,
710 VK_BLEND_OP_SRC_ATOP_EXT = 1000148009,
711 VK_BLEND_OP_DST_ATOP_EXT = 1000148010,
712 VK_BLEND_OP_XOR_EXT = 1000148011,
713 VK_BLEND_OP_MULTIPLY_EXT = 1000148012,
714 VK_BLEND_OP_SCREEN_EXT = 1000148013,
715 VK_BLEND_OP_OVERLAY_EXT = 1000148014,
716 VK_BLEND_OP_DARKEN_EXT = 1000148015,
717 VK_BLEND_OP_LIGHTEN_EXT = 1000148016,
718 VK_BLEND_OP_COLORDODGE_EXT = 1000148017,
719 VK_BLEND_OP_COLORBURN_EXT = 1000148018,
720 VK_BLEND_OP_HARDLIGHT_EXT = 1000148019,
721 VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020,
722 VK_BLEND_OP_DIFFERENCE_EXT = 1000148021,
723 VK_BLEND_OP_EXCLUSION_EXT = 1000148022,
724 VK_BLEND_OP_INVERT_EXT = 1000148023,
725 VK_BLEND_OP_INVERT_RGB_EXT = 1000148024,
726 VK_BLEND_OP_LINEARDODGE_EXT = 1000148025,
727 VK_BLEND_OP_LINEARBURN_EXT = 1000148026,
728 VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027,
729 VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028,
730 VK_BLEND_OP_PINLIGHT_EXT = 1000148029,
731 VK_BLEND_OP_HARDMIX_EXT = 1000148030,
732 VK_BLEND_OP_HSL_HUE_EXT = 1000148031,
733 VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032,
734 VK_BLEND_OP_HSL_COLOR_EXT = 1000148033,
735 VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034,
736 VK_BLEND_OP_PLUS_EXT = 1000148035,
737 VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036,
738 VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037,
739 VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038,
740 VK_BLEND_OP_MINUS_EXT = 1000148039,
741 VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040,
742 VK_BLEND_OP_CONTRAST_EXT = 1000148041,
743 VK_BLEND_OP_INVERT_OVG_EXT = 1000148042,
744 VK_BLEND_OP_RED_EXT = 1000148043,
745 VK_BLEND_OP_GREEN_EXT = 1000148044,
746 VK_BLEND_OP_BLUE_EXT = 1000148045,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700747}
748
749enum VkStencilOp {
750 VK_STENCIL_OP_KEEP = 0x00000000,
751 VK_STENCIL_OP_ZERO = 0x00000001,
752 VK_STENCIL_OP_REPLACE = 0x00000002,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800753 VK_STENCIL_OP_INCREMENT_AND_CLAMP = 0x00000003,
754 VK_STENCIL_OP_DECREMENT_AND_CLAMP = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700755 VK_STENCIL_OP_INVERT = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800756 VK_STENCIL_OP_INCREMENT_AND_WRAP = 0x00000006,
757 VK_STENCIL_OP_DECREMENT_AND_WRAP = 0x00000007,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700758}
759
760enum VkLogicOp {
761 VK_LOGIC_OP_CLEAR = 0x00000000,
762 VK_LOGIC_OP_AND = 0x00000001,
763 VK_LOGIC_OP_AND_REVERSE = 0x00000002,
764 VK_LOGIC_OP_COPY = 0x00000003,
765 VK_LOGIC_OP_AND_INVERTED = 0x00000004,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800766 VK_LOGIC_OP_NO_OP = 0x00000005,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700767 VK_LOGIC_OP_XOR = 0x00000006,
768 VK_LOGIC_OP_OR = 0x00000007,
769 VK_LOGIC_OP_NOR = 0x00000008,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800770 VK_LOGIC_OP_EQUIVALENT = 0x00000009,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700771 VK_LOGIC_OP_INVERT = 0x0000000a,
772 VK_LOGIC_OP_OR_REVERSE = 0x0000000b,
773 VK_LOGIC_OP_COPY_INVERTED = 0x0000000c,
774 VK_LOGIC_OP_OR_INVERTED = 0x0000000d,
775 VK_LOGIC_OP_NAND = 0x0000000e,
776 VK_LOGIC_OP_SET = 0x0000000f,
777}
778
Jesse Hall3fbc8562015-11-29 22:10:52 -0800779enum VkSystemAllocationScope {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800780 VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0x00000000,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800781 VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 0x00000001,
782 VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 0x00000002,
783 VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 0x00000003,
784 VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 0x00000004,
Jesse Hall03b6fe12015-11-24 12:44:21 -0800785}
786
Jesse Hall3fbc8562015-11-29 22:10:52 -0800787enum VkInternalAllocationType {
788 VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0x00000000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700789}
790
791enum VkPhysicalDeviceType {
792 VK_PHYSICAL_DEVICE_TYPE_OTHER = 0x00000000,
793 VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 0x00000001,
794 VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 0x00000002,
795 VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 0x00000003,
796 VK_PHYSICAL_DEVICE_TYPE_CPU = 0x00000004,
797}
798
Jesse Hall65ab5522015-11-30 00:07:16 -0800799enum VkVertexInputRate {
800 VK_VERTEX_INPUT_RATE_VERTEX = 0x00000000,
801 VK_VERTEX_INPUT_RATE_INSTANCE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700802}
803
804/// Vulkan format definitions
805enum VkFormat {
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800806 VK_FORMAT_UNDEFINED = 0,
807 VK_FORMAT_R4G4_UNORM_PACK8 = 1,
808 VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
809 VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
810 VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
811 VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
812 VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
813 VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
814 VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
815 VK_FORMAT_R8_UNORM = 9,
816 VK_FORMAT_R8_SNORM = 10,
817 VK_FORMAT_R8_USCALED = 11,
818 VK_FORMAT_R8_SSCALED = 12,
819 VK_FORMAT_R8_UINT = 13,
820 VK_FORMAT_R8_SINT = 14,
821 VK_FORMAT_R8_SRGB = 15,
822 VK_FORMAT_R8G8_UNORM = 16,
823 VK_FORMAT_R8G8_SNORM = 17,
824 VK_FORMAT_R8G8_USCALED = 18,
825 VK_FORMAT_R8G8_SSCALED = 19,
826 VK_FORMAT_R8G8_UINT = 20,
827 VK_FORMAT_R8G8_SINT = 21,
828 VK_FORMAT_R8G8_SRGB = 22,
829 VK_FORMAT_R8G8B8_UNORM = 23,
830 VK_FORMAT_R8G8B8_SNORM = 24,
831 VK_FORMAT_R8G8B8_USCALED = 25,
832 VK_FORMAT_R8G8B8_SSCALED = 26,
833 VK_FORMAT_R8G8B8_UINT = 27,
834 VK_FORMAT_R8G8B8_SINT = 28,
835 VK_FORMAT_R8G8B8_SRGB = 29,
836 VK_FORMAT_B8G8R8_UNORM = 30,
837 VK_FORMAT_B8G8R8_SNORM = 31,
838 VK_FORMAT_B8G8R8_USCALED = 32,
839 VK_FORMAT_B8G8R8_SSCALED = 33,
840 VK_FORMAT_B8G8R8_UINT = 34,
841 VK_FORMAT_B8G8R8_SINT = 35,
842 VK_FORMAT_B8G8R8_SRGB = 36,
843 VK_FORMAT_R8G8B8A8_UNORM = 37,
844 VK_FORMAT_R8G8B8A8_SNORM = 38,
845 VK_FORMAT_R8G8B8A8_USCALED = 39,
846 VK_FORMAT_R8G8B8A8_SSCALED = 40,
847 VK_FORMAT_R8G8B8A8_UINT = 41,
848 VK_FORMAT_R8G8B8A8_SINT = 42,
849 VK_FORMAT_R8G8B8A8_SRGB = 43,
850 VK_FORMAT_B8G8R8A8_UNORM = 44,
851 VK_FORMAT_B8G8R8A8_SNORM = 45,
852 VK_FORMAT_B8G8R8A8_USCALED = 46,
853 VK_FORMAT_B8G8R8A8_SSCALED = 47,
854 VK_FORMAT_B8G8R8A8_UINT = 48,
855 VK_FORMAT_B8G8R8A8_SINT = 49,
856 VK_FORMAT_B8G8R8A8_SRGB = 50,
857 VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
858 VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
859 VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
860 VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
861 VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
862 VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
863 VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
864 VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
865 VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
866 VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
867 VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
868 VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
869 VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
870 VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
871 VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
872 VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
873 VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
874 VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
875 VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
876 VK_FORMAT_R16_UNORM = 70,
877 VK_FORMAT_R16_SNORM = 71,
878 VK_FORMAT_R16_USCALED = 72,
879 VK_FORMAT_R16_SSCALED = 73,
880 VK_FORMAT_R16_UINT = 74,
881 VK_FORMAT_R16_SINT = 75,
882 VK_FORMAT_R16_SFLOAT = 76,
883 VK_FORMAT_R16G16_UNORM = 77,
884 VK_FORMAT_R16G16_SNORM = 78,
885 VK_FORMAT_R16G16_USCALED = 79,
886 VK_FORMAT_R16G16_SSCALED = 80,
887 VK_FORMAT_R16G16_UINT = 81,
888 VK_FORMAT_R16G16_SINT = 82,
889 VK_FORMAT_R16G16_SFLOAT = 83,
890 VK_FORMAT_R16G16B16_UNORM = 84,
891 VK_FORMAT_R16G16B16_SNORM = 85,
892 VK_FORMAT_R16G16B16_USCALED = 86,
893 VK_FORMAT_R16G16B16_SSCALED = 87,
894 VK_FORMAT_R16G16B16_UINT = 88,
895 VK_FORMAT_R16G16B16_SINT = 89,
896 VK_FORMAT_R16G16B16_SFLOAT = 90,
897 VK_FORMAT_R16G16B16A16_UNORM = 91,
898 VK_FORMAT_R16G16B16A16_SNORM = 92,
899 VK_FORMAT_R16G16B16A16_USCALED = 93,
900 VK_FORMAT_R16G16B16A16_SSCALED = 94,
901 VK_FORMAT_R16G16B16A16_UINT = 95,
902 VK_FORMAT_R16G16B16A16_SINT = 96,
903 VK_FORMAT_R16G16B16A16_SFLOAT = 97,
904 VK_FORMAT_R32_UINT = 98,
905 VK_FORMAT_R32_SINT = 99,
906 VK_FORMAT_R32_SFLOAT = 100,
907 VK_FORMAT_R32G32_UINT = 101,
908 VK_FORMAT_R32G32_SINT = 102,
909 VK_FORMAT_R32G32_SFLOAT = 103,
910 VK_FORMAT_R32G32B32_UINT = 104,
911 VK_FORMAT_R32G32B32_SINT = 105,
912 VK_FORMAT_R32G32B32_SFLOAT = 106,
913 VK_FORMAT_R32G32B32A32_UINT = 107,
914 VK_FORMAT_R32G32B32A32_SINT = 108,
915 VK_FORMAT_R32G32B32A32_SFLOAT = 109,
916 VK_FORMAT_R64_UINT = 110,
917 VK_FORMAT_R64_SINT = 111,
918 VK_FORMAT_R64_SFLOAT = 112,
919 VK_FORMAT_R64G64_UINT = 113,
920 VK_FORMAT_R64G64_SINT = 114,
921 VK_FORMAT_R64G64_SFLOAT = 115,
922 VK_FORMAT_R64G64B64_UINT = 116,
923 VK_FORMAT_R64G64B64_SINT = 117,
924 VK_FORMAT_R64G64B64_SFLOAT = 118,
925 VK_FORMAT_R64G64B64A64_UINT = 119,
926 VK_FORMAT_R64G64B64A64_SINT = 120,
927 VK_FORMAT_R64G64B64A64_SFLOAT = 121,
928 VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
929 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
930 VK_FORMAT_D16_UNORM = 124,
931 VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
932 VK_FORMAT_D32_SFLOAT = 126,
933 VK_FORMAT_S8_UINT = 127,
934 VK_FORMAT_D16_UNORM_S8_UINT = 128,
935 VK_FORMAT_D24_UNORM_S8_UINT = 129,
936 VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
937 VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
938 VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
939 VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
940 VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
941 VK_FORMAT_BC2_UNORM_BLOCK = 135,
942 VK_FORMAT_BC2_SRGB_BLOCK = 136,
943 VK_FORMAT_BC3_UNORM_BLOCK = 137,
944 VK_FORMAT_BC3_SRGB_BLOCK = 138,
945 VK_FORMAT_BC4_UNORM_BLOCK = 139,
946 VK_FORMAT_BC4_SNORM_BLOCK = 140,
947 VK_FORMAT_BC5_UNORM_BLOCK = 141,
948 VK_FORMAT_BC5_SNORM_BLOCK = 142,
949 VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
950 VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
951 VK_FORMAT_BC7_UNORM_BLOCK = 145,
952 VK_FORMAT_BC7_SRGB_BLOCK = 146,
953 VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
954 VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
955 VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
956 VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
957 VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
958 VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
959 VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
960 VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
961 VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
962 VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
963 VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
964 VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
965 VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
966 VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
967 VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
968 VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
969 VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
970 VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
971 VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
972 VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
973 VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
974 VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
975 VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
976 VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
977 VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
978 VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
979 VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
980 VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
981 VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
982 VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
983 VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
984 VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
985 VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
986 VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
987 VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
988 VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
989 VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
990 VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
Chris Forbes289cb792016-12-30 15:03:55 +1300991
Jesse Hallad250842017-03-10 18:35:38 -0800992 //@extension("VK_IMG_format_pvrtc") // 28
Jesse Halleb02c472017-02-24 15:13:45 -0800993 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
994 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
995 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
996 VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
997 VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
998 VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
999 VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
1000 VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001001}
1002
Jesse Halld27f6aa2015-08-15 17:58:48 -07001003/// Structure type enumerant
1004enum VkStructureType {
1005 VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
Jesse Hallc7467b72015-11-29 21:05:26 -08001006 VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
1007 VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
1008 VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
1009 VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08001010 VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
Jesse Hallc7467b72015-11-29 21:05:26 -08001011 VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
1012 VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
1013 VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
1014 VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001015 VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
Jesse Hallc7467b72015-11-29 21:05:26 -08001016 VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
1017 VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
1018 VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
1019 VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
1020 VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
1021 VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001022 VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
1023 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
1024 VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
1025 VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
1026 VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
1027 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
1028 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
1029 VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
1030 VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
1031 VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
1032 VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
1033 VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
1034 VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
1035 VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
1036 VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
1037 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
1038 VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08001039 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001040 VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
1041 VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
1042 VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
1043 VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
1044 VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08001045 VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
Jesse Hall3dd678a2016-01-08 21:52:01 -08001046 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
1047 VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
1048 VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
1049 VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
1050 VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
1051 VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
1052 VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
1053 VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
Jesse Hall1356b0d2015-11-23 17:24:58 -08001054
Jesse Hallad250842017-03-10 18:35:38 -08001055 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -08001056 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
1057 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
Jesse Hall1356b0d2015-11-23 17:24:58 -08001058
Jesse Hallad250842017-03-10 18:35:38 -08001059 //@extension("VK_KHR_display") // 3
Jesse Hallbd888842015-11-30 21:44:14 -08001060 VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
1061 VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
Jesse Hall1356b0d2015-11-23 17:24:58 -08001062
Jesse Hallad250842017-03-10 18:35:38 -08001063 //@extension("VK_KHR_display_swapchain") // 4
Jesse Hallbd888842015-11-30 21:44:14 -08001064 VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR = 1000003000,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001065
Jesse Hallad250842017-03-10 18:35:38 -08001066 //@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001067 VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
1068
Jesse Hallad250842017-03-10 18:35:38 -08001069 //@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001070 VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
1071
Jesse Hallad250842017-03-10 18:35:38 -08001072 //@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001073 VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
1074
Jesse Hallad250842017-03-10 18:35:38 -08001075 //@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001076 VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000,
1077
Jesse Hallad250842017-03-10 18:35:38 -08001078 //@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001079 VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
1080
Jesse Hallad250842017-03-10 18:35:38 -08001081 //@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001082 VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
Jesse Hall543a7ff2016-01-08 16:38:30 -08001083
Jesse Hallad250842017-03-10 18:35:38 -08001084 //@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08001085 VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID = 1000010000,
Chris Forbes8e4438b2016-12-07 16:26:49 +13001086 VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID = 1000010001,
Chris Forbes1d4e5542017-02-15 19:38:50 +13001087 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID = 1000010002,
Chia-I Wub262ddc2016-03-22 07:38:20 +08001088
Jesse Hallad250842017-03-10 18:35:38 -08001089 //@extension("VK_EXT_debug_report") // 12
Jesse Hall26763382016-05-20 07:13:52 -07001090 VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
1091
Jesse Hallad250842017-03-10 18:35:38 -08001092 //@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07001093 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,
1094
Jesse Hallad250842017-03-10 18:35:38 -08001095 //@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07001096 VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,
Jesse Hall26763382016-05-20 07:13:52 -07001097 VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,
Jesse Hall26763382016-05-20 07:13:52 -07001098 VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,
Jesse Hall56d386a2016-07-26 15:20:40 -07001099
Jesse Hallad250842017-03-10 18:35:38 -08001100 //@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07001101 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
Jesse Hall56d386a2016-07-26 15:20:40 -07001102 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
Jesse Hall56d386a2016-07-26 15:20:40 -07001103 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
Chris Forbes289cb792016-12-30 15:03:55 +13001104
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001105 //@extension("VK_AMD_texture_gather_bias_lod") // 42
1106 VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000,
1107
Jesse Hallad250842017-03-10 18:35:38 -08001108 //@extension("VK_KHX_multiview") // 54
1109 VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX = 1000053000,
1110 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX = 1000053001,
1111 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX = 1000053002,
1112
1113 //@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08001114 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
1115 VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,
Chris Forbes289cb792016-12-30 15:03:55 +13001116
Jesse Hallad250842017-03-10 18:35:38 -08001117 //@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08001118 VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
1119 VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
Chris Forbes289cb792016-12-30 15:03:55 +13001120
Jesse Hallad250842017-03-10 18:35:38 -08001121 //@extension("VK_NV_win32_keyed_mutex") // 59
Chris Forbes289cb792016-12-30 15:03:55 +13001122 VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
1123
Jesse Hallad250842017-03-10 18:35:38 -08001124 //@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall889cd9a2017-02-25 22:12:23 -08001125 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000,
1126 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001,
1127 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002,
1128 VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003,
1129 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004,
1130 VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005,
1131 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006,
1132 VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007,
Chris Forbes1194ede2016-12-30 16:29:25 +13001133 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008,
1134
Jesse Hallad250842017-03-10 18:35:38 -08001135 //@extension("VK_KHX_device_group") // 61
1136 VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX = 1000060000,
1137 VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX = 1000060001,
1138 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX = 1000060002,
1139 VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX = 1000060003,
1140 VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX = 1000060004,
1141 VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX = 1000060005,
1142 VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX = 1000060006,
1143 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX = 1000060007,
1144 VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX = 1000060008,
1145 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX = 1000060009,
1146 VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX = 1000060010,
1147 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX = 1000060011,
1148 VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX = 1000060012,
1149
1150 //@extension("VK_EXT_validation_flags") // 62
Jesse Halleb02c472017-02-24 15:13:45 -08001151 VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
Chris Forbes289cb792016-12-30 15:03:55 +13001152
Jesse Hallad250842017-03-10 18:35:38 -08001153 //@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08001154 VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000,
1155
Jesse Hallad250842017-03-10 18:35:38 -08001156 //@extension("VK_KHX_device_group_creation") // 71
1157 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX = 1000070000,
1158 VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX = 1000070001,
1159
Jesse Hall9492f992017-08-28 12:10:06 -07001160 //@extension("VK_KHR_external_memory_capabilities") // 72
1161 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000,
1162 VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001,
1163 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002,
1164 VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003,
1165 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004,
Jesse Hallad250842017-03-10 18:35:38 -08001166
Jesse Hall9492f992017-08-28 12:10:06 -07001167 //@extension("VK_KHR_external_memory") // 73
1168 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000,
1169 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001,
1170 VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002,
Jesse Hallad250842017-03-10 18:35:38 -08001171
Jesse Hall9492f992017-08-28 12:10:06 -07001172 //@extension("VK_KHR_external_memory_win32") // 74
1173 VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000,
1174 VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001,
1175 VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002,
Jesse Hallad250842017-03-10 18:35:38 -08001176
Jesse Hall9492f992017-08-28 12:10:06 -07001177 //@extension("VK_KHR_external_memory_fd") // 75
1178 VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000,
1179 VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001,
Jesse Hallad250842017-03-10 18:35:38 -08001180
Jesse Hall9492f992017-08-28 12:10:06 -07001181 //@extension("VK_KHR_win32_keyed_mutex") // 76
1182 VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000,
Jesse Hallad250842017-03-10 18:35:38 -08001183
Jesse Hall9492f992017-08-28 12:10:06 -07001184 //@extension("VK_KHR_external_semaphore_capabilities") // 77
1185 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000,
1186 VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001,
Jesse Hallad250842017-03-10 18:35:38 -08001187
Jesse Hall9492f992017-08-28 12:10:06 -07001188 //@extension("VK_KHR_external_semaphore") // 78
1189 VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000,
Jesse Hallad250842017-03-10 18:35:38 -08001190
Jesse Hall9492f992017-08-28 12:10:06 -07001191 //@extension("VK_KHR_external_semaphore_win32") // 79
1192 VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000,
1193 VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001,
1194 VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002,
Jesse Hallad250842017-03-10 18:35:38 -08001195
Jesse Hall9492f992017-08-28 12:10:06 -07001196 //@extension("VK_KHR_external_semaphore_fd") // 80
1197 VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000,
1198 VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001,
Jesse Hallad250842017-03-10 18:35:38 -08001199
1200 //@extension("VK_KHR_push_descriptor") // 81
1201 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000,
1202
Jesse Hall9492f992017-08-28 12:10:06 -07001203 //@extension("VK_KHR_16bit_storage") // 84
1204 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000,
1205
Jesse Hallad250842017-03-10 18:35:38 -08001206 //@extension("VK_KHR_incremental_present") // 85
Jesse Hall889cd9a2017-02-25 22:12:23 -08001207 VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
Chris Forbes289cb792016-12-30 15:03:55 +13001208
Jesse Hallad250842017-03-10 18:35:38 -08001209 //@extension("VK_KHR_descriptor_update_template") // 86
1210 VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000,
1211
1212 //@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08001213 VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
1214 VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
1215 VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = 1000086002,
1216 VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = 1000086003,
1217 VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004,
1218 VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001219
Jesse Hallad250842017-03-10 18:35:38 -08001220 //@extension("VK_NV_clip_space_w_scaling") // 88
1221 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000,
1222
1223 //@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77726222017-09-19 14:49:27 -05001224 VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001225
Jesse Hallad250842017-03-10 18:35:38 -08001226 //@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001227 VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000,
1228 VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001,
1229 VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002,
1230 VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,
Jesse Hallad250842017-03-10 18:35:38 -08001231
1232 //@extension("VK_GOOGLE_display_timing") // 93
1233 VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000,
1234
1235 //@extension("VK_NVX_multiview_per_view_attributes") // 98
1236 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000,
1237
1238 //@extension("VK_NV_viewport_swizzle") // 99
1239 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000,
1240
1241 //@extension("VK_EXT_discard_rectangles") // 100
1242 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,
1243 VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,
1244
Jesse Hallfdc8ab32017-03-10 21:01:57 -08001245 //@extension("VK_EXT_hdr_metadata") // 106
1246 VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
1247
Jesse Hall05556b12017-05-18 17:40:25 -07001248 //@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbese2d3ee12017-03-16 16:10:15 +13001249 VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
1250
Jesse Hall9492f992017-08-28 12:10:06 -07001251 //@extension("VK_KHR_external_fence_capabilities") // 113
1252 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000,
1253 VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001,
1254
1255 //@extension("VK_KHR_external_fence") // 114
1256 VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000,
1257
1258 //@extension("VK_KHR_external_fence_win32") // 115
1259 VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000,
1260 VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001,
1261 VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002,
1262
1263 //@extension("VK_KHR_external_fence_fd") // 117
1264 VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000,
1265 VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001,
1266
Jesse Hall05556b12017-05-18 17:40:25 -07001267 //@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13001268 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,
1269 VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001,
1270 VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002,
1271
Jesse Hall9492f992017-08-28 12:10:06 -07001272 //@extension("VK_KHR_variable_pointers") // 121
1273 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000,
1274
Jesse Hallad250842017-03-10 18:35:38 -08001275 //@extension("VK_MVK_ios_surface") // 123
1276 VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000,
1277
1278 //@extension("VK_MVK_macos_surface") // 124
1279 VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001280
Jesse Hall9492f992017-08-28 12:10:06 -07001281 //@extension("VK_KHR_dedicated_allocation") // 128
1282 VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000,
1283 VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001,
1284
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001285 //@extension("VK_EXT_sampler_filter_minmax") // 131
1286 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000,
1287 VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001,
1288
Jesse Hall77726222017-09-19 14:49:27 -05001289 //@extension("VK_EXT_sample_locations") // 144
1290 VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000,
1291 VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001,
1292 VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002,
1293 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003,
1294 VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004,
1295
Jesse Hall9492f992017-08-28 12:10:06 -07001296 //@extension("VK_KHR_get_memory_requirements2") // 147
1297 VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000,
1298 VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001,
1299 VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002,
1300 VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003,
1301 VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004,
1302
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001303 //@extension("VK_EXT_blend_operation_advanced") // 149
1304 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000,
1305 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001,
1306 VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
1307
1308 //@extension("VK_NV_fragment_coverage_to_color") // 150
1309 VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000,
1310
Jesse Hall77726222017-09-19 14:49:27 -05001311 //@extension("VK_NV_framebuffer_mixed_samples") // 153
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001312 VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000,
Jesse Hall77726222017-09-19 14:49:27 -05001313
1314 //@extension("VK_EXT_validation_cache") // 161
1315 VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,
1316 VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001317}
1318
Jesse Hall65ab5522015-11-30 00:07:16 -08001319enum VkSubpassContents {
1320 VK_SUBPASS_CONTENTS_INLINE = 0x00000000,
1321 VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001322}
1323
Jesse Hall543a7ff2016-01-08 16:38:30 -08001324enum VkPipelineCacheHeaderVersion {
1325 VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
1326}
1327
Jesse Hallbd888842015-11-30 21:44:14 -08001328@lastUnused(-11)
Jesse Halld27f6aa2015-08-15 17:58:48 -07001329/// Error and return codes
1330enum VkResult {
1331 // Return codes for successful operation execution (positive values)
Jesse Hallbd888842015-11-30 21:44:14 -08001332 VK_SUCCESS = 0,
1333 VK_NOT_READY = 1,
1334 VK_TIMEOUT = 2,
1335 VK_EVENT_SET = 3,
1336 VK_EVENT_RESET = 4,
1337 VK_INCOMPLETE = 5,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001338
Jesse Hallad250842017-03-10 18:35:38 -08001339 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -08001340 VK_SUBOPTIMAL_KHR = 1000001003,
Jesse Hall1356b0d2015-11-23 17:24:58 -08001341
Jesse Halld27f6aa2015-08-15 17:58:48 -07001342 // Error codes (negative values)
Jesse Hallbd888842015-11-30 21:44:14 -08001343 VK_ERROR_OUT_OF_HOST_MEMORY = 0xFFFFFFFF, // -1
1344 VK_ERROR_OUT_OF_DEVICE_MEMORY = 0xFFFFFFFE, // -2
1345 VK_ERROR_INITIALIZATION_FAILED = 0xFFFFFFFD, // -3
1346 VK_ERROR_DEVICE_LOST = 0xFFFFFFFC, // -4
1347 VK_ERROR_MEMORY_MAP_FAILED = 0xFFFFFFFB, // -5
1348 VK_ERROR_LAYER_NOT_PRESENT = 0xFFFFFFFA, // -6
1349 VK_ERROR_EXTENSION_NOT_PRESENT = 0xFFFFFFF9, // -7
1350 VK_ERROR_FEATURE_NOT_PRESENT = 0xFFFFFFF8, // -8
1351 VK_ERROR_INCOMPATIBLE_DRIVER = 0xFFFFFFF7, // -9
1352 VK_ERROR_TOO_MANY_OBJECTS = 0xFFFFFFF6, // -10
1353 VK_ERROR_FORMAT_NOT_SUPPORTED = 0xFFFFFFF5, // -11
Jesse Hall56d386a2016-07-26 15:20:40 -07001354 VK_ERROR_FRAGMENTED_POOL = 0xFFFFFFF4, // -12
Jesse Hall1356b0d2015-11-23 17:24:58 -08001355
Jesse Hallad250842017-03-10 18:35:38 -08001356 //@extension("VK_KHR_surface") // 1
Jesse Hallbd888842015-11-30 21:44:14 -08001357 VK_ERROR_SURFACE_LOST_KHR = 0xC4653600, // -1000000000
Jesse Hallad250842017-03-10 18:35:38 -08001358 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = 0xC46535FF, // -1000000001
Jesse Halla6429252015-11-29 18:59:42 -08001359
Jesse Hallad250842017-03-10 18:35:38 -08001360 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -08001361 VK_ERROR_OUT_OF_DATE_KHR = 0xC4653214, // -1000001004
Jesse Hall1356b0d2015-11-23 17:24:58 -08001362
Jesse Hallad250842017-03-10 18:35:38 -08001363 //@extension("VK_KHR_display_swapchain") // 4
Jesse Hallbd888842015-11-30 21:44:14 -08001364 VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = 0xC4652A47, // -1000003001
Jesse Hall1356b0d2015-11-23 17:24:58 -08001365
Jesse Hallad250842017-03-10 18:35:38 -08001366 //@extension("VK_EXT_debug_report") // 12
Jesse Hall543a7ff2016-01-08 16:38:30 -08001367 VK_ERROR_VALIDATION_FAILED_EXT = 0xC4650B07, // -1000011001
Jesse Hall26763382016-05-20 07:13:52 -07001368
Jesse Hallad250842017-03-10 18:35:38 -08001369 //@extension("VK_NV_glsl_shader") // 13
Jesse Hall26763382016-05-20 07:13:52 -07001370 VK_ERROR_INVALID_SHADER_NV = 0xC4650720, // -1000012000
Jesse Hall77ad05b2017-03-10 22:02:20 -08001371
Jesse Hallad250842017-03-10 18:35:38 -08001372 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08001373 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = 0xC4642878, // -1000069000
Jesse Hallad250842017-03-10 18:35:38 -08001374
Jesse Hall9492f992017-08-28 12:10:06 -07001375 //@extension("VK_KHR_external_memory") // 73
1376 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = 0xC4641CBD, // -1000072003
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001377}
1378
1379enum VkDynamicState {
1380 VK_DYNAMIC_STATE_VIEWPORT = 0x00000000,
1381 VK_DYNAMIC_STATE_SCISSOR = 0x00000001,
1382 VK_DYNAMIC_STATE_LINE_WIDTH = 0x00000002,
1383 VK_DYNAMIC_STATE_DEPTH_BIAS = 0x00000003,
1384 VK_DYNAMIC_STATE_BLEND_CONSTANTS = 0x00000004,
1385 VK_DYNAMIC_STATE_DEPTH_BOUNDS = 0x00000005,
1386 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 0x00000006,
1387 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 0x00000007,
1388 VK_DYNAMIC_STATE_STENCIL_REFERENCE = 0x00000008,
Jesse Hallad250842017-03-10 18:35:38 -08001389
1390 //@extension("VK_NV_clip_space_w_scaling") // 88
1391 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000,
1392
1393 //@extension("VK_EXT_discard_rectangles") // 100
1394 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
Jesse Hall77726222017-09-19 14:49:27 -05001395
1396 //@extension("VK_EXT_sample_locations") // 144
1397 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001398}
1399
Jesse Hall05556b12017-05-18 17:40:25 -07001400enum VkObjectType {
1401 VK_OBJECT_TYPE_UNKNOWN = 0,
1402 VK_OBJECT_TYPE_INSTANCE = 1,
1403 VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,
1404 VK_OBJECT_TYPE_DEVICE = 3,
1405 VK_OBJECT_TYPE_QUEUE = 4,
1406 VK_OBJECT_TYPE_SEMAPHORE = 5,
1407 VK_OBJECT_TYPE_COMMAND_BUFFER = 6,
1408 VK_OBJECT_TYPE_FENCE = 7,
1409 VK_OBJECT_TYPE_DEVICE_MEMORY = 8,
1410 VK_OBJECT_TYPE_BUFFER = 9,
1411 VK_OBJECT_TYPE_IMAGE = 10,
1412 VK_OBJECT_TYPE_EVENT = 11,
1413 VK_OBJECT_TYPE_QUERY_POOL = 12,
1414 VK_OBJECT_TYPE_BUFFER_VIEW = 13,
1415 VK_OBJECT_TYPE_IMAGE_VIEW = 14,
1416 VK_OBJECT_TYPE_SHADER_MODULE = 15,
1417 VK_OBJECT_TYPE_PIPELINE_CACHE = 16,
1418 VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,
1419 VK_OBJECT_TYPE_RENDER_PASS = 18,
1420 VK_OBJECT_TYPE_PIPELINE = 19,
1421 VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,
1422 VK_OBJECT_TYPE_SAMPLER = 21,
1423 VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,
1424 VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,
1425 VK_OBJECT_TYPE_FRAMEBUFFER = 24,
1426 VK_OBJECT_TYPE_COMMAND_POOL = 25,
1427
1428 //@extension("VK_KHR_surface") // 1
1429 VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,
1430
1431 //@extension("VK_KHR_swapchain") // 2
1432 VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,
1433
1434 //@extension("VK_KHR_display") // 3
1435 VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000,
1436 VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001,
1437
1438 //@extension("VK_KHR_debug_report") // 12
1439 VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000,
1440
1441 //@extension("VK_KHR_descriptor_update_template") // 86
1442 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000,
1443
1444 //@extension("VK_NVX_device_generated_commands") // 87
1445 VK_OBJECT_TYPE_OBJECT_TABLE_NVX = 1000086000,
1446 VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = 1000086001,
Jesse Hall77726222017-09-19 14:49:27 -05001447
1448 //@extension("VK_EXT_validation_cache") // 161
1449 VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000,
Jesse Hall05556b12017-05-18 17:40:25 -07001450}
1451
Jesse Hallad250842017-03-10 18:35:38 -08001452@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08001453enum VkPresentModeKHR {
1454 VK_PRESENT_MODE_IMMEDIATE_KHR = 0x00000000,
1455 VK_PRESENT_MODE_MAILBOX_KHR = 0x00000001,
1456 VK_PRESENT_MODE_FIFO_KHR = 0x00000002,
Jesse Hall03b6fe12015-11-24 12:44:21 -08001457 VK_PRESENT_MODE_FIFO_RELAXED_KHR = 0x00000003,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001458
Jesse Hall05556b12017-05-18 17:40:25 -07001459 //@extension("VK_KHR_shared_presentable_image") // 112
Jesse Hall77ad05b2017-03-10 22:02:20 -08001460 VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,
1461 VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,
Michael Lentine88594d72015-11-12 12:49:45 -08001462}
1463
Jesse Hallad250842017-03-10 18:35:38 -08001464@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08001465enum VkColorSpaceKHR {
1466 VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0x00000000,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001467
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001468 //@extension("VK_EXT_swapchain_colorspace") // 105
1469 VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
1470 VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
1471 VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003,
1472 VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
1473 VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
1474 VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
1475 VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
1476 VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
1477 VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
1478 VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
Courtney Goeltzenleuchter7f558ed2017-01-23 17:15:24 -07001479 VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
1480 VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001481 VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
Jesse Hall77726222017-09-19 14:49:27 -05001482 VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014,
Michael Lentine88594d72015-11-12 12:49:45 -08001483}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001484
Jesse Hallad250842017-03-10 18:35:38 -08001485@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08001486enum VkDebugReportObjectTypeEXT {
1487 VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
1488 VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
1489 VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
1490 VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,
1491 VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,
1492 VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,
1493 VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,
1494 VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,
1495 VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,
1496 VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,
1497 VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,
1498 VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,
1499 VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,
1500 VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,
1501 VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,
1502 VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,
1503 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,
1504 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,
1505 VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,
1506 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,
1507 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,
1508 VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,
1509 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,
1510 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,
1511 VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,
1512 VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,
1513 VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
1514 VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001515 VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28,
Chris Forbes289cb792016-12-30 15:03:55 +13001516 VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29,
1517 VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,
1518 VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31,
1519 VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32,
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001520
Jesse Hall77726222017-09-19 14:49:27 -05001521 //extension("VK_EXT_validation_cache") // 161
1522 VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33,
1523
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001524 //extension("VK_KHR_descriptor_update_template") // 86
1525 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000,
Jesse Hall77726222017-09-19 14:49:27 -05001526
Jesse Hall715b86a2016-01-16 16:34:29 -08001527}
1528
Jesse Hallad250842017-03-10 18:35:38 -08001529@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07001530enum VkRasterizationOrderAMD {
1531 VK_RASTERIZATION_ORDER_STRICT_AMD = 0,
1532 VK_RASTERIZATION_ORDER_RELAXED_AMD = 1,
1533}
1534
Jesse Hallad250842017-03-10 18:35:38 -08001535@extension("VK_EXT_validation_flags") // 62
Chris Forbes289cb792016-12-30 15:03:55 +13001536enum VkValidationCheckEXT {
1537 VK_VALIDATION_CHECK_ALL_EXT = 0,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001538 VK_VALIDATION_CHECK_SHADERS_EXT = 1,
Chris Forbes289cb792016-12-30 15:03:55 +13001539}
1540
Jesse Hallad250842017-03-10 18:35:38 -08001541@extension("VK_KHR_descriptor_update_template") // 86
1542enum VkDescriptorUpdateTemplateTypeKHR {
1543 VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0,
1544 VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1,
1545}
1546
1547@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001548enum VkIndirectCommandsTokenTypeNVX {
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001549 VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX = 0,
1550 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX = 1,
1551 VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX = 2,
1552 VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX = 3,
1553 VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX = 4,
1554 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX = 5,
1555 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX = 6,
1556 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX = 7,
Chris Forbes289cb792016-12-30 15:03:55 +13001557}
1558
Jesse Hallad250842017-03-10 18:35:38 -08001559@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001560enum VkObjectEntryTypeNVX {
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001561 VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX = 0,
1562 VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX = 1,
1563 VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX = 2,
1564 VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX = 3,
1565 VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX = 4,
Chris Forbes289cb792016-12-30 15:03:55 +13001566}
Jesse Hall715b86a2016-01-16 16:34:29 -08001567
Jesse Hallad250842017-03-10 18:35:38 -08001568@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001569enum VkDisplayPowerStateEXT {
1570 VK_DISPLAY_POWER_STATE_OFF_EXT = 0,
1571 VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,
1572 VK_DISPLAY_POWER_STATE_ON_EXT = 2,
1573}
1574
Jesse Hallad250842017-03-10 18:35:38 -08001575@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001576enum VkDeviceEventTypeEXT {
1577 VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0,
1578}
1579
Jesse Hallad250842017-03-10 18:35:38 -08001580@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001581enum VkDisplayEventTypeEXT {
1582 VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,
1583}
1584
Jesse Hallad250842017-03-10 18:35:38 -08001585@extension("VK_NV_viewport_swizzle") // 99
1586enum VkViewportCoordinateSwizzleNV {
1587 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0,
1588 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1,
1589 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2,
1590 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3,
1591 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4,
1592 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5,
1593 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6,
1594 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7,
1595}
1596
1597@extension("VK_EXT_discard_rectangles") // 100
1598enum VkDiscardRectangleModeEXT {
1599 VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,
1600 VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,
1601}
1602
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001603@extension("VK_EXT_sampler_filter_minmax") // 131
1604enum VkSamplerReductionModeEXT {
1605 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0,
1606 VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1,
1607 VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2,
1608}
1609
1610@extension("VK_EXT_blend_operation_advanced") // 149
1611enum VkBlendOverlapEXT {
1612 VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0,
1613 VK_BLEND_OVERLAP_DISJOINT_EXT = 1,
1614 VK_BLEND_OVERLAP_CONJOINT_EXT = 2,
1615}
1616
1617@extension("VK_NV_framebuffer_mixed_samples") // 153
1618enum VkCoverageModulationModeNV {
1619 VK_COVERAGE_MODULATION_MODE_NONE_NV = 0,
1620 VK_COVERAGE_MODULATION_MODE_RGB_NV = 1,
1621 VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2,
1622 VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3,
1623}
1624
Jesse Hall77726222017-09-19 14:49:27 -05001625@extension("VK_EXT_validation_cache") // 161
1626enum VkValidationCacheHeaderVersionEXT {
1627 VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1,
1628}
1629
Jesse Halld27f6aa2015-08-15 17:58:48 -07001630/////////////////
1631// Bitfields //
1632/////////////////
1633
Jesse Halld27f6aa2015-08-15 17:58:48 -07001634/// Queue capabilities
Jesse Halld8bade02015-11-24 10:24:18 -08001635type VkFlags VkQueueFlags
1636bitfield VkQueueFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001637 VK_QUEUE_GRAPHICS_BIT = 0x00000001, /// Queue supports graphics operations
1638 VK_QUEUE_COMPUTE_BIT = 0x00000002, /// Queue supports compute operations
Jesse Hall65ab5522015-11-30 00:07:16 -08001639 VK_QUEUE_TRANSFER_BIT = 0x00000004, /// Queue supports transfer operations
Jesse Hallb00daad2015-11-29 19:46:20 -08001640 VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008, /// Queue supports sparse resource memory management operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001641}
1642
1643/// Memory properties passed into vkAllocMemory().
Jesse Halld8bade02015-11-24 10:24:18 -08001644type VkFlags VkMemoryPropertyFlags
1645bitfield VkMemoryPropertyFlagBits {
Jesse Halld1af8122015-11-29 23:50:38 -08001646 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
1647 VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
1648 VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
1649 VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
1650 VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001651}
1652
1653/// Memory heap flags
Jesse Halld8bade02015-11-24 10:24:18 -08001654type VkFlags VkMemoryHeapFlags
1655bitfield VkMemoryHeapFlagBits {
Jesse Halld1af8122015-11-29 23:50:38 -08001656 VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
Jesse Hallad250842017-03-10 18:35:38 -08001657
1658 //@extension("VK_KHX_device_group_creation") // 71
1659 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001660}
1661
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001662/// Access flags
1663type VkFlags VkAccessFlags
1664bitfield VkAccessFlagBits {
1665 VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
1666 VK_ACCESS_INDEX_READ_BIT = 0x00000002,
1667 VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
1668 VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
1669 VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
1670 VK_ACCESS_SHADER_READ_BIT = 0x00000020,
1671 VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
1672 VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
1673 VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
1674 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
1675 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
1676 VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
1677 VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
1678 VK_ACCESS_HOST_READ_BIT = 0x00002000,
1679 VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
1680 VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
1681 VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
Chris Forbes289cb792016-12-30 15:03:55 +13001682
Jesse Hallad250842017-03-10 18:35:38 -08001683 //@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001684 VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000,
Chris Forbes289cb792016-12-30 15:03:55 +13001685 VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001686
1687 //@extension("VK_EXT_blend_operation_advanced") // 149
1688 VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001689}
1690
1691/// Buffer usage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001692type VkFlags VkBufferUsageFlags
1693bitfield VkBufferUsageFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -08001694 VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations
1695 VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001696 VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004, /// Can be used as TBO
1697 VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008, /// Can be used as IBO
1698 VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010, /// Can be used as UBO
1699 VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020, /// Can be used as SSBO
1700 VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, /// Can be used as source of fixed function index fetch (index buffer)
1701 VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, /// Can be used as source of fixed function vertex fetch (VBO)
1702 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, /// Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer)
1703}
1704
1705/// Buffer creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001706type VkFlags VkBufferCreateFlags
1707bitfield VkBufferCreateFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001708 VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Buffer should support sparse backing
Jesse Halld27f6aa2015-08-15 17:58:48 -07001709 VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Buffer should support sparse backing with partial residency
1710 VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004, /// Buffer should support constent data access to physical memory blocks mapped into multiple locations of sparse buffers
1711}
1712
1713/// Shader stage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001714type VkFlags VkShaderStageFlags
1715bitfield VkShaderStageFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001716 VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
Jesse Hallae38f732015-11-19 21:32:50 -08001717 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
1718 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001719 VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
1720 VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
1721 VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
Jesse Hallc7467b72015-11-29 21:05:26 -08001722 VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001723
1724 VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
1725}
1726
Jesse Hallfbf97b02015-11-20 14:17:03 -08001727/// Descriptor pool create flags
Jesse Halld8bade02015-11-24 10:24:18 -08001728type VkFlags VkDescriptorPoolCreateFlags
1729bitfield VkDescriptorPoolCreateFlagBits {
Jesse Hallfbf97b02015-11-20 14:17:03 -08001730 VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
1731}
1732
1733/// Descriptor pool reset flags
Jesse Halld8bade02015-11-24 10:24:18 -08001734type VkFlags VkDescriptorPoolResetFlags
Jesse Halla6429252015-11-29 18:59:42 -08001735//bitfield VkDescriptorPoolResetFlagBits {
1736//}
Jesse Hallfbf97b02015-11-20 14:17:03 -08001737
Jesse Halld27f6aa2015-08-15 17:58:48 -07001738/// Image usage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001739type VkFlags VkImageUsageFlags
1740bitfield VkImageUsageFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -08001741 VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations
1742 VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001743 VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004, /// Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
1744 VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008, /// Can be used as storage image (STORAGE_IMAGE descriptor type)
1745 VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010, /// Can be used as framebuffer color attachment
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001746 VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020, /// Can be used as framebuffer depth/stencil attachment
Jesse Halld27f6aa2015-08-15 17:58:48 -07001747 VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040, /// Image data not needed outside of rendering
1748 VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080, /// Can be used as framebuffer input attachment
1749}
1750
1751/// Image creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001752type VkFlags VkImageCreateFlags
1753bitfield VkImageCreateFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001754 VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Image should support sparse backing
Jesse Halld27f6aa2015-08-15 17:58:48 -07001755 VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Image should support sparse backing with partial residency
1756 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 -07001757 VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008, /// Allows image views to have different format than the base image
1758 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 -08001759
Jesse Hallad250842017-03-10 18:35:38 -08001760 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08001761 VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 0x00000020,
Jesse Hallad250842017-03-10 18:35:38 -08001762
1763 //@extension("VK_KHX_device_group") // 61
1764 VK_IMAGE_CREATE_BIND_SFR_BIT_KHX = 0x00000040,
Jesse Hall77726222017-09-19 14:49:27 -05001765
1766 //@extension("VK_EXT_sample_locations") // 144
1767 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001768}
1769
Jesse Hallb00daad2015-11-29 19:46:20 -08001770/// Image view creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001771type VkFlags VkImageViewCreateFlags
Jesse Hallb00daad2015-11-29 19:46:20 -08001772//bitfield VkImageViewCreateFlagBits {
1773//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001774
1775/// Pipeline creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001776type VkFlags VkPipelineCreateFlags
1777bitfield VkPipelineCreateFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001778 VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
1779 VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
1780 VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
Jesse Hallad250842017-03-10 18:35:38 -08001781
1782 //@extension("VK_KHX_device_group") // 61
1783 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX = 0x00000008,
1784 VK_PIPELINE_CREATE_DISPATCH_BASE_KHX = 0x00000010,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001785}
1786
Jesse Hall65ab5522015-11-30 00:07:16 -08001787/// Color component flags
1788type VkFlags VkColorComponentFlags
1789bitfield VkColorComponentFlagBits {
1790 VK_COLOR_COMPONENT_R_BIT = 0x00000001,
1791 VK_COLOR_COMPONENT_G_BIT = 0x00000002,
1792 VK_COLOR_COMPONENT_B_BIT = 0x00000004,
1793 VK_COLOR_COMPONENT_A_BIT = 0x00000008,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001794}
1795
1796/// Fence creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001797type VkFlags VkFenceCreateFlags
1798bitfield VkFenceCreateFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001799 VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
1800}
1801
1802/// Semaphore creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001803type VkFlags VkSemaphoreCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001804//bitfield VkSemaphoreCreateFlagBits {
1805//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001806
1807/// Format capability flags
Jesse Halld8bade02015-11-24 10:24:18 -08001808type VkFlags VkFormatFeatureFlags
1809bitfield VkFormatFeatureFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001810 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001, /// Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
1811 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002, /// Format can be used for storage images (STORAGE_IMAGE descriptor type)
1812 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004, /// Format supports atomic operations in case it's used for storage images
1813 VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008, /// Format can be used for uniform texel buffers (TBOs)
1814 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010, /// Format can be used for storage texel buffers (IBOs)
1815 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020, /// Format supports atomic operations in case it's used for storage texel buffers
1816 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040, /// Format can be used for vertex buffers (VBOs)
1817 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080, /// Format can be used for color attachment images
1818 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100, /// Format supports blending in case it's used for color attachment images
1819 VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200, /// Format can be used for depth/stencil attachment images
Jesse Hall3fbc8562015-11-29 22:10:52 -08001820 VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400, /// Format can be used as the source image of blits with vkCommandBlitImage
1821 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 -08001822 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
Jesse Hall26763382016-05-20 07:13:52 -07001823
Jesse Hallad250842017-03-10 18:35:38 -08001824 //@extension("VK_IMG_filter_cubic") // 16
Jesse Hall26763382016-05-20 07:13:52 -07001825 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001826
Jesse Hallad250842017-03-10 18:35:38 -08001827 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08001828 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 0x00004000,
1829 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 0x00008000,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001830
1831 //@extension("VK_EXT_sampler_filter_minmax") // 131
1832 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 0x00010000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001833}
1834
1835/// Query control flags
Jesse Halld8bade02015-11-24 10:24:18 -08001836type VkFlags VkQueryControlFlags
1837bitfield VkQueryControlFlagBits {
Jesse Hall65ab5522015-11-30 00:07:16 -08001838 VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001839}
1840
1841/// Query result flags
Jesse Halld8bade02015-11-24 10:24:18 -08001842type VkFlags VkQueryResultFlags
1843bitfield VkQueryResultFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001844 VK_QUERY_RESULT_64_BIT = 0x00000001, /// Results of the queries are written to the destination buffer as 64-bit values
1845 VK_QUERY_RESULT_WAIT_BIT = 0x00000002, /// Results of the queries are waited on before proceeding with the result copy
1846 VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, /// Besides the results of the query, the availability of the results is also written
1847 VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008, /// Copy the partial results of the query even if the final results aren't available
1848}
1849
1850/// Shader module creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001851type VkFlags VkShaderModuleCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001852//bitfield VkShaderModuleCreateFlagBits {
1853//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001854
Jesse Halld27f6aa2015-08-15 17:58:48 -07001855/// Event creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001856type VkFlags VkEventCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001857//bitfield VkEventCreateFlagBits {
1858//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001859
Jesse Halla15a4bf2015-11-19 22:48:02 -08001860/// Command buffer usage flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08001861type VkFlags VkCommandBufferUsageFlags
1862bitfield VkCommandBufferUsageFlagBits {
1863 VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
1864 VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
1865 VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001866}
1867
1868/// Pipeline statistics flags
Jesse Halld8bade02015-11-24 10:24:18 -08001869type VkFlags VkQueryPipelineStatisticFlags
1870bitfield VkQueryPipelineStatisticFlagBits {
Jesse Hallae38f732015-11-19 21:32:50 -08001871 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001, /// Optional
1872 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002, /// Optional
1873 VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004, /// Optional
1874 VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008, /// Optional
1875 VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010, /// Optional
1876 VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020, /// Optional
1877 VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040, /// Optional
1878 VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080, /// Optional
1879 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100, /// Optional
1880 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200, /// Optional
1881 VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400, /// Optional
Jesse Halld27f6aa2015-08-15 17:58:48 -07001882}
1883
1884/// Memory mapping flags
Jesse Halld8bade02015-11-24 10:24:18 -08001885type VkFlags VkMemoryMapFlags
Jesse Halla6429252015-11-29 18:59:42 -08001886//bitfield VkMemoryMapFlagBits {
1887//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001888
1889/// Bitfield of image aspects
Jesse Halld8bade02015-11-24 10:24:18 -08001890type VkFlags VkImageAspectFlags
1891bitfield VkImageAspectFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001892 VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
1893 VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
1894 VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
1895 VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
1896}
1897
1898/// Sparse memory bind flags
Jesse Halld8bade02015-11-24 10:24:18 -08001899type VkFlags VkSparseMemoryBindFlags
Jesse Hall091ed9e2015-11-30 00:55:29 -08001900bitfield VkSparseMemoryBindFlagBits {
1901 VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
1902}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001903
1904/// Sparse image memory requirements flags
Jesse Halld8bade02015-11-24 10:24:18 -08001905type VkFlags VkSparseImageFormatFlags
1906bitfield VkSparseImageFormatFlagBits {
Jesse Hallb00daad2015-11-29 19:46:20 -08001907 VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001, /// Image uses a single miptail region for all array slices
1908 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.
1909 VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004, /// Image uses a non-standard sparse block size
Jesse Halld27f6aa2015-08-15 17:58:48 -07001910}
1911
1912/// Pipeline stages
Jesse Halld8bade02015-11-24 10:24:18 -08001913type VkFlags VkPipelineStageFlags
1914bitfield VkPipelineStageFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001915 VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001, /// Before subsequent commands are processed
1916 VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002, /// Draw/DispatchIndirect command fetch
1917 VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004, /// Vertex/index fetch
1918 VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008, /// Vertex shading
Jesse Hallae38f732015-11-19 21:32:50 -08001919 VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010, /// Tessellation control shading
1920 VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020, /// Tessellation evaluation shading
Jesse Halld27f6aa2015-08-15 17:58:48 -07001921 VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040, /// Geometry shading
1922 VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080, /// Fragment shading
1923 VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100, /// Early fragment (depth/stencil) tests
1924 VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200, /// Late fragment (depth/stencil) tests
1925 VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400, /// Color attachment writes
1926 VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800, /// Compute shading
1927 VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000, /// Transfer/copy operations
Jesse Hall543a7ff2016-01-08 16:38:30 -08001928 VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
1929 VK_PIPELINE_STAGE_HOST_BIT = 0x00004000, /// Indicates host (CPU) is a source/sink of the dependency
Jesse Halld27f6aa2015-08-15 17:58:48 -07001930
Jesse Hall543a7ff2016-01-08 16:38:30 -08001931 VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000, /// All stages of the graphics pipeline
1932 VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000, /// All graphics, compute, copy, and transition commands
Chris Forbes289cb792016-12-30 15:03:55 +13001933
Jesse Hallad250842017-03-10 18:35:38 -08001934 //@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001935 VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001936}
1937
1938/// Render pass attachment description flags
Jesse Halld8bade02015-11-24 10:24:18 -08001939type VkFlags VkAttachmentDescriptionFlags
1940bitfield VkAttachmentDescriptionFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001941 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 -07001942}
1943
1944/// Subpass description flags
Jesse Halld8bade02015-11-24 10:24:18 -08001945type VkFlags VkSubpassDescriptionFlags
1946bitfield VkSubpassDescriptionFlagBits {
Jesse Hallad250842017-03-10 18:35:38 -08001947 //@extension("VK_NVX_multiview_per_view_attributes") // 98
1948 VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001,
1949 VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001950}
1951
1952/// Command pool creation flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08001953type VkFlags VkCommandPoolCreateFlags
1954bitfield VkCommandPoolCreateFlagBits {
1955 VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001, /// Command buffers have a short lifetime
1956 VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002, /// Command buffers may release their memory individually
Jesse Halld27f6aa2015-08-15 17:58:48 -07001957}
1958
1959/// Command pool reset flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08001960type VkFlags VkCommandPoolResetFlags
1961bitfield VkCommandPoolResetFlagBits {
1962 VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the pool
Jesse Halld27f6aa2015-08-15 17:58:48 -07001963}
1964
Jesse Hall3fbc8562015-11-29 22:10:52 -08001965type VkFlags VkCommandBufferResetFlags
1966bitfield VkCommandBufferResetFlagBits {
1967 VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the buffer
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001968}
1969
Jesse Halld8bade02015-11-24 10:24:18 -08001970type VkFlags VkSampleCountFlags
1971bitfield VkSampleCountFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001972 VK_SAMPLE_COUNT_1_BIT = 0x00000001,
1973 VK_SAMPLE_COUNT_2_BIT = 0x00000002,
1974 VK_SAMPLE_COUNT_4_BIT = 0x00000004,
1975 VK_SAMPLE_COUNT_8_BIT = 0x00000008,
1976 VK_SAMPLE_COUNT_16_BIT = 0x00000010,
1977 VK_SAMPLE_COUNT_32_BIT = 0x00000020,
1978 VK_SAMPLE_COUNT_64_BIT = 0x00000040,
1979}
1980
Jesse Halld8bade02015-11-24 10:24:18 -08001981type VkFlags VkStencilFaceFlags
1982bitfield VkStencilFaceFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001983 VK_STENCIL_FACE_FRONT_BIT = 0x00000001, /// Front face
1984 VK_STENCIL_FACE_BACK_BIT = 0x00000002, /// Back face
Jesse Hallc7467b72015-11-29 21:05:26 -08001985 VK_STENCIL_FRONT_AND_BACK = 0x00000003,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001986}
1987
Jesse Halla6429252015-11-29 18:59:42 -08001988/// Instance creation flags
1989type VkFlags VkInstanceCreateFlags
1990//bitfield VkInstanceCreateFlagBits {
1991//}
1992
1993/// Device creation flags
1994type VkFlags VkDeviceCreateFlags
1995//bitfield VkDeviceCreateFlagBits {
1996//}
1997
1998/// Device queue creation flags
1999type VkFlags VkDeviceQueueCreateFlags
2000//bitfield VkDeviceQueueCreateFlagBits {
2001//}
2002
2003/// Query pool creation flags
2004type VkFlags VkQueryPoolCreateFlags
2005//bitfield VkQueryPoolCreateFlagBits {
2006//}
2007
2008/// Buffer view creation flags
2009type VkFlags VkBufferViewCreateFlags
2010//bitfield VkBufferViewCreateFlagBits {
2011//}
2012
2013/// Pipeline cache creation flags
2014type VkFlags VkPipelineCacheCreateFlags
2015//bitfield VkPipelineCacheCreateFlagBits {
2016//}
2017
2018/// Pipeline shader stage creation flags
2019type VkFlags VkPipelineShaderStageCreateFlags
2020//bitfield VkPipelineShaderStageCreateFlagBits {
2021//}
2022
2023/// Descriptor set layout creation flags
2024type VkFlags VkDescriptorSetLayoutCreateFlags
Jesse Hallad250842017-03-10 18:35:38 -08002025bitfield VkDescriptorSetLayoutCreateFlagBits {
2026 //@extension("VK_KHR_push_descriptor") // 81
2027 VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
2028}
Jesse Halla6429252015-11-29 18:59:42 -08002029
2030/// Pipeline vertex input state creation flags
2031type VkFlags VkPipelineVertexInputStateCreateFlags
2032//bitfield VkPipelineVertexInputStateCreateFlagBits {
2033//}
2034
2035/// Pipeline input assembly state creation flags
2036type VkFlags VkPipelineInputAssemblyStateCreateFlags
2037//bitfield VkPipelineInputAssemblyStateCreateFlagBits {
2038//}
2039
2040/// Tessellation state creation flags
2041type VkFlags VkPipelineTessellationStateCreateFlags
2042//bitfield VkPipelineTessellationStateCreateFlagBits {
2043//}
2044
2045/// Viewport state creation flags
2046type VkFlags VkPipelineViewportStateCreateFlags
2047//bitfield VkPipelineViewportStateCreateFlagBits {
2048//}
2049
Jesse Hall3fbc8562015-11-29 22:10:52 -08002050/// Rasterization state creation flags
2051type VkFlags VkPipelineRasterizationStateCreateFlags
2052//bitfield VkPipelineRasterizationStateCreateFlagBits {
Jesse Halla6429252015-11-29 18:59:42 -08002053//}
2054
2055/// Multisample state creation flags
2056type VkFlags VkPipelineMultisampleStateCreateFlags
2057//bitfield VkPipelineMultisampleStateCreateFlagBits {
2058//}
2059
2060/// Color blend state creation flags
2061type VkFlags VkPipelineColorBlendStateCreateFlags
2062//bitfield VkPipelineColorBlendStateCreateFlagBits {
2063//}
2064
2065/// Depth/stencil state creation flags
2066type VkFlags VkPipelineDepthStencilStateCreateFlags
2067//bitfield VkPipelineDepthStencilStateCreateFlagBits {
2068//}
2069
2070/// Dynamic state creation flags
2071type VkFlags VkPipelineDynamicStateCreateFlags
2072//bitfield VkPipelineDynamicStateCreateFlagBits {
2073//}
2074
2075/// Pipeline layout creation flags
2076type VkFlags VkPipelineLayoutCreateFlags
2077//bitfield VkPipelineLayoutCreateFlagBits {
2078//}
2079
2080/// Sampler creation flags
2081type VkFlags VkSamplerCreateFlags
2082//bitfield VkSamplerCreateFlagBits {
2083//}
2084
2085/// Render pass creation flags
2086type VkFlags VkRenderPassCreateFlags
2087//bitfield VkRenderPassCreateFlagBits {
2088//}
2089
2090/// Framebuffer creation flags
2091type VkFlags VkFramebufferCreateFlags
2092//bitfield VkFramebufferCreateFlagBits {
2093//}
2094
Jesse Halldc6d36c2015-11-29 19:12:15 -08002095/// Dependency flags
2096type VkFlags VkDependencyFlags
2097bitfield VkDependencyFlagBits {
2098 VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
Jesse Hallad250842017-03-10 18:35:38 -08002099
2100 //@extension("VK_KHX_multiview") // 54
2101 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX = 0x00000002,
2102
2103 //@extension("VK_KHX_device_group") // 61
2104 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX = 0x00000004,
Jesse Halldc6d36c2015-11-29 19:12:15 -08002105}
2106
Jesse Hallc7467b72015-11-29 21:05:26 -08002107/// Cull mode flags
2108type VkFlags VkCullModeFlags
2109bitfield VkCullModeFlagBits {
2110 VK_CULL_MODE_NONE = 0x00000000,
2111 VK_CULL_MODE_FRONT_BIT = 0x00000001,
2112 VK_CULL_MODE_BACK_BIT = 0x00000002,
2113 VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
2114}
2115
Jesse Hallad250842017-03-10 18:35:38 -08002116@extension("VK_KHR_surface") // 1
Jesse Halld8bade02015-11-24 10:24:18 -08002117type VkFlags VkSurfaceTransformFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002118@extension("VK_KHR_surface") // 1
Jesse Halld8bade02015-11-24 10:24:18 -08002119bitfield VkSurfaceTransformFlagBitsKHR {
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002120 VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
Jesse Hall9ba8bc82015-11-30 16:22:16 -08002121 VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
2122 VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
2123 VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
2124 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
2125 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
2126 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
2127 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
2128 VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
Michael Lentine88594d72015-11-12 12:49:45 -08002129}
Jesse Halld27f6aa2015-08-15 17:58:48 -07002130
Jesse Hallad250842017-03-10 18:35:38 -08002131@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08002132type VkFlags VkCompositeAlphaFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002133@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08002134bitfield VkCompositeAlphaFlagBitsKHR {
2135 VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
2136 VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
2137 VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
2138 VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
2139}
2140
Jesse Hallad250842017-03-10 18:35:38 -08002141@extension("VK_KHR_swapchain") // 2
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002142type VkFlags VkSwapchainCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002143@extension("VK_KHR_swapchain") // 2
2144bitfield VkSwapchainCreateFlagBitsKHR {
2145 //@extension("VK_KHX_device_group") // 61
2146 VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX = 0x00000001,
2147}
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002148
Jesse Hallad250842017-03-10 18:35:38 -08002149@extension("VK_KHR_display") // 3
Jesse Halld8bade02015-11-24 10:24:18 -08002150type VkFlags VkDisplayPlaneAlphaFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002151@extension("VK_KHR_display") // 3
Jesse Halld8bade02015-11-24 10:24:18 -08002152bitfield VkDisplayPlaneAlphaFlagBitsKHR {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002153 VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
2154 VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
2155 VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
2156 VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
Jesse Hall1356b0d2015-11-23 17:24:58 -08002157}
2158
Jesse Hallad250842017-03-10 18:35:38 -08002159@extension("VK_KHR_display") // 3
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002160type VkFlags VkDisplaySurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002161//@extension("VK_KHR_display") // 3
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002162//bitfield VkDisplaySurfaceCreateFlagBitsKHR {
2163//}
2164
Jesse Hallad250842017-03-10 18:35:38 -08002165@extension("VK_KHR_display") // 3
Jesse Hall9ba8bc82015-11-30 16:22:16 -08002166type VkFlags VkDisplayModeCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002167//@extension("VK_KHR_display") // 3
Jesse Hall9ba8bc82015-11-30 16:22:16 -08002168//bitfield VkDisplayModeCreateFlagBitsKHR {
2169//}
2170
Jesse Hallad250842017-03-10 18:35:38 -08002171@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002172type VkFlags VkXlibSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002173//@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002174//bitfield VkXlibSurfaceCreateFlagBitsKHR {
2175//}
2176
Jesse Hallad250842017-03-10 18:35:38 -08002177@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002178type VkFlags VkXcbSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002179//@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002180//bitfield VkXcbSurfaceCreateFlagBitsKHR {
2181//}
2182
Jesse Hallad250842017-03-10 18:35:38 -08002183@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002184type VkFlags VkWaylandSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002185//@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002186//bitfield VkWaylandSurfaceCreateFlagBitsKHR {
2187//}
2188
Jesse Hallad250842017-03-10 18:35:38 -08002189@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002190type VkFlags VkMirSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002191//@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002192//bitfield VkMirSurfaceCreateFlagBitsKHR {
2193//}
2194
Jesse Hallad250842017-03-10 18:35:38 -08002195@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002196type VkFlags VkAndroidSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002197//@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002198//bitfield VkAndroidSurfaceCreateFlagBitsKHR {
2199//}
2200
Jesse Hallad250842017-03-10 18:35:38 -08002201@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002202type VkFlags VkWin32SurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002203//@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002204//bitfield VkWin32SurfaceCreateFlagBitsKHR {
2205//}
2206
Jesse Hallad250842017-03-10 18:35:38 -08002207@extension("VK_ANDROID_native_buffer") // 11
Jesse Hall889cd9a2017-02-25 22:12:23 -08002208type VkFlags VkSwapchainImageUsageFlagsANDROID
Jesse Hallad250842017-03-10 18:35:38 -08002209@extension("VK_ANDROID_native_buffer") // 11
Jesse Hall889cd9a2017-02-25 22:12:23 -08002210bitfield VkSwapchainImageUsageFlagBitsANDROID {
2211 VK_SWAPCHAIN_IMAGE_USAGE_FLAGS_SHARED_BIT_ANDROID = 0x00000001,
2212}
2213
Jesse Hallad250842017-03-10 18:35:38 -08002214@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08002215type VkFlags VkDebugReportFlagsEXT
Jesse Hallad250842017-03-10 18:35:38 -08002216@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08002217bitfield VkDebugReportFlagBitsEXT {
Jesse Halle2948d82016-02-25 04:19:32 -08002218 VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,
2219 VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002,
2220 VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004,
Jesse Hall715b86a2016-01-16 16:34:29 -08002221 VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008,
2222 VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010,
2223}
2224
Jesse Hallad250842017-03-10 18:35:38 -08002225@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13002226type VkFlags VkExternalMemoryHandleTypeFlagsNV
Jesse Hallad250842017-03-10 18:35:38 -08002227@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13002228bitfield VkExternalMemoryHandleTypeFlagBitsNV {
Jesse Halleb02c472017-02-24 15:13:45 -08002229 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,
2230 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,
2231 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,
2232 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,
Chris Forbes289cb792016-12-30 15:03:55 +13002233}
2234
Jesse Hallad250842017-03-10 18:35:38 -08002235@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13002236type VkFlags VkExternalMemoryFeatureFlagsNV
Jesse Hallad250842017-03-10 18:35:38 -08002237@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13002238bitfield VkExternalMemoryFeatureFlagBitsNV {
Jesse Halleb02c472017-02-24 15:13:45 -08002239 VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001,
2240 VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002,
2241 VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004,
Chris Forbes289cb792016-12-30 15:03:55 +13002242}
2243
Jesse Hallad250842017-03-10 18:35:38 -08002244@extension("VK_KHX_device_group") // 61
2245type VkFlags VkPeerMemoryFeatureFlagsKHX
2246@extension("VK_KHX_device_group") // 61
2247bitfield VkPeerMemoryFeatureFlagBitsKHX {
2248 VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX = 0x00000001,
2249 VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX = 0x00000002,
2250 VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX = 0x00000004,
2251 VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX = 0x00000008,
2252}
2253
2254@extension("VK_KHX_device_group") // 61
2255type VkFlags VkMemoryAllocateFlagsKHX
2256@extension("VK_KHX_device_group") // 61
2257bitfield VkMemoryAllocateFlagBitsKHX {
2258 VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX = 0x00000001,
2259}
2260
2261@extension("VK_KHX_device_group") // 61
2262type VkFlags VkDeviceGroupPresentModeFlagsKHX
2263@extension("VK_KHX_device_group") // 61
2264bitfield VkDeviceGroupPresentModeFlagBitsKHX {
2265 VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX = 0x00000001,
2266 VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX = 0x00000002,
2267 VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX = 0x00000004,
2268 VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX = 0x00000008,
2269}
2270
2271@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08002272type VkFlags VkViSurfaceCreateFlagsNN
Jesse Hallad250842017-03-10 18:35:38 -08002273//@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08002274//bitfield VkViSurfaceCreateFlagBitsNN {
2275//}
2276
Jesse Hallad250842017-03-10 18:35:38 -08002277@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08002278type VkFlags VkCommandPoolTrimFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002279//@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08002280//bitfield VkCommandPoolTrimFlagBitsKHR {
2281//}
2282
Jesse Hall9492f992017-08-28 12:10:06 -07002283@extension("VK_KHR_external_memory_capabilities") // 72
2284type VkFlags VkExternalMemoryHandleTypeFlagsKHR
2285@extension("VK_KHR_external_memory_capabilities") // 72
2286bitfield VkExternalMemoryHandleTypeFlagBitsKHR {
2287 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 0x00000001,
2288 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 0x00000002,
2289 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 0x00000004,
2290 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 0x00000008,
2291 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 0x00000010,
2292 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 0x00000020,
2293 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 0x00000040,
Jesse Hallad250842017-03-10 18:35:38 -08002294}
2295
Jesse Hall9492f992017-08-28 12:10:06 -07002296@extension("VK_KHR_external_memory_capabilities") // 72
2297type VkFlags VkExternalMemoryFeatureFlagsKHR
2298@extension("VK_KHR_external_memory_capabilities") // 72
2299bitfield VkExternalMemoryFeatureFlagBitsKHR {
2300 VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 0x00000001,
2301 VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 0x00000002,
2302 VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 0x00000004,
Jesse Hallad250842017-03-10 18:35:38 -08002303}
2304
Jesse Hall9492f992017-08-28 12:10:06 -07002305@extension("VK_KHR_external_semaphore_capabilities") // 77
2306type VkFlags VkExternalSemaphoreHandleTypeFlagsKHR
2307@extension("VK_KHR_external_semaphore_capabilities") // 77
2308bitfield VkExternalSemaphoreHandleTypeFlagBitsKHR {
2309 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 0x00000001
2310 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 0x00000002
2311 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 0x00000004
2312 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 0x00000008
2313 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHR = 0x00000010
Jesse Hallad250842017-03-10 18:35:38 -08002314}
2315
Jesse Hall9492f992017-08-28 12:10:06 -07002316@extension("VK_KHR_external_semaphore_capabilities") // 77
2317type VkFlags VkExternalSemaphoreFeatureFlagsKHR
2318@extension("VK_KHR_external_semaphore_capabilities") // 77
2319bitfield VkExternalSemaphoreFeatureFlagBitsKHR {
2320 VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 0x00000001,
2321 VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 0x00000002,
2322}
2323
2324@extension("VK_KHR_external_semaphore") // 78
2325type VkFlags VkSemaphoreImportFlagsKHR
2326@extension("VK_KHR_external_semaphore") // 78
2327bitfield VkSemaphoreImportFlagBitsKHR {
2328 VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 0x00000001,
Jesse Hallad250842017-03-10 18:35:38 -08002329}
2330
2331@extension("VK_KHR_descriptor_update_template") // 86
2332type VkFlags VkDescriptorUpdateTemplateCreateFlagsKHR
2333//@extension("VK_KHR_descriptor_update_template") // 86
2334//bitfield VkDescriptorUpdateTemplateCreateFlagBitsKHR {
2335//}
2336
2337@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002338type VkFlags VkIndirectCommandsLayoutUsageFlagsNVX
Jesse Hallad250842017-03-10 18:35:38 -08002339@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002340bitfield VkIndirectCommandsLayoutUsageFlagBitsNVX {
Jesse Halleb02c472017-02-24 15:13:45 -08002341 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = 0x00000001,
2342 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = 0x00000002,
2343 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = 0x00000004,
2344 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = 0x00000008,
Chris Forbes289cb792016-12-30 15:03:55 +13002345}
2346
Jesse Hallad250842017-03-10 18:35:38 -08002347@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002348type VkFlags VkObjectEntryUsageFlagsNVX
Jesse Hallad250842017-03-10 18:35:38 -08002349@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002350bitfield VkObjectEntryUsageFlagBitsNVX {
Jesse Halleb02c472017-02-24 15:13:45 -08002351 VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = 0x00000001,
2352 VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = 0x00000002,
Chris Forbes289cb792016-12-30 15:03:55 +13002353}
2354
Jesse Hallad250842017-03-10 18:35:38 -08002355@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08002356type VkFlags VkSurfaceCounterFlagsEXT
Jesse Hallad250842017-03-10 18:35:38 -08002357@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08002358bitfield VkSurfaceCounterFlagBitsEXT {
2359 VK_SURFACE_COUNTER_VBLANK_EXT = 0x00000001,
2360}
2361
Jesse Hallad250842017-03-10 18:35:38 -08002362@extension("VK_NV_viewport_swizzle") // 99
2363type VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV
2364//@extension("VK_NV_viewport_swizzle") // 99
2365//bitfield VkPipelineViewportSwizzleStateCreateFlagBitsNV {
2366//}
2367
2368@extension("VK_EXT_discard_rectangles") // 100
2369type VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT
2370//@extension("VK_EXT_discard_rectangles") // 100
2371//bitfield VkPipelineDiscardRectangleStateCreateFlagBitsEXT {
2372//}
2373
Jesse Hall9492f992017-08-28 12:10:06 -07002374@extension("VK_KHR_external_fence_capabilities") // 113
2375type VkFlags VkExternalFenceHandleTypeFlagsKHR
2376@extension("VK_KHR_external_fence_capabilities") // 113
2377bitfield VkExternalFenceHandleTypeFlagBitsKHR {
2378 VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 0x00000001,
2379 VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 0x00000002,
2380 VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 0x00000004,
2381 VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 0x00000008,
2382}
2383
2384@extension("VK_KHR_external_fence_capabilities") // 113
2385type VkFlags VkExternalFenceFeatureFlagsKHR
2386@extension("VK_KHR_external_fence_capabilities") // 113
2387bitfield VkExternalFenceFeatureFlagBitsKHR {
2388 VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 0x00000001,
2389 VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 0x00000002,
2390}
2391
2392@extension("VK_KHR_external_fence") // 114
2393type VkFlags VkFenceImportFlagsKHR
2394@extension("VK_KHR_external_fence") // 114
2395bitfield VkFenceImportFlagBitsKHR {
2396 VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 0x00000001,
2397}
2398
Jesse Hallad250842017-03-10 18:35:38 -08002399@extension("VK_MVK_ios_surface") // 123
2400type VkFlags VkIOSSurfaceCreateFlagsMVK
2401//@extension("VK_MVK_ios_surface") // 123
2402//bitfield VkIOSSurfaceCreateFlagBitsMVK {
2403//}
2404
2405@extension("VK_MVK_macos_surface") // 124
2406type VkFlags VkMacOSSurfaceCreateFlagsMVK
2407//@extension("VK_MVK_macos_surface") // 124
2408//bitfield VkMacOSSurfaceCreateFlagBitsMVK {
2409//}
2410
Jesse Hall7ba0ac72017-07-07 17:13:23 -07002411@extension("VK_NV_fragment_coverage_to_color") // 150
2412type VkFlags VkPipelineCoverageToColorStateCreateFlagsNV
2413@extension("VK_NV_fragment_coverage_to_color") // 150
2414//bitfield VkPipelineCoverageToColorStateCreateFlagBitsNV {
2415//}
2416
2417@extension("VK_NV_framebuffer_mixed_samples") // 153
2418type VkFlags VkPipelineCoverageModulationStateCreateFlagsNV
2419@extension("VK_NV_framebuffer_mixed_samples") // 153
2420//bitfield VkPipelineCoverageModulationStateCreateFlagBitsNV {
2421//}
2422
Jesse Hall77726222017-09-19 14:49:27 -05002423@extension("VK_EXT_validation_cache") // 161
2424type VkFlags VkValidationCacheCreateFlagsEXT
2425@extension("VK_EXT_validation_cache") // 161
2426//bitfield VkValidationCacheCreateFlagBitsEXT {
2427//}
2428
Jesse Halld27f6aa2015-08-15 17:58:48 -07002429//////////////////
2430// Structures //
2431//////////////////
2432
2433class VkOffset2D {
2434 s32 x
2435 s32 y
2436}
2437
2438class VkOffset3D {
2439 s32 x
2440 s32 y
2441 s32 z
2442}
2443
2444class VkExtent2D {
Jesse Hall3dd678a2016-01-08 21:52:01 -08002445 u32 width
2446 u32 height
Jesse Halld27f6aa2015-08-15 17:58:48 -07002447}
2448
2449class VkExtent3D {
Jesse Hall3dd678a2016-01-08 21:52:01 -08002450 u32 width
2451 u32 height
2452 u32 depth
Jesse Halld27f6aa2015-08-15 17:58:48 -07002453}
2454
2455class VkViewport {
Jesse Hall65ab5522015-11-30 00:07:16 -08002456 f32 x
2457 f32 y
Jesse Halld27f6aa2015-08-15 17:58:48 -07002458 f32 width
2459 f32 height
2460 f32 minDepth
2461 f32 maxDepth
2462}
2463
2464class VkRect2D {
2465 VkOffset2D offset
2466 VkExtent2D extent
2467}
2468
Jesse Halla15a4bf2015-11-19 22:48:02 -08002469class VkClearRect {
2470 VkRect2D rect
2471 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002472 u32 layerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002473}
2474
Jesse Hall65ab5522015-11-30 00:07:16 -08002475class VkComponentMapping {
2476 VkComponentSwizzle r
2477 VkComponentSwizzle g
2478 VkComponentSwizzle b
2479 VkComponentSwizzle a
Jesse Halld27f6aa2015-08-15 17:58:48 -07002480}
2481
2482class VkPhysicalDeviceProperties {
2483 u32 apiVersion
2484 u32 driverVersion
Jesse Hall65ab5522015-11-30 00:07:16 -08002485 u32 vendorID
2486 u32 deviceID
Jesse Halld27f6aa2015-08-15 17:58:48 -07002487 VkPhysicalDeviceType deviceType
Jesse Hall65ab5522015-11-30 00:07:16 -08002488 char[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE] deviceName
2489 u8[VK_UUID_SIZE] pipelineCacheUUID
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002490 VkPhysicalDeviceLimits limits
2491 VkPhysicalDeviceSparseProperties sparseProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07002492}
2493
2494class VkExtensionProperties {
Jesse Hall65ab5522015-11-30 00:07:16 -08002495 char[VK_MAX_EXTENSION_NAME_SIZE] extensionName /// extension name
Jesse Halld27f6aa2015-08-15 17:58:48 -07002496 u32 specVersion /// version of the extension specification implemented
2497}
2498
2499class VkLayerProperties {
Jesse Hall65ab5522015-11-30 00:07:16 -08002500 char[VK_MAX_EXTENSION_NAME_SIZE] layerName /// layer name
Jesse Hall3fbc8562015-11-29 22:10:52 -08002501 u32 specVersion /// version of the layer specification implemented
2502 u32 implementationVersion /// build or release version of the layer's library
Jesse Hall65ab5522015-11-30 00:07:16 -08002503 char[VK_MAX_DESCRIPTION_SIZE] description /// Free-form description of the layer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002504}
2505
Jesse Halla366a512015-11-19 22:30:07 -08002506class VkSubmitInfo {
Jesse Hall03b6fe12015-11-24 12:44:21 -08002507 VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_SUBMIT_INFO
2508 const void* pNext /// Next structure in chain
2509 u32 waitSemaphoreCount
Jesse Halla366a512015-11-19 22:30:07 -08002510 const VkSemaphore* pWaitSemaphores
Jesse Hall543a7ff2016-01-08 16:38:30 -08002511 const VkPipelineStageFlags* pWaitDstStageMask
Jesse Hall03b6fe12015-11-24 12:44:21 -08002512 u32 commandBufferCount
Jesse Hall3fbc8562015-11-29 22:10:52 -08002513 const VkCommandBuffer* pCommandBuffers
Jesse Hall03b6fe12015-11-24 12:44:21 -08002514 u32 signalSemaphoreCount
Jesse Halla366a512015-11-19 22:30:07 -08002515 const VkSemaphore* pSignalSemaphores
2516}
2517
Jesse Halld27f6aa2015-08-15 17:58:48 -07002518class VkApplicationInfo {
2519 VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_APPLICATION_INFO
2520 const void* pNext /// Next structure in chain
Jesse Hall3fbc8562015-11-29 22:10:52 -08002521 const char* pApplicationName
2522 u32 applicationVersion
Jesse Halld27f6aa2015-08-15 17:58:48 -07002523 const char* pEngineName
2524 u32 engineVersion
2525 u32 apiVersion
2526}
2527
Jesse Hall3fbc8562015-11-29 22:10:52 -08002528class VkAllocationCallbacks {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002529 void* pUserData
Jesse Hall3fbc8562015-11-29 22:10:52 -08002530 PFN_vkAllocationFunction pfnAllocation
2531 PFN_vkReallocationFunction pfnReallocation
Jesse Halld27f6aa2015-08-15 17:58:48 -07002532 PFN_vkFreeFunction pfnFree
Jesse Hall3fbc8562015-11-29 22:10:52 -08002533 PFN_vkInternalAllocationNotification pfnInternalAllocation
Jesse Hall03b6fe12015-11-24 12:44:21 -08002534 PFN_vkInternalFreeNotification pfnInternalFree
Jesse Halld27f6aa2015-08-15 17:58:48 -07002535}
2536
2537class VkDeviceQueueCreateInfo {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002538 VkStructureType sStype /// Should be VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
2539 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002540 VkDeviceQueueCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002541 u32 queueFamilyIndex
Jesse Halldba27f72015-11-30 14:25:46 -08002542 u32 queueCount
Jesse Hallfbf97b02015-11-20 14:17:03 -08002543 const f32* pQueuePriorities
Jesse Halld27f6aa2015-08-15 17:58:48 -07002544}
2545
2546class VkDeviceCreateInfo {
2547 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO
2548 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002549 VkDeviceCreateFlags flags
Jesse Halldba27f72015-11-30 14:25:46 -08002550 u32 queueCreateInfoCount
2551 const VkDeviceQueueCreateInfo* pQueueCreateInfos
Jesse Hall3dd678a2016-01-08 21:52:01 -08002552 u32 enabledLayerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002553 const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled
Jesse Hall3dd678a2016-01-08 21:52:01 -08002554 u32 enabledExtensionCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002555 const char* const* ppEnabledExtensionNames
2556 const VkPhysicalDeviceFeatures* pEnabledFeatures
Jesse Halld27f6aa2015-08-15 17:58:48 -07002557}
2558
2559class VkInstanceCreateInfo {
2560 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
2561 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002562 VkInstanceCreateFlags flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08002563 const VkApplicationInfo* pApplicationInfo
Jesse Hall3dd678a2016-01-08 21:52:01 -08002564 u32 enabledLayerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002565 const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled
Jesse Hall3dd678a2016-01-08 21:52:01 -08002566 u32 enabledExtensionCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002567 const char* const* ppEnabledExtensionNames /// Extension names to be enabled
2568}
2569
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002570class VkQueueFamilyProperties {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002571 VkQueueFlags queueFlags /// Queue flags
2572 u32 queueCount
Jesse Hallacfa5342015-11-19 21:51:33 -08002573 u32 timestampValidBits
Jesse Hall65ab5522015-11-30 00:07:16 -08002574 VkExtent3D minImageTransferGranularity
Jesse Halld27f6aa2015-08-15 17:58:48 -07002575}
2576
2577class VkPhysicalDeviceMemoryProperties {
2578 u32 memoryTypeCount
2579 VkMemoryType[VK_MAX_MEMORY_TYPES] memoryTypes
2580 u32 memoryHeapCount
2581 VkMemoryHeap[VK_MAX_MEMORY_HEAPS] memoryHeaps
2582}
2583
Jesse Hall3fbc8562015-11-29 22:10:52 -08002584class VkMemoryAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002585 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002586 const void* pNext /// Pointer to next structure
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002587 VkDeviceSize allocationSize /// Size of memory allocation
Jesse Halld27f6aa2015-08-15 17:58:48 -07002588 u32 memoryTypeIndex /// Index of the of the memory type to allocate from
2589}
2590
2591class VkMemoryRequirements {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002592 VkDeviceSize size /// Specified in bytes
2593 VkDeviceSize alignment /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002594 u32 memoryTypeBits /// Bitfield of the allowed memory type indices into memoryTypes[] for this object
2595}
2596
2597class VkSparseImageFormatProperties {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002598 VkImageAspectFlagBits aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002599 VkExtent3D imageGranularity
2600 VkSparseImageFormatFlags flags
2601}
2602
2603class VkSparseImageMemoryRequirements {
Jesse Hallb00daad2015-11-29 19:46:20 -08002604 VkSparseImageFormatProperties formatProperties
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002605 u32 imageMipTailFirstLod
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002606 VkDeviceSize imageMipTailSize /// Specified in bytes, must be a multiple of image block size / alignment
2607 VkDeviceSize imageMipTailOffset /// Specified in bytes, must be a multiple of image block size / alignment
2608 VkDeviceSize imageMipTailStride /// Specified in bytes, must be a multiple of image block size / alignment
Jesse Halld27f6aa2015-08-15 17:58:48 -07002609}
2610
2611class VkMemoryType {
2612 VkMemoryPropertyFlags propertyFlags /// Memory properties of this memory type
2613 u32 heapIndex /// Index of the memory heap allocations of this memory type are taken from
2614}
2615
2616class VkMemoryHeap {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002617 VkDeviceSize size /// Available memory in the heap
Jesse Halld27f6aa2015-08-15 17:58:48 -07002618 VkMemoryHeapFlags flags /// Flags for the heap
2619}
2620
2621class VkMappedMemoryRange {
2622 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
2623 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002624 VkDeviceMemory memory /// Mapped memory object
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002625 VkDeviceSize offset /// Offset within the mapped memory the range starts from
2626 VkDeviceSize size /// Size of the range within the mapped memory
Jesse Halld27f6aa2015-08-15 17:58:48 -07002627}
2628
2629class VkFormatProperties {
2630 VkFormatFeatureFlags linearTilingFeatures /// Format features in case of linear tiling
2631 VkFormatFeatureFlags optimalTilingFeatures /// Format features in case of optimal tiling
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002632 VkFormatFeatureFlags bufferFeatures /// Format features supported by buffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07002633}
2634
2635class VkImageFormatProperties {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002636 VkExtent3D maxExtent /// max image dimensions for this resource type
2637 u32 maxMipLevels /// max number of mipmap levels for this resource type
Jesse Halla15a4bf2015-11-19 22:48:02 -08002638 u32 maxArrayLayers /// max array layers for this resource type
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002639 VkSampleCountFlags sampleCounts /// supported sample counts for this resource type
2640 VkDeviceSize maxResourceSize /// max size (in bytes) of this resource type
2641}
2642
Jesse Halla15a4bf2015-11-19 22:48:02 -08002643class VkDescriptorImageInfo {
2644 VkSampler sampler
2645 VkImageView imageView
2646 VkImageLayout imageLayout
2647}
2648
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002649class VkDescriptorBufferInfo {
2650 VkBuffer buffer /// Buffer used for this descriptor when the descriptor is UNIFORM_BUFFER[_DYNAMIC]
2651 VkDeviceSize offset /// Base offset from buffer start in bytes to update in the descriptor set.
2652 VkDeviceSize range /// Size in bytes of the buffer resource for this descriptor update.
Jesse Halld27f6aa2015-08-15 17:58:48 -07002653}
2654
Jesse Halld27f6aa2015-08-15 17:58:48 -07002655class VkWriteDescriptorSet {
2656 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
2657 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002658 VkDescriptorSet dstSet /// Destination descriptor set
2659 u32 dstBinding /// Binding within the destination descriptor set to write
2660 u32 dstArrayElement /// Array element within the destination binding to write
Jesse Hall03b6fe12015-11-24 12:44:21 -08002661 u32 descriptorCount /// Number of descriptors to write (determines the size of the array pointed by <pDescriptors>)
Jesse Halld27f6aa2015-08-15 17:58:48 -07002662 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 -08002663 const VkDescriptorImageInfo* pImageInfo
2664 const VkDescriptorBufferInfo* pBufferInfo
2665 const VkBufferView* pTexelBufferView
Jesse Halld27f6aa2015-08-15 17:58:48 -07002666}
2667
2668class VkCopyDescriptorSet {
2669 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET
2670 const void* pNext /// Pointer to next structure
2671 VkDescriptorSet srcSet /// Source descriptor set
2672 u32 srcBinding /// Binding within the source descriptor set to copy from
2673 u32 srcArrayElement /// Array element within the source binding to copy from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002674 VkDescriptorSet dstSet /// Destination descriptor set
2675 u32 dstBinding /// Binding within the destination descriptor set to copy to
2676 u32 dstArrayElement /// Array element within the destination binding to copy to
Jesse Hall03b6fe12015-11-24 12:44:21 -08002677 u32 descriptorCount /// Number of descriptors to copy
Jesse Halld27f6aa2015-08-15 17:58:48 -07002678}
2679
2680class VkBufferCreateInfo {
2681 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
2682 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002683 VkBufferCreateFlags flags /// Buffer creation flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002684 VkDeviceSize size /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002685 VkBufferUsageFlags usage /// Buffer usage flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002686 VkSharingMode sharingMode
Jesse Hall03b6fe12015-11-24 12:44:21 -08002687 u32 queueFamilyIndexCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002688 const u32* pQueueFamilyIndices
2689}
2690
2691class VkBufferViewCreateInfo {
2692 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO
2693 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002694 VkBufferViewCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002695 VkBuffer buffer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002696 VkFormat format /// Optionally specifies format of elements
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002697 VkDeviceSize offset /// Specified in bytes
2698 VkDeviceSize range /// View size specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002699}
2700
2701class VkImageSubresource {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002702 VkImageAspectFlagBits aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002703 u32 mipLevel
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002704 u32 arrayLayer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002705}
2706
2707class VkImageSubresourceRange {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002708 VkImageAspectFlags aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002709 u32 baseMipLevel
Jesse Hall3fbc8562015-11-29 22:10:52 -08002710 u32 levelCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002711 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002712 u32 layerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002713}
2714
2715class VkMemoryBarrier {
2716 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_BARRIER
2717 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002718 VkAccessFlags srcAccessMask
2719 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002720}
2721
2722class VkBufferMemoryBarrier {
2723 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
2724 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002725 VkAccessFlags srcAccessMask
2726 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002727 u32 srcQueueFamilyIndex /// Queue family to transition ownership from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002728 u32 dstQueueFamilyIndex /// Queue family to transition ownership to
Jesse Halld27f6aa2015-08-15 17:58:48 -07002729 VkBuffer buffer /// Buffer to sync
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002730 VkDeviceSize offset /// Offset within the buffer to sync
2731 VkDeviceSize size /// Amount of bytes to sync
Jesse Halld27f6aa2015-08-15 17:58:48 -07002732}
2733
2734class VkImageMemoryBarrier {
2735 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
2736 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002737 VkAccessFlags srcAccessMask
2738 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002739 VkImageLayout oldLayout /// Current layout of the image
2740 VkImageLayout newLayout /// New layout to transition the image to
2741 u32 srcQueueFamilyIndex /// Queue family to transition ownership from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002742 u32 dstQueueFamilyIndex /// Queue family to transition ownership to
Jesse Halld27f6aa2015-08-15 17:58:48 -07002743 VkImage image /// Image to sync
2744 VkImageSubresourceRange subresourceRange /// Subresource range to sync
2745}
2746
2747class VkImageCreateInfo {
2748 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
2749 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002750 VkImageCreateFlags flags /// Image creation flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002751 VkImageType imageType
2752 VkFormat format
2753 VkExtent3D extent
2754 u32 mipLevels
Jesse Halla15a4bf2015-11-19 22:48:02 -08002755 u32 arrayLayers
Jesse Hall091ed9e2015-11-30 00:55:29 -08002756 VkSampleCountFlagBits samples
Jesse Halld27f6aa2015-08-15 17:58:48 -07002757 VkImageTiling tiling
2758 VkImageUsageFlags usage /// Image usage flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002759 VkSharingMode sharingMode /// Cross-queue-family sharing mode
Jesse Hall03b6fe12015-11-24 12:44:21 -08002760 u32 queueFamilyIndexCount /// Number of queue families to share across
Jesse Halld27f6aa2015-08-15 17:58:48 -07002761 const u32* pQueueFamilyIndices /// Array of queue family indices to share across
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002762 VkImageLayout initialLayout /// Initial image layout for all subresources
Jesse Halld27f6aa2015-08-15 17:58:48 -07002763}
2764
2765class VkSubresourceLayout {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002766 VkDeviceSize offset /// Specified in bytes
2767 VkDeviceSize size /// Specified in bytes
2768 VkDeviceSize rowPitch /// Specified in bytes
Jesse Hall543a7ff2016-01-08 16:38:30 -08002769 VkDeviceSize arrayPitch /// Specified in bytes
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002770 VkDeviceSize depthPitch /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002771}
2772
2773class VkImageViewCreateInfo {
2774 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
2775 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002776 VkImageViewCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002777 VkImage image
2778 VkImageViewType viewType
2779 VkFormat format
Jesse Hall65ab5522015-11-30 00:07:16 -08002780 VkComponentMapping components
Jesse Halld27f6aa2015-08-15 17:58:48 -07002781 VkImageSubresourceRange subresourceRange
Jesse Halld27f6aa2015-08-15 17:58:48 -07002782}
2783
2784class VkBufferCopy {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002785 VkDeviceSize srcOffset /// Specified in bytes
Jesse Hall3fbc8562015-11-29 22:10:52 -08002786 VkDeviceSize dstOffset /// Specified in bytes
Jesse Hallb00daad2015-11-29 19:46:20 -08002787 VkDeviceSize size /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002788}
2789
Jesse Halla6429252015-11-29 18:59:42 -08002790class VkSparseMemoryBind {
Jesse Hallb00daad2015-11-29 19:46:20 -08002791 VkDeviceSize resourceOffset /// Specified in bytes
2792 VkDeviceSize size /// Specified in bytes
Jesse Hall3fbc8562015-11-29 22:10:52 -08002793 VkDeviceMemory memory
2794 VkDeviceSize memoryOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002795 VkSparseMemoryBindFlags flags
2796}
2797
Jesse Halla6429252015-11-29 18:59:42 -08002798class VkSparseImageMemoryBind {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002799 VkImageSubresource subresource
2800 VkOffset3D offset
2801 VkExtent3D extent
Jesse Hall3fbc8562015-11-29 22:10:52 -08002802 VkDeviceMemory memory
2803 VkDeviceSize memoryOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002804 VkSparseMemoryBindFlags flags
2805}
2806
Jesse Halla6429252015-11-29 18:59:42 -08002807class VkSparseBufferMemoryBindInfo {
2808 VkBuffer buffer
2809 u32 bindCount
2810 const VkSparseMemoryBind* pBinds
2811}
2812
2813class VkSparseImageOpaqueMemoryBindInfo {
2814 VkImage image
2815 u32 bindCount
2816 const VkSparseMemoryBind* pBinds
2817}
2818
2819class VkSparseImageMemoryBindInfo {
2820 VkImage image
2821 u32 bindCount
2822 const VkSparseMemoryBind* pBinds
2823}
2824
2825class VkBindSparseInfo {
2826 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BIND_SPARSE_INFO
2827 const void* pNext
2828 u32 waitSemaphoreCount
2829 const VkSemaphore* pWaitSemaphores
2830 u32 numBufferBinds
2831 const VkSparseBufferMemoryBindInfo* pBufferBinds
2832 u32 numImageOpaqueBinds
2833 const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds
2834 u32 numImageBinds
2835 const VkSparseImageMemoryBindInfo* pImageBinds
2836 u32 signalSemaphoreCount
2837 const VkSemaphore* pSignalSemaphores
2838}
2839
Jesse Hall65ab5522015-11-30 00:07:16 -08002840class VkImageSubresourceLayers {
2841 VkImageAspectFlags aspectMask
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002842 u32 mipLevel
Jesse Halla15a4bf2015-11-19 22:48:02 -08002843 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002844 u32 layerCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002845}
2846
Jesse Halld27f6aa2015-08-15 17:58:48 -07002847class VkImageCopy {
Jesse Hall65ab5522015-11-30 00:07:16 -08002848 VkImageSubresourceLayers srcSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07002849 VkOffset3D srcOffset /// Specified in pixels for both compressed and uncompressed images
Jesse Hall65ab5522015-11-30 00:07:16 -08002850 VkImageSubresourceLayers dstSubresource
Jesse Hall3fbc8562015-11-29 22:10:52 -08002851 VkOffset3D dstOffset /// Specified in pixels for both compressed and uncompressed images
Jesse Halld27f6aa2015-08-15 17:58:48 -07002852 VkExtent3D extent /// Specified in pixels for both compressed and uncompressed images
2853}
2854
2855class VkImageBlit {
Jesse Hall65ab5522015-11-30 00:07:16 -08002856 VkImageSubresourceLayers srcSubresource
Jesse Hall3dd678a2016-01-08 21:52:01 -08002857 VkOffset3D[2] srcOffsets
Jesse Hall65ab5522015-11-30 00:07:16 -08002858 VkImageSubresourceLayers dstSubresource
Jesse Hall3dd678a2016-01-08 21:52:01 -08002859 VkOffset3D[2] dstOffsets
Jesse Halld27f6aa2015-08-15 17:58:48 -07002860}
2861
2862class VkBufferImageCopy {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002863 VkDeviceSize bufferOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002864 u32 bufferRowLength /// Specified in texels
2865 u32 bufferImageHeight
Jesse Hall65ab5522015-11-30 00:07:16 -08002866 VkImageSubresourceLayers imageSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07002867 VkOffset3D imageOffset /// Specified in pixels for both compressed and uncompressed images
2868 VkExtent3D imageExtent /// Specified in pixels for both compressed and uncompressed images
2869}
2870
2871class VkImageResolve {
Jesse Hall65ab5522015-11-30 00:07:16 -08002872 VkImageSubresourceLayers srcSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07002873 VkOffset3D srcOffset
Jesse Hall65ab5522015-11-30 00:07:16 -08002874 VkImageSubresourceLayers dstSubresource
Jesse Hall3fbc8562015-11-29 22:10:52 -08002875 VkOffset3D dstOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07002876 VkExtent3D extent
2877}
2878
2879class VkShaderModuleCreateInfo {
2880 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
2881 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002882 VkShaderModuleCreateFlags flags /// Reserved
Jesse Halld27f6aa2015-08-15 17:58:48 -07002883 platform.size_t codeSize /// Specified in bytes
Jesse Halla9bb62b2015-11-21 19:31:56 -08002884 const u32* pCode /// Binary code of size codeSize
Jesse Halld27f6aa2015-08-15 17:58:48 -07002885}
2886
Jesse Halld27f6aa2015-08-15 17:58:48 -07002887class VkDescriptorSetLayoutBinding {
Jesse Hall091ed9e2015-11-30 00:55:29 -08002888 u32 binding
Jesse Halld27f6aa2015-08-15 17:58:48 -07002889 VkDescriptorType descriptorType /// Type of the descriptors in this binding
Jesse Halldba27f72015-11-30 14:25:46 -08002890 u32 descriptorCount /// Number of descriptors in this binding
Jesse Halld27f6aa2015-08-15 17:58:48 -07002891 VkShaderStageFlags stageFlags /// Shader stages this binding is visible to
2892 const VkSampler* pImmutableSamplers /// Immutable samplers (used if descriptor type is SAMPLER or COMBINED_IMAGE_SAMPLER, is either NULL or contains <count> number of elements)
2893}
2894
2895class VkDescriptorSetLayoutCreateInfo {
2896 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
2897 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002898 VkDescriptorSetLayoutCreateFlags flags
Jesse Hall03b6fe12015-11-24 12:44:21 -08002899 u32 bindingCount /// Number of bindings in the descriptor set layout
Jesse Hall543a7ff2016-01-08 16:38:30 -08002900 const VkDescriptorSetLayoutBinding* pBindings /// Array of descriptor set layout bindings
Jesse Halld27f6aa2015-08-15 17:58:48 -07002901}
2902
Jesse Hall65ab5522015-11-30 00:07:16 -08002903class VkDescriptorPoolSize {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002904 VkDescriptorType type
Jesse Hall03b6fe12015-11-24 12:44:21 -08002905 u32 descriptorCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002906}
2907
2908class VkDescriptorPoolCreateInfo {
2909 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
2910 const void* pNext /// Pointer to next structure
Jesse Hallfbf97b02015-11-20 14:17:03 -08002911 VkDescriptorPoolCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002912 u32 maxSets
Jesse Hall65ab5522015-11-30 00:07:16 -08002913 u32 poolSizeCount
2914 const VkDescriptorPoolSize* pPoolSizes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002915}
2916
Jesse Hall3fbc8562015-11-29 22:10:52 -08002917class VkDescriptorSetAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002918 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
Jesse Hallfbf97b02015-11-20 14:17:03 -08002919 const void* pNext /// Pointer to next structure
2920 VkDescriptorPool descriptorPool
Jesse Hall03b6fe12015-11-24 12:44:21 -08002921 u32 setCount
Jesse Hallfbf97b02015-11-20 14:17:03 -08002922 const VkDescriptorSetLayout* pSetLayouts
2923}
2924
Jesse Halld27f6aa2015-08-15 17:58:48 -07002925class VkSpecializationMapEntry {
Jesse Hall65ab5522015-11-30 00:07:16 -08002926 u32 constantID /// The SpecConstant ID specified in the BIL
Jesse Halld27f6aa2015-08-15 17:58:48 -07002927 u32 offset /// Offset of the value in the data block
Jesse Hallb00daad2015-11-29 19:46:20 -08002928 platform.size_t size /// Size in bytes of the SpecConstant
Jesse Halld27f6aa2015-08-15 17:58:48 -07002929}
2930
2931class VkSpecializationInfo {
2932 u32 mapEntryCount /// Number of entries in the map
Jesse Hallb00daad2015-11-29 19:46:20 -08002933 const VkSpecializationMapEntry* pMapEntries /// Array of map entries
Jesse Halld27f6aa2015-08-15 17:58:48 -07002934 platform.size_t dataSize /// Size in bytes of pData
2935 const void* pData /// Pointer to SpecConstant data
2936}
2937
2938class VkPipelineShaderStageCreateInfo {
2939 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
2940 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002941 VkPipelineShaderStageCreateFlags flags
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002942 VkShaderStageFlagBits stage
2943 VkShaderModule module
2944 const char* pName
Jesse Halld27f6aa2015-08-15 17:58:48 -07002945 const VkSpecializationInfo* pSpecializationInfo
2946}
2947
2948class VkComputePipelineCreateInfo {
2949 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
2950 const void* pNext /// Pointer to next structure
Jesse Halld27f6aa2015-08-15 17:58:48 -07002951 VkPipelineCreateFlags flags /// Pipeline creation flags
Jesse Halla6429252015-11-29 18:59:42 -08002952 VkPipelineShaderStageCreateInfo stage
Jesse Halld27f6aa2015-08-15 17:58:48 -07002953 VkPipelineLayout layout /// Interface layout of the pipeline
2954 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
2955 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
2956}
2957
2958class VkVertexInputBindingDescription {
Jesse Hallb00daad2015-11-29 19:46:20 -08002959 u32 binding /// Vertex buffer binding id
2960 u32 stride /// Distance between vertices in bytes (0 = no advancement)
Jesse Hall65ab5522015-11-30 00:07:16 -08002961 VkVertexInputRate inputRate /// Rate at which binding is incremented
Jesse Halld27f6aa2015-08-15 17:58:48 -07002962}
2963
2964class VkVertexInputAttributeDescription {
Jesse Hallb00daad2015-11-29 19:46:20 -08002965 u32 location /// location of the shader vertex attrib
2966 u32 binding /// Vertex buffer binding id
2967 VkFormat format /// format of source data
2968 u32 offset /// Offset of first element in bytes from base of vertex
Jesse Halld27f6aa2015-08-15 17:58:48 -07002969}
2970
2971class VkPipelineVertexInputStateCreateInfo {
Jesse Hall03b6fe12015-11-24 12:44:21 -08002972 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
2973 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002974 VkPipelineVertexInputStateCreateFlags flags
Jesse Hall03b6fe12015-11-24 12:44:21 -08002975 u32 vertexBindingDescriptionCount /// number of bindings
Jesse Halld27f6aa2015-08-15 17:58:48 -07002976 const VkVertexInputBindingDescription* pVertexBindingDescriptions
Jesse Hall03b6fe12015-11-24 12:44:21 -08002977 u32 vertexAttributeDescriptionCount /// number of attributes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002978 const VkVertexInputAttributeDescription* pVertexAttributeDescriptions
2979}
2980
2981class VkPipelineInputAssemblyStateCreateInfo {
2982 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
2983 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002984 VkPipelineInputAssemblyStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002985 VkPrimitiveTopology topology
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002986 VkBool32 primitiveRestartEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07002987}
2988
2989class VkPipelineTessellationStateCreateInfo {
2990 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
2991 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002992 VkPipelineTessellationStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002993 u32 patchControlPoints
2994}
2995
2996class VkPipelineViewportStateCreateInfo {
2997 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
2998 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002999 VkPipelineViewportStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003000 u32 viewportCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003001 const VkViewport* pViewports
3002 u32 scissorCount
3003 const VkRect2D* pScissors
Jesse Halld27f6aa2015-08-15 17:58:48 -07003004}
3005
Jesse Hall3fbc8562015-11-29 22:10:52 -08003006class VkPipelineRasterizationStateCreateInfo {
Jesse Hall65ab5522015-11-30 00:07:16 -08003007 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07003008 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08003009 VkPipelineRasterizationStateCreateFlags flags
Jesse Hallae38f732015-11-19 21:32:50 -08003010 VkBool32 depthClampEnable
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003011 VkBool32 rasterizerDiscardEnable
Jesse Hall65ab5522015-11-30 00:07:16 -08003012 VkPolygonMode polygonMode /// optional (GL45)
Jesse Hallc7467b72015-11-29 21:05:26 -08003013 VkCullModeFlags cullMode
Jesse Halld27f6aa2015-08-15 17:58:48 -07003014 VkFrontFace frontFace
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003015 VkBool32 depthBiasEnable
Jesse Halla9bb62b2015-11-21 19:31:56 -08003016 f32 depthBiasConstantFactor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003017 f32 depthBiasClamp
Jesse Halla9bb62b2015-11-21 19:31:56 -08003018 f32 depthBiasSlopeFactor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003019 f32 lineWidth
Jesse Halld27f6aa2015-08-15 17:58:48 -07003020}
3021
3022class VkPipelineMultisampleStateCreateInfo {
3023 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
3024 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003025 VkPipelineMultisampleStateCreateFlags flags
Jesse Hall091ed9e2015-11-30 00:55:29 -08003026 VkSampleCountFlagBits rasterizationSamples /// Number of samples used for rasterization
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003027 VkBool32 sampleShadingEnable /// optional (GL45)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003028 f32 minSampleShading /// optional (GL45)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003029 const VkSampleMask* pSampleMask
Jesse Hallacfa5342015-11-19 21:51:33 -08003030 VkBool32 alphaToCoverageEnable
3031 VkBool32 alphaToOneEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07003032}
3033
3034class VkPipelineColorBlendAttachmentState {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003035 VkBool32 blendEnable
Jesse Hall65ab5522015-11-30 00:07:16 -08003036 VkBlendFactor srcColorBlendFactor
3037 VkBlendFactor dstColorBlendFactor
3038 VkBlendOp colorBlendOp
3039 VkBlendFactor srcAlphaBlendFactor
3040 VkBlendFactor dstAlphaBlendFactor
3041 VkBlendOp alphaBlendOp
3042 VkColorComponentFlags colorWriteMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07003043}
3044
3045class VkPipelineColorBlendStateCreateInfo {
3046 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
3047 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003048 VkPipelineColorBlendStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003049 VkBool32 logicOpEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07003050 VkLogicOp logicOp
3051 u32 attachmentCount /// # of pAttachments
3052 const VkPipelineColorBlendAttachmentState* pAttachments
Jesse Hallb00daad2015-11-29 19:46:20 -08003053 f32[4] blendConstants
Jesse Halld27f6aa2015-08-15 17:58:48 -07003054}
3055
3056class VkStencilOpState {
Jesse Hall65ab5522015-11-30 00:07:16 -08003057 VkStencilOp failOp
3058 VkStencilOp passOp
3059 VkStencilOp depthFailOp
3060 VkCompareOp compareOp
3061 u32 compareMask
3062 u32 writeMask
3063 u32 reference
Jesse Halld27f6aa2015-08-15 17:58:48 -07003064}
3065
3066class VkPipelineDepthStencilStateCreateInfo {
3067 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
3068 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003069 VkPipelineDepthStencilStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003070 VkBool32 depthTestEnable
3071 VkBool32 depthWriteEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07003072 VkCompareOp depthCompareOp
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003073 VkBool32 depthBoundsTestEnable /// optional (depth_bounds_test)
3074 VkBool32 stencilTestEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07003075 VkStencilOpState front
3076 VkStencilOpState back
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003077 f32 minDepthBounds
3078 f32 maxDepthBounds
3079}
3080
3081class VkPipelineDynamicStateCreateInfo {
3082 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
3083 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003084 VkPipelineDynamicStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003085 u32 dynamicStateCount
3086 const VkDynamicState* pDynamicStates
Jesse Halld27f6aa2015-08-15 17:58:48 -07003087}
3088
3089class VkGraphicsPipelineCreateInfo {
Jesse Halla6429252015-11-29 18:59:42 -08003090 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
3091 const void* pNext /// Pointer to next structure
3092 VkPipelineCreateFlags flags /// Pipeline creation flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003093 u32 stageCount
Jesse Halla6429252015-11-29 18:59:42 -08003094 const VkPipelineShaderStageCreateInfo* pStages /// One entry for each active shader stage
Jesse Halld27f6aa2015-08-15 17:58:48 -07003095 const VkPipelineVertexInputStateCreateInfo* pVertexInputState
3096 const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState
3097 const VkPipelineTessellationStateCreateInfo* pTessellationState
3098 const VkPipelineViewportStateCreateInfo* pViewportState
Jesse Hall3fbc8562015-11-29 22:10:52 -08003099 const VkPipelineRasterizationStateCreateInfo* pRasterizationState
Jesse Halld27f6aa2015-08-15 17:58:48 -07003100 const VkPipelineMultisampleStateCreateInfo* pMultisampleState
3101 const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState
3102 const VkPipelineColorBlendStateCreateInfo* pColorBlendState
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003103 const VkPipelineDynamicStateCreateInfo* pDynamicState
Jesse Halla6429252015-11-29 18:59:42 -08003104 VkPipelineLayout layout /// Interface layout of the pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07003105 VkRenderPass renderPass
3106 u32 subpass
Jesse Halla6429252015-11-29 18:59:42 -08003107 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
3108 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 -07003109}
3110
3111class VkPipelineCacheCreateInfo {
Jesse Hallb00daad2015-11-29 19:46:20 -08003112 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
3113 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003114 VkPipelineCacheCreateFlags flags
Jesse Hallb00daad2015-11-29 19:46:20 -08003115 platform.size_t initialDataSize /// Size of initial data to populate cache, in bytes
3116 const void* pInitialData /// Initial data to populate cache
Jesse Halld27f6aa2015-08-15 17:58:48 -07003117}
3118
3119class VkPushConstantRange {
3120 VkShaderStageFlags stageFlags /// Which stages use the range
Jesse Hall03b6fe12015-11-24 12:44:21 -08003121 u32 offset /// Start of the range, in bytes
3122 u32 size /// Length of the range, in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07003123}
3124
3125class VkPipelineLayoutCreateInfo {
3126 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
3127 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003128 VkPipelineLayoutCreateFlags flags
Jesse Hall3dd678a2016-01-08 21:52:01 -08003129 u32 descriptorSetCount /// Number of descriptor sets interfaced by the pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07003130 const VkDescriptorSetLayout* pSetLayouts /// Array of <setCount> number of descriptor set layout objects defining the layout of the
3131 u32 pushConstantRangeCount /// Number of push-constant ranges used by the pipeline
3132 const VkPushConstantRange* pPushConstantRanges /// Array of pushConstantRangeCount number of ranges used by various shader stages
3133}
3134
3135class VkSamplerCreateInfo {
3136 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
3137 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003138 VkSamplerCreateFlags flags
Jesse Hall23ff73f2015-11-29 14:36:39 -08003139 VkFilter magFilter /// Filter mode for magnification
3140 VkFilter minFilter /// Filter mode for minifiation
3141 VkSamplerMipmapMode mipmapMode /// Mipmap selection mode
3142 VkSamplerAddressMode addressModeU
3143 VkSamplerAddressMode addressModeV
3144 VkSamplerAddressMode addressModeW
Jesse Halld27f6aa2015-08-15 17:58:48 -07003145 f32 mipLodBias
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003146 VkBool32 anisotropyEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07003147 f32 maxAnisotropy
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003148 VkBool32 compareEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07003149 VkCompareOp compareOp
3150 f32 minLod
3151 f32 maxLod
3152 VkBorderColor borderColor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003153 VkBool32 unnormalizedCoordinates
Jesse Halld27f6aa2015-08-15 17:58:48 -07003154}
3155
Jesse Hall3fbc8562015-11-29 22:10:52 -08003156class VkCommandPoolCreateInfo {
3157 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07003158 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08003159 VkCommandPoolCreateFlags flags /// Command pool creation flags
Jesse Halla6429252015-11-29 18:59:42 -08003160 u32 queueFamilyIndex
Jesse Halld27f6aa2015-08-15 17:58:48 -07003161}
3162
Jesse Hall3fbc8562015-11-29 22:10:52 -08003163class VkCommandBufferAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003164 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07003165 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08003166 VkCommandPool commandPool
3167 VkCommandBufferLevel level
Jesse Hall3dd678a2016-01-08 21:52:01 -08003168 u32 commandBufferCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003169}
3170
Jesse Hall3dd678a2016-01-08 21:52:01 -08003171class VkCommandBufferInheritanceInfo {
3172 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07003173 const void* pNext /// Pointer to next structure
Jesse Halld27f6aa2015-08-15 17:58:48 -07003174 VkRenderPass renderPass /// Render pass for secondary command buffers
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003175 u32 subpass
Jesse Halld27f6aa2015-08-15 17:58:48 -07003176 VkFramebuffer framebuffer /// Framebuffer for secondary command buffers
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003177 VkBool32 occlusionQueryEnable
3178 VkQueryControlFlags queryFlags
3179 VkQueryPipelineStatisticFlags pipelineStatistics
Jesse Halld27f6aa2015-08-15 17:58:48 -07003180}
3181
Jesse Hall3dd678a2016-01-08 21:52:01 -08003182class VkCommandBufferBeginInfo {
3183 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
3184 const void* pNext /// Pointer to next structure
3185 VkCommandBufferUsageFlags flags /// Command buffer usage flags
3186 const VkCommandBufferInheritanceInfo* pInheritanceInfo
3187}
3188
Jesse Halld27f6aa2015-08-15 17:58:48 -07003189class VkRenderPassBeginInfo {
3190 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
3191 const void* pNext /// Pointer to next structure
3192 VkRenderPass renderPass
3193 VkFramebuffer framebuffer
3194 VkRect2D renderArea
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003195 u32 clearValueCount
3196 const VkClearValue* pClearValues
Jesse Halld27f6aa2015-08-15 17:58:48 -07003197}
3198
3199@union
3200/// Union allowing specification of floating point, integer, or unsigned integer color data. Actual value selected is based on image/attachment being cleared.
3201class VkClearColorValue {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003202 f32[4] float32
3203 s32[4] int32
3204 u32[4] uint32
Jesse Halld27f6aa2015-08-15 17:58:48 -07003205}
3206
3207class VkClearDepthStencilValue {
3208 f32 depth
3209 u32 stencil
3210}
3211
3212@union
3213/// Union allowing specification of color, depth, and stencil color values. Actual value selected is based on attachment being cleared.
3214class VkClearValue {
3215 VkClearColorValue color
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003216 VkClearDepthStencilValue depthStencil
Jesse Halld27f6aa2015-08-15 17:58:48 -07003217}
3218
Jesse Hallae38f732015-11-19 21:32:50 -08003219class VkClearAttachment {
3220 VkImageAspectFlags aspectMask
3221 u32 colorAttachment
3222 VkClearValue clearValue
3223}
3224
Jesse Halld27f6aa2015-08-15 17:58:48 -07003225class VkAttachmentDescription {
Jesse Halla6429252015-11-29 18:59:42 -08003226 VkAttachmentDescriptionFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003227 VkFormat format
Jesse Hall091ed9e2015-11-30 00:55:29 -08003228 VkSampleCountFlagBits samples
Jesse Halld27f6aa2015-08-15 17:58:48 -07003229 VkAttachmentLoadOp loadOp /// Load op for color or depth data
3230 VkAttachmentStoreOp storeOp /// Store op for color or depth data
3231 VkAttachmentLoadOp stencilLoadOp /// Load op for stencil data
3232 VkAttachmentStoreOp stencilStoreOp /// Store op for stencil data
3233 VkImageLayout initialLayout
3234 VkImageLayout finalLayout
3235}
3236
3237class VkAttachmentReference {
3238 u32 attachment
3239 VkImageLayout layout
3240}
3241
3242class VkSubpassDescription {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003243 VkSubpassDescriptionFlags flags
Jesse Halla6429252015-11-29 18:59:42 -08003244 VkPipelineBindPoint pipelineBindPoint /// Must be VK_PIPELINE_BIND_POINT_GRAPHICS for now
Jesse Hall03b6fe12015-11-24 12:44:21 -08003245 u32 inputAttachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003246 const VkAttachmentReference* pInputAttachments
Jesse Hall03b6fe12015-11-24 12:44:21 -08003247 u32 colorAttachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003248 const VkAttachmentReference* pColorAttachments
3249 const VkAttachmentReference* pResolveAttachments
Jesse Hallc7467b72015-11-29 21:05:26 -08003250 const VkAttachmentReference* pDepthStencilAttachment
Jesse Hall03b6fe12015-11-24 12:44:21 -08003251 u32 preserveAttachmentCount
Jesse Hall3dd678a2016-01-08 21:52:01 -08003252 const u32* pPreserveAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003253}
3254
3255class VkSubpassDependency {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003256 u32 srcSubpass
Jesse Hall3fbc8562015-11-29 22:10:52 -08003257 u32 dstSubpass
Jesse Halld27f6aa2015-08-15 17:58:48 -07003258 VkPipelineStageFlags srcStageMask
Jesse Hall3fbc8562015-11-29 22:10:52 -08003259 VkPipelineStageFlags dstStageMask
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003260 VkAccessFlags srcAccessMask
3261 VkAccessFlags dstAccessMask
Jesse Halldc6d36c2015-11-29 19:12:15 -08003262 VkDependencyFlags dependencyFlags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003263}
3264
3265class VkRenderPassCreateInfo {
3266 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
3267 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003268 VkRenderPassCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003269 u32 attachmentCount
3270 const VkAttachmentDescription* pAttachments
3271 u32 subpassCount
3272 const VkSubpassDescription* pSubpasses
3273 u32 dependencyCount
3274 const VkSubpassDependency* pDependencies
3275}
3276
3277class VkEventCreateInfo {
3278 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_EVENT_CREATE_INFO
3279 const void* pNext /// Pointer to next structure
3280 VkEventCreateFlags flags /// Event creation flags
3281}
3282
3283class VkFenceCreateInfo {
3284 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FENCE_CREATE_INFO
3285 const void* pNext /// Pointer to next structure
3286 VkFenceCreateFlags flags /// Fence creation flags
3287}
3288
3289class VkPhysicalDeviceFeatures {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003290 VkBool32 robustBufferAccess /// out of bounds buffer accesses are well defined
3291 VkBool32 fullDrawIndexUint32 /// full 32-bit range of indices for indexed draw calls
3292 VkBool32 imageCubeArray /// image views which are arrays of cube maps
3293 VkBool32 independentBlend /// blending operations are controlled per-attachment
3294 VkBool32 geometryShader /// geometry stage
3295 VkBool32 tessellationShader /// tessellation control and evaluation stage
3296 VkBool32 sampleRateShading /// per-sample shading and interpolation
Jesse Hall3fbc8562015-11-29 22:10:52 -08003297 VkBool32 dualSrcBlend /// blend operations which take two sources
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003298 VkBool32 logicOp /// logic operations
3299 VkBool32 multiDrawIndirect /// multi draw indirect
Jesse Hall543a7ff2016-01-08 16:38:30 -08003300 VkBool32 drawIndirectFirstInstance
Jesse Hallae38f732015-11-19 21:32:50 -08003301 VkBool32 depthClamp /// depth clamping
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003302 VkBool32 depthBiasClamp /// depth bias clamping
3303 VkBool32 fillModeNonSolid /// point and wireframe fill modes
3304 VkBool32 depthBounds /// depth bounds test
3305 VkBool32 wideLines /// lines with width greater than 1
3306 VkBool32 largePoints /// points with size greater than 1
Jesse Hallfbf97b02015-11-20 14:17:03 -08003307 VkBool32 alphaToOne /// The fragment alpha channel can be forced to maximum representable alpha value
3308 VkBool32 multiViewport
3309 VkBool32 samplerAnisotropy
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003310 VkBool32 textureCompressionETC2 /// ETC texture compression formats
3311 VkBool32 textureCompressionASTC_LDR /// ASTC LDR texture compression formats
3312 VkBool32 textureCompressionBC /// BC1-7 texture compressed formats
Jesse Hall65ab5522015-11-30 00:07:16 -08003313 VkBool32 occlusionQueryPrecise
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003314 VkBool32 pipelineStatisticsQuery /// pipeline statistics query
Jesse Halldc6d36c2015-11-29 19:12:15 -08003315 VkBool32 vertexPipelineStoresAndAtomics
3316 VkBool32 fragmentStoresAndAtomics
3317 VkBool32 shaderTessellationAndGeometryPointSize
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003318 VkBool32 shaderImageGatherExtended /// texture gather with run-time values and independent offsets
3319 VkBool32 shaderStorageImageExtendedFormats /// the extended set of formats can be used for storage images
3320 VkBool32 shaderStorageImageMultisample /// multisample images can be used for storage images
Jesse Halld1af8122015-11-29 23:50:38 -08003321 VkBool32 shaderStorageImageReadWithoutFormat
3322 VkBool32 shaderStorageImageWriteWithoutFormat
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003323 VkBool32 shaderUniformBufferArrayDynamicIndexing /// arrays of uniform buffers can be accessed with dynamically uniform indices
3324 VkBool32 shaderSampledImageArrayDynamicIndexing /// arrays of sampled images can be accessed with dynamically uniform indices
3325 VkBool32 shaderStorageBufferArrayDynamicIndexing /// arrays of storage buffers can be accessed with dynamically uniform indices
3326 VkBool32 shaderStorageImageArrayDynamicIndexing /// arrays of storage images can be accessed with dynamically uniform indices
3327 VkBool32 shaderClipDistance /// clip distance in shaders
3328 VkBool32 shaderCullDistance /// cull distance in shaders
3329 VkBool32 shaderFloat64 /// 64-bit floats (doubles) in shaders
3330 VkBool32 shaderInt64 /// 64-bit integers in shaders
3331 VkBool32 shaderInt16 /// 16-bit integers in shaders
3332 VkBool32 shaderResourceResidency /// shader can use texture operations that return resource residency information (requires sparseNonResident support)
Jesse Hall65ab5522015-11-30 00:07:16 -08003333 VkBool32 shaderResourceMinLod /// shader can use texture operations that specify minimum resource LOD
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003334 VkBool32 sparseBinding /// Sparse resources support: Resource memory can be managed at opaque page level rather than object level
3335 VkBool32 sparseResidencyBuffer /// Sparse resources support: GPU can access partially resident buffers
3336 VkBool32 sparseResidencyImage2D /// Sparse resources support: GPU can access partially resident 2D (non-MSAA non-DepthStencil) images
3337 VkBool32 sparseResidencyImage3D /// Sparse resources support: GPU can access partially resident 3D images
3338 VkBool32 sparseResidency2Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 2 samples
3339 VkBool32 sparseResidency4Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 4 samples
3340 VkBool32 sparseResidency8Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 8 samples
3341 VkBool32 sparseResidency16Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 16 samples
3342 VkBool32 sparseResidencyAliased /// Sparse resources support: GPU can correctly access data aliased into multiple locations (opt-in)
Jesse Halld1af8122015-11-29 23:50:38 -08003343 VkBool32 variableMultisampleRate
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003344 VkBool32 inheritedQueries
Jesse Halld27f6aa2015-08-15 17:58:48 -07003345}
3346
3347class VkPhysicalDeviceLimits {
3348 /// resource maximum sizes
3349 u32 maxImageDimension1D /// max 1D image dimension
3350 u32 maxImageDimension2D /// max 2D image dimension
3351 u32 maxImageDimension3D /// max 3D image dimension
3352 u32 maxImageDimensionCube /// max cubemap image dimension
3353 u32 maxImageArrayLayers /// max layers for image arrays
Jesse Hallb00daad2015-11-29 19:46:20 -08003354 u32 maxTexelBufferElements
Jesse Hallfbf97b02015-11-20 14:17:03 -08003355 u32 maxUniformBufferRange /// max uniform buffer size (bytes)
3356 u32 maxStorageBufferRange /// max storage buffer size (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003357 u32 maxPushConstantsSize /// max size of the push constants pool (bytes)
3358 /// memory limits
3359 u32 maxMemoryAllocationCount /// max number of device memory allocations supported
Jesse Hall091ed9e2015-11-30 00:55:29 -08003360 u32 maxSamplerAllocationCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003361 VkDeviceSize bufferImageGranularity /// Granularity (in bytes) at which buffers and images can be bound to adjacent memory for simultaneous usage
3362 VkDeviceSize sparseAddressSpaceSize /// Total address space available for sparse allocations (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003363 /// descriptor set limits
3364 u32 maxBoundDescriptorSets /// max number of descriptors sets that can be bound to a pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07003365 u32 maxPerStageDescriptorSamplers /// max num of samplers allowed per-stage in a descriptor set
3366 u32 maxPerStageDescriptorUniformBuffers /// max num of uniform buffers allowed per-stage in a descriptor set
3367 u32 maxPerStageDescriptorStorageBuffers /// max num of storage buffers allowed per-stage in a descriptor set
3368 u32 maxPerStageDescriptorSampledImages /// max num of sampled images allowed per-stage in a descriptor set
3369 u32 maxPerStageDescriptorStorageImages /// max num of storage images allowed per-stage in a descriptor set
Jesse Halle1b12782015-11-30 11:27:32 -08003370 u32 maxPerStageDescriptorInputAttachments
Jesse Halldba27f72015-11-30 14:25:46 -08003371 u32 maxPerStageResources
Jesse Halld27f6aa2015-08-15 17:58:48 -07003372 u32 maxDescriptorSetSamplers /// max num of samplers allowed in all stages in a descriptor set
3373 u32 maxDescriptorSetUniformBuffers /// max num of uniform buffers allowed in all stages in a descriptor set
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003374 u32 maxDescriptorSetUniformBuffersDynamic /// max num of dynamic uniform buffers allowed in all stages in a descriptor set
Jesse Halld27f6aa2015-08-15 17:58:48 -07003375 u32 maxDescriptorSetStorageBuffers /// max num of storage buffers allowed in all stages in a descriptor set
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003376 u32 maxDescriptorSetStorageBuffersDynamic /// max num of dynamic storage buffers allowed in all stages in a descriptor set
Jesse Halld27f6aa2015-08-15 17:58:48 -07003377 u32 maxDescriptorSetSampledImages /// max num of sampled images allowed in all stages in a descriptor set
3378 u32 maxDescriptorSetStorageImages /// max num of storage images allowed in all stages in a descriptor set
Jesse Halle1b12782015-11-30 11:27:32 -08003379 u32 maxDescriptorSetInputAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003380 /// vertex stage limits
3381 u32 maxVertexInputAttributes /// max num of vertex input attribute slots
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003382 u32 maxVertexInputBindings /// max num of vertex input binding slots
Jesse Halld27f6aa2015-08-15 17:58:48 -07003383 u32 maxVertexInputAttributeOffset /// max vertex input attribute offset added to vertex buffer offset
3384 u32 maxVertexInputBindingStride /// max vertex input binding stride
3385 u32 maxVertexOutputComponents /// max num of output components written by vertex shader
3386 /// tessellation control stage limits
Jesse Hall3fbc8562015-11-29 22:10:52 -08003387 u32 maxTessellationGenerationLevel /// max level supported by tess primitive generator
Jesse Hallae38f732015-11-19 21:32:50 -08003388 u32 maxTessellationPatchSize /// max patch size (vertices)
3389 u32 maxTessellationControlPerVertexInputComponents /// max num of input components per-vertex in TCS
3390 u32 maxTessellationControlPerVertexOutputComponents /// max num of output components per-vertex in TCS
3391 u32 maxTessellationControlPerPatchOutputComponents /// max num of output components per-patch in TCS
3392 u32 maxTessellationControlTotalOutputComponents /// max total num of per-vertex and per-patch output components in TCS
3393 u32 maxTessellationEvaluationInputComponents /// max num of input components per vertex in TES
3394 u32 maxTessellationEvaluationOutputComponents /// max num of output components per vertex in TES
Jesse Halld27f6aa2015-08-15 17:58:48 -07003395 /// geometry stage limits
3396 u32 maxGeometryShaderInvocations /// max invocation count supported in geometry shader
3397 u32 maxGeometryInputComponents /// max num of input components read in geometry stage
3398 u32 maxGeometryOutputComponents /// max num of output components written in geometry stage
3399 u32 maxGeometryOutputVertices /// max num of vertices that can be emitted in geometry stage
3400 u32 maxGeometryTotalOutputComponents /// max total num of components (all vertices) written in geometry stage
3401 /// fragment stage limits
3402 u32 maxFragmentInputComponents /// max num of input compontents read in fragment stage
Jesse Hallfbf97b02015-11-20 14:17:03 -08003403 u32 maxFragmentOutputAttachments /// max num of output attachments written in fragment stage
Jesse Hall3fbc8562015-11-29 22:10:52 -08003404 u32 maxFragmentDualSrcAttachments /// max num of output attachments written when using dual source blending
Jesse Halld27f6aa2015-08-15 17:58:48 -07003405 u32 maxFragmentCombinedOutputResources /// max total num of storage buffers, storage images and output buffers
3406 /// compute stage limits
3407 u32 maxComputeSharedMemorySize /// max total storage size of work group local storage (bytes)
3408 u32[3] maxComputeWorkGroupCount /// max num of compute work groups that may be dispatched by a single command (x,y,z)
3409 u32 maxComputeWorkGroupInvocations /// max total compute invocations in a single local work group
3410 u32[3] maxComputeWorkGroupSize /// max local size of a compute work group (x,y,z)
3411
3412 u32 subPixelPrecisionBits /// num bits of subpixel precision in screen x and y
3413 u32 subTexelPrecisionBits /// num bits of subtexel precision
3414 u32 mipmapPrecisionBits /// num bits of mipmap precision
3415
3416 u32 maxDrawIndexedIndexValue /// max index value for indexed draw calls (for 32-bit indices)
Jesse Halldba27f72015-11-30 14:25:46 -08003417 u32 maxDrawIndirectCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003418
3419 f32 maxSamplerLodBias /// max absolute sampler level of detail bias
3420 f32 maxSamplerAnisotropy /// max degree of sampler anisotropy
3421
3422 u32 maxViewports /// max number of active viewports
Jesse Halld27f6aa2015-08-15 17:58:48 -07003423 u32[2] maxViewportDimensions /// max viewport dimensions (x,y)
3424 f32[2] viewportBoundsRange /// viewport bounds range (min,max)
3425 u32 viewportSubPixelBits /// num bits of subpixel precision for viewport
3426
Jesse Halldc6d36c2015-11-29 19:12:15 -08003427 platform.size_t minMemoryMapAlignment /// min required alignment of pointers returned by MapMemory (bytes)
3428 VkDeviceSize minTexelBufferOffsetAlignment /// min required alignment for texel buffer offsets (bytes)
3429 VkDeviceSize minUniformBufferOffsetAlignment /// min required alignment for uniform buffer sizes and offsets (bytes)
3430 VkDeviceSize minStorageBufferOffsetAlignment /// min required alignment for storage buffer offsets (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003431
Jesse Hallfbf97b02015-11-20 14:17:03 -08003432 s32 minTexelOffset /// min texel offset for OpTextureSampleOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07003433 u32 maxTexelOffset /// max texel offset for OpTextureSampleOffset
Jesse Hallfbf97b02015-11-20 14:17:03 -08003434 s32 minTexelGatherOffset /// min texel offset for OpTextureGatherOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07003435 u32 maxTexelGatherOffset /// max texel offset for OpTextureGatherOffset
3436 f32 minInterpolationOffset /// furthest negative offset for interpolateAtOffset
3437 f32 maxInterpolationOffset /// furthest positive offset for interpolateAtOffset
3438 u32 subPixelInterpolationOffsetBits /// num of subpixel bits for interpolateAtOffset
3439
3440 u32 maxFramebufferWidth /// max width for a framebuffer
3441 u32 maxFramebufferHeight /// max height for a framebuffer
3442 u32 maxFramebufferLayers /// max layer count for a layered framebuffer
Jesse Hall091ed9e2015-11-30 00:55:29 -08003443 VkSampleCountFlags framebufferColorSampleCounts
3444 VkSampleCountFlags framebufferDepthSampleCounts
3445 VkSampleCountFlags framebufferStencilSampleCounts
3446 VkSampleCountFlags framebufferNoAttachmentSampleCounts
Jesse Halld27f6aa2015-08-15 17:58:48 -07003447 u32 maxColorAttachments /// max num of framebuffer color attachments
3448
Jesse Hall091ed9e2015-11-30 00:55:29 -08003449 VkSampleCountFlags sampledImageColorSampleCounts
3450 VkSampleCountFlags sampledImageIntegerSampleCounts
3451 VkSampleCountFlags sampledImageDepthSampleCounts
3452 VkSampleCountFlags sampledImageStencilSampleCounts
3453 VkSampleCountFlags storageImageSampleCounts
Jesse Halld27f6aa2015-08-15 17:58:48 -07003454 u32 maxSampleMaskWords /// max num of sample mask words
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003455 VkBool32 timestampComputeAndGraphics
Jesse Halld27f6aa2015-08-15 17:58:48 -07003456
Jesse Halla9bb62b2015-11-21 19:31:56 -08003457 f32 timestampPeriod
Jesse Halld27f6aa2015-08-15 17:58:48 -07003458
3459 u32 maxClipDistances /// max number of clip distances
3460 u32 maxCullDistances /// max number of cull distances
3461 u32 maxCombinedClipAndCullDistances /// max combined number of user clipping
3462
Jesse Hallfbf97b02015-11-20 14:17:03 -08003463 u32 discreteQueuePriorities
3464
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003465 f32[2] pointSizeRange /// range (min,max) of supported point sizes
3466 f32[2] lineWidthRange /// range (min,max) of supported line widths
Jesse Halld27f6aa2015-08-15 17:58:48 -07003467 f32 pointSizeGranularity /// granularity of supported point sizes
3468 f32 lineWidthGranularity /// granularity of supported line widths
Jesse Hall03b6fe12015-11-24 12:44:21 -08003469 VkBool32 strictLines
Jesse Hall091ed9e2015-11-30 00:55:29 -08003470 VkBool32 standardSampleLocations
Jesse Halla9bb62b2015-11-21 19:31:56 -08003471
Jesse Hall65ab5522015-11-30 00:07:16 -08003472 VkDeviceSize optimalBufferCopyOffsetAlignment
3473 VkDeviceSize optimalBufferCopyRowPitchAlignment
Jesse Halldba27f72015-11-30 14:25:46 -08003474 VkDeviceSize nonCoherentAtomSize
Jesse Halld27f6aa2015-08-15 17:58:48 -07003475}
3476
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003477class VkPhysicalDeviceSparseProperties {
3478 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 -08003479 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 -07003480 VkBool32 residencyStandard3DBlockShape /// Sparse resources support: GPU will access all 3D sparse resources using the standard block shapes (based on pixel format)
3481 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 -07003482 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
3483}
3484
Jesse Halld27f6aa2015-08-15 17:58:48 -07003485class VkSemaphoreCreateInfo {
3486 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
3487 const void* pNext /// Pointer to next structure
3488 VkSemaphoreCreateFlags flags /// Semaphore creation flags
3489}
3490
3491class VkQueryPoolCreateInfo {
3492 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
3493 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003494 VkQueryPoolCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003495 VkQueryType queryType
Jesse Hall3dd678a2016-01-08 21:52:01 -08003496 u32 queryCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003497 VkQueryPipelineStatisticFlags pipelineStatistics /// Optional
3498}
3499
3500class VkFramebufferCreateInfo {
3501 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
3502 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003503 VkFramebufferCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003504 VkRenderPass renderPass
3505 u32 attachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003506 const VkImageView* pAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003507 u32 width
3508 u32 height
3509 u32 layers
3510}
3511
Jesse Hall3fbc8562015-11-29 22:10:52 -08003512class VkDrawIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003513 u32 vertexCount
3514 u32 instanceCount
3515 u32 firstVertex
3516 u32 firstInstance
3517}
3518
Jesse Hall3fbc8562015-11-29 22:10:52 -08003519class VkDrawIndexedIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003520 u32 indexCount
3521 u32 instanceCount
3522 u32 firstIndex
3523 s32 vertexOffset
3524 u32 firstInstance
3525}
3526
Jesse Hall3fbc8562015-11-29 22:10:52 -08003527class VkDispatchIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003528 u32 x
3529 u32 y
3530 u32 z
3531}
3532
Jesse Hallad250842017-03-10 18:35:38 -08003533@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08003534class VkSurfaceCapabilitiesKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003535 u32 minImageCount
3536 u32 maxImageCount
3537 VkExtent2D currentExtent
3538 VkExtent2D minImageExtent
3539 VkExtent2D maxImageExtent
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003540 u32 maxImageArrayLayers
Jesse Hall1356b0d2015-11-23 17:24:58 -08003541 VkSurfaceTransformFlagsKHR supportedTransforms
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003542 VkSurfaceTransformFlagBitsKHR currentTransform
Jesse Halla6429252015-11-29 18:59:42 -08003543 VkCompositeAlphaFlagsKHR supportedCompositeAlpha
Jesse Hall1356b0d2015-11-23 17:24:58 -08003544 VkImageUsageFlags supportedUsageFlags
Michael Lentine88594d72015-11-12 12:49:45 -08003545}
3546
Jesse Hallad250842017-03-10 18:35:38 -08003547@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08003548class VkSurfaceFormatKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003549 VkFormat format
3550 VkColorSpaceKHR colorSpace
Michael Lentine88594d72015-11-12 12:49:45 -08003551}
3552
Jesse Hallad250842017-03-10 18:35:38 -08003553@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08003554class VkSwapchainCreateInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003555 VkStructureType sType
3556 const void* pNext
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003557 VkSwapchainCreateFlagsKHR flags
Jesse Hall1356b0d2015-11-23 17:24:58 -08003558 VkSurfaceKHR surface
3559 u32 minImageCount
3560 VkFormat imageFormat
3561 VkColorSpaceKHR imageColorSpace
3562 VkExtent2D imageExtent
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003563 u32 imageArrayLayers
3564 VkImageUsageFlags imageUsage
Jesse Hall1356b0d2015-11-23 17:24:58 -08003565 VkSharingMode sharingMode
Jesse Hall03b6fe12015-11-24 12:44:21 -08003566 u32 queueFamilyIndexCount
Jesse Hall1356b0d2015-11-23 17:24:58 -08003567 const u32* pQueueFamilyIndices
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003568 VkSurfaceTransformFlagBitsKHR preTransform
3569 VkCompositeAlphaFlagBitsKHR compositeAlpha
Jesse Hall1356b0d2015-11-23 17:24:58 -08003570 VkPresentModeKHR presentMode
Jesse Hall1356b0d2015-11-23 17:24:58 -08003571 VkBool32 clipped
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003572 VkSwapchainKHR oldSwapchain
Michael Lentine88594d72015-11-12 12:49:45 -08003573}
3574
Jesse Hallad250842017-03-10 18:35:38 -08003575@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08003576class VkPresentInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003577 VkStructureType sType
3578 const void* pNext
Jesse Hallb00daad2015-11-29 19:46:20 -08003579 u32 waitSemaphoreCount
3580 const VkSemaphore* pWaitSemaphores
Jesse Hall1356b0d2015-11-23 17:24:58 -08003581 u32 swapchainCount
Jesse Hall03b6fe12015-11-24 12:44:21 -08003582 const VkSwapchainKHR* pSwapchains
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003583 const u32* pImageIndices
Jesse Halle1b12782015-11-30 11:27:32 -08003584 VkResult* pResults
Michael Lentine88594d72015-11-12 12:49:45 -08003585}
3586
Jesse Hallad250842017-03-10 18:35:38 -08003587@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003588class VkDisplayPropertiesKHR {
3589 VkDisplayKHR display
3590 const char* displayName
3591 VkExtent2D physicalDimensions
3592 VkExtent2D physicalResolution
3593 VkSurfaceTransformFlagsKHR supportedTransforms
Jesse Hall1356b0d2015-11-23 17:24:58 -08003594 VkBool32 planeReorderPossible
Jesse Halla6429252015-11-29 18:59:42 -08003595 VkBool32 persistentContent
Michael Lentine88594d72015-11-12 12:49:45 -08003596}
3597
Jesse Hallad250842017-03-10 18:35:38 -08003598@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003599class VkDisplayModeParametersKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003600 VkExtent2D visibleRegion
Jesse Halla6429252015-11-29 18:59:42 -08003601 u32 refreshRate
Michael Lentine88594d72015-11-12 12:49:45 -08003602}
Jesse Halld27f6aa2015-08-15 17:58:48 -07003603
Jesse Hallad250842017-03-10 18:35:38 -08003604@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003605class VkDisplayModePropertiesKHR {
3606 VkDisplayModeKHR displayMode
Jesse Halla6429252015-11-29 18:59:42 -08003607 VkDisplayModeParametersKHR parameters
Jesse Hall1356b0d2015-11-23 17:24:58 -08003608}
3609
Jesse Hallad250842017-03-10 18:35:38 -08003610@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003611class VkDisplayModeCreateInfoKHR {
3612 VkStructureType sType
3613 const void* pNext
Jesse Hall9ba8bc82015-11-30 16:22:16 -08003614 VkDisplayModeCreateFlagsKHR flags
Jesse Halla6429252015-11-29 18:59:42 -08003615 VkDisplayModeParametersKHR parameters
Jesse Hall1356b0d2015-11-23 17:24:58 -08003616}
3617
Jesse Hallad250842017-03-10 18:35:38 -08003618@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003619class VkDisplayPlanePropertiesKHR {
Jesse Halla6429252015-11-29 18:59:42 -08003620 VkDisplayKHR currentDisplay
3621 u32 currentStackIndex
3622}
3623
Jesse Hallad250842017-03-10 18:35:38 -08003624@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003625class VkDisplayPlaneCapabilitiesKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003626 VkDisplayPlaneAlphaFlagsKHR supportedAlpha
3627 VkOffset2D minSrcPosition
3628 VkOffset2D maxSrcPosition
3629 VkExtent2D minSrcExtent
3630 VkExtent2D maxSrcExtent
3631 VkOffset2D minDstPosition
3632 VkOffset2D maxDstPosition
3633 VkExtent2D minDstExtent
3634 VkExtent2D maxDstExtent
3635}
3636
Jesse Hallad250842017-03-10 18:35:38 -08003637@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003638class VkDisplaySurfaceCreateInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003639 VkStructureType sType
3640 const void* pNext
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003641 VkDisplaySurfaceCreateFlagsKHR flags
Jesse Hall1356b0d2015-11-23 17:24:58 -08003642 VkDisplayModeKHR displayMode
3643 u32 planeIndex
3644 u32 planeStackIndex
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003645 VkSurfaceTransformFlagBitsKHR transform
Jesse Hall1356b0d2015-11-23 17:24:58 -08003646 f32 globalAlpha
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003647 VkDisplayPlaneAlphaFlagBitsKHR alphaMode
3648 VkExtent2D imageExtent
Jesse Hall1356b0d2015-11-23 17:24:58 -08003649}
3650
Jesse Hallad250842017-03-10 18:35:38 -08003651@extension("VK_KHR_display_swapchain") // 4
Jesse Hall1356b0d2015-11-23 17:24:58 -08003652class VkDisplayPresentInfoKHR {
3653 VkStructureType sType
3654 const void* pNext
3655 VkRect2D srcRect
3656 VkRect2D dstRect
Jesse Halla6429252015-11-29 18:59:42 -08003657 VkBool32 persistent
Jesse Hall1356b0d2015-11-23 17:24:58 -08003658}
3659
Jesse Hallad250842017-03-10 18:35:38 -08003660@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003661class VkXlibSurfaceCreateInfoKHR {
3662 VkStructureType sType
3663 const void* pNext
3664 VkXlibSurfaceCreateFlagsKHR flags
3665 platform.Display* dpy
3666 platform.Window window
3667}
3668
Jesse Hallad250842017-03-10 18:35:38 -08003669@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003670class VkXcbSurfaceCreateInfoKHR {
3671 VkStructureType sType
3672 const void* pNext
3673 VkXcbSurfaceCreateFlagsKHR flags
3674 platform.xcb_connection_t* connection
3675 platform.xcb_window_t window
3676}
3677
Jesse Hallad250842017-03-10 18:35:38 -08003678@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003679class VkWaylandSurfaceCreateInfoKHR {
3680 VkStructureType sType
3681 const void* pNext
3682 VkWaylandSurfaceCreateFlagsKHR flags
3683 platform.wl_display* display
3684 platform.wl_surface* surface
3685}
3686
Jesse Hallad250842017-03-10 18:35:38 -08003687@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003688class VkMirSurfaceCreateInfoKHR {
3689 VkStructureType sType
3690 const void* pNext
3691 VkMirSurfaceCreateFlagsKHR flags
3692 platform.MirConnection* connection
3693 platform.MirSurface* mirSurface
3694}
3695
Jesse Hallad250842017-03-10 18:35:38 -08003696@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003697class VkAndroidSurfaceCreateInfoKHR {
3698 VkStructureType sType
3699 const void* pNext
3700 VkAndroidSurfaceCreateFlagsKHR flags
3701 platform.ANativeWindow* window
3702}
3703
Jesse Hallad250842017-03-10 18:35:38 -08003704@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003705class VkWin32SurfaceCreateInfoKHR {
3706 VkStructureType sType
3707 const void* pNext
3708 VkWin32SurfaceCreateFlagsKHR flags
3709 platform.HINSTANCE hinstance
3710 platform.HWND hwnd
3711}
3712
Jesse Hallad250842017-03-10 18:35:38 -08003713@extension("VK_ANDROID_native_buffer") // 11
Jesse Halld1abd742017-02-09 21:45:51 -08003714@internal class Gralloc1Usage {
3715 u64 consumer
3716 u64 producer
3717}
3718
Jesse Hallad250842017-03-10 18:35:38 -08003719@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08003720class VkNativeBufferANDROID {
3721 VkStructureType sType
3722 const void* pNext
3723 platform.buffer_handle_t handle
Jesse Halld1abd742017-02-09 21:45:51 -08003724 s32 stride
3725 s32 format
3726 s32 usage
3727 Gralloc1Usage usage2
Chia-I Wub262ddc2016-03-22 07:38:20 +08003728}
3729
Jesse Hallad250842017-03-10 18:35:38 -08003730@extension("VK_ANDROID_native_buffer") // 11
Chris Forbes8e4438b2016-12-07 16:26:49 +13003731class VkSwapchainImageCreateInfoANDROID {
3732 VkStructureType sType
3733 const void* pNext
Chris Forbes134d9582017-01-12 14:26:37 +13003734 VkSwapchainImageUsageFlagsANDROID flags
Chris Forbes48853712017-01-12 14:09:33 +13003735}
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07003736
Jesse Hallad250842017-03-10 18:35:38 -08003737@extension("VK_ANDROID_native_buffer") // 11
Chris Forbes1d4e5542017-02-15 19:38:50 +13003738class VkPhysicalDevicePresentationPropertiesANDROID {
3739 VkStructureType sType
3740 void* pNext
3741 VkBool32 sharedImage
3742}
3743
Jesse Hallad250842017-03-10 18:35:38 -08003744@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08003745class VkDebugReportCallbackCreateInfoEXT {
3746 VkStructureType sType
3747 const void* pNext
3748 VkDebugReportFlagsEXT flags
3749 PFN_vkDebugReportCallbackEXT pfnCallback
3750 void* pUserData
3751}
3752
Jesse Hallad250842017-03-10 18:35:38 -08003753@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07003754class VkPipelineRasterizationStateRasterizationOrderAMD {
3755 VkStructureType sType
3756 const void* pNext
3757 VkRasterizationOrderAMD rasterizationOrder
3758}
3759
Jesse Hallad250842017-03-10 18:35:38 -08003760@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003761class VkDebugMarkerObjectNameInfoEXT {
3762 VkStructureType sType
3763 const void* pNext
3764 VkDebugReportObjectTypeEXT objectType
3765 u64 object
3766 const char* pObjectName
3767}
3768
Jesse Hallad250842017-03-10 18:35:38 -08003769@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003770class VkDebugMarkerObjectTagInfoEXT {
3771 VkStructureType sType
3772 const void* pNext
3773 VkDebugReportObjectTypeEXT objectType
3774 u64 object
3775 u64 tagName
3776 platform.size_t tagSize
3777 const void* pTag
3778}
3779
Jesse Hallad250842017-03-10 18:35:38 -08003780@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003781class VkDebugMarkerMarkerInfoEXT {
3782 VkStructureType sType
3783 const void* pNext
3784 const char* pMarkerName
3785 f32[4] color
3786}
3787
Jesse Hallad250842017-03-10 18:35:38 -08003788@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07003789class VkDedicatedAllocationImageCreateInfoNV {
3790 VkStructureType sType
3791 const void* pNext
3792 VkBool32 dedicatedAllocation
3793}
3794
Jesse Hallad250842017-03-10 18:35:38 -08003795@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07003796class VkDedicatedAllocationBufferCreateInfoNV {
3797 VkStructureType sType
3798 const void* pNext
3799 VkBool32 dedicatedAllocation
3800}
3801
Jesse Hallad250842017-03-10 18:35:38 -08003802@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07003803class VkDedicatedAllocationMemoryAllocateInfoNV {
3804 VkStructureType sType
3805 const void* pNext
3806 VkImage image
3807 VkBuffer buffer
3808}
3809
Jesse Hall7ba0ac72017-07-07 17:13:23 -07003810@extension("VK_AMD_texture_gather_bias_lod") // 42
3811class VkTextureLODGatherFormatPropertiesAMD {
3812 VkStructureType sType
3813 void* pNext
3814 VkBool32 supportsTextureGatherLODBiasAMD
3815}
3816
Jesse Hallad250842017-03-10 18:35:38 -08003817@extension("VK_KHX_multiview") // 54
3818class VkRenderPassMultiviewCreateInfoKHX {
3819 VkStructureType sType
3820 const void* pNext
3821 u32 subpassCount
3822 const u32* pViewMasks
3823 u32 dependencyCount
3824 const s32* pViewOffsets
3825 u32 correlationMaskCount
3826 const u32* pCorrelationMasks
3827}
3828
3829@extension("VK_KHX_multiview") // 54
3830class VkPhysicalDeviceMultiviewFeaturesKHX {
3831 VkStructureType sType
3832 void* pNext
3833 VkBool32 multiview
3834 VkBool32 multiviewGeometryShader
3835 VkBool32 multiviewTessellationShader
3836}
3837
3838@extension("VK_KHX_multiview") // 54
3839class VkPhysicalDeviceMultiviewPropertiesKHX {
3840 VkStructureType sType
3841 void* pNext
3842 u32 maxMultiviewViewCount
3843 u32 maxMultiviewInstanceIndex
3844}
3845
3846@extension("VK_NV_external_memory_capabilities") // 56
Jesse Halleb02c472017-02-24 15:13:45 -08003847class VkExternalImageFormatPropertiesNV {
3848 VkImageFormatProperties imageFormatProperties
3849 VkExternalMemoryFeatureFlagsNV externalMemoryFeatures
3850 VkExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes
3851 VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes
3852}
3853
Jesse Hallad250842017-03-10 18:35:38 -08003854@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08003855class VkExternalMemoryImageCreateInfoNV {
3856 VkStructureType sType
3857 const void* pNext
3858 VkExternalMemoryHandleTypeFlagsNV handleTypes
3859}
3860
Jesse Hallad250842017-03-10 18:35:38 -08003861@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08003862class VkExportMemoryAllocateInfoNV {
3863 VkStructureType sType
3864 const void* pNext
3865 VkExternalMemoryHandleTypeFlagsNV handleTypes
3866}
3867
Jesse Hallad250842017-03-10 18:35:38 -08003868@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08003869class VkImportMemoryWin32HandleInfoNV {
3870 VkStructureType sType
3871 const void* pNext
3872 VkExternalMemoryHandleTypeFlagsNV handleType
3873 platform.HANDLE handle
3874}
3875
Jesse Hallad250842017-03-10 18:35:38 -08003876@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08003877class VkExportMemoryWin32HandleInfoNV {
3878 VkStructureType sType
3879 const void* pNext
3880 const platform.SECURITY_ATTRIBUTES* pAttributes
3881 platform.DWORD dwAccess
3882}
3883
Jesse Hallad250842017-03-10 18:35:38 -08003884@extension("VK_NV_win32_keyed_mutex") // 59
Jesse Halleb02c472017-02-24 15:13:45 -08003885class VkWin32KeyedMutexAcquireReleaseInfoNV {
3886 VkStructureType sType
3887 const void* pNext
3888 u32 acquireCount
3889 const VkDeviceMemory* pAcquireSyncs
3890 const u64* pAcquireKeys
3891 const u32* pAcquireTimeoutMilliseconds
3892 u32 releaseCount
3893 const VkDeviceMemory* pReleaseSyncs
3894 const u64* pReleaseKeys
3895}
3896
Jesse Hallad250842017-03-10 18:35:38 -08003897@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003898class VkPhysicalDeviceFeatures2KHR {
3899 VkStructureType sType
3900 void* pNext
3901 VkPhysicalDeviceFeatures features
3902}
3903
Jesse Hallad250842017-03-10 18:35:38 -08003904@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003905class VkPhysicalDeviceProperties2KHR {
3906 VkStructureType sType
3907 void* pNext
3908 VkPhysicalDeviceProperties properties
3909}
3910
Jesse Hallad250842017-03-10 18:35:38 -08003911@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003912class VkFormatProperties2KHR {
3913 VkStructureType sType
3914 void* pNext
3915 VkFormatProperties formatProperties
3916}
3917
Jesse Hallad250842017-03-10 18:35:38 -08003918@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003919class VkImageFormatProperties2KHR {
3920 VkStructureType sType
3921 void* pNext
3922 VkImageFormatProperties imageFormatProperties
3923}
3924
Jesse Hallad250842017-03-10 18:35:38 -08003925@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003926class VkPhysicalDeviceImageFormatInfo2KHR {
3927 VkStructureType sType
3928 const void* pNext
3929 VkFormat format
3930 VkImageType type
3931 VkImageTiling tiling
3932 VkImageUsageFlags usage
3933 VkImageCreateFlags flags
3934}
3935
Jesse Hallad250842017-03-10 18:35:38 -08003936@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003937class VkQueueFamilyProperties2KHR {
3938 VkStructureType sType
3939 void* pNext
3940 VkQueueFamilyProperties queueFamilyProperties
3941}
3942
Jesse Hallad250842017-03-10 18:35:38 -08003943@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003944class VkPhysicalDeviceMemoryProperties2KHR {
3945 VkStructureType sType
3946 void* pNext
3947 VkPhysicalDeviceMemoryProperties memoryProperties
3948}
3949
Jesse Hallad250842017-03-10 18:35:38 -08003950@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003951class VkSparseImageFormatProperties2KHR {
3952 VkStructureType sType
3953 void* pNext
3954 VkSparseImageFormatProperties properties
3955}
3956
Jesse Hallad250842017-03-10 18:35:38 -08003957@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13003958class VkPhysicalDeviceSparseImageFormatInfo2KHR {
3959 VkStructureType sType
3960 const void* pNext
3961 VkFormat format
3962 VkImageType type
3963 VkSampleCountFlagBits samples
3964 VkImageUsageFlags usage
3965 VkImageTiling tiling
3966}
3967
Jesse Hallad250842017-03-10 18:35:38 -08003968@extension("VK_KHX_device_group") // 61
3969class VkMemoryAllocateFlagsInfoKHX {
3970 VkStructureType sType
3971 const void* pNext
3972 VkMemoryAllocateFlagsKHX flags
3973 u32 deviceMask
3974}
3975
3976@extension("VK_KHX_device_group") // 61
3977class VkBindBufferMemoryInfoKHX {
3978 VkStructureType sType
3979 const void* pNext
3980 VkBuffer buffer
3981 VkDeviceMemory memory
3982 VkDeviceSize memoryOffset
3983 u32 deviceIndexCount
3984 const u32* pDeviceIndices
3985}
3986
3987@extension("VK_KHX_device_group") // 61
3988class VkBindImageMemoryInfoKHX {
3989 VkStructureType sType
3990 const void* pNext
3991 VkImage image
3992 VkDeviceMemory memory
3993 VkDeviceSize memoryOffset
3994 u32 deviceIndexCount
3995 const u32* pDeviceIndices
3996 u32 SFRRectCount
3997 const VkRect2D* pSFRRects
3998}
3999
4000@extension("VK_KHX_device_group") // 61
4001class VkDeviceGroupRenderPassBeginInfoKHX {
4002 VkStructureType sType
4003 const void* pNext
4004 u32 deviceMask
4005 u32 deviceRenderAreaCount
4006 const VkRect2D* pDeviceRenderAreas
4007}
4008
4009@extension("VK_KHX_device_group") // 61
4010class VkDeviceGroupCommandBufferBeginInfoKHX {
4011 VkStructureType sType
4012 const void* pNext
4013 u32 deviceMask
4014}
4015
4016@extension("VK_KHX_device_group") // 61
4017class VkDeviceGroupSubmitInfoKHX {
4018 VkStructureType sType
4019 const void* pNext
4020 u32 waitSemaphoreCount
4021 const u32* pWaitSemaphoreDeviceIndices
4022 u32 commandBufferCount
4023 const u32* pCommandBufferDeviceMasks
4024 u32 signalSemaphoreCount
4025 const u32* pSignalSemaphoreDeviceIndices
4026}
4027
4028@extension("VK_KHX_device_group") // 61
4029class VkDeviceGroupBindSparseInfoKHX {
4030 VkStructureType sType
4031 const void* pNext
4032 u32 resourceDeviceIndex
4033 u32 memoryDeviceIndex
4034}
4035
4036@extension("VK_KHX_device_group") // 61
4037class VkDeviceGroupPresentCapabilitiesKHX {
4038 VkStructureType sType
4039 const void* pNext
4040 u32[VK_MAX_DEVICE_GROUP_SIZE_KHX] presentMask
4041 VkDeviceGroupPresentModeFlagsKHX modes
4042}
4043
4044@extension("VK_KHX_device_group") // 61
4045class VkImageSwapchainCreateInfoKHX {
4046 VkStructureType sType
4047 const void* pNext
4048 VkSwapchainKHR swapchain
4049}
4050
4051@extension("VK_KHX_device_group") // 61
4052class VkBindImageMemorySwapchainInfoKHX {
4053 VkStructureType sType
4054 const void* pNext
4055 VkSwapchainKHR swapchain
4056 u32 imageIndex
4057}
4058
4059@extension("VK_KHX_device_group") // 61
4060class VkAcquireNextImageInfoKHX {
4061 VkStructureType sType
4062 const void* pNext
4063 VkSwapchainKHR swapchain
4064 u64 timeout
4065 VkSemaphore semaphore
4066 VkFence fence
4067 u32 deviceMask
4068}
4069
4070@extension("VK_KHX_device_group") // 61
4071class VkDeviceGroupPresentInfoKHX {
4072 VkStructureType sType
4073 const void* pNext
4074 u32 swapchainCount
4075 const u32* pDeviceMasks
4076 VkDeviceGroupPresentModeFlagBitsKHX mode
4077}
4078
4079@extension("VK_KHX_device_group") // 61
4080class VkDeviceGroupSwapchainCreateInfoKHX {
4081 VkStructureType sType
4082 const void* pNext
4083 VkDeviceGroupPresentModeFlagsKHX modes
4084}
4085
4086@extension("VK_EXT_validation_flags") // 62
Chris Forbes289cb792016-12-30 15:03:55 +13004087class VkValidationFlagsEXT {
4088 VkStructureType sType
4089 const void* pNext
4090 u32 disabledValidationCheckCount
4091 VkValidationCheckEXT* pDisabledValidationChecks
4092}
4093
Jesse Hallad250842017-03-10 18:35:38 -08004094@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08004095class VkViSurfaceCreateInfoNN {
4096 VkStructureType sType
4097 const void* pNext
4098 VkViSurfaceCreateFlagsNN flags
4099 void* window
4100}
4101
Jesse Hallad250842017-03-10 18:35:38 -08004102@extension("VK_KHX_device_group_creation") // 71
4103class VkPhysicalDeviceGroupPropertiesKHX {
4104 VkStructureType sType
Jesse Hallf5ad48b2017-03-20 13:09:19 -07004105 void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08004106 u32 physicalDeviceCount
4107 VkPhysicalDevice[VK_MAX_DEVICE_GROUP_SIZE_KHX] physicalDevices
4108 VkBool32 subsetAllocation
4109}
4110
4111@extension("VK_KHX_device_group_creation") // 71
4112class VkDeviceGroupDeviceCreateInfoKHX {
4113 VkStructureType sType
4114 const void* pNext
4115 u32 physicalDeviceCount
4116 const VkPhysicalDevice* pPhysicalDevices
4117}
4118
Jesse Hall9492f992017-08-28 12:10:06 -07004119@extension("VK_KHR_external_memory_capabilities") // 72
4120class VkExternalMemoryPropertiesKHR {
4121 VkExternalMemoryFeatureFlagsKHR externalMemoryFeatures
4122 VkExternalMemoryHandleTypeFlagsKHR exportFromImportedHandleTypes
4123 VkExternalMemoryHandleTypeFlagsKHR compatibleHandleTypes
Jesse Hallad250842017-03-10 18:35:38 -08004124}
4125
Jesse Hall9492f992017-08-28 12:10:06 -07004126@extension("VK_KHR_external_memory_capabilities") // 72
4127class VkPhysicalDeviceExternalImageFormatInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004128 VkStructureType sType
4129 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004130 VkExternalMemoryHandleTypeFlagBitsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08004131}
4132
Jesse Hall9492f992017-08-28 12:10:06 -07004133@extension("VK_KHR_external_memory_capabilities") // 72
4134class VkExternalImageFormatPropertiesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004135 VkStructureType sType
4136 void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004137 VkExternalMemoryPropertiesKHR externalMemoryProperties
Jesse Hallad250842017-03-10 18:35:38 -08004138}
4139
Jesse Hall9492f992017-08-28 12:10:06 -07004140@extension("VK_KHR_external_memory_capabilities") // 72
4141class VkPhysicalDeviceExternalBufferInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004142 VkStructureType sType
4143 const void* pNext
4144 VkBufferCreateFlags flags
4145 VkBufferUsageFlags usage
Jesse Hall9492f992017-08-28 12:10:06 -07004146 VkExternalMemoryHandleTypeFlagBitsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08004147}
4148
Jesse Hall9492f992017-08-28 12:10:06 -07004149@extension("VK_KHR_external_memory_capabilities") // 72
4150class VkExternalBufferPropertiesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004151 VkStructureType sType
4152 void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004153 VkExternalMemoryPropertiesKHR externalMemoryProperties
Jesse Hallad250842017-03-10 18:35:38 -08004154}
4155
Jesse Hall9492f992017-08-28 12:10:06 -07004156@extension("VK_KHR_external_memory_capabilities") // 72
4157class VkPhysicalDeviceIDPropertiesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004158 VkStructureType sType
4159 void* pNext
4160 u8[VK_UUID_SIZE] deviceUUID
4161 u8[VK_UUID_SIZE] driverUUID
Jesse Hall9492f992017-08-28 12:10:06 -07004162 u8[VK_LUID_SIZE_KHR] deviceLUID
4163 u32 deviceNodeMask
Jesse Hallad250842017-03-10 18:35:38 -08004164 VkBool32 deviceLUIDValid
4165}
4166
Jesse Hall9492f992017-08-28 12:10:06 -07004167@extension("VK_KHR_external_memory") // 73
4168class VkExternalMemoryImageCreateInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004169 VkStructureType sType
4170 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004171 VkExternalMemoryHandleTypeFlagsKHR handleTypes
Jesse Hallad250842017-03-10 18:35:38 -08004172}
4173
Jesse Hall9492f992017-08-28 12:10:06 -07004174@extension("VK_KHR_external_memory") // 73
4175class VkExternalMemoryBufferCreateInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004176 VkStructureType sType
4177 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004178 VkExternalMemoryHandleTypeFlagsKHR handleTypes
Jesse Hallad250842017-03-10 18:35:38 -08004179}
4180
Jesse Hall9492f992017-08-28 12:10:06 -07004181@extension("VK_KHR_external_memory") // 73
4182class VkExportMemoryAllocateInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004183 VkStructureType sType
4184 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004185 VkExternalMemoryHandleTypeFlagsKHR handleTypes
Jesse Hallad250842017-03-10 18:35:38 -08004186}
4187
Jesse Hall9492f992017-08-28 12:10:06 -07004188@extension("VK_KHR_external_memory_win32") // 74
4189class VkImportMemoryWin32HandleInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004190 VkStructureType sType
4191 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004192 VkExternalMemoryHandleTypeFlagBitsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08004193 platform.HANDLE handle
Jesse Hall9492f992017-08-28 12:10:06 -07004194 platform.LPCWSTR name
Jesse Hallad250842017-03-10 18:35:38 -08004195}
4196
Jesse Hall9492f992017-08-28 12:10:06 -07004197@extension("VK_KHR_external_memory_win32") // 74
4198class VkExportMemoryWin32HandleInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004199 VkStructureType sType
4200 const void* pNext
4201 const platform.SECURITY_ATTRIBUTES* pAttributes
4202 platform.DWORD dwAccess
4203 platform.LPCWSTR name
4204}
4205
Jesse Hall9492f992017-08-28 12:10:06 -07004206@extension("VK_KHR_external_memory_win32") // 74
4207class VkMemoryWin32HandlePropertiesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004208 VkStructureType sType
4209 void* pNext
4210 u32 memoryTypeBits
4211}
4212
Jesse Hall9492f992017-08-28 12:10:06 -07004213@extension("VK_KHR_external_memory_win32") // 74
4214class VkMemoryGetWin32HandleInfoKHR {
4215 VkStructureType sType
4216 void* pNext
4217 VkDeviceMemory memory
4218 VkExternalMemoryHandleTypeFlagBitsKHR handleType
4219}
4220
4221@extension("VK_KHR_external_memory_fd") // 75
4222class VkImportMemoryFdInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004223 VkStructureType sType
4224 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004225 VkExternalMemoryHandleTypeFlagBitsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08004226 int fd
4227}
4228
Jesse Hall9492f992017-08-28 12:10:06 -07004229@extension("VK_KHR_external_memory_fd") // 75
4230class VkMemoryFdPropertiesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004231 VkStructureType sType
4232 void* pNext
4233 u32 memoryTypeBits
4234}
4235
Jesse Hall9492f992017-08-28 12:10:06 -07004236@extension("VK_KHR_external_memory_fd") // 75
4237class VkMemoryGetFdInfoKHR {
4238 VkStructureType sType
4239 void* pNext
4240 VkDeviceMemory memory
4241 VkExternalMemoryHandleTypeFlagBitsKHR handleType
4242}
4243
4244@extension("VK_KHR_win32_keyed_mutex") // 76
4245class VkWin32KeyedMutexAcquireReleaseInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004246 VkStructureType sType
4247 const void* pNext
4248 u32 acquireCount
4249 const VkDeviceMemory* pAcquireSyncs
4250 const u64* pAcquireKeys
4251 const u32* pAcquireTimeouts
4252 u32 releaseCount
4253 const VkDeviceMemory* pReleaseSyncs
4254 const u64* pReleaseKeys
4255}
4256
Jesse Hall9492f992017-08-28 12:10:06 -07004257@extension("VK_KHR_external_semaphore_capabilities") // 77
4258class VkPhysicalDeviceExternalSemaphoreInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004259 VkStructureType sType
4260 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004261 VkExternalSemaphoreHandleTypeFlagBitsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08004262}
4263
Jesse Hall9492f992017-08-28 12:10:06 -07004264@extension("VK_KHR_external_semaphore_capabilities") // 77
4265class VkExternalSemaphorePropertiesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004266 VkStructureType sType
4267 void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004268 VkExternalSemaphoreHandleTypeFlagsKHR exportFromImportedHandleTypes
4269 VkExternalSemaphoreHandleTypeFlagsKHR compatibleHandleTypes
4270 VkExternalSemaphoreFeatureFlagsKHR externalSemaphoreFeatures
Jesse Hallad250842017-03-10 18:35:38 -08004271}
4272
Jesse Hall9492f992017-08-28 12:10:06 -07004273@extension("VK_KHR_external_semaphore") // 78
4274class VkExportSemaphoreCreateInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004275 VkStructureType sType
4276 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004277 VkExternalSemaphoreHandleTypeFlagsKHR handleTypes
Jesse Hallad250842017-03-10 18:35:38 -08004278}
4279
Jesse Hall9492f992017-08-28 12:10:06 -07004280@extension("VK_KHR_external_semaphore_win32") // 79
4281class VkImportSemaphoreWin32HandleInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004282 VkStructureType sType
4283 const void* pNext
4284 VkSemaphore semaphore
Jesse Hall9492f992017-08-28 12:10:06 -07004285 VkSemaphoreImportFlagsKHR flags
4286 VkExternalSemaphoreHandleTypeFlagsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08004287 platform.HANDLE handle
Jesse Hall9492f992017-08-28 12:10:06 -07004288 platform.LPCWSTR name
Jesse Hallad250842017-03-10 18:35:38 -08004289}
4290
Jesse Hall9492f992017-08-28 12:10:06 -07004291@extension("VK_KHR_external_semaphore_win32") // 79
4292class VkExportSemaphoreWin32HandleInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004293 VkStructureType sType
4294 const void* pNext
4295 const platform.SECURITY_ATTRIBUTES* pAttributes
4296 platform.DWORD dwAccess
4297 platform.LPCWSTR name
4298}
4299
Jesse Hall9492f992017-08-28 12:10:06 -07004300@extension("VK_KHR_external_semaphore_win32") // 79
4301class VkD3D12FenceSubmitInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004302 VkStructureType sType
4303 const void* pNext
4304 u32 waitSemaphoreValuesCount
4305 const u64* pWaitSemaphoreValues
4306 u32 signalSemaphoreValuesCount
4307 const u64* pSignalSemaphoreValues
4308}
4309
Jesse Hall9492f992017-08-28 12:10:06 -07004310@extension("VK_KHR_external_semaphore_win32") // 79
4311class VkSemaphoreGetWin32HandleInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004312 VkStructureType sType
4313 const void* pNext
4314 VkSemaphore semaphore
Jesse Hall9492f992017-08-28 12:10:06 -07004315 VkExternalSemaphoreHandleTypeFlagBitsKHR handleType
4316}
4317
4318@extension("VK_KHR_external_semaphore_fd") // 80
4319class VkImportSemaphoreFdInfoKHR {
4320 VkStructureType sType
4321 const void* pNext
4322 VkSemaphore semaphore
4323 VkSemaphoreImportFlagsKHR flags
4324 VkExternalSemaphoreHandleTypeFlagBitsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08004325 s32 fd
4326}
4327
Jesse Hall9492f992017-08-28 12:10:06 -07004328@extension("VK_KHR_external_semaphore_fd") // 80
4329class VkSemaphoreGetFdInfoKHR {
4330 VkStructureType sType
4331 const void* pNext
4332 VkSemaphore semaphore
4333 VkExternalSemaphoreHandleTypeFlagBitsKHR handleType
4334}
4335
Jesse Hallad250842017-03-10 18:35:38 -08004336@extension("VK_KHR_push_descriptor") // 81
4337class VkPhysicalDevicePushDescriptorPropertiesKHR {
4338 VkStructureType sType
4339 void* pNext
4340 u32 maxPushDescriptors
4341}
4342
Jesse Hall9492f992017-08-28 12:10:06 -07004343@extension("VK_KHR_16bit_storage") // 84
4344class VkPhysicalDevice16BitStorageFeaturesKHR {
4345 VkStructureType sType
4346 void* pNext
4347 VkBool32 storageBuffer16BitAccess
4348 VkBool32 uniformAndStorageBuffer16BitAccess
4349 VkBool32 storagePushConstant16
4350 VkBool32 storageInputOutput16
4351}
4352
Jesse Hallad250842017-03-10 18:35:38 -08004353@extension("VK_KHR_incremental_present") // 85
4354class VkRectLayerKHR {
4355 VkOffset2D offset
4356 VkExtent2D extent
4357 u32 layer
4358}
4359
4360@extension("VK_KHR_incremental_present") // 85
4361class VkPresentRegionKHR {
4362 u32 rectangleCount
4363 const VkRectLayerKHR* pRectangles
4364}
4365
4366@extension("VK_KHR_incremental_present") // 85
4367class VkPresentRegionsKHR {
4368 VkStructureType sType
4369 const void* pNext
4370 u32 swapchainCount
4371 const VkPresentRegionKHR* pRegions
4372}
4373
4374@extension("VK_KHR_descriptor_update_template") // 86
4375class VkDescriptorUpdateTemplateEntryKHR {
4376 u32 dstBinding
4377 u32 dstArrayElement
4378 u32 descriptorCount
4379 VkDescriptorType descriptorType
4380 platform.size_t offset
4381 platform.size_t stride
4382}
4383
4384@extension("VK_KHR_descriptor_update_template") // 86
4385class VkDescriptorUpdateTemplateCreateInfoKHR {
4386 VkStructureType sType
4387 void* pNext
4388 VkDescriptorUpdateTemplateCreateFlagsKHR flags
4389 u32 descriptorUpdateEntryCount
4390 const VkDescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries
4391 VkDescriptorUpdateTemplateTypeKHR templateType
4392 VkDescriptorSetLayout descriptorSetLayout
4393 VkPipelineBindPoint pipelineBindPoint
4394 VkPipelineLayout pipelineLayout
4395 u32 set
4396}
4397
4398@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004399class VkDeviceGeneratedCommandsFeaturesNVX {
4400 VkStructureType sType
4401 const void* pNext
4402 VkBool32 computeBindingPointSupport
4403}
4404
Jesse Hallad250842017-03-10 18:35:38 -08004405@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004406class VkDeviceGeneratedCommandsLimitsNVX {
4407 VkStructureType sType
4408 const void* pNext
4409 u32 maxIndirectCommandsLayoutTokenCount
4410 u32 maxObjectEntryCounts
4411 u32 minSequenceCountBufferOffsetAlignment
4412 u32 minSequenceIndexBufferOffsetAlignment
4413 u32 minCommandsTokenBufferOffsetAlignment
4414}
4415
Jesse Hallad250842017-03-10 18:35:38 -08004416@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004417class VkIndirectCommandsTokenNVX {
4418 VkIndirectCommandsTokenTypeNVX tokenType
4419 VkBuffer buffer
4420 VkDeviceSize offset
4421}
4422
Jesse Hallad250842017-03-10 18:35:38 -08004423@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004424class VkIndirectCommandsLayoutTokenNVX {
4425 VkIndirectCommandsTokenTypeNVX tokenType
4426 u32 bindingUnit
4427 u32 dynamicCount
4428 u32 divisor
4429}
4430
Jesse Hallad250842017-03-10 18:35:38 -08004431@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004432class VkIndirectCommandsLayoutCreateInfoNVX {
4433 VkStructureType sType
4434 const void* pNext
4435 VkPipelineBindPoint pipelineBindPoint
4436 VkIndirectCommandsLayoutUsageFlagsNVX flags
4437 u32 tokenCount
4438 const VkIndirectCommandsLayoutTokenNVX* pTokens
4439}
4440
Jesse Hallad250842017-03-10 18:35:38 -08004441@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004442class VkCmdProcessCommandsInfoNVX {
4443 VkStructureType sType
4444 const void* pNext
4445 VkObjectTableNVX objectTable
4446 VkIndirectCommandsLayoutNVX indirectCommandsLayout
4447 u32 indirectCommandsTokenCount
4448 const VkIndirectCommandsTokenNVX* pIndirectCommandsTokens
4449 u32 maxSequencesCount
4450 VkCommandBuffer targetCommandBuffer
4451 VkBuffer sequencesCountBuffer
4452 VkDeviceSize sequencesCountOffset
4453 VkBuffer sequencesIndexBuffer
4454 VkDeviceSize sequencesIndexOffset
4455}
4456
Jesse Hallad250842017-03-10 18:35:38 -08004457@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004458class VkCmdReserveSpaceForCommandsInfoNVX {
4459 VkStructureType sType
4460 const void* pNext
4461 VkObjectTableNVX objectTable
4462 VkIndirectCommandsLayoutNVX indirectCommandsLayout
4463 u32 maxSequencesCount
4464}
4465
Jesse Hallad250842017-03-10 18:35:38 -08004466@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004467class VkObjectTableCreateInfoNVX {
4468 VkStructureType sType
4469 const void* pNext
4470 u32 objectCount
4471 const VkObjectEntryTypeNVX* pObjectEntryTypes
4472 const u32* pObjectEntryCounts
4473 const VkObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags
4474 u32 maxUniformBuffersPerDescriptor
4475 u32 maxStorageBuffersPerDescriptor
4476 u32 maxStorageImagesPerDescriptor
4477 u32 maxSampledImagesPerDescriptor
4478 u32 maxPipelineLayouts
4479}
4480
Jesse Hallad250842017-03-10 18:35:38 -08004481@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004482class VkObjectTableEntryNVX {
4483 VkObjectEntryTypeNVX type
4484 VkObjectEntryUsageFlagsNVX flags
4485}
4486
Jesse Hallad250842017-03-10 18:35:38 -08004487@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004488class VkObjectTablePipelineEntryNVX {
4489 VkObjectEntryTypeNVX type
4490 VkObjectEntryUsageFlagsNVX flags
4491 VkPipeline pipeline
4492}
4493
Jesse Hallad250842017-03-10 18:35:38 -08004494@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004495class VkObjectTableDescriptorSetEntryNVX {
4496 VkObjectEntryTypeNVX type
4497 VkObjectEntryUsageFlagsNVX flags
4498 VkPipelineLayout pipelineLayout
4499 VkDescriptorSet descriptorSet
4500}
4501
Jesse Hallad250842017-03-10 18:35:38 -08004502@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004503class VkObjectTableVertexBufferEntryNVX {
4504 VkObjectEntryTypeNVX type
4505 VkObjectEntryUsageFlagsNVX flags
4506 VkBuffer buffer
4507}
4508
Jesse Hallad250842017-03-10 18:35:38 -08004509@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004510class VkObjectTableIndexBufferEntryNVX {
4511 VkObjectEntryTypeNVX type
4512 VkObjectEntryUsageFlagsNVX flags
4513 VkBuffer buffer
Jesse Hall77ad05b2017-03-10 22:02:20 -08004514 VkIndexType indexType
Chris Forbes289cb792016-12-30 15:03:55 +13004515}
4516
Jesse Hallad250842017-03-10 18:35:38 -08004517@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004518class VkObjectTablePushConstantEntryNVX {
4519 VkObjectEntryTypeNVX type
4520 VkObjectEntryUsageFlagsNVX flags
4521 VkPipelineLayout pipelineLayout
4522 VkShaderStageFlags stageFlags
4523}
4524
Jesse Hallad250842017-03-10 18:35:38 -08004525@extension("VK_NV_clip_space_w_scaling") // 88
4526class VkViewportWScalingNV {
4527 f32 xcoeff
4528 f32 ycoeff
Jesse Hall889cd9a2017-02-25 22:12:23 -08004529}
4530
Jesse Hallad250842017-03-10 18:35:38 -08004531@extension("VK_NV_clip_space_w_scaling") // 88
4532class VkPipelineViewportWScalingStateCreateInfoNV {
Jesse Hall889cd9a2017-02-25 22:12:23 -08004533 VkStructureType sType
4534 const void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08004535 VkBool32 viewportWScalingEnable
4536 u32 viewportCount
4537 const VkViewportWScalingNV* pViewportWScalings
Jesse Hall889cd9a2017-02-25 22:12:23 -08004538}
4539
Jesse Hallad250842017-03-10 18:35:38 -08004540@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08004541class VkSurfaceCapabilities2EXT {
4542 VkStructureType sType
4543 void* pNext
4544 u32 minImageCount
4545 u32 maxImageCount
4546 VkExtent2D currentExtent
4547 VkExtent2D minImageExtent
4548 VkExtent2D maxImageExtent
4549 u32 maxImageArrayLayers
4550 VkSurfaceTransformFlagsKHR supportedTransforms
4551 VkSurfaceTransformFlagBitsKHR currentTransform
4552 VkCompositeAlphaFlagsKHR supportedCompositeAlpha
4553 VkImageUsageFlags supportedUsageFlags
4554 VkSurfaceCounterFlagsEXT supportedSurfaceCounters
4555}
4556
Jesse Hallad250842017-03-10 18:35:38 -08004557@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08004558class VkDisplayPowerInfoEXT {
4559 VkStructureType sType
4560 const void* pNext
4561 VkDisplayPowerStateEXT powerState
4562}
4563
Jesse Hallad250842017-03-10 18:35:38 -08004564@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08004565class VkDeviceEventInfoEXT {
4566 VkStructureType sType
4567 const void* pNext
4568 VkDeviceEventTypeEXT deviceEvent
4569}
4570
Jesse Hallad250842017-03-10 18:35:38 -08004571@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08004572class VkDisplayEventInfoEXT {
4573 VkStructureType sType
4574 const void* pNext
4575 VkDisplayEventTypeEXT displayEvent
4576}
4577
Jesse Hallad250842017-03-10 18:35:38 -08004578@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08004579class VkSwapchainCounterCreateInfoEXT {
4580 VkStructureType sType
4581 const void* pNext
4582 VkSurfaceCounterFlagsEXT surfaceCounters
4583}
4584
Jesse Hallad250842017-03-10 18:35:38 -08004585@extension("VK_GOOGLE_display_timing") // 93
4586class VkRefreshCycleDurationGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004587 u64 refreshDuration
Jesse Hallad250842017-03-10 18:35:38 -08004588}
4589
4590@extension("VK_GOOGLE_display_timing") // 93
4591class VkPastPresentationTimingGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004592 u32 presentID
4593 u64 desiredPresentTime
4594 u64 actualPresentTime
4595 u64 earliestPresentTime
4596 u64 presentMargin
Jesse Hallad250842017-03-10 18:35:38 -08004597}
4598
4599@extension("VK_GOOGLE_display_timing") // 93
4600class VkPresentTimeGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004601 u32 presentID
4602 u64 desiredPresentTime
Jesse Hallad250842017-03-10 18:35:38 -08004603}
4604
4605@extension("VK_GOOGLE_display_timing") // 93
4606class VkPresentTimesInfoGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004607 VkStructureType sType
4608 const void* pNext
4609 u32 swapchainCount
4610 const VkPresentTimeGOOGLE* pTimes
Jesse Hallad250842017-03-10 18:35:38 -08004611}
4612
4613@extension("VK_NVX_multiview_per_view_attributes") // 98
4614class VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
4615 VkStructureType sType
4616 void* pNext
4617 VkBool32 perViewPositionAllComponents
4618}
4619
4620@extension("VK_NV_viewport_swizzle") // 99
4621class VkViewportSwizzleNV {
4622 VkViewportCoordinateSwizzleNV x
4623 VkViewportCoordinateSwizzleNV y
4624 VkViewportCoordinateSwizzleNV z
4625 VkViewportCoordinateSwizzleNV w
4626}
4627
4628@extension("VK_NV_viewport_swizzle") // 99
4629class VkPipelineViewportSwizzleStateCreateInfoNV {
4630 VkStructureType sType
4631 const void* pNext
4632 VkPipelineViewportSwizzleStateCreateFlagsNV flags
4633 u32 viewportCount
4634 const VkViewportSwizzleNV* pViewportSwizzles
4635}
4636
4637@extension("VK_EXT_discard_rectangles") // 100
4638class VkPhysicalDeviceDiscardRectanglePropertiesEXT {
4639 VkStructureType sType
Jesse Hallf5ad48b2017-03-20 13:09:19 -07004640 void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08004641 u32 maxDiscardRectangles
4642}
4643
4644@extension("VK_EXT_discard_rectangles") // 100
4645class VkPipelineDiscardRectangleStateCreateInfoEXT {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004646 VkStructureType sType
4647 const void* pNext
4648 VkPipelineDiscardRectangleStateCreateFlagsEXT flags
4649 VkDiscardRectangleModeEXT discardRectangleMode
4650 u32 discardRectangleCount
4651 const VkRect2D* pDiscardRectangles
Jesse Hallad250842017-03-10 18:35:38 -08004652}
4653
4654@extension("VK_EXT_hdr_metadata") // 106
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07004655class VkXYColorEXT {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004656 f32 x
4657 f32 y
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07004658}
4659
Jesse Hallad250842017-03-10 18:35:38 -08004660@extension("VK_EXT_hdr_metadata") // 106
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07004661class VkHdrMetadataEXT {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004662 VkStructureType sType
4663 const void* pNext
4664 VkXYColorEXT displayPrimaryRed
4665 VkXYColorEXT displayPrimaryGreen
4666 VkXYColorEXT displayPrimaryBlue
4667 VkXYColorEXT whitePoint
4668 f32 maxLuminance
4669 f32 minLuminance
4670 f32 maxContentLightLevel
4671 f32 maxFrameAverageLightLevel
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07004672}
4673
Jesse Hall05556b12017-05-18 17:40:25 -07004674@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbese2d3ee12017-03-16 16:10:15 +13004675class VkSharedPresentSurfaceCapabilitiesKHR {
4676 VkStructureType sType
4677 const void* pNext
4678 VkImageUsageFlags sharedPresentSupportedUsageFlags
4679}
4680
Jesse Hall9492f992017-08-28 12:10:06 -07004681@extension("VK_KHR_external_fence_capabilities") // 113
4682class VkPhysicalDeviceExternalFenceInfoKHR {
4683 VkStructureType sType
4684 const void* pNext
4685 VkExternalFenceHandleTypeFlagBitsKHR handleType
4686}
4687
4688@extension("VK_KHR_external_fence_capabilities") // 113
4689class VkExternalFencePropertiesKHR {
4690 VkStructureType sType
4691 void* pNext
4692 VkExternalFenceHandleTypeFlagsKHR exportFromImportedHandleTypes
4693 VkExternalFenceHandleTypeFlagsKHR compatibleHandleTypes
4694 VkExternalFenceFeatureFlagsKHR externalFenceFeatures
4695}
4696
4697@extension("VK_KHR_external_fence") // 114
4698class VkExportFenceCreateInfoKHR {
4699 VkStructureType sType
4700 const void* pNext
4701 VkExternalFenceHandleTypeFlagsKHR handleTypes
4702}
4703
4704@extension("VK_KHR_external_fence_win32") // 115
4705class VkImportFenceWin32HandleInfoKHR {
4706 VkStructureType sType
4707 const void* pNext
4708 VkFence fence
4709 VkFenceImportFlagsKHR flags
4710 VkExternalFenceHandleTypeFlagBitsKHR handleType
4711 platform.HANDLE handle
4712 platform.LPCWSTR name
4713}
4714
4715@extension("VK_KHR_external_fence_win32") // 115
4716class VkExportFenceWin32HandleInfoKHR {
4717 VkStructureType sType
4718 const void* pNext
4719 const platform.SECURITY_ATTRIBUTES* pAttributes
4720 platform.DWORD dwAccess
4721 platform.LPCWSTR name
4722}
4723
4724@extension("VK_KHR_external_fence_win32") // 115
4725class VkFenceGetWin32HandleInfoKHR {
4726 VkStructureType sType
4727 const void* pNext
4728 VkFence fence
4729 VkExternalFenceHandleTypeFlagBitsKHR handleType
4730}
4731
4732@extension("VK_KHR_external_fence_fd") // 116
4733class VkImportFenceFdInfoKHR {
4734 VkStructureType sType
4735 const void* pNext
4736 VkFence fence
4737 VkFenceImportFlagsKHR flags
4738 VkExternalFenceHandleTypeFlagBitsKHR handleType
4739 int fd
4740}
4741
4742@extension("VK_KHR_external_fence_fd") // 116
4743class VkFenceGetFdInfoKHR {
4744 VkStructureType sType
4745 const void* pNext
4746 VkFence fence
4747 VkExternalFenceHandleTypeFlagBitsKHR handleType
4748}
4749
Jesse Hall05556b12017-05-18 17:40:25 -07004750@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13004751class VkPhysicalDeviceSurfaceInfo2KHR {
4752 VkStructureType sType
4753 const void* pNext
4754 VkSurfaceKHR surface
4755}
4756
Jesse Hall05556b12017-05-18 17:40:25 -07004757@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13004758class VkSurfaceCapabilities2KHR {
4759 VkStructureType sType
4760 void* pNext
4761 VkSurfaceCapabilitiesKHR surfaceCapabilities
4762}
4763
Jesse Hall05556b12017-05-18 17:40:25 -07004764@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13004765class VkSurfaceFormat2KHR {
4766 VkStructureType sType
4767 void* pNext
4768 VkSurfaceFormatKHR surfaceFormat
4769}
4770
Jesse Hall9492f992017-08-28 12:10:06 -07004771@extension("VK_KHR_variable_pointers") // 121
4772class VkPhysicalDeviceVariablePointerFeaturesKHR {
4773 VkStructureType sType
4774 void* pNext
4775 VkBool32 variablePointersStorageBuffer
4776 VkBool32 variablePointers
4777}
4778
Jesse Hallad250842017-03-10 18:35:38 -08004779@extension("VK_MVK_ios_surface") // 123
4780class VkIOSSurfaceCreateInfoMVK {
4781 VkStructureType sType
4782 const void* pNext
4783 VkIOSSurfaceCreateFlagsMVK flags
4784 const void* pView
4785}
4786
4787@extension("VK_MVK_macos_surface") // 124
4788class VkMacOSSurfaceCreateInfoMVK {
4789 VkStructureType sType
4790 const void* pNext
4791 VkMacOSSurfaceCreateFlagsMVK flags
4792 const void* pView
4793}
4794
Jesse Hall9492f992017-08-28 12:10:06 -07004795@extension("VK_KHR_dedicated_allocation") // 128
4796class VkMemoryDedicatedRequirementsKHR {
4797 VkStructureType sType
4798 void* pNext
4799 VkBool32 prefersDedicatedAllocation
4800 VkBool32 requiresDedicatedAllocation
4801}
4802
4803@extension("VK_KHR_dedicated_allocation") // 128
4804class VkMemoryDedicatedAllocateInfoKHR {
4805 VkStructureType sType
4806 const void* pNext
4807 VkImage image
4808 VkBuffer buffer
4809}
4810
Jesse Hall7ba0ac72017-07-07 17:13:23 -07004811@extension("VK_EXT_sampler_filter_minmax") // 131
4812class VkSamplerReductionModeCreateInfoEXT {
4813 VkStructureType sType
4814 const void* pNext
4815 VkSamplerReductionModeEXT reductionMode
4816}
4817
4818@extension("VK_EXT_sampler_filter_minmax") // 131
4819class VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
4820 VkStructureType sType
4821 void* pNext
4822 VkBool32 filterMinmaxSingleComponentFormats
4823 VkBool32 filterMinmaxImageComponentMapping
4824}
4825
Jesse Hall77726222017-09-19 14:49:27 -05004826@extension("VK_EXT_sample_locations") // 144
4827class VkSampleLocationEXT {
4828 f32 x
4829 f32 y
4830}
4831
4832@extension("VK_EXT_sample_locations") // 144
4833class VkSampleLocationsInfoEXT {
4834 VkStructureType sType
4835 const void* pNext
4836 VkSampleCountFlagBits sampleLocationsPerPixel
4837 VkExtent2D sampleLocationGridSize
4838 u32 sampleLocationsCount
4839 const VkSampleLocationEXT* pSampleLocations
4840}
4841
4842@extension("VK_EXT_sample_locations") // 144
4843class VkAttachmentSampleLocationsEXT {
4844 u32 attachmentIndex
4845 VkSampleLocationsInfoEXT sampleLocationsInfo
4846}
4847
4848@extension("VK_EXT_sample_locations") // 144
4849class VkSubpassSampleLocationsEXT {
4850 u32 subpassIndex
4851 VkSampleLocationsInfoEXT sampleLocationsInfo
4852}
4853
4854@extension("VK_EXT_sample_locations") // 144
4855class VkRenderPassSampleLocationsBeginInfoEXT {
4856 VkStructureType sType
4857 const void* pNext
4858 u32 attachmentInitialSampleLocationsCount
4859 const VkAttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations
4860 u32 postSubpassSampleLocationsCount
4861 const VkSubpassSampleLocationsEXT* pSubpassSampleLocations
4862}
4863
4864@extension("VK_EXT_sample_locations") // 144
4865class VkPipelineSampleLocationsStateCreateInfoEXT {
4866 VkStructureType sType
4867 const void* pNext
4868 VkBool32 sampleLocationsEnable
4869 VkSampleLocationsInfoEXT sampleLocationsInfo
4870}
4871
4872@extension("VK_EXT_sample_locations") // 144
4873class VkPhysicalDeviceSampleLocationsPropertiesEXT {
4874 VkStructureType sType
4875 void* pNext
4876 VkSampleCountFlags sampleLocationSampleCounts
4877 VkExtent2D maxSampleLocationGridSize
4878 f32[2] sampleLocationCoordinateRange
4879 u32 sampleLocationSubPixelBits
4880 VkBool32 variableSampleLocations
4881}
4882
4883@extension("VK_EXT_sample_locations") // 144
4884class VkMultisamplePropertiesEXT {
4885 VkStructureType sType
4886 void* pNext
4887 VkExtent2D maxSampleLocationGridSize
4888}
4889
Jesse Hall9492f992017-08-28 12:10:06 -07004890@extension("VK_KHR_get_memory_requirements2") // 147
4891class VkBufferMemoryRequirementsInfo2KHR {
4892 VkStructureType sType
4893 const void* pNext
4894 VkBuffer buffer
4895}
4896
4897@extension("VK_KHR_get_memory_requirements2") // 147
4898class VkImageMemoryRequirementsInfo2KHR {
4899 VkStructureType sType
4900 const void* pNext
4901 VkImage image
4902}
4903
4904@extension("VK_KHR_get_memory_requirements2") // 147
4905class VkImageSparseMemoryRequirementsInfo2KHR {
4906 VkStructureType sType
4907 const void* pNext
4908 VkImage image
4909}
4910
4911@extension("VK_KHR_get_memory_requirements2") // 147
4912class VkMemoryRequirements2KHR {
4913 VkStructureType sType
4914 void* pNext
4915 VkMemoryRequirements memoryRequirements
4916}
4917
4918@extension("VK_KHR_get_memory_requirements2") // 147
4919class VkSparseImageMemoryRequirements2KHR {
4920 VkStructureType sType
4921 void* pNext
4922 VkSparseImageMemoryRequirements memoryRequirements
4923}
4924
Jesse Hall7ba0ac72017-07-07 17:13:23 -07004925@extension("VK_EXT_blend_operation_advanced") // 149
4926class VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
4927 VkStructureType sType
4928 void* pNext
4929 VkBool32 advancedBlendCoherentOperations
4930}
4931
4932@extension("VK_EXT_blend_operation_advanced") // 149
4933class VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
4934 VkStructureType sType
4935 void* pNext
4936 u32 advancedBlendMaxColorAttachments
4937 VkBool32 advancedBlendIndependentBlend
4938 VkBool32 advancedBlendNonPremultipliedSrcColor
4939 VkBool32 advancedBlendNonPremultipliedDstColor
4940 VkBool32 advancedBlendCorrelatedOverlap
4941 VkBool32 advancedBlendAllOperations
4942}
4943
4944@extension("VK_EXT_blend_operation_advanced") // 149
4945class VkPipelineColorBlendAdvancedStateCreateInfoEXT {
4946 VkStructureType sType
4947 const void* pNext
4948 VkBool32 srcPremultiplied
4949 VkBool32 dstPremultiplied
4950 VkBlendOverlapEXT blendOverlap
4951}
4952
4953@extension("VK_NV_fragment_coverage_to_color") // 150
4954class VkPipelineCoverageToColorStateCreateInfoNV {
4955 VkStructureType sType
4956 const void* pNext
4957 VkPipelineCoverageToColorStateCreateFlagsNV flags
4958 VkBool32 coverageToColorEnable
4959 u32 coverageToColorLocation
4960}
4961
4962@extension("VK_NV_framebuffer_mixed_samples") // 153
4963class VkPipelineCoverageModulationStateCreateInfoNV {
4964 VkStructureType sType
4965 const void* pNext
4966 VkPipelineCoverageModulationStateCreateFlagsNV flags
4967 VkCoverageModulationModeNV coverageModulationMode
4968 VkBool32 coverageModulationTableEnable
4969 u32 coverageModulationTableCount
4970 const f32* pCoverageModulationTable
4971}
4972
Jesse Hall77726222017-09-19 14:49:27 -05004973@extension("VK_EXT_validation_cache") // 161
4974class VkValidationCacheCreateInfoEXT {
4975 VkStructureType sType
4976 const void* pNext
4977 VkValidationCacheCreateFlagsEXT flags
4978 platform.size_t initialDataSize
4979 const void* pInitialData
4980}
4981
4982@extension("VK_EXT_validation_cache") // 161
4983class VkShaderModuleValidationCacheCreateInfoEXT {
4984 VkStructureType sType
4985 const void* pNext
4986 VkValidationCacheEXT validationCache
4987}
4988
Jesse Halld27f6aa2015-08-15 17:58:48 -07004989////////////////
4990// Commands //
4991////////////////
4992
4993// Function pointers. TODO: add support for function pointers.
4994
4995@external type void* PFN_vkVoidFunction
4996@pfn cmd void vkVoidFunction() {
4997}
4998
Jesse Hall3fbc8562015-11-29 22:10:52 -08004999@external type void* PFN_vkAllocationFunction
5000@pfn cmd void* vkAllocationFunction(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005001 void* pUserData,
5002 platform.size_t size,
5003 platform.size_t alignment,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005004 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08005005 return ?
5006}
5007
Jesse Hall3fbc8562015-11-29 22:10:52 -08005008@external type void* PFN_vkReallocationFunction
5009@pfn cmd void* vkReallocationFunction(
Jesse Hall03b6fe12015-11-24 12:44:21 -08005010 void* pUserData,
5011 void* pOriginal,
5012 platform.size_t size,
5013 platform.size_t alignment,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005014 VkSystemAllocationScope allocationScope) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005015 return ?
5016}
5017
5018@external type void* PFN_vkFreeFunction
5019@pfn cmd void vkFreeFunction(
5020 void* pUserData,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005021 void* pMemory) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005022}
5023
Jesse Hall3fbc8562015-11-29 22:10:52 -08005024@external type void* PFN_vkInternalAllocationNotification
5025@pfn cmd void vkInternalAllocationNotification(
Jesse Hall03b6fe12015-11-24 12:44:21 -08005026 void* pUserData,
5027 platform.size_t size,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005028 VkInternalAllocationType allocationType,
5029 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08005030}
5031
5032@external type void* PFN_vkInternalFreeNotification
5033@pfn cmd void vkInternalFreeNotification(
5034 void* pUserData,
5035 platform.size_t size,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005036 VkInternalAllocationType allocationType,
5037 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08005038}
Jesse Halld27f6aa2015-08-15 17:58:48 -07005039
5040// Global functions
5041
5042@threadSafety("system")
5043cmd VkResult vkCreateInstance(
5044 const VkInstanceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005045 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005046 VkInstance* pInstance) {
5047 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO)
5048
5049 instance := ?
5050 pInstance[0] = instance
5051 State.Instances[instance] = new!InstanceObject()
5052
Jesse Hall3dd678a2016-01-08 21:52:01 -08005053 layers := pCreateInfo.ppEnabledLayerNames[0:pCreateInfo.enabledLayerCount]
5054 extensions := pCreateInfo.ppEnabledExtensionNames[0:pCreateInfo.enabledExtensionCount]
Jesse Halld27f6aa2015-08-15 17:58:48 -07005055
5056 return ?
5057}
5058
5059@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005060cmd void vkDestroyInstance(
Jesse Hall03b6fe12015-11-24 12:44:21 -08005061 VkInstance instance,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005062 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005063 instanceObject := GetInstance(instance)
5064
5065 State.Instances[instance] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005066}
5067
5068@threadSafety("system")
5069cmd VkResult vkEnumeratePhysicalDevices(
5070 VkInstance instance,
5071 u32* pPhysicalDeviceCount,
5072 VkPhysicalDevice* pPhysicalDevices) {
5073 instanceObject := GetInstance(instance)
5074
5075 physicalDeviceCount := as!u32(?)
5076 pPhysicalDeviceCount[0] = physicalDeviceCount
5077 physicalDevices := pPhysicalDevices[0:physicalDeviceCount]
5078
5079 for i in (0 .. physicalDeviceCount) {
5080 physicalDevice := ?
5081 physicalDevices[i] = physicalDevice
5082 if !(physicalDevice in State.PhysicalDevices) {
5083 State.PhysicalDevices[physicalDevice] = new!PhysicalDeviceObject(instance: instance)
5084 }
5085 }
5086
5087 return ?
5088}
5089
5090cmd PFN_vkVoidFunction vkGetDeviceProcAddr(
5091 VkDevice device,
5092 const char* pName) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005093 if device != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005094 device := GetDevice(device)
5095 }
5096
5097 return ?
5098}
5099
5100cmd PFN_vkVoidFunction vkGetInstanceProcAddr(
5101 VkInstance instance,
5102 const char* pName) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005103 if instance != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005104 instanceObject := GetInstance(instance)
5105 }
5106
5107 return ?
5108}
5109
Jesse Hall606a54e2015-11-19 22:17:28 -08005110cmd void vkGetPhysicalDeviceProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005111 VkPhysicalDevice physicalDevice,
5112 VkPhysicalDeviceProperties* pProperties) {
5113 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
5114
5115 properties := ?
5116 pProperties[0] = properties
Jesse Halld27f6aa2015-08-15 17:58:48 -07005117}
5118
Jesse Hall606a54e2015-11-19 22:17:28 -08005119cmd void vkGetPhysicalDeviceQueueFamilyProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005120 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005121 u32* pQueueFamilyPropertyCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005122 VkQueueFamilyProperties* pQueueFamilyProperties) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005123 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005124 // TODO: Figure out how to express fetch-count-or-properties
5125 // This version fails 'apic validate' with 'fence not allowed in
5126 // *semantic.Branch'. Other attempts have failed with the same or other
5127 // errors.
5128 // if pQueueFamilyProperties != null {
5129 // queuesProperties := pQueueFamilyProperties[0:pCount[0]]
5130 // for i in (0 .. pCount[0]) {
5131 // queueProperties := as!VkQueueFamilyProperties(?)
5132 // queuesProperties[i] = queueProperties
5133 // }
5134 // } else {
5135 // count := ?
5136 // pCount[0] = count
5137 // }
Jesse Halld27f6aa2015-08-15 17:58:48 -07005138}
5139
Jesse Hall606a54e2015-11-19 22:17:28 -08005140cmd void vkGetPhysicalDeviceMemoryProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005141 VkPhysicalDevice physicalDevice,
5142 VkPhysicalDeviceMemoryProperties* pMemoryProperties) {
5143 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
5144
5145 memoryProperties := ?
5146 pMemoryProperties[0] = memoryProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07005147}
5148
Jesse Hall606a54e2015-11-19 22:17:28 -08005149cmd void vkGetPhysicalDeviceFeatures(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005150 VkPhysicalDevice physicalDevice,
5151 VkPhysicalDeviceFeatures* pFeatures) {
5152 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
5153
5154 features := ?
5155 pFeatures[0] = features
Jesse Halld27f6aa2015-08-15 17:58:48 -07005156}
5157
Jesse Hall606a54e2015-11-19 22:17:28 -08005158cmd void vkGetPhysicalDeviceFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005159 VkPhysicalDevice physicalDevice,
5160 VkFormat format,
5161 VkFormatProperties* pFormatProperties) {
5162 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
5163
5164 formatProperties := ?
5165 pFormatProperties[0] = formatProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07005166}
5167
Jesse Halla9e57032015-11-30 01:03:10 -08005168cmd VkResult vkGetPhysicalDeviceImageFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005169 VkPhysicalDevice physicalDevice,
5170 VkFormat format,
5171 VkImageType type,
5172 VkImageTiling tiling,
5173 VkImageUsageFlags usage,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005174 VkImageCreateFlags flags,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005175 VkImageFormatProperties* pImageFormatProperties) {
5176 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
5177
5178 imageFormatProperties := ?
5179 pImageFormatProperties[0] = imageFormatProperties
Jesse Halla9e57032015-11-30 01:03:10 -08005180
5181 return ?
Jesse Halld27f6aa2015-08-15 17:58:48 -07005182}
5183
Jesse Halld27f6aa2015-08-15 17:58:48 -07005184
5185// Device functions
5186
5187@threadSafety("system")
5188cmd VkResult vkCreateDevice(
5189 VkPhysicalDevice physicalDevice,
5190 const VkDeviceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005191 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005192 VkDevice* pDevice) {
5193 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO)
5194 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
5195
5196 device := ?
5197 pDevice[0] = device
5198 State.Devices[device] = new!DeviceObject(physicalDevice: physicalDevice)
5199
5200 return ?
5201}
5202
5203@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005204cmd void vkDestroyDevice(
Jesse Hall03b6fe12015-11-24 12:44:21 -08005205 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005206 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005207 deviceObject := GetDevice(device)
5208
5209 State.Devices[device] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005210}
5211
5212
5213// Extension discovery functions
5214
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005215cmd VkResult vkEnumerateInstanceLayerProperties(
Jesse Hall03b6fe12015-11-24 12:44:21 -08005216 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005217 VkLayerProperties* pProperties) {
5218 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08005219 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07005220
5221 properties := pProperties[0:count]
5222 for i in (0 .. count) {
5223 property := ?
5224 properties[i] = property
5225 }
5226
5227 return ?
5228}
5229
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005230cmd VkResult vkEnumerateInstanceExtensionProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005231 const char* pLayerName,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005232 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005233 VkExtensionProperties* pProperties) {
5234 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08005235 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07005236
5237 properties := pProperties[0:count]
5238 for i in (0 .. count) {
5239 property := ?
5240 properties[i] = property
5241 }
5242
5243 return ?
5244}
5245
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005246cmd VkResult vkEnumerateDeviceLayerProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005247 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005248 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005249 VkLayerProperties* pProperties) {
5250 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
5251 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08005252 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07005253
5254 properties := pProperties[0:count]
5255 for i in (0 .. count) {
5256 property := ?
5257 properties[i] = property
5258 }
5259
5260 return ?
5261}
5262
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005263cmd VkResult vkEnumerateDeviceExtensionProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005264 VkPhysicalDevice physicalDevice,
5265 const char* pLayerName,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005266 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005267 VkExtensionProperties* pProperties) {
5268 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
5269
5270 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08005271 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07005272
5273 properties := pProperties[0:count]
5274 for i in (0 .. count) {
5275 property := ?
5276 properties[i] = property
5277 }
5278
5279 return ?
5280}
5281
5282
5283// Queue functions
5284
5285@threadSafety("system")
Jesse Hall606a54e2015-11-19 22:17:28 -08005286cmd void vkGetDeviceQueue(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005287 VkDevice device,
5288 u32 queueFamilyIndex,
5289 u32 queueIndex,
5290 VkQueue* pQueue) {
5291 deviceObject := GetDevice(device)
5292
5293 queue := ?
5294 pQueue[0] = queue
5295
5296 if !(queue in State.Queues) {
5297 State.Queues[queue] = new!QueueObject(device: device)
5298 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07005299}
5300
5301@threadSafety("app")
5302cmd VkResult vkQueueSubmit(
5303 VkQueue queue,
Jesse Halla366a512015-11-19 22:30:07 -08005304 u32 submitCount,
Jesse Hallb00daad2015-11-29 19:46:20 -08005305 const VkSubmitInfo* pSubmits,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005306 VkFence fence) {
5307 queueObject := GetQueue(queue)
5308
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005309 if fence != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005310 fenceObject := GetFence(fence)
5311 assert(fenceObject.device == queueObject.device)
5312 }
5313
Jesse Hall3fbc8562015-11-29 22:10:52 -08005314 // commandBuffers := pcommandBuffers[0:commandBufferCount]
5315 // for i in (0 .. commandBufferCount) {
5316 // commandBuffer := commandBuffers[i]
5317 // commandBufferObject := GetCommandBuffer(commandBuffer)
5318 // assert(commandBufferObject.device == queueObject.device)
Jesse Halla366a512015-11-19 22:30:07 -08005319 //
Jesse Hall3fbc8562015-11-29 22:10:52 -08005320 // validate("QueueCheck", commandBufferObject.queueFlags in queueObject.flags,
5321 // "vkQueueSubmit: enqueued commandBuffer requires missing queue capabilities.")
Jesse Halla366a512015-11-19 22:30:07 -08005322 // }
Jesse Halld27f6aa2015-08-15 17:58:48 -07005323
5324 return ?
5325}
5326
5327@threadSafety("system")
5328cmd VkResult vkQueueWaitIdle(
5329 VkQueue queue) {
5330 queueObject := GetQueue(queue)
5331
5332 return ?
5333}
5334
5335@threadSafety("system")
5336cmd VkResult vkDeviceWaitIdle(
5337 VkDevice device) {
5338 deviceObject := GetDevice(device)
5339
5340 return ?
5341}
5342
5343
5344// Memory functions
5345
5346@threadSafety("system")
Jesse Hall3fbc8562015-11-29 22:10:52 -08005347cmd VkResult vkAllocateMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005348 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005349 const VkMemoryAllocateInfo* pAllocateInfo,
5350 const VkAllocationCallbacks* pAllocator,
5351 VkDeviceMemory* pMemory) {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08005352 assert(pAllocateInfo.sType == VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005353 deviceObject := GetDevice(device)
5354
Jesse Hall3fbc8562015-11-29 22:10:52 -08005355 memory := ?
5356 pMemory[0] = memory
5357 State.DeviceMemories[memory] = new!DeviceMemoryObject(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005358 device: device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005359 allocationSize: pAllocateInfo[0].allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005360
5361 return ?
5362}
5363
5364@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005365cmd void vkFreeMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005366 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005367 VkDeviceMemory memory,
5368 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005369 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005370 memoryObject := GetDeviceMemory(memory)
5371 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005372
5373 // Check that no objects are still bound before freeing.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005374 validate("MemoryCheck", len(memoryObject.boundObjects) == 0,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005375 "vkFreeMemory: objects still bound")
Jesse Hall3fbc8562015-11-29 22:10:52 -08005376 validate("MemoryCheck", len(memoryObject.boundCommandBuffers) == 0,
5377 "vkFreeMemory: commandBuffers still bound")
5378 State.DeviceMemories[memory] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005379}
5380
5381@threadSafety("app")
5382cmd VkResult vkMapMemory(
5383 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005384 VkDeviceMemory memory,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005385 VkDeviceSize offset,
5386 VkDeviceSize size,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005387 VkMemoryMapFlags flags,
5388 void** ppData) {
5389 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005390 memoryObject := GetDeviceMemory(memory)
5391 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005392
5393 assert(flags == as!VkMemoryMapFlags(0))
Jesse Hall3fbc8562015-11-29 22:10:52 -08005394 assert((offset + size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005395
5396 return ?
5397}
5398
5399@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005400cmd void vkUnmapMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005401 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005402 VkDeviceMemory memory) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005403 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005404 memoryObject := GetDeviceMemory(memory)
5405 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005406}
5407
5408cmd VkResult vkFlushMappedMemoryRanges(
5409 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005410 u32 memoryRangeCount
5411 const VkMappedMemoryRange* pMemoryRanges) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005412 deviceObject := GetDevice(device)
5413
Jesse Hall3fbc8562015-11-29 22:10:52 -08005414 memoryRanges := pMemoryRanges[0:memoryRangeCount]
5415 for i in (0 .. memoryRangeCount) {
5416 memoryRange := memoryRanges[i]
5417 memoryObject := GetDeviceMemory(memoryRange.memory)
5418 assert(memoryObject.device == device)
5419 assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005420 }
5421
5422 return ?
5423}
5424
5425cmd VkResult vkInvalidateMappedMemoryRanges(
5426 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005427 u32 memoryRangeCount,
5428 const VkMappedMemoryRange* pMemoryRanges) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005429 deviceObject := GetDevice(device)
5430
Jesse Hall3fbc8562015-11-29 22:10:52 -08005431 memoryRanges := pMemoryRanges[0:memoryRangeCount]
5432 for i in (0 .. memoryRangeCount) {
5433 memoryRange := memoryRanges[i]
5434 memoryObject := GetDeviceMemory(memoryRange.memory)
5435 assert(memoryObject.device == device)
5436 assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005437 }
5438
5439 return ?
5440}
5441
5442
5443// Memory management API functions
5444
Jesse Hall606a54e2015-11-19 22:17:28 -08005445cmd void vkGetDeviceMemoryCommitment(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005446 VkDevice device,
5447 VkDeviceMemory memory,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005448 VkDeviceSize* pCommittedMemoryInBytes) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005449 deviceObject := GetDevice(device)
5450
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005451 if memory != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005452 memoryObject := GetDeviceMemory(memory)
5453 assert(memoryObject.device == device)
5454 }
5455
5456 committedMemoryInBytes := ?
5457 pCommittedMemoryInBytes[0] = committedMemoryInBytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07005458}
5459
Jesse Hall606a54e2015-11-19 22:17:28 -08005460cmd void vkGetBufferMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005461 VkDevice device,
5462 VkBuffer buffer,
5463 VkMemoryRequirements* pMemoryRequirements) {
5464 deviceObject := GetDevice(device)
5465 bufferObject := GetBuffer(buffer)
5466 assert(bufferObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005467}
5468
5469cmd VkResult vkBindBufferMemory(
5470 VkDevice device,
5471 VkBuffer buffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005472 VkDeviceMemory memory,
5473 VkDeviceSize memoryOffset) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005474 deviceObject := GetDevice(device)
5475 bufferObject := GetBuffer(buffer)
5476 assert(bufferObject.device == device)
5477
5478 // Unbind buffer from previous memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005479 if bufferObject.memory != NULL_HANDLE {
5480 memoryObject := GetDeviceMemory(bufferObject.memory)
5481 memoryObject.boundObjects[as!u64(buffer)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005482 }
5483
5484 // Bind buffer to given memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005485 if memory != NULL_HANDLE {
5486 memoryObject := GetDeviceMemory(memory)
5487 assert(memoryObject.device == device)
5488 memoryObject.boundObjects[as!u64(buffer)] = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07005489 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08005490 bufferObject.memory = memory
5491 bufferObject.memoryOffset = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07005492
5493 return ?
5494}
5495
Jesse Hall606a54e2015-11-19 22:17:28 -08005496cmd void vkGetImageMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005497 VkDevice device,
5498 VkImage image,
5499 VkMemoryRequirements* pMemoryRequirements) {
5500 deviceObject := GetDevice(device)
5501 imageObject := GetImage(image)
5502 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005503}
5504
5505cmd VkResult vkBindImageMemory(
5506 VkDevice device,
5507 VkImage image,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005508 VkDeviceMemory memory,
5509 VkDeviceSize memoryOffset) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005510 deviceObject := GetDevice(device)
5511 imageObject := GetImage(image)
5512 assert(imageObject.device == device)
5513
5514 // Unbind image from previous memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005515 if imageObject.memory != NULL_HANDLE {
5516 memoryObject := GetDeviceMemory(imageObject.memory)
5517 memoryObject.boundObjects[as!u64(image)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005518 }
5519
5520 // Bind image to given memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005521 if memory != NULL_HANDLE {
5522 memoryObject := GetDeviceMemory(memory)
5523 assert(memoryObject.device == device)
5524 memoryObject.boundObjects[as!u64(image)] = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07005525 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08005526 imageObject.memory = memory
5527 imageObject.memoryOffset = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07005528
5529 return ?
5530}
5531
Jesse Hall606a54e2015-11-19 22:17:28 -08005532cmd void vkGetImageSparseMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005533 VkDevice device,
5534 VkImage image,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005535 u32* pSparseMemoryRequirementCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005536 VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
5537 deviceObject := GetDevice(device)
5538 imageObject := GetImage(image)
5539 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005540}
5541
Jesse Hall606a54e2015-11-19 22:17:28 -08005542cmd void vkGetPhysicalDeviceSparseImageFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005543 VkPhysicalDevice physicalDevice,
5544 VkFormat format,
5545 VkImageType type,
Jesse Hall091ed9e2015-11-30 00:55:29 -08005546 VkSampleCountFlagBits samples,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005547 VkImageUsageFlags usage,
5548 VkImageTiling tiling,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005549 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005550 VkSparseImageFormatProperties* pProperties) {
5551 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005552}
5553
Jesse Halla6429252015-11-29 18:59:42 -08005554cmd VkResult vkQueueBindSparse(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005555 VkQueue queue,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005556 u32 bindInfoCount,
Jesse Halla6429252015-11-29 18:59:42 -08005557 const VkBindSparseInfo* pBindInfo,
5558 VkFence fence) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005559 queueObject := GetQueue(queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005560
5561 return ?
5562}
5563
5564
5565// Fence functions
5566
5567@threadSafety("system")
5568cmd VkResult vkCreateFence(
5569 VkDevice device,
5570 const VkFenceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005571 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005572 VkFence* pFence) {
5573 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FENCE_CREATE_INFO)
5574 deviceObject := GetDevice(device)
5575
5576 fence := ?
5577 pFence[0] = fence
5578 State.Fences[fence] = new!FenceObject(
Jesse Halld8bade02015-11-24 10:24:18 -08005579 device: device, signaled: (pCreateInfo.flags == as!VkFenceCreateFlags(VK_FENCE_CREATE_SIGNALED_BIT)))
Jesse Halld27f6aa2015-08-15 17:58:48 -07005580
5581 return ?
5582}
5583
5584@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005585cmd void vkDestroyFence(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005586 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005587 VkFence fence,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005588 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005589 deviceObject := GetDevice(device)
5590 fenceObject := GetFence(fence)
5591 assert(fenceObject.device == device)
5592
5593 State.Fences[fence] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005594}
5595
5596@threadSafety("system")
5597cmd VkResult vkResetFences(
5598 VkDevice device,
5599 u32 fenceCount,
5600 const VkFence* pFences) {
5601 deviceObject := GetDevice(device)
5602
5603 fences := pFences[0:fenceCount]
5604 for i in (0 .. fenceCount) {
5605 fence := fences[i]
5606 fenceObject := GetFence(fence)
5607 assert(fenceObject.device == device)
5608 fenceObject.signaled = false
5609 }
5610
5611 return ?
5612}
5613
5614@threadSafety("system")
5615cmd VkResult vkGetFenceStatus(
5616 VkDevice device,
5617 VkFence fence) {
5618 deviceObject := GetDevice(device)
5619 fenceObject := GetFence(fence)
5620 assert(fenceObject.device == device)
5621
5622 return ?
5623}
5624
5625@threadSafety("system")
5626cmd VkResult vkWaitForFences(
5627 VkDevice device,
5628 u32 fenceCount,
5629 const VkFence* pFences,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005630 VkBool32 waitAll,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005631 u64 timeout) { /// timeout in nanoseconds
5632 deviceObject := GetDevice(device)
5633
5634 fences := pFences[0:fenceCount]
5635 for i in (0 .. fenceCount) {
5636 fence := fences[i]
5637 fenceObject := GetFence(fence)
5638 assert(fenceObject.device == device)
5639 }
5640
5641 return ?
5642}
5643
5644
5645// Queue semaphore functions
5646
5647@threadSafety("system")
5648cmd VkResult vkCreateSemaphore(
5649 VkDevice device,
5650 const VkSemaphoreCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005651 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005652 VkSemaphore* pSemaphore) {
5653 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO)
5654 deviceObject := GetDevice(device)
5655
5656 semaphore := ?
5657 pSemaphore[0] = semaphore
5658 State.Semaphores[semaphore] = new!SemaphoreObject(device: device)
5659
5660 return ?
5661}
5662
5663@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005664cmd void vkDestroySemaphore(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005665 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005666 VkSemaphore semaphore,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005667 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005668 deviceObject := GetDevice(device)
5669 semaphoreObject := GetSemaphore(semaphore)
5670 assert(semaphoreObject.device == device)
5671
5672 State.Semaphores[semaphore] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005673}
5674
Jesse Halld27f6aa2015-08-15 17:58:48 -07005675
5676// Event functions
5677
5678@threadSafety("system")
5679cmd VkResult vkCreateEvent(
5680 VkDevice device,
5681 const VkEventCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005682 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005683 VkEvent* pEvent) {
5684 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_EVENT_CREATE_INFO)
5685 deviceObject := GetDevice(device)
5686
5687 event := ?
5688 pEvent[0] = event
5689 State.Events[event] = new!EventObject(device: device)
5690
5691 return ?
5692}
5693
5694@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005695cmd void vkDestroyEvent(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005696 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005697 VkEvent event,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005698 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005699 deviceObject := GetDevice(device)
5700 eventObject := GetEvent(event)
5701 assert(eventObject.device == device)
5702
5703 State.Events[event] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005704}
5705
5706@threadSafety("system")
5707cmd VkResult vkGetEventStatus(
5708 VkDevice device,
5709 VkEvent event) {
5710 deviceObject := GetDevice(device)
5711 eventObject := GetEvent(event)
5712 assert(eventObject.device == device)
5713
5714 return ?
5715}
5716
5717@threadSafety("system")
5718cmd VkResult vkSetEvent(
5719 VkDevice device,
5720 VkEvent event) {
5721 deviceObject := GetDevice(device)
5722 eventObject := GetEvent(event)
5723 assert(eventObject.device == device)
5724
5725 return ?
5726}
5727
5728@threadSafety("system")
5729cmd VkResult vkResetEvent(
5730 VkDevice device,
5731 VkEvent event) {
5732 deviceObject := GetDevice(device)
5733 eventObject := GetEvent(event)
5734 assert(eventObject.device == device)
5735
5736 return ?
5737}
5738
5739
5740// Query functions
5741
5742@threadSafety("system")
5743cmd VkResult vkCreateQueryPool(
5744 VkDevice device,
5745 const VkQueryPoolCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005746 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005747 VkQueryPool* pQueryPool) {
5748 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO)
5749 deviceObject := GetDevice(device)
5750
5751 queryPool := ?
5752 pQueryPool[0] = queryPool
5753 State.QueryPools[queryPool] = new!QueryPoolObject(device: device)
5754
5755 return ?
5756}
5757
5758@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005759cmd void vkDestroyQueryPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005760 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005761 VkQueryPool queryPool,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005762 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005763 deviceObject := GetDevice(device)
5764 queryPoolObject := GetQueryPool(queryPool)
5765 assert(queryPoolObject.device == device)
5766
5767 State.QueryPools[queryPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005768}
5769
5770@threadSafety("system")
5771cmd VkResult vkGetQueryPoolResults(
5772 VkDevice device,
5773 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08005774 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005775 u32 queryCount,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005776 platform.size_t dataSize,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005777 void* pData,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005778 VkDeviceSize stride,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005779 VkQueryResultFlags flags) {
5780 deviceObject := GetDevice(device)
5781 queryPoolObject := GetQueryPool(queryPool)
5782 assert(queryPoolObject.device == device)
5783
Jesse Halld27f6aa2015-08-15 17:58:48 -07005784 data := pData[0:dataSize]
5785
5786 return ?
5787}
5788
5789// Buffer functions
5790
5791@threadSafety("system")
5792cmd VkResult vkCreateBuffer(
5793 VkDevice device,
5794 const VkBufferCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005795 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005796 VkBuffer* pBuffer) {
5797 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO)
5798 deviceObject := GetDevice(device)
5799
5800 buffer := ?
5801 pBuffer[0] = buffer
5802 State.Buffers[buffer] = new!BufferObject(device: device)
5803
5804 return ?
5805}
5806
5807@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005808cmd void vkDestroyBuffer(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005809 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005810 VkBuffer buffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005811 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005812 deviceObject := GetDevice(device)
5813 bufferObject := GetBuffer(buffer)
5814 assert(bufferObject.device == device)
5815
Jesse Hall3fbc8562015-11-29 22:10:52 -08005816 assert(bufferObject.memory == 0)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005817 State.Buffers[buffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005818}
5819
5820
5821// Buffer view functions
5822
5823@threadSafety("system")
5824cmd VkResult vkCreateBufferView(
5825 VkDevice device,
5826 const VkBufferViewCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005827 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005828 VkBufferView* pView) {
5829 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO)
5830 deviceObject := GetDevice(device)
5831
5832 bufferObject := GetBuffer(pCreateInfo.buffer)
5833 assert(bufferObject.device == device)
5834
5835 view := ?
5836 pView[0] = view
5837 State.BufferViews[view] = new!BufferViewObject(device: device, buffer: pCreateInfo.buffer)
5838
5839 return ?
5840}
5841
5842@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005843cmd void vkDestroyBufferView(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005844 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005845 VkBufferView bufferView,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005846 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005847 deviceObject := GetDevice(device)
5848 bufferViewObject := GetBufferView(bufferView)
5849 assert(bufferViewObject.device == device)
5850
5851 State.BufferViews[bufferView] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005852}
5853
5854
5855// Image functions
5856
5857@threadSafety("system")
5858cmd VkResult vkCreateImage(
5859 VkDevice device,
5860 const VkImageCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005861 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005862 VkImage* pImage) {
5863 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO)
5864 deviceObject := GetDevice(device)
5865
5866 image := ?
5867 pImage[0] = image
5868 State.Images[image] = new!ImageObject(device: device)
5869
5870 return ?
5871}
5872
5873@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005874cmd void vkDestroyImage(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005875 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005876 VkImage image,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005877 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005878 deviceObject := GetDevice(device)
5879 imageObject := GetImage(image)
5880 assert(imageObject.device == device)
5881
Jesse Hall3fbc8562015-11-29 22:10:52 -08005882 assert(imageObject.memory == 0)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005883 State.Images[image] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005884}
5885
Jesse Hall606a54e2015-11-19 22:17:28 -08005886cmd void vkGetImageSubresourceLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005887 VkDevice device,
5888 VkImage image,
5889 const VkImageSubresource* pSubresource,
5890 VkSubresourceLayout* pLayout) {
5891 deviceObject := GetDevice(device)
5892 imageObject := GetImage(image)
5893 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005894}
5895
5896
5897// Image view functions
5898
5899@threadSafety("system")
5900cmd VkResult vkCreateImageView(
5901 VkDevice device,
5902 const VkImageViewCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005903 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005904 VkImageView* pView) {
5905 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO)
5906 deviceObject := GetDevice(device)
5907
5908 imageObject := GetImage(pCreateInfo.image)
5909 assert(imageObject.device == device)
5910
5911 view := ?
5912 pView[0] = view
5913 State.ImageViews[view] = new!ImageViewObject(device: device, image: pCreateInfo.image)
5914
5915 return ?
5916}
5917
5918@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005919cmd void vkDestroyImageView(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005920 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005921 VkImageView imageView,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005922 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005923 deviceObject := GetDevice(device)
5924 imageViewObject := GetImageView(imageView)
5925 assert(imageViewObject.device == device)
5926
5927 State.ImageViews[imageView] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005928}
5929
5930
5931// Shader functions
5932
5933cmd VkResult vkCreateShaderModule(
5934 VkDevice device,
5935 const VkShaderModuleCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005936 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005937 VkShaderModule* pShaderModule) {
5938 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO)
5939 deviceObject := GetDevice(device)
5940
5941 shaderModule := ?
5942 pShaderModule[0] = shaderModule
5943 State.ShaderModules[shaderModule] = new!ShaderModuleObject(device: device)
5944
5945 return ?
5946}
5947
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005948cmd void vkDestroyShaderModule(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005949 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005950 VkShaderModule shaderModule,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005951 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005952 deviceObject := GetDevice(device)
5953 shaderModuleObject := GetShaderModule(shaderModule)
5954 assert(shaderModuleObject.device == device)
5955
5956 State.ShaderModules[shaderModule] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005957}
5958
Jesse Halld27f6aa2015-08-15 17:58:48 -07005959
5960// Pipeline functions
5961
5962cmd VkResult vkCreatePipelineCache(
5963 VkDevice device,
5964 const VkPipelineCacheCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005965 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005966 VkPipelineCache* pPipelineCache) {
5967 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO)
5968 deviceObject := GetDevice(device)
5969
5970 pipelineCache := ?
5971 pPipelineCache[0] = pipelineCache
5972 State.PipelineCaches[pipelineCache] = new!PipelineCacheObject(device: device)
5973
5974 return ?
5975}
5976
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005977cmd void vkDestroyPipelineCache(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005978 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005979 VkPipelineCache pipelineCache,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005980 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005981 deviceObject := GetDevice(device)
5982 pipelineCacheObject := GetPipelineCache(pipelineCache)
5983 assert(pipelineCacheObject.device == device)
5984
5985 State.PipelineCaches[pipelineCache] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005986}
5987
Jesse Halld27f6aa2015-08-15 17:58:48 -07005988cmd VkResult vkGetPipelineCacheData(
5989 VkDevice device,
5990 VkPipelineCache pipelineCache,
Jesse Halla9bb62b2015-11-21 19:31:56 -08005991 platform.size_t* pDataSize,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005992 void* pData) {
5993 deviceObject := GetDevice(device)
5994 pipelineCacheObject := GetPipelineCache(pipelineCache)
5995 assert(pipelineCacheObject.device == device)
5996
5997 return ?
5998}
5999
6000cmd VkResult vkMergePipelineCaches(
6001 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006002 VkPipelineCache dstCache,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006003 u32 srcCacheCount,
6004 const VkPipelineCache* pSrcCaches) {
6005 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006006 dstCacheObject := GetPipelineCache(dstCache)
6007 assert(dstCacheObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006008
6009 srcCaches := pSrcCaches[0:srcCacheCount]
6010 for i in (0 .. srcCacheCount) {
6011 srcCache := srcCaches[i]
6012 srcCacheObject := GetPipelineCache(srcCache)
6013 assert(srcCacheObject.device == device)
6014 }
6015
6016 return ?
6017}
6018
6019cmd VkResult vkCreateGraphicsPipelines(
6020 VkDevice device,
6021 VkPipelineCache pipelineCache,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006022 u32 createInfoCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006023 const VkGraphicsPipelineCreateInfo* pCreateInfos,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006024 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006025 VkPipeline* pPipelines) {
6026 deviceObject := GetDevice(device)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006027 if pipelineCache != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006028 pipelineCacheObject := GetPipelineCache(pipelineCache)
6029 assert(pipelineCacheObject.device == device)
6030 }
6031
Jesse Hall03b6fe12015-11-24 12:44:21 -08006032 createInfos := pCreateInfos[0:createInfoCount]
6033 pipelines := pPipelines[0:createInfoCount]
6034 for i in (0 .. createInfoCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006035 pipeline := ?
6036 pipelines[i] = pipeline
6037 State.Pipelines[pipeline] = new!PipelineObject(device: device)
6038 }
6039
6040 return ?
6041}
6042
6043cmd VkResult vkCreateComputePipelines(
6044 VkDevice device,
6045 VkPipelineCache pipelineCache,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006046 u32 createInfoCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006047 const VkComputePipelineCreateInfo* pCreateInfos,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006048 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006049 VkPipeline* pPipelines) {
6050 deviceObject := GetDevice(device)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006051 if pipelineCache != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006052 pipelineCacheObject := GetPipelineCache(pipelineCache)
6053 assert(pipelineCacheObject.device == device)
6054 }
6055
Jesse Hall03b6fe12015-11-24 12:44:21 -08006056 createInfos := pCreateInfos[0:createInfoCount]
6057 pipelines := pPipelines[0:createInfoCount]
6058 for i in (0 .. createInfoCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006059 pipeline := ?
6060 pipelines[i] = pipeline
6061 State.Pipelines[pipeline] = new!PipelineObject(device: device)
6062 }
6063
6064 return ?
6065}
6066
6067@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006068cmd void vkDestroyPipeline(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006069 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006070 VkPipeline pipeline,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006071 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006072 deviceObject := GetDevice(device)
6073 pipelineObjects := GetPipeline(pipeline)
6074 assert(pipelineObjects.device == device)
6075
6076 State.Pipelines[pipeline] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006077}
6078
6079
6080// Pipeline layout functions
6081
6082@threadSafety("system")
6083cmd VkResult vkCreatePipelineLayout(
6084 VkDevice device,
6085 const VkPipelineLayoutCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006086 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006087 VkPipelineLayout* pPipelineLayout) {
6088 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO)
6089 deviceObject := GetDevice(device)
6090
6091 pipelineLayout := ?
6092 pPipelineLayout[0] = pipelineLayout
6093 State.PipelineLayouts[pipelineLayout] = new!PipelineLayoutObject(device: device)
6094
6095 return ?
6096}
6097
6098@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006099cmd void vkDestroyPipelineLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006100 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006101 VkPipelineLayout pipelineLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006102 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006103 deviceObject := GetDevice(device)
6104 pipelineLayoutObjects := GetPipelineLayout(pipelineLayout)
6105 assert(pipelineLayoutObjects.device == device)
6106
6107 State.PipelineLayouts[pipelineLayout] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006108}
6109
6110
6111// Sampler functions
6112
6113@threadSafety("system")
6114cmd VkResult vkCreateSampler(
6115 VkDevice device,
6116 const VkSamplerCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006117 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006118 VkSampler* pSampler) {
6119 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO)
6120 deviceObject := GetDevice(device)
6121
6122 sampler := ?
6123 pSampler[0] = sampler
6124 State.Samplers[sampler] = new!SamplerObject(device: device)
6125
6126 return ?
6127}
6128
6129@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006130cmd void vkDestroySampler(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006131 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006132 VkSampler sampler,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006133 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006134 deviceObject := GetDevice(device)
6135 samplerObject := GetSampler(sampler)
6136 assert(samplerObject.device == device)
6137
6138 State.Samplers[sampler] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006139}
6140
6141
6142// Descriptor set functions
6143
6144@threadSafety("system")
6145cmd VkResult vkCreateDescriptorSetLayout(
6146 VkDevice device,
6147 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006148 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006149 VkDescriptorSetLayout* pSetLayout) {
6150 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO)
6151 deviceObject := GetDevice(device)
6152
6153 setLayout := ?
6154 pSetLayout[0] = setLayout
6155 State.DescriptorSetLayouts[setLayout] = new!DescriptorSetLayoutObject(device: device)
6156
6157 return ?
6158}
6159
6160@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006161cmd void vkDestroyDescriptorSetLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006162 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006163 VkDescriptorSetLayout descriptorSetLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006164 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006165 deviceObject := GetDevice(device)
6166 descriptorSetLayoutObject := GetDescriptorSetLayout(descriptorSetLayout)
6167 assert(descriptorSetLayoutObject.device == device)
6168
6169 State.DescriptorSetLayouts[descriptorSetLayout] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006170}
6171
6172@threadSafety("system")
6173cmd VkResult vkCreateDescriptorPool(
6174 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006175 const VkDescriptorPoolCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006176 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006177 VkDescriptorPool* pDescriptorPool) {
6178 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO)
6179 deviceObject := GetDevice(device)
6180
6181 descriptorPool := ?
6182 pDescriptorPool[0] = descriptorPool
6183 State.DescriptorPools[descriptorPool] = new!DescriptorPoolObject(device: device)
6184
6185 return ?
6186}
6187
6188@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006189cmd void vkDestroyDescriptorPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006190 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006191 VkDescriptorPool descriptorPool,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006192 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006193 deviceObject := GetDevice(device)
6194 descriptorPoolObject := GetDescriptorPool(descriptorPool)
6195 assert(descriptorPoolObject.device == device)
6196
6197 State.DescriptorPools[descriptorPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006198}
6199
6200@threadSafety("app")
6201cmd VkResult vkResetDescriptorPool(
6202 VkDevice device,
Jesse Hallfbf97b02015-11-20 14:17:03 -08006203 VkDescriptorPool descriptorPool,
6204 VkDescriptorPoolResetFlags flags) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006205 deviceObject := GetDevice(device)
6206 descriptorPoolObject := GetDescriptorPool(descriptorPool)
6207 assert(descriptorPoolObject.device == device)
6208
6209 return ?
6210}
6211
6212@threadSafety("app")
Jesse Hall3fbc8562015-11-29 22:10:52 -08006213cmd VkResult vkAllocateDescriptorSets(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006214 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006215 const VkDescriptorSetAllocateInfo* pAllocateInfo,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006216 VkDescriptorSet* pDescriptorSets) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006217 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006218 allocInfo := pAllocateInfo[0]
Jesse Hallfbf97b02015-11-20 14:17:03 -08006219 descriptorPoolObject := GetDescriptorPool(allocInfo.descriptorPool)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006220
Jesse Hall03b6fe12015-11-24 12:44:21 -08006221 setLayouts := allocInfo.pSetLayouts[0:allocInfo.setCount]
6222 for i in (0 .. allocInfo.setCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006223 setLayout := setLayouts[i]
6224 setLayoutObject := GetDescriptorSetLayout(setLayout)
6225 assert(setLayoutObject.device == device)
6226 }
6227
Jesse Hall03b6fe12015-11-24 12:44:21 -08006228 descriptorSets := pDescriptorSets[0:allocInfo.setCount]
6229 for i in (0 .. allocInfo.setCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006230 descriptorSet := ?
6231 descriptorSets[i] = descriptorSet
6232 State.DescriptorSets[descriptorSet] = new!DescriptorSetObject(device: device)
6233 }
6234
6235 return ?
6236}
6237
Jesse Hallf09c6b12015-08-15 19:54:28 -07006238cmd VkResult vkFreeDescriptorSets(
6239 VkDevice device,
6240 VkDescriptorPool descriptorPool,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006241 u32 descriptorSetCount,
Jesse Hallf09c6b12015-08-15 19:54:28 -07006242 const VkDescriptorSet* pDescriptorSets) {
6243 deviceObject := GetDevice(device)
6244 descriptorPoolObject := GetDescriptorPool(descriptorPool)
6245
Jesse Hall03b6fe12015-11-24 12:44:21 -08006246 descriptorSets := pDescriptorSets[0:descriptorSetCount]
6247 for i in (0 .. descriptorSetCount) {
Jesse Hallf09c6b12015-08-15 19:54:28 -07006248 descriptorSet := descriptorSets[i]
6249 descriptorSetObject := GetDescriptorSet(descriptorSet)
6250 assert(descriptorSetObject.device == device)
6251 State.DescriptorSets[descriptorSet] = null
6252 }
6253
6254 return ?
6255}
6256
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006257cmd void vkUpdateDescriptorSets(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006258 VkDevice device,
Jesse Hallb00daad2015-11-29 19:46:20 -08006259 u32 descriptorWriteCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006260 const VkWriteDescriptorSet* pDescriptorWrites,
Jesse Hallb00daad2015-11-29 19:46:20 -08006261 u32 descriptorCopyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006262 const VkCopyDescriptorSet* pDescriptorCopies) {
6263 deviceObject := GetDevice(device)
6264
Jesse Hallb00daad2015-11-29 19:46:20 -08006265 descriptorWrites := pDescriptorWrites[0:descriptorWriteCount]
6266 for i in (0 .. descriptorWriteCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006267 descriptorWrite := descriptorWrites[i]
Jesse Hall3fbc8562015-11-29 22:10:52 -08006268 descriptorWriteObject := GetDescriptorSet(descriptorWrite.dstSet)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006269 assert(descriptorWriteObject.device == device)
6270 }
6271
Jesse Hallb00daad2015-11-29 19:46:20 -08006272 descriptorCopies := pDescriptorCopies[0:descriptorCopyCount]
6273 for i in (0 .. descriptorCopyCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006274 descriptorCopy := descriptorCopies[i]
Jesse Hall3fbc8562015-11-29 22:10:52 -08006275 descriptorCopyObject := GetDescriptorSet(descriptorCopy.dstSet)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006276 assert(descriptorCopyObject.device == device)
6277 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07006278}
6279
6280
6281// Framebuffer functions
6282
6283@threadSafety("system")
6284cmd VkResult vkCreateFramebuffer(
6285 VkDevice device,
6286 const VkFramebufferCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006287 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006288 VkFramebuffer* pFramebuffer) {
6289 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO)
6290 deviceObject := GetDevice(device)
6291
6292 framebuffer := ?
6293 pFramebuffer[0] = framebuffer
6294 State.Framebuffers[framebuffer] = new!FramebufferObject(device: device)
6295
6296 return ?
6297}
6298
6299@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006300cmd void vkDestroyFramebuffer(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006301 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006302 VkFramebuffer framebuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006303 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006304 deviceObject := GetDevice(device)
6305 framebufferObject := GetFramebuffer(framebuffer)
6306 assert(framebufferObject.device == device)
6307
6308 State.Framebuffers[framebuffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006309}
6310
6311
6312// Renderpass functions
6313
6314@threadSafety("system")
6315cmd VkResult vkCreateRenderPass(
6316 VkDevice device,
6317 const VkRenderPassCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006318 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006319 VkRenderPass* pRenderPass) {
6320 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO)
6321 deviceObject := GetDevice(device)
6322
6323 renderpass := ?
6324 pRenderPass[0] = renderpass
6325 State.RenderPasses[renderpass] = new!RenderPassObject(device: device)
6326
6327 return ?
6328}
6329
6330@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006331cmd void vkDestroyRenderPass(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006332 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006333 VkRenderPass renderPass,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006334 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006335 deviceObject := GetDevice(device)
6336 renderPassObject := GetRenderPass(renderPass)
6337 assert(renderPassObject.device == device)
6338
6339 State.RenderPasses[renderPass] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006340}
6341
Jesse Hall606a54e2015-11-19 22:17:28 -08006342cmd void vkGetRenderAreaGranularity(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006343 VkDevice device,
6344 VkRenderPass renderPass,
6345 VkExtent2D* pGranularity) {
6346 deviceObject := GetDevice(device)
6347 renderPassObject := GetRenderPass(renderPass)
6348
6349 granularity := ?
6350 pGranularity[0] = granularity
Jesse Halld27f6aa2015-08-15 17:58:48 -07006351}
6352
6353// Command pool functions
6354
6355cmd VkResult vkCreateCommandPool(
6356 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006357 const VkCommandPoolCreateInfo* pCreateInfo,
6358 const VkAllocationCallbacks* pAllocator,
6359 VkCommandPool* pCommandPool) {
6360 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006361 deviceObject := GetDevice(device)
6362
Jesse Hall3fbc8562015-11-29 22:10:52 -08006363 commandPool := ?
6364 pCommandPool[0] = commandPool
6365 State.CommandPools[commandPool] = new!CommandPoolObject(device: device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006366
6367 return ?
6368}
6369
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006370cmd void vkDestroyCommandPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006371 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006372 VkCommandPool commandPool,
6373 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006374 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006375 commandPoolObject := GetCommandPool(commandPool)
6376 assert(commandPoolObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006377
Jesse Hall3fbc8562015-11-29 22:10:52 -08006378 State.CommandPools[commandPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006379}
6380
6381cmd VkResult vkResetCommandPool(
6382 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006383 VkCommandPool commandPool,
6384 VkCommandPoolResetFlags flags) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006385 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006386 commandPoolObject := GetCommandPool(commandPool)
6387 assert(commandPoolObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006388
6389 return ?
6390}
6391
6392// Command buffer functions
6393
Jesse Hall3fbc8562015-11-29 22:10:52 -08006394macro void bindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) {
6395 memoryObject := GetDeviceMemory(memory)
6396 memoryObject.boundCommandBuffers[commandBuffer] = commandBuffer
Jesse Halld27f6aa2015-08-15 17:58:48 -07006397
Jesse Hall3fbc8562015-11-29 22:10:52 -08006398 commandBufferObject := GetCommandBuffer(commandBuffer)
6399 commandBufferObject.boundObjects[as!u64(obj)] = memory
Jesse Halld27f6aa2015-08-15 17:58:48 -07006400}
6401
Jesse Hall3fbc8562015-11-29 22:10:52 -08006402macro void unbindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) {
6403 memoryObject := GetDeviceMemory(memory)
6404 memoryObject.boundCommandBuffers[commandBuffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006405
Jesse Hall3fbc8562015-11-29 22:10:52 -08006406 commandBufferObject := GetCommandBuffer(commandBuffer)
6407 commandBufferObject.boundObjects[as!u64(obj)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006408}
6409
6410@threadSafety("system")
Jesse Hall3fbc8562015-11-29 22:10:52 -08006411cmd VkResult vkAllocateCommandBuffers(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006412 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006413 const VkCommandBufferAllocateInfo* pAllocateInfo,
6414 VkCommandBuffer* pCommandBuffers) {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08006415 assert(pAllocateInfo[0].sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006416
Jesse Hall3dd678a2016-01-08 21:52:01 -08006417 count := pAllocateInfo[0].commandBufferCount
Jesse Hall3fbc8562015-11-29 22:10:52 -08006418 commandBuffers := pCommandBuffers[0:count]
Jesse Hallfbf97b02015-11-20 14:17:03 -08006419 for i in (0 .. count) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006420 commandBuffer := ?
6421 commandBuffers[i] = commandBuffer
6422 State.CommandBuffers[commandBuffer] = new!CommandBufferObject(device: device)
Jesse Hallfbf97b02015-11-20 14:17:03 -08006423 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07006424
6425 return ?
6426}
6427
6428@threadSafety("system")
Jesse Hallfbf97b02015-11-20 14:17:03 -08006429cmd void vkFreeCommandBuffers(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006430 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006431 VkCommandPool commandPool,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006432 u32 commandBufferCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006433 const VkCommandBuffer* pCommandBuffers) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006434 deviceObject := GetDevice(device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006435
Jesse Hall3fbc8562015-11-29 22:10:52 -08006436 commandBuffers := pCommandBuffers[0:commandBufferCount]
Jesse Hall03b6fe12015-11-24 12:44:21 -08006437 for i in (0 .. commandBufferCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006438 commandBufferObject := GetCommandBuffer(commandBuffers[i])
6439 assert(commandBufferObject.device == device)
Jesse Hallfbf97b02015-11-20 14:17:03 -08006440 // TODO: iterate over boundObjects and clear memory bindings
Jesse Hall3fbc8562015-11-29 22:10:52 -08006441 State.CommandBuffers[commandBuffers[i]] = null
Jesse Hallfbf97b02015-11-20 14:17:03 -08006442 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07006443}
6444
6445@threadSafety("app")
6446cmd VkResult vkBeginCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006447 VkCommandBuffer commandBuffer,
6448 const VkCommandBufferBeginInfo* pBeginInfo) {
6449 assert(pBeginInfo.sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO)
6450 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006451
6452 // TODO: iterate over boundObjects and clear memory bindings
6453
6454 return ?
6455}
6456
6457@threadSafety("app")
6458cmd VkResult vkEndCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006459 VkCommandBuffer commandBuffer) {
6460 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006461
6462 return ?
6463}
6464
6465@threadSafety("app")
6466cmd VkResult vkResetCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006467 VkCommandBuffer commandBuffer,
6468 VkCommandBufferResetFlags flags) {
6469 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006470
6471 // TODO: iterate over boundObjects and clear memory bindings
6472
6473 return ?
6474}
6475
6476
6477// Command buffer building functions
6478
6479@threadSafety("app")
6480cmd void vkCmdBindPipeline(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006481 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006482 VkPipelineBindPoint pipelineBindPoint,
6483 VkPipeline pipeline) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006484 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006485 pipelineObject := GetPipeline(pipeline)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006486 assert(commandBufferObject.device == pipelineObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006487
Jesse Halld8bade02015-11-24 10:24:18 -08006488 queue := switch (pipelineBindPoint) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006489 case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT
6490 case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT
6491 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08006492 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006493}
6494
6495@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006496cmd void vkCmdSetViewport(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006497 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006498 u32 firstViewport,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006499 u32 viewportCount,
6500 const VkViewport* pViewports) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006501 commandBufferObject := GetCommandBuffer(commandBuffer)
6502 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006503}
6504
6505@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006506cmd void vkCmdSetScissor(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006507 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006508 u32 firstScissor,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006509 u32 scissorCount,
6510 const VkRect2D* pScissors) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006511 commandBufferObject := GetCommandBuffer(commandBuffer)
6512 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006513}
6514
6515@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006516cmd void vkCmdSetLineWidth(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006517 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006518 f32 lineWidth) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006519 commandBufferObject := GetCommandBuffer(commandBuffer)
6520 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006521}
6522
6523@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006524cmd void vkCmdSetDepthBias(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006525 VkCommandBuffer commandBuffer,
Jesse Halla9bb62b2015-11-21 19:31:56 -08006526 f32 depthBiasConstantFactor,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006527 f32 depthBiasClamp,
Jesse Halla9bb62b2015-11-21 19:31:56 -08006528 f32 depthBiasSlopeFactor) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006529 commandBufferObject := GetCommandBuffer(commandBuffer)
6530 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006531}
Jesse Halld27f6aa2015-08-15 17:58:48 -07006532
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006533@threadSafety("app")
6534cmd void vkCmdSetBlendConstants(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006535 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006536 // TODO(jessehall): apic only supports 'const' on pointer types. Using
6537 // an annotation as a quick hack to pass this to the template without
6538 // having to modify the AST and semantic model.
Jesse Hallb00daad2015-11-29 19:46:20 -08006539 @readonly f32[4] blendConstants) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006540 commandBufferObject := GetCommandBuffer(commandBuffer)
6541 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006542}
6543
6544@threadSafety("app")
6545cmd void vkCmdSetDepthBounds(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006546 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006547 f32 minDepthBounds,
6548 f32 maxDepthBounds) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006549 commandBufferObject := GetCommandBuffer(commandBuffer)
6550 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006551}
6552
6553@threadSafety("app")
6554cmd void vkCmdSetStencilCompareMask(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006555 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006556 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08006557 u32 compareMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006558 commandBufferObject := GetCommandBuffer(commandBuffer)
6559 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006560}
6561
6562@threadSafety("app")
6563cmd void vkCmdSetStencilWriteMask(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006564 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006565 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08006566 u32 writeMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006567 commandBufferObject := GetCommandBuffer(commandBuffer)
6568 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006569}
6570
6571@threadSafety("app")
6572cmd void vkCmdSetStencilReference(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006573 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006574 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08006575 u32 reference) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006576 commandBufferObject := GetCommandBuffer(commandBuffer)
6577 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006578}
6579
6580@threadSafety("app")
6581cmd void vkCmdBindDescriptorSets(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006582 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006583 VkPipelineBindPoint pipelineBindPoint,
6584 VkPipelineLayout layout,
6585 u32 firstSet,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006586 u32 descriptorSetCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006587 const VkDescriptorSet* pDescriptorSets,
6588 u32 dynamicOffsetCount,
6589 const u32* pDynamicOffsets) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006590 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006591
Jesse Hall03b6fe12015-11-24 12:44:21 -08006592 descriptorSets := pDescriptorSets[0:descriptorSetCount]
6593 for i in (0 .. descriptorSetCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006594 descriptorSet := descriptorSets[i]
6595 descriptorSetObject := GetDescriptorSet(descriptorSet)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006596 assert(commandBufferObject.device == descriptorSetObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006597 }
6598
6599 dynamicOffsets := pDynamicOffsets[0:dynamicOffsetCount]
6600 for i in (0 .. dynamicOffsetCount) {
6601 dynamicOffset := dynamicOffsets[i]
6602 }
6603
Jesse Halld8bade02015-11-24 10:24:18 -08006604 queue := switch (pipelineBindPoint) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006605 case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT
6606 case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT
6607 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08006608 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006609}
6610
6611@threadSafety("app")
6612cmd void vkCmdBindIndexBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006613 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006614 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006615 VkDeviceSize offset,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006616 VkIndexType indexType) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006617 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006618 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006619 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006620
Jesse Hall3fbc8562015-11-29 22:10:52 -08006621 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006622
Jesse Hall3fbc8562015-11-29 22:10:52 -08006623 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006624}
6625
6626@threadSafety("app")
6627cmd void vkCmdBindVertexBuffers(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006628 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006629 u32 firstBinding,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006630 u32 bindingCount,
6631 const VkBuffer* pBuffers,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006632 const VkDeviceSize* pOffsets) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006633 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006634
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006635 // TODO: check if not [firstBinding:firstBinding+bindingCount]
Jesse Halld27f6aa2015-08-15 17:58:48 -07006636 buffers := pBuffers[0:bindingCount]
6637 offsets := pOffsets[0:bindingCount]
6638 for i in (0 .. bindingCount) {
6639 buffer := buffers[i]
6640 offset := offsets[i]
6641 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006642 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006643
Jesse Hall3fbc8562015-11-29 22:10:52 -08006644 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006645 }
6646
Jesse Hall3fbc8562015-11-29 22:10:52 -08006647 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006648}
6649
6650@threadSafety("app")
6651cmd void vkCmdDraw(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006652 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006653 u32 vertexCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006654 u32 instanceCount,
6655 u32 firstVertex,
6656 u32 firstInstance) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006657 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006658
Jesse Hall3fbc8562015-11-29 22:10:52 -08006659 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006660}
6661
6662@threadSafety("app")
6663cmd void vkCmdDrawIndexed(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006664 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006665 u32 indexCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006666 u32 instanceCount,
6667 u32 firstIndex,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006668 s32 vertexOffset,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006669 u32 firstInstance) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006670 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006671
Jesse Hall3fbc8562015-11-29 22:10:52 -08006672 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006673}
6674
6675@threadSafety("app")
6676cmd void vkCmdDrawIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006677 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006678 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006679 VkDeviceSize offset,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006680 u32 drawCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006681 u32 stride) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006682 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006683 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006684 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006685
Jesse Hall3fbc8562015-11-29 22:10:52 -08006686 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006687
Jesse Hall3fbc8562015-11-29 22:10:52 -08006688 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006689}
6690
6691@threadSafety("app")
6692cmd void vkCmdDrawIndexedIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006693 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006694 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006695 VkDeviceSize offset,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006696 u32 drawCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006697 u32 stride) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006698 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006699 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006700 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006701
Jesse Hall3fbc8562015-11-29 22:10:52 -08006702 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006703
Jesse Hall3fbc8562015-11-29 22:10:52 -08006704 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006705}
6706
6707@threadSafety("app")
6708cmd void vkCmdDispatch(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006709 VkCommandBuffer commandBuffer,
Jesse Hallad250842017-03-10 18:35:38 -08006710 u32 groupCountX,
6711 u32 groupCountY,
6712 u32 groupCountZ) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006713 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006714
Jesse Hall3fbc8562015-11-29 22:10:52 -08006715 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006716}
6717
6718@threadSafety("app")
6719cmd void vkCmdDispatchIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006720 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006721 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006722 VkDeviceSize offset) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006723 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006724 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006725 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006726
Jesse Hall3fbc8562015-11-29 22:10:52 -08006727 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006728
Jesse Hall3fbc8562015-11-29 22:10:52 -08006729 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006730}
6731
6732@threadSafety("app")
6733cmd void vkCmdCopyBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006734 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006735 VkBuffer srcBuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006736 VkBuffer dstBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006737 u32 regionCount,
6738 const VkBufferCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006739 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006740 srcBufferObject := GetBuffer(srcBuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006741 dstBufferObject := GetBuffer(dstBuffer)
6742 assert(commandBufferObject.device == srcBufferObject.device)
6743 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006744
6745 regions := pRegions[0:regionCount]
6746 for i in (0 .. regionCount) {
6747 region := regions[i]
6748 }
6749
Jesse Hall3fbc8562015-11-29 22:10:52 -08006750 bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory)
6751 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006752
Jesse Hall65ab5522015-11-30 00:07:16 -08006753 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006754}
6755
6756@threadSafety("app")
6757cmd void vkCmdCopyImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006758 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006759 VkImage srcImage,
6760 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006761 VkImage dstImage,
6762 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006763 u32 regionCount,
6764 const VkImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006765 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006766 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006767 dstImageObject := GetImage(dstImage)
6768 assert(commandBufferObject.device == srcImageObject.device)
6769 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006770
6771 regions := pRegions[0:regionCount]
6772 for i in (0 .. regionCount) {
6773 region := regions[i]
6774 }
6775
Jesse Hall3fbc8562015-11-29 22:10:52 -08006776 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6777 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006778
Jesse Hall65ab5522015-11-30 00:07:16 -08006779 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006780}
6781
6782@threadSafety("app")
6783cmd void vkCmdBlitImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006784 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006785 VkImage srcImage,
6786 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006787 VkImage dstImage,
6788 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006789 u32 regionCount,
6790 const VkImageBlit* pRegions,
Jesse Hall23ff73f2015-11-29 14:36:39 -08006791 VkFilter filter) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006792 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006793 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006794 dstImageObject := GetImage(dstImage)
6795 assert(commandBufferObject.device == srcImageObject.device)
6796 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006797
6798 regions := pRegions[0:regionCount]
6799 for i in (0 .. regionCount) {
6800 region := regions[i]
6801 }
6802
Jesse Hall3fbc8562015-11-29 22:10:52 -08006803 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6804 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006805
Jesse Hall3fbc8562015-11-29 22:10:52 -08006806 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006807}
6808
6809@threadSafety("app")
6810cmd void vkCmdCopyBufferToImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006811 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006812 VkBuffer srcBuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006813 VkImage dstImage,
6814 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006815 u32 regionCount,
6816 const VkBufferImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006817 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006818 srcBufferObject := GetBuffer(srcBuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006819 dstImageObject := GetImage(dstImage)
6820 assert(commandBufferObject.device == srcBufferObject.device)
6821 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006822
6823 regions := pRegions[0:regionCount]
6824 for i in (0 .. regionCount) {
6825 region := regions[i]
6826 }
6827
Jesse Hall3fbc8562015-11-29 22:10:52 -08006828 bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory)
6829 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006830
Jesse Hall65ab5522015-11-30 00:07:16 -08006831 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006832}
6833
6834@threadSafety("app")
6835cmd void vkCmdCopyImageToBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006836 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006837 VkImage srcImage,
6838 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006839 VkBuffer dstBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006840 u32 regionCount,
6841 const VkBufferImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006842 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006843 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006844 dstBufferObject := GetBuffer(dstBuffer)
6845 assert(commandBufferObject.device == srcImageObject.device)
6846 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006847
6848 regions := pRegions[0:regionCount]
6849 for i in (0 .. regionCount) {
6850 region := regions[i]
6851 }
6852
Jesse Hall3fbc8562015-11-29 22:10:52 -08006853 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6854 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006855
Jesse Hall65ab5522015-11-30 00:07:16 -08006856 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006857}
6858
6859@threadSafety("app")
6860cmd void vkCmdUpdateBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006861 VkCommandBuffer commandBuffer,
6862 VkBuffer dstBuffer,
6863 VkDeviceSize dstOffset,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006864 VkDeviceSize dataSize,
Jesse Hall56d386a2016-07-26 15:20:40 -07006865 const void* pData) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006866 commandBufferObject := GetCommandBuffer(commandBuffer)
6867 dstBufferObject := GetBuffer(dstBuffer)
6868 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006869
6870 data := pData[0:dataSize]
6871
Jesse Hall3fbc8562015-11-29 22:10:52 -08006872 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006873
Jesse Hall65ab5522015-11-30 00:07:16 -08006874 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006875}
6876
6877@threadSafety("app")
6878cmd void vkCmdFillBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006879 VkCommandBuffer commandBuffer,
6880 VkBuffer dstBuffer,
6881 VkDeviceSize dstOffset,
Jesse Hallb00daad2015-11-29 19:46:20 -08006882 VkDeviceSize size,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006883 u32 data) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006884 commandBufferObject := GetCommandBuffer(commandBuffer)
6885 dstBufferObject := GetBuffer(dstBuffer)
6886 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006887
Jesse Hall65ab5522015-11-30 00:07:16 -08006888 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006889}
6890
6891@threadSafety("app")
6892cmd void vkCmdClearColorImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006893 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006894 VkImage image,
6895 VkImageLayout imageLayout,
6896 const VkClearColorValue* pColor,
6897 u32 rangeCount,
6898 const VkImageSubresourceRange* pRanges) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006899 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006900 imageObject := GetImage(image)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006901 assert(commandBufferObject.device == imageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006902
6903 ranges := pRanges[0:rangeCount]
6904 for i in (0 .. rangeCount) {
6905 range := ranges[i]
6906 }
6907
Jesse Hall3fbc8562015-11-29 22:10:52 -08006908 bindCommandBuffer(commandBuffer, image, imageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006909
Jesse Hall3fbc8562015-11-29 22:10:52 -08006910 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006911}
6912
6913@threadSafety("app")
6914cmd void vkCmdClearDepthStencilImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006915 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006916 VkImage image,
6917 VkImageLayout imageLayout,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006918 const VkClearDepthStencilValue* pDepthStencil,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006919 u32 rangeCount,
6920 const VkImageSubresourceRange* pRanges) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006921 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006922 imageObject := GetImage(image)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006923 assert(commandBufferObject.device == imageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006924
6925 ranges := pRanges[0:rangeCount]
6926 for i in (0 .. rangeCount) {
6927 range := ranges[i]
6928 }
6929
Jesse Hall3fbc8562015-11-29 22:10:52 -08006930 bindCommandBuffer(commandBuffer, image, imageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006931
Jesse Hall3fbc8562015-11-29 22:10:52 -08006932 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006933}
6934
6935@threadSafety("app")
Jesse Hallae38f732015-11-19 21:32:50 -08006936cmd void vkCmdClearAttachments(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006937 VkCommandBuffer commandBuffer,
Jesse Hallae38f732015-11-19 21:32:50 -08006938 u32 attachmentCount,
6939 const VkClearAttachment* pAttachments,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006940 u32 rectCount,
Jesse Halla15a4bf2015-11-19 22:48:02 -08006941 const VkClearRect* pRects) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006942 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006943
6944 rects := pRects[0:rectCount]
6945 for i in (0 .. rectCount) {
6946 rect := rects[i]
6947 }
6948
Jesse Hall3fbc8562015-11-29 22:10:52 -08006949 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006950}
6951
6952@threadSafety("app")
6953cmd void vkCmdResolveImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006954 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006955 VkImage srcImage,
6956 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006957 VkImage dstImage,
6958 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006959 u32 regionCount,
6960 const VkImageResolve* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006961 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006962 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006963 dstImageObject := GetImage(dstImage)
6964 assert(commandBufferObject.device == srcImageObject.device)
6965 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006966
6967 regions := pRegions[0:regionCount]
6968 for i in (0 .. regionCount) {
6969 region := regions[i]
6970 }
6971
Jesse Hall3fbc8562015-11-29 22:10:52 -08006972 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
6973 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006974
Jesse Hall3fbc8562015-11-29 22:10:52 -08006975 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006976}
6977
6978@threadSafety("app")
6979cmd void vkCmdSetEvent(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006980 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006981 VkEvent event,
6982 VkPipelineStageFlags stageMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006983 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006984 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006985 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006986}
6987
6988@threadSafety("app")
6989cmd void vkCmdResetEvent(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006990 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006991 VkEvent event,
6992 VkPipelineStageFlags stageMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006993 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006994 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006995 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006996}
6997
6998@threadSafety("app")
6999cmd void vkCmdWaitEvents(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007000 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007001 u32 eventCount,
7002 const VkEvent* pEvents,
7003 VkPipelineStageFlags srcStageMask,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007004 VkPipelineStageFlags dstStageMask,
7005 u32 memoryBarrierCount,
Jesse Hall3dd678a2016-01-08 21:52:01 -08007006 const VkMemoryBarrier* pMemoryBarriers,
7007 u32 bufferMemoryBarrierCount,
7008 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
7009 u32 imageMemoryBarrierCount,
7010 const VkImageMemoryBarrier* pImageMemoryBarriers) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007011 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007012
7013 events := pEvents[0:eventCount]
7014 for i in (0 .. eventCount) {
7015 event := events[i]
7016 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007017 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007018 }
7019
Jesse Hall3dd678a2016-01-08 21:52:01 -08007020 memoryBarriers := pMemoryBarriers[0:memoryBarrierCount]
Jesse Hall3fbc8562015-11-29 22:10:52 -08007021 for i in (0 .. memoryBarrierCount) {
Jesse Hall3dd678a2016-01-08 21:52:01 -08007022 memoryBarrier := memoryBarriers[i]
7023 }
7024 bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount]
7025 for i in (0 .. bufferMemoryBarrierCount) {
7026 bufferMemoryBarrier := bufferMemoryBarriers[i]
7027 bufferObject := GetBuffer(bufferMemoryBarrier.buffer)
7028 assert(bufferObject.device == commandBufferObject.device)
7029 }
7030 imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount]
7031 for i in (0 .. imageMemoryBarrierCount) {
7032 imageMemoryBarrier := imageMemoryBarriers[i]
7033 imageObject := GetImage(imageMemoryBarrier.image)
7034 assert(imageObject.device == commandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007035 }
7036}
7037
7038@threadSafety("app")
7039cmd void vkCmdPipelineBarrier(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007040 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007041 VkPipelineStageFlags srcStageMask,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007042 VkPipelineStageFlags dstStageMask,
Jesse Halldc6d36c2015-11-29 19:12:15 -08007043 VkDependencyFlags dependencyFlags,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007044 u32 memoryBarrierCount,
Jesse Hall3dd678a2016-01-08 21:52:01 -08007045 const VkMemoryBarrier* pMemoryBarriers,
7046 u32 bufferMemoryBarrierCount,
7047 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
7048 u32 imageMemoryBarrierCount,
7049 const VkImageMemoryBarrier* pImageMemoryBarriers) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007050 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007051
Jesse Hall3dd678a2016-01-08 21:52:01 -08007052 memoryBarriers := pMemoryBarriers[0:memoryBarrierCount]
Jesse Hall3fbc8562015-11-29 22:10:52 -08007053 for i in (0 .. memoryBarrierCount) {
Jesse Hall3dd678a2016-01-08 21:52:01 -08007054 memoryBarrier := memoryBarriers[i]
7055 }
7056 bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount]
7057 for i in (0 .. bufferMemoryBarrierCount) {
7058 bufferMemoryBarrier := bufferMemoryBarriers[i]
7059 bufferObject := GetBuffer(bufferMemoryBarrier.buffer)
7060 assert(bufferObject.device == commandBufferObject.device)
7061 }
7062 imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount]
7063 for i in (0 .. imageMemoryBarrierCount) {
7064 imageMemoryBarrier := imageMemoryBarriers[i]
7065 imageObject := GetImage(imageMemoryBarrier.image)
7066 assert(imageObject.device == commandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007067 }
7068}
7069
7070@threadSafety("app")
7071cmd void vkCmdBeginQuery(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007072 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007073 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08007074 u32 query,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007075 VkQueryControlFlags flags) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007076 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007077 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007078 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007079}
7080
7081@threadSafety("app")
7082cmd void vkCmdEndQuery(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007083 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007084 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08007085 u32 query) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007086 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007087 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007088 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007089}
7090
7091@threadSafety("app")
7092cmd void vkCmdResetQueryPool(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007093 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007094 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007095 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007096 u32 queryCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007097 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007098 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007099 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007100}
7101
7102@threadSafety("app")
7103cmd void vkCmdWriteTimestamp(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007104 VkCommandBuffer commandBuffer,
Jesse Hall6f39a6d2015-11-24 11:08:36 -08007105 VkPipelineStageFlagBits pipelineStage,
Jesse Halla3a7a1d2015-11-24 11:37:23 -08007106 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08007107 u32 query) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007108 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halla3a7a1d2015-11-24 11:37:23 -08007109 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007110 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007111}
7112
7113@threadSafety("app")
7114cmd void vkCmdCopyQueryPoolResults(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007115 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007116 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007117 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007118 u32 queryCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007119 VkBuffer dstBuffer,
7120 VkDeviceSize dstOffset,
Jesse Halla9bb62b2015-11-21 19:31:56 -08007121 VkDeviceSize stride,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007122 VkQueryResultFlags flags) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007123 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007124 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007125 dstBufferObject := GetBuffer(dstBuffer)
7126 assert(commandBufferObject.device == queryPoolObject.device)
7127 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007128}
7129
7130cmd void vkCmdPushConstants(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007131 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007132 VkPipelineLayout layout,
7133 VkShaderStageFlags stageFlags,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007134 u32 offset,
7135 u32 size,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08007136 const void* pValues) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007137 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007138 layoutObject := GetPipelineLayout(layout)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007139 assert(commandBufferObject.device == layoutObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007140}
7141
7142@threadSafety("app")
7143cmd void vkCmdBeginRenderPass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007144 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007145 const VkRenderPassBeginInfo* pRenderPassBegin,
Jesse Hall65ab5522015-11-30 00:07:16 -08007146 VkSubpassContents contents) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007147 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007148 renderPassObject := GetRenderPass(pRenderPassBegin.renderPass)
7149 framebufferObject := GetFramebuffer(pRenderPassBegin.framebuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007150 assert(commandBufferObject.device == renderPassObject.device)
7151 assert(commandBufferObject.device == framebufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007152
Jesse Hall3fbc8562015-11-29 22:10:52 -08007153 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007154}
7155
7156cmd void vkCmdNextSubpass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007157 VkCommandBuffer commandBuffer,
Jesse Hall65ab5522015-11-30 00:07:16 -08007158 VkSubpassContents contents) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007159 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007160}
7161
7162@threadSafety("app")
7163cmd void vkCmdEndRenderPass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007164 VkCommandBuffer commandBuffer) {
7165 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007166
Jesse Hall3fbc8562015-11-29 22:10:52 -08007167 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007168}
7169
7170cmd void vkCmdExecuteCommands(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007171 VkCommandBuffer commandBuffer,
Jesse Hall3dd678a2016-01-08 21:52:01 -08007172 u32 commandBufferCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007173 const VkCommandBuffer* pCommandBuffers) {
7174 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007175
Jesse Hall3dd678a2016-01-08 21:52:01 -08007176 commandBuffers := pCommandBuffers[0:commandBufferCount]
7177 for i in (0 .. commandBufferCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007178 secondaryCommandBuffer := commandBuffers[i]
7179 secondaryCommandBufferObject := GetCommandBuffer(secondaryCommandBuffer)
7180 assert(commandBufferObject.device == secondaryCommandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007181 }
7182}
7183
Jesse Hallad250842017-03-10 18:35:38 -08007184@extension("VK_KHR_surface") // 1
Jesse Hall1356b0d2015-11-23 17:24:58 -08007185cmd void vkDestroySurfaceKHR(
7186 VkInstance instance,
Jesse Hall0e74f002015-11-30 11:37:59 -08007187 VkSurfaceKHR surface,
7188 const VkAllocationCallbacks* pAllocator) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08007189 instanceObject := GetInstance(instance)
7190 surfaceObject := GetSurface(surface)
7191 assert(surfaceObject.instance == instance)
Michael Lentine88594d72015-11-12 12:49:45 -08007192
Jesse Hall1356b0d2015-11-23 17:24:58 -08007193 State.Surfaces[surface] = null
Jesse Hall2818f932015-11-19 21:19:17 -08007194}
7195
Jesse Hallad250842017-03-10 18:35:38 -08007196@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08007197cmd VkResult vkGetPhysicalDeviceSurfaceSupportKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08007198 VkPhysicalDevice physicalDevice,
7199 u32 queueFamilyIndex,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007200 VkSurfaceKHR surface,
Jesse Hallb00daad2015-11-29 19:46:20 -08007201 VkBool32* pSupported) {
7202 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08007203
7204 return ?
7205}
7206
Jesse Hallad250842017-03-10 18:35:38 -08007207@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08007208cmd VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
7209 VkPhysicalDevice physicalDevice,
7210 VkSurfaceKHR surface,
7211 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) {
7212 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7213
7214 surfaceCapabilities := ?
7215 pSurfaceCapabilities[0] = surfaceCapabilities
7216
7217 return ?
7218}
7219
Jesse Hallad250842017-03-10 18:35:38 -08007220@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08007221cmd VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(
7222 VkPhysicalDevice physicalDevice,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007223 VkSurfaceKHR surface,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007224 u32* pSurfaceFormatCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007225 VkSurfaceFormatKHR* pSurfaceFormats) {
Jesse Hallb00daad2015-11-29 19:46:20 -08007226 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08007227
7228 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08007229 pSurfaceFormatCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08007230 surfaceFormats := pSurfaceFormats[0:count]
7231
7232 for i in (0 .. count) {
7233 surfaceFormat := ?
7234 surfaceFormats[i] = surfaceFormat
7235 }
7236
7237 return ?
7238}
7239
Jesse Hallad250842017-03-10 18:35:38 -08007240@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08007241cmd VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(
7242 VkPhysicalDevice physicalDevice,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007243 VkSurfaceKHR surface,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007244 u32* pPresentModeCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007245 VkPresentModeKHR* pPresentModes) {
Jesse Hallb00daad2015-11-29 19:46:20 -08007246 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08007247
7248 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08007249 pPresentModeCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08007250 presentModes := pPresentModes[0:count]
7251
7252 for i in (0 .. count) {
7253 presentMode := ?
7254 presentModes[i] = presentMode
7255 }
7256
7257 return ?
7258}
7259
Jesse Hallad250842017-03-10 18:35:38 -08007260@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08007261cmd VkResult vkCreateSwapchainKHR(
7262 VkDevice device,
7263 const VkSwapchainCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007264 const VkAllocationCallbacks* pAllocator,
Michael Lentine88594d72015-11-12 12:49:45 -08007265 VkSwapchainKHR* pSwapchain) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08007266 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR)
Michael Lentine88594d72015-11-12 12:49:45 -08007267 deviceObject := GetDevice(device)
7268
7269 swapchain := ?
7270 pSwapchain[0] = swapchain
7271 State.Swapchains[swapchain] = new!SwapchainObject(device: device)
7272
7273 return ?
7274}
7275
Jesse Hallad250842017-03-10 18:35:38 -08007276@extension("VK_KHR_swapchain") // 2
Jesse Hall1356b0d2015-11-23 17:24:58 -08007277cmd void vkDestroySwapchainKHR(
Michael Lentine88594d72015-11-12 12:49:45 -08007278 VkDevice device,
Jesse Hall0e74f002015-11-30 11:37:59 -08007279 VkSwapchainKHR swapchain,
7280 const VkAllocationCallbacks* pAllocator) {
Michael Lentine88594d72015-11-12 12:49:45 -08007281 deviceObject := GetDevice(device)
7282 swapchainObject := GetSwapchain(swapchain)
7283 assert(swapchainObject.device == device)
7284
7285 State.Swapchains[swapchain] = null
Michael Lentine88594d72015-11-12 12:49:45 -08007286}
7287
Jesse Hallad250842017-03-10 18:35:38 -08007288@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08007289cmd VkResult vkGetSwapchainImagesKHR(
7290 VkDevice device,
7291 VkSwapchainKHR swapchain,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007292 u32* pSwapchainImageCount,
Michael Lentine88594d72015-11-12 12:49:45 -08007293 VkImage* pSwapchainImages) {
7294 deviceObject := GetDevice(device)
7295
7296 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08007297 pSwapchainImageCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08007298 swapchainImages := pSwapchainImages[0:count]
7299
7300 for i in (0 .. count) {
7301 swapchainImage := ?
7302 swapchainImages[i] = swapchainImage
Jesse Hall1356b0d2015-11-23 17:24:58 -08007303 State.Images[swapchainImage] = new!ImageObject(device: device)
Michael Lentine88594d72015-11-12 12:49:45 -08007304 }
7305
7306 return ?
7307}
7308
Jesse Hallad250842017-03-10 18:35:38 -08007309@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08007310cmd VkResult vkAcquireNextImageKHR(
7311 VkDevice device,
7312 VkSwapchainKHR swapchain,
7313 u64 timeout,
7314 VkSemaphore semaphore,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007315 VkFence fence,
Michael Lentine88594d72015-11-12 12:49:45 -08007316 u32* pImageIndex) {
7317 deviceObject := GetDevice(device)
7318 swapchainObject := GetSwapchain(swapchain)
7319
7320 imageIndex := ?
7321 pImageIndex[0] = imageIndex
7322
7323 return ?
7324}
7325
Jesse Hallad250842017-03-10 18:35:38 -08007326@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08007327cmd VkResult vkQueuePresentKHR(
7328 VkQueue queue,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08007329 const VkPresentInfoKHR* pPresentInfo) {
Michael Lentine88594d72015-11-12 12:49:45 -08007330 queueObject := GetQueue(queue)
7331
7332 presentInfo := ?
7333 pPresentInfo[0] = presentInfo
7334
7335 return ?
7336}
7337
Jesse Hallad250842017-03-10 18:35:38 -08007338@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08007339cmd VkResult vkGetPhysicalDeviceDisplayPropertiesKHR(
7340 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007341 u32* pPropertyCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007342 VkDisplayPropertiesKHR* pProperties) {
7343 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7344 return ?
7345}
7346
Jesse Hallad250842017-03-10 18:35:38 -08007347@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08007348cmd VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
7349 VkPhysicalDevice physicalDevice,
7350 u32* pPropertyCount,
7351 VkDisplayPlanePropertiesKHR* pProperties) {
7352 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7353 return ?
7354}
7355
Jesse Hallad250842017-03-10 18:35:38 -08007356@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08007357cmd VkResult vkGetDisplayPlaneSupportedDisplaysKHR(
7358 VkPhysicalDevice physicalDevice,
Jesse Hall3dd678a2016-01-08 21:52:01 -08007359 u32 planeIndex,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08007360 u32* pDisplayCount,
7361 VkDisplayKHR* pDisplays) {
Jesse Halla6429252015-11-29 18:59:42 -08007362 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7363 return ?
7364}
7365
Jesse Hallad250842017-03-10 18:35:38 -08007366@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08007367cmd VkResult vkGetDisplayModePropertiesKHR(
7368 VkPhysicalDevice physicalDevice,
7369 VkDisplayKHR display,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007370 u32* pPropertyCount,
7371 VkDisplayModePropertiesKHR* pProperties) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08007372 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7373 return ?
7374}
7375
Jesse Hallad250842017-03-10 18:35:38 -08007376@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08007377cmd VkResult vkCreateDisplayModeKHR(
7378 VkPhysicalDevice physicalDevice,
7379 VkDisplayKHR display,
7380 const VkDisplayModeCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007381 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007382 VkDisplayModeKHR* pMode) {
7383 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7384 return ?
7385}
7386
Jesse Hallad250842017-03-10 18:35:38 -08007387@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08007388cmd VkResult vkGetDisplayPlaneCapabilitiesKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08007389 VkPhysicalDevice physicalDevice,
Jesse Hall9ba8bc82015-11-30 16:22:16 -08007390 VkDisplayModeKHR mode,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007391 u32 planeIndex,
Jesse Halla6429252015-11-29 18:59:42 -08007392 VkDisplayPlaneCapabilitiesKHR* pCapabilities) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08007393 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7394 return ?
7395}
7396
Jesse Hallad250842017-03-10 18:35:38 -08007397@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08007398cmd VkResult vkCreateDisplayPlaneSurfaceKHR(
7399 VkInstance instance,
7400 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007401 const VkAllocationCallbacks* pAllocator,
Jesse Halla6429252015-11-29 18:59:42 -08007402 VkSurfaceKHR* pSurface) {
7403 return ?
7404}
7405
Jesse Hallad250842017-03-10 18:35:38 -08007406@extension("VK_KHR_display_swapchain") // 4
Jesse Hall9ba8bc82015-11-30 16:22:16 -08007407cmd VkResult vkCreateSharedSwapchainsKHR(
7408 VkDevice device,
7409 u32 swapchainCount,
7410 const VkSwapchainCreateInfoKHR* pCreateInfos,
7411 const VkAllocationCallbacks* pAllocator,
7412 VkSwapchainKHR* pSwapchains) {
7413 return ?
7414}
7415
Jesse Hallad250842017-03-10 18:35:38 -08007416@extension("VK_KHR_xlib_surface") // 5
Jesse Halla6429252015-11-29 18:59:42 -08007417cmd VkResult vkCreateXlibSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08007418 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007419 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007420 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007421 VkSurfaceKHR* pSurface) {
7422 instanceObject := GetInstance(instance)
7423 return ?
7424}
7425
Jesse Hallad250842017-03-10 18:35:38 -08007426@extension("VK_KHR_xlib_surface") // 5
Jesse Halla6429252015-11-29 18:59:42 -08007427cmd VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR(
7428 VkPhysicalDevice physicalDevice,
7429 u32 queueFamilyIndex,
7430 platform.Display* dpy,
Jesse Hall65ab5522015-11-30 00:07:16 -08007431 platform.VisualID visualID) {
Jesse Halla6429252015-11-29 18:59:42 -08007432 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7433 return ?
7434}
7435
Jesse Hallad250842017-03-10 18:35:38 -08007436@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007437cmd VkResult vkCreateXcbSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08007438 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007439 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007440 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007441 VkSurfaceKHR* pSurface) {
7442 instanceObject := GetInstance(instance)
7443 return ?
7444}
7445
Jesse Hallad250842017-03-10 18:35:38 -08007446@extension("VK_KHR_xcb_surface") // 6
Jesse Halla6429252015-11-29 18:59:42 -08007447cmd VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR(
7448 VkPhysicalDevice physicalDevice,
7449 u32 queueFamilyIndex,
7450 platform.xcb_connection_t* connection,
7451 platform.xcb_visualid_t visual_id) {
7452 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7453 return ?
7454}
7455
Jesse Hallad250842017-03-10 18:35:38 -08007456@extension("VK_KHR_wayland_surface") // 7
Jesse Hall1356b0d2015-11-23 17:24:58 -08007457cmd VkResult vkCreateWaylandSurfaceKHR(
7458 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007459 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007460 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007461 VkSurfaceKHR* pSurface) {
7462 instanceObject := GetInstance(instance)
7463 return ?
7464}
7465
Jesse Hallad250842017-03-10 18:35:38 -08007466@extension("VK_KHR_wayland_surface") // 7
Jesse Halla6429252015-11-29 18:59:42 -08007467cmd VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR(
7468 VkPhysicalDevice physicalDevice,
7469 u32 queueFamilyIndex,
7470 platform.wl_display* display) {
7471 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7472 return ?
7473}
7474
Jesse Hallad250842017-03-10 18:35:38 -08007475@extension("VK_KHR_mir_surface") // 8
Jesse Hall1356b0d2015-11-23 17:24:58 -08007476cmd VkResult vkCreateMirSurfaceKHR(
7477 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007478 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007479 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007480 VkSurfaceKHR* pSurface) {
7481 instanceObject := GetInstance(instance)
7482 return ?
7483}
7484
Jesse Hallad250842017-03-10 18:35:38 -08007485@extension("VK_KHR_mir_surface") // 8
Jesse Halla6429252015-11-29 18:59:42 -08007486cmd VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR(
7487 VkPhysicalDevice physicalDevice,
7488 u32 queueFamilyIndex,
7489 platform.MirConnection* connection) {
7490 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7491 return ?
7492}
7493
Jesse Hallad250842017-03-10 18:35:38 -08007494@extension("VK_KHR_android_surface") // 9
Jesse Hall1356b0d2015-11-23 17:24:58 -08007495cmd VkResult vkCreateAndroidSurfaceKHR(
7496 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007497 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007498 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007499 VkSurfaceKHR* pSurface) {
7500 instanceObject := GetInstance(instance)
7501 return ?
7502}
7503
Jesse Hallad250842017-03-10 18:35:38 -08007504@extension("VK_KHR_win32_surface") // 10
Jesse Hall1356b0d2015-11-23 17:24:58 -08007505cmd VkResult vkCreateWin32SurfaceKHR(
7506 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007507 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007508 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007509 VkSurfaceKHR* pSurface) {
7510 instanceObject := GetInstance(instance)
7511 return ?
7512}
7513
Jesse Hallad250842017-03-10 18:35:38 -08007514@extension("VK_KHR_win32_surface") // 10
Jesse Halla6429252015-11-29 18:59:42 -08007515cmd VkResult vkGetPhysicalDeviceWin32PresentationSupportKHR(
7516 VkPhysicalDevice physicalDevice,
7517 u32 queueFamilyIndex) {
Jesse Halle2948d82016-02-25 04:19:32 -08007518 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Halla6429252015-11-29 18:59:42 -08007519 return ?
7520}
7521
Jesse Hallad250842017-03-10 18:35:38 -08007522@extension("VK_ANDROID_native_buffer") // 11
Jesse Halld1abd742017-02-09 21:45:51 -08007523@optional
Chia-I Wub262ddc2016-03-22 07:38:20 +08007524cmd VkResult vkGetSwapchainGrallocUsageANDROID(
7525 VkDevice device,
7526 VkFormat format,
7527 VkImageUsageFlags imageUsage,
Jesse Halld1abd742017-02-09 21:45:51 -08007528 s32* grallocUsage) {
Chia-I Wub262ddc2016-03-22 07:38:20 +08007529 return ?
7530}
7531
Jesse Hallad250842017-03-10 18:35:38 -08007532@extension("VK_ANDROID_native_buffer") // 11
Jesse Halld1abd742017-02-09 21:45:51 -08007533@optional
Chris Forbes8e4438b2016-12-07 16:26:49 +13007534cmd VkResult vkGetSwapchainGrallocUsage2ANDROID(
7535 VkDevice device,
7536 VkFormat format,
7537 VkImageUsageFlags imageUsage,
7538 VkSwapchainImageUsageFlagsANDROID swapchainImageUsage,
Jesse Halld1abd742017-02-09 21:45:51 -08007539 u64* grallocConsumerUsage,
7540 u64* grallocProducerUsage) {
Chris Forbes8e4438b2016-12-07 16:26:49 +13007541 return ?
7542}
7543
Jesse Hallad250842017-03-10 18:35:38 -08007544@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08007545cmd VkResult vkAcquireImageANDROID(
7546 VkDevice device,
7547 VkImage image,
7548 int nativeFenceFd,
7549 VkSemaphore semaphore,
7550 VkFence fence) {
7551 return ?
7552}
7553
Jesse Hallad250842017-03-10 18:35:38 -08007554@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08007555cmd VkResult vkQueueSignalReleaseImageANDROID(
7556 VkQueue queue,
7557 u32 waitSemaphoreCount,
7558 const VkSemaphore* pWaitSemaphores,
7559 VkImage image,
7560 int* pNativeFenceFd) {
7561 return ?
7562}
7563
Jesse Hallad250842017-03-10 18:35:38 -08007564@extension("VK_EXT_debug_report") // 12
7565@external type void* PFN_vkDebugReportCallbackEXT
7566@extension("VK_EXT_debug_report") // 12
7567@pfn cmd VkBool32 vkDebugReportCallbackEXT(
7568 VkDebugReportFlagsEXT flags,
7569 VkDebugReportObjectTypeEXT objectType,
7570 u64 object,
7571 platform.size_t location,
7572 s32 messageCode,
7573 const char* pLayerPrefix,
7574 const char* pMessage,
7575 void* pUserData) {
7576 return ?
7577}
7578
7579@extension("VK_EXT_debug_report") // 12
7580cmd VkResult vkCreateDebugReportCallbackEXT(
7581 VkInstance instance,
7582 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
7583 const VkAllocationCallbacks* pAllocator,
7584 VkDebugReportCallbackEXT* pCallback) {
7585 return ?
7586}
7587
7588@extension("VK_EXT_debug_report") // 12
7589cmd void vkDestroyDebugReportCallbackEXT(
7590 VkInstance instance,
7591 VkDebugReportCallbackEXT callback,
7592 const VkAllocationCallbacks* pAllocator) {
7593}
7594
7595@extension("VK_EXT_debug_report") // 12
7596cmd void vkDebugReportMessageEXT(
7597 VkInstance instance,
7598 VkDebugReportFlagsEXT flags,
7599 VkDebugReportObjectTypeEXT objectType,
7600 u64 object,
7601 platform.size_t location,
7602 s32 messageCode,
7603 const char* pLayerPrefix,
7604 const char* pMessage) {
7605}
7606
7607@extension("VK_EXT_debug_marker") // 23
7608cmd VkResult vkDebugMarkerSetObjectTagEXT(
7609 VkDevice device,
Jesse Hall77726222017-09-19 14:49:27 -05007610 const VkDebugMarkerObjectTagInfoEXT* pTagInfo) {
Jesse Hallad250842017-03-10 18:35:38 -08007611 return ?
7612}
7613
7614@extension("VK_EXT_debug_marker") // 23
7615cmd VkResult vkDebugMarkerSetObjectNameEXT(
7616 VkDevice device,
Jesse Hall77726222017-09-19 14:49:27 -05007617 const VkDebugMarkerObjectNameInfoEXT* pNameInfo) {
Jesse Hallad250842017-03-10 18:35:38 -08007618 return ?
7619}
7620
7621@extension("VK_EXT_debug_marker") // 23
7622cmd void vkCmdDebugMarkerBeginEXT(
7623 VkCommandBuffer commandBuffer,
Jesse Hall77726222017-09-19 14:49:27 -05007624 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
Jesse Hallad250842017-03-10 18:35:38 -08007625}
7626
7627@extension("VK_EXT_debug_marker") // 23
7628cmd void vkCmdDebugMarkerEndEXT(
7629 VkCommandBuffer commandBuffer) {
7630}
7631
7632@extension("VK_EXT_debug_marker") // 23
7633cmd void vkCmdDebugMarkerInsertEXT(
7634 VkCommandBuffer commandBuffer,
Jesse Hall77726222017-09-19 14:49:27 -05007635 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
Jesse Hallad250842017-03-10 18:35:38 -08007636}
7637
7638@extension("VK_AMD_draw_indirect_count") // 34
7639cmd void vkCmdDrawIndirectCountAMD(
7640 VkCommandBuffer commandBuffer,
7641 VkBuffer buffer,
7642 VkDeviceSize offset,
7643 VkBuffer countBuffer,
7644 VkDeviceSize countBufferOffset,
7645 u32 maxDrawCount,
7646 u32 stride) {
7647}
7648
7649@extension("VK_AMD_draw_indirect_count") // 34
7650cmd void vkCmdDrawIndexedIndirectCountAMD(
7651 VkCommandBuffer commandBuffer,
7652 VkBuffer buffer,
7653 VkDeviceSize offset,
7654 VkBuffer countBuffer,
7655 VkDeviceSize countBufferOffset,
7656 u32 maxDrawCount,
7657 u32 stride) {
7658}
7659
7660@extension("VK_NV_external_memory_capabilities") // 56
7661cmd VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
7662 VkPhysicalDevice physicalDevice,
7663 VkFormat format,
7664 VkImageType type,
7665 VkImageTiling tiling,
7666 VkImageUsageFlags usage,
7667 VkImageCreateFlags flags,
7668 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
7669 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) {
7670 return ?
7671}
7672
7673@extension("VK_NV_external_memory_win32") // 58
7674cmd VkResult vkGetMemoryWin32HandleNV(
7675 VkDevice device,
7676 VkDeviceMemory memory,
7677 VkExternalMemoryHandleTypeFlagsNV handleType,
7678 platform.HANDLE* pHandle) {
7679 return ?
7680}
7681
7682@extension("VK_KHR_get_physical_device_properties2") // 60
7683cmd void vkGetPhysicalDeviceFeatures2KHR(
7684 VkPhysicalDevice physicalDevice,
7685 VkPhysicalDeviceFeatures2KHR* pFeatures) {
7686}
7687
7688@extension("VK_KHR_get_physical_device_properties2") // 60
7689cmd void vkGetPhysicalDeviceProperties2KHR(
7690 VkPhysicalDevice physicalDevice,
7691 VkPhysicalDeviceProperties2KHR* pProperties) {
7692}
7693
7694@extension("VK_KHR_get_physical_device_properties2") // 60
7695cmd void vkGetPhysicalDeviceFormatProperties2KHR(
7696 VkPhysicalDevice physicalDevice,
7697 VkFormat format,
7698 VkFormatProperties2KHR* pFormatProperties) {
7699}
7700
7701@extension("VK_KHR_get_physical_device_properties2") // 60
7702cmd VkResult vkGetPhysicalDeviceImageFormatProperties2KHR(
7703 VkPhysicalDevice physicalDevice,
7704 const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo,
7705 VkImageFormatProperties2KHR* pImageFormatProperties) {
7706 return ?
7707}
7708
7709@extension("VK_KHR_get_physical_device_properties2") // 60
7710cmd void vkGetPhysicalDeviceQueueFamilyProperties2KHR(
7711 VkPhysicalDevice physicalDevice,
7712 u32* pQueueFamilyPropertyCount,
7713 VkQueueFamilyProperties2KHR* pQueueFamilyProperties) {
7714}
7715
7716@extension("VK_KHR_get_physical_device_properties2") // 60
7717cmd void vkGetPhysicalDeviceMemoryProperties2KHR(
7718 VkPhysicalDevice physicalDevice,
7719 VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties) {
7720}
7721
7722@extension("VK_KHR_get_physical_device_properties2") // 60
7723cmd void vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
7724 VkPhysicalDevice physicalDevice,
7725 const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo,
7726 u32* pPropertyCount,
7727 VkSparseImageFormatProperties2KHR* pProperties) {
7728}
7729
7730@extension("VK_KHX_device_group") // 61
7731cmd void vkGetDeviceGroupPeerMemoryFeaturesKHX(
7732 VkDevice device,
7733 u32 heapIndex,
7734 u32 localDeviceIndex,
7735 u32 remoteDeviceIndex,
7736 VkPeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures) {
7737}
7738
7739@extension("VK_KHX_device_group") // 61
7740cmd VkResult vkBindBufferMemory2KHX(
7741 VkDevice device,
7742 u32 bindInfoCount,
7743 const VkBindBufferMemoryInfoKHX* pBindInfos) {
7744 return ?
7745}
7746
7747@extension("VK_KHX_device_group") // 61
7748cmd VkResult vkBindImageMemory2KHX(
7749 VkDevice device,
7750 u32 bindInfoCount,
7751 const VkBindImageMemoryInfoKHX* pBindInfos) {
7752 return ?
7753}
7754
7755@extension("VK_KHX_device_group") // 61
7756cmd void vkCmdSetDeviceMaskKHX(
7757 VkCommandBuffer commandBuffer,
7758 u32 deviceMask) {
7759}
7760
7761@extension("VK_KHX_device_group") // 61
7762cmd VkResult vkGetDeviceGroupPresentCapabilitiesKHX(
7763 VkDevice device,
7764 VkDeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities) {
7765 return ?
7766}
7767
7768@extension("VK_KHX_device_group") // 61
7769cmd VkResult vkGetDeviceGroupSurfacePresentModesKHX(
7770 VkDevice device,
7771 VkSurfaceKHR surface,
7772 VkDeviceGroupPresentModeFlagsKHX* pModes) {
7773 return ?
7774}
7775
7776@extension("VK_KHX_device_group") // 61
7777cmd VkResult vkAcquireNextImage2KHX(
7778 VkDevice device,
7779 const VkAcquireNextImageInfoKHX* pAcquireInfo,
7780 u32* pImageIndex) {
7781 return ?
7782}
7783
7784@extension("VK_KHX_device_group") // 61
7785cmd void vkCmdDispatchBaseKHX(
7786 VkCommandBuffer commandBuffer,
7787 u32 baseGroupX,
7788 u32 baseGroupY,
7789 u32 baseGroupZ,
7790 u32 groupCountX,
7791 u32 groupCountY,
7792 u32 groupCountZ) {
7793}
7794
7795@extension("VK_KHX_device_group") // 61
7796cmd VkResult vkGetPhysicalDevicePresentRectanglesKHX(
7797 VkPhysicalDevice physicalDevice,
7798 VkSurfaceKHR surface,
7799 u32* pRectCount,
7800 VkRect2D* pRects) {
7801 return ?
7802}
7803
7804@extension("VK_NN_vi_surface") // 63
7805cmd VkResult vkCreateViSurfaceNN(
7806 VkInstance instance,
7807 const VkViSurfaceCreateInfoNN* pCreateInfo,
7808 const VkAllocationCallbacks* pAllocator,
7809 VkSurfaceKHR* pSurface) {
7810 return ?
7811}
7812
7813@extension("VK_KHR_maintenance1") // 70
7814cmd void vkTrimCommandPoolKHR(
7815 VkDevice device,
7816 VkCommandPool commandPool,
7817 VkCommandPoolTrimFlagsKHR flags) {
7818}
7819
7820@extension("VK_KHX_device_group_creation") // 71
7821cmd VkResult vkEnumeratePhysicalDeviceGroupsKHX(
7822 VkInstance instance,
7823 u32* pPhysicalDeviceGroupCount,
7824 VkPhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties) {
7825 return ?
7826}
7827
Jesse Hall9492f992017-08-28 12:10:06 -07007828@extension("VK_KHR_external_memory_capabilities") // 72
7829cmd void vkGetPhysicalDeviceExternalBufferPropertiesKHR(
Jesse Hallad250842017-03-10 18:35:38 -08007830 VkPhysicalDevice physicalDevice,
Jesse Hall9492f992017-08-28 12:10:06 -07007831 const VkPhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo,
7832 VkExternalBufferPropertiesKHR* pExternalBufferProperties) {
Jesse Hallad250842017-03-10 18:35:38 -08007833}
7834
Jesse Hall9492f992017-08-28 12:10:06 -07007835@extension("VK_KHR_external_memory_win32") // 74
7836cmd VkResult vkGetMemoryWin32HandleKHR(
Jesse Hallad250842017-03-10 18:35:38 -08007837 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07007838 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
Jesse Hallad250842017-03-10 18:35:38 -08007839 platform.HANDLE* pHandle) {
7840 return ?
7841}
7842
Jesse Hall9492f992017-08-28 12:10:06 -07007843@extension("VK_KHR_external_memory_win32") // 74
7844cmd VkResult vkGetMemoryWin32HandlePropertiesKHR(
Jesse Hallad250842017-03-10 18:35:38 -08007845 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07007846 VkExternalMemoryHandleTypeFlagBitsKHR handleType,
Jesse Hallad250842017-03-10 18:35:38 -08007847 platform.HANDLE handle,
Jesse Hall9492f992017-08-28 12:10:06 -07007848 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) {
Jesse Hallad250842017-03-10 18:35:38 -08007849 return ?
7850}
7851
Jesse Hall9492f992017-08-28 12:10:06 -07007852@extension("VK_KHR_external_memory_fd") // 75
7853cmd VkResult vkGetMemoryFdKHR(
Jesse Hallad250842017-03-10 18:35:38 -08007854 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07007855 const VkMemoryGetFdInfoKHR* pGetFdInfo,
Jesse Hallad250842017-03-10 18:35:38 -08007856 s32* pFd) {
7857 return ?
7858}
7859
Jesse Hall9492f992017-08-28 12:10:06 -07007860@extension("VK_KHR_external_memory_fd") // 75
7861cmd VkResult vkGetMemoryFdPropertiesKHR(
Jesse Hallad250842017-03-10 18:35:38 -08007862 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07007863 VkExternalMemoryHandleTypeFlagBitsKHR handleType,
Jesse Hallad250842017-03-10 18:35:38 -08007864 s32 fd,
Jesse Hall9492f992017-08-28 12:10:06 -07007865 VkMemoryFdPropertiesKHR* pMemoryFdProperties) {
Jesse Hallad250842017-03-10 18:35:38 -08007866 return ?
7867}
7868
Jesse Hall9492f992017-08-28 12:10:06 -07007869@extension("VK_KHR_external_semaphore_capabilities") // 77
7870cmd void vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
Jesse Hallad250842017-03-10 18:35:38 -08007871 VkPhysicalDevice physicalDevice,
Jesse Hall9492f992017-08-28 12:10:06 -07007872 const VkPhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo,
7873 VkExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties) {
Jesse Hallad250842017-03-10 18:35:38 -08007874}
7875
Jesse Hall9492f992017-08-28 12:10:06 -07007876@extension("VK_KHR_external_semaphore_win32") // 79
7877cmd VkResult vkImportSemaphoreWin32HandleKHR(
Jesse Hallad250842017-03-10 18:35:38 -08007878 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07007879 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) {
Jesse Hallad250842017-03-10 18:35:38 -08007880 return ?
7881}
7882
Jesse Hall9492f992017-08-28 12:10:06 -07007883@extension("VK_KHR_external_semaphore_win32") // 79
7884cmd VkResult vkGetSemaphoreWin32HandleKHR(
Jesse Hallad250842017-03-10 18:35:38 -08007885 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07007886 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
Jesse Hallad250842017-03-10 18:35:38 -08007887 platform.HANDLE* pHandle) {
7888 return ?
7889}
7890
Jesse Hall9492f992017-08-28 12:10:06 -07007891@extension("VK_KHR_external_semaphore_fd") // 80
7892cmd VkResult vkImportSemaphoreFdKHR(
Jesse Hallad250842017-03-10 18:35:38 -08007893 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07007894 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) {
Jesse Hallad250842017-03-10 18:35:38 -08007895 return ?
7896}
7897
Jesse Hall9492f992017-08-28 12:10:06 -07007898@extension("VK_KHR_external_semaphore_fd") // 80
7899cmd VkResult vkGetSemaphoreFdKHR(
Jesse Hallad250842017-03-10 18:35:38 -08007900 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07007901 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
Jesse Hallad250842017-03-10 18:35:38 -08007902 s32* pFd) {
7903 return ?
7904}
7905
7906@extension("VK_KHR_push_descriptor") // 81
7907cmd void vkCmdPushDescriptorSetKHR(
7908 VkCommandBuffer commandBuffer,
7909 VkPipelineBindPoint pipelineBindPoint,
7910 VkPipelineLayout layout,
7911 u32 set,
7912 u32 descriptorWriteCount,
7913 const VkWriteDescriptorSet* pDescriptorWrites) {
7914}
7915
7916@extension("VK_KHR_descriptor_update_template") // 86
7917cmd VkResult vkCreateDescriptorUpdateTemplateKHR(
7918 VkDevice device,
7919 const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo,
7920 const VkAllocationCallbacks* pAllocator,
7921 VkDescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate) {
7922 return ?
7923}
7924
7925@extension("VK_KHR_descriptor_update_template") // 86
7926cmd void vkDestroyDescriptorUpdateTemplateKHR(
7927 VkDevice device,
7928 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
7929 const VkAllocationCallbacks* pAllocator) {
7930}
7931
7932@extension("VK_KHR_descriptor_update_template") // 86
7933cmd void vkUpdateDescriptorSetWithTemplateKHR(
7934 VkDevice device,
7935 VkDescriptorSet descriptorSet,
7936 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
7937 const void* pData) {
7938}
7939
7940@extension("VK_KHR_descriptor_update_template") // 86
7941cmd void vkCmdPushDescriptorSetWithTemplateKHR(
7942 VkCommandBuffer commandBuffer,
7943 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
7944 VkPipelineLayout layout,
7945 u32 set,
7946 const void* pData) {
7947}
7948
7949@extension("VK_NVX_device_generated_commands") // 87
7950cmd void vkCmdProcessCommandsNVX(
7951 VkCommandBuffer commandBuffer,
7952 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) {
7953}
7954
7955@extension("VK_NVX_device_generated_commands") // 87
7956cmd void vkCmdReserveSpaceForCommandsNVX(
7957 VkCommandBuffer commandBuffer,
7958 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) {
7959}
7960
7961@extension("VK_NVX_device_generated_commands") // 87
7962cmd VkResult vkCreateIndirectCommandsLayoutNVX(
7963 VkDevice device,
7964 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
7965 const VkAllocationCallbacks* pAllocator,
7966 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) {
7967 return ?
7968}
7969
7970@extension("VK_NVX_device_generated_commands") // 87
7971cmd void vkDestroyIndirectCommandsLayoutNVX(
7972 VkDevice device,
7973 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
7974 const VkAllocationCallbacks* pAllocator) {
7975}
7976
7977@extension("VK_NVX_device_generated_commands") // 87
7978cmd VkResult vkCreateObjectTableNVX(
7979 VkDevice device,
7980 const VkObjectTableCreateInfoNVX* pCreateInfo,
7981 const VkAllocationCallbacks* pAllocator,
7982 VkObjectTableNVX* pObjectTable) {
7983 return ?
7984}
7985
7986@extension("VK_NVX_device_generated_commands") // 87
7987cmd void vkDestroyObjectTableNVX(
7988 VkDevice device,
7989 VkObjectTableNVX objectTable,
7990 const VkAllocationCallbacks* pAllocator) {
7991}
7992
7993@extension("VK_NVX_device_generated_commands") // 87
7994cmd VkResult vkRegisterObjectsNVX(
7995 VkDevice device,
7996 VkObjectTableNVX objectTable,
7997 u32 objectCount,
7998 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
7999 const u32* pObjectIndices) {
8000 return ?
8001}
8002
8003@extension("VK_NVX_device_generated_commands") // 87
8004cmd VkResult vkUnregisterObjectsNVX(
8005 VkDevice device,
8006 VkObjectTableNVX objectTable,
8007 u32 objectCount,
8008 const VkObjectEntryTypeNVX* pObjectEntryTypes,
8009 const u32* pObjectIndices) {
8010 return ?
8011}
8012
8013@extension("VK_NVX_device_generated_commands") // 87
8014cmd void vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
8015 VkPhysicalDevice physicalDevice,
8016 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
8017 VkDeviceGeneratedCommandsLimitsNVX* pLimits) {
8018}
8019
8020@extension("VK_NV_clip_space_w_scaling") // 88
8021cmd void vkCmdSetViewportWScalingNV(
8022 VkCommandBuffer commandBuffer,
8023 u32 firstViewport,
8024 u32 viewportCount,
8025 const VkViewportWScalingNV* pViewportWScalings) {
8026}
8027
8028@extension("VK_EXT_direct_mode_display") // 89
8029cmd VkResult vkReleaseDisplayEXT(
8030 VkPhysicalDevice physicalDevice,
8031 VkDisplayKHR display) {
8032 return ?
8033}
8034
8035@extension("VK_EXT_acquire_xlib_display") // 90
8036cmd VkResult vkAcquireXlibDisplayEXT(
8037 VkPhysicalDevice physicalDevice,
8038 platform.Display* dpy,
8039 VkDisplayKHR display) {
8040 return ?
8041}
8042
8043@extension("VK_EXT_acquire_xlib_display") // 90
8044cmd VkResult vkGetRandROutputDisplayEXT(
8045 VkPhysicalDevice physicalDevice,
8046 platform.Display* dpy,
8047 platform.RROutput rrOutput,
8048 VkDisplayKHR* pDisplay) {
8049 return ?
8050}
8051
8052@extension("VK_EXT_display_surface_counter") // 91
8053cmd VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT(
8054 VkPhysicalDevice physicalDevice,
8055 VkSurfaceKHR surface,
8056 VkSurfaceCapabilities2EXT* pSurfaceCapabilities) {
8057 return ?
8058}
8059
8060@extension("VK_EXT_display_control") // 92
8061cmd VkResult vkDisplayPowerControlEXT(
8062 VkDevice device,
8063 VkDisplayKHR display,
8064 const VkDisplayPowerInfoEXT* pDisplayPowerInfo) {
8065 return ?
8066}
8067
8068@extension("VK_EXT_display_control") // 92
8069cmd VkResult vkRegisterDeviceEventEXT(
8070 VkDevice device,
8071 const VkDeviceEventInfoEXT* pDeviceEventInfo,
8072 const VkAllocationCallbacks* pAllocator,
8073 VkFence* pFence) {
8074 return ?
8075}
8076
8077@extension("VK_EXT_display_control") // 92
8078cmd VkResult vkRegisterDisplayEventEXT(
8079 VkDevice device,
8080 VkDisplayKHR display,
8081 const VkDisplayEventInfoEXT* pDisplayEventInfo,
8082 const VkAllocationCallbacks* pAllocator,
8083 VkFence* pFence) {
8084 return ?
8085}
8086
8087@extension("VK_EXT_display_control") // 92
8088cmd VkResult vkGetSwapchainCounterEXT(
8089 VkDevice device,
8090 VkSwapchainKHR swapchain,
8091 VkSurfaceCounterFlagBitsEXT counter,
8092 u64* pCounterValue) {
8093 return ?
8094}
8095
8096@extension("VK_GOOGLE_display_timing") // 93
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07008097cmd VkResult vkGetRefreshCycleDurationGOOGLE(
Jesse Hallfdc8ab32017-03-10 21:01:57 -08008098 VkDevice device,
8099 VkSwapchainKHR swapchain,
8100 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) {
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07008101 deviceObject := GetDevice(device)
8102 swapchainObject := GetSwapchain(swapchain)
8103
8104 displayTimingProperties := ?
8105 pDisplayTimingProperties[0] = displayTimingProperties
8106
8107 return ?
8108}
8109
Jesse Hallad250842017-03-10 18:35:38 -08008110@extension("VK_GOOGLE_display_timing") // 93
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07008111cmd VkResult vkGetPastPresentationTimingGOOGLE(
Jesse Hallfdc8ab32017-03-10 21:01:57 -08008112 VkDevice device,
8113 VkSwapchainKHR swapchain,
8114 u32* pPresentationTimingCount,
8115 VkPastPresentationTimingGOOGLE* pPresentationTimings) {
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07008116 return ?
8117}
8118
Jesse Hallad250842017-03-10 18:35:38 -08008119@extension("VK_EXT_discard_rectangles") // 100
8120cmd void vkCmdSetDiscardRectangleEXT(
Jesse Hall26763382016-05-20 07:13:52 -07008121 VkCommandBuffer commandBuffer,
Jesse Hallad250842017-03-10 18:35:38 -08008122 u32 firstDiscardRectangle,
8123 u32 discardRectangleCount,
8124 const VkRect2D* pDiscardRectangles) {
Jesse Hall26763382016-05-20 07:13:52 -07008125}
8126
Jesse Hallad250842017-03-10 18:35:38 -08008127@extension("VK_EXT_hdr_metadata") // 106
Jesse Hall889cd9a2017-02-25 22:12:23 -08008128cmd void vkSetHdrMetadataEXT(
Jesse Hallfdc8ab32017-03-10 21:01:57 -08008129 VkDevice device,
8130 u32 swapchainCount,
8131 const VkSwapchainKHR* pSwapchains,
8132 const VkHdrMetadataEXT* pMetadata) {
Jesse Hall889cd9a2017-02-25 22:12:23 -08008133}
8134
Jesse Hallad250842017-03-10 18:35:38 -08008135@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbes2e12cb82017-01-18 11:45:17 +13008136cmd VkResult vkGetSwapchainStatusKHR(
8137 VkDevice device,
8138 VkSwapchainKHR swapchain) {
8139 return ?
8140}
8141
Jesse Hall9492f992017-08-28 12:10:06 -07008142@extension("VK_KHR_external_fence_capabilities") // 113
8143cmd void vkGetPhysicalDeviceExternalFencePropertiesKHR(
8144 VkPhysicalDevice physicalDevice,
8145 const VkPhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo,
8146 VkExternalFencePropertiesKHR* pExternalFenceProperties) {
8147}
8148
8149@extension("VK_KHR_external_fence_win32") // 115
8150cmd VkResult vkImportFenceWin32HandleKHR(
8151 VkDevice device,
8152 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) {
8153 return ?
8154}
8155
8156@extension("VK_KHR_external_fence_win32") // 115
8157cmd VkResult vkGetFenceWin32HandleKHR(
8158 VkDevice device,
8159 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
8160 platform.HANDLE* pHandle) {
8161 return ?
8162}
8163
8164@extension("VK_KHR_external_fence_fd") // 116
8165cmd VkResult vkImportFenceFdKHR(
8166 VkDevice device,
8167 const VkImportFenceFdInfoKHR* pImportFenceFdInfo) {
8168 return ?
8169}
8170
8171@extension("VK_KHR_external_fence_fd") // 116
8172cmd VkResult vkGetFenceFdKHR(
8173 VkDevice device,
8174 const VkFenceGetFdInfoKHR* pGetFdInfo,
8175 int* pFd) {
8176 return ?
8177}
8178
Jesse Hall05556b12017-05-18 17:40:25 -07008179@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13008180cmd VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR(
8181 VkPhysicalDevice physicalDevice,
8182 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
8183 VkSurfaceCapabilities2KHR* pSurfaceCapabilities) {
8184 return ?
8185}
8186
Jesse Hall05556b12017-05-18 17:40:25 -07008187@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13008188cmd VkResult vkGetPhysicalDeviceSurfaceFormats2KHR(
8189 VkPhysicalDevice physicalDevice,
8190 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
8191 u32* pSurfaceFormatCount,
8192 VkSurfaceFormat2KHR* pSurfaceFormats) {
8193 return ?
8194}
8195
Jesse Hallad250842017-03-10 18:35:38 -08008196@extension("VK_MVK_ios_surface") // 123
8197cmd VkResult vkCreateIOSSurfaceMVK(
8198 VkInstance instance,
8199 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
8200 const VkAllocationCallbacks* pAllocator,
8201 VkSurfaceKHR* pSurface) {
8202 return ?
8203}
8204
8205@extension("VK_MVK_macos_surface") // 124
8206cmd VkResult vkCreateMacOSSurfaceMVK(
8207 VkInstance instance,
8208 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
8209 const VkAllocationCallbacks* pAllocator,
8210 VkSurfaceKHR* pSurface) {
8211 return ?
8212}
8213
Jesse Hall77726222017-09-19 14:49:27 -05008214@extension("VK_EXT_sample_locations") // 144
8215cmd void vkCmdSetSampleLocationsEXT(
8216 VkCommandBuffer commandBuffer,
8217 const VkSampleLocationsInfoEXT* pSampleLocationsInfo) {
8218}
8219
8220@extension("VK_EXT_sample_locations") // 144
8221cmd void vkGetPhysicalDeviceMultisamplePropertiesEXT(
8222 VkPhysicalDevice physicalDevice,
8223 VkSampleCountFlagBits samples,
8224 VkMultisamplePropertiesEXT* pMultisampleProperties) {
8225}
8226
Jesse Hall9492f992017-08-28 12:10:06 -07008227@extension("VK_KHR_get_memory_requirements2") // 147
8228cmd void vkGetImageMemoryRequirements2KHR(
8229 VkDevice device,
8230 const VkImageMemoryRequirementsInfo2KHR* pInfo,
8231 VkMemoryRequirements2KHR* pMemoryRequirements) {
8232}
8233
8234@extension("VK_KHR_get_memory_requirements2") // 147
8235cmd void vkGetBufferMemoryRequirements2KHR(
8236 VkDevice device,
8237 const VkBufferMemoryRequirementsInfo2KHR* pInfo,
8238 VkMemoryRequirements2KHR* pMemoryRequirements) {
8239}
8240
8241@extension("VK_KHR_get_memory_requirements2") // 147
8242cmd void vkGetImageSparseMemoryRequirements2KHR(
8243 VkDevice device,
8244 const VkImageSparseMemoryRequirementsInfo2KHR* pInfo,
8245 u32* pSparseMemoryRequirementCount,
8246 VkSparseImageMemoryRequirements2KHR* pSparseMemoryRequirements) {
8247}
8248
Jesse Hall77726222017-09-19 14:49:27 -05008249@extension("VK_EXT_validation_cache") // 161
8250cmd VkResult vkCreateValidationCacheEXT(
8251 VkDevice device,
8252 const VkValidationCacheCreateInfoEXT* pCreateInfo,
8253 const VkAllocationCallbacks* pAllocator,
8254 VkValidationCacheEXT* pValidationCache) {
8255 return ?
8256}
8257
8258@extension("VK_EXT_validation_cache") // 161
8259cmd void vkDestroyValidationCacheEXT(
8260 VkDevice device,
8261 VkValidationCacheEXT validationCache,
8262 const VkAllocationCallbacks* pAllocator) {
8263}
8264
8265@extension("VK_EXT_validation_cache") // 161
8266cmd VkResult vkMergeValidationCachesEXT(
8267 VkDevice device,
8268 VkValidationCacheEXT dstCache,
8269 u32 srcCacheCount,
8270 const VkValidationCacheEXT* pSrcCaches) {
8271 return ?
8272}
8273
8274@extension("VK_EXT_validation_cache") // 161
8275cmd VkResult vkGetValidationCacheDataEXT(
8276 VkDevice device,
8277 VkValidationCacheEXT validationCache,
8278 platform.size_t* pDataSize,
8279 void* pData) {
8280 return ?
8281}
8282
Jesse Halld27f6aa2015-08-15 17:58:48 -07008283////////////////
8284// Validation //
8285////////////////
8286
8287extern void validate(string layerName, bool condition, string message)
8288
8289
8290/////////////////////////////
8291// Internal State Tracking //
8292/////////////////////////////
8293
8294StateObject State
8295
8296@internal class StateObject {
8297 // Dispatchable objects.
8298 map!(VkInstance, ref!InstanceObject) Instances
8299 map!(VkPhysicalDevice, ref!PhysicalDeviceObject) PhysicalDevices
8300 map!(VkDevice, ref!DeviceObject) Devices
8301 map!(VkQueue, ref!QueueObject) Queues
Jesse Hall3fbc8562015-11-29 22:10:52 -08008302 map!(VkCommandBuffer, ref!CommandBufferObject) CommandBuffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07008303
8304 // Non-dispatchable objects.
8305 map!(VkDeviceMemory, ref!DeviceMemoryObject) DeviceMemories
8306 map!(VkBuffer, ref!BufferObject) Buffers
8307 map!(VkBufferView, ref!BufferViewObject) BufferViews
8308 map!(VkImage, ref!ImageObject) Images
8309 map!(VkImageView, ref!ImageViewObject) ImageViews
Jesse Halld27f6aa2015-08-15 17:58:48 -07008310 map!(VkShaderModule, ref!ShaderModuleObject) ShaderModules
Jesse Halld27f6aa2015-08-15 17:58:48 -07008311 map!(VkPipeline, ref!PipelineObject) Pipelines
8312 map!(VkPipelineLayout, ref!PipelineLayoutObject) PipelineLayouts
8313 map!(VkSampler, ref!SamplerObject) Samplers
8314 map!(VkDescriptorSet, ref!DescriptorSetObject) DescriptorSets
8315 map!(VkDescriptorSetLayout, ref!DescriptorSetLayoutObject) DescriptorSetLayouts
8316 map!(VkDescriptorPool, ref!DescriptorPoolObject) DescriptorPools
Jesse Halld27f6aa2015-08-15 17:58:48 -07008317 map!(VkFence, ref!FenceObject) Fences
8318 map!(VkSemaphore, ref!SemaphoreObject) Semaphores
8319 map!(VkEvent, ref!EventObject) Events
8320 map!(VkQueryPool, ref!QueryPoolObject) QueryPools
8321 map!(VkFramebuffer, ref!FramebufferObject) Framebuffers
8322 map!(VkRenderPass, ref!RenderPassObject) RenderPasses
8323 map!(VkPipelineCache, ref!PipelineCacheObject) PipelineCaches
Jesse Hall3fbc8562015-11-29 22:10:52 -08008324 map!(VkCommandPool, ref!CommandPoolObject) CommandPools
Jesse Hall1356b0d2015-11-23 17:24:58 -08008325 map!(VkSurfaceKHR, ref!SurfaceObject) Surfaces
Michael Lentine88594d72015-11-12 12:49:45 -08008326 map!(VkSwapchainKHR, ref!SwapchainObject) Swapchains
Jesse Halld27f6aa2015-08-15 17:58:48 -07008327}
8328
8329@internal class InstanceObject {
8330}
8331
8332@internal class PhysicalDeviceObject {
8333 VkInstance instance
8334}
8335
8336@internal class DeviceObject {
8337 VkPhysicalDevice physicalDevice
8338}
8339
8340@internal class QueueObject {
8341 VkDevice device
8342 VkQueueFlags flags
8343}
8344
Jesse Hall3fbc8562015-11-29 22:10:52 -08008345@internal class CommandBufferObject {
Jesse Halld27f6aa2015-08-15 17:58:48 -07008346 VkDevice device
8347 map!(u64, VkDeviceMemory) boundObjects
8348 VkQueueFlags queueFlags
8349}
8350
8351@internal class DeviceMemoryObject {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008352 VkDevice device
8353 VkDeviceSize allocationSize
8354 map!(u64, VkDeviceSize) boundObjects
8355 map!(VkCommandBuffer, VkCommandBuffer) boundCommandBuffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07008356}
8357
8358@internal class BufferObject {
8359 VkDevice device
Jesse Hall3fbc8562015-11-29 22:10:52 -08008360 VkDeviceMemory memory
8361 VkDeviceSize memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07008362}
8363
8364@internal class BufferViewObject {
8365 VkDevice device
8366 VkBuffer buffer
8367}
8368
8369@internal class ImageObject {
8370 VkDevice device
Jesse Hall3fbc8562015-11-29 22:10:52 -08008371 VkDeviceMemory memory
8372 VkDeviceSize memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07008373}
8374
8375@internal class ImageViewObject {
8376 VkDevice device
8377 VkImage image
8378}
8379
Jesse Halld27f6aa2015-08-15 17:58:48 -07008380@internal class ShaderObject {
8381 VkDevice device
8382}
8383
8384@internal class ShaderModuleObject {
8385 VkDevice device
8386}
8387
8388@internal class PipelineObject {
8389 VkDevice device
8390}
8391
8392@internal class PipelineLayoutObject {
8393 VkDevice device
8394}
8395
8396@internal class SamplerObject {
8397 VkDevice device
8398}
8399
8400@internal class DescriptorSetObject {
8401 VkDevice device
8402}
8403
8404@internal class DescriptorSetLayoutObject {
8405 VkDevice device
8406}
8407
8408@internal class DescriptorPoolObject {
8409 VkDevice device
8410}
8411
Jesse Halld27f6aa2015-08-15 17:58:48 -07008412@internal class FenceObject {
8413 VkDevice device
8414 bool signaled
8415}
8416
8417@internal class SemaphoreObject {
8418 VkDevice device
8419}
8420
8421@internal class EventObject {
8422 VkDevice device
8423}
8424
8425@internal class QueryPoolObject {
8426 VkDevice device
8427}
8428
8429@internal class FramebufferObject {
8430 VkDevice device
8431}
8432
8433@internal class RenderPassObject {
8434 VkDevice device
8435}
8436
8437@internal class PipelineCacheObject {
8438 VkDevice device
8439}
8440
Jesse Hall3fbc8562015-11-29 22:10:52 -08008441@internal class CommandPoolObject {
Jesse Halld27f6aa2015-08-15 17:58:48 -07008442 VkDevice device
8443}
8444
Jesse Hall1356b0d2015-11-23 17:24:58 -08008445@internal class SurfaceObject {
8446 VkInstance instance
8447}
8448
Michael Lentine88594d72015-11-12 12:49:45 -08008449@internal class SwapchainObject {
8450 VkDevice device
8451}
8452
Jesse Halld27f6aa2015-08-15 17:58:48 -07008453macro ref!InstanceObject GetInstance(VkInstance instance) {
8454 assert(instance in State.Instances)
8455 return State.Instances[instance]
8456}
8457
8458macro ref!PhysicalDeviceObject GetPhysicalDevice(VkPhysicalDevice physicalDevice) {
8459 assert(physicalDevice in State.PhysicalDevices)
8460 return State.PhysicalDevices[physicalDevice]
8461}
8462
8463macro ref!DeviceObject GetDevice(VkDevice device) {
8464 assert(device in State.Devices)
8465 return State.Devices[device]
8466}
8467
8468macro ref!QueueObject GetQueue(VkQueue queue) {
8469 assert(queue in State.Queues)
8470 return State.Queues[queue]
8471}
8472
Jesse Hall3fbc8562015-11-29 22:10:52 -08008473macro ref!CommandBufferObject GetCommandBuffer(VkCommandBuffer commandBuffer) {
8474 assert(commandBuffer in State.CommandBuffers)
8475 return State.CommandBuffers[commandBuffer]
Jesse Halld27f6aa2015-08-15 17:58:48 -07008476}
8477
Jesse Hall3fbc8562015-11-29 22:10:52 -08008478macro ref!DeviceMemoryObject GetDeviceMemory(VkDeviceMemory memory) {
8479 assert(memory in State.DeviceMemories)
8480 return State.DeviceMemories[memory]
Jesse Halld27f6aa2015-08-15 17:58:48 -07008481}
8482
8483macro ref!BufferObject GetBuffer(VkBuffer buffer) {
8484 assert(buffer in State.Buffers)
8485 return State.Buffers[buffer]
8486}
8487
8488macro ref!BufferViewObject GetBufferView(VkBufferView bufferView) {
8489 assert(bufferView in State.BufferViews)
8490 return State.BufferViews[bufferView]
8491}
8492
8493macro ref!ImageObject GetImage(VkImage image) {
8494 assert(image in State.Images)
8495 return State.Images[image]
8496}
8497
8498macro ref!ImageViewObject GetImageView(VkImageView imageView) {
8499 assert(imageView in State.ImageViews)
8500 return State.ImageViews[imageView]
8501}
8502
Jesse Halld27f6aa2015-08-15 17:58:48 -07008503macro ref!ShaderModuleObject GetShaderModule(VkShaderModule shaderModule) {
8504 assert(shaderModule in State.ShaderModules)
8505 return State.ShaderModules[shaderModule]
8506}
8507
8508macro ref!PipelineObject GetPipeline(VkPipeline pipeline) {
8509 assert(pipeline in State.Pipelines)
8510 return State.Pipelines[pipeline]
8511}
8512
8513macro ref!PipelineLayoutObject GetPipelineLayout(VkPipelineLayout pipelineLayout) {
8514 assert(pipelineLayout in State.PipelineLayouts)
8515 return State.PipelineLayouts[pipelineLayout]
8516}
8517
8518macro ref!SamplerObject GetSampler(VkSampler sampler) {
8519 assert(sampler in State.Samplers)
8520 return State.Samplers[sampler]
8521}
8522
8523macro ref!DescriptorSetObject GetDescriptorSet(VkDescriptorSet descriptorSet) {
8524 assert(descriptorSet in State.DescriptorSets)
8525 return State.DescriptorSets[descriptorSet]
8526}
8527
8528macro ref!DescriptorSetLayoutObject GetDescriptorSetLayout(VkDescriptorSetLayout descriptorSetLayout) {
8529 assert(descriptorSetLayout in State.DescriptorSetLayouts)
8530 return State.DescriptorSetLayouts[descriptorSetLayout]
8531}
8532
8533macro ref!DescriptorPoolObject GetDescriptorPool(VkDescriptorPool descriptorPool) {
8534 assert(descriptorPool in State.DescriptorPools)
8535 return State.DescriptorPools[descriptorPool]
8536}
8537
Jesse Halld27f6aa2015-08-15 17:58:48 -07008538macro ref!FenceObject GetFence(VkFence fence) {
8539 assert(fence in State.Fences)
8540 return State.Fences[fence]
8541}
8542
8543macro ref!SemaphoreObject GetSemaphore(VkSemaphore semaphore) {
8544 assert(semaphore in State.Semaphores)
8545 return State.Semaphores[semaphore]
8546}
8547
8548macro ref!EventObject GetEvent(VkEvent event) {
8549 assert(event in State.Events)
8550 return State.Events[event]
8551}
8552
8553macro ref!QueryPoolObject GetQueryPool(VkQueryPool queryPool) {
8554 assert(queryPool in State.QueryPools)
8555 return State.QueryPools[queryPool]
8556}
8557
8558macro ref!FramebufferObject GetFramebuffer(VkFramebuffer framebuffer) {
8559 assert(framebuffer in State.Framebuffers)
8560 return State.Framebuffers[framebuffer]
8561}
8562
8563macro ref!RenderPassObject GetRenderPass(VkRenderPass renderPass) {
8564 assert(renderPass in State.RenderPasses)
8565 return State.RenderPasses[renderPass]
8566}
8567
8568macro ref!PipelineCacheObject GetPipelineCache(VkPipelineCache pipelineCache) {
8569 assert(pipelineCache in State.PipelineCaches)
8570 return State.PipelineCaches[pipelineCache]
8571}
8572
Jesse Hall3fbc8562015-11-29 22:10:52 -08008573macro ref!CommandPoolObject GetCommandPool(VkCommandPool commandPool) {
8574 assert(commandPool in State.CommandPools)
8575 return State.CommandPools[commandPool]
Jesse Hallf09c6b12015-08-15 19:54:28 -07008576}
Michael Lentine88594d72015-11-12 12:49:45 -08008577
Jesse Hall1356b0d2015-11-23 17:24:58 -08008578macro ref!SurfaceObject GetSurface(VkSurfaceKHR surface) {
8579 assert(surface in State.Surfaces)
8580 return State.Surfaces[surface]
8581}
8582
Michael Lentine88594d72015-11-12 12:49:45 -08008583macro ref!SwapchainObject GetSwapchain(VkSwapchainKHR swapchain) {
8584 assert(swapchain in State.Swapchains)
8585 return State.Swapchains[swapchain]
8586}
Jesse Halld8bade02015-11-24 10:24:18 -08008587
8588macro VkQueueFlags AddQueueFlag(VkQueueFlags flags, VkQueueFlagBits bit) {
8589 return as!VkQueueFlags(as!u32(flags) | as!u32(bit))
8590}