1// 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) 29define VERSION_MAJOR 1 30define VERSION_MINOR 0 31define VERSION_PATCH 46 32 33// API limits 34define 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. 40define VK_MAX_DEVICE_GROUP_SIZE_KHX 32 41define VK_LUID_SIZE_KHX 8 42define VK_QUEUE_FAMILY_EXTERNAL_KHX -2 43 44// API keywords 45define VK_TRUE 1 46define VK_FALSE 0 47 48// API keyword, but needs special handling by some templates 49define NULL_HANDLE 0 50 51// 1 52@extension("VK_KHR_surface") define VK_KHR_SURFACE_SPEC_VERSION 25 53@extension("VK_KHR_surface") define VK_KHR_SURFACE_EXTENSION_NAME "VK_KHR_surface" 54 55// 2 56@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_SPEC_VERSION 68 57@extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_EXTENSION_NAME "VK_KHR_swapchain" 58 59// 3 60@extension("VK_KHR_display") define VK_KHR_DISPLAY_SPEC_VERSION 21 61@extension("VK_KHR_display") define VK_KHR_DISPLAY_EXTENSION_NAME "VK_KHR_display" 62 63// 4 64@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION 9 65@extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME "VK_KHR_display_swapchain" 66 67// 5 68@extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_SPEC_VERSION 6 69@extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_NAME "VK_KHR_xlib_surface" 70 71// 6 72@extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_SPEC_VERSION 6 73@extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_NAME "VK_KHR_xcb_surface" 74 75// 7 76@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6 77@extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_NAME "VK_KHR_wayland_surface" 78 79// 8 80@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_SPEC_VERSION 4 81@extension("VK_KHR_mir_surface") define VK_KHR_MIR_SURFACE_NAME "VK_KHR_mir_surface" 82 83// 9 84@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6 85@extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_NAME "VK_KHR_android_surface" 86 87// 10 88@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_SPEC_VERSION 5 89@extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_NAME "VK_KHR_win32_surface" 90 91// 11 92@extension("VK_ANDROID_native_buffer") define VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION 7 93@extension("VK_ANDROID_native_buffer") define VK_ANDROID_NATIVE_BUFFER_NAME "VK_ANDROID_native_buffer" 94 95// 12 96@extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_SPEC_VERSION 6 97@extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_NAME "VK_EXT_debug_report" 98 99// 13 100@extension("VK_NV_glsl_shader") define VK_NV_GLSL_SHADER_SPEC_VERSION 1 101@extension("VK_NV_glsl_shader") define VK_NV_GLSL_SHADER_NAME "VK_NV_glsl_shader" 102 103// 15 104@extension("VK_KHR_sampler_mirror_clamp_to_edge") define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION 1 105@extension("VK_KHR_sampler_mirror_clamp_to_edge") define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_NAME "VK_KHR_sampler_mirror_clamp_to_edge" 106 107// 16 108@extension("VK_IMG_filter_cubic") define VK_IMG_FILTER_CUBIC_SPEC_VERSION 1 109@extension("VK_IMG_filter_cubic") define VK_IMG_FILTER_CUBIC_NAME "VK_IMG_filter_cubic" 110 111// 19 112@extension("VK_AMD_rasterization_order") define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1 113@extension("VK_AMD_rasterization_order") define VK_AMD_RASTERIZATION_ORDER_NAME "VK_AMD_rasterization_order" 114 115// 21 116@extension("VK_AMD_shader_trinary_minmax") define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1 117@extension("VK_AMD_shader_trinary_minmax") define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax" 118 119// 22 120@extension("VK_AMD_shader_explicit_vertex_parameter") define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1 121@extension("VK_AMD_shader_explicit_vertex_parameter") define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter" 122 123// 23 124@extension("VK_EXT_debug_marker") define VK_EXT_DEBUG_MARKER_SPEC_VERSION 4 125@extension("VK_EXT_debug_marker") define VK_EXT_DEBUG_MARKER_NAME "VK_EXT_debug_marker" 126 127// 26 128@extension("VK_AMD_gcn_shader") define VK_AMD_GCN_SHADER_SPEC_VERSION 1 129@extension("VK_AMD_gcn_shader") define VK_AMD_GCN_SHADER_EXTENSION_NAME "VK_AMD_gcn_shader" 130 131// 27 132@extension("VK_NV_dedicated_allocation") define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1 133@extension("VK_NV_dedicated_allocation") define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation" 134 135// 28 136@extension("VK_IMG_format_pvrtc") define VK_IMG_FORMAT_PVRTC_SPEC_VERSION 1 137@extension("VK_IMG_format_pvrtc") define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc" 138 139// 34 140@extension("VK_AMD_draw_indirect_count") define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1 141@extension("VK_AMD_draw_indirect_count") define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count" 142 143// 36 144@extension("VK_AMD_negative_viewport_height") define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1 145@extension("VK_AMD_negative_viewport_height") define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height" 146 147// 37 148@extension("VK_AMD_gpu_shader_half_float") define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 1 149@extension("VK_AMD_gpu_shader_half_float") define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float" 150 151// 38 152@extension("VK_AMD_shader_ballot") define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1 153@extension("VK_AMD_shader_ballot") define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot" 154 155// 54 156@extension("VK_KHX_multiview") define VK_KHX_MULTIVIEW_SPEC_VERSION 1 157@extension("VK_KHX_multiview") define VK_KHX_MULTIVIEW_EXTENSION_NAME "VK_KHX_multiview" 158 159// 56 160@extension("VK_NV_external_memory_capabilities") define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1 161@extension("VK_NV_external_memory_capabilities") define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities" 162 163// 57 164@extension("VK_NV_external_memory") define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1 165@extension("VK_NV_external_memory") define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory" 166 167// 58 168@extension("VK_NV_external_memory_win32") define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1 169@extension("VK_NV_external_memory_win32") define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32" 170 171// 59 172@extension("VK_NV_win32_keyed_mutex") define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 1 173@extension("VK_NV_win32_keyed_mutex") define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex" 174 175// 60 176@extension("VK_KHR_get_physical_device_properties2") define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 1 177@extension("VK_KHR_get_physical_device_properties2") define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2" 178 179// 61 180@extension("VK_KHX_device_group") define VK_KHX_DEVICE_GROUP_SPEC_VERSION 1 181@extension("VK_KHX_device_group") define VK_KHX_DEVICE_GROUP_EXTENSION_NAME "VK_KHX_device_group" 182 183// 62 184@extension("VK_EXT_validation_flags") define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 1 185@extension("VK_EXT_validation_flags") define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags" 186 187// 63 188@extension("VK_NN_vi_surface") define VK_NN_VI_SURFACE_SPEC_VERSION 1 189@extension("VK_NN_vi_surface") define VK_NN_VI_SURFACE_EXTENSION_NAME "VK_NN_vi_surface" 190 191// 64 192@extension("VK_KHR_shader_draw_parameters") define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1 193@extension("VK_KHR_shader_draw_parameters") define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters" 194 195// 65 196@extension("VK_EXT_shader_subgroup_ballot") define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1 197@extension("VK_EXT_shader_subgroup_ballot") define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot" 198 199// 66 200@extension("VK_EXT_shader_subgroup_vote") define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1 201@extension("VK_EXT_shader_subgroup_vote") define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote" 202 203// 70 204@extension("VK_KHR_maintenance1") define VK_KHR_MAINTENANCE1_SPEC_VERSION 1 205@extension("VK_KHR_maintenance1") define VK_KHR_MAINTENANCE1_EXTENSION_NAME "VK_KHR_maintenance1" 206 207// 71 208@extension("VK_KHX_device_group_creation") define VK_KHX_DEVICE_GROUP_CREATION_SPEC_VERSION 1 209@extension("VK_KHX_device_group_creation") define VK_KHX_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHX_device_group_creation" 210 211// 72 212@extension("VK_KHX_external_memory_capabilities") define VK_KHX_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1 213@extension("VK_KHX_external_memory_capabilities") define VK_KHX_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHX_external_memory_capabilities" 214 215// 73 216@extension("VK_KHX_external_memory") define VK_KHX_EXTERNAL_MEMORY_SPEC_VERSION 1 217@extension("VK_KHX_external_memory") define VK_KHX_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHX_external_memory" 218 219// 74 220@extension("VK_KHX_external_memory_win32") define VK_KHX_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1 221@extension("VK_KHX_external_memory_win32") define VK_KHX_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHX_external_memory_win32" 222 223// 75 224@extension("VK_KHX_external_memory_fd") define VK_KHX_EXTERNAL_MEMORY_FD_SPEC_VERSION 1 225@extension("VK_KHX_external_memory_fd") define VK_KHX_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHX_external_memory_fd" 226 227// 76 228@extension("VK_KHX_win32_keyed_mutex") define VK_KHX_WIN32_KEYED_MUTEX_SPEC_VERSION 1 229@extension("VK_KHX_win32_keyed_mutex") define VK_KHX_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHX_win32_keyed_mutex" 230 231// 77 232@extension("VK_KHX_external_semaphore_capabilities") define VK_KHX_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1 233@extension("VK_KHX_external_semaphore_capabilities") define VK_KHX_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHX_external_semaphore_capabilities" 234 235// 78 236@extension("VK_KHX_external_semaphore") define VK_KHX_EXTERNAL_SEMAPHORE_SPEC_VERSION 1 237@extension("VK_KHX_external_semaphore") define VK_KHX_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHX_external_semaphore" 238 239// 79 240@extension("VK_KHX_external_semaphore_win32") define VK_KHX_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1 241@extension("VK_KHX_external_semaphore_win32") define VK_KHX_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHX_external_semaphore_win32" 242 243// 80 244@extension("VK_KHX_external_semaphore_fd") define VK_KHX_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1 245@extension("VK_KHX_external_semaphore_fd") define VK_KHX_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHX_external_semaphore_fd" 246 247// 81 248@extension("VK_KHR_push_descriptor") define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 1 249@extension("VK_KHR_push_descriptor") define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor" 250 251// 85 252@extension("VK_KHR_incremental_present") define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1 253@extension("VK_KHR_incremental_present") define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present" 254 255// 86 256@extension("VK_KHR_descriptor_update_template") define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1 257@extension("VK_KHR_descriptor_update_template") define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template" 258 259// 87 260@extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 1 261@extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands" 262 263// 88 264@extension("VK_NV_clip_space_w_scaling") define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1 265@extension("VK_NV_clip_space_w_scaling") define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling" 266 267// 89 268@extension("VK_EXT_direct_mode_display") define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1 269@extension("VK_EXT_direct_mode_display") define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display" 270 271// 90 272@extension("VK_EXT_acquire_xlib_display") define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1 273@extension("VK_EXT_acquire_xlib_display") define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display" 274 275// 91 276@extension("VK_EXT_display_surface_counter") define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1 277@extension("VK_EXT_display_surface_counter") define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter" 278 279// 92 280@extension("VK_EXT_display_control") define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1 281@extension("VK_EXT_display_control") define VK_EXT_DISPLAY_CONTROL_COUNTER_EXTENSION_NAME "VK_EXT_display_control" 282 283// 93 284@extension("VK_GOOGLE_display_timing") define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1 285@extension("VK_GOOGLE_display_timing") define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing" 286 287// 95 288@extension("VK_NV_sample_mask_override_coverage") define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1 289@extension("VK_NV_sample_mask_override_coverage") define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage" 290 291// 96 292@extension("VK_NV_geometry_shader_passthrough") define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1 293@extension("VK_NV_geometry_shader_passthrough") define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough" 294 295// 97 296@extension("VK_NV_viewport_array2") define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION 1 297@extension("VK_NV_viewport_array2") define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME "VK_NV_viewport_array2" 298 299// 98 300@extension("VK_NVX_multiview_per_view_attributes") define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1 301@extension("VK_NVX_multiview_per_view_attributes") define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes" 302 303// 99 304@extension("VK_NV_viewport_swizzle") define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1 305@extension("VK_NV_viewport_swizzle") define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle" 306 307// 100 308@extension("VK_EXT_discard_rectangles") define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1 309@extension("VK_EXT_discard_rectangles") define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles" 310 311// 105 312@extension("VK_EXT_swapchain_colorspace") define VK_EXT_SWAPCHAIN_COLORSPACE_SPEC_VERSION 2 313@extension("VK_EXT_swapchain_colorspace") define VK_EXT_SWAPCHAIN_COLORSPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace" 314 315// 106 316@extension("VK_EXT_hdr_metadata") define VK_EXT_HDR_METADATA_SPEC_VERSION 1 317@extension("VK_EXT_hdr_metadata") define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata" 318 319// 112 320@extension("VK_KHR_shared_presentable_image") define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1 321@extension("VK_KHR_shared_presentable_image") define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image" 322 323// 119 324@extension("VK_KHR_get_surface_capabilities2") define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1 325@extension("VK_KHR_get_surface_capabilities2") define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2" 326 327// 123 328@extension("VK_MVK_ios_surface") define VK_MVK_IOS_SURFACE_SPEC_VERSION 1 329@extension("VK_MVK_ios_surface") define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface" 330 331// 124 332@extension("VK_MVK_macos_surface") define VK_MVK_MACOS_SURFACE_SPEC_VERSION 1 333@extension("VK_MVK_macos_surface") define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface" 334 335///////////// 336// Types // 337///////////// 338 339type u32 VkBool32 340type u32 VkFlags 341type u64 VkDeviceSize 342type u32 VkSampleMask 343 344/// Dispatchable handle types. 345@dispatchHandle type u64 VkInstance 346@dispatchHandle type u64 VkPhysicalDevice 347@dispatchHandle type u64 VkDevice 348@dispatchHandle type u64 VkQueue 349@dispatchHandle type u64 VkCommandBuffer 350 351/// Non dispatchable handle types. 352@nonDispatchHandle type u64 VkDeviceMemory 353@nonDispatchHandle type u64 VkCommandPool 354@nonDispatchHandle type u64 VkBuffer 355@nonDispatchHandle type u64 VkBufferView 356@nonDispatchHandle type u64 VkImage 357@nonDispatchHandle type u64 VkImageView 358@nonDispatchHandle type u64 VkShaderModule 359@nonDispatchHandle type u64 VkPipeline 360@nonDispatchHandle type u64 VkPipelineLayout 361@nonDispatchHandle type u64 VkSampler 362@nonDispatchHandle type u64 VkDescriptorSet 363@nonDispatchHandle type u64 VkDescriptorSetLayout 364@nonDispatchHandle type u64 VkDescriptorPool 365@nonDispatchHandle type u64 VkFence 366@nonDispatchHandle type u64 VkSemaphore 367@nonDispatchHandle type u64 VkEvent 368@nonDispatchHandle type u64 VkQueryPool 369@nonDispatchHandle type u64 VkFramebuffer 370@nonDispatchHandle type u64 VkRenderPass 371@nonDispatchHandle type u64 VkPipelineCache 372 373// 1 374@extension("VK_KHR_surface") @nonDispatchHandle type u64 VkSurfaceKHR 375 376// 2 377@extension("VK_KHR_swapchain") @nonDispatchHandle type u64 VkSwapchainKHR 378 379// 3 380@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayKHR 381@extension("VK_KHR_display") @nonDispatchHandle type u64 VkDisplayModeKHR 382 383// 12 384@extension("VK_EXT_debug_report") @nonDispatchHandle type u64 VkDebugReportCallbackEXT 385 386// 86 387@extension("VK_KHR_descriptor_update_template") @nonDispatchHandle type u64 VkDescriptorUpdateTemplateKHR 388 389// 87 390@extension("VK_NVX_device_generated_commands") @nonDispatchHandle type u64 VkObjectTableNVX 391@extension("VK_NVX_device_generated_commands") @nonDispatchHandle type u64 VkIndirectCommandsLayoutNVX 392 393 394///////////// 395// Enums // 396///////////// 397 398enum VkImageLayout { 399 VK_IMAGE_LAYOUT_UNDEFINED = 0x00000000, /// Implicit layout an image is when its contents are undefined due to various reasons (e.g. right after creation) 400 VK_IMAGE_LAYOUT_GENERAL = 0x00000001, /// General layout when image can be used for any kind of access 401 VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL = 0x00000002, /// Optimal layout when image is only used for color attachment read/write 402 VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL = 0x00000003, /// Optimal layout when image is only used for depth/stencil attachment read/write 403 VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL = 0x00000004, /// Optimal layout when image is used for read only depth/stencil attachment and shader access 404 VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL = 0x00000005, /// Optimal layout when image is used for read only shader access 405 VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL = 0x00000006, /// Optimal layout when image is used only as source of transfer operations 406 VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL = 0x00000007, /// Optimal layout when image is used only as destination of transfer operations 407 VK_IMAGE_LAYOUT_PREINITIALIZED = 0x00000008, /// Initial layout used when the data is populated by the CPU 408 409 //@extension("VK_KHR_swapchain") // 2 410 VK_IMAGE_LAYOUT_PRESENT_SRC_KHR = 1000001002, 411 412 //@extension("VK_KHR_shared_presentable_image") 413 VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000, 414} 415 416enum VkAttachmentLoadOp { 417 VK_ATTACHMENT_LOAD_OP_LOAD = 0x00000000, 418 VK_ATTACHMENT_LOAD_OP_CLEAR = 0x00000001, 419 VK_ATTACHMENT_LOAD_OP_DONT_CARE = 0x00000002, 420} 421 422enum VkAttachmentStoreOp { 423 VK_ATTACHMENT_STORE_OP_STORE = 0x00000000, 424 VK_ATTACHMENT_STORE_OP_DONT_CARE = 0x00000001, 425} 426 427enum VkImageType { 428 VK_IMAGE_TYPE_1D = 0x00000000, 429 VK_IMAGE_TYPE_2D = 0x00000001, 430 VK_IMAGE_TYPE_3D = 0x00000002, 431} 432 433enum VkImageTiling { 434 VK_IMAGE_TILING_OPTIMAL = 0x00000000, 435 VK_IMAGE_TILING_LINEAR = 0x00000001, 436} 437 438enum VkImageViewType { 439 VK_IMAGE_VIEW_TYPE_1D = 0x00000000, 440 VK_IMAGE_VIEW_TYPE_2D = 0x00000001, 441 VK_IMAGE_VIEW_TYPE_3D = 0x00000002, 442 VK_IMAGE_VIEW_TYPE_CUBE = 0x00000003, 443 VK_IMAGE_VIEW_TYPE_1D_ARRAY = 0x00000004, 444 VK_IMAGE_VIEW_TYPE_2D_ARRAY = 0x00000005, 445 VK_IMAGE_VIEW_TYPE_CUBE_ARRAY = 0x00000006, 446} 447 448enum VkCommandBufferLevel { 449 VK_COMMAND_BUFFER_LEVEL_PRIMARY = 0x00000000, 450 VK_COMMAND_BUFFER_LEVEL_SECONDARY = 0x00000001, 451} 452 453enum VkComponentSwizzle { 454 VK_COMPONENT_SWIZZLE_IDENTITY = 0x00000000, 455 VK_COMPONENT_SWIZZLE_ZERO = 0x00000001, 456 VK_COMPONENT_SWIZZLE_ONE = 0x00000002, 457 VK_COMPONENT_SWIZZLE_R = 0x00000003, 458 VK_COMPONENT_SWIZZLE_G = 0x00000004, 459 VK_COMPONENT_SWIZZLE_B = 0x00000005, 460 VK_COMPONENT_SWIZZLE_A = 0x00000006, 461} 462 463enum VkDescriptorType { 464 VK_DESCRIPTOR_TYPE_SAMPLER = 0x00000000, 465 VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER = 0x00000001, 466 VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE = 0x00000002, 467 VK_DESCRIPTOR_TYPE_STORAGE_IMAGE = 0x00000003, 468 VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER = 0x00000004, 469 VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER = 0x00000005, 470 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER = 0x00000006, 471 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER = 0x00000007, 472 VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC = 0x00000008, 473 VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC = 0x00000009, 474 VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT = 0x0000000a, 475} 476 477enum VkQueryType { 478 VK_QUERY_TYPE_OCCLUSION = 0x00000000, 479 VK_QUERY_TYPE_PIPELINE_STATISTICS = 0x00000001, /// Optional 480 VK_QUERY_TYPE_TIMESTAMP = 0x00000002, 481} 482 483enum VkBorderColor { 484 VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK = 0x00000000, 485 VK_BORDER_COLOR_INT_TRANSPARENT_BLACK = 0x00000001, 486 VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK = 0x00000002, 487 VK_BORDER_COLOR_INT_OPAQUE_BLACK = 0x00000003, 488 VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE = 0x00000004, 489 VK_BORDER_COLOR_INT_OPAQUE_WHITE = 0x00000005, 490} 491 492enum VkPipelineBindPoint { 493 VK_PIPELINE_BIND_POINT_GRAPHICS = 0x00000000, 494 VK_PIPELINE_BIND_POINT_COMPUTE = 0x00000001, 495} 496 497enum VkPrimitiveTopology { 498 VK_PRIMITIVE_TOPOLOGY_POINT_LIST = 0x00000000, 499 VK_PRIMITIVE_TOPOLOGY_LINE_LIST = 0x00000001, 500 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP = 0x00000002, 501 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST = 0x00000003, 502 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP = 0x00000004, 503 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN = 0x00000005, 504 VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY = 0x00000006, 505 VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY = 0x00000007, 506 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY = 0x00000008, 507 VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY = 0x00000009, 508 VK_PRIMITIVE_TOPOLOGY_PATCH_LIST = 0x0000000a, 509} 510 511enum VkSharingMode { 512 VK_SHARING_MODE_EXCLUSIVE = 0x00000000, 513 VK_SHARING_MODE_CONCURRENT = 0x00000001, 514} 515 516enum VkIndexType { 517 VK_INDEX_TYPE_UINT16 = 0x00000000, 518 VK_INDEX_TYPE_UINT32 = 0x00000001, 519} 520 521enum VkFilter { 522 VK_FILTER_NEAREST = 0x00000000, 523 VK_FILTER_LINEAR = 0x00000001, 524 525 //@extension("VK_IMG_filter_cubic") // 16 526 VK_FILTER_CUBIC_IMG = 1000015000, 527} 528 529enum VkSamplerMipmapMode { 530 VK_SAMPLER_MIPMAP_MODE_NEAREST = 0x00000001, /// Choose nearest mip level 531 VK_SAMPLER_MIPMAP_MODE_LINEAR = 0x00000002, /// Linear filter between mip levels 532} 533 534enum VkSamplerAddressMode { 535 VK_SAMPLER_ADDRESS_MODE_REPEAT = 0x00000000, 536 VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT = 0x00000001, 537 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE = 0x00000002, 538 VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER = 0x00000003, 539 VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE = 0x00000004, 540} 541 542enum VkCompareOp { 543 VK_COMPARE_OP_NEVER = 0x00000000, 544 VK_COMPARE_OP_LESS = 0x00000001, 545 VK_COMPARE_OP_EQUAL = 0x00000002, 546 VK_COMPARE_OP_LESS_OR_EQUAL = 0x00000003, 547 VK_COMPARE_OP_GREATER = 0x00000004, 548 VK_COMPARE_OP_NOT_EQUAL = 0x00000005, 549 VK_COMPARE_OP_GREATER_OR_EQUAL = 0x00000006, 550 VK_COMPARE_OP_ALWAYS = 0x00000007, 551} 552 553enum VkPolygonMode { 554 VK_POLYGON_MODE_FILL = 0x00000000, 555 VK_POLYGON_MODE_LINE = 0x00000001, 556 VK_POLYGON_MODE_POINT = 0x00000002, 557} 558 559enum VkFrontFace { 560 VK_FRONT_FACE_COUNTER_CLOCKWISE = 0x00000000, 561 VK_FRONT_FACE_CLOCKWISE = 0x00000001, 562} 563 564enum VkBlendFactor { 565 VK_BLEND_FACTOR_ZERO = 0x00000000, 566 VK_BLEND_FACTOR_ONE = 0x00000001, 567 VK_BLEND_FACTOR_SRC_COLOR = 0x00000002, 568 VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR = 0x00000003, 569 VK_BLEND_FACTOR_DST_COLOR = 0x00000004, 570 VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR = 0x00000005, 571 VK_BLEND_FACTOR_SRC_ALPHA = 0x00000006, 572 VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA = 0x00000007, 573 VK_BLEND_FACTOR_DST_ALPHA = 0x00000008, 574 VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA = 0x00000009, 575 VK_BLEND_FACTOR_CONSTANT_COLOR = 0x0000000a, 576 VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR = 0x0000000b, 577 VK_BLEND_FACTOR_CONSTANT_ALPHA = 0x0000000c, 578 VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA = 0x0000000d, 579 VK_BLEND_FACTOR_SRC_ALPHA_SATURATE = 0x0000000e, 580 VK_BLEND_FACTOR_SRC1_COLOR = 0x0000000f, 581 VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR = 0x00000010, 582 VK_BLEND_FACTOR_SRC1_ALPHA = 0x00000011, 583 VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA = 0x00000012, 584} 585 586enum VkBlendOp { 587 VK_BLEND_OP_ADD = 0x00000000, 588 VK_BLEND_OP_SUBTRACT = 0x00000001, 589 VK_BLEND_OP_REVERSE_SUBTRACT = 0x00000002, 590 VK_BLEND_OP_MIN = 0x00000003, 591 VK_BLEND_OP_MAX = 0x00000004, 592} 593 594enum VkStencilOp { 595 VK_STENCIL_OP_KEEP = 0x00000000, 596 VK_STENCIL_OP_ZERO = 0x00000001, 597 VK_STENCIL_OP_REPLACE = 0x00000002, 598 VK_STENCIL_OP_INCREMENT_AND_CLAMP = 0x00000003, 599 VK_STENCIL_OP_DECREMENT_AND_CLAMP = 0x00000004, 600 VK_STENCIL_OP_INVERT = 0x00000005, 601 VK_STENCIL_OP_INCREMENT_AND_WRAP = 0x00000006, 602 VK_STENCIL_OP_DECREMENT_AND_WRAP = 0x00000007, 603} 604 605enum VkLogicOp { 606 VK_LOGIC_OP_CLEAR = 0x00000000, 607 VK_LOGIC_OP_AND = 0x00000001, 608 VK_LOGIC_OP_AND_REVERSE = 0x00000002, 609 VK_LOGIC_OP_COPY = 0x00000003, 610 VK_LOGIC_OP_AND_INVERTED = 0x00000004, 611 VK_LOGIC_OP_NO_OP = 0x00000005, 612 VK_LOGIC_OP_XOR = 0x00000006, 613 VK_LOGIC_OP_OR = 0x00000007, 614 VK_LOGIC_OP_NOR = 0x00000008, 615 VK_LOGIC_OP_EQUIVALENT = 0x00000009, 616 VK_LOGIC_OP_INVERT = 0x0000000a, 617 VK_LOGIC_OP_OR_REVERSE = 0x0000000b, 618 VK_LOGIC_OP_COPY_INVERTED = 0x0000000c, 619 VK_LOGIC_OP_OR_INVERTED = 0x0000000d, 620 VK_LOGIC_OP_NAND = 0x0000000e, 621 VK_LOGIC_OP_SET = 0x0000000f, 622} 623 624enum VkSystemAllocationScope { 625 VK_SYSTEM_ALLOCATION_SCOPE_COMMAND = 0x00000000, 626 VK_SYSTEM_ALLOCATION_SCOPE_OBJECT = 0x00000001, 627 VK_SYSTEM_ALLOCATION_SCOPE_CACHE = 0x00000002, 628 VK_SYSTEM_ALLOCATION_SCOPE_DEVICE = 0x00000003, 629 VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE = 0x00000004, 630} 631 632enum VkInternalAllocationType { 633 VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE = 0x00000000, 634} 635 636enum VkPhysicalDeviceType { 637 VK_PHYSICAL_DEVICE_TYPE_OTHER = 0x00000000, 638 VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU = 0x00000001, 639 VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU = 0x00000002, 640 VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU = 0x00000003, 641 VK_PHYSICAL_DEVICE_TYPE_CPU = 0x00000004, 642} 643 644enum VkVertexInputRate { 645 VK_VERTEX_INPUT_RATE_VERTEX = 0x00000000, 646 VK_VERTEX_INPUT_RATE_INSTANCE = 0x00000001, 647} 648 649/// Vulkan format definitions 650enum VkFormat { 651 VK_FORMAT_UNDEFINED = 0, 652 VK_FORMAT_R4G4_UNORM_PACK8 = 1, 653 VK_FORMAT_R4G4B4A4_UNORM_PACK16 = 2, 654 VK_FORMAT_B4G4R4A4_UNORM_PACK16 = 3, 655 VK_FORMAT_R5G6B5_UNORM_PACK16 = 4, 656 VK_FORMAT_B5G6R5_UNORM_PACK16 = 5, 657 VK_FORMAT_R5G5B5A1_UNORM_PACK16 = 6, 658 VK_FORMAT_B5G5R5A1_UNORM_PACK16 = 7, 659 VK_FORMAT_A1R5G5B5_UNORM_PACK16 = 8, 660 VK_FORMAT_R8_UNORM = 9, 661 VK_FORMAT_R8_SNORM = 10, 662 VK_FORMAT_R8_USCALED = 11, 663 VK_FORMAT_R8_SSCALED = 12, 664 VK_FORMAT_R8_UINT = 13, 665 VK_FORMAT_R8_SINT = 14, 666 VK_FORMAT_R8_SRGB = 15, 667 VK_FORMAT_R8G8_UNORM = 16, 668 VK_FORMAT_R8G8_SNORM = 17, 669 VK_FORMAT_R8G8_USCALED = 18, 670 VK_FORMAT_R8G8_SSCALED = 19, 671 VK_FORMAT_R8G8_UINT = 20, 672 VK_FORMAT_R8G8_SINT = 21, 673 VK_FORMAT_R8G8_SRGB = 22, 674 VK_FORMAT_R8G8B8_UNORM = 23, 675 VK_FORMAT_R8G8B8_SNORM = 24, 676 VK_FORMAT_R8G8B8_USCALED = 25, 677 VK_FORMAT_R8G8B8_SSCALED = 26, 678 VK_FORMAT_R8G8B8_UINT = 27, 679 VK_FORMAT_R8G8B8_SINT = 28, 680 VK_FORMAT_R8G8B8_SRGB = 29, 681 VK_FORMAT_B8G8R8_UNORM = 30, 682 VK_FORMAT_B8G8R8_SNORM = 31, 683 VK_FORMAT_B8G8R8_USCALED = 32, 684 VK_FORMAT_B8G8R8_SSCALED = 33, 685 VK_FORMAT_B8G8R8_UINT = 34, 686 VK_FORMAT_B8G8R8_SINT = 35, 687 VK_FORMAT_B8G8R8_SRGB = 36, 688 VK_FORMAT_R8G8B8A8_UNORM = 37, 689 VK_FORMAT_R8G8B8A8_SNORM = 38, 690 VK_FORMAT_R8G8B8A8_USCALED = 39, 691 VK_FORMAT_R8G8B8A8_SSCALED = 40, 692 VK_FORMAT_R8G8B8A8_UINT = 41, 693 VK_FORMAT_R8G8B8A8_SINT = 42, 694 VK_FORMAT_R8G8B8A8_SRGB = 43, 695 VK_FORMAT_B8G8R8A8_UNORM = 44, 696 VK_FORMAT_B8G8R8A8_SNORM = 45, 697 VK_FORMAT_B8G8R8A8_USCALED = 46, 698 VK_FORMAT_B8G8R8A8_SSCALED = 47, 699 VK_FORMAT_B8G8R8A8_UINT = 48, 700 VK_FORMAT_B8G8R8A8_SINT = 49, 701 VK_FORMAT_B8G8R8A8_SRGB = 50, 702 VK_FORMAT_A8B8G8R8_UNORM_PACK32 = 51, 703 VK_FORMAT_A8B8G8R8_SNORM_PACK32 = 52, 704 VK_FORMAT_A8B8G8R8_USCALED_PACK32 = 53, 705 VK_FORMAT_A8B8G8R8_SSCALED_PACK32 = 54, 706 VK_FORMAT_A8B8G8R8_UINT_PACK32 = 55, 707 VK_FORMAT_A8B8G8R8_SINT_PACK32 = 56, 708 VK_FORMAT_A8B8G8R8_SRGB_PACK32 = 57, 709 VK_FORMAT_A2R10G10B10_UNORM_PACK32 = 58, 710 VK_FORMAT_A2R10G10B10_SNORM_PACK32 = 59, 711 VK_FORMAT_A2R10G10B10_USCALED_PACK32 = 60, 712 VK_FORMAT_A2R10G10B10_SSCALED_PACK32 = 61, 713 VK_FORMAT_A2R10G10B10_UINT_PACK32 = 62, 714 VK_FORMAT_A2R10G10B10_SINT_PACK32 = 63, 715 VK_FORMAT_A2B10G10R10_UNORM_PACK32 = 64, 716 VK_FORMAT_A2B10G10R10_SNORM_PACK32 = 65, 717 VK_FORMAT_A2B10G10R10_USCALED_PACK32 = 66, 718 VK_FORMAT_A2B10G10R10_SSCALED_PACK32 = 67, 719 VK_FORMAT_A2B10G10R10_UINT_PACK32 = 68, 720 VK_FORMAT_A2B10G10R10_SINT_PACK32 = 69, 721 VK_FORMAT_R16_UNORM = 70, 722 VK_FORMAT_R16_SNORM = 71, 723 VK_FORMAT_R16_USCALED = 72, 724 VK_FORMAT_R16_SSCALED = 73, 725 VK_FORMAT_R16_UINT = 74, 726 VK_FORMAT_R16_SINT = 75, 727 VK_FORMAT_R16_SFLOAT = 76, 728 VK_FORMAT_R16G16_UNORM = 77, 729 VK_FORMAT_R16G16_SNORM = 78, 730 VK_FORMAT_R16G16_USCALED = 79, 731 VK_FORMAT_R16G16_SSCALED = 80, 732 VK_FORMAT_R16G16_UINT = 81, 733 VK_FORMAT_R16G16_SINT = 82, 734 VK_FORMAT_R16G16_SFLOAT = 83, 735 VK_FORMAT_R16G16B16_UNORM = 84, 736 VK_FORMAT_R16G16B16_SNORM = 85, 737 VK_FORMAT_R16G16B16_USCALED = 86, 738 VK_FORMAT_R16G16B16_SSCALED = 87, 739 VK_FORMAT_R16G16B16_UINT = 88, 740 VK_FORMAT_R16G16B16_SINT = 89, 741 VK_FORMAT_R16G16B16_SFLOAT = 90, 742 VK_FORMAT_R16G16B16A16_UNORM = 91, 743 VK_FORMAT_R16G16B16A16_SNORM = 92, 744 VK_FORMAT_R16G16B16A16_USCALED = 93, 745 VK_FORMAT_R16G16B16A16_SSCALED = 94, 746 VK_FORMAT_R16G16B16A16_UINT = 95, 747 VK_FORMAT_R16G16B16A16_SINT = 96, 748 VK_FORMAT_R16G16B16A16_SFLOAT = 97, 749 VK_FORMAT_R32_UINT = 98, 750 VK_FORMAT_R32_SINT = 99, 751 VK_FORMAT_R32_SFLOAT = 100, 752 VK_FORMAT_R32G32_UINT = 101, 753 VK_FORMAT_R32G32_SINT = 102, 754 VK_FORMAT_R32G32_SFLOAT = 103, 755 VK_FORMAT_R32G32B32_UINT = 104, 756 VK_FORMAT_R32G32B32_SINT = 105, 757 VK_FORMAT_R32G32B32_SFLOAT = 106, 758 VK_FORMAT_R32G32B32A32_UINT = 107, 759 VK_FORMAT_R32G32B32A32_SINT = 108, 760 VK_FORMAT_R32G32B32A32_SFLOAT = 109, 761 VK_FORMAT_R64_UINT = 110, 762 VK_FORMAT_R64_SINT = 111, 763 VK_FORMAT_R64_SFLOAT = 112, 764 VK_FORMAT_R64G64_UINT = 113, 765 VK_FORMAT_R64G64_SINT = 114, 766 VK_FORMAT_R64G64_SFLOAT = 115, 767 VK_FORMAT_R64G64B64_UINT = 116, 768 VK_FORMAT_R64G64B64_SINT = 117, 769 VK_FORMAT_R64G64B64_SFLOAT = 118, 770 VK_FORMAT_R64G64B64A64_UINT = 119, 771 VK_FORMAT_R64G64B64A64_SINT = 120, 772 VK_FORMAT_R64G64B64A64_SFLOAT = 121, 773 VK_FORMAT_B10G11R11_UFLOAT_PACK32 = 122, 774 VK_FORMAT_E5B9G9R9_UFLOAT_PACK32 = 123, 775 VK_FORMAT_D16_UNORM = 124, 776 VK_FORMAT_X8_D24_UNORM_PACK32 = 125, 777 VK_FORMAT_D32_SFLOAT = 126, 778 VK_FORMAT_S8_UINT = 127, 779 VK_FORMAT_D16_UNORM_S8_UINT = 128, 780 VK_FORMAT_D24_UNORM_S8_UINT = 129, 781 VK_FORMAT_D32_SFLOAT_S8_UINT = 130, 782 VK_FORMAT_BC1_RGB_UNORM_BLOCK = 131, 783 VK_FORMAT_BC1_RGB_SRGB_BLOCK = 132, 784 VK_FORMAT_BC1_RGBA_UNORM_BLOCK = 133, 785 VK_FORMAT_BC1_RGBA_SRGB_BLOCK = 134, 786 VK_FORMAT_BC2_UNORM_BLOCK = 135, 787 VK_FORMAT_BC2_SRGB_BLOCK = 136, 788 VK_FORMAT_BC3_UNORM_BLOCK = 137, 789 VK_FORMAT_BC3_SRGB_BLOCK = 138, 790 VK_FORMAT_BC4_UNORM_BLOCK = 139, 791 VK_FORMAT_BC4_SNORM_BLOCK = 140, 792 VK_FORMAT_BC5_UNORM_BLOCK = 141, 793 VK_FORMAT_BC5_SNORM_BLOCK = 142, 794 VK_FORMAT_BC6H_UFLOAT_BLOCK = 143, 795 VK_FORMAT_BC6H_SFLOAT_BLOCK = 144, 796 VK_FORMAT_BC7_UNORM_BLOCK = 145, 797 VK_FORMAT_BC7_SRGB_BLOCK = 146, 798 VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK = 147, 799 VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK = 148, 800 VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK = 149, 801 VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK = 150, 802 VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK = 151, 803 VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK = 152, 804 VK_FORMAT_EAC_R11_UNORM_BLOCK = 153, 805 VK_FORMAT_EAC_R11_SNORM_BLOCK = 154, 806 VK_FORMAT_EAC_R11G11_UNORM_BLOCK = 155, 807 VK_FORMAT_EAC_R11G11_SNORM_BLOCK = 156, 808 VK_FORMAT_ASTC_4x4_UNORM_BLOCK = 157, 809 VK_FORMAT_ASTC_4x4_SRGB_BLOCK = 158, 810 VK_FORMAT_ASTC_5x4_UNORM_BLOCK = 159, 811 VK_FORMAT_ASTC_5x4_SRGB_BLOCK = 160, 812 VK_FORMAT_ASTC_5x5_UNORM_BLOCK = 161, 813 VK_FORMAT_ASTC_5x5_SRGB_BLOCK = 162, 814 VK_FORMAT_ASTC_6x5_UNORM_BLOCK = 163, 815 VK_FORMAT_ASTC_6x5_SRGB_BLOCK = 164, 816 VK_FORMAT_ASTC_6x6_UNORM_BLOCK = 165, 817 VK_FORMAT_ASTC_6x6_SRGB_BLOCK = 166, 818 VK_FORMAT_ASTC_8x5_UNORM_BLOCK = 167, 819 VK_FORMAT_ASTC_8x5_SRGB_BLOCK = 168, 820 VK_FORMAT_ASTC_8x6_UNORM_BLOCK = 169, 821 VK_FORMAT_ASTC_8x6_SRGB_BLOCK = 170, 822 VK_FORMAT_ASTC_8x8_UNORM_BLOCK = 171, 823 VK_FORMAT_ASTC_8x8_SRGB_BLOCK = 172, 824 VK_FORMAT_ASTC_10x5_UNORM_BLOCK = 173, 825 VK_FORMAT_ASTC_10x5_SRGB_BLOCK = 174, 826 VK_FORMAT_ASTC_10x6_UNORM_BLOCK = 175, 827 VK_FORMAT_ASTC_10x6_SRGB_BLOCK = 176, 828 VK_FORMAT_ASTC_10x8_UNORM_BLOCK = 177, 829 VK_FORMAT_ASTC_10x8_SRGB_BLOCK = 178, 830 VK_FORMAT_ASTC_10x10_UNORM_BLOCK = 179, 831 VK_FORMAT_ASTC_10x10_SRGB_BLOCK = 180, 832 VK_FORMAT_ASTC_12x10_UNORM_BLOCK = 181, 833 VK_FORMAT_ASTC_12x10_SRGB_BLOCK = 182, 834 VK_FORMAT_ASTC_12x12_UNORM_BLOCK = 183, 835 VK_FORMAT_ASTC_12x12_SRGB_BLOCK = 184, 836 837 //@extension("VK_IMG_format_pvrtc") // 28 838 VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000, 839 VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001, 840 VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002, 841 VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003, 842 VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004, 843 VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005, 844 VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006, 845 VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007, 846} 847 848/// Structure type enumerant 849enum VkStructureType { 850 VK_STRUCTURE_TYPE_APPLICATION_INFO = 0, 851 VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO = 1, 852 VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO = 2, 853 VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO = 3, 854 VK_STRUCTURE_TYPE_SUBMIT_INFO = 4, 855 VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO = 5, 856 VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE = 6, 857 VK_STRUCTURE_TYPE_BIND_SPARSE_INFO = 7, 858 VK_STRUCTURE_TYPE_FENCE_CREATE_INFO = 8, 859 VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO = 9, 860 VK_STRUCTURE_TYPE_EVENT_CREATE_INFO = 10, 861 VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO = 11, 862 VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO = 12, 863 VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO = 13, 864 VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO = 14, 865 VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO = 15, 866 VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO = 16, 867 VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO = 17, 868 VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO = 18, 869 VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO = 19, 870 VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20, 871 VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO = 21, 872 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO = 22, 873 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO = 23, 874 VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO = 24, 875 VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO = 25, 876 VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO = 26, 877 VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO = 27, 878 VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO = 28, 879 VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO = 29, 880 VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO = 30, 881 VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO = 31, 882 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO = 32, 883 VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO = 33, 884 VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO = 34, 885 VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET = 35, 886 VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET = 36, 887 VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO = 37, 888 VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO = 38, 889 VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO = 39, 890 VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO = 40, 891 VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO = 41, 892 VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO = 42, 893 VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO = 43, 894 VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER = 44, 895 VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER = 45, 896 VK_STRUCTURE_TYPE_MEMORY_BARRIER = 46, 897 VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO = 47, 898 VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO = 48, 899 900 //@extension("VK_KHR_swapchain") // 2 901 VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000, 902 VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001, 903 904 //@extension("VK_KHR_display") // 3 905 VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000, 906 VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001, 907 908 //@extension("VK_KHR_display_swapchain") // 4 909 VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR = 1000003000, 910 911 //@extension("VK_KHR_xlib_surface") // 5 912 VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000, 913 914 //@extension("VK_KHR_xcb_surface") // 6 915 VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000, 916 917 //@extension("VK_KHR_wayland_surface") // 7 918 VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000, 919 920 //@extension("VK_KHR_mir_surface") // 8 921 VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR = 1000007000, 922 923 //@extension("VK_KHR_android_surface") // 9 924 VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000, 925 926 //@extension("VK_KHR_win32_surface") // 10 927 VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000, 928 929 //@extension("VK_ANDROID_native_buffer") // 11 930 VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID = 1000010000, 931 VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID = 1000010001, 932 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID = 1000010002, 933 934 //@extension("VK_EXT_debug_report") // 12 935 VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000, 936 937 //@extension("VK_AMD_rasterization_order") // 19 938 VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000, 939 940 //@extension("VK_EXT_debug_marker") // 23 941 VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000, 942 VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001, 943 VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002, 944 945 //@extension("VK_NV_dedicated_allocation") // 27 946 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000, 947 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001, 948 VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002, 949 950 //@extension("VK_KHX_multiview") // 54 951 VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHX = 1000053000, 952 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHX = 1000053001, 953 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHX = 1000053002, 954 955 //@extension("VK_NV_external_memory") // 57 956 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000, 957 VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001, 958 959 //@extension("VK_NV_external_memory_win32") // 58 960 VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000, 961 VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001, 962 963 //@extension("VK_NV_win32_keyed_mutex") // 59 964 VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000, 965 966 //@extension("VK_KHR_get_physical_device_properties2") // 60 967 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR = 1000059000, 968 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR = 1000059001, 969 VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR = 1000059002, 970 VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059003, 971 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR = 1000059004, 972 VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR = 1000059005, 973 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR = 1000059006, 974 VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR = 1000059007, 975 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008, 976 977 //@extension("VK_KHX_device_group") // 61 978 VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHX = 1000060000, 979 VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHX = 1000060001, 980 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHX = 1000060002, 981 VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHX = 1000060003, 982 VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHX = 1000060004, 983 VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHX = 1000060005, 984 VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHX = 1000060006, 985 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHX = 1000060007, 986 VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHX = 1000060008, 987 VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHX = 1000060009, 988 VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHX = 1000060010, 989 VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHX = 1000060011, 990 VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHX = 1000060012, 991 992 //@extension("VK_EXT_validation_flags") // 62 993 VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000, 994 995 //@extension("VK_NN_vi_surface") // 63 996 VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000, 997 998 //@extension("VK_KHX_device_group_creation") // 71 999 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHX = 1000070000, 1000 VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHX = 1000070001, 1001 1002 //@extension("VK_KHX_external_memory_capabilities") // 72 1003 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHX = 1000071000, 1004 VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHX = 1000071001, 1005 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHX = 1000071002, 1006 VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHX = 1000071003, 1007 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHX = 1000071004, 1008 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHX = 1000071005, 1009 VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHX = 1000071006, 1010 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHX = 1000071007, 1011 1012 //@extension("VK_KHX_external_memory") // 73 1013 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHX = 1000072000, 1014 VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHX = 1000072001, 1015 VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHX = 1000072002, 1016 1017 //@extension("VK_KHX_external_memory_win32") // 74 1018 VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHX = 1000073000, 1019 VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHX = 1000073001, 1020 VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHX = 1000073002, 1021 1022 //@extension("VK_KHX_external_memory_fd") // 75 1023 VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHX = 1000074000, 1024 VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHX = 1000074001, 1025 1026 //@extension("VK_KHX_win32_keyed_mutex") // 76 1027 VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHX = 1000075000, 1028 1029 //@extension("VK_KHX_external_semaphore_capabilities") // 77 1030 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHX = 1000076000, 1031 VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHX = 1000076001, 1032 1033 //@extension("VK_KHX_external_semaphore") // 78 1034 VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHX = 1000077000, 1035 1036 //@extension("VK_KHX_external_semaphore_win32") // 79 1037 VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX = 1000078000, 1038 VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHX = 1000078001, 1039 VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHX = 1000078002, 1040 1041 //@extension("VK_KHX_external_semaphore_fd") // 80 1042 VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHX = 1000079000, 1043 1044 //@extension("VK_KHR_push_descriptor") // 81 1045 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000, 1046 1047 //@extension("VK_KHR_incremental_present") // 85 1048 VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000, 1049 1050 //@extension("VK_KHR_descriptor_update_template") // 86 1051 VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR = 1000085000, 1052 1053 //@extension("VK_NVX_device_generated_commands") // 87 1054 VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX = 1000086000, 1055 VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX = 1000086001, 1056 VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX = 1000086002, 1057 VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX = 1000086003, 1058 VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX = 1000086004, 1059 VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX = 1000086005, 1060 1061 //@extension("VK_NV_clip_space_w_scaling") // 88 1062 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000, 1063 1064 //@extension("VK_EXT_display_surface_counter") // 91 1065 VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES2_EXT = 1000090000, 1066 1067 //@extension("VK_EXT_display_control") // 92 1068 VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000, 1069 VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001, 1070 VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002, 1071 VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003, 1072 1073 //@extension("VK_GOOGLE_display_timing") // 93 1074 VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000, 1075 1076 //@extension("VK_NVX_multiview_per_view_attributes") // 98 1077 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000, 1078 1079 //@extension("VK_NV_viewport_swizzle") // 99 1080 VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000, 1081 1082 //@extension("VK_EXT_discard_rectangles") // 100 1083 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000, 1084 VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001, 1085 1086 //@extension("VK_EXT_hdr_metadata") // 106 1087 VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000, 1088 1089 //@extension("VK_KHR_shared_presentable_image") // 111 1090 VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000, 1091 1092 //@extension("VK_KHR_get_surface_capabilities2") // 119 1093 VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000, 1094 VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001, 1095 VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002, 1096 1097 //@extension("VK_MVK_ios_surface") // 123 1098 VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000, 1099 1100 //@extension("VK_MVK_macos_surface") // 124 1101 VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000, 1102} 1103 1104enum VkSubpassContents { 1105 VK_SUBPASS_CONTENTS_INLINE = 0x00000000, 1106 VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 0x00000001, 1107} 1108 1109enum VkPipelineCacheHeaderVersion { 1110 VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1, 1111} 1112 1113@lastUnused(-11) 1114/// Error and return codes 1115enum VkResult { 1116 // Return codes for successful operation execution (positive values) 1117 VK_SUCCESS = 0, 1118 VK_NOT_READY = 1, 1119 VK_TIMEOUT = 2, 1120 VK_EVENT_SET = 3, 1121 VK_EVENT_RESET = 4, 1122 VK_INCOMPLETE = 5, 1123 1124 //@extension("VK_KHR_swapchain") // 2 1125 VK_SUBOPTIMAL_KHR = 1000001003, 1126 1127 // Error codes (negative values) 1128 VK_ERROR_OUT_OF_HOST_MEMORY = 0xFFFFFFFF, // -1 1129 VK_ERROR_OUT_OF_DEVICE_MEMORY = 0xFFFFFFFE, // -2 1130 VK_ERROR_INITIALIZATION_FAILED = 0xFFFFFFFD, // -3 1131 VK_ERROR_DEVICE_LOST = 0xFFFFFFFC, // -4 1132 VK_ERROR_MEMORY_MAP_FAILED = 0xFFFFFFFB, // -5 1133 VK_ERROR_LAYER_NOT_PRESENT = 0xFFFFFFFA, // -6 1134 VK_ERROR_EXTENSION_NOT_PRESENT = 0xFFFFFFF9, // -7 1135 VK_ERROR_FEATURE_NOT_PRESENT = 0xFFFFFFF8, // -8 1136 VK_ERROR_INCOMPATIBLE_DRIVER = 0xFFFFFFF7, // -9 1137 VK_ERROR_TOO_MANY_OBJECTS = 0xFFFFFFF6, // -10 1138 VK_ERROR_FORMAT_NOT_SUPPORTED = 0xFFFFFFF5, // -11 1139 VK_ERROR_FRAGMENTED_POOL = 0xFFFFFFF4, // -12 1140 1141 //@extension("VK_KHR_surface") // 1 1142 VK_ERROR_SURFACE_LOST_KHR = 0xC4653600, // -1000000000 1143 VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = 0xC46535FF, // -1000000001 1144 1145 //@extension("VK_KHR_swapchain") // 2 1146 VK_ERROR_OUT_OF_DATE_KHR = 0xC4653214, // -1000001004 1147 1148 //@extension("VK_KHR_display_swapchain") // 4 1149 VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = 0xC4652A47, // -1000003001 1150 1151 //@extension("VK_EXT_debug_report") // 12 1152 VK_ERROR_VALIDATION_FAILED_EXT = 0xC4650B07, // -1000011001 1153 1154 //@extension("VK_NV_glsl_shader") // 13 1155 VK_ERROR_INVALID_SHADER_NV = 0xC4650720, // -1000012000 1156 1157 //@extension("VK_KHR_maintenance1") // 70 1158 VK_ERROR_OUT_OF_POOL_MEMORY_KHR = 0xC4642878, // -1000069000 1159 1160 //@extension("VK_KHX_external_memory") // 73 1161 VK_ERROR_INVALID_EXTERNAL_HANDLE_KHX = 0xC4641CBD, // -1000072003 1162} 1163 1164enum VkDynamicState { 1165 VK_DYNAMIC_STATE_VIEWPORT = 0x00000000, 1166 VK_DYNAMIC_STATE_SCISSOR = 0x00000001, 1167 VK_DYNAMIC_STATE_LINE_WIDTH = 0x00000002, 1168 VK_DYNAMIC_STATE_DEPTH_BIAS = 0x00000003, 1169 VK_DYNAMIC_STATE_BLEND_CONSTANTS = 0x00000004, 1170 VK_DYNAMIC_STATE_DEPTH_BOUNDS = 0x00000005, 1171 VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 0x00000006, 1172 VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 0x00000007, 1173 VK_DYNAMIC_STATE_STENCIL_REFERENCE = 0x00000008, 1174 1175 //@extension("VK_NV_clip_space_w_scaling") // 88 1176 VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000, 1177 1178 //@extension("VK_EXT_discard_rectangles") // 100 1179 VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000, 1180} 1181 1182@extension("VK_KHR_surface") // 1 1183enum VkPresentModeKHR { 1184 VK_PRESENT_MODE_IMMEDIATE_KHR = 0x00000000, 1185 VK_PRESENT_MODE_MAILBOX_KHR = 0x00000001, 1186 VK_PRESENT_MODE_FIFO_KHR = 0x00000002, 1187 VK_PRESENT_MODE_FIFO_RELAXED_KHR = 0x00000003, 1188 1189 //@extension("VK_KHR_shared_presentable_image") 1190 VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR = 1000111000, 1191 VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR = 1000111001, 1192} 1193 1194@extension("VK_KHR_surface") // 1 1195enum VkColorSpaceKHR { 1196 VK_COLORSPACE_SRGB_NONLINEAR_KHR = 0x00000000, 1197 1198 //@extension("VK_EXT_swapchain_colorspace") // 105 1199 VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT = 1000104001, 1200 VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT = 1000104002, 1201 VK_COLOR_SPACE_DCI_P3_LINEAR_EXT = 1000104003, 1202 VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT = 1000104004, 1203 VK_COLOR_SPACE_BT709_LINEAR_EXT = 1000104005, 1204 VK_COLOR_SPACE_BT709_NONLINEAR_EXT = 1000104006, 1205 VK_COLOR_SPACE_BT2020_LINEAR_EXT = 1000104007, 1206 VK_COLOR_SPACE_HDR10_ST2084_EXT = 1000104008, 1207 VK_COLOR_SPACE_DOLBYVISION_EXT = 1000104009, 1208 VK_COLOR_SPACE_HDR10_HLG_EXT = 1000104010, 1209 VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT = 1000104011, 1210 VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT = 1000104012, 1211 VK_COLOR_SPACE_PASS_THROUGH_EXT = 1000104013, 1212} 1213 1214@extension("VK_EXT_debug_report") // 12 1215enum VkDebugReportObjectTypeEXT { 1216 VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT = 0, 1217 VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT = 1, 1218 VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT = 2, 1219 VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT = 3, 1220 VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT = 4, 1221 VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT = 5, 1222 VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT = 6, 1223 VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT = 7, 1224 VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT = 8, 1225 VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT = 9, 1226 VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT = 10, 1227 VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT = 11, 1228 VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT = 12, 1229 VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT = 13, 1230 VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT = 14, 1231 VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT = 15, 1232 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT = 16, 1233 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT = 17, 1234 VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT = 18, 1235 VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT = 19, 1236 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT = 20, 1237 VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT = 21, 1238 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT = 22, 1239 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT = 23, 1240 VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT = 24, 1241 VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT = 25, 1242 VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT = 26, 1243 VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT = 27, 1244 VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT = 28, 1245 VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT = 29, 1246 VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT = 30, 1247 VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT = 31, 1248 VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32, 1249 1250 //extension("VK_KHR_descriptor_update_template") // 86 1251 VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000, 1252} 1253 1254@extension("VK_EXT_debug_report") // 12 1255enum VkDebugReportErrorEXT { 1256 VK_DEBUG_REPORT_ERROR_NONE_EXT = 0, 1257 VK_DEBUG_REPORT_ERROR_CALLBACK_REF_EXT = 1, 1258} 1259 1260@extension("VK_AMD_rasterization_order") // 19 1261enum VkRasterizationOrderAMD { 1262 VK_RASTERIZATION_ORDER_STRICT_AMD = 0, 1263 VK_RASTERIZATION_ORDER_RELAXED_AMD = 1, 1264} 1265 1266@extension("VK_EXT_validation_flags") // 62 1267enum VkValidationCheckEXT { 1268 VK_VALIDATION_CHECK_ALL_EXT = 0, 1269} 1270 1271@extension("VK_KHR_descriptor_update_template") // 86 1272enum VkDescriptorUpdateTemplateTypeKHR { 1273 VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = 0, 1274 VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1, 1275} 1276 1277@extension("VK_NVX_device_generated_commands") // 87 1278enum VkIndirectCommandsTokenTypeNVX { 1279 VK_INDIRECT_COMMANDS_TOKEN_PIPELINE_NVX = 0, 1280 VK_INDIRECT_COMMANDS_TOKEN_DESCRIPTOR_SET_NVX = 1, 1281 VK_INDIRECT_COMMANDS_TOKEN_INDEX_BUFFER_NVX = 2, 1282 VK_INDIRECT_COMMANDS_TOKEN_VERTEX_BUFFER_NVX = 3, 1283 VK_INDIRECT_COMMANDS_TOKEN_PUSH_CONSTANT_NVX = 4, 1284 VK_INDIRECT_COMMANDS_TOKEN_DRAW_INDEXED_NVX = 5, 1285 VK_INDIRECT_COMMANDS_TOKEN_DRAW_NVX = 6, 1286 VK_INDIRECT_COMMANDS_TOKEN_DISPATCH_NVX = 7, 1287} 1288 1289@extension("VK_NVX_device_generated_commands") // 87 1290enum VkObjectEntryTypeNVX { 1291 VK_OBJECT_ENTRY_DESCRIPTOR_SET_NVX = 0, 1292 VK_OBJECT_ENTRY_PIPELINE_NVX = 1, 1293 VK_OBJECT_ENTRY_INDEX_BUFFER_NVX = 2, 1294 VK_OBJECT_ENTRY_VERTEX_BUFFER_NVX = 3, 1295 VK_OBJECT_ENTRY_PUSH_CONSTANT_NVX = 4, 1296} 1297 1298@extension("VK_EXT_display_control") // 92 1299enum VkDisplayPowerStateEXT { 1300 VK_DISPLAY_POWER_STATE_OFF_EXT = 0, 1301 VK_DISPLAY_POWER_STATE_SUSPEND_EXT = 1, 1302 VK_DISPLAY_POWER_STATE_ON_EXT = 2, 1303} 1304 1305@extension("VK_EXT_display_control") // 92 1306enum VkDeviceEventTypeEXT { 1307 VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT = 0, 1308} 1309 1310@extension("VK_EXT_display_control") // 92 1311enum VkDisplayEventTypeEXT { 1312 VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT = 0, 1313} 1314 1315@extension("VK_NV_viewport_swizzle") // 99 1316enum VkViewportCoordinateSwizzleNV { 1317 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV = 0, 1318 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV = 1, 1319 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV = 2, 1320 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV = 3, 1321 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV = 4, 1322 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV = 5, 1323 VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV = 6, 1324 VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV = 7, 1325} 1326 1327@extension("VK_EXT_discard_rectangles") // 100 1328enum VkDiscardRectangleModeEXT { 1329 VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0, 1330 VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1, 1331} 1332 1333///////////////// 1334// Bitfields // 1335///////////////// 1336 1337/// Queue capabilities 1338type VkFlags VkQueueFlags 1339bitfield VkQueueFlagBits { 1340 VK_QUEUE_GRAPHICS_BIT = 0x00000001, /// Queue supports graphics operations 1341 VK_QUEUE_COMPUTE_BIT = 0x00000002, /// Queue supports compute operations 1342 VK_QUEUE_TRANSFER_BIT = 0x00000004, /// Queue supports transfer operations 1343 VK_QUEUE_SPARSE_BINDING_BIT = 0x00000008, /// Queue supports sparse resource memory management operations 1344} 1345 1346/// Memory properties passed into vkAllocMemory(). 1347type VkFlags VkMemoryPropertyFlags 1348bitfield VkMemoryPropertyFlagBits { 1349 VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT = 0x00000001, 1350 VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT = 0x00000002, 1351 VK_MEMORY_PROPERTY_HOST_COHERENT_BIT = 0x00000004, 1352 VK_MEMORY_PROPERTY_HOST_CACHED_BIT = 0x00000008, 1353 VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT = 0x00000010, 1354} 1355 1356/// Memory heap flags 1357type VkFlags VkMemoryHeapFlags 1358bitfield VkMemoryHeapFlagBits { 1359 VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001, 1360 1361 //@extension("VK_KHX_device_group_creation") // 71 1362 VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHX = 0x00000002, 1363} 1364 1365/// Access flags 1366type VkFlags VkAccessFlags 1367bitfield VkAccessFlagBits { 1368 VK_ACCESS_INDIRECT_COMMAND_READ_BIT = 0x00000001, 1369 VK_ACCESS_INDEX_READ_BIT = 0x00000002, 1370 VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT = 0x00000004, 1371 VK_ACCESS_UNIFORM_READ_BIT = 0x00000008, 1372 VK_ACCESS_INPUT_ATTACHMENT_READ_BIT = 0x00000010, 1373 VK_ACCESS_SHADER_READ_BIT = 0x00000020, 1374 VK_ACCESS_SHADER_WRITE_BIT = 0x00000040, 1375 VK_ACCESS_COLOR_ATTACHMENT_READ_BIT = 0x00000080, 1376 VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT = 0x00000100, 1377 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT = 0x00000200, 1378 VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT = 0x00000400, 1379 VK_ACCESS_TRANSFER_READ_BIT = 0x00000800, 1380 VK_ACCESS_TRANSFER_WRITE_BIT = 0x00001000, 1381 VK_ACCESS_HOST_READ_BIT = 0x00002000, 1382 VK_ACCESS_HOST_WRITE_BIT = 0x00004000, 1383 VK_ACCESS_MEMORY_READ_BIT = 0x00008000, 1384 VK_ACCESS_MEMORY_WRITE_BIT = 0x00010000, 1385 1386 //@extension("VK_NVX_device_generated_commands") // 87 1387 VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX = 0x00020000, 1388 VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX = 0x00040000, 1389} 1390 1391/// Buffer usage flags 1392type VkFlags VkBufferUsageFlags 1393bitfield VkBufferUsageFlagBits { 1394 VK_BUFFER_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations 1395 VK_BUFFER_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations 1396 VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000004, /// Can be used as TBO 1397 VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT = 0x00000008, /// Can be used as IBO 1398 VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT = 0x00000010, /// Can be used as UBO 1399 VK_BUFFER_USAGE_STORAGE_BUFFER_BIT = 0x00000020, /// Can be used as SSBO 1400 VK_BUFFER_USAGE_INDEX_BUFFER_BIT = 0x00000040, /// Can be used as source of fixed function index fetch (index buffer) 1401 VK_BUFFER_USAGE_VERTEX_BUFFER_BIT = 0x00000080, /// Can be used as source of fixed function vertex fetch (VBO) 1402 VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT = 0x00000100, /// Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer) 1403} 1404 1405/// Buffer creation flags 1406type VkFlags VkBufferCreateFlags 1407bitfield VkBufferCreateFlagBits { 1408 VK_BUFFER_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Buffer should support sparse backing 1409 VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Buffer should support sparse backing with partial residency 1410 VK_BUFFER_CREATE_SPARSE_ALIASED_BIT = 0x00000004, /// Buffer should support constent data access to physical memory blocks mapped into multiple locations of sparse buffers 1411} 1412 1413/// Shader stage flags 1414type VkFlags VkShaderStageFlags 1415bitfield VkShaderStageFlagBits { 1416 VK_SHADER_STAGE_VERTEX_BIT = 0x00000001, 1417 VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT = 0x00000002, 1418 VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT = 0x00000004, 1419 VK_SHADER_STAGE_GEOMETRY_BIT = 0x00000008, 1420 VK_SHADER_STAGE_FRAGMENT_BIT = 0x00000010, 1421 VK_SHADER_STAGE_COMPUTE_BIT = 0x00000020, 1422 VK_SHADER_STAGE_ALL_GRAPHICS = 0x0000001F, 1423 1424 VK_SHADER_STAGE_ALL = 0x7FFFFFFF, 1425} 1426 1427/// Descriptor pool create flags 1428type VkFlags VkDescriptorPoolCreateFlags 1429bitfield VkDescriptorPoolCreateFlagBits { 1430 VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT = 0x00000001, 1431} 1432 1433/// Descriptor pool reset flags 1434type VkFlags VkDescriptorPoolResetFlags 1435//bitfield VkDescriptorPoolResetFlagBits { 1436//} 1437 1438/// Image usage flags 1439type VkFlags VkImageUsageFlags 1440bitfield VkImageUsageFlagBits { 1441 VK_IMAGE_USAGE_TRANSFER_SRC_BIT = 0x00000001, /// Can be used as a source of transfer operations 1442 VK_IMAGE_USAGE_TRANSFER_DST_BIT = 0x00000002, /// Can be used as a destination of transfer operations 1443 VK_IMAGE_USAGE_SAMPLED_BIT = 0x00000004, /// Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types) 1444 VK_IMAGE_USAGE_STORAGE_BIT = 0x00000008, /// Can be used as storage image (STORAGE_IMAGE descriptor type) 1445 VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT = 0x00000010, /// Can be used as framebuffer color attachment 1446 VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000020, /// Can be used as framebuffer depth/stencil attachment 1447 VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT = 0x00000040, /// Image data not needed outside of rendering 1448 VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT = 0x00000080, /// Can be used as framebuffer input attachment 1449} 1450 1451/// Image creation flags 1452type VkFlags VkImageCreateFlags 1453bitfield VkImageCreateFlagBits { 1454 VK_IMAGE_CREATE_SPARSE_BINDING_BIT = 0x00000001, /// Image should support sparse backing 1455 VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT = 0x00000002, /// Image should support sparse backing with partial residency 1456 VK_IMAGE_CREATE_SPARSE_ALIASED_BIT = 0x00000004, /// Image should support constent data access to physical memory blocks mapped into multiple locations of sparse images 1457 VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT = 0x00000008, /// Allows image views to have different format than the base image 1458 VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT = 0x00000010, /// Allows creating image views with cube type from the created image 1459 1460 //@extension("VK_KHR_maintenance1") // 70 1461 VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR = 0x00000020, 1462 1463 //@extension("VK_KHX_device_group") // 61 1464 VK_IMAGE_CREATE_BIND_SFR_BIT_KHX = 0x00000040, 1465} 1466 1467/// Image view creation flags 1468type VkFlags VkImageViewCreateFlags 1469//bitfield VkImageViewCreateFlagBits { 1470//} 1471 1472/// Pipeline creation flags 1473type VkFlags VkPipelineCreateFlags 1474bitfield VkPipelineCreateFlagBits { 1475 VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001, 1476 VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002, 1477 VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004, 1478 1479 //@extension("VK_KHX_device_group") // 61 1480 VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHX = 0x00000008, 1481 VK_PIPELINE_CREATE_DISPATCH_BASE_KHX = 0x00000010, 1482} 1483 1484/// Color component flags 1485type VkFlags VkColorComponentFlags 1486bitfield VkColorComponentFlagBits { 1487 VK_COLOR_COMPONENT_R_BIT = 0x00000001, 1488 VK_COLOR_COMPONENT_G_BIT = 0x00000002, 1489 VK_COLOR_COMPONENT_B_BIT = 0x00000004, 1490 VK_COLOR_COMPONENT_A_BIT = 0x00000008, 1491} 1492 1493/// Fence creation flags 1494type VkFlags VkFenceCreateFlags 1495bitfield VkFenceCreateFlagBits { 1496 VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001, 1497} 1498 1499/// Semaphore creation flags 1500type VkFlags VkSemaphoreCreateFlags 1501//bitfield VkSemaphoreCreateFlagBits { 1502//} 1503 1504/// Format capability flags 1505type VkFlags VkFormatFeatureFlags 1506bitfield VkFormatFeatureFlagBits { 1507 VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT = 0x00000001, /// Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types) 1508 VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT = 0x00000002, /// Format can be used for storage images (STORAGE_IMAGE descriptor type) 1509 VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT = 0x00000004, /// Format supports atomic operations in case it's used for storage images 1510 VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT = 0x00000008, /// Format can be used for uniform texel buffers (TBOs) 1511 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT = 0x00000010, /// Format can be used for storage texel buffers (IBOs) 1512 VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT = 0x00000020, /// Format supports atomic operations in case it's used for storage texel buffers 1513 VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT = 0x00000040, /// Format can be used for vertex buffers (VBOs) 1514 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT = 0x00000080, /// Format can be used for color attachment images 1515 VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT = 0x00000100, /// Format supports blending in case it's used for color attachment images 1516 VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT = 0x00000200, /// Format can be used for depth/stencil attachment images 1517 VK_FORMAT_FEATURE_BLIT_SRC_BIT = 0x00000400, /// Format can be used as the source image of blits with vkCommandBlitImage 1518 VK_FORMAT_FEATURE_BLIT_DST_BIT = 0x00000800, /// Format can be used as the destination image of blits with vkCommandBlitImage 1519 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT = 0x00001000, 1520 1521 //@extension("VK_IMG_filter_cubic") // 16 1522 VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000, 1523 1524 //@extension("VK_KHR_maintenance1") // 70 1525 VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR = 0x00004000, 1526 VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR = 0x00008000, 1527} 1528 1529/// Query control flags 1530type VkFlags VkQueryControlFlags 1531bitfield VkQueryControlFlagBits { 1532 VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001, 1533} 1534 1535/// Query result flags 1536type VkFlags VkQueryResultFlags 1537bitfield VkQueryResultFlagBits { 1538 VK_QUERY_RESULT_64_BIT = 0x00000001, /// Results of the queries are written to the destination buffer as 64-bit values 1539 VK_QUERY_RESULT_WAIT_BIT = 0x00000002, /// Results of the queries are waited on before proceeding with the result copy 1540 VK_QUERY_RESULT_WITH_AVAILABILITY_BIT = 0x00000004, /// Besides the results of the query, the availability of the results is also written 1541 VK_QUERY_RESULT_PARTIAL_BIT = 0x00000008, /// Copy the partial results of the query even if the final results aren't available 1542} 1543 1544/// Shader module creation flags 1545type VkFlags VkShaderModuleCreateFlags 1546//bitfield VkShaderModuleCreateFlagBits { 1547//} 1548 1549/// Event creation flags 1550type VkFlags VkEventCreateFlags 1551//bitfield VkEventCreateFlagBits { 1552//} 1553 1554/// Command buffer usage flags 1555type VkFlags VkCommandBufferUsageFlags 1556bitfield VkCommandBufferUsageFlagBits { 1557 VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT = 0x00000001, 1558 VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT = 0x00000002, 1559 VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT = 0x00000004, 1560} 1561 1562/// Pipeline statistics flags 1563type VkFlags VkQueryPipelineStatisticFlags 1564bitfield VkQueryPipelineStatisticFlagBits { 1565 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT = 0x00000001, /// Optional 1566 VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT = 0x00000002, /// Optional 1567 VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT = 0x00000004, /// Optional 1568 VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT = 0x00000008, /// Optional 1569 VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT = 0x00000010, /// Optional 1570 VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT = 0x00000020, /// Optional 1571 VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT = 0x00000040, /// Optional 1572 VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT = 0x00000080, /// Optional 1573 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT = 0x00000100, /// Optional 1574 VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT = 0x00000200, /// Optional 1575 VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT = 0x00000400, /// Optional 1576} 1577 1578/// Memory mapping flags 1579type VkFlags VkMemoryMapFlags 1580//bitfield VkMemoryMapFlagBits { 1581//} 1582 1583/// Bitfield of image aspects 1584type VkFlags VkImageAspectFlags 1585bitfield VkImageAspectFlagBits { 1586 VK_IMAGE_ASPECT_COLOR_BIT = 0x00000001, 1587 VK_IMAGE_ASPECT_DEPTH_BIT = 0x00000002, 1588 VK_IMAGE_ASPECT_STENCIL_BIT = 0x00000004, 1589 VK_IMAGE_ASPECT_METADATA_BIT = 0x00000008, 1590} 1591 1592/// Sparse memory bind flags 1593type VkFlags VkSparseMemoryBindFlags 1594bitfield VkSparseMemoryBindFlagBits { 1595 VK_SPARSE_MEMORY_BIND_METADATA_BIT = 0x00000001, 1596} 1597 1598/// Sparse image memory requirements flags 1599type VkFlags VkSparseImageFormatFlags 1600bitfield VkSparseImageFormatFlagBits { 1601 VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT = 0x00000001, /// Image uses a single miptail region for all array slices 1602 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. 1603 VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT = 0x00000004, /// Image uses a non-standard sparse block size 1604} 1605 1606/// Pipeline stages 1607type VkFlags VkPipelineStageFlags 1608bitfield VkPipelineStageFlagBits { 1609 VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT = 0x00000001, /// Before subsequent commands are processed 1610 VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT = 0x00000002, /// Draw/DispatchIndirect command fetch 1611 VK_PIPELINE_STAGE_VERTEX_INPUT_BIT = 0x00000004, /// Vertex/index fetch 1612 VK_PIPELINE_STAGE_VERTEX_SHADER_BIT = 0x00000008, /// Vertex shading 1613 VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT = 0x00000010, /// Tessellation control shading 1614 VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT = 0x00000020, /// Tessellation evaluation shading 1615 VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT = 0x00000040, /// Geometry shading 1616 VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT = 0x00000080, /// Fragment shading 1617 VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT = 0x00000100, /// Early fragment (depth/stencil) tests 1618 VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT = 0x00000200, /// Late fragment (depth/stencil) tests 1619 VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT = 0x00000400, /// Color attachment writes 1620 VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT = 0x00000800, /// Compute shading 1621 VK_PIPELINE_STAGE_TRANSFER_BIT = 0x00001000, /// Transfer/copy operations 1622 VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT = 0x00002000, 1623 VK_PIPELINE_STAGE_HOST_BIT = 0x00004000, /// Indicates host (CPU) is a source/sink of the dependency 1624 1625 VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT = 0x00008000, /// All stages of the graphics pipeline 1626 VK_PIPELINE_STAGE_ALL_COMMANDS_BIT = 0x00010000, /// All graphics, compute, copy, and transition commands 1627 1628 //@extension("VK_NVX_device_generated_commands") // 87 1629 VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX = 0x00020000, 1630} 1631 1632/// Render pass attachment description flags 1633type VkFlags VkAttachmentDescriptionFlags 1634bitfield VkAttachmentDescriptionFlagBits { 1635 VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001, /// The attachment may alias physical memory of another attachment in the same renderpass 1636} 1637 1638/// Subpass description flags 1639type VkFlags VkSubpassDescriptionFlags 1640bitfield VkSubpassDescriptionFlagBits { 1641 //@extension("VK_NVX_multiview_per_view_attributes") // 98 1642 VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX = 0x00000001, 1643 VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002, 1644} 1645 1646/// Command pool creation flags 1647type VkFlags VkCommandPoolCreateFlags 1648bitfield VkCommandPoolCreateFlagBits { 1649 VK_COMMAND_POOL_CREATE_TRANSIENT_BIT = 0x00000001, /// Command buffers have a short lifetime 1650 VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT = 0x00000002, /// Command buffers may release their memory individually 1651} 1652 1653/// Command pool reset flags 1654type VkFlags VkCommandPoolResetFlags 1655bitfield VkCommandPoolResetFlagBits { 1656 VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the pool 1657} 1658 1659type VkFlags VkCommandBufferResetFlags 1660bitfield VkCommandBufferResetFlagBits { 1661 VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT = 0x00000001, /// Release resources owned by the buffer 1662} 1663 1664type VkFlags VkSampleCountFlags 1665bitfield VkSampleCountFlagBits { 1666 VK_SAMPLE_COUNT_1_BIT = 0x00000001, 1667 VK_SAMPLE_COUNT_2_BIT = 0x00000002, 1668 VK_SAMPLE_COUNT_4_BIT = 0x00000004, 1669 VK_SAMPLE_COUNT_8_BIT = 0x00000008, 1670 VK_SAMPLE_COUNT_16_BIT = 0x00000010, 1671 VK_SAMPLE_COUNT_32_BIT = 0x00000020, 1672 VK_SAMPLE_COUNT_64_BIT = 0x00000040, 1673} 1674 1675type VkFlags VkStencilFaceFlags 1676bitfield VkStencilFaceFlagBits { 1677 VK_STENCIL_FACE_FRONT_BIT = 0x00000001, /// Front face 1678 VK_STENCIL_FACE_BACK_BIT = 0x00000002, /// Back face 1679 VK_STENCIL_FRONT_AND_BACK = 0x00000003, 1680} 1681 1682/// Instance creation flags 1683type VkFlags VkInstanceCreateFlags 1684//bitfield VkInstanceCreateFlagBits { 1685//} 1686 1687/// Device creation flags 1688type VkFlags VkDeviceCreateFlags 1689//bitfield VkDeviceCreateFlagBits { 1690//} 1691 1692/// Device queue creation flags 1693type VkFlags VkDeviceQueueCreateFlags 1694//bitfield VkDeviceQueueCreateFlagBits { 1695//} 1696 1697/// Query pool creation flags 1698type VkFlags VkQueryPoolCreateFlags 1699//bitfield VkQueryPoolCreateFlagBits { 1700//} 1701 1702/// Buffer view creation flags 1703type VkFlags VkBufferViewCreateFlags 1704//bitfield VkBufferViewCreateFlagBits { 1705//} 1706 1707/// Pipeline cache creation flags 1708type VkFlags VkPipelineCacheCreateFlags 1709//bitfield VkPipelineCacheCreateFlagBits { 1710//} 1711 1712/// Pipeline shader stage creation flags 1713type VkFlags VkPipelineShaderStageCreateFlags 1714//bitfield VkPipelineShaderStageCreateFlagBits { 1715//} 1716 1717/// Descriptor set layout creation flags 1718type VkFlags VkDescriptorSetLayoutCreateFlags 1719bitfield VkDescriptorSetLayoutCreateFlagBits { 1720 //@extension("VK_KHR_push_descriptor") // 81 1721 VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR = 0x00000001, 1722} 1723 1724/// Pipeline vertex input state creation flags 1725type VkFlags VkPipelineVertexInputStateCreateFlags 1726//bitfield VkPipelineVertexInputStateCreateFlagBits { 1727//} 1728 1729/// Pipeline input assembly state creation flags 1730type VkFlags VkPipelineInputAssemblyStateCreateFlags 1731//bitfield VkPipelineInputAssemblyStateCreateFlagBits { 1732//} 1733 1734/// Tessellation state creation flags 1735type VkFlags VkPipelineTessellationStateCreateFlags 1736//bitfield VkPipelineTessellationStateCreateFlagBits { 1737//} 1738 1739/// Viewport state creation flags 1740type VkFlags VkPipelineViewportStateCreateFlags 1741//bitfield VkPipelineViewportStateCreateFlagBits { 1742//} 1743 1744/// Rasterization state creation flags 1745type VkFlags VkPipelineRasterizationStateCreateFlags 1746//bitfield VkPipelineRasterizationStateCreateFlagBits { 1747//} 1748 1749/// Multisample state creation flags 1750type VkFlags VkPipelineMultisampleStateCreateFlags 1751//bitfield VkPipelineMultisampleStateCreateFlagBits { 1752//} 1753 1754/// Color blend state creation flags 1755type VkFlags VkPipelineColorBlendStateCreateFlags 1756//bitfield VkPipelineColorBlendStateCreateFlagBits { 1757//} 1758 1759/// Depth/stencil state creation flags 1760type VkFlags VkPipelineDepthStencilStateCreateFlags 1761//bitfield VkPipelineDepthStencilStateCreateFlagBits { 1762//} 1763 1764/// Dynamic state creation flags 1765type VkFlags VkPipelineDynamicStateCreateFlags 1766//bitfield VkPipelineDynamicStateCreateFlagBits { 1767//} 1768 1769/// Pipeline layout creation flags 1770type VkFlags VkPipelineLayoutCreateFlags 1771//bitfield VkPipelineLayoutCreateFlagBits { 1772//} 1773 1774/// Sampler creation flags 1775type VkFlags VkSamplerCreateFlags 1776//bitfield VkSamplerCreateFlagBits { 1777//} 1778 1779/// Render pass creation flags 1780type VkFlags VkRenderPassCreateFlags 1781//bitfield VkRenderPassCreateFlagBits { 1782//} 1783 1784/// Framebuffer creation flags 1785type VkFlags VkFramebufferCreateFlags 1786//bitfield VkFramebufferCreateFlagBits { 1787//} 1788 1789/// Dependency flags 1790type VkFlags VkDependencyFlags 1791bitfield VkDependencyFlagBits { 1792 VK_DEPENDENCY_BY_REGION_BIT = 0x00000001, 1793 1794 //@extension("VK_KHX_multiview") // 54 1795 VK_DEPENDENCY_VIEW_LOCAL_BIT_KHX = 0x00000002, 1796 1797 //@extension("VK_KHX_device_group") // 61 1798 VK_DEPENDENCY_DEVICE_GROUP_BIT_KHX = 0x00000004, 1799} 1800 1801/// Cull mode flags 1802type VkFlags VkCullModeFlags 1803bitfield VkCullModeFlagBits { 1804 VK_CULL_MODE_NONE = 0x00000000, 1805 VK_CULL_MODE_FRONT_BIT = 0x00000001, 1806 VK_CULL_MODE_BACK_BIT = 0x00000002, 1807 VK_CULL_MODE_FRONT_AND_BACK = 0x00000003, 1808} 1809 1810@extension("VK_KHR_surface") // 1 1811type VkFlags VkSurfaceTransformFlagsKHR 1812@extension("VK_KHR_surface") // 1 1813bitfield VkSurfaceTransformFlagBitsKHR { 1814 VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR = 0x00000001, 1815 VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR = 0x00000002, 1816 VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR = 0x00000004, 1817 VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR = 0x00000008, 1818 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR = 0x00000010, 1819 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR = 0x00000020, 1820 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR = 0x00000040, 1821 VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR = 0x00000080, 1822 VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR = 0x00000100, 1823} 1824 1825@extension("VK_KHR_surface") // 1 1826type VkFlags VkCompositeAlphaFlagsKHR 1827@extension("VK_KHR_surface") // 1 1828bitfield VkCompositeAlphaFlagBitsKHR { 1829 VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR = 0x00000001, 1830 VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR = 0x00000002, 1831 VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR = 0x00000004, 1832 VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR = 0x00000008, 1833} 1834 1835@extension("VK_KHR_swapchain") // 2 1836type VkFlags VkSwapchainCreateFlagsKHR 1837@extension("VK_KHR_swapchain") // 2 1838bitfield VkSwapchainCreateFlagBitsKHR { 1839 //@extension("VK_KHX_device_group") // 61 1840 VK_SWAPCHAIN_CREATE_BIND_SFR_BIT_KHX = 0x00000001, 1841} 1842 1843@extension("VK_KHR_display") // 3 1844type VkFlags VkDisplayPlaneAlphaFlagsKHR 1845@extension("VK_KHR_display") // 3 1846bitfield VkDisplayPlaneAlphaFlagBitsKHR { 1847 VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR = 0x00000001, 1848 VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR = 0x00000002, 1849 VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR = 0x00000004, 1850 VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR = 0x00000008, 1851} 1852 1853@extension("VK_KHR_display") // 3 1854type VkFlags VkDisplaySurfaceCreateFlagsKHR 1855//@extension("VK_KHR_display") // 3 1856//bitfield VkDisplaySurfaceCreateFlagBitsKHR { 1857//} 1858 1859@extension("VK_KHR_display") // 3 1860type VkFlags VkDisplayModeCreateFlagsKHR 1861//@extension("VK_KHR_display") // 3 1862//bitfield VkDisplayModeCreateFlagBitsKHR { 1863//} 1864 1865@extension("VK_KHR_xlib_surface") // 5 1866type VkFlags VkXlibSurfaceCreateFlagsKHR 1867//@extension("VK_KHR_xlib_surface") // 5 1868//bitfield VkXlibSurfaceCreateFlagBitsKHR { 1869//} 1870 1871@extension("VK_KHR_xcb_surface") // 6 1872type VkFlags VkXcbSurfaceCreateFlagsKHR 1873//@extension("VK_KHR_xcb_surface") // 6 1874//bitfield VkXcbSurfaceCreateFlagBitsKHR { 1875//} 1876 1877@extension("VK_KHR_wayland_surface") // 7 1878type VkFlags VkWaylandSurfaceCreateFlagsKHR 1879//@extension("VK_KHR_wayland_surface") // 7 1880//bitfield VkWaylandSurfaceCreateFlagBitsKHR { 1881//} 1882 1883@extension("VK_KHR_mir_surface") // 8 1884type VkFlags VkMirSurfaceCreateFlagsKHR 1885//@extension("VK_KHR_mir_surface") // 8 1886//bitfield VkMirSurfaceCreateFlagBitsKHR { 1887//} 1888 1889@extension("VK_KHR_android_surface") // 9 1890type VkFlags VkAndroidSurfaceCreateFlagsKHR 1891//@extension("VK_KHR_android_surface") // 9 1892//bitfield VkAndroidSurfaceCreateFlagBitsKHR { 1893//} 1894 1895@extension("VK_KHR_win32_surface") // 10 1896type VkFlags VkWin32SurfaceCreateFlagsKHR 1897//@extension("VK_KHR_win32_surface") // 10 1898//bitfield VkWin32SurfaceCreateFlagBitsKHR { 1899//} 1900 1901@extension("VK_ANDROID_native_buffer") // 11 1902type VkFlags VkSwapchainImageUsageFlagsANDROID 1903@extension("VK_ANDROID_native_buffer") // 11 1904bitfield VkSwapchainImageUsageFlagBitsANDROID { 1905 VK_SWAPCHAIN_IMAGE_USAGE_FLAGS_SHARED_BIT_ANDROID = 0x00000001, 1906} 1907 1908@extension("VK_EXT_debug_report") // 12 1909type VkFlags VkDebugReportFlagsEXT 1910@extension("VK_EXT_debug_report") // 12 1911bitfield VkDebugReportFlagBitsEXT { 1912 VK_DEBUG_REPORT_INFORMATION_BIT_EXT = 0x00000001, 1913 VK_DEBUG_REPORT_WARNING_BIT_EXT = 0x00000002, 1914 VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT = 0x00000004, 1915 VK_DEBUG_REPORT_ERROR_BIT_EXT = 0x00000008, 1916 VK_DEBUG_REPORT_DEBUG_BIT_EXT = 0x00000010, 1917} 1918 1919@extension("VK_NV_external_memory_capabilities") // 56 1920type VkFlags VkExternalMemoryHandleTypeFlagsNV 1921@extension("VK_NV_external_memory_capabilities") // 56 1922bitfield VkExternalMemoryHandleTypeFlagBitsNV { 1923 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV = 0x00000001, 1924 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV = 0x00000002, 1925 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV = 0x00000004, 1926 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV = 0x00000008, 1927} 1928 1929@extension("VK_NV_external_memory_capabilities") // 56 1930type VkFlags VkExternalMemoryFeatureFlagsNV 1931@extension("VK_NV_external_memory_capabilities") // 56 1932bitfield VkExternalMemoryFeatureFlagBitsNV { 1933 VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV = 0x00000001, 1934 VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV = 0x00000002, 1935 VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV = 0x00000004, 1936} 1937 1938@extension("VK_KHX_device_group") // 61 1939type VkFlags VkPeerMemoryFeatureFlagsKHX 1940@extension("VK_KHX_device_group") // 61 1941bitfield VkPeerMemoryFeatureFlagBitsKHX { 1942 VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHX = 0x00000001, 1943 VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHX = 0x00000002, 1944 VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHX = 0x00000004, 1945 VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHX = 0x00000008, 1946} 1947 1948@extension("VK_KHX_device_group") // 61 1949type VkFlags VkMemoryAllocateFlagsKHX 1950@extension("VK_KHX_device_group") // 61 1951bitfield VkMemoryAllocateFlagBitsKHX { 1952 VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHX = 0x00000001, 1953} 1954 1955@extension("VK_KHX_device_group") // 61 1956type VkFlags VkDeviceGroupPresentModeFlagsKHX 1957@extension("VK_KHX_device_group") // 61 1958bitfield VkDeviceGroupPresentModeFlagBitsKHX { 1959 VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHX = 0x00000001, 1960 VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHX = 0x00000002, 1961 VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHX = 0x00000004, 1962 VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHX = 0x00000008, 1963} 1964 1965@extension("VK_NN_vi_surface") // 63 1966type VkFlags VkViSurfaceCreateFlagsNN 1967//@extension("VK_NN_vi_surface") // 63 1968//bitfield VkViSurfaceCreateFlagBitsNN { 1969//} 1970 1971@extension("VK_KHR_maintenance1") // 70 1972type VkFlags VkCommandPoolTrimFlagsKHR 1973//@extension("VK_KHR_maintenance1") // 70 1974//bitfield VkCommandPoolTrimFlagBitsKHR { 1975//} 1976 1977@extension("VK_KHX_external_memory_capabilities") // 72 1978type VkFlags VkExternalMemoryHandleTypeFlagsKHX 1979@extension("VK_KHX_external_memory_capabilities") // 72 1980bitfield VkExternalMemoryHandleTypeFlagBitsKHX { 1981 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHX = 0x00000001, 1982 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX = 0x00000002, 1983 VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX = 0x00000004, 1984 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHX = 0x00000008, 1985 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHX = 0x00000010, 1986 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHX = 0x00000020, 1987 VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHX = 0x00000040, 1988} 1989 1990@extension("VK_KHX_external_memory_capabilities") // 72 1991type VkFlags VkExternalMemoryFeatureFlagsKHX 1992@extension("VK_KHX_external_memory_capabilities") // 72 1993bitfield VkExternalMemoryFeatureFlagBitsKHX { 1994 VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHX = 0x00000001, 1995 VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHX = 0x00000002, 1996 VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHX = 0x00000004, 1997} 1998 1999@extension("VK_KHX_external_semaphore_capabilities") // 77 2000type VkFlags VkExternalSemaphoreHandleTypeFlagsKHX 2001@extension("VK_KHX_external_semaphore_capabilities") // 77 2002bitfield VkExternalSemaphoreHandleTypeFlagBitsKHX { 2003 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHX = 0x00000001 2004 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHX = 0x00000002 2005 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHX = 0x00000004 2006 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHX = 0x00000008 2007 VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHX = 0x00000010 2008} 2009 2010@extension("VK_KHX_external_semaphore_capabilities") // 77 2011type VkFlags VkExternalSemaphoreFeatureFlagsKHX 2012@extension("VK_KHX_external_semaphore_capabilities") // 77 2013bitfield VkExternalSemaphoreFeatureFlagBitsKHX { 2014 VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHX = 0x00000001, 2015 VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHX = 0x00000002, 2016} 2017 2018@extension("VK_KHR_descriptor_update_template") // 86 2019type VkFlags VkDescriptorUpdateTemplateCreateFlagsKHR 2020//@extension("VK_KHR_descriptor_update_template") // 86 2021//bitfield VkDescriptorUpdateTemplateCreateFlagBitsKHR { 2022//} 2023 2024@extension("VK_NVX_device_generated_commands") // 87 2025type VkFlags VkIndirectCommandsLayoutUsageFlagsNVX 2026@extension("VK_NVX_device_generated_commands") // 87 2027bitfield VkIndirectCommandsLayoutUsageFlagBitsNVX { 2028 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX = 0x00000001, 2029 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX = 0x00000002, 2030 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX = 0x00000004, 2031 VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX = 0x00000008, 2032} 2033 2034@extension("VK_NVX_device_generated_commands") // 87 2035type VkFlags VkObjectEntryUsageFlagsNVX 2036@extension("VK_NVX_device_generated_commands") // 87 2037bitfield VkObjectEntryUsageFlagBitsNVX { 2038 VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX = 0x00000001, 2039 VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX = 0x00000002, 2040} 2041 2042@extension("VK_EXT_display_surface_counter") // 91 2043type VkFlags VkSurfaceCounterFlagsEXT 2044@extension("VK_EXT_display_surface_counter") // 91 2045bitfield VkSurfaceCounterFlagBitsEXT { 2046 VK_SURFACE_COUNTER_VBLANK_EXT = 0x00000001, 2047} 2048 2049@extension("VK_NV_viewport_swizzle") // 99 2050type VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV 2051//@extension("VK_NV_viewport_swizzle") // 99 2052//bitfield VkPipelineViewportSwizzleStateCreateFlagBitsNV { 2053//} 2054 2055@extension("VK_EXT_discard_rectangles") // 100 2056type VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT 2057//@extension("VK_EXT_discard_rectangles") // 100 2058//bitfield VkPipelineDiscardRectangleStateCreateFlagBitsEXT { 2059//} 2060 2061@extension("VK_MVK_ios_surface") // 123 2062type VkFlags VkIOSSurfaceCreateFlagsMVK 2063//@extension("VK_MVK_ios_surface") // 123 2064//bitfield VkIOSSurfaceCreateFlagBitsMVK { 2065//} 2066 2067@extension("VK_MVK_macos_surface") // 124 2068type VkFlags VkMacOSSurfaceCreateFlagsMVK 2069//@extension("VK_MVK_macos_surface") // 124 2070//bitfield VkMacOSSurfaceCreateFlagBitsMVK { 2071//} 2072 2073////////////////// 2074// Structures // 2075////////////////// 2076 2077class VkOffset2D { 2078 s32 x 2079 s32 y 2080} 2081 2082class VkOffset3D { 2083 s32 x 2084 s32 y 2085 s32 z 2086} 2087 2088class VkExtent2D { 2089 u32 width 2090 u32 height 2091} 2092 2093class VkExtent3D { 2094 u32 width 2095 u32 height 2096 u32 depth 2097} 2098 2099class VkViewport { 2100 f32 x 2101 f32 y 2102 f32 width 2103 f32 height 2104 f32 minDepth 2105 f32 maxDepth 2106} 2107 2108class VkRect2D { 2109 VkOffset2D offset 2110 VkExtent2D extent 2111} 2112 2113class VkClearRect { 2114 VkRect2D rect 2115 u32 baseArrayLayer 2116 u32 layerCount 2117} 2118 2119class VkComponentMapping { 2120 VkComponentSwizzle r 2121 VkComponentSwizzle g 2122 VkComponentSwizzle b 2123 VkComponentSwizzle a 2124} 2125 2126class VkPhysicalDeviceProperties { 2127 u32 apiVersion 2128 u32 driverVersion 2129 u32 vendorID 2130 u32 deviceID 2131 VkPhysicalDeviceType deviceType 2132 char[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE] deviceName 2133 u8[VK_UUID_SIZE] pipelineCacheUUID 2134 VkPhysicalDeviceLimits limits 2135 VkPhysicalDeviceSparseProperties sparseProperties 2136} 2137 2138class VkExtensionProperties { 2139 char[VK_MAX_EXTENSION_NAME_SIZE] extensionName /// extension name 2140 u32 specVersion /// version of the extension specification implemented 2141} 2142 2143class VkLayerProperties { 2144 char[VK_MAX_EXTENSION_NAME_SIZE] layerName /// layer name 2145 u32 specVersion /// version of the layer specification implemented 2146 u32 implementationVersion /// build or release version of the layer's library 2147 char[VK_MAX_DESCRIPTION_SIZE] description /// Free-form description of the layer 2148} 2149 2150class VkSubmitInfo { 2151 VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_SUBMIT_INFO 2152 const void* pNext /// Next structure in chain 2153 u32 waitSemaphoreCount 2154 const VkSemaphore* pWaitSemaphores 2155 const VkPipelineStageFlags* pWaitDstStageMask 2156 u32 commandBufferCount 2157 const VkCommandBuffer* pCommandBuffers 2158 u32 signalSemaphoreCount 2159 const VkSemaphore* pSignalSemaphores 2160} 2161 2162class VkApplicationInfo { 2163 VkStructureType sType /// Type of structure. Should be VK_STRUCTURE_TYPE_APPLICATION_INFO 2164 const void* pNext /// Next structure in chain 2165 const char* pApplicationName 2166 u32 applicationVersion 2167 const char* pEngineName 2168 u32 engineVersion 2169 u32 apiVersion 2170} 2171 2172class VkAllocationCallbacks { 2173 void* pUserData 2174 PFN_vkAllocationFunction pfnAllocation 2175 PFN_vkReallocationFunction pfnReallocation 2176 PFN_vkFreeFunction pfnFree 2177 PFN_vkInternalAllocationNotification pfnInternalAllocation 2178 PFN_vkInternalFreeNotification pfnInternalFree 2179} 2180 2181class VkDeviceQueueCreateInfo { 2182 VkStructureType sStype /// Should be VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO 2183 const void* pNext /// Pointer to next structure 2184 VkDeviceQueueCreateFlags flags 2185 u32 queueFamilyIndex 2186 u32 queueCount 2187 const f32* pQueuePriorities 2188} 2189 2190class VkDeviceCreateInfo { 2191 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO 2192 const void* pNext /// Pointer to next structure 2193 VkDeviceCreateFlags flags 2194 u32 queueCreateInfoCount 2195 const VkDeviceQueueCreateInfo* pQueueCreateInfos 2196 u32 enabledLayerCount 2197 const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled 2198 u32 enabledExtensionCount 2199 const char* const* ppEnabledExtensionNames 2200 const VkPhysicalDeviceFeatures* pEnabledFeatures 2201} 2202 2203class VkInstanceCreateInfo { 2204 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO 2205 const void* pNext /// Pointer to next structure 2206 VkInstanceCreateFlags flags 2207 const VkApplicationInfo* pApplicationInfo 2208 u32 enabledLayerCount 2209 const char* const* ppEnabledLayerNames /// Ordered list of layer names to be enabled 2210 u32 enabledExtensionCount 2211 const char* const* ppEnabledExtensionNames /// Extension names to be enabled 2212} 2213 2214class VkQueueFamilyProperties { 2215 VkQueueFlags queueFlags /// Queue flags 2216 u32 queueCount 2217 u32 timestampValidBits 2218 VkExtent3D minImageTransferGranularity 2219} 2220 2221class VkPhysicalDeviceMemoryProperties { 2222 u32 memoryTypeCount 2223 VkMemoryType[VK_MAX_MEMORY_TYPES] memoryTypes 2224 u32 memoryHeapCount 2225 VkMemoryHeap[VK_MAX_MEMORY_HEAPS] memoryHeaps 2226} 2227 2228class VkMemoryAllocateInfo { 2229 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO 2230 const void* pNext /// Pointer to next structure 2231 VkDeviceSize allocationSize /// Size of memory allocation 2232 u32 memoryTypeIndex /// Index of the of the memory type to allocate from 2233} 2234 2235class VkMemoryRequirements { 2236 VkDeviceSize size /// Specified in bytes 2237 VkDeviceSize alignment /// Specified in bytes 2238 u32 memoryTypeBits /// Bitfield of the allowed memory type indices into memoryTypes[] for this object 2239} 2240 2241class VkSparseImageFormatProperties { 2242 VkImageAspectFlagBits aspectMask 2243 VkExtent3D imageGranularity 2244 VkSparseImageFormatFlags flags 2245} 2246 2247class VkSparseImageMemoryRequirements { 2248 VkSparseImageFormatProperties formatProperties 2249 u32 imageMipTailFirstLod 2250 VkDeviceSize imageMipTailSize /// Specified in bytes, must be a multiple of image block size / alignment 2251 VkDeviceSize imageMipTailOffset /// Specified in bytes, must be a multiple of image block size / alignment 2252 VkDeviceSize imageMipTailStride /// Specified in bytes, must be a multiple of image block size / alignment 2253} 2254 2255class VkMemoryType { 2256 VkMemoryPropertyFlags propertyFlags /// Memory properties of this memory type 2257 u32 heapIndex /// Index of the memory heap allocations of this memory type are taken from 2258} 2259 2260class VkMemoryHeap { 2261 VkDeviceSize size /// Available memory in the heap 2262 VkMemoryHeapFlags flags /// Flags for the heap 2263} 2264 2265class VkMappedMemoryRange { 2266 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE 2267 const void* pNext /// Pointer to next structure 2268 VkDeviceMemory memory /// Mapped memory object 2269 VkDeviceSize offset /// Offset within the mapped memory the range starts from 2270 VkDeviceSize size /// Size of the range within the mapped memory 2271} 2272 2273class VkFormatProperties { 2274 VkFormatFeatureFlags linearTilingFeatures /// Format features in case of linear tiling 2275 VkFormatFeatureFlags optimalTilingFeatures /// Format features in case of optimal tiling 2276 VkFormatFeatureFlags bufferFeatures /// Format features supported by buffers 2277} 2278 2279class VkImageFormatProperties { 2280 VkExtent3D maxExtent /// max image dimensions for this resource type 2281 u32 maxMipLevels /// max number of mipmap levels for this resource type 2282 u32 maxArrayLayers /// max array layers for this resource type 2283 VkSampleCountFlags sampleCounts /// supported sample counts for this resource type 2284 VkDeviceSize maxResourceSize /// max size (in bytes) of this resource type 2285} 2286 2287class VkDescriptorImageInfo { 2288 VkSampler sampler 2289 VkImageView imageView 2290 VkImageLayout imageLayout 2291} 2292 2293class VkDescriptorBufferInfo { 2294 VkBuffer buffer /// Buffer used for this descriptor when the descriptor is UNIFORM_BUFFER[_DYNAMIC] 2295 VkDeviceSize offset /// Base offset from buffer start in bytes to update in the descriptor set. 2296 VkDeviceSize range /// Size in bytes of the buffer resource for this descriptor update. 2297} 2298 2299class VkWriteDescriptorSet { 2300 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET 2301 const void* pNext /// Pointer to next structure 2302 VkDescriptorSet dstSet /// Destination descriptor set 2303 u32 dstBinding /// Binding within the destination descriptor set to write 2304 u32 dstArrayElement /// Array element within the destination binding to write 2305 u32 descriptorCount /// Number of descriptors to write (determines the size of the array pointed by <pDescriptors>) 2306 VkDescriptorType descriptorType /// Descriptor type to write (determines which fields of the array pointed by <pDescriptors> are going to be used) 2307 const VkDescriptorImageInfo* pImageInfo 2308 const VkDescriptorBufferInfo* pBufferInfo 2309 const VkBufferView* pTexelBufferView 2310} 2311 2312class VkCopyDescriptorSet { 2313 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET 2314 const void* pNext /// Pointer to next structure 2315 VkDescriptorSet srcSet /// Source descriptor set 2316 u32 srcBinding /// Binding within the source descriptor set to copy from 2317 u32 srcArrayElement /// Array element within the source binding to copy from 2318 VkDescriptorSet dstSet /// Destination descriptor set 2319 u32 dstBinding /// Binding within the destination descriptor set to copy to 2320 u32 dstArrayElement /// Array element within the destination binding to copy to 2321 u32 descriptorCount /// Number of descriptors to copy 2322} 2323 2324class VkBufferCreateInfo { 2325 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO 2326 const void* pNext /// Pointer to next structure. 2327 VkBufferCreateFlags flags /// Buffer creation flags 2328 VkDeviceSize size /// Specified in bytes 2329 VkBufferUsageFlags usage /// Buffer usage flags 2330 VkSharingMode sharingMode 2331 u32 queueFamilyIndexCount 2332 const u32* pQueueFamilyIndices 2333} 2334 2335class VkBufferViewCreateInfo { 2336 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO 2337 const void* pNext /// Pointer to next structure. 2338 VkBufferViewCreateFlags flags 2339 VkBuffer buffer 2340 VkFormat format /// Optionally specifies format of elements 2341 VkDeviceSize offset /// Specified in bytes 2342 VkDeviceSize range /// View size specified in bytes 2343} 2344 2345class VkImageSubresource { 2346 VkImageAspectFlagBits aspectMask 2347 u32 mipLevel 2348 u32 arrayLayer 2349} 2350 2351class VkImageSubresourceRange { 2352 VkImageAspectFlags aspectMask 2353 u32 baseMipLevel 2354 u32 levelCount 2355 u32 baseArrayLayer 2356 u32 layerCount 2357} 2358 2359class VkMemoryBarrier { 2360 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_MEMORY_BARRIER 2361 const void* pNext /// Pointer to next structure. 2362 VkAccessFlags srcAccessMask 2363 VkAccessFlags dstAccessMask 2364} 2365 2366class VkBufferMemoryBarrier { 2367 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER 2368 const void* pNext /// Pointer to next structure. 2369 VkAccessFlags srcAccessMask 2370 VkAccessFlags dstAccessMask 2371 u32 srcQueueFamilyIndex /// Queue family to transition ownership from 2372 u32 dstQueueFamilyIndex /// Queue family to transition ownership to 2373 VkBuffer buffer /// Buffer to sync 2374 VkDeviceSize offset /// Offset within the buffer to sync 2375 VkDeviceSize size /// Amount of bytes to sync 2376} 2377 2378class VkImageMemoryBarrier { 2379 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER 2380 const void* pNext /// Pointer to next structure. 2381 VkAccessFlags srcAccessMask 2382 VkAccessFlags dstAccessMask 2383 VkImageLayout oldLayout /// Current layout of the image 2384 VkImageLayout newLayout /// New layout to transition the image to 2385 u32 srcQueueFamilyIndex /// Queue family to transition ownership from 2386 u32 dstQueueFamilyIndex /// Queue family to transition ownership to 2387 VkImage image /// Image to sync 2388 VkImageSubresourceRange subresourceRange /// Subresource range to sync 2389} 2390 2391class VkImageCreateInfo { 2392 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO 2393 const void* pNext /// Pointer to next structure. 2394 VkImageCreateFlags flags /// Image creation flags 2395 VkImageType imageType 2396 VkFormat format 2397 VkExtent3D extent 2398 u32 mipLevels 2399 u32 arrayLayers 2400 VkSampleCountFlagBits samples 2401 VkImageTiling tiling 2402 VkImageUsageFlags usage /// Image usage flags 2403 VkSharingMode sharingMode /// Cross-queue-family sharing mode 2404 u32 queueFamilyIndexCount /// Number of queue families to share across 2405 const u32* pQueueFamilyIndices /// Array of queue family indices to share across 2406 VkImageLayout initialLayout /// Initial image layout for all subresources 2407} 2408 2409class VkSubresourceLayout { 2410 VkDeviceSize offset /// Specified in bytes 2411 VkDeviceSize size /// Specified in bytes 2412 VkDeviceSize rowPitch /// Specified in bytes 2413 VkDeviceSize arrayPitch /// Specified in bytes 2414 VkDeviceSize depthPitch /// Specified in bytes 2415} 2416 2417class VkImageViewCreateInfo { 2418 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO 2419 const void* pNext /// Pointer to next structure 2420 VkImageViewCreateFlags flags 2421 VkImage image 2422 VkImageViewType viewType 2423 VkFormat format 2424 VkComponentMapping components 2425 VkImageSubresourceRange subresourceRange 2426} 2427 2428class VkBufferCopy { 2429 VkDeviceSize srcOffset /// Specified in bytes 2430 VkDeviceSize dstOffset /// Specified in bytes 2431 VkDeviceSize size /// Specified in bytes 2432} 2433 2434class VkSparseMemoryBind { 2435 VkDeviceSize resourceOffset /// Specified in bytes 2436 VkDeviceSize size /// Specified in bytes 2437 VkDeviceMemory memory 2438 VkDeviceSize memoryOffset /// Specified in bytes 2439 VkSparseMemoryBindFlags flags 2440} 2441 2442class VkSparseImageMemoryBind { 2443 VkImageSubresource subresource 2444 VkOffset3D offset 2445 VkExtent3D extent 2446 VkDeviceMemory memory 2447 VkDeviceSize memoryOffset /// Specified in bytes 2448 VkSparseMemoryBindFlags flags 2449} 2450 2451class VkSparseBufferMemoryBindInfo { 2452 VkBuffer buffer 2453 u32 bindCount 2454 const VkSparseMemoryBind* pBinds 2455} 2456 2457class VkSparseImageOpaqueMemoryBindInfo { 2458 VkImage image 2459 u32 bindCount 2460 const VkSparseMemoryBind* pBinds 2461} 2462 2463class VkSparseImageMemoryBindInfo { 2464 VkImage image 2465 u32 bindCount 2466 const VkSparseMemoryBind* pBinds 2467} 2468 2469class VkBindSparseInfo { 2470 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_BIND_SPARSE_INFO 2471 const void* pNext 2472 u32 waitSemaphoreCount 2473 const VkSemaphore* pWaitSemaphores 2474 u32 numBufferBinds 2475 const VkSparseBufferMemoryBindInfo* pBufferBinds 2476 u32 numImageOpaqueBinds 2477 const VkSparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds 2478 u32 numImageBinds 2479 const VkSparseImageMemoryBindInfo* pImageBinds 2480 u32 signalSemaphoreCount 2481 const VkSemaphore* pSignalSemaphores 2482} 2483 2484class VkImageSubresourceLayers { 2485 VkImageAspectFlags aspectMask 2486 u32 mipLevel 2487 u32 baseArrayLayer 2488 u32 layerCount 2489} 2490 2491class VkImageCopy { 2492 VkImageSubresourceLayers srcSubresource 2493 VkOffset3D srcOffset /// Specified in pixels for both compressed and uncompressed images 2494 VkImageSubresourceLayers dstSubresource 2495 VkOffset3D dstOffset /// Specified in pixels for both compressed and uncompressed images 2496 VkExtent3D extent /// Specified in pixels for both compressed and uncompressed images 2497} 2498 2499class VkImageBlit { 2500 VkImageSubresourceLayers srcSubresource 2501 VkOffset3D[2] srcOffsets 2502 VkImageSubresourceLayers dstSubresource 2503 VkOffset3D[2] dstOffsets 2504} 2505 2506class VkBufferImageCopy { 2507 VkDeviceSize bufferOffset /// Specified in bytes 2508 u32 bufferRowLength /// Specified in texels 2509 u32 bufferImageHeight 2510 VkImageSubresourceLayers imageSubresource 2511 VkOffset3D imageOffset /// Specified in pixels for both compressed and uncompressed images 2512 VkExtent3D imageExtent /// Specified in pixels for both compressed and uncompressed images 2513} 2514 2515class VkImageResolve { 2516 VkImageSubresourceLayers srcSubresource 2517 VkOffset3D srcOffset 2518 VkImageSubresourceLayers dstSubresource 2519 VkOffset3D dstOffset 2520 VkExtent3D extent 2521} 2522 2523class VkShaderModuleCreateInfo { 2524 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO 2525 const void* pNext /// Pointer to next structure 2526 VkShaderModuleCreateFlags flags /// Reserved 2527 platform.size_t codeSize /// Specified in bytes 2528 const u32* pCode /// Binary code of size codeSize 2529} 2530 2531class VkDescriptorSetLayoutBinding { 2532 u32 binding 2533 VkDescriptorType descriptorType /// Type of the descriptors in this binding 2534 u32 descriptorCount /// Number of descriptors in this binding 2535 VkShaderStageFlags stageFlags /// Shader stages this binding is visible to 2536 const VkSampler* pImmutableSamplers /// Immutable samplers (used if descriptor type is SAMPLER or COMBINED_IMAGE_SAMPLER, is either NULL or contains <count> number of elements) 2537} 2538 2539class VkDescriptorSetLayoutCreateInfo { 2540 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO 2541 const void* pNext /// Pointer to next structure 2542 VkDescriptorSetLayoutCreateFlags flags 2543 u32 bindingCount /// Number of bindings in the descriptor set layout 2544 const VkDescriptorSetLayoutBinding* pBindings /// Array of descriptor set layout bindings 2545} 2546 2547class VkDescriptorPoolSize { 2548 VkDescriptorType type 2549 u32 descriptorCount 2550} 2551 2552class VkDescriptorPoolCreateInfo { 2553 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO 2554 const void* pNext /// Pointer to next structure 2555 VkDescriptorPoolCreateFlags flags 2556 u32 maxSets 2557 u32 poolSizeCount 2558 const VkDescriptorPoolSize* pPoolSizes 2559} 2560 2561class VkDescriptorSetAllocateInfo { 2562 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO 2563 const void* pNext /// Pointer to next structure 2564 VkDescriptorPool descriptorPool 2565 u32 setCount 2566 const VkDescriptorSetLayout* pSetLayouts 2567} 2568 2569class VkSpecializationMapEntry { 2570 u32 constantID /// The SpecConstant ID specified in the BIL 2571 u32 offset /// Offset of the value in the data block 2572 platform.size_t size /// Size in bytes of the SpecConstant 2573} 2574 2575class VkSpecializationInfo { 2576 u32 mapEntryCount /// Number of entries in the map 2577 const VkSpecializationMapEntry* pMapEntries /// Array of map entries 2578 platform.size_t dataSize /// Size in bytes of pData 2579 const void* pData /// Pointer to SpecConstant data 2580} 2581 2582class VkPipelineShaderStageCreateInfo { 2583 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO 2584 const void* pNext /// Pointer to next structure 2585 VkPipelineShaderStageCreateFlags flags 2586 VkShaderStageFlagBits stage 2587 VkShaderModule module 2588 const char* pName 2589 const VkSpecializationInfo* pSpecializationInfo 2590} 2591 2592class VkComputePipelineCreateInfo { 2593 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO 2594 const void* pNext /// Pointer to next structure 2595 VkPipelineCreateFlags flags /// Pipeline creation flags 2596 VkPipelineShaderStageCreateInfo stage 2597 VkPipelineLayout layout /// Interface layout of the pipeline 2598 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 2599 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 2600} 2601 2602class VkVertexInputBindingDescription { 2603 u32 binding /// Vertex buffer binding id 2604 u32 stride /// Distance between vertices in bytes (0 = no advancement) 2605 VkVertexInputRate inputRate /// Rate at which binding is incremented 2606} 2607 2608class VkVertexInputAttributeDescription { 2609 u32 location /// location of the shader vertex attrib 2610 u32 binding /// Vertex buffer binding id 2611 VkFormat format /// format of source data 2612 u32 offset /// Offset of first element in bytes from base of vertex 2613} 2614 2615class VkPipelineVertexInputStateCreateInfo { 2616 VkStructureType sType /// Should be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO 2617 const void* pNext /// Pointer to next structure 2618 VkPipelineVertexInputStateCreateFlags flags 2619 u32 vertexBindingDescriptionCount /// number of bindings 2620 const VkVertexInputBindingDescription* pVertexBindingDescriptions 2621 u32 vertexAttributeDescriptionCount /// number of attributes 2622 const VkVertexInputAttributeDescription* pVertexAttributeDescriptions 2623} 2624 2625class VkPipelineInputAssemblyStateCreateInfo { 2626 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO 2627 const void* pNext /// Pointer to next structure 2628 VkPipelineInputAssemblyStateCreateFlags flags 2629 VkPrimitiveTopology topology 2630 VkBool32 primitiveRestartEnable 2631} 2632 2633class VkPipelineTessellationStateCreateInfo { 2634 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO 2635 const void* pNext /// Pointer to next structure 2636 VkPipelineTessellationStateCreateFlags flags 2637 u32 patchControlPoints 2638} 2639 2640class VkPipelineViewportStateCreateInfo { 2641 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO 2642 const void* pNext /// Pointer to next structure 2643 VkPipelineViewportStateCreateFlags flags 2644 u32 viewportCount 2645 const VkViewport* pViewports 2646 u32 scissorCount 2647 const VkRect2D* pScissors 2648} 2649 2650class VkPipelineRasterizationStateCreateInfo { 2651 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO 2652 const void* pNext /// Pointer to next structure 2653 VkPipelineRasterizationStateCreateFlags flags 2654 VkBool32 depthClampEnable 2655 VkBool32 rasterizerDiscardEnable 2656 VkPolygonMode polygonMode /// optional (GL45) 2657 VkCullModeFlags cullMode 2658 VkFrontFace frontFace 2659 VkBool32 depthBiasEnable 2660 f32 depthBiasConstantFactor 2661 f32 depthBiasClamp 2662 f32 depthBiasSlopeFactor 2663 f32 lineWidth 2664} 2665 2666class VkPipelineMultisampleStateCreateInfo { 2667 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO 2668 const void* pNext /// Pointer to next structure 2669 VkPipelineMultisampleStateCreateFlags flags 2670 VkSampleCountFlagBits rasterizationSamples /// Number of samples used for rasterization 2671 VkBool32 sampleShadingEnable /// optional (GL45) 2672 f32 minSampleShading /// optional (GL45) 2673 const VkSampleMask* pSampleMask 2674 VkBool32 alphaToCoverageEnable 2675 VkBool32 alphaToOneEnable 2676} 2677 2678class VkPipelineColorBlendAttachmentState { 2679 VkBool32 blendEnable 2680 VkBlendFactor srcColorBlendFactor 2681 VkBlendFactor dstColorBlendFactor 2682 VkBlendOp colorBlendOp 2683 VkBlendFactor srcAlphaBlendFactor 2684 VkBlendFactor dstAlphaBlendFactor 2685 VkBlendOp alphaBlendOp 2686 VkColorComponentFlags colorWriteMask 2687} 2688 2689class VkPipelineColorBlendStateCreateInfo { 2690 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO 2691 const void* pNext /// Pointer to next structure 2692 VkPipelineColorBlendStateCreateFlags flags 2693 VkBool32 logicOpEnable 2694 VkLogicOp logicOp 2695 u32 attachmentCount /// # of pAttachments 2696 const VkPipelineColorBlendAttachmentState* pAttachments 2697 f32[4] blendConstants 2698} 2699 2700class VkStencilOpState { 2701 VkStencilOp failOp 2702 VkStencilOp passOp 2703 VkStencilOp depthFailOp 2704 VkCompareOp compareOp 2705 u32 compareMask 2706 u32 writeMask 2707 u32 reference 2708} 2709 2710class VkPipelineDepthStencilStateCreateInfo { 2711 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO 2712 const void* pNext /// Pointer to next structure 2713 VkPipelineDepthStencilStateCreateFlags flags 2714 VkBool32 depthTestEnable 2715 VkBool32 depthWriteEnable 2716 VkCompareOp depthCompareOp 2717 VkBool32 depthBoundsTestEnable /// optional (depth_bounds_test) 2718 VkBool32 stencilTestEnable 2719 VkStencilOpState front 2720 VkStencilOpState back 2721 f32 minDepthBounds 2722 f32 maxDepthBounds 2723} 2724 2725class VkPipelineDynamicStateCreateInfo { 2726 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO 2727 const void* pNext /// Pointer to next structure 2728 VkPipelineDynamicStateCreateFlags flags 2729 u32 dynamicStateCount 2730 const VkDynamicState* pDynamicStates 2731} 2732 2733class VkGraphicsPipelineCreateInfo { 2734 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO 2735 const void* pNext /// Pointer to next structure 2736 VkPipelineCreateFlags flags /// Pipeline creation flags 2737 u32 stageCount 2738 const VkPipelineShaderStageCreateInfo* pStages /// One entry for each active shader stage 2739 const VkPipelineVertexInputStateCreateInfo* pVertexInputState 2740 const VkPipelineInputAssemblyStateCreateInfo* pInputAssemblyState 2741 const VkPipelineTessellationStateCreateInfo* pTessellationState 2742 const VkPipelineViewportStateCreateInfo* pViewportState 2743 const VkPipelineRasterizationStateCreateInfo* pRasterizationState 2744 const VkPipelineMultisampleStateCreateInfo* pMultisampleState 2745 const VkPipelineDepthStencilStateCreateInfo* pDepthStencilState 2746 const VkPipelineColorBlendStateCreateInfo* pColorBlendState 2747 const VkPipelineDynamicStateCreateInfo* pDynamicState 2748 VkPipelineLayout layout /// Interface layout of the pipeline 2749 VkRenderPass renderPass 2750 u32 subpass 2751 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 2752 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 2753} 2754 2755class VkPipelineCacheCreateInfo { 2756 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO 2757 const void* pNext /// Pointer to next structure 2758 VkPipelineCacheCreateFlags flags 2759 platform.size_t initialDataSize /// Size of initial data to populate cache, in bytes 2760 const void* pInitialData /// Initial data to populate cache 2761} 2762 2763class VkPushConstantRange { 2764 VkShaderStageFlags stageFlags /// Which stages use the range 2765 u32 offset /// Start of the range, in bytes 2766 u32 size /// Length of the range, in bytes 2767} 2768 2769class VkPipelineLayoutCreateInfo { 2770 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO 2771 const void* pNext /// Pointer to next structure 2772 VkPipelineLayoutCreateFlags flags 2773 u32 descriptorSetCount /// Number of descriptor sets interfaced by the pipeline 2774 const VkDescriptorSetLayout* pSetLayouts /// Array of <setCount> number of descriptor set layout objects defining the layout of the 2775 u32 pushConstantRangeCount /// Number of push-constant ranges used by the pipeline 2776 const VkPushConstantRange* pPushConstantRanges /// Array of pushConstantRangeCount number of ranges used by various shader stages 2777} 2778 2779class VkSamplerCreateInfo { 2780 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO 2781 const void* pNext /// Pointer to next structure 2782 VkSamplerCreateFlags flags 2783 VkFilter magFilter /// Filter mode for magnification 2784 VkFilter minFilter /// Filter mode for minifiation 2785 VkSamplerMipmapMode mipmapMode /// Mipmap selection mode 2786 VkSamplerAddressMode addressModeU 2787 VkSamplerAddressMode addressModeV 2788 VkSamplerAddressMode addressModeW 2789 f32 mipLodBias 2790 VkBool32 anisotropyEnable 2791 f32 maxAnisotropy 2792 VkBool32 compareEnable 2793 VkCompareOp compareOp 2794 f32 minLod 2795 f32 maxLod 2796 VkBorderColor borderColor 2797 VkBool32 unnormalizedCoordinates 2798} 2799 2800class VkCommandPoolCreateInfo { 2801 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO 2802 const void* pNext /// Pointer to next structure 2803 VkCommandPoolCreateFlags flags /// Command pool creation flags 2804 u32 queueFamilyIndex 2805} 2806 2807class VkCommandBufferAllocateInfo { 2808 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO 2809 const void* pNext /// Pointer to next structure 2810 VkCommandPool commandPool 2811 VkCommandBufferLevel level 2812 u32 commandBufferCount 2813} 2814 2815class VkCommandBufferInheritanceInfo { 2816 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO 2817 const void* pNext /// Pointer to next structure 2818 VkRenderPass renderPass /// Render pass for secondary command buffers 2819 u32 subpass 2820 VkFramebuffer framebuffer /// Framebuffer for secondary command buffers 2821 VkBool32 occlusionQueryEnable 2822 VkQueryControlFlags queryFlags 2823 VkQueryPipelineStatisticFlags pipelineStatistics 2824} 2825 2826class VkCommandBufferBeginInfo { 2827 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO 2828 const void* pNext /// Pointer to next structure 2829 VkCommandBufferUsageFlags flags /// Command buffer usage flags 2830 const VkCommandBufferInheritanceInfo* pInheritanceInfo 2831} 2832 2833class VkRenderPassBeginInfo { 2834 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO 2835 const void* pNext /// Pointer to next structure 2836 VkRenderPass renderPass 2837 VkFramebuffer framebuffer 2838 VkRect2D renderArea 2839 u32 clearValueCount 2840 const VkClearValue* pClearValues 2841} 2842 2843@union 2844/// Union allowing specification of floating point, integer, or unsigned integer color data. Actual value selected is based on image/attachment being cleared. 2845class VkClearColorValue { 2846 f32[4] float32 2847 s32[4] int32 2848 u32[4] uint32 2849} 2850 2851class VkClearDepthStencilValue { 2852 f32 depth 2853 u32 stencil 2854} 2855 2856@union 2857/// Union allowing specification of color, depth, and stencil color values. Actual value selected is based on attachment being cleared. 2858class VkClearValue { 2859 VkClearColorValue color 2860 VkClearDepthStencilValue depthStencil 2861} 2862 2863class VkClearAttachment { 2864 VkImageAspectFlags aspectMask 2865 u32 colorAttachment 2866 VkClearValue clearValue 2867} 2868 2869class VkAttachmentDescription { 2870 VkAttachmentDescriptionFlags flags 2871 VkFormat format 2872 VkSampleCountFlagBits samples 2873 VkAttachmentLoadOp loadOp /// Load op for color or depth data 2874 VkAttachmentStoreOp storeOp /// Store op for color or depth data 2875 VkAttachmentLoadOp stencilLoadOp /// Load op for stencil data 2876 VkAttachmentStoreOp stencilStoreOp /// Store op for stencil data 2877 VkImageLayout initialLayout 2878 VkImageLayout finalLayout 2879} 2880 2881class VkAttachmentReference { 2882 u32 attachment 2883 VkImageLayout layout 2884} 2885 2886class VkSubpassDescription { 2887 VkSubpassDescriptionFlags flags 2888 VkPipelineBindPoint pipelineBindPoint /// Must be VK_PIPELINE_BIND_POINT_GRAPHICS for now 2889 u32 inputAttachmentCount 2890 const VkAttachmentReference* pInputAttachments 2891 u32 colorAttachmentCount 2892 const VkAttachmentReference* pColorAttachments 2893 const VkAttachmentReference* pResolveAttachments 2894 const VkAttachmentReference* pDepthStencilAttachment 2895 u32 preserveAttachmentCount 2896 const u32* pPreserveAttachments 2897} 2898 2899class VkSubpassDependency { 2900 u32 srcSubpass 2901 u32 dstSubpass 2902 VkPipelineStageFlags srcStageMask 2903 VkPipelineStageFlags dstStageMask 2904 VkAccessFlags srcAccessMask 2905 VkAccessFlags dstAccessMask 2906 VkDependencyFlags dependencyFlags 2907} 2908 2909class VkRenderPassCreateInfo { 2910 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO 2911 const void* pNext /// Pointer to next structure 2912 VkRenderPassCreateFlags flags 2913 u32 attachmentCount 2914 const VkAttachmentDescription* pAttachments 2915 u32 subpassCount 2916 const VkSubpassDescription* pSubpasses 2917 u32 dependencyCount 2918 const VkSubpassDependency* pDependencies 2919} 2920 2921class VkEventCreateInfo { 2922 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_EVENT_CREATE_INFO 2923 const void* pNext /// Pointer to next structure 2924 VkEventCreateFlags flags /// Event creation flags 2925} 2926 2927class VkFenceCreateInfo { 2928 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FENCE_CREATE_INFO 2929 const void* pNext /// Pointer to next structure 2930 VkFenceCreateFlags flags /// Fence creation flags 2931} 2932 2933class VkPhysicalDeviceFeatures { 2934 VkBool32 robustBufferAccess /// out of bounds buffer accesses are well defined 2935 VkBool32 fullDrawIndexUint32 /// full 32-bit range of indices for indexed draw calls 2936 VkBool32 imageCubeArray /// image views which are arrays of cube maps 2937 VkBool32 independentBlend /// blending operations are controlled per-attachment 2938 VkBool32 geometryShader /// geometry stage 2939 VkBool32 tessellationShader /// tessellation control and evaluation stage 2940 VkBool32 sampleRateShading /// per-sample shading and interpolation 2941 VkBool32 dualSrcBlend /// blend operations which take two sources 2942 VkBool32 logicOp /// logic operations 2943 VkBool32 multiDrawIndirect /// multi draw indirect 2944 VkBool32 drawIndirectFirstInstance 2945 VkBool32 depthClamp /// depth clamping 2946 VkBool32 depthBiasClamp /// depth bias clamping 2947 VkBool32 fillModeNonSolid /// point and wireframe fill modes 2948 VkBool32 depthBounds /// depth bounds test 2949 VkBool32 wideLines /// lines with width greater than 1 2950 VkBool32 largePoints /// points with size greater than 1 2951 VkBool32 alphaToOne /// The fragment alpha channel can be forced to maximum representable alpha value 2952 VkBool32 multiViewport 2953 VkBool32 samplerAnisotropy 2954 VkBool32 textureCompressionETC2 /// ETC texture compression formats 2955 VkBool32 textureCompressionASTC_LDR /// ASTC LDR texture compression formats 2956 VkBool32 textureCompressionBC /// BC1-7 texture compressed formats 2957 VkBool32 occlusionQueryPrecise 2958 VkBool32 pipelineStatisticsQuery /// pipeline statistics query 2959 VkBool32 vertexPipelineStoresAndAtomics 2960 VkBool32 fragmentStoresAndAtomics 2961 VkBool32 shaderTessellationAndGeometryPointSize 2962 VkBool32 shaderImageGatherExtended /// texture gather with run-time values and independent offsets 2963 VkBool32 shaderStorageImageExtendedFormats /// the extended set of formats can be used for storage images 2964 VkBool32 shaderStorageImageMultisample /// multisample images can be used for storage images 2965 VkBool32 shaderStorageImageReadWithoutFormat 2966 VkBool32 shaderStorageImageWriteWithoutFormat 2967 VkBool32 shaderUniformBufferArrayDynamicIndexing /// arrays of uniform buffers can be accessed with dynamically uniform indices 2968 VkBool32 shaderSampledImageArrayDynamicIndexing /// arrays of sampled images can be accessed with dynamically uniform indices 2969 VkBool32 shaderStorageBufferArrayDynamicIndexing /// arrays of storage buffers can be accessed with dynamically uniform indices 2970 VkBool32 shaderStorageImageArrayDynamicIndexing /// arrays of storage images can be accessed with dynamically uniform indices 2971 VkBool32 shaderClipDistance /// clip distance in shaders 2972 VkBool32 shaderCullDistance /// cull distance in shaders 2973 VkBool32 shaderFloat64 /// 64-bit floats (doubles) in shaders 2974 VkBool32 shaderInt64 /// 64-bit integers in shaders 2975 VkBool32 shaderInt16 /// 16-bit integers in shaders 2976 VkBool32 shaderResourceResidency /// shader can use texture operations that return resource residency information (requires sparseNonResident support) 2977 VkBool32 shaderResourceMinLod /// shader can use texture operations that specify minimum resource LOD 2978 VkBool32 sparseBinding /// Sparse resources support: Resource memory can be managed at opaque page level rather than object level 2979 VkBool32 sparseResidencyBuffer /// Sparse resources support: GPU can access partially resident buffers 2980 VkBool32 sparseResidencyImage2D /// Sparse resources support: GPU can access partially resident 2D (non-MSAA non-DepthStencil) images 2981 VkBool32 sparseResidencyImage3D /// Sparse resources support: GPU can access partially resident 3D images 2982 VkBool32 sparseResidency2Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 2 samples 2983 VkBool32 sparseResidency4Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 4 samples 2984 VkBool32 sparseResidency8Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 8 samples 2985 VkBool32 sparseResidency16Samples /// Sparse resources support: GPU can access partially resident MSAA 2D images with 16 samples 2986 VkBool32 sparseResidencyAliased /// Sparse resources support: GPU can correctly access data aliased into multiple locations (opt-in) 2987 VkBool32 variableMultisampleRate 2988 VkBool32 inheritedQueries 2989} 2990 2991class VkPhysicalDeviceLimits { 2992 /// resource maximum sizes 2993 u32 maxImageDimension1D /// max 1D image dimension 2994 u32 maxImageDimension2D /// max 2D image dimension 2995 u32 maxImageDimension3D /// max 3D image dimension 2996 u32 maxImageDimensionCube /// max cubemap image dimension 2997 u32 maxImageArrayLayers /// max layers for image arrays 2998 u32 maxTexelBufferElements 2999 u32 maxUniformBufferRange /// max uniform buffer size (bytes) 3000 u32 maxStorageBufferRange /// max storage buffer size (bytes) 3001 u32 maxPushConstantsSize /// max size of the push constants pool (bytes) 3002 /// memory limits 3003 u32 maxMemoryAllocationCount /// max number of device memory allocations supported 3004 u32 maxSamplerAllocationCount 3005 VkDeviceSize bufferImageGranularity /// Granularity (in bytes) at which buffers and images can be bound to adjacent memory for simultaneous usage 3006 VkDeviceSize sparseAddressSpaceSize /// Total address space available for sparse allocations (bytes) 3007 /// descriptor set limits 3008 u32 maxBoundDescriptorSets /// max number of descriptors sets that can be bound to a pipeline 3009 u32 maxPerStageDescriptorSamplers /// max num of samplers allowed per-stage in a descriptor set 3010 u32 maxPerStageDescriptorUniformBuffers /// max num of uniform buffers allowed per-stage in a descriptor set 3011 u32 maxPerStageDescriptorStorageBuffers /// max num of storage buffers allowed per-stage in a descriptor set 3012 u32 maxPerStageDescriptorSampledImages /// max num of sampled images allowed per-stage in a descriptor set 3013 u32 maxPerStageDescriptorStorageImages /// max num of storage images allowed per-stage in a descriptor set 3014 u32 maxPerStageDescriptorInputAttachments 3015 u32 maxPerStageResources 3016 u32 maxDescriptorSetSamplers /// max num of samplers allowed in all stages in a descriptor set 3017 u32 maxDescriptorSetUniformBuffers /// max num of uniform buffers allowed in all stages in a descriptor set 3018 u32 maxDescriptorSetUniformBuffersDynamic /// max num of dynamic uniform buffers allowed in all stages in a descriptor set 3019 u32 maxDescriptorSetStorageBuffers /// max num of storage buffers allowed in all stages in a descriptor set 3020 u32 maxDescriptorSetStorageBuffersDynamic /// max num of dynamic storage buffers allowed in all stages in a descriptor set 3021 u32 maxDescriptorSetSampledImages /// max num of sampled images allowed in all stages in a descriptor set 3022 u32 maxDescriptorSetStorageImages /// max num of storage images allowed in all stages in a descriptor set 3023 u32 maxDescriptorSetInputAttachments 3024 /// vertex stage limits 3025 u32 maxVertexInputAttributes /// max num of vertex input attribute slots 3026 u32 maxVertexInputBindings /// max num of vertex input binding slots 3027 u32 maxVertexInputAttributeOffset /// max vertex input attribute offset added to vertex buffer offset 3028 u32 maxVertexInputBindingStride /// max vertex input binding stride 3029 u32 maxVertexOutputComponents /// max num of output components written by vertex shader 3030 /// tessellation control stage limits 3031 u32 maxTessellationGenerationLevel /// max level supported by tess primitive generator 3032 u32 maxTessellationPatchSize /// max patch size (vertices) 3033 u32 maxTessellationControlPerVertexInputComponents /// max num of input components per-vertex in TCS 3034 u32 maxTessellationControlPerVertexOutputComponents /// max num of output components per-vertex in TCS 3035 u32 maxTessellationControlPerPatchOutputComponents /// max num of output components per-patch in TCS 3036 u32 maxTessellationControlTotalOutputComponents /// max total num of per-vertex and per-patch output components in TCS 3037 u32 maxTessellationEvaluationInputComponents /// max num of input components per vertex in TES 3038 u32 maxTessellationEvaluationOutputComponents /// max num of output components per vertex in TES 3039 /// geometry stage limits 3040 u32 maxGeometryShaderInvocations /// max invocation count supported in geometry shader 3041 u32 maxGeometryInputComponents /// max num of input components read in geometry stage 3042 u32 maxGeometryOutputComponents /// max num of output components written in geometry stage 3043 u32 maxGeometryOutputVertices /// max num of vertices that can be emitted in geometry stage 3044 u32 maxGeometryTotalOutputComponents /// max total num of components (all vertices) written in geometry stage 3045 /// fragment stage limits 3046 u32 maxFragmentInputComponents /// max num of input compontents read in fragment stage 3047 u32 maxFragmentOutputAttachments /// max num of output attachments written in fragment stage 3048 u32 maxFragmentDualSrcAttachments /// max num of output attachments written when using dual source blending 3049 u32 maxFragmentCombinedOutputResources /// max total num of storage buffers, storage images and output buffers 3050 /// compute stage limits 3051 u32 maxComputeSharedMemorySize /// max total storage size of work group local storage (bytes) 3052 u32[3] maxComputeWorkGroupCount /// max num of compute work groups that may be dispatched by a single command (x,y,z) 3053 u32 maxComputeWorkGroupInvocations /// max total compute invocations in a single local work group 3054 u32[3] maxComputeWorkGroupSize /// max local size of a compute work group (x,y,z) 3055 3056 u32 subPixelPrecisionBits /// num bits of subpixel precision in screen x and y 3057 u32 subTexelPrecisionBits /// num bits of subtexel precision 3058 u32 mipmapPrecisionBits /// num bits of mipmap precision 3059 3060 u32 maxDrawIndexedIndexValue /// max index value for indexed draw calls (for 32-bit indices) 3061 u32 maxDrawIndirectCount 3062 3063 f32 maxSamplerLodBias /// max absolute sampler level of detail bias 3064 f32 maxSamplerAnisotropy /// max degree of sampler anisotropy 3065 3066 u32 maxViewports /// max number of active viewports 3067 u32[2] maxViewportDimensions /// max viewport dimensions (x,y) 3068 f32[2] viewportBoundsRange /// viewport bounds range (min,max) 3069 u32 viewportSubPixelBits /// num bits of subpixel precision for viewport 3070 3071 platform.size_t minMemoryMapAlignment /// min required alignment of pointers returned by MapMemory (bytes) 3072 VkDeviceSize minTexelBufferOffsetAlignment /// min required alignment for texel buffer offsets (bytes) 3073 VkDeviceSize minUniformBufferOffsetAlignment /// min required alignment for uniform buffer sizes and offsets (bytes) 3074 VkDeviceSize minStorageBufferOffsetAlignment /// min required alignment for storage buffer offsets (bytes) 3075 3076 s32 minTexelOffset /// min texel offset for OpTextureSampleOffset 3077 u32 maxTexelOffset /// max texel offset for OpTextureSampleOffset 3078 s32 minTexelGatherOffset /// min texel offset for OpTextureGatherOffset 3079 u32 maxTexelGatherOffset /// max texel offset for OpTextureGatherOffset 3080 f32 minInterpolationOffset /// furthest negative offset for interpolateAtOffset 3081 f32 maxInterpolationOffset /// furthest positive offset for interpolateAtOffset 3082 u32 subPixelInterpolationOffsetBits /// num of subpixel bits for interpolateAtOffset 3083 3084 u32 maxFramebufferWidth /// max width for a framebuffer 3085 u32 maxFramebufferHeight /// max height for a framebuffer 3086 u32 maxFramebufferLayers /// max layer count for a layered framebuffer 3087 VkSampleCountFlags framebufferColorSampleCounts 3088 VkSampleCountFlags framebufferDepthSampleCounts 3089 VkSampleCountFlags framebufferStencilSampleCounts 3090 VkSampleCountFlags framebufferNoAttachmentSampleCounts 3091 u32 maxColorAttachments /// max num of framebuffer color attachments 3092 3093 VkSampleCountFlags sampledImageColorSampleCounts 3094 VkSampleCountFlags sampledImageIntegerSampleCounts 3095 VkSampleCountFlags sampledImageDepthSampleCounts 3096 VkSampleCountFlags sampledImageStencilSampleCounts 3097 VkSampleCountFlags storageImageSampleCounts 3098 u32 maxSampleMaskWords /// max num of sample mask words 3099 VkBool32 timestampComputeAndGraphics 3100 3101 f32 timestampPeriod 3102 3103 u32 maxClipDistances /// max number of clip distances 3104 u32 maxCullDistances /// max number of cull distances 3105 u32 maxCombinedClipAndCullDistances /// max combined number of user clipping 3106 3107 u32 discreteQueuePriorities 3108 3109 f32[2] pointSizeRange /// range (min,max) of supported point sizes 3110 f32[2] lineWidthRange /// range (min,max) of supported line widths 3111 f32 pointSizeGranularity /// granularity of supported point sizes 3112 f32 lineWidthGranularity /// granularity of supported line widths 3113 VkBool32 strictLines 3114 VkBool32 standardSampleLocations 3115 3116 VkDeviceSize optimalBufferCopyOffsetAlignment 3117 VkDeviceSize optimalBufferCopyRowPitchAlignment 3118 VkDeviceSize nonCoherentAtomSize 3119} 3120 3121class VkPhysicalDeviceSparseProperties { 3122 VkBool32 residencyStandard2DBlockShape /// Sparse resources support: GPU will access all 2D (single sample) sparse resources using the standard block shapes (based on pixel format) 3123 VkBool32 residencyStandard2DMultisampleBlockShape /// Sparse resources support: GPU will access all 2D (multisample) sparse resources using the standard block shapes (based on pixel format) 3124 VkBool32 residencyStandard3DBlockShape /// Sparse resources support: GPU will access all 3D sparse resources using the standard block shapes (based on pixel format) 3125 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 3126 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 3127} 3128 3129class VkSemaphoreCreateInfo { 3130 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO 3131 const void* pNext /// Pointer to next structure 3132 VkSemaphoreCreateFlags flags /// Semaphore creation flags 3133} 3134 3135class VkQueryPoolCreateInfo { 3136 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO 3137 const void* pNext /// Pointer to next structure 3138 VkQueryPoolCreateFlags flags 3139 VkQueryType queryType 3140 u32 queryCount 3141 VkQueryPipelineStatisticFlags pipelineStatistics /// Optional 3142} 3143 3144class VkFramebufferCreateInfo { 3145 VkStructureType sType /// Must be VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO 3146 const void* pNext /// Pointer to next structure 3147 VkFramebufferCreateFlags flags 3148 VkRenderPass renderPass 3149 u32 attachmentCount 3150 const VkImageView* pAttachments 3151 u32 width 3152 u32 height 3153 u32 layers 3154} 3155 3156class VkDrawIndirectCommand { 3157 u32 vertexCount 3158 u32 instanceCount 3159 u32 firstVertex 3160 u32 firstInstance 3161} 3162 3163class VkDrawIndexedIndirectCommand { 3164 u32 indexCount 3165 u32 instanceCount 3166 u32 firstIndex 3167 s32 vertexOffset 3168 u32 firstInstance 3169} 3170 3171class VkDispatchIndirectCommand { 3172 u32 x 3173 u32 y 3174 u32 z 3175} 3176 3177@extension("VK_KHR_surface") // 1 3178class VkSurfaceCapabilitiesKHR { 3179 u32 minImageCount 3180 u32 maxImageCount 3181 VkExtent2D currentExtent 3182 VkExtent2D minImageExtent 3183 VkExtent2D maxImageExtent 3184 u32 maxImageArrayLayers 3185 VkSurfaceTransformFlagsKHR supportedTransforms 3186 VkSurfaceTransformFlagBitsKHR currentTransform 3187 VkCompositeAlphaFlagsKHR supportedCompositeAlpha 3188 VkImageUsageFlags supportedUsageFlags 3189} 3190 3191@extension("VK_KHR_surface") // 1 3192class VkSurfaceFormatKHR { 3193 VkFormat format 3194 VkColorSpaceKHR colorSpace 3195} 3196 3197@extension("VK_KHR_swapchain") // 2 3198class VkSwapchainCreateInfoKHR { 3199 VkStructureType sType 3200 const void* pNext 3201 VkSwapchainCreateFlagsKHR flags 3202 VkSurfaceKHR surface 3203 u32 minImageCount 3204 VkFormat imageFormat 3205 VkColorSpaceKHR imageColorSpace 3206 VkExtent2D imageExtent 3207 u32 imageArrayLayers 3208 VkImageUsageFlags imageUsage 3209 VkSharingMode sharingMode 3210 u32 queueFamilyIndexCount 3211 const u32* pQueueFamilyIndices 3212 VkSurfaceTransformFlagBitsKHR preTransform 3213 VkCompositeAlphaFlagBitsKHR compositeAlpha 3214 VkPresentModeKHR presentMode 3215 VkBool32 clipped 3216 VkSwapchainKHR oldSwapchain 3217} 3218 3219@extension("VK_KHR_swapchain") // 2 3220class VkPresentInfoKHR { 3221 VkStructureType sType 3222 const void* pNext 3223 u32 waitSemaphoreCount 3224 const VkSemaphore* pWaitSemaphores 3225 u32 swapchainCount 3226 const VkSwapchainKHR* pSwapchains 3227 const u32* pImageIndices 3228 VkResult* pResults 3229} 3230 3231@extension("VK_KHR_display") // 3 3232class VkDisplayPropertiesKHR { 3233 VkDisplayKHR display 3234 const char* displayName 3235 VkExtent2D physicalDimensions 3236 VkExtent2D physicalResolution 3237 VkSurfaceTransformFlagsKHR supportedTransforms 3238 VkBool32 planeReorderPossible 3239 VkBool32 persistentContent 3240} 3241 3242@extension("VK_KHR_display") // 3 3243class VkDisplayModeParametersKHR { 3244 VkExtent2D visibleRegion 3245 u32 refreshRate 3246} 3247 3248@extension("VK_KHR_display") // 3 3249class VkDisplayModePropertiesKHR { 3250 VkDisplayModeKHR displayMode 3251 VkDisplayModeParametersKHR parameters 3252} 3253 3254@extension("VK_KHR_display") // 3 3255class VkDisplayModeCreateInfoKHR { 3256 VkStructureType sType 3257 const void* pNext 3258 VkDisplayModeCreateFlagsKHR flags 3259 VkDisplayModeParametersKHR parameters 3260} 3261 3262@extension("VK_KHR_display") // 3 3263class VkDisplayPlanePropertiesKHR { 3264 VkDisplayKHR currentDisplay 3265 u32 currentStackIndex 3266} 3267 3268@extension("VK_KHR_display") // 3 3269class VkDisplayPlaneCapabilitiesKHR { 3270 VkDisplayPlaneAlphaFlagsKHR supportedAlpha 3271 VkOffset2D minSrcPosition 3272 VkOffset2D maxSrcPosition 3273 VkExtent2D minSrcExtent 3274 VkExtent2D maxSrcExtent 3275 VkOffset2D minDstPosition 3276 VkOffset2D maxDstPosition 3277 VkExtent2D minDstExtent 3278 VkExtent2D maxDstExtent 3279} 3280 3281@extension("VK_KHR_display") // 3 3282class VkDisplaySurfaceCreateInfoKHR { 3283 VkStructureType sType 3284 const void* pNext 3285 VkDisplaySurfaceCreateFlagsKHR flags 3286 VkDisplayModeKHR displayMode 3287 u32 planeIndex 3288 u32 planeStackIndex 3289 VkSurfaceTransformFlagBitsKHR transform 3290 f32 globalAlpha 3291 VkDisplayPlaneAlphaFlagBitsKHR alphaMode 3292 VkExtent2D imageExtent 3293} 3294 3295@extension("VK_KHR_display_swapchain") // 4 3296class VkDisplayPresentInfoKHR { 3297 VkStructureType sType 3298 const void* pNext 3299 VkRect2D srcRect 3300 VkRect2D dstRect 3301 VkBool32 persistent 3302} 3303 3304@extension("VK_KHR_xlib_surface") // 5 3305class VkXlibSurfaceCreateInfoKHR { 3306 VkStructureType sType 3307 const void* pNext 3308 VkXlibSurfaceCreateFlagsKHR flags 3309 platform.Display* dpy 3310 platform.Window window 3311} 3312 3313@extension("VK_KHR_xcb_surface") // 6 3314class VkXcbSurfaceCreateInfoKHR { 3315 VkStructureType sType 3316 const void* pNext 3317 VkXcbSurfaceCreateFlagsKHR flags 3318 platform.xcb_connection_t* connection 3319 platform.xcb_window_t window 3320} 3321 3322@extension("VK_KHR_wayland_surface") // 7 3323class VkWaylandSurfaceCreateInfoKHR { 3324 VkStructureType sType 3325 const void* pNext 3326 VkWaylandSurfaceCreateFlagsKHR flags 3327 platform.wl_display* display 3328 platform.wl_surface* surface 3329} 3330 3331@extension("VK_KHR_mir_surface") // 8 3332class VkMirSurfaceCreateInfoKHR { 3333 VkStructureType sType 3334 const void* pNext 3335 VkMirSurfaceCreateFlagsKHR flags 3336 platform.MirConnection* connection 3337 platform.MirSurface* mirSurface 3338} 3339 3340@extension("VK_KHR_android_surface") // 9 3341class VkAndroidSurfaceCreateInfoKHR { 3342 VkStructureType sType 3343 const void* pNext 3344 VkAndroidSurfaceCreateFlagsKHR flags 3345 platform.ANativeWindow* window 3346} 3347 3348@extension("VK_KHR_win32_surface") // 10 3349class VkWin32SurfaceCreateInfoKHR { 3350 VkStructureType sType 3351 const void* pNext 3352 VkWin32SurfaceCreateFlagsKHR flags 3353 platform.HINSTANCE hinstance 3354 platform.HWND hwnd 3355} 3356 3357@extension("VK_ANDROID_native_buffer") // 11 3358@internal class Gralloc1Usage { 3359 u64 consumer 3360 u64 producer 3361} 3362 3363@extension("VK_ANDROID_native_buffer") // 11 3364class VkNativeBufferANDROID { 3365 VkStructureType sType 3366 const void* pNext 3367 platform.buffer_handle_t handle 3368 s32 stride 3369 s32 format 3370 s32 usage 3371 Gralloc1Usage usage2 3372} 3373 3374@extension("VK_ANDROID_native_buffer") // 11 3375class VkSwapchainImageCreateInfoANDROID { 3376 VkStructureType sType 3377 const void* pNext 3378 VkSwapchainImageUsageFlagsANDROID flags 3379} 3380 3381@extension("VK_ANDROID_native_buffer") // 11 3382class VkPhysicalDevicePresentationPropertiesANDROID { 3383 VkStructureType sType 3384 void* pNext 3385 VkBool32 sharedImage 3386} 3387 3388@extension("VK_EXT_debug_report") // 12 3389class VkDebugReportCallbackCreateInfoEXT { 3390 VkStructureType sType 3391 const void* pNext 3392 VkDebugReportFlagsEXT flags 3393 PFN_vkDebugReportCallbackEXT pfnCallback 3394 void* pUserData 3395} 3396 3397@extension("VK_AMD_rasterization_order") // 19 3398class VkPipelineRasterizationStateRasterizationOrderAMD { 3399 VkStructureType sType 3400 const void* pNext 3401 VkRasterizationOrderAMD rasterizationOrder 3402} 3403 3404@extension("VK_EXT_debug_marker") // 23 3405class VkDebugMarkerObjectNameInfoEXT { 3406 VkStructureType sType 3407 const void* pNext 3408 VkDebugReportObjectTypeEXT objectType 3409 u64 object 3410 const char* pObjectName 3411} 3412 3413@extension("VK_EXT_debug_marker") // 23 3414class VkDebugMarkerObjectTagInfoEXT { 3415 VkStructureType sType 3416 const void* pNext 3417 VkDebugReportObjectTypeEXT objectType 3418 u64 object 3419 u64 tagName 3420 platform.size_t tagSize 3421 const void* pTag 3422} 3423 3424@extension("VK_EXT_debug_marker") // 23 3425class VkDebugMarkerMarkerInfoEXT { 3426 VkStructureType sType 3427 const void* pNext 3428 const char* pMarkerName 3429 f32[4] color 3430} 3431 3432@extension("VK_NV_dedicated_allocation") // 27 3433class VkDedicatedAllocationImageCreateInfoNV { 3434 VkStructureType sType 3435 const void* pNext 3436 VkBool32 dedicatedAllocation 3437} 3438 3439@extension("VK_NV_dedicated_allocation") // 27 3440class VkDedicatedAllocationBufferCreateInfoNV { 3441 VkStructureType sType 3442 const void* pNext 3443 VkBool32 dedicatedAllocation 3444} 3445 3446@extension("VK_NV_dedicated_allocation") // 27 3447class VkDedicatedAllocationMemoryAllocateInfoNV { 3448 VkStructureType sType 3449 const void* pNext 3450 VkImage image 3451 VkBuffer buffer 3452} 3453 3454@extension("VK_KHX_multiview") // 54 3455class VkRenderPassMultiviewCreateInfoKHX { 3456 VkStructureType sType 3457 const void* pNext 3458 u32 subpassCount 3459 const u32* pViewMasks 3460 u32 dependencyCount 3461 const s32* pViewOffsets 3462 u32 correlationMaskCount 3463 const u32* pCorrelationMasks 3464} 3465 3466@extension("VK_KHX_multiview") // 54 3467class VkPhysicalDeviceMultiviewFeaturesKHX { 3468 VkStructureType sType 3469 void* pNext 3470 VkBool32 multiview 3471 VkBool32 multiviewGeometryShader 3472 VkBool32 multiviewTessellationShader 3473} 3474 3475@extension("VK_KHX_multiview") // 54 3476class VkPhysicalDeviceMultiviewPropertiesKHX { 3477 VkStructureType sType 3478 void* pNext 3479 u32 maxMultiviewViewCount 3480 u32 maxMultiviewInstanceIndex 3481} 3482 3483@extension("VK_NV_external_memory_capabilities") // 56 3484class VkExternalImageFormatPropertiesNV { 3485 VkImageFormatProperties imageFormatProperties 3486 VkExternalMemoryFeatureFlagsNV externalMemoryFeatures 3487 VkExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes 3488 VkExternalMemoryHandleTypeFlagsNV compatibleHandleTypes 3489} 3490 3491@extension("VK_NV_external_memory") // 57 3492class VkExternalMemoryImageCreateInfoNV { 3493 VkStructureType sType 3494 const void* pNext 3495 VkExternalMemoryHandleTypeFlagsNV handleTypes 3496} 3497 3498@extension("VK_NV_external_memory") // 57 3499class VkExportMemoryAllocateInfoNV { 3500 VkStructureType sType 3501 const void* pNext 3502 VkExternalMemoryHandleTypeFlagsNV handleTypes 3503} 3504 3505@extension("VK_NV_external_memory_win32") // 58 3506class VkImportMemoryWin32HandleInfoNV { 3507 VkStructureType sType 3508 const void* pNext 3509 VkExternalMemoryHandleTypeFlagsNV handleType 3510 platform.HANDLE handle 3511} 3512 3513@extension("VK_NV_external_memory_win32") // 58 3514class VkExportMemoryWin32HandleInfoNV { 3515 VkStructureType sType 3516 const void* pNext 3517 const platform.SECURITY_ATTRIBUTES* pAttributes 3518 platform.DWORD dwAccess 3519} 3520 3521@extension("VK_NV_win32_keyed_mutex") // 59 3522class VkWin32KeyedMutexAcquireReleaseInfoNV { 3523 VkStructureType sType 3524 const void* pNext 3525 u32 acquireCount 3526 const VkDeviceMemory* pAcquireSyncs 3527 const u64* pAcquireKeys 3528 const u32* pAcquireTimeoutMilliseconds 3529 u32 releaseCount 3530 const VkDeviceMemory* pReleaseSyncs 3531 const u64* pReleaseKeys 3532} 3533 3534@extension("VK_KHR_get_physical_device_properties2") // 60 3535class VkPhysicalDeviceFeatures2KHR { 3536 VkStructureType sType 3537 void* pNext 3538 VkPhysicalDeviceFeatures features 3539} 3540 3541@extension("VK_KHR_get_physical_device_properties2") // 60 3542class VkPhysicalDeviceProperties2KHR { 3543 VkStructureType sType 3544 void* pNext 3545 VkPhysicalDeviceProperties properties 3546} 3547 3548@extension("VK_KHR_get_physical_device_properties2") // 60 3549class VkFormatProperties2KHR { 3550 VkStructureType sType 3551 void* pNext 3552 VkFormatProperties formatProperties 3553} 3554 3555@extension("VK_KHR_get_physical_device_properties2") // 60 3556class VkImageFormatProperties2KHR { 3557 VkStructureType sType 3558 void* pNext 3559 VkImageFormatProperties imageFormatProperties 3560} 3561 3562@extension("VK_KHR_get_physical_device_properties2") // 60 3563class VkPhysicalDeviceImageFormatInfo2KHR { 3564 VkStructureType sType 3565 const void* pNext 3566 VkFormat format 3567 VkImageType type 3568 VkImageTiling tiling 3569 VkImageUsageFlags usage 3570 VkImageCreateFlags flags 3571} 3572 3573@extension("VK_KHR_get_physical_device_properties2") // 60 3574class VkQueueFamilyProperties2KHR { 3575 VkStructureType sType 3576 void* pNext 3577 VkQueueFamilyProperties queueFamilyProperties 3578} 3579 3580@extension("VK_KHR_get_physical_device_properties2") // 60 3581class VkPhysicalDeviceMemoryProperties2KHR { 3582 VkStructureType sType 3583 void* pNext 3584 VkPhysicalDeviceMemoryProperties memoryProperties 3585} 3586 3587@extension("VK_KHR_get_physical_device_properties2") // 60 3588class VkSparseImageFormatProperties2KHR { 3589 VkStructureType sType 3590 void* pNext 3591 VkSparseImageFormatProperties properties 3592} 3593 3594@extension("VK_KHR_get_physical_device_properties2") // 60 3595class VkPhysicalDeviceSparseImageFormatInfo2KHR { 3596 VkStructureType sType 3597 const void* pNext 3598 VkFormat format 3599 VkImageType type 3600 VkSampleCountFlagBits samples 3601 VkImageUsageFlags usage 3602 VkImageTiling tiling 3603} 3604 3605@extension("VK_KHX_device_group") // 61 3606class VkMemoryAllocateFlagsInfoKHX { 3607 VkStructureType sType 3608 const void* pNext 3609 VkMemoryAllocateFlagsKHX flags 3610 u32 deviceMask 3611} 3612 3613@extension("VK_KHX_device_group") // 61 3614class VkBindBufferMemoryInfoKHX { 3615 VkStructureType sType 3616 const void* pNext 3617 VkBuffer buffer 3618 VkDeviceMemory memory 3619 VkDeviceSize memoryOffset 3620 u32 deviceIndexCount 3621 const u32* pDeviceIndices 3622} 3623 3624@extension("VK_KHX_device_group") // 61 3625class VkBindImageMemoryInfoKHX { 3626 VkStructureType sType 3627 const void* pNext 3628 VkImage image 3629 VkDeviceMemory memory 3630 VkDeviceSize memoryOffset 3631 u32 deviceIndexCount 3632 const u32* pDeviceIndices 3633 u32 SFRRectCount 3634 const VkRect2D* pSFRRects 3635} 3636 3637@extension("VK_KHX_device_group") // 61 3638class VkDeviceGroupRenderPassBeginInfoKHX { 3639 VkStructureType sType 3640 const void* pNext 3641 u32 deviceMask 3642 u32 deviceRenderAreaCount 3643 const VkRect2D* pDeviceRenderAreas 3644} 3645 3646@extension("VK_KHX_device_group") // 61 3647class VkDeviceGroupCommandBufferBeginInfoKHX { 3648 VkStructureType sType 3649 const void* pNext 3650 u32 deviceMask 3651} 3652 3653@extension("VK_KHX_device_group") // 61 3654class VkDeviceGroupSubmitInfoKHX { 3655 VkStructureType sType 3656 const void* pNext 3657 u32 waitSemaphoreCount 3658 const u32* pWaitSemaphoreDeviceIndices 3659 u32 commandBufferCount 3660 const u32* pCommandBufferDeviceMasks 3661 u32 signalSemaphoreCount 3662 const u32* pSignalSemaphoreDeviceIndices 3663} 3664 3665@extension("VK_KHX_device_group") // 61 3666class VkDeviceGroupBindSparseInfoKHX { 3667 VkStructureType sType 3668 const void* pNext 3669 u32 resourceDeviceIndex 3670 u32 memoryDeviceIndex 3671} 3672 3673@extension("VK_KHX_device_group") // 61 3674class VkDeviceGroupPresentCapabilitiesKHX { 3675 VkStructureType sType 3676 const void* pNext 3677 u32[VK_MAX_DEVICE_GROUP_SIZE_KHX] presentMask 3678 VkDeviceGroupPresentModeFlagsKHX modes 3679} 3680 3681@extension("VK_KHX_device_group") // 61 3682class VkImageSwapchainCreateInfoKHX { 3683 VkStructureType sType 3684 const void* pNext 3685 VkSwapchainKHR swapchain 3686} 3687 3688@extension("VK_KHX_device_group") // 61 3689class VkBindImageMemorySwapchainInfoKHX { 3690 VkStructureType sType 3691 const void* pNext 3692 VkSwapchainKHR swapchain 3693 u32 imageIndex 3694} 3695 3696@extension("VK_KHX_device_group") // 61 3697class VkAcquireNextImageInfoKHX { 3698 VkStructureType sType 3699 const void* pNext 3700 VkSwapchainKHR swapchain 3701 u64 timeout 3702 VkSemaphore semaphore 3703 VkFence fence 3704 u32 deviceMask 3705} 3706 3707@extension("VK_KHX_device_group") // 61 3708class VkDeviceGroupPresentInfoKHX { 3709 VkStructureType sType 3710 const void* pNext 3711 u32 swapchainCount 3712 const u32* pDeviceMasks 3713 VkDeviceGroupPresentModeFlagBitsKHX mode 3714} 3715 3716@extension("VK_KHX_device_group") // 61 3717class VkDeviceGroupSwapchainCreateInfoKHX { 3718 VkStructureType sType 3719 const void* pNext 3720 VkDeviceGroupPresentModeFlagsKHX modes 3721} 3722 3723@extension("VK_EXT_validation_flags") // 62 3724class VkValidationFlagsEXT { 3725 VkStructureType sType 3726 const void* pNext 3727 u32 disabledValidationCheckCount 3728 VkValidationCheckEXT* pDisabledValidationChecks 3729} 3730 3731@extension("VK_NN_vi_surface") // 63 3732class VkViSurfaceCreateInfoNN { 3733 VkStructureType sType 3734 const void* pNext 3735 VkViSurfaceCreateFlagsNN flags 3736 void* window 3737} 3738 3739@extension("VK_KHX_device_group_creation") // 71 3740class VkPhysicalDeviceGroupPropertiesKHX { 3741 VkStructureType sType 3742 void* pNext 3743 u32 physicalDeviceCount 3744 VkPhysicalDevice[VK_MAX_DEVICE_GROUP_SIZE_KHX] physicalDevices 3745 VkBool32 subsetAllocation 3746} 3747 3748@extension("VK_KHX_device_group_creation") // 71 3749class VkDeviceGroupDeviceCreateInfoKHX { 3750 VkStructureType sType 3751 const void* pNext 3752 u32 physicalDeviceCount 3753 const VkPhysicalDevice* pPhysicalDevices 3754} 3755 3756@extension("VK_KHX_external_memory_capabilities") // 72 3757class VkExternalMemoryPropertiesKHX { 3758 VkExternalMemoryFeatureFlagsKHX externalMemoryFeatures 3759 VkExternalMemoryHandleTypeFlagsKHX exportFromImportedHandleTypes 3760 VkExternalMemoryHandleTypeFlagsKHX compatibleHandleTypes 3761} 3762 3763@extension("VK_KHX_external_memory_capabilities") // 72 3764class VkPhysicalDeviceExternalImageFormatInfoKHX { 3765 VkStructureType sType 3766 const void* pNext 3767 VkExternalMemoryHandleTypeFlagBitsKHX handleType 3768} 3769 3770@extension("VK_KHX_external_memory_capabilities") // 72 3771class VkExternalImageFormatPropertiesKHX { 3772 VkStructureType sType 3773 void* pNext 3774 VkExternalMemoryPropertiesKHX externalMemoryProperties 3775} 3776 3777@extension("VK_KHX_external_memory_capabilities") // 72 3778class VkPhysicalDeviceExternalBufferInfoKHX { 3779 VkStructureType sType 3780 const void* pNext 3781 VkBufferCreateFlags flags 3782 VkBufferUsageFlags usage 3783 VkExternalMemoryHandleTypeFlagBitsKHX handleType 3784} 3785 3786@extension("VK_KHX_external_memory_capabilities") // 72 3787class VkExternalBufferPropertiesKHX { 3788 VkStructureType sType 3789 void* pNext 3790 VkExternalMemoryPropertiesKHX externalMemoryProperties 3791} 3792 3793@extension("VK_KHX_external_memory_capabilities") // 72 3794class VkPhysicalDeviceIDPropertiesKHX { 3795 VkStructureType sType 3796 void* pNext 3797 u8[VK_UUID_SIZE] deviceUUID 3798 u8[VK_UUID_SIZE] driverUUID 3799 u8[VK_LUID_SIZE_KHX] deviceLUID 3800 VkBool32 deviceLUIDValid 3801} 3802 3803@extension("VK_KHX_external_memory") // 73 3804class VkExternalMemoryImageCreateInfoKHX { 3805 VkStructureType sType 3806 const void* pNext 3807 VkExternalMemoryHandleTypeFlagsKHX handleTypes 3808} 3809 3810@extension("VK_KHX_external_memory") // 73 3811class VkExternalMemoryBufferCreateInfoKHX { 3812 VkStructureType sType 3813 const void* pNext 3814 VkExternalMemoryHandleTypeFlagsKHX handleTypes 3815} 3816 3817@extension("VK_KHX_external_memory") // 73 3818class VkExportMemoryAllocateInfoKHX { 3819 VkStructureType sType 3820 const void* pNext 3821 VkExternalMemoryHandleTypeFlagsKHX handleTypes 3822} 3823 3824@extension("VK_KHX_external_memory_win32") // 74 3825class VkImportMemoryWin32HandleInfoKHX { 3826 VkStructureType sType 3827 const void* pNext 3828 VkExternalMemoryHandleTypeFlagBitsKHX handleType 3829 platform.HANDLE handle 3830} 3831 3832@extension("VK_KHX_external_memory_win32") // 74 3833class VkExportMemoryWin32HandleInfoKHX { 3834 VkStructureType sType 3835 const void* pNext 3836 const platform.SECURITY_ATTRIBUTES* pAttributes 3837 platform.DWORD dwAccess 3838 platform.LPCWSTR name 3839} 3840 3841@extension("VK_KHX_external_memory_win32") // 74 3842class VkMemoryWin32HandlePropertiesKHX { 3843 VkStructureType sType 3844 void* pNext 3845 u32 memoryTypeBits 3846} 3847 3848@extension("VK_KHX_external_memory_fd") // 75 3849class VkImportMemoryFdInfoKHX { 3850 VkStructureType sType 3851 const void* pNext 3852 VkExternalMemoryHandleTypeFlagBitsKHX handleType 3853 int fd 3854} 3855 3856@extension("VK_KHX_external_memory_fd") // 75 3857class VkMemoryFdPropertiesKHX { 3858 VkStructureType sType 3859 void* pNext 3860 u32 memoryTypeBits 3861} 3862 3863@extension("VK_KHX_win32_keyed_mutex") // 76 3864class VkWin32KeyedMutexAcquireReleaseInfoKHX { 3865 VkStructureType sType 3866 const void* pNext 3867 u32 acquireCount 3868 const VkDeviceMemory* pAcquireSyncs 3869 const u64* pAcquireKeys 3870 const u32* pAcquireTimeouts 3871 u32 releaseCount 3872 const VkDeviceMemory* pReleaseSyncs 3873 const u64* pReleaseKeys 3874} 3875 3876@extension("VK_KHX_external_semaphore_capabilities") // 77 3877class VkPhysicalDeviceExternalSemaphoreInfoKHX { 3878 VkStructureType sType 3879 const void* pNext 3880 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType 3881} 3882 3883@extension("VK_KHX_external_semaphore_capabilities") // 77 3884class VkExternalSemaphorePropertiesKHX { 3885 VkStructureType sType 3886 void* pNext 3887 VkExternalSemaphoreHandleTypeFlagsKHX exportFromImportedHandleTypes 3888 VkExternalSemaphoreHandleTypeFlagsKHX compatibleHandleTypes 3889 VkExternalSemaphoreFeatureFlagsKHX externalSemaphoreFeatures 3890} 3891 3892@extension("VK_KHX_external_semaphore") // 78 3893class VkExportSemaphoreCreateInfoKHX { 3894 VkStructureType sType 3895 const void* pNext 3896 VkExternalSemaphoreHandleTypeFlagsKHX handleTypes 3897} 3898 3899@extension("VK_KHX_external_semaphore_win32") // 79 3900class VkImportSemaphoreWin32HandleInfoKHX { 3901 VkStructureType sType 3902 const void* pNext 3903 VkSemaphore semaphore 3904 VkExternalSemaphoreHandleTypeFlagsKHX handleType 3905 platform.HANDLE handle 3906} 3907 3908@extension("VK_KHX_external_semaphore_win32") // 79 3909class VkExportSemaphoreWin32HandleInfoKHX { 3910 VkStructureType sType 3911 const void* pNext 3912 const platform.SECURITY_ATTRIBUTES* pAttributes 3913 platform.DWORD dwAccess 3914 platform.LPCWSTR name 3915} 3916 3917@extension("VK_KHX_external_semaphore_win32") // 79 3918class VkD3D12FenceSubmitInfoKHX { 3919 VkStructureType sType 3920 const void* pNext 3921 u32 waitSemaphoreValuesCount 3922 const u64* pWaitSemaphoreValues 3923 u32 signalSemaphoreValuesCount 3924 const u64* pSignalSemaphoreValues 3925} 3926 3927@extension("VK_KHX_external_semaphore_fd") // 80 3928class VkImportSemaphoreFdInfoKHX { 3929 VkStructureType sType 3930 const void* pNext 3931 VkSemaphore semaphore 3932 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType 3933 s32 fd 3934} 3935 3936@extension("VK_KHR_push_descriptor") // 81 3937class VkPhysicalDevicePushDescriptorPropertiesKHR { 3938 VkStructureType sType 3939 void* pNext 3940 u32 maxPushDescriptors 3941} 3942 3943@extension("VK_KHR_incremental_present") // 85 3944class VkRectLayerKHR { 3945 VkOffset2D offset 3946 VkExtent2D extent 3947 u32 layer 3948} 3949 3950@extension("VK_KHR_incremental_present") // 85 3951class VkPresentRegionKHR { 3952 u32 rectangleCount 3953 const VkRectLayerKHR* pRectangles 3954} 3955 3956@extension("VK_KHR_incremental_present") // 85 3957class VkPresentRegionsKHR { 3958 VkStructureType sType 3959 const void* pNext 3960 u32 swapchainCount 3961 const VkPresentRegionKHR* pRegions 3962} 3963 3964@extension("VK_KHR_descriptor_update_template") // 86 3965class VkDescriptorUpdateTemplateEntryKHR { 3966 u32 dstBinding 3967 u32 dstArrayElement 3968 u32 descriptorCount 3969 VkDescriptorType descriptorType 3970 platform.size_t offset 3971 platform.size_t stride 3972} 3973 3974@extension("VK_KHR_descriptor_update_template") // 86 3975class VkDescriptorUpdateTemplateCreateInfoKHR { 3976 VkStructureType sType 3977 void* pNext 3978 VkDescriptorUpdateTemplateCreateFlagsKHR flags 3979 u32 descriptorUpdateEntryCount 3980 const VkDescriptorUpdateTemplateEntryKHR* pDescriptorUpdateEntries 3981 VkDescriptorUpdateTemplateTypeKHR templateType 3982 VkDescriptorSetLayout descriptorSetLayout 3983 VkPipelineBindPoint pipelineBindPoint 3984 VkPipelineLayout pipelineLayout 3985 u32 set 3986} 3987 3988@extension("VK_NVX_device_generated_commands") // 87 3989class VkDeviceGeneratedCommandsFeaturesNVX { 3990 VkStructureType sType 3991 const void* pNext 3992 VkBool32 computeBindingPointSupport 3993} 3994 3995@extension("VK_NVX_device_generated_commands") // 87 3996class VkDeviceGeneratedCommandsLimitsNVX { 3997 VkStructureType sType 3998 const void* pNext 3999 u32 maxIndirectCommandsLayoutTokenCount 4000 u32 maxObjectEntryCounts 4001 u32 minSequenceCountBufferOffsetAlignment 4002 u32 minSequenceIndexBufferOffsetAlignment 4003 u32 minCommandsTokenBufferOffsetAlignment 4004} 4005 4006@extension("VK_NVX_device_generated_commands") // 87 4007class VkIndirectCommandsTokenNVX { 4008 VkIndirectCommandsTokenTypeNVX tokenType 4009 VkBuffer buffer 4010 VkDeviceSize offset 4011} 4012 4013@extension("VK_NVX_device_generated_commands") // 87 4014class VkIndirectCommandsLayoutTokenNVX { 4015 VkIndirectCommandsTokenTypeNVX tokenType 4016 u32 bindingUnit 4017 u32 dynamicCount 4018 u32 divisor 4019} 4020 4021@extension("VK_NVX_device_generated_commands") // 87 4022class VkIndirectCommandsLayoutCreateInfoNVX { 4023 VkStructureType sType 4024 const void* pNext 4025 VkPipelineBindPoint pipelineBindPoint 4026 VkIndirectCommandsLayoutUsageFlagsNVX flags 4027 u32 tokenCount 4028 const VkIndirectCommandsLayoutTokenNVX* pTokens 4029} 4030 4031@extension("VK_NVX_device_generated_commands") // 87 4032class VkCmdProcessCommandsInfoNVX { 4033 VkStructureType sType 4034 const void* pNext 4035 VkObjectTableNVX objectTable 4036 VkIndirectCommandsLayoutNVX indirectCommandsLayout 4037 u32 indirectCommandsTokenCount 4038 const VkIndirectCommandsTokenNVX* pIndirectCommandsTokens 4039 u32 maxSequencesCount 4040 VkCommandBuffer targetCommandBuffer 4041 VkBuffer sequencesCountBuffer 4042 VkDeviceSize sequencesCountOffset 4043 VkBuffer sequencesIndexBuffer 4044 VkDeviceSize sequencesIndexOffset 4045} 4046 4047@extension("VK_NVX_device_generated_commands") // 87 4048class VkCmdReserveSpaceForCommandsInfoNVX { 4049 VkStructureType sType 4050 const void* pNext 4051 VkObjectTableNVX objectTable 4052 VkIndirectCommandsLayoutNVX indirectCommandsLayout 4053 u32 maxSequencesCount 4054} 4055 4056@extension("VK_NVX_device_generated_commands") // 87 4057class VkObjectTableCreateInfoNVX { 4058 VkStructureType sType 4059 const void* pNext 4060 u32 objectCount 4061 const VkObjectEntryTypeNVX* pObjectEntryTypes 4062 const u32* pObjectEntryCounts 4063 const VkObjectEntryUsageFlagsNVX* pObjectEntryUsageFlags 4064 u32 maxUniformBuffersPerDescriptor 4065 u32 maxStorageBuffersPerDescriptor 4066 u32 maxStorageImagesPerDescriptor 4067 u32 maxSampledImagesPerDescriptor 4068 u32 maxPipelineLayouts 4069} 4070 4071@extension("VK_NVX_device_generated_commands") // 87 4072class VkObjectTableEntryNVX { 4073 VkObjectEntryTypeNVX type 4074 VkObjectEntryUsageFlagsNVX flags 4075} 4076 4077@extension("VK_NVX_device_generated_commands") // 87 4078class VkObjectTablePipelineEntryNVX { 4079 VkObjectEntryTypeNVX type 4080 VkObjectEntryUsageFlagsNVX flags 4081 VkPipeline pipeline 4082} 4083 4084@extension("VK_NVX_device_generated_commands") // 87 4085class VkObjectTableDescriptorSetEntryNVX { 4086 VkObjectEntryTypeNVX type 4087 VkObjectEntryUsageFlagsNVX flags 4088 VkPipelineLayout pipelineLayout 4089 VkDescriptorSet descriptorSet 4090} 4091 4092@extension("VK_NVX_device_generated_commands") // 87 4093class VkObjectTableVertexBufferEntryNVX { 4094 VkObjectEntryTypeNVX type 4095 VkObjectEntryUsageFlagsNVX flags 4096 VkBuffer buffer 4097} 4098 4099@extension("VK_NVX_device_generated_commands") // 87 4100class VkObjectTableIndexBufferEntryNVX { 4101 VkObjectEntryTypeNVX type 4102 VkObjectEntryUsageFlagsNVX flags 4103 VkBuffer buffer 4104 VkIndexType indexType 4105} 4106 4107@extension("VK_NVX_device_generated_commands") // 87 4108class VkObjectTablePushConstantEntryNVX { 4109 VkObjectEntryTypeNVX type 4110 VkObjectEntryUsageFlagsNVX flags 4111 VkPipelineLayout pipelineLayout 4112 VkShaderStageFlags stageFlags 4113} 4114 4115@extension("VK_NV_clip_space_w_scaling") // 88 4116class VkViewportWScalingNV { 4117 f32 xcoeff 4118 f32 ycoeff 4119} 4120 4121@extension("VK_NV_clip_space_w_scaling") // 88 4122class VkPipelineViewportWScalingStateCreateInfoNV { 4123 VkStructureType sType 4124 const void* pNext 4125 VkBool32 viewportWScalingEnable 4126 u32 viewportCount 4127 const VkViewportWScalingNV* pViewportWScalings 4128} 4129 4130@extension("VK_EXT_display_surface_counter") // 91 4131class VkSurfaceCapabilities2EXT { 4132 VkStructureType sType 4133 void* pNext 4134 u32 minImageCount 4135 u32 maxImageCount 4136 VkExtent2D currentExtent 4137 VkExtent2D minImageExtent 4138 VkExtent2D maxImageExtent 4139 u32 maxImageArrayLayers 4140 VkSurfaceTransformFlagsKHR supportedTransforms 4141 VkSurfaceTransformFlagBitsKHR currentTransform 4142 VkCompositeAlphaFlagsKHR supportedCompositeAlpha 4143 VkImageUsageFlags supportedUsageFlags 4144 VkSurfaceCounterFlagsEXT supportedSurfaceCounters 4145} 4146 4147@extension("VK_EXT_display_control") // 92 4148class VkDisplayPowerInfoEXT { 4149 VkStructureType sType 4150 const void* pNext 4151 VkDisplayPowerStateEXT powerState 4152} 4153 4154@extension("VK_EXT_display_control") // 92 4155class VkDeviceEventInfoEXT { 4156 VkStructureType sType 4157 const void* pNext 4158 VkDeviceEventTypeEXT deviceEvent 4159} 4160 4161@extension("VK_EXT_display_control") // 92 4162class VkDisplayEventInfoEXT { 4163 VkStructureType sType 4164 const void* pNext 4165 VkDisplayEventTypeEXT displayEvent 4166} 4167 4168@extension("VK_EXT_display_control") // 92 4169class VkSwapchainCounterCreateInfoEXT { 4170 VkStructureType sType 4171 const void* pNext 4172 VkSurfaceCounterFlagsEXT surfaceCounters 4173} 4174 4175@extension("VK_GOOGLE_display_timing") // 93 4176class VkRefreshCycleDurationGOOGLE { 4177 u64 refreshDuration 4178} 4179 4180@extension("VK_GOOGLE_display_timing") // 93 4181class VkPastPresentationTimingGOOGLE { 4182 u32 presentID 4183 u64 desiredPresentTime 4184 u64 actualPresentTime 4185 u64 earliestPresentTime 4186 u64 presentMargin 4187} 4188 4189@extension("VK_GOOGLE_display_timing") // 93 4190class VkPresentTimeGOOGLE { 4191 u32 presentID 4192 u64 desiredPresentTime 4193} 4194 4195@extension("VK_GOOGLE_display_timing") // 93 4196class VkPresentTimesInfoGOOGLE { 4197 VkStructureType sType 4198 const void* pNext 4199 u32 swapchainCount 4200 const VkPresentTimeGOOGLE* pTimes 4201} 4202 4203@extension("VK_NVX_multiview_per_view_attributes") // 98 4204class VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX { 4205 VkStructureType sType 4206 void* pNext 4207 VkBool32 perViewPositionAllComponents 4208} 4209 4210@extension("VK_NV_viewport_swizzle") // 99 4211class VkViewportSwizzleNV { 4212 VkViewportCoordinateSwizzleNV x 4213 VkViewportCoordinateSwizzleNV y 4214 VkViewportCoordinateSwizzleNV z 4215 VkViewportCoordinateSwizzleNV w 4216} 4217 4218@extension("VK_NV_viewport_swizzle") // 99 4219class VkPipelineViewportSwizzleStateCreateInfoNV { 4220 VkStructureType sType 4221 const void* pNext 4222 VkPipelineViewportSwizzleStateCreateFlagsNV flags 4223 u32 viewportCount 4224 const VkViewportSwizzleNV* pViewportSwizzles 4225} 4226 4227@extension("VK_EXT_discard_rectangles") // 100 4228class VkPhysicalDeviceDiscardRectanglePropertiesEXT { 4229 VkStructureType sType 4230 void* pNext 4231 u32 maxDiscardRectangles 4232} 4233 4234@extension("VK_EXT_discard_rectangles") // 100 4235class VkPipelineDiscardRectangleStateCreateInfoEXT { 4236 VkStructureType sType 4237 const void* pNext 4238 VkPipelineDiscardRectangleStateCreateFlagsEXT flags 4239 VkDiscardRectangleModeEXT discardRectangleMode 4240 u32 discardRectangleCount 4241 const VkRect2D* pDiscardRectangles 4242} 4243 4244@extension("VK_EXT_hdr_metadata") // 106 4245class VkXYColorEXT { 4246 f32 x 4247 f32 y 4248} 4249 4250@extension("VK_EXT_hdr_metadata") // 106 4251class VkHdrMetadataEXT { 4252 VkStructureType sType 4253 const void* pNext 4254 VkXYColorEXT displayPrimaryRed 4255 VkXYColorEXT displayPrimaryGreen 4256 VkXYColorEXT displayPrimaryBlue 4257 VkXYColorEXT whitePoint 4258 f32 maxLuminance 4259 f32 minLuminance 4260 f32 maxContentLightLevel 4261 f32 maxFrameAverageLightLevel 4262} 4263 4264@extension("VK_KHR_shared_presentable_image") // 111 4265class VkSharedPresentSurfaceCapabilitiesKHR { 4266 VkStructureType sType 4267 const void* pNext 4268 VkImageUsageFlags sharedPresentSupportedUsageFlags 4269} 4270 4271@extension("VK_KHR_get_surface_capabilities2") // 119 4272class VkPhysicalDeviceSurfaceInfo2KHR { 4273 VkStructureType sType 4274 const void* pNext 4275 VkSurfaceKHR surface 4276} 4277 4278@extension("VK_KHR_get_surface_capabilities2") // 119 4279class VkSurfaceCapabilities2KHR { 4280 VkStructureType sType 4281 void* pNext 4282 VkSurfaceCapabilitiesKHR surfaceCapabilities 4283} 4284 4285@extension("VK_KHR_get_surface_capabilities2") // 119 4286class VkSurfaceFormat2KHR { 4287 VkStructureType sType 4288 void* pNext 4289 VkSurfaceFormatKHR surfaceFormat 4290} 4291 4292@extension("VK_MVK_ios_surface") // 123 4293class VkIOSSurfaceCreateInfoMVK { 4294 VkStructureType sType 4295 const void* pNext 4296 VkIOSSurfaceCreateFlagsMVK flags 4297 const void* pView 4298} 4299 4300@extension("VK_MVK_macos_surface") // 124 4301class VkMacOSSurfaceCreateInfoMVK { 4302 VkStructureType sType 4303 const void* pNext 4304 VkMacOSSurfaceCreateFlagsMVK flags 4305 const void* pView 4306} 4307 4308//////////////// 4309// Commands // 4310//////////////// 4311 4312// Function pointers. TODO: add support for function pointers. 4313 4314@external type void* PFN_vkVoidFunction 4315@pfn cmd void vkVoidFunction() { 4316} 4317 4318@external type void* PFN_vkAllocationFunction 4319@pfn cmd void* vkAllocationFunction( 4320 void* pUserData, 4321 platform.size_t size, 4322 platform.size_t alignment, 4323 VkSystemAllocationScope allocationScope) { 4324 return ? 4325} 4326 4327@external type void* PFN_vkReallocationFunction 4328@pfn cmd void* vkReallocationFunction( 4329 void* pUserData, 4330 void* pOriginal, 4331 platform.size_t size, 4332 platform.size_t alignment, 4333 VkSystemAllocationScope allocationScope) { 4334 return ? 4335} 4336 4337@external type void* PFN_vkFreeFunction 4338@pfn cmd void vkFreeFunction( 4339 void* pUserData, 4340 void* pMemory) { 4341} 4342 4343@external type void* PFN_vkInternalAllocationNotification 4344@pfn cmd void vkInternalAllocationNotification( 4345 void* pUserData, 4346 platform.size_t size, 4347 VkInternalAllocationType allocationType, 4348 VkSystemAllocationScope allocationScope) { 4349} 4350 4351@external type void* PFN_vkInternalFreeNotification 4352@pfn cmd void vkInternalFreeNotification( 4353 void* pUserData, 4354 platform.size_t size, 4355 VkInternalAllocationType allocationType, 4356 VkSystemAllocationScope allocationScope) { 4357} 4358 4359// Global functions 4360 4361@threadSafety("system") 4362cmd VkResult vkCreateInstance( 4363 const VkInstanceCreateInfo* pCreateInfo, 4364 const VkAllocationCallbacks* pAllocator, 4365 VkInstance* pInstance) { 4366 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO) 4367 4368 instance := ? 4369 pInstance[0] = instance 4370 State.Instances[instance] = new!InstanceObject() 4371 4372 layers := pCreateInfo.ppEnabledLayerNames[0:pCreateInfo.enabledLayerCount] 4373 extensions := pCreateInfo.ppEnabledExtensionNames[0:pCreateInfo.enabledExtensionCount] 4374 4375 return ? 4376} 4377 4378@threadSafety("system") 4379cmd void vkDestroyInstance( 4380 VkInstance instance, 4381 const VkAllocationCallbacks* pAllocator) { 4382 instanceObject := GetInstance(instance) 4383 4384 State.Instances[instance] = null 4385} 4386 4387@threadSafety("system") 4388cmd VkResult vkEnumeratePhysicalDevices( 4389 VkInstance instance, 4390 u32* pPhysicalDeviceCount, 4391 VkPhysicalDevice* pPhysicalDevices) { 4392 instanceObject := GetInstance(instance) 4393 4394 physicalDeviceCount := as!u32(?) 4395 pPhysicalDeviceCount[0] = physicalDeviceCount 4396 physicalDevices := pPhysicalDevices[0:physicalDeviceCount] 4397 4398 for i in (0 .. physicalDeviceCount) { 4399 physicalDevice := ? 4400 physicalDevices[i] = physicalDevice 4401 if !(physicalDevice in State.PhysicalDevices) { 4402 State.PhysicalDevices[physicalDevice] = new!PhysicalDeviceObject(instance: instance) 4403 } 4404 } 4405 4406 return ? 4407} 4408 4409cmd PFN_vkVoidFunction vkGetDeviceProcAddr( 4410 VkDevice device, 4411 const char* pName) { 4412 if device != NULL_HANDLE { 4413 device := GetDevice(device) 4414 } 4415 4416 return ? 4417} 4418 4419cmd PFN_vkVoidFunction vkGetInstanceProcAddr( 4420 VkInstance instance, 4421 const char* pName) { 4422 if instance != NULL_HANDLE { 4423 instanceObject := GetInstance(instance) 4424 } 4425 4426 return ? 4427} 4428 4429cmd void vkGetPhysicalDeviceProperties( 4430 VkPhysicalDevice physicalDevice, 4431 VkPhysicalDeviceProperties* pProperties) { 4432 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 4433 4434 properties := ? 4435 pProperties[0] = properties 4436} 4437 4438cmd void vkGetPhysicalDeviceQueueFamilyProperties( 4439 VkPhysicalDevice physicalDevice, 4440 u32* pQueueFamilyPropertyCount, 4441 VkQueueFamilyProperties* pQueueFamilyProperties) { 4442 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 4443 // TODO: Figure out how to express fetch-count-or-properties 4444 // This version fails 'apic validate' with 'fence not allowed in 4445 // *semantic.Branch'. Other attempts have failed with the same or other 4446 // errors. 4447 // if pQueueFamilyProperties != null { 4448 // queuesProperties := pQueueFamilyProperties[0:pCount[0]] 4449 // for i in (0 .. pCount[0]) { 4450 // queueProperties := as!VkQueueFamilyProperties(?) 4451 // queuesProperties[i] = queueProperties 4452 // } 4453 // } else { 4454 // count := ? 4455 // pCount[0] = count 4456 // } 4457} 4458 4459cmd void vkGetPhysicalDeviceMemoryProperties( 4460 VkPhysicalDevice physicalDevice, 4461 VkPhysicalDeviceMemoryProperties* pMemoryProperties) { 4462 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 4463 4464 memoryProperties := ? 4465 pMemoryProperties[0] = memoryProperties 4466} 4467 4468cmd void vkGetPhysicalDeviceFeatures( 4469 VkPhysicalDevice physicalDevice, 4470 VkPhysicalDeviceFeatures* pFeatures) { 4471 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 4472 4473 features := ? 4474 pFeatures[0] = features 4475} 4476 4477cmd void vkGetPhysicalDeviceFormatProperties( 4478 VkPhysicalDevice physicalDevice, 4479 VkFormat format, 4480 VkFormatProperties* pFormatProperties) { 4481 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 4482 4483 formatProperties := ? 4484 pFormatProperties[0] = formatProperties 4485} 4486 4487cmd VkResult vkGetPhysicalDeviceImageFormatProperties( 4488 VkPhysicalDevice physicalDevice, 4489 VkFormat format, 4490 VkImageType type, 4491 VkImageTiling tiling, 4492 VkImageUsageFlags usage, 4493 VkImageCreateFlags flags, 4494 VkImageFormatProperties* pImageFormatProperties) { 4495 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 4496 4497 imageFormatProperties := ? 4498 pImageFormatProperties[0] = imageFormatProperties 4499 4500 return ? 4501} 4502 4503 4504// Device functions 4505 4506@threadSafety("system") 4507cmd VkResult vkCreateDevice( 4508 VkPhysicalDevice physicalDevice, 4509 const VkDeviceCreateInfo* pCreateInfo, 4510 const VkAllocationCallbacks* pAllocator, 4511 VkDevice* pDevice) { 4512 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO) 4513 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 4514 4515 device := ? 4516 pDevice[0] = device 4517 State.Devices[device] = new!DeviceObject(physicalDevice: physicalDevice) 4518 4519 return ? 4520} 4521 4522@threadSafety("system") 4523cmd void vkDestroyDevice( 4524 VkDevice device, 4525 const VkAllocationCallbacks* pAllocator) { 4526 deviceObject := GetDevice(device) 4527 4528 State.Devices[device] = null 4529} 4530 4531 4532// Extension discovery functions 4533 4534cmd VkResult vkEnumerateInstanceLayerProperties( 4535 u32* pPropertyCount, 4536 VkLayerProperties* pProperties) { 4537 count := as!u32(?) 4538 pPropertyCount[0] = count 4539 4540 properties := pProperties[0:count] 4541 for i in (0 .. count) { 4542 property := ? 4543 properties[i] = property 4544 } 4545 4546 return ? 4547} 4548 4549cmd VkResult vkEnumerateInstanceExtensionProperties( 4550 const char* pLayerName, 4551 u32* pPropertyCount, 4552 VkExtensionProperties* pProperties) { 4553 count := as!u32(?) 4554 pPropertyCount[0] = count 4555 4556 properties := pProperties[0:count] 4557 for i in (0 .. count) { 4558 property := ? 4559 properties[i] = property 4560 } 4561 4562 return ? 4563} 4564 4565cmd VkResult vkEnumerateDeviceLayerProperties( 4566 VkPhysicalDevice physicalDevice, 4567 u32* pPropertyCount, 4568 VkLayerProperties* pProperties) { 4569 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 4570 count := as!u32(?) 4571 pPropertyCount[0] = count 4572 4573 properties := pProperties[0:count] 4574 for i in (0 .. count) { 4575 property := ? 4576 properties[i] = property 4577 } 4578 4579 return ? 4580} 4581 4582cmd VkResult vkEnumerateDeviceExtensionProperties( 4583 VkPhysicalDevice physicalDevice, 4584 const char* pLayerName, 4585 u32* pPropertyCount, 4586 VkExtensionProperties* pProperties) { 4587 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 4588 4589 count := as!u32(?) 4590 pPropertyCount[0] = count 4591 4592 properties := pProperties[0:count] 4593 for i in (0 .. count) { 4594 property := ? 4595 properties[i] = property 4596 } 4597 4598 return ? 4599} 4600 4601 4602// Queue functions 4603 4604@threadSafety("system") 4605cmd void vkGetDeviceQueue( 4606 VkDevice device, 4607 u32 queueFamilyIndex, 4608 u32 queueIndex, 4609 VkQueue* pQueue) { 4610 deviceObject := GetDevice(device) 4611 4612 queue := ? 4613 pQueue[0] = queue 4614 4615 if !(queue in State.Queues) { 4616 State.Queues[queue] = new!QueueObject(device: device) 4617 } 4618} 4619 4620@threadSafety("app") 4621cmd VkResult vkQueueSubmit( 4622 VkQueue queue, 4623 u32 submitCount, 4624 const VkSubmitInfo* pSubmits, 4625 VkFence fence) { 4626 queueObject := GetQueue(queue) 4627 4628 if fence != NULL_HANDLE { 4629 fenceObject := GetFence(fence) 4630 assert(fenceObject.device == queueObject.device) 4631 } 4632 4633 // commandBuffers := pcommandBuffers[0:commandBufferCount] 4634 // for i in (0 .. commandBufferCount) { 4635 // commandBuffer := commandBuffers[i] 4636 // commandBufferObject := GetCommandBuffer(commandBuffer) 4637 // assert(commandBufferObject.device == queueObject.device) 4638 // 4639 // validate("QueueCheck", commandBufferObject.queueFlags in queueObject.flags, 4640 // "vkQueueSubmit: enqueued commandBuffer requires missing queue capabilities.") 4641 // } 4642 4643 return ? 4644} 4645 4646@threadSafety("system") 4647cmd VkResult vkQueueWaitIdle( 4648 VkQueue queue) { 4649 queueObject := GetQueue(queue) 4650 4651 return ? 4652} 4653 4654@threadSafety("system") 4655cmd VkResult vkDeviceWaitIdle( 4656 VkDevice device) { 4657 deviceObject := GetDevice(device) 4658 4659 return ? 4660} 4661 4662 4663// Memory functions 4664 4665@threadSafety("system") 4666cmd VkResult vkAllocateMemory( 4667 VkDevice device, 4668 const VkMemoryAllocateInfo* pAllocateInfo, 4669 const VkAllocationCallbacks* pAllocator, 4670 VkDeviceMemory* pMemory) { 4671 assert(pAllocateInfo.sType == VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO) 4672 deviceObject := GetDevice(device) 4673 4674 memory := ? 4675 pMemory[0] = memory 4676 State.DeviceMemories[memory] = new!DeviceMemoryObject( 4677 device: device, 4678 allocationSize: pAllocateInfo[0].allocationSize) 4679 4680 return ? 4681} 4682 4683@threadSafety("system") 4684cmd void vkFreeMemory( 4685 VkDevice device, 4686 VkDeviceMemory memory, 4687 const VkAllocationCallbacks* pAllocator) { 4688 deviceObject := GetDevice(device) 4689 memoryObject := GetDeviceMemory(memory) 4690 assert(memoryObject.device == device) 4691 4692 // Check that no objects are still bound before freeing. 4693 validate("MemoryCheck", len(memoryObject.boundObjects) == 0, 4694 "vkFreeMemory: objects still bound") 4695 validate("MemoryCheck", len(memoryObject.boundCommandBuffers) == 0, 4696 "vkFreeMemory: commandBuffers still bound") 4697 State.DeviceMemories[memory] = null 4698} 4699 4700@threadSafety("app") 4701cmd VkResult vkMapMemory( 4702 VkDevice device, 4703 VkDeviceMemory memory, 4704 VkDeviceSize offset, 4705 VkDeviceSize size, 4706 VkMemoryMapFlags flags, 4707 void** ppData) { 4708 deviceObject := GetDevice(device) 4709 memoryObject := GetDeviceMemory(memory) 4710 assert(memoryObject.device == device) 4711 4712 assert(flags == as!VkMemoryMapFlags(0)) 4713 assert((offset + size) <= memoryObject.allocationSize) 4714 4715 return ? 4716} 4717 4718@threadSafety("app") 4719cmd void vkUnmapMemory( 4720 VkDevice device, 4721 VkDeviceMemory memory) { 4722 deviceObject := GetDevice(device) 4723 memoryObject := GetDeviceMemory(memory) 4724 assert(memoryObject.device == device) 4725} 4726 4727cmd VkResult vkFlushMappedMemoryRanges( 4728 VkDevice device, 4729 u32 memoryRangeCount 4730 const VkMappedMemoryRange* pMemoryRanges) { 4731 deviceObject := GetDevice(device) 4732 4733 memoryRanges := pMemoryRanges[0:memoryRangeCount] 4734 for i in (0 .. memoryRangeCount) { 4735 memoryRange := memoryRanges[i] 4736 memoryObject := GetDeviceMemory(memoryRange.memory) 4737 assert(memoryObject.device == device) 4738 assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize) 4739 } 4740 4741 return ? 4742} 4743 4744cmd VkResult vkInvalidateMappedMemoryRanges( 4745 VkDevice device, 4746 u32 memoryRangeCount, 4747 const VkMappedMemoryRange* pMemoryRanges) { 4748 deviceObject := GetDevice(device) 4749 4750 memoryRanges := pMemoryRanges[0:memoryRangeCount] 4751 for i in (0 .. memoryRangeCount) { 4752 memoryRange := memoryRanges[i] 4753 memoryObject := GetDeviceMemory(memoryRange.memory) 4754 assert(memoryObject.device == device) 4755 assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize) 4756 } 4757 4758 return ? 4759} 4760 4761 4762// Memory management API functions 4763 4764cmd void vkGetDeviceMemoryCommitment( 4765 VkDevice device, 4766 VkDeviceMemory memory, 4767 VkDeviceSize* pCommittedMemoryInBytes) { 4768 deviceObject := GetDevice(device) 4769 4770 if memory != NULL_HANDLE { 4771 memoryObject := GetDeviceMemory(memory) 4772 assert(memoryObject.device == device) 4773 } 4774 4775 committedMemoryInBytes := ? 4776 pCommittedMemoryInBytes[0] = committedMemoryInBytes 4777} 4778 4779cmd void vkGetBufferMemoryRequirements( 4780 VkDevice device, 4781 VkBuffer buffer, 4782 VkMemoryRequirements* pMemoryRequirements) { 4783 deviceObject := GetDevice(device) 4784 bufferObject := GetBuffer(buffer) 4785 assert(bufferObject.device == device) 4786} 4787 4788cmd VkResult vkBindBufferMemory( 4789 VkDevice device, 4790 VkBuffer buffer, 4791 VkDeviceMemory memory, 4792 VkDeviceSize memoryOffset) { 4793 deviceObject := GetDevice(device) 4794 bufferObject := GetBuffer(buffer) 4795 assert(bufferObject.device == device) 4796 4797 // Unbind buffer from previous memory object, if not VK_NULL_HANDLE. 4798 if bufferObject.memory != NULL_HANDLE { 4799 memoryObject := GetDeviceMemory(bufferObject.memory) 4800 memoryObject.boundObjects[as!u64(buffer)] = null 4801 } 4802 4803 // Bind buffer to given memory object, if not VK_NULL_HANDLE. 4804 if memory != NULL_HANDLE { 4805 memoryObject := GetDeviceMemory(memory) 4806 assert(memoryObject.device == device) 4807 memoryObject.boundObjects[as!u64(buffer)] = memoryOffset 4808 } 4809 bufferObject.memory = memory 4810 bufferObject.memoryOffset = memoryOffset 4811 4812 return ? 4813} 4814 4815cmd void vkGetImageMemoryRequirements( 4816 VkDevice device, 4817 VkImage image, 4818 VkMemoryRequirements* pMemoryRequirements) { 4819 deviceObject := GetDevice(device) 4820 imageObject := GetImage(image) 4821 assert(imageObject.device == device) 4822} 4823 4824cmd VkResult vkBindImageMemory( 4825 VkDevice device, 4826 VkImage image, 4827 VkDeviceMemory memory, 4828 VkDeviceSize memoryOffset) { 4829 deviceObject := GetDevice(device) 4830 imageObject := GetImage(image) 4831 assert(imageObject.device == device) 4832 4833 // Unbind image from previous memory object, if not VK_NULL_HANDLE. 4834 if imageObject.memory != NULL_HANDLE { 4835 memoryObject := GetDeviceMemory(imageObject.memory) 4836 memoryObject.boundObjects[as!u64(image)] = null 4837 } 4838 4839 // Bind image to given memory object, if not VK_NULL_HANDLE. 4840 if memory != NULL_HANDLE { 4841 memoryObject := GetDeviceMemory(memory) 4842 assert(memoryObject.device == device) 4843 memoryObject.boundObjects[as!u64(image)] = memoryOffset 4844 } 4845 imageObject.memory = memory 4846 imageObject.memoryOffset = memoryOffset 4847 4848 return ? 4849} 4850 4851cmd void vkGetImageSparseMemoryRequirements( 4852 VkDevice device, 4853 VkImage image, 4854 u32* pSparseMemoryRequirementCount, 4855 VkSparseImageMemoryRequirements* pSparseMemoryRequirements) { 4856 deviceObject := GetDevice(device) 4857 imageObject := GetImage(image) 4858 assert(imageObject.device == device) 4859} 4860 4861cmd void vkGetPhysicalDeviceSparseImageFormatProperties( 4862 VkPhysicalDevice physicalDevice, 4863 VkFormat format, 4864 VkImageType type, 4865 VkSampleCountFlagBits samples, 4866 VkImageUsageFlags usage, 4867 VkImageTiling tiling, 4868 u32* pPropertyCount, 4869 VkSparseImageFormatProperties* pProperties) { 4870 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 4871} 4872 4873cmd VkResult vkQueueBindSparse( 4874 VkQueue queue, 4875 u32 bindInfoCount, 4876 const VkBindSparseInfo* pBindInfo, 4877 VkFence fence) { 4878 queueObject := GetQueue(queue) 4879 4880 return ? 4881} 4882 4883 4884// Fence functions 4885 4886@threadSafety("system") 4887cmd VkResult vkCreateFence( 4888 VkDevice device, 4889 const VkFenceCreateInfo* pCreateInfo, 4890 const VkAllocationCallbacks* pAllocator, 4891 VkFence* pFence) { 4892 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FENCE_CREATE_INFO) 4893 deviceObject := GetDevice(device) 4894 4895 fence := ? 4896 pFence[0] = fence 4897 State.Fences[fence] = new!FenceObject( 4898 device: device, signaled: (pCreateInfo.flags == as!VkFenceCreateFlags(VK_FENCE_CREATE_SIGNALED_BIT))) 4899 4900 return ? 4901} 4902 4903@threadSafety("system") 4904cmd void vkDestroyFence( 4905 VkDevice device, 4906 VkFence fence, 4907 const VkAllocationCallbacks* pAllocator) { 4908 deviceObject := GetDevice(device) 4909 fenceObject := GetFence(fence) 4910 assert(fenceObject.device == device) 4911 4912 State.Fences[fence] = null 4913} 4914 4915@threadSafety("system") 4916cmd VkResult vkResetFences( 4917 VkDevice device, 4918 u32 fenceCount, 4919 const VkFence* pFences) { 4920 deviceObject := GetDevice(device) 4921 4922 fences := pFences[0:fenceCount] 4923 for i in (0 .. fenceCount) { 4924 fence := fences[i] 4925 fenceObject := GetFence(fence) 4926 assert(fenceObject.device == device) 4927 fenceObject.signaled = false 4928 } 4929 4930 return ? 4931} 4932 4933@threadSafety("system") 4934cmd VkResult vkGetFenceStatus( 4935 VkDevice device, 4936 VkFence fence) { 4937 deviceObject := GetDevice(device) 4938 fenceObject := GetFence(fence) 4939 assert(fenceObject.device == device) 4940 4941 return ? 4942} 4943 4944@threadSafety("system") 4945cmd VkResult vkWaitForFences( 4946 VkDevice device, 4947 u32 fenceCount, 4948 const VkFence* pFences, 4949 VkBool32 waitAll, 4950 u64 timeout) { /// timeout in nanoseconds 4951 deviceObject := GetDevice(device) 4952 4953 fences := pFences[0:fenceCount] 4954 for i in (0 .. fenceCount) { 4955 fence := fences[i] 4956 fenceObject := GetFence(fence) 4957 assert(fenceObject.device == device) 4958 } 4959 4960 return ? 4961} 4962 4963 4964// Queue semaphore functions 4965 4966@threadSafety("system") 4967cmd VkResult vkCreateSemaphore( 4968 VkDevice device, 4969 const VkSemaphoreCreateInfo* pCreateInfo, 4970 const VkAllocationCallbacks* pAllocator, 4971 VkSemaphore* pSemaphore) { 4972 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO) 4973 deviceObject := GetDevice(device) 4974 4975 semaphore := ? 4976 pSemaphore[0] = semaphore 4977 State.Semaphores[semaphore] = new!SemaphoreObject(device: device) 4978 4979 return ? 4980} 4981 4982@threadSafety("system") 4983cmd void vkDestroySemaphore( 4984 VkDevice device, 4985 VkSemaphore semaphore, 4986 const VkAllocationCallbacks* pAllocator) { 4987 deviceObject := GetDevice(device) 4988 semaphoreObject := GetSemaphore(semaphore) 4989 assert(semaphoreObject.device == device) 4990 4991 State.Semaphores[semaphore] = null 4992} 4993 4994 4995// Event functions 4996 4997@threadSafety("system") 4998cmd VkResult vkCreateEvent( 4999 VkDevice device, 5000 const VkEventCreateInfo* pCreateInfo, 5001 const VkAllocationCallbacks* pAllocator, 5002 VkEvent* pEvent) { 5003 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_EVENT_CREATE_INFO) 5004 deviceObject := GetDevice(device) 5005 5006 event := ? 5007 pEvent[0] = event 5008 State.Events[event] = new!EventObject(device: device) 5009 5010 return ? 5011} 5012 5013@threadSafety("system") 5014cmd void vkDestroyEvent( 5015 VkDevice device, 5016 VkEvent event, 5017 const VkAllocationCallbacks* pAllocator) { 5018 deviceObject := GetDevice(device) 5019 eventObject := GetEvent(event) 5020 assert(eventObject.device == device) 5021 5022 State.Events[event] = null 5023} 5024 5025@threadSafety("system") 5026cmd VkResult vkGetEventStatus( 5027 VkDevice device, 5028 VkEvent event) { 5029 deviceObject := GetDevice(device) 5030 eventObject := GetEvent(event) 5031 assert(eventObject.device == device) 5032 5033 return ? 5034} 5035 5036@threadSafety("system") 5037cmd VkResult vkSetEvent( 5038 VkDevice device, 5039 VkEvent event) { 5040 deviceObject := GetDevice(device) 5041 eventObject := GetEvent(event) 5042 assert(eventObject.device == device) 5043 5044 return ? 5045} 5046 5047@threadSafety("system") 5048cmd VkResult vkResetEvent( 5049 VkDevice device, 5050 VkEvent event) { 5051 deviceObject := GetDevice(device) 5052 eventObject := GetEvent(event) 5053 assert(eventObject.device == device) 5054 5055 return ? 5056} 5057 5058 5059// Query functions 5060 5061@threadSafety("system") 5062cmd VkResult vkCreateQueryPool( 5063 VkDevice device, 5064 const VkQueryPoolCreateInfo* pCreateInfo, 5065 const VkAllocationCallbacks* pAllocator, 5066 VkQueryPool* pQueryPool) { 5067 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO) 5068 deviceObject := GetDevice(device) 5069 5070 queryPool := ? 5071 pQueryPool[0] = queryPool 5072 State.QueryPools[queryPool] = new!QueryPoolObject(device: device) 5073 5074 return ? 5075} 5076 5077@threadSafety("system") 5078cmd void vkDestroyQueryPool( 5079 VkDevice device, 5080 VkQueryPool queryPool, 5081 const VkAllocationCallbacks* pAllocator) { 5082 deviceObject := GetDevice(device) 5083 queryPoolObject := GetQueryPool(queryPool) 5084 assert(queryPoolObject.device == device) 5085 5086 State.QueryPools[queryPool] = null 5087} 5088 5089@threadSafety("system") 5090cmd VkResult vkGetQueryPoolResults( 5091 VkDevice device, 5092 VkQueryPool queryPool, 5093 u32 firstQuery, 5094 u32 queryCount, 5095 platform.size_t dataSize, 5096 void* pData, 5097 VkDeviceSize stride, 5098 VkQueryResultFlags flags) { 5099 deviceObject := GetDevice(device) 5100 queryPoolObject := GetQueryPool(queryPool) 5101 assert(queryPoolObject.device == device) 5102 5103 data := pData[0:dataSize] 5104 5105 return ? 5106} 5107 5108// Buffer functions 5109 5110@threadSafety("system") 5111cmd VkResult vkCreateBuffer( 5112 VkDevice device, 5113 const VkBufferCreateInfo* pCreateInfo, 5114 const VkAllocationCallbacks* pAllocator, 5115 VkBuffer* pBuffer) { 5116 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO) 5117 deviceObject := GetDevice(device) 5118 5119 buffer := ? 5120 pBuffer[0] = buffer 5121 State.Buffers[buffer] = new!BufferObject(device: device) 5122 5123 return ? 5124} 5125 5126@threadSafety("system") 5127cmd void vkDestroyBuffer( 5128 VkDevice device, 5129 VkBuffer buffer, 5130 const VkAllocationCallbacks* pAllocator) { 5131 deviceObject := GetDevice(device) 5132 bufferObject := GetBuffer(buffer) 5133 assert(bufferObject.device == device) 5134 5135 assert(bufferObject.memory == 0) 5136 State.Buffers[buffer] = null 5137} 5138 5139 5140// Buffer view functions 5141 5142@threadSafety("system") 5143cmd VkResult vkCreateBufferView( 5144 VkDevice device, 5145 const VkBufferViewCreateInfo* pCreateInfo, 5146 const VkAllocationCallbacks* pAllocator, 5147 VkBufferView* pView) { 5148 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO) 5149 deviceObject := GetDevice(device) 5150 5151 bufferObject := GetBuffer(pCreateInfo.buffer) 5152 assert(bufferObject.device == device) 5153 5154 view := ? 5155 pView[0] = view 5156 State.BufferViews[view] = new!BufferViewObject(device: device, buffer: pCreateInfo.buffer) 5157 5158 return ? 5159} 5160 5161@threadSafety("system") 5162cmd void vkDestroyBufferView( 5163 VkDevice device, 5164 VkBufferView bufferView, 5165 const VkAllocationCallbacks* pAllocator) { 5166 deviceObject := GetDevice(device) 5167 bufferViewObject := GetBufferView(bufferView) 5168 assert(bufferViewObject.device == device) 5169 5170 State.BufferViews[bufferView] = null 5171} 5172 5173 5174// Image functions 5175 5176@threadSafety("system") 5177cmd VkResult vkCreateImage( 5178 VkDevice device, 5179 const VkImageCreateInfo* pCreateInfo, 5180 const VkAllocationCallbacks* pAllocator, 5181 VkImage* pImage) { 5182 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO) 5183 deviceObject := GetDevice(device) 5184 5185 image := ? 5186 pImage[0] = image 5187 State.Images[image] = new!ImageObject(device: device) 5188 5189 return ? 5190} 5191 5192@threadSafety("system") 5193cmd void vkDestroyImage( 5194 VkDevice device, 5195 VkImage image, 5196 const VkAllocationCallbacks* pAllocator) { 5197 deviceObject := GetDevice(device) 5198 imageObject := GetImage(image) 5199 assert(imageObject.device == device) 5200 5201 assert(imageObject.memory == 0) 5202 State.Images[image] = null 5203} 5204 5205cmd void vkGetImageSubresourceLayout( 5206 VkDevice device, 5207 VkImage image, 5208 const VkImageSubresource* pSubresource, 5209 VkSubresourceLayout* pLayout) { 5210 deviceObject := GetDevice(device) 5211 imageObject := GetImage(image) 5212 assert(imageObject.device == device) 5213} 5214 5215 5216// Image view functions 5217 5218@threadSafety("system") 5219cmd VkResult vkCreateImageView( 5220 VkDevice device, 5221 const VkImageViewCreateInfo* pCreateInfo, 5222 const VkAllocationCallbacks* pAllocator, 5223 VkImageView* pView) { 5224 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO) 5225 deviceObject := GetDevice(device) 5226 5227 imageObject := GetImage(pCreateInfo.image) 5228 assert(imageObject.device == device) 5229 5230 view := ? 5231 pView[0] = view 5232 State.ImageViews[view] = new!ImageViewObject(device: device, image: pCreateInfo.image) 5233 5234 return ? 5235} 5236 5237@threadSafety("system") 5238cmd void vkDestroyImageView( 5239 VkDevice device, 5240 VkImageView imageView, 5241 const VkAllocationCallbacks* pAllocator) { 5242 deviceObject := GetDevice(device) 5243 imageViewObject := GetImageView(imageView) 5244 assert(imageViewObject.device == device) 5245 5246 State.ImageViews[imageView] = null 5247} 5248 5249 5250// Shader functions 5251 5252cmd VkResult vkCreateShaderModule( 5253 VkDevice device, 5254 const VkShaderModuleCreateInfo* pCreateInfo, 5255 const VkAllocationCallbacks* pAllocator, 5256 VkShaderModule* pShaderModule) { 5257 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO) 5258 deviceObject := GetDevice(device) 5259 5260 shaderModule := ? 5261 pShaderModule[0] = shaderModule 5262 State.ShaderModules[shaderModule] = new!ShaderModuleObject(device: device) 5263 5264 return ? 5265} 5266 5267cmd void vkDestroyShaderModule( 5268 VkDevice device, 5269 VkShaderModule shaderModule, 5270 const VkAllocationCallbacks* pAllocator) { 5271 deviceObject := GetDevice(device) 5272 shaderModuleObject := GetShaderModule(shaderModule) 5273 assert(shaderModuleObject.device == device) 5274 5275 State.ShaderModules[shaderModule] = null 5276} 5277 5278 5279// Pipeline functions 5280 5281cmd VkResult vkCreatePipelineCache( 5282 VkDevice device, 5283 const VkPipelineCacheCreateInfo* pCreateInfo, 5284 const VkAllocationCallbacks* pAllocator, 5285 VkPipelineCache* pPipelineCache) { 5286 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO) 5287 deviceObject := GetDevice(device) 5288 5289 pipelineCache := ? 5290 pPipelineCache[0] = pipelineCache 5291 State.PipelineCaches[pipelineCache] = new!PipelineCacheObject(device: device) 5292 5293 return ? 5294} 5295 5296cmd void vkDestroyPipelineCache( 5297 VkDevice device, 5298 VkPipelineCache pipelineCache, 5299 const VkAllocationCallbacks* pAllocator) { 5300 deviceObject := GetDevice(device) 5301 pipelineCacheObject := GetPipelineCache(pipelineCache) 5302 assert(pipelineCacheObject.device == device) 5303 5304 State.PipelineCaches[pipelineCache] = null 5305} 5306 5307cmd VkResult vkGetPipelineCacheData( 5308 VkDevice device, 5309 VkPipelineCache pipelineCache, 5310 platform.size_t* pDataSize, 5311 void* pData) { 5312 deviceObject := GetDevice(device) 5313 pipelineCacheObject := GetPipelineCache(pipelineCache) 5314 assert(pipelineCacheObject.device == device) 5315 5316 return ? 5317} 5318 5319cmd VkResult vkMergePipelineCaches( 5320 VkDevice device, 5321 VkPipelineCache dstCache, 5322 u32 srcCacheCount, 5323 const VkPipelineCache* pSrcCaches) { 5324 deviceObject := GetDevice(device) 5325 dstCacheObject := GetPipelineCache(dstCache) 5326 assert(dstCacheObject.device == device) 5327 5328 srcCaches := pSrcCaches[0:srcCacheCount] 5329 for i in (0 .. srcCacheCount) { 5330 srcCache := srcCaches[i] 5331 srcCacheObject := GetPipelineCache(srcCache) 5332 assert(srcCacheObject.device == device) 5333 } 5334 5335 return ? 5336} 5337 5338cmd VkResult vkCreateGraphicsPipelines( 5339 VkDevice device, 5340 VkPipelineCache pipelineCache, 5341 u32 createInfoCount, 5342 const VkGraphicsPipelineCreateInfo* pCreateInfos, 5343 const VkAllocationCallbacks* pAllocator, 5344 VkPipeline* pPipelines) { 5345 deviceObject := GetDevice(device) 5346 if pipelineCache != NULL_HANDLE { 5347 pipelineCacheObject := GetPipelineCache(pipelineCache) 5348 assert(pipelineCacheObject.device == device) 5349 } 5350 5351 createInfos := pCreateInfos[0:createInfoCount] 5352 pipelines := pPipelines[0:createInfoCount] 5353 for i in (0 .. createInfoCount) { 5354 pipeline := ? 5355 pipelines[i] = pipeline 5356 State.Pipelines[pipeline] = new!PipelineObject(device: device) 5357 } 5358 5359 return ? 5360} 5361 5362cmd VkResult vkCreateComputePipelines( 5363 VkDevice device, 5364 VkPipelineCache pipelineCache, 5365 u32 createInfoCount, 5366 const VkComputePipelineCreateInfo* pCreateInfos, 5367 const VkAllocationCallbacks* pAllocator, 5368 VkPipeline* pPipelines) { 5369 deviceObject := GetDevice(device) 5370 if pipelineCache != NULL_HANDLE { 5371 pipelineCacheObject := GetPipelineCache(pipelineCache) 5372 assert(pipelineCacheObject.device == device) 5373 } 5374 5375 createInfos := pCreateInfos[0:createInfoCount] 5376 pipelines := pPipelines[0:createInfoCount] 5377 for i in (0 .. createInfoCount) { 5378 pipeline := ? 5379 pipelines[i] = pipeline 5380 State.Pipelines[pipeline] = new!PipelineObject(device: device) 5381 } 5382 5383 return ? 5384} 5385 5386@threadSafety("system") 5387cmd void vkDestroyPipeline( 5388 VkDevice device, 5389 VkPipeline pipeline, 5390 const VkAllocationCallbacks* pAllocator) { 5391 deviceObject := GetDevice(device) 5392 pipelineObjects := GetPipeline(pipeline) 5393 assert(pipelineObjects.device == device) 5394 5395 State.Pipelines[pipeline] = null 5396} 5397 5398 5399// Pipeline layout functions 5400 5401@threadSafety("system") 5402cmd VkResult vkCreatePipelineLayout( 5403 VkDevice device, 5404 const VkPipelineLayoutCreateInfo* pCreateInfo, 5405 const VkAllocationCallbacks* pAllocator, 5406 VkPipelineLayout* pPipelineLayout) { 5407 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO) 5408 deviceObject := GetDevice(device) 5409 5410 pipelineLayout := ? 5411 pPipelineLayout[0] = pipelineLayout 5412 State.PipelineLayouts[pipelineLayout] = new!PipelineLayoutObject(device: device) 5413 5414 return ? 5415} 5416 5417@threadSafety("system") 5418cmd void vkDestroyPipelineLayout( 5419 VkDevice device, 5420 VkPipelineLayout pipelineLayout, 5421 const VkAllocationCallbacks* pAllocator) { 5422 deviceObject := GetDevice(device) 5423 pipelineLayoutObjects := GetPipelineLayout(pipelineLayout) 5424 assert(pipelineLayoutObjects.device == device) 5425 5426 State.PipelineLayouts[pipelineLayout] = null 5427} 5428 5429 5430// Sampler functions 5431 5432@threadSafety("system") 5433cmd VkResult vkCreateSampler( 5434 VkDevice device, 5435 const VkSamplerCreateInfo* pCreateInfo, 5436 const VkAllocationCallbacks* pAllocator, 5437 VkSampler* pSampler) { 5438 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO) 5439 deviceObject := GetDevice(device) 5440 5441 sampler := ? 5442 pSampler[0] = sampler 5443 State.Samplers[sampler] = new!SamplerObject(device: device) 5444 5445 return ? 5446} 5447 5448@threadSafety("system") 5449cmd void vkDestroySampler( 5450 VkDevice device, 5451 VkSampler sampler, 5452 const VkAllocationCallbacks* pAllocator) { 5453 deviceObject := GetDevice(device) 5454 samplerObject := GetSampler(sampler) 5455 assert(samplerObject.device == device) 5456 5457 State.Samplers[sampler] = null 5458} 5459 5460 5461// Descriptor set functions 5462 5463@threadSafety("system") 5464cmd VkResult vkCreateDescriptorSetLayout( 5465 VkDevice device, 5466 const VkDescriptorSetLayoutCreateInfo* pCreateInfo, 5467 const VkAllocationCallbacks* pAllocator, 5468 VkDescriptorSetLayout* pSetLayout) { 5469 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO) 5470 deviceObject := GetDevice(device) 5471 5472 setLayout := ? 5473 pSetLayout[0] = setLayout 5474 State.DescriptorSetLayouts[setLayout] = new!DescriptorSetLayoutObject(device: device) 5475 5476 return ? 5477} 5478 5479@threadSafety("system") 5480cmd void vkDestroyDescriptorSetLayout( 5481 VkDevice device, 5482 VkDescriptorSetLayout descriptorSetLayout, 5483 const VkAllocationCallbacks* pAllocator) { 5484 deviceObject := GetDevice(device) 5485 descriptorSetLayoutObject := GetDescriptorSetLayout(descriptorSetLayout) 5486 assert(descriptorSetLayoutObject.device == device) 5487 5488 State.DescriptorSetLayouts[descriptorSetLayout] = null 5489} 5490 5491@threadSafety("system") 5492cmd VkResult vkCreateDescriptorPool( 5493 VkDevice device, 5494 const VkDescriptorPoolCreateInfo* pCreateInfo, 5495 const VkAllocationCallbacks* pAllocator, 5496 VkDescriptorPool* pDescriptorPool) { 5497 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO) 5498 deviceObject := GetDevice(device) 5499 5500 descriptorPool := ? 5501 pDescriptorPool[0] = descriptorPool 5502 State.DescriptorPools[descriptorPool] = new!DescriptorPoolObject(device: device) 5503 5504 return ? 5505} 5506 5507@threadSafety("system") 5508cmd void vkDestroyDescriptorPool( 5509 VkDevice device, 5510 VkDescriptorPool descriptorPool, 5511 const VkAllocationCallbacks* pAllocator) { 5512 deviceObject := GetDevice(device) 5513 descriptorPoolObject := GetDescriptorPool(descriptorPool) 5514 assert(descriptorPoolObject.device == device) 5515 5516 State.DescriptorPools[descriptorPool] = null 5517} 5518 5519@threadSafety("app") 5520cmd VkResult vkResetDescriptorPool( 5521 VkDevice device, 5522 VkDescriptorPool descriptorPool, 5523 VkDescriptorPoolResetFlags flags) { 5524 deviceObject := GetDevice(device) 5525 descriptorPoolObject := GetDescriptorPool(descriptorPool) 5526 assert(descriptorPoolObject.device == device) 5527 5528 return ? 5529} 5530 5531@threadSafety("app") 5532cmd VkResult vkAllocateDescriptorSets( 5533 VkDevice device, 5534 const VkDescriptorSetAllocateInfo* pAllocateInfo, 5535 VkDescriptorSet* pDescriptorSets) { 5536 deviceObject := GetDevice(device) 5537 allocInfo := pAllocateInfo[0] 5538 descriptorPoolObject := GetDescriptorPool(allocInfo.descriptorPool) 5539 5540 setLayouts := allocInfo.pSetLayouts[0:allocInfo.setCount] 5541 for i in (0 .. allocInfo.setCount) { 5542 setLayout := setLayouts[i] 5543 setLayoutObject := GetDescriptorSetLayout(setLayout) 5544 assert(setLayoutObject.device == device) 5545 } 5546 5547 descriptorSets := pDescriptorSets[0:allocInfo.setCount] 5548 for i in (0 .. allocInfo.setCount) { 5549 descriptorSet := ? 5550 descriptorSets[i] = descriptorSet 5551 State.DescriptorSets[descriptorSet] = new!DescriptorSetObject(device: device) 5552 } 5553 5554 return ? 5555} 5556 5557cmd VkResult vkFreeDescriptorSets( 5558 VkDevice device, 5559 VkDescriptorPool descriptorPool, 5560 u32 descriptorSetCount, 5561 const VkDescriptorSet* pDescriptorSets) { 5562 deviceObject := GetDevice(device) 5563 descriptorPoolObject := GetDescriptorPool(descriptorPool) 5564 5565 descriptorSets := pDescriptorSets[0:descriptorSetCount] 5566 for i in (0 .. descriptorSetCount) { 5567 descriptorSet := descriptorSets[i] 5568 descriptorSetObject := GetDescriptorSet(descriptorSet) 5569 assert(descriptorSetObject.device == device) 5570 State.DescriptorSets[descriptorSet] = null 5571 } 5572 5573 return ? 5574} 5575 5576cmd void vkUpdateDescriptorSets( 5577 VkDevice device, 5578 u32 descriptorWriteCount, 5579 const VkWriteDescriptorSet* pDescriptorWrites, 5580 u32 descriptorCopyCount, 5581 const VkCopyDescriptorSet* pDescriptorCopies) { 5582 deviceObject := GetDevice(device) 5583 5584 descriptorWrites := pDescriptorWrites[0:descriptorWriteCount] 5585 for i in (0 .. descriptorWriteCount) { 5586 descriptorWrite := descriptorWrites[i] 5587 descriptorWriteObject := GetDescriptorSet(descriptorWrite.dstSet) 5588 assert(descriptorWriteObject.device == device) 5589 } 5590 5591 descriptorCopies := pDescriptorCopies[0:descriptorCopyCount] 5592 for i in (0 .. descriptorCopyCount) { 5593 descriptorCopy := descriptorCopies[i] 5594 descriptorCopyObject := GetDescriptorSet(descriptorCopy.dstSet) 5595 assert(descriptorCopyObject.device == device) 5596 } 5597} 5598 5599 5600// Framebuffer functions 5601 5602@threadSafety("system") 5603cmd VkResult vkCreateFramebuffer( 5604 VkDevice device, 5605 const VkFramebufferCreateInfo* pCreateInfo, 5606 const VkAllocationCallbacks* pAllocator, 5607 VkFramebuffer* pFramebuffer) { 5608 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO) 5609 deviceObject := GetDevice(device) 5610 5611 framebuffer := ? 5612 pFramebuffer[0] = framebuffer 5613 State.Framebuffers[framebuffer] = new!FramebufferObject(device: device) 5614 5615 return ? 5616} 5617 5618@threadSafety("system") 5619cmd void vkDestroyFramebuffer( 5620 VkDevice device, 5621 VkFramebuffer framebuffer, 5622 const VkAllocationCallbacks* pAllocator) { 5623 deviceObject := GetDevice(device) 5624 framebufferObject := GetFramebuffer(framebuffer) 5625 assert(framebufferObject.device == device) 5626 5627 State.Framebuffers[framebuffer] = null 5628} 5629 5630 5631// Renderpass functions 5632 5633@threadSafety("system") 5634cmd VkResult vkCreateRenderPass( 5635 VkDevice device, 5636 const VkRenderPassCreateInfo* pCreateInfo, 5637 const VkAllocationCallbacks* pAllocator, 5638 VkRenderPass* pRenderPass) { 5639 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO) 5640 deviceObject := GetDevice(device) 5641 5642 renderpass := ? 5643 pRenderPass[0] = renderpass 5644 State.RenderPasses[renderpass] = new!RenderPassObject(device: device) 5645 5646 return ? 5647} 5648 5649@threadSafety("system") 5650cmd void vkDestroyRenderPass( 5651 VkDevice device, 5652 VkRenderPass renderPass, 5653 const VkAllocationCallbacks* pAllocator) { 5654 deviceObject := GetDevice(device) 5655 renderPassObject := GetRenderPass(renderPass) 5656 assert(renderPassObject.device == device) 5657 5658 State.RenderPasses[renderPass] = null 5659} 5660 5661cmd void vkGetRenderAreaGranularity( 5662 VkDevice device, 5663 VkRenderPass renderPass, 5664 VkExtent2D* pGranularity) { 5665 deviceObject := GetDevice(device) 5666 renderPassObject := GetRenderPass(renderPass) 5667 5668 granularity := ? 5669 pGranularity[0] = granularity 5670} 5671 5672// Command pool functions 5673 5674cmd VkResult vkCreateCommandPool( 5675 VkDevice device, 5676 const VkCommandPoolCreateInfo* pCreateInfo, 5677 const VkAllocationCallbacks* pAllocator, 5678 VkCommandPool* pCommandPool) { 5679 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO) 5680 deviceObject := GetDevice(device) 5681 5682 commandPool := ? 5683 pCommandPool[0] = commandPool 5684 State.CommandPools[commandPool] = new!CommandPoolObject(device: device) 5685 5686 return ? 5687} 5688 5689cmd void vkDestroyCommandPool( 5690 VkDevice device, 5691 VkCommandPool commandPool, 5692 const VkAllocationCallbacks* pAllocator) { 5693 deviceObject := GetDevice(device) 5694 commandPoolObject := GetCommandPool(commandPool) 5695 assert(commandPoolObject.device == device) 5696 5697 State.CommandPools[commandPool] = null 5698} 5699 5700cmd VkResult vkResetCommandPool( 5701 VkDevice device, 5702 VkCommandPool commandPool, 5703 VkCommandPoolResetFlags flags) { 5704 deviceObject := GetDevice(device) 5705 commandPoolObject := GetCommandPool(commandPool) 5706 assert(commandPoolObject.device == device) 5707 5708 return ? 5709} 5710 5711// Command buffer functions 5712 5713macro void bindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) { 5714 memoryObject := GetDeviceMemory(memory) 5715 memoryObject.boundCommandBuffers[commandBuffer] = commandBuffer 5716 5717 commandBufferObject := GetCommandBuffer(commandBuffer) 5718 commandBufferObject.boundObjects[as!u64(obj)] = memory 5719} 5720 5721macro void unbindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) { 5722 memoryObject := GetDeviceMemory(memory) 5723 memoryObject.boundCommandBuffers[commandBuffer] = null 5724 5725 commandBufferObject := GetCommandBuffer(commandBuffer) 5726 commandBufferObject.boundObjects[as!u64(obj)] = null 5727} 5728 5729@threadSafety("system") 5730cmd VkResult vkAllocateCommandBuffers( 5731 VkDevice device, 5732 const VkCommandBufferAllocateInfo* pAllocateInfo, 5733 VkCommandBuffer* pCommandBuffers) { 5734 assert(pAllocateInfo[0].sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO) 5735 5736 count := pAllocateInfo[0].commandBufferCount 5737 commandBuffers := pCommandBuffers[0:count] 5738 for i in (0 .. count) { 5739 commandBuffer := ? 5740 commandBuffers[i] = commandBuffer 5741 State.CommandBuffers[commandBuffer] = new!CommandBufferObject(device: device) 5742 } 5743 5744 return ? 5745} 5746 5747@threadSafety("system") 5748cmd void vkFreeCommandBuffers( 5749 VkDevice device, 5750 VkCommandPool commandPool, 5751 u32 commandBufferCount, 5752 const VkCommandBuffer* pCommandBuffers) { 5753 deviceObject := GetDevice(device) 5754 5755 commandBuffers := pCommandBuffers[0:commandBufferCount] 5756 for i in (0 .. commandBufferCount) { 5757 commandBufferObject := GetCommandBuffer(commandBuffers[i]) 5758 assert(commandBufferObject.device == device) 5759 // TODO: iterate over boundObjects and clear memory bindings 5760 State.CommandBuffers[commandBuffers[i]] = null 5761 } 5762} 5763 5764@threadSafety("app") 5765cmd VkResult vkBeginCommandBuffer( 5766 VkCommandBuffer commandBuffer, 5767 const VkCommandBufferBeginInfo* pBeginInfo) { 5768 assert(pBeginInfo.sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO) 5769 commandBufferObject := GetCommandBuffer(commandBuffer) 5770 5771 // TODO: iterate over boundObjects and clear memory bindings 5772 5773 return ? 5774} 5775 5776@threadSafety("app") 5777cmd VkResult vkEndCommandBuffer( 5778 VkCommandBuffer commandBuffer) { 5779 commandBufferObject := GetCommandBuffer(commandBuffer) 5780 5781 return ? 5782} 5783 5784@threadSafety("app") 5785cmd VkResult vkResetCommandBuffer( 5786 VkCommandBuffer commandBuffer, 5787 VkCommandBufferResetFlags flags) { 5788 commandBufferObject := GetCommandBuffer(commandBuffer) 5789 5790 // TODO: iterate over boundObjects and clear memory bindings 5791 5792 return ? 5793} 5794 5795 5796// Command buffer building functions 5797 5798@threadSafety("app") 5799cmd void vkCmdBindPipeline( 5800 VkCommandBuffer commandBuffer, 5801 VkPipelineBindPoint pipelineBindPoint, 5802 VkPipeline pipeline) { 5803 commandBufferObject := GetCommandBuffer(commandBuffer) 5804 pipelineObject := GetPipeline(pipeline) 5805 assert(commandBufferObject.device == pipelineObject.device) 5806 5807 queue := switch (pipelineBindPoint) { 5808 case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT 5809 case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT 5810 } 5811 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue) 5812} 5813 5814@threadSafety("app") 5815cmd void vkCmdSetViewport( 5816 VkCommandBuffer commandBuffer, 5817 u32 firstViewport, 5818 u32 viewportCount, 5819 const VkViewport* pViewports) { 5820 commandBufferObject := GetCommandBuffer(commandBuffer) 5821 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 5822} 5823 5824@threadSafety("app") 5825cmd void vkCmdSetScissor( 5826 VkCommandBuffer commandBuffer, 5827 u32 firstScissor, 5828 u32 scissorCount, 5829 const VkRect2D* pScissors) { 5830 commandBufferObject := GetCommandBuffer(commandBuffer) 5831 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 5832} 5833 5834@threadSafety("app") 5835cmd void vkCmdSetLineWidth( 5836 VkCommandBuffer commandBuffer, 5837 f32 lineWidth) { 5838 commandBufferObject := GetCommandBuffer(commandBuffer) 5839 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 5840} 5841 5842@threadSafety("app") 5843cmd void vkCmdSetDepthBias( 5844 VkCommandBuffer commandBuffer, 5845 f32 depthBiasConstantFactor, 5846 f32 depthBiasClamp, 5847 f32 depthBiasSlopeFactor) { 5848 commandBufferObject := GetCommandBuffer(commandBuffer) 5849 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 5850} 5851 5852@threadSafety("app") 5853cmd void vkCmdSetBlendConstants( 5854 VkCommandBuffer commandBuffer, 5855 // TODO(jessehall): apic only supports 'const' on pointer types. Using 5856 // an annotation as a quick hack to pass this to the template without 5857 // having to modify the AST and semantic model. 5858 @readonly f32[4] blendConstants) { 5859 commandBufferObject := GetCommandBuffer(commandBuffer) 5860 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 5861} 5862 5863@threadSafety("app") 5864cmd void vkCmdSetDepthBounds( 5865 VkCommandBuffer commandBuffer, 5866 f32 minDepthBounds, 5867 f32 maxDepthBounds) { 5868 commandBufferObject := GetCommandBuffer(commandBuffer) 5869 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 5870} 5871 5872@threadSafety("app") 5873cmd void vkCmdSetStencilCompareMask( 5874 VkCommandBuffer commandBuffer, 5875 VkStencilFaceFlags faceMask, 5876 u32 compareMask) { 5877 commandBufferObject := GetCommandBuffer(commandBuffer) 5878 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 5879} 5880 5881@threadSafety("app") 5882cmd void vkCmdSetStencilWriteMask( 5883 VkCommandBuffer commandBuffer, 5884 VkStencilFaceFlags faceMask, 5885 u32 writeMask) { 5886 commandBufferObject := GetCommandBuffer(commandBuffer) 5887 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 5888} 5889 5890@threadSafety("app") 5891cmd void vkCmdSetStencilReference( 5892 VkCommandBuffer commandBuffer, 5893 VkStencilFaceFlags faceMask, 5894 u32 reference) { 5895 commandBufferObject := GetCommandBuffer(commandBuffer) 5896 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 5897} 5898 5899@threadSafety("app") 5900cmd void vkCmdBindDescriptorSets( 5901 VkCommandBuffer commandBuffer, 5902 VkPipelineBindPoint pipelineBindPoint, 5903 VkPipelineLayout layout, 5904 u32 firstSet, 5905 u32 descriptorSetCount, 5906 const VkDescriptorSet* pDescriptorSets, 5907 u32 dynamicOffsetCount, 5908 const u32* pDynamicOffsets) { 5909 commandBufferObject := GetCommandBuffer(commandBuffer) 5910 5911 descriptorSets := pDescriptorSets[0:descriptorSetCount] 5912 for i in (0 .. descriptorSetCount) { 5913 descriptorSet := descriptorSets[i] 5914 descriptorSetObject := GetDescriptorSet(descriptorSet) 5915 assert(commandBufferObject.device == descriptorSetObject.device) 5916 } 5917 5918 dynamicOffsets := pDynamicOffsets[0:dynamicOffsetCount] 5919 for i in (0 .. dynamicOffsetCount) { 5920 dynamicOffset := dynamicOffsets[i] 5921 } 5922 5923 queue := switch (pipelineBindPoint) { 5924 case VK_PIPELINE_BIND_POINT_COMPUTE: VK_QUEUE_COMPUTE_BIT 5925 case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT 5926 } 5927 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue) 5928} 5929 5930@threadSafety("app") 5931cmd void vkCmdBindIndexBuffer( 5932 VkCommandBuffer commandBuffer, 5933 VkBuffer buffer, 5934 VkDeviceSize offset, 5935 VkIndexType indexType) { 5936 commandBufferObject := GetCommandBuffer(commandBuffer) 5937 bufferObject := GetBuffer(buffer) 5938 assert(commandBufferObject.device == bufferObject.device) 5939 5940 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory) 5941 5942 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 5943} 5944 5945@threadSafety("app") 5946cmd void vkCmdBindVertexBuffers( 5947 VkCommandBuffer commandBuffer, 5948 u32 firstBinding, 5949 u32 bindingCount, 5950 const VkBuffer* pBuffers, 5951 const VkDeviceSize* pOffsets) { 5952 commandBufferObject := GetCommandBuffer(commandBuffer) 5953 5954 // TODO: check if not [firstBinding:firstBinding+bindingCount] 5955 buffers := pBuffers[0:bindingCount] 5956 offsets := pOffsets[0:bindingCount] 5957 for i in (0 .. bindingCount) { 5958 buffer := buffers[i] 5959 offset := offsets[i] 5960 bufferObject := GetBuffer(buffer) 5961 assert(commandBufferObject.device == bufferObject.device) 5962 5963 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory) 5964 } 5965 5966 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 5967} 5968 5969@threadSafety("app") 5970cmd void vkCmdDraw( 5971 VkCommandBuffer commandBuffer, 5972 u32 vertexCount, 5973 u32 instanceCount, 5974 u32 firstVertex, 5975 u32 firstInstance) { 5976 commandBufferObject := GetCommandBuffer(commandBuffer) 5977 5978 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 5979} 5980 5981@threadSafety("app") 5982cmd void vkCmdDrawIndexed( 5983 VkCommandBuffer commandBuffer, 5984 u32 indexCount, 5985 u32 instanceCount, 5986 u32 firstIndex, 5987 s32 vertexOffset, 5988 u32 firstInstance) { 5989 commandBufferObject := GetCommandBuffer(commandBuffer) 5990 5991 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 5992} 5993 5994@threadSafety("app") 5995cmd void vkCmdDrawIndirect( 5996 VkCommandBuffer commandBuffer, 5997 VkBuffer buffer, 5998 VkDeviceSize offset, 5999 u32 drawCount, 6000 u32 stride) { 6001 commandBufferObject := GetCommandBuffer(commandBuffer) 6002 bufferObject := GetBuffer(buffer) 6003 assert(commandBufferObject.device == bufferObject.device) 6004 6005 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory) 6006 6007 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 6008} 6009 6010@threadSafety("app") 6011cmd void vkCmdDrawIndexedIndirect( 6012 VkCommandBuffer commandBuffer, 6013 VkBuffer buffer, 6014 VkDeviceSize offset, 6015 u32 drawCount, 6016 u32 stride) { 6017 commandBufferObject := GetCommandBuffer(commandBuffer) 6018 bufferObject := GetBuffer(buffer) 6019 assert(commandBufferObject.device == bufferObject.device) 6020 6021 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory) 6022 6023 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 6024} 6025 6026@threadSafety("app") 6027cmd void vkCmdDispatch( 6028 VkCommandBuffer commandBuffer, 6029 u32 groupCountX, 6030 u32 groupCountY, 6031 u32 groupCountZ) { 6032 commandBufferObject := GetCommandBuffer(commandBuffer) 6033 6034 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT) 6035} 6036 6037@threadSafety("app") 6038cmd void vkCmdDispatchIndirect( 6039 VkCommandBuffer commandBuffer, 6040 VkBuffer buffer, 6041 VkDeviceSize offset) { 6042 commandBufferObject := GetCommandBuffer(commandBuffer) 6043 bufferObject := GetBuffer(buffer) 6044 assert(commandBufferObject.device == bufferObject.device) 6045 6046 bindCommandBuffer(commandBuffer, buffer, bufferObject.memory) 6047 6048 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT) 6049} 6050 6051@threadSafety("app") 6052cmd void vkCmdCopyBuffer( 6053 VkCommandBuffer commandBuffer, 6054 VkBuffer srcBuffer, 6055 VkBuffer dstBuffer, 6056 u32 regionCount, 6057 const VkBufferCopy* pRegions) { 6058 commandBufferObject := GetCommandBuffer(commandBuffer) 6059 srcBufferObject := GetBuffer(srcBuffer) 6060 dstBufferObject := GetBuffer(dstBuffer) 6061 assert(commandBufferObject.device == srcBufferObject.device) 6062 assert(commandBufferObject.device == dstBufferObject.device) 6063 6064 regions := pRegions[0:regionCount] 6065 for i in (0 .. regionCount) { 6066 region := regions[i] 6067 } 6068 6069 bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory) 6070 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory) 6071 6072 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) 6073} 6074 6075@threadSafety("app") 6076cmd void vkCmdCopyImage( 6077 VkCommandBuffer commandBuffer, 6078 VkImage srcImage, 6079 VkImageLayout srcImageLayout, 6080 VkImage dstImage, 6081 VkImageLayout dstImageLayout, 6082 u32 regionCount, 6083 const VkImageCopy* pRegions) { 6084 commandBufferObject := GetCommandBuffer(commandBuffer) 6085 srcImageObject := GetImage(srcImage) 6086 dstImageObject := GetImage(dstImage) 6087 assert(commandBufferObject.device == srcImageObject.device) 6088 assert(commandBufferObject.device == dstImageObject.device) 6089 6090 regions := pRegions[0:regionCount] 6091 for i in (0 .. regionCount) { 6092 region := regions[i] 6093 } 6094 6095 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory) 6096 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory) 6097 6098 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) 6099} 6100 6101@threadSafety("app") 6102cmd void vkCmdBlitImage( 6103 VkCommandBuffer commandBuffer, 6104 VkImage srcImage, 6105 VkImageLayout srcImageLayout, 6106 VkImage dstImage, 6107 VkImageLayout dstImageLayout, 6108 u32 regionCount, 6109 const VkImageBlit* pRegions, 6110 VkFilter filter) { 6111 commandBufferObject := GetCommandBuffer(commandBuffer) 6112 srcImageObject := GetImage(srcImage) 6113 dstImageObject := GetImage(dstImage) 6114 assert(commandBufferObject.device == srcImageObject.device) 6115 assert(commandBufferObject.device == dstImageObject.device) 6116 6117 regions := pRegions[0:regionCount] 6118 for i in (0 .. regionCount) { 6119 region := regions[i] 6120 } 6121 6122 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory) 6123 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory) 6124 6125 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 6126} 6127 6128@threadSafety("app") 6129cmd void vkCmdCopyBufferToImage( 6130 VkCommandBuffer commandBuffer, 6131 VkBuffer srcBuffer, 6132 VkImage dstImage, 6133 VkImageLayout dstImageLayout, 6134 u32 regionCount, 6135 const VkBufferImageCopy* pRegions) { 6136 commandBufferObject := GetCommandBuffer(commandBuffer) 6137 srcBufferObject := GetBuffer(srcBuffer) 6138 dstImageObject := GetImage(dstImage) 6139 assert(commandBufferObject.device == srcBufferObject.device) 6140 assert(commandBufferObject.device == dstImageObject.device) 6141 6142 regions := pRegions[0:regionCount] 6143 for i in (0 .. regionCount) { 6144 region := regions[i] 6145 } 6146 6147 bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory) 6148 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory) 6149 6150 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) 6151} 6152 6153@threadSafety("app") 6154cmd void vkCmdCopyImageToBuffer( 6155 VkCommandBuffer commandBuffer, 6156 VkImage srcImage, 6157 VkImageLayout srcImageLayout, 6158 VkBuffer dstBuffer, 6159 u32 regionCount, 6160 const VkBufferImageCopy* pRegions) { 6161 commandBufferObject := GetCommandBuffer(commandBuffer) 6162 srcImageObject := GetImage(srcImage) 6163 dstBufferObject := GetBuffer(dstBuffer) 6164 assert(commandBufferObject.device == srcImageObject.device) 6165 assert(commandBufferObject.device == dstBufferObject.device) 6166 6167 regions := pRegions[0:regionCount] 6168 for i in (0 .. regionCount) { 6169 region := regions[i] 6170 } 6171 6172 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory) 6173 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory) 6174 6175 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) 6176} 6177 6178@threadSafety("app") 6179cmd void vkCmdUpdateBuffer( 6180 VkCommandBuffer commandBuffer, 6181 VkBuffer dstBuffer, 6182 VkDeviceSize dstOffset, 6183 VkDeviceSize dataSize, 6184 const void* pData) { 6185 commandBufferObject := GetCommandBuffer(commandBuffer) 6186 dstBufferObject := GetBuffer(dstBuffer) 6187 assert(commandBufferObject.device == dstBufferObject.device) 6188 6189 data := pData[0:dataSize] 6190 6191 bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory) 6192 6193 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) 6194} 6195 6196@threadSafety("app") 6197cmd void vkCmdFillBuffer( 6198 VkCommandBuffer commandBuffer, 6199 VkBuffer dstBuffer, 6200 VkDeviceSize dstOffset, 6201 VkDeviceSize size, 6202 u32 data) { 6203 commandBufferObject := GetCommandBuffer(commandBuffer) 6204 dstBufferObject := GetBuffer(dstBuffer) 6205 assert(commandBufferObject.device == dstBufferObject.device) 6206 6207 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) 6208} 6209 6210@threadSafety("app") 6211cmd void vkCmdClearColorImage( 6212 VkCommandBuffer commandBuffer, 6213 VkImage image, 6214 VkImageLayout imageLayout, 6215 const VkClearColorValue* pColor, 6216 u32 rangeCount, 6217 const VkImageSubresourceRange* pRanges) { 6218 commandBufferObject := GetCommandBuffer(commandBuffer) 6219 imageObject := GetImage(image) 6220 assert(commandBufferObject.device == imageObject.device) 6221 6222 ranges := pRanges[0:rangeCount] 6223 for i in (0 .. rangeCount) { 6224 range := ranges[i] 6225 } 6226 6227 bindCommandBuffer(commandBuffer, image, imageObject.memory) 6228 6229 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 6230} 6231 6232@threadSafety("app") 6233cmd void vkCmdClearDepthStencilImage( 6234 VkCommandBuffer commandBuffer, 6235 VkImage image, 6236 VkImageLayout imageLayout, 6237 const VkClearDepthStencilValue* pDepthStencil, 6238 u32 rangeCount, 6239 const VkImageSubresourceRange* pRanges) { 6240 commandBufferObject := GetCommandBuffer(commandBuffer) 6241 imageObject := GetImage(image) 6242 assert(commandBufferObject.device == imageObject.device) 6243 6244 ranges := pRanges[0:rangeCount] 6245 for i in (0 .. rangeCount) { 6246 range := ranges[i] 6247 } 6248 6249 bindCommandBuffer(commandBuffer, image, imageObject.memory) 6250 6251 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 6252} 6253 6254@threadSafety("app") 6255cmd void vkCmdClearAttachments( 6256 VkCommandBuffer commandBuffer, 6257 u32 attachmentCount, 6258 const VkClearAttachment* pAttachments, 6259 u32 rectCount, 6260 const VkClearRect* pRects) { 6261 commandBufferObject := GetCommandBuffer(commandBuffer) 6262 6263 rects := pRects[0:rectCount] 6264 for i in (0 .. rectCount) { 6265 rect := rects[i] 6266 } 6267 6268 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 6269} 6270 6271@threadSafety("app") 6272cmd void vkCmdResolveImage( 6273 VkCommandBuffer commandBuffer, 6274 VkImage srcImage, 6275 VkImageLayout srcImageLayout, 6276 VkImage dstImage, 6277 VkImageLayout dstImageLayout, 6278 u32 regionCount, 6279 const VkImageResolve* pRegions) { 6280 commandBufferObject := GetCommandBuffer(commandBuffer) 6281 srcImageObject := GetImage(srcImage) 6282 dstImageObject := GetImage(dstImage) 6283 assert(commandBufferObject.device == srcImageObject.device) 6284 assert(commandBufferObject.device == dstImageObject.device) 6285 6286 regions := pRegions[0:regionCount] 6287 for i in (0 .. regionCount) { 6288 region := regions[i] 6289 } 6290 6291 bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory) 6292 bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory) 6293 6294 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 6295} 6296 6297@threadSafety("app") 6298cmd void vkCmdSetEvent( 6299 VkCommandBuffer commandBuffer, 6300 VkEvent event, 6301 VkPipelineStageFlags stageMask) { 6302 commandBufferObject := GetCommandBuffer(commandBuffer) 6303 eventObject := GetEvent(event) 6304 assert(commandBufferObject.device == eventObject.device) 6305} 6306 6307@threadSafety("app") 6308cmd void vkCmdResetEvent( 6309 VkCommandBuffer commandBuffer, 6310 VkEvent event, 6311 VkPipelineStageFlags stageMask) { 6312 commandBufferObject := GetCommandBuffer(commandBuffer) 6313 eventObject := GetEvent(event) 6314 assert(commandBufferObject.device == eventObject.device) 6315} 6316 6317@threadSafety("app") 6318cmd void vkCmdWaitEvents( 6319 VkCommandBuffer commandBuffer, 6320 u32 eventCount, 6321 const VkEvent* pEvents, 6322 VkPipelineStageFlags srcStageMask, 6323 VkPipelineStageFlags dstStageMask, 6324 u32 memoryBarrierCount, 6325 const VkMemoryBarrier* pMemoryBarriers, 6326 u32 bufferMemoryBarrierCount, 6327 const VkBufferMemoryBarrier* pBufferMemoryBarriers, 6328 u32 imageMemoryBarrierCount, 6329 const VkImageMemoryBarrier* pImageMemoryBarriers) { 6330 commandBufferObject := GetCommandBuffer(commandBuffer) 6331 6332 events := pEvents[0:eventCount] 6333 for i in (0 .. eventCount) { 6334 event := events[i] 6335 eventObject := GetEvent(event) 6336 assert(commandBufferObject.device == eventObject.device) 6337 } 6338 6339 memoryBarriers := pMemoryBarriers[0:memoryBarrierCount] 6340 for i in (0 .. memoryBarrierCount) { 6341 memoryBarrier := memoryBarriers[i] 6342 } 6343 bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount] 6344 for i in (0 .. bufferMemoryBarrierCount) { 6345 bufferMemoryBarrier := bufferMemoryBarriers[i] 6346 bufferObject := GetBuffer(bufferMemoryBarrier.buffer) 6347 assert(bufferObject.device == commandBufferObject.device) 6348 } 6349 imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount] 6350 for i in (0 .. imageMemoryBarrierCount) { 6351 imageMemoryBarrier := imageMemoryBarriers[i] 6352 imageObject := GetImage(imageMemoryBarrier.image) 6353 assert(imageObject.device == commandBufferObject.device) 6354 } 6355} 6356 6357@threadSafety("app") 6358cmd void vkCmdPipelineBarrier( 6359 VkCommandBuffer commandBuffer, 6360 VkPipelineStageFlags srcStageMask, 6361 VkPipelineStageFlags dstStageMask, 6362 VkDependencyFlags dependencyFlags, 6363 u32 memoryBarrierCount, 6364 const VkMemoryBarrier* pMemoryBarriers, 6365 u32 bufferMemoryBarrierCount, 6366 const VkBufferMemoryBarrier* pBufferMemoryBarriers, 6367 u32 imageMemoryBarrierCount, 6368 const VkImageMemoryBarrier* pImageMemoryBarriers) { 6369 commandBufferObject := GetCommandBuffer(commandBuffer) 6370 6371 memoryBarriers := pMemoryBarriers[0:memoryBarrierCount] 6372 for i in (0 .. memoryBarrierCount) { 6373 memoryBarrier := memoryBarriers[i] 6374 } 6375 bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount] 6376 for i in (0 .. bufferMemoryBarrierCount) { 6377 bufferMemoryBarrier := bufferMemoryBarriers[i] 6378 bufferObject := GetBuffer(bufferMemoryBarrier.buffer) 6379 assert(bufferObject.device == commandBufferObject.device) 6380 } 6381 imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount] 6382 for i in (0 .. imageMemoryBarrierCount) { 6383 imageMemoryBarrier := imageMemoryBarriers[i] 6384 imageObject := GetImage(imageMemoryBarrier.image) 6385 assert(imageObject.device == commandBufferObject.device) 6386 } 6387} 6388 6389@threadSafety("app") 6390cmd void vkCmdBeginQuery( 6391 VkCommandBuffer commandBuffer, 6392 VkQueryPool queryPool, 6393 u32 query, 6394 VkQueryControlFlags flags) { 6395 commandBufferObject := GetCommandBuffer(commandBuffer) 6396 queryPoolObject := GetQueryPool(queryPool) 6397 assert(commandBufferObject.device == queryPoolObject.device) 6398} 6399 6400@threadSafety("app") 6401cmd void vkCmdEndQuery( 6402 VkCommandBuffer commandBuffer, 6403 VkQueryPool queryPool, 6404 u32 query) { 6405 commandBufferObject := GetCommandBuffer(commandBuffer) 6406 queryPoolObject := GetQueryPool(queryPool) 6407 assert(commandBufferObject.device == queryPoolObject.device) 6408} 6409 6410@threadSafety("app") 6411cmd void vkCmdResetQueryPool( 6412 VkCommandBuffer commandBuffer, 6413 VkQueryPool queryPool, 6414 u32 firstQuery, 6415 u32 queryCount) { 6416 commandBufferObject := GetCommandBuffer(commandBuffer) 6417 queryPoolObject := GetQueryPool(queryPool) 6418 assert(commandBufferObject.device == queryPoolObject.device) 6419} 6420 6421@threadSafety("app") 6422cmd void vkCmdWriteTimestamp( 6423 VkCommandBuffer commandBuffer, 6424 VkPipelineStageFlagBits pipelineStage, 6425 VkQueryPool queryPool, 6426 u32 query) { 6427 commandBufferObject := GetCommandBuffer(commandBuffer) 6428 queryPoolObject := GetQueryPool(queryPool) 6429 assert(commandBufferObject.device == queryPoolObject.device) 6430} 6431 6432@threadSafety("app") 6433cmd void vkCmdCopyQueryPoolResults( 6434 VkCommandBuffer commandBuffer, 6435 VkQueryPool queryPool, 6436 u32 firstQuery, 6437 u32 queryCount, 6438 VkBuffer dstBuffer, 6439 VkDeviceSize dstOffset, 6440 VkDeviceSize stride, 6441 VkQueryResultFlags flags) { 6442 commandBufferObject := GetCommandBuffer(commandBuffer) 6443 queryPoolObject := GetQueryPool(queryPool) 6444 dstBufferObject := GetBuffer(dstBuffer) 6445 assert(commandBufferObject.device == queryPoolObject.device) 6446 assert(commandBufferObject.device == dstBufferObject.device) 6447} 6448 6449cmd void vkCmdPushConstants( 6450 VkCommandBuffer commandBuffer, 6451 VkPipelineLayout layout, 6452 VkShaderStageFlags stageFlags, 6453 u32 offset, 6454 u32 size, 6455 const void* pValues) { 6456 commandBufferObject := GetCommandBuffer(commandBuffer) 6457 layoutObject := GetPipelineLayout(layout) 6458 assert(commandBufferObject.device == layoutObject.device) 6459} 6460 6461@threadSafety("app") 6462cmd void vkCmdBeginRenderPass( 6463 VkCommandBuffer commandBuffer, 6464 const VkRenderPassBeginInfo* pRenderPassBegin, 6465 VkSubpassContents contents) { 6466 commandBufferObject := GetCommandBuffer(commandBuffer) 6467 renderPassObject := GetRenderPass(pRenderPassBegin.renderPass) 6468 framebufferObject := GetFramebuffer(pRenderPassBegin.framebuffer) 6469 assert(commandBufferObject.device == renderPassObject.device) 6470 assert(commandBufferObject.device == framebufferObject.device) 6471 6472 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 6473} 6474 6475cmd void vkCmdNextSubpass( 6476 VkCommandBuffer commandBuffer, 6477 VkSubpassContents contents) { 6478 commandBufferObject := GetCommandBuffer(commandBuffer) 6479} 6480 6481@threadSafety("app") 6482cmd void vkCmdEndRenderPass( 6483 VkCommandBuffer commandBuffer) { 6484 commandBufferObject := GetCommandBuffer(commandBuffer) 6485 6486 commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) 6487} 6488 6489cmd void vkCmdExecuteCommands( 6490 VkCommandBuffer commandBuffer, 6491 u32 commandBufferCount, 6492 const VkCommandBuffer* pCommandBuffers) { 6493 commandBufferObject := GetCommandBuffer(commandBuffer) 6494 6495 commandBuffers := pCommandBuffers[0:commandBufferCount] 6496 for i in (0 .. commandBufferCount) { 6497 secondaryCommandBuffer := commandBuffers[i] 6498 secondaryCommandBufferObject := GetCommandBuffer(secondaryCommandBuffer) 6499 assert(commandBufferObject.device == secondaryCommandBufferObject.device) 6500 } 6501} 6502 6503@extension("VK_KHR_surface") // 1 6504cmd void vkDestroySurfaceKHR( 6505 VkInstance instance, 6506 VkSurfaceKHR surface, 6507 const VkAllocationCallbacks* pAllocator) { 6508 instanceObject := GetInstance(instance) 6509 surfaceObject := GetSurface(surface) 6510 assert(surfaceObject.instance == instance) 6511 6512 State.Surfaces[surface] = null 6513} 6514 6515@extension("VK_KHR_surface") // 1 6516cmd VkResult vkGetPhysicalDeviceSurfaceSupportKHR( 6517 VkPhysicalDevice physicalDevice, 6518 u32 queueFamilyIndex, 6519 VkSurfaceKHR surface, 6520 VkBool32* pSupported) { 6521 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 6522 6523 return ? 6524} 6525 6526@extension("VK_KHR_surface") // 1 6527cmd VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR( 6528 VkPhysicalDevice physicalDevice, 6529 VkSurfaceKHR surface, 6530 VkSurfaceCapabilitiesKHR* pSurfaceCapabilities) { 6531 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 6532 6533 surfaceCapabilities := ? 6534 pSurfaceCapabilities[0] = surfaceCapabilities 6535 6536 return ? 6537} 6538 6539@extension("VK_KHR_surface") // 1 6540cmd VkResult vkGetPhysicalDeviceSurfaceFormatsKHR( 6541 VkPhysicalDevice physicalDevice, 6542 VkSurfaceKHR surface, 6543 u32* pSurfaceFormatCount, 6544 VkSurfaceFormatKHR* pSurfaceFormats) { 6545 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 6546 6547 count := as!u32(?) 6548 pSurfaceFormatCount[0] = count 6549 surfaceFormats := pSurfaceFormats[0:count] 6550 6551 for i in (0 .. count) { 6552 surfaceFormat := ? 6553 surfaceFormats[i] = surfaceFormat 6554 } 6555 6556 return ? 6557} 6558 6559@extension("VK_KHR_surface") // 1 6560cmd VkResult vkGetPhysicalDeviceSurfacePresentModesKHR( 6561 VkPhysicalDevice physicalDevice, 6562 VkSurfaceKHR surface, 6563 u32* pPresentModeCount, 6564 VkPresentModeKHR* pPresentModes) { 6565 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 6566 6567 count := as!u32(?) 6568 pPresentModeCount[0] = count 6569 presentModes := pPresentModes[0:count] 6570 6571 for i in (0 .. count) { 6572 presentMode := ? 6573 presentModes[i] = presentMode 6574 } 6575 6576 return ? 6577} 6578 6579@extension("VK_KHR_swapchain") // 2 6580cmd VkResult vkCreateSwapchainKHR( 6581 VkDevice device, 6582 const VkSwapchainCreateInfoKHR* pCreateInfo, 6583 const VkAllocationCallbacks* pAllocator, 6584 VkSwapchainKHR* pSwapchain) { 6585 assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR) 6586 deviceObject := GetDevice(device) 6587 6588 swapchain := ? 6589 pSwapchain[0] = swapchain 6590 State.Swapchains[swapchain] = new!SwapchainObject(device: device) 6591 6592 return ? 6593} 6594 6595@extension("VK_KHR_swapchain") // 2 6596cmd void vkDestroySwapchainKHR( 6597 VkDevice device, 6598 VkSwapchainKHR swapchain, 6599 const VkAllocationCallbacks* pAllocator) { 6600 deviceObject := GetDevice(device) 6601 swapchainObject := GetSwapchain(swapchain) 6602 assert(swapchainObject.device == device) 6603 6604 State.Swapchains[swapchain] = null 6605} 6606 6607@extension("VK_KHR_swapchain") // 2 6608cmd VkResult vkGetSwapchainImagesKHR( 6609 VkDevice device, 6610 VkSwapchainKHR swapchain, 6611 u32* pSwapchainImageCount, 6612 VkImage* pSwapchainImages) { 6613 deviceObject := GetDevice(device) 6614 6615 count := as!u32(?) 6616 pSwapchainImageCount[0] = count 6617 swapchainImages := pSwapchainImages[0:count] 6618 6619 for i in (0 .. count) { 6620 swapchainImage := ? 6621 swapchainImages[i] = swapchainImage 6622 State.Images[swapchainImage] = new!ImageObject(device: device) 6623 } 6624 6625 return ? 6626} 6627 6628@extension("VK_KHR_swapchain") // 2 6629cmd VkResult vkAcquireNextImageKHR( 6630 VkDevice device, 6631 VkSwapchainKHR swapchain, 6632 u64 timeout, 6633 VkSemaphore semaphore, 6634 VkFence fence, 6635 u32* pImageIndex) { 6636 deviceObject := GetDevice(device) 6637 swapchainObject := GetSwapchain(swapchain) 6638 6639 imageIndex := ? 6640 pImageIndex[0] = imageIndex 6641 6642 return ? 6643} 6644 6645@extension("VK_KHR_swapchain") // 2 6646cmd VkResult vkQueuePresentKHR( 6647 VkQueue queue, 6648 const VkPresentInfoKHR* pPresentInfo) { 6649 queueObject := GetQueue(queue) 6650 6651 presentInfo := ? 6652 pPresentInfo[0] = presentInfo 6653 6654 return ? 6655} 6656 6657@extension("VK_KHR_display") // 3 6658cmd VkResult vkGetPhysicalDeviceDisplayPropertiesKHR( 6659 VkPhysicalDevice physicalDevice, 6660 u32* pPropertyCount, 6661 VkDisplayPropertiesKHR* pProperties) { 6662 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 6663 return ? 6664} 6665 6666@extension("VK_KHR_display") // 3 6667cmd VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR( 6668 VkPhysicalDevice physicalDevice, 6669 u32* pPropertyCount, 6670 VkDisplayPlanePropertiesKHR* pProperties) { 6671 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 6672 return ? 6673} 6674 6675@extension("VK_KHR_display") // 3 6676cmd VkResult vkGetDisplayPlaneSupportedDisplaysKHR( 6677 VkPhysicalDevice physicalDevice, 6678 u32 planeIndex, 6679 u32* pDisplayCount, 6680 VkDisplayKHR* pDisplays) { 6681 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 6682 return ? 6683} 6684 6685@extension("VK_KHR_display") // 3 6686cmd VkResult vkGetDisplayModePropertiesKHR( 6687 VkPhysicalDevice physicalDevice, 6688 VkDisplayKHR display, 6689 u32* pPropertyCount, 6690 VkDisplayModePropertiesKHR* pProperties) { 6691 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 6692 return ? 6693} 6694 6695@extension("VK_KHR_display") // 3 6696cmd VkResult vkCreateDisplayModeKHR( 6697 VkPhysicalDevice physicalDevice, 6698 VkDisplayKHR display, 6699 const VkDisplayModeCreateInfoKHR* pCreateInfo, 6700 const VkAllocationCallbacks* pAllocator, 6701 VkDisplayModeKHR* pMode) { 6702 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 6703 return ? 6704} 6705 6706@extension("VK_KHR_display") // 3 6707cmd VkResult vkGetDisplayPlaneCapabilitiesKHR( 6708 VkPhysicalDevice physicalDevice, 6709 VkDisplayModeKHR mode, 6710 u32 planeIndex, 6711 VkDisplayPlaneCapabilitiesKHR* pCapabilities) { 6712 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 6713 return ? 6714} 6715 6716@extension("VK_KHR_display") // 3 6717cmd VkResult vkCreateDisplayPlaneSurfaceKHR( 6718 VkInstance instance, 6719 const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, 6720 const VkAllocationCallbacks* pAllocator, 6721 VkSurfaceKHR* pSurface) { 6722 return ? 6723} 6724 6725@extension("VK_KHR_display_swapchain") // 4 6726cmd VkResult vkCreateSharedSwapchainsKHR( 6727 VkDevice device, 6728 u32 swapchainCount, 6729 const VkSwapchainCreateInfoKHR* pCreateInfos, 6730 const VkAllocationCallbacks* pAllocator, 6731 VkSwapchainKHR* pSwapchains) { 6732 return ? 6733} 6734 6735@extension("VK_KHR_xlib_surface") // 5 6736cmd VkResult vkCreateXlibSurfaceKHR( 6737 VkInstance instance, 6738 const VkXlibSurfaceCreateInfoKHR* pCreateInfo, 6739 const VkAllocationCallbacks* pAllocator, 6740 VkSurfaceKHR* pSurface) { 6741 instanceObject := GetInstance(instance) 6742 return ? 6743} 6744 6745@extension("VK_KHR_xlib_surface") // 5 6746cmd VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR( 6747 VkPhysicalDevice physicalDevice, 6748 u32 queueFamilyIndex, 6749 platform.Display* dpy, 6750 platform.VisualID visualID) { 6751 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 6752 return ? 6753} 6754 6755@extension("VK_KHR_xcb_surface") // 6 6756cmd VkResult vkCreateXcbSurfaceKHR( 6757 VkInstance instance, 6758 const VkXcbSurfaceCreateInfoKHR* pCreateInfo, 6759 const VkAllocationCallbacks* pAllocator, 6760 VkSurfaceKHR* pSurface) { 6761 instanceObject := GetInstance(instance) 6762 return ? 6763} 6764 6765@extension("VK_KHR_xcb_surface") // 6 6766cmd VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR( 6767 VkPhysicalDevice physicalDevice, 6768 u32 queueFamilyIndex, 6769 platform.xcb_connection_t* connection, 6770 platform.xcb_visualid_t visual_id) { 6771 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 6772 return ? 6773} 6774 6775@extension("VK_KHR_wayland_surface") // 7 6776cmd VkResult vkCreateWaylandSurfaceKHR( 6777 VkInstance instance, 6778 const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, 6779 const VkAllocationCallbacks* pAllocator, 6780 VkSurfaceKHR* pSurface) { 6781 instanceObject := GetInstance(instance) 6782 return ? 6783} 6784 6785@extension("VK_KHR_wayland_surface") // 7 6786cmd VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR( 6787 VkPhysicalDevice physicalDevice, 6788 u32 queueFamilyIndex, 6789 platform.wl_display* display) { 6790 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 6791 return ? 6792} 6793 6794@extension("VK_KHR_mir_surface") // 8 6795cmd VkResult vkCreateMirSurfaceKHR( 6796 VkInstance instance, 6797 const VkMirSurfaceCreateInfoKHR* pCreateInfo, 6798 const VkAllocationCallbacks* pAllocator, 6799 VkSurfaceKHR* pSurface) { 6800 instanceObject := GetInstance(instance) 6801 return ? 6802} 6803 6804@extension("VK_KHR_mir_surface") // 8 6805cmd VkBool32 vkGetPhysicalDeviceMirPresentationSupportKHR( 6806 VkPhysicalDevice physicalDevice, 6807 u32 queueFamilyIndex, 6808 platform.MirConnection* connection) { 6809 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 6810 return ? 6811} 6812 6813@extension("VK_KHR_android_surface") // 9 6814cmd VkResult vkCreateAndroidSurfaceKHR( 6815 VkInstance instance, 6816 const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, 6817 const VkAllocationCallbacks* pAllocator, 6818 VkSurfaceKHR* pSurface) { 6819 instanceObject := GetInstance(instance) 6820 return ? 6821} 6822 6823@extension("VK_KHR_win32_surface") // 10 6824cmd VkResult vkCreateWin32SurfaceKHR( 6825 VkInstance instance, 6826 const VkWin32SurfaceCreateInfoKHR* pCreateInfo, 6827 const VkAllocationCallbacks* pAllocator, 6828 VkSurfaceKHR* pSurface) { 6829 instanceObject := GetInstance(instance) 6830 return ? 6831} 6832 6833@extension("VK_KHR_win32_surface") // 10 6834cmd VkResult vkGetPhysicalDeviceWin32PresentationSupportKHR( 6835 VkPhysicalDevice physicalDevice, 6836 u32 queueFamilyIndex) { 6837 physicalDeviceObject := GetPhysicalDevice(physicalDevice) 6838 return ? 6839} 6840 6841@extension("VK_ANDROID_native_buffer") // 11 6842@optional 6843cmd VkResult vkGetSwapchainGrallocUsageANDROID( 6844 VkDevice device, 6845 VkFormat format, 6846 VkImageUsageFlags imageUsage, 6847 s32* grallocUsage) { 6848 return ? 6849} 6850 6851@extension("VK_ANDROID_native_buffer") // 11 6852@optional 6853cmd VkResult vkGetSwapchainGrallocUsage2ANDROID( 6854 VkDevice device, 6855 VkFormat format, 6856 VkImageUsageFlags imageUsage, 6857 VkSwapchainImageUsageFlagsANDROID swapchainImageUsage, 6858 u64* grallocConsumerUsage, 6859 u64* grallocProducerUsage) { 6860 return ? 6861} 6862 6863@extension("VK_ANDROID_native_buffer") // 11 6864cmd VkResult vkAcquireImageANDROID( 6865 VkDevice device, 6866 VkImage image, 6867 int nativeFenceFd, 6868 VkSemaphore semaphore, 6869 VkFence fence) { 6870 return ? 6871} 6872 6873@extension("VK_ANDROID_native_buffer") // 11 6874cmd VkResult vkQueueSignalReleaseImageANDROID( 6875 VkQueue queue, 6876 u32 waitSemaphoreCount, 6877 const VkSemaphore* pWaitSemaphores, 6878 VkImage image, 6879 int* pNativeFenceFd) { 6880 return ? 6881} 6882 6883@extension("VK_EXT_debug_report") // 12 6884@external type void* PFN_vkDebugReportCallbackEXT 6885@extension("VK_EXT_debug_report") // 12 6886@pfn cmd VkBool32 vkDebugReportCallbackEXT( 6887 VkDebugReportFlagsEXT flags, 6888 VkDebugReportObjectTypeEXT objectType, 6889 u64 object, 6890 platform.size_t location, 6891 s32 messageCode, 6892 const char* pLayerPrefix, 6893 const char* pMessage, 6894 void* pUserData) { 6895 return ? 6896} 6897 6898@extension("VK_EXT_debug_report") // 12 6899cmd VkResult vkCreateDebugReportCallbackEXT( 6900 VkInstance instance, 6901 const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, 6902 const VkAllocationCallbacks* pAllocator, 6903 VkDebugReportCallbackEXT* pCallback) { 6904 return ? 6905} 6906 6907@extension("VK_EXT_debug_report") // 12 6908cmd void vkDestroyDebugReportCallbackEXT( 6909 VkInstance instance, 6910 VkDebugReportCallbackEXT callback, 6911 const VkAllocationCallbacks* pAllocator) { 6912} 6913 6914@extension("VK_EXT_debug_report") // 12 6915cmd void vkDebugReportMessageEXT( 6916 VkInstance instance, 6917 VkDebugReportFlagsEXT flags, 6918 VkDebugReportObjectTypeEXT objectType, 6919 u64 object, 6920 platform.size_t location, 6921 s32 messageCode, 6922 const char* pLayerPrefix, 6923 const char* pMessage) { 6924} 6925 6926@extension("VK_EXT_debug_marker") // 23 6927cmd VkResult vkDebugMarkerSetObjectTagEXT( 6928 VkDevice device, 6929 VkDebugMarkerObjectTagInfoEXT* pTagInfo) { 6930 return ? 6931} 6932 6933@extension("VK_EXT_debug_marker") // 23 6934cmd VkResult vkDebugMarkerSetObjectNameEXT( 6935 VkDevice device, 6936 VkDebugMarkerObjectNameInfoEXT* pNameInfo) { 6937 return ? 6938} 6939 6940@extension("VK_EXT_debug_marker") // 23 6941cmd void vkCmdDebugMarkerBeginEXT( 6942 VkCommandBuffer commandBuffer, 6943 VkDebugMarkerMarkerInfoEXT* pMarkerInfo) { 6944} 6945 6946@extension("VK_EXT_debug_marker") // 23 6947cmd void vkCmdDebugMarkerEndEXT( 6948 VkCommandBuffer commandBuffer) { 6949} 6950 6951@extension("VK_EXT_debug_marker") // 23 6952cmd void vkCmdDebugMarkerInsertEXT( 6953 VkCommandBuffer commandBuffer, 6954 VkDebugMarkerMarkerInfoEXT* pMarkerInfo) { 6955} 6956 6957@extension("VK_AMD_draw_indirect_count") // 34 6958cmd void vkCmdDrawIndirectCountAMD( 6959 VkCommandBuffer commandBuffer, 6960 VkBuffer buffer, 6961 VkDeviceSize offset, 6962 VkBuffer countBuffer, 6963 VkDeviceSize countBufferOffset, 6964 u32 maxDrawCount, 6965 u32 stride) { 6966} 6967 6968@extension("VK_AMD_draw_indirect_count") // 34 6969cmd void vkCmdDrawIndexedIndirectCountAMD( 6970 VkCommandBuffer commandBuffer, 6971 VkBuffer buffer, 6972 VkDeviceSize offset, 6973 VkBuffer countBuffer, 6974 VkDeviceSize countBufferOffset, 6975 u32 maxDrawCount, 6976 u32 stride) { 6977} 6978 6979@extension("VK_NV_external_memory_capabilities") // 56 6980cmd VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV( 6981 VkPhysicalDevice physicalDevice, 6982 VkFormat format, 6983 VkImageType type, 6984 VkImageTiling tiling, 6985 VkImageUsageFlags usage, 6986 VkImageCreateFlags flags, 6987 VkExternalMemoryHandleTypeFlagsNV externalHandleType, 6988 VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties) { 6989 return ? 6990} 6991 6992@extension("VK_NV_external_memory_win32") // 58 6993cmd VkResult vkGetMemoryWin32HandleNV( 6994 VkDevice device, 6995 VkDeviceMemory memory, 6996 VkExternalMemoryHandleTypeFlagsNV handleType, 6997 platform.HANDLE* pHandle) { 6998 return ? 6999} 7000 7001@extension("VK_KHR_get_physical_device_properties2") // 60 7002cmd void vkGetPhysicalDeviceFeatures2KHR( 7003 VkPhysicalDevice physicalDevice, 7004 VkPhysicalDeviceFeatures2KHR* pFeatures) { 7005} 7006 7007@extension("VK_KHR_get_physical_device_properties2") // 60 7008cmd void vkGetPhysicalDeviceProperties2KHR( 7009 VkPhysicalDevice physicalDevice, 7010 VkPhysicalDeviceProperties2KHR* pProperties) { 7011} 7012 7013@extension("VK_KHR_get_physical_device_properties2") // 60 7014cmd void vkGetPhysicalDeviceFormatProperties2KHR( 7015 VkPhysicalDevice physicalDevice, 7016 VkFormat format, 7017 VkFormatProperties2KHR* pFormatProperties) { 7018} 7019 7020@extension("VK_KHR_get_physical_device_properties2") // 60 7021cmd VkResult vkGetPhysicalDeviceImageFormatProperties2KHR( 7022 VkPhysicalDevice physicalDevice, 7023 const VkPhysicalDeviceImageFormatInfo2KHR* pImageFormatInfo, 7024 VkImageFormatProperties2KHR* pImageFormatProperties) { 7025 return ? 7026} 7027 7028@extension("VK_KHR_get_physical_device_properties2") // 60 7029cmd void vkGetPhysicalDeviceQueueFamilyProperties2KHR( 7030 VkPhysicalDevice physicalDevice, 7031 u32* pQueueFamilyPropertyCount, 7032 VkQueueFamilyProperties2KHR* pQueueFamilyProperties) { 7033} 7034 7035@extension("VK_KHR_get_physical_device_properties2") // 60 7036cmd void vkGetPhysicalDeviceMemoryProperties2KHR( 7037 VkPhysicalDevice physicalDevice, 7038 VkPhysicalDeviceMemoryProperties2KHR* pMemoryProperties) { 7039} 7040 7041@extension("VK_KHR_get_physical_device_properties2") // 60 7042cmd void vkGetPhysicalDeviceSparseImageFormatProperties2KHR( 7043 VkPhysicalDevice physicalDevice, 7044 const VkPhysicalDeviceSparseImageFormatInfo2KHR* pFormatInfo, 7045 u32* pPropertyCount, 7046 VkSparseImageFormatProperties2KHR* pProperties) { 7047} 7048 7049@extension("VK_KHX_device_group") // 61 7050cmd void vkGetDeviceGroupPeerMemoryFeaturesKHX( 7051 VkDevice device, 7052 u32 heapIndex, 7053 u32 localDeviceIndex, 7054 u32 remoteDeviceIndex, 7055 VkPeerMemoryFeatureFlagsKHX* pPeerMemoryFeatures) { 7056} 7057 7058@extension("VK_KHX_device_group") // 61 7059cmd VkResult vkBindBufferMemory2KHX( 7060 VkDevice device, 7061 u32 bindInfoCount, 7062 const VkBindBufferMemoryInfoKHX* pBindInfos) { 7063 return ? 7064} 7065 7066@extension("VK_KHX_device_group") // 61 7067cmd VkResult vkBindImageMemory2KHX( 7068 VkDevice device, 7069 u32 bindInfoCount, 7070 const VkBindImageMemoryInfoKHX* pBindInfos) { 7071 return ? 7072} 7073 7074@extension("VK_KHX_device_group") // 61 7075cmd void vkCmdSetDeviceMaskKHX( 7076 VkCommandBuffer commandBuffer, 7077 u32 deviceMask) { 7078} 7079 7080@extension("VK_KHX_device_group") // 61 7081cmd VkResult vkGetDeviceGroupPresentCapabilitiesKHX( 7082 VkDevice device, 7083 VkDeviceGroupPresentCapabilitiesKHX* pDeviceGroupPresentCapabilities) { 7084 return ? 7085} 7086 7087@extension("VK_KHX_device_group") // 61 7088cmd VkResult vkGetDeviceGroupSurfacePresentModesKHX( 7089 VkDevice device, 7090 VkSurfaceKHR surface, 7091 VkDeviceGroupPresentModeFlagsKHX* pModes) { 7092 return ? 7093} 7094 7095@extension("VK_KHX_device_group") // 61 7096cmd VkResult vkAcquireNextImage2KHX( 7097 VkDevice device, 7098 const VkAcquireNextImageInfoKHX* pAcquireInfo, 7099 u32* pImageIndex) { 7100 return ? 7101} 7102 7103@extension("VK_KHX_device_group") // 61 7104cmd void vkCmdDispatchBaseKHX( 7105 VkCommandBuffer commandBuffer, 7106 u32 baseGroupX, 7107 u32 baseGroupY, 7108 u32 baseGroupZ, 7109 u32 groupCountX, 7110 u32 groupCountY, 7111 u32 groupCountZ) { 7112} 7113 7114@extension("VK_KHX_device_group") // 61 7115cmd VkResult vkGetPhysicalDevicePresentRectanglesKHX( 7116 VkPhysicalDevice physicalDevice, 7117 VkSurfaceKHR surface, 7118 u32* pRectCount, 7119 VkRect2D* pRects) { 7120 return ? 7121} 7122 7123@extension("VK_NN_vi_surface") // 63 7124cmd VkResult vkCreateViSurfaceNN( 7125 VkInstance instance, 7126 const VkViSurfaceCreateInfoNN* pCreateInfo, 7127 const VkAllocationCallbacks* pAllocator, 7128 VkSurfaceKHR* pSurface) { 7129 return ? 7130} 7131 7132@extension("VK_KHR_maintenance1") // 70 7133cmd void vkTrimCommandPoolKHR( 7134 VkDevice device, 7135 VkCommandPool commandPool, 7136 VkCommandPoolTrimFlagsKHR flags) { 7137} 7138 7139@extension("VK_KHX_device_group_creation") // 71 7140cmd VkResult vkEnumeratePhysicalDeviceGroupsKHX( 7141 VkInstance instance, 7142 u32* pPhysicalDeviceGroupCount, 7143 VkPhysicalDeviceGroupPropertiesKHX* pPhysicalDeviceGroupProperties) { 7144 return ? 7145} 7146 7147@extension("VK_KHX_external_memory_capabilities") // 72 7148cmd void vkGetPhysicalDeviceExternalBufferPropertiesKHX( 7149 VkPhysicalDevice physicalDevice, 7150 const VkPhysicalDeviceExternalBufferInfoKHX* pExternalBufferInfo, 7151 VkExternalBufferPropertiesKHX* pExternalBufferProperties) { 7152} 7153 7154@extension("VK_KHX_external_memory_win32") // 74 7155cmd VkResult vkGetMemoryWin32HandleKHX( 7156 VkDevice device, 7157 VkDeviceMemory memory, 7158 VkExternalMemoryHandleTypeFlagBitsKHX handleType, 7159 platform.HANDLE* pHandle) { 7160 return ? 7161} 7162 7163@extension("VK_KHX_external_memory_win32") // 74 7164cmd VkResult vkGetMemoryWin32HandlePropertiesKHX( 7165 VkDevice device, 7166 VkExternalMemoryHandleTypeFlagBitsKHX handleType, 7167 platform.HANDLE handle, 7168 VkMemoryWin32HandlePropertiesKHX* pMemoryWin32HandleProperties) { 7169 return ? 7170} 7171 7172@extension("VK_KHX_external_memory_fd") // 75 7173cmd VkResult vkGetMemoryFdKHX( 7174 VkDevice device, 7175 VkDeviceMemory memory, 7176 VkExternalMemoryHandleTypeFlagBitsKHX handleType, 7177 s32* pFd) { 7178 return ? 7179} 7180 7181@extension("VK_KHX_external_memory_fd") // 75 7182cmd VkResult vkGetMemoryFdPropertiesKHX( 7183 VkDevice device, 7184 VkExternalMemoryHandleTypeFlagBitsKHX handleType, 7185 s32 fd, 7186 VkMemoryFdPropertiesKHX* pMemoryFdProperties) { 7187 return ? 7188} 7189 7190@extension("VK_KHX_external_semaphore_capabilities") // 77 7191cmd void vkGetPhysicalDeviceExternalSemaphorePropertiesKHX( 7192 VkPhysicalDevice physicalDevice, 7193 const VkPhysicalDeviceExternalSemaphoreInfoKHX* pExternalSemaphoreInfo, 7194 VkExternalSemaphorePropertiesKHX* pExternalSemaphoreProperties) { 7195} 7196 7197@extension("VK_KHX_external_semaphore_win32") // 79 7198cmd VkResult vkImportSemaphoreWin32HandleKHX( 7199 VkDevice device, 7200 const VkImportSemaphoreWin32HandleInfoKHX* pImportSemaphoreWin32HandleInfo) { 7201 return ? 7202} 7203 7204@extension("VK_KHX_external_semaphore_win32") // 79 7205cmd VkResult vkGetSemaphoreWin32HandleKHX( 7206 VkDevice device, 7207 VkSemaphore semaphore, 7208 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType, 7209 platform.HANDLE* pHandle) { 7210 return ? 7211} 7212 7213@extension("VK_KHX_external_semaphore_fd") // 80 7214cmd VkResult vkImportSemaphoreFdKHX( 7215 VkDevice device, 7216 const VkImportSemaphoreFdInfoKHX* pImportSemaphoreFdInfo) { 7217 return ? 7218} 7219 7220@extension("VK_KHX_external_semaphore_fd") // 80 7221cmd VkResult vkGetSemaphoreFdKHX( 7222 VkDevice device, 7223 VkSemaphore semaphore, 7224 VkExternalSemaphoreHandleTypeFlagBitsKHX handleType, 7225 s32* pFd) { 7226 return ? 7227} 7228 7229@extension("VK_KHR_push_descriptor") // 81 7230cmd void vkCmdPushDescriptorSetKHR( 7231 VkCommandBuffer commandBuffer, 7232 VkPipelineBindPoint pipelineBindPoint, 7233 VkPipelineLayout layout, 7234 u32 set, 7235 u32 descriptorWriteCount, 7236 const VkWriteDescriptorSet* pDescriptorWrites) { 7237} 7238 7239@extension("VK_KHR_descriptor_update_template") // 86 7240cmd VkResult vkCreateDescriptorUpdateTemplateKHR( 7241 VkDevice device, 7242 const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, 7243 const VkAllocationCallbacks* pAllocator, 7244 VkDescriptorUpdateTemplateKHR* pDescriptorUpdateTemplate) { 7245 return ? 7246} 7247 7248@extension("VK_KHR_descriptor_update_template") // 86 7249cmd void vkDestroyDescriptorUpdateTemplateKHR( 7250 VkDevice device, 7251 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, 7252 const VkAllocationCallbacks* pAllocator) { 7253} 7254 7255@extension("VK_KHR_descriptor_update_template") // 86 7256cmd void vkUpdateDescriptorSetWithTemplateKHR( 7257 VkDevice device, 7258 VkDescriptorSet descriptorSet, 7259 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, 7260 const void* pData) { 7261} 7262 7263@extension("VK_KHR_descriptor_update_template") // 86 7264cmd void vkCmdPushDescriptorSetWithTemplateKHR( 7265 VkCommandBuffer commandBuffer, 7266 VkDescriptorUpdateTemplateKHR descriptorUpdateTemplate, 7267 VkPipelineLayout layout, 7268 u32 set, 7269 const void* pData) { 7270} 7271 7272@extension("VK_NVX_device_generated_commands") // 87 7273cmd void vkCmdProcessCommandsNVX( 7274 VkCommandBuffer commandBuffer, 7275 const VkCmdProcessCommandsInfoNVX* pProcessCommandsInfo) { 7276} 7277 7278@extension("VK_NVX_device_generated_commands") // 87 7279cmd void vkCmdReserveSpaceForCommandsNVX( 7280 VkCommandBuffer commandBuffer, 7281 const VkCmdReserveSpaceForCommandsInfoNVX* pReserveSpaceInfo) { 7282} 7283 7284@extension("VK_NVX_device_generated_commands") // 87 7285cmd VkResult vkCreateIndirectCommandsLayoutNVX( 7286 VkDevice device, 7287 const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, 7288 const VkAllocationCallbacks* pAllocator, 7289 VkIndirectCommandsLayoutNVX* pIndirectCommandsLayout) { 7290 return ? 7291} 7292 7293@extension("VK_NVX_device_generated_commands") // 87 7294cmd void vkDestroyIndirectCommandsLayoutNVX( 7295 VkDevice device, 7296 VkIndirectCommandsLayoutNVX indirectCommandsLayout, 7297 const VkAllocationCallbacks* pAllocator) { 7298} 7299 7300@extension("VK_NVX_device_generated_commands") // 87 7301cmd VkResult vkCreateObjectTableNVX( 7302 VkDevice device, 7303 const VkObjectTableCreateInfoNVX* pCreateInfo, 7304 const VkAllocationCallbacks* pAllocator, 7305 VkObjectTableNVX* pObjectTable) { 7306 return ? 7307} 7308 7309@extension("VK_NVX_device_generated_commands") // 87 7310cmd void vkDestroyObjectTableNVX( 7311 VkDevice device, 7312 VkObjectTableNVX objectTable, 7313 const VkAllocationCallbacks* pAllocator) { 7314} 7315 7316@extension("VK_NVX_device_generated_commands") // 87 7317cmd VkResult vkRegisterObjectsNVX( 7318 VkDevice device, 7319 VkObjectTableNVX objectTable, 7320 u32 objectCount, 7321 const VkObjectTableEntryNVX* const* ppObjectTableEntries, 7322 const u32* pObjectIndices) { 7323 return ? 7324} 7325 7326@extension("VK_NVX_device_generated_commands") // 87 7327cmd VkResult vkUnregisterObjectsNVX( 7328 VkDevice device, 7329 VkObjectTableNVX objectTable, 7330 u32 objectCount, 7331 const VkObjectEntryTypeNVX* pObjectEntryTypes, 7332 const u32* pObjectIndices) { 7333 return ? 7334} 7335 7336@extension("VK_NVX_device_generated_commands") // 87 7337cmd void vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( 7338 VkPhysicalDevice physicalDevice, 7339 VkDeviceGeneratedCommandsFeaturesNVX* pFeatures, 7340 VkDeviceGeneratedCommandsLimitsNVX* pLimits) { 7341} 7342 7343@extension("VK_NV_clip_space_w_scaling") // 88 7344cmd void vkCmdSetViewportWScalingNV( 7345 VkCommandBuffer commandBuffer, 7346 u32 firstViewport, 7347 u32 viewportCount, 7348 const VkViewportWScalingNV* pViewportWScalings) { 7349} 7350 7351@extension("VK_EXT_direct_mode_display") // 89 7352cmd VkResult vkReleaseDisplayEXT( 7353 VkPhysicalDevice physicalDevice, 7354 VkDisplayKHR display) { 7355 return ? 7356} 7357 7358@extension("VK_EXT_acquire_xlib_display") // 90 7359cmd VkResult vkAcquireXlibDisplayEXT( 7360 VkPhysicalDevice physicalDevice, 7361 platform.Display* dpy, 7362 VkDisplayKHR display) { 7363 return ? 7364} 7365 7366@extension("VK_EXT_acquire_xlib_display") // 90 7367cmd VkResult vkGetRandROutputDisplayEXT( 7368 VkPhysicalDevice physicalDevice, 7369 platform.Display* dpy, 7370 platform.RROutput rrOutput, 7371 VkDisplayKHR* pDisplay) { 7372 return ? 7373} 7374 7375@extension("VK_EXT_display_surface_counter") // 91 7376cmd VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT( 7377 VkPhysicalDevice physicalDevice, 7378 VkSurfaceKHR surface, 7379 VkSurfaceCapabilities2EXT* pSurfaceCapabilities) { 7380 return ? 7381} 7382 7383@extension("VK_EXT_display_control") // 92 7384cmd VkResult vkDisplayPowerControlEXT( 7385 VkDevice device, 7386 VkDisplayKHR display, 7387 const VkDisplayPowerInfoEXT* pDisplayPowerInfo) { 7388 return ? 7389} 7390 7391@extension("VK_EXT_display_control") // 92 7392cmd VkResult vkRegisterDeviceEventEXT( 7393 VkDevice device, 7394 const VkDeviceEventInfoEXT* pDeviceEventInfo, 7395 const VkAllocationCallbacks* pAllocator, 7396 VkFence* pFence) { 7397 return ? 7398} 7399 7400@extension("VK_EXT_display_control") // 92 7401cmd VkResult vkRegisterDisplayEventEXT( 7402 VkDevice device, 7403 VkDisplayKHR display, 7404 const VkDisplayEventInfoEXT* pDisplayEventInfo, 7405 const VkAllocationCallbacks* pAllocator, 7406 VkFence* pFence) { 7407 return ? 7408} 7409 7410@extension("VK_EXT_display_control") // 92 7411cmd VkResult vkGetSwapchainCounterEXT( 7412 VkDevice device, 7413 VkSwapchainKHR swapchain, 7414 VkSurfaceCounterFlagBitsEXT counter, 7415 u64* pCounterValue) { 7416 return ? 7417} 7418 7419@extension("VK_GOOGLE_display_timing") // 93 7420cmd VkResult vkGetRefreshCycleDurationGOOGLE( 7421 VkDevice device, 7422 VkSwapchainKHR swapchain, 7423 VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties) { 7424 deviceObject := GetDevice(device) 7425 swapchainObject := GetSwapchain(swapchain) 7426 7427 displayTimingProperties := ? 7428 pDisplayTimingProperties[0] = displayTimingProperties 7429 7430 return ? 7431} 7432 7433@extension("VK_GOOGLE_display_timing") // 93 7434cmd VkResult vkGetPastPresentationTimingGOOGLE( 7435 VkDevice device, 7436 VkSwapchainKHR swapchain, 7437 u32* pPresentationTimingCount, 7438 VkPastPresentationTimingGOOGLE* pPresentationTimings) { 7439 return ? 7440} 7441 7442@extension("VK_EXT_discard_rectangles") // 100 7443cmd void vkCmdSetDiscardRectangleEXT( 7444 VkCommandBuffer commandBuffer, 7445 u32 firstDiscardRectangle, 7446 u32 discardRectangleCount, 7447 const VkRect2D* pDiscardRectangles) { 7448} 7449 7450@extension("VK_EXT_hdr_metadata") // 106 7451cmd void vkSetHdrMetadataEXT( 7452 VkDevice device, 7453 u32 swapchainCount, 7454 const VkSwapchainKHR* pSwapchains, 7455 const VkHdrMetadataEXT* pMetadata) { 7456} 7457 7458@extension("VK_KHR_shared_presentable_image") // 112 7459cmd VkResult vkGetSwapchainStatusKHR( 7460 VkDevice device, 7461 VkSwapchainKHR swapchain) { 7462 return ? 7463} 7464 7465@extension("VK_KHR_get_surface_capabilities2") // 119 7466cmd VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR( 7467 VkPhysicalDevice physicalDevice, 7468 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, 7469 VkSurfaceCapabilities2KHR* pSurfaceCapabilities) { 7470 return ? 7471} 7472 7473@extension("VK_KHR_get_surface_capabilities2") // 119 7474cmd VkResult vkGetPhysicalDeviceSurfaceFormats2KHR( 7475 VkPhysicalDevice physicalDevice, 7476 const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, 7477 u32* pSurfaceFormatCount, 7478 VkSurfaceFormat2KHR* pSurfaceFormats) { 7479 return ? 7480} 7481 7482@extension("VK_MVK_ios_surface") // 123 7483cmd VkResult vkCreateIOSSurfaceMVK( 7484 VkInstance instance, 7485 const VkIOSSurfaceCreateInfoMVK* pCreateInfo, 7486 const VkAllocationCallbacks* pAllocator, 7487 VkSurfaceKHR* pSurface) { 7488 return ? 7489} 7490 7491@extension("VK_MVK_macos_surface") // 124 7492cmd VkResult vkCreateMacOSSurfaceMVK( 7493 VkInstance instance, 7494 const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, 7495 const VkAllocationCallbacks* pAllocator, 7496 VkSurfaceKHR* pSurface) { 7497 return ? 7498} 7499 7500//////////////// 7501// Validation // 7502//////////////// 7503 7504extern void validate(string layerName, bool condition, string message) 7505 7506 7507///////////////////////////// 7508// Internal State Tracking // 7509///////////////////////////// 7510 7511StateObject State 7512 7513@internal class StateObject { 7514 // Dispatchable objects. 7515 map!(VkInstance, ref!InstanceObject) Instances 7516 map!(VkPhysicalDevice, ref!PhysicalDeviceObject) PhysicalDevices 7517 map!(VkDevice, ref!DeviceObject) Devices 7518 map!(VkQueue, ref!QueueObject) Queues 7519 map!(VkCommandBuffer, ref!CommandBufferObject) CommandBuffers 7520 7521 // Non-dispatchable objects. 7522 map!(VkDeviceMemory, ref!DeviceMemoryObject) DeviceMemories 7523 map!(VkBuffer, ref!BufferObject) Buffers 7524 map!(VkBufferView, ref!BufferViewObject) BufferViews 7525 map!(VkImage, ref!ImageObject) Images 7526 map!(VkImageView, ref!ImageViewObject) ImageViews 7527 map!(VkShaderModule, ref!ShaderModuleObject) ShaderModules 7528 map!(VkPipeline, ref!PipelineObject) Pipelines 7529 map!(VkPipelineLayout, ref!PipelineLayoutObject) PipelineLayouts 7530 map!(VkSampler, ref!SamplerObject) Samplers 7531 map!(VkDescriptorSet, ref!DescriptorSetObject) DescriptorSets 7532 map!(VkDescriptorSetLayout, ref!DescriptorSetLayoutObject) DescriptorSetLayouts 7533 map!(VkDescriptorPool, ref!DescriptorPoolObject) DescriptorPools 7534 map!(VkFence, ref!FenceObject) Fences 7535 map!(VkSemaphore, ref!SemaphoreObject) Semaphores 7536 map!(VkEvent, ref!EventObject) Events 7537 map!(VkQueryPool, ref!QueryPoolObject) QueryPools 7538 map!(VkFramebuffer, ref!FramebufferObject) Framebuffers 7539 map!(VkRenderPass, ref!RenderPassObject) RenderPasses 7540 map!(VkPipelineCache, ref!PipelineCacheObject) PipelineCaches 7541 map!(VkCommandPool, ref!CommandPoolObject) CommandPools 7542 map!(VkSurfaceKHR, ref!SurfaceObject) Surfaces 7543 map!(VkSwapchainKHR, ref!SwapchainObject) Swapchains 7544} 7545 7546@internal class InstanceObject { 7547} 7548 7549@internal class PhysicalDeviceObject { 7550 VkInstance instance 7551} 7552 7553@internal class DeviceObject { 7554 VkPhysicalDevice physicalDevice 7555} 7556 7557@internal class QueueObject { 7558 VkDevice device 7559 VkQueueFlags flags 7560} 7561 7562@internal class CommandBufferObject { 7563 VkDevice device 7564 map!(u64, VkDeviceMemory) boundObjects 7565 VkQueueFlags queueFlags 7566} 7567 7568@internal class DeviceMemoryObject { 7569 VkDevice device 7570 VkDeviceSize allocationSize 7571 map!(u64, VkDeviceSize) boundObjects 7572 map!(VkCommandBuffer, VkCommandBuffer) boundCommandBuffers 7573} 7574 7575@internal class BufferObject { 7576 VkDevice device 7577 VkDeviceMemory memory 7578 VkDeviceSize memoryOffset 7579} 7580 7581@internal class BufferViewObject { 7582 VkDevice device 7583 VkBuffer buffer 7584} 7585 7586@internal class ImageObject { 7587 VkDevice device 7588 VkDeviceMemory memory 7589 VkDeviceSize memoryOffset 7590} 7591 7592@internal class ImageViewObject { 7593 VkDevice device 7594 VkImage image 7595} 7596 7597@internal class ShaderObject { 7598 VkDevice device 7599} 7600 7601@internal class ShaderModuleObject { 7602 VkDevice device 7603} 7604 7605@internal class PipelineObject { 7606 VkDevice device 7607} 7608 7609@internal class PipelineLayoutObject { 7610 VkDevice device 7611} 7612 7613@internal class SamplerObject { 7614 VkDevice device 7615} 7616 7617@internal class DescriptorSetObject { 7618 VkDevice device 7619} 7620 7621@internal class DescriptorSetLayoutObject { 7622 VkDevice device 7623} 7624 7625@internal class DescriptorPoolObject { 7626 VkDevice device 7627} 7628 7629@internal class FenceObject { 7630 VkDevice device 7631 bool signaled 7632} 7633 7634@internal class SemaphoreObject { 7635 VkDevice device 7636} 7637 7638@internal class EventObject { 7639 VkDevice device 7640} 7641 7642@internal class QueryPoolObject { 7643 VkDevice device 7644} 7645 7646@internal class FramebufferObject { 7647 VkDevice device 7648} 7649 7650@internal class RenderPassObject { 7651 VkDevice device 7652} 7653 7654@internal class PipelineCacheObject { 7655 VkDevice device 7656} 7657 7658@internal class CommandPoolObject { 7659 VkDevice device 7660} 7661 7662@internal class SurfaceObject { 7663 VkInstance instance 7664} 7665 7666@internal class SwapchainObject { 7667 VkDevice device 7668} 7669 7670macro ref!InstanceObject GetInstance(VkInstance instance) { 7671 assert(instance in State.Instances) 7672 return State.Instances[instance] 7673} 7674 7675macro ref!PhysicalDeviceObject GetPhysicalDevice(VkPhysicalDevice physicalDevice) { 7676 assert(physicalDevice in State.PhysicalDevices) 7677 return State.PhysicalDevices[physicalDevice] 7678} 7679 7680macro ref!DeviceObject GetDevice(VkDevice device) { 7681 assert(device in State.Devices) 7682 return State.Devices[device] 7683} 7684 7685macro ref!QueueObject GetQueue(VkQueue queue) { 7686 assert(queue in State.Queues) 7687 return State.Queues[queue] 7688} 7689 7690macro ref!CommandBufferObject GetCommandBuffer(VkCommandBuffer commandBuffer) { 7691 assert(commandBuffer in State.CommandBuffers) 7692 return State.CommandBuffers[commandBuffer] 7693} 7694 7695macro ref!DeviceMemoryObject GetDeviceMemory(VkDeviceMemory memory) { 7696 assert(memory in State.DeviceMemories) 7697 return State.DeviceMemories[memory] 7698} 7699 7700macro ref!BufferObject GetBuffer(VkBuffer buffer) { 7701 assert(buffer in State.Buffers) 7702 return State.Buffers[buffer] 7703} 7704 7705macro ref!BufferViewObject GetBufferView(VkBufferView bufferView) { 7706 assert(bufferView in State.BufferViews) 7707 return State.BufferViews[bufferView] 7708} 7709 7710macro ref!ImageObject GetImage(VkImage image) { 7711 assert(image in State.Images) 7712 return State.Images[image] 7713} 7714 7715macro ref!ImageViewObject GetImageView(VkImageView imageView) { 7716 assert(imageView in State.ImageViews) 7717 return State.ImageViews[imageView] 7718} 7719 7720macro ref!ShaderModuleObject GetShaderModule(VkShaderModule shaderModule) { 7721 assert(shaderModule in State.ShaderModules) 7722 return State.ShaderModules[shaderModule] 7723} 7724 7725macro ref!PipelineObject GetPipeline(VkPipeline pipeline) { 7726 assert(pipeline in State.Pipelines) 7727 return State.Pipelines[pipeline] 7728} 7729 7730macro ref!PipelineLayoutObject GetPipelineLayout(VkPipelineLayout pipelineLayout) { 7731 assert(pipelineLayout in State.PipelineLayouts) 7732 return State.PipelineLayouts[pipelineLayout] 7733} 7734 7735macro ref!SamplerObject GetSampler(VkSampler sampler) { 7736 assert(sampler in State.Samplers) 7737 return State.Samplers[sampler] 7738} 7739 7740macro ref!DescriptorSetObject GetDescriptorSet(VkDescriptorSet descriptorSet) { 7741 assert(descriptorSet in State.DescriptorSets) 7742 return State.DescriptorSets[descriptorSet] 7743} 7744 7745macro ref!DescriptorSetLayoutObject GetDescriptorSetLayout(VkDescriptorSetLayout descriptorSetLayout) { 7746 assert(descriptorSetLayout in State.DescriptorSetLayouts) 7747 return State.DescriptorSetLayouts[descriptorSetLayout] 7748} 7749 7750macro ref!DescriptorPoolObject GetDescriptorPool(VkDescriptorPool descriptorPool) { 7751 assert(descriptorPool in State.DescriptorPools) 7752 return State.DescriptorPools[descriptorPool] 7753} 7754 7755macro ref!FenceObject GetFence(VkFence fence) { 7756 assert(fence in State.Fences) 7757 return State.Fences[fence] 7758} 7759 7760macro ref!SemaphoreObject GetSemaphore(VkSemaphore semaphore) { 7761 assert(semaphore in State.Semaphores) 7762 return State.Semaphores[semaphore] 7763} 7764 7765macro ref!EventObject GetEvent(VkEvent event) { 7766 assert(event in State.Events) 7767 return State.Events[event] 7768} 7769 7770macro ref!QueryPoolObject GetQueryPool(VkQueryPool queryPool) { 7771 assert(queryPool in State.QueryPools) 7772 return State.QueryPools[queryPool] 7773} 7774 7775macro ref!FramebufferObject GetFramebuffer(VkFramebuffer framebuffer) { 7776 assert(framebuffer in State.Framebuffers) 7777 return State.Framebuffers[framebuffer] 7778} 7779 7780macro ref!RenderPassObject GetRenderPass(VkRenderPass renderPass) { 7781 assert(renderPass in State.RenderPasses) 7782 return State.RenderPasses[renderPass] 7783} 7784 7785macro ref!PipelineCacheObject GetPipelineCache(VkPipelineCache pipelineCache) { 7786 assert(pipelineCache in State.PipelineCaches) 7787 return State.PipelineCaches[pipelineCache] 7788} 7789 7790macro ref!CommandPoolObject GetCommandPool(VkCommandPool commandPool) { 7791 assert(commandPool in State.CommandPools) 7792 return State.CommandPools[commandPool] 7793} 7794 7795macro ref!SurfaceObject GetSurface(VkSurfaceKHR surface) { 7796 assert(surface in State.Surfaces) 7797 return State.Surfaces[surface] 7798} 7799 7800macro ref!SwapchainObject GetSwapchain(VkSwapchainKHR swapchain) { 7801 assert(swapchain in State.Swapchains) 7802 return State.Swapchains[swapchain] 7803} 7804 7805macro VkQueueFlags AddQueueFlag(VkQueueFlags flags, VkQueueFlagBits bit) { 7806 return as!VkQueueFlags(as!u32(flags) | as!u32(bit)) 7807} 7808