blob: 2981a951962aa0db4ed37750513647d82ad32837 [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 Hall076f95d2017-09-20 11:34:47 -070031define VERSION_PATCH 61
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
Jesse Hall076f95d2017-09-20 11:34:47 -0700190@extension("VK_KHX_device_group") define VK_KHX_DEVICE_GROUP_SPEC_VERSION 2
Jesse Hallad250842017-03-10 18:35:38 -0800191@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 Hall076f95d2017-09-20 11:34:47 -0700353// 118
354@extension("VK_KHR_maintenance2") define VK_KHR_MAINTENANCE2_SPEC_VERSION 1
355@extension("VK_KHR_maintenance2") define VK_KHR_MAINTENANCE2_EXTENSION_NAME "VK_KHR_maintenance2"
356
Jesse Hall05556b12017-05-18 17:40:25 -0700357// 120
Chris Forbese2d3ee12017-03-16 16:10:15 +1300358@extension("VK_KHR_get_surface_capabilities2") define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1
359@extension("VK_KHR_get_surface_capabilities2") define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2"
360
Jesse Hall9492f992017-08-28 12:10:06 -0700361// 121
362@extension("VK_KHR_variable_pointers") define VK_KHR_VARIABLE_POINTERS_SPEC_VERSION 1
363@extension("VK_KHR_variable_pointers") define VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME "VK_KHR_variable_pointers"
364
Jesse Hallad250842017-03-10 18:35:38 -0800365// 123
366@extension("VK_MVK_ios_surface") define VK_MVK_IOS_SURFACE_SPEC_VERSION 1
367@extension("VK_MVK_ios_surface") define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface"
368
369// 124
370@extension("VK_MVK_macos_surface") define VK_MVK_MACOS_SURFACE_SPEC_VERSION 1
371@extension("VK_MVK_macos_surface") define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface"
372
Jesse Hall9492f992017-08-28 12:10:06 -0700373// 128
Jesse Hall77726222017-09-19 14:49:27 -0500374@extension("VK_KHR_dedicated_allocation") define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3
Jesse Hall9492f992017-08-28 12:10:06 -0700375@extension("VK_KHR_dedicated_allocation") define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation"
376
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700377// 131
378@extension("VK_EXT_sampler_filter_minmax") define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 1
379@extension("VK_EXT_sampler_filter_minmax") define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax"
380
Jesse Hall9492f992017-08-28 12:10:06 -0700381// 132
382@extension("VK_KHR_storage_buffer_storage_class") define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION 1
383@extension("VK_KHR_storage_buffer_storage_class") define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME "VK_KHR_storage_buffer_storage_class"
384
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700385// 133
386@extension("VK_AMD_gpu_shader_int16") define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 1
387@extension("VK_AMD_gpu_shader_int16") define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME "VK_AMD_gpu_shader_int16"
388
Jesse Hall77726222017-09-19 14:49:27 -0500389// 137
390@extension("VK_AMD_mixed_attachment_samples") define VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION 1
391@extension("VK_AMD_mixed_attachment_samples") define VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME "VK_AMD_mixed_attachment_samples"
392
393// 138
394@extension("VK_AMD_shader_fragment_mask") define VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION 1
395@extension("VK_AMD_shader_fragment_mask") define VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME "VK_AMD_shader_fragment_mask"
396
397// 141
398@extension("VK_EXT_shader_stencil_export") define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1
399@extension("VK_EXT_shader_stencil_export") define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME "VK_EXT_shader_stencil_export"
400
401// 144
402@extension("VK_EXT_sample_locations") define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1
403@extension("VK_EXT_sample_locations") define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations"
404
405// 145
406@extension("VK_KHR_relaxed_block_layout") define VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION 1
407@extension("VK_KHR_relaxed_block_layout") define VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME "VK_KHR_relaxed_block_layout"
408
Jesse Hall9492f992017-08-28 12:10:06 -0700409// 147
410@extension("VK_KHR_get_memory_requirements2") define VK_KHR_GET_MEMORY_REQUIREMENTS2_SPEC_VERSION 1
411@extension("VK_KHR_get_memory_requirements2") define VK_KHR_GET_MEMORY_REQUIREMENTS2_EXTENSION_NAME "VK_KHR_get_memory_requirements2"
412
Jesse Hall076f95d2017-09-20 11:34:47 -0700413// 148
414@extension("VK_KHR_image_format_list") define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1
415@extension("VK_KHR_image_format_list") define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME "VK_KHR_image_format_list"
416
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700417// 149
418@extension("VK_EXT_blend_operation_advanced") define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2
419@extension("VK_EXT_blend_operation_advanced") define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced"
420
421// 150
422@extension("VK_NV_fragment_coverage_to_color") define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1
423@extension("VK_NV_fragment_coverage_to_color") define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME "VK_NV_fragment_coverage_to_color"
424
425// 153
426@extension("VK_NV_framebuffer_mixed_samples") define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1
427@extension("VK_NV_framebuffer_mixed_samples") define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME "VK_NV_framebuffer_mixed_samples"
428
429// 154
430@extension("VK_NV_fill_rectangle") define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1
431@extension("VK_NV_fill_rectangle") define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle"
432
Jesse Hall77726222017-09-19 14:49:27 -0500433// 156
434@extension("VK_EXT_post_depth_coverage") define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1
435@extension("VK_EXT_post_depth_coverage") define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage"
436
Jesse Hall076f95d2017-09-20 11:34:47 -0700437// 157
438@extension("VK_KHR_sampler_ycbcr_conversion") define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 1
439@extension("VK_KHR_sampler_ycbcr_conversion") define VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME "VK_KHR_sampler_ycbcr_conversion"
440
441// 158
442@extension("VK_KHR_bind_memory2") define VK_KHR_BIND_MEMORY2_SPEC_VERSION 1
443@extension("VK_KHR_bind_memory2") define VK_KHR_BIND_MEMORY2_EXTENSION_NAME "VK_KHR_bind_memory2"
444
Jesse Hall77726222017-09-19 14:49:27 -0500445// 161
446@extension("VK_EXT_validation_cache") define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1
447@extension("VK_EXT_validation_cache") define VK_EXT_VALIDATION_CACHE_EXTENSION_NAME "VK_EXT_validation_cache"
448
449// 165
450@extension("VK_EXT_shader_viewport_index_layer") define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION 1
451@extension("VK_EXT_shader_viewport_index_layer") define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME "VK_EXT_shader_viewport_index_layer"
452
Jesse Halld27f6aa2015-08-15 17:58:48 -0700453/////////////
454// Types //
455/////////////
456
Jesse Hall5ae3abb2015-10-08 14:00:22 -0700457type u32 VkBool32
458type u32 VkFlags
459type u64 VkDeviceSize
460type u32 VkSampleMask
461
Jesse Halld27f6aa2015-08-15 17:58:48 -0700462/// Dispatchable handle types.
463@dispatchHandle type u64 VkInstance
464@dispatchHandle type u64 VkPhysicalDevice
465@dispatchHandle type u64 VkDevice
466@dispatchHandle type u64 VkQueue
Jesse Hall3fbc8562015-11-29 22:10:52 -0800467@dispatchHandle type u64 VkCommandBuffer
Jesse Halld27f6aa2015-08-15 17:58:48 -0700468
469/// Non dispatchable handle types.
470@nonDispatchHandle type u64 VkDeviceMemory
Jesse Hall3fbc8562015-11-29 22:10:52 -0800471@nonDispatchHandle type u64 VkCommandPool
Jesse Halld27f6aa2015-08-15 17:58:48 -0700472@nonDispatchHandle type u64 VkBuffer
473@nonDispatchHandle type u64 VkBufferView
474@nonDispatchHandle type u64 VkImage
475@nonDispatchHandle type u64 VkImageView
Jesse Halld27f6aa2015-08-15 17:58:48 -0700476@nonDispatchHandle type u64 VkShaderModule
Jesse Halld27f6aa2015-08-15 17:58:48 -0700477@nonDispatchHandle type u64 VkPipeline
478@nonDispatchHandle type u64 VkPipelineLayout
479@nonDispatchHandle type u64 VkSampler
480@nonDispatchHandle type u64 VkDescriptorSet
481@nonDispatchHandle type u64 VkDescriptorSetLayout
482@nonDispatchHandle type u64 VkDescriptorPool
Jesse Halld27f6aa2015-08-15 17:58:48 -0700483@nonDispatchHandle type u64 VkFence
484@nonDispatchHandle type u64 VkSemaphore
485@nonDispatchHandle type u64 VkEvent
486@nonDispatchHandle type u64 VkQueryPool
487@nonDispatchHandle type u64 VkFramebuffer
488@nonDispatchHandle type u64 VkRenderPass
489@nonDispatchHandle type u64 VkPipelineCache
Jesse Hall1356b0d2015-11-23 17:24:58 -0800490
Jesse Hallad250842017-03-10 18:35:38 -0800491// 1
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800492@extension("VK_KHR_surface") @nonDispatchHandle type u64 VkSurfaceKHR
Jesse Hall1356b0d2015-11-23 17:24:58 -0800493
Jesse Hallad250842017-03-10 18:35:38 -0800494// 2
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800495@extension("VK_KHR_swapchain") @nonDispatchHandle type u64 VkSwapchainKHR
Jesse Hall1356b0d2015-11-23 17:24:58 -0800496
Jesse Hallad250842017-03-10 18:35:38 -0800497// 3
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800498@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayKHR
499@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayModeKHR
Jesse Halld27f6aa2015-08-15 17:58:48 -0700500
Jesse Hallad250842017-03-10 18:35:38 -0800501// 12
Jesse Hall715b86a2016-01-16 16:34:29 -0800502@extension("VK_EXT_debug_report") @nonDispatchHandle type u64 VkDebugReportCallbackEXT
503
Jesse Hallad250842017-03-10 18:35:38 -0800504// 86
505@extension("VK_KHR_descriptor_update_template") @nonDispatchHandle type u64 VkDescriptorUpdateTemplateKHR
506
507// 87
Chris Forbes289cb792016-12-30 15:03:55 +1300508@extension("VK_NVX_device_generated_commands") @nonDispatchHandle type u64 VkObjectTableNVX
509@extension("VK_NVX_device_generated_commands") @nonDispatchHandle type u64 VkIndirectCommandsLayoutNVX
510
Jesse Hall076f95d2017-09-20 11:34:47 -0700511// 157
512@extension("VK_KHR_sampler_ycbcr_conversion") @nonDispatchHandle type u64 VkSamplerYcbcrConversionKHR
513
Jesse Hall77726222017-09-19 14:49:27 -0500514// 161
515@extension("VK_EXT_validation_cache") @nonDispatchHandle type u64 VkValidationCacheEXT
Jesse Halld27f6aa2015-08-15 17:58:48 -0700516
517/////////////
518// Enums //
519/////////////
520
521enum VkImageLayout {
522 VK_IMAGE_LAYOUT_UNDEFINED = 0x00000000, /// Implicit layout an image is when its contents are undefined due to various reasons (e.g. right after creation)
523 VK_IMAGE_LAYOUT_GENERAL = 0x00000001, /// General layout when image can be used for any kind of access
524 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 0x00000002, /// Optimal layout when image is only used for color attachment read/write
525 VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 0x00000003, /// Optimal layout when image is only used for depth/stencil attachment read/write
526 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 0x00000004, /// Optimal layout when image is used for read only depth/stencil attachment and shader access
527 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 -0800528 VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 0x00000006, /// Optimal layout when image is used only as source of transfer operations
529 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 -0700530 VK_IMAGE_LAYOUT_PREINITIALIZED = 0x00000008, /// Initial layout used when the data is populated by the CPU
Jesse Hall1356b0d2015-11-23 17:24:58 -0800531
Jesse Hallad250842017-03-10 18:35:38 -0800532 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -0800533 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002,
Chris Forbesaf3a1112017-01-31 15:37:03 +1300534
Jesse Hall05556b12017-05-18 17:40:25 -0700535 //@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbesaf3a1112017-01-31 15:37:03 +1300536 VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000,
Jesse Hall076f95d2017-09-20 11:34:47 -0700537
538 //@extension("VK_KHR_maintenance2") // 118
539 VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR = 1000117000,
540 VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR = 1000117001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700541}
542
543enum VkAttachmentLoadOp {
544 VK_ATTACHMENT_LOAD_OP_LOAD = 0x00000000,
545 VK_ATTACHMENT_LOAD_OP_CLEAR = 0x00000001,
546 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 0x00000002,
547}
548
549enum VkAttachmentStoreOp {
550 VK_ATTACHMENT_STORE_OP_STORE = 0x00000000,
551 VK_ATTACHMENT_STORE_OP_DONT_CARE = 0x00000001,
552}
553
554enum VkImageType {
555 VK_IMAGE_TYPE_1D = 0x00000000,
556 VK_IMAGE_TYPE_2D = 0x00000001,
557 VK_IMAGE_TYPE_3D = 0x00000002,
558}
559
560enum VkImageTiling {
Jesse Hallc7467b72015-11-29 21:05:26 -0800561 VK_IMAGE_TILING_OPTIMAL = 0x00000000,
562 VK_IMAGE_TILING_LINEAR = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700563}
564
565enum VkImageViewType {
566 VK_IMAGE_VIEW_TYPE_1D = 0x00000000,
567 VK_IMAGE_VIEW_TYPE_2D = 0x00000001,
568 VK_IMAGE_VIEW_TYPE_3D = 0x00000002,
569 VK_IMAGE_VIEW_TYPE_CUBE = 0x00000003,
570 VK_IMAGE_VIEW_TYPE_1D_ARRAY = 0x00000004,
571 VK_IMAGE_VIEW_TYPE_2D_ARRAY = 0x00000005,
572 VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 0x00000006,
573}
574
Jesse Hall3fbc8562015-11-29 22:10:52 -0800575enum VkCommandBufferLevel {
576 VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0x00000000,
577 VK_COMMAND_BUFFER_LEVEL_SECONDARY = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700578}
579
Jesse Hall65ab5522015-11-30 00:07:16 -0800580enum VkComponentSwizzle {
581 VK_COMPONENT_SWIZZLE_IDENTITY = 0x00000000,
582 VK_COMPONENT_SWIZZLE_ZERO = 0x00000001,
583 VK_COMPONENT_SWIZZLE_ONE = 0x00000002,
584 VK_COMPONENT_SWIZZLE_R = 0x00000003,
585 VK_COMPONENT_SWIZZLE_G = 0x00000004,
586 VK_COMPONENT_SWIZZLE_B = 0x00000005,
587 VK_COMPONENT_SWIZZLE_A = 0x00000006,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700588}
589
590enum VkDescriptorType {
591 VK_DESCRIPTOR_TYPE_SAMPLER = 0x00000000,
592 VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 0x00000001,
593 VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 0x00000002,
594 VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 0x00000003,
595 VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 0x00000004,
596 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 0x00000005,
597 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 0x00000006,
598 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 0x00000007,
599 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 0x00000008,
600 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 0x00000009,
601 VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 0x0000000a,
602}
603
Jesse Halld27f6aa2015-08-15 17:58:48 -0700604enum VkQueryType {
605 VK_QUERY_TYPE_OCCLUSION = 0x00000000,
606 VK_QUERY_TYPE_PIPELINE_STATISTICS = 0x00000001, /// Optional
Jesse Halla3a7a1d2015-11-24 11:37:23 -0800607 VK_QUERY_TYPE_TIMESTAMP = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700608}
609
Jesse Halld27f6aa2015-08-15 17:58:48 -0700610enum VkBorderColor {
611 VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0x00000000,
612 VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 0x00000001,
613 VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 0x00000002,
614 VK_BORDER_COLOR_INT_OPAQUE_BLACK = 0x00000003,
615 VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 0x00000004,
616 VK_BORDER_COLOR_INT_OPAQUE_WHITE = 0x00000005,
617}
618
619enum VkPipelineBindPoint {
Jesse Hallc7467b72015-11-29 21:05:26 -0800620 VK_PIPELINE_BIND_POINT_GRAPHICS = 0x00000000,
621 VK_PIPELINE_BIND_POINT_COMPUTE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700622}
623
624enum VkPrimitiveTopology {
625 VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0x00000000,
626 VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 0x00000001,
627 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 0x00000002,
628 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 0x00000003,
629 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 0x00000004,
630 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800631 VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 0x00000006,
632 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 0x00000007,
633 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 0x00000008,
634 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 0x00000009,
Jesse Hall091ed9e2015-11-30 00:55:29 -0800635 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 0x0000000a,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700636}
637
638enum VkSharingMode {
639 VK_SHARING_MODE_EXCLUSIVE = 0x00000000,
640 VK_SHARING_MODE_CONCURRENT = 0x00000001,
641}
642
643enum VkIndexType {
644 VK_INDEX_TYPE_UINT16 = 0x00000000,
645 VK_INDEX_TYPE_UINT32 = 0x00000001,
646}
647
Jesse Hall23ff73f2015-11-29 14:36:39 -0800648enum VkFilter {
649 VK_FILTER_NEAREST = 0x00000000,
650 VK_FILTER_LINEAR = 0x00000001,
Jesse Hall26763382016-05-20 07:13:52 -0700651
Jesse Hallad250842017-03-10 18:35:38 -0800652 //@extension("VK_IMG_filter_cubic") // 16
Jesse Hall26763382016-05-20 07:13:52 -0700653 VK_FILTER_CUBIC_IMG = 1000015000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700654}
655
Jesse Hall23ff73f2015-11-29 14:36:39 -0800656enum VkSamplerMipmapMode {
Jesse Hall23ff73f2015-11-29 14:36:39 -0800657 VK_SAMPLER_MIPMAP_MODE_NEAREST = 0x00000001, /// Choose nearest mip level
658 VK_SAMPLER_MIPMAP_MODE_LINEAR = 0x00000002, /// Linear filter between mip levels
Jesse Halld27f6aa2015-08-15 17:58:48 -0700659}
660
Jesse Hall23ff73f2015-11-29 14:36:39 -0800661enum VkSamplerAddressMode {
Jesse Hallc7467b72015-11-29 21:05:26 -0800662 VK_SAMPLER_ADDRESS_MODE_REPEAT = 0x00000000,
663 VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 0x00000001,
664 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 0x00000002,
665 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 0x00000003,
666 VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700667}
668
669enum VkCompareOp {
670 VK_COMPARE_OP_NEVER = 0x00000000,
671 VK_COMPARE_OP_LESS = 0x00000001,
672 VK_COMPARE_OP_EQUAL = 0x00000002,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800673 VK_COMPARE_OP_LESS_OR_EQUAL = 0x00000003,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700674 VK_COMPARE_OP_GREATER = 0x00000004,
675 VK_COMPARE_OP_NOT_EQUAL = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800676 VK_COMPARE_OP_GREATER_OR_EQUAL = 0x00000006,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700677 VK_COMPARE_OP_ALWAYS = 0x00000007,
678}
679
Jesse Hall65ab5522015-11-30 00:07:16 -0800680enum VkPolygonMode {
681 VK_POLYGON_MODE_FILL = 0x00000000,
682 VK_POLYGON_MODE_LINE = 0x00000001,
683 VK_POLYGON_MODE_POINT = 0x00000002,
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700684
685 //@extension("VK_NV_fill_rectangle") // 154
686 VK_POLYGON_MODE_FILL_RECTANGLE_NV = 1000153000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700687}
688
689enum VkFrontFace {
Jesse Hall3fbc8562015-11-29 22:10:52 -0800690 VK_FRONT_FACE_COUNTER_CLOCKWISE = 0x00000000,
691 VK_FRONT_FACE_CLOCKWISE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700692}
693
Jesse Hall65ab5522015-11-30 00:07:16 -0800694enum VkBlendFactor {
695 VK_BLEND_FACTOR_ZERO = 0x00000000,
696 VK_BLEND_FACTOR_ONE = 0x00000001,
697 VK_BLEND_FACTOR_SRC_COLOR = 0x00000002,
698 VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 0x00000003,
699 VK_BLEND_FACTOR_DST_COLOR = 0x00000004,
700 VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 0x00000005,
701 VK_BLEND_FACTOR_SRC_ALPHA = 0x00000006,
702 VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 0x00000007,
703 VK_BLEND_FACTOR_DST_ALPHA = 0x00000008,
704 VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 0x00000009,
705 VK_BLEND_FACTOR_CONSTANT_COLOR = 0x0000000a,
706 VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 0x0000000b,
707 VK_BLEND_FACTOR_CONSTANT_ALPHA = 0x0000000c,
708 VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 0x0000000d,
709 VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 0x0000000e,
710 VK_BLEND_FACTOR_SRC1_COLOR = 0x0000000f,
711 VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 0x00000010,
712 VK_BLEND_FACTOR_SRC1_ALPHA = 0x00000011,
713 VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 0x00000012,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700714}
715
716enum VkBlendOp {
717 VK_BLEND_OP_ADD = 0x00000000,
718 VK_BLEND_OP_SUBTRACT = 0x00000001,
719 VK_BLEND_OP_REVERSE_SUBTRACT = 0x00000002,
720 VK_BLEND_OP_MIN = 0x00000003,
721 VK_BLEND_OP_MAX = 0x00000004,
Jesse Hall7ba0ac72017-07-07 17:13:23 -0700722
723 //@extension("VK_EXT_blend_operation_advanced") // 149
724 VK_BLEND_OP_ZERO_EXT = 1000148000,
725 VK_BLEND_OP_SRC_EXT = 1000148001,
726 VK_BLEND_OP_DST_EXT = 1000148002,
727 VK_BLEND_OP_SRC_OVER_EXT = 1000148003,
728 VK_BLEND_OP_DST_OVER_EXT = 1000148004,
729 VK_BLEND_OP_SRC_IN_EXT = 1000148005,
730 VK_BLEND_OP_DST_IN_EXT = 1000148006,
731 VK_BLEND_OP_SRC_OUT_EXT = 1000148007,
732 VK_BLEND_OP_DST_OUT_EXT = 1000148008,
733 VK_BLEND_OP_SRC_ATOP_EXT = 1000148009,
734 VK_BLEND_OP_DST_ATOP_EXT = 1000148010,
735 VK_BLEND_OP_XOR_EXT = 1000148011,
736 VK_BLEND_OP_MULTIPLY_EXT = 1000148012,
737 VK_BLEND_OP_SCREEN_EXT = 1000148013,
738 VK_BLEND_OP_OVERLAY_EXT = 1000148014,
739 VK_BLEND_OP_DARKEN_EXT = 1000148015,
740 VK_BLEND_OP_LIGHTEN_EXT = 1000148016,
741 VK_BLEND_OP_COLORDODGE_EXT = 1000148017,
742 VK_BLEND_OP_COLORBURN_EXT = 1000148018,
743 VK_BLEND_OP_HARDLIGHT_EXT = 1000148019,
744 VK_BLEND_OP_SOFTLIGHT_EXT = 1000148020,
745 VK_BLEND_OP_DIFFERENCE_EXT = 1000148021,
746 VK_BLEND_OP_EXCLUSION_EXT = 1000148022,
747 VK_BLEND_OP_INVERT_EXT = 1000148023,
748 VK_BLEND_OP_INVERT_RGB_EXT = 1000148024,
749 VK_BLEND_OP_LINEARDODGE_EXT = 1000148025,
750 VK_BLEND_OP_LINEARBURN_EXT = 1000148026,
751 VK_BLEND_OP_VIVIDLIGHT_EXT = 1000148027,
752 VK_BLEND_OP_LINEARLIGHT_EXT = 1000148028,
753 VK_BLEND_OP_PINLIGHT_EXT = 1000148029,
754 VK_BLEND_OP_HARDMIX_EXT = 1000148030,
755 VK_BLEND_OP_HSL_HUE_EXT = 1000148031,
756 VK_BLEND_OP_HSL_SATURATION_EXT = 1000148032,
757 VK_BLEND_OP_HSL_COLOR_EXT = 1000148033,
758 VK_BLEND_OP_HSL_LUMINOSITY_EXT = 1000148034,
759 VK_BLEND_OP_PLUS_EXT = 1000148035,
760 VK_BLEND_OP_PLUS_CLAMPED_EXT = 1000148036,
761 VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT = 1000148037,
762 VK_BLEND_OP_PLUS_DARKER_EXT = 1000148038,
763 VK_BLEND_OP_MINUS_EXT = 1000148039,
764 VK_BLEND_OP_MINUS_CLAMPED_EXT = 1000148040,
765 VK_BLEND_OP_CONTRAST_EXT = 1000148041,
766 VK_BLEND_OP_INVERT_OVG_EXT = 1000148042,
767 VK_BLEND_OP_RED_EXT = 1000148043,
768 VK_BLEND_OP_GREEN_EXT = 1000148044,
769 VK_BLEND_OP_BLUE_EXT = 1000148045,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700770}
771
772enum VkStencilOp {
773 VK_STENCIL_OP_KEEP = 0x00000000,
774 VK_STENCIL_OP_ZERO = 0x00000001,
775 VK_STENCIL_OP_REPLACE = 0x00000002,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800776 VK_STENCIL_OP_INCREMENT_AND_CLAMP = 0x00000003,
777 VK_STENCIL_OP_DECREMENT_AND_CLAMP = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700778 VK_STENCIL_OP_INVERT = 0x00000005,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800779 VK_STENCIL_OP_INCREMENT_AND_WRAP = 0x00000006,
780 VK_STENCIL_OP_DECREMENT_AND_WRAP = 0x00000007,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700781}
782
783enum VkLogicOp {
784 VK_LOGIC_OP_CLEAR = 0x00000000,
785 VK_LOGIC_OP_AND = 0x00000001,
786 VK_LOGIC_OP_AND_REVERSE = 0x00000002,
787 VK_LOGIC_OP_COPY = 0x00000003,
788 VK_LOGIC_OP_AND_INVERTED = 0x00000004,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800789 VK_LOGIC_OP_NO_OP = 0x00000005,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700790 VK_LOGIC_OP_XOR = 0x00000006,
791 VK_LOGIC_OP_OR = 0x00000007,
792 VK_LOGIC_OP_NOR = 0x00000008,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800793 VK_LOGIC_OP_EQUIVALENT = 0x00000009,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700794 VK_LOGIC_OP_INVERT = 0x0000000a,
795 VK_LOGIC_OP_OR_REVERSE = 0x0000000b,
796 VK_LOGIC_OP_COPY_INVERTED = 0x0000000c,
797 VK_LOGIC_OP_OR_INVERTED = 0x0000000d,
798 VK_LOGIC_OP_NAND = 0x0000000e,
799 VK_LOGIC_OP_SET = 0x0000000f,
800}
801
Jesse Hall3fbc8562015-11-29 22:10:52 -0800802enum VkSystemAllocationScope {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -0800803 VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0x00000000,
Jesse Hall3fbc8562015-11-29 22:10:52 -0800804 VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 0x00000001,
805 VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 0x00000002,
806 VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 0x00000003,
807 VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 0x00000004,
Jesse Hall03b6fe12015-11-24 12:44:21 -0800808}
809
Jesse Hall3fbc8562015-11-29 22:10:52 -0800810enum VkInternalAllocationType {
811 VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0x00000000,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700812}
813
814enum VkPhysicalDeviceType {
815 VK_PHYSICAL_DEVICE_TYPE_OTHER = 0x00000000,
816 VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 0x00000001,
817 VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 0x00000002,
818 VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 0x00000003,
819 VK_PHYSICAL_DEVICE_TYPE_CPU = 0x00000004,
820}
821
Jesse Hall65ab5522015-11-30 00:07:16 -0800822enum VkVertexInputRate {
823 VK_VERTEX_INPUT_RATE_VERTEX = 0x00000000,
824 VK_VERTEX_INPUT_RATE_INSTANCE = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -0700825}
826
827/// Vulkan format definitions
828enum VkFormat {
Jesse Hallf4ab2b12015-11-30 16:04:55 -0800829 VK_FORMAT_UNDEFINED = 0,
830 VK_FORMAT_R4G4_UNORM_PACK8 = 1,
831 VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2,
832 VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3,
833 VK_FORMAT_R5G6B5_UNORM_PACK16 = 4,
834 VK_FORMAT_B5G6R5_UNORM_PACK16 = 5,
835 VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6,
836 VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7,
837 VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8,
838 VK_FORMAT_R8_UNORM = 9,
839 VK_FORMAT_R8_SNORM = 10,
840 VK_FORMAT_R8_USCALED = 11,
841 VK_FORMAT_R8_SSCALED = 12,
842 VK_FORMAT_R8_UINT = 13,
843 VK_FORMAT_R8_SINT = 14,
844 VK_FORMAT_R8_SRGB = 15,
845 VK_FORMAT_R8G8_UNORM = 16,
846 VK_FORMAT_R8G8_SNORM = 17,
847 VK_FORMAT_R8G8_USCALED = 18,
848 VK_FORMAT_R8G8_SSCALED = 19,
849 VK_FORMAT_R8G8_UINT = 20,
850 VK_FORMAT_R8G8_SINT = 21,
851 VK_FORMAT_R8G8_SRGB = 22,
852 VK_FORMAT_R8G8B8_UNORM = 23,
853 VK_FORMAT_R8G8B8_SNORM = 24,
854 VK_FORMAT_R8G8B8_USCALED = 25,
855 VK_FORMAT_R8G8B8_SSCALED = 26,
856 VK_FORMAT_R8G8B8_UINT = 27,
857 VK_FORMAT_R8G8B8_SINT = 28,
858 VK_FORMAT_R8G8B8_SRGB = 29,
859 VK_FORMAT_B8G8R8_UNORM = 30,
860 VK_FORMAT_B8G8R8_SNORM = 31,
861 VK_FORMAT_B8G8R8_USCALED = 32,
862 VK_FORMAT_B8G8R8_SSCALED = 33,
863 VK_FORMAT_B8G8R8_UINT = 34,
864 VK_FORMAT_B8G8R8_SINT = 35,
865 VK_FORMAT_B8G8R8_SRGB = 36,
866 VK_FORMAT_R8G8B8A8_UNORM = 37,
867 VK_FORMAT_R8G8B8A8_SNORM = 38,
868 VK_FORMAT_R8G8B8A8_USCALED = 39,
869 VK_FORMAT_R8G8B8A8_SSCALED = 40,
870 VK_FORMAT_R8G8B8A8_UINT = 41,
871 VK_FORMAT_R8G8B8A8_SINT = 42,
872 VK_FORMAT_R8G8B8A8_SRGB = 43,
873 VK_FORMAT_B8G8R8A8_UNORM = 44,
874 VK_FORMAT_B8G8R8A8_SNORM = 45,
875 VK_FORMAT_B8G8R8A8_USCALED = 46,
876 VK_FORMAT_B8G8R8A8_SSCALED = 47,
877 VK_FORMAT_B8G8R8A8_UINT = 48,
878 VK_FORMAT_B8G8R8A8_SINT = 49,
879 VK_FORMAT_B8G8R8A8_SRGB = 50,
880 VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51,
881 VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52,
882 VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53,
883 VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54,
884 VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55,
885 VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56,
886 VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57,
887 VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58,
888 VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59,
889 VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60,
890 VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61,
891 VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62,
892 VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63,
893 VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64,
894 VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65,
895 VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66,
896 VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67,
897 VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68,
898 VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69,
899 VK_FORMAT_R16_UNORM = 70,
900 VK_FORMAT_R16_SNORM = 71,
901 VK_FORMAT_R16_USCALED = 72,
902 VK_FORMAT_R16_SSCALED = 73,
903 VK_FORMAT_R16_UINT = 74,
904 VK_FORMAT_R16_SINT = 75,
905 VK_FORMAT_R16_SFLOAT = 76,
906 VK_FORMAT_R16G16_UNORM = 77,
907 VK_FORMAT_R16G16_SNORM = 78,
908 VK_FORMAT_R16G16_USCALED = 79,
909 VK_FORMAT_R16G16_SSCALED = 80,
910 VK_FORMAT_R16G16_UINT = 81,
911 VK_FORMAT_R16G16_SINT = 82,
912 VK_FORMAT_R16G16_SFLOAT = 83,
913 VK_FORMAT_R16G16B16_UNORM = 84,
914 VK_FORMAT_R16G16B16_SNORM = 85,
915 VK_FORMAT_R16G16B16_USCALED = 86,
916 VK_FORMAT_R16G16B16_SSCALED = 87,
917 VK_FORMAT_R16G16B16_UINT = 88,
918 VK_FORMAT_R16G16B16_SINT = 89,
919 VK_FORMAT_R16G16B16_SFLOAT = 90,
920 VK_FORMAT_R16G16B16A16_UNORM = 91,
921 VK_FORMAT_R16G16B16A16_SNORM = 92,
922 VK_FORMAT_R16G16B16A16_USCALED = 93,
923 VK_FORMAT_R16G16B16A16_SSCALED = 94,
924 VK_FORMAT_R16G16B16A16_UINT = 95,
925 VK_FORMAT_R16G16B16A16_SINT = 96,
926 VK_FORMAT_R16G16B16A16_SFLOAT = 97,
927 VK_FORMAT_R32_UINT = 98,
928 VK_FORMAT_R32_SINT = 99,
929 VK_FORMAT_R32_SFLOAT = 100,
930 VK_FORMAT_R32G32_UINT = 101,
931 VK_FORMAT_R32G32_SINT = 102,
932 VK_FORMAT_R32G32_SFLOAT = 103,
933 VK_FORMAT_R32G32B32_UINT = 104,
934 VK_FORMAT_R32G32B32_SINT = 105,
935 VK_FORMAT_R32G32B32_SFLOAT = 106,
936 VK_FORMAT_R32G32B32A32_UINT = 107,
937 VK_FORMAT_R32G32B32A32_SINT = 108,
938 VK_FORMAT_R32G32B32A32_SFLOAT = 109,
939 VK_FORMAT_R64_UINT = 110,
940 VK_FORMAT_R64_SINT = 111,
941 VK_FORMAT_R64_SFLOAT = 112,
942 VK_FORMAT_R64G64_UINT = 113,
943 VK_FORMAT_R64G64_SINT = 114,
944 VK_FORMAT_R64G64_SFLOAT = 115,
945 VK_FORMAT_R64G64B64_UINT = 116,
946 VK_FORMAT_R64G64B64_SINT = 117,
947 VK_FORMAT_R64G64B64_SFLOAT = 118,
948 VK_FORMAT_R64G64B64A64_UINT = 119,
949 VK_FORMAT_R64G64B64A64_SINT = 120,
950 VK_FORMAT_R64G64B64A64_SFLOAT = 121,
951 VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122,
952 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123,
953 VK_FORMAT_D16_UNORM = 124,
954 VK_FORMAT_X8_D24_UNORM_PACK32 = 125,
955 VK_FORMAT_D32_SFLOAT = 126,
956 VK_FORMAT_S8_UINT = 127,
957 VK_FORMAT_D16_UNORM_S8_UINT = 128,
958 VK_FORMAT_D24_UNORM_S8_UINT = 129,
959 VK_FORMAT_D32_SFLOAT_S8_UINT = 130,
960 VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131,
961 VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132,
962 VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133,
963 VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134,
964 VK_FORMAT_BC2_UNORM_BLOCK = 135,
965 VK_FORMAT_BC2_SRGB_BLOCK = 136,
966 VK_FORMAT_BC3_UNORM_BLOCK = 137,
967 VK_FORMAT_BC3_SRGB_BLOCK = 138,
968 VK_FORMAT_BC4_UNORM_BLOCK = 139,
969 VK_FORMAT_BC4_SNORM_BLOCK = 140,
970 VK_FORMAT_BC5_UNORM_BLOCK = 141,
971 VK_FORMAT_BC5_SNORM_BLOCK = 142,
972 VK_FORMAT_BC6H_UFLOAT_BLOCK = 143,
973 VK_FORMAT_BC6H_SFLOAT_BLOCK = 144,
974 VK_FORMAT_BC7_UNORM_BLOCK = 145,
975 VK_FORMAT_BC7_SRGB_BLOCK = 146,
976 VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147,
977 VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148,
978 VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149,
979 VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150,
980 VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151,
981 VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152,
982 VK_FORMAT_EAC_R11_UNORM_BLOCK = 153,
983 VK_FORMAT_EAC_R11_SNORM_BLOCK = 154,
984 VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155,
985 VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156,
986 VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157,
987 VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158,
988 VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159,
989 VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160,
990 VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161,
991 VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162,
992 VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163,
993 VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164,
994 VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165,
995 VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166,
996 VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167,
997 VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168,
998 VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169,
999 VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170,
1000 VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171,
1001 VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172,
1002 VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173,
1003 VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174,
1004 VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175,
1005 VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176,
1006 VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177,
1007 VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178,
1008 VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179,
1009 VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180,
1010 VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181,
1011 VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182,
1012 VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183,
1013 VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184,
Chris Forbes289cb792016-12-30 15:03:55 +13001014
Jesse Hallad250842017-03-10 18:35:38 -08001015 //@extension("VK_IMG_format_pvrtc") // 28
Jesse Halleb02c472017-02-24 15:13:45 -08001016 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000,
1017 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001,
1018 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002,
1019 VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003,
1020 VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004,
1021 VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005,
1022 VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006,
1023 VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007,
Jesse Hall076f95d2017-09-20 11:34:47 -07001024
1025 //@extension("VK_KHR_sampler_ycbcr_conversion") // 157
1026 VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 1000156000,
1027 VK_FORMAT_B8G8R8G8_422_UNORM_KHR = 1000156001,
1028 VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR = 1000156002,
1029 VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR = 1000156003,
1030 VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR = 1000156004,
1031 VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR = 1000156005,
1032 VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR = 1000156006,
1033 VK_FORMAT_R10X6_UNORM_PACK16_KHR = 1000156007,
1034 VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR = 1000156008,
1035 VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR = 1000156009,
1036 VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR = 1000156010,
1037 VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR = 1000156011,
1038 VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR = 1000156012,
1039 VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR = 1000156013,
1040 VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR = 1000156014,
1041 VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR = 1000156015,
1042 VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR = 1000156016,
1043 VK_FORMAT_R12X4_UNORM_PACK16_KHR = 1000156017,
1044 VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR = 1000156018,
1045 VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR = 1000156019,
1046 VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR = 1000156020,
1047 VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR = 1000156021,
1048 VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR = 1000156022,
1049 VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR = 1000156023,
1050 VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR = 1000156024,
1051 VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR = 1000156025,
1052 VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR = 1000156026,
1053 VK_FORMAT_G16B16G16R16_422_UNORM_KHR = 1000156027,
1054 VK_FORMAT_B16G16R16G16_422_UNORM_KHR = 1000156028,
1055 VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR = 1000156029,
1056 VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR = 1000156030,
1057 VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR = 1000156031,
1058 VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR = 1000156032,
1059 VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR = 1000156033,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001060}
1061
Jesse Halld27f6aa2015-08-15 17:58:48 -07001062/// Structure type enumerant
1063enum VkStructureType {
1064 VK_STRUCTURE_TYPE_APPLICATION_INFO = 0,
Jesse Hallc7467b72015-11-29 21:05:26 -08001065 VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1,
1066 VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2,
1067 VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3,
1068 VK_STRUCTURE_TYPE_SUBMIT_INFO = 4,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08001069 VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5,
Jesse Hallc7467b72015-11-29 21:05:26 -08001070 VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6,
1071 VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7,
1072 VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8,
1073 VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001074 VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10,
Jesse Hallc7467b72015-11-29 21:05:26 -08001075 VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11,
1076 VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12,
1077 VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13,
1078 VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14,
1079 VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15,
1080 VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16,
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001081 VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17,
1082 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18,
1083 VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19,
1084 VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20,
1085 VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21,
1086 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22,
1087 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23,
1088 VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24,
1089 VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25,
1090 VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26,
1091 VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27,
1092 VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28,
1093 VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29,
1094 VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30,
1095 VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31,
1096 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32,
1097 VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08001098 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34,
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001099 VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35,
1100 VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36,
1101 VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37,
1102 VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38,
1103 VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08001104 VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40,
Jesse Hall3dd678a2016-01-08 21:52:01 -08001105 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41,
1106 VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42,
1107 VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43,
1108 VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44,
1109 VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45,
1110 VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46,
1111 VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47,
1112 VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48,
Jesse Hall1356b0d2015-11-23 17:24:58 -08001113
Jesse Hallad250842017-03-10 18:35:38 -08001114 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -08001115 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000,
1116 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001,
Jesse Hall1356b0d2015-11-23 17:24:58 -08001117
Jesse Hallad250842017-03-10 18:35:38 -08001118 //@extension("VK_KHR_display") // 3
Jesse Hallbd888842015-11-30 21:44:14 -08001119 VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000,
1120 VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001,
Jesse Hall1356b0d2015-11-23 17:24:58 -08001121
Jesse Hallad250842017-03-10 18:35:38 -08001122 //@extension("VK_KHR_display_swapchain") // 4
Jesse Hallbd888842015-11-30 21:44:14 -08001123 VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR = 1000003000,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001124
Jesse Hallad250842017-03-10 18:35:38 -08001125 //@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001126 VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000,
1127
Jesse Hallad250842017-03-10 18:35:38 -08001128 //@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001129 VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000,
1130
Jesse Hallad250842017-03-10 18:35:38 -08001131 //@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001132 VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000,
1133
Jesse Hallad250842017-03-10 18:35:38 -08001134 //@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001135 VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000,
1136
Jesse Hallad250842017-03-10 18:35:38 -08001137 //@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001138 VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000,
1139
Jesse Hallad250842017-03-10 18:35:38 -08001140 //@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08001141 VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000,
Jesse Hall543a7ff2016-01-08 16:38:30 -08001142
Jesse Hallad250842017-03-10 18:35:38 -08001143 //@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08001144 VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID = 1000010000,
Chris Forbes8e4438b2016-12-07 16:26:49 +13001145 VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID = 1000010001,
Chris Forbes1d4e5542017-02-15 19:38:50 +13001146 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID = 1000010002,
Chia-I Wub262ddc2016-03-22 07:38:20 +08001147
Jesse Hallad250842017-03-10 18:35:38 -08001148 //@extension("VK_EXT_debug_report") // 12
Jesse Hall26763382016-05-20 07:13:52 -07001149 VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000,
1150
Jesse Hallad250842017-03-10 18:35:38 -08001151 //@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07001152 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000,
1153
Jesse Hallad250842017-03-10 18:35:38 -08001154 //@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07001155 VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000,
Jesse Hall26763382016-05-20 07:13:52 -07001156 VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001,
Jesse Hall26763382016-05-20 07:13:52 -07001157 VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002,
Jesse Hall56d386a2016-07-26 15:20:40 -07001158
Jesse Hallad250842017-03-10 18:35:38 -08001159 //@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07001160 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000,
Jesse Hall56d386a2016-07-26 15:20:40 -07001161 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001,
Jesse Hall56d386a2016-07-26 15:20:40 -07001162 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002,
Chris Forbes289cb792016-12-30 15:03:55 +13001163
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001164 //@extension("VK_AMD_texture_gather_bias_lod") // 42
1165 VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000,
1166
Jesse Hallad250842017-03-10 18:35:38 -08001167 //@extension("VK_KHX_multiview") // 54
1168 VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX = 1000053000,
1169 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX = 1000053001,
1170 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX = 1000053002,
1171
1172 //@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08001173 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000,
1174 VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001,
Chris Forbes289cb792016-12-30 15:03:55 +13001175
Jesse Hallad250842017-03-10 18:35:38 -08001176 //@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08001177 VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000,
1178 VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001,
Chris Forbes289cb792016-12-30 15:03:55 +13001179
Jesse Hallad250842017-03-10 18:35:38 -08001180 //@extension("VK_NV_win32_keyed_mutex") // 59
Chris Forbes289cb792016-12-30 15:03:55 +13001181 VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000,
1182
Jesse Hallad250842017-03-10 18:35:38 -08001183 //@extension("VK_KHR_get_physical_device_properties2") // 60
Jesse Hall889cd9a2017-02-25 22:12:23 -08001184 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000,
1185 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001,
1186 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002,
1187 VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003,
1188 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004,
1189 VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005,
1190 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006,
1191 VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007,
Chris Forbes1194ede2016-12-30 16:29:25 +13001192 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008,
1193
Jesse Hallad250842017-03-10 18:35:38 -08001194 //@extension("VK_KHX_device_group") // 61
1195 VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX = 1000060000,
Jesse Hallad250842017-03-10 18:35:38 -08001196 VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX = 1000060003,
1197 VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX = 1000060004,
1198 VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX = 1000060005,
1199 VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX = 1000060006,
1200 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX = 1000060007,
1201 VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX = 1000060008,
1202 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX = 1000060009,
1203 VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX = 1000060010,
1204 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX = 1000060011,
1205 VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX = 1000060012,
Jesse Hall076f95d2017-09-20 11:34:47 -07001206 VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHX = 1000060013,
1207 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHX = 1000060014,
Jesse Hallad250842017-03-10 18:35:38 -08001208
1209 //@extension("VK_EXT_validation_flags") // 62
Jesse Halleb02c472017-02-24 15:13:45 -08001210 VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000,
Chris Forbes289cb792016-12-30 15:03:55 +13001211
Jesse Hallad250842017-03-10 18:35:38 -08001212 //@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08001213 VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000,
1214
Jesse Hallad250842017-03-10 18:35:38 -08001215 //@extension("VK_KHX_device_group_creation") // 71
1216 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX = 1000070000,
1217 VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX = 1000070001,
1218
Jesse Hall9492f992017-08-28 12:10:06 -07001219 //@extension("VK_KHR_external_memory_capabilities") // 72
1220 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR = 1000071000,
1221 VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR = 1000071001,
1222 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR = 1000071002,
1223 VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR = 1000071003,
1224 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR = 1000071004,
Jesse Hallad250842017-03-10 18:35:38 -08001225
Jesse Hall9492f992017-08-28 12:10:06 -07001226 //@extension("VK_KHR_external_memory") // 73
1227 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR = 1000072000,
1228 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR = 1000072001,
1229 VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR = 1000072002,
Jesse Hallad250842017-03-10 18:35:38 -08001230
Jesse Hall9492f992017-08-28 12:10:06 -07001231 //@extension("VK_KHR_external_memory_win32") // 74
1232 VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000,
1233 VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001,
1234 VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002,
Jesse Hallad250842017-03-10 18:35:38 -08001235
Jesse Hall9492f992017-08-28 12:10:06 -07001236 //@extension("VK_KHR_external_memory_fd") // 75
1237 VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000,
1238 VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001,
Jesse Hallad250842017-03-10 18:35:38 -08001239
Jesse Hall9492f992017-08-28 12:10:06 -07001240 //@extension("VK_KHR_win32_keyed_mutex") // 76
1241 VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000,
Jesse Hallad250842017-03-10 18:35:38 -08001242
Jesse Hall9492f992017-08-28 12:10:06 -07001243 //@extension("VK_KHR_external_semaphore_capabilities") // 77
1244 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR = 1000076000,
1245 VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR = 1000076001,
Jesse Hallad250842017-03-10 18:35:38 -08001246
Jesse Hall9492f992017-08-28 12:10:06 -07001247 //@extension("VK_KHR_external_semaphore") // 78
1248 VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR = 1000077000,
Jesse Hallad250842017-03-10 18:35:38 -08001249
Jesse Hall9492f992017-08-28 12:10:06 -07001250 //@extension("VK_KHR_external_semaphore_win32") // 79
1251 VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000,
1252 VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001,
1253 VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002,
Jesse Hallad250842017-03-10 18:35:38 -08001254
Jesse Hall9492f992017-08-28 12:10:06 -07001255 //@extension("VK_KHR_external_semaphore_fd") // 80
1256 VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000,
1257 VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001,
Jesse Hallad250842017-03-10 18:35:38 -08001258
1259 //@extension("VK_KHR_push_descriptor") // 81
1260 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000,
1261
Jesse Hall9492f992017-08-28 12:10:06 -07001262 //@extension("VK_KHR_16bit_storage") // 84
1263 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR = 1000083000,
1264
Jesse Hallad250842017-03-10 18:35:38 -08001265 //@extension("VK_KHR_incremental_present") // 85
Jesse Hall889cd9a2017-02-25 22:12:23 -08001266 VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000,
Chris Forbes289cb792016-12-30 15:03:55 +13001267
Jesse Hallad250842017-03-10 18:35:38 -08001268 //@extension("VK_KHR_descriptor_update_template") // 86
1269 VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000,
1270
1271 //@extension("VK_NVX_device_generated_commands") // 87
Jesse Halleb02c472017-02-24 15:13:45 -08001272 VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000,
1273 VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001,
1274 VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = 1000086002,
1275 VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = 1000086003,
1276 VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004,
1277 VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001278
Jesse Hallad250842017-03-10 18:35:38 -08001279 //@extension("VK_NV_clip_space_w_scaling") // 88
1280 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000,
1281
1282 //@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77726222017-09-19 14:49:27 -05001283 VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001284
Jesse Hallad250842017-03-10 18:35:38 -08001285 //@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001286 VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000,
1287 VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001,
1288 VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002,
1289 VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003,
Jesse Hallad250842017-03-10 18:35:38 -08001290
1291 //@extension("VK_GOOGLE_display_timing") // 93
1292 VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000,
1293
1294 //@extension("VK_NVX_multiview_per_view_attributes") // 98
1295 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000,
1296
1297 //@extension("VK_NV_viewport_swizzle") // 99
1298 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000,
1299
1300 //@extension("VK_EXT_discard_rectangles") // 100
1301 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000,
1302 VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001,
1303
Jesse Hallfdc8ab32017-03-10 21:01:57 -08001304 //@extension("VK_EXT_hdr_metadata") // 106
1305 VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000,
1306
Jesse Hall05556b12017-05-18 17:40:25 -07001307 //@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbese2d3ee12017-03-16 16:10:15 +13001308 VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000,
1309
Jesse Hall9492f992017-08-28 12:10:06 -07001310 //@extension("VK_KHR_external_fence_capabilities") // 113
1311 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR = 1000112000,
1312 VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR = 1000112001,
1313
1314 //@extension("VK_KHR_external_fence") // 114
1315 VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR = 1000113000,
1316
1317 //@extension("VK_KHR_external_fence_win32") // 115
1318 VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000,
1319 VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001,
1320 VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002,
1321
1322 //@extension("VK_KHR_external_fence_fd") // 117
1323 VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000,
1324 VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001,
1325
Jesse Hall076f95d2017-09-20 11:34:47 -07001326 //@extension("VK_KHR_maintenance2") // 118
1327 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR = 1000117000,
1328 VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR = 1000117001,
1329 VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR = 1000117002,
1330 VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003,
1331
Jesse Hall05556b12017-05-18 17:40:25 -07001332 //@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13001333 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000,
1334 VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001,
1335 VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002,
1336
Jesse Hall9492f992017-08-28 12:10:06 -07001337 //@extension("VK_KHR_variable_pointers") // 121
1338 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000,
1339
Jesse Hallad250842017-03-10 18:35:38 -08001340 //@extension("VK_MVK_ios_surface") // 123
1341 VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000,
1342
1343 //@extension("VK_MVK_macos_surface") // 124
1344 VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001345
Jesse Hall9492f992017-08-28 12:10:06 -07001346 //@extension("VK_KHR_dedicated_allocation") // 128
1347 VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR = 1000127000,
1348 VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR = 1000127001,
1349
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001350 //@extension("VK_EXT_sampler_filter_minmax") // 131
1351 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000,
1352 VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001,
1353
Jesse Hall77726222017-09-19 14:49:27 -05001354 //@extension("VK_EXT_sample_locations") // 144
1355 VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000,
1356 VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001,
1357 VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002,
1358 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003,
1359 VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004,
1360
Jesse Hall9492f992017-08-28 12:10:06 -07001361 //@extension("VK_KHR_get_memory_requirements2") // 147
1362 VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146000,
1363 VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146001,
1364 VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR = 1000146002,
1365 VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR = 1000146003,
1366 VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR = 1000146004,
1367
Jesse Hall076f95d2017-09-20 11:34:47 -07001368 //@extension("VK_KHR_image_format_list") // 148
1369 VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR = 1000147000,
1370
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001371 //@extension("VK_EXT_blend_operation_advanced") // 149
1372 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000,
1373 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001,
1374 VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002,
1375
1376 //@extension("VK_NV_fragment_coverage_to_color") // 150
1377 VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000,
1378
Jesse Hall77726222017-09-19 14:49:27 -05001379 //@extension("VK_NV_framebuffer_mixed_samples") // 153
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001380 VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000,
Jesse Hall77726222017-09-19 14:49:27 -05001381
Jesse Hall076f95d2017-09-20 11:34:47 -07001382 //@extension("VK_KHR_sampler_ycbcr_conversion") // 157
1383 VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR = 1000156000,
1384 VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR = 1000156001,
1385 VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR = 1000156002,
1386 VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR = 1000156003,
1387 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004,
1388 VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR = 1000156005,
1389
1390 //@extension("VK_KHR_bind_memory2") // 158
1391 VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR = 1000157000,
1392 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR = 1000157001,
1393
Jesse Hall77726222017-09-19 14:49:27 -05001394 //@extension("VK_EXT_validation_cache") // 161
1395 VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000,
1396 VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001397}
1398
Jesse Hall65ab5522015-11-30 00:07:16 -08001399enum VkSubpassContents {
1400 VK_SUBPASS_CONTENTS_INLINE = 0x00000000,
1401 VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001402}
1403
Jesse Hall543a7ff2016-01-08 16:38:30 -08001404enum VkPipelineCacheHeaderVersion {
1405 VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1,
1406}
1407
Jesse Hallbd888842015-11-30 21:44:14 -08001408@lastUnused(-11)
Jesse Halld27f6aa2015-08-15 17:58:48 -07001409/// Error and return codes
1410enum VkResult {
1411 // Return codes for successful operation execution (positive values)
Jesse Hallbd888842015-11-30 21:44:14 -08001412 VK_SUCCESS = 0,
1413 VK_NOT_READY = 1,
1414 VK_TIMEOUT = 2,
1415 VK_EVENT_SET = 3,
1416 VK_EVENT_RESET = 4,
1417 VK_INCOMPLETE = 5,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001418
Jesse Hallad250842017-03-10 18:35:38 -08001419 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -08001420 VK_SUBOPTIMAL_KHR = 1000001003,
Jesse Hall1356b0d2015-11-23 17:24:58 -08001421
Jesse Halld27f6aa2015-08-15 17:58:48 -07001422 // Error codes (negative values)
Jesse Hallbd888842015-11-30 21:44:14 -08001423 VK_ERROR_OUT_OF_HOST_MEMORY = 0xFFFFFFFF, // -1
1424 VK_ERROR_OUT_OF_DEVICE_MEMORY = 0xFFFFFFFE, // -2
1425 VK_ERROR_INITIALIZATION_FAILED = 0xFFFFFFFD, // -3
1426 VK_ERROR_DEVICE_LOST = 0xFFFFFFFC, // -4
1427 VK_ERROR_MEMORY_MAP_FAILED = 0xFFFFFFFB, // -5
1428 VK_ERROR_LAYER_NOT_PRESENT = 0xFFFFFFFA, // -6
1429 VK_ERROR_EXTENSION_NOT_PRESENT = 0xFFFFFFF9, // -7
1430 VK_ERROR_FEATURE_NOT_PRESENT = 0xFFFFFFF8, // -8
1431 VK_ERROR_INCOMPATIBLE_DRIVER = 0xFFFFFFF7, // -9
1432 VK_ERROR_TOO_MANY_OBJECTS = 0xFFFFFFF6, // -10
1433 VK_ERROR_FORMAT_NOT_SUPPORTED = 0xFFFFFFF5, // -11
Jesse Hall56d386a2016-07-26 15:20:40 -07001434 VK_ERROR_FRAGMENTED_POOL = 0xFFFFFFF4, // -12
Jesse Hall1356b0d2015-11-23 17:24:58 -08001435
Jesse Hallad250842017-03-10 18:35:38 -08001436 //@extension("VK_KHR_surface") // 1
Jesse Hallbd888842015-11-30 21:44:14 -08001437 VK_ERROR_SURFACE_LOST_KHR = 0xC4653600, // -1000000000
Jesse Hallad250842017-03-10 18:35:38 -08001438 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = 0xC46535FF, // -1000000001
Jesse Halla6429252015-11-29 18:59:42 -08001439
Jesse Hallad250842017-03-10 18:35:38 -08001440 //@extension("VK_KHR_swapchain") // 2
Jesse Hallbd888842015-11-30 21:44:14 -08001441 VK_ERROR_OUT_OF_DATE_KHR = 0xC4653214, // -1000001004
Jesse Hall1356b0d2015-11-23 17:24:58 -08001442
Jesse Hallad250842017-03-10 18:35:38 -08001443 //@extension("VK_KHR_display_swapchain") // 4
Jesse Hallbd888842015-11-30 21:44:14 -08001444 VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = 0xC4652A47, // -1000003001
Jesse Hall1356b0d2015-11-23 17:24:58 -08001445
Jesse Hallad250842017-03-10 18:35:38 -08001446 //@extension("VK_EXT_debug_report") // 12
Jesse Hall543a7ff2016-01-08 16:38:30 -08001447 VK_ERROR_VALIDATION_FAILED_EXT = 0xC4650B07, // -1000011001
Jesse Hall26763382016-05-20 07:13:52 -07001448
Jesse Hallad250842017-03-10 18:35:38 -08001449 //@extension("VK_NV_glsl_shader") // 13
Jesse Hall26763382016-05-20 07:13:52 -07001450 VK_ERROR_INVALID_SHADER_NV = 0xC4650720, // -1000012000
Jesse Hall77ad05b2017-03-10 22:02:20 -08001451
Jesse Hallad250842017-03-10 18:35:38 -08001452 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08001453 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = 0xC4642878, // -1000069000
Jesse Hallad250842017-03-10 18:35:38 -08001454
Jesse Hall9492f992017-08-28 12:10:06 -07001455 //@extension("VK_KHR_external_memory") // 73
1456 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR = 0xC4641CBD, // -1000072003
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001457}
1458
1459enum VkDynamicState {
1460 VK_DYNAMIC_STATE_VIEWPORT = 0x00000000,
1461 VK_DYNAMIC_STATE_SCISSOR = 0x00000001,
1462 VK_DYNAMIC_STATE_LINE_WIDTH = 0x00000002,
1463 VK_DYNAMIC_STATE_DEPTH_BIAS = 0x00000003,
1464 VK_DYNAMIC_STATE_BLEND_CONSTANTS = 0x00000004,
1465 VK_DYNAMIC_STATE_DEPTH_BOUNDS = 0x00000005,
1466 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 0x00000006,
1467 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 0x00000007,
1468 VK_DYNAMIC_STATE_STENCIL_REFERENCE = 0x00000008,
Jesse Hallad250842017-03-10 18:35:38 -08001469
1470 //@extension("VK_NV_clip_space_w_scaling") // 88
1471 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000,
1472
1473 //@extension("VK_EXT_discard_rectangles") // 100
1474 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000,
Jesse Hall77726222017-09-19 14:49:27 -05001475
1476 //@extension("VK_EXT_sample_locations") // 144
1477 VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001478}
1479
Jesse Hall05556b12017-05-18 17:40:25 -07001480enum VkObjectType {
1481 VK_OBJECT_TYPE_UNKNOWN = 0,
1482 VK_OBJECT_TYPE_INSTANCE = 1,
1483 VK_OBJECT_TYPE_PHYSICAL_DEVICE = 2,
1484 VK_OBJECT_TYPE_DEVICE = 3,
1485 VK_OBJECT_TYPE_QUEUE = 4,
1486 VK_OBJECT_TYPE_SEMAPHORE = 5,
1487 VK_OBJECT_TYPE_COMMAND_BUFFER = 6,
1488 VK_OBJECT_TYPE_FENCE = 7,
1489 VK_OBJECT_TYPE_DEVICE_MEMORY = 8,
1490 VK_OBJECT_TYPE_BUFFER = 9,
1491 VK_OBJECT_TYPE_IMAGE = 10,
1492 VK_OBJECT_TYPE_EVENT = 11,
1493 VK_OBJECT_TYPE_QUERY_POOL = 12,
1494 VK_OBJECT_TYPE_BUFFER_VIEW = 13,
1495 VK_OBJECT_TYPE_IMAGE_VIEW = 14,
1496 VK_OBJECT_TYPE_SHADER_MODULE = 15,
1497 VK_OBJECT_TYPE_PIPELINE_CACHE = 16,
1498 VK_OBJECT_TYPE_PIPELINE_LAYOUT = 17,
1499 VK_OBJECT_TYPE_RENDER_PASS = 18,
1500 VK_OBJECT_TYPE_PIPELINE = 19,
1501 VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT = 20,
1502 VK_OBJECT_TYPE_SAMPLER = 21,
1503 VK_OBJECT_TYPE_DESCRIPTOR_POOL = 22,
1504 VK_OBJECT_TYPE_DESCRIPTOR_SET = 23,
1505 VK_OBJECT_TYPE_FRAMEBUFFER = 24,
1506 VK_OBJECT_TYPE_COMMAND_POOL = 25,
1507
1508 //@extension("VK_KHR_surface") // 1
1509 VK_OBJECT_TYPE_SURFACE_KHR = 1000000000,
1510
1511 //@extension("VK_KHR_swapchain") // 2
1512 VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000,
1513
1514 //@extension("VK_KHR_display") // 3
1515 VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000,
1516 VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001,
1517
1518 //@extension("VK_KHR_debug_report") // 12
1519 VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000,
1520
1521 //@extension("VK_KHR_descriptor_update_template") // 86
1522 VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = 1000085000,
1523
1524 //@extension("VK_NVX_device_generated_commands") // 87
1525 VK_OBJECT_TYPE_OBJECT_TABLE_NVX = 1000086000,
1526 VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX = 1000086001,
Jesse Hall77726222017-09-19 14:49:27 -05001527
Jesse Hall076f95d2017-09-20 11:34:47 -07001528 //@extension("VK_KHR_sampler_ycbcr_conversion") // 157
1529 VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = 1000156000,
1530
Jesse Hall77726222017-09-19 14:49:27 -05001531 //@extension("VK_EXT_validation_cache") // 161
1532 VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000,
Jesse Hall05556b12017-05-18 17:40:25 -07001533}
1534
Jesse Hallad250842017-03-10 18:35:38 -08001535@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08001536enum VkPresentModeKHR {
1537 VK_PRESENT_MODE_IMMEDIATE_KHR = 0x00000000,
1538 VK_PRESENT_MODE_MAILBOX_KHR = 0x00000001,
1539 VK_PRESENT_MODE_FIFO_KHR = 0x00000002,
Jesse Hall03b6fe12015-11-24 12:44:21 -08001540 VK_PRESENT_MODE_FIFO_RELAXED_KHR = 0x00000003,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001541
Jesse Hall05556b12017-05-18 17:40:25 -07001542 //@extension("VK_KHR_shared_presentable_image") // 112
Jesse Hall77ad05b2017-03-10 22:02:20 -08001543 VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000,
1544 VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001,
Michael Lentine88594d72015-11-12 12:49:45 -08001545}
1546
Jesse Hallad250842017-03-10 18:35:38 -08001547@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08001548enum VkColorSpaceKHR {
1549 VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0x00000000,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001550
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001551 //@extension("VK_EXT_swapchain_colorspace") // 105
1552 VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001,
1553 VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002,
1554 VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003,
1555 VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004,
1556 VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005,
1557 VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006,
1558 VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007,
1559 VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008,
1560 VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009,
1561 VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010,
Courtney Goeltzenleuchter7f558ed2017-01-23 17:15:24 -07001562 VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011,
1563 VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012,
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001564 VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013,
Jesse Hall77726222017-09-19 14:49:27 -05001565 VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT = 1000104014,
Michael Lentine88594d72015-11-12 12:49:45 -08001566}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001567
Jesse Hallad250842017-03-10 18:35:38 -08001568@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08001569enum VkDebugReportObjectTypeEXT {
1570 VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0,
1571 VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1,
1572 VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2,
1573 VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3,
1574 VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4,
1575 VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5,
1576 VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6,
1577 VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7,
1578 VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8,
1579 VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9,
1580 VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10,
1581 VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11,
1582 VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12,
1583 VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13,
1584 VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14,
1585 VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15,
1586 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16,
1587 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17,
1588 VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18,
1589 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19,
1590 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20,
1591 VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21,
1592 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22,
1593 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23,
1594 VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24,
1595 VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25,
1596 VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26,
1597 VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001598 VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28,
Chris Forbes289cb792016-12-30 15:03:55 +13001599 VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29,
1600 VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30,
1601 VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31,
1602 VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32,
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001603
Jesse Hall77726222017-09-19 14:49:27 -05001604 //extension("VK_EXT_validation_cache") // 161
1605 VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT = 33,
1606
Jesse Hallf5ad48b2017-03-20 13:09:19 -07001607 //extension("VK_KHR_descriptor_update_template") // 86
1608 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000,
Jesse Hall77726222017-09-19 14:49:27 -05001609
Jesse Hall076f95d2017-09-20 11:34:47 -07001610 //@extension("VK_KHR_sampler_ycbcr_conversion") // 157
1611 VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000,
Jesse Hall715b86a2016-01-16 16:34:29 -08001612}
1613
Jesse Hallad250842017-03-10 18:35:38 -08001614@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07001615enum VkRasterizationOrderAMD {
1616 VK_RASTERIZATION_ORDER_STRICT_AMD = 0,
1617 VK_RASTERIZATION_ORDER_RELAXED_AMD = 1,
1618}
1619
Jesse Hallad250842017-03-10 18:35:38 -08001620@extension("VK_EXT_validation_flags") // 62
Chris Forbes289cb792016-12-30 15:03:55 +13001621enum VkValidationCheckEXT {
1622 VK_VALIDATION_CHECK_ALL_EXT = 0,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001623 VK_VALIDATION_CHECK_SHADERS_EXT = 1,
Chris Forbes289cb792016-12-30 15:03:55 +13001624}
1625
Jesse Hallad250842017-03-10 18:35:38 -08001626@extension("VK_KHR_descriptor_update_template") // 86
1627enum VkDescriptorUpdateTemplateTypeKHR {
1628 VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0,
1629 VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1,
1630}
1631
1632@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001633enum VkIndirectCommandsTokenTypeNVX {
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001634 VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX = 0,
1635 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX = 1,
1636 VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX = 2,
1637 VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX = 3,
1638 VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX = 4,
1639 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX = 5,
1640 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX = 6,
1641 VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX = 7,
Chris Forbes289cb792016-12-30 15:03:55 +13001642}
1643
Jesse Hallad250842017-03-10 18:35:38 -08001644@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001645enum VkObjectEntryTypeNVX {
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001646 VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX = 0,
1647 VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX = 1,
1648 VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX = 2,
1649 VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX = 3,
1650 VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX = 4,
Chris Forbes289cb792016-12-30 15:03:55 +13001651}
Jesse Hall715b86a2016-01-16 16:34:29 -08001652
Jesse Hallad250842017-03-10 18:35:38 -08001653@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001654enum VkDisplayPowerStateEXT {
1655 VK_DISPLAY_POWER_STATE_OFF_EXT = 0,
1656 VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1,
1657 VK_DISPLAY_POWER_STATE_ON_EXT = 2,
1658}
1659
Jesse Hallad250842017-03-10 18:35:38 -08001660@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001661enum VkDeviceEventTypeEXT {
1662 VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0,
1663}
1664
Jesse Hallad250842017-03-10 18:35:38 -08001665@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08001666enum VkDisplayEventTypeEXT {
1667 VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0,
1668}
1669
Jesse Hallad250842017-03-10 18:35:38 -08001670@extension("VK_NV_viewport_swizzle") // 99
1671enum VkViewportCoordinateSwizzleNV {
1672 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0,
1673 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1,
1674 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2,
1675 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3,
1676 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4,
1677 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5,
1678 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6,
1679 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7,
1680}
1681
1682@extension("VK_EXT_discard_rectangles") // 100
1683enum VkDiscardRectangleModeEXT {
1684 VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0,
1685 VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1,
1686}
1687
Jesse Hall076f95d2017-09-20 11:34:47 -07001688@extension("VK_KHR_maintenance2") // 118
1689enum VkPointClippingBehaviorKHR {
1690 VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR = 0,
1691 VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR = 1,
1692}
1693
1694@extension("VK_KHR_maintenance2") // 118
1695enum VkTessellationDomainOriginKHR {
1696 VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR = 0,
1697 VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR = 1,
1698}
1699
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001700@extension("VK_EXT_sampler_filter_minmax") // 131
1701enum VkSamplerReductionModeEXT {
1702 VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 0,
1703 VK_SAMPLER_REDUCTION_MODE_MIN_EXT = 1,
1704 VK_SAMPLER_REDUCTION_MODE_MAX_EXT = 2,
1705}
1706
1707@extension("VK_EXT_blend_operation_advanced") // 149
1708enum VkBlendOverlapEXT {
1709 VK_BLEND_OVERLAP_UNCORRELATED_EXT = 0,
1710 VK_BLEND_OVERLAP_DISJOINT_EXT = 1,
1711 VK_BLEND_OVERLAP_CONJOINT_EXT = 2,
1712}
1713
1714@extension("VK_NV_framebuffer_mixed_samples") // 153
1715enum VkCoverageModulationModeNV {
1716 VK_COVERAGE_MODULATION_MODE_NONE_NV = 0,
1717 VK_COVERAGE_MODULATION_MODE_RGB_NV = 1,
1718 VK_COVERAGE_MODULATION_MODE_ALPHA_NV = 2,
1719 VK_COVERAGE_MODULATION_MODE_RGBA_NV = 3,
1720}
1721
Jesse Hall076f95d2017-09-20 11:34:47 -07001722@extension("VK_KHR_sampler_ycbcr_conversion") // 157
1723enum VkSamplerYcbcrModelConversionKHR {
1724 VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR = 0,
1725 VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR = 1,
1726 VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR = 2,
1727 VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR = 3,
1728 VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR = 4,
1729}
1730
1731@extension("VK_KHR_sampler_ycbcr_conversion") // 157
1732enum VkSamplerYcbcrRangeKHR {
1733 VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR = 0,
1734 VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR = 1,
1735}
1736
1737@extension("VK_KHR_sampler_ycbcr_conversion") // 157
1738enum VkChromaLocationKHR {
1739 VK_CHROMA_LOCATION_COSITED_EVEN_KHR = 0,
1740 VK_CHROMA_LOCATION_MIDPOINT_KHR = 1,
1741}
1742
Jesse Hall77726222017-09-19 14:49:27 -05001743@extension("VK_EXT_validation_cache") // 161
1744enum VkValidationCacheHeaderVersionEXT {
1745 VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT = 1,
1746}
1747
Jesse Halld27f6aa2015-08-15 17:58:48 -07001748/////////////////
1749// Bitfields //
1750/////////////////
1751
Jesse Halld27f6aa2015-08-15 17:58:48 -07001752/// Queue capabilities
Jesse Halld8bade02015-11-24 10:24:18 -08001753type VkFlags VkQueueFlags
1754bitfield VkQueueFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001755 VK_QUEUE_GRAPHICS_BIT = 0x00000001, /// Queue supports graphics operations
1756 VK_QUEUE_COMPUTE_BIT = 0x00000002, /// Queue supports compute operations
Jesse Hall65ab5522015-11-30 00:07:16 -08001757 VK_QUEUE_TRANSFER_BIT = 0x00000004, /// Queue supports transfer operations
Jesse Hallb00daad2015-11-29 19:46:20 -08001758 VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008, /// Queue supports sparse resource memory management operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001759}
1760
1761/// Memory properties passed into vkAllocMemory().
Jesse Halld8bade02015-11-24 10:24:18 -08001762type VkFlags VkMemoryPropertyFlags
1763bitfield VkMemoryPropertyFlagBits {
Jesse Halld1af8122015-11-29 23:50:38 -08001764 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001,
1765 VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002,
1766 VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004,
1767 VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008,
1768 VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001769}
1770
1771/// Memory heap flags
Jesse Halld8bade02015-11-24 10:24:18 -08001772type VkFlags VkMemoryHeapFlags
1773bitfield VkMemoryHeapFlagBits {
Jesse Halld1af8122015-11-29 23:50:38 -08001774 VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001,
Jesse Hallad250842017-03-10 18:35:38 -08001775
1776 //@extension("VK_KHX_device_group_creation") // 71
1777 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001778}
1779
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08001780/// Access flags
1781type VkFlags VkAccessFlags
1782bitfield VkAccessFlagBits {
1783 VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001,
1784 VK_ACCESS_INDEX_READ_BIT = 0x00000002,
1785 VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004,
1786 VK_ACCESS_UNIFORM_READ_BIT = 0x00000008,
1787 VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010,
1788 VK_ACCESS_SHADER_READ_BIT = 0x00000020,
1789 VK_ACCESS_SHADER_WRITE_BIT = 0x00000040,
1790 VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080,
1791 VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100,
1792 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200,
1793 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400,
1794 VK_ACCESS_TRANSFER_READ_BIT = 0x00000800,
1795 VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000,
1796 VK_ACCESS_HOST_READ_BIT = 0x00002000,
1797 VK_ACCESS_HOST_WRITE_BIT = 0x00004000,
1798 VK_ACCESS_MEMORY_READ_BIT = 0x00008000,
1799 VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000,
Chris Forbes289cb792016-12-30 15:03:55 +13001800
Jesse Hallad250842017-03-10 18:35:38 -08001801 //@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13001802 VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000,
Chris Forbes289cb792016-12-30 15:03:55 +13001803 VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001804
1805 //@extension("VK_EXT_blend_operation_advanced") // 149
1806 VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001807}
1808
1809/// Buffer usage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001810type VkFlags VkBufferUsageFlags
1811bitfield VkBufferUsageFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -08001812 VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations
1813 VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001814 VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004, /// Can be used as TBO
1815 VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008, /// Can be used as IBO
1816 VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010, /// Can be used as UBO
1817 VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020, /// Can be used as SSBO
1818 VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, /// Can be used as source of fixed function index fetch (index buffer)
1819 VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, /// Can be used as source of fixed function vertex fetch (VBO)
1820 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, /// Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer)
1821}
1822
1823/// Buffer creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001824type VkFlags VkBufferCreateFlags
1825bitfield VkBufferCreateFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001826 VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Buffer should support sparse backing
Jesse Halld27f6aa2015-08-15 17:58:48 -07001827 VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Buffer should support sparse backing with partial residency
1828 VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004, /// Buffer should support constent data access to physical memory blocks mapped into multiple locations of sparse buffers
1829}
1830
1831/// Shader stage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001832type VkFlags VkShaderStageFlags
1833bitfield VkShaderStageFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001834 VK_SHADER_STAGE_VERTEX_BIT = 0x00000001,
Jesse Hallae38f732015-11-19 21:32:50 -08001835 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002,
1836 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001837 VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008,
1838 VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010,
1839 VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020,
Jesse Hallc7467b72015-11-29 21:05:26 -08001840 VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001841
1842 VK_SHADER_STAGE_ALL = 0x7FFFFFFF,
1843}
1844
Jesse Hallfbf97b02015-11-20 14:17:03 -08001845/// Descriptor pool create flags
Jesse Halld8bade02015-11-24 10:24:18 -08001846type VkFlags VkDescriptorPoolCreateFlags
1847bitfield VkDescriptorPoolCreateFlagBits {
Jesse Hallfbf97b02015-11-20 14:17:03 -08001848 VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001,
1849}
1850
1851/// Descriptor pool reset flags
Jesse Halld8bade02015-11-24 10:24:18 -08001852type VkFlags VkDescriptorPoolResetFlags
Jesse Halla6429252015-11-29 18:59:42 -08001853//bitfield VkDescriptorPoolResetFlagBits {
1854//}
Jesse Hallfbf97b02015-11-20 14:17:03 -08001855
Jesse Halld27f6aa2015-08-15 17:58:48 -07001856/// Image usage flags
Jesse Halld8bade02015-11-24 10:24:18 -08001857type VkFlags VkImageUsageFlags
1858bitfield VkImageUsageFlagBits {
Jesse Hall3fbc8562015-11-29 22:10:52 -08001859 VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations
1860 VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations
Jesse Halld27f6aa2015-08-15 17:58:48 -07001861 VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004, /// Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
1862 VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008, /// Can be used as storage image (STORAGE_IMAGE descriptor type)
1863 VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010, /// Can be used as framebuffer color attachment
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001864 VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020, /// Can be used as framebuffer depth/stencil attachment
Jesse Halld27f6aa2015-08-15 17:58:48 -07001865 VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040, /// Image data not needed outside of rendering
1866 VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080, /// Can be used as framebuffer input attachment
1867}
1868
1869/// Image creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001870type VkFlags VkImageCreateFlags
1871bitfield VkImageCreateFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07001872 VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Image should support sparse backing
Jesse Halld27f6aa2015-08-15 17:58:48 -07001873 VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Image should support sparse backing with partial residency
1874 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 -07001875 VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008, /// Allows image views to have different format than the base image
1876 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 -08001877
Jesse Hallad250842017-03-10 18:35:38 -08001878 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08001879 VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 0x00000020,
Jesse Hallad250842017-03-10 18:35:38 -08001880
1881 //@extension("VK_KHX_device_group") // 61
1882 VK_IMAGE_CREATE_BIND_SFR_BIT_KHX = 0x00000040,
Jesse Hall77726222017-09-19 14:49:27 -05001883
1884 //@extension("VK_EXT_sample_locations") // 144
1885 VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000,
Jesse Hall076f95d2017-09-20 11:34:47 -07001886
1887 //@extension("VK_KHR_maintenance2") // 118
1888 VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR = 0x00000080,
1889 VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR = 0x00000100,
1890
1891 //@extension("VK_KHR_sampler_ycbcr_conversion") // 157
1892 VK_IMAGE_CREATE_DISJOINT_BIT_KHR = 0x00000200,
1893
1894 //@extension("VK_KHR_bind_memory2") // 158
1895 VK_IMAGE_CREATE_ALIAS_BIT_KHR = 0x00000400,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001896}
1897
Jesse Hallb00daad2015-11-29 19:46:20 -08001898/// Image view creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001899type VkFlags VkImageViewCreateFlags
Jesse Hallb00daad2015-11-29 19:46:20 -08001900//bitfield VkImageViewCreateFlagBits {
1901//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001902
1903/// Pipeline creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001904type VkFlags VkPipelineCreateFlags
1905bitfield VkPipelineCreateFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001906 VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001,
1907 VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002,
1908 VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004,
Jesse Hallad250842017-03-10 18:35:38 -08001909
1910 //@extension("VK_KHX_device_group") // 61
1911 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX = 0x00000008,
1912 VK_PIPELINE_CREATE_DISPATCH_BASE_KHX = 0x00000010,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001913}
1914
Jesse Hall65ab5522015-11-30 00:07:16 -08001915/// Color component flags
1916type VkFlags VkColorComponentFlags
1917bitfield VkColorComponentFlagBits {
1918 VK_COLOR_COMPONENT_R_BIT = 0x00000001,
1919 VK_COLOR_COMPONENT_G_BIT = 0x00000002,
1920 VK_COLOR_COMPONENT_B_BIT = 0x00000004,
1921 VK_COLOR_COMPONENT_A_BIT = 0x00000008,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001922}
1923
1924/// Fence creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001925type VkFlags VkFenceCreateFlags
1926bitfield VkFenceCreateFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001927 VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001,
1928}
1929
1930/// Semaphore creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001931type VkFlags VkSemaphoreCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001932//bitfield VkSemaphoreCreateFlagBits {
1933//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001934
1935/// Format capability flags
Jesse Halld8bade02015-11-24 10:24:18 -08001936type VkFlags VkFormatFeatureFlags
1937bitfield VkFormatFeatureFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001938 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001, /// Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types)
1939 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002, /// Format can be used for storage images (STORAGE_IMAGE descriptor type)
1940 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004, /// Format supports atomic operations in case it's used for storage images
1941 VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008, /// Format can be used for uniform texel buffers (TBOs)
1942 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010, /// Format can be used for storage texel buffers (IBOs)
1943 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020, /// Format supports atomic operations in case it's used for storage texel buffers
1944 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040, /// Format can be used for vertex buffers (VBOs)
1945 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080, /// Format can be used for color attachment images
1946 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100, /// Format supports blending in case it's used for color attachment images
1947 VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200, /// Format can be used for depth/stencil attachment images
Jesse Hall3fbc8562015-11-29 22:10:52 -08001948 VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400, /// Format can be used as the source image of blits with vkCommandBlitImage
1949 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 -08001950 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000,
Jesse Hall26763382016-05-20 07:13:52 -07001951
Jesse Hallad250842017-03-10 18:35:38 -08001952 //@extension("VK_IMG_filter_cubic") // 16
Jesse Hall26763382016-05-20 07:13:52 -07001953 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000,
Jesse Hall77ad05b2017-03-10 22:02:20 -08001954
Jesse Hallad250842017-03-10 18:35:38 -08001955 //@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08001956 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 0x00004000,
1957 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 0x00008000,
Jesse Hall7ba0ac72017-07-07 17:13:23 -07001958
1959 //@extension("VK_EXT_sampler_filter_minmax") // 131
1960 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT = 0x00010000,
Jesse Hall076f95d2017-09-20 11:34:47 -07001961
1962 //@extension("VK_KHR_sampler_ycbcr_conversion") // 157
1963 VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR = 0x00020000,
1964 VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR = 0x00040000,
1965 VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR = 0x00080000,
1966 VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR = 0x00100000,
1967 VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR = 0x00200000,
1968 VK_FORMAT_FEATURE_DISJOINT_BIT_KHR = 0x00400000,
1969 VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR = 0x00800000,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001970}
1971
1972/// Query control flags
Jesse Halld8bade02015-11-24 10:24:18 -08001973type VkFlags VkQueryControlFlags
1974bitfield VkQueryControlFlagBits {
Jesse Hall65ab5522015-11-30 00:07:16 -08001975 VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001,
Jesse Halld27f6aa2015-08-15 17:58:48 -07001976}
1977
1978/// Query result flags
Jesse Halld8bade02015-11-24 10:24:18 -08001979type VkFlags VkQueryResultFlags
1980bitfield VkQueryResultFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07001981 VK_QUERY_RESULT_64_BIT = 0x00000001, /// Results of the queries are written to the destination buffer as 64-bit values
1982 VK_QUERY_RESULT_WAIT_BIT = 0x00000002, /// Results of the queries are waited on before proceeding with the result copy
1983 VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, /// Besides the results of the query, the availability of the results is also written
1984 VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008, /// Copy the partial results of the query even if the final results aren't available
1985}
1986
1987/// Shader module creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001988type VkFlags VkShaderModuleCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001989//bitfield VkShaderModuleCreateFlagBits {
1990//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001991
Jesse Halld27f6aa2015-08-15 17:58:48 -07001992/// Event creation flags
Jesse Halld8bade02015-11-24 10:24:18 -08001993type VkFlags VkEventCreateFlags
Jesse Halla6429252015-11-29 18:59:42 -08001994//bitfield VkEventCreateFlagBits {
1995//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07001996
Jesse Halla15a4bf2015-11-19 22:48:02 -08001997/// Command buffer usage flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08001998type VkFlags VkCommandBufferUsageFlags
1999bitfield VkCommandBufferUsageFlagBits {
2000 VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001,
2001 VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002,
2002 VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002003}
2004
2005/// Pipeline statistics flags
Jesse Halld8bade02015-11-24 10:24:18 -08002006type VkFlags VkQueryPipelineStatisticFlags
2007bitfield VkQueryPipelineStatisticFlagBits {
Jesse Hallae38f732015-11-19 21:32:50 -08002008 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001, /// Optional
2009 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002, /// Optional
2010 VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004, /// Optional
2011 VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008, /// Optional
2012 VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010, /// Optional
2013 VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020, /// Optional
2014 VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040, /// Optional
2015 VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080, /// Optional
2016 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100, /// Optional
2017 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200, /// Optional
2018 VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400, /// Optional
Jesse Halld27f6aa2015-08-15 17:58:48 -07002019}
2020
2021/// Memory mapping flags
Jesse Halld8bade02015-11-24 10:24:18 -08002022type VkFlags VkMemoryMapFlags
Jesse Halla6429252015-11-29 18:59:42 -08002023//bitfield VkMemoryMapFlagBits {
2024//}
Jesse Halld27f6aa2015-08-15 17:58:48 -07002025
2026/// Bitfield of image aspects
Jesse Halld8bade02015-11-24 10:24:18 -08002027type VkFlags VkImageAspectFlags
2028bitfield VkImageAspectFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002029 VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001,
2030 VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002,
2031 VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004,
2032 VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008,
Jesse Hall076f95d2017-09-20 11:34:47 -07002033
2034 //@extension("VK_KHR_sampler_ycbcr_conversion") // 157
2035 VK_IMAGE_ASPECT_PLANE_0_BIT_KHR = 0x00000010,
2036 VK_IMAGE_ASPECT_PLANE_1_BIT_KHR = 0x00000020,
2037 VK_IMAGE_ASPECT_PLANE_2_BIT_KHR = 0x00000040,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002038}
2039
2040/// Sparse memory bind flags
Jesse Halld8bade02015-11-24 10:24:18 -08002041type VkFlags VkSparseMemoryBindFlags
Jesse Hall091ed9e2015-11-30 00:55:29 -08002042bitfield VkSparseMemoryBindFlagBits {
2043 VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001,
2044}
Jesse Halld27f6aa2015-08-15 17:58:48 -07002045
2046/// Sparse image memory requirements flags
Jesse Halld8bade02015-11-24 10:24:18 -08002047type VkFlags VkSparseImageFormatFlags
2048bitfield VkSparseImageFormatFlagBits {
Jesse Hallb00daad2015-11-29 19:46:20 -08002049 VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001, /// Image uses a single miptail region for all array slices
2050 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.
2051 VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004, /// Image uses a non-standard sparse block size
Jesse Halld27f6aa2015-08-15 17:58:48 -07002052}
2053
2054/// Pipeline stages
Jesse Halld8bade02015-11-24 10:24:18 -08002055type VkFlags VkPipelineStageFlags
2056bitfield VkPipelineStageFlagBits {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002057 VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001, /// Before subsequent commands are processed
2058 VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002, /// Draw/DispatchIndirect command fetch
2059 VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004, /// Vertex/index fetch
2060 VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008, /// Vertex shading
Jesse Hallae38f732015-11-19 21:32:50 -08002061 VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010, /// Tessellation control shading
2062 VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020, /// Tessellation evaluation shading
Jesse Halld27f6aa2015-08-15 17:58:48 -07002063 VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040, /// Geometry shading
2064 VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080, /// Fragment shading
2065 VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100, /// Early fragment (depth/stencil) tests
2066 VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200, /// Late fragment (depth/stencil) tests
2067 VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400, /// Color attachment writes
2068 VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800, /// Compute shading
2069 VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000, /// Transfer/copy operations
Jesse Hall543a7ff2016-01-08 16:38:30 -08002070 VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000,
2071 VK_PIPELINE_STAGE_HOST_BIT = 0x00004000, /// Indicates host (CPU) is a source/sink of the dependency
Jesse Halld27f6aa2015-08-15 17:58:48 -07002072
Jesse Hall543a7ff2016-01-08 16:38:30 -08002073 VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000, /// All stages of the graphics pipeline
2074 VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000, /// All graphics, compute, copy, and transition commands
Chris Forbes289cb792016-12-30 15:03:55 +13002075
Jesse Hallad250842017-03-10 18:35:38 -08002076 //@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002077 VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002078}
2079
2080/// Render pass attachment description flags
Jesse Halld8bade02015-11-24 10:24:18 -08002081type VkFlags VkAttachmentDescriptionFlags
2082bitfield VkAttachmentDescriptionFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002083 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 -07002084}
2085
2086/// Subpass description flags
Jesse Halld8bade02015-11-24 10:24:18 -08002087type VkFlags VkSubpassDescriptionFlags
2088bitfield VkSubpassDescriptionFlagBits {
Jesse Hallad250842017-03-10 18:35:38 -08002089 //@extension("VK_NVX_multiview_per_view_attributes") // 98
2090 VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001,
2091 VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002092}
2093
2094/// Command pool creation flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08002095type VkFlags VkCommandPoolCreateFlags
2096bitfield VkCommandPoolCreateFlagBits {
2097 VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001, /// Command buffers have a short lifetime
2098 VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002, /// Command buffers may release their memory individually
Jesse Halld27f6aa2015-08-15 17:58:48 -07002099}
2100
2101/// Command pool reset flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08002102type VkFlags VkCommandPoolResetFlags
2103bitfield VkCommandPoolResetFlagBits {
2104 VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the pool
Jesse Halld27f6aa2015-08-15 17:58:48 -07002105}
2106
Jesse Hall3fbc8562015-11-29 22:10:52 -08002107type VkFlags VkCommandBufferResetFlags
2108bitfield VkCommandBufferResetFlagBits {
2109 VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the buffer
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002110}
2111
Jesse Halld8bade02015-11-24 10:24:18 -08002112type VkFlags VkSampleCountFlags
2113bitfield VkSampleCountFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002114 VK_SAMPLE_COUNT_1_BIT = 0x00000001,
2115 VK_SAMPLE_COUNT_2_BIT = 0x00000002,
2116 VK_SAMPLE_COUNT_4_BIT = 0x00000004,
2117 VK_SAMPLE_COUNT_8_BIT = 0x00000008,
2118 VK_SAMPLE_COUNT_16_BIT = 0x00000010,
2119 VK_SAMPLE_COUNT_32_BIT = 0x00000020,
2120 VK_SAMPLE_COUNT_64_BIT = 0x00000040,
2121}
2122
Jesse Halld8bade02015-11-24 10:24:18 -08002123type VkFlags VkStencilFaceFlags
2124bitfield VkStencilFaceFlagBits {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002125 VK_STENCIL_FACE_FRONT_BIT = 0x00000001, /// Front face
2126 VK_STENCIL_FACE_BACK_BIT = 0x00000002, /// Back face
Jesse Hallc7467b72015-11-29 21:05:26 -08002127 VK_STENCIL_FRONT_AND_BACK = 0x00000003,
Jesse Halld27f6aa2015-08-15 17:58:48 -07002128}
2129
Jesse Halla6429252015-11-29 18:59:42 -08002130/// Instance creation flags
2131type VkFlags VkInstanceCreateFlags
2132//bitfield VkInstanceCreateFlagBits {
2133//}
2134
2135/// Device creation flags
2136type VkFlags VkDeviceCreateFlags
2137//bitfield VkDeviceCreateFlagBits {
2138//}
2139
2140/// Device queue creation flags
2141type VkFlags VkDeviceQueueCreateFlags
2142//bitfield VkDeviceQueueCreateFlagBits {
2143//}
2144
2145/// Query pool creation flags
2146type VkFlags VkQueryPoolCreateFlags
2147//bitfield VkQueryPoolCreateFlagBits {
2148//}
2149
2150/// Buffer view creation flags
2151type VkFlags VkBufferViewCreateFlags
2152//bitfield VkBufferViewCreateFlagBits {
2153//}
2154
2155/// Pipeline cache creation flags
2156type VkFlags VkPipelineCacheCreateFlags
2157//bitfield VkPipelineCacheCreateFlagBits {
2158//}
2159
2160/// Pipeline shader stage creation flags
2161type VkFlags VkPipelineShaderStageCreateFlags
2162//bitfield VkPipelineShaderStageCreateFlagBits {
2163//}
2164
2165/// Descriptor set layout creation flags
2166type VkFlags VkDescriptorSetLayoutCreateFlags
Jesse Hallad250842017-03-10 18:35:38 -08002167bitfield VkDescriptorSetLayoutCreateFlagBits {
2168 //@extension("VK_KHR_push_descriptor") // 81
2169 VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001,
2170}
Jesse Halla6429252015-11-29 18:59:42 -08002171
2172/// Pipeline vertex input state creation flags
2173type VkFlags VkPipelineVertexInputStateCreateFlags
2174//bitfield VkPipelineVertexInputStateCreateFlagBits {
2175//}
2176
2177/// Pipeline input assembly state creation flags
2178type VkFlags VkPipelineInputAssemblyStateCreateFlags
2179//bitfield VkPipelineInputAssemblyStateCreateFlagBits {
2180//}
2181
2182/// Tessellation state creation flags
2183type VkFlags VkPipelineTessellationStateCreateFlags
2184//bitfield VkPipelineTessellationStateCreateFlagBits {
2185//}
2186
2187/// Viewport state creation flags
2188type VkFlags VkPipelineViewportStateCreateFlags
2189//bitfield VkPipelineViewportStateCreateFlagBits {
2190//}
2191
Jesse Hall3fbc8562015-11-29 22:10:52 -08002192/// Rasterization state creation flags
2193type VkFlags VkPipelineRasterizationStateCreateFlags
2194//bitfield VkPipelineRasterizationStateCreateFlagBits {
Jesse Halla6429252015-11-29 18:59:42 -08002195//}
2196
2197/// Multisample state creation flags
2198type VkFlags VkPipelineMultisampleStateCreateFlags
2199//bitfield VkPipelineMultisampleStateCreateFlagBits {
2200//}
2201
2202/// Color blend state creation flags
2203type VkFlags VkPipelineColorBlendStateCreateFlags
2204//bitfield VkPipelineColorBlendStateCreateFlagBits {
2205//}
2206
2207/// Depth/stencil state creation flags
2208type VkFlags VkPipelineDepthStencilStateCreateFlags
2209//bitfield VkPipelineDepthStencilStateCreateFlagBits {
2210//}
2211
2212/// Dynamic state creation flags
2213type VkFlags VkPipelineDynamicStateCreateFlags
2214//bitfield VkPipelineDynamicStateCreateFlagBits {
2215//}
2216
2217/// Pipeline layout creation flags
2218type VkFlags VkPipelineLayoutCreateFlags
2219//bitfield VkPipelineLayoutCreateFlagBits {
2220//}
2221
2222/// Sampler creation flags
2223type VkFlags VkSamplerCreateFlags
2224//bitfield VkSamplerCreateFlagBits {
2225//}
2226
2227/// Render pass creation flags
2228type VkFlags VkRenderPassCreateFlags
2229//bitfield VkRenderPassCreateFlagBits {
2230//}
2231
2232/// Framebuffer creation flags
2233type VkFlags VkFramebufferCreateFlags
2234//bitfield VkFramebufferCreateFlagBits {
2235//}
2236
Jesse Halldc6d36c2015-11-29 19:12:15 -08002237/// Dependency flags
2238type VkFlags VkDependencyFlags
2239bitfield VkDependencyFlagBits {
2240 VK_DEPENDENCY_BY_REGION_BIT = 0x00000001,
Jesse Hallad250842017-03-10 18:35:38 -08002241
2242 //@extension("VK_KHX_multiview") // 54
2243 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX = 0x00000002,
2244
2245 //@extension("VK_KHX_device_group") // 61
2246 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX = 0x00000004,
Jesse Halldc6d36c2015-11-29 19:12:15 -08002247}
2248
Jesse Hallc7467b72015-11-29 21:05:26 -08002249/// Cull mode flags
2250type VkFlags VkCullModeFlags
2251bitfield VkCullModeFlagBits {
2252 VK_CULL_MODE_NONE = 0x00000000,
2253 VK_CULL_MODE_FRONT_BIT = 0x00000001,
2254 VK_CULL_MODE_BACK_BIT = 0x00000002,
2255 VK_CULL_MODE_FRONT_AND_BACK = 0x00000003,
2256}
2257
Jesse Hallad250842017-03-10 18:35:38 -08002258@extension("VK_KHR_surface") // 1
Jesse Halld8bade02015-11-24 10:24:18 -08002259type VkFlags VkSurfaceTransformFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002260@extension("VK_KHR_surface") // 1
Jesse Halld8bade02015-11-24 10:24:18 -08002261bitfield VkSurfaceTransformFlagBitsKHR {
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002262 VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001,
Jesse Hall9ba8bc82015-11-30 16:22:16 -08002263 VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002,
2264 VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004,
2265 VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008,
2266 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010,
2267 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020,
2268 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040,
2269 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080,
2270 VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100,
Michael Lentine88594d72015-11-12 12:49:45 -08002271}
Jesse Halld27f6aa2015-08-15 17:58:48 -07002272
Jesse Hallad250842017-03-10 18:35:38 -08002273@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08002274type VkFlags VkCompositeAlphaFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002275@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08002276bitfield VkCompositeAlphaFlagBitsKHR {
2277 VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
2278 VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002,
2279 VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004,
2280 VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008,
2281}
2282
Jesse Hallad250842017-03-10 18:35:38 -08002283@extension("VK_KHR_swapchain") // 2
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002284type VkFlags VkSwapchainCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002285@extension("VK_KHR_swapchain") // 2
2286bitfield VkSwapchainCreateFlagBitsKHR {
2287 //@extension("VK_KHX_device_group") // 61
2288 VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX = 0x00000001,
2289}
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002290
Jesse Hallad250842017-03-10 18:35:38 -08002291@extension("VK_KHR_display") // 3
Jesse Halld8bade02015-11-24 10:24:18 -08002292type VkFlags VkDisplayPlaneAlphaFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002293@extension("VK_KHR_display") // 3
Jesse Halld8bade02015-11-24 10:24:18 -08002294bitfield VkDisplayPlaneAlphaFlagBitsKHR {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002295 VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001,
2296 VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002,
2297 VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004,
2298 VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008,
Jesse Hall1356b0d2015-11-23 17:24:58 -08002299}
2300
Jesse Hallad250842017-03-10 18:35:38 -08002301@extension("VK_KHR_display") // 3
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002302type VkFlags VkDisplaySurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002303//@extension("VK_KHR_display") // 3
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002304//bitfield VkDisplaySurfaceCreateFlagBitsKHR {
2305//}
2306
Jesse Hallad250842017-03-10 18:35:38 -08002307@extension("VK_KHR_display") // 3
Jesse Hall9ba8bc82015-11-30 16:22:16 -08002308type VkFlags VkDisplayModeCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002309//@extension("VK_KHR_display") // 3
Jesse Hall9ba8bc82015-11-30 16:22:16 -08002310//bitfield VkDisplayModeCreateFlagBitsKHR {
2311//}
2312
Jesse Hallad250842017-03-10 18:35:38 -08002313@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002314type VkFlags VkXlibSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002315//@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002316//bitfield VkXlibSurfaceCreateFlagBitsKHR {
2317//}
2318
Jesse Hallad250842017-03-10 18:35:38 -08002319@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002320type VkFlags VkXcbSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002321//@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002322//bitfield VkXcbSurfaceCreateFlagBitsKHR {
2323//}
2324
Jesse Hallad250842017-03-10 18:35:38 -08002325@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002326type VkFlags VkWaylandSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002327//@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002328//bitfield VkWaylandSurfaceCreateFlagBitsKHR {
2329//}
2330
Jesse Hallad250842017-03-10 18:35:38 -08002331@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002332type VkFlags VkMirSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002333//@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002334//bitfield VkMirSurfaceCreateFlagBitsKHR {
2335//}
2336
Jesse Hallad250842017-03-10 18:35:38 -08002337@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002338type VkFlags VkAndroidSurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002339//@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002340//bitfield VkAndroidSurfaceCreateFlagBitsKHR {
2341//}
2342
Jesse Hallad250842017-03-10 18:35:38 -08002343@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002344type VkFlags VkWin32SurfaceCreateFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002345//@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002346//bitfield VkWin32SurfaceCreateFlagBitsKHR {
2347//}
2348
Jesse Hallad250842017-03-10 18:35:38 -08002349@extension("VK_ANDROID_native_buffer") // 11
Jesse Hall889cd9a2017-02-25 22:12:23 -08002350type VkFlags VkSwapchainImageUsageFlagsANDROID
Jesse Hallad250842017-03-10 18:35:38 -08002351@extension("VK_ANDROID_native_buffer") // 11
Jesse Hall889cd9a2017-02-25 22:12:23 -08002352bitfield VkSwapchainImageUsageFlagBitsANDROID {
2353 VK_SWAPCHAIN_IMAGE_USAGE_FLAGS_SHARED_BIT_ANDROID = 0x00000001,
2354}
2355
Jesse Hallad250842017-03-10 18:35:38 -08002356@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08002357type VkFlags VkDebugReportFlagsEXT
Jesse Hallad250842017-03-10 18:35:38 -08002358@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08002359bitfield VkDebugReportFlagBitsEXT {
Jesse Halle2948d82016-02-25 04:19:32 -08002360 VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001,
2361 VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002,
2362 VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004,
Jesse Hall715b86a2016-01-16 16:34:29 -08002363 VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008,
2364 VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010,
2365}
2366
Jesse Hallad250842017-03-10 18:35:38 -08002367@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13002368type VkFlags VkExternalMemoryHandleTypeFlagsNV
Jesse Hallad250842017-03-10 18:35:38 -08002369@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13002370bitfield VkExternalMemoryHandleTypeFlagBitsNV {
Jesse Halleb02c472017-02-24 15:13:45 -08002371 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001,
2372 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002,
2373 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004,
2374 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008,
Chris Forbes289cb792016-12-30 15:03:55 +13002375}
2376
Jesse Hallad250842017-03-10 18:35:38 -08002377@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13002378type VkFlags VkExternalMemoryFeatureFlagsNV
Jesse Hallad250842017-03-10 18:35:38 -08002379@extension("VK_NV_external_memory_capabilities") // 56
Chris Forbes289cb792016-12-30 15:03:55 +13002380bitfield VkExternalMemoryFeatureFlagBitsNV {
Jesse Halleb02c472017-02-24 15:13:45 -08002381 VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001,
2382 VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002,
2383 VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004,
Chris Forbes289cb792016-12-30 15:03:55 +13002384}
2385
Jesse Hallad250842017-03-10 18:35:38 -08002386@extension("VK_KHX_device_group") // 61
2387type VkFlags VkPeerMemoryFeatureFlagsKHX
2388@extension("VK_KHX_device_group") // 61
2389bitfield VkPeerMemoryFeatureFlagBitsKHX {
2390 VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX = 0x00000001,
2391 VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX = 0x00000002,
2392 VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX = 0x00000004,
2393 VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX = 0x00000008,
2394}
2395
2396@extension("VK_KHX_device_group") // 61
2397type VkFlags VkMemoryAllocateFlagsKHX
2398@extension("VK_KHX_device_group") // 61
2399bitfield VkMemoryAllocateFlagBitsKHX {
2400 VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX = 0x00000001,
2401}
2402
2403@extension("VK_KHX_device_group") // 61
2404type VkFlags VkDeviceGroupPresentModeFlagsKHX
2405@extension("VK_KHX_device_group") // 61
2406bitfield VkDeviceGroupPresentModeFlagBitsKHX {
2407 VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX = 0x00000001,
2408 VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX = 0x00000002,
2409 VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX = 0x00000004,
2410 VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX = 0x00000008,
2411}
2412
2413@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08002414type VkFlags VkViSurfaceCreateFlagsNN
Jesse Hallad250842017-03-10 18:35:38 -08002415//@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08002416//bitfield VkViSurfaceCreateFlagBitsNN {
2417//}
2418
Jesse Hallad250842017-03-10 18:35:38 -08002419@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08002420type VkFlags VkCommandPoolTrimFlagsKHR
Jesse Hallad250842017-03-10 18:35:38 -08002421//@extension("VK_KHR_maintenance1") // 70
Jesse Hall77ad05b2017-03-10 22:02:20 -08002422//bitfield VkCommandPoolTrimFlagBitsKHR {
2423//}
2424
Jesse Hall9492f992017-08-28 12:10:06 -07002425@extension("VK_KHR_external_memory_capabilities") // 72
2426type VkFlags VkExternalMemoryHandleTypeFlagsKHR
2427@extension("VK_KHR_external_memory_capabilities") // 72
2428bitfield VkExternalMemoryHandleTypeFlagBitsKHR {
2429 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 0x00000001,
2430 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 0x00000002,
2431 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 0x00000004,
2432 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR = 0x00000008,
2433 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR = 0x00000010,
2434 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR = 0x00000020,
2435 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR = 0x00000040,
Jesse Hallad250842017-03-10 18:35:38 -08002436}
2437
Jesse Hall9492f992017-08-28 12:10:06 -07002438@extension("VK_KHR_external_memory_capabilities") // 72
2439type VkFlags VkExternalMemoryFeatureFlagsKHR
2440@extension("VK_KHR_external_memory_capabilities") // 72
2441bitfield VkExternalMemoryFeatureFlagBitsKHR {
2442 VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR = 0x00000001,
2443 VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR = 0x00000002,
2444 VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR = 0x00000004,
Jesse Hallad250842017-03-10 18:35:38 -08002445}
2446
Jesse Hall9492f992017-08-28 12:10:06 -07002447@extension("VK_KHR_external_semaphore_capabilities") // 77
2448type VkFlags VkExternalSemaphoreHandleTypeFlagsKHR
2449@extension("VK_KHR_external_semaphore_capabilities") // 77
2450bitfield VkExternalSemaphoreHandleTypeFlagBitsKHR {
2451 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 0x00000001
2452 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 0x00000002
2453 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 0x00000004
2454 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR = 0x00000008
2455 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHR = 0x00000010
Jesse Hallad250842017-03-10 18:35:38 -08002456}
2457
Jesse Hall9492f992017-08-28 12:10:06 -07002458@extension("VK_KHR_external_semaphore_capabilities") // 77
2459type VkFlags VkExternalSemaphoreFeatureFlagsKHR
2460@extension("VK_KHR_external_semaphore_capabilities") // 77
2461bitfield VkExternalSemaphoreFeatureFlagBitsKHR {
2462 VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR = 0x00000001,
2463 VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR = 0x00000002,
2464}
2465
2466@extension("VK_KHR_external_semaphore") // 78
2467type VkFlags VkSemaphoreImportFlagsKHR
2468@extension("VK_KHR_external_semaphore") // 78
2469bitfield VkSemaphoreImportFlagBitsKHR {
2470 VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR = 0x00000001,
Jesse Hallad250842017-03-10 18:35:38 -08002471}
2472
2473@extension("VK_KHR_descriptor_update_template") // 86
2474type VkFlags VkDescriptorUpdateTemplateCreateFlagsKHR
2475//@extension("VK_KHR_descriptor_update_template") // 86
2476//bitfield VkDescriptorUpdateTemplateCreateFlagBitsKHR {
2477//}
2478
2479@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002480type VkFlags VkIndirectCommandsLayoutUsageFlagsNVX
Jesse Hallad250842017-03-10 18:35:38 -08002481@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002482bitfield VkIndirectCommandsLayoutUsageFlagBitsNVX {
Jesse Halleb02c472017-02-24 15:13:45 -08002483 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = 0x00000001,
2484 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = 0x00000002,
2485 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = 0x00000004,
2486 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = 0x00000008,
Chris Forbes289cb792016-12-30 15:03:55 +13002487}
2488
Jesse Hallad250842017-03-10 18:35:38 -08002489@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002490type VkFlags VkObjectEntryUsageFlagsNVX
Jesse Hallad250842017-03-10 18:35:38 -08002491@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13002492bitfield VkObjectEntryUsageFlagBitsNVX {
Jesse Halleb02c472017-02-24 15:13:45 -08002493 VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = 0x00000001,
2494 VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = 0x00000002,
Chris Forbes289cb792016-12-30 15:03:55 +13002495}
2496
Jesse Hallad250842017-03-10 18:35:38 -08002497@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08002498type VkFlags VkSurfaceCounterFlagsEXT
Jesse Hallad250842017-03-10 18:35:38 -08002499@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08002500bitfield VkSurfaceCounterFlagBitsEXT {
2501 VK_SURFACE_COUNTER_VBLANK_EXT = 0x00000001,
2502}
2503
Jesse Hallad250842017-03-10 18:35:38 -08002504@extension("VK_NV_viewport_swizzle") // 99
2505type VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV
2506//@extension("VK_NV_viewport_swizzle") // 99
2507//bitfield VkPipelineViewportSwizzleStateCreateFlagBitsNV {
2508//}
2509
2510@extension("VK_EXT_discard_rectangles") // 100
2511type VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT
2512//@extension("VK_EXT_discard_rectangles") // 100
2513//bitfield VkPipelineDiscardRectangleStateCreateFlagBitsEXT {
2514//}
2515
Jesse Hall9492f992017-08-28 12:10:06 -07002516@extension("VK_KHR_external_fence_capabilities") // 113
2517type VkFlags VkExternalFenceHandleTypeFlagsKHR
2518@extension("VK_KHR_external_fence_capabilities") // 113
2519bitfield VkExternalFenceHandleTypeFlagBitsKHR {
2520 VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR = 0x00000001,
2521 VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR = 0x00000002,
2522 VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR = 0x00000004,
2523 VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR = 0x00000008,
2524}
2525
2526@extension("VK_KHR_external_fence_capabilities") // 113
2527type VkFlags VkExternalFenceFeatureFlagsKHR
2528@extension("VK_KHR_external_fence_capabilities") // 113
2529bitfield VkExternalFenceFeatureFlagBitsKHR {
2530 VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR = 0x00000001,
2531 VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR = 0x00000002,
2532}
2533
2534@extension("VK_KHR_external_fence") // 114
2535type VkFlags VkFenceImportFlagsKHR
2536@extension("VK_KHR_external_fence") // 114
2537bitfield VkFenceImportFlagBitsKHR {
2538 VK_FENCE_IMPORT_TEMPORARY_BIT_KHR = 0x00000001,
2539}
2540
Jesse Hallad250842017-03-10 18:35:38 -08002541@extension("VK_MVK_ios_surface") // 123
2542type VkFlags VkIOSSurfaceCreateFlagsMVK
2543//@extension("VK_MVK_ios_surface") // 123
2544//bitfield VkIOSSurfaceCreateFlagBitsMVK {
2545//}
2546
2547@extension("VK_MVK_macos_surface") // 124
2548type VkFlags VkMacOSSurfaceCreateFlagsMVK
2549//@extension("VK_MVK_macos_surface") // 124
2550//bitfield VkMacOSSurfaceCreateFlagBitsMVK {
2551//}
2552
Jesse Hall7ba0ac72017-07-07 17:13:23 -07002553@extension("VK_NV_fragment_coverage_to_color") // 150
2554type VkFlags VkPipelineCoverageToColorStateCreateFlagsNV
2555@extension("VK_NV_fragment_coverage_to_color") // 150
2556//bitfield VkPipelineCoverageToColorStateCreateFlagBitsNV {
2557//}
2558
2559@extension("VK_NV_framebuffer_mixed_samples") // 153
2560type VkFlags VkPipelineCoverageModulationStateCreateFlagsNV
2561@extension("VK_NV_framebuffer_mixed_samples") // 153
2562//bitfield VkPipelineCoverageModulationStateCreateFlagBitsNV {
2563//}
2564
Jesse Hall77726222017-09-19 14:49:27 -05002565@extension("VK_EXT_validation_cache") // 161
2566type VkFlags VkValidationCacheCreateFlagsEXT
2567@extension("VK_EXT_validation_cache") // 161
2568//bitfield VkValidationCacheCreateFlagBitsEXT {
2569//}
2570
Jesse Halld27f6aa2015-08-15 17:58:48 -07002571//////////////////
2572// Structures //
2573//////////////////
2574
2575class VkOffset2D {
2576 s32 x
2577 s32 y
2578}
2579
2580class VkOffset3D {
2581 s32 x
2582 s32 y
2583 s32 z
2584}
2585
2586class VkExtent2D {
Jesse Hall3dd678a2016-01-08 21:52:01 -08002587 u32 width
2588 u32 height
Jesse Halld27f6aa2015-08-15 17:58:48 -07002589}
2590
2591class VkExtent3D {
Jesse Hall3dd678a2016-01-08 21:52:01 -08002592 u32 width
2593 u32 height
2594 u32 depth
Jesse Halld27f6aa2015-08-15 17:58:48 -07002595}
2596
2597class VkViewport {
Jesse Hall65ab5522015-11-30 00:07:16 -08002598 f32 x
2599 f32 y
Jesse Halld27f6aa2015-08-15 17:58:48 -07002600 f32 width
2601 f32 height
2602 f32 minDepth
2603 f32 maxDepth
2604}
2605
2606class VkRect2D {
2607 VkOffset2D offset
2608 VkExtent2D extent
2609}
2610
Jesse Halla15a4bf2015-11-19 22:48:02 -08002611class VkClearRect {
2612 VkRect2D rect
2613 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002614 u32 layerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002615}
2616
Jesse Hall65ab5522015-11-30 00:07:16 -08002617class VkComponentMapping {
2618 VkComponentSwizzle r
2619 VkComponentSwizzle g
2620 VkComponentSwizzle b
2621 VkComponentSwizzle a
Jesse Halld27f6aa2015-08-15 17:58:48 -07002622}
2623
2624class VkPhysicalDeviceProperties {
2625 u32 apiVersion
2626 u32 driverVersion
Jesse Hall65ab5522015-11-30 00:07:16 -08002627 u32 vendorID
2628 u32 deviceID
Jesse Halld27f6aa2015-08-15 17:58:48 -07002629 VkPhysicalDeviceType deviceType
Jesse Hall65ab5522015-11-30 00:07:16 -08002630 char[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE] deviceName
2631 u8[VK_UUID_SIZE] pipelineCacheUUID
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002632 VkPhysicalDeviceLimits limits
2633 VkPhysicalDeviceSparseProperties sparseProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07002634}
2635
2636class VkExtensionProperties {
Jesse Hall65ab5522015-11-30 00:07:16 -08002637 char[VK_MAX_EXTENSION_NAME_SIZE] extensionName /// extension name
Jesse Halld27f6aa2015-08-15 17:58:48 -07002638 u32 specVersion /// version of the extension specification implemented
2639}
2640
2641class VkLayerProperties {
Jesse Hall65ab5522015-11-30 00:07:16 -08002642 char[VK_MAX_EXTENSION_NAME_SIZE] layerName /// layer name
Jesse Hall3fbc8562015-11-29 22:10:52 -08002643 u32 specVersion /// version of the layer specification implemented
2644 u32 implementationVersion /// build or release version of the layer's library
Jesse Hall65ab5522015-11-30 00:07:16 -08002645 char[VK_MAX_DESCRIPTION_SIZE] description /// Free-form description of the layer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002646}
2647
Jesse Halla366a512015-11-19 22:30:07 -08002648class VkSubmitInfo {
Jesse Hall03b6fe12015-11-24 12:44:21 -08002649 VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_SUBMIT_INFO
2650 const void* pNext /// Next structure in chain
2651 u32 waitSemaphoreCount
Jesse Halla366a512015-11-19 22:30:07 -08002652 const VkSemaphore* pWaitSemaphores
Jesse Hall543a7ff2016-01-08 16:38:30 -08002653 const VkPipelineStageFlags* pWaitDstStageMask
Jesse Hall03b6fe12015-11-24 12:44:21 -08002654 u32 commandBufferCount
Jesse Hall3fbc8562015-11-29 22:10:52 -08002655 const VkCommandBuffer* pCommandBuffers
Jesse Hall03b6fe12015-11-24 12:44:21 -08002656 u32 signalSemaphoreCount
Jesse Halla366a512015-11-19 22:30:07 -08002657 const VkSemaphore* pSignalSemaphores
2658}
2659
Jesse Halld27f6aa2015-08-15 17:58:48 -07002660class VkApplicationInfo {
2661 VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_APPLICATION_INFO
2662 const void* pNext /// Next structure in chain
Jesse Hall3fbc8562015-11-29 22:10:52 -08002663 const char* pApplicationName
2664 u32 applicationVersion
Jesse Halld27f6aa2015-08-15 17:58:48 -07002665 const char* pEngineName
2666 u32 engineVersion
2667 u32 apiVersion
2668}
2669
Jesse Hall3fbc8562015-11-29 22:10:52 -08002670class VkAllocationCallbacks {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002671 void* pUserData
Jesse Hall3fbc8562015-11-29 22:10:52 -08002672 PFN_vkAllocationFunction pfnAllocation
2673 PFN_vkReallocationFunction pfnReallocation
Jesse Halld27f6aa2015-08-15 17:58:48 -07002674 PFN_vkFreeFunction pfnFree
Jesse Hall3fbc8562015-11-29 22:10:52 -08002675 PFN_vkInternalAllocationNotification pfnInternalAllocation
Jesse Hall03b6fe12015-11-24 12:44:21 -08002676 PFN_vkInternalFreeNotification pfnInternalFree
Jesse Halld27f6aa2015-08-15 17:58:48 -07002677}
2678
2679class VkDeviceQueueCreateInfo {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002680 VkStructureType sStype /// Should be VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO
2681 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002682 VkDeviceQueueCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002683 u32 queueFamilyIndex
Jesse Halldba27f72015-11-30 14:25:46 -08002684 u32 queueCount
Jesse Hallfbf97b02015-11-20 14:17:03 -08002685 const f32* pQueuePriorities
Jesse Halld27f6aa2015-08-15 17:58:48 -07002686}
2687
2688class VkDeviceCreateInfo {
2689 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO
2690 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002691 VkDeviceCreateFlags flags
Jesse Halldba27f72015-11-30 14:25:46 -08002692 u32 queueCreateInfoCount
2693 const VkDeviceQueueCreateInfo* pQueueCreateInfos
Jesse Hall3dd678a2016-01-08 21:52:01 -08002694 u32 enabledLayerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002695 const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled
Jesse Hall3dd678a2016-01-08 21:52:01 -08002696 u32 enabledExtensionCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002697 const char* const* ppEnabledExtensionNames
2698 const VkPhysicalDeviceFeatures* pEnabledFeatures
Jesse Halld27f6aa2015-08-15 17:58:48 -07002699}
2700
2701class VkInstanceCreateInfo {
2702 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO
2703 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002704 VkInstanceCreateFlags flags
Jesse Hall3fbc8562015-11-29 22:10:52 -08002705 const VkApplicationInfo* pApplicationInfo
Jesse Hall3dd678a2016-01-08 21:52:01 -08002706 u32 enabledLayerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002707 const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled
Jesse Hall3dd678a2016-01-08 21:52:01 -08002708 u32 enabledExtensionCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002709 const char* const* ppEnabledExtensionNames /// Extension names to be enabled
2710}
2711
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002712class VkQueueFamilyProperties {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002713 VkQueueFlags queueFlags /// Queue flags
2714 u32 queueCount
Jesse Hallacfa5342015-11-19 21:51:33 -08002715 u32 timestampValidBits
Jesse Hall65ab5522015-11-30 00:07:16 -08002716 VkExtent3D minImageTransferGranularity
Jesse Halld27f6aa2015-08-15 17:58:48 -07002717}
2718
2719class VkPhysicalDeviceMemoryProperties {
2720 u32 memoryTypeCount
2721 VkMemoryType[VK_MAX_MEMORY_TYPES] memoryTypes
2722 u32 memoryHeapCount
2723 VkMemoryHeap[VK_MAX_MEMORY_HEAPS] memoryHeaps
2724}
2725
Jesse Hall3fbc8562015-11-29 22:10:52 -08002726class VkMemoryAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08002727 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07002728 const void* pNext /// Pointer to next structure
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002729 VkDeviceSize allocationSize /// Size of memory allocation
Jesse Halld27f6aa2015-08-15 17:58:48 -07002730 u32 memoryTypeIndex /// Index of the of the memory type to allocate from
2731}
2732
2733class VkMemoryRequirements {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002734 VkDeviceSize size /// Specified in bytes
2735 VkDeviceSize alignment /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002736 u32 memoryTypeBits /// Bitfield of the allowed memory type indices into memoryTypes[] for this object
2737}
2738
2739class VkSparseImageFormatProperties {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002740 VkImageAspectFlagBits aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002741 VkExtent3D imageGranularity
2742 VkSparseImageFormatFlags flags
2743}
2744
2745class VkSparseImageMemoryRequirements {
Jesse Hallb00daad2015-11-29 19:46:20 -08002746 VkSparseImageFormatProperties formatProperties
Jesse Hallf9fa9a52016-01-08 16:08:51 -08002747 u32 imageMipTailFirstLod
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002748 VkDeviceSize imageMipTailSize /// Specified in bytes, must be a multiple of image block size / alignment
2749 VkDeviceSize imageMipTailOffset /// Specified in bytes, must be a multiple of image block size / alignment
2750 VkDeviceSize imageMipTailStride /// Specified in bytes, must be a multiple of image block size / alignment
Jesse Halld27f6aa2015-08-15 17:58:48 -07002751}
2752
2753class VkMemoryType {
2754 VkMemoryPropertyFlags propertyFlags /// Memory properties of this memory type
2755 u32 heapIndex /// Index of the memory heap allocations of this memory type are taken from
2756}
2757
2758class VkMemoryHeap {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002759 VkDeviceSize size /// Available memory in the heap
Jesse Halld27f6aa2015-08-15 17:58:48 -07002760 VkMemoryHeapFlags flags /// Flags for the heap
2761}
2762
2763class VkMappedMemoryRange {
2764 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE
2765 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002766 VkDeviceMemory memory /// Mapped memory object
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002767 VkDeviceSize offset /// Offset within the mapped memory the range starts from
2768 VkDeviceSize size /// Size of the range within the mapped memory
Jesse Halld27f6aa2015-08-15 17:58:48 -07002769}
2770
2771class VkFormatProperties {
2772 VkFormatFeatureFlags linearTilingFeatures /// Format features in case of linear tiling
2773 VkFormatFeatureFlags optimalTilingFeatures /// Format features in case of optimal tiling
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002774 VkFormatFeatureFlags bufferFeatures /// Format features supported by buffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07002775}
2776
2777class VkImageFormatProperties {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002778 VkExtent3D maxExtent /// max image dimensions for this resource type
2779 u32 maxMipLevels /// max number of mipmap levels for this resource type
Jesse Halla15a4bf2015-11-19 22:48:02 -08002780 u32 maxArrayLayers /// max array layers for this resource type
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002781 VkSampleCountFlags sampleCounts /// supported sample counts for this resource type
2782 VkDeviceSize maxResourceSize /// max size (in bytes) of this resource type
2783}
2784
Jesse Halla15a4bf2015-11-19 22:48:02 -08002785class VkDescriptorImageInfo {
2786 VkSampler sampler
2787 VkImageView imageView
2788 VkImageLayout imageLayout
2789}
2790
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002791class VkDescriptorBufferInfo {
2792 VkBuffer buffer /// Buffer used for this descriptor when the descriptor is UNIFORM_BUFFER[_DYNAMIC]
2793 VkDeviceSize offset /// Base offset from buffer start in bytes to update in the descriptor set.
2794 VkDeviceSize range /// Size in bytes of the buffer resource for this descriptor update.
Jesse Halld27f6aa2015-08-15 17:58:48 -07002795}
2796
Jesse Halld27f6aa2015-08-15 17:58:48 -07002797class VkWriteDescriptorSet {
2798 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET
2799 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08002800 VkDescriptorSet dstSet /// Destination descriptor set
2801 u32 dstBinding /// Binding within the destination descriptor set to write
2802 u32 dstArrayElement /// Array element within the destination binding to write
Jesse Hall03b6fe12015-11-24 12:44:21 -08002803 u32 descriptorCount /// Number of descriptors to write (determines the size of the array pointed by <pDescriptors>)
Jesse Halld27f6aa2015-08-15 17:58:48 -07002804 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 -08002805 const VkDescriptorImageInfo* pImageInfo
2806 const VkDescriptorBufferInfo* pBufferInfo
2807 const VkBufferView* pTexelBufferView
Jesse Halld27f6aa2015-08-15 17:58:48 -07002808}
2809
2810class VkCopyDescriptorSet {
2811 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET
2812 const void* pNext /// Pointer to next structure
2813 VkDescriptorSet srcSet /// Source descriptor set
2814 u32 srcBinding /// Binding within the source descriptor set to copy from
2815 u32 srcArrayElement /// Array element within the source binding to copy from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002816 VkDescriptorSet dstSet /// Destination descriptor set
2817 u32 dstBinding /// Binding within the destination descriptor set to copy to
2818 u32 dstArrayElement /// Array element within the destination binding to copy to
Jesse Hall03b6fe12015-11-24 12:44:21 -08002819 u32 descriptorCount /// Number of descriptors to copy
Jesse Halld27f6aa2015-08-15 17:58:48 -07002820}
2821
2822class VkBufferCreateInfo {
2823 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO
2824 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002825 VkBufferCreateFlags flags /// Buffer creation flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002826 VkDeviceSize size /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002827 VkBufferUsageFlags usage /// Buffer usage flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002828 VkSharingMode sharingMode
Jesse Hall03b6fe12015-11-24 12:44:21 -08002829 u32 queueFamilyIndexCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002830 const u32* pQueueFamilyIndices
2831}
2832
2833class VkBufferViewCreateInfo {
2834 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO
2835 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002836 VkBufferViewCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002837 VkBuffer buffer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002838 VkFormat format /// Optionally specifies format of elements
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002839 VkDeviceSize offset /// Specified in bytes
2840 VkDeviceSize range /// View size specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002841}
2842
2843class VkImageSubresource {
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002844 VkImageAspectFlagBits aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002845 u32 mipLevel
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002846 u32 arrayLayer
Jesse Halld27f6aa2015-08-15 17:58:48 -07002847}
2848
2849class VkImageSubresourceRange {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002850 VkImageAspectFlags aspectMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002851 u32 baseMipLevel
Jesse Hall3fbc8562015-11-29 22:10:52 -08002852 u32 levelCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002853 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002854 u32 layerCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07002855}
2856
2857class VkMemoryBarrier {
2858 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_BARRIER
2859 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002860 VkAccessFlags srcAccessMask
2861 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002862}
2863
2864class VkBufferMemoryBarrier {
2865 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER
2866 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002867 VkAccessFlags srcAccessMask
2868 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002869 u32 srcQueueFamilyIndex /// Queue family to transition ownership from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002870 u32 dstQueueFamilyIndex /// Queue family to transition ownership to
Jesse Halld27f6aa2015-08-15 17:58:48 -07002871 VkBuffer buffer /// Buffer to sync
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002872 VkDeviceSize offset /// Offset within the buffer to sync
2873 VkDeviceSize size /// Amount of bytes to sync
Jesse Halld27f6aa2015-08-15 17:58:48 -07002874}
2875
2876class VkImageMemoryBarrier {
2877 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER
2878 const void* pNext /// Pointer to next structure.
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08002879 VkAccessFlags srcAccessMask
2880 VkAccessFlags dstAccessMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07002881 VkImageLayout oldLayout /// Current layout of the image
2882 VkImageLayout newLayout /// New layout to transition the image to
2883 u32 srcQueueFamilyIndex /// Queue family to transition ownership from
Jesse Hall3fbc8562015-11-29 22:10:52 -08002884 u32 dstQueueFamilyIndex /// Queue family to transition ownership to
Jesse Halld27f6aa2015-08-15 17:58:48 -07002885 VkImage image /// Image to sync
2886 VkImageSubresourceRange subresourceRange /// Subresource range to sync
2887}
2888
2889class VkImageCreateInfo {
2890 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO
2891 const void* pNext /// Pointer to next structure.
Jesse Halla6429252015-11-29 18:59:42 -08002892 VkImageCreateFlags flags /// Image creation flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002893 VkImageType imageType
2894 VkFormat format
2895 VkExtent3D extent
2896 u32 mipLevels
Jesse Halla15a4bf2015-11-19 22:48:02 -08002897 u32 arrayLayers
Jesse Hall091ed9e2015-11-30 00:55:29 -08002898 VkSampleCountFlagBits samples
Jesse Halld27f6aa2015-08-15 17:58:48 -07002899 VkImageTiling tiling
2900 VkImageUsageFlags usage /// Image usage flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002901 VkSharingMode sharingMode /// Cross-queue-family sharing mode
Jesse Hall03b6fe12015-11-24 12:44:21 -08002902 u32 queueFamilyIndexCount /// Number of queue families to share across
Jesse Halld27f6aa2015-08-15 17:58:48 -07002903 const u32* pQueueFamilyIndices /// Array of queue family indices to share across
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002904 VkImageLayout initialLayout /// Initial image layout for all subresources
Jesse Halld27f6aa2015-08-15 17:58:48 -07002905}
2906
2907class VkSubresourceLayout {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002908 VkDeviceSize offset /// Specified in bytes
2909 VkDeviceSize size /// Specified in bytes
2910 VkDeviceSize rowPitch /// Specified in bytes
Jesse Hall543a7ff2016-01-08 16:38:30 -08002911 VkDeviceSize arrayPitch /// Specified in bytes
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002912 VkDeviceSize depthPitch /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002913}
2914
2915class VkImageViewCreateInfo {
2916 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO
2917 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08002918 VkImageViewCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07002919 VkImage image
2920 VkImageViewType viewType
2921 VkFormat format
Jesse Hall65ab5522015-11-30 00:07:16 -08002922 VkComponentMapping components
Jesse Halld27f6aa2015-08-15 17:58:48 -07002923 VkImageSubresourceRange subresourceRange
Jesse Halld27f6aa2015-08-15 17:58:48 -07002924}
2925
2926class VkBufferCopy {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002927 VkDeviceSize srcOffset /// Specified in bytes
Jesse Hall3fbc8562015-11-29 22:10:52 -08002928 VkDeviceSize dstOffset /// Specified in bytes
Jesse Hallb00daad2015-11-29 19:46:20 -08002929 VkDeviceSize size /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002930}
2931
Jesse Halla6429252015-11-29 18:59:42 -08002932class VkSparseMemoryBind {
Jesse Hallb00daad2015-11-29 19:46:20 -08002933 VkDeviceSize resourceOffset /// Specified in bytes
2934 VkDeviceSize size /// Specified in bytes
Jesse Hall3fbc8562015-11-29 22:10:52 -08002935 VkDeviceMemory memory
2936 VkDeviceSize memoryOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002937 VkSparseMemoryBindFlags flags
2938}
2939
Jesse Halla6429252015-11-29 18:59:42 -08002940class VkSparseImageMemoryBind {
Jesse Halld27f6aa2015-08-15 17:58:48 -07002941 VkImageSubresource subresource
2942 VkOffset3D offset
2943 VkExtent3D extent
Jesse Hall3fbc8562015-11-29 22:10:52 -08002944 VkDeviceMemory memory
2945 VkDeviceSize memoryOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07002946 VkSparseMemoryBindFlags flags
2947}
2948
Jesse Halla6429252015-11-29 18:59:42 -08002949class VkSparseBufferMemoryBindInfo {
2950 VkBuffer buffer
2951 u32 bindCount
2952 const VkSparseMemoryBind* pBinds
2953}
2954
2955class VkSparseImageOpaqueMemoryBindInfo {
2956 VkImage image
2957 u32 bindCount
2958 const VkSparseMemoryBind* pBinds
2959}
2960
2961class VkSparseImageMemoryBindInfo {
2962 VkImage image
2963 u32 bindCount
2964 const VkSparseMemoryBind* pBinds
2965}
2966
2967class VkBindSparseInfo {
2968 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BIND_SPARSE_INFO
2969 const void* pNext
2970 u32 waitSemaphoreCount
2971 const VkSemaphore* pWaitSemaphores
2972 u32 numBufferBinds
2973 const VkSparseBufferMemoryBindInfo* pBufferBinds
2974 u32 numImageOpaqueBinds
2975 const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds
2976 u32 numImageBinds
2977 const VkSparseImageMemoryBindInfo* pImageBinds
2978 u32 signalSemaphoreCount
2979 const VkSemaphore* pSignalSemaphores
2980}
2981
Jesse Hall65ab5522015-11-30 00:07:16 -08002982class VkImageSubresourceLayers {
2983 VkImageAspectFlags aspectMask
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002984 u32 mipLevel
Jesse Halla15a4bf2015-11-19 22:48:02 -08002985 u32 baseArrayLayer
Jesse Hall3fbc8562015-11-29 22:10:52 -08002986 u32 layerCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07002987}
2988
Jesse Halld27f6aa2015-08-15 17:58:48 -07002989class VkImageCopy {
Jesse Hall65ab5522015-11-30 00:07:16 -08002990 VkImageSubresourceLayers srcSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07002991 VkOffset3D srcOffset /// Specified in pixels for both compressed and uncompressed images
Jesse Hall65ab5522015-11-30 00:07:16 -08002992 VkImageSubresourceLayers dstSubresource
Jesse Hall3fbc8562015-11-29 22:10:52 -08002993 VkOffset3D dstOffset /// Specified in pixels for both compressed and uncompressed images
Jesse Halld27f6aa2015-08-15 17:58:48 -07002994 VkExtent3D extent /// Specified in pixels for both compressed and uncompressed images
2995}
2996
2997class VkImageBlit {
Jesse Hall65ab5522015-11-30 00:07:16 -08002998 VkImageSubresourceLayers srcSubresource
Jesse Hall3dd678a2016-01-08 21:52:01 -08002999 VkOffset3D[2] srcOffsets
Jesse Hall65ab5522015-11-30 00:07:16 -08003000 VkImageSubresourceLayers dstSubresource
Jesse Hall3dd678a2016-01-08 21:52:01 -08003001 VkOffset3D[2] dstOffsets
Jesse Halld27f6aa2015-08-15 17:58:48 -07003002}
3003
3004class VkBufferImageCopy {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003005 VkDeviceSize bufferOffset /// Specified in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07003006 u32 bufferRowLength /// Specified in texels
3007 u32 bufferImageHeight
Jesse Hall65ab5522015-11-30 00:07:16 -08003008 VkImageSubresourceLayers imageSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07003009 VkOffset3D imageOffset /// Specified in pixels for both compressed and uncompressed images
3010 VkExtent3D imageExtent /// Specified in pixels for both compressed and uncompressed images
3011}
3012
3013class VkImageResolve {
Jesse Hall65ab5522015-11-30 00:07:16 -08003014 VkImageSubresourceLayers srcSubresource
Jesse Halld27f6aa2015-08-15 17:58:48 -07003015 VkOffset3D srcOffset
Jesse Hall65ab5522015-11-30 00:07:16 -08003016 VkImageSubresourceLayers dstSubresource
Jesse Hall3fbc8562015-11-29 22:10:52 -08003017 VkOffset3D dstOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07003018 VkExtent3D extent
3019}
3020
3021class VkShaderModuleCreateInfo {
3022 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO
3023 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003024 VkShaderModuleCreateFlags flags /// Reserved
Jesse Halld27f6aa2015-08-15 17:58:48 -07003025 platform.size_t codeSize /// Specified in bytes
Jesse Halla9bb62b2015-11-21 19:31:56 -08003026 const u32* pCode /// Binary code of size codeSize
Jesse Halld27f6aa2015-08-15 17:58:48 -07003027}
3028
Jesse Halld27f6aa2015-08-15 17:58:48 -07003029class VkDescriptorSetLayoutBinding {
Jesse Hall091ed9e2015-11-30 00:55:29 -08003030 u32 binding
Jesse Halld27f6aa2015-08-15 17:58:48 -07003031 VkDescriptorType descriptorType /// Type of the descriptors in this binding
Jesse Halldba27f72015-11-30 14:25:46 -08003032 u32 descriptorCount /// Number of descriptors in this binding
Jesse Halld27f6aa2015-08-15 17:58:48 -07003033 VkShaderStageFlags stageFlags /// Shader stages this binding is visible to
3034 const VkSampler* pImmutableSamplers /// Immutable samplers (used if descriptor type is SAMPLER or COMBINED_IMAGE_SAMPLER, is either NULL or contains <count> number of elements)
3035}
3036
3037class VkDescriptorSetLayoutCreateInfo {
3038 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO
3039 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003040 VkDescriptorSetLayoutCreateFlags flags
Jesse Hall03b6fe12015-11-24 12:44:21 -08003041 u32 bindingCount /// Number of bindings in the descriptor set layout
Jesse Hall543a7ff2016-01-08 16:38:30 -08003042 const VkDescriptorSetLayoutBinding* pBindings /// Array of descriptor set layout bindings
Jesse Halld27f6aa2015-08-15 17:58:48 -07003043}
3044
Jesse Hall65ab5522015-11-30 00:07:16 -08003045class VkDescriptorPoolSize {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003046 VkDescriptorType type
Jesse Hall03b6fe12015-11-24 12:44:21 -08003047 u32 descriptorCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003048}
3049
3050class VkDescriptorPoolCreateInfo {
3051 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO
3052 const void* pNext /// Pointer to next structure
Jesse Hallfbf97b02015-11-20 14:17:03 -08003053 VkDescriptorPoolCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003054 u32 maxSets
Jesse Hall65ab5522015-11-30 00:07:16 -08003055 u32 poolSizeCount
3056 const VkDescriptorPoolSize* pPoolSizes
Jesse Halld27f6aa2015-08-15 17:58:48 -07003057}
3058
Jesse Hall3fbc8562015-11-29 22:10:52 -08003059class VkDescriptorSetAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003060 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO
Jesse Hallfbf97b02015-11-20 14:17:03 -08003061 const void* pNext /// Pointer to next structure
3062 VkDescriptorPool descriptorPool
Jesse Hall03b6fe12015-11-24 12:44:21 -08003063 u32 setCount
Jesse Hallfbf97b02015-11-20 14:17:03 -08003064 const VkDescriptorSetLayout* pSetLayouts
3065}
3066
Jesse Halld27f6aa2015-08-15 17:58:48 -07003067class VkSpecializationMapEntry {
Jesse Hall65ab5522015-11-30 00:07:16 -08003068 u32 constantID /// The SpecConstant ID specified in the BIL
Jesse Halld27f6aa2015-08-15 17:58:48 -07003069 u32 offset /// Offset of the value in the data block
Jesse Hallb00daad2015-11-29 19:46:20 -08003070 platform.size_t size /// Size in bytes of the SpecConstant
Jesse Halld27f6aa2015-08-15 17:58:48 -07003071}
3072
3073class VkSpecializationInfo {
3074 u32 mapEntryCount /// Number of entries in the map
Jesse Hallb00daad2015-11-29 19:46:20 -08003075 const VkSpecializationMapEntry* pMapEntries /// Array of map entries
Jesse Halld27f6aa2015-08-15 17:58:48 -07003076 platform.size_t dataSize /// Size in bytes of pData
3077 const void* pData /// Pointer to SpecConstant data
3078}
3079
3080class VkPipelineShaderStageCreateInfo {
3081 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO
3082 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003083 VkPipelineShaderStageCreateFlags flags
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003084 VkShaderStageFlagBits stage
3085 VkShaderModule module
3086 const char* pName
Jesse Halld27f6aa2015-08-15 17:58:48 -07003087 const VkSpecializationInfo* pSpecializationInfo
3088}
3089
3090class VkComputePipelineCreateInfo {
3091 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO
3092 const void* pNext /// Pointer to next structure
Jesse Halld27f6aa2015-08-15 17:58:48 -07003093 VkPipelineCreateFlags flags /// Pipeline creation flags
Jesse Halla6429252015-11-29 18:59:42 -08003094 VkPipelineShaderStageCreateInfo stage
Jesse Halld27f6aa2015-08-15 17:58:48 -07003095 VkPipelineLayout layout /// Interface layout of the pipeline
3096 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
3097 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
3098}
3099
3100class VkVertexInputBindingDescription {
Jesse Hallb00daad2015-11-29 19:46:20 -08003101 u32 binding /// Vertex buffer binding id
3102 u32 stride /// Distance between vertices in bytes (0 = no advancement)
Jesse Hall65ab5522015-11-30 00:07:16 -08003103 VkVertexInputRate inputRate /// Rate at which binding is incremented
Jesse Halld27f6aa2015-08-15 17:58:48 -07003104}
3105
3106class VkVertexInputAttributeDescription {
Jesse Hallb00daad2015-11-29 19:46:20 -08003107 u32 location /// location of the shader vertex attrib
3108 u32 binding /// Vertex buffer binding id
3109 VkFormat format /// format of source data
3110 u32 offset /// Offset of first element in bytes from base of vertex
Jesse Halld27f6aa2015-08-15 17:58:48 -07003111}
3112
3113class VkPipelineVertexInputStateCreateInfo {
Jesse Hall03b6fe12015-11-24 12:44:21 -08003114 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO
3115 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003116 VkPipelineVertexInputStateCreateFlags flags
Jesse Hall03b6fe12015-11-24 12:44:21 -08003117 u32 vertexBindingDescriptionCount /// number of bindings
Jesse Halld27f6aa2015-08-15 17:58:48 -07003118 const VkVertexInputBindingDescription* pVertexBindingDescriptions
Jesse Hall03b6fe12015-11-24 12:44:21 -08003119 u32 vertexAttributeDescriptionCount /// number of attributes
Jesse Halld27f6aa2015-08-15 17:58:48 -07003120 const VkVertexInputAttributeDescription* pVertexAttributeDescriptions
3121}
3122
3123class VkPipelineInputAssemblyStateCreateInfo {
3124 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO
3125 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003126 VkPipelineInputAssemblyStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003127 VkPrimitiveTopology topology
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003128 VkBool32 primitiveRestartEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07003129}
3130
3131class VkPipelineTessellationStateCreateInfo {
3132 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO
3133 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003134 VkPipelineTessellationStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003135 u32 patchControlPoints
3136}
3137
3138class VkPipelineViewportStateCreateInfo {
3139 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO
3140 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003141 VkPipelineViewportStateCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003142 u32 viewportCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003143 const VkViewport* pViewports
3144 u32 scissorCount
3145 const VkRect2D* pScissors
Jesse Halld27f6aa2015-08-15 17:58:48 -07003146}
3147
Jesse Hall3fbc8562015-11-29 22:10:52 -08003148class VkPipelineRasterizationStateCreateInfo {
Jesse Hall65ab5522015-11-30 00:07:16 -08003149 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07003150 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08003151 VkPipelineRasterizationStateCreateFlags flags
Jesse Hallae38f732015-11-19 21:32:50 -08003152 VkBool32 depthClampEnable
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003153 VkBool32 rasterizerDiscardEnable
Jesse Hall65ab5522015-11-30 00:07:16 -08003154 VkPolygonMode polygonMode /// optional (GL45)
Jesse Hallc7467b72015-11-29 21:05:26 -08003155 VkCullModeFlags cullMode
Jesse Halld27f6aa2015-08-15 17:58:48 -07003156 VkFrontFace frontFace
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003157 VkBool32 depthBiasEnable
Jesse Halla9bb62b2015-11-21 19:31:56 -08003158 f32 depthBiasConstantFactor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003159 f32 depthBiasClamp
Jesse Halla9bb62b2015-11-21 19:31:56 -08003160 f32 depthBiasSlopeFactor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003161 f32 lineWidth
Jesse Halld27f6aa2015-08-15 17:58:48 -07003162}
3163
3164class VkPipelineMultisampleStateCreateInfo {
3165 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO
3166 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003167 VkPipelineMultisampleStateCreateFlags flags
Jesse Hall091ed9e2015-11-30 00:55:29 -08003168 VkSampleCountFlagBits rasterizationSamples /// Number of samples used for rasterization
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003169 VkBool32 sampleShadingEnable /// optional (GL45)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003170 f32 minSampleShading /// optional (GL45)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003171 const VkSampleMask* pSampleMask
Jesse Hallacfa5342015-11-19 21:51:33 -08003172 VkBool32 alphaToCoverageEnable
3173 VkBool32 alphaToOneEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07003174}
3175
3176class VkPipelineColorBlendAttachmentState {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003177 VkBool32 blendEnable
Jesse Hall65ab5522015-11-30 00:07:16 -08003178 VkBlendFactor srcColorBlendFactor
3179 VkBlendFactor dstColorBlendFactor
3180 VkBlendOp colorBlendOp
3181 VkBlendFactor srcAlphaBlendFactor
3182 VkBlendFactor dstAlphaBlendFactor
3183 VkBlendOp alphaBlendOp
3184 VkColorComponentFlags colorWriteMask
Jesse Halld27f6aa2015-08-15 17:58:48 -07003185}
3186
3187class VkPipelineColorBlendStateCreateInfo {
3188 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO
3189 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003190 VkPipelineColorBlendStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003191 VkBool32 logicOpEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07003192 VkLogicOp logicOp
3193 u32 attachmentCount /// # of pAttachments
3194 const VkPipelineColorBlendAttachmentState* pAttachments
Jesse Hallb00daad2015-11-29 19:46:20 -08003195 f32[4] blendConstants
Jesse Halld27f6aa2015-08-15 17:58:48 -07003196}
3197
3198class VkStencilOpState {
Jesse Hall65ab5522015-11-30 00:07:16 -08003199 VkStencilOp failOp
3200 VkStencilOp passOp
3201 VkStencilOp depthFailOp
3202 VkCompareOp compareOp
3203 u32 compareMask
3204 u32 writeMask
3205 u32 reference
Jesse Halld27f6aa2015-08-15 17:58:48 -07003206}
3207
3208class VkPipelineDepthStencilStateCreateInfo {
3209 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO
3210 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003211 VkPipelineDepthStencilStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003212 VkBool32 depthTestEnable
3213 VkBool32 depthWriteEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07003214 VkCompareOp depthCompareOp
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003215 VkBool32 depthBoundsTestEnable /// optional (depth_bounds_test)
3216 VkBool32 stencilTestEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07003217 VkStencilOpState front
3218 VkStencilOpState back
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003219 f32 minDepthBounds
3220 f32 maxDepthBounds
3221}
3222
3223class VkPipelineDynamicStateCreateInfo {
3224 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO
3225 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003226 VkPipelineDynamicStateCreateFlags flags
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003227 u32 dynamicStateCount
3228 const VkDynamicState* pDynamicStates
Jesse Halld27f6aa2015-08-15 17:58:48 -07003229}
3230
3231class VkGraphicsPipelineCreateInfo {
Jesse Halla6429252015-11-29 18:59:42 -08003232 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO
3233 const void* pNext /// Pointer to next structure
3234 VkPipelineCreateFlags flags /// Pipeline creation flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003235 u32 stageCount
Jesse Halla6429252015-11-29 18:59:42 -08003236 const VkPipelineShaderStageCreateInfo* pStages /// One entry for each active shader stage
Jesse Halld27f6aa2015-08-15 17:58:48 -07003237 const VkPipelineVertexInputStateCreateInfo* pVertexInputState
3238 const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState
3239 const VkPipelineTessellationStateCreateInfo* pTessellationState
3240 const VkPipelineViewportStateCreateInfo* pViewportState
Jesse Hall3fbc8562015-11-29 22:10:52 -08003241 const VkPipelineRasterizationStateCreateInfo* pRasterizationState
Jesse Halld27f6aa2015-08-15 17:58:48 -07003242 const VkPipelineMultisampleStateCreateInfo* pMultisampleState
3243 const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState
3244 const VkPipelineColorBlendStateCreateInfo* pColorBlendState
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003245 const VkPipelineDynamicStateCreateInfo* pDynamicState
Jesse Halla6429252015-11-29 18:59:42 -08003246 VkPipelineLayout layout /// Interface layout of the pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07003247 VkRenderPass renderPass
3248 u32 subpass
Jesse Halla6429252015-11-29 18:59:42 -08003249 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
3250 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 -07003251}
3252
3253class VkPipelineCacheCreateInfo {
Jesse Hallb00daad2015-11-29 19:46:20 -08003254 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO
3255 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003256 VkPipelineCacheCreateFlags flags
Jesse Hallb00daad2015-11-29 19:46:20 -08003257 platform.size_t initialDataSize /// Size of initial data to populate cache, in bytes
3258 const void* pInitialData /// Initial data to populate cache
Jesse Halld27f6aa2015-08-15 17:58:48 -07003259}
3260
3261class VkPushConstantRange {
3262 VkShaderStageFlags stageFlags /// Which stages use the range
Jesse Hall03b6fe12015-11-24 12:44:21 -08003263 u32 offset /// Start of the range, in bytes
3264 u32 size /// Length of the range, in bytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07003265}
3266
3267class VkPipelineLayoutCreateInfo {
3268 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO
3269 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003270 VkPipelineLayoutCreateFlags flags
Jesse Hall3dd678a2016-01-08 21:52:01 -08003271 u32 descriptorSetCount /// Number of descriptor sets interfaced by the pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07003272 const VkDescriptorSetLayout* pSetLayouts /// Array of <setCount> number of descriptor set layout objects defining the layout of the
3273 u32 pushConstantRangeCount /// Number of push-constant ranges used by the pipeline
3274 const VkPushConstantRange* pPushConstantRanges /// Array of pushConstantRangeCount number of ranges used by various shader stages
3275}
3276
3277class VkSamplerCreateInfo {
3278 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO
3279 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003280 VkSamplerCreateFlags flags
Jesse Hall23ff73f2015-11-29 14:36:39 -08003281 VkFilter magFilter /// Filter mode for magnification
3282 VkFilter minFilter /// Filter mode for minifiation
3283 VkSamplerMipmapMode mipmapMode /// Mipmap selection mode
3284 VkSamplerAddressMode addressModeU
3285 VkSamplerAddressMode addressModeV
3286 VkSamplerAddressMode addressModeW
Jesse Halld27f6aa2015-08-15 17:58:48 -07003287 f32 mipLodBias
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003288 VkBool32 anisotropyEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07003289 f32 maxAnisotropy
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003290 VkBool32 compareEnable
Jesse Halld27f6aa2015-08-15 17:58:48 -07003291 VkCompareOp compareOp
3292 f32 minLod
3293 f32 maxLod
3294 VkBorderColor borderColor
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003295 VkBool32 unnormalizedCoordinates
Jesse Halld27f6aa2015-08-15 17:58:48 -07003296}
3297
Jesse Hall3fbc8562015-11-29 22:10:52 -08003298class VkCommandPoolCreateInfo {
3299 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07003300 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08003301 VkCommandPoolCreateFlags flags /// Command pool creation flags
Jesse Halla6429252015-11-29 18:59:42 -08003302 u32 queueFamilyIndex
Jesse Halld27f6aa2015-08-15 17:58:48 -07003303}
3304
Jesse Hall3fbc8562015-11-29 22:10:52 -08003305class VkCommandBufferAllocateInfo {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003306 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07003307 const void* pNext /// Pointer to next structure
Jesse Hall3fbc8562015-11-29 22:10:52 -08003308 VkCommandPool commandPool
3309 VkCommandBufferLevel level
Jesse Hall3dd678a2016-01-08 21:52:01 -08003310 u32 commandBufferCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003311}
3312
Jesse Hall3dd678a2016-01-08 21:52:01 -08003313class VkCommandBufferInheritanceInfo {
3314 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO
Jesse Halld27f6aa2015-08-15 17:58:48 -07003315 const void* pNext /// Pointer to next structure
Jesse Halld27f6aa2015-08-15 17:58:48 -07003316 VkRenderPass renderPass /// Render pass for secondary command buffers
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003317 u32 subpass
Jesse Halld27f6aa2015-08-15 17:58:48 -07003318 VkFramebuffer framebuffer /// Framebuffer for secondary command buffers
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003319 VkBool32 occlusionQueryEnable
3320 VkQueryControlFlags queryFlags
3321 VkQueryPipelineStatisticFlags pipelineStatistics
Jesse Halld27f6aa2015-08-15 17:58:48 -07003322}
3323
Jesse Hall3dd678a2016-01-08 21:52:01 -08003324class VkCommandBufferBeginInfo {
3325 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO
3326 const void* pNext /// Pointer to next structure
3327 VkCommandBufferUsageFlags flags /// Command buffer usage flags
3328 const VkCommandBufferInheritanceInfo* pInheritanceInfo
3329}
3330
Jesse Halld27f6aa2015-08-15 17:58:48 -07003331class VkRenderPassBeginInfo {
3332 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO
3333 const void* pNext /// Pointer to next structure
3334 VkRenderPass renderPass
3335 VkFramebuffer framebuffer
3336 VkRect2D renderArea
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003337 u32 clearValueCount
3338 const VkClearValue* pClearValues
Jesse Halld27f6aa2015-08-15 17:58:48 -07003339}
3340
3341@union
3342/// Union allowing specification of floating point, integer, or unsigned integer color data. Actual value selected is based on image/attachment being cleared.
3343class VkClearColorValue {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003344 f32[4] float32
3345 s32[4] int32
3346 u32[4] uint32
Jesse Halld27f6aa2015-08-15 17:58:48 -07003347}
3348
3349class VkClearDepthStencilValue {
3350 f32 depth
3351 u32 stencil
3352}
3353
3354@union
3355/// Union allowing specification of color, depth, and stencil color values. Actual value selected is based on attachment being cleared.
3356class VkClearValue {
3357 VkClearColorValue color
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003358 VkClearDepthStencilValue depthStencil
Jesse Halld27f6aa2015-08-15 17:58:48 -07003359}
3360
Jesse Hallae38f732015-11-19 21:32:50 -08003361class VkClearAttachment {
3362 VkImageAspectFlags aspectMask
3363 u32 colorAttachment
3364 VkClearValue clearValue
3365}
3366
Jesse Halld27f6aa2015-08-15 17:58:48 -07003367class VkAttachmentDescription {
Jesse Halla6429252015-11-29 18:59:42 -08003368 VkAttachmentDescriptionFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003369 VkFormat format
Jesse Hall091ed9e2015-11-30 00:55:29 -08003370 VkSampleCountFlagBits samples
Jesse Halld27f6aa2015-08-15 17:58:48 -07003371 VkAttachmentLoadOp loadOp /// Load op for color or depth data
3372 VkAttachmentStoreOp storeOp /// Store op for color or depth data
3373 VkAttachmentLoadOp stencilLoadOp /// Load op for stencil data
3374 VkAttachmentStoreOp stencilStoreOp /// Store op for stencil data
3375 VkImageLayout initialLayout
3376 VkImageLayout finalLayout
3377}
3378
3379class VkAttachmentReference {
3380 u32 attachment
3381 VkImageLayout layout
3382}
3383
3384class VkSubpassDescription {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003385 VkSubpassDescriptionFlags flags
Jesse Halla6429252015-11-29 18:59:42 -08003386 VkPipelineBindPoint pipelineBindPoint /// Must be VK_PIPELINE_BIND_POINT_GRAPHICS for now
Jesse Hall03b6fe12015-11-24 12:44:21 -08003387 u32 inputAttachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003388 const VkAttachmentReference* pInputAttachments
Jesse Hall03b6fe12015-11-24 12:44:21 -08003389 u32 colorAttachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003390 const VkAttachmentReference* pColorAttachments
3391 const VkAttachmentReference* pResolveAttachments
Jesse Hallc7467b72015-11-29 21:05:26 -08003392 const VkAttachmentReference* pDepthStencilAttachment
Jesse Hall03b6fe12015-11-24 12:44:21 -08003393 u32 preserveAttachmentCount
Jesse Hall3dd678a2016-01-08 21:52:01 -08003394 const u32* pPreserveAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003395}
3396
3397class VkSubpassDependency {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003398 u32 srcSubpass
Jesse Hall3fbc8562015-11-29 22:10:52 -08003399 u32 dstSubpass
Jesse Halld27f6aa2015-08-15 17:58:48 -07003400 VkPipelineStageFlags srcStageMask
Jesse Hall3fbc8562015-11-29 22:10:52 -08003401 VkPipelineStageFlags dstStageMask
Jesse Hall3e0dc8f2015-11-30 00:42:57 -08003402 VkAccessFlags srcAccessMask
3403 VkAccessFlags dstAccessMask
Jesse Halldc6d36c2015-11-29 19:12:15 -08003404 VkDependencyFlags dependencyFlags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003405}
3406
3407class VkRenderPassCreateInfo {
3408 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO
3409 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003410 VkRenderPassCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003411 u32 attachmentCount
3412 const VkAttachmentDescription* pAttachments
3413 u32 subpassCount
3414 const VkSubpassDescription* pSubpasses
3415 u32 dependencyCount
3416 const VkSubpassDependency* pDependencies
3417}
3418
3419class VkEventCreateInfo {
3420 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_EVENT_CREATE_INFO
3421 const void* pNext /// Pointer to next structure
3422 VkEventCreateFlags flags /// Event creation flags
3423}
3424
3425class VkFenceCreateInfo {
3426 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FENCE_CREATE_INFO
3427 const void* pNext /// Pointer to next structure
3428 VkFenceCreateFlags flags /// Fence creation flags
3429}
3430
3431class VkPhysicalDeviceFeatures {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003432 VkBool32 robustBufferAccess /// out of bounds buffer accesses are well defined
3433 VkBool32 fullDrawIndexUint32 /// full 32-bit range of indices for indexed draw calls
3434 VkBool32 imageCubeArray /// image views which are arrays of cube maps
3435 VkBool32 independentBlend /// blending operations are controlled per-attachment
3436 VkBool32 geometryShader /// geometry stage
3437 VkBool32 tessellationShader /// tessellation control and evaluation stage
3438 VkBool32 sampleRateShading /// per-sample shading and interpolation
Jesse Hall3fbc8562015-11-29 22:10:52 -08003439 VkBool32 dualSrcBlend /// blend operations which take two sources
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003440 VkBool32 logicOp /// logic operations
3441 VkBool32 multiDrawIndirect /// multi draw indirect
Jesse Hall543a7ff2016-01-08 16:38:30 -08003442 VkBool32 drawIndirectFirstInstance
Jesse Hallae38f732015-11-19 21:32:50 -08003443 VkBool32 depthClamp /// depth clamping
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003444 VkBool32 depthBiasClamp /// depth bias clamping
3445 VkBool32 fillModeNonSolid /// point and wireframe fill modes
3446 VkBool32 depthBounds /// depth bounds test
3447 VkBool32 wideLines /// lines with width greater than 1
3448 VkBool32 largePoints /// points with size greater than 1
Jesse Hallfbf97b02015-11-20 14:17:03 -08003449 VkBool32 alphaToOne /// The fragment alpha channel can be forced to maximum representable alpha value
3450 VkBool32 multiViewport
3451 VkBool32 samplerAnisotropy
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003452 VkBool32 textureCompressionETC2 /// ETC texture compression formats
3453 VkBool32 textureCompressionASTC_LDR /// ASTC LDR texture compression formats
3454 VkBool32 textureCompressionBC /// BC1-7 texture compressed formats
Jesse Hall65ab5522015-11-30 00:07:16 -08003455 VkBool32 occlusionQueryPrecise
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003456 VkBool32 pipelineStatisticsQuery /// pipeline statistics query
Jesse Halldc6d36c2015-11-29 19:12:15 -08003457 VkBool32 vertexPipelineStoresAndAtomics
3458 VkBool32 fragmentStoresAndAtomics
3459 VkBool32 shaderTessellationAndGeometryPointSize
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003460 VkBool32 shaderImageGatherExtended /// texture gather with run-time values and independent offsets
3461 VkBool32 shaderStorageImageExtendedFormats /// the extended set of formats can be used for storage images
3462 VkBool32 shaderStorageImageMultisample /// multisample images can be used for storage images
Jesse Halld1af8122015-11-29 23:50:38 -08003463 VkBool32 shaderStorageImageReadWithoutFormat
3464 VkBool32 shaderStorageImageWriteWithoutFormat
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003465 VkBool32 shaderUniformBufferArrayDynamicIndexing /// arrays of uniform buffers can be accessed with dynamically uniform indices
3466 VkBool32 shaderSampledImageArrayDynamicIndexing /// arrays of sampled images can be accessed with dynamically uniform indices
3467 VkBool32 shaderStorageBufferArrayDynamicIndexing /// arrays of storage buffers can be accessed with dynamically uniform indices
3468 VkBool32 shaderStorageImageArrayDynamicIndexing /// arrays of storage images can be accessed with dynamically uniform indices
3469 VkBool32 shaderClipDistance /// clip distance in shaders
3470 VkBool32 shaderCullDistance /// cull distance in shaders
3471 VkBool32 shaderFloat64 /// 64-bit floats (doubles) in shaders
3472 VkBool32 shaderInt64 /// 64-bit integers in shaders
3473 VkBool32 shaderInt16 /// 16-bit integers in shaders
3474 VkBool32 shaderResourceResidency /// shader can use texture operations that return resource residency information (requires sparseNonResident support)
Jesse Hall65ab5522015-11-30 00:07:16 -08003475 VkBool32 shaderResourceMinLod /// shader can use texture operations that specify minimum resource LOD
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003476 VkBool32 sparseBinding /// Sparse resources support: Resource memory can be managed at opaque page level rather than object level
3477 VkBool32 sparseResidencyBuffer /// Sparse resources support: GPU can access partially resident buffers
3478 VkBool32 sparseResidencyImage2D /// Sparse resources support: GPU can access partially resident 2D (non-MSAA non-DepthStencil) images
3479 VkBool32 sparseResidencyImage3D /// Sparse resources support: GPU can access partially resident 3D images
3480 VkBool32 sparseResidency2Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 2 samples
3481 VkBool32 sparseResidency4Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 4 samples
3482 VkBool32 sparseResidency8Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 8 samples
3483 VkBool32 sparseResidency16Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 16 samples
3484 VkBool32 sparseResidencyAliased /// Sparse resources support: GPU can correctly access data aliased into multiple locations (opt-in)
Jesse Halld1af8122015-11-29 23:50:38 -08003485 VkBool32 variableMultisampleRate
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003486 VkBool32 inheritedQueries
Jesse Halld27f6aa2015-08-15 17:58:48 -07003487}
3488
3489class VkPhysicalDeviceLimits {
3490 /// resource maximum sizes
3491 u32 maxImageDimension1D /// max 1D image dimension
3492 u32 maxImageDimension2D /// max 2D image dimension
3493 u32 maxImageDimension3D /// max 3D image dimension
3494 u32 maxImageDimensionCube /// max cubemap image dimension
3495 u32 maxImageArrayLayers /// max layers for image arrays
Jesse Hallb00daad2015-11-29 19:46:20 -08003496 u32 maxTexelBufferElements
Jesse Hallfbf97b02015-11-20 14:17:03 -08003497 u32 maxUniformBufferRange /// max uniform buffer size (bytes)
3498 u32 maxStorageBufferRange /// max storage buffer size (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003499 u32 maxPushConstantsSize /// max size of the push constants pool (bytes)
3500 /// memory limits
3501 u32 maxMemoryAllocationCount /// max number of device memory allocations supported
Jesse Hall091ed9e2015-11-30 00:55:29 -08003502 u32 maxSamplerAllocationCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003503 VkDeviceSize bufferImageGranularity /// Granularity (in bytes) at which buffers and images can be bound to adjacent memory for simultaneous usage
3504 VkDeviceSize sparseAddressSpaceSize /// Total address space available for sparse allocations (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003505 /// descriptor set limits
3506 u32 maxBoundDescriptorSets /// max number of descriptors sets that can be bound to a pipeline
Jesse Halld27f6aa2015-08-15 17:58:48 -07003507 u32 maxPerStageDescriptorSamplers /// max num of samplers allowed per-stage in a descriptor set
3508 u32 maxPerStageDescriptorUniformBuffers /// max num of uniform buffers allowed per-stage in a descriptor set
3509 u32 maxPerStageDescriptorStorageBuffers /// max num of storage buffers allowed per-stage in a descriptor set
3510 u32 maxPerStageDescriptorSampledImages /// max num of sampled images allowed per-stage in a descriptor set
3511 u32 maxPerStageDescriptorStorageImages /// max num of storage images allowed per-stage in a descriptor set
Jesse Halle1b12782015-11-30 11:27:32 -08003512 u32 maxPerStageDescriptorInputAttachments
Jesse Halldba27f72015-11-30 14:25:46 -08003513 u32 maxPerStageResources
Jesse Halld27f6aa2015-08-15 17:58:48 -07003514 u32 maxDescriptorSetSamplers /// max num of samplers allowed in all stages in a descriptor set
3515 u32 maxDescriptorSetUniformBuffers /// max num of uniform buffers allowed in all stages in a descriptor set
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003516 u32 maxDescriptorSetUniformBuffersDynamic /// max num of dynamic uniform buffers allowed in all stages in a descriptor set
Jesse Halld27f6aa2015-08-15 17:58:48 -07003517 u32 maxDescriptorSetStorageBuffers /// max num of storage buffers allowed in all stages in a descriptor set
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003518 u32 maxDescriptorSetStorageBuffersDynamic /// max num of dynamic storage buffers allowed in all stages in a descriptor set
Jesse Halld27f6aa2015-08-15 17:58:48 -07003519 u32 maxDescriptorSetSampledImages /// max num of sampled images allowed in all stages in a descriptor set
3520 u32 maxDescriptorSetStorageImages /// max num of storage images allowed in all stages in a descriptor set
Jesse Halle1b12782015-11-30 11:27:32 -08003521 u32 maxDescriptorSetInputAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003522 /// vertex stage limits
3523 u32 maxVertexInputAttributes /// max num of vertex input attribute slots
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003524 u32 maxVertexInputBindings /// max num of vertex input binding slots
Jesse Halld27f6aa2015-08-15 17:58:48 -07003525 u32 maxVertexInputAttributeOffset /// max vertex input attribute offset added to vertex buffer offset
3526 u32 maxVertexInputBindingStride /// max vertex input binding stride
3527 u32 maxVertexOutputComponents /// max num of output components written by vertex shader
3528 /// tessellation control stage limits
Jesse Hall3fbc8562015-11-29 22:10:52 -08003529 u32 maxTessellationGenerationLevel /// max level supported by tess primitive generator
Jesse Hallae38f732015-11-19 21:32:50 -08003530 u32 maxTessellationPatchSize /// max patch size (vertices)
3531 u32 maxTessellationControlPerVertexInputComponents /// max num of input components per-vertex in TCS
3532 u32 maxTessellationControlPerVertexOutputComponents /// max num of output components per-vertex in TCS
3533 u32 maxTessellationControlPerPatchOutputComponents /// max num of output components per-patch in TCS
3534 u32 maxTessellationControlTotalOutputComponents /// max total num of per-vertex and per-patch output components in TCS
3535 u32 maxTessellationEvaluationInputComponents /// max num of input components per vertex in TES
3536 u32 maxTessellationEvaluationOutputComponents /// max num of output components per vertex in TES
Jesse Halld27f6aa2015-08-15 17:58:48 -07003537 /// geometry stage limits
3538 u32 maxGeometryShaderInvocations /// max invocation count supported in geometry shader
3539 u32 maxGeometryInputComponents /// max num of input components read in geometry stage
3540 u32 maxGeometryOutputComponents /// max num of output components written in geometry stage
3541 u32 maxGeometryOutputVertices /// max num of vertices that can be emitted in geometry stage
3542 u32 maxGeometryTotalOutputComponents /// max total num of components (all vertices) written in geometry stage
3543 /// fragment stage limits
3544 u32 maxFragmentInputComponents /// max num of input compontents read in fragment stage
Jesse Hallfbf97b02015-11-20 14:17:03 -08003545 u32 maxFragmentOutputAttachments /// max num of output attachments written in fragment stage
Jesse Hall3fbc8562015-11-29 22:10:52 -08003546 u32 maxFragmentDualSrcAttachments /// max num of output attachments written when using dual source blending
Jesse Halld27f6aa2015-08-15 17:58:48 -07003547 u32 maxFragmentCombinedOutputResources /// max total num of storage buffers, storage images and output buffers
3548 /// compute stage limits
3549 u32 maxComputeSharedMemorySize /// max total storage size of work group local storage (bytes)
3550 u32[3] maxComputeWorkGroupCount /// max num of compute work groups that may be dispatched by a single command (x,y,z)
3551 u32 maxComputeWorkGroupInvocations /// max total compute invocations in a single local work group
3552 u32[3] maxComputeWorkGroupSize /// max local size of a compute work group (x,y,z)
3553
3554 u32 subPixelPrecisionBits /// num bits of subpixel precision in screen x and y
3555 u32 subTexelPrecisionBits /// num bits of subtexel precision
3556 u32 mipmapPrecisionBits /// num bits of mipmap precision
3557
3558 u32 maxDrawIndexedIndexValue /// max index value for indexed draw calls (for 32-bit indices)
Jesse Halldba27f72015-11-30 14:25:46 -08003559 u32 maxDrawIndirectCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003560
3561 f32 maxSamplerLodBias /// max absolute sampler level of detail bias
3562 f32 maxSamplerAnisotropy /// max degree of sampler anisotropy
3563
3564 u32 maxViewports /// max number of active viewports
Jesse Halld27f6aa2015-08-15 17:58:48 -07003565 u32[2] maxViewportDimensions /// max viewport dimensions (x,y)
3566 f32[2] viewportBoundsRange /// viewport bounds range (min,max)
3567 u32 viewportSubPixelBits /// num bits of subpixel precision for viewport
3568
Jesse Halldc6d36c2015-11-29 19:12:15 -08003569 platform.size_t minMemoryMapAlignment /// min required alignment of pointers returned by MapMemory (bytes)
3570 VkDeviceSize minTexelBufferOffsetAlignment /// min required alignment for texel buffer offsets (bytes)
3571 VkDeviceSize minUniformBufferOffsetAlignment /// min required alignment for uniform buffer sizes and offsets (bytes)
3572 VkDeviceSize minStorageBufferOffsetAlignment /// min required alignment for storage buffer offsets (bytes)
Jesse Halld27f6aa2015-08-15 17:58:48 -07003573
Jesse Hallfbf97b02015-11-20 14:17:03 -08003574 s32 minTexelOffset /// min texel offset for OpTextureSampleOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07003575 u32 maxTexelOffset /// max texel offset for OpTextureSampleOffset
Jesse Hallfbf97b02015-11-20 14:17:03 -08003576 s32 minTexelGatherOffset /// min texel offset for OpTextureGatherOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07003577 u32 maxTexelGatherOffset /// max texel offset for OpTextureGatherOffset
3578 f32 minInterpolationOffset /// furthest negative offset for interpolateAtOffset
3579 f32 maxInterpolationOffset /// furthest positive offset for interpolateAtOffset
3580 u32 subPixelInterpolationOffsetBits /// num of subpixel bits for interpolateAtOffset
3581
3582 u32 maxFramebufferWidth /// max width for a framebuffer
3583 u32 maxFramebufferHeight /// max height for a framebuffer
3584 u32 maxFramebufferLayers /// max layer count for a layered framebuffer
Jesse Hall091ed9e2015-11-30 00:55:29 -08003585 VkSampleCountFlags framebufferColorSampleCounts
3586 VkSampleCountFlags framebufferDepthSampleCounts
3587 VkSampleCountFlags framebufferStencilSampleCounts
3588 VkSampleCountFlags framebufferNoAttachmentSampleCounts
Jesse Halld27f6aa2015-08-15 17:58:48 -07003589 u32 maxColorAttachments /// max num of framebuffer color attachments
3590
Jesse Hall091ed9e2015-11-30 00:55:29 -08003591 VkSampleCountFlags sampledImageColorSampleCounts
3592 VkSampleCountFlags sampledImageIntegerSampleCounts
3593 VkSampleCountFlags sampledImageDepthSampleCounts
3594 VkSampleCountFlags sampledImageStencilSampleCounts
3595 VkSampleCountFlags storageImageSampleCounts
Jesse Halld27f6aa2015-08-15 17:58:48 -07003596 u32 maxSampleMaskWords /// max num of sample mask words
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003597 VkBool32 timestampComputeAndGraphics
Jesse Halld27f6aa2015-08-15 17:58:48 -07003598
Jesse Halla9bb62b2015-11-21 19:31:56 -08003599 f32 timestampPeriod
Jesse Halld27f6aa2015-08-15 17:58:48 -07003600
3601 u32 maxClipDistances /// max number of clip distances
3602 u32 maxCullDistances /// max number of cull distances
3603 u32 maxCombinedClipAndCullDistances /// max combined number of user clipping
3604
Jesse Hallfbf97b02015-11-20 14:17:03 -08003605 u32 discreteQueuePriorities
3606
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003607 f32[2] pointSizeRange /// range (min,max) of supported point sizes
3608 f32[2] lineWidthRange /// range (min,max) of supported line widths
Jesse Halld27f6aa2015-08-15 17:58:48 -07003609 f32 pointSizeGranularity /// granularity of supported point sizes
3610 f32 lineWidthGranularity /// granularity of supported line widths
Jesse Hall03b6fe12015-11-24 12:44:21 -08003611 VkBool32 strictLines
Jesse Hall091ed9e2015-11-30 00:55:29 -08003612 VkBool32 standardSampleLocations
Jesse Halla9bb62b2015-11-21 19:31:56 -08003613
Jesse Hall65ab5522015-11-30 00:07:16 -08003614 VkDeviceSize optimalBufferCopyOffsetAlignment
3615 VkDeviceSize optimalBufferCopyRowPitchAlignment
Jesse Halldba27f72015-11-30 14:25:46 -08003616 VkDeviceSize nonCoherentAtomSize
Jesse Halld27f6aa2015-08-15 17:58:48 -07003617}
3618
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003619class VkPhysicalDeviceSparseProperties {
3620 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 -08003621 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 -07003622 VkBool32 residencyStandard3DBlockShape /// Sparse resources support: GPU will access all 3D sparse resources using the standard block shapes (based on pixel format)
3623 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 -07003624 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
3625}
3626
Jesse Halld27f6aa2015-08-15 17:58:48 -07003627class VkSemaphoreCreateInfo {
3628 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO
3629 const void* pNext /// Pointer to next structure
3630 VkSemaphoreCreateFlags flags /// Semaphore creation flags
3631}
3632
3633class VkQueryPoolCreateInfo {
3634 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO
3635 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003636 VkQueryPoolCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003637 VkQueryType queryType
Jesse Hall3dd678a2016-01-08 21:52:01 -08003638 u32 queryCount
Jesse Halld27f6aa2015-08-15 17:58:48 -07003639 VkQueryPipelineStatisticFlags pipelineStatistics /// Optional
3640}
3641
3642class VkFramebufferCreateInfo {
3643 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO
3644 const void* pNext /// Pointer to next structure
Jesse Halla6429252015-11-29 18:59:42 -08003645 VkFramebufferCreateFlags flags
Jesse Halld27f6aa2015-08-15 17:58:48 -07003646 VkRenderPass renderPass
3647 u32 attachmentCount
Jesse Hall5ae3abb2015-10-08 14:00:22 -07003648 const VkImageView* pAttachments
Jesse Halld27f6aa2015-08-15 17:58:48 -07003649 u32 width
3650 u32 height
3651 u32 layers
3652}
3653
Jesse Hall3fbc8562015-11-29 22:10:52 -08003654class VkDrawIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003655 u32 vertexCount
3656 u32 instanceCount
3657 u32 firstVertex
3658 u32 firstInstance
3659}
3660
Jesse Hall3fbc8562015-11-29 22:10:52 -08003661class VkDrawIndexedIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003662 u32 indexCount
3663 u32 instanceCount
3664 u32 firstIndex
3665 s32 vertexOffset
3666 u32 firstInstance
3667}
3668
Jesse Hall3fbc8562015-11-29 22:10:52 -08003669class VkDispatchIndirectCommand {
Jesse Halld27f6aa2015-08-15 17:58:48 -07003670 u32 x
3671 u32 y
3672 u32 z
3673}
3674
Jesse Hallad250842017-03-10 18:35:38 -08003675@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08003676class VkSurfaceCapabilitiesKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003677 u32 minImageCount
3678 u32 maxImageCount
3679 VkExtent2D currentExtent
3680 VkExtent2D minImageExtent
3681 VkExtent2D maxImageExtent
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003682 u32 maxImageArrayLayers
Jesse Hall1356b0d2015-11-23 17:24:58 -08003683 VkSurfaceTransformFlagsKHR supportedTransforms
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003684 VkSurfaceTransformFlagBitsKHR currentTransform
Jesse Halla6429252015-11-29 18:59:42 -08003685 VkCompositeAlphaFlagsKHR supportedCompositeAlpha
Jesse Hall1356b0d2015-11-23 17:24:58 -08003686 VkImageUsageFlags supportedUsageFlags
Michael Lentine88594d72015-11-12 12:49:45 -08003687}
3688
Jesse Hallad250842017-03-10 18:35:38 -08003689@extension("VK_KHR_surface") // 1
Michael Lentine88594d72015-11-12 12:49:45 -08003690class VkSurfaceFormatKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003691 VkFormat format
3692 VkColorSpaceKHR colorSpace
Michael Lentine88594d72015-11-12 12:49:45 -08003693}
3694
Jesse Hallad250842017-03-10 18:35:38 -08003695@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08003696class VkSwapchainCreateInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003697 VkStructureType sType
3698 const void* pNext
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003699 VkSwapchainCreateFlagsKHR flags
Jesse Hall1356b0d2015-11-23 17:24:58 -08003700 VkSurfaceKHR surface
3701 u32 minImageCount
3702 VkFormat imageFormat
3703 VkColorSpaceKHR imageColorSpace
3704 VkExtent2D imageExtent
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003705 u32 imageArrayLayers
3706 VkImageUsageFlags imageUsage
Jesse Hall1356b0d2015-11-23 17:24:58 -08003707 VkSharingMode sharingMode
Jesse Hall03b6fe12015-11-24 12:44:21 -08003708 u32 queueFamilyIndexCount
Jesse Hall1356b0d2015-11-23 17:24:58 -08003709 const u32* pQueueFamilyIndices
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003710 VkSurfaceTransformFlagBitsKHR preTransform
3711 VkCompositeAlphaFlagBitsKHR compositeAlpha
Jesse Hall1356b0d2015-11-23 17:24:58 -08003712 VkPresentModeKHR presentMode
Jesse Hall1356b0d2015-11-23 17:24:58 -08003713 VkBool32 clipped
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003714 VkSwapchainKHR oldSwapchain
Michael Lentine88594d72015-11-12 12:49:45 -08003715}
3716
Jesse Hallad250842017-03-10 18:35:38 -08003717@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08003718class VkPresentInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003719 VkStructureType sType
3720 const void* pNext
Jesse Hallb00daad2015-11-29 19:46:20 -08003721 u32 waitSemaphoreCount
3722 const VkSemaphore* pWaitSemaphores
Jesse Hall1356b0d2015-11-23 17:24:58 -08003723 u32 swapchainCount
Jesse Hall03b6fe12015-11-24 12:44:21 -08003724 const VkSwapchainKHR* pSwapchains
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003725 const u32* pImageIndices
Jesse Halle1b12782015-11-30 11:27:32 -08003726 VkResult* pResults
Michael Lentine88594d72015-11-12 12:49:45 -08003727}
3728
Jesse Hallad250842017-03-10 18:35:38 -08003729@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003730class VkDisplayPropertiesKHR {
3731 VkDisplayKHR display
3732 const char* displayName
3733 VkExtent2D physicalDimensions
3734 VkExtent2D physicalResolution
3735 VkSurfaceTransformFlagsKHR supportedTransforms
Jesse Hall1356b0d2015-11-23 17:24:58 -08003736 VkBool32 planeReorderPossible
Jesse Halla6429252015-11-29 18:59:42 -08003737 VkBool32 persistentContent
Michael Lentine88594d72015-11-12 12:49:45 -08003738}
3739
Jesse Hallad250842017-03-10 18:35:38 -08003740@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003741class VkDisplayModeParametersKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003742 VkExtent2D visibleRegion
Jesse Halla6429252015-11-29 18:59:42 -08003743 u32 refreshRate
Michael Lentine88594d72015-11-12 12:49:45 -08003744}
Jesse Halld27f6aa2015-08-15 17:58:48 -07003745
Jesse Hallad250842017-03-10 18:35:38 -08003746@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003747class VkDisplayModePropertiesKHR {
3748 VkDisplayModeKHR displayMode
Jesse Halla6429252015-11-29 18:59:42 -08003749 VkDisplayModeParametersKHR parameters
Jesse Hall1356b0d2015-11-23 17:24:58 -08003750}
3751
Jesse Hallad250842017-03-10 18:35:38 -08003752@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003753class VkDisplayModeCreateInfoKHR {
3754 VkStructureType sType
3755 const void* pNext
Jesse Hall9ba8bc82015-11-30 16:22:16 -08003756 VkDisplayModeCreateFlagsKHR flags
Jesse Halla6429252015-11-29 18:59:42 -08003757 VkDisplayModeParametersKHR parameters
Jesse Hall1356b0d2015-11-23 17:24:58 -08003758}
3759
Jesse Hallad250842017-03-10 18:35:38 -08003760@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08003761class VkDisplayPlanePropertiesKHR {
Jesse Halla6429252015-11-29 18:59:42 -08003762 VkDisplayKHR currentDisplay
3763 u32 currentStackIndex
3764}
3765
Jesse Hallad250842017-03-10 18:35:38 -08003766@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003767class VkDisplayPlaneCapabilitiesKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003768 VkDisplayPlaneAlphaFlagsKHR supportedAlpha
3769 VkOffset2D minSrcPosition
3770 VkOffset2D maxSrcPosition
3771 VkExtent2D minSrcExtent
3772 VkExtent2D maxSrcExtent
3773 VkOffset2D minDstPosition
3774 VkOffset2D maxDstPosition
3775 VkExtent2D minDstExtent
3776 VkExtent2D maxDstExtent
3777}
3778
Jesse Hallad250842017-03-10 18:35:38 -08003779@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08003780class VkDisplaySurfaceCreateInfoKHR {
Jesse Hall1356b0d2015-11-23 17:24:58 -08003781 VkStructureType sType
3782 const void* pNext
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003783 VkDisplaySurfaceCreateFlagsKHR flags
Jesse Hall1356b0d2015-11-23 17:24:58 -08003784 VkDisplayModeKHR displayMode
3785 u32 planeIndex
3786 u32 planeStackIndex
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003787 VkSurfaceTransformFlagBitsKHR transform
Jesse Hall1356b0d2015-11-23 17:24:58 -08003788 f32 globalAlpha
Jesse Hallf4ab2b12015-11-30 16:04:55 -08003789 VkDisplayPlaneAlphaFlagBitsKHR alphaMode
3790 VkExtent2D imageExtent
Jesse Hall1356b0d2015-11-23 17:24:58 -08003791}
3792
Jesse Hallad250842017-03-10 18:35:38 -08003793@extension("VK_KHR_display_swapchain") // 4
Jesse Hall1356b0d2015-11-23 17:24:58 -08003794class VkDisplayPresentInfoKHR {
3795 VkStructureType sType
3796 const void* pNext
3797 VkRect2D srcRect
3798 VkRect2D dstRect
Jesse Halla6429252015-11-29 18:59:42 -08003799 VkBool32 persistent
Jesse Hall1356b0d2015-11-23 17:24:58 -08003800}
3801
Jesse Hallad250842017-03-10 18:35:38 -08003802@extension("VK_KHR_xlib_surface") // 5
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003803class VkXlibSurfaceCreateInfoKHR {
3804 VkStructureType sType
3805 const void* pNext
3806 VkXlibSurfaceCreateFlagsKHR flags
3807 platform.Display* dpy
3808 platform.Window window
3809}
3810
Jesse Hallad250842017-03-10 18:35:38 -08003811@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003812class VkXcbSurfaceCreateInfoKHR {
3813 VkStructureType sType
3814 const void* pNext
3815 VkXcbSurfaceCreateFlagsKHR flags
3816 platform.xcb_connection_t* connection
3817 platform.xcb_window_t window
3818}
3819
Jesse Hallad250842017-03-10 18:35:38 -08003820@extension("VK_KHR_wayland_surface") // 7
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003821class VkWaylandSurfaceCreateInfoKHR {
3822 VkStructureType sType
3823 const void* pNext
3824 VkWaylandSurfaceCreateFlagsKHR flags
3825 platform.wl_display* display
3826 platform.wl_surface* surface
3827}
3828
Jesse Hallad250842017-03-10 18:35:38 -08003829@extension("VK_KHR_mir_surface") // 8
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003830class VkMirSurfaceCreateInfoKHR {
3831 VkStructureType sType
3832 const void* pNext
3833 VkMirSurfaceCreateFlagsKHR flags
3834 platform.MirConnection* connection
3835 platform.MirSurface* mirSurface
3836}
3837
Jesse Hallad250842017-03-10 18:35:38 -08003838@extension("VK_KHR_android_surface") // 9
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003839class VkAndroidSurfaceCreateInfoKHR {
3840 VkStructureType sType
3841 const void* pNext
3842 VkAndroidSurfaceCreateFlagsKHR flags
3843 platform.ANativeWindow* window
3844}
3845
Jesse Hallad250842017-03-10 18:35:38 -08003846@extension("VK_KHR_win32_surface") // 10
Jesse Hallf9fa9a52016-01-08 16:08:51 -08003847class VkWin32SurfaceCreateInfoKHR {
3848 VkStructureType sType
3849 const void* pNext
3850 VkWin32SurfaceCreateFlagsKHR flags
3851 platform.HINSTANCE hinstance
3852 platform.HWND hwnd
3853}
3854
Jesse Hallad250842017-03-10 18:35:38 -08003855@extension("VK_ANDROID_native_buffer") // 11
Jesse Halld1abd742017-02-09 21:45:51 -08003856@internal class Gralloc1Usage {
3857 u64 consumer
3858 u64 producer
3859}
3860
Jesse Hallad250842017-03-10 18:35:38 -08003861@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08003862class VkNativeBufferANDROID {
3863 VkStructureType sType
3864 const void* pNext
3865 platform.buffer_handle_t handle
Jesse Halld1abd742017-02-09 21:45:51 -08003866 s32 stride
3867 s32 format
3868 s32 usage
3869 Gralloc1Usage usage2
Chia-I Wub262ddc2016-03-22 07:38:20 +08003870}
3871
Jesse Hallad250842017-03-10 18:35:38 -08003872@extension("VK_ANDROID_native_buffer") // 11
Chris Forbes8e4438b2016-12-07 16:26:49 +13003873class VkSwapchainImageCreateInfoANDROID {
3874 VkStructureType sType
3875 const void* pNext
Chris Forbes134d9582017-01-12 14:26:37 +13003876 VkSwapchainImageUsageFlagsANDROID flags
Chris Forbes48853712017-01-12 14:09:33 +13003877}
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07003878
Jesse Hallad250842017-03-10 18:35:38 -08003879@extension("VK_ANDROID_native_buffer") // 11
Chris Forbes1d4e5542017-02-15 19:38:50 +13003880class VkPhysicalDevicePresentationPropertiesANDROID {
3881 VkStructureType sType
3882 void* pNext
3883 VkBool32 sharedImage
3884}
3885
Jesse Hallad250842017-03-10 18:35:38 -08003886@extension("VK_EXT_debug_report") // 12
Jesse Hall715b86a2016-01-16 16:34:29 -08003887class VkDebugReportCallbackCreateInfoEXT {
3888 VkStructureType sType
3889 const void* pNext
3890 VkDebugReportFlagsEXT flags
3891 PFN_vkDebugReportCallbackEXT pfnCallback
3892 void* pUserData
3893}
3894
Jesse Hallad250842017-03-10 18:35:38 -08003895@extension("VK_AMD_rasterization_order") // 19
Jesse Hall26763382016-05-20 07:13:52 -07003896class VkPipelineRasterizationStateRasterizationOrderAMD {
3897 VkStructureType sType
3898 const void* pNext
3899 VkRasterizationOrderAMD rasterizationOrder
3900}
3901
Jesse Hallad250842017-03-10 18:35:38 -08003902@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003903class VkDebugMarkerObjectNameInfoEXT {
3904 VkStructureType sType
3905 const void* pNext
3906 VkDebugReportObjectTypeEXT objectType
3907 u64 object
3908 const char* pObjectName
3909}
3910
Jesse Hallad250842017-03-10 18:35:38 -08003911@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003912class VkDebugMarkerObjectTagInfoEXT {
3913 VkStructureType sType
3914 const void* pNext
3915 VkDebugReportObjectTypeEXT objectType
3916 u64 object
3917 u64 tagName
3918 platform.size_t tagSize
3919 const void* pTag
3920}
3921
Jesse Hallad250842017-03-10 18:35:38 -08003922@extension("VK_EXT_debug_marker") // 23
Jesse Hall26763382016-05-20 07:13:52 -07003923class VkDebugMarkerMarkerInfoEXT {
3924 VkStructureType sType
3925 const void* pNext
3926 const char* pMarkerName
3927 f32[4] color
3928}
3929
Jesse Hallad250842017-03-10 18:35:38 -08003930@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07003931class VkDedicatedAllocationImageCreateInfoNV {
3932 VkStructureType sType
3933 const void* pNext
3934 VkBool32 dedicatedAllocation
3935}
3936
Jesse Hallad250842017-03-10 18:35:38 -08003937@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07003938class VkDedicatedAllocationBufferCreateInfoNV {
3939 VkStructureType sType
3940 const void* pNext
3941 VkBool32 dedicatedAllocation
3942}
3943
Jesse Hallad250842017-03-10 18:35:38 -08003944@extension("VK_NV_dedicated_allocation") // 27
Jesse Hall56d386a2016-07-26 15:20:40 -07003945class VkDedicatedAllocationMemoryAllocateInfoNV {
3946 VkStructureType sType
3947 const void* pNext
3948 VkImage image
3949 VkBuffer buffer
3950}
3951
Jesse Hall7ba0ac72017-07-07 17:13:23 -07003952@extension("VK_AMD_texture_gather_bias_lod") // 42
3953class VkTextureLODGatherFormatPropertiesAMD {
3954 VkStructureType sType
3955 void* pNext
3956 VkBool32 supportsTextureGatherLODBiasAMD
3957}
3958
Jesse Hallad250842017-03-10 18:35:38 -08003959@extension("VK_KHX_multiview") // 54
3960class VkRenderPassMultiviewCreateInfoKHX {
3961 VkStructureType sType
3962 const void* pNext
3963 u32 subpassCount
3964 const u32* pViewMasks
3965 u32 dependencyCount
3966 const s32* pViewOffsets
3967 u32 correlationMaskCount
3968 const u32* pCorrelationMasks
3969}
3970
3971@extension("VK_KHX_multiview") // 54
3972class VkPhysicalDeviceMultiviewFeaturesKHX {
3973 VkStructureType sType
3974 void* pNext
3975 VkBool32 multiview
3976 VkBool32 multiviewGeometryShader
3977 VkBool32 multiviewTessellationShader
3978}
3979
3980@extension("VK_KHX_multiview") // 54
3981class VkPhysicalDeviceMultiviewPropertiesKHX {
3982 VkStructureType sType
3983 void* pNext
3984 u32 maxMultiviewViewCount
3985 u32 maxMultiviewInstanceIndex
3986}
3987
3988@extension("VK_NV_external_memory_capabilities") // 56
Jesse Halleb02c472017-02-24 15:13:45 -08003989class VkExternalImageFormatPropertiesNV {
3990 VkImageFormatProperties imageFormatProperties
3991 VkExternalMemoryFeatureFlagsNV externalMemoryFeatures
3992 VkExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes
3993 VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes
3994}
3995
Jesse Hallad250842017-03-10 18:35:38 -08003996@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08003997class VkExternalMemoryImageCreateInfoNV {
3998 VkStructureType sType
3999 const void* pNext
4000 VkExternalMemoryHandleTypeFlagsNV handleTypes
4001}
4002
Jesse Hallad250842017-03-10 18:35:38 -08004003@extension("VK_NV_external_memory") // 57
Jesse Halleb02c472017-02-24 15:13:45 -08004004class VkExportMemoryAllocateInfoNV {
4005 VkStructureType sType
4006 const void* pNext
4007 VkExternalMemoryHandleTypeFlagsNV handleTypes
4008}
4009
Jesse Hallad250842017-03-10 18:35:38 -08004010@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08004011class VkImportMemoryWin32HandleInfoNV {
4012 VkStructureType sType
4013 const void* pNext
4014 VkExternalMemoryHandleTypeFlagsNV handleType
4015 platform.HANDLE handle
4016}
4017
Jesse Hallad250842017-03-10 18:35:38 -08004018@extension("VK_NV_external_memory_win32") // 58
Jesse Halleb02c472017-02-24 15:13:45 -08004019class VkExportMemoryWin32HandleInfoNV {
4020 VkStructureType sType
4021 const void* pNext
4022 const platform.SECURITY_ATTRIBUTES* pAttributes
4023 platform.DWORD dwAccess
4024}
4025
Jesse Hallad250842017-03-10 18:35:38 -08004026@extension("VK_NV_win32_keyed_mutex") // 59
Jesse Halleb02c472017-02-24 15:13:45 -08004027class VkWin32KeyedMutexAcquireReleaseInfoNV {
4028 VkStructureType sType
4029 const void* pNext
4030 u32 acquireCount
4031 const VkDeviceMemory* pAcquireSyncs
4032 const u64* pAcquireKeys
4033 const u32* pAcquireTimeoutMilliseconds
4034 u32 releaseCount
4035 const VkDeviceMemory* pReleaseSyncs
4036 const u64* pReleaseKeys
4037}
4038
Jesse Hallad250842017-03-10 18:35:38 -08004039@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13004040class VkPhysicalDeviceFeatures2KHR {
4041 VkStructureType sType
4042 void* pNext
4043 VkPhysicalDeviceFeatures features
4044}
4045
Jesse Hallad250842017-03-10 18:35:38 -08004046@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13004047class VkPhysicalDeviceProperties2KHR {
4048 VkStructureType sType
4049 void* pNext
4050 VkPhysicalDeviceProperties properties
4051}
4052
Jesse Hallad250842017-03-10 18:35:38 -08004053@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13004054class VkFormatProperties2KHR {
4055 VkStructureType sType
4056 void* pNext
4057 VkFormatProperties formatProperties
4058}
4059
Jesse Hallad250842017-03-10 18:35:38 -08004060@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13004061class VkImageFormatProperties2KHR {
4062 VkStructureType sType
4063 void* pNext
4064 VkImageFormatProperties imageFormatProperties
4065}
4066
Jesse Hallad250842017-03-10 18:35:38 -08004067@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13004068class VkPhysicalDeviceImageFormatInfo2KHR {
4069 VkStructureType sType
4070 const void* pNext
4071 VkFormat format
4072 VkImageType type
4073 VkImageTiling tiling
4074 VkImageUsageFlags usage
4075 VkImageCreateFlags flags
4076}
4077
Jesse Hallad250842017-03-10 18:35:38 -08004078@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13004079class VkQueueFamilyProperties2KHR {
4080 VkStructureType sType
4081 void* pNext
4082 VkQueueFamilyProperties queueFamilyProperties
4083}
4084
Jesse Hallad250842017-03-10 18:35:38 -08004085@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13004086class VkPhysicalDeviceMemoryProperties2KHR {
4087 VkStructureType sType
4088 void* pNext
4089 VkPhysicalDeviceMemoryProperties memoryProperties
4090}
4091
Jesse Hallad250842017-03-10 18:35:38 -08004092@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13004093class VkSparseImageFormatProperties2KHR {
4094 VkStructureType sType
4095 void* pNext
4096 VkSparseImageFormatProperties properties
4097}
4098
Jesse Hallad250842017-03-10 18:35:38 -08004099@extension("VK_KHR_get_physical_device_properties2") // 60
Chris Forbes1194ede2016-12-30 16:29:25 +13004100class VkPhysicalDeviceSparseImageFormatInfo2KHR {
4101 VkStructureType sType
4102 const void* pNext
4103 VkFormat format
4104 VkImageType type
4105 VkSampleCountFlagBits samples
4106 VkImageUsageFlags usage
4107 VkImageTiling tiling
4108}
4109
Jesse Hallad250842017-03-10 18:35:38 -08004110@extension("VK_KHX_device_group") // 61
4111class VkMemoryAllocateFlagsInfoKHX {
4112 VkStructureType sType
4113 const void* pNext
4114 VkMemoryAllocateFlagsKHX flags
4115 u32 deviceMask
4116}
4117
4118@extension("VK_KHX_device_group") // 61
Jesse Hall076f95d2017-09-20 11:34:47 -07004119class VkBindBufferMemoryDeviceGroupInfoKHX {
Jesse Hallad250842017-03-10 18:35:38 -08004120 VkStructureType sType
4121 const void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08004122 u32 deviceIndexCount
4123 const u32* pDeviceIndices
4124}
4125
4126@extension("VK_KHX_device_group") // 61
Jesse Hall076f95d2017-09-20 11:34:47 -07004127class VkBindImageMemoryDeviceGroupInfoKHX {
Jesse Hallad250842017-03-10 18:35:38 -08004128 VkStructureType sType
4129 const void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08004130 u32 deviceIndexCount
4131 const u32* pDeviceIndices
4132 u32 SFRRectCount
4133 const VkRect2D* pSFRRects
4134}
4135
4136@extension("VK_KHX_device_group") // 61
4137class VkDeviceGroupRenderPassBeginInfoKHX {
4138 VkStructureType sType
4139 const void* pNext
4140 u32 deviceMask
4141 u32 deviceRenderAreaCount
4142 const VkRect2D* pDeviceRenderAreas
4143}
4144
4145@extension("VK_KHX_device_group") // 61
4146class VkDeviceGroupCommandBufferBeginInfoKHX {
4147 VkStructureType sType
4148 const void* pNext
4149 u32 deviceMask
4150}
4151
4152@extension("VK_KHX_device_group") // 61
4153class VkDeviceGroupSubmitInfoKHX {
4154 VkStructureType sType
4155 const void* pNext
4156 u32 waitSemaphoreCount
4157 const u32* pWaitSemaphoreDeviceIndices
4158 u32 commandBufferCount
4159 const u32* pCommandBufferDeviceMasks
4160 u32 signalSemaphoreCount
4161 const u32* pSignalSemaphoreDeviceIndices
4162}
4163
4164@extension("VK_KHX_device_group") // 61
4165class VkDeviceGroupBindSparseInfoKHX {
4166 VkStructureType sType
4167 const void* pNext
4168 u32 resourceDeviceIndex
4169 u32 memoryDeviceIndex
4170}
4171
4172@extension("VK_KHX_device_group") // 61
4173class VkDeviceGroupPresentCapabilitiesKHX {
4174 VkStructureType sType
4175 const void* pNext
4176 u32[VK_MAX_DEVICE_GROUP_SIZE_KHX] presentMask
4177 VkDeviceGroupPresentModeFlagsKHX modes
4178}
4179
4180@extension("VK_KHX_device_group") // 61
4181class VkImageSwapchainCreateInfoKHX {
4182 VkStructureType sType
4183 const void* pNext
4184 VkSwapchainKHR swapchain
4185}
4186
4187@extension("VK_KHX_device_group") // 61
4188class VkBindImageMemorySwapchainInfoKHX {
4189 VkStructureType sType
4190 const void* pNext
4191 VkSwapchainKHR swapchain
4192 u32 imageIndex
4193}
4194
4195@extension("VK_KHX_device_group") // 61
4196class VkAcquireNextImageInfoKHX {
4197 VkStructureType sType
4198 const void* pNext
4199 VkSwapchainKHR swapchain
4200 u64 timeout
4201 VkSemaphore semaphore
4202 VkFence fence
4203 u32 deviceMask
4204}
4205
4206@extension("VK_KHX_device_group") // 61
4207class VkDeviceGroupPresentInfoKHX {
4208 VkStructureType sType
4209 const void* pNext
4210 u32 swapchainCount
4211 const u32* pDeviceMasks
4212 VkDeviceGroupPresentModeFlagBitsKHX mode
4213}
4214
4215@extension("VK_KHX_device_group") // 61
4216class VkDeviceGroupSwapchainCreateInfoKHX {
4217 VkStructureType sType
4218 const void* pNext
4219 VkDeviceGroupPresentModeFlagsKHX modes
4220}
4221
4222@extension("VK_EXT_validation_flags") // 62
Chris Forbes289cb792016-12-30 15:03:55 +13004223class VkValidationFlagsEXT {
4224 VkStructureType sType
4225 const void* pNext
4226 u32 disabledValidationCheckCount
4227 VkValidationCheckEXT* pDisabledValidationChecks
4228}
4229
Jesse Hallad250842017-03-10 18:35:38 -08004230@extension("VK_NN_vi_surface") // 63
Jesse Hall77ad05b2017-03-10 22:02:20 -08004231class VkViSurfaceCreateInfoNN {
4232 VkStructureType sType
4233 const void* pNext
4234 VkViSurfaceCreateFlagsNN flags
4235 void* window
4236}
4237
Jesse Hallad250842017-03-10 18:35:38 -08004238@extension("VK_KHX_device_group_creation") // 71
4239class VkPhysicalDeviceGroupPropertiesKHX {
4240 VkStructureType sType
Jesse Hallf5ad48b2017-03-20 13:09:19 -07004241 void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08004242 u32 physicalDeviceCount
4243 VkPhysicalDevice[VK_MAX_DEVICE_GROUP_SIZE_KHX] physicalDevices
4244 VkBool32 subsetAllocation
4245}
4246
4247@extension("VK_KHX_device_group_creation") // 71
4248class VkDeviceGroupDeviceCreateInfoKHX {
4249 VkStructureType sType
4250 const void* pNext
4251 u32 physicalDeviceCount
4252 const VkPhysicalDevice* pPhysicalDevices
4253}
4254
Jesse Hall9492f992017-08-28 12:10:06 -07004255@extension("VK_KHR_external_memory_capabilities") // 72
4256class VkExternalMemoryPropertiesKHR {
4257 VkExternalMemoryFeatureFlagsKHR externalMemoryFeatures
4258 VkExternalMemoryHandleTypeFlagsKHR exportFromImportedHandleTypes
4259 VkExternalMemoryHandleTypeFlagsKHR compatibleHandleTypes
Jesse Hallad250842017-03-10 18:35:38 -08004260}
4261
Jesse Hall9492f992017-08-28 12:10:06 -07004262@extension("VK_KHR_external_memory_capabilities") // 72
4263class VkPhysicalDeviceExternalImageFormatInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004264 VkStructureType sType
4265 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004266 VkExternalMemoryHandleTypeFlagBitsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08004267}
4268
Jesse Hall9492f992017-08-28 12:10:06 -07004269@extension("VK_KHR_external_memory_capabilities") // 72
4270class VkExternalImageFormatPropertiesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004271 VkStructureType sType
4272 void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004273 VkExternalMemoryPropertiesKHR externalMemoryProperties
Jesse Hallad250842017-03-10 18:35:38 -08004274}
4275
Jesse Hall9492f992017-08-28 12:10:06 -07004276@extension("VK_KHR_external_memory_capabilities") // 72
4277class VkPhysicalDeviceExternalBufferInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004278 VkStructureType sType
4279 const void* pNext
4280 VkBufferCreateFlags flags
4281 VkBufferUsageFlags usage
Jesse Hall9492f992017-08-28 12:10:06 -07004282 VkExternalMemoryHandleTypeFlagBitsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08004283}
4284
Jesse Hall9492f992017-08-28 12:10:06 -07004285@extension("VK_KHR_external_memory_capabilities") // 72
4286class VkExternalBufferPropertiesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004287 VkStructureType sType
4288 void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004289 VkExternalMemoryPropertiesKHR externalMemoryProperties
Jesse Hallad250842017-03-10 18:35:38 -08004290}
4291
Jesse Hall9492f992017-08-28 12:10:06 -07004292@extension("VK_KHR_external_memory_capabilities") // 72
4293class VkPhysicalDeviceIDPropertiesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004294 VkStructureType sType
4295 void* pNext
4296 u8[VK_UUID_SIZE] deviceUUID
4297 u8[VK_UUID_SIZE] driverUUID
Jesse Hall9492f992017-08-28 12:10:06 -07004298 u8[VK_LUID_SIZE_KHR] deviceLUID
4299 u32 deviceNodeMask
Jesse Hallad250842017-03-10 18:35:38 -08004300 VkBool32 deviceLUIDValid
4301}
4302
Jesse Hall9492f992017-08-28 12:10:06 -07004303@extension("VK_KHR_external_memory") // 73
4304class VkExternalMemoryImageCreateInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004305 VkStructureType sType
4306 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004307 VkExternalMemoryHandleTypeFlagsKHR handleTypes
Jesse Hallad250842017-03-10 18:35:38 -08004308}
4309
Jesse Hall9492f992017-08-28 12:10:06 -07004310@extension("VK_KHR_external_memory") // 73
4311class VkExternalMemoryBufferCreateInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004312 VkStructureType sType
4313 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004314 VkExternalMemoryHandleTypeFlagsKHR handleTypes
Jesse Hallad250842017-03-10 18:35:38 -08004315}
4316
Jesse Hall9492f992017-08-28 12:10:06 -07004317@extension("VK_KHR_external_memory") // 73
4318class VkExportMemoryAllocateInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004319 VkStructureType sType
4320 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004321 VkExternalMemoryHandleTypeFlagsKHR handleTypes
Jesse Hallad250842017-03-10 18:35:38 -08004322}
4323
Jesse Hall9492f992017-08-28 12:10:06 -07004324@extension("VK_KHR_external_memory_win32") // 74
4325class VkImportMemoryWin32HandleInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004326 VkStructureType sType
4327 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004328 VkExternalMemoryHandleTypeFlagBitsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08004329 platform.HANDLE handle
Jesse Hall9492f992017-08-28 12:10:06 -07004330 platform.LPCWSTR name
Jesse Hallad250842017-03-10 18:35:38 -08004331}
4332
Jesse Hall9492f992017-08-28 12:10:06 -07004333@extension("VK_KHR_external_memory_win32") // 74
4334class VkExportMemoryWin32HandleInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004335 VkStructureType sType
4336 const void* pNext
4337 const platform.SECURITY_ATTRIBUTES* pAttributes
4338 platform.DWORD dwAccess
4339 platform.LPCWSTR name
4340}
4341
Jesse Hall9492f992017-08-28 12:10:06 -07004342@extension("VK_KHR_external_memory_win32") // 74
4343class VkMemoryWin32HandlePropertiesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004344 VkStructureType sType
4345 void* pNext
4346 u32 memoryTypeBits
4347}
4348
Jesse Hall9492f992017-08-28 12:10:06 -07004349@extension("VK_KHR_external_memory_win32") // 74
4350class VkMemoryGetWin32HandleInfoKHR {
4351 VkStructureType sType
4352 void* pNext
4353 VkDeviceMemory memory
4354 VkExternalMemoryHandleTypeFlagBitsKHR handleType
4355}
4356
4357@extension("VK_KHR_external_memory_fd") // 75
4358class VkImportMemoryFdInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004359 VkStructureType sType
4360 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004361 VkExternalMemoryHandleTypeFlagBitsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08004362 int fd
4363}
4364
Jesse Hall9492f992017-08-28 12:10:06 -07004365@extension("VK_KHR_external_memory_fd") // 75
4366class VkMemoryFdPropertiesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004367 VkStructureType sType
4368 void* pNext
4369 u32 memoryTypeBits
4370}
4371
Jesse Hall9492f992017-08-28 12:10:06 -07004372@extension("VK_KHR_external_memory_fd") // 75
4373class VkMemoryGetFdInfoKHR {
4374 VkStructureType sType
4375 void* pNext
4376 VkDeviceMemory memory
4377 VkExternalMemoryHandleTypeFlagBitsKHR handleType
4378}
4379
4380@extension("VK_KHR_win32_keyed_mutex") // 76
4381class VkWin32KeyedMutexAcquireReleaseInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004382 VkStructureType sType
4383 const void* pNext
4384 u32 acquireCount
4385 const VkDeviceMemory* pAcquireSyncs
4386 const u64* pAcquireKeys
4387 const u32* pAcquireTimeouts
4388 u32 releaseCount
4389 const VkDeviceMemory* pReleaseSyncs
4390 const u64* pReleaseKeys
4391}
4392
Jesse Hall9492f992017-08-28 12:10:06 -07004393@extension("VK_KHR_external_semaphore_capabilities") // 77
4394class VkPhysicalDeviceExternalSemaphoreInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004395 VkStructureType sType
4396 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004397 VkExternalSemaphoreHandleTypeFlagBitsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08004398}
4399
Jesse Hall9492f992017-08-28 12:10:06 -07004400@extension("VK_KHR_external_semaphore_capabilities") // 77
4401class VkExternalSemaphorePropertiesKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004402 VkStructureType sType
4403 void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004404 VkExternalSemaphoreHandleTypeFlagsKHR exportFromImportedHandleTypes
4405 VkExternalSemaphoreHandleTypeFlagsKHR compatibleHandleTypes
4406 VkExternalSemaphoreFeatureFlagsKHR externalSemaphoreFeatures
Jesse Hallad250842017-03-10 18:35:38 -08004407}
4408
Jesse Hall9492f992017-08-28 12:10:06 -07004409@extension("VK_KHR_external_semaphore") // 78
4410class VkExportSemaphoreCreateInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004411 VkStructureType sType
4412 const void* pNext
Jesse Hall9492f992017-08-28 12:10:06 -07004413 VkExternalSemaphoreHandleTypeFlagsKHR handleTypes
Jesse Hallad250842017-03-10 18:35:38 -08004414}
4415
Jesse Hall9492f992017-08-28 12:10:06 -07004416@extension("VK_KHR_external_semaphore_win32") // 79
4417class VkImportSemaphoreWin32HandleInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004418 VkStructureType sType
4419 const void* pNext
4420 VkSemaphore semaphore
Jesse Hall9492f992017-08-28 12:10:06 -07004421 VkSemaphoreImportFlagsKHR flags
4422 VkExternalSemaphoreHandleTypeFlagsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08004423 platform.HANDLE handle
Jesse Hall9492f992017-08-28 12:10:06 -07004424 platform.LPCWSTR name
Jesse Hallad250842017-03-10 18:35:38 -08004425}
4426
Jesse Hall9492f992017-08-28 12:10:06 -07004427@extension("VK_KHR_external_semaphore_win32") // 79
4428class VkExportSemaphoreWin32HandleInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004429 VkStructureType sType
4430 const void* pNext
4431 const platform.SECURITY_ATTRIBUTES* pAttributes
4432 platform.DWORD dwAccess
4433 platform.LPCWSTR name
4434}
4435
Jesse Hall9492f992017-08-28 12:10:06 -07004436@extension("VK_KHR_external_semaphore_win32") // 79
4437class VkD3D12FenceSubmitInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004438 VkStructureType sType
4439 const void* pNext
4440 u32 waitSemaphoreValuesCount
4441 const u64* pWaitSemaphoreValues
4442 u32 signalSemaphoreValuesCount
4443 const u64* pSignalSemaphoreValues
4444}
4445
Jesse Hall9492f992017-08-28 12:10:06 -07004446@extension("VK_KHR_external_semaphore_win32") // 79
4447class VkSemaphoreGetWin32HandleInfoKHR {
Jesse Hallad250842017-03-10 18:35:38 -08004448 VkStructureType sType
4449 const void* pNext
4450 VkSemaphore semaphore
Jesse Hall9492f992017-08-28 12:10:06 -07004451 VkExternalSemaphoreHandleTypeFlagBitsKHR handleType
4452}
4453
4454@extension("VK_KHR_external_semaphore_fd") // 80
4455class VkImportSemaphoreFdInfoKHR {
4456 VkStructureType sType
4457 const void* pNext
4458 VkSemaphore semaphore
4459 VkSemaphoreImportFlagsKHR flags
4460 VkExternalSemaphoreHandleTypeFlagBitsKHR handleType
Jesse Hallad250842017-03-10 18:35:38 -08004461 s32 fd
4462}
4463
Jesse Hall9492f992017-08-28 12:10:06 -07004464@extension("VK_KHR_external_semaphore_fd") // 80
4465class VkSemaphoreGetFdInfoKHR {
4466 VkStructureType sType
4467 const void* pNext
4468 VkSemaphore semaphore
4469 VkExternalSemaphoreHandleTypeFlagBitsKHR handleType
4470}
4471
Jesse Hallad250842017-03-10 18:35:38 -08004472@extension("VK_KHR_push_descriptor") // 81
4473class VkPhysicalDevicePushDescriptorPropertiesKHR {
4474 VkStructureType sType
4475 void* pNext
4476 u32 maxPushDescriptors
4477}
4478
Jesse Hall9492f992017-08-28 12:10:06 -07004479@extension("VK_KHR_16bit_storage") // 84
4480class VkPhysicalDevice16BitStorageFeaturesKHR {
4481 VkStructureType sType
4482 void* pNext
4483 VkBool32 storageBuffer16BitAccess
4484 VkBool32 uniformAndStorageBuffer16BitAccess
4485 VkBool32 storagePushConstant16
4486 VkBool32 storageInputOutput16
4487}
4488
Jesse Hallad250842017-03-10 18:35:38 -08004489@extension("VK_KHR_incremental_present") // 85
4490class VkRectLayerKHR {
4491 VkOffset2D offset
4492 VkExtent2D extent
4493 u32 layer
4494}
4495
4496@extension("VK_KHR_incremental_present") // 85
4497class VkPresentRegionKHR {
4498 u32 rectangleCount
4499 const VkRectLayerKHR* pRectangles
4500}
4501
4502@extension("VK_KHR_incremental_present") // 85
4503class VkPresentRegionsKHR {
4504 VkStructureType sType
4505 const void* pNext
4506 u32 swapchainCount
4507 const VkPresentRegionKHR* pRegions
4508}
4509
4510@extension("VK_KHR_descriptor_update_template") // 86
4511class VkDescriptorUpdateTemplateEntryKHR {
4512 u32 dstBinding
4513 u32 dstArrayElement
4514 u32 descriptorCount
4515 VkDescriptorType descriptorType
4516 platform.size_t offset
4517 platform.size_t stride
4518}
4519
4520@extension("VK_KHR_descriptor_update_template") // 86
4521class VkDescriptorUpdateTemplateCreateInfoKHR {
4522 VkStructureType sType
4523 void* pNext
4524 VkDescriptorUpdateTemplateCreateFlagsKHR flags
4525 u32 descriptorUpdateEntryCount
4526 const VkDescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries
4527 VkDescriptorUpdateTemplateTypeKHR templateType
4528 VkDescriptorSetLayout descriptorSetLayout
4529 VkPipelineBindPoint pipelineBindPoint
4530 VkPipelineLayout pipelineLayout
4531 u32 set
4532}
4533
4534@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004535class VkDeviceGeneratedCommandsFeaturesNVX {
4536 VkStructureType sType
4537 const void* pNext
4538 VkBool32 computeBindingPointSupport
4539}
4540
Jesse Hallad250842017-03-10 18:35:38 -08004541@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004542class VkDeviceGeneratedCommandsLimitsNVX {
4543 VkStructureType sType
4544 const void* pNext
4545 u32 maxIndirectCommandsLayoutTokenCount
4546 u32 maxObjectEntryCounts
4547 u32 minSequenceCountBufferOffsetAlignment
4548 u32 minSequenceIndexBufferOffsetAlignment
4549 u32 minCommandsTokenBufferOffsetAlignment
4550}
4551
Jesse Hallad250842017-03-10 18:35:38 -08004552@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004553class VkIndirectCommandsTokenNVX {
4554 VkIndirectCommandsTokenTypeNVX tokenType
4555 VkBuffer buffer
4556 VkDeviceSize offset
4557}
4558
Jesse Hallad250842017-03-10 18:35:38 -08004559@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004560class VkIndirectCommandsLayoutTokenNVX {
4561 VkIndirectCommandsTokenTypeNVX tokenType
4562 u32 bindingUnit
4563 u32 dynamicCount
4564 u32 divisor
4565}
4566
Jesse Hallad250842017-03-10 18:35:38 -08004567@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004568class VkIndirectCommandsLayoutCreateInfoNVX {
4569 VkStructureType sType
4570 const void* pNext
4571 VkPipelineBindPoint pipelineBindPoint
4572 VkIndirectCommandsLayoutUsageFlagsNVX flags
4573 u32 tokenCount
4574 const VkIndirectCommandsLayoutTokenNVX* pTokens
4575}
4576
Jesse Hallad250842017-03-10 18:35:38 -08004577@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004578class VkCmdProcessCommandsInfoNVX {
4579 VkStructureType sType
4580 const void* pNext
4581 VkObjectTableNVX objectTable
4582 VkIndirectCommandsLayoutNVX indirectCommandsLayout
4583 u32 indirectCommandsTokenCount
4584 const VkIndirectCommandsTokenNVX* pIndirectCommandsTokens
4585 u32 maxSequencesCount
4586 VkCommandBuffer targetCommandBuffer
4587 VkBuffer sequencesCountBuffer
4588 VkDeviceSize sequencesCountOffset
4589 VkBuffer sequencesIndexBuffer
4590 VkDeviceSize sequencesIndexOffset
4591}
4592
Jesse Hallad250842017-03-10 18:35:38 -08004593@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004594class VkCmdReserveSpaceForCommandsInfoNVX {
4595 VkStructureType sType
4596 const void* pNext
4597 VkObjectTableNVX objectTable
4598 VkIndirectCommandsLayoutNVX indirectCommandsLayout
4599 u32 maxSequencesCount
4600}
4601
Jesse Hallad250842017-03-10 18:35:38 -08004602@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004603class VkObjectTableCreateInfoNVX {
4604 VkStructureType sType
4605 const void* pNext
4606 u32 objectCount
4607 const VkObjectEntryTypeNVX* pObjectEntryTypes
4608 const u32* pObjectEntryCounts
4609 const VkObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags
4610 u32 maxUniformBuffersPerDescriptor
4611 u32 maxStorageBuffersPerDescriptor
4612 u32 maxStorageImagesPerDescriptor
4613 u32 maxSampledImagesPerDescriptor
4614 u32 maxPipelineLayouts
4615}
4616
Jesse Hallad250842017-03-10 18:35:38 -08004617@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004618class VkObjectTableEntryNVX {
4619 VkObjectEntryTypeNVX type
4620 VkObjectEntryUsageFlagsNVX flags
4621}
4622
Jesse Hallad250842017-03-10 18:35:38 -08004623@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004624class VkObjectTablePipelineEntryNVX {
4625 VkObjectEntryTypeNVX type
4626 VkObjectEntryUsageFlagsNVX flags
4627 VkPipeline pipeline
4628}
4629
Jesse Hallad250842017-03-10 18:35:38 -08004630@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004631class VkObjectTableDescriptorSetEntryNVX {
4632 VkObjectEntryTypeNVX type
4633 VkObjectEntryUsageFlagsNVX flags
4634 VkPipelineLayout pipelineLayout
4635 VkDescriptorSet descriptorSet
4636}
4637
Jesse Hallad250842017-03-10 18:35:38 -08004638@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004639class VkObjectTableVertexBufferEntryNVX {
4640 VkObjectEntryTypeNVX type
4641 VkObjectEntryUsageFlagsNVX flags
4642 VkBuffer buffer
4643}
4644
Jesse Hallad250842017-03-10 18:35:38 -08004645@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004646class VkObjectTableIndexBufferEntryNVX {
4647 VkObjectEntryTypeNVX type
4648 VkObjectEntryUsageFlagsNVX flags
4649 VkBuffer buffer
Jesse Hall77ad05b2017-03-10 22:02:20 -08004650 VkIndexType indexType
Chris Forbes289cb792016-12-30 15:03:55 +13004651}
4652
Jesse Hallad250842017-03-10 18:35:38 -08004653@extension("VK_NVX_device_generated_commands") // 87
Chris Forbes289cb792016-12-30 15:03:55 +13004654class VkObjectTablePushConstantEntryNVX {
4655 VkObjectEntryTypeNVX type
4656 VkObjectEntryUsageFlagsNVX flags
4657 VkPipelineLayout pipelineLayout
4658 VkShaderStageFlags stageFlags
4659}
4660
Jesse Hallad250842017-03-10 18:35:38 -08004661@extension("VK_NV_clip_space_w_scaling") // 88
4662class VkViewportWScalingNV {
4663 f32 xcoeff
4664 f32 ycoeff
Jesse Hall889cd9a2017-02-25 22:12:23 -08004665}
4666
Jesse Hallad250842017-03-10 18:35:38 -08004667@extension("VK_NV_clip_space_w_scaling") // 88
4668class VkPipelineViewportWScalingStateCreateInfoNV {
Jesse Hall889cd9a2017-02-25 22:12:23 -08004669 VkStructureType sType
4670 const void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08004671 VkBool32 viewportWScalingEnable
4672 u32 viewportCount
4673 const VkViewportWScalingNV* pViewportWScalings
Jesse Hall889cd9a2017-02-25 22:12:23 -08004674}
4675
Jesse Hallad250842017-03-10 18:35:38 -08004676@extension("VK_EXT_display_surface_counter") // 91
Jesse Hall77ad05b2017-03-10 22:02:20 -08004677class VkSurfaceCapabilities2EXT {
4678 VkStructureType sType
4679 void* pNext
4680 u32 minImageCount
4681 u32 maxImageCount
4682 VkExtent2D currentExtent
4683 VkExtent2D minImageExtent
4684 VkExtent2D maxImageExtent
4685 u32 maxImageArrayLayers
4686 VkSurfaceTransformFlagsKHR supportedTransforms
4687 VkSurfaceTransformFlagBitsKHR currentTransform
4688 VkCompositeAlphaFlagsKHR supportedCompositeAlpha
4689 VkImageUsageFlags supportedUsageFlags
4690 VkSurfaceCounterFlagsEXT supportedSurfaceCounters
4691}
4692
Jesse Hallad250842017-03-10 18:35:38 -08004693@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08004694class VkDisplayPowerInfoEXT {
4695 VkStructureType sType
4696 const void* pNext
4697 VkDisplayPowerStateEXT powerState
4698}
4699
Jesse Hallad250842017-03-10 18:35:38 -08004700@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08004701class VkDeviceEventInfoEXT {
4702 VkStructureType sType
4703 const void* pNext
4704 VkDeviceEventTypeEXT deviceEvent
4705}
4706
Jesse Hallad250842017-03-10 18:35:38 -08004707@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08004708class VkDisplayEventInfoEXT {
4709 VkStructureType sType
4710 const void* pNext
4711 VkDisplayEventTypeEXT displayEvent
4712}
4713
Jesse Hallad250842017-03-10 18:35:38 -08004714@extension("VK_EXT_display_control") // 92
Jesse Hall77ad05b2017-03-10 22:02:20 -08004715class VkSwapchainCounterCreateInfoEXT {
4716 VkStructureType sType
4717 const void* pNext
4718 VkSurfaceCounterFlagsEXT surfaceCounters
4719}
4720
Jesse Hallad250842017-03-10 18:35:38 -08004721@extension("VK_GOOGLE_display_timing") // 93
4722class VkRefreshCycleDurationGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004723 u64 refreshDuration
Jesse Hallad250842017-03-10 18:35:38 -08004724}
4725
4726@extension("VK_GOOGLE_display_timing") // 93
4727class VkPastPresentationTimingGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004728 u32 presentID
4729 u64 desiredPresentTime
4730 u64 actualPresentTime
4731 u64 earliestPresentTime
4732 u64 presentMargin
Jesse Hallad250842017-03-10 18:35:38 -08004733}
4734
4735@extension("VK_GOOGLE_display_timing") // 93
4736class VkPresentTimeGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004737 u32 presentID
4738 u64 desiredPresentTime
Jesse Hallad250842017-03-10 18:35:38 -08004739}
4740
4741@extension("VK_GOOGLE_display_timing") // 93
4742class VkPresentTimesInfoGOOGLE {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004743 VkStructureType sType
4744 const void* pNext
4745 u32 swapchainCount
4746 const VkPresentTimeGOOGLE* pTimes
Jesse Hallad250842017-03-10 18:35:38 -08004747}
4748
4749@extension("VK_NVX_multiview_per_view_attributes") // 98
4750class VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX {
4751 VkStructureType sType
4752 void* pNext
4753 VkBool32 perViewPositionAllComponents
4754}
4755
4756@extension("VK_NV_viewport_swizzle") // 99
4757class VkViewportSwizzleNV {
4758 VkViewportCoordinateSwizzleNV x
4759 VkViewportCoordinateSwizzleNV y
4760 VkViewportCoordinateSwizzleNV z
4761 VkViewportCoordinateSwizzleNV w
4762}
4763
4764@extension("VK_NV_viewport_swizzle") // 99
4765class VkPipelineViewportSwizzleStateCreateInfoNV {
4766 VkStructureType sType
4767 const void* pNext
4768 VkPipelineViewportSwizzleStateCreateFlagsNV flags
4769 u32 viewportCount
4770 const VkViewportSwizzleNV* pViewportSwizzles
4771}
4772
4773@extension("VK_EXT_discard_rectangles") // 100
4774class VkPhysicalDeviceDiscardRectanglePropertiesEXT {
4775 VkStructureType sType
Jesse Hallf5ad48b2017-03-20 13:09:19 -07004776 void* pNext
Jesse Hallad250842017-03-10 18:35:38 -08004777 u32 maxDiscardRectangles
4778}
4779
4780@extension("VK_EXT_discard_rectangles") // 100
4781class VkPipelineDiscardRectangleStateCreateInfoEXT {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004782 VkStructureType sType
4783 const void* pNext
4784 VkPipelineDiscardRectangleStateCreateFlagsEXT flags
4785 VkDiscardRectangleModeEXT discardRectangleMode
4786 u32 discardRectangleCount
4787 const VkRect2D* pDiscardRectangles
Jesse Hallad250842017-03-10 18:35:38 -08004788}
4789
4790@extension("VK_EXT_hdr_metadata") // 106
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07004791class VkXYColorEXT {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004792 f32 x
4793 f32 y
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07004794}
4795
Jesse Hallad250842017-03-10 18:35:38 -08004796@extension("VK_EXT_hdr_metadata") // 106
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07004797class VkHdrMetadataEXT {
Jesse Hallfdc8ab32017-03-10 21:01:57 -08004798 VkStructureType sType
4799 const void* pNext
4800 VkXYColorEXT displayPrimaryRed
4801 VkXYColorEXT displayPrimaryGreen
4802 VkXYColorEXT displayPrimaryBlue
4803 VkXYColorEXT whitePoint
4804 f32 maxLuminance
4805 f32 minLuminance
4806 f32 maxContentLightLevel
4807 f32 maxFrameAverageLightLevel
Courtney Goeltzenleuchterd634c482017-01-05 15:55:31 -07004808}
4809
Jesse Hall05556b12017-05-18 17:40:25 -07004810@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbese2d3ee12017-03-16 16:10:15 +13004811class VkSharedPresentSurfaceCapabilitiesKHR {
4812 VkStructureType sType
4813 const void* pNext
4814 VkImageUsageFlags sharedPresentSupportedUsageFlags
4815}
4816
Jesse Hall9492f992017-08-28 12:10:06 -07004817@extension("VK_KHR_external_fence_capabilities") // 113
4818class VkPhysicalDeviceExternalFenceInfoKHR {
4819 VkStructureType sType
4820 const void* pNext
4821 VkExternalFenceHandleTypeFlagBitsKHR handleType
4822}
4823
4824@extension("VK_KHR_external_fence_capabilities") // 113
4825class VkExternalFencePropertiesKHR {
4826 VkStructureType sType
4827 void* pNext
4828 VkExternalFenceHandleTypeFlagsKHR exportFromImportedHandleTypes
4829 VkExternalFenceHandleTypeFlagsKHR compatibleHandleTypes
4830 VkExternalFenceFeatureFlagsKHR externalFenceFeatures
4831}
4832
4833@extension("VK_KHR_external_fence") // 114
4834class VkExportFenceCreateInfoKHR {
4835 VkStructureType sType
4836 const void* pNext
4837 VkExternalFenceHandleTypeFlagsKHR handleTypes
4838}
4839
4840@extension("VK_KHR_external_fence_win32") // 115
4841class VkImportFenceWin32HandleInfoKHR {
4842 VkStructureType sType
4843 const void* pNext
4844 VkFence fence
4845 VkFenceImportFlagsKHR flags
4846 VkExternalFenceHandleTypeFlagBitsKHR handleType
4847 platform.HANDLE handle
4848 platform.LPCWSTR name
4849}
4850
4851@extension("VK_KHR_external_fence_win32") // 115
4852class VkExportFenceWin32HandleInfoKHR {
4853 VkStructureType sType
4854 const void* pNext
4855 const platform.SECURITY_ATTRIBUTES* pAttributes
4856 platform.DWORD dwAccess
4857 platform.LPCWSTR name
4858}
4859
4860@extension("VK_KHR_external_fence_win32") // 115
4861class VkFenceGetWin32HandleInfoKHR {
4862 VkStructureType sType
4863 const void* pNext
4864 VkFence fence
4865 VkExternalFenceHandleTypeFlagBitsKHR handleType
4866}
4867
4868@extension("VK_KHR_external_fence_fd") // 116
4869class VkImportFenceFdInfoKHR {
4870 VkStructureType sType
4871 const void* pNext
4872 VkFence fence
4873 VkFenceImportFlagsKHR flags
4874 VkExternalFenceHandleTypeFlagBitsKHR handleType
4875 int fd
4876}
4877
4878@extension("VK_KHR_external_fence_fd") // 116
4879class VkFenceGetFdInfoKHR {
4880 VkStructureType sType
4881 const void* pNext
4882 VkFence fence
4883 VkExternalFenceHandleTypeFlagBitsKHR handleType
4884}
4885
Jesse Hall076f95d2017-09-20 11:34:47 -07004886@extension("VK_KHR_maintenance2") // 118
4887class VkPhysicalDevicePointClippingPropertiesKHR {
4888 VkStructureType sType
4889 void* pNext
4890 VkPointClippingBehaviorKHR pointClippingBehavior
4891}
4892
4893@extension("VK_KHR_maintenance2") // 118
4894class VkInputAttachmentAspectReferenceKHR {
4895 u32 subpass
4896 u32 inputAttachmentIndex
4897 VkImageAspectFlags aspectMask
4898}
4899
4900@extension("VK_KHR_maintenance2") // 118
4901class VkRenderPassInputAttachmentAspectCreateInfoKHR {
4902 VkStructureType sType
4903 const void* pNext
4904 u32 aspectReferenceCount
4905 const VkInputAttachmentAspectReferenceKHR* pAspectReferences
4906}
4907
4908@extension("VK_KHR_maintenance2") // 118
4909class VkImageViewUsageCreateInfoKHR {
4910 VkStructureType sType
4911 const void* pNext
4912 VkImageUsageFlags usage
4913}
4914
4915@extension("VK_KHR_maintenance2") // 118
4916class VkPipelineTessellationDomainOriginStateCreateInfoKHR {
4917 VkStructureType sType
4918 const void* pNext
4919 VkTessellationDomainOriginKHR domainOrigin
4920}
4921
Jesse Hall05556b12017-05-18 17:40:25 -07004922@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13004923class VkPhysicalDeviceSurfaceInfo2KHR {
4924 VkStructureType sType
4925 const void* pNext
4926 VkSurfaceKHR surface
4927}
4928
Jesse Hall05556b12017-05-18 17:40:25 -07004929@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13004930class VkSurfaceCapabilities2KHR {
4931 VkStructureType sType
4932 void* pNext
4933 VkSurfaceCapabilitiesKHR surfaceCapabilities
4934}
4935
Jesse Hall05556b12017-05-18 17:40:25 -07004936@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13004937class VkSurfaceFormat2KHR {
4938 VkStructureType sType
4939 void* pNext
4940 VkSurfaceFormatKHR surfaceFormat
4941}
4942
Jesse Hall9492f992017-08-28 12:10:06 -07004943@extension("VK_KHR_variable_pointers") // 121
4944class VkPhysicalDeviceVariablePointerFeaturesKHR {
4945 VkStructureType sType
4946 void* pNext
4947 VkBool32 variablePointersStorageBuffer
4948 VkBool32 variablePointers
4949}
4950
Jesse Hallad250842017-03-10 18:35:38 -08004951@extension("VK_MVK_ios_surface") // 123
4952class VkIOSSurfaceCreateInfoMVK {
4953 VkStructureType sType
4954 const void* pNext
4955 VkIOSSurfaceCreateFlagsMVK flags
4956 const void* pView
4957}
4958
4959@extension("VK_MVK_macos_surface") // 124
4960class VkMacOSSurfaceCreateInfoMVK {
4961 VkStructureType sType
4962 const void* pNext
4963 VkMacOSSurfaceCreateFlagsMVK flags
4964 const void* pView
4965}
4966
Jesse Hall9492f992017-08-28 12:10:06 -07004967@extension("VK_KHR_dedicated_allocation") // 128
4968class VkMemoryDedicatedRequirementsKHR {
4969 VkStructureType sType
4970 void* pNext
4971 VkBool32 prefersDedicatedAllocation
4972 VkBool32 requiresDedicatedAllocation
4973}
4974
4975@extension("VK_KHR_dedicated_allocation") // 128
4976class VkMemoryDedicatedAllocateInfoKHR {
4977 VkStructureType sType
4978 const void* pNext
4979 VkImage image
4980 VkBuffer buffer
4981}
4982
Jesse Hall7ba0ac72017-07-07 17:13:23 -07004983@extension("VK_EXT_sampler_filter_minmax") // 131
4984class VkSamplerReductionModeCreateInfoEXT {
4985 VkStructureType sType
4986 const void* pNext
4987 VkSamplerReductionModeEXT reductionMode
4988}
4989
4990@extension("VK_EXT_sampler_filter_minmax") // 131
4991class VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT {
4992 VkStructureType sType
4993 void* pNext
4994 VkBool32 filterMinmaxSingleComponentFormats
4995 VkBool32 filterMinmaxImageComponentMapping
4996}
4997
Jesse Hall77726222017-09-19 14:49:27 -05004998@extension("VK_EXT_sample_locations") // 144
4999class VkSampleLocationEXT {
5000 f32 x
5001 f32 y
5002}
5003
5004@extension("VK_EXT_sample_locations") // 144
5005class VkSampleLocationsInfoEXT {
5006 VkStructureType sType
5007 const void* pNext
5008 VkSampleCountFlagBits sampleLocationsPerPixel
5009 VkExtent2D sampleLocationGridSize
5010 u32 sampleLocationsCount
5011 const VkSampleLocationEXT* pSampleLocations
5012}
5013
5014@extension("VK_EXT_sample_locations") // 144
5015class VkAttachmentSampleLocationsEXT {
5016 u32 attachmentIndex
5017 VkSampleLocationsInfoEXT sampleLocationsInfo
5018}
5019
5020@extension("VK_EXT_sample_locations") // 144
5021class VkSubpassSampleLocationsEXT {
5022 u32 subpassIndex
5023 VkSampleLocationsInfoEXT sampleLocationsInfo
5024}
5025
5026@extension("VK_EXT_sample_locations") // 144
5027class VkRenderPassSampleLocationsBeginInfoEXT {
5028 VkStructureType sType
5029 const void* pNext
5030 u32 attachmentInitialSampleLocationsCount
5031 const VkAttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations
5032 u32 postSubpassSampleLocationsCount
5033 const VkSubpassSampleLocationsEXT* pSubpassSampleLocations
5034}
5035
5036@extension("VK_EXT_sample_locations") // 144
5037class VkPipelineSampleLocationsStateCreateInfoEXT {
5038 VkStructureType sType
5039 const void* pNext
5040 VkBool32 sampleLocationsEnable
5041 VkSampleLocationsInfoEXT sampleLocationsInfo
5042}
5043
5044@extension("VK_EXT_sample_locations") // 144
5045class VkPhysicalDeviceSampleLocationsPropertiesEXT {
5046 VkStructureType sType
5047 void* pNext
5048 VkSampleCountFlags sampleLocationSampleCounts
5049 VkExtent2D maxSampleLocationGridSize
5050 f32[2] sampleLocationCoordinateRange
5051 u32 sampleLocationSubPixelBits
5052 VkBool32 variableSampleLocations
5053}
5054
5055@extension("VK_EXT_sample_locations") // 144
5056class VkMultisamplePropertiesEXT {
5057 VkStructureType sType
5058 void* pNext
5059 VkExtent2D maxSampleLocationGridSize
5060}
5061
Jesse Hall9492f992017-08-28 12:10:06 -07005062@extension("VK_KHR_get_memory_requirements2") // 147
5063class VkBufferMemoryRequirementsInfo2KHR {
5064 VkStructureType sType
5065 const void* pNext
5066 VkBuffer buffer
5067}
5068
5069@extension("VK_KHR_get_memory_requirements2") // 147
5070class VkImageMemoryRequirementsInfo2KHR {
5071 VkStructureType sType
5072 const void* pNext
5073 VkImage image
5074}
5075
5076@extension("VK_KHR_get_memory_requirements2") // 147
5077class VkImageSparseMemoryRequirementsInfo2KHR {
5078 VkStructureType sType
5079 const void* pNext
5080 VkImage image
5081}
5082
5083@extension("VK_KHR_get_memory_requirements2") // 147
5084class VkMemoryRequirements2KHR {
5085 VkStructureType sType
5086 void* pNext
5087 VkMemoryRequirements memoryRequirements
5088}
5089
5090@extension("VK_KHR_get_memory_requirements2") // 147
5091class VkSparseImageMemoryRequirements2KHR {
5092 VkStructureType sType
5093 void* pNext
5094 VkSparseImageMemoryRequirements memoryRequirements
5095}
5096
Jesse Hall076f95d2017-09-20 11:34:47 -07005097@extension("VK_KHR_image_format_list") // 148
5098class VkImageFormatListCreateInfoKHR {
5099 VkStructureType sType
5100 const void* pNext
5101 u32 viewFormatCount
5102 const VkFormat* pViewFormats
5103}
5104
Jesse Hall7ba0ac72017-07-07 17:13:23 -07005105@extension("VK_EXT_blend_operation_advanced") // 149
5106class VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT {
5107 VkStructureType sType
5108 void* pNext
5109 VkBool32 advancedBlendCoherentOperations
5110}
5111
5112@extension("VK_EXT_blend_operation_advanced") // 149
5113class VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT {
5114 VkStructureType sType
5115 void* pNext
5116 u32 advancedBlendMaxColorAttachments
5117 VkBool32 advancedBlendIndependentBlend
5118 VkBool32 advancedBlendNonPremultipliedSrcColor
5119 VkBool32 advancedBlendNonPremultipliedDstColor
5120 VkBool32 advancedBlendCorrelatedOverlap
5121 VkBool32 advancedBlendAllOperations
5122}
5123
5124@extension("VK_EXT_blend_operation_advanced") // 149
5125class VkPipelineColorBlendAdvancedStateCreateInfoEXT {
5126 VkStructureType sType
5127 const void* pNext
5128 VkBool32 srcPremultiplied
5129 VkBool32 dstPremultiplied
5130 VkBlendOverlapEXT blendOverlap
5131}
5132
5133@extension("VK_NV_fragment_coverage_to_color") // 150
5134class VkPipelineCoverageToColorStateCreateInfoNV {
5135 VkStructureType sType
5136 const void* pNext
5137 VkPipelineCoverageToColorStateCreateFlagsNV flags
5138 VkBool32 coverageToColorEnable
5139 u32 coverageToColorLocation
5140}
5141
5142@extension("VK_NV_framebuffer_mixed_samples") // 153
5143class VkPipelineCoverageModulationStateCreateInfoNV {
5144 VkStructureType sType
5145 const void* pNext
5146 VkPipelineCoverageModulationStateCreateFlagsNV flags
5147 VkCoverageModulationModeNV coverageModulationMode
5148 VkBool32 coverageModulationTableEnable
5149 u32 coverageModulationTableCount
5150 const f32* pCoverageModulationTable
5151}
5152
Jesse Hall076f95d2017-09-20 11:34:47 -07005153@extension("VK_KHR_sampler_ycbcr_conversion") // 157
5154class VkSamplerYcbcrConversionCreateInfoKHR {
5155 VkStructureType sType
5156 const void* pNext
5157 VkFormat format
5158 VkSamplerYcbcrModelConversionKHR ycbcrModel
5159 VkSamplerYcbcrRangeKHR ycbcrRange
5160 VkComponentMapping components
5161 VkChromaLocationKHR xChromaOffset
5162 VkChromaLocationKHR yChromaOffset
5163 VkFilter chromaFilter
5164 VkBool32 forceExplicitReconstruction
5165}
5166
5167@extension("VK_KHR_sampler_ycbcr_conversion") // 157
5168class VkSamplerYcbcrConversionInfoKHR {
5169 VkStructureType sType
5170 const void* pNext
5171 VkSamplerYcbcrConversionKHR conversion
5172}
5173
5174@extension("VK_KHR_sampler_ycbcr_conversion") // 157
5175class VkBindImagePlaneMemoryInfoKHR {
5176 VkStructureType sType
5177 const void* pNext
5178 VkImageAspectFlagBits planeAspect
5179}
5180
5181@extension("VK_KHR_sampler_ycbcr_conversion") // 157
5182class VkImagePlaneMemoryRequirementsInfoKHR {
5183 VkStructureType sType
5184 const void* pNext
5185 VkImageAspectFlagBits planeAspect
5186}
5187
5188@extension("VK_KHR_sampler_ycbcr_conversion") // 157
5189class VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR {
5190 VkStructureType sType
5191 void* pNext
5192 VkBool32 samplerYcbcrConversion
5193}
5194
5195@extension("VK_KHR_sampler_ycbcr_conversion") // 157
5196class VkSamplerYcbcrConversionImageFormatPropertiesKHR {
5197 VkStructureType sType
5198 void* pNext
5199 u32 combinedImageSamplerDescriptorCount
5200}
5201
5202@extension("VK_KHR_bind_memory2") // 158
5203class VkBindBufferMemoryInfoKHR {
5204 VkStructureType sType
5205 const void* pNext
5206 VkBuffer buffer
5207 VkDeviceMemory memory
5208 VkDeviceSize memoryOffset
5209}
5210
5211@extension("VK_KHR_bind_memory2") // 158
5212class VkBindImageMemoryInfoKHR {
5213 VkStructureType sType
5214 const void* pNext
5215 VkImage image
5216 VkDeviceMemory memory
5217 VkDeviceSize memoryOffset
5218}
5219
Jesse Hall77726222017-09-19 14:49:27 -05005220@extension("VK_EXT_validation_cache") // 161
5221class VkValidationCacheCreateInfoEXT {
5222 VkStructureType sType
5223 const void* pNext
5224 VkValidationCacheCreateFlagsEXT flags
5225 platform.size_t initialDataSize
5226 const void* pInitialData
5227}
5228
5229@extension("VK_EXT_validation_cache") // 161
5230class VkShaderModuleValidationCacheCreateInfoEXT {
5231 VkStructureType sType
5232 const void* pNext
5233 VkValidationCacheEXT validationCache
5234}
5235
Jesse Halld27f6aa2015-08-15 17:58:48 -07005236////////////////
5237// Commands //
5238////////////////
5239
5240// Function pointers. TODO: add support for function pointers.
5241
5242@external type void* PFN_vkVoidFunction
5243@pfn cmd void vkVoidFunction() {
5244}
5245
Jesse Hall3fbc8562015-11-29 22:10:52 -08005246@external type void* PFN_vkAllocationFunction
5247@pfn cmd void* vkAllocationFunction(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005248 void* pUserData,
5249 platform.size_t size,
5250 platform.size_t alignment,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005251 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08005252 return ?
5253}
5254
Jesse Hall3fbc8562015-11-29 22:10:52 -08005255@external type void* PFN_vkReallocationFunction
5256@pfn cmd void* vkReallocationFunction(
Jesse Hall03b6fe12015-11-24 12:44:21 -08005257 void* pUserData,
5258 void* pOriginal,
5259 platform.size_t size,
5260 platform.size_t alignment,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005261 VkSystemAllocationScope allocationScope) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005262 return ?
5263}
5264
5265@external type void* PFN_vkFreeFunction
5266@pfn cmd void vkFreeFunction(
5267 void* pUserData,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005268 void* pMemory) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005269}
5270
Jesse Hall3fbc8562015-11-29 22:10:52 -08005271@external type void* PFN_vkInternalAllocationNotification
5272@pfn cmd void vkInternalAllocationNotification(
Jesse Hall03b6fe12015-11-24 12:44:21 -08005273 void* pUserData,
5274 platform.size_t size,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005275 VkInternalAllocationType allocationType,
5276 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08005277}
5278
5279@external type void* PFN_vkInternalFreeNotification
5280@pfn cmd void vkInternalFreeNotification(
5281 void* pUserData,
5282 platform.size_t size,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005283 VkInternalAllocationType allocationType,
5284 VkSystemAllocationScope allocationScope) {
Jesse Hall03b6fe12015-11-24 12:44:21 -08005285}
Jesse Halld27f6aa2015-08-15 17:58:48 -07005286
5287// Global functions
5288
5289@threadSafety("system")
5290cmd VkResult vkCreateInstance(
5291 const VkInstanceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005292 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005293 VkInstance* pInstance) {
5294 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO)
5295
5296 instance := ?
5297 pInstance[0] = instance
5298 State.Instances[instance] = new!InstanceObject()
5299
Jesse Hall3dd678a2016-01-08 21:52:01 -08005300 layers := pCreateInfo.ppEnabledLayerNames[0:pCreateInfo.enabledLayerCount]
5301 extensions := pCreateInfo.ppEnabledExtensionNames[0:pCreateInfo.enabledExtensionCount]
Jesse Halld27f6aa2015-08-15 17:58:48 -07005302
5303 return ?
5304}
5305
5306@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005307cmd void vkDestroyInstance(
Jesse Hall03b6fe12015-11-24 12:44:21 -08005308 VkInstance instance,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005309 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005310 instanceObject := GetInstance(instance)
5311
5312 State.Instances[instance] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005313}
5314
5315@threadSafety("system")
5316cmd VkResult vkEnumeratePhysicalDevices(
5317 VkInstance instance,
5318 u32* pPhysicalDeviceCount,
5319 VkPhysicalDevice* pPhysicalDevices) {
5320 instanceObject := GetInstance(instance)
5321
5322 physicalDeviceCount := as!u32(?)
5323 pPhysicalDeviceCount[0] = physicalDeviceCount
5324 physicalDevices := pPhysicalDevices[0:physicalDeviceCount]
5325
5326 for i in (0 .. physicalDeviceCount) {
5327 physicalDevice := ?
5328 physicalDevices[i] = physicalDevice
5329 if !(physicalDevice in State.PhysicalDevices) {
5330 State.PhysicalDevices[physicalDevice] = new!PhysicalDeviceObject(instance: instance)
5331 }
5332 }
5333
5334 return ?
5335}
5336
5337cmd PFN_vkVoidFunction vkGetDeviceProcAddr(
5338 VkDevice device,
5339 const char* pName) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005340 if device != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005341 device := GetDevice(device)
5342 }
5343
5344 return ?
5345}
5346
5347cmd PFN_vkVoidFunction vkGetInstanceProcAddr(
5348 VkInstance instance,
5349 const char* pName) {
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005350 if instance != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005351 instanceObject := GetInstance(instance)
5352 }
5353
5354 return ?
5355}
5356
Jesse Hall606a54e2015-11-19 22:17:28 -08005357cmd void vkGetPhysicalDeviceProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005358 VkPhysicalDevice physicalDevice,
5359 VkPhysicalDeviceProperties* pProperties) {
5360 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
5361
5362 properties := ?
5363 pProperties[0] = properties
Jesse Halld27f6aa2015-08-15 17:58:48 -07005364}
5365
Jesse Hall606a54e2015-11-19 22:17:28 -08005366cmd void vkGetPhysicalDeviceQueueFamilyProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005367 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005368 u32* pQueueFamilyPropertyCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005369 VkQueueFamilyProperties* pQueueFamilyProperties) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005370 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005371 // TODO: Figure out how to express fetch-count-or-properties
5372 // This version fails 'apic validate' with 'fence not allowed in
5373 // *semantic.Branch'. Other attempts have failed with the same or other
5374 // errors.
5375 // if pQueueFamilyProperties != null {
5376 // queuesProperties := pQueueFamilyProperties[0:pCount[0]]
5377 // for i in (0 .. pCount[0]) {
5378 // queueProperties := as!VkQueueFamilyProperties(?)
5379 // queuesProperties[i] = queueProperties
5380 // }
5381 // } else {
5382 // count := ?
5383 // pCount[0] = count
5384 // }
Jesse Halld27f6aa2015-08-15 17:58:48 -07005385}
5386
Jesse Hall606a54e2015-11-19 22:17:28 -08005387cmd void vkGetPhysicalDeviceMemoryProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005388 VkPhysicalDevice physicalDevice,
5389 VkPhysicalDeviceMemoryProperties* pMemoryProperties) {
5390 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
5391
5392 memoryProperties := ?
5393 pMemoryProperties[0] = memoryProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07005394}
5395
Jesse Hall606a54e2015-11-19 22:17:28 -08005396cmd void vkGetPhysicalDeviceFeatures(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005397 VkPhysicalDevice physicalDevice,
5398 VkPhysicalDeviceFeatures* pFeatures) {
5399 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
5400
5401 features := ?
5402 pFeatures[0] = features
Jesse Halld27f6aa2015-08-15 17:58:48 -07005403}
5404
Jesse Hall606a54e2015-11-19 22:17:28 -08005405cmd void vkGetPhysicalDeviceFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005406 VkPhysicalDevice physicalDevice,
5407 VkFormat format,
5408 VkFormatProperties* pFormatProperties) {
5409 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
5410
5411 formatProperties := ?
5412 pFormatProperties[0] = formatProperties
Jesse Halld27f6aa2015-08-15 17:58:48 -07005413}
5414
Jesse Halla9e57032015-11-30 01:03:10 -08005415cmd VkResult vkGetPhysicalDeviceImageFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005416 VkPhysicalDevice physicalDevice,
5417 VkFormat format,
5418 VkImageType type,
5419 VkImageTiling tiling,
5420 VkImageUsageFlags usage,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005421 VkImageCreateFlags flags,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005422 VkImageFormatProperties* pImageFormatProperties) {
5423 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
5424
5425 imageFormatProperties := ?
5426 pImageFormatProperties[0] = imageFormatProperties
Jesse Halla9e57032015-11-30 01:03:10 -08005427
5428 return ?
Jesse Halld27f6aa2015-08-15 17:58:48 -07005429}
5430
Jesse Halld27f6aa2015-08-15 17:58:48 -07005431
5432// Device functions
5433
5434@threadSafety("system")
5435cmd VkResult vkCreateDevice(
5436 VkPhysicalDevice physicalDevice,
5437 const VkDeviceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005438 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005439 VkDevice* pDevice) {
5440 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO)
5441 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
5442
5443 device := ?
5444 pDevice[0] = device
5445 State.Devices[device] = new!DeviceObject(physicalDevice: physicalDevice)
5446
5447 return ?
5448}
5449
5450@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005451cmd void vkDestroyDevice(
Jesse Hall03b6fe12015-11-24 12:44:21 -08005452 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005453 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005454 deviceObject := GetDevice(device)
5455
5456 State.Devices[device] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005457}
5458
5459
5460// Extension discovery functions
5461
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005462cmd VkResult vkEnumerateInstanceLayerProperties(
Jesse Hall03b6fe12015-11-24 12:44:21 -08005463 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005464 VkLayerProperties* pProperties) {
5465 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08005466 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07005467
5468 properties := pProperties[0:count]
5469 for i in (0 .. count) {
5470 property := ?
5471 properties[i] = property
5472 }
5473
5474 return ?
5475}
5476
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005477cmd VkResult vkEnumerateInstanceExtensionProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005478 const char* pLayerName,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005479 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005480 VkExtensionProperties* pProperties) {
5481 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08005482 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07005483
5484 properties := pProperties[0:count]
5485 for i in (0 .. count) {
5486 property := ?
5487 properties[i] = property
5488 }
5489
5490 return ?
5491}
5492
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005493cmd VkResult vkEnumerateDeviceLayerProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005494 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005495 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005496 VkLayerProperties* pProperties) {
5497 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
5498 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08005499 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07005500
5501 properties := pProperties[0:count]
5502 for i in (0 .. count) {
5503 property := ?
5504 properties[i] = property
5505 }
5506
5507 return ?
5508}
5509
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005510cmd VkResult vkEnumerateDeviceExtensionProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005511 VkPhysicalDevice physicalDevice,
5512 const char* pLayerName,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005513 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005514 VkExtensionProperties* pProperties) {
5515 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
5516
5517 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08005518 pPropertyCount[0] = count
Jesse Halld27f6aa2015-08-15 17:58:48 -07005519
5520 properties := pProperties[0:count]
5521 for i in (0 .. count) {
5522 property := ?
5523 properties[i] = property
5524 }
5525
5526 return ?
5527}
5528
5529
5530// Queue functions
5531
5532@threadSafety("system")
Jesse Hall606a54e2015-11-19 22:17:28 -08005533cmd void vkGetDeviceQueue(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005534 VkDevice device,
5535 u32 queueFamilyIndex,
5536 u32 queueIndex,
5537 VkQueue* pQueue) {
5538 deviceObject := GetDevice(device)
5539
5540 queue := ?
5541 pQueue[0] = queue
5542
5543 if !(queue in State.Queues) {
5544 State.Queues[queue] = new!QueueObject(device: device)
5545 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07005546}
5547
5548@threadSafety("app")
5549cmd VkResult vkQueueSubmit(
5550 VkQueue queue,
Jesse Halla366a512015-11-19 22:30:07 -08005551 u32 submitCount,
Jesse Hallb00daad2015-11-29 19:46:20 -08005552 const VkSubmitInfo* pSubmits,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005553 VkFence fence) {
5554 queueObject := GetQueue(queue)
5555
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005556 if fence != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005557 fenceObject := GetFence(fence)
5558 assert(fenceObject.device == queueObject.device)
5559 }
5560
Jesse Hall3fbc8562015-11-29 22:10:52 -08005561 // commandBuffers := pcommandBuffers[0:commandBufferCount]
5562 // for i in (0 .. commandBufferCount) {
5563 // commandBuffer := commandBuffers[i]
5564 // commandBufferObject := GetCommandBuffer(commandBuffer)
5565 // assert(commandBufferObject.device == queueObject.device)
Jesse Halla366a512015-11-19 22:30:07 -08005566 //
Jesse Hall3fbc8562015-11-29 22:10:52 -08005567 // validate("QueueCheck", commandBufferObject.queueFlags in queueObject.flags,
5568 // "vkQueueSubmit: enqueued commandBuffer requires missing queue capabilities.")
Jesse Halla366a512015-11-19 22:30:07 -08005569 // }
Jesse Halld27f6aa2015-08-15 17:58:48 -07005570
5571 return ?
5572}
5573
5574@threadSafety("system")
5575cmd VkResult vkQueueWaitIdle(
5576 VkQueue queue) {
5577 queueObject := GetQueue(queue)
5578
5579 return ?
5580}
5581
5582@threadSafety("system")
5583cmd VkResult vkDeviceWaitIdle(
5584 VkDevice device) {
5585 deviceObject := GetDevice(device)
5586
5587 return ?
5588}
5589
5590
5591// Memory functions
5592
5593@threadSafety("system")
Jesse Hall3fbc8562015-11-29 22:10:52 -08005594cmd VkResult vkAllocateMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005595 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005596 const VkMemoryAllocateInfo* pAllocateInfo,
5597 const VkAllocationCallbacks* pAllocator,
5598 VkDeviceMemory* pMemory) {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08005599 assert(pAllocateInfo.sType == VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005600 deviceObject := GetDevice(device)
5601
Jesse Hall3fbc8562015-11-29 22:10:52 -08005602 memory := ?
5603 pMemory[0] = memory
5604 State.DeviceMemories[memory] = new!DeviceMemoryObject(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005605 device: device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005606 allocationSize: pAllocateInfo[0].allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005607
5608 return ?
5609}
5610
5611@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005612cmd void vkFreeMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005613 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005614 VkDeviceMemory memory,
5615 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005616 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005617 memoryObject := GetDeviceMemory(memory)
5618 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005619
5620 // Check that no objects are still bound before freeing.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005621 validate("MemoryCheck", len(memoryObject.boundObjects) == 0,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005622 "vkFreeMemory: objects still bound")
Jesse Hall3fbc8562015-11-29 22:10:52 -08005623 validate("MemoryCheck", len(memoryObject.boundCommandBuffers) == 0,
5624 "vkFreeMemory: commandBuffers still bound")
5625 State.DeviceMemories[memory] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005626}
5627
5628@threadSafety("app")
5629cmd VkResult vkMapMemory(
5630 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005631 VkDeviceMemory memory,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005632 VkDeviceSize offset,
5633 VkDeviceSize size,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005634 VkMemoryMapFlags flags,
5635 void** ppData) {
5636 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005637 memoryObject := GetDeviceMemory(memory)
5638 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005639
5640 assert(flags == as!VkMemoryMapFlags(0))
Jesse Hall3fbc8562015-11-29 22:10:52 -08005641 assert((offset + size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005642
5643 return ?
5644}
5645
5646@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005647cmd void vkUnmapMemory(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005648 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005649 VkDeviceMemory memory) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005650 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08005651 memoryObject := GetDeviceMemory(memory)
5652 assert(memoryObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005653}
5654
5655cmd VkResult vkFlushMappedMemoryRanges(
5656 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005657 u32 memoryRangeCount
5658 const VkMappedMemoryRange* pMemoryRanges) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005659 deviceObject := GetDevice(device)
5660
Jesse Hall3fbc8562015-11-29 22:10:52 -08005661 memoryRanges := pMemoryRanges[0:memoryRangeCount]
5662 for i in (0 .. memoryRangeCount) {
5663 memoryRange := memoryRanges[i]
5664 memoryObject := GetDeviceMemory(memoryRange.memory)
5665 assert(memoryObject.device == device)
5666 assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005667 }
5668
5669 return ?
5670}
5671
5672cmd VkResult vkInvalidateMappedMemoryRanges(
5673 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005674 u32 memoryRangeCount,
5675 const VkMappedMemoryRange* pMemoryRanges) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005676 deviceObject := GetDevice(device)
5677
Jesse Hall3fbc8562015-11-29 22:10:52 -08005678 memoryRanges := pMemoryRanges[0:memoryRangeCount]
5679 for i in (0 .. memoryRangeCount) {
5680 memoryRange := memoryRanges[i]
5681 memoryObject := GetDeviceMemory(memoryRange.memory)
5682 assert(memoryObject.device == device)
5683 assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005684 }
5685
5686 return ?
5687}
5688
5689
5690// Memory management API functions
5691
Jesse Hall606a54e2015-11-19 22:17:28 -08005692cmd void vkGetDeviceMemoryCommitment(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005693 VkDevice device,
5694 VkDeviceMemory memory,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005695 VkDeviceSize* pCommittedMemoryInBytes) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005696 deviceObject := GetDevice(device)
5697
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005698 if memory != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005699 memoryObject := GetDeviceMemory(memory)
5700 assert(memoryObject.device == device)
5701 }
5702
5703 committedMemoryInBytes := ?
5704 pCommittedMemoryInBytes[0] = committedMemoryInBytes
Jesse Halld27f6aa2015-08-15 17:58:48 -07005705}
5706
Jesse Hall606a54e2015-11-19 22:17:28 -08005707cmd void vkGetBufferMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005708 VkDevice device,
5709 VkBuffer buffer,
5710 VkMemoryRequirements* pMemoryRequirements) {
5711 deviceObject := GetDevice(device)
5712 bufferObject := GetBuffer(buffer)
5713 assert(bufferObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005714}
5715
5716cmd VkResult vkBindBufferMemory(
5717 VkDevice device,
5718 VkBuffer buffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005719 VkDeviceMemory memory,
5720 VkDeviceSize memoryOffset) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005721 deviceObject := GetDevice(device)
5722 bufferObject := GetBuffer(buffer)
5723 assert(bufferObject.device == device)
5724
5725 // Unbind buffer from previous memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005726 if bufferObject.memory != NULL_HANDLE {
5727 memoryObject := GetDeviceMemory(bufferObject.memory)
5728 memoryObject.boundObjects[as!u64(buffer)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005729 }
5730
5731 // Bind buffer to given memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005732 if memory != NULL_HANDLE {
5733 memoryObject := GetDeviceMemory(memory)
5734 assert(memoryObject.device == device)
5735 memoryObject.boundObjects[as!u64(buffer)] = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07005736 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08005737 bufferObject.memory = memory
5738 bufferObject.memoryOffset = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07005739
5740 return ?
5741}
5742
Jesse Hall606a54e2015-11-19 22:17:28 -08005743cmd void vkGetImageMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005744 VkDevice device,
5745 VkImage image,
5746 VkMemoryRequirements* pMemoryRequirements) {
5747 deviceObject := GetDevice(device)
5748 imageObject := GetImage(image)
5749 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005750}
5751
5752cmd VkResult vkBindImageMemory(
5753 VkDevice device,
5754 VkImage image,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005755 VkDeviceMemory memory,
5756 VkDeviceSize memoryOffset) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005757 deviceObject := GetDevice(device)
5758 imageObject := GetImage(image)
5759 assert(imageObject.device == device)
5760
5761 // Unbind image from previous memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005762 if imageObject.memory != NULL_HANDLE {
5763 memoryObject := GetDeviceMemory(imageObject.memory)
5764 memoryObject.boundObjects[as!u64(image)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005765 }
5766
5767 // Bind image to given memory object, if not VK_NULL_HANDLE.
Jesse Hall3fbc8562015-11-29 22:10:52 -08005768 if memory != NULL_HANDLE {
5769 memoryObject := GetDeviceMemory(memory)
5770 assert(memoryObject.device == device)
5771 memoryObject.boundObjects[as!u64(image)] = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07005772 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08005773 imageObject.memory = memory
5774 imageObject.memoryOffset = memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07005775
5776 return ?
5777}
5778
Jesse Hall606a54e2015-11-19 22:17:28 -08005779cmd void vkGetImageSparseMemoryRequirements(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005780 VkDevice device,
5781 VkImage image,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005782 u32* pSparseMemoryRequirementCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005783 VkSparseImageMemoryRequirements* pSparseMemoryRequirements) {
5784 deviceObject := GetDevice(device)
5785 imageObject := GetImage(image)
5786 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005787}
5788
Jesse Hall606a54e2015-11-19 22:17:28 -08005789cmd void vkGetPhysicalDeviceSparseImageFormatProperties(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005790 VkPhysicalDevice physicalDevice,
5791 VkFormat format,
5792 VkImageType type,
Jesse Hall091ed9e2015-11-30 00:55:29 -08005793 VkSampleCountFlagBits samples,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005794 VkImageUsageFlags usage,
5795 VkImageTiling tiling,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005796 u32* pPropertyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005797 VkSparseImageFormatProperties* pProperties) {
5798 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005799}
5800
Jesse Halla6429252015-11-29 18:59:42 -08005801cmd VkResult vkQueueBindSparse(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005802 VkQueue queue,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005803 u32 bindInfoCount,
Jesse Halla6429252015-11-29 18:59:42 -08005804 const VkBindSparseInfo* pBindInfo,
5805 VkFence fence) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005806 queueObject := GetQueue(queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07005807
5808 return ?
5809}
5810
5811
5812// Fence functions
5813
5814@threadSafety("system")
5815cmd VkResult vkCreateFence(
5816 VkDevice device,
5817 const VkFenceCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005818 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005819 VkFence* pFence) {
5820 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FENCE_CREATE_INFO)
5821 deviceObject := GetDevice(device)
5822
5823 fence := ?
5824 pFence[0] = fence
5825 State.Fences[fence] = new!FenceObject(
Jesse Halld8bade02015-11-24 10:24:18 -08005826 device: device, signaled: (pCreateInfo.flags == as!VkFenceCreateFlags(VK_FENCE_CREATE_SIGNALED_BIT)))
Jesse Halld27f6aa2015-08-15 17:58:48 -07005827
5828 return ?
5829}
5830
5831@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005832cmd void vkDestroyFence(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005833 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005834 VkFence fence,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005835 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005836 deviceObject := GetDevice(device)
5837 fenceObject := GetFence(fence)
5838 assert(fenceObject.device == device)
5839
5840 State.Fences[fence] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005841}
5842
5843@threadSafety("system")
5844cmd VkResult vkResetFences(
5845 VkDevice device,
5846 u32 fenceCount,
5847 const VkFence* pFences) {
5848 deviceObject := GetDevice(device)
5849
5850 fences := pFences[0:fenceCount]
5851 for i in (0 .. fenceCount) {
5852 fence := fences[i]
5853 fenceObject := GetFence(fence)
5854 assert(fenceObject.device == device)
5855 fenceObject.signaled = false
5856 }
5857
5858 return ?
5859}
5860
5861@threadSafety("system")
5862cmd VkResult vkGetFenceStatus(
5863 VkDevice device,
5864 VkFence fence) {
5865 deviceObject := GetDevice(device)
5866 fenceObject := GetFence(fence)
5867 assert(fenceObject.device == device)
5868
5869 return ?
5870}
5871
5872@threadSafety("system")
5873cmd VkResult vkWaitForFences(
5874 VkDevice device,
5875 u32 fenceCount,
5876 const VkFence* pFences,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005877 VkBool32 waitAll,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005878 u64 timeout) { /// timeout in nanoseconds
5879 deviceObject := GetDevice(device)
5880
5881 fences := pFences[0:fenceCount]
5882 for i in (0 .. fenceCount) {
5883 fence := fences[i]
5884 fenceObject := GetFence(fence)
5885 assert(fenceObject.device == device)
5886 }
5887
5888 return ?
5889}
5890
5891
5892// Queue semaphore functions
5893
5894@threadSafety("system")
5895cmd VkResult vkCreateSemaphore(
5896 VkDevice device,
5897 const VkSemaphoreCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005898 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005899 VkSemaphore* pSemaphore) {
5900 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO)
5901 deviceObject := GetDevice(device)
5902
5903 semaphore := ?
5904 pSemaphore[0] = semaphore
5905 State.Semaphores[semaphore] = new!SemaphoreObject(device: device)
5906
5907 return ?
5908}
5909
5910@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005911cmd void vkDestroySemaphore(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005912 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005913 VkSemaphore semaphore,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005914 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005915 deviceObject := GetDevice(device)
5916 semaphoreObject := GetSemaphore(semaphore)
5917 assert(semaphoreObject.device == device)
5918
5919 State.Semaphores[semaphore] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005920}
5921
Jesse Halld27f6aa2015-08-15 17:58:48 -07005922
5923// Event functions
5924
5925@threadSafety("system")
5926cmd VkResult vkCreateEvent(
5927 VkDevice device,
5928 const VkEventCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005929 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005930 VkEvent* pEvent) {
5931 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_EVENT_CREATE_INFO)
5932 deviceObject := GetDevice(device)
5933
5934 event := ?
5935 pEvent[0] = event
5936 State.Events[event] = new!EventObject(device: device)
5937
5938 return ?
5939}
5940
5941@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07005942cmd void vkDestroyEvent(
Jesse Halld27f6aa2015-08-15 17:58:48 -07005943 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08005944 VkEvent event,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005945 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07005946 deviceObject := GetDevice(device)
5947 eventObject := GetEvent(event)
5948 assert(eventObject.device == device)
5949
5950 State.Events[event] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07005951}
5952
5953@threadSafety("system")
5954cmd VkResult vkGetEventStatus(
5955 VkDevice device,
5956 VkEvent event) {
5957 deviceObject := GetDevice(device)
5958 eventObject := GetEvent(event)
5959 assert(eventObject.device == device)
5960
5961 return ?
5962}
5963
5964@threadSafety("system")
5965cmd VkResult vkSetEvent(
5966 VkDevice device,
5967 VkEvent event) {
5968 deviceObject := GetDevice(device)
5969 eventObject := GetEvent(event)
5970 assert(eventObject.device == device)
5971
5972 return ?
5973}
5974
5975@threadSafety("system")
5976cmd VkResult vkResetEvent(
5977 VkDevice device,
5978 VkEvent event) {
5979 deviceObject := GetDevice(device)
5980 eventObject := GetEvent(event)
5981 assert(eventObject.device == device)
5982
5983 return ?
5984}
5985
5986
5987// Query functions
5988
5989@threadSafety("system")
5990cmd VkResult vkCreateQueryPool(
5991 VkDevice device,
5992 const VkQueryPoolCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08005993 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07005994 VkQueryPool* pQueryPool) {
5995 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO)
5996 deviceObject := GetDevice(device)
5997
5998 queryPool := ?
5999 pQueryPool[0] = queryPool
6000 State.QueryPools[queryPool] = new!QueryPoolObject(device: device)
6001
6002 return ?
6003}
6004
6005@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006006cmd void vkDestroyQueryPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006007 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006008 VkQueryPool queryPool,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006009 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006010 deviceObject := GetDevice(device)
6011 queryPoolObject := GetQueryPool(queryPool)
6012 assert(queryPoolObject.device == device)
6013
6014 State.QueryPools[queryPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006015}
6016
6017@threadSafety("system")
6018cmd VkResult vkGetQueryPoolResults(
6019 VkDevice device,
6020 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006021 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006022 u32 queryCount,
Jesse Halla9bb62b2015-11-21 19:31:56 -08006023 platform.size_t dataSize,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006024 void* pData,
Jesse Halla9bb62b2015-11-21 19:31:56 -08006025 VkDeviceSize stride,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006026 VkQueryResultFlags flags) {
6027 deviceObject := GetDevice(device)
6028 queryPoolObject := GetQueryPool(queryPool)
6029 assert(queryPoolObject.device == device)
6030
Jesse Halld27f6aa2015-08-15 17:58:48 -07006031 data := pData[0:dataSize]
6032
6033 return ?
6034}
6035
6036// Buffer functions
6037
6038@threadSafety("system")
6039cmd VkResult vkCreateBuffer(
6040 VkDevice device,
6041 const VkBufferCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006042 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006043 VkBuffer* pBuffer) {
6044 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO)
6045 deviceObject := GetDevice(device)
6046
6047 buffer := ?
6048 pBuffer[0] = buffer
6049 State.Buffers[buffer] = new!BufferObject(device: device)
6050
6051 return ?
6052}
6053
6054@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006055cmd void vkDestroyBuffer(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006056 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006057 VkBuffer buffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006058 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006059 deviceObject := GetDevice(device)
6060 bufferObject := GetBuffer(buffer)
6061 assert(bufferObject.device == device)
6062
Jesse Hall3fbc8562015-11-29 22:10:52 -08006063 assert(bufferObject.memory == 0)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006064 State.Buffers[buffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006065}
6066
6067
6068// Buffer view functions
6069
6070@threadSafety("system")
6071cmd VkResult vkCreateBufferView(
6072 VkDevice device,
6073 const VkBufferViewCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006074 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006075 VkBufferView* pView) {
6076 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO)
6077 deviceObject := GetDevice(device)
6078
6079 bufferObject := GetBuffer(pCreateInfo.buffer)
6080 assert(bufferObject.device == device)
6081
6082 view := ?
6083 pView[0] = view
6084 State.BufferViews[view] = new!BufferViewObject(device: device, buffer: pCreateInfo.buffer)
6085
6086 return ?
6087}
6088
6089@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006090cmd void vkDestroyBufferView(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006091 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006092 VkBufferView bufferView,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006093 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006094 deviceObject := GetDevice(device)
6095 bufferViewObject := GetBufferView(bufferView)
6096 assert(bufferViewObject.device == device)
6097
6098 State.BufferViews[bufferView] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006099}
6100
6101
6102// Image functions
6103
6104@threadSafety("system")
6105cmd VkResult vkCreateImage(
6106 VkDevice device,
6107 const VkImageCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006108 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006109 VkImage* pImage) {
6110 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO)
6111 deviceObject := GetDevice(device)
6112
6113 image := ?
6114 pImage[0] = image
6115 State.Images[image] = new!ImageObject(device: device)
6116
6117 return ?
6118}
6119
6120@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006121cmd void vkDestroyImage(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006122 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006123 VkImage image,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006124 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006125 deviceObject := GetDevice(device)
6126 imageObject := GetImage(image)
6127 assert(imageObject.device == device)
6128
Jesse Hall3fbc8562015-11-29 22:10:52 -08006129 assert(imageObject.memory == 0)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006130 State.Images[image] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006131}
6132
Jesse Hall606a54e2015-11-19 22:17:28 -08006133cmd void vkGetImageSubresourceLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006134 VkDevice device,
6135 VkImage image,
6136 const VkImageSubresource* pSubresource,
6137 VkSubresourceLayout* pLayout) {
6138 deviceObject := GetDevice(device)
6139 imageObject := GetImage(image)
6140 assert(imageObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006141}
6142
6143
6144// Image view functions
6145
6146@threadSafety("system")
6147cmd VkResult vkCreateImageView(
6148 VkDevice device,
6149 const VkImageViewCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006150 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006151 VkImageView* pView) {
6152 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO)
6153 deviceObject := GetDevice(device)
6154
6155 imageObject := GetImage(pCreateInfo.image)
6156 assert(imageObject.device == device)
6157
6158 view := ?
6159 pView[0] = view
6160 State.ImageViews[view] = new!ImageViewObject(device: device, image: pCreateInfo.image)
6161
6162 return ?
6163}
6164
6165@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006166cmd void vkDestroyImageView(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006167 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006168 VkImageView imageView,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006169 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006170 deviceObject := GetDevice(device)
6171 imageViewObject := GetImageView(imageView)
6172 assert(imageViewObject.device == device)
6173
6174 State.ImageViews[imageView] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006175}
6176
6177
6178// Shader functions
6179
6180cmd VkResult vkCreateShaderModule(
6181 VkDevice device,
6182 const VkShaderModuleCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006183 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006184 VkShaderModule* pShaderModule) {
6185 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO)
6186 deviceObject := GetDevice(device)
6187
6188 shaderModule := ?
6189 pShaderModule[0] = shaderModule
6190 State.ShaderModules[shaderModule] = new!ShaderModuleObject(device: device)
6191
6192 return ?
6193}
6194
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006195cmd void vkDestroyShaderModule(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006196 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006197 VkShaderModule shaderModule,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006198 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006199 deviceObject := GetDevice(device)
6200 shaderModuleObject := GetShaderModule(shaderModule)
6201 assert(shaderModuleObject.device == device)
6202
6203 State.ShaderModules[shaderModule] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006204}
6205
Jesse Halld27f6aa2015-08-15 17:58:48 -07006206
6207// Pipeline functions
6208
6209cmd VkResult vkCreatePipelineCache(
6210 VkDevice device,
6211 const VkPipelineCacheCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006212 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006213 VkPipelineCache* pPipelineCache) {
6214 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO)
6215 deviceObject := GetDevice(device)
6216
6217 pipelineCache := ?
6218 pPipelineCache[0] = pipelineCache
6219 State.PipelineCaches[pipelineCache] = new!PipelineCacheObject(device: device)
6220
6221 return ?
6222}
6223
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006224cmd void vkDestroyPipelineCache(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006225 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006226 VkPipelineCache pipelineCache,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006227 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006228 deviceObject := GetDevice(device)
6229 pipelineCacheObject := GetPipelineCache(pipelineCache)
6230 assert(pipelineCacheObject.device == device)
6231
6232 State.PipelineCaches[pipelineCache] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006233}
6234
Jesse Halld27f6aa2015-08-15 17:58:48 -07006235cmd VkResult vkGetPipelineCacheData(
6236 VkDevice device,
6237 VkPipelineCache pipelineCache,
Jesse Halla9bb62b2015-11-21 19:31:56 -08006238 platform.size_t* pDataSize,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006239 void* pData) {
6240 deviceObject := GetDevice(device)
6241 pipelineCacheObject := GetPipelineCache(pipelineCache)
6242 assert(pipelineCacheObject.device == device)
6243
6244 return ?
6245}
6246
6247cmd VkResult vkMergePipelineCaches(
6248 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006249 VkPipelineCache dstCache,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006250 u32 srcCacheCount,
6251 const VkPipelineCache* pSrcCaches) {
6252 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006253 dstCacheObject := GetPipelineCache(dstCache)
6254 assert(dstCacheObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006255
6256 srcCaches := pSrcCaches[0:srcCacheCount]
6257 for i in (0 .. srcCacheCount) {
6258 srcCache := srcCaches[i]
6259 srcCacheObject := GetPipelineCache(srcCache)
6260 assert(srcCacheObject.device == device)
6261 }
6262
6263 return ?
6264}
6265
6266cmd VkResult vkCreateGraphicsPipelines(
6267 VkDevice device,
6268 VkPipelineCache pipelineCache,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006269 u32 createInfoCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006270 const VkGraphicsPipelineCreateInfo* pCreateInfos,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006271 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006272 VkPipeline* pPipelines) {
6273 deviceObject := GetDevice(device)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006274 if pipelineCache != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006275 pipelineCacheObject := GetPipelineCache(pipelineCache)
6276 assert(pipelineCacheObject.device == device)
6277 }
6278
Jesse Hall03b6fe12015-11-24 12:44:21 -08006279 createInfos := pCreateInfos[0:createInfoCount]
6280 pipelines := pPipelines[0:createInfoCount]
6281 for i in (0 .. createInfoCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006282 pipeline := ?
6283 pipelines[i] = pipeline
6284 State.Pipelines[pipeline] = new!PipelineObject(device: device)
6285 }
6286
6287 return ?
6288}
6289
6290cmd VkResult vkCreateComputePipelines(
6291 VkDevice device,
6292 VkPipelineCache pipelineCache,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006293 u32 createInfoCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006294 const VkComputePipelineCreateInfo* pCreateInfos,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006295 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006296 VkPipeline* pPipelines) {
6297 deviceObject := GetDevice(device)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006298 if pipelineCache != NULL_HANDLE {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006299 pipelineCacheObject := GetPipelineCache(pipelineCache)
6300 assert(pipelineCacheObject.device == device)
6301 }
6302
Jesse Hall03b6fe12015-11-24 12:44:21 -08006303 createInfos := pCreateInfos[0:createInfoCount]
6304 pipelines := pPipelines[0:createInfoCount]
6305 for i in (0 .. createInfoCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006306 pipeline := ?
6307 pipelines[i] = pipeline
6308 State.Pipelines[pipeline] = new!PipelineObject(device: device)
6309 }
6310
6311 return ?
6312}
6313
6314@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006315cmd void vkDestroyPipeline(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006316 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006317 VkPipeline pipeline,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006318 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006319 deviceObject := GetDevice(device)
6320 pipelineObjects := GetPipeline(pipeline)
6321 assert(pipelineObjects.device == device)
6322
6323 State.Pipelines[pipeline] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006324}
6325
6326
6327// Pipeline layout functions
6328
6329@threadSafety("system")
6330cmd VkResult vkCreatePipelineLayout(
6331 VkDevice device,
6332 const VkPipelineLayoutCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006333 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006334 VkPipelineLayout* pPipelineLayout) {
6335 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO)
6336 deviceObject := GetDevice(device)
6337
6338 pipelineLayout := ?
6339 pPipelineLayout[0] = pipelineLayout
6340 State.PipelineLayouts[pipelineLayout] = new!PipelineLayoutObject(device: device)
6341
6342 return ?
6343}
6344
6345@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006346cmd void vkDestroyPipelineLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006347 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006348 VkPipelineLayout pipelineLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006349 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006350 deviceObject := GetDevice(device)
6351 pipelineLayoutObjects := GetPipelineLayout(pipelineLayout)
6352 assert(pipelineLayoutObjects.device == device)
6353
6354 State.PipelineLayouts[pipelineLayout] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006355}
6356
6357
6358// Sampler functions
6359
6360@threadSafety("system")
6361cmd VkResult vkCreateSampler(
6362 VkDevice device,
6363 const VkSamplerCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006364 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006365 VkSampler* pSampler) {
6366 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO)
6367 deviceObject := GetDevice(device)
6368
6369 sampler := ?
6370 pSampler[0] = sampler
6371 State.Samplers[sampler] = new!SamplerObject(device: device)
6372
6373 return ?
6374}
6375
6376@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006377cmd void vkDestroySampler(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006378 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006379 VkSampler sampler,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006380 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006381 deviceObject := GetDevice(device)
6382 samplerObject := GetSampler(sampler)
6383 assert(samplerObject.device == device)
6384
6385 State.Samplers[sampler] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006386}
6387
6388
6389// Descriptor set functions
6390
6391@threadSafety("system")
6392cmd VkResult vkCreateDescriptorSetLayout(
6393 VkDevice device,
6394 const VkDescriptorSetLayoutCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006395 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006396 VkDescriptorSetLayout* pSetLayout) {
6397 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO)
6398 deviceObject := GetDevice(device)
6399
6400 setLayout := ?
6401 pSetLayout[0] = setLayout
6402 State.DescriptorSetLayouts[setLayout] = new!DescriptorSetLayoutObject(device: device)
6403
6404 return ?
6405}
6406
6407@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006408cmd void vkDestroyDescriptorSetLayout(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006409 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006410 VkDescriptorSetLayout descriptorSetLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006411 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006412 deviceObject := GetDevice(device)
6413 descriptorSetLayoutObject := GetDescriptorSetLayout(descriptorSetLayout)
6414 assert(descriptorSetLayoutObject.device == device)
6415
6416 State.DescriptorSetLayouts[descriptorSetLayout] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006417}
6418
6419@threadSafety("system")
6420cmd VkResult vkCreateDescriptorPool(
6421 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006422 const VkDescriptorPoolCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006423 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006424 VkDescriptorPool* pDescriptorPool) {
6425 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO)
6426 deviceObject := GetDevice(device)
6427
6428 descriptorPool := ?
6429 pDescriptorPool[0] = descriptorPool
6430 State.DescriptorPools[descriptorPool] = new!DescriptorPoolObject(device: device)
6431
6432 return ?
6433}
6434
6435@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006436cmd void vkDestroyDescriptorPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006437 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006438 VkDescriptorPool descriptorPool,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006439 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006440 deviceObject := GetDevice(device)
6441 descriptorPoolObject := GetDescriptorPool(descriptorPool)
6442 assert(descriptorPoolObject.device == device)
6443
6444 State.DescriptorPools[descriptorPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006445}
6446
6447@threadSafety("app")
6448cmd VkResult vkResetDescriptorPool(
6449 VkDevice device,
Jesse Hallfbf97b02015-11-20 14:17:03 -08006450 VkDescriptorPool descriptorPool,
6451 VkDescriptorPoolResetFlags flags) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006452 deviceObject := GetDevice(device)
6453 descriptorPoolObject := GetDescriptorPool(descriptorPool)
6454 assert(descriptorPoolObject.device == device)
6455
6456 return ?
6457}
6458
6459@threadSafety("app")
Jesse Hall3fbc8562015-11-29 22:10:52 -08006460cmd VkResult vkAllocateDescriptorSets(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006461 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006462 const VkDescriptorSetAllocateInfo* pAllocateInfo,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006463 VkDescriptorSet* pDescriptorSets) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006464 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006465 allocInfo := pAllocateInfo[0]
Jesse Hallfbf97b02015-11-20 14:17:03 -08006466 descriptorPoolObject := GetDescriptorPool(allocInfo.descriptorPool)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006467
Jesse Hall03b6fe12015-11-24 12:44:21 -08006468 setLayouts := allocInfo.pSetLayouts[0:allocInfo.setCount]
6469 for i in (0 .. allocInfo.setCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006470 setLayout := setLayouts[i]
6471 setLayoutObject := GetDescriptorSetLayout(setLayout)
6472 assert(setLayoutObject.device == device)
6473 }
6474
Jesse Hall03b6fe12015-11-24 12:44:21 -08006475 descriptorSets := pDescriptorSets[0:allocInfo.setCount]
6476 for i in (0 .. allocInfo.setCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006477 descriptorSet := ?
6478 descriptorSets[i] = descriptorSet
6479 State.DescriptorSets[descriptorSet] = new!DescriptorSetObject(device: device)
6480 }
6481
6482 return ?
6483}
6484
Jesse Hallf09c6b12015-08-15 19:54:28 -07006485cmd VkResult vkFreeDescriptorSets(
6486 VkDevice device,
6487 VkDescriptorPool descriptorPool,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006488 u32 descriptorSetCount,
Jesse Hallf09c6b12015-08-15 19:54:28 -07006489 const VkDescriptorSet* pDescriptorSets) {
6490 deviceObject := GetDevice(device)
6491 descriptorPoolObject := GetDescriptorPool(descriptorPool)
6492
Jesse Hall03b6fe12015-11-24 12:44:21 -08006493 descriptorSets := pDescriptorSets[0:descriptorSetCount]
6494 for i in (0 .. descriptorSetCount) {
Jesse Hallf09c6b12015-08-15 19:54:28 -07006495 descriptorSet := descriptorSets[i]
6496 descriptorSetObject := GetDescriptorSet(descriptorSet)
6497 assert(descriptorSetObject.device == device)
6498 State.DescriptorSets[descriptorSet] = null
6499 }
6500
6501 return ?
6502}
6503
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006504cmd void vkUpdateDescriptorSets(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006505 VkDevice device,
Jesse Hallb00daad2015-11-29 19:46:20 -08006506 u32 descriptorWriteCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006507 const VkWriteDescriptorSet* pDescriptorWrites,
Jesse Hallb00daad2015-11-29 19:46:20 -08006508 u32 descriptorCopyCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006509 const VkCopyDescriptorSet* pDescriptorCopies) {
6510 deviceObject := GetDevice(device)
6511
Jesse Hallb00daad2015-11-29 19:46:20 -08006512 descriptorWrites := pDescriptorWrites[0:descriptorWriteCount]
6513 for i in (0 .. descriptorWriteCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006514 descriptorWrite := descriptorWrites[i]
Jesse Hall3fbc8562015-11-29 22:10:52 -08006515 descriptorWriteObject := GetDescriptorSet(descriptorWrite.dstSet)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006516 assert(descriptorWriteObject.device == device)
6517 }
6518
Jesse Hallb00daad2015-11-29 19:46:20 -08006519 descriptorCopies := pDescriptorCopies[0:descriptorCopyCount]
6520 for i in (0 .. descriptorCopyCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006521 descriptorCopy := descriptorCopies[i]
Jesse Hall3fbc8562015-11-29 22:10:52 -08006522 descriptorCopyObject := GetDescriptorSet(descriptorCopy.dstSet)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006523 assert(descriptorCopyObject.device == device)
6524 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07006525}
6526
6527
6528// Framebuffer functions
6529
6530@threadSafety("system")
6531cmd VkResult vkCreateFramebuffer(
6532 VkDevice device,
6533 const VkFramebufferCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006534 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006535 VkFramebuffer* pFramebuffer) {
6536 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO)
6537 deviceObject := GetDevice(device)
6538
6539 framebuffer := ?
6540 pFramebuffer[0] = framebuffer
6541 State.Framebuffers[framebuffer] = new!FramebufferObject(device: device)
6542
6543 return ?
6544}
6545
6546@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006547cmd void vkDestroyFramebuffer(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006548 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006549 VkFramebuffer framebuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006550 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006551 deviceObject := GetDevice(device)
6552 framebufferObject := GetFramebuffer(framebuffer)
6553 assert(framebufferObject.device == device)
6554
6555 State.Framebuffers[framebuffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006556}
6557
6558
6559// Renderpass functions
6560
6561@threadSafety("system")
6562cmd VkResult vkCreateRenderPass(
6563 VkDevice device,
6564 const VkRenderPassCreateInfo* pCreateInfo,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006565 const VkAllocationCallbacks* pAllocator,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006566 VkRenderPass* pRenderPass) {
6567 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO)
6568 deviceObject := GetDevice(device)
6569
6570 renderpass := ?
6571 pRenderPass[0] = renderpass
6572 State.RenderPasses[renderpass] = new!RenderPassObject(device: device)
6573
6574 return ?
6575}
6576
6577@threadSafety("system")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006578cmd void vkDestroyRenderPass(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006579 VkDevice device,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006580 VkRenderPass renderPass,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006581 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006582 deviceObject := GetDevice(device)
6583 renderPassObject := GetRenderPass(renderPass)
6584 assert(renderPassObject.device == device)
6585
6586 State.RenderPasses[renderPass] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006587}
6588
Jesse Hall606a54e2015-11-19 22:17:28 -08006589cmd void vkGetRenderAreaGranularity(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006590 VkDevice device,
6591 VkRenderPass renderPass,
6592 VkExtent2D* pGranularity) {
6593 deviceObject := GetDevice(device)
6594 renderPassObject := GetRenderPass(renderPass)
6595
6596 granularity := ?
6597 pGranularity[0] = granularity
Jesse Halld27f6aa2015-08-15 17:58:48 -07006598}
6599
6600// Command pool functions
6601
6602cmd VkResult vkCreateCommandPool(
6603 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006604 const VkCommandPoolCreateInfo* pCreateInfo,
6605 const VkAllocationCallbacks* pAllocator,
6606 VkCommandPool* pCommandPool) {
6607 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006608 deviceObject := GetDevice(device)
6609
Jesse Hall3fbc8562015-11-29 22:10:52 -08006610 commandPool := ?
6611 pCommandPool[0] = commandPool
6612 State.CommandPools[commandPool] = new!CommandPoolObject(device: device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006613
6614 return ?
6615}
6616
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006617cmd void vkDestroyCommandPool(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006618 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006619 VkCommandPool commandPool,
6620 const VkAllocationCallbacks* pAllocator) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006621 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006622 commandPoolObject := GetCommandPool(commandPool)
6623 assert(commandPoolObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006624
Jesse Hall3fbc8562015-11-29 22:10:52 -08006625 State.CommandPools[commandPool] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006626}
6627
6628cmd VkResult vkResetCommandPool(
6629 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006630 VkCommandPool commandPool,
6631 VkCommandPoolResetFlags flags) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006632 deviceObject := GetDevice(device)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006633 commandPoolObject := GetCommandPool(commandPool)
6634 assert(commandPoolObject.device == device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006635
6636 return ?
6637}
6638
6639// Command buffer functions
6640
Jesse Hall3fbc8562015-11-29 22:10:52 -08006641macro void bindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) {
6642 memoryObject := GetDeviceMemory(memory)
6643 memoryObject.boundCommandBuffers[commandBuffer] = commandBuffer
Jesse Halld27f6aa2015-08-15 17:58:48 -07006644
Jesse Hall3fbc8562015-11-29 22:10:52 -08006645 commandBufferObject := GetCommandBuffer(commandBuffer)
6646 commandBufferObject.boundObjects[as!u64(obj)] = memory
Jesse Halld27f6aa2015-08-15 17:58:48 -07006647}
6648
Jesse Hall3fbc8562015-11-29 22:10:52 -08006649macro void unbindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) {
6650 memoryObject := GetDeviceMemory(memory)
6651 memoryObject.boundCommandBuffers[commandBuffer] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006652
Jesse Hall3fbc8562015-11-29 22:10:52 -08006653 commandBufferObject := GetCommandBuffer(commandBuffer)
6654 commandBufferObject.boundObjects[as!u64(obj)] = null
Jesse Halld27f6aa2015-08-15 17:58:48 -07006655}
6656
6657@threadSafety("system")
Jesse Hall3fbc8562015-11-29 22:10:52 -08006658cmd VkResult vkAllocateCommandBuffers(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006659 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006660 const VkCommandBufferAllocateInfo* pAllocateInfo,
6661 VkCommandBuffer* pCommandBuffers) {
Jesse Hallf4ab2b12015-11-30 16:04:55 -08006662 assert(pAllocateInfo[0].sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006663
Jesse Hall3dd678a2016-01-08 21:52:01 -08006664 count := pAllocateInfo[0].commandBufferCount
Jesse Hall3fbc8562015-11-29 22:10:52 -08006665 commandBuffers := pCommandBuffers[0:count]
Jesse Hallfbf97b02015-11-20 14:17:03 -08006666 for i in (0 .. count) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006667 commandBuffer := ?
6668 commandBuffers[i] = commandBuffer
6669 State.CommandBuffers[commandBuffer] = new!CommandBufferObject(device: device)
Jesse Hallfbf97b02015-11-20 14:17:03 -08006670 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07006671
6672 return ?
6673}
6674
6675@threadSafety("system")
Jesse Hallfbf97b02015-11-20 14:17:03 -08006676cmd void vkFreeCommandBuffers(
Jesse Halld27f6aa2015-08-15 17:58:48 -07006677 VkDevice device,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006678 VkCommandPool commandPool,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006679 u32 commandBufferCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006680 const VkCommandBuffer* pCommandBuffers) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006681 deviceObject := GetDevice(device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006682
Jesse Hall3fbc8562015-11-29 22:10:52 -08006683 commandBuffers := pCommandBuffers[0:commandBufferCount]
Jesse Hall03b6fe12015-11-24 12:44:21 -08006684 for i in (0 .. commandBufferCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006685 commandBufferObject := GetCommandBuffer(commandBuffers[i])
6686 assert(commandBufferObject.device == device)
Jesse Hallfbf97b02015-11-20 14:17:03 -08006687 // TODO: iterate over boundObjects and clear memory bindings
Jesse Hall3fbc8562015-11-29 22:10:52 -08006688 State.CommandBuffers[commandBuffers[i]] = null
Jesse Hallfbf97b02015-11-20 14:17:03 -08006689 }
Jesse Halld27f6aa2015-08-15 17:58:48 -07006690}
6691
6692@threadSafety("app")
6693cmd VkResult vkBeginCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006694 VkCommandBuffer commandBuffer,
6695 const VkCommandBufferBeginInfo* pBeginInfo) {
6696 assert(pBeginInfo.sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO)
6697 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006698
6699 // TODO: iterate over boundObjects and clear memory bindings
6700
6701 return ?
6702}
6703
6704@threadSafety("app")
6705cmd VkResult vkEndCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006706 VkCommandBuffer commandBuffer) {
6707 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006708
6709 return ?
6710}
6711
6712@threadSafety("app")
6713cmd VkResult vkResetCommandBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006714 VkCommandBuffer commandBuffer,
6715 VkCommandBufferResetFlags flags) {
6716 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006717
6718 // TODO: iterate over boundObjects and clear memory bindings
6719
6720 return ?
6721}
6722
6723
6724// Command buffer building functions
6725
6726@threadSafety("app")
6727cmd void vkCmdBindPipeline(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006728 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006729 VkPipelineBindPoint pipelineBindPoint,
6730 VkPipeline pipeline) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006731 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006732 pipelineObject := GetPipeline(pipeline)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006733 assert(commandBufferObject.device == pipelineObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006734
Jesse Halld8bade02015-11-24 10:24:18 -08006735 queue := switch (pipelineBindPoint) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006736 case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT
6737 case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT
6738 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08006739 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006740}
6741
6742@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006743cmd void vkCmdSetViewport(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006744 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006745 u32 firstViewport,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006746 u32 viewportCount,
6747 const VkViewport* pViewports) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006748 commandBufferObject := GetCommandBuffer(commandBuffer)
6749 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006750}
6751
6752@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006753cmd void vkCmdSetScissor(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006754 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006755 u32 firstScissor,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006756 u32 scissorCount,
6757 const VkRect2D* pScissors) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006758 commandBufferObject := GetCommandBuffer(commandBuffer)
6759 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006760}
6761
6762@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006763cmd void vkCmdSetLineWidth(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006764 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006765 f32 lineWidth) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006766 commandBufferObject := GetCommandBuffer(commandBuffer)
6767 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006768}
6769
6770@threadSafety("app")
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006771cmd void vkCmdSetDepthBias(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006772 VkCommandBuffer commandBuffer,
Jesse Halla9bb62b2015-11-21 19:31:56 -08006773 f32 depthBiasConstantFactor,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006774 f32 depthBiasClamp,
Jesse Halla9bb62b2015-11-21 19:31:56 -08006775 f32 depthBiasSlopeFactor) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006776 commandBufferObject := GetCommandBuffer(commandBuffer)
6777 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006778}
Jesse Halld27f6aa2015-08-15 17:58:48 -07006779
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006780@threadSafety("app")
6781cmd void vkCmdSetBlendConstants(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006782 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006783 // TODO(jessehall): apic only supports 'const' on pointer types. Using
6784 // an annotation as a quick hack to pass this to the template without
6785 // having to modify the AST and semantic model.
Jesse Hallb00daad2015-11-29 19:46:20 -08006786 @readonly f32[4] blendConstants) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006787 commandBufferObject := GetCommandBuffer(commandBuffer)
6788 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006789}
6790
6791@threadSafety("app")
6792cmd void vkCmdSetDepthBounds(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006793 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006794 f32 minDepthBounds,
6795 f32 maxDepthBounds) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006796 commandBufferObject := GetCommandBuffer(commandBuffer)
6797 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006798}
6799
6800@threadSafety("app")
6801cmd void vkCmdSetStencilCompareMask(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006802 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006803 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08006804 u32 compareMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006805 commandBufferObject := GetCommandBuffer(commandBuffer)
6806 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006807}
6808
6809@threadSafety("app")
6810cmd void vkCmdSetStencilWriteMask(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006811 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006812 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08006813 u32 writeMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006814 commandBufferObject := GetCommandBuffer(commandBuffer)
6815 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006816}
6817
6818@threadSafety("app")
6819cmd void vkCmdSetStencilReference(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006820 VkCommandBuffer commandBuffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006821 VkStencilFaceFlags faceMask,
Jesse Hall65ab5522015-11-30 00:07:16 -08006822 u32 reference) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006823 commandBufferObject := GetCommandBuffer(commandBuffer)
6824 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006825}
6826
6827@threadSafety("app")
6828cmd void vkCmdBindDescriptorSets(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006829 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006830 VkPipelineBindPoint pipelineBindPoint,
6831 VkPipelineLayout layout,
6832 u32 firstSet,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006833 u32 descriptorSetCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006834 const VkDescriptorSet* pDescriptorSets,
6835 u32 dynamicOffsetCount,
6836 const u32* pDynamicOffsets) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006837 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006838
Jesse Hall03b6fe12015-11-24 12:44:21 -08006839 descriptorSets := pDescriptorSets[0:descriptorSetCount]
6840 for i in (0 .. descriptorSetCount) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006841 descriptorSet := descriptorSets[i]
6842 descriptorSetObject := GetDescriptorSet(descriptorSet)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006843 assert(commandBufferObject.device == descriptorSetObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006844 }
6845
6846 dynamicOffsets := pDynamicOffsets[0:dynamicOffsetCount]
6847 for i in (0 .. dynamicOffsetCount) {
6848 dynamicOffset := dynamicOffsets[i]
6849 }
6850
Jesse Halld8bade02015-11-24 10:24:18 -08006851 queue := switch (pipelineBindPoint) {
Jesse Halld27f6aa2015-08-15 17:58:48 -07006852 case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT
6853 case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT
6854 }
Jesse Hall3fbc8562015-11-29 22:10:52 -08006855 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006856}
6857
6858@threadSafety("app")
6859cmd void vkCmdBindIndexBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006860 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006861 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006862 VkDeviceSize offset,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006863 VkIndexType indexType) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006864 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006865 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006866 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006867
Jesse Hall3fbc8562015-11-29 22:10:52 -08006868 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006869
Jesse Hall3fbc8562015-11-29 22:10:52 -08006870 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006871}
6872
6873@threadSafety("app")
6874cmd void vkCmdBindVertexBuffers(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006875 VkCommandBuffer commandBuffer,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006876 u32 firstBinding,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006877 u32 bindingCount,
6878 const VkBuffer* pBuffers,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006879 const VkDeviceSize* pOffsets) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006880 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006881
Jesse Hallf9fa9a52016-01-08 16:08:51 -08006882 // TODO: check if not [firstBinding:firstBinding+bindingCount]
Jesse Halld27f6aa2015-08-15 17:58:48 -07006883 buffers := pBuffers[0:bindingCount]
6884 offsets := pOffsets[0:bindingCount]
6885 for i in (0 .. bindingCount) {
6886 buffer := buffers[i]
6887 offset := offsets[i]
6888 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006889 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006890
Jesse Hall3fbc8562015-11-29 22:10:52 -08006891 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006892 }
6893
Jesse Hall3fbc8562015-11-29 22:10:52 -08006894 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006895}
6896
6897@threadSafety("app")
6898cmd void vkCmdDraw(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006899 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006900 u32 vertexCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006901 u32 instanceCount,
6902 u32 firstVertex,
6903 u32 firstInstance) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006904 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006905
Jesse Hall3fbc8562015-11-29 22:10:52 -08006906 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006907}
6908
6909@threadSafety("app")
6910cmd void vkCmdDrawIndexed(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006911 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006912 u32 indexCount,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006913 u32 instanceCount,
6914 u32 firstIndex,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006915 s32 vertexOffset,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006916 u32 firstInstance) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006917 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006918
Jesse Hall3fbc8562015-11-29 22:10:52 -08006919 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006920}
6921
6922@threadSafety("app")
6923cmd void vkCmdDrawIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006924 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006925 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006926 VkDeviceSize offset,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006927 u32 drawCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006928 u32 stride) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006929 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006930 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006931 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006932
Jesse Hall3fbc8562015-11-29 22:10:52 -08006933 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006934
Jesse Hall3fbc8562015-11-29 22:10:52 -08006935 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006936}
6937
6938@threadSafety("app")
6939cmd void vkCmdDrawIndexedIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006940 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006941 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006942 VkDeviceSize offset,
Jesse Hall03b6fe12015-11-24 12:44:21 -08006943 u32 drawCount,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006944 u32 stride) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006945 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006946 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006947 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006948
Jesse Hall3fbc8562015-11-29 22:10:52 -08006949 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006950
Jesse Hall3fbc8562015-11-29 22:10:52 -08006951 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006952}
6953
6954@threadSafety("app")
6955cmd void vkCmdDispatch(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006956 VkCommandBuffer commandBuffer,
Jesse Hallad250842017-03-10 18:35:38 -08006957 u32 groupCountX,
6958 u32 groupCountY,
6959 u32 groupCountZ) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006960 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006961
Jesse Hall3fbc8562015-11-29 22:10:52 -08006962 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006963}
6964
6965@threadSafety("app")
6966cmd void vkCmdDispatchIndirect(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006967 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006968 VkBuffer buffer,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07006969 VkDeviceSize offset) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006970 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006971 bufferObject := GetBuffer(buffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006972 assert(commandBufferObject.device == bufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006973
Jesse Hall3fbc8562015-11-29 22:10:52 -08006974 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006975
Jesse Hall3fbc8562015-11-29 22:10:52 -08006976 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006977}
6978
6979@threadSafety("app")
6980cmd void vkCmdCopyBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08006981 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006982 VkBuffer srcBuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08006983 VkBuffer dstBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07006984 u32 regionCount,
6985 const VkBufferCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08006986 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006987 srcBufferObject := GetBuffer(srcBuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08006988 dstBufferObject := GetBuffer(dstBuffer)
6989 assert(commandBufferObject.device == srcBufferObject.device)
6990 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006991
6992 regions := pRegions[0:regionCount]
6993 for i in (0 .. regionCount) {
6994 region := regions[i]
6995 }
6996
Jesse Hall3fbc8562015-11-29 22:10:52 -08006997 bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory)
6998 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07006999
Jesse Hall65ab5522015-11-30 00:07:16 -08007000 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007001}
7002
7003@threadSafety("app")
7004cmd void vkCmdCopyImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007005 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007006 VkImage srcImage,
7007 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007008 VkImage dstImage,
7009 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007010 u32 regionCount,
7011 const VkImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007012 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007013 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007014 dstImageObject := GetImage(dstImage)
7015 assert(commandBufferObject.device == srcImageObject.device)
7016 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007017
7018 regions := pRegions[0:regionCount]
7019 for i in (0 .. regionCount) {
7020 region := regions[i]
7021 }
7022
Jesse Hall3fbc8562015-11-29 22:10:52 -08007023 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
7024 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007025
Jesse Hall65ab5522015-11-30 00:07:16 -08007026 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007027}
7028
7029@threadSafety("app")
7030cmd void vkCmdBlitImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007031 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007032 VkImage srcImage,
7033 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007034 VkImage dstImage,
7035 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007036 u32 regionCount,
7037 const VkImageBlit* pRegions,
Jesse Hall23ff73f2015-11-29 14:36:39 -08007038 VkFilter filter) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007039 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007040 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007041 dstImageObject := GetImage(dstImage)
7042 assert(commandBufferObject.device == srcImageObject.device)
7043 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007044
7045 regions := pRegions[0:regionCount]
7046 for i in (0 .. regionCount) {
7047 region := regions[i]
7048 }
7049
Jesse Hall3fbc8562015-11-29 22:10:52 -08007050 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
7051 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007052
Jesse Hall3fbc8562015-11-29 22:10:52 -08007053 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007054}
7055
7056@threadSafety("app")
7057cmd void vkCmdCopyBufferToImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007058 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007059 VkBuffer srcBuffer,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007060 VkImage dstImage,
7061 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007062 u32 regionCount,
7063 const VkBufferImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007064 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007065 srcBufferObject := GetBuffer(srcBuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007066 dstImageObject := GetImage(dstImage)
7067 assert(commandBufferObject.device == srcBufferObject.device)
7068 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007069
7070 regions := pRegions[0:regionCount]
7071 for i in (0 .. regionCount) {
7072 region := regions[i]
7073 }
7074
Jesse Hall3fbc8562015-11-29 22:10:52 -08007075 bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory)
7076 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007077
Jesse Hall65ab5522015-11-30 00:07:16 -08007078 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007079}
7080
7081@threadSafety("app")
7082cmd void vkCmdCopyImageToBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007083 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007084 VkImage srcImage,
7085 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007086 VkBuffer dstBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007087 u32 regionCount,
7088 const VkBufferImageCopy* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007089 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007090 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007091 dstBufferObject := GetBuffer(dstBuffer)
7092 assert(commandBufferObject.device == srcImageObject.device)
7093 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007094
7095 regions := pRegions[0:regionCount]
7096 for i in (0 .. regionCount) {
7097 region := regions[i]
7098 }
7099
Jesse Hall3fbc8562015-11-29 22:10:52 -08007100 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
7101 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007102
Jesse Hall65ab5522015-11-30 00:07:16 -08007103 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007104}
7105
7106@threadSafety("app")
7107cmd void vkCmdUpdateBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007108 VkCommandBuffer commandBuffer,
7109 VkBuffer dstBuffer,
7110 VkDeviceSize dstOffset,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007111 VkDeviceSize dataSize,
Jesse Hall56d386a2016-07-26 15:20:40 -07007112 const void* pData) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007113 commandBufferObject := GetCommandBuffer(commandBuffer)
7114 dstBufferObject := GetBuffer(dstBuffer)
7115 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007116
7117 data := pData[0:dataSize]
7118
Jesse Hall3fbc8562015-11-29 22:10:52 -08007119 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007120
Jesse Hall65ab5522015-11-30 00:07:16 -08007121 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007122}
7123
7124@threadSafety("app")
7125cmd void vkCmdFillBuffer(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007126 VkCommandBuffer commandBuffer,
7127 VkBuffer dstBuffer,
7128 VkDeviceSize dstOffset,
Jesse Hallb00daad2015-11-29 19:46:20 -08007129 VkDeviceSize size,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007130 u32 data) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007131 commandBufferObject := GetCommandBuffer(commandBuffer)
7132 dstBufferObject := GetBuffer(dstBuffer)
7133 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007134
Jesse Hall65ab5522015-11-30 00:07:16 -08007135 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007136}
7137
7138@threadSafety("app")
7139cmd void vkCmdClearColorImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007140 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007141 VkImage image,
7142 VkImageLayout imageLayout,
7143 const VkClearColorValue* pColor,
7144 u32 rangeCount,
7145 const VkImageSubresourceRange* pRanges) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007146 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007147 imageObject := GetImage(image)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007148 assert(commandBufferObject.device == imageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007149
7150 ranges := pRanges[0:rangeCount]
7151 for i in (0 .. rangeCount) {
7152 range := ranges[i]
7153 }
7154
Jesse Hall3fbc8562015-11-29 22:10:52 -08007155 bindCommandBuffer(commandBuffer, image, imageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007156
Jesse Hall3fbc8562015-11-29 22:10:52 -08007157 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007158}
7159
7160@threadSafety("app")
7161cmd void vkCmdClearDepthStencilImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007162 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007163 VkImage image,
7164 VkImageLayout imageLayout,
Jesse Hall5ae3abb2015-10-08 14:00:22 -07007165 const VkClearDepthStencilValue* pDepthStencil,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007166 u32 rangeCount,
7167 const VkImageSubresourceRange* pRanges) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007168 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007169 imageObject := GetImage(image)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007170 assert(commandBufferObject.device == imageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007171
7172 ranges := pRanges[0:rangeCount]
7173 for i in (0 .. rangeCount) {
7174 range := ranges[i]
7175 }
7176
Jesse Hall3fbc8562015-11-29 22:10:52 -08007177 bindCommandBuffer(commandBuffer, image, imageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007178
Jesse Hall3fbc8562015-11-29 22:10:52 -08007179 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007180}
7181
7182@threadSafety("app")
Jesse Hallae38f732015-11-19 21:32:50 -08007183cmd void vkCmdClearAttachments(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007184 VkCommandBuffer commandBuffer,
Jesse Hallae38f732015-11-19 21:32:50 -08007185 u32 attachmentCount,
7186 const VkClearAttachment* pAttachments,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007187 u32 rectCount,
Jesse Halla15a4bf2015-11-19 22:48:02 -08007188 const VkClearRect* pRects) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007189 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007190
7191 rects := pRects[0:rectCount]
7192 for i in (0 .. rectCount) {
7193 rect := rects[i]
7194 }
7195
Jesse Hall3fbc8562015-11-29 22:10:52 -08007196 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007197}
7198
7199@threadSafety("app")
7200cmd void vkCmdResolveImage(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007201 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007202 VkImage srcImage,
7203 VkImageLayout srcImageLayout,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007204 VkImage dstImage,
7205 VkImageLayout dstImageLayout,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007206 u32 regionCount,
7207 const VkImageResolve* pRegions) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007208 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007209 srcImageObject := GetImage(srcImage)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007210 dstImageObject := GetImage(dstImage)
7211 assert(commandBufferObject.device == srcImageObject.device)
7212 assert(commandBufferObject.device == dstImageObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007213
7214 regions := pRegions[0:regionCount]
7215 for i in (0 .. regionCount) {
7216 region := regions[i]
7217 }
7218
Jesse Hall3fbc8562015-11-29 22:10:52 -08007219 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory)
7220 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007221
Jesse Hall3fbc8562015-11-29 22:10:52 -08007222 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007223}
7224
7225@threadSafety("app")
7226cmd void vkCmdSetEvent(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007227 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007228 VkEvent event,
7229 VkPipelineStageFlags stageMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007230 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007231 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007232 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007233}
7234
7235@threadSafety("app")
7236cmd void vkCmdResetEvent(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007237 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007238 VkEvent event,
7239 VkPipelineStageFlags stageMask) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007240 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007241 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007242 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007243}
7244
7245@threadSafety("app")
7246cmd void vkCmdWaitEvents(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007247 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007248 u32 eventCount,
7249 const VkEvent* pEvents,
7250 VkPipelineStageFlags srcStageMask,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007251 VkPipelineStageFlags dstStageMask,
7252 u32 memoryBarrierCount,
Jesse Hall3dd678a2016-01-08 21:52:01 -08007253 const VkMemoryBarrier* pMemoryBarriers,
7254 u32 bufferMemoryBarrierCount,
7255 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
7256 u32 imageMemoryBarrierCount,
7257 const VkImageMemoryBarrier* pImageMemoryBarriers) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007258 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007259
7260 events := pEvents[0:eventCount]
7261 for i in (0 .. eventCount) {
7262 event := events[i]
7263 eventObject := GetEvent(event)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007264 assert(commandBufferObject.device == eventObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007265 }
7266
Jesse Hall3dd678a2016-01-08 21:52:01 -08007267 memoryBarriers := pMemoryBarriers[0:memoryBarrierCount]
Jesse Hall3fbc8562015-11-29 22:10:52 -08007268 for i in (0 .. memoryBarrierCount) {
Jesse Hall3dd678a2016-01-08 21:52:01 -08007269 memoryBarrier := memoryBarriers[i]
7270 }
7271 bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount]
7272 for i in (0 .. bufferMemoryBarrierCount) {
7273 bufferMemoryBarrier := bufferMemoryBarriers[i]
7274 bufferObject := GetBuffer(bufferMemoryBarrier.buffer)
7275 assert(bufferObject.device == commandBufferObject.device)
7276 }
7277 imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount]
7278 for i in (0 .. imageMemoryBarrierCount) {
7279 imageMemoryBarrier := imageMemoryBarriers[i]
7280 imageObject := GetImage(imageMemoryBarrier.image)
7281 assert(imageObject.device == commandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007282 }
7283}
7284
7285@threadSafety("app")
7286cmd void vkCmdPipelineBarrier(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007287 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007288 VkPipelineStageFlags srcStageMask,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007289 VkPipelineStageFlags dstStageMask,
Jesse Halldc6d36c2015-11-29 19:12:15 -08007290 VkDependencyFlags dependencyFlags,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007291 u32 memoryBarrierCount,
Jesse Hall3dd678a2016-01-08 21:52:01 -08007292 const VkMemoryBarrier* pMemoryBarriers,
7293 u32 bufferMemoryBarrierCount,
7294 const VkBufferMemoryBarrier* pBufferMemoryBarriers,
7295 u32 imageMemoryBarrierCount,
7296 const VkImageMemoryBarrier* pImageMemoryBarriers) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007297 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007298
Jesse Hall3dd678a2016-01-08 21:52:01 -08007299 memoryBarriers := pMemoryBarriers[0:memoryBarrierCount]
Jesse Hall3fbc8562015-11-29 22:10:52 -08007300 for i in (0 .. memoryBarrierCount) {
Jesse Hall3dd678a2016-01-08 21:52:01 -08007301 memoryBarrier := memoryBarriers[i]
7302 }
7303 bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount]
7304 for i in (0 .. bufferMemoryBarrierCount) {
7305 bufferMemoryBarrier := bufferMemoryBarriers[i]
7306 bufferObject := GetBuffer(bufferMemoryBarrier.buffer)
7307 assert(bufferObject.device == commandBufferObject.device)
7308 }
7309 imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount]
7310 for i in (0 .. imageMemoryBarrierCount) {
7311 imageMemoryBarrier := imageMemoryBarriers[i]
7312 imageObject := GetImage(imageMemoryBarrier.image)
7313 assert(imageObject.device == commandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007314 }
7315}
7316
7317@threadSafety("app")
7318cmd void vkCmdBeginQuery(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007319 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007320 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08007321 u32 query,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007322 VkQueryControlFlags flags) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007323 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007324 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007325 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007326}
7327
7328@threadSafety("app")
7329cmd void vkCmdEndQuery(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007330 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007331 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08007332 u32 query) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007333 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007334 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007335 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007336}
7337
7338@threadSafety("app")
7339cmd void vkCmdResetQueryPool(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007340 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007341 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007342 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007343 u32 queryCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007344 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007345 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007346 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007347}
7348
7349@threadSafety("app")
7350cmd void vkCmdWriteTimestamp(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007351 VkCommandBuffer commandBuffer,
Jesse Hall6f39a6d2015-11-24 11:08:36 -08007352 VkPipelineStageFlagBits pipelineStage,
Jesse Halla3a7a1d2015-11-24 11:37:23 -08007353 VkQueryPool queryPool,
Jesse Hall3dd678a2016-01-08 21:52:01 -08007354 u32 query) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007355 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halla3a7a1d2015-11-24 11:37:23 -08007356 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007357 assert(commandBufferObject.device == queryPoolObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007358}
7359
7360@threadSafety("app")
7361cmd void vkCmdCopyQueryPoolResults(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007362 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007363 VkQueryPool queryPool,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007364 u32 firstQuery,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007365 u32 queryCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007366 VkBuffer dstBuffer,
7367 VkDeviceSize dstOffset,
Jesse Halla9bb62b2015-11-21 19:31:56 -08007368 VkDeviceSize stride,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007369 VkQueryResultFlags flags) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007370 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007371 queryPoolObject := GetQueryPool(queryPool)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007372 dstBufferObject := GetBuffer(dstBuffer)
7373 assert(commandBufferObject.device == queryPoolObject.device)
7374 assert(commandBufferObject.device == dstBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007375}
7376
7377cmd void vkCmdPushConstants(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007378 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007379 VkPipelineLayout layout,
7380 VkShaderStageFlags stageFlags,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007381 u32 offset,
7382 u32 size,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08007383 const void* pValues) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007384 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007385 layoutObject := GetPipelineLayout(layout)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007386 assert(commandBufferObject.device == layoutObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007387}
7388
7389@threadSafety("app")
7390cmd void vkCmdBeginRenderPass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007391 VkCommandBuffer commandBuffer,
Jesse Halld27f6aa2015-08-15 17:58:48 -07007392 const VkRenderPassBeginInfo* pRenderPassBegin,
Jesse Hall65ab5522015-11-30 00:07:16 -08007393 VkSubpassContents contents) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007394 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007395 renderPassObject := GetRenderPass(pRenderPassBegin.renderPass)
7396 framebufferObject := GetFramebuffer(pRenderPassBegin.framebuffer)
Jesse Hall3fbc8562015-11-29 22:10:52 -08007397 assert(commandBufferObject.device == renderPassObject.device)
7398 assert(commandBufferObject.device == framebufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007399
Jesse Hall3fbc8562015-11-29 22:10:52 -08007400 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007401}
7402
7403cmd void vkCmdNextSubpass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007404 VkCommandBuffer commandBuffer,
Jesse Hall65ab5522015-11-30 00:07:16 -08007405 VkSubpassContents contents) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007406 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007407}
7408
7409@threadSafety("app")
7410cmd void vkCmdEndRenderPass(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007411 VkCommandBuffer commandBuffer) {
7412 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007413
Jesse Hall3fbc8562015-11-29 22:10:52 -08007414 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007415}
7416
7417cmd void vkCmdExecuteCommands(
Jesse Hall3fbc8562015-11-29 22:10:52 -08007418 VkCommandBuffer commandBuffer,
Jesse Hall3dd678a2016-01-08 21:52:01 -08007419 u32 commandBufferCount,
Jesse Hall3fbc8562015-11-29 22:10:52 -08007420 const VkCommandBuffer* pCommandBuffers) {
7421 commandBufferObject := GetCommandBuffer(commandBuffer)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007422
Jesse Hall3dd678a2016-01-08 21:52:01 -08007423 commandBuffers := pCommandBuffers[0:commandBufferCount]
7424 for i in (0 .. commandBufferCount) {
Jesse Hall3fbc8562015-11-29 22:10:52 -08007425 secondaryCommandBuffer := commandBuffers[i]
7426 secondaryCommandBufferObject := GetCommandBuffer(secondaryCommandBuffer)
7427 assert(commandBufferObject.device == secondaryCommandBufferObject.device)
Jesse Halld27f6aa2015-08-15 17:58:48 -07007428 }
7429}
7430
Jesse Hallad250842017-03-10 18:35:38 -08007431@extension("VK_KHR_surface") // 1
Jesse Hall1356b0d2015-11-23 17:24:58 -08007432cmd void vkDestroySurfaceKHR(
7433 VkInstance instance,
Jesse Hall0e74f002015-11-30 11:37:59 -08007434 VkSurfaceKHR surface,
7435 const VkAllocationCallbacks* pAllocator) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08007436 instanceObject := GetInstance(instance)
7437 surfaceObject := GetSurface(surface)
7438 assert(surfaceObject.instance == instance)
Michael Lentine88594d72015-11-12 12:49:45 -08007439
Jesse Hall1356b0d2015-11-23 17:24:58 -08007440 State.Surfaces[surface] = null
Jesse Hall2818f932015-11-19 21:19:17 -08007441}
7442
Jesse Hallad250842017-03-10 18:35:38 -08007443@extension("VK_KHR_surface") // 1
Jesse Halla6429252015-11-29 18:59:42 -08007444cmd VkResult vkGetPhysicalDeviceSurfaceSupportKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08007445 VkPhysicalDevice physicalDevice,
7446 u32 queueFamilyIndex,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007447 VkSurfaceKHR surface,
Jesse Hallb00daad2015-11-29 19:46:20 -08007448 VkBool32* pSupported) {
7449 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08007450
7451 return ?
7452}
7453
Jesse Hallad250842017-03-10 18:35:38 -08007454@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08007455cmd VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR(
7456 VkPhysicalDevice physicalDevice,
7457 VkSurfaceKHR surface,
7458 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) {
7459 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7460
7461 surfaceCapabilities := ?
7462 pSurfaceCapabilities[0] = surfaceCapabilities
7463
7464 return ?
7465}
7466
Jesse Hallad250842017-03-10 18:35:38 -08007467@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08007468cmd VkResult vkGetPhysicalDeviceSurfaceFormatsKHR(
7469 VkPhysicalDevice physicalDevice,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007470 VkSurfaceKHR surface,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007471 u32* pSurfaceFormatCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007472 VkSurfaceFormatKHR* pSurfaceFormats) {
Jesse Hallb00daad2015-11-29 19:46:20 -08007473 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08007474
7475 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08007476 pSurfaceFormatCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08007477 surfaceFormats := pSurfaceFormats[0:count]
7478
7479 for i in (0 .. count) {
7480 surfaceFormat := ?
7481 surfaceFormats[i] = surfaceFormat
7482 }
7483
7484 return ?
7485}
7486
Jesse Hallad250842017-03-10 18:35:38 -08007487@extension("VK_KHR_surface") // 1
Jesse Hallb00daad2015-11-29 19:46:20 -08007488cmd VkResult vkGetPhysicalDeviceSurfacePresentModesKHR(
7489 VkPhysicalDevice physicalDevice,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007490 VkSurfaceKHR surface,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007491 u32* pPresentModeCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007492 VkPresentModeKHR* pPresentModes) {
Jesse Hallb00daad2015-11-29 19:46:20 -08007493 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Michael Lentine88594d72015-11-12 12:49:45 -08007494
7495 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08007496 pPresentModeCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08007497 presentModes := pPresentModes[0:count]
7498
7499 for i in (0 .. count) {
7500 presentMode := ?
7501 presentModes[i] = presentMode
7502 }
7503
7504 return ?
7505}
7506
Jesse Hallad250842017-03-10 18:35:38 -08007507@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08007508cmd VkResult vkCreateSwapchainKHR(
7509 VkDevice device,
7510 const VkSwapchainCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007511 const VkAllocationCallbacks* pAllocator,
Michael Lentine88594d72015-11-12 12:49:45 -08007512 VkSwapchainKHR* pSwapchain) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08007513 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR)
Michael Lentine88594d72015-11-12 12:49:45 -08007514 deviceObject := GetDevice(device)
7515
7516 swapchain := ?
7517 pSwapchain[0] = swapchain
7518 State.Swapchains[swapchain] = new!SwapchainObject(device: device)
7519
7520 return ?
7521}
7522
Jesse Hallad250842017-03-10 18:35:38 -08007523@extension("VK_KHR_swapchain") // 2
Jesse Hall1356b0d2015-11-23 17:24:58 -08007524cmd void vkDestroySwapchainKHR(
Michael Lentine88594d72015-11-12 12:49:45 -08007525 VkDevice device,
Jesse Hall0e74f002015-11-30 11:37:59 -08007526 VkSwapchainKHR swapchain,
7527 const VkAllocationCallbacks* pAllocator) {
Michael Lentine88594d72015-11-12 12:49:45 -08007528 deviceObject := GetDevice(device)
7529 swapchainObject := GetSwapchain(swapchain)
7530 assert(swapchainObject.device == device)
7531
7532 State.Swapchains[swapchain] = null
Michael Lentine88594d72015-11-12 12:49:45 -08007533}
7534
Jesse Hallad250842017-03-10 18:35:38 -08007535@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08007536cmd VkResult vkGetSwapchainImagesKHR(
7537 VkDevice device,
7538 VkSwapchainKHR swapchain,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007539 u32* pSwapchainImageCount,
Michael Lentine88594d72015-11-12 12:49:45 -08007540 VkImage* pSwapchainImages) {
7541 deviceObject := GetDevice(device)
7542
7543 count := as!u32(?)
Jesse Hall03b6fe12015-11-24 12:44:21 -08007544 pSwapchainImageCount[0] = count
Michael Lentine88594d72015-11-12 12:49:45 -08007545 swapchainImages := pSwapchainImages[0:count]
7546
7547 for i in (0 .. count) {
7548 swapchainImage := ?
7549 swapchainImages[i] = swapchainImage
Jesse Hall1356b0d2015-11-23 17:24:58 -08007550 State.Images[swapchainImage] = new!ImageObject(device: device)
Michael Lentine88594d72015-11-12 12:49:45 -08007551 }
7552
7553 return ?
7554}
7555
Jesse Hallad250842017-03-10 18:35:38 -08007556@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08007557cmd VkResult vkAcquireNextImageKHR(
7558 VkDevice device,
7559 VkSwapchainKHR swapchain,
7560 u64 timeout,
7561 VkSemaphore semaphore,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007562 VkFence fence,
Michael Lentine88594d72015-11-12 12:49:45 -08007563 u32* pImageIndex) {
7564 deviceObject := GetDevice(device)
7565 swapchainObject := GetSwapchain(swapchain)
7566
7567 imageIndex := ?
7568 pImageIndex[0] = imageIndex
7569
7570 return ?
7571}
7572
Jesse Hallad250842017-03-10 18:35:38 -08007573@extension("VK_KHR_swapchain") // 2
Michael Lentine88594d72015-11-12 12:49:45 -08007574cmd VkResult vkQueuePresentKHR(
7575 VkQueue queue,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08007576 const VkPresentInfoKHR* pPresentInfo) {
Michael Lentine88594d72015-11-12 12:49:45 -08007577 queueObject := GetQueue(queue)
7578
7579 presentInfo := ?
7580 pPresentInfo[0] = presentInfo
7581
7582 return ?
7583}
7584
Jesse Hallad250842017-03-10 18:35:38 -08007585@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08007586cmd VkResult vkGetPhysicalDeviceDisplayPropertiesKHR(
7587 VkPhysicalDevice physicalDevice,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007588 u32* pPropertyCount,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007589 VkDisplayPropertiesKHR* pProperties) {
7590 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7591 return ?
7592}
7593
Jesse Hallad250842017-03-10 18:35:38 -08007594@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08007595cmd VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR(
7596 VkPhysicalDevice physicalDevice,
7597 u32* pPropertyCount,
7598 VkDisplayPlanePropertiesKHR* pProperties) {
7599 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7600 return ?
7601}
7602
Jesse Hallad250842017-03-10 18:35:38 -08007603@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08007604cmd VkResult vkGetDisplayPlaneSupportedDisplaysKHR(
7605 VkPhysicalDevice physicalDevice,
Jesse Hall3dd678a2016-01-08 21:52:01 -08007606 u32 planeIndex,
Jesse Hallf4ab2b12015-11-30 16:04:55 -08007607 u32* pDisplayCount,
7608 VkDisplayKHR* pDisplays) {
Jesse Halla6429252015-11-29 18:59:42 -08007609 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7610 return ?
7611}
7612
Jesse Hallad250842017-03-10 18:35:38 -08007613@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08007614cmd VkResult vkGetDisplayModePropertiesKHR(
7615 VkPhysicalDevice physicalDevice,
7616 VkDisplayKHR display,
Jesse Hall03b6fe12015-11-24 12:44:21 -08007617 u32* pPropertyCount,
7618 VkDisplayModePropertiesKHR* pProperties) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08007619 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7620 return ?
7621}
7622
Jesse Hallad250842017-03-10 18:35:38 -08007623@extension("VK_KHR_display") // 3
Jesse Hall1356b0d2015-11-23 17:24:58 -08007624cmd VkResult vkCreateDisplayModeKHR(
7625 VkPhysicalDevice physicalDevice,
7626 VkDisplayKHR display,
7627 const VkDisplayModeCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007628 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007629 VkDisplayModeKHR* pMode) {
7630 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7631 return ?
7632}
7633
Jesse Hallad250842017-03-10 18:35:38 -08007634@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08007635cmd VkResult vkGetDisplayPlaneCapabilitiesKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08007636 VkPhysicalDevice physicalDevice,
Jesse Hall9ba8bc82015-11-30 16:22:16 -08007637 VkDisplayModeKHR mode,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007638 u32 planeIndex,
Jesse Halla6429252015-11-29 18:59:42 -08007639 VkDisplayPlaneCapabilitiesKHR* pCapabilities) {
Jesse Hall1356b0d2015-11-23 17:24:58 -08007640 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7641 return ?
7642}
7643
Jesse Hallad250842017-03-10 18:35:38 -08007644@extension("VK_KHR_display") // 3
Jesse Halla6429252015-11-29 18:59:42 -08007645cmd VkResult vkCreateDisplayPlaneSurfaceKHR(
7646 VkInstance instance,
7647 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007648 const VkAllocationCallbacks* pAllocator,
Jesse Halla6429252015-11-29 18:59:42 -08007649 VkSurfaceKHR* pSurface) {
7650 return ?
7651}
7652
Jesse Hallad250842017-03-10 18:35:38 -08007653@extension("VK_KHR_display_swapchain") // 4
Jesse Hall9ba8bc82015-11-30 16:22:16 -08007654cmd VkResult vkCreateSharedSwapchainsKHR(
7655 VkDevice device,
7656 u32 swapchainCount,
7657 const VkSwapchainCreateInfoKHR* pCreateInfos,
7658 const VkAllocationCallbacks* pAllocator,
7659 VkSwapchainKHR* pSwapchains) {
7660 return ?
7661}
7662
Jesse Hallad250842017-03-10 18:35:38 -08007663@extension("VK_KHR_xlib_surface") // 5
Jesse Halla6429252015-11-29 18:59:42 -08007664cmd VkResult vkCreateXlibSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08007665 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007666 const VkXlibSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007667 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007668 VkSurfaceKHR* pSurface) {
7669 instanceObject := GetInstance(instance)
7670 return ?
7671}
7672
Jesse Hallad250842017-03-10 18:35:38 -08007673@extension("VK_KHR_xlib_surface") // 5
Jesse Halla6429252015-11-29 18:59:42 -08007674cmd VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR(
7675 VkPhysicalDevice physicalDevice,
7676 u32 queueFamilyIndex,
7677 platform.Display* dpy,
Jesse Hall65ab5522015-11-30 00:07:16 -08007678 platform.VisualID visualID) {
Jesse Halla6429252015-11-29 18:59:42 -08007679 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7680 return ?
7681}
7682
Jesse Hallad250842017-03-10 18:35:38 -08007683@extension("VK_KHR_xcb_surface") // 6
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007684cmd VkResult vkCreateXcbSurfaceKHR(
Jesse Hall1356b0d2015-11-23 17:24:58 -08007685 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007686 const VkXcbSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007687 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007688 VkSurfaceKHR* pSurface) {
7689 instanceObject := GetInstance(instance)
7690 return ?
7691}
7692
Jesse Hallad250842017-03-10 18:35:38 -08007693@extension("VK_KHR_xcb_surface") // 6
Jesse Halla6429252015-11-29 18:59:42 -08007694cmd VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR(
7695 VkPhysicalDevice physicalDevice,
7696 u32 queueFamilyIndex,
7697 platform.xcb_connection_t* connection,
7698 platform.xcb_visualid_t visual_id) {
7699 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7700 return ?
7701}
7702
Jesse Hallad250842017-03-10 18:35:38 -08007703@extension("VK_KHR_wayland_surface") // 7
Jesse Hall1356b0d2015-11-23 17:24:58 -08007704cmd VkResult vkCreateWaylandSurfaceKHR(
7705 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007706 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007707 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007708 VkSurfaceKHR* pSurface) {
7709 instanceObject := GetInstance(instance)
7710 return ?
7711}
7712
Jesse Hallad250842017-03-10 18:35:38 -08007713@extension("VK_KHR_wayland_surface") // 7
Jesse Halla6429252015-11-29 18:59:42 -08007714cmd VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR(
7715 VkPhysicalDevice physicalDevice,
7716 u32 queueFamilyIndex,
7717 platform.wl_display* display) {
7718 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7719 return ?
7720}
7721
Jesse Hallad250842017-03-10 18:35:38 -08007722@extension("VK_KHR_mir_surface") // 8
Jesse Hall1356b0d2015-11-23 17:24:58 -08007723cmd VkResult vkCreateMirSurfaceKHR(
7724 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007725 const VkMirSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007726 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007727 VkSurfaceKHR* pSurface) {
7728 instanceObject := GetInstance(instance)
7729 return ?
7730}
7731
Jesse Hallad250842017-03-10 18:35:38 -08007732@extension("VK_KHR_mir_surface") // 8
Jesse Halla6429252015-11-29 18:59:42 -08007733cmd VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR(
7734 VkPhysicalDevice physicalDevice,
7735 u32 queueFamilyIndex,
7736 platform.MirConnection* connection) {
7737 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
7738 return ?
7739}
7740
Jesse Hallad250842017-03-10 18:35:38 -08007741@extension("VK_KHR_android_surface") // 9
Jesse Hall1356b0d2015-11-23 17:24:58 -08007742cmd VkResult vkCreateAndroidSurfaceKHR(
7743 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007744 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007745 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007746 VkSurfaceKHR* pSurface) {
7747 instanceObject := GetInstance(instance)
7748 return ?
7749}
7750
Jesse Hallad250842017-03-10 18:35:38 -08007751@extension("VK_KHR_win32_surface") // 10
Jesse Hall1356b0d2015-11-23 17:24:58 -08007752cmd VkResult vkCreateWin32SurfaceKHR(
7753 VkInstance instance,
Jesse Hallf9fa9a52016-01-08 16:08:51 -08007754 const VkWin32SurfaceCreateInfoKHR* pCreateInfo,
Jesse Hall0e74f002015-11-30 11:37:59 -08007755 const VkAllocationCallbacks* pAllocator,
Jesse Hall1356b0d2015-11-23 17:24:58 -08007756 VkSurfaceKHR* pSurface) {
7757 instanceObject := GetInstance(instance)
7758 return ?
7759}
7760
Jesse Hallad250842017-03-10 18:35:38 -08007761@extension("VK_KHR_win32_surface") // 10
Jesse Halla6429252015-11-29 18:59:42 -08007762cmd VkResult vkGetPhysicalDeviceWin32PresentationSupportKHR(
7763 VkPhysicalDevice physicalDevice,
7764 u32 queueFamilyIndex) {
Jesse Halle2948d82016-02-25 04:19:32 -08007765 physicalDeviceObject := GetPhysicalDevice(physicalDevice)
Jesse Halla6429252015-11-29 18:59:42 -08007766 return ?
7767}
7768
Jesse Hallad250842017-03-10 18:35:38 -08007769@extension("VK_ANDROID_native_buffer") // 11
Jesse Halld1abd742017-02-09 21:45:51 -08007770@optional
Chia-I Wub262ddc2016-03-22 07:38:20 +08007771cmd VkResult vkGetSwapchainGrallocUsageANDROID(
7772 VkDevice device,
7773 VkFormat format,
7774 VkImageUsageFlags imageUsage,
Jesse Halld1abd742017-02-09 21:45:51 -08007775 s32* grallocUsage) {
Chia-I Wub262ddc2016-03-22 07:38:20 +08007776 return ?
7777}
7778
Jesse Hallad250842017-03-10 18:35:38 -08007779@extension("VK_ANDROID_native_buffer") // 11
Jesse Halld1abd742017-02-09 21:45:51 -08007780@optional
Chris Forbes8e4438b2016-12-07 16:26:49 +13007781cmd VkResult vkGetSwapchainGrallocUsage2ANDROID(
7782 VkDevice device,
7783 VkFormat format,
7784 VkImageUsageFlags imageUsage,
7785 VkSwapchainImageUsageFlagsANDROID swapchainImageUsage,
Jesse Halld1abd742017-02-09 21:45:51 -08007786 u64* grallocConsumerUsage,
7787 u64* grallocProducerUsage) {
Chris Forbes8e4438b2016-12-07 16:26:49 +13007788 return ?
7789}
7790
Jesse Hallad250842017-03-10 18:35:38 -08007791@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08007792cmd VkResult vkAcquireImageANDROID(
7793 VkDevice device,
7794 VkImage image,
7795 int nativeFenceFd,
7796 VkSemaphore semaphore,
7797 VkFence fence) {
7798 return ?
7799}
7800
Jesse Hallad250842017-03-10 18:35:38 -08007801@extension("VK_ANDROID_native_buffer") // 11
Chia-I Wub262ddc2016-03-22 07:38:20 +08007802cmd VkResult vkQueueSignalReleaseImageANDROID(
7803 VkQueue queue,
7804 u32 waitSemaphoreCount,
7805 const VkSemaphore* pWaitSemaphores,
7806 VkImage image,
7807 int* pNativeFenceFd) {
7808 return ?
7809}
7810
Jesse Hallad250842017-03-10 18:35:38 -08007811@extension("VK_EXT_debug_report") // 12
7812@external type void* PFN_vkDebugReportCallbackEXT
7813@extension("VK_EXT_debug_report") // 12
7814@pfn cmd VkBool32 vkDebugReportCallbackEXT(
7815 VkDebugReportFlagsEXT flags,
7816 VkDebugReportObjectTypeEXT objectType,
7817 u64 object,
7818 platform.size_t location,
7819 s32 messageCode,
7820 const char* pLayerPrefix,
7821 const char* pMessage,
7822 void* pUserData) {
7823 return ?
7824}
7825
7826@extension("VK_EXT_debug_report") // 12
7827cmd VkResult vkCreateDebugReportCallbackEXT(
7828 VkInstance instance,
7829 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo,
7830 const VkAllocationCallbacks* pAllocator,
7831 VkDebugReportCallbackEXT* pCallback) {
7832 return ?
7833}
7834
7835@extension("VK_EXT_debug_report") // 12
7836cmd void vkDestroyDebugReportCallbackEXT(
7837 VkInstance instance,
7838 VkDebugReportCallbackEXT callback,
7839 const VkAllocationCallbacks* pAllocator) {
7840}
7841
7842@extension("VK_EXT_debug_report") // 12
7843cmd void vkDebugReportMessageEXT(
7844 VkInstance instance,
7845 VkDebugReportFlagsEXT flags,
7846 VkDebugReportObjectTypeEXT objectType,
7847 u64 object,
7848 platform.size_t location,
7849 s32 messageCode,
7850 const char* pLayerPrefix,
7851 const char* pMessage) {
7852}
7853
7854@extension("VK_EXT_debug_marker") // 23
7855cmd VkResult vkDebugMarkerSetObjectTagEXT(
7856 VkDevice device,
Jesse Hall77726222017-09-19 14:49:27 -05007857 const VkDebugMarkerObjectTagInfoEXT* pTagInfo) {
Jesse Hallad250842017-03-10 18:35:38 -08007858 return ?
7859}
7860
7861@extension("VK_EXT_debug_marker") // 23
7862cmd VkResult vkDebugMarkerSetObjectNameEXT(
7863 VkDevice device,
Jesse Hall77726222017-09-19 14:49:27 -05007864 const VkDebugMarkerObjectNameInfoEXT* pNameInfo) {
Jesse Hallad250842017-03-10 18:35:38 -08007865 return ?
7866}
7867
7868@extension("VK_EXT_debug_marker") // 23
7869cmd void vkCmdDebugMarkerBeginEXT(
7870 VkCommandBuffer commandBuffer,
Jesse Hall77726222017-09-19 14:49:27 -05007871 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
Jesse Hallad250842017-03-10 18:35:38 -08007872}
7873
7874@extension("VK_EXT_debug_marker") // 23
7875cmd void vkCmdDebugMarkerEndEXT(
7876 VkCommandBuffer commandBuffer) {
7877}
7878
7879@extension("VK_EXT_debug_marker") // 23
7880cmd void vkCmdDebugMarkerInsertEXT(
7881 VkCommandBuffer commandBuffer,
Jesse Hall77726222017-09-19 14:49:27 -05007882 const VkDebugMarkerMarkerInfoEXT* pMarkerInfo) {
Jesse Hallad250842017-03-10 18:35:38 -08007883}
7884
7885@extension("VK_AMD_draw_indirect_count") // 34
7886cmd void vkCmdDrawIndirectCountAMD(
7887 VkCommandBuffer commandBuffer,
7888 VkBuffer buffer,
7889 VkDeviceSize offset,
7890 VkBuffer countBuffer,
7891 VkDeviceSize countBufferOffset,
7892 u32 maxDrawCount,
7893 u32 stride) {
7894}
7895
7896@extension("VK_AMD_draw_indirect_count") // 34
7897cmd void vkCmdDrawIndexedIndirectCountAMD(
7898 VkCommandBuffer commandBuffer,
7899 VkBuffer buffer,
7900 VkDeviceSize offset,
7901 VkBuffer countBuffer,
7902 VkDeviceSize countBufferOffset,
7903 u32 maxDrawCount,
7904 u32 stride) {
7905}
7906
7907@extension("VK_NV_external_memory_capabilities") // 56
7908cmd VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV(
7909 VkPhysicalDevice physicalDevice,
7910 VkFormat format,
7911 VkImageType type,
7912 VkImageTiling tiling,
7913 VkImageUsageFlags usage,
7914 VkImageCreateFlags flags,
7915 VkExternalMemoryHandleTypeFlagsNV externalHandleType,
7916 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) {
7917 return ?
7918}
7919
7920@extension("VK_NV_external_memory_win32") // 58
7921cmd VkResult vkGetMemoryWin32HandleNV(
7922 VkDevice device,
7923 VkDeviceMemory memory,
7924 VkExternalMemoryHandleTypeFlagsNV handleType,
7925 platform.HANDLE* pHandle) {
7926 return ?
7927}
7928
7929@extension("VK_KHR_get_physical_device_properties2") // 60
7930cmd void vkGetPhysicalDeviceFeatures2KHR(
7931 VkPhysicalDevice physicalDevice,
7932 VkPhysicalDeviceFeatures2KHR* pFeatures) {
7933}
7934
7935@extension("VK_KHR_get_physical_device_properties2") // 60
7936cmd void vkGetPhysicalDeviceProperties2KHR(
7937 VkPhysicalDevice physicalDevice,
7938 VkPhysicalDeviceProperties2KHR* pProperties) {
7939}
7940
7941@extension("VK_KHR_get_physical_device_properties2") // 60
7942cmd void vkGetPhysicalDeviceFormatProperties2KHR(
7943 VkPhysicalDevice physicalDevice,
7944 VkFormat format,
7945 VkFormatProperties2KHR* pFormatProperties) {
7946}
7947
7948@extension("VK_KHR_get_physical_device_properties2") // 60
7949cmd VkResult vkGetPhysicalDeviceImageFormatProperties2KHR(
7950 VkPhysicalDevice physicalDevice,
7951 const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo,
7952 VkImageFormatProperties2KHR* pImageFormatProperties) {
7953 return ?
7954}
7955
7956@extension("VK_KHR_get_physical_device_properties2") // 60
7957cmd void vkGetPhysicalDeviceQueueFamilyProperties2KHR(
7958 VkPhysicalDevice physicalDevice,
7959 u32* pQueueFamilyPropertyCount,
7960 VkQueueFamilyProperties2KHR* pQueueFamilyProperties) {
7961}
7962
7963@extension("VK_KHR_get_physical_device_properties2") // 60
7964cmd void vkGetPhysicalDeviceMemoryProperties2KHR(
7965 VkPhysicalDevice physicalDevice,
7966 VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties) {
7967}
7968
7969@extension("VK_KHR_get_physical_device_properties2") // 60
7970cmd void vkGetPhysicalDeviceSparseImageFormatProperties2KHR(
7971 VkPhysicalDevice physicalDevice,
7972 const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo,
7973 u32* pPropertyCount,
7974 VkSparseImageFormatProperties2KHR* pProperties) {
7975}
7976
7977@extension("VK_KHX_device_group") // 61
7978cmd void vkGetDeviceGroupPeerMemoryFeaturesKHX(
7979 VkDevice device,
7980 u32 heapIndex,
7981 u32 localDeviceIndex,
7982 u32 remoteDeviceIndex,
7983 VkPeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures) {
7984}
7985
7986@extension("VK_KHX_device_group") // 61
Jesse Hallad250842017-03-10 18:35:38 -08007987cmd void vkCmdSetDeviceMaskKHX(
7988 VkCommandBuffer commandBuffer,
7989 u32 deviceMask) {
7990}
7991
7992@extension("VK_KHX_device_group") // 61
7993cmd VkResult vkGetDeviceGroupPresentCapabilitiesKHX(
7994 VkDevice device,
7995 VkDeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities) {
7996 return ?
7997}
7998
7999@extension("VK_KHX_device_group") // 61
8000cmd VkResult vkGetDeviceGroupSurfacePresentModesKHX(
8001 VkDevice device,
8002 VkSurfaceKHR surface,
8003 VkDeviceGroupPresentModeFlagsKHX* pModes) {
8004 return ?
8005}
8006
8007@extension("VK_KHX_device_group") // 61
8008cmd VkResult vkAcquireNextImage2KHX(
8009 VkDevice device,
8010 const VkAcquireNextImageInfoKHX* pAcquireInfo,
8011 u32* pImageIndex) {
8012 return ?
8013}
8014
8015@extension("VK_KHX_device_group") // 61
8016cmd void vkCmdDispatchBaseKHX(
8017 VkCommandBuffer commandBuffer,
8018 u32 baseGroupX,
8019 u32 baseGroupY,
8020 u32 baseGroupZ,
8021 u32 groupCountX,
8022 u32 groupCountY,
8023 u32 groupCountZ) {
8024}
8025
8026@extension("VK_KHX_device_group") // 61
8027cmd VkResult vkGetPhysicalDevicePresentRectanglesKHX(
8028 VkPhysicalDevice physicalDevice,
8029 VkSurfaceKHR surface,
8030 u32* pRectCount,
8031 VkRect2D* pRects) {
8032 return ?
8033}
8034
8035@extension("VK_NN_vi_surface") // 63
8036cmd VkResult vkCreateViSurfaceNN(
8037 VkInstance instance,
8038 const VkViSurfaceCreateInfoNN* pCreateInfo,
8039 const VkAllocationCallbacks* pAllocator,
8040 VkSurfaceKHR* pSurface) {
8041 return ?
8042}
8043
8044@extension("VK_KHR_maintenance1") // 70
8045cmd void vkTrimCommandPoolKHR(
8046 VkDevice device,
8047 VkCommandPool commandPool,
8048 VkCommandPoolTrimFlagsKHR flags) {
8049}
8050
8051@extension("VK_KHX_device_group_creation") // 71
8052cmd VkResult vkEnumeratePhysicalDeviceGroupsKHX(
8053 VkInstance instance,
8054 u32* pPhysicalDeviceGroupCount,
8055 VkPhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties) {
8056 return ?
8057}
8058
Jesse Hall9492f992017-08-28 12:10:06 -07008059@extension("VK_KHR_external_memory_capabilities") // 72
8060cmd void vkGetPhysicalDeviceExternalBufferPropertiesKHR(
Jesse Hallad250842017-03-10 18:35:38 -08008061 VkPhysicalDevice physicalDevice,
Jesse Hall9492f992017-08-28 12:10:06 -07008062 const VkPhysicalDeviceExternalBufferInfoKHR* pExternalBufferInfo,
8063 VkExternalBufferPropertiesKHR* pExternalBufferProperties) {
Jesse Hallad250842017-03-10 18:35:38 -08008064}
8065
Jesse Hall9492f992017-08-28 12:10:06 -07008066@extension("VK_KHR_external_memory_win32") // 74
8067cmd VkResult vkGetMemoryWin32HandleKHR(
Jesse Hallad250842017-03-10 18:35:38 -08008068 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07008069 const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo,
Jesse Hallad250842017-03-10 18:35:38 -08008070 platform.HANDLE* pHandle) {
8071 return ?
8072}
8073
Jesse Hall9492f992017-08-28 12:10:06 -07008074@extension("VK_KHR_external_memory_win32") // 74
8075cmd VkResult vkGetMemoryWin32HandlePropertiesKHR(
Jesse Hallad250842017-03-10 18:35:38 -08008076 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07008077 VkExternalMemoryHandleTypeFlagBitsKHR handleType,
Jesse Hallad250842017-03-10 18:35:38 -08008078 platform.HANDLE handle,
Jesse Hall9492f992017-08-28 12:10:06 -07008079 VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties) {
Jesse Hallad250842017-03-10 18:35:38 -08008080 return ?
8081}
8082
Jesse Hall9492f992017-08-28 12:10:06 -07008083@extension("VK_KHR_external_memory_fd") // 75
8084cmd VkResult vkGetMemoryFdKHR(
Jesse Hallad250842017-03-10 18:35:38 -08008085 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07008086 const VkMemoryGetFdInfoKHR* pGetFdInfo,
Jesse Hallad250842017-03-10 18:35:38 -08008087 s32* pFd) {
8088 return ?
8089}
8090
Jesse Hall9492f992017-08-28 12:10:06 -07008091@extension("VK_KHR_external_memory_fd") // 75
8092cmd VkResult vkGetMemoryFdPropertiesKHR(
Jesse Hallad250842017-03-10 18:35:38 -08008093 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07008094 VkExternalMemoryHandleTypeFlagBitsKHR handleType,
Jesse Hallad250842017-03-10 18:35:38 -08008095 s32 fd,
Jesse Hall9492f992017-08-28 12:10:06 -07008096 VkMemoryFdPropertiesKHR* pMemoryFdProperties) {
Jesse Hallad250842017-03-10 18:35:38 -08008097 return ?
8098}
8099
Jesse Hall9492f992017-08-28 12:10:06 -07008100@extension("VK_KHR_external_semaphore_capabilities") // 77
8101cmd void vkGetPhysicalDeviceExternalSemaphorePropertiesKHR(
Jesse Hallad250842017-03-10 18:35:38 -08008102 VkPhysicalDevice physicalDevice,
Jesse Hall9492f992017-08-28 12:10:06 -07008103 const VkPhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo,
8104 VkExternalSemaphorePropertiesKHR* pExternalSemaphoreProperties) {
Jesse Hallad250842017-03-10 18:35:38 -08008105}
8106
Jesse Hall9492f992017-08-28 12:10:06 -07008107@extension("VK_KHR_external_semaphore_win32") // 79
8108cmd VkResult vkImportSemaphoreWin32HandleKHR(
Jesse Hallad250842017-03-10 18:35:38 -08008109 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07008110 const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo) {
Jesse Hallad250842017-03-10 18:35:38 -08008111 return ?
8112}
8113
Jesse Hall9492f992017-08-28 12:10:06 -07008114@extension("VK_KHR_external_semaphore_win32") // 79
8115cmd VkResult vkGetSemaphoreWin32HandleKHR(
Jesse Hallad250842017-03-10 18:35:38 -08008116 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07008117 const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo,
Jesse Hallad250842017-03-10 18:35:38 -08008118 platform.HANDLE* pHandle) {
8119 return ?
8120}
8121
Jesse Hall9492f992017-08-28 12:10:06 -07008122@extension("VK_KHR_external_semaphore_fd") // 80
8123cmd VkResult vkImportSemaphoreFdKHR(
Jesse Hallad250842017-03-10 18:35:38 -08008124 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07008125 const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo) {
Jesse Hallad250842017-03-10 18:35:38 -08008126 return ?
8127}
8128
Jesse Hall9492f992017-08-28 12:10:06 -07008129@extension("VK_KHR_external_semaphore_fd") // 80
8130cmd VkResult vkGetSemaphoreFdKHR(
Jesse Hallad250842017-03-10 18:35:38 -08008131 VkDevice device,
Jesse Hall9492f992017-08-28 12:10:06 -07008132 const VkSemaphoreGetFdInfoKHR* pGetFdInfo,
Jesse Hallad250842017-03-10 18:35:38 -08008133 s32* pFd) {
8134 return ?
8135}
8136
8137@extension("VK_KHR_push_descriptor") // 81
8138cmd void vkCmdPushDescriptorSetKHR(
8139 VkCommandBuffer commandBuffer,
8140 VkPipelineBindPoint pipelineBindPoint,
8141 VkPipelineLayout layout,
8142 u32 set,
8143 u32 descriptorWriteCount,
8144 const VkWriteDescriptorSet* pDescriptorWrites) {
8145}
8146
8147@extension("VK_KHR_descriptor_update_template") // 86
8148cmd VkResult vkCreateDescriptorUpdateTemplateKHR(
8149 VkDevice device,
8150 const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo,
8151 const VkAllocationCallbacks* pAllocator,
8152 VkDescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate) {
8153 return ?
8154}
8155
8156@extension("VK_KHR_descriptor_update_template") // 86
8157cmd void vkDestroyDescriptorUpdateTemplateKHR(
8158 VkDevice device,
8159 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
8160 const VkAllocationCallbacks* pAllocator) {
8161}
8162
8163@extension("VK_KHR_descriptor_update_template") // 86
8164cmd void vkUpdateDescriptorSetWithTemplateKHR(
8165 VkDevice device,
8166 VkDescriptorSet descriptorSet,
8167 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
8168 const void* pData) {
8169}
8170
8171@extension("VK_KHR_descriptor_update_template") // 86
8172cmd void vkCmdPushDescriptorSetWithTemplateKHR(
8173 VkCommandBuffer commandBuffer,
8174 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate,
8175 VkPipelineLayout layout,
8176 u32 set,
8177 const void* pData) {
8178}
8179
8180@extension("VK_NVX_device_generated_commands") // 87
8181cmd void vkCmdProcessCommandsNVX(
8182 VkCommandBuffer commandBuffer,
8183 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) {
8184}
8185
8186@extension("VK_NVX_device_generated_commands") // 87
8187cmd void vkCmdReserveSpaceForCommandsNVX(
8188 VkCommandBuffer commandBuffer,
8189 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) {
8190}
8191
8192@extension("VK_NVX_device_generated_commands") // 87
8193cmd VkResult vkCreateIndirectCommandsLayoutNVX(
8194 VkDevice device,
8195 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo,
8196 const VkAllocationCallbacks* pAllocator,
8197 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) {
8198 return ?
8199}
8200
8201@extension("VK_NVX_device_generated_commands") // 87
8202cmd void vkDestroyIndirectCommandsLayoutNVX(
8203 VkDevice device,
8204 VkIndirectCommandsLayoutNVX indirectCommandsLayout,
8205 const VkAllocationCallbacks* pAllocator) {
8206}
8207
8208@extension("VK_NVX_device_generated_commands") // 87
8209cmd VkResult vkCreateObjectTableNVX(
8210 VkDevice device,
8211 const VkObjectTableCreateInfoNVX* pCreateInfo,
8212 const VkAllocationCallbacks* pAllocator,
8213 VkObjectTableNVX* pObjectTable) {
8214 return ?
8215}
8216
8217@extension("VK_NVX_device_generated_commands") // 87
8218cmd void vkDestroyObjectTableNVX(
8219 VkDevice device,
8220 VkObjectTableNVX objectTable,
8221 const VkAllocationCallbacks* pAllocator) {
8222}
8223
8224@extension("VK_NVX_device_generated_commands") // 87
8225cmd VkResult vkRegisterObjectsNVX(
8226 VkDevice device,
8227 VkObjectTableNVX objectTable,
8228 u32 objectCount,
8229 const VkObjectTableEntryNVX* const* ppObjectTableEntries,
8230 const u32* pObjectIndices) {
8231 return ?
8232}
8233
8234@extension("VK_NVX_device_generated_commands") // 87
8235cmd VkResult vkUnregisterObjectsNVX(
8236 VkDevice device,
8237 VkObjectTableNVX objectTable,
8238 u32 objectCount,
8239 const VkObjectEntryTypeNVX* pObjectEntryTypes,
8240 const u32* pObjectIndices) {
8241 return ?
8242}
8243
8244@extension("VK_NVX_device_generated_commands") // 87
8245cmd void vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX(
8246 VkPhysicalDevice physicalDevice,
8247 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures,
8248 VkDeviceGeneratedCommandsLimitsNVX* pLimits) {
8249}
8250
8251@extension("VK_NV_clip_space_w_scaling") // 88
8252cmd void vkCmdSetViewportWScalingNV(
8253 VkCommandBuffer commandBuffer,
8254 u32 firstViewport,
8255 u32 viewportCount,
8256 const VkViewportWScalingNV* pViewportWScalings) {
8257}
8258
8259@extension("VK_EXT_direct_mode_display") // 89
8260cmd VkResult vkReleaseDisplayEXT(
8261 VkPhysicalDevice physicalDevice,
8262 VkDisplayKHR display) {
8263 return ?
8264}
8265
8266@extension("VK_EXT_acquire_xlib_display") // 90
8267cmd VkResult vkAcquireXlibDisplayEXT(
8268 VkPhysicalDevice physicalDevice,
8269 platform.Display* dpy,
8270 VkDisplayKHR display) {
8271 return ?
8272}
8273
8274@extension("VK_EXT_acquire_xlib_display") // 90
8275cmd VkResult vkGetRandROutputDisplayEXT(
8276 VkPhysicalDevice physicalDevice,
8277 platform.Display* dpy,
8278 platform.RROutput rrOutput,
8279 VkDisplayKHR* pDisplay) {
8280 return ?
8281}
8282
8283@extension("VK_EXT_display_surface_counter") // 91
8284cmd VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT(
8285 VkPhysicalDevice physicalDevice,
8286 VkSurfaceKHR surface,
8287 VkSurfaceCapabilities2EXT* pSurfaceCapabilities) {
8288 return ?
8289}
8290
8291@extension("VK_EXT_display_control") // 92
8292cmd VkResult vkDisplayPowerControlEXT(
8293 VkDevice device,
8294 VkDisplayKHR display,
8295 const VkDisplayPowerInfoEXT* pDisplayPowerInfo) {
8296 return ?
8297}
8298
8299@extension("VK_EXT_display_control") // 92
8300cmd VkResult vkRegisterDeviceEventEXT(
8301 VkDevice device,
8302 const VkDeviceEventInfoEXT* pDeviceEventInfo,
8303 const VkAllocationCallbacks* pAllocator,
8304 VkFence* pFence) {
8305 return ?
8306}
8307
8308@extension("VK_EXT_display_control") // 92
8309cmd VkResult vkRegisterDisplayEventEXT(
8310 VkDevice device,
8311 VkDisplayKHR display,
8312 const VkDisplayEventInfoEXT* pDisplayEventInfo,
8313 const VkAllocationCallbacks* pAllocator,
8314 VkFence* pFence) {
8315 return ?
8316}
8317
8318@extension("VK_EXT_display_control") // 92
8319cmd VkResult vkGetSwapchainCounterEXT(
8320 VkDevice device,
8321 VkSwapchainKHR swapchain,
8322 VkSurfaceCounterFlagBitsEXT counter,
8323 u64* pCounterValue) {
8324 return ?
8325}
8326
8327@extension("VK_GOOGLE_display_timing") // 93
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07008328cmd VkResult vkGetRefreshCycleDurationGOOGLE(
Jesse Hallfdc8ab32017-03-10 21:01:57 -08008329 VkDevice device,
8330 VkSwapchainKHR swapchain,
8331 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) {
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07008332 deviceObject := GetDevice(device)
8333 swapchainObject := GetSwapchain(swapchain)
8334
8335 displayTimingProperties := ?
8336 pDisplayTimingProperties[0] = displayTimingProperties
8337
8338 return ?
8339}
8340
Jesse Hallad250842017-03-10 18:35:38 -08008341@extension("VK_GOOGLE_display_timing") // 93
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07008342cmd VkResult vkGetPastPresentationTimingGOOGLE(
Jesse Hallfdc8ab32017-03-10 21:01:57 -08008343 VkDevice device,
8344 VkSwapchainKHR swapchain,
8345 u32* pPresentationTimingCount,
8346 VkPastPresentationTimingGOOGLE* pPresentationTimings) {
Ian Elliott4c8bb2a2016-12-29 11:07:26 -07008347 return ?
8348}
8349
Jesse Hallad250842017-03-10 18:35:38 -08008350@extension("VK_EXT_discard_rectangles") // 100
8351cmd void vkCmdSetDiscardRectangleEXT(
Jesse Hall26763382016-05-20 07:13:52 -07008352 VkCommandBuffer commandBuffer,
Jesse Hallad250842017-03-10 18:35:38 -08008353 u32 firstDiscardRectangle,
8354 u32 discardRectangleCount,
8355 const VkRect2D* pDiscardRectangles) {
Jesse Hall26763382016-05-20 07:13:52 -07008356}
8357
Jesse Hallad250842017-03-10 18:35:38 -08008358@extension("VK_EXT_hdr_metadata") // 106
Jesse Hall889cd9a2017-02-25 22:12:23 -08008359cmd void vkSetHdrMetadataEXT(
Jesse Hallfdc8ab32017-03-10 21:01:57 -08008360 VkDevice device,
8361 u32 swapchainCount,
8362 const VkSwapchainKHR* pSwapchains,
8363 const VkHdrMetadataEXT* pMetadata) {
Jesse Hall889cd9a2017-02-25 22:12:23 -08008364}
8365
Jesse Hallad250842017-03-10 18:35:38 -08008366@extension("VK_KHR_shared_presentable_image") // 112
Chris Forbes2e12cb82017-01-18 11:45:17 +13008367cmd VkResult vkGetSwapchainStatusKHR(
8368 VkDevice device,
8369 VkSwapchainKHR swapchain) {
8370 return ?
8371}
8372
Jesse Hall9492f992017-08-28 12:10:06 -07008373@extension("VK_KHR_external_fence_capabilities") // 113
8374cmd void vkGetPhysicalDeviceExternalFencePropertiesKHR(
8375 VkPhysicalDevice physicalDevice,
8376 const VkPhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo,
8377 VkExternalFencePropertiesKHR* pExternalFenceProperties) {
8378}
8379
8380@extension("VK_KHR_external_fence_win32") // 115
8381cmd VkResult vkImportFenceWin32HandleKHR(
8382 VkDevice device,
8383 const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo) {
8384 return ?
8385}
8386
8387@extension("VK_KHR_external_fence_win32") // 115
8388cmd VkResult vkGetFenceWin32HandleKHR(
8389 VkDevice device,
8390 const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo,
8391 platform.HANDLE* pHandle) {
8392 return ?
8393}
8394
8395@extension("VK_KHR_external_fence_fd") // 116
8396cmd VkResult vkImportFenceFdKHR(
8397 VkDevice device,
8398 const VkImportFenceFdInfoKHR* pImportFenceFdInfo) {
8399 return ?
8400}
8401
8402@extension("VK_KHR_external_fence_fd") // 116
8403cmd VkResult vkGetFenceFdKHR(
8404 VkDevice device,
8405 const VkFenceGetFdInfoKHR* pGetFdInfo,
8406 int* pFd) {
8407 return ?
8408}
8409
Jesse Hall05556b12017-05-18 17:40:25 -07008410@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13008411cmd VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR(
8412 VkPhysicalDevice physicalDevice,
8413 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
8414 VkSurfaceCapabilities2KHR* pSurfaceCapabilities) {
8415 return ?
8416}
8417
Jesse Hall05556b12017-05-18 17:40:25 -07008418@extension("VK_KHR_get_surface_capabilities2") // 120
Chris Forbese2d3ee12017-03-16 16:10:15 +13008419cmd VkResult vkGetPhysicalDeviceSurfaceFormats2KHR(
8420 VkPhysicalDevice physicalDevice,
8421 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo,
8422 u32* pSurfaceFormatCount,
8423 VkSurfaceFormat2KHR* pSurfaceFormats) {
8424 return ?
8425}
8426
Jesse Hallad250842017-03-10 18:35:38 -08008427@extension("VK_MVK_ios_surface") // 123
8428cmd VkResult vkCreateIOSSurfaceMVK(
8429 VkInstance instance,
8430 const VkIOSSurfaceCreateInfoMVK* pCreateInfo,
8431 const VkAllocationCallbacks* pAllocator,
8432 VkSurfaceKHR* pSurface) {
8433 return ?
8434}
8435
8436@extension("VK_MVK_macos_surface") // 124
8437cmd VkResult vkCreateMacOSSurfaceMVK(
8438 VkInstance instance,
8439 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo,
8440 const VkAllocationCallbacks* pAllocator,
8441 VkSurfaceKHR* pSurface) {
8442 return ?
8443}
8444
Jesse Hall77726222017-09-19 14:49:27 -05008445@extension("VK_EXT_sample_locations") // 144
8446cmd void vkCmdSetSampleLocationsEXT(
8447 VkCommandBuffer commandBuffer,
8448 const VkSampleLocationsInfoEXT* pSampleLocationsInfo) {
8449}
8450
8451@extension("VK_EXT_sample_locations") // 144
8452cmd void vkGetPhysicalDeviceMultisamplePropertiesEXT(
8453 VkPhysicalDevice physicalDevice,
8454 VkSampleCountFlagBits samples,
8455 VkMultisamplePropertiesEXT* pMultisampleProperties) {
8456}
8457
Jesse Hall9492f992017-08-28 12:10:06 -07008458@extension("VK_KHR_get_memory_requirements2") // 147
8459cmd void vkGetImageMemoryRequirements2KHR(
8460 VkDevice device,
8461 const VkImageMemoryRequirementsInfo2KHR* pInfo,
8462 VkMemoryRequirements2KHR* pMemoryRequirements) {
8463}
8464
8465@extension("VK_KHR_get_memory_requirements2") // 147
8466cmd void vkGetBufferMemoryRequirements2KHR(
8467 VkDevice device,
8468 const VkBufferMemoryRequirementsInfo2KHR* pInfo,
8469 VkMemoryRequirements2KHR* pMemoryRequirements) {
8470}
8471
8472@extension("VK_KHR_get_memory_requirements2") // 147
8473cmd void vkGetImageSparseMemoryRequirements2KHR(
8474 VkDevice device,
8475 const VkImageSparseMemoryRequirementsInfo2KHR* pInfo,
8476 u32* pSparseMemoryRequirementCount,
8477 VkSparseImageMemoryRequirements2KHR* pSparseMemoryRequirements) {
8478}
8479
Jesse Hall076f95d2017-09-20 11:34:47 -07008480@extension("VK_KHR_sampler_ycbcr_conversion") // 157
8481cmd VkResult vkCreateSamplerYcbcrConversionKHR(
8482 VkDevice device,
8483 const VkSamplerYcbcrConversionCreateInfoKHR* pCreateInfo,
8484 const VkAllocationCallbacks* pAllocator,
8485 VkSamplerYcbcrConversionKHR* pYcbcrConversion) {
8486 return ?
8487}
8488
8489@extension("VK_KHR_sampler_ycbcr_conversion") // 157
8490cmd void vkDestroySamplerYcbcrConversionKHR(
8491 VkDevice device,
8492 VkSamplerYcbcrConversionKHR ycbcrConversion,
8493 const VkAllocationCallbacks* pAllocator) {
8494}
8495
8496@extension("VK_KHR_bind_memory2") // 158
8497cmd VkResult vkBindBufferMemory2KHR(
8498 VkDevice device,
8499 u32 bindInfoCount,
8500 const VkBindBufferMemoryInfoKHR* pBindInfos) {
8501 return ?
8502}
8503
8504@extension("VK_KHR_bind_memory2") // 158
8505cmd VkResult vkBindImageMemory2KHR(
8506 VkDevice device,
8507 u32 bindInfoCount,
8508 const VkBindImageMemoryInfoKHR* pBindInfos) {
8509 return ?
8510}
8511
Jesse Hall77726222017-09-19 14:49:27 -05008512@extension("VK_EXT_validation_cache") // 161
8513cmd VkResult vkCreateValidationCacheEXT(
8514 VkDevice device,
8515 const VkValidationCacheCreateInfoEXT* pCreateInfo,
8516 const VkAllocationCallbacks* pAllocator,
8517 VkValidationCacheEXT* pValidationCache) {
8518 return ?
8519}
8520
8521@extension("VK_EXT_validation_cache") // 161
8522cmd void vkDestroyValidationCacheEXT(
8523 VkDevice device,
8524 VkValidationCacheEXT validationCache,
8525 const VkAllocationCallbacks* pAllocator) {
8526}
8527
8528@extension("VK_EXT_validation_cache") // 161
8529cmd VkResult vkMergeValidationCachesEXT(
8530 VkDevice device,
8531 VkValidationCacheEXT dstCache,
8532 u32 srcCacheCount,
8533 const VkValidationCacheEXT* pSrcCaches) {
8534 return ?
8535}
8536
8537@extension("VK_EXT_validation_cache") // 161
8538cmd VkResult vkGetValidationCacheDataEXT(
8539 VkDevice device,
8540 VkValidationCacheEXT validationCache,
8541 platform.size_t* pDataSize,
8542 void* pData) {
8543 return ?
8544}
8545
Jesse Halld27f6aa2015-08-15 17:58:48 -07008546////////////////
8547// Validation //
8548////////////////
8549
8550extern void validate(string layerName, bool condition, string message)
8551
8552
8553/////////////////////////////
8554// Internal State Tracking //
8555/////////////////////////////
8556
8557StateObject State
8558
8559@internal class StateObject {
8560 // Dispatchable objects.
8561 map!(VkInstance, ref!InstanceObject) Instances
8562 map!(VkPhysicalDevice, ref!PhysicalDeviceObject) PhysicalDevices
8563 map!(VkDevice, ref!DeviceObject) Devices
8564 map!(VkQueue, ref!QueueObject) Queues
Jesse Hall3fbc8562015-11-29 22:10:52 -08008565 map!(VkCommandBuffer, ref!CommandBufferObject) CommandBuffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07008566
8567 // Non-dispatchable objects.
8568 map!(VkDeviceMemory, ref!DeviceMemoryObject) DeviceMemories
8569 map!(VkBuffer, ref!BufferObject) Buffers
8570 map!(VkBufferView, ref!BufferViewObject) BufferViews
8571 map!(VkImage, ref!ImageObject) Images
8572 map!(VkImageView, ref!ImageViewObject) ImageViews
Jesse Halld27f6aa2015-08-15 17:58:48 -07008573 map!(VkShaderModule, ref!ShaderModuleObject) ShaderModules
Jesse Halld27f6aa2015-08-15 17:58:48 -07008574 map!(VkPipeline, ref!PipelineObject) Pipelines
8575 map!(VkPipelineLayout, ref!PipelineLayoutObject) PipelineLayouts
8576 map!(VkSampler, ref!SamplerObject) Samplers
8577 map!(VkDescriptorSet, ref!DescriptorSetObject) DescriptorSets
8578 map!(VkDescriptorSetLayout, ref!DescriptorSetLayoutObject) DescriptorSetLayouts
8579 map!(VkDescriptorPool, ref!DescriptorPoolObject) DescriptorPools
Jesse Halld27f6aa2015-08-15 17:58:48 -07008580 map!(VkFence, ref!FenceObject) Fences
8581 map!(VkSemaphore, ref!SemaphoreObject) Semaphores
8582 map!(VkEvent, ref!EventObject) Events
8583 map!(VkQueryPool, ref!QueryPoolObject) QueryPools
8584 map!(VkFramebuffer, ref!FramebufferObject) Framebuffers
8585 map!(VkRenderPass, ref!RenderPassObject) RenderPasses
8586 map!(VkPipelineCache, ref!PipelineCacheObject) PipelineCaches
Jesse Hall3fbc8562015-11-29 22:10:52 -08008587 map!(VkCommandPool, ref!CommandPoolObject) CommandPools
Jesse Hall1356b0d2015-11-23 17:24:58 -08008588 map!(VkSurfaceKHR, ref!SurfaceObject) Surfaces
Michael Lentine88594d72015-11-12 12:49:45 -08008589 map!(VkSwapchainKHR, ref!SwapchainObject) Swapchains
Jesse Halld27f6aa2015-08-15 17:58:48 -07008590}
8591
8592@internal class InstanceObject {
8593}
8594
8595@internal class PhysicalDeviceObject {
8596 VkInstance instance
8597}
8598
8599@internal class DeviceObject {
8600 VkPhysicalDevice physicalDevice
8601}
8602
8603@internal class QueueObject {
8604 VkDevice device
8605 VkQueueFlags flags
8606}
8607
Jesse Hall3fbc8562015-11-29 22:10:52 -08008608@internal class CommandBufferObject {
Jesse Halld27f6aa2015-08-15 17:58:48 -07008609 VkDevice device
8610 map!(u64, VkDeviceMemory) boundObjects
8611 VkQueueFlags queueFlags
8612}
8613
8614@internal class DeviceMemoryObject {
Jesse Hall3fbc8562015-11-29 22:10:52 -08008615 VkDevice device
8616 VkDeviceSize allocationSize
8617 map!(u64, VkDeviceSize) boundObjects
8618 map!(VkCommandBuffer, VkCommandBuffer) boundCommandBuffers
Jesse Halld27f6aa2015-08-15 17:58:48 -07008619}
8620
8621@internal class BufferObject {
8622 VkDevice device
Jesse Hall3fbc8562015-11-29 22:10:52 -08008623 VkDeviceMemory memory
8624 VkDeviceSize memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07008625}
8626
8627@internal class BufferViewObject {
8628 VkDevice device
8629 VkBuffer buffer
8630}
8631
8632@internal class ImageObject {
8633 VkDevice device
Jesse Hall3fbc8562015-11-29 22:10:52 -08008634 VkDeviceMemory memory
8635 VkDeviceSize memoryOffset
Jesse Halld27f6aa2015-08-15 17:58:48 -07008636}
8637
8638@internal class ImageViewObject {
8639 VkDevice device
8640 VkImage image
8641}
8642
Jesse Halld27f6aa2015-08-15 17:58:48 -07008643@internal class ShaderObject {
8644 VkDevice device
8645}
8646
8647@internal class ShaderModuleObject {
8648 VkDevice device
8649}
8650
8651@internal class PipelineObject {
8652 VkDevice device
8653}
8654
8655@internal class PipelineLayoutObject {
8656 VkDevice device
8657}
8658
8659@internal class SamplerObject {
8660 VkDevice device
8661}
8662
8663@internal class DescriptorSetObject {
8664 VkDevice device
8665}
8666
8667@internal class DescriptorSetLayoutObject {
8668 VkDevice device
8669}
8670
8671@internal class DescriptorPoolObject {
8672 VkDevice device
8673}
8674
Jesse Halld27f6aa2015-08-15 17:58:48 -07008675@internal class FenceObject {
8676 VkDevice device
8677 bool signaled
8678}
8679
8680@internal class SemaphoreObject {
8681 VkDevice device
8682}
8683
8684@internal class EventObject {
8685 VkDevice device
8686}
8687
8688@internal class QueryPoolObject {
8689 VkDevice device
8690}
8691
8692@internal class FramebufferObject {
8693 VkDevice device
8694}
8695
8696@internal class RenderPassObject {
8697 VkDevice device
8698}
8699
8700@internal class PipelineCacheObject {
8701 VkDevice device
8702}
8703
Jesse Hall3fbc8562015-11-29 22:10:52 -08008704@internal class CommandPoolObject {
Jesse Halld27f6aa2015-08-15 17:58:48 -07008705 VkDevice device
8706}
8707
Jesse Hall1356b0d2015-11-23 17:24:58 -08008708@internal class SurfaceObject {
8709 VkInstance instance
8710}
8711
Michael Lentine88594d72015-11-12 12:49:45 -08008712@internal class SwapchainObject {
8713 VkDevice device
8714}
8715
Jesse Halld27f6aa2015-08-15 17:58:48 -07008716macro ref!InstanceObject GetInstance(VkInstance instance) {
8717 assert(instance in State.Instances)
8718 return State.Instances[instance]
8719}
8720
8721macro ref!PhysicalDeviceObject GetPhysicalDevice(VkPhysicalDevice physicalDevice) {
8722 assert(physicalDevice in State.PhysicalDevices)
8723 return State.PhysicalDevices[physicalDevice]
8724}
8725
8726macro ref!DeviceObject GetDevice(VkDevice device) {
8727 assert(device in State.Devices)
8728 return State.Devices[device]
8729}
8730
8731macro ref!QueueObject GetQueue(VkQueue queue) {
8732 assert(queue in State.Queues)
8733 return State.Queues[queue]
8734}
8735
Jesse Hall3fbc8562015-11-29 22:10:52 -08008736macro ref!CommandBufferObject GetCommandBuffer(VkCommandBuffer commandBuffer) {
8737 assert(commandBuffer in State.CommandBuffers)
8738 return State.CommandBuffers[commandBuffer]
Jesse Halld27f6aa2015-08-15 17:58:48 -07008739}
8740
Jesse Hall3fbc8562015-11-29 22:10:52 -08008741macro ref!DeviceMemoryObject GetDeviceMemory(VkDeviceMemory memory) {
8742 assert(memory in State.DeviceMemories)
8743 return State.DeviceMemories[memory]
Jesse Halld27f6aa2015-08-15 17:58:48 -07008744}
8745
8746macro ref!BufferObject GetBuffer(VkBuffer buffer) {
8747 assert(buffer in State.Buffers)
8748 return State.Buffers[buffer]
8749}
8750
8751macro ref!BufferViewObject GetBufferView(VkBufferView bufferView) {
8752 assert(bufferView in State.BufferViews)
8753 return State.BufferViews[bufferView]
8754}
8755
8756macro ref!ImageObject GetImage(VkImage image) {
8757 assert(image in State.Images)
8758 return State.Images[image]
8759}
8760
8761macro ref!ImageViewObject GetImageView(VkImageView imageView) {
8762 assert(imageView in State.ImageViews)
8763 return State.ImageViews[imageView]
8764}
8765
Jesse Halld27f6aa2015-08-15 17:58:48 -07008766macro ref!ShaderModuleObject GetShaderModule(VkShaderModule shaderModule) {
8767 assert(shaderModule in State.ShaderModules)
8768 return State.ShaderModules[shaderModule]
8769}
8770
8771macro ref!PipelineObject GetPipeline(VkPipeline pipeline) {
8772 assert(pipeline in State.Pipelines)
8773 return State.Pipelines[pipeline]
8774}
8775
8776macro ref!PipelineLayoutObject GetPipelineLayout(VkPipelineLayout pipelineLayout) {
8777 assert(pipelineLayout in State.PipelineLayouts)
8778 return State.PipelineLayouts[pipelineLayout]
8779}
8780
8781macro ref!SamplerObject GetSampler(VkSampler sampler) {
8782 assert(sampler in State.Samplers)
8783 return State.Samplers[sampler]
8784}
8785
8786macro ref!DescriptorSetObject GetDescriptorSet(VkDescriptorSet descriptorSet) {
8787 assert(descriptorSet in State.DescriptorSets)
8788 return State.DescriptorSets[descriptorSet]
8789}
8790
8791macro ref!DescriptorSetLayoutObject GetDescriptorSetLayout(VkDescriptorSetLayout descriptorSetLayout) {
8792 assert(descriptorSetLayout in State.DescriptorSetLayouts)
8793 return State.DescriptorSetLayouts[descriptorSetLayout]
8794}
8795
8796macro ref!DescriptorPoolObject GetDescriptorPool(VkDescriptorPool descriptorPool) {
8797 assert(descriptorPool in State.DescriptorPools)
8798 return State.DescriptorPools[descriptorPool]
8799}
8800
Jesse Halld27f6aa2015-08-15 17:58:48 -07008801macro ref!FenceObject GetFence(VkFence fence) {
8802 assert(fence in State.Fences)
8803 return State.Fences[fence]
8804}
8805
8806macro ref!SemaphoreObject GetSemaphore(VkSemaphore semaphore) {
8807 assert(semaphore in State.Semaphores)
8808 return State.Semaphores[semaphore]
8809}
8810
8811macro ref!EventObject GetEvent(VkEvent event) {
8812 assert(event in State.Events)
8813 return State.Events[event]
8814}
8815
8816macro ref!QueryPoolObject GetQueryPool(VkQueryPool queryPool) {
8817 assert(queryPool in State.QueryPools)
8818 return State.QueryPools[queryPool]
8819}
8820
8821macro ref!FramebufferObject GetFramebuffer(VkFramebuffer framebuffer) {
8822 assert(framebuffer in State.Framebuffers)
8823 return State.Framebuffers[framebuffer]
8824}
8825
8826macro ref!RenderPassObject GetRenderPass(VkRenderPass renderPass) {
8827 assert(renderPass in State.RenderPasses)
8828 return State.RenderPasses[renderPass]
8829}
8830
8831macro ref!PipelineCacheObject GetPipelineCache(VkPipelineCache pipelineCache) {
8832 assert(pipelineCache in State.PipelineCaches)
8833 return State.PipelineCaches[pipelineCache]
8834}
8835
Jesse Hall3fbc8562015-11-29 22:10:52 -08008836macro ref!CommandPoolObject GetCommandPool(VkCommandPool commandPool) {
8837 assert(commandPool in State.CommandPools)
8838 return State.CommandPools[commandPool]
Jesse Hallf09c6b12015-08-15 19:54:28 -07008839}
Michael Lentine88594d72015-11-12 12:49:45 -08008840
Jesse Hall1356b0d2015-11-23 17:24:58 -08008841macro ref!SurfaceObject GetSurface(VkSurfaceKHR surface) {
8842 assert(surface in State.Surfaces)
8843 return State.Surfaces[surface]
8844}
8845
Michael Lentine88594d72015-11-12 12:49:45 -08008846macro ref!SwapchainObject GetSwapchain(VkSwapchainKHR swapchain) {
8847 assert(swapchain in State.Swapchains)
8848 return State.Swapchains[swapchain]
8849}
Jesse Halld8bade02015-11-24 10:24:18 -08008850
8851macro VkQueueFlags AddQueueFlag(VkQueueFlags flags, VkQueueFlagBits bit) {
8852 return as!VkQueueFlags(as!u32(flags) | as!u32(bit))
8853}