|  | // Copyright (c) 2015 The Khronos Group Inc. | 
|  | // | 
|  | // Permission is hereby granted, free of charge, to any person obtaining a | 
|  | // copy of this software and/or associated documentation files (the | 
|  | // "Materials"), to deal in the Materials without restriction, including | 
|  | // without limitation the rights to use, copy, modify, merge, publish, | 
|  | // distribute, sublicense, and/or sell copies of the Materials, and to | 
|  | // permit persons to whom the Materials are furnished to do so, subject to | 
|  | // the following conditions: | 
|  | // | 
|  | // The above copyright notice and this permission notice shall be included | 
|  | // in all copies or substantial portions of the Materials. | 
|  | // | 
|  | // THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | 
|  | // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | 
|  | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. | 
|  | // IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY | 
|  | // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | 
|  | // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | 
|  | // MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. | 
|  |  | 
|  | import platform "platform.api" | 
|  |  | 
|  | /////////////// | 
|  | // Constants // | 
|  | /////////////// | 
|  |  | 
|  | // API version (major.minor.patch) | 
|  | define VERSION_MAJOR 1 | 
|  | define VERSION_MINOR 1 | 
|  | define VERSION_PATCH 96 | 
|  |  | 
|  | // API limits | 
|  | define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256 | 
|  | define VK_UUID_SIZE                     16 | 
|  | define VK_MAX_EXTENSION_NAME_SIZE       256 | 
|  | define VK_MAX_DESCRIPTION_SIZE          256 | 
|  | define VK_MAX_MEMORY_TYPES              32 | 
|  | define VK_MAX_MEMORY_HEAPS              16    /// The maximum number of unique memory heaps, each of which supporting 1 or more memory types. | 
|  | @vulkan1_1 | 
|  | define VK_MAX_DEVICE_GROUP_SIZE         32 | 
|  | @vulkan1_1 | 
|  | define VK_LUID_SIZE                     8 | 
|  | @vulkan1_1 | 
|  | define VK_QUEUE_FAMILY_EXTERNAL         -2 | 
|  | @extension("VK_EXT_queue_family_foreign") | 
|  | define VK_QUEUE_FAMILY_FOREIGN_EXT      -3 | 
|  | @extension("VK_MAX_DRIVER_NAME_SIZE_KHR") // 197 | 
|  | define VK_MAX_DRIVER_NAME_SIZE_KHR      256 | 
|  | @extension("VK_MAX_DRIVER_NAME_SIZE_KHR") // 197 | 
|  | define VK_MAX_DRIVER_INFO_SIZE_KHR      256 | 
|  |  | 
|  | // API keywords | 
|  | define VK_TRUE        1 | 
|  | define VK_FALSE       0 | 
|  |  | 
|  | // API keyword, but needs special handling by some templates | 
|  | define NULL_HANDLE 0 | 
|  |  | 
|  | // 1 | 
|  | @extension("VK_KHR_surface") define VK_KHR_SURFACE_SPEC_VERSION                 25 | 
|  | @extension("VK_KHR_surface") define VK_KHR_SURFACE_EXTENSION_NAME               "VK_KHR_surface" | 
|  |  | 
|  | // 2 | 
|  | @extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_SPEC_VERSION             70 | 
|  | @extension("VK_KHR_swapchain") define VK_KHR_SWAPCHAIN_EXTENSION_NAME           "VK_KHR_swapchain" | 
|  |  | 
|  | // 3 | 
|  | @extension("VK_KHR_display") define VK_KHR_DISPLAY_SPEC_VERSION                 21 | 
|  | @extension("VK_KHR_display") define VK_KHR_DISPLAY_EXTENSION_NAME               "VK_KHR_display" | 
|  |  | 
|  | // 4 | 
|  | @extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_SPEC_VERSION     9 | 
|  | @extension("VK_KHR_display_swapchain") define VK_KHR_DISPLAY_SWAPCHAIN_EXTENSION_NAME   "VK_KHR_display_swapchain" | 
|  |  | 
|  | // 5 | 
|  | @extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_SPEC_VERSION       6 | 
|  | @extension("VK_KHR_xlib_surface") define VK_KHR_XLIB_SURFACE_NAME               "VK_KHR_xlib_surface" | 
|  |  | 
|  | // 6 | 
|  | @extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_SPEC_VERSION         6 | 
|  | @extension("VK_KHR_xcb_surface") define VK_KHR_XCB_SURFACE_NAME                 "VK_KHR_xcb_surface" | 
|  |  | 
|  | // 7 | 
|  | @extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_SPEC_VERSION 6 | 
|  | @extension("VK_KHR_wayland_surface") define VK_KHR_WAYLAND_SURFACE_NAME         "VK_KHR_wayland_surface" | 
|  |  | 
|  | // 8 - VK_KHR_mir_surface removed | 
|  |  | 
|  | // 9 | 
|  | @extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_SPEC_VERSION 6 | 
|  | @extension("VK_KHR_android_surface") define VK_KHR_ANDROID_SURFACE_NAME         "VK_KHR_android_surface" | 
|  |  | 
|  | // 10 | 
|  | @extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_SPEC_VERSION     6 | 
|  | @extension("VK_KHR_win32_surface") define VK_KHR_WIN32_SURFACE_NAME             "VK_KHR_win32_surface" | 
|  |  | 
|  | // 11 | 
|  | @extension("VK_ANDROID_native_buffer") define VK_ANDROID_NATIVE_BUFFER_SPEC_VERSION     7 | 
|  | @extension("VK_ANDROID_native_buffer") define VK_ANDROID_NATIVE_BUFFER_NAME             "VK_ANDROID_native_buffer" | 
|  |  | 
|  | // 12 | 
|  | @extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_SPEC_VERSION       9 | 
|  | @extension("VK_EXT_debug_report") define VK_EXT_DEBUG_REPORT_NAME               "VK_EXT_debug_report" | 
|  |  | 
|  | // 13 | 
|  | @extension("VK_NV_glsl_shader") define VK_NV_GLSL_SHADER_SPEC_VERSION           1 | 
|  | @extension("VK_NV_glsl_shader") define VK_NV_GLSL_SHADER_NAME                   "VK_NV_glsl_shader" | 
|  |  | 
|  | // 14 | 
|  | @extension("VK_EXT_depth_range_unrestricted") define VK_EXT_DEPTH_RANGE_UNRESTRICTED_SPEC_VERSION   1 | 
|  | @extension("VK_EXT_depth_range_unrestricted") define VK_EXT_DEPTH_RANGE_UNRESTRICTED_NAME           "VK_EXT_depth_range_unrestricted" | 
|  |  | 
|  | // 15 | 
|  | @extension("VK_KHR_sampler_mirror_clamp_to_edge") define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_SPEC_VERSION   1 | 
|  | @extension("VK_KHR_sampler_mirror_clamp_to_edge") define VK_KHR_SAMPLER_MIRROR_CLAMP_TO_EDGE_NAME           "VK_KHR_sampler_mirror_clamp_to_edge" | 
|  |  | 
|  | // 16 | 
|  | @extension("VK_IMG_filter_cubic") define VK_IMG_FILTER_CUBIC_SPEC_VERSION       1 | 
|  | @extension("VK_IMG_filter_cubic") define VK_IMG_FILTER_CUBIC_NAME               "VK_IMG_filter_cubic" | 
|  |  | 
|  | // 19 | 
|  | @extension("VK_AMD_rasterization_order") define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION   1 | 
|  | @extension("VK_AMD_rasterization_order") define VK_AMD_RASTERIZATION_ORDER_NAME           "VK_AMD_rasterization_order" | 
|  |  | 
|  | // 21 | 
|  | @extension("VK_AMD_shader_trinary_minmax") define VK_AMD_SHADER_TRINARY_MINMAX_SPEC_VERSION 1 | 
|  | @extension("VK_AMD_shader_trinary_minmax") define VK_AMD_SHADER_TRINARY_MINMAX_EXTENSION_NAME "VK_AMD_shader_trinary_minmax" | 
|  |  | 
|  | // 22 | 
|  | @extension("VK_AMD_shader_explicit_vertex_parameter") define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_SPEC_VERSION 1 | 
|  | @extension("VK_AMD_shader_explicit_vertex_parameter") define VK_AMD_SHADER_EXPLICIT_VERTEX_PARAMETER_EXTENSION_NAME "VK_AMD_shader_explicit_vertex_parameter" | 
|  |  | 
|  | // 23 | 
|  | @extension("VK_EXT_debug_marker") define VK_EXT_DEBUG_MARKER_SPEC_VERSION       4 | 
|  | @extension("VK_EXT_debug_marker") define VK_EXT_DEBUG_MARKER_NAME               "VK_EXT_debug_marker" | 
|  |  | 
|  | // 26 | 
|  | @extension("VK_AMD_gcn_shader") define VK_AMD_GCN_SHADER_SPEC_VERSION 1 | 
|  | @extension("VK_AMD_gcn_shader") define VK_AMD_GCN_SHADER_EXTENSION_NAME "VK_AMD_gcn_shader" | 
|  |  | 
|  | // 27 | 
|  | @extension("VK_NV_dedicated_allocation") define VK_NV_DEDICATED_ALLOCATION_SPEC_VERSION 1 | 
|  | @extension("VK_NV_dedicated_allocation") define VK_NV_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_NV_dedicated_allocation" | 
|  |  | 
|  | // 28 | 
|  | @extension("VK_IMG_format_pvrtc") define VK_IMG_FORMAT_PVRTC_SPEC_VERSION 1 | 
|  | @extension("VK_IMG_format_pvrtc") define VK_IMG_FORMAT_PVRTC_EXTENSION_NAME "VK_IMG_format_pvrtc" | 
|  |  | 
|  | // 29 | 
|  | @extension("VK_EXT_transform_feedback") define VK_EXT_TRANSFORM_FEEDBACK_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_transform_feedback") define VK_EXT_TRANSFORM_FEEDBACK_EXTENSION_NAME "VK_EXT_transform_feedback" | 
|  |  | 
|  | // 34 | 
|  | @extension("VK_AMD_draw_indirect_count") define VK_AMD_DRAW_INDIRECT_COUNT_SPEC_VERSION 1 | 
|  | @extension("VK_AMD_draw_indirect_count") define VK_AMD_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_AMD_draw_indirect_count" | 
|  |  | 
|  | // 36 | 
|  | @extension("VK_AMD_negative_viewport_height") define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_SPEC_VERSION 1 | 
|  | @extension("VK_AMD_negative_viewport_height") define VK_AMD_NEGATIVE_VIEWPORT_HEIGHT_EXTENSION_NAME "VK_AMD_negative_viewport_height" | 
|  |  | 
|  | // 37 | 
|  | @extension("VK_AMD_gpu_shader_half_float") define VK_AMD_GPU_SHADER_HALF_FLOAT_SPEC_VERSION 1 | 
|  | @extension("VK_AMD_gpu_shader_half_float") define VK_AMD_GPU_SHADER_HALF_FLOAT_EXTENSION_NAME "VK_AMD_gpu_shader_half_float" | 
|  |  | 
|  | // 38 | 
|  | @extension("VK_AMD_shader_ballot") define VK_AMD_SHADER_BALLOT_SPEC_VERSION 1 | 
|  | @extension("VK_AMD_shader_ballot") define VK_AMD_SHADER_BALLOT_EXTENSION_NAME "VK_AMD_shader_ballot" | 
|  |  | 
|  | // 42 | 
|  | @extension("VK_AMD_texture_gather_bias_lod") define VK_AMD_TEXTURE_GATHER_BIAS_LOD_SPEC_VERSION 1 | 
|  | @extension("VK_AMD_texture_gather_bias_lod") define VK_AMD_TEXTURE_GATHER_BIAS_LOD_EXTENSION_NAME "VK_AMD_texture_gather_bias_lod" | 
|  |  | 
|  | // 43 | 
|  | @extension("VK_AMD_shader_info") define VK_AMD_SHADER_INFO_SPEC_VERSION 1 | 
|  | @extension("VK_AMD_shader_info") define VK_AMD_SHADER_INFO_EXTENSION_NAME "VK_AMD_shader_info" | 
|  |  | 
|  | // 47 | 
|  | @extension("VK_AMD_shader_image_load_store_lod") define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_SPEC_VERSION 1 | 
|  | @extension("VK_AMD_shader_image_load_store_lod") define VK_AMD_SHADER_IMAGE_LOAD_STORE_LOD_EXTENSION_NAME "VK_AMD_shader_image_load_store_lod" | 
|  |  | 
|  | // 51 | 
|  | @extension("VK_NV_corner_sampled_image") define VK_NV_CORNER_SAMPLED_IMAGE_SPEC_VERSION 2 | 
|  | @extension("VK_NV_corner_sampled_image") define VK_NV_CORNER_SAMPLED_IMAGE_EXTENSION_NAME "VK_NV_corner_sampled_image" | 
|  |  | 
|  | // 54 | 
|  | @extension("VK_KHR_multiview") define VK_KHR_MULTIVIEW_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_multiview") define VK_KHR_MULTIVIEW_EXTENSION_NAME "VK_KHR_multiview" | 
|  |  | 
|  | // 56 | 
|  | @extension("VK_NV_external_memory_capabilities") define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1 | 
|  | @extension("VK_NV_external_memory_capabilities") define VK_NV_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_NV_external_memory_capabilities" | 
|  |  | 
|  | // 57 | 
|  | @extension("VK_NV_external_memory") define VK_NV_EXTERNAL_MEMORY_SPEC_VERSION 1 | 
|  | @extension("VK_NV_external_memory") define VK_NV_EXTERNAL_MEMORY_EXTENSION_NAME "VK_NV_external_memory" | 
|  |  | 
|  | // 58 | 
|  | @extension("VK_NV_external_memory_win32") define VK_NV_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1 | 
|  | @extension("VK_NV_external_memory_win32") define VK_NV_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_NV_external_memory_win32" | 
|  |  | 
|  | // 59 | 
|  | @extension("VK_NV_win32_keyed_mutex") define VK_NV_WIN32_KEYED_MUTEX_SPEC_VERSION 1 | 
|  | @extension("VK_NV_win32_keyed_mutex") define VK_NV_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_NV_win32_keyed_mutex" | 
|  |  | 
|  | // 60 | 
|  | @extension("VK_KHR_get_physical_device_properties2") define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_get_physical_device_properties2") define VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_physical_device_properties2" | 
|  |  | 
|  | // 61 | 
|  | @extension("VK_KHR_device_group") define VK_KHR_DEVICE_GROUP_SPEC_VERSION 3 | 
|  | @extension("VK_KHR_device_group") define VK_KHR_DEVICE_GROUP_EXTENSION_NAME "VK_KHR_device_group" | 
|  |  | 
|  | // 62 | 
|  | @extension("VK_EXT_validation_flags") define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_validation_flags") define VK_EXT_VALIDATION_FLAGS_EXTENSION_NAME "VK_EXT_validation_flags" | 
|  |  | 
|  | // 63 | 
|  | @extension("VK_NN_vi_surface") define VK_NN_VI_SURFACE_SPEC_VERSION 1 | 
|  | @extension("VK_NN_vi_surface") define VK_NN_VI_SURFACE_EXTENSION_NAME "VK_NN_vi_surface" | 
|  |  | 
|  | // 64 | 
|  | @extension("VK_KHR_shader_draw_parameters") define VK_KHR_SHADER_DRAW_PARAMETERS_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_shader_draw_parameters") define VK_KHR_SHADER_DRAW_PARAMETERS_EXTENSION_NAME "VK_KHR_shader_draw_parameters" | 
|  |  | 
|  | // 65 | 
|  | @extension("VK_EXT_shader_subgroup_ballot") define VK_EXT_SHADER_SUBGROUP_BALLOT_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_shader_subgroup_ballot") define VK_EXT_SHADER_SUBGROUP_BALLOT_EXTENSION_NAME "VK_EXT_shader_subgroup_ballot" | 
|  |  | 
|  | // 66 | 
|  | @extension("VK_EXT_shader_subgroup_vote") define VK_EXT_SHADER_SUBGROUP_VOTE_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_shader_subgroup_vote") define VK_EXT_SHADER_SUBGROUP_VOTE_EXTENSION_NAME "VK_EXT_shader_subgroup_vote" | 
|  |  | 
|  | // 68 | 
|  | @extension("VK_EXT_astc_decode_mode") define VK_EXT_ASTC_DECODE_MODE_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_astc_decode_mode") define VK_EXT_ASTC_DECODE_MODE_EXTENSION_NAME "VK_EXT_astc_decode_mode" | 
|  |  | 
|  | // 70 | 
|  | @extension("VK_KHR_maintenance1") define VK_KHR_MAINTENANCE1_SPEC_VERSION 2 | 
|  | @extension("VK_KHR_maintenance1") define VK_KHR_MAINTENANCE1_EXTENSION_NAME "VK_KHR_maintenance1" | 
|  |  | 
|  | // 71 | 
|  | @extension("VK_KHR_device_group_creation") define VK_KHR_DEVICE_GROUP_CREATION_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_device_group_creation") define VK_KHR_DEVICE_GROUP_CREATION_EXTENSION_NAME "VK_KHR_device_group_creation" | 
|  |  | 
|  | // 72 | 
|  | @extension("VK_KHR_external_memory_capabilities") define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_external_memory_capabilities") define VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_memory_capabilities" | 
|  |  | 
|  | // 73 | 
|  | @extension("VK_KHR_external_memory") define VK_KHR_EXTERNAL_MEMORY_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_external_memory") define VK_KHR_EXTERNAL_MEMORY_EXTENSION_NAME "VK_KHR_external_memory" | 
|  |  | 
|  | // 74 | 
|  | @extension("VK_KHR_external_memory_win32") define VK_KHR_EXTERNAL_MEMORY_WIN32_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_external_memory_win32") define VK_KHR_EXTERNAL_MEMORY_WIN32_EXTENSION_NAME "VK_KHR_external_memory_win32" | 
|  |  | 
|  | // 75 | 
|  | @extension("VK_KHR_external_memory_fd") define VK_KHR_EXTERNAL_MEMORY_FD_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_external_memory_fd") define VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME "VK_KHR_external_memory_fd" | 
|  |  | 
|  | // 76 | 
|  | @extension("VK_KHR_win32_keyed_mutex") define VK_KHR_WIN32_KEYED_MUTEX_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_win32_keyed_mutex") define VK_KHR_WIN32_KEYED_MUTEX_EXTENSION_NAME "VK_KHR_win32_keyed_mutex" | 
|  |  | 
|  | // 77 | 
|  | @extension("VK_KHR_external_semaphore_capabilities") define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_external_semaphore_capabilities") define VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_semaphore_capabilities" | 
|  |  | 
|  | // 78 | 
|  | @extension("VK_KHR_external_semaphore") define VK_KHR_EXTERNAL_SEMAPHORE_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_external_semaphore") define VK_KHR_EXTERNAL_SEMAPHORE_EXTENSION_NAME "VK_KHR_external_semaphore" | 
|  |  | 
|  | // 79 | 
|  | @extension("VK_KHR_external_semaphore_win32") define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_external_semaphore_win32") define VK_KHR_EXTERNAL_SEMAPHORE_WIN32_EXTENSION_NAME "VK_KHR_external_semaphore_win32" | 
|  |  | 
|  | // 80 | 
|  | @extension("VK_KHR_external_semaphore_fd") define VK_KHR_EXTERNAL_SEMAPHORE_FD_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_external_semaphore_fd") define VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME "VK_KHR_external_semaphore_fd" | 
|  |  | 
|  | // 81 | 
|  | @extension("VK_KHR_push_descriptor") define VK_KHR_PUSH_DESCRIPTOR_SPEC_VERSION 2 | 
|  | @extension("VK_KHR_push_descriptor") define VK_KHR_PUSH_DESCRIPTOR_EXTENSION_NAME "VK_KHR_push_descriptor" | 
|  |  | 
|  | // 82 | 
|  | @extension("VK_EXT_conditional_rendering") define VK_EXT_CONDITIONAL_RENDERING_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_conditional_rendering") define VK_EXT_CONDITIONAL_RENDERING_EXTENSION_NAME "VK_EXT_conditional_rendering" | 
|  |  | 
|  | // 83 | 
|  | @extension("VK_KHR_shader_float16_int8") define VK_KHR_SHADER_FLOAT16_INT8_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_shader_float16_int8") define VK_KHR_SHADER_FLOAT16_INT8_EXTENSION_NAME "VK_KHR_shader_float16_int8" | 
|  |  | 
|  | // 84 | 
|  | @extension("VK_KHR_16bit_storage") define VK_KHR_16BIT_STORAGE_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_16bit_storage") define VK_KHR_16BIT_STORAGE_EXTENSION_NAME "VK_KHR_16bit_storage" | 
|  |  | 
|  | // 85 | 
|  | @extension("VK_KHR_incremental_present") define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_incremental_present") define VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME "VK_KHR_incremental_present" | 
|  |  | 
|  | // 86 | 
|  | @extension("VK_KHR_descriptor_update_template") define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_descriptor_update_template") define VK_KHR_DESCRIPTOR_UPDATE_TEMPLATE_EXTENSION_NAME "VK_KHR_descriptor_update_template" | 
|  |  | 
|  | // 87 | 
|  | @extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_SPEC_VERSION 3 | 
|  | @extension("VK_NVX_device_generated_commands") define VK_NVX_DEVICE_GENERATED_COMMANDS_EXTENSION_NAME "VK_NVX_device_generated_commands" | 
|  |  | 
|  | // 88 | 
|  | @extension("VK_NV_clip_space_w_scaling") define VK_NV_CLIP_SPACE_W_SCALING_SPEC_VERSION 1 | 
|  | @extension("VK_NV_clip_space_w_scaling") define VK_NV_CLIP_SPACE_W_SCALING_EXTENSION_NAME "VK_NV_clip_space_w_scaling" | 
|  |  | 
|  | // 89 | 
|  | @extension("VK_EXT_direct_mode_display") define VK_EXT_DIRECT_MODE_DISPLAY_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_direct_mode_display") define VK_EXT_DIRECT_MODE_DISPLAY_EXTENSION_NAME "VK_EXT_direct_mode_display" | 
|  |  | 
|  | // 90 | 
|  | @extension("VK_EXT_acquire_xlib_display") define VK_EXT_ACQUIRE_XLIB_DISPLAY_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_acquire_xlib_display") define VK_EXT_ACQUIRE_XLIB_DISPLAY_EXTENSION_NAME "VK_EXT_acquire_xlib_display" | 
|  |  | 
|  | // 91 | 
|  | @extension("VK_EXT_display_surface_counter") define VK_EXT_DISPLAY_SURFACE_COUNTER_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_display_surface_counter") define VK_EXT_DISPLAY_SURFACE_COUNTER_EXTENSION_NAME "VK_EXT_display_surface_counter" | 
|  |  | 
|  | // 92 | 
|  | @extension("VK_EXT_display_control") define VK_EXT_DISPLAY_CONTROL_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_display_control") define VK_EXT_DISPLAY_CONTROL_COUNTER_EXTENSION_NAME "VK_EXT_display_control" | 
|  |  | 
|  | // 93 | 
|  | @extension("VK_GOOGLE_display_timing") define VK_GOOGLE_DISPLAY_TIMING_SPEC_VERSION 1 | 
|  | @extension("VK_GOOGLE_display_timing") define VK_GOOGLE_DISPLAY_TIMING_EXTENSION_NAME "VK_GOOGLE_display_timing" | 
|  |  | 
|  | // 95 | 
|  | @extension("VK_NV_sample_mask_override_coverage") define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_SPEC_VERSION 1 | 
|  | @extension("VK_NV_sample_mask_override_coverage") define VK_NV_SAMPLE_MASK_OVERRIDE_COVERAGE_EXTENSION_NAME "VK_NV_sample_mask_override_coverage" | 
|  |  | 
|  | // 96 | 
|  | @extension("VK_NV_geometry_shader_passthrough") define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_SPEC_VERSION 1 | 
|  | @extension("VK_NV_geometry_shader_passthrough") define VK_NV_GEOMETRY_SHADER_PASSTHROUGH_EXTENSION_NAME "VK_NV_geometry_shader_passthrough" | 
|  |  | 
|  | // 97 | 
|  | @extension("VK_NV_viewport_array2") define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION 1 | 
|  | @extension("VK_NV_viewport_array2") define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME "VK_NV_viewport_array2" | 
|  |  | 
|  | // 98 | 
|  | @extension("VK_NVX_multiview_per_view_attributes") define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_SPEC_VERSION 1 | 
|  | @extension("VK_NVX_multiview_per_view_attributes") define VK_NVX_MULTIVIEW_PER_VIEW_ATTRIBUTES_EXTENSION_NAME "VK_NVX_multiview_per_view_attributes" | 
|  |  | 
|  | // 99 | 
|  | @extension("VK_NV_viewport_swizzle") define VK_NV_VIEWPORT_SWIZZLE_SPEC_VERSION 1 | 
|  | @extension("VK_NV_viewport_swizzle") define VK_NV_VIEWPORT_SWIZZLE_EXTENSION_NAME "VK_NV_viewport_swizzle" | 
|  |  | 
|  | // 100 | 
|  | @extension("VK_EXT_discard_rectangles") define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_discard_rectangles") define VK_EXT_DISCARD_RECTANGLES_EXTENSION_NAME "VK_EXT_discard_rectangles" | 
|  |  | 
|  | // 102 | 
|  | @extension("VK_EXT_conservative_rasterization") define VK_EXT_CONSERVATIVE_RASTERIZATION_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_conservative_rasterization") define VK_EXT_CONSERVATIVE_RASTERIZATION_EXTENSION_NAME "VK_EXT_conservative_rasterization" | 
|  |  | 
|  | // 105 | 
|  | @extension("VK_EXT_swapchain_colorspace") define VK_EXT_SWAPCHAIN_COLORSPACE_SPEC_VERSION 3 | 
|  | @extension("VK_EXT_swapchain_colorspace") define VK_EXT_SWAPCHAIN_COLORSPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace" | 
|  |  | 
|  | // 106 | 
|  | @extension("VK_EXT_hdr_metadata") define VK_EXT_HDR_METADATA_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_hdr_metadata") define VK_EXT_HDR_METADATA_EXTENSION_NAME "VK_EXT_hdr_metadata" | 
|  |  | 
|  | // 110 | 
|  | @extension("VK_KHR_create_renderpass2") define VK_KHR_CREATE_RENDERPASS2_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_create_renderpass2") define VK_KHR_CREATE_RENDERPASS2_EXTENSION_NAME "VK_KHR_create_renderpass2" | 
|  |  | 
|  | // 112 | 
|  | @extension("VK_KHR_shared_presentable_image") define VK_KHR_SHARED_PRESENTABLE_IMAGE_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_shared_presentable_image") define VK_KHR_SHARED_PRESENTABLE_IMAGE_EXTENSION_NAME "VK_KHR_shared_presentable_image" | 
|  |  | 
|  | // 113 | 
|  | @extension("VK_KHR_external_fence_capabilities") define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_external_fence_capabilities") define VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME "VK_KHR_external_fence_capabilities" | 
|  |  | 
|  | // 114 | 
|  | @extension("VK_KHR_external_fence") define VK_KHR_EXTERNAL_FENCE_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_external_fence") define VK_KHR_EXTERNAL_FENCE_EXTENSION_NAME "VK_KHR_external_fence" | 
|  |  | 
|  | // 115 | 
|  | @extension("VK_KHR_external_fence_win32") define VK_KHR_EXTERNAL_FENCE_WIN32_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_external_fence_win32") define VK_KHR_EXTERNAL_FENCE_WIN32_EXTENSION_NAME "VK_KHR_external_fence_win32" | 
|  |  | 
|  | // 116 | 
|  | @extension("VK_KHR_external_fence_fd") define VK_KHR_EXTERNAL_FENCE_FD_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_external_fence_fd") define VK_KHR_EXTERNAL_FENCE_FD_EXTENSION_NAME "VK_KHR_external_fence_fd" | 
|  |  | 
|  | // 118 | 
|  | @extension("VK_KHR_maintenance2") define VK_KHR_MAINTENANCE2_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_maintenance2") define VK_KHR_MAINTENANCE2_EXTENSION_NAME "VK_KHR_maintenance2" | 
|  |  | 
|  | // 120 | 
|  | @extension("VK_KHR_get_surface_capabilities2") define VK_KHR_GET_SURFACE_CAPABILITIES_2_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_get_surface_capabilities2") define VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME "VK_KHR_get_surface_capabilities2" | 
|  |  | 
|  | // 121 | 
|  | @extension("VK_KHR_variable_pointers") define VK_KHR_VARIABLE_POINTERS_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_variable_pointers") define VK_KHR_VARIABLE_POINTERS_EXTENSION_NAME "VK_KHR_variable_pointers" | 
|  |  | 
|  | // 122 | 
|  | @extension("VK_KHR_get_display_properties2") define VK_KHR_GET_DISPLAY_PROPERTIES_2_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_get_display_properties2") define VK_KHR_GET_DISPLAY_PROPERTIES_2_EXTENSION_NAME "VK_KHR_get_display_properties2" | 
|  |  | 
|  | // 123 | 
|  | @extension("VK_MVK_ios_surface") define VK_MVK_IOS_SURFACE_SPEC_VERSION 1 | 
|  | @extension("VK_MVK_ios_surface") define VK_MVK_IOS_SURFACE_EXTENSION_NAME "VK_MVK_ios_surface" | 
|  |  | 
|  | // 124 | 
|  | @extension("VK_MVK_macos_surface") define VK_MVK_MACOS_SURFACE_SPEC_VERSION 1 | 
|  | @extension("VK_MVK_macos_surface") define VK_MVK_MACOS_SURFACE_EXTENSION_NAME "VK_MVK_macos_surface" | 
|  |  | 
|  | // 126 | 
|  | @extension("VK_EXT_external_memory_dma_buf") define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_external_memory_dma_buf") define VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME "VK_EXT_external_memory_dma_buf" | 
|  |  | 
|  | // 127 | 
|  | @extension("VK_EXT_queue_family_foreign") define VK_EXT_QUEUE_FAMILY_FOREIGN_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_queue_family_foreign") define VK_EXT_QUEUE_FAMILY_FOREIGN_EXTENSION_NAME "VK_EXT_queue_family_foreign" | 
|  |  | 
|  | // 128 | 
|  | @extension("VK_KHR_dedicated_allocation") define VK_KHR_DEDICATED_ALLOCATION_SPEC_VERSION 3 | 
|  | @extension("VK_KHR_dedicated_allocation") define VK_KHR_DEDICATED_ALLOCATION_EXTENSION_NAME "VK_KHR_dedicated_allocation" | 
|  |  | 
|  | // 128 | 
|  | @extension("VK_EXT_debug_utils") define VK_EXT_DEBUG_UTILS_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_debug_utils") define VK_EXT_DEBUG_UTILS_EXTENSION_NAME "VK_EXT_debug_utils" | 
|  |  | 
|  | // 130 | 
|  | @extension("VK_ANDROID_external_memory_android_hardware_buffer") define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 3 | 
|  | @extension("VK_ANDROID_external_memory_android_hardware_buffer") define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_EXTENSION_NAME "VK_ANDROID_external_memory_android_hardware_buffer" | 
|  |  | 
|  | // 131 | 
|  | @extension("VK_EXT_sampler_filter_minmax") define VK_EXT_SAMPLER_FILTER_MINMAX_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_sampler_filter_minmax") define VK_EXT_SAMPLER_FILTER_MINMAX_EXTENSION_NAME "VK_EXT_sampler_filter_minmax" | 
|  |  | 
|  | // 132 | 
|  | @extension("VK_KHR_storage_buffer_storage_class") define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_storage_buffer_storage_class") define VK_KHR_STORAGE_BUFFER_STORAGE_CLASS_EXTENSION_NAME "VK_KHR_storage_buffer_storage_class" | 
|  |  | 
|  | // 133 | 
|  | @extension("VK_AMD_gpu_shader_int16") define VK_AMD_GPU_SHADER_INT16_SPEC_VERSION 1 | 
|  | @extension("VK_AMD_gpu_shader_int16") define VK_AMD_GPU_SHADER_INT16_EXTENSION_NAME "VK_AMD_gpu_shader_int16" | 
|  |  | 
|  | // 137 | 
|  | @extension("VK_AMD_mixed_attachment_samples") define VK_AMD_MIXED_ATTACHMENT_SAMPLES_SPEC_VERSION 1 | 
|  | @extension("VK_AMD_mixed_attachment_samples") define VK_AMD_MIXED_ATTACHMENT_SAMPLES_EXTENSION_NAME "VK_AMD_mixed_attachment_samples" | 
|  |  | 
|  | // 138 | 
|  | @extension("VK_AMD_shader_fragment_mask") define VK_AMD_SHADER_FRAGMENT_MASK_SPEC_VERSION 1 | 
|  | @extension("VK_AMD_shader_fragment_mask") define VK_AMD_SHADER_FRAGMENT_MASK_EXTENSION_NAME "VK_AMD_shader_fragment_mask" | 
|  |  | 
|  | // 139 | 
|  | @extension("VK_EXT_inline_uniform_block") define VK_EXT_INLINE_UNIFORM_BLOCK_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_inline_uniform_block") define VK_EXT_INLINE_UNIFORM_BLOCK_EXTENSION_NAME "VK_EXT_inline_uniform_block" | 
|  |  | 
|  | // 141 | 
|  | @extension("VK_EXT_shader_stencil_export") define VK_EXT_SHADER_STENCIL_EXPORT_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_shader_stencil_export") define VK_EXT_SHADER_STENCIL_EXPORT_EXTENSION_NAME "VK_EXT_shader_stencil_export" | 
|  |  | 
|  | // 144 | 
|  | @extension("VK_EXT_sample_locations") define VK_EXT_SAMPLE_LOCATIONS_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_sample_locations") define VK_EXT_SAMPLE_LOCATIONS_EXTENSION_NAME "VK_EXT_sample_locations" | 
|  |  | 
|  | // 145 | 
|  | @extension("VK_KHR_relaxed_block_layout") define VK_KHR_RELAXED_BLOCK_LAYOUT_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_relaxed_block_layout") define VK_KHR_RELAXED_BLOCK_LAYOUT_EXTENSION_NAME "VK_KHR_relaxed_block_layout" | 
|  |  | 
|  | // 147 | 
|  | @extension("VK_KHR_get_memory_requirements2") define VK_KHR_GET_MEMORY_REQUIREMENTS2_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_get_memory_requirements2") define VK_KHR_GET_MEMORY_REQUIREMENTS2_EXTENSION_NAME "VK_KHR_get_memory_requirements2" | 
|  |  | 
|  | // 148 | 
|  | @extension("VK_KHR_image_format_list") define VK_KHR_IMAGE_FORMAT_LIST_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_image_format_list") define VK_KHR_IMAGE_FORMAT_LIST_EXTENSION_NAME "VK_KHR_image_format_list" | 
|  |  | 
|  | // 149 | 
|  | @extension("VK_EXT_blend_operation_advanced") define VK_EXT_BLEND_OPERATION_ADVANCED_SPEC_VERSION 2 | 
|  | @extension("VK_EXT_blend_operation_advanced") define VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME "VK_EXT_blend_operation_advanced" | 
|  |  | 
|  | // 150 | 
|  | @extension("VK_NV_fragment_coverage_to_color") define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_SPEC_VERSION 1 | 
|  | @extension("VK_NV_fragment_coverage_to_color") define VK_NV_FRAGMENT_COVERAGE_TO_COLOR_EXTENSION_NAME "VK_NV_fragment_coverage_to_color" | 
|  |  | 
|  | // 153 | 
|  | @extension("VK_NV_framebuffer_mixed_samples") define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_SPEC_VERSION 1 | 
|  | @extension("VK_NV_framebuffer_mixed_samples") define VK_NV_FRAMEBUFFER_MIXED_SAMPLES_EXTENSION_NAME "VK_NV_framebuffer_mixed_samples" | 
|  |  | 
|  | // 154 | 
|  | @extension("VK_NV_fill_rectangle") define VK_NV_FILL_RECTANGLE_SPEC_VERSION 1 | 
|  | @extension("VK_NV_fill_rectangle") define VK_NV_FILL_RECTANGLE_EXTENSION_NAME "VK_NV_fill_rectangle" | 
|  |  | 
|  | // 156 | 
|  | @extension("VK_EXT_post_depth_coverage") define VK_EXT_POST_DEPTH_COVERAGE_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_post_depth_coverage") define VK_EXT_POST_DEPTH_COVERAGE_EXTENSION_NAME "VK_EXT_post_depth_coverage" | 
|  |  | 
|  | // 157 | 
|  | @extension("VK_KHR_sampler_ycbcr_conversion") define VK_KHR_SAMPLER_YCBCR_CONVERSION_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_sampler_ycbcr_conversion") define VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME "VK_KHR_sampler_ycbcr_conversion" | 
|  |  | 
|  | // 158 | 
|  | @extension("VK_KHR_bind_memory2") define VK_KHR_BIND_MEMORY2_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_bind_memory2") define VK_KHR_BIND_MEMORY2_EXTENSION_NAME "VK_KHR_bind_memory2" | 
|  |  | 
|  | // 159 | 
|  | @extension("VK_EXT_image_drm_format_modifier") define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_image_drm_format_modifier") define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME "VK_EXT_image_drm_format_modifier" | 
|  |  | 
|  | // 161 | 
|  | @extension("VK_EXT_validation_cache") define VK_EXT_VALIDATION_CACHE_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_validation_cache") define VK_EXT_VALIDATION_CACHE_EXTENSION_NAME "VK_EXT_validation_cache" | 
|  |  | 
|  | // 162 | 
|  | @extension("VK_EXT_descriptor_indexing") define VK_EXT_DESCRIPTOR_INDEXING_SPEC_VERSION 2 | 
|  | @extension("VK_EXT_descriptor_indexing") define VK_EXT_DESCRIPTOR_INDEXING_EXTENSION_NAME "VK_EXT_descriptor_indexing" | 
|  |  | 
|  | // 163 | 
|  | @extension("VK_EXT_shader_viewport_index_layer") define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_shader_viewport_index_layer") define VK_EXT_SHADER_VIEWPORT_INDEX_LAYER_EXTENSION_NAME "VK_EXT_shader_viewport_index_layer" | 
|  |  | 
|  | // 165 | 
|  | @extension("VK_NV_shading_rate_image") define VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION 3 | 
|  | @extension("VK_NV_shading_rate_image") define VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME "VK_NV_shading_rate_image" | 
|  |  | 
|  | // 166 | 
|  | @extension("VK_NV_ray_tracing") define VK_NV_RAY_TRACING_SPEC_VERSION 3 | 
|  | @extension("VK_NV_ray_tracing") define VK_NV_RAY_TRACING_EXTENSION_NAME "VK_NV_ray_tracing" | 
|  |  | 
|  | // 167 | 
|  | @extension("VK_NV_representative_fragment_test") define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_SPEC_VERSION 1 | 
|  | @extension("VK_NV_representative_fragment_test") define VK_NV_REPRESENTATIVE_FRAGMENT_TEST_EXTENSION_NAME "VK_NV_representative_fragment_test" | 
|  |  | 
|  | // 169 | 
|  | @extension("VK_KHR_maintenance3") define VK_KHR_MAINTENANCE3_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_maintenance3") define VK_KHR_MAINTENANCE3_EXTENSION_NAME "VK_KHR_maintenance3" | 
|  |  | 
|  | // 170 | 
|  | @extension("VK_KHR_draw_indirect_count") define VK_KHR_DRAW_INDIRECT_COUNT_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_draw_indirect_count") define VK_KHR_DRAW_INDIRECT_COUNT_EXTENSION_NAME "VK_KHR_draw_indirect_count" | 
|  |  | 
|  | // 175 | 
|  | @extension("VK_EXT_global_priority") define VK_EXT_GLOBAL_PRIORITY_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_global_priority") define VK_EXT_GLOBAL_PRIORITY_EXTENSION_NAME "VK_EXT_global_priority" | 
|  |  | 
|  | // 178 | 
|  | @extension("VK_KHR_8bit_storage") define VK_KHR_8BIT_STORAGE_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_8bit_storage") define VK_KHR_8BIT_STORAGE_EXTENSION_NAME "VK_KHR_8bit_storage" | 
|  |  | 
|  | // 179 | 
|  | @extension("VK_EXT_external_memory_host") define VK_EXT_EXTERNAL_MEMORY_HOST_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_external_memory_host") define VK_EXT_EXTERNAL_MEMORY_HOST_EXTENSION_NAME "VK_EXT_external_memory_host" | 
|  |  | 
|  | // 180 | 
|  | @extension("VK_AMD_buffer_marker") define VK_AMD_BUFFER_MARKER_SPEC_VERSION 1 | 
|  | @extension("VK_AMD_buffer_marker") define VK_AMD_BUFFER_MARKER_EXTENSION_NAME "VK_AMD_buffer_marker" | 
|  |  | 
|  | // 181 | 
|  | @extension("VK_KHR_shader_atomic_int64") define VK_KHR_SHADER_ATOMIC_INT64_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_shader_atomic_int64") define VK_KHR_SHADER_ATOMIC_INT64_EXTENSION_NAME "VK_KHR_shader_atomic_int64" | 
|  |  | 
|  | // 186 | 
|  | @extension("VK_AMD_shader_core_properties") define VK_AMD_SHADER_CORE_PROPERTIES_SPEC_VERSION 1 | 
|  | @extension("VK_AMD_shader_core_properties") define VK_AMD_SHADER_CORE_PROPERTIES_EXTENSION_NAME "VK_AMD_shader_core_properties" | 
|  |  | 
|  | // 190 | 
|  | @extension("VK_AMD_memory_overallocation_behavior") define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_SPEC_VERSION 1 | 
|  | @extension("VK_AMD_memory_overallocation_behavior") define VK_AMD_MEMORY_OVERALLOCATION_BEHAVIOR_EXTENSION_NAME "VK_AMD_memory_overallocation_behavior" | 
|  |  | 
|  | // 191 | 
|  | @extension("VK_EXT_vertex_attribute_divisor") define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_SPEC_VERSION 2 | 
|  | @extension("VK_EXT_vertex_attribute_divisor") define VK_EXT_VERTEX_ATTRIBUTE_DIVISOR_EXTENSION_NAME "VK_EXT_vertex_attribute_divisor" | 
|  |  | 
|  | // 197 | 
|  | @extension("VK_KHR_driver_properties") define VK_KHR_DRIVER_PROPERTIES_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_driver_properties") define VK_KHR_DRIVER_PROPERTIES_EXTENSION_NAME "VK_KHR_driver_properties" | 
|  |  | 
|  | // 198 | 
|  | @extension("VK_KHR_shader_float_controls") define VK_KHR_SHADER_FLOAT_CONTROLS_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_shader_float_controls") define VK_KHR_SHADER_FLOAT_CONTROLS_EXTENSION_NAME "VK_KHR_shader_float_controls" | 
|  |  | 
|  | // 199 | 
|  | @extension("VK_NV_shader_subgroup_partitioned") define VK_NV_SHADER_SUBGROUP_PARTITIONED_SPEC_VERSION 1 | 
|  | @extension("VK_NV_shader_subgroup_partitioned") define VK_NV_SHADER_SUBGROUP_PARTITIONED_EXTENSION_NAME "VK_NV_shader_subgroup_partitioned" | 
|  |  | 
|  | // 201 | 
|  | @extension("VK_KHR_swapchain_mutable_format") define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_SPEC_VERSION 1 | 
|  | @extension("VK_KHR_swapchain_mutable_format") define VK_KHR_SWAPCHAIN_MUTABLE_FORMAT_EXTENSION_NAME "VK_KHR_swapchain_mutable_format" | 
|  |  | 
|  | // 202 | 
|  | @extension("VK_NV_compute_shader_derivatives") define VK_NV_COMPUTE_SHADER_DERIVATIVES_SPEC_VERSION 1 | 
|  | @extension("VK_NV_compute_shader_derivatives") define VK_NV_COMPUTE_SHADER_DERIVATIVES_EXTENSION_NAME "VK_NV_compute_shader_derivatives" | 
|  |  | 
|  | // 203 | 
|  | @extension("VK_NV_mesh_shader") define VK_NV_MESH_SHADER_SPEC_VERSION 1 | 
|  | @extension("VK_NV_mesh_shader") define VK_NV_MESH_SHADER_EXTENSION_NAME "VK_NV_mesh_shader" | 
|  |  | 
|  | // 204 | 
|  | @extension("VK_NV_fragment_shader_barycentric") define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_SPEC_VERSION 1 | 
|  | @extension("VK_NV_fragment_shader_barycentric") define VK_NV_FRAGMENT_SHADER_BARYCENTRIC_EXTENSION_NAME "VK_NV_fragment_shader_barycentric" | 
|  |  | 
|  | // 205 | 
|  | @extension("VK_NV_shader_image_footprint") define VK_NV_SHADER_IMAGE_FOOTPRINT_SPEC_VERSION 1 | 
|  | @extension("VK_NV_shader_image_footprint") define VK_NV_SHADER_IMAGE_FOOTPRINT_EXTENSION_NAME "VK_NV_shader_image_footprint" | 
|  |  | 
|  | // 206 | 
|  | @extension("VK_NV_scissor_exclusive") define VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION 1 | 
|  | @extension("VK_NV_scissor_exclusive") define VK_NV_SCISSOR_EXCLUSIVE_EXTENSION_NAME "VK_NV_scissor_exclusive" | 
|  |  | 
|  | // 207 | 
|  | @extension("VK_NV_device_diagnostic_checkpoints") define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_SPEC_VERSION 2 | 
|  | @extension("VK_NV_device_diagnostic_checkpoints") define VK_NV_DEVICE_DIAGNOSTIC_CHECKPOINTS_EXTENSION_NAME "VK_NV_device_diagnostic_checkpoints" | 
|  |  | 
|  | // 212 | 
|  | @extension("VK_KHR_vulkan_memory_model") define VK_KHR_VULKAN_MEMORY_MODEL_SPEC_VERSION 2 | 
|  | @extension("VK_KHR_vulkan_memory_model") define VK_KHR_VULKAN_MEMORY_MODEL_EXTENSION_NAME "VK_KHR_vulkan_memory_model" | 
|  |  | 
|  | // 213 | 
|  | @extension("VK_EXT_pci_bus_info") define VK_EXT_PCI_BUS_INFO_SPEC_VERSION 2 | 
|  | @extension("VK_EXT_pci_bus_info") define VK_EXT_PCI_BUS_INFO_EXENSION_NAME "VK_EXT_pci_bus_info" | 
|  |  | 
|  | // 215 | 
|  | @extension("VK_FUCHSIA_imagepipe_surface") define VK_FUCHSIA_IMAGEPIPE_SURFACE_SPEC_VERSION 1 | 
|  | @extension("VK_FUCHSIA_imagepipe_surface") define VK_FUCHSIA_IMAGEPIPE_SURFACE_EXTENSION_NAME "VK_FUCHSIA_imagepipe_surface" | 
|  |  | 
|  | // 219 | 
|  | @extension("VK_EXT_fragment_density_map") define VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_fragment_density_map") define VK_EXT_FRAGMENT_DENSITY_MAP_EXTENSION_NAME "VK_EXT_fragment_density_map" | 
|  |  | 
|  | // 222 | 
|  | @extension("VK_EXT_scalar_block_layout") define VK_EXT_SCALAR_BLOCK_LAYOUT_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_scalar_block_layout") define VK_EXT_SCALAR_BLOCK_LAYOUT_EXTENSION_NAME "VK_EXT_scalar_block_layout" | 
|  |  | 
|  | // 224 | 
|  | @extension("VK_GOOGLE_hlsl_functionality1") define VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION 1 | 
|  | @extension("VK_GOOGLE_hlsl_functionality1") define VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME "VK_GOOGLE_hlsl_functionality1" | 
|  |  | 
|  | // 225 | 
|  | @extension("VK_GOOGLE_decorate_string") define VK_GOOGLE_DECORATE_STRING_SPEC_VERSION 1 | 
|  | @extension("VK_GOOGLE_decorate_string") define VK_GOOGLE_DECORATE_STRING_EXTENSION_NAME "VK_GOOGLE_decorate_string" | 
|  |  | 
|  | // 247 | 
|  | @extension("VK_EXT_separate_stencil_usage") define VK_EXT_SEPARATE_STENCIL_USAGE_SPEC_VERSION 1 | 
|  | @extension("VK_EXT_separate_stencil_usage") define VK_EXT_SEPARATE_STENCIL_USAGE_EXTENSION_NAME "VK_EXT_separate_stencil_usage" | 
|  |  | 
|  | ///////////// | 
|  | //  Types  // | 
|  | ///////////// | 
|  |  | 
|  | type u32 VkBool32 | 
|  | type u32 VkFlags | 
|  | type u64 VkDeviceSize | 
|  | type u32 VkSampleMask | 
|  |  | 
|  | /// Dispatchable handle types. | 
|  | @dispatchHandle type u64 VkInstance | 
|  | @dispatchHandle type u64 VkPhysicalDevice | 
|  | @dispatchHandle type u64 VkDevice | 
|  | @dispatchHandle type u64 VkQueue | 
|  | @dispatchHandle type u64 VkCommandBuffer | 
|  |  | 
|  | /// Non dispatchable handle types. | 
|  | @nonDispatchHandle type u64 VkDeviceMemory | 
|  | @nonDispatchHandle type u64 VkCommandPool | 
|  | @nonDispatchHandle type u64 VkBuffer | 
|  | @nonDispatchHandle type u64 VkBufferView | 
|  | @nonDispatchHandle type u64 VkImage | 
|  | @nonDispatchHandle type u64 VkImageView | 
|  | @nonDispatchHandle type u64 VkShaderModule | 
|  | @nonDispatchHandle type u64 VkPipeline | 
|  | @nonDispatchHandle type u64 VkPipelineLayout | 
|  | @nonDispatchHandle type u64 VkSampler | 
|  | @nonDispatchHandle type u64 VkDescriptorSet | 
|  | @nonDispatchHandle type u64 VkDescriptorSetLayout | 
|  | @nonDispatchHandle type u64 VkDescriptorPool | 
|  | @nonDispatchHandle type u64 VkFence | 
|  | @nonDispatchHandle type u64 VkSemaphore | 
|  | @nonDispatchHandle type u64 VkEvent | 
|  | @nonDispatchHandle type u64 VkQueryPool | 
|  | @nonDispatchHandle type u64 VkFramebuffer | 
|  | @nonDispatchHandle type u64 VkRenderPass | 
|  | @nonDispatchHandle type u64 VkPipelineCache | 
|  |  | 
|  | @vulkan1_1 | 
|  | @nonDispatchHandle type u64 VkSamplerYcbcrConversion | 
|  | @nonDispatchHandle type u64 VkDescriptorUpdateTemplate | 
|  |  | 
|  | // 1 | 
|  | @extension("VK_KHR_surface")    @nonDispatchHandle type u64 VkSurfaceKHR | 
|  |  | 
|  | // 2 | 
|  | @extension("VK_KHR_swapchain")  @nonDispatchHandle type u64 VkSwapchainKHR | 
|  |  | 
|  | // 3 | 
|  | @extension("VK_KHR_display")    @nonDispatchHandle type u64 VkDisplayKHR | 
|  | @extension("VK_KHR_display")    @nonDispatchHandle type u64 VkDisplayModeKHR | 
|  |  | 
|  | // 12 | 
|  | @extension("VK_EXT_debug_report") @nonDispatchHandle type u64 VkDebugReportCallbackEXT | 
|  |  | 
|  | // 86 | 
|  | @extension("VK_KHR_descriptor_update_template") @nonDispatchHandle type u64 VkDescriptorUpdateTemplateKHR | 
|  |  | 
|  | // 87 | 
|  | @extension("VK_NVX_device_generated_commands") @nonDispatchHandle type u64 VkObjectTableNVX | 
|  | @extension("VK_NVX_device_generated_commands") @nonDispatchHandle type u64 VkIndirectCommandsLayoutNVX | 
|  |  | 
|  | // 129 | 
|  | @extension("VK_EXT_debug_utils") @nonDispatchHandle type u64 VkDebugUtilsMessengerEXT | 
|  |  | 
|  | // 157 | 
|  | @extension("VK_KHR_sampler_ycbcr_conversion") @nonDispatchHandle type u64 VkSamplerYcbcrConversionKHR | 
|  |  | 
|  | // 161 | 
|  | @extension("VK_EXT_validation_cache") @nonDispatchHandle type u64 VkValidationCacheEXT | 
|  |  | 
|  | // 166 | 
|  | @extension("VK_NV_ray_tracing") @nonDispatchHandle type u64 VkAccelerationStructureNV | 
|  |  | 
|  | ///////////// | 
|  | //  Enums  // | 
|  | ///////////// | 
|  |  | 
|  | enum VkImageLayout { | 
|  | VK_IMAGE_LAYOUT_UNDEFINED                               = 0x00000000,   /// Implicit layout an image is when its contents are undefined due to various reasons (e.g. right after creation) | 
|  | VK_IMAGE_LAYOUT_GENERAL                                 = 0x00000001,   /// General layout when image can be used for any kind of access | 
|  | VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL                = 0x00000002,   /// Optimal layout when image is only used for color attachment read/write | 
|  | VK_IMAGE_LAYOUT_DEPTH_STENCIL_ATTACHMENT_OPTIMAL        = 0x00000003,   /// Optimal layout when image is only used for depth/stencil attachment read/write | 
|  | VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL         = 0x00000004,   /// Optimal layout when image is used for read only depth/stencil attachment and shader access | 
|  | VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL                = 0x00000005,   /// Optimal layout when image is used for read only shader access | 
|  | VK_IMAGE_LAYOUT_TRANSFER_SRC_OPTIMAL                    = 0x00000006,   /// Optimal layout when image is used only as source of transfer operations | 
|  | VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL                    = 0x00000007,   /// Optimal layout when image is used only as destination of transfer operations | 
|  | VK_IMAGE_LAYOUT_PREINITIALIZED                          = 0x00000008,   /// Initial layout used when the data is populated by the CPU | 
|  |  | 
|  | //@vulkan1_1 | 
|  | VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL = 1000117000, | 
|  | VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL = 1000117001, | 
|  |  | 
|  | //@extension("VK_KHR_swapchain") // 2 | 
|  | VK_IMAGE_LAYOUT_PRESENT_SRC_KHR                         = 1000001002, | 
|  |  | 
|  | //@extension("VK_KHR_shared_presentable_image") // 112 | 
|  | VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR                      = 1000111000, | 
|  |  | 
|  | //@extension("VK_KHR_maintenance2") // 118 | 
|  | VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR  = 1000117000, | 
|  | VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR  = 1000117001, | 
|  |  | 
|  | //@extension("VK_NV_shading_rate_image") // 165 | 
|  | VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV                 = 1000164003, | 
|  |  | 
|  | //@extension("VK_EXT_fragment_density_map") // 219 | 
|  | VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT        = 1000218000, | 
|  | } | 
|  |  | 
|  | enum VkAttachmentLoadOp { | 
|  | VK_ATTACHMENT_LOAD_OP_LOAD                              = 0x00000000, | 
|  | VK_ATTACHMENT_LOAD_OP_CLEAR                             = 0x00000001, | 
|  | VK_ATTACHMENT_LOAD_OP_DONT_CARE                         = 0x00000002, | 
|  | } | 
|  |  | 
|  | enum VkAttachmentStoreOp { | 
|  | VK_ATTACHMENT_STORE_OP_STORE                            = 0x00000000, | 
|  | VK_ATTACHMENT_STORE_OP_DONT_CARE                        = 0x00000001, | 
|  | } | 
|  |  | 
|  | enum VkImageType { | 
|  | VK_IMAGE_TYPE_1D                                        = 0x00000000, | 
|  | VK_IMAGE_TYPE_2D                                        = 0x00000001, | 
|  | VK_IMAGE_TYPE_3D                                        = 0x00000002, | 
|  | } | 
|  |  | 
|  | enum VkImageTiling { | 
|  | VK_IMAGE_TILING_OPTIMAL                                 = 0x00000000, | 
|  | VK_IMAGE_TILING_LINEAR                                  = 0x00000001, | 
|  |  | 
|  | //@extension("VK_EXT_image_drm_format_modifier") // 159 | 
|  | VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT                 = 1000158000, | 
|  | } | 
|  |  | 
|  | enum VkImageViewType { | 
|  | VK_IMAGE_VIEW_TYPE_1D                                   = 0x00000000, | 
|  | VK_IMAGE_VIEW_TYPE_2D                                   = 0x00000001, | 
|  | VK_IMAGE_VIEW_TYPE_3D                                   = 0x00000002, | 
|  | VK_IMAGE_VIEW_TYPE_CUBE                                 = 0x00000003, | 
|  | VK_IMAGE_VIEW_TYPE_1D_ARRAY                             = 0x00000004, | 
|  | VK_IMAGE_VIEW_TYPE_2D_ARRAY                             = 0x00000005, | 
|  | VK_IMAGE_VIEW_TYPE_CUBE_ARRAY                           = 0x00000006, | 
|  | } | 
|  |  | 
|  | enum VkCommandBufferLevel { | 
|  | VK_COMMAND_BUFFER_LEVEL_PRIMARY                         = 0x00000000, | 
|  | VK_COMMAND_BUFFER_LEVEL_SECONDARY                       = 0x00000001, | 
|  | } | 
|  |  | 
|  | enum VkComponentSwizzle { | 
|  | VK_COMPONENT_SWIZZLE_IDENTITY                           = 0x00000000, | 
|  | VK_COMPONENT_SWIZZLE_ZERO                               = 0x00000001, | 
|  | VK_COMPONENT_SWIZZLE_ONE                                = 0x00000002, | 
|  | VK_COMPONENT_SWIZZLE_R                                  = 0x00000003, | 
|  | VK_COMPONENT_SWIZZLE_G                                  = 0x00000004, | 
|  | VK_COMPONENT_SWIZZLE_B                                  = 0x00000005, | 
|  | VK_COMPONENT_SWIZZLE_A                                  = 0x00000006, | 
|  | } | 
|  |  | 
|  | enum VkDescriptorType { | 
|  | VK_DESCRIPTOR_TYPE_SAMPLER                              = 0x00000000, | 
|  | VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER               = 0x00000001, | 
|  | VK_DESCRIPTOR_TYPE_SAMPLED_IMAGE                        = 0x00000002, | 
|  | VK_DESCRIPTOR_TYPE_STORAGE_IMAGE                        = 0x00000003, | 
|  | VK_DESCRIPTOR_TYPE_UNIFORM_TEXEL_BUFFER                 = 0x00000004, | 
|  | VK_DESCRIPTOR_TYPE_STORAGE_TEXEL_BUFFER                 = 0x00000005, | 
|  | VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER                       = 0x00000006, | 
|  | VK_DESCRIPTOR_TYPE_STORAGE_BUFFER                       = 0x00000007, | 
|  | VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER_DYNAMIC               = 0x00000008, | 
|  | VK_DESCRIPTOR_TYPE_STORAGE_BUFFER_DYNAMIC               = 0x00000009, | 
|  | VK_DESCRIPTOR_TYPE_INPUT_ATTACHMENT                     = 0x0000000a, | 
|  |  | 
|  | //@extension("VK_EXT_inline_uniform_block") // 139 | 
|  | VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT             = 1000138000, | 
|  |  | 
|  | //@extension("VK_NV_ray_tracing") // 166 | 
|  | VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV            = 1000165000, | 
|  | } | 
|  |  | 
|  | enum VkQueryType { | 
|  | VK_QUERY_TYPE_OCCLUSION                                 = 0x00000000, | 
|  | VK_QUERY_TYPE_PIPELINE_STATISTICS                       = 0x00000001, /// Optional | 
|  | VK_QUERY_TYPE_TIMESTAMP                                 = 0x00000002, | 
|  |  | 
|  | //@extension("VK_EXT_transform_feedback") // 29 | 
|  | VK_QUERY_TYPE_TRANSFORM_FEEDBACK_STREAM_EXT             = 1000028004, | 
|  |  | 
|  | //@extension("VK_NV_ray_tracing") // 166 | 
|  | VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV  = 1000165000, | 
|  | } | 
|  |  | 
|  | enum VkBorderColor { | 
|  | VK_BORDER_COLOR_FLOAT_TRANSPARENT_BLACK                 = 0x00000000, | 
|  | VK_BORDER_COLOR_INT_TRANSPARENT_BLACK                   = 0x00000001, | 
|  | VK_BORDER_COLOR_FLOAT_OPAQUE_BLACK                      = 0x00000002, | 
|  | VK_BORDER_COLOR_INT_OPAQUE_BLACK                        = 0x00000003, | 
|  | VK_BORDER_COLOR_FLOAT_OPAQUE_WHITE                      = 0x00000004, | 
|  | VK_BORDER_COLOR_INT_OPAQUE_WHITE                        = 0x00000005, | 
|  | } | 
|  |  | 
|  | enum VkPipelineBindPoint { | 
|  | VK_PIPELINE_BIND_POINT_GRAPHICS                         = 0x00000000, | 
|  | VK_PIPELINE_BIND_POINT_COMPUTE                          = 0x00000001, | 
|  |  | 
|  | //@extension("VK_NV_ray_tracing") // 166 | 
|  | VK_PIPELINE_BIND_POINT_RAY_TRACING_NV                   = 1000165000, | 
|  | } | 
|  |  | 
|  | enum VkPrimitiveTopology { | 
|  | VK_PRIMITIVE_TOPOLOGY_POINT_LIST                        = 0x00000000, | 
|  | VK_PRIMITIVE_TOPOLOGY_LINE_LIST                         = 0x00000001, | 
|  | VK_PRIMITIVE_TOPOLOGY_LINE_STRIP                        = 0x00000002, | 
|  | VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST                     = 0x00000003, | 
|  | VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP                    = 0x00000004, | 
|  | VK_PRIMITIVE_TOPOLOGY_TRIANGLE_FAN                      = 0x00000005, | 
|  | VK_PRIMITIVE_TOPOLOGY_LINE_LIST_WITH_ADJACENCY          = 0x00000006, | 
|  | VK_PRIMITIVE_TOPOLOGY_LINE_STRIP_WITH_ADJACENCY         = 0x00000007, | 
|  | VK_PRIMITIVE_TOPOLOGY_TRIANGLE_LIST_WITH_ADJACENCY      = 0x00000008, | 
|  | VK_PRIMITIVE_TOPOLOGY_TRIANGLE_STRIP_WITH_ADJACENCY     = 0x00000009, | 
|  | VK_PRIMITIVE_TOPOLOGY_PATCH_LIST                        = 0x0000000a, | 
|  | } | 
|  |  | 
|  | enum VkSharingMode { | 
|  | VK_SHARING_MODE_EXCLUSIVE                               = 0x00000000, | 
|  | VK_SHARING_MODE_CONCURRENT                              = 0x00000001, | 
|  | } | 
|  |  | 
|  | enum VkIndexType { | 
|  | VK_INDEX_TYPE_UINT16                                    = 0x00000000, | 
|  | VK_INDEX_TYPE_UINT32                                    = 0x00000001, | 
|  |  | 
|  | //@extension("VK_NV_ray_tracing") // 166 | 
|  | VK_INDEX_TYPE_NONE_NV                                   = 1000165000, | 
|  | } | 
|  |  | 
|  | enum VkFilter { | 
|  | VK_FILTER_NEAREST                                       = 0x00000000, | 
|  | VK_FILTER_LINEAR                                        = 0x00000001, | 
|  |  | 
|  | //@extension("VK_IMG_filter_cubic") // 16 | 
|  | VK_FILTER_CUBIC_IMG                                     = 1000015000, | 
|  | } | 
|  |  | 
|  | enum VkSamplerMipmapMode { | 
|  | VK_SAMPLER_MIPMAP_MODE_NEAREST                          = 0x00000001,   /// Choose nearest mip level | 
|  | VK_SAMPLER_MIPMAP_MODE_LINEAR                           = 0x00000002,   /// Linear filter between mip levels | 
|  | } | 
|  |  | 
|  | enum VkSamplerAddressMode { | 
|  | VK_SAMPLER_ADDRESS_MODE_REPEAT                          = 0x00000000, | 
|  | VK_SAMPLER_ADDRESS_MODE_MIRRORED_REPEAT                 = 0x00000001, | 
|  | VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_EDGE                   = 0x00000002, | 
|  | VK_SAMPLER_ADDRESS_MODE_CLAMP_TO_BORDER                 = 0x00000003, | 
|  | VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE            = 0x00000004, | 
|  | } | 
|  |  | 
|  | enum VkCompareOp { | 
|  | VK_COMPARE_OP_NEVER                                     = 0x00000000, | 
|  | VK_COMPARE_OP_LESS                                      = 0x00000001, | 
|  | VK_COMPARE_OP_EQUAL                                     = 0x00000002, | 
|  | VK_COMPARE_OP_LESS_OR_EQUAL                             = 0x00000003, | 
|  | VK_COMPARE_OP_GREATER                                   = 0x00000004, | 
|  | VK_COMPARE_OP_NOT_EQUAL                                 = 0x00000005, | 
|  | VK_COMPARE_OP_GREATER_OR_EQUAL                          = 0x00000006, | 
|  | VK_COMPARE_OP_ALWAYS                                    = 0x00000007, | 
|  | } | 
|  |  | 
|  | enum VkPolygonMode { | 
|  | VK_POLYGON_MODE_FILL                                    = 0x00000000, | 
|  | VK_POLYGON_MODE_LINE                                    = 0x00000001, | 
|  | VK_POLYGON_MODE_POINT                                   = 0x00000002, | 
|  |  | 
|  | //@extension("VK_NV_fill_rectangle") // 154 | 
|  | VK_POLYGON_MODE_FILL_RECTANGLE_NV                       = 1000153000, | 
|  | } | 
|  |  | 
|  | enum VkFrontFace { | 
|  | VK_FRONT_FACE_COUNTER_CLOCKWISE                         = 0x00000000, | 
|  | VK_FRONT_FACE_CLOCKWISE                                 = 0x00000001, | 
|  | } | 
|  |  | 
|  | enum VkBlendFactor { | 
|  | VK_BLEND_FACTOR_ZERO                                    = 0x00000000, | 
|  | VK_BLEND_FACTOR_ONE                                     = 0x00000001, | 
|  | VK_BLEND_FACTOR_SRC_COLOR                               = 0x00000002, | 
|  | VK_BLEND_FACTOR_ONE_MINUS_SRC_COLOR                     = 0x00000003, | 
|  | VK_BLEND_FACTOR_DST_COLOR                               = 0x00000004, | 
|  | VK_BLEND_FACTOR_ONE_MINUS_DST_COLOR                     = 0x00000005, | 
|  | VK_BLEND_FACTOR_SRC_ALPHA                               = 0x00000006, | 
|  | VK_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA                     = 0x00000007, | 
|  | VK_BLEND_FACTOR_DST_ALPHA                               = 0x00000008, | 
|  | VK_BLEND_FACTOR_ONE_MINUS_DST_ALPHA                     = 0x00000009, | 
|  | VK_BLEND_FACTOR_CONSTANT_COLOR                          = 0x0000000a, | 
|  | VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_COLOR                = 0x0000000b, | 
|  | VK_BLEND_FACTOR_CONSTANT_ALPHA                          = 0x0000000c, | 
|  | VK_BLEND_FACTOR_ONE_MINUS_CONSTANT_ALPHA                = 0x0000000d, | 
|  | VK_BLEND_FACTOR_SRC_ALPHA_SATURATE                      = 0x0000000e, | 
|  | VK_BLEND_FACTOR_SRC1_COLOR                              = 0x0000000f, | 
|  | VK_BLEND_FACTOR_ONE_MINUS_SRC1_COLOR                    = 0x00000010, | 
|  | VK_BLEND_FACTOR_SRC1_ALPHA                              = 0x00000011, | 
|  | VK_BLEND_FACTOR_ONE_MINUS_SRC1_ALPHA                    = 0x00000012, | 
|  | } | 
|  |  | 
|  | enum VkBlendOp { | 
|  | VK_BLEND_OP_ADD                                         = 0x00000000, | 
|  | VK_BLEND_OP_SUBTRACT                                    = 0x00000001, | 
|  | VK_BLEND_OP_REVERSE_SUBTRACT                            = 0x00000002, | 
|  | VK_BLEND_OP_MIN                                         = 0x00000003, | 
|  | VK_BLEND_OP_MAX                                         = 0x00000004, | 
|  |  | 
|  | //@extension("VK_EXT_blend_operation_advanced") // 149 | 
|  | VK_BLEND_OP_ZERO_EXT                                    = 1000148000, | 
|  | VK_BLEND_OP_SRC_EXT                                     = 1000148001, | 
|  | VK_BLEND_OP_DST_EXT                                     = 1000148002, | 
|  | VK_BLEND_OP_SRC_OVER_EXT                                = 1000148003, | 
|  | VK_BLEND_OP_DST_OVER_EXT                                = 1000148004, | 
|  | VK_BLEND_OP_SRC_IN_EXT                                  = 1000148005, | 
|  | VK_BLEND_OP_DST_IN_EXT                                  = 1000148006, | 
|  | VK_BLEND_OP_SRC_OUT_EXT                                 = 1000148007, | 
|  | VK_BLEND_OP_DST_OUT_EXT                                 = 1000148008, | 
|  | VK_BLEND_OP_SRC_ATOP_EXT                                = 1000148009, | 
|  | VK_BLEND_OP_DST_ATOP_EXT                                = 1000148010, | 
|  | VK_BLEND_OP_XOR_EXT                                     = 1000148011, | 
|  | VK_BLEND_OP_MULTIPLY_EXT                                = 1000148012, | 
|  | VK_BLEND_OP_SCREEN_EXT                                  = 1000148013, | 
|  | VK_BLEND_OP_OVERLAY_EXT                                 = 1000148014, | 
|  | VK_BLEND_OP_DARKEN_EXT                                  = 1000148015, | 
|  | VK_BLEND_OP_LIGHTEN_EXT                                 = 1000148016, | 
|  | VK_BLEND_OP_COLORDODGE_EXT                              = 1000148017, | 
|  | VK_BLEND_OP_COLORBURN_EXT                               = 1000148018, | 
|  | VK_BLEND_OP_HARDLIGHT_EXT                               = 1000148019, | 
|  | VK_BLEND_OP_SOFTLIGHT_EXT                               = 1000148020, | 
|  | VK_BLEND_OP_DIFFERENCE_EXT                              = 1000148021, | 
|  | VK_BLEND_OP_EXCLUSION_EXT                               = 1000148022, | 
|  | VK_BLEND_OP_INVERT_EXT                                  = 1000148023, | 
|  | VK_BLEND_OP_INVERT_RGB_EXT                              = 1000148024, | 
|  | VK_BLEND_OP_LINEARDODGE_EXT                             = 1000148025, | 
|  | VK_BLEND_OP_LINEARBURN_EXT                              = 1000148026, | 
|  | VK_BLEND_OP_VIVIDLIGHT_EXT                              = 1000148027, | 
|  | VK_BLEND_OP_LINEARLIGHT_EXT                             = 1000148028, | 
|  | VK_BLEND_OP_PINLIGHT_EXT                                = 1000148029, | 
|  | VK_BLEND_OP_HARDMIX_EXT                                 = 1000148030, | 
|  | VK_BLEND_OP_HSL_HUE_EXT                                 = 1000148031, | 
|  | VK_BLEND_OP_HSL_SATURATION_EXT                          = 1000148032, | 
|  | VK_BLEND_OP_HSL_COLOR_EXT                               = 1000148033, | 
|  | VK_BLEND_OP_HSL_LUMINOSITY_EXT                          = 1000148034, | 
|  | VK_BLEND_OP_PLUS_EXT                                    = 1000148035, | 
|  | VK_BLEND_OP_PLUS_CLAMPED_EXT                            = 1000148036, | 
|  | VK_BLEND_OP_PLUS_CLAMPED_ALPHA_EXT                      = 1000148037, | 
|  | VK_BLEND_OP_PLUS_DARKER_EXT                             = 1000148038, | 
|  | VK_BLEND_OP_MINUS_EXT                                   = 1000148039, | 
|  | VK_BLEND_OP_MINUS_CLAMPED_EXT                           = 1000148040, | 
|  | VK_BLEND_OP_CONTRAST_EXT                                = 1000148041, | 
|  | VK_BLEND_OP_INVERT_OVG_EXT                              = 1000148042, | 
|  | VK_BLEND_OP_RED_EXT                                     = 1000148043, | 
|  | VK_BLEND_OP_GREEN_EXT                                   = 1000148044, | 
|  | VK_BLEND_OP_BLUE_EXT                                    = 1000148045, | 
|  | } | 
|  |  | 
|  | enum VkStencilOp { | 
|  | VK_STENCIL_OP_KEEP                                      = 0x00000000, | 
|  | VK_STENCIL_OP_ZERO                                      = 0x00000001, | 
|  | VK_STENCIL_OP_REPLACE                                   = 0x00000002, | 
|  | VK_STENCIL_OP_INCREMENT_AND_CLAMP                       = 0x00000003, | 
|  | VK_STENCIL_OP_DECREMENT_AND_CLAMP                       = 0x00000004, | 
|  | VK_STENCIL_OP_INVERT                                    = 0x00000005, | 
|  | VK_STENCIL_OP_INCREMENT_AND_WRAP                        = 0x00000006, | 
|  | VK_STENCIL_OP_DECREMENT_AND_WRAP                        = 0x00000007, | 
|  | } | 
|  |  | 
|  | enum VkLogicOp { | 
|  | VK_LOGIC_OP_CLEAR                                       = 0x00000000, | 
|  | VK_LOGIC_OP_AND                                         = 0x00000001, | 
|  | VK_LOGIC_OP_AND_REVERSE                                 = 0x00000002, | 
|  | VK_LOGIC_OP_COPY                                        = 0x00000003, | 
|  | VK_LOGIC_OP_AND_INVERTED                                = 0x00000004, | 
|  | VK_LOGIC_OP_NO_OP                                       = 0x00000005, | 
|  | VK_LOGIC_OP_XOR                                         = 0x00000006, | 
|  | VK_LOGIC_OP_OR                                          = 0x00000007, | 
|  | VK_LOGIC_OP_NOR                                         = 0x00000008, | 
|  | VK_LOGIC_OP_EQUIVALENT                                  = 0x00000009, | 
|  | VK_LOGIC_OP_INVERT                                      = 0x0000000a, | 
|  | VK_LOGIC_OP_OR_REVERSE                                  = 0x0000000b, | 
|  | VK_LOGIC_OP_COPY_INVERTED                               = 0x0000000c, | 
|  | VK_LOGIC_OP_OR_INVERTED                                 = 0x0000000d, | 
|  | VK_LOGIC_OP_NAND                                        = 0x0000000e, | 
|  | VK_LOGIC_OP_SET                                         = 0x0000000f, | 
|  | } | 
|  |  | 
|  | enum VkSystemAllocationScope { | 
|  | VK_SYSTEM_ALLOCATION_SCOPE_COMMAND                      = 0x00000000, | 
|  | VK_SYSTEM_ALLOCATION_SCOPE_OBJECT                       = 0x00000001, | 
|  | VK_SYSTEM_ALLOCATION_SCOPE_CACHE                        = 0x00000002, | 
|  | VK_SYSTEM_ALLOCATION_SCOPE_DEVICE                       = 0x00000003, | 
|  | VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE                     = 0x00000004, | 
|  | } | 
|  |  | 
|  | enum VkInternalAllocationType { | 
|  | VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE                  = 0x00000000, | 
|  | } | 
|  |  | 
|  | enum VkPhysicalDeviceType { | 
|  | VK_PHYSICAL_DEVICE_TYPE_OTHER                           = 0x00000000, | 
|  | VK_PHYSICAL_DEVICE_TYPE_INTEGRATED_GPU                  = 0x00000001, | 
|  | VK_PHYSICAL_DEVICE_TYPE_DISCRETE_GPU                    = 0x00000002, | 
|  | VK_PHYSICAL_DEVICE_TYPE_VIRTUAL_GPU                     = 0x00000003, | 
|  | VK_PHYSICAL_DEVICE_TYPE_CPU                             = 0x00000004, | 
|  | } | 
|  |  | 
|  | enum VkVertexInputRate { | 
|  | VK_VERTEX_INPUT_RATE_VERTEX                             = 0x00000000, | 
|  | VK_VERTEX_INPUT_RATE_INSTANCE                           = 0x00000001, | 
|  | } | 
|  |  | 
|  | /// Vulkan format definitions | 
|  | enum VkFormat { | 
|  | VK_FORMAT_UNDEFINED                                     = 0, | 
|  | VK_FORMAT_R4G4_UNORM_PACK8                              = 1, | 
|  | VK_FORMAT_R4G4B4A4_UNORM_PACK16                         = 2, | 
|  | VK_FORMAT_B4G4R4A4_UNORM_PACK16                         = 3, | 
|  | VK_FORMAT_R5G6B5_UNORM_PACK16                           = 4, | 
|  | VK_FORMAT_B5G6R5_UNORM_PACK16                           = 5, | 
|  | VK_FORMAT_R5G5B5A1_UNORM_PACK16                         = 6, | 
|  | VK_FORMAT_B5G5R5A1_UNORM_PACK16                         = 7, | 
|  | VK_FORMAT_A1R5G5B5_UNORM_PACK16                         = 8, | 
|  | VK_FORMAT_R8_UNORM                                      = 9, | 
|  | VK_FORMAT_R8_SNORM                                      = 10, | 
|  | VK_FORMAT_R8_USCALED                                    = 11, | 
|  | VK_FORMAT_R8_SSCALED                                    = 12, | 
|  | VK_FORMAT_R8_UINT                                       = 13, | 
|  | VK_FORMAT_R8_SINT                                       = 14, | 
|  | VK_FORMAT_R8_SRGB                                       = 15, | 
|  | VK_FORMAT_R8G8_UNORM                                    = 16, | 
|  | VK_FORMAT_R8G8_SNORM                                    = 17, | 
|  | VK_FORMAT_R8G8_USCALED                                  = 18, | 
|  | VK_FORMAT_R8G8_SSCALED                                  = 19, | 
|  | VK_FORMAT_R8G8_UINT                                     = 20, | 
|  | VK_FORMAT_R8G8_SINT                                     = 21, | 
|  | VK_FORMAT_R8G8_SRGB                                     = 22, | 
|  | VK_FORMAT_R8G8B8_UNORM                                  = 23, | 
|  | VK_FORMAT_R8G8B8_SNORM                                  = 24, | 
|  | VK_FORMAT_R8G8B8_USCALED                                = 25, | 
|  | VK_FORMAT_R8G8B8_SSCALED                                = 26, | 
|  | VK_FORMAT_R8G8B8_UINT                                   = 27, | 
|  | VK_FORMAT_R8G8B8_SINT                                   = 28, | 
|  | VK_FORMAT_R8G8B8_SRGB                                   = 29, | 
|  | VK_FORMAT_B8G8R8_UNORM                                  = 30, | 
|  | VK_FORMAT_B8G8R8_SNORM                                  = 31, | 
|  | VK_FORMAT_B8G8R8_USCALED                                = 32, | 
|  | VK_FORMAT_B8G8R8_SSCALED                                = 33, | 
|  | VK_FORMAT_B8G8R8_UINT                                   = 34, | 
|  | VK_FORMAT_B8G8R8_SINT                                   = 35, | 
|  | VK_FORMAT_B8G8R8_SRGB                                   = 36, | 
|  | VK_FORMAT_R8G8B8A8_UNORM                                = 37, | 
|  | VK_FORMAT_R8G8B8A8_SNORM                                = 38, | 
|  | VK_FORMAT_R8G8B8A8_USCALED                              = 39, | 
|  | VK_FORMAT_R8G8B8A8_SSCALED                              = 40, | 
|  | VK_FORMAT_R8G8B8A8_UINT                                 = 41, | 
|  | VK_FORMAT_R8G8B8A8_SINT                                 = 42, | 
|  | VK_FORMAT_R8G8B8A8_SRGB                                 = 43, | 
|  | VK_FORMAT_B8G8R8A8_UNORM                                = 44, | 
|  | VK_FORMAT_B8G8R8A8_SNORM                                = 45, | 
|  | VK_FORMAT_B8G8R8A8_USCALED                              = 46, | 
|  | VK_FORMAT_B8G8R8A8_SSCALED                              = 47, | 
|  | VK_FORMAT_B8G8R8A8_UINT                                 = 48, | 
|  | VK_FORMAT_B8G8R8A8_SINT                                 = 49, | 
|  | VK_FORMAT_B8G8R8A8_SRGB                                 = 50, | 
|  | VK_FORMAT_A8B8G8R8_UNORM_PACK32                         = 51, | 
|  | VK_FORMAT_A8B8G8R8_SNORM_PACK32                         = 52, | 
|  | VK_FORMAT_A8B8G8R8_USCALED_PACK32                       = 53, | 
|  | VK_FORMAT_A8B8G8R8_SSCALED_PACK32                       = 54, | 
|  | VK_FORMAT_A8B8G8R8_UINT_PACK32                          = 55, | 
|  | VK_FORMAT_A8B8G8R8_SINT_PACK32                          = 56, | 
|  | VK_FORMAT_A8B8G8R8_SRGB_PACK32                          = 57, | 
|  | VK_FORMAT_A2R10G10B10_UNORM_PACK32                      = 58, | 
|  | VK_FORMAT_A2R10G10B10_SNORM_PACK32                      = 59, | 
|  | VK_FORMAT_A2R10G10B10_USCALED_PACK32                    = 60, | 
|  | VK_FORMAT_A2R10G10B10_SSCALED_PACK32                    = 61, | 
|  | VK_FORMAT_A2R10G10B10_UINT_PACK32                       = 62, | 
|  | VK_FORMAT_A2R10G10B10_SINT_PACK32                       = 63, | 
|  | VK_FORMAT_A2B10G10R10_UNORM_PACK32                      = 64, | 
|  | VK_FORMAT_A2B10G10R10_SNORM_PACK32                      = 65, | 
|  | VK_FORMAT_A2B10G10R10_USCALED_PACK32                    = 66, | 
|  | VK_FORMAT_A2B10G10R10_SSCALED_PACK32                    = 67, | 
|  | VK_FORMAT_A2B10G10R10_UINT_PACK32                       = 68, | 
|  | VK_FORMAT_A2B10G10R10_SINT_PACK32                       = 69, | 
|  | VK_FORMAT_R16_UNORM                                     = 70, | 
|  | VK_FORMAT_R16_SNORM                                     = 71, | 
|  | VK_FORMAT_R16_USCALED                                   = 72, | 
|  | VK_FORMAT_R16_SSCALED                                   = 73, | 
|  | VK_FORMAT_R16_UINT                                      = 74, | 
|  | VK_FORMAT_R16_SINT                                      = 75, | 
|  | VK_FORMAT_R16_SFLOAT                                    = 76, | 
|  | VK_FORMAT_R16G16_UNORM                                  = 77, | 
|  | VK_FORMAT_R16G16_SNORM                                  = 78, | 
|  | VK_FORMAT_R16G16_USCALED                                = 79, | 
|  | VK_FORMAT_R16G16_SSCALED                                = 80, | 
|  | VK_FORMAT_R16G16_UINT                                   = 81, | 
|  | VK_FORMAT_R16G16_SINT                                   = 82, | 
|  | VK_FORMAT_R16G16_SFLOAT                                 = 83, | 
|  | VK_FORMAT_R16G16B16_UNORM                               = 84, | 
|  | VK_FORMAT_R16G16B16_SNORM                               = 85, | 
|  | VK_FORMAT_R16G16B16_USCALED                             = 86, | 
|  | VK_FORMAT_R16G16B16_SSCALED                             = 87, | 
|  | VK_FORMAT_R16G16B16_UINT                                = 88, | 
|  | VK_FORMAT_R16G16B16_SINT                                = 89, | 
|  | VK_FORMAT_R16G16B16_SFLOAT                              = 90, | 
|  | VK_FORMAT_R16G16B16A16_UNORM                            = 91, | 
|  | VK_FORMAT_R16G16B16A16_SNORM                            = 92, | 
|  | VK_FORMAT_R16G16B16A16_USCALED                          = 93, | 
|  | VK_FORMAT_R16G16B16A16_SSCALED                          = 94, | 
|  | VK_FORMAT_R16G16B16A16_UINT                             = 95, | 
|  | VK_FORMAT_R16G16B16A16_SINT                             = 96, | 
|  | VK_FORMAT_R16G16B16A16_SFLOAT                           = 97, | 
|  | VK_FORMAT_R32_UINT                                      = 98, | 
|  | VK_FORMAT_R32_SINT                                      = 99, | 
|  | VK_FORMAT_R32_SFLOAT                                    = 100, | 
|  | VK_FORMAT_R32G32_UINT                                   = 101, | 
|  | VK_FORMAT_R32G32_SINT                                   = 102, | 
|  | VK_FORMAT_R32G32_SFLOAT                                 = 103, | 
|  | VK_FORMAT_R32G32B32_UINT                                = 104, | 
|  | VK_FORMAT_R32G32B32_SINT                                = 105, | 
|  | VK_FORMAT_R32G32B32_SFLOAT                              = 106, | 
|  | VK_FORMAT_R32G32B32A32_UINT                             = 107, | 
|  | VK_FORMAT_R32G32B32A32_SINT                             = 108, | 
|  | VK_FORMAT_R32G32B32A32_SFLOAT                           = 109, | 
|  | VK_FORMAT_R64_UINT                                      = 110, | 
|  | VK_FORMAT_R64_SINT                                      = 111, | 
|  | VK_FORMAT_R64_SFLOAT                                    = 112, | 
|  | VK_FORMAT_R64G64_UINT                                   = 113, | 
|  | VK_FORMAT_R64G64_SINT                                   = 114, | 
|  | VK_FORMAT_R64G64_SFLOAT                                 = 115, | 
|  | VK_FORMAT_R64G64B64_UINT                                = 116, | 
|  | VK_FORMAT_R64G64B64_SINT                                = 117, | 
|  | VK_FORMAT_R64G64B64_SFLOAT                              = 118, | 
|  | VK_FORMAT_R64G64B64A64_UINT                             = 119, | 
|  | VK_FORMAT_R64G64B64A64_SINT                             = 120, | 
|  | VK_FORMAT_R64G64B64A64_SFLOAT                           = 121, | 
|  | VK_FORMAT_B10G11R11_UFLOAT_PACK32                       = 122, | 
|  | VK_FORMAT_E5B9G9R9_UFLOAT_PACK32                        = 123, | 
|  | VK_FORMAT_D16_UNORM                                     = 124, | 
|  | VK_FORMAT_X8_D24_UNORM_PACK32                           = 125, | 
|  | VK_FORMAT_D32_SFLOAT                                    = 126, | 
|  | VK_FORMAT_S8_UINT                                       = 127, | 
|  | VK_FORMAT_D16_UNORM_S8_UINT                             = 128, | 
|  | VK_FORMAT_D24_UNORM_S8_UINT                             = 129, | 
|  | VK_FORMAT_D32_SFLOAT_S8_UINT                            = 130, | 
|  | VK_FORMAT_BC1_RGB_UNORM_BLOCK                           = 131, | 
|  | VK_FORMAT_BC1_RGB_SRGB_BLOCK                            = 132, | 
|  | VK_FORMAT_BC1_RGBA_UNORM_BLOCK                          = 133, | 
|  | VK_FORMAT_BC1_RGBA_SRGB_BLOCK                           = 134, | 
|  | VK_FORMAT_BC2_UNORM_BLOCK                               = 135, | 
|  | VK_FORMAT_BC2_SRGB_BLOCK                                = 136, | 
|  | VK_FORMAT_BC3_UNORM_BLOCK                               = 137, | 
|  | VK_FORMAT_BC3_SRGB_BLOCK                                = 138, | 
|  | VK_FORMAT_BC4_UNORM_BLOCK                               = 139, | 
|  | VK_FORMAT_BC4_SNORM_BLOCK                               = 140, | 
|  | VK_FORMAT_BC5_UNORM_BLOCK                               = 141, | 
|  | VK_FORMAT_BC5_SNORM_BLOCK                               = 142, | 
|  | VK_FORMAT_BC6H_UFLOAT_BLOCK                             = 143, | 
|  | VK_FORMAT_BC6H_SFLOAT_BLOCK                             = 144, | 
|  | VK_FORMAT_BC7_UNORM_BLOCK                               = 145, | 
|  | VK_FORMAT_BC7_SRGB_BLOCK                                = 146, | 
|  | VK_FORMAT_ETC2_R8G8B8_UNORM_BLOCK                       = 147, | 
|  | VK_FORMAT_ETC2_R8G8B8_SRGB_BLOCK                        = 148, | 
|  | VK_FORMAT_ETC2_R8G8B8A1_UNORM_BLOCK                     = 149, | 
|  | VK_FORMAT_ETC2_R8G8B8A1_SRGB_BLOCK                      = 150, | 
|  | VK_FORMAT_ETC2_R8G8B8A8_UNORM_BLOCK                     = 151, | 
|  | VK_FORMAT_ETC2_R8G8B8A8_SRGB_BLOCK                      = 152, | 
|  | VK_FORMAT_EAC_R11_UNORM_BLOCK                           = 153, | 
|  | VK_FORMAT_EAC_R11_SNORM_BLOCK                           = 154, | 
|  | VK_FORMAT_EAC_R11G11_UNORM_BLOCK                        = 155, | 
|  | VK_FORMAT_EAC_R11G11_SNORM_BLOCK                        = 156, | 
|  | VK_FORMAT_ASTC_4x4_UNORM_BLOCK                          = 157, | 
|  | VK_FORMAT_ASTC_4x4_SRGB_BLOCK                           = 158, | 
|  | VK_FORMAT_ASTC_5x4_UNORM_BLOCK                          = 159, | 
|  | VK_FORMAT_ASTC_5x4_SRGB_BLOCK                           = 160, | 
|  | VK_FORMAT_ASTC_5x5_UNORM_BLOCK                          = 161, | 
|  | VK_FORMAT_ASTC_5x5_SRGB_BLOCK                           = 162, | 
|  | VK_FORMAT_ASTC_6x5_UNORM_BLOCK                          = 163, | 
|  | VK_FORMAT_ASTC_6x5_SRGB_BLOCK                           = 164, | 
|  | VK_FORMAT_ASTC_6x6_UNORM_BLOCK                          = 165, | 
|  | VK_FORMAT_ASTC_6x6_SRGB_BLOCK                           = 166, | 
|  | VK_FORMAT_ASTC_8x5_UNORM_BLOCK                          = 167, | 
|  | VK_FORMAT_ASTC_8x5_SRGB_BLOCK                           = 168, | 
|  | VK_FORMAT_ASTC_8x6_UNORM_BLOCK                          = 169, | 
|  | VK_FORMAT_ASTC_8x6_SRGB_BLOCK                           = 170, | 
|  | VK_FORMAT_ASTC_8x8_UNORM_BLOCK                          = 171, | 
|  | VK_FORMAT_ASTC_8x8_SRGB_BLOCK                           = 172, | 
|  | VK_FORMAT_ASTC_10x5_UNORM_BLOCK                         = 173, | 
|  | VK_FORMAT_ASTC_10x5_SRGB_BLOCK                          = 174, | 
|  | VK_FORMAT_ASTC_10x6_UNORM_BLOCK                         = 175, | 
|  | VK_FORMAT_ASTC_10x6_SRGB_BLOCK                          = 176, | 
|  | VK_FORMAT_ASTC_10x8_UNORM_BLOCK                         = 177, | 
|  | VK_FORMAT_ASTC_10x8_SRGB_BLOCK                          = 178, | 
|  | VK_FORMAT_ASTC_10x10_UNORM_BLOCK                        = 179, | 
|  | VK_FORMAT_ASTC_10x10_SRGB_BLOCK                         = 180, | 
|  | VK_FORMAT_ASTC_12x10_UNORM_BLOCK                        = 181, | 
|  | VK_FORMAT_ASTC_12x10_SRGB_BLOCK                         = 182, | 
|  | VK_FORMAT_ASTC_12x12_UNORM_BLOCK                        = 183, | 
|  | VK_FORMAT_ASTC_12x12_SRGB_BLOCK                         = 184, | 
|  |  | 
|  | //@vulkan1_1 | 
|  | VK_FORMAT_G8B8G8R8_422_UNORM                            = 1000156000, | 
|  | VK_FORMAT_B8G8R8G8_422_UNORM                            = 1000156001, | 
|  | VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM                     = 1000156002, | 
|  | VK_FORMAT_G8_B8R8_2PLANE_420_UNORM                      = 1000156003, | 
|  | VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM                     = 1000156004, | 
|  | VK_FORMAT_G8_B8R8_2PLANE_422_UNORM                      = 1000156005, | 
|  | VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM                     = 1000156006, | 
|  | VK_FORMAT_R10X6_UNORM_PACK16                            = 1000156007, | 
|  | VK_FORMAT_R10X6G10X6_UNORM_2PACK16                      = 1000156008, | 
|  | VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16            = 1000156009, | 
|  | VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16        = 1000156010, | 
|  | VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16        = 1000156011, | 
|  | VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16    = 1000156012, | 
|  | VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16     = 1000156013, | 
|  | VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16    = 1000156014, | 
|  | VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16     = 1000156015, | 
|  | VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16    = 1000156016, | 
|  | VK_FORMAT_R12X4_UNORM_PACK16                            = 1000156017, | 
|  | VK_FORMAT_R12X4G12X4_UNORM_2PACK16                      = 1000156018, | 
|  | VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16            = 1000156019, | 
|  | VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16        = 1000156020, | 
|  | VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16        = 1000156021, | 
|  | VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16    = 1000156022, | 
|  | VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16     = 1000156023, | 
|  | VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16    = 1000156024, | 
|  | VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16     = 1000156025, | 
|  | VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16    = 1000156026, | 
|  | VK_FORMAT_G16B16G16R16_422_UNORM                        = 1000156027, | 
|  | VK_FORMAT_B16G16R16G16_422_UNORM                        = 1000156028, | 
|  | VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM                  = 1000156029, | 
|  | VK_FORMAT_G16_B16R16_2PLANE_420_UNORM                   = 1000156030, | 
|  | VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM                  = 1000156031, | 
|  | VK_FORMAT_G16_B16R16_2PLANE_422_UNORM                   = 1000156032, | 
|  | VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM                  = 1000156033, | 
|  |  | 
|  | //@extension("VK_IMG_format_pvrtc") // 28 | 
|  | VK_FORMAT_PVRTC1_2BPP_UNORM_BLOCK_IMG                   = 1000054000, | 
|  | VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG                   = 1000054001, | 
|  | VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG                   = 1000054002, | 
|  | VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG                   = 1000054003, | 
|  | VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG                    = 1000054004, | 
|  | VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG                    = 1000054005, | 
|  | VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG                    = 1000054006, | 
|  | VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG                    = 1000054007, | 
|  |  | 
|  | //@extension("VK_KHR_sampler_ycbcr_conversion") // 157 | 
|  | VK_FORMAT_G8B8G8R8_422_UNORM_KHR                            = 1000156000, | 
|  | VK_FORMAT_B8G8R8G8_422_UNORM_KHR                            = 1000156001, | 
|  | VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR                     = 1000156002, | 
|  | VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR                      = 1000156003, | 
|  | VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR                     = 1000156004, | 
|  | VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR                      = 1000156005, | 
|  | VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR                     = 1000156006, | 
|  | VK_FORMAT_R10X6_UNORM_PACK16_KHR                            = 1000156007, | 
|  | VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR                      = 1000156008, | 
|  | VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR            = 1000156009, | 
|  | VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR        = 1000156010, | 
|  | VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR        = 1000156011, | 
|  | VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR    = 1000156012, | 
|  | VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR     = 1000156013, | 
|  | VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR    = 1000156014, | 
|  | VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR     = 1000156015, | 
|  | VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR    = 1000156016, | 
|  | VK_FORMAT_R12X4_UNORM_PACK16_KHR                            = 1000156017, | 
|  | VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR                      = 1000156018, | 
|  | VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR            = 1000156019, | 
|  | VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR        = 1000156020, | 
|  | VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR        = 1000156021, | 
|  | VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR    = 1000156022, | 
|  | VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR     = 1000156023, | 
|  | VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR    = 1000156024, | 
|  | VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR     = 1000156025, | 
|  | VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR    = 1000156026, | 
|  | VK_FORMAT_G16B16G16R16_422_UNORM_KHR                        = 1000156027, | 
|  | VK_FORMAT_B16G16R16G16_422_UNORM_KHR                        = 1000156028, | 
|  | VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR                  = 1000156029, | 
|  | VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR                   = 1000156030, | 
|  | VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR                  = 1000156031, | 
|  | VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR                   = 1000156032, | 
|  | VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR                  = 1000156033, | 
|  | } | 
|  |  | 
|  | /// Structure type enumerant | 
|  | enum VkStructureType { | 
|  | VK_STRUCTURE_TYPE_APPLICATION_INFO                          = 0, | 
|  | VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO                      = 1, | 
|  | VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO                  = 2, | 
|  | VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO                        = 3, | 
|  | VK_STRUCTURE_TYPE_SUBMIT_INFO                               = 4, | 
|  | VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO                      = 5, | 
|  | VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE                       = 6, | 
|  | VK_STRUCTURE_TYPE_BIND_SPARSE_INFO                          = 7, | 
|  | VK_STRUCTURE_TYPE_FENCE_CREATE_INFO                         = 8, | 
|  | VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO                     = 9, | 
|  | VK_STRUCTURE_TYPE_EVENT_CREATE_INFO                         = 10, | 
|  | VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO                    = 11, | 
|  | VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO                        = 12, | 
|  | VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO                   = 13, | 
|  | VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO                         = 14, | 
|  | VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO                    = 15, | 
|  | VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO                 = 16, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO                = 17, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO         = 18, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO   = 19, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO = 20, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO   = 21, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO       = 22, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO  = 23, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO    = 24, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO  = 25, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO    = 26, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO        = 27, | 
|  | VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO             = 28, | 
|  | VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO              = 29, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO               = 30, | 
|  | VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO                       = 31, | 
|  | VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO         = 32, | 
|  | VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO               = 33, | 
|  | VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO              = 34, | 
|  | VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET                      = 35, | 
|  | VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET                       = 36, | 
|  | VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO                   = 37, | 
|  | VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO                   = 38, | 
|  | VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO                  = 39, | 
|  | VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO              = 40, | 
|  | VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO           = 41, | 
|  | VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO                 = 42, | 
|  | VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO                    = 43, | 
|  | VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER                     = 44, | 
|  | VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER                      = 45, | 
|  | VK_STRUCTURE_TYPE_MEMORY_BARRIER                            = 46, | 
|  | VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO               = 47, | 
|  | VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO                 = 48, | 
|  |  | 
|  | //@vulkan1_1 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES       = 1000094000, | 
|  | VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO                   = 1000157000, | 
|  | VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO                    = 1000157001, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES    = 1000083000, | 
|  | VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS             = 1000127000, | 
|  | VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO            = 1000127001, | 
|  | VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO                = 1000060000, | 
|  | VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO       = 1000060003, | 
|  | VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO    = 1000060004, | 
|  | VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO                  = 1000060005, | 
|  | VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO             = 1000060006, | 
|  | VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO      = 1000060013, | 
|  | VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO       = 1000060014, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES          = 1000070000, | 
|  | VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO           = 1000070001, | 
|  | VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2         = 1000146000, | 
|  | VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2          = 1000146001, | 
|  | VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2   = 1000146002, | 
|  | VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2                     = 1000146003, | 
|  | VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2        = 1000146004, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2                = 1000059000, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2              = 1000059001, | 
|  | VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2                       = 1000059002, | 
|  | VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2                 = 1000059003, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2       = 1000059004, | 
|  | VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2                 = 1000059005, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2       = 1000059006, | 
|  | VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2          = 1000059007, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2            = 1000059008, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES             = 1000117000, | 
|  | VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO       = 1000117001, | 
|  | VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO                          = 1000117002, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003, | 
|  | VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO                 = 1000053000, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES                = 1000053001, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES              = 1000053002, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES         = 1000120000, | 
|  | VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO                             = 1000145000, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES         = 1000145001, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES       = 1000145002, | 
|  | VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2                               = 1000145003, | 
|  | VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO              = 1000156000, | 
|  | VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO                     = 1000156001, | 
|  | VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO                      = 1000156002, | 
|  | VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO              = 1000156003, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004, | 
|  | VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES  = 1000156005, | 
|  | VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO            = 1000085000, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO        = 1000071000, | 
|  | VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES                  = 1000071001, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO              = 1000071002, | 
|  | VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES                        = 1000071003, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES                     = 1000071004, | 
|  | VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO                = 1000072000, | 
|  | VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO                 = 1000072001, | 
|  | VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO                       = 1000072002, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO               = 1000112000, | 
|  | VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES                         = 1000112001, | 
|  | VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO                          = 1000113000, | 
|  | VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO                      = 1000077000, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO           = 1000076000, | 
|  | VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES                     = 1000076001, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES          = 1000168000, | 
|  | VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT                     = 1000168001, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES    = 1000063000, | 
|  | VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR             = 1000060007, | 
|  |  | 
|  | //@extension("VK_KHR_swapchain") // 2 | 
|  | VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR                 = 1000001000, | 
|  | VK_STRUCTURE_TYPE_PRESENT_INFO_KHR                          = 1000001001, | 
|  | // added as interaction from VK_KHR_device_group / VK 1.1 | 
|  | VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR           = 1000060008, | 
|  | VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR      = 1000060009, | 
|  | VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR               = 1000060010, | 
|  | VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR             = 1000060011, | 
|  | VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR    = 1000060012, | 
|  |  | 
|  | //@extension("VK_KHR_display") // 3 | 
|  | VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR              = 1000002000, | 
|  | VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR           = 1000002001, | 
|  |  | 
|  | //@extension("VK_KHR_display_swapchain") // 4 | 
|  | VK_STRUCTURE_TYPE_DISPLAY_DISPLAY_PRESENT_INFO_KHR          = 1000003000, | 
|  |  | 
|  | //@extension("VK_KHR_xlib_surface") // 5 | 
|  | VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR              = 1000004000, | 
|  |  | 
|  | //@extension("VK_KHR_xcb_surface") // 6 | 
|  | VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR               = 1000005000, | 
|  |  | 
|  | //@extension("VK_KHR_wayland_surface") // 7 | 
|  | VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR           = 1000006000, | 
|  |  | 
|  | //@extension("VK_KHR_android_surface") // 9 | 
|  | VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR           = 1000008000, | 
|  |  | 
|  | //@extension("VK_KHR_win32_surface") // 10 | 
|  | VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR             = 1000009000, | 
|  |  | 
|  | //@extension("VK_ANDROID_native_buffer") // 11 | 
|  | VK_STRUCTURE_TYPE_NATIVE_BUFFER_ANDROID                     = 1000010000, | 
|  | VK_STRUCTURE_TYPE_SWAPCHAIN_IMAGE_CREATE_INFO_ANDROID       = 1000010001, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRESENTATION_PROPERTIES_ANDROID = 1000010002, | 
|  |  | 
|  | //@extension("VK_EXT_debug_report") // 12 | 
|  | VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT     = 1000011000, | 
|  |  | 
|  | //@extension("VK_AMD_rasterization_order") // 19 | 
|  | VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000, | 
|  |  | 
|  | //@extension("VK_EXT_debug_marker") // 23 | 
|  | VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT         = 1000022000, | 
|  | VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT          = 1000022001, | 
|  | VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT              = 1000022002, | 
|  |  | 
|  | //@extension("VK_NV_dedicated_allocation") // 27 | 
|  | VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000, | 
|  | VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001, | 
|  | VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002, | 
|  |  | 
|  | //@extension("VK_EXT_transform_feedback") // 29 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT       = 1000028000, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT     = 1000028001, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT   = 1000028002, | 
|  |  | 
|  | //@extension("VK_AMD_texture_gather_bias_lod") // 42 | 
|  | VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD  = 1000041000, | 
|  |  | 
|  | //@extension("VK_NV_corner_sampled_image") // 51 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV  = 1000050000, | 
|  |  | 
|  | //@extension("VK_KHR_multiview") // 54 | 
|  | VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR     = 1000053000, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR    = 1000053001, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR  = 1000053002, | 
|  |  | 
|  | //@extension("VK_NV_external_memory") // 57 | 
|  | VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV      = 1000056000, | 
|  | VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV            = 1000056001, | 
|  |  | 
|  | //@extension("VK_NV_external_memory_win32") // 58 | 
|  | VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV        = 1000057000, | 
|  | VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV        = 1000057001, | 
|  |  | 
|  | //@extension("VK_NV_win32_keyed_mutex") // 59 | 
|  | VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000, | 
|  |  | 
|  | //@extension("VK_KHR_get_physical_device_properties2") // 60 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR            = 1000059000, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR          = 1000059001, | 
|  | VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR                   = 1000059002, | 
|  | VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR             = 1000059003, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR   = 1000059004, | 
|  | VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR             = 1000059005, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR   = 1000059006, | 
|  | VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR      = 1000059007, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR = 1000059008, | 
|  |  | 
|  | //@extension("VK_KHR_device_group") // 61 | 
|  | VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR            = 1000060000, | 
|  | VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR   = 1000060003, | 
|  | VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR = 1000060004, | 
|  | VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR              = 1000060005, | 
|  | VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR         = 1000060006, | 
|  | VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR     = 1000060007, | 
|  | // tokens 08-12 are listed with VK_KHR_swapchain | 
|  | VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR  = 1000060013, | 
|  | VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR   = 1000060014, | 
|  |  | 
|  | //@extension("VK_EXT_validation_flags") // 62 | 
|  | VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT                      = 1000061000, | 
|  |  | 
|  | //@extension("VK_NN_vi_surface") // 63 | 
|  | VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN                 = 1000062000, | 
|  |  | 
|  | //@extension("VK_EXT_astc_decode_mode") // 68 | 
|  | VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT           = 1000067000, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT  = 1000067001, | 
|  |  | 
|  | //@extension("VK_KHR_device_group_creation") // 71 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR      = 1000070000, | 
|  | VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR       = 1000070001, | 
|  |  | 
|  | //@extension("VK_KHR_external_memory_capabilities") // 72 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR    = 1000071000, | 
|  | VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR      = 1000071001, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR  = 1000071002, | 
|  | VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR            = 1000071003, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR         = 1000071004, | 
|  |  | 
|  | //@extension("VK_KHR_external_memory") // 73 | 
|  | VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR    = 1000072000, | 
|  | VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR     = 1000072001, | 
|  | VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR           = 1000072002, | 
|  |  | 
|  | //@extension("VK_KHR_external_memory_win32") // 74 | 
|  | VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR       = 1000073000, | 
|  | VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR       = 1000073001, | 
|  | VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR        = 1000073002, | 
|  |  | 
|  | //@extension("VK_KHR_external_memory_fd") // 75 | 
|  | VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR                 = 1000074000, | 
|  | VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR                  = 1000074001, | 
|  |  | 
|  | //@extension("VK_KHR_win32_keyed_mutex") // 76 | 
|  | VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR    = 1000075000, | 
|  |  | 
|  | //@extension("VK_KHR_external_semaphore_capabilities") // 77 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR   = 1000076000, | 
|  | VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR         = 1000076001, | 
|  |  | 
|  | //@extension("VK_KHR_external_semaphore") // 78 | 
|  | VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR          = 1000077000, | 
|  |  | 
|  | //@extension("VK_KHR_external_semaphore_win32") // 79 | 
|  | VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR    = 1000078000, | 
|  | VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR    = 1000078001, | 
|  | VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR               = 1000078002, | 
|  |  | 
|  | //@extension("VK_KHR_external_semaphore_fd") // 80 | 
|  | VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR              = 1000079000, | 
|  | VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR                 = 1000079001, | 
|  |  | 
|  | //@extension("VK_KHR_push_descriptor") // 81 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR    = 1000080000, | 
|  |  | 
|  | //@extension("VK_KHR_16bit_storage") // 84 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR    = 1000083000, | 
|  |  | 
|  | //@extension("VK_KHR_incremental_present") // 85 | 
|  | VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR                       = 1000084000, | 
|  |  | 
|  | //@extension("VK_EXT_conditional_rendering") // 82 | 
|  | VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT        = 1000081001, | 
|  | VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT                      = 1000081002, | 
|  |  | 
|  | //@extension("VK_KHR_shader_float16_int8") // 83 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR     = 1000082000, | 
|  |  | 
|  | //@extension("VK_KHR_descriptor_update_template") // 86 | 
|  | VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR    = 1000085000, | 
|  |  | 
|  | //@extension("VK_NVX_device_generated_commands") // 87 | 
|  | VK_STRUCTURE_TYPE_OBJECT_TABLE_CREATE_INFO_NVX              = 1000086000, | 
|  | VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NVX  = 1000086001, | 
|  | VK_STRUCTURE_TYPE_CMD_PROCESS_COMMANDS_INFO_NVX             = 1000086002, | 
|  | VK_STRUCTURE_TYPE_CMD_RESERVE_SPACE_FOR_COMMANDS_INFO_NVX   = 1000086003, | 
|  | VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_LIMITS_NVX      = 1000086004, | 
|  | VK_STRUCTURE_TYPE_DEVICE_GENERATED_COMMANDS_FEATURES_NVX    = 1000086005, | 
|  |  | 
|  | //@extension("VK_NV_clip_space_w_scaling") // 88 | 
|  | VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV  = 1000087000, | 
|  |  | 
|  | //@extension("VK_EXT_display_surface_counter") // 91 | 
|  | VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT                = 1000090000, | 
|  |  | 
|  | //@extension("VK_EXT_display_control") // 92 | 
|  | VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT                    = 1000091000, | 
|  | VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT                     = 1000091001, | 
|  | VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT                    = 1000091002, | 
|  | VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT         = 1000091003, | 
|  |  | 
|  | //@extension("VK_GOOGLE_display_timing") // 93 | 
|  | VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE                 = 1000092000, | 
|  |  | 
|  | //@extension("VK_NVX_multiview_per_view_attributes") // 98 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX  = 1000097000, | 
|  |  | 
|  | //@extension("VK_NV_viewport_swizzle") // 99 | 
|  | VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV    = 1000098000, | 
|  |  | 
|  | //@extension("VK_EXT_discard_rectangles") // 100 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT  = 1000099000, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT  = 1000099001, | 
|  |  | 
|  | //@extension("VK_EXT_conservative_rasterization") // 102 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001, | 
|  |  | 
|  | //@extension("VK_KHR_create_renderpass2") // 110 | 
|  | VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR              = 1000109000, | 
|  | VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR                = 1000109001, | 
|  | VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR                 = 1000109002, | 
|  | VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR                  = 1000109003, | 
|  | VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR             = 1000109004, | 
|  | VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR                    = 1000109005, | 
|  | VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR                      = 1000109006, | 
|  |  | 
|  | //@extension("VK_EXT_hdr_metadata") // 106 | 
|  | VK_STRUCTURE_TYPE_HDR_METADATA_EXT                          = 1000105000, | 
|  |  | 
|  | //@extension("VK_KHR_shared_presentable_image") // 112 | 
|  | VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR   = 1000111000, | 
|  |  | 
|  | //@extension("VK_KHR_external_fence_capabilities") // 113 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR   = 1000112000, | 
|  | VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR             = 1000112001, | 
|  |  | 
|  | //@extension("VK_KHR_external_fence") // 114 | 
|  | VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR              = 1000113000, | 
|  |  | 
|  | //@extension("VK_KHR_external_fence_win32") // 115 | 
|  | VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR        = 1000114000, | 
|  | VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR        = 1000114001, | 
|  | VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR           = 1000114002, | 
|  |  | 
|  | //@extension("VK_KHR_external_fence_fd") // 117 | 
|  | VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR                  = 1000115000, | 
|  | VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR                     = 1000115001, | 
|  |  | 
|  | //@extension("VK_KHR_maintenance2") // 118 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR             = 1000117000, | 
|  | VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR       = 1000117001, | 
|  | VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR                          = 1000117002, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR = 1000117003, | 
|  |  | 
|  | //@extension("VK_KHR_get_surface_capabilities2") // 120 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR        = 1000119000, | 
|  | VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR                = 1000119001, | 
|  | VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR                      = 1000119002, | 
|  |  | 
|  | //@extension("VK_KHR_variable_pointers") // 121 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR = 1000120000, | 
|  |  | 
|  | //@extension("VK_KHR_display_properties2") // 122 | 
|  | VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR                  = 1000121000, | 
|  | VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR            = 1000121001, | 
|  | VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR             = 1000121002, | 
|  | VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR                  = 1000121003, | 
|  | VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR          = 1000121004, | 
|  |  | 
|  | //@extension("VK_MVK_ios_surface") // 123 | 
|  | VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK               = 1000122000, | 
|  |  | 
|  | //@extension("VK_MVK_macos_surface") // 124 | 
|  | VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK             = 1000123000, | 
|  |  | 
|  | //@extension("VK_KHR_dedicated_allocation") // 128 | 
|  | VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR         = 1000127000, | 
|  | VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR        = 1000127001, | 
|  |  | 
|  | //@extension("VK_EXT_debug_utils") // 129 | 
|  | VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT          = 1000128000, | 
|  | VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT           = 1000128001, | 
|  | VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT                     = 1000128002, | 
|  | VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT   = 1000128003, | 
|  | VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT     = 1000128004, | 
|  |  | 
|  | //@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130 | 
|  | VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID             = 1000129000, | 
|  | VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID        = 1000129001, | 
|  | VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002, | 
|  | VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID       = 1000129003, | 
|  | VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID   = 1000129004, | 
|  | VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID                           = 1000129005, | 
|  |  | 
|  | //@extension("VK_EXT_sampler_filter_minmax") // 131 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT = 1000130000, | 
|  | VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT = 1000130001, | 
|  |  | 
|  | //@extension("VK_EXT_inline_uniform_block") // 139 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT     = 1000138000, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT   = 1000138001, | 
|  | VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT         = 1000138002, | 
|  | VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT  = 1000138003, | 
|  |  | 
|  | //@extension("VK_EXT_sample_locations") // 144 | 
|  | VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT                         = 1000143000, | 
|  | VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT       = 1000143001, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT   = 1000143002, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT   = 1000143003, | 
|  | VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT                        = 1000143004, | 
|  |  | 
|  | //@extension("VK_KHR_get_memory_requirements2") // 147 | 
|  | VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR         = 1000146000, | 
|  | VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR          = 1000146001, | 
|  | VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR   = 1000146002, | 
|  | VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR                     = 1000146003, | 
|  | VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR        = 1000146004, | 
|  |  | 
|  | //@extension("VK_KHR_image_format_list") // 148 | 
|  | VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR             = 1000147000, | 
|  |  | 
|  | //@extension("VK_EXT_blend_operation_advanced") // 149 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002, | 
|  |  | 
|  | //@extension("VK_NV_fragment_coverage_to_color") // 150 | 
|  | VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000, | 
|  |  | 
|  | //@extension("VK_NV_framebuffer_mixed_samples") // 153 | 
|  | VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000, | 
|  |  | 
|  | //@extension("VK_KHR_sampler_ycbcr_conversion") // 157 | 
|  | VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR              = 1000156000, | 
|  | VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR                     = 1000156001, | 
|  | VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR                      = 1000156002, | 
|  | VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR              = 1000156003, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR = 1000156004, | 
|  | VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR  = 1000156005, | 
|  |  | 
|  | //@extension("VK_EXT_image_drm_format_modifier") // 159 | 
|  | VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT               = 1000158000, | 
|  | VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT                    = 1000158001, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT    = 1000158002, | 
|  | VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT        = 1000158003, | 
|  | VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT    = 1000158004, | 
|  | VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT              = 1000158005, | 
|  |  | 
|  | //@extension("VK_KHR_bind_memory2") // 158 | 
|  | VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR                       = 1000157000, | 
|  | VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR                        = 1000157001, | 
|  |  | 
|  | //@extension("VK_EXT_validation_cache") // 161 | 
|  | VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT                  = 1000160000, | 
|  | VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT    = 1000160001, | 
|  |  | 
|  | //@extension("VK_EXT_descriptor_indexing") // 162 | 
|  | VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT           = 1000161000, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT              = 1000161001, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT            = 1000161002, | 
|  | VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT    = 1000161003, | 
|  | VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT   = 1000161004, | 
|  |  | 
|  | //@extension("VK_NV_shading_rate_image") // 165 | 
|  | VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV = 1000164000, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV = 1000164001, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV = 1000164002, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV = 1000164005, | 
|  |  | 
|  | //@extension("VK_NV_ray_tracing") // 166 | 
|  | VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_NV                   = 1000165000, | 
|  | VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_NV                 = 1000165001, | 
|  | VK_STRUCTURE_TYPE_GEOMETRY_NV                                           = 1000165003, | 
|  | VK_STRUCTURE_TYPE_GEOMETRY_TRIANGLES_NV                                 = 1000165004, | 
|  | VK_STRUCTURE_TYPE_GEOMETRY_AABB_NV                                      = 1000165005, | 
|  | VK_STRUCTURE_TYPE_BIND_ACCELERATION_STRUCTURE_MEMORY_INFO_NV            = 1000165006, | 
|  | VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_NV        = 1000165007, | 
|  | VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_INFO_NV    = 1000165008, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PROPERTIES_NV             = 1000165009, | 
|  | VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_NV               = 1000165011, | 
|  | VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_INFO_NV                        = 1000165012, | 
|  |  | 
|  | //@extension("VK_NV_representative_fragment_test") // 167 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_REPRESENTATIVE_FRAGMENT_TEST_FEATURES_NV = 1000166000, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_REPRESENTATIVE_FRAGMENT_TEST_STATE_CREATE_INFO_NV = 1000166001, | 
|  |  | 
|  | //@extension("VK_KHR_maintenance3") // 169 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR      = 1000168000, | 
|  | VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR                 = 1000168001, | 
|  |  | 
|  | //@extension("VK_EXT_global_priority") // 175 | 
|  | VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT      = 1000174000, | 
|  |  | 
|  | //@extension("VK_KHR_8bit_storage") // 178 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR         = 1000177000, | 
|  |  | 
|  | //@extension("VK_EXT_external_memory_host") // 179 | 
|  | VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT                   = 1000178000, | 
|  | VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT                    = 1000178001, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT   = 1000178002, | 
|  |  | 
|  | //@extension("VK_KHR_shader_atomic_int64") // 181 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR  = 1000180000, | 
|  |  | 
|  | //@extension("VK_EXT_calibrated_timestamps") // 185 | 
|  | VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT                     = 1000184000, | 
|  |  | 
|  | //@extension("VK_KHR_driver_properties") // 197 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR             = 1000196000, | 
|  |  | 
|  | //@extension("VK_KHR_shader_float_controls") // 198 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR     = 1000197000, | 
|  |  | 
|  | //@extension("VK_AMD_shader_core_properties") // 186 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD        = 1000185000, | 
|  |  | 
|  | //@extension("VK_AMD_memory_overallocation_behavior") // 190 | 
|  | VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD      = 1000189000, | 
|  |  | 
|  | //@extension("VK_EXT_vertex_attribute_divisor") // 191 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT   = 1000190000, | 
|  | VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT       = 1000190001, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT     = 1000190002, | 
|  |  | 
|  | //@extension("VK_NV_device_diagnostic_checkpoints") // 207 | 
|  | VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV                        = 1000206000, | 
|  | VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV     = 1000206001, | 
|  |  | 
|  | //@extension("VK_KHR_vulkan_memory_model") // 212 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR = 1000211000, | 
|  |  | 
|  | //@extension("VK_EXT_pci_bus_info") // 213 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT   = 1000212000, | 
|  |  | 
|  | //@extension("VK_FUCHSIA_imagepipe_surface") // 215 | 
|  | VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA     = 1000214000, | 
|  |  | 
|  | //@extension("VK_EXT_fragment_density_map") // 219 | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT     = 1000218000, | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT   = 1000218001, | 
|  | VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT      = 1000218002, | 
|  |  | 
|  | //@extension("VK_EXT_scalar_block_layout") | 
|  | VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT  = 1000221000, | 
|  |  | 
|  | //@extension("VK_EXT_separate_stencil_usage") // 247 | 
|  | VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT       = 1000246000, | 
|  | } | 
|  |  | 
|  | enum VkSubpassContents { | 
|  | VK_SUBPASS_CONTENTS_INLINE                              = 0x00000000, | 
|  | VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS           = 0x00000001, | 
|  | } | 
|  |  | 
|  | enum VkPipelineCacheHeaderVersion { | 
|  | VK_PIPELINE_CACHE_HEADER_VERSION_ONE                    = 1, | 
|  | } | 
|  |  | 
|  | @lastUnused(-11) | 
|  | /// Error and return codes | 
|  | enum VkResult { | 
|  | // Return codes for successful operation execution (positive values) | 
|  | VK_SUCCESS                                              = 0, | 
|  | VK_NOT_READY                                            = 1, | 
|  | VK_TIMEOUT                                              = 2, | 
|  | VK_EVENT_SET                                            = 3, | 
|  | VK_EVENT_RESET                                          = 4, | 
|  | VK_INCOMPLETE                                           = 5, | 
|  |  | 
|  | //@extension("VK_KHR_swapchain") // 2 | 
|  | VK_SUBOPTIMAL_KHR                                       = 1000001003, | 
|  |  | 
|  | // Error codes (negative values) | 
|  | VK_ERROR_OUT_OF_HOST_MEMORY                             = 0xFFFFFFFF, // -1 | 
|  | VK_ERROR_OUT_OF_DEVICE_MEMORY                           = 0xFFFFFFFE, // -2 | 
|  | VK_ERROR_INITIALIZATION_FAILED                          = 0xFFFFFFFD, // -3 | 
|  | VK_ERROR_DEVICE_LOST                                    = 0xFFFFFFFC, // -4 | 
|  | VK_ERROR_MEMORY_MAP_FAILED                              = 0xFFFFFFFB, // -5 | 
|  | VK_ERROR_LAYER_NOT_PRESENT                              = 0xFFFFFFFA, // -6 | 
|  | VK_ERROR_EXTENSION_NOT_PRESENT                          = 0xFFFFFFF9, // -7 | 
|  | VK_ERROR_FEATURE_NOT_PRESENT                            = 0xFFFFFFF8, // -8 | 
|  | VK_ERROR_INCOMPATIBLE_DRIVER                            = 0xFFFFFFF7, // -9 | 
|  | VK_ERROR_TOO_MANY_OBJECTS                               = 0xFFFFFFF6, // -10 | 
|  | VK_ERROR_FORMAT_NOT_SUPPORTED                           = 0xFFFFFFF5, // -11 | 
|  | VK_ERROR_FRAGMENTED_POOL                                = 0xFFFFFFF4, // -12 | 
|  |  | 
|  | //@vulkan1_1 | 
|  | VK_ERROR_OUT_OF_POOL_MEMORY                             = 0xC4642878, // -1000069000 | 
|  | VK_ERROR_INVALID_EXTERNAL_HANDLE                        = 0xC4641CBD, // -1000072003 | 
|  |  | 
|  | //@extension("VK_KHR_surface") // 1 | 
|  | VK_ERROR_SURFACE_LOST_KHR                               = 0xC4653600, // -1000000000 | 
|  | VK_ERROR_NATIVE_WINDOW_IN_USE_KHR                       = 0xC46535FF, // -1000000001 | 
|  |  | 
|  | //@extension("VK_KHR_swapchain") // 2 | 
|  | VK_ERROR_OUT_OF_DATE_KHR                                = 0xC4653214, // -1000001004 | 
|  |  | 
|  | //@extension("VK_KHR_display_swapchain") // 4 | 
|  | VK_ERROR_INCOMPATIBLE_DISPLAY_KHR                       = 0xC4652A47, // -1000003001 | 
|  |  | 
|  | //@extension("VK_EXT_debug_report") // 12 | 
|  | VK_ERROR_VALIDATION_FAILED_EXT                          = 0xC4650B07, // -1000011001 | 
|  |  | 
|  | //@extension("VK_NV_glsl_shader") // 13 | 
|  | VK_ERROR_INVALID_SHADER_NV                              = 0xC4650720, // -1000012000 | 
|  |  | 
|  | //@extension("VK_KHR_maintenance1") // 70 | 
|  | VK_ERROR_OUT_OF_POOL_MEMORY_KHR                         = 0xC4642878, // -1000069000 | 
|  |  | 
|  | //@extension("VK_KHR_external_memory") // 73 | 
|  | VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR                    = 0xC4641CBD, // -1000072003 | 
|  |  | 
|  | //@extension("VK_EXT_image_drm_format_modifier") // 159 | 
|  | VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT   = 0xC462CCD0, // -1000158000 | 
|  |  | 
|  | //@extension("VK_EXT_descriptor_indexing") // 162 | 
|  | VK_ERROR_FRAGMENTATION_EXT                              = 0xc462c118, // -1000161000 | 
|  |  | 
|  | //@extension("VK_EXT_global_priority") // 175 | 
|  | VK_ERROR_NOT_PERMITTED_EXT                              = 0xC4628E4F, // -1000174001 | 
|  | } | 
|  |  | 
|  | enum VkDynamicState { | 
|  | VK_DYNAMIC_STATE_VIEWPORT                               = 0x00000000, | 
|  | VK_DYNAMIC_STATE_SCISSOR                                = 0x00000001, | 
|  | VK_DYNAMIC_STATE_LINE_WIDTH                             = 0x00000002, | 
|  | VK_DYNAMIC_STATE_DEPTH_BIAS                             = 0x00000003, | 
|  | VK_DYNAMIC_STATE_BLEND_CONSTANTS                        = 0x00000004, | 
|  | VK_DYNAMIC_STATE_DEPTH_BOUNDS                           = 0x00000005, | 
|  | VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK                   = 0x00000006, | 
|  | VK_DYNAMIC_STATE_STENCIL_WRITE_MASK                     = 0x00000007, | 
|  | VK_DYNAMIC_STATE_STENCIL_REFERENCE                      = 0x00000008, | 
|  |  | 
|  | //@extension("VK_NV_clip_space_w_scaling") // 88 | 
|  | VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV                  = 1000087000, | 
|  |  | 
|  | //@extension("VK_EXT_discard_rectangles") // 100 | 
|  | VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT                  = 1000099000, | 
|  |  | 
|  | //@extension("VK_EXT_sample_locations") // 144 | 
|  | VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT                   = 1000143000, | 
|  |  | 
|  | //@extension("VK_NV_shading_rate_image") // 165 | 
|  | VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV       = 1000164004, | 
|  | VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV        = 1000164006, | 
|  |  | 
|  | //@extension("VK_NV_scissor_exclusive") // 206 | 
|  | VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV                   = 1000205001, | 
|  | } | 
|  |  | 
|  | enum VkObjectType { | 
|  | VK_OBJECT_TYPE_UNKNOWN                                  = 0, | 
|  | VK_OBJECT_TYPE_INSTANCE                                 = 1, | 
|  | VK_OBJECT_TYPE_PHYSICAL_DEVICE                          = 2, | 
|  | VK_OBJECT_TYPE_DEVICE                                   = 3, | 
|  | VK_OBJECT_TYPE_QUEUE                                    = 4, | 
|  | VK_OBJECT_TYPE_SEMAPHORE                                = 5, | 
|  | VK_OBJECT_TYPE_COMMAND_BUFFER                           = 6, | 
|  | VK_OBJECT_TYPE_FENCE                                    = 7, | 
|  | VK_OBJECT_TYPE_DEVICE_MEMORY                            = 8, | 
|  | VK_OBJECT_TYPE_BUFFER                                   = 9, | 
|  | VK_OBJECT_TYPE_IMAGE                                    = 10, | 
|  | VK_OBJECT_TYPE_EVENT                                    = 11, | 
|  | VK_OBJECT_TYPE_QUERY_POOL                               = 12, | 
|  | VK_OBJECT_TYPE_BUFFER_VIEW                              = 13, | 
|  | VK_OBJECT_TYPE_IMAGE_VIEW                               = 14, | 
|  | VK_OBJECT_TYPE_SHADER_MODULE                            = 15, | 
|  | VK_OBJECT_TYPE_PIPELINE_CACHE                           = 16, | 
|  | VK_OBJECT_TYPE_PIPELINE_LAYOUT                          = 17, | 
|  | VK_OBJECT_TYPE_RENDER_PASS                              = 18, | 
|  | VK_OBJECT_TYPE_PIPELINE                                 = 19, | 
|  | VK_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT                    = 20, | 
|  | VK_OBJECT_TYPE_SAMPLER                                  = 21, | 
|  | VK_OBJECT_TYPE_DESCRIPTOR_POOL                          = 22, | 
|  | VK_OBJECT_TYPE_DESCRIPTOR_SET                           = 23, | 
|  | VK_OBJECT_TYPE_FRAMEBUFFER                              = 24, | 
|  | VK_OBJECT_TYPE_COMMAND_POOL                             = 25, | 
|  |  | 
|  | //@vulkan1_1 | 
|  | VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION                 = 1000156000, | 
|  | VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE               = 1000085000, | 
|  |  | 
|  | //@extension("VK_KHR_surface") // 1 | 
|  | VK_OBJECT_TYPE_SURFACE_KHR                              = 1000000000, | 
|  |  | 
|  | //@extension("VK_KHR_swapchain") // 2 | 
|  | VK_OBJECT_TYPE_SWAPCHAIN_KHR                            = 1000001000, | 
|  |  | 
|  | //@extension("VK_KHR_display") // 3 | 
|  | VK_OBJECT_TYPE_DISPLAY_KHR                              = 1000002000, | 
|  | VK_OBJECT_TYPE_DISPLAY_MODE_KHR                         = 1000002001, | 
|  |  | 
|  | //@extension("VK_KHR_debug_report") // 12 | 
|  | VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT                = 1000011000, | 
|  |  | 
|  | //@extension("VK_KHR_descriptor_update_template") // 86 | 
|  | VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR           = 1000085000, | 
|  |  | 
|  | //@extension("VK_NVX_device_generated_commands") // 87 | 
|  | VK_OBJECT_TYPE_OBJECT_TABLE_NVX                         = 1000086000, | 
|  | VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX             = 1000086001, | 
|  |  | 
|  | //@extension("VK_EXT_debug_utils") // 129 | 
|  | VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT                = 1000128000, | 
|  |  | 
|  | //@extension("VK_KHR_sampler_ycbcr_conversion") // 157 | 
|  | VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR             = 1000156000, | 
|  |  | 
|  | //@extension("VK_EXT_validation_cache") // 161 | 
|  | VK_OBJECT_TYPE_VALIDATION_CACHE_EXT                     = 1000160000, | 
|  |  | 
|  | //@extension("VK_NV_ray_tracing") // 166 | 
|  | VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV                = 1000165000, | 
|  | } | 
|  |  | 
|  |  | 
|  | //@vulkan1_1 enums | 
|  |  | 
|  | enum VkPointClippingBehavior { | 
|  | VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES              = 0, | 
|  | VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY        = 1, | 
|  | } | 
|  |  | 
|  | enum VkTessellationDomainOrigin { | 
|  | VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT                = 0, | 
|  | VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT                = 1, | 
|  | } | 
|  |  | 
|  | enum VkSamplerYcbcrModelConversion { | 
|  | VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY          = 0, | 
|  | VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY        = 1, | 
|  | VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709             = 2, | 
|  | VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601             = 3, | 
|  | VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020            = 4, | 
|  | } | 
|  |  | 
|  | enum VkSamplerYcbcrRange { | 
|  | VK_SAMPLER_YCBCR_RANGE_ITU_FULL = 0, | 
|  | VK_SAMPLER_YCBCR_RANGE_ITU_NARROW = 1, | 
|  | } | 
|  |  | 
|  | enum VkChromaLocation { | 
|  | VK_CHROMA_LOCATION_COSITED_EVEN = 0, | 
|  | VK_CHROMA_LOCATION_MIDPOINT = 1, | 
|  | } | 
|  |  | 
|  | enum VkDescriptorUpdateTemplateType { | 
|  | VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0, | 
|  | VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1, | 
|  | } | 
|  |  | 
|  | enum VkVendorId { | 
|  | VK_VENDOR_ID_VIV                                        = 0x10001, | 
|  | VK_VENDOR_ID_VSI                                        = 0x10002, | 
|  | VK_VENDOR_ID_KAZAN                                      = 0x10003, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_surface") // 1 | 
|  | enum VkPresentModeKHR { | 
|  | VK_PRESENT_MODE_IMMEDIATE_KHR                           = 0x00000000, | 
|  | VK_PRESENT_MODE_MAILBOX_KHR                             = 0x00000001, | 
|  | VK_PRESENT_MODE_FIFO_KHR                                = 0x00000002, | 
|  | VK_PRESENT_MODE_FIFO_RELAXED_KHR                        = 0x00000003, | 
|  |  | 
|  | //@extension("VK_KHR_shared_presentable_image") // 112 | 
|  | VK_PRESENT_MODE_SHARED_DEMAND_REFRESH_KHR               = 1000111000, | 
|  | VK_PRESENT_MODE_SHARED_CONTINUOUS_REFRESH_KHR           = 1000111001, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_surface") // 1 | 
|  | enum VkColorSpaceKHR { | 
|  | VK_COLOR_SPACE_SRGB_NONLINEAR_KHR                       = 0x00000000, | 
|  |  | 
|  | //@extension("VK_EXT_swapchain_colorspace") // 105 | 
|  | VK_COLOR_SPACE_DISPLAY_P3_NONLINEAR_EXT                 = 1000104001, | 
|  | VK_COLOR_SPACE_EXTENDED_SRGB_LINEAR_EXT                 = 1000104002, | 
|  | VK_COLOR_SPACE_DCI_P3_LINEAR_EXT                        = 1000104003, | 
|  | VK_COLOR_SPACE_DCI_P3_NONLINEAR_EXT                     = 1000104004, | 
|  | VK_COLOR_SPACE_BT709_LINEAR_EXT                         = 1000104005, | 
|  | VK_COLOR_SPACE_BT709_NONLINEAR_EXT                      = 1000104006, | 
|  | VK_COLOR_SPACE_BT2020_LINEAR_EXT                        = 1000104007, | 
|  | VK_COLOR_SPACE_HDR10_ST2084_EXT                         = 1000104008, | 
|  | VK_COLOR_SPACE_DOLBYVISION_EXT                          = 1000104009, | 
|  | VK_COLOR_SPACE_HDR10_HLG_EXT                            = 1000104010, | 
|  | VK_COLOR_SPACE_ADOBERGB_LINEAR_EXT                      = 1000104011, | 
|  | VK_COLOR_SPACE_ADOBERGB_NONLINEAR_EXT                   = 1000104012, | 
|  | VK_COLOR_SPACE_PASS_THROUGH_EXT                         = 1000104013, | 
|  | VK_COLOR_SPACE_EXTENDED_SRGB_NONLINEAR_EXT              = 1000104014, | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_report") // 12 | 
|  | enum VkDebugReportObjectTypeEXT { | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_UNKNOWN_EXT                 = 0, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_INSTANCE_EXT                = 1, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_PHYSICAL_DEVICE_EXT         = 2, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_EXT                  = 3, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_QUEUE_EXT                   = 4, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_SEMAPHORE_EXT               = 5, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_BUFFER_EXT          = 6, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_FENCE_EXT                   = 7, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_DEVICE_MEMORY_EXT           = 8, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT                  = 9, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_EXT                   = 10, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_EVENT_EXT                   = 11, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_QUERY_POOL_EXT              = 12, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_VIEW_EXT             = 13, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_IMAGE_VIEW_EXT              = 14, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_SHADER_MODULE_EXT           = 15, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_CACHE_EXT          = 16, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_LAYOUT_EXT         = 17, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_RENDER_PASS_EXT             = 18, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_PIPELINE_EXT                = 19, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_LAYOUT_EXT   = 20, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_EXT                 = 21, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_POOL_EXT         = 22, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_SET_EXT          = 23, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_FRAMEBUFFER_EXT             = 24, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_COMMAND_POOL_EXT            = 25, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_SURFACE_KHR_EXT             = 26, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_SWAPCHAIN_KHR_EXT           = 27, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT_EXT = 28, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_KHR_EXT             = 29, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_DISPLAY_MODE_KHR_EXT        = 30, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_OBJECT_TABLE_NVX_EXT        = 31, | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NVX_EXT = 32, | 
|  |  | 
|  | //extension("VK_EXT_validation_cache") // 161 | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT_EXT    = 33, | 
|  |  | 
|  | //extension("VK_KHR_descriptor_update_template") // 86 | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT = 1000085000, | 
|  |  | 
|  | //@extension("VK_KHR_sampler_ycbcr_conversion") // 157 | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT = 1000156000, | 
|  |  | 
|  | //@extension("VK_NV_ray_tracing") // 166 | 
|  | VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT   = 1000165000, | 
|  | } | 
|  |  | 
|  | @extension("VK_AMD_rasterization_order") // 19 | 
|  | enum VkRasterizationOrderAMD { | 
|  | VK_RASTERIZATION_ORDER_STRICT_AMD                       = 0, | 
|  | VK_RASTERIZATION_ORDER_RELAXED_AMD                      = 1, | 
|  | } | 
|  |  | 
|  | @extension("VK_AMD_shader_info") // 43 | 
|  | enum VkShaderInfoTypeAMD { | 
|  | VK_SHADER_INFO_TYPE_STATISTICS_AMD                      = 0, | 
|  | VK_SHADER_INFO_TYPE_BINARY_AMD                          = 1, | 
|  | VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD                     = 2, | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_validation_flags") // 62 | 
|  | enum VkValidationCheckEXT { | 
|  | VK_VALIDATION_CHECK_ALL_EXT                             = 0, | 
|  | VK_VALIDATION_CHECK_SHADERS_EXT                         = 1, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_descriptor_update_template") // 86 | 
|  | enum VkDescriptorUpdateTemplateTypeKHR { | 
|  | VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR   = 0, | 
|  | VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1, | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | enum VkIndirectCommandsTokenTypeNVX { | 
|  | VK_INDIRECT_COMMANDS_TOKEN_TYPE_PIPELINE_NVX            = 0, | 
|  | VK_INDIRECT_COMMANDS_TOKEN_TYPE_DESCRIPTOR_SET_NVX      = 1, | 
|  | VK_INDIRECT_COMMANDS_TOKEN_TYPE_INDEX_BUFFER_NVX        = 2, | 
|  | VK_INDIRECT_COMMANDS_TOKEN_TYPE_VERTEX_BUFFER_NVX       = 3, | 
|  | VK_INDIRECT_COMMANDS_TOKEN_TYPE_PUSH_CONSTANT_NVX       = 4, | 
|  | VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_INDEXED_NVX        = 5, | 
|  | VK_INDIRECT_COMMANDS_TOKEN_TYPE_DRAW_NVX                = 6, | 
|  | VK_INDIRECT_COMMANDS_TOKEN_TYPE_DISPATCH_NVX            = 7, | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | enum VkObjectEntryTypeNVX { | 
|  | VK_OBJECT_ENTRY_TYPE_DESCRIPTOR_SET_NVX                 = 0, | 
|  | VK_OBJECT_ENTRY_TYPE_PIPELINE_NVX                       = 1, | 
|  | VK_OBJECT_ENTRY_TYPE_INDEX_BUFFER_NVX                   = 2, | 
|  | VK_OBJECT_ENTRY_TYPE_VERTEX_BUFFER_NVX                  = 3, | 
|  | VK_OBJECT_ENTRY_TYPE_PUSH_CONSTANT_NVX                  = 4, | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_display_control") // 92 | 
|  | enum VkDisplayPowerStateEXT { | 
|  | VK_DISPLAY_POWER_STATE_OFF_EXT                          = 0, | 
|  | VK_DISPLAY_POWER_STATE_SUSPEND_EXT                      = 1, | 
|  | VK_DISPLAY_POWER_STATE_ON_EXT                           = 2, | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_display_control") // 92 | 
|  | enum VkDeviceEventTypeEXT { | 
|  | VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT                = 0, | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_display_control") // 92 | 
|  | enum VkDisplayEventTypeEXT { | 
|  | VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT               = 0, | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_viewport_swizzle") // 99 | 
|  | enum VkViewportCoordinateSwizzleNV { | 
|  | VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_X_NV            = 0, | 
|  | VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_X_NV            = 1, | 
|  | VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Y_NV            = 2, | 
|  | VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Y_NV            = 3, | 
|  | VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_Z_NV            = 4, | 
|  | VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_Z_NV            = 5, | 
|  | VK_VIEWPORT_COORDINATE_SWIZZLE_POSITIVE_W_NV            = 6, | 
|  | VK_VIEWPORT_COORDINATE_SWIZZLE_NEGATIVE_W_NV            = 7, | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_discard_rectangles") // 100 | 
|  | enum VkDiscardRectangleModeEXT { | 
|  | VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT = 0, | 
|  | VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT = 1, | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_conservative_rasterization") // 102 | 
|  | enum VkConservativeRasterizationModeEXT { | 
|  | VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT         = 0, | 
|  | VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT     = 1, | 
|  | VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT    = 2, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_maintenance2") // 118 | 
|  | enum VkPointClippingBehaviorKHR { | 
|  | VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES_KHR          = 0, | 
|  | VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY_KHR    = 1, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_maintenance2") // 118 | 
|  | enum VkTessellationDomainOriginKHR { | 
|  | VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT_KHR            = 0, | 
|  | VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT_KHR            = 1, | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_sampler_filter_minmax") // 131 | 
|  | enum VkSamplerReductionModeEXT { | 
|  | VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT          = 0, | 
|  | VK_SAMPLER_REDUCTION_MODE_MIN_EXT                       = 1, | 
|  | VK_SAMPLER_REDUCTION_MODE_MAX_EXT                       = 2, | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_blend_operation_advanced") // 149 | 
|  | enum VkBlendOverlapEXT { | 
|  | VK_BLEND_OVERLAP_UNCORRELATED_EXT                       = 0, | 
|  | VK_BLEND_OVERLAP_DISJOINT_EXT                           = 1, | 
|  | VK_BLEND_OVERLAP_CONJOINT_EXT                           = 2, | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_framebuffer_mixed_samples") // 153 | 
|  | enum VkCoverageModulationModeNV { | 
|  | VK_COVERAGE_MODULATION_MODE_NONE_NV                     = 0, | 
|  | VK_COVERAGE_MODULATION_MODE_RGB_NV                      = 1, | 
|  | VK_COVERAGE_MODULATION_MODE_ALPHA_NV                    = 2, | 
|  | VK_COVERAGE_MODULATION_MODE_RGBA_NV                     = 3, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_sampler_ycbcr_conversion") // 157 | 
|  | enum VkSamplerYcbcrModelConversionKHR { | 
|  | VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY_KHR      = 0, | 
|  | VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY_KHR    = 1, | 
|  | VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709_KHR         = 2, | 
|  | VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601_KHR         = 3, | 
|  | VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020_KHR        = 4, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_sampler_ycbcr_conversion") // 157 | 
|  | enum VkSamplerYcbcrRangeKHR { | 
|  | VK_SAMPLER_YCBCR_RANGE_ITU_FULL_KHR                     = 0, | 
|  | VK_SAMPLER_YCBCR_RANGE_ITU_NARROW_KHR                   = 1, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_sampler_ycbcr_conversion") // 157 | 
|  | enum VkChromaLocationKHR { | 
|  | VK_CHROMA_LOCATION_COSITED_EVEN_KHR                     = 0, | 
|  | VK_CHROMA_LOCATION_MIDPOINT_KHR                         = 1, | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_validation_cache") // 161 | 
|  | enum VkValidationCacheHeaderVersionEXT { | 
|  | VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT              = 1, | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_shading_rate_image") // 165 | 
|  | enum VkShadingRatePaletteEntryNV { | 
|  | VK_SHADING_RATE_PALETTE_ENTRY_NO_INVOCATIONS_NV                 = 0, | 
|  | VK_SHADING_RATE_PALETTE_ENTRY_16_INVOCATIONS_PER_PIXEL_NV       = 1, | 
|  | VK_SHADING_RATE_PALETTE_ENTRY_8_INVOCATIONS_PER_PIXEL_NV        = 2, | 
|  | VK_SHADING_RATE_PALETTE_ENTRY_4_INVOCATIONS_PER_PIXEL_NV        = 3, | 
|  | VK_SHADING_RATE_PALETTE_ENTRY_2_INVOCATIONS_PER_PIXEL_NV        = 4, | 
|  | VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_PIXEL_NV         = 5, | 
|  | VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X1_PIXELS_NV    = 6, | 
|  | VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_1X2_PIXELS_NV    = 7, | 
|  | VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X2_PIXELS_NV    = 8, | 
|  | VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X2_PIXELS_NV    = 9, | 
|  | VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_2X4_PIXELS_NV    = 10, | 
|  | VK_SHADING_RATE_PALETTE_ENTRY_1_INVOCATION_PER_4X4_PIXELS_NV    = 11, | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_shading_rate_image") // 165 | 
|  | enum VkCoarseSampleOrderTypeNV { | 
|  | VK_COARSE_SAMPLE_ORDER_TYPE_DEFAULT_NV                  = 0, | 
|  | VK_COARSE_SAMPLE_ORDER_TYPE_CUSTOM_NV                   = 1, | 
|  | VK_COARSE_SAMPLE_ORDER_TYPE_PIXEL_MAJOR_NV              = 2, | 
|  | VK_COARSE_SAMPLE_ORDER_TYPE_SAMPLE_MAJOR_NV             = 3, | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | enum VkRayTracingShaderGroupTypeNV { | 
|  | VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_NV                 = 0, | 
|  | VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_NV     = 1, | 
|  | VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_NV    = 2, | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | enum VkGeometryTypeNV { | 
|  | VK_GEOMETRY_TYPE_TRIANGLES_NV                           = 0, | 
|  | VK_GEOMETRY_TYPE_AABBS_NV                               = 1, | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | enum VkAccelerationStructureTypeNV { | 
|  | VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_NV             = 0, | 
|  | VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_NV          = 1, | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | enum VkCopyAccelerationStructureModeNV { | 
|  | VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_NV            = 0, | 
|  | VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_NV          = 1, | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | enum VkAccelerationStructureMemoryRequirementsTypeNV { | 
|  | VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_OBJECT_NV            = 0, | 
|  | VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_BUILD_SCRATCH_NV     = 1, | 
|  | VK_ACCELERATION_STRUCTURE_MEMORY_REQUIREMENTS_TYPE_UPDATE_SCRATCH_NV    = 2, | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_global_priority") // 175 | 
|  | enum VkQueueGlobalPriorityEXT { | 
|  | VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT                        = 128, | 
|  | VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT                     = 256, | 
|  | VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT                       = 512, | 
|  | VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT                   = 1024, | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_calibrated_timestamps") // 185 | 
|  | enum VkTimeDomainEXT { | 
|  | VK_TIME_DOMAIN_DEVICE_EXT                               = 0, | 
|  | VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT                      = 1, | 
|  | VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT                  = 2, | 
|  | VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT            = 3, | 
|  | } | 
|  |  | 
|  | @extension("VK_AMD_memory_overallocation_behavior") // 190 | 
|  | enum VkMemoryOverallocationBehaviorAMD { | 
|  | VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD           = 0, | 
|  | VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD           = 1, | 
|  | VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD        = 2, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_driver_properties") // 197 | 
|  | enum VkDriverIdKHR { | 
|  | VK_DRIVER_ID_AMD_PROPRIETARY_KHR                        = 1, | 
|  | VK_DRIVER_ID_AMD_OPEN_SOURCE_KHR                        = 2, | 
|  | VK_DRIVER_ID_MESA_RADV_KHR                              = 3, | 
|  | VK_DRIVER_ID_NVIDIA_PROPRIETARY_KHR                     = 4, | 
|  | VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS_KHR              = 5, | 
|  | VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR                 = 6, | 
|  | VK_DRIVER_ID_IMAGINATION_PROPRIETARY_KHR                = 7, | 
|  | VK_DRIVER_ID_QUALCOMM_PROPRIETARY_KHR                   = 8, | 
|  | VK_DRIVER_ID_ARM_PROPRIETARY_KHR                        = 9, | 
|  | VK_DRIVER_ID_GOOGLE_PASTEL_KHR                          = 10, | 
|  | } | 
|  |  | 
|  | ///////////////// | 
|  | //  Bitfields  // | 
|  | ///////////////// | 
|  |  | 
|  | /// Queue capabilities | 
|  | type VkFlags VkQueueFlags | 
|  | bitfield VkQueueFlagBits { | 
|  | VK_QUEUE_GRAPHICS_BIT                                   = 0x00000001,    /// Queue supports graphics operations | 
|  | VK_QUEUE_COMPUTE_BIT                                    = 0x00000002,    /// Queue supports compute operations | 
|  | VK_QUEUE_TRANSFER_BIT                                   = 0x00000004,    /// Queue supports transfer operations | 
|  | VK_QUEUE_SPARSE_BINDING_BIT                             = 0x00000008,    /// Queue supports sparse resource memory management operations | 
|  |  | 
|  | //@vulkan1_1 | 
|  | VK_QUEUE_PROTECTED_BIT                                  = 0x00000010, | 
|  | } | 
|  |  | 
|  | /// Memory properties passed into vkAllocMemory(). | 
|  | type VkFlags VkMemoryPropertyFlags | 
|  | bitfield VkMemoryPropertyFlagBits { | 
|  | VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT                     = 0x00000001, | 
|  | VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT                     = 0x00000002, | 
|  | VK_MEMORY_PROPERTY_HOST_COHERENT_BIT                    = 0x00000004, | 
|  | VK_MEMORY_PROPERTY_HOST_CACHED_BIT                      = 0x00000008, | 
|  | VK_MEMORY_PROPERTY_LAZILY_ALLOCATED_BIT                 = 0x00000010, | 
|  |  | 
|  | //@vulkan1_1 | 
|  | VK_MEMORY_PROPERTY_PROTECTED_BIT                        = 0x00000020, | 
|  | } | 
|  |  | 
|  | /// Memory heap flags | 
|  | type VkFlags VkMemoryHeapFlags | 
|  | bitfield VkMemoryHeapFlagBits { | 
|  | VK_MEMORY_HEAP_DEVICE_LOCAL_BIT                         = 0x00000001, | 
|  |  | 
|  | //@vulkan1_1 | 
|  | VK_MEMORY_HEAP_MULTI_INSTANCE_BIT                       = 0x00000002, | 
|  |  | 
|  | //@extension("VK_KHR_device_group_creation") // 71 | 
|  | VK_MEMORY_HEAP_MULTI_INSTANCE_BIT_KHR                   = 0x00000002, | 
|  | } | 
|  |  | 
|  | /// Access flags | 
|  | type VkFlags VkAccessFlags | 
|  | bitfield VkAccessFlagBits { | 
|  | VK_ACCESS_INDIRECT_COMMAND_READ_BIT                     = 0x00000001, | 
|  | VK_ACCESS_INDEX_READ_BIT                                = 0x00000002, | 
|  | VK_ACCESS_VERTEX_ATTRIBUTE_READ_BIT                     = 0x00000004, | 
|  | VK_ACCESS_UNIFORM_READ_BIT                              = 0x00000008, | 
|  | VK_ACCESS_INPUT_ATTACHMENT_READ_BIT                     = 0x00000010, | 
|  | VK_ACCESS_SHADER_READ_BIT                               = 0x00000020, | 
|  | VK_ACCESS_SHADER_WRITE_BIT                              = 0x00000040, | 
|  | VK_ACCESS_COLOR_ATTACHMENT_READ_BIT                     = 0x00000080, | 
|  | VK_ACCESS_COLOR_ATTACHMENT_WRITE_BIT                    = 0x00000100, | 
|  | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_READ_BIT             = 0x00000200, | 
|  | VK_ACCESS_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT            = 0x00000400, | 
|  | VK_ACCESS_TRANSFER_READ_BIT                             = 0x00000800, | 
|  | VK_ACCESS_TRANSFER_WRITE_BIT                            = 0x00001000, | 
|  | VK_ACCESS_HOST_READ_BIT                                 = 0x00002000, | 
|  | VK_ACCESS_HOST_WRITE_BIT                                = 0x00004000, | 
|  | VK_ACCESS_MEMORY_READ_BIT                               = 0x00008000, | 
|  | VK_ACCESS_MEMORY_WRITE_BIT                              = 0x00010000, | 
|  |  | 
|  | //@extension("VK_NVX_device_generated_commands") // 87 | 
|  | VK_ACCESS_COMMAND_PROCESS_READ_BIT_NVX                  = 0x00020000, | 
|  | VK_ACCESS_COMMAND_PROCESS_WRITE_BIT_NVX                 = 0x00040000, | 
|  |  | 
|  | //@extension("VK_EXT_blend_operation_advanced") // 149 | 
|  | VK_ACCESS_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT     = 0x00080000, | 
|  |  | 
|  | //@extension("VK_EXT_conditional_rendering") // 82 | 
|  | VK_ACCESS_CONDITIONAL_RENDERING_READ_BIT_EXT            = 0x00100000, | 
|  |  | 
|  | //@extension("VK_NV_shading_rate_image") // 165 | 
|  | VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV                = 0x00800000, | 
|  |  | 
|  | //@extension("VK_NV_ray_tracing") // 166 | 
|  | VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV            = 0x00200000, | 
|  | VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV           = 0x00400000, | 
|  |  | 
|  | //@extension("VK_EXT_fragment_density_map") // 219 | 
|  | VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT             = 0x01000000, | 
|  |  | 
|  | //@extension("VK_EXT_transform_feedback") // 29 | 
|  | VK_ACCESS_TRANSFORM_FEEDBACK_WRITE_BIT_EXT              = 0x02000000, | 
|  | VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT       = 0x04000000, | 
|  | VK_ACCESS_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT      = 0x08000000, | 
|  | } | 
|  |  | 
|  | /// Buffer usage flags | 
|  | type VkFlags VkBufferUsageFlags | 
|  | bitfield VkBufferUsageFlagBits { | 
|  | VK_BUFFER_USAGE_TRANSFER_SRC_BIT                        = 0x00000001,    /// Can be used as a source of transfer operations | 
|  | VK_BUFFER_USAGE_TRANSFER_DST_BIT                        = 0x00000002,    /// Can be used as a destination of transfer operations | 
|  | VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT                = 0x00000004,    /// Can be used as TBO | 
|  | VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT                = 0x00000008,    /// Can be used as IBO | 
|  | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT                      = 0x00000010,    /// Can be used as UBO | 
|  | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT                      = 0x00000020,    /// Can be used as SSBO | 
|  | VK_BUFFER_USAGE_INDEX_BUFFER_BIT                        = 0x00000040,    /// Can be used as source of fixed function index fetch (index buffer) | 
|  | VK_BUFFER_USAGE_VERTEX_BUFFER_BIT                       = 0x00000080,    /// Can be used as source of fixed function vertex fetch (VBO) | 
|  | VK_BUFFER_USAGE_INDIRECT_BUFFER_BIT                     = 0x00000100,    /// Can be the source of indirect parameters (e.g. indirect buffer, parameter buffer) | 
|  |  | 
|  | //@extension("VK_EXT_conditional_rendering") // 82 | 
|  | VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT           = 0x00000200, | 
|  |  | 
|  | //@extension("VK_NV_ray_tracing") // 166 | 
|  | VK_BUFFER_USAGE_RAY_TRACING_BIT_NV                      = 0x00000400, | 
|  |  | 
|  | //@extension("VK_EXT_transform_feedback") // 29 | 
|  | VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT           = 0x00000800, | 
|  | VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT   = 0x00001000, | 
|  | } | 
|  |  | 
|  | /// Buffer creation flags | 
|  | type VkFlags VkBufferCreateFlags | 
|  | bitfield VkBufferCreateFlagBits { | 
|  | VK_BUFFER_CREATE_SPARSE_BINDING_BIT                     = 0x00000001,    /// Buffer should support sparse backing | 
|  | VK_BUFFER_CREATE_SPARSE_RESIDENCY_BIT                   = 0x00000002,    /// Buffer should support sparse backing with partial residency | 
|  | VK_BUFFER_CREATE_SPARSE_ALIASED_BIT                     = 0x00000004,    /// Buffer should support constent data access to physical memory blocks mapped into multiple locations of sparse buffers | 
|  |  | 
|  | //@vulkan1_1 | 
|  | VK_BUFFER_CREATE_PROTECTED_BIT                          = 0x00000008, | 
|  | } | 
|  |  | 
|  | /// Shader stage flags | 
|  | type VkFlags VkShaderStageFlags | 
|  | bitfield VkShaderStageFlagBits { | 
|  | VK_SHADER_STAGE_VERTEX_BIT                              = 0x00000001, | 
|  | VK_SHADER_STAGE_TESSELLATION_CONTROL_BIT                = 0x00000002, | 
|  | VK_SHADER_STAGE_TESSELLATION_EVALUATION_BIT             = 0x00000004, | 
|  | VK_SHADER_STAGE_GEOMETRY_BIT                            = 0x00000008, | 
|  | VK_SHADER_STAGE_FRAGMENT_BIT                            = 0x00000010, | 
|  | VK_SHADER_STAGE_COMPUTE_BIT                             = 0x00000020, | 
|  | VK_SHADER_STAGE_ALL_GRAPHICS                            = 0x0000001F, | 
|  |  | 
|  | VK_SHADER_STAGE_ALL                                     = 0x7FFFFFFF, | 
|  |  | 
|  | //@extension("VK_NV_ray_tracing") // 166 | 
|  | VK_SHADER_STAGE_RAYGEN_BIT_NV                           = 0x00000100, | 
|  | VK_SHADER_STAGE_ANY_HIT_BIT_NV                          = 0x00000200, | 
|  | VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV                      = 0x00000400, | 
|  | VK_SHADER_STAGE_MISS_BIT_NV                             = 0x00000800, | 
|  | VK_SHADER_STAGE_INTERSECTION_BIT_NV                     = 0x00001000, | 
|  | VK_SHADER_STAGE_CALLABLE_BIT_NV                         = 0x00002000, | 
|  |  | 
|  | //@extension("VK_NV_mesh_shader") // 203 | 
|  | VK_SHADER_STAGE_TASK_BIT_NV                             = 0x00000040, | 
|  | VK_SHADER_STAGE_MESH_BIT_NV                             = 0x00000080, | 
|  | } | 
|  |  | 
|  | /// Descriptor pool create flags | 
|  | type VkFlags VkDescriptorPoolCreateFlags | 
|  | bitfield VkDescriptorPoolCreateFlagBits { | 
|  | VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT       = 0x00000001, | 
|  |  | 
|  | //@extension("VK_EXT_descriptor_indexing") // 162 | 
|  | VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT     = 0x00000002, | 
|  | } | 
|  |  | 
|  | /// Descriptor pool reset flags | 
|  | type VkFlags VkDescriptorPoolResetFlags | 
|  | //bitfield VkDescriptorPoolResetFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Image usage flags | 
|  | type VkFlags VkImageUsageFlags | 
|  | bitfield VkImageUsageFlagBits { | 
|  | VK_IMAGE_USAGE_TRANSFER_SRC_BIT                         = 0x00000001,    /// Can be used as a source of transfer operations | 
|  | VK_IMAGE_USAGE_TRANSFER_DST_BIT                         = 0x00000002,    /// Can be used as a destination of transfer operations | 
|  | VK_IMAGE_USAGE_SAMPLED_BIT                              = 0x00000004,    /// Can be sampled from (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types) | 
|  | VK_IMAGE_USAGE_STORAGE_BIT                              = 0x00000008,    /// Can be used as storage image (STORAGE_IMAGE descriptor type) | 
|  | VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT                     = 0x00000010,    /// Can be used as framebuffer color attachment | 
|  | VK_IMAGE_USAGE_DEPTH_STENCIL_ATTACHMENT_BIT             = 0x00000020,    /// Can be used as framebuffer depth/stencil attachment | 
|  | VK_IMAGE_USAGE_TRANSIENT_ATTACHMENT_BIT                 = 0x00000040,    /// Image data not needed outside of rendering | 
|  | VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT                     = 0x00000080,    /// Can be used as framebuffer input attachment | 
|  |  | 
|  | //@extension("VK_NV_shading_rate_image") // 165 | 
|  | VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV                = 0x00000100, | 
|  |  | 
|  | //@extension("VK_EXT_fragment_density_map") // 219 | 
|  | VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT             = 0x00000200, | 
|  | } | 
|  |  | 
|  | /// Image creation flags | 
|  | type VkFlags VkImageCreateFlags | 
|  | bitfield VkImageCreateFlagBits { | 
|  | VK_IMAGE_CREATE_SPARSE_BINDING_BIT                      = 0x00000001,    /// Image should support sparse backing | 
|  | VK_IMAGE_CREATE_SPARSE_RESIDENCY_BIT                    = 0x00000002,    /// Image should support sparse backing with partial residency | 
|  | VK_IMAGE_CREATE_SPARSE_ALIASED_BIT                      = 0x00000004,    /// Image should support constent data access to physical memory blocks mapped into multiple locations of sparse images | 
|  | VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT                      = 0x00000008,    /// Allows image views to have different format than the base image | 
|  | VK_IMAGE_CREATE_CUBE_COMPATIBLE_BIT                     = 0x00000010,    /// Allows creating image views with cube type from the created image | 
|  |  | 
|  | //@vulkan1_1 | 
|  | VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT                 = 0x00000020, | 
|  | VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT         = 0x00000040, | 
|  | VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT         = 0x00000080, | 
|  | VK_IMAGE_CREATE_EXTENDED_USAGE_BIT                      = 0x00000100, | 
|  | VK_IMAGE_CREATE_DISJOINT_BIT                            = 0x00000200, | 
|  | VK_IMAGE_CREATE_ALIAS_BIT                               = 0x00000400, | 
|  | VK_IMAGE_CREATE_PROTECTED_BIT                           = 0x00000800, | 
|  |  | 
|  | //@extension("VK_KHR_maintenance1") // 70 | 
|  | VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR             = 0x00000020, | 
|  |  | 
|  | //@extension("VK_KHR_device_group") // 61 | 
|  | VK_IMAGE_CREATE_BIND_SFR_BIT_KHR                        = 0x00000040, | 
|  |  | 
|  | //@extension("VK_KHR_maintenance2") // 118 | 
|  | VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR     = 0x00000080, | 
|  | VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR                  = 0x00000100, | 
|  |  | 
|  | //@extension("VK_KHR_sampler_ycbcr_conversion") // 157 | 
|  | VK_IMAGE_CREATE_DISJOINT_BIT_KHR                        = 0x00000200, | 
|  |  | 
|  | //@extension("VK_KHR_bind_memory2") // 158 | 
|  | VK_IMAGE_CREATE_ALIAS_BIT_KHR                           = 0x00000400, | 
|  |  | 
|  | //@extension("VK_EXT_sample_locations") // 144 | 
|  | VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000, | 
|  |  | 
|  | //@extension("VK_NV_corner_sampled_image") // 51 | 
|  | VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV                   = 0x00002000, | 
|  |  | 
|  | //@extension("VK_EXT_fragment_density_map") // 219 | 
|  | VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT                      = 0x00004000, | 
|  | } | 
|  |  | 
|  | /// Image view creation flags | 
|  | type VkFlags VkImageViewCreateFlags | 
|  | bitfield VkImageViewCreateFlagBits { | 
|  | //@extension("VK_EXT_fragment_density_map") // 219 | 
|  | VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT   = 0x00000001, | 
|  | } | 
|  |  | 
|  | /// Pipeline creation flags | 
|  | type VkFlags VkPipelineCreateFlags | 
|  | bitfield VkPipelineCreateFlagBits { | 
|  | VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT             = 0x00000001, | 
|  | VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT                = 0x00000002, | 
|  | VK_PIPELINE_CREATE_DERIVATIVE_BIT                       = 0x00000004, | 
|  |  | 
|  | //@vulkan1_1 | 
|  | VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT     = 0x00000008, | 
|  | VK_PIPELINE_CREATE_DISPATCH_BASE                        = 0x00000010, | 
|  |  | 
|  | //@extension("VK_KHR_device_group") // 61 | 
|  | VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR = 0x00000008, | 
|  | VK_PIPELINE_CREATE_DISPATCH_BASE_KHR                    = 0x00000010, | 
|  |  | 
|  | //@extension("VK_NV_ray_tracing") // 166 | 
|  | VK_PIPELINE_CREATE_DEFER_COMPILE_BIT_NV                 = 0x00000020, | 
|  | } | 
|  |  | 
|  | /// Color component flags | 
|  | type VkFlags VkColorComponentFlags | 
|  | bitfield VkColorComponentFlagBits { | 
|  | VK_COLOR_COMPONENT_R_BIT                                = 0x00000001, | 
|  | VK_COLOR_COMPONENT_G_BIT                                = 0x00000002, | 
|  | VK_COLOR_COMPONENT_B_BIT                                = 0x00000004, | 
|  | VK_COLOR_COMPONENT_A_BIT                                = 0x00000008, | 
|  | } | 
|  |  | 
|  | /// Fence creation flags | 
|  | type VkFlags VkFenceCreateFlags | 
|  | bitfield VkFenceCreateFlagBits { | 
|  | VK_FENCE_CREATE_SIGNALED_BIT                            = 0x00000001, | 
|  | } | 
|  |  | 
|  | /// Semaphore creation flags | 
|  | type VkFlags VkSemaphoreCreateFlags | 
|  | //bitfield VkSemaphoreCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Format capability flags | 
|  | type VkFlags VkFormatFeatureFlags | 
|  | bitfield VkFormatFeatureFlagBits { | 
|  | VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT                     = 0x00000001,    /// Format can be used for sampled images (SAMPLED_IMAGE and COMBINED_IMAGE_SAMPLER descriptor types) | 
|  | VK_FORMAT_FEATURE_STORAGE_IMAGE_BIT                     = 0x00000002,    /// Format can be used for storage images (STORAGE_IMAGE descriptor type) | 
|  | VK_FORMAT_FEATURE_STORAGE_IMAGE_ATOMIC_BIT              = 0x00000004,    /// Format supports atomic operations in case it's used for storage images | 
|  | VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT              = 0x00000008,    /// Format can be used for uniform texel buffers (TBOs) | 
|  | VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT              = 0x00000010,    /// Format can be used for storage texel buffers (IBOs) | 
|  | VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_ATOMIC_BIT       = 0x00000020,    /// Format supports atomic operations in case it's used for storage texel buffers | 
|  | VK_FORMAT_FEATURE_VERTEX_BUFFER_BIT                     = 0x00000040,    /// Format can be used for vertex buffers (VBOs) | 
|  | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BIT                  = 0x00000080,    /// Format can be used for color attachment images | 
|  | VK_FORMAT_FEATURE_COLOR_ATTACHMENT_BLEND_BIT            = 0x00000100,    /// Format supports blending in case it's used for color attachment images | 
|  | VK_FORMAT_FEATURE_DEPTH_STENCIL_ATTACHMENT_BIT          = 0x00000200,    /// Format can be used for depth/stencil attachment images | 
|  | VK_FORMAT_FEATURE_BLIT_SRC_BIT                          = 0x00000400,    /// Format can be used as the source image of blits with vkCommandBlitImage | 
|  | VK_FORMAT_FEATURE_BLIT_DST_BIT                          = 0x00000800,    /// Format can be used as the destination image of blits with vkCommandBlitImage | 
|  | VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT       = 0x00001000, | 
|  |  | 
|  | //@vulkan1_1 | 
|  | VK_FORMAT_FEATURE_TRANSFER_SRC_BIT                      = 0x00004000, | 
|  | VK_FORMAT_FEATURE_TRANSFER_DST_BIT                      = 0x00008000, | 
|  | VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT                                                   = 0x00020000, | 
|  | VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT                              = 0x00040000, | 
|  | VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT             = 0x00080000, | 
|  | VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT             = 0x00100000, | 
|  | VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT   = 0x00200000, | 
|  | VK_FORMAT_FEATURE_DISJOINT_BIT                                                                  = 0x00400000, | 
|  | VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT                                                    = 0x00800000, | 
|  |  | 
|  | //@extension("VK_IMG_filter_cubic") // 16 | 
|  | VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG    = 0x00002000, | 
|  |  | 
|  | //@extension("VK_KHR_maintenance1") // 70 | 
|  | VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR                  = 0x00004000, | 
|  | VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR                  = 0x00008000, | 
|  |  | 
|  | //@extension("VK_EXT_sampler_filter_minmax") // 131 | 
|  | VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT   = 0x00010000, | 
|  |  | 
|  | //@extension("VK_KHR_sampler_ycbcr_conversion") // 157 | 
|  | VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR                                                   = 0x00020000, | 
|  | VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR                              = 0x00040000, | 
|  | VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR             = 0x00080000, | 
|  | VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR             = 0x00100000, | 
|  | VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR   = 0x00200000, | 
|  | VK_FORMAT_FEATURE_DISJOINT_BIT_KHR                                                                  = 0x00400000, | 
|  | VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR                                                    = 0x00800000, | 
|  | } | 
|  |  | 
|  | /// Query control flags | 
|  | type VkFlags VkQueryControlFlags | 
|  | bitfield VkQueryControlFlagBits { | 
|  | VK_QUERY_CONTROL_PRECISE_BIT                            = 0x00000001, | 
|  | } | 
|  |  | 
|  | /// Query result flags | 
|  | type VkFlags VkQueryResultFlags | 
|  | bitfield VkQueryResultFlagBits { | 
|  | VK_QUERY_RESULT_64_BIT                                  = 0x00000001,   /// Results of the queries are written to the destination buffer as 64-bit values | 
|  | VK_QUERY_RESULT_WAIT_BIT                                = 0x00000002,   /// Results of the queries are waited on before proceeding with the result copy | 
|  | VK_QUERY_RESULT_WITH_AVAILABILITY_BIT                   = 0x00000004,   /// Besides the results of the query, the availability of the results is also written | 
|  | VK_QUERY_RESULT_PARTIAL_BIT                             = 0x00000008,   /// Copy the partial results of the query even if the final results aren't available | 
|  | } | 
|  |  | 
|  | /// Shader module creation flags | 
|  | type VkFlags VkShaderModuleCreateFlags | 
|  | //bitfield VkShaderModuleCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Event creation flags | 
|  | type VkFlags VkEventCreateFlags | 
|  | //bitfield VkEventCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Command buffer usage flags | 
|  | type VkFlags VkCommandBufferUsageFlags | 
|  | bitfield VkCommandBufferUsageFlagBits { | 
|  | VK_COMMAND_BUFFER_USAGE_ONE_TIME_SUBMIT_BIT             = 0x00000001, | 
|  | VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT        = 0x00000002, | 
|  | VK_COMMAND_BUFFER_USAGE_SIMULTANEOUS_USE_BIT            = 0x00000004, | 
|  | } | 
|  |  | 
|  | /// Pipeline statistics flags | 
|  | type VkFlags VkQueryPipelineStatisticFlags | 
|  | bitfield VkQueryPipelineStatisticFlagBits { | 
|  | VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_VERTICES_BIT                     = 0x00000001,  /// Optional | 
|  | VK_QUERY_PIPELINE_STATISTIC_INPUT_ASSEMBLY_PRIMITIVES_BIT                   = 0x00000002,  /// Optional | 
|  | VK_QUERY_PIPELINE_STATISTIC_VERTEX_SHADER_INVOCATIONS_BIT                   = 0x00000004,  /// Optional | 
|  | VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_INVOCATIONS_BIT                 = 0x00000008,  /// Optional | 
|  | VK_QUERY_PIPELINE_STATISTIC_GEOMETRY_SHADER_PRIMITIVES_BIT                  = 0x00000010,  /// Optional | 
|  | VK_QUERY_PIPELINE_STATISTIC_CLIPPING_INVOCATIONS_BIT                        = 0x00000020,  /// Optional | 
|  | VK_QUERY_PIPELINE_STATISTIC_CLIPPING_PRIMITIVES_BIT                         = 0x00000040,  /// Optional | 
|  | VK_QUERY_PIPELINE_STATISTIC_FRAGMENT_SHADER_INVOCATIONS_BIT                 = 0x00000080,  /// Optional | 
|  | VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_CONTROL_SHADER_PATCHES_BIT         = 0x00000100,  /// Optional | 
|  | VK_QUERY_PIPELINE_STATISTIC_TESSELLATION_EVALUATION_SHADER_INVOCATIONS_BIT  = 0x00000200,  /// Optional | 
|  | VK_QUERY_PIPELINE_STATISTIC_COMPUTE_SHADER_INVOCATIONS_BIT                  = 0x00000400,  /// Optional | 
|  | } | 
|  |  | 
|  | /// Memory mapping flags | 
|  | type VkFlags VkMemoryMapFlags | 
|  | //bitfield VkMemoryMapFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Bitfield of image aspects | 
|  | type VkFlags VkImageAspectFlags | 
|  | bitfield VkImageAspectFlagBits { | 
|  | VK_IMAGE_ASPECT_COLOR_BIT                               = 0x00000001, | 
|  | VK_IMAGE_ASPECT_DEPTH_BIT                               = 0x00000002, | 
|  | VK_IMAGE_ASPECT_STENCIL_BIT                             = 0x00000004, | 
|  | VK_IMAGE_ASPECT_METADATA_BIT                            = 0x00000008, | 
|  |  | 
|  | //@vulkan1_1 | 
|  | VK_IMAGE_ASPECT_PLANE_0_BIT                             = 0x00000010, | 
|  | VK_IMAGE_ASPECT_PLANE_1_BIT                             = 0x00000020, | 
|  | VK_IMAGE_ASPECT_PLANE_2_BIT                             = 0x00000040, | 
|  |  | 
|  | //@extension("VK_KHR_sampler_ycbcr_conversion") // 157 | 
|  | VK_IMAGE_ASPECT_PLANE_0_BIT_KHR                         = 0x00000010, | 
|  | VK_IMAGE_ASPECT_PLANE_1_BIT_KHR                         = 0x00000020, | 
|  | VK_IMAGE_ASPECT_PLANE_2_BIT_KHR                         = 0x00000040, | 
|  |  | 
|  | //@extension("VK_EXT_transform_feedback") // 29 | 
|  | VK_IMAGE_ASPECT_MEMORY_PLANE_0_BIT_EXT                  = 0x00000080, | 
|  | VK_IMAGE_ASPECT_MEMORY_PLANE_1_BIT_EXT                  = 0x00000100, | 
|  | VK_IMAGE_ASPECT_MEMORY_PLANE_2_BIT_EXT                  = 0x00000200, | 
|  | VK_IMAGE_ASPECT_MEMORY_PLANE_3_BIT_EXT                  = 0x00000400, | 
|  | } | 
|  |  | 
|  | /// Sparse memory bind flags | 
|  | type VkFlags VkSparseMemoryBindFlags | 
|  | bitfield VkSparseMemoryBindFlagBits { | 
|  | VK_SPARSE_MEMORY_BIND_METADATA_BIT                      = 0x00000001, | 
|  | } | 
|  |  | 
|  | /// Sparse image memory requirements flags | 
|  | type VkFlags VkSparseImageFormatFlags | 
|  | bitfield VkSparseImageFormatFlagBits { | 
|  | VK_SPARSE_IMAGE_FORMAT_SINGLE_MIPTAIL_BIT                  = 0x00000001,  /// Image uses a single miptail region for all array slices | 
|  | 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. | 
|  | VK_SPARSE_IMAGE_FORMAT_NONSTANDARD_BLOCK_SIZE_BIT          = 0x00000004,  /// Image uses a non-standard sparse block size | 
|  | } | 
|  |  | 
|  | /// Pipeline stages | 
|  | type VkFlags VkPipelineStageFlags | 
|  | bitfield VkPipelineStageFlagBits { | 
|  | VK_PIPELINE_STAGE_TOP_OF_PIPE_BIT                       = 0x00000001,  /// Before subsequent commands are processed | 
|  | VK_PIPELINE_STAGE_DRAW_INDIRECT_BIT                     = 0x00000002,  /// Draw/DispatchIndirect command fetch | 
|  | VK_PIPELINE_STAGE_VERTEX_INPUT_BIT                      = 0x00000004,  /// Vertex/index fetch | 
|  | VK_PIPELINE_STAGE_VERTEX_SHADER_BIT                     = 0x00000008,  /// Vertex shading | 
|  | VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT       = 0x00000010,  /// Tessellation control shading | 
|  | VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT    = 0x00000020,  /// Tessellation evaluation shading | 
|  | VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT                   = 0x00000040,  /// Geometry shading | 
|  | VK_PIPELINE_STAGE_FRAGMENT_SHADER_BIT                   = 0x00000080,  /// Fragment shading | 
|  | VK_PIPELINE_STAGE_EARLY_FRAGMENT_TESTS_BIT              = 0x00000100,  /// Early fragment (depth/stencil) tests | 
|  | VK_PIPELINE_STAGE_LATE_FRAGMENT_TESTS_BIT               = 0x00000200,  /// Late fragment (depth/stencil) tests | 
|  | VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT           = 0x00000400,  /// Color attachment writes | 
|  | VK_PIPELINE_STAGE_COMPUTE_SHADER_BIT                    = 0x00000800,  /// Compute shading | 
|  | VK_PIPELINE_STAGE_TRANSFER_BIT                          = 0x00001000,  /// Transfer/copy operations | 
|  | VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT                    = 0x00002000, | 
|  | VK_PIPELINE_STAGE_HOST_BIT                              = 0x00004000,  /// Indicates host (CPU) is a source/sink of the dependency | 
|  |  | 
|  | VK_PIPELINE_STAGE_ALL_GRAPHICS_BIT                      = 0x00008000,  /// All stages of the graphics pipeline | 
|  | VK_PIPELINE_STAGE_ALL_COMMANDS_BIT                      = 0x00010000,  /// All graphics, compute, copy, and transition commands | 
|  |  | 
|  | //@extension("VK_NVX_device_generated_commands") // 87 | 
|  | VK_PIPELINE_STAGE_COMMAND_PROCESS_BIT_NVX               = 0x00020000, | 
|  |  | 
|  | //@extension("VK_EXT_conditional_rendering") // 82 | 
|  | VK_PIPELINE_STAGE_CONDITIONAL_RENDERING_BIT_EXT         = 0x00040000, | 
|  |  | 
|  | //@extension("VK_NV_mesh_shader") // 203 | 
|  | VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV                    = 0x00080000, | 
|  | VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV                    = 0x00100000, | 
|  |  | 
|  | //@extension("VK_NV_ray_tracing") // 166 | 
|  | VK_PIPELINE_STAGE_RAY_TRACING_BIT_NV                    = 0x00200000, | 
|  |  | 
|  | //@extension("VK_NV_shading_rate_image") // 165 | 
|  | VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV             = 0x00400000, | 
|  |  | 
|  | //@extension("VK_EXT_fragment_density_map") // 219 | 
|  | VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT      = 0x00800000, | 
|  |  | 
|  | //@extension("VK_EXT_transform_feedback") // 29 | 
|  | VK_PIPELINE_STAGE_TRANSFORM_FEEDBACK_BIT_EXT            = 0x01000000, | 
|  |  | 
|  | //@extension("VK_NV_ray_tracing") // 166 | 
|  | VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV   = 0x02000000, | 
|  | } | 
|  |  | 
|  | /// Render pass attachment description flags | 
|  | type VkFlags VkAttachmentDescriptionFlags | 
|  | bitfield VkAttachmentDescriptionFlagBits { | 
|  | VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT                 = 0x00000001,  /// The attachment may alias physical memory of another attachment in the same renderpass | 
|  | } | 
|  |  | 
|  | /// Subpass description flags | 
|  | type VkFlags VkSubpassDescriptionFlags | 
|  | bitfield VkSubpassDescriptionFlagBits { | 
|  | //@extension("VK_NVX_multiview_per_view_attributes") // 98 | 
|  | VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX      = 0x00000001, | 
|  | VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX = 0x00000002, | 
|  | } | 
|  |  | 
|  | /// Command pool creation flags | 
|  | type VkFlags VkCommandPoolCreateFlags | 
|  | bitfield VkCommandPoolCreateFlagBits { | 
|  | VK_COMMAND_POOL_CREATE_TRANSIENT_BIT                    = 0x00000001,  /// Command buffers have a short lifetime | 
|  | VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT         = 0x00000002,  /// Command buffers may release their memory individually | 
|  |  | 
|  | //@vulkan1_1 | 
|  | VK_COMMAND_POOL_CREATE_PROTECTED_BIT                    = 0x00000004, | 
|  | } | 
|  |  | 
|  | /// Command pool reset flags | 
|  | type VkFlags VkCommandPoolResetFlags | 
|  | bitfield VkCommandPoolResetFlagBits { | 
|  | VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT             = 0x00000001,  /// Release resources owned by the pool | 
|  | } | 
|  |  | 
|  | type VkFlags VkCommandBufferResetFlags | 
|  | bitfield VkCommandBufferResetFlagBits { | 
|  | VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT           = 0x00000001,  /// Release resources owned by the buffer | 
|  | } | 
|  |  | 
|  | type VkFlags VkSampleCountFlags | 
|  | bitfield VkSampleCountFlagBits { | 
|  | VK_SAMPLE_COUNT_1_BIT                                   = 0x00000001, | 
|  | VK_SAMPLE_COUNT_2_BIT                                   = 0x00000002, | 
|  | VK_SAMPLE_COUNT_4_BIT                                   = 0x00000004, | 
|  | VK_SAMPLE_COUNT_8_BIT                                   = 0x00000008, | 
|  | VK_SAMPLE_COUNT_16_BIT                                  = 0x00000010, | 
|  | VK_SAMPLE_COUNT_32_BIT                                  = 0x00000020, | 
|  | VK_SAMPLE_COUNT_64_BIT                                  = 0x00000040, | 
|  | } | 
|  |  | 
|  | type VkFlags VkStencilFaceFlags | 
|  | bitfield VkStencilFaceFlagBits { | 
|  | VK_STENCIL_FACE_FRONT_BIT                               = 0x00000001,   /// Front face | 
|  | VK_STENCIL_FACE_BACK_BIT                                = 0x00000002,   /// Back face | 
|  | VK_STENCIL_FRONT_AND_BACK                               = 0x00000003, | 
|  | } | 
|  |  | 
|  | /// Instance creation flags | 
|  | type VkFlags VkInstanceCreateFlags | 
|  | //bitfield VkInstanceCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Device creation flags | 
|  | type VkFlags VkDeviceCreateFlags | 
|  | //bitfield VkDeviceCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Device queue creation flags | 
|  | type VkFlags VkDeviceQueueCreateFlags | 
|  | @vulkan1_1 | 
|  | bitfield VkDeviceQueueCreateFlagBits { | 
|  | VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT                    = 0x00000001, | 
|  | } | 
|  |  | 
|  | /// Query pool creation flags | 
|  | type VkFlags VkQueryPoolCreateFlags | 
|  | //bitfield VkQueryPoolCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Buffer view creation flags | 
|  | type VkFlags VkBufferViewCreateFlags | 
|  | //bitfield VkBufferViewCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Pipeline cache creation flags | 
|  | type VkFlags VkPipelineCacheCreateFlags | 
|  | //bitfield VkPipelineCacheCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Pipeline shader stage creation flags | 
|  | type VkFlags VkPipelineShaderStageCreateFlags | 
|  | //bitfield VkPipelineShaderStageCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Descriptor set layout creation flags | 
|  | type VkFlags VkDescriptorSetLayoutCreateFlags | 
|  | bitfield VkDescriptorSetLayoutCreateFlagBits { | 
|  | //@extension("VK_KHR_push_descriptor") // 81 | 
|  | VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR     = 0x00000001, | 
|  |  | 
|  | //@extension("VK_EXT_descriptor_indexing") // 162 | 
|  | VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT  = 0x00000002, | 
|  | } | 
|  |  | 
|  | /// Pipeline vertex input state creation flags | 
|  | type VkFlags VkPipelineVertexInputStateCreateFlags | 
|  | //bitfield VkPipelineVertexInputStateCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Pipeline input assembly state creation flags | 
|  | type VkFlags VkPipelineInputAssemblyStateCreateFlags | 
|  | //bitfield VkPipelineInputAssemblyStateCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Tessellation state creation flags | 
|  | type VkFlags VkPipelineTessellationStateCreateFlags | 
|  | //bitfield VkPipelineTessellationStateCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Viewport state creation flags | 
|  | type VkFlags VkPipelineViewportStateCreateFlags | 
|  | //bitfield VkPipelineViewportStateCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Rasterization state creation flags | 
|  | type VkFlags VkPipelineRasterizationStateCreateFlags | 
|  | //bitfield VkPipelineRasterizationStateCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Multisample state creation flags | 
|  | type VkFlags VkPipelineMultisampleStateCreateFlags | 
|  | //bitfield VkPipelineMultisampleStateCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Color blend state creation flags | 
|  | type VkFlags VkPipelineColorBlendStateCreateFlags | 
|  | //bitfield VkPipelineColorBlendStateCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Depth/stencil state creation flags | 
|  | type VkFlags VkPipelineDepthStencilStateCreateFlags | 
|  | //bitfield VkPipelineDepthStencilStateCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Dynamic state creation flags | 
|  | type VkFlags VkPipelineDynamicStateCreateFlags | 
|  | //bitfield VkPipelineDynamicStateCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Pipeline layout creation flags | 
|  | type VkFlags VkPipelineLayoutCreateFlags | 
|  | //bitfield VkPipelineLayoutCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Sampler creation flags | 
|  | type VkFlags VkSamplerCreateFlags | 
|  | bitfield VkSamplerCreateFlagBits { | 
|  | //@extension("VK_EXT_fragment_density_map") // 219 | 
|  | VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT                        = 0x00000001, | 
|  | VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT  = 0x00000002, | 
|  | } | 
|  |  | 
|  | /// Render pass creation flags | 
|  | type VkFlags VkRenderPassCreateFlags | 
|  | //bitfield VkRenderPassCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Framebuffer creation flags | 
|  | type VkFlags VkFramebufferCreateFlags | 
|  | //bitfield VkFramebufferCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// Dependency flags | 
|  | type VkFlags VkDependencyFlags | 
|  | bitfield VkDependencyFlagBits { | 
|  | VK_DEPENDENCY_BY_REGION_BIT                             = 0x00000001, | 
|  |  | 
|  | //@vulkan1_1 | 
|  | VK_DEPENDENCY_DEVICE_GROUP_BIT                          = 0x00000004, | 
|  | VK_DEPENDENCY_VIEW_LOCAL_BIT                            = 0x00000002, | 
|  |  | 
|  | //@extension("VK_KHR_multiview") // 54 | 
|  | VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR                        = 0x00000002, | 
|  |  | 
|  | //@extension("VK_KHR_device_group") // 61 | 
|  | VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR                      = 0x00000004, | 
|  | } | 
|  |  | 
|  | /// Cull mode flags | 
|  | type VkFlags VkCullModeFlags | 
|  | bitfield VkCullModeFlagBits { | 
|  | VK_CULL_MODE_NONE                                       = 0x00000000, | 
|  | VK_CULL_MODE_FRONT_BIT                                  = 0x00000001, | 
|  | VK_CULL_MODE_BACK_BIT                                   = 0x00000002, | 
|  | VK_CULL_MODE_FRONT_AND_BACK                             = 0x00000003, | 
|  | } | 
|  |  | 
|  | //@vulkan1_1 flags | 
|  |  | 
|  | /// Subgroup feature flags | 
|  | type VkFlags VkSubgroupFeatureFlags | 
|  | bitfield VkSubgroupFeatureFlagBits { | 
|  | VK_SUBGROUP_FEATURE_BASIC_BIT                           = 0x00000001, | 
|  | VK_SUBGROUP_FEATURE_VOTE_BIT                            = 0x00000002, | 
|  | VK_SUBGROUP_FEATURE_ARITHMETIC_BIT                      = 0x00000004, | 
|  | VK_SUBGROUP_FEATURE_BALLOT_BIT                          = 0x00000008, | 
|  | VK_SUBGROUP_FEATURE_SHUFFLE_BIT                         = 0x00000010, | 
|  | VK_SUBGROUP_FEATURE_SHUFFLE_RELATIVE_BIT                = 0x00000020, | 
|  | VK_SUBGROUP_FEATURE_CLUSTERED_BIT                       = 0x00000040, | 
|  | VK_SUBGROUP_FEATURE_QUAD_BIT                            = 0x00000080, | 
|  |  | 
|  | //@extension("VK_NV_shader_subgroup_partitioned") // 199 | 
|  | VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV                  = 0x00000100, | 
|  | } | 
|  |  | 
|  | /// Peer memory feature flags | 
|  | type VkFlags VkPeerMemoryFeatureFlags | 
|  | bitfield VkPeerMemoryFeatureFlagBits { | 
|  | VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT                     = 0x00000001, | 
|  | VK_PEER_MEMORY_FEATURE_COPY_DST_BIT                     = 0x00000002, | 
|  | VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT                  = 0x00000004, | 
|  | VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT                  = 0x00000008, | 
|  | } | 
|  |  | 
|  | /// Memory allocation flags | 
|  | type VkFlags VkMemoryAllocateFlags | 
|  | bitfield VkMemoryAllocateFlagBits { | 
|  | VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT                      = 0x00000001, | 
|  | } | 
|  |  | 
|  | type VkFlags VkCommandPoolTrimFlags | 
|  | //bitfield VkCommandPoolTrimFlagBits { | 
|  | //} | 
|  |  | 
|  | type VkFlags VkDescriptorUpdateTemplateCreateFlags | 
|  | //bitfield VkDescriptorUpdateTemplateCreateFlagBits { | 
|  | //} | 
|  |  | 
|  | /// External memory handle type flags | 
|  | type VkFlags VkExternalMemoryHandleTypeFlags | 
|  | bitfield VkExternalMemoryHandleTypeFlagBits { | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT            = 0x00000001, | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT         = 0x00000002, | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT     = 0x00000004, | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT        = 0x00000008, | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT    = 0x00000010, | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT           = 0x00000020, | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT       = 0x00000040, | 
|  |  | 
|  | //@extension("VK_EXT_external_memory_host") // 179 | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_ALLOCATION_BIT_EXT              = 0x00000080, | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_HOST_MAPPED_FOREIGN_MEMORY_BIT_EXT   = 0x00000100, | 
|  |  | 
|  | //@extension("VK_EXT_external_memory_dma_buf") // 126 | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT                      = 0x00000200, | 
|  |  | 
|  | //@extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130 | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_ANDROID_HARDWARE_BUFFER_BIT_ANDROID  = 0x00000400, | 
|  | } | 
|  |  | 
|  | /// External memory feature flags | 
|  | type VkFlags VkExternalMemoryFeatureFlags | 
|  | bitfield VkExternalMemoryFeatureFlagBits { | 
|  | VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT           = 0x00000001, | 
|  | VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT               = 0x00000002, | 
|  | VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT               = 0x00000004, | 
|  | } | 
|  |  | 
|  | /// External fence handle type flags | 
|  | type VkFlags VkExternalFenceHandleTypeFlags | 
|  | bitfield VkExternalFenceHandleTypeFlagBits { | 
|  | VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT             = 0x00000001, | 
|  | VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT          = 0x00000002, | 
|  | VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT      = 0x00000004, | 
|  | VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT               = 0x00000008, | 
|  | } | 
|  |  | 
|  | /// External fence feature flags | 
|  | type VkFlags VkExternalFenceFeatureFlags | 
|  | bitfield VkExternalFenceFeatureFlagBits { | 
|  | VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT                = 0x00000001, | 
|  | VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT                = 0x00000002, | 
|  | } | 
|  |  | 
|  | /// Fence import flags | 
|  | type VkFlags VkFenceImportFlags | 
|  | bitfield VkFenceImportFlagBits { | 
|  | VK_FENCE_IMPORT_TEMPORARY_BIT                           = 0x00000001, | 
|  | } | 
|  |  | 
|  | /// Semaphore import flags | 
|  | type VkFlags VkSemaphoreImportFlags | 
|  | bitfield VkSemaphoreImportFlagBits { | 
|  | VK_SEMAPHORE_IMPORT_TEMPORARY_BIT                       = 0x00000001, | 
|  | } | 
|  |  | 
|  | /// External semaphore handle type flags | 
|  | type VkFlags VkExternalSemaphoreHandleTypeFlags | 
|  | bitfield VkExternalSemaphoreHandleTypeFlagBits { | 
|  | VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT         = 0x00000001, | 
|  | VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT      = 0x00000002, | 
|  | VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT  = 0x00000004, | 
|  | VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT       = 0x00000008, | 
|  | VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT           = 0x00000010, | 
|  | } | 
|  |  | 
|  | /// External semaphore feature flags | 
|  | type VkFlags VkExternalSemaphoreFeatureFlags | 
|  | bitfield VkExternalSemaphoreFeatureFlagBits { | 
|  | VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT            = 0x00000001, | 
|  | VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT            = 0x00000002, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_surface") // 1 | 
|  | type VkFlags VkSurfaceTransformFlagsKHR | 
|  | @extension("VK_KHR_surface") // 1 | 
|  | bitfield VkSurfaceTransformFlagBitsKHR { | 
|  | VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR                       = 0x00000001, | 
|  | VK_SURFACE_TRANSFORM_ROTATE_90_BIT_KHR                      = 0x00000002, | 
|  | VK_SURFACE_TRANSFORM_ROTATE_180_BIT_KHR                     = 0x00000004, | 
|  | VK_SURFACE_TRANSFORM_ROTATE_270_BIT_KHR                     = 0x00000008, | 
|  | VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_BIT_KHR              = 0x00000010, | 
|  | VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_90_BIT_KHR    = 0x00000020, | 
|  | VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_180_BIT_KHR   = 0x00000040, | 
|  | VK_SURFACE_TRANSFORM_HORIZONTAL_MIRROR_ROTATE_270_BIT_KHR   = 0x00000080, | 
|  | VK_SURFACE_TRANSFORM_INHERIT_BIT_KHR                        = 0x00000100, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_surface") // 1 | 
|  | type VkFlags VkCompositeAlphaFlagsKHR | 
|  | @extension("VK_KHR_surface") // 1 | 
|  | bitfield VkCompositeAlphaFlagBitsKHR { | 
|  | VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR                       = 0x00000001, | 
|  | VK_COMPOSITE_ALPHA_PRE_MULTIPLIED_BIT_KHR               = 0x00000002, | 
|  | VK_COMPOSITE_ALPHA_POST_MULTIPLIED_BIT_KHR              = 0x00000004, | 
|  | VK_COMPOSITE_ALPHA_INHERIT_BIT_KHR                      = 0x00000008, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | type VkFlags VkSwapchainCreateFlagsKHR | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | bitfield VkSwapchainCreateFlagBitsKHR { | 
|  | //@vulkan1_1 | 
|  | VK_SWAPCHAIN_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR = 0x00000001, | 
|  | VK_SWAPCHAIN_CREATE_PROTECTED_BIT_KHR                   = 0x00000002, | 
|  |  | 
|  | //@extension("VK_KHR_swapchain_mutable_format") // 201 | 
|  | VK_SWAPCHAIN_CREATE_MUTABLE_FORMAT_BIT_KHR              = 0x00000004, | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | type VkFlags VkDeviceGroupPresentModeFlagsKHR | 
|  | @vulkan1_1 | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | bitfield VkDeviceGroupPresentModeFlagBitsKHR { | 
|  | VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR              = 0x00000001, | 
|  | VK_DEVICE_GROUP_PRESENT_MODE_REMOTE_BIT_KHR             = 0x00000002, | 
|  | VK_DEVICE_GROUP_PRESENT_MODE_SUM_BIT_KHR                = 0x00000004, | 
|  | VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_MULTI_DEVICE_BIT_KHR = 0x00000008, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display") // 3 | 
|  | type VkFlags VkDisplayPlaneAlphaFlagsKHR | 
|  | @extension("VK_KHR_display") // 3 | 
|  | bitfield VkDisplayPlaneAlphaFlagBitsKHR { | 
|  | VK_DISPLAY_PLANE_ALPHA_OPAQUE_BIT_KHR                   = 0x00000001, | 
|  | VK_DISPLAY_PLANE_ALPHA_GLOBAL_BIT_KHR                   = 0x00000002, | 
|  | VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_BIT_KHR                = 0x00000004, | 
|  | VK_DISPLAY_PLANE_ALPHA_PER_PIXEL_PREMULTIPLIED_BIT_KHR  = 0x00000008, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display") // 3 | 
|  | type VkFlags VkDisplaySurfaceCreateFlagsKHR | 
|  | //@extension("VK_KHR_display") // 3 | 
|  | //bitfield VkDisplaySurfaceCreateFlagBitsKHR { | 
|  | //} | 
|  |  | 
|  | @extension("VK_KHR_display") // 3 | 
|  | type VkFlags VkDisplayModeCreateFlagsKHR | 
|  | //@extension("VK_KHR_display") // 3 | 
|  | //bitfield VkDisplayModeCreateFlagBitsKHR { | 
|  | //} | 
|  |  | 
|  | @extension("VK_KHR_xlib_surface") // 5 | 
|  | type VkFlags VkXlibSurfaceCreateFlagsKHR | 
|  | //@extension("VK_KHR_xlib_surface") // 5 | 
|  | //bitfield VkXlibSurfaceCreateFlagBitsKHR { | 
|  | //} | 
|  |  | 
|  | @extension("VK_KHR_xcb_surface") // 6 | 
|  | type VkFlags VkXcbSurfaceCreateFlagsKHR | 
|  | //@extension("VK_KHR_xcb_surface") // 6 | 
|  | //bitfield VkXcbSurfaceCreateFlagBitsKHR { | 
|  | //} | 
|  |  | 
|  | @extension("VK_KHR_wayland_surface") // 7 | 
|  | type VkFlags VkWaylandSurfaceCreateFlagsKHR | 
|  | //@extension("VK_KHR_wayland_surface") // 7 | 
|  | //bitfield VkWaylandSurfaceCreateFlagBitsKHR { | 
|  | //} | 
|  |  | 
|  | @extension("VK_KHR_android_surface") // 9 | 
|  | type VkFlags VkAndroidSurfaceCreateFlagsKHR | 
|  | //@extension("VK_KHR_android_surface") // 9 | 
|  | //bitfield VkAndroidSurfaceCreateFlagBitsKHR { | 
|  | //} | 
|  |  | 
|  | @extension("VK_KHR_win32_surface") // 10 | 
|  | type VkFlags VkWin32SurfaceCreateFlagsKHR | 
|  | //@extension("VK_KHR_win32_surface") // 10 | 
|  | //bitfield VkWin32SurfaceCreateFlagBitsKHR { | 
|  | //} | 
|  |  | 
|  | @extension("VK_ANDROID_native_buffer") // 11 | 
|  | type VkFlags VkSwapchainImageUsageFlagsANDROID | 
|  | @extension("VK_ANDROID_native_buffer") // 11 | 
|  | bitfield VkSwapchainImageUsageFlagBitsANDROID { | 
|  | VK_SWAPCHAIN_IMAGE_USAGE_FLAGS_SHARED_BIT_ANDROID = 0x00000001, | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_report") // 12 | 
|  | type VkFlags VkDebugReportFlagsEXT | 
|  | @extension("VK_EXT_debug_report") // 12 | 
|  | bitfield VkDebugReportFlagBitsEXT { | 
|  | VK_DEBUG_REPORT_INFORMATION_BIT_EXT                     = 0x00000001, | 
|  | VK_DEBUG_REPORT_WARNING_BIT_EXT                         = 0x00000002, | 
|  | VK_DEBUG_REPORT_PERFORMANCE_WARNING_BIT_EXT             = 0x00000004, | 
|  | VK_DEBUG_REPORT_ERROR_BIT_EXT                           = 0x00000008, | 
|  | VK_DEBUG_REPORT_DEBUG_BIT_EXT                           = 0x00000010, | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_transform_feedback") // 29 | 
|  | type VkFlags VkPipelineRasterizationStateStreamCreateFlagsEXT | 
|  | //@extension("VK_EXT_transform_feedback") // 29 | 
|  | //bitfield VkPipelineRasterizationStateStreamCreateFlagBitsEXT { | 
|  | //} | 
|  |  | 
|  | @extension("VK_NV_external_memory_capabilities") // 56 | 
|  | type VkFlags VkExternalMemoryHandleTypeFlagsNV | 
|  | @extension("VK_NV_external_memory_capabilities") // 56 | 
|  | bitfield VkExternalMemoryHandleTypeFlagBitsNV { | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_NV      = 0x00000001, | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_NV  = 0x00000002, | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_BIT_NV       = 0x00000004, | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_IMAGE_KMT_BIT_NV   = 0x00000008, | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_external_memory_capabilities") // 56 | 
|  | type VkFlags VkExternalMemoryFeatureFlagsNV | 
|  | @extension("VK_NV_external_memory_capabilities") // 56 | 
|  | bitfield VkExternalMemoryFeatureFlagBitsNV { | 
|  | VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_NV        = 0x00000001, | 
|  | VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_NV            = 0x00000002, | 
|  | VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_NV            = 0x00000004, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_device_group") // 61 | 
|  | type VkFlags VkPeerMemoryFeatureFlagsKHR | 
|  | @extension("VK_KHR_device_group") // 61 | 
|  | bitfield VkPeerMemoryFeatureFlagBitsKHR { | 
|  | VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT_KHR                 = 0x00000001, | 
|  | VK_PEER_MEMORY_FEATURE_COPY_DST_BIT_KHR                 = 0x00000002, | 
|  | VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT_KHR              = 0x00000004, | 
|  | VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT_KHR              = 0x00000008, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_device_group") // 61 | 
|  | type VkFlags VkMemoryAllocateFlagsKHR | 
|  | @extension("VK_KHR_device_group") // 61 | 
|  | bitfield VkMemoryAllocateFlagBitsKHR { | 
|  | VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT_KHR                  = 0x00000001, | 
|  | } | 
|  |  | 
|  | @extension("VK_NN_vi_surface") // 63 | 
|  | type VkFlags VkViSurfaceCreateFlagsNN | 
|  | //@extension("VK_NN_vi_surface") // 63 | 
|  | //bitfield VkViSurfaceCreateFlagBitsNN { | 
|  | //} | 
|  |  | 
|  | @extension("VK_KHR_maintenance1") // 70 | 
|  | type VkFlags VkCommandPoolTrimFlagsKHR | 
|  | //@extension("VK_KHR_maintenance1") // 70 | 
|  | //bitfield VkCommandPoolTrimFlagBitsKHR { | 
|  | //} | 
|  |  | 
|  | @extension("VK_KHR_external_memory_capabilities") // 72 | 
|  | type VkFlags VkExternalMemoryHandleTypeFlagsKHR | 
|  | @extension("VK_KHR_external_memory_capabilities") // 72 | 
|  | bitfield VkExternalMemoryHandleTypeFlagBitsKHR { | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR            = 0x00000001, | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR         = 0x00000002, | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR     = 0x00000004, | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT_KHR        = 0x00000008, | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT_KHR    = 0x00000010, | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT_KHR           = 0x00000020, | 
|  | VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT_KHR       = 0x00000040, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory_capabilities") // 72 | 
|  | type VkFlags VkExternalMemoryFeatureFlagsKHR | 
|  | @extension("VK_KHR_external_memory_capabilities") // 72 | 
|  | bitfield VkExternalMemoryFeatureFlagBitsKHR { | 
|  | VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT_KHR           = 0x00000001, | 
|  | VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT_KHR               = 0x00000002, | 
|  | VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT_KHR               = 0x00000004, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_semaphore_capabilities") // 77 | 
|  | type VkFlags VkExternalSemaphoreHandleTypeFlagsKHR | 
|  | @extension("VK_KHR_external_semaphore_capabilities") // 77 | 
|  | bitfield VkExternalSemaphoreHandleTypeFlagBitsKHR { | 
|  | VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR         = 0x00000001 | 
|  | VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR      = 0x00000002 | 
|  | VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR  = 0x00000004 | 
|  | VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT_KHR       = 0x00000008 | 
|  | VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_FENCE_FD_BIT_KHR          = 0x00000010 | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_semaphore_capabilities") // 77 | 
|  | type VkFlags VkExternalSemaphoreFeatureFlagsKHR | 
|  | @extension("VK_KHR_external_semaphore_capabilities") // 77 | 
|  | bitfield VkExternalSemaphoreFeatureFlagBitsKHR { | 
|  | VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT_KHR            = 0x00000001, | 
|  | VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT_KHR            = 0x00000002, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_semaphore") // 78 | 
|  | type VkFlags VkSemaphoreImportFlagsKHR | 
|  | @extension("VK_KHR_external_semaphore") // 78 | 
|  | bitfield VkSemaphoreImportFlagBitsKHR { | 
|  | VK_SEMAPHORE_IMPORT_TEMPORARY_BIT_KHR                       = 0x00000001, | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_conditional_rendering") // 82 | 
|  | type VkFlags VkConditionalRenderingFlagsEXT | 
|  | @extension("VK_EXT_conditional_rendering") // 82 | 
|  | bitfield VkConditionalRenderingFlagBitsEXT { | 
|  | VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT                   = 0x00000001, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_descriptor_update_template") // 86 | 
|  | type VkFlags VkDescriptorUpdateTemplateCreateFlagsKHR | 
|  | //@extension("VK_KHR_descriptor_update_template") // 86 | 
|  | //bitfield VkDescriptorUpdateTemplateCreateFlagBitsKHR { | 
|  | //} | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | type VkFlags VkIndirectCommandsLayoutUsageFlagsNVX | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | bitfield VkIndirectCommandsLayoutUsageFlagBitsNVX { | 
|  | VK_INDIRECT_COMMANDS_LAYOUT_USAGE_UNORDERED_SEQUENCES_BIT_NVX   = 0x00000001, | 
|  | VK_INDIRECT_COMMANDS_LAYOUT_USAGE_SPARSE_SEQUENCES_BIT_NVX      = 0x00000002, | 
|  | VK_INDIRECT_COMMANDS_LAYOUT_USAGE_EMPTY_EXECUTIONS_BIT_NVX      = 0x00000004, | 
|  | VK_INDIRECT_COMMANDS_LAYOUT_USAGE_INDEXED_SEQUENCES_BIT_NVX     = 0x00000008, | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | type VkFlags VkObjectEntryUsageFlagsNVX | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | bitfield VkObjectEntryUsageFlagBitsNVX { | 
|  | VK_OBJECT_ENTRY_USAGE_GRAPHICS_BIT_NVX                  = 0x00000001, | 
|  | VK_OBJECT_ENTRY_USAGE_COMPUTE_BIT_NVX                   = 0x00000002, | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_display_surface_counter") // 91 | 
|  | type VkFlags VkSurfaceCounterFlagsEXT | 
|  | @extension("VK_EXT_display_surface_counter") // 91 | 
|  | bitfield VkSurfaceCounterFlagBitsEXT { | 
|  | VK_SURFACE_COUNTER_VBLANK_EXT                           = 0x00000001, | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_viewport_swizzle") // 99 | 
|  | type VkFlags VkPipelineViewportSwizzleStateCreateFlagsNV | 
|  | //@extension("VK_NV_viewport_swizzle") // 99 | 
|  | //bitfield VkPipelineViewportSwizzleStateCreateFlagBitsNV { | 
|  | //} | 
|  |  | 
|  | @extension("VK_EXT_discard_rectangles") // 100 | 
|  | type VkFlags VkPipelineDiscardRectangleStateCreateFlagsEXT | 
|  | //@extension("VK_EXT_discard_rectangles") // 100 | 
|  | //bitfield VkPipelineDiscardRectangleStateCreateFlagBitsEXT { | 
|  | //} | 
|  |  | 
|  | @extension("VK_EXT_conservative_rasterization") // 102 | 
|  | type VkFlags VkPipelineRasterizationConservativeStateCreateFlagsEXT | 
|  | //@extension("VK_EXT_conservative_rasterization") // 102 | 
|  | //bitfield VkPipelineRasterizationConservativeStateCreateFlagBitsEXT { | 
|  | //} | 
|  |  | 
|  | @extension("VK_KHR_external_fence_capabilities") // 113 | 
|  | type VkFlags VkExternalFenceHandleTypeFlagsKHR | 
|  | @extension("VK_KHR_external_fence_capabilities") // 113 | 
|  | bitfield VkExternalFenceHandleTypeFlagBitsKHR { | 
|  | VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT_KHR         = 0x00000001, | 
|  | VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT_KHR      = 0x00000002, | 
|  | VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT_KHR  = 0x00000004, | 
|  | VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT_KHR           = 0x00000008, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_fence_capabilities") // 113 | 
|  | type VkFlags VkExternalFenceFeatureFlagsKHR | 
|  | @extension("VK_KHR_external_fence_capabilities") // 113 | 
|  | bitfield VkExternalFenceFeatureFlagBitsKHR { | 
|  | VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT_KHR            = 0x00000001, | 
|  | VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT_KHR            = 0x00000002, | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_fence") // 114 | 
|  | type VkFlags VkFenceImportFlagsKHR | 
|  | @extension("VK_KHR_external_fence") // 114 | 
|  | bitfield VkFenceImportFlagBitsKHR { | 
|  | VK_FENCE_IMPORT_TEMPORARY_BIT_KHR                       = 0x00000001, | 
|  | } | 
|  |  | 
|  | @extension("VK_MVK_ios_surface") // 123 | 
|  | type VkFlags VkIOSSurfaceCreateFlagsMVK | 
|  | //@extension("VK_MVK_ios_surface") // 123 | 
|  | //bitfield VkIOSSurfaceCreateFlagBitsMVK { | 
|  | //} | 
|  |  | 
|  | @extension("VK_MVK_macos_surface") // 124 | 
|  | type VkFlags VkMacOSSurfaceCreateFlagsMVK | 
|  | //@extension("VK_MVK_macos_surface") // 124 | 
|  | //bitfield VkMacOSSurfaceCreateFlagBitsMVK { | 
|  | //} | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | type VkFlags VkDebugUtilsMessengerCallbackDataFlagsEXT | 
|  | //@extension("VK_EXT_debug_utils") // 129 | 
|  | //bitfield VkDebugUtilsMessengerCallbackDataFlagBitsEXT { | 
|  | //} | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | type VkFlags VkDebugUtilsMessengerCreateFlagsEXT | 
|  | //@extension("VK_EXT_debug_utils") // 129 | 
|  | //bitfield VkDebugUtilsMessengerCreateFlagBitsEXT { | 
|  | //} | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | type VkFlags VkDebugUtilsMessageSeverityFlagsEXT | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | bitfield VkDebugUtilsMessageSeverityFlagBitsEXT { | 
|  | VK_DEBUG_UTILS_MESSAGE_SEVERITY_VERBOSE_BIT_EXT = 0x00000001, | 
|  | VK_DEBUG_UTILS_MESSAGE_SEVERITY_INFO_BIT_EXT    = 0x00000010, | 
|  | VK_DEBUG_UTILS_MESSAGE_SEVERITY_WARNING_BIT_EXT = 0x00000100, | 
|  | VK_DEBUG_UTILS_MESSAGE_SEVERITY_ERROR_BIT_EXT   = 0x00001000, | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | type VkFlags VkDebugUtilsMessageTypeFlagsEXT | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | bitfield VkDebugUtilsMessageTypeFlagBitsEXT { | 
|  | VK_DEBUG_UTILS_MESSAGE_TYPE_GENERAL_BIT_EXT     = 0x00000001, | 
|  | VK_DEBUG_UTILS_MESSAGE_TYPE_VALIDATION_BIT_EXT  = 0x00000002, | 
|  | VK_DEBUG_UTILS_MESSAGE_TYPE_PERFORMANCE_BIT_EXT = 0x00000004, | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_fragment_coverage_to_color") // 150 | 
|  | type VkFlags VkPipelineCoverageToColorStateCreateFlagsNV | 
|  | @extension("VK_NV_fragment_coverage_to_color") // 150 | 
|  | //bitfield VkPipelineCoverageToColorStateCreateFlagBitsNV { | 
|  | //} | 
|  |  | 
|  | @extension("VK_NV_framebuffer_mixed_samples") // 153 | 
|  | type VkFlags VkPipelineCoverageModulationStateCreateFlagsNV | 
|  | @extension("VK_NV_framebuffer_mixed_samples") // 153 | 
|  | //bitfield VkPipelineCoverageModulationStateCreateFlagBitsNV { | 
|  | //} | 
|  |  | 
|  | @extension("VK_EXT_validation_cache") // 161 | 
|  | type VkFlags VkValidationCacheCreateFlagsEXT | 
|  | @extension("VK_EXT_validation_cache") // 161 | 
|  | //bitfield VkValidationCacheCreateFlagBitsEXT { | 
|  | //} | 
|  |  | 
|  | @extension("VK_EXT_descriptor_indexing") // 162 | 
|  | type VkFlags VkDescriptorBindingFlagsEXT | 
|  | @extension("VK_EXT_descriptor_indexing") // 162 | 
|  | bitfield VkDescriptorBindingFlagBitsEXT { | 
|  | VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT_EXT             = 0x00000001, | 
|  | VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT_EXT   = 0x00000002, | 
|  | VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT_EXT               = 0x00000004, | 
|  | VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT_EXT     = 0x00000008, | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | type VkFlags VkGeometryFlagsNV | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | bitfield VkGeometryFlagBitsNV { | 
|  | VK_GEOMETRY_OPAQUE_BIT_NV                           = 0x00000001, | 
|  | VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_NV  = 0x00000002, | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | type VkFlags VkGeometryInstanceFlagsNV | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | bitfield VkGeometryInstanceFlagBitsNV { | 
|  | VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV           = 0x00000001, | 
|  | VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_NV = 0x00000002, | 
|  | VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_NV                    = 0x00000004, | 
|  | VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_NV                 = 0x00000008, | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | type VkFlags VkBuildAccelerationStructureFlagsNV | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | bitfield VkBuildAccelerationStructureFlagBitsNV { | 
|  | VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_NV         = 0x00000001, | 
|  | VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_NV     = 0x00000002, | 
|  | VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_NV    = 0x00000004, | 
|  | VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_NV    = 0x00000008, | 
|  | VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_NV           = 0x00000010, | 
|  | } | 
|  |  | 
|  | @extension("VK_FUCHSIA_imagepipe_surface") // 215 | 
|  | type VkFlags VkImagePipeSurfaceCreateFlagsFUCHSIA | 
|  | //@extension("VK_FUCHSIA_imagepipe_surface") // 215 | 
|  | //bitfield VkImagePipeSurfaceCreateFlagBitsFUCHSIA { | 
|  | //} | 
|  |  | 
|  | ////////////////// | 
|  | //  Structures  // | 
|  | ////////////////// | 
|  |  | 
|  | class VkOffset2D { | 
|  | s32                                         x | 
|  | s32                                         y | 
|  | } | 
|  |  | 
|  | class VkOffset3D { | 
|  | s32                                         x | 
|  | s32                                         y | 
|  | s32                                         z | 
|  | } | 
|  |  | 
|  | class VkExtent2D { | 
|  | u32                                         width | 
|  | u32                                         height | 
|  | } | 
|  |  | 
|  | class VkExtent3D { | 
|  | u32                                         width | 
|  | u32                                         height | 
|  | u32                                         depth | 
|  | } | 
|  |  | 
|  | class VkViewport { | 
|  | f32                                         x | 
|  | f32                                         y | 
|  | f32                                         width | 
|  | f32                                         height | 
|  | f32                                         minDepth | 
|  | f32                                         maxDepth | 
|  | } | 
|  |  | 
|  | class VkRect2D { | 
|  | VkOffset2D                                  offset | 
|  | VkExtent2D                                  extent | 
|  | } | 
|  |  | 
|  | class VkClearRect { | 
|  | VkRect2D                                    rect | 
|  | u32                                         baseArrayLayer | 
|  | u32                                         layerCount | 
|  | } | 
|  |  | 
|  | class VkComponentMapping { | 
|  | VkComponentSwizzle                          r | 
|  | VkComponentSwizzle                          g | 
|  | VkComponentSwizzle                          b | 
|  | VkComponentSwizzle                          a | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceProperties { | 
|  | u32                                         apiVersion | 
|  | u32                                         driverVersion | 
|  | u32                                         vendorID | 
|  | u32                                         deviceID | 
|  | VkPhysicalDeviceType                        deviceType | 
|  | char[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE]      deviceName | 
|  | u8[VK_UUID_SIZE]                            pipelineCacheUUID | 
|  | VkPhysicalDeviceLimits                      limits | 
|  | VkPhysicalDeviceSparseProperties            sparseProperties | 
|  | } | 
|  |  | 
|  | class VkExtensionProperties { | 
|  | char[VK_MAX_EXTENSION_NAME_SIZE]            extensionName      /// extension name | 
|  | u32                                         specVersion        /// version of the extension specification implemented | 
|  | } | 
|  |  | 
|  | class VkLayerProperties { | 
|  | char[VK_MAX_EXTENSION_NAME_SIZE]            layerName               /// layer name | 
|  | u32                                         specVersion             /// version of the layer specification implemented | 
|  | u32                                         implementationVersion   /// build or release version of the layer's library | 
|  | char[VK_MAX_DESCRIPTION_SIZE]               description             /// Free-form description of the layer | 
|  | } | 
|  |  | 
|  | class VkSubmitInfo { | 
|  | VkStructureType                             sType              /// Type of structure. Should be VK_STRUCTURE_TYPE_SUBMIT_INFO | 
|  | const void*                                 pNext              /// Next structure in chain | 
|  | u32                                         waitSemaphoreCount | 
|  | const VkSemaphore*                          pWaitSemaphores | 
|  | const VkPipelineStageFlags*                 pWaitDstStageMask | 
|  | u32                                         commandBufferCount | 
|  | const VkCommandBuffer*                      pCommandBuffers | 
|  | u32                                         signalSemaphoreCount | 
|  | const VkSemaphore*                          pSignalSemaphores | 
|  | } | 
|  |  | 
|  | class VkApplicationInfo { | 
|  | VkStructureType                             sType              /// Type of structure. Should be VK_STRUCTURE_TYPE_APPLICATION_INFO | 
|  | const void*                                 pNext              /// Next structure in chain | 
|  | const char*                                 pApplicationName | 
|  | u32                                         applicationVersion | 
|  | const char*                                 pEngineName | 
|  | u32                                         engineVersion | 
|  | u32                                         apiVersion | 
|  | } | 
|  |  | 
|  | class VkAllocationCallbacks { | 
|  | void*                                       pUserData | 
|  | PFN_vkAllocationFunction                    pfnAllocation | 
|  | PFN_vkReallocationFunction                  pfnReallocation | 
|  | PFN_vkFreeFunction                          pfnFree | 
|  | PFN_vkInternalAllocationNotification        pfnInternalAllocation | 
|  | PFN_vkInternalFreeNotification              pfnInternalFree | 
|  | } | 
|  |  | 
|  | class VkDeviceQueueCreateInfo { | 
|  | VkStructureType                             sStype                    /// Should be VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO | 
|  | const void*                                 pNext                     /// Pointer to next structure | 
|  | VkDeviceQueueCreateFlags                    flags | 
|  | u32                                         queueFamilyIndex | 
|  | u32                                         queueCount | 
|  | const f32*                                  pQueuePriorities | 
|  | } | 
|  |  | 
|  | class VkDeviceCreateInfo { | 
|  | VkStructureType                             sType                      /// Should be VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO | 
|  | const void*                                 pNext                      /// Pointer to next structure | 
|  | VkDeviceCreateFlags                         flags | 
|  | u32                                         queueCreateInfoCount | 
|  | const VkDeviceQueueCreateInfo*              pQueueCreateInfos | 
|  | u32                                         enabledLayerCount | 
|  | const char* const*                          ppEnabledLayerNames        /// Ordered list of layer names to be enabled | 
|  | u32                                         enabledExtensionCount | 
|  | const char* const*                          ppEnabledExtensionNames | 
|  | const VkPhysicalDeviceFeatures*             pEnabledFeatures | 
|  | } | 
|  |  | 
|  | class VkInstanceCreateInfo { | 
|  | VkStructureType                             sType                      /// Should be VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO | 
|  | const void*                                 pNext                      /// Pointer to next structure | 
|  | VkInstanceCreateFlags                       flags | 
|  | const VkApplicationInfo*                    pApplicationInfo | 
|  | u32                                         enabledLayerCount | 
|  | const char* const*                          ppEnabledLayerNames        /// Ordered list of layer names to be enabled | 
|  | u32                                         enabledExtensionCount | 
|  | const char* const*                          ppEnabledExtensionNames    /// Extension names to be enabled | 
|  | } | 
|  |  | 
|  | class VkQueueFamilyProperties { | 
|  | VkQueueFlags                                queueFlags                 /// Queue flags | 
|  | u32                                         queueCount | 
|  | u32                                         timestampValidBits | 
|  | VkExtent3D                                  minImageTransferGranularity | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceMemoryProperties { | 
|  | u32                                         memoryTypeCount | 
|  | VkMemoryType[VK_MAX_MEMORY_TYPES]           memoryTypes | 
|  | u32                                         memoryHeapCount | 
|  | VkMemoryHeap[VK_MAX_MEMORY_HEAPS]           memoryHeaps | 
|  | } | 
|  |  | 
|  | class VkMemoryAllocateInfo { | 
|  | VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO | 
|  | const void*                                 pNext                      /// Pointer to next structure | 
|  | VkDeviceSize                                allocationSize             /// Size of memory allocation | 
|  | u32                                         memoryTypeIndex            /// Index of the of the memory type to allocate from | 
|  | } | 
|  |  | 
|  | class VkMemoryRequirements { | 
|  | VkDeviceSize                                size                       /// Specified in bytes | 
|  | VkDeviceSize                                alignment                  /// Specified in bytes | 
|  | u32                                         memoryTypeBits             /// Bitfield of the allowed memory type indices into memoryTypes[] for this object | 
|  | } | 
|  |  | 
|  | class VkSparseImageFormatProperties { | 
|  | VkImageAspectFlagBits                       aspectMask | 
|  | VkExtent3D                                  imageGranularity | 
|  | VkSparseImageFormatFlags                    flags | 
|  | } | 
|  |  | 
|  | class VkSparseImageMemoryRequirements { | 
|  | VkSparseImageFormatProperties               formatProperties | 
|  | u32                                         imageMipTailFirstLod | 
|  | VkDeviceSize                                imageMipTailSize           /// Specified in bytes, must be a multiple of image block size / alignment | 
|  | VkDeviceSize                                imageMipTailOffset         /// Specified in bytes, must be a multiple of image block size / alignment | 
|  | VkDeviceSize                                imageMipTailStride         /// Specified in bytes, must be a multiple of image block size / alignment | 
|  | } | 
|  |  | 
|  | class VkMemoryType { | 
|  | VkMemoryPropertyFlags                       propertyFlags              /// Memory properties of this memory type | 
|  | u32                                         heapIndex                  /// Index of the memory heap allocations of this memory type are taken from | 
|  | } | 
|  |  | 
|  | class VkMemoryHeap { | 
|  | VkDeviceSize                                size                       /// Available memory in the heap | 
|  | VkMemoryHeapFlags                           flags                      /// Flags for the heap | 
|  | } | 
|  |  | 
|  | class VkMappedMemoryRange { | 
|  | VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE | 
|  | const void*                                 pNext                      /// Pointer to next structure | 
|  | VkDeviceMemory                              memory                     /// Mapped memory object | 
|  | VkDeviceSize                                offset                     /// Offset within the mapped memory the range starts from | 
|  | VkDeviceSize                                size                       /// Size of the range within the mapped memory | 
|  | } | 
|  |  | 
|  | class VkFormatProperties { | 
|  | VkFormatFeatureFlags                        linearTilingFeatures       /// Format features in case of linear tiling | 
|  | VkFormatFeatureFlags                        optimalTilingFeatures      /// Format features in case of optimal tiling | 
|  | VkFormatFeatureFlags                        bufferFeatures             /// Format features supported by buffers | 
|  | } | 
|  |  | 
|  | class VkImageFormatProperties { | 
|  | VkExtent3D                                  maxExtent                  /// max image dimensions for this resource type | 
|  | u32                                         maxMipLevels               /// max number of mipmap levels for this resource type | 
|  | u32                                         maxArrayLayers             /// max array layers for this resource type | 
|  | VkSampleCountFlags                          sampleCounts               /// supported sample counts for this resource type | 
|  | VkDeviceSize                                maxResourceSize            /// max size (in bytes) of this resource type | 
|  | } | 
|  |  | 
|  | class VkDescriptorImageInfo { | 
|  | VkSampler                                   sampler | 
|  | VkImageView                                 imageView | 
|  | VkImageLayout                               imageLayout | 
|  | } | 
|  |  | 
|  | class VkDescriptorBufferInfo { | 
|  | VkBuffer                                    buffer                     /// Buffer used for this descriptor when the descriptor is UNIFORM_BUFFER[_DYNAMIC] | 
|  | VkDeviceSize                                offset                     /// Base offset from buffer start in bytes to update in the descriptor set. | 
|  | VkDeviceSize                                range                      /// Size in bytes of the buffer resource for this descriptor update. | 
|  | } | 
|  |  | 
|  | class VkWriteDescriptorSet { | 
|  | VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET | 
|  | const void*                                 pNext                      /// Pointer to next structure | 
|  | VkDescriptorSet                             dstSet                     /// Destination descriptor set | 
|  | u32                                         dstBinding                 /// Binding within the destination descriptor set to write | 
|  | u32                                         dstArrayElement            /// Array element within the destination binding to write | 
|  | u32                                         descriptorCount            /// Number of descriptors to write (determines the size of the array pointed by <pDescriptors>) | 
|  | VkDescriptorType                            descriptorType             /// Descriptor type to write (determines which fields of the array pointed by <pDescriptors> are going to be used) | 
|  | const VkDescriptorImageInfo*                pImageInfo | 
|  | const VkDescriptorBufferInfo*               pBufferInfo | 
|  | const VkBufferView*                         pTexelBufferView | 
|  | } | 
|  |  | 
|  | class VkCopyDescriptorSet { | 
|  | VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET | 
|  | const void*                                 pNext                      /// Pointer to next structure | 
|  | VkDescriptorSet                             srcSet                     /// Source descriptor set | 
|  | u32                                         srcBinding                 /// Binding within the source descriptor set to copy from | 
|  | u32                                         srcArrayElement            /// Array element within the source binding to copy from | 
|  | VkDescriptorSet                             dstSet                     /// Destination descriptor set | 
|  | u32                                         dstBinding                 /// Binding within the destination descriptor set to copy to | 
|  | u32                                         dstArrayElement            /// Array element within the destination binding to copy to | 
|  | u32                                         descriptorCount            /// Number of descriptors to copy | 
|  | } | 
|  |  | 
|  | class VkBufferCreateInfo { | 
|  | VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO | 
|  | const void*                                 pNext                      /// Pointer to next structure. | 
|  | VkBufferCreateFlags                         flags                      /// Buffer creation flags | 
|  | VkDeviceSize                                size                       /// Specified in bytes | 
|  | VkBufferUsageFlags                          usage                      /// Buffer usage flags | 
|  | VkSharingMode                               sharingMode | 
|  | u32                                         queueFamilyIndexCount | 
|  | const u32*                                  pQueueFamilyIndices | 
|  | } | 
|  |  | 
|  | class VkBufferViewCreateInfo { | 
|  | VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO | 
|  | const void*                                 pNext                      /// Pointer to next structure. | 
|  | VkBufferViewCreateFlags                     flags | 
|  | VkBuffer                                    buffer | 
|  | VkFormat                                    format                     /// Optionally specifies format of elements | 
|  | VkDeviceSize                                offset                     /// Specified in bytes | 
|  | VkDeviceSize                                range                      /// View size specified in bytes | 
|  | } | 
|  |  | 
|  | class VkImageSubresource { | 
|  | VkImageAspectFlagBits                       aspectMask | 
|  | u32                                         mipLevel | 
|  | u32                                         arrayLayer | 
|  | } | 
|  |  | 
|  | class VkImageSubresourceRange { | 
|  | VkImageAspectFlags                          aspectMask | 
|  | u32                                         baseMipLevel | 
|  | u32                                         levelCount | 
|  | u32                                         baseArrayLayer | 
|  | u32                                         layerCount | 
|  | } | 
|  |  | 
|  | class VkMemoryBarrier { | 
|  | VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_MEMORY_BARRIER | 
|  | const void*                                 pNext                      /// Pointer to next structure. | 
|  | VkAccessFlags                               srcAccessMask | 
|  | VkAccessFlags                               dstAccessMask | 
|  | } | 
|  |  | 
|  | class VkBufferMemoryBarrier { | 
|  | VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER | 
|  | const void*                                 pNext                      /// Pointer to next structure. | 
|  | VkAccessFlags                               srcAccessMask | 
|  | VkAccessFlags                               dstAccessMask | 
|  | u32                                         srcQueueFamilyIndex        /// Queue family to transition ownership from | 
|  | u32                                         dstQueueFamilyIndex        /// Queue family to transition ownership to | 
|  | VkBuffer                                    buffer                     /// Buffer to sync | 
|  | VkDeviceSize                                offset                     /// Offset within the buffer to sync | 
|  | VkDeviceSize                                size                       /// Amount of bytes to sync | 
|  | } | 
|  |  | 
|  | class VkImageMemoryBarrier { | 
|  | VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER | 
|  | const void*                                 pNext                      /// Pointer to next structure. | 
|  | VkAccessFlags                               srcAccessMask | 
|  | VkAccessFlags                               dstAccessMask | 
|  | VkImageLayout                               oldLayout                  /// Current layout of the image | 
|  | VkImageLayout                               newLayout                  /// New layout to transition the image to | 
|  | u32                                         srcQueueFamilyIndex        /// Queue family to transition ownership from | 
|  | u32                                         dstQueueFamilyIndex        /// Queue family to transition ownership to | 
|  | VkImage                                     image                      /// Image to sync | 
|  | VkImageSubresourceRange                     subresourceRange           /// Subresource range to sync | 
|  | } | 
|  |  | 
|  | class VkImageCreateInfo { | 
|  | VkStructureType                             sType                      /// Must be VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO | 
|  | const void*                                 pNext                      /// Pointer to next structure. | 
|  | VkImageCreateFlags                          flags                      /// Image creation flags | 
|  | VkImageType                                 imageType | 
|  | VkFormat                                    format | 
|  | VkExtent3D                                  extent | 
|  | u32                                         mipLevels | 
|  | u32                                         arrayLayers | 
|  | VkSampleCountFlagBits                       samples | 
|  | VkImageTiling                               tiling | 
|  | VkImageUsageFlags                           usage                      /// Image usage flags | 
|  | VkSharingMode                               sharingMode                /// Cross-queue-family sharing mode | 
|  | u32                                         queueFamilyIndexCount      /// Number of queue families to share across | 
|  | const u32*                                  pQueueFamilyIndices        /// Array of queue family indices to share across | 
|  | VkImageLayout                               initialLayout              /// Initial image layout for all subresources | 
|  | } | 
|  |  | 
|  | class VkSubresourceLayout { | 
|  | VkDeviceSize                                offset                 /// Specified in bytes | 
|  | VkDeviceSize                                size                   /// Specified in bytes | 
|  | VkDeviceSize                                rowPitch               /// Specified in bytes | 
|  | VkDeviceSize                                arrayPitch             /// Specified in bytes | 
|  | VkDeviceSize                                depthPitch             /// Specified in bytes | 
|  | } | 
|  |  | 
|  | class VkImageViewCreateInfo { | 
|  | VkStructureType                             sType                  /// Must be VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO | 
|  | const void*                                 pNext                  /// Pointer to next structure | 
|  | VkImageViewCreateFlags                      flags | 
|  | VkImage                                     image | 
|  | VkImageViewType                             viewType | 
|  | VkFormat                                    format | 
|  | VkComponentMapping                          components | 
|  | VkImageSubresourceRange                     subresourceRange | 
|  | } | 
|  |  | 
|  | class VkBufferCopy { | 
|  | VkDeviceSize                                srcOffset              /// Specified in bytes | 
|  | VkDeviceSize                                dstOffset              /// Specified in bytes | 
|  | VkDeviceSize                                size                   /// Specified in bytes | 
|  | } | 
|  |  | 
|  | class VkSparseMemoryBind { | 
|  | VkDeviceSize                                resourceOffset        /// Specified in bytes | 
|  | VkDeviceSize                                size                  /// Specified in bytes | 
|  | VkDeviceMemory                              memory | 
|  | VkDeviceSize                                memoryOffset          /// Specified in bytes | 
|  | VkSparseMemoryBindFlags                     flags | 
|  | } | 
|  |  | 
|  | class VkSparseImageMemoryBind { | 
|  | VkImageSubresource                          subresource | 
|  | VkOffset3D                                  offset | 
|  | VkExtent3D                                  extent | 
|  | VkDeviceMemory                              memory | 
|  | VkDeviceSize                                memoryOffset          /// Specified in bytes | 
|  | VkSparseMemoryBindFlags                     flags | 
|  | } | 
|  |  | 
|  | class VkSparseBufferMemoryBindInfo { | 
|  | VkBuffer                                    buffer | 
|  | u32                                         bindCount | 
|  | const VkSparseMemoryBind*                   pBinds | 
|  | } | 
|  |  | 
|  | class VkSparseImageOpaqueMemoryBindInfo { | 
|  | VkImage                                     image | 
|  | u32                                         bindCount | 
|  | const VkSparseMemoryBind*                   pBinds | 
|  | } | 
|  |  | 
|  | class VkSparseImageMemoryBindInfo { | 
|  | VkImage                                     image | 
|  | u32                                         bindCount | 
|  | const VkSparseMemoryBind*                   pBinds | 
|  | } | 
|  |  | 
|  | class VkBindSparseInfo { | 
|  | VkStructureType                             sType                 /// Must be VK_STRUCTURE_TYPE_BIND_SPARSE_INFO | 
|  | const void*                                 pNext | 
|  | u32                                         waitSemaphoreCount | 
|  | const VkSemaphore*                          pWaitSemaphores | 
|  | u32                                         numBufferBinds | 
|  | const VkSparseBufferMemoryBindInfo*         pBufferBinds | 
|  | u32                                         numImageOpaqueBinds | 
|  | const VkSparseImageOpaqueMemoryBindInfo*    pImageOpaqueBinds | 
|  | u32                                         numImageBinds | 
|  | const VkSparseImageMemoryBindInfo*          pImageBinds | 
|  | u32                                         signalSemaphoreCount | 
|  | const VkSemaphore*                          pSignalSemaphores | 
|  | } | 
|  |  | 
|  | class VkImageSubresourceLayers { | 
|  | VkImageAspectFlags                          aspectMask | 
|  | u32                                         mipLevel | 
|  | u32                                         baseArrayLayer | 
|  | u32                                         layerCount | 
|  | } | 
|  |  | 
|  | class VkImageCopy { | 
|  | VkImageSubresourceLayers                    srcSubresource | 
|  | VkOffset3D                                  srcOffset             /// Specified in pixels for both compressed and uncompressed images | 
|  | VkImageSubresourceLayers                    dstSubresource | 
|  | VkOffset3D                                  dstOffset             /// Specified in pixels for both compressed and uncompressed images | 
|  | VkExtent3D                                  extent                /// Specified in pixels for both compressed and uncompressed images | 
|  | } | 
|  |  | 
|  | class VkImageBlit { | 
|  | VkImageSubresourceLayers                    srcSubresource | 
|  | VkOffset3D[2]                               srcOffsets | 
|  | VkImageSubresourceLayers                    dstSubresource | 
|  | VkOffset3D[2]                               dstOffsets | 
|  | } | 
|  |  | 
|  | class VkBufferImageCopy { | 
|  | VkDeviceSize                                bufferOffset           /// Specified in bytes | 
|  | u32                                         bufferRowLength        /// Specified in texels | 
|  | u32                                         bufferImageHeight | 
|  | VkImageSubresourceLayers                    imageSubresource | 
|  | VkOffset3D                                  imageOffset            /// Specified in pixels for both compressed and uncompressed images | 
|  | VkExtent3D                                  imageExtent            /// Specified in pixels for both compressed and uncompressed images | 
|  | } | 
|  |  | 
|  | class VkImageResolve { | 
|  | VkImageSubresourceLayers                    srcSubresource | 
|  | VkOffset3D                                  srcOffset | 
|  | VkImageSubresourceLayers                    dstSubresource | 
|  | VkOffset3D                                  dstOffset | 
|  | VkExtent3D                                  extent | 
|  | } | 
|  |  | 
|  | class VkShaderModuleCreateInfo { | 
|  | VkStructureType                             sType                  /// Must be VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO | 
|  | const void*                                 pNext                  /// Pointer to next structure | 
|  | VkShaderModuleCreateFlags                   flags                  /// Reserved | 
|  | platform.size_t                             codeSize               /// Specified in bytes | 
|  | const u32*                                  pCode                  /// Binary code of size codeSize | 
|  | } | 
|  |  | 
|  | class VkDescriptorSetLayoutBinding { | 
|  | u32                                         binding | 
|  | VkDescriptorType                            descriptorType     /// Type of the descriptors in this binding | 
|  | u32                                         descriptorCount    /// Number of descriptors in this binding | 
|  | VkShaderStageFlags                          stageFlags         /// Shader stages this binding is visible to | 
|  | const VkSampler*                            pImmutableSamplers /// Immutable samplers (used if descriptor type is SAMPLER or COMBINED_IMAGE_SAMPLER, is either NULL or contains <count> number of elements) | 
|  | } | 
|  |  | 
|  | class VkDescriptorSetLayoutCreateInfo { | 
|  | VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO | 
|  | const void*                                 pNext              /// Pointer to next structure | 
|  | VkDescriptorSetLayoutCreateFlags            flags | 
|  | u32                                         bindingCount       /// Number of bindings in the descriptor set layout | 
|  | const VkDescriptorSetLayoutBinding*         pBindings          /// Array of descriptor set layout bindings | 
|  | } | 
|  |  | 
|  | class VkDescriptorPoolSize { | 
|  | VkDescriptorType                            type | 
|  | u32                                         descriptorCount | 
|  | } | 
|  |  | 
|  | class VkDescriptorPoolCreateInfo { | 
|  | VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO | 
|  | const void*                                 pNext              /// Pointer to next structure | 
|  | VkDescriptorPoolCreateFlags                 flags | 
|  | u32                                         maxSets | 
|  | u32                                         poolSizeCount | 
|  | const VkDescriptorPoolSize*                 pPoolSizes | 
|  | } | 
|  |  | 
|  | class VkDescriptorSetAllocateInfo { | 
|  | VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO | 
|  | const void*                                 pNext              /// Pointer to next structure | 
|  | VkDescriptorPool                            descriptorPool | 
|  | u32                                         setCount | 
|  | const VkDescriptorSetLayout*                pSetLayouts | 
|  | } | 
|  |  | 
|  | class VkSpecializationMapEntry { | 
|  | u32                                         constantID         /// The SpecConstant ID specified in the BIL | 
|  | u32                                         offset             /// Offset of the value in the data block | 
|  | platform.size_t                             size               /// Size in bytes of the SpecConstant | 
|  | } | 
|  |  | 
|  | class VkSpecializationInfo { | 
|  | u32                                         mapEntryCount      /// Number of entries in the map | 
|  | const VkSpecializationMapEntry*             pMapEntries        /// Array of map entries | 
|  | platform.size_t                             dataSize           /// Size in bytes of pData | 
|  | const void*                                 pData              /// Pointer to SpecConstant data | 
|  | } | 
|  |  | 
|  | class VkPipelineShaderStageCreateInfo { | 
|  | VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO | 
|  | const void*                                 pNext              /// Pointer to next structure | 
|  | VkPipelineShaderStageCreateFlags            flags | 
|  | VkShaderStageFlagBits                       stage | 
|  | VkShaderModule                              module | 
|  | const char*                                 pName | 
|  | const VkSpecializationInfo*                 pSpecializationInfo | 
|  | } | 
|  |  | 
|  | class VkComputePipelineCreateInfo { | 
|  | VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO | 
|  | const void*                                 pNext              /// Pointer to next structure | 
|  | VkPipelineCreateFlags                       flags              /// Pipeline creation flags | 
|  | VkPipelineShaderStageCreateInfo             stage | 
|  | VkPipelineLayout                            layout             /// Interface layout of the pipeline | 
|  | 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 | 
|  | 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 | 
|  | } | 
|  |  | 
|  | class VkVertexInputBindingDescription { | 
|  | u32                                         binding               /// Vertex buffer binding id | 
|  | u32                                         stride                /// Distance between vertices in bytes (0 = no advancement) | 
|  | VkVertexInputRate                           inputRate             /// Rate at which binding is incremented | 
|  | } | 
|  |  | 
|  | class VkVertexInputAttributeDescription { | 
|  | u32                                         location              /// location of the shader vertex attrib | 
|  | u32                                         binding               /// Vertex buffer binding id | 
|  | VkFormat                                    format                /// format of source data | 
|  | u32                                         offset                /// Offset of first element in bytes from base of vertex | 
|  | } | 
|  |  | 
|  | class VkPipelineVertexInputStateCreateInfo { | 
|  | VkStructureType                             sType                           /// Should be VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO | 
|  | const void*                                 pNext                           /// Pointer to next structure | 
|  | VkPipelineVertexInputStateCreateFlags       flags | 
|  | u32                                         vertexBindingDescriptionCount   /// number of bindings | 
|  | const VkVertexInputBindingDescription*      pVertexBindingDescriptions | 
|  | u32                                         vertexAttributeDescriptionCount /// number of attributes | 
|  | const VkVertexInputAttributeDescription*    pVertexAttributeDescriptions | 
|  | } | 
|  |  | 
|  | class VkPipelineInputAssemblyStateCreateInfo { | 
|  | VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO | 
|  | const void*                                 pNext      /// Pointer to next structure | 
|  | VkPipelineInputAssemblyStateCreateFlags     flags | 
|  | VkPrimitiveTopology                         topology | 
|  | VkBool32                                    primitiveRestartEnable | 
|  | } | 
|  |  | 
|  | class VkPipelineTessellationStateCreateInfo { | 
|  | VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO | 
|  | const void*                                 pNext      /// Pointer to next structure | 
|  | VkPipelineTessellationStateCreateFlags      flags | 
|  | u32                                         patchControlPoints | 
|  | } | 
|  |  | 
|  | class VkPipelineViewportStateCreateInfo { | 
|  | VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO | 
|  | const void*                                 pNext      /// Pointer to next structure | 
|  | VkPipelineViewportStateCreateFlags          flags | 
|  | u32                                         viewportCount | 
|  | const VkViewport*                           pViewports | 
|  | u32                                         scissorCount | 
|  | const VkRect2D*                             pScissors | 
|  | } | 
|  |  | 
|  | class VkPipelineRasterizationStateCreateInfo { | 
|  | VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO | 
|  | const void*                                 pNext      /// Pointer to next structure | 
|  | VkPipelineRasterizationStateCreateFlags     flags | 
|  | VkBool32                                    depthClampEnable | 
|  | VkBool32                                    rasterizerDiscardEnable | 
|  | VkPolygonMode                               polygonMode                   /// optional (GL45) | 
|  | VkCullModeFlags                             cullMode | 
|  | VkFrontFace                                 frontFace | 
|  | VkBool32                                    depthBiasEnable | 
|  | f32                                         depthBiasConstantFactor | 
|  | f32                                         depthBiasClamp | 
|  | f32                                         depthBiasSlopeFactor | 
|  | f32                                         lineWidth | 
|  | } | 
|  |  | 
|  | class VkPipelineMultisampleStateCreateInfo { | 
|  | VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO | 
|  | const void*                                 pNext      /// Pointer to next structure | 
|  | VkPipelineMultisampleStateCreateFlags       flags | 
|  | VkSampleCountFlagBits                       rasterizationSamples       /// Number of samples used for rasterization | 
|  | VkBool32                                    sampleShadingEnable        /// optional (GL45) | 
|  | f32                                         minSampleShading           /// optional (GL45) | 
|  | const VkSampleMask*                         pSampleMask | 
|  | VkBool32                                    alphaToCoverageEnable | 
|  | VkBool32                                    alphaToOneEnable | 
|  | } | 
|  |  | 
|  | class VkPipelineColorBlendAttachmentState { | 
|  | VkBool32                                    blendEnable | 
|  | VkBlendFactor                               srcColorBlendFactor | 
|  | VkBlendFactor                               dstColorBlendFactor | 
|  | VkBlendOp                                   colorBlendOp | 
|  | VkBlendFactor                               srcAlphaBlendFactor | 
|  | VkBlendFactor                               dstAlphaBlendFactor | 
|  | VkBlendOp                                   alphaBlendOp | 
|  | VkColorComponentFlags                       colorWriteMask | 
|  | } | 
|  |  | 
|  | class VkPipelineColorBlendStateCreateInfo { | 
|  | VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO | 
|  | const void*                                 pNext      /// Pointer to next structure | 
|  | VkPipelineColorBlendStateCreateFlags        flags | 
|  | VkBool32                                    logicOpEnable | 
|  | VkLogicOp                                   logicOp | 
|  | u32                                         attachmentCount    /// # of pAttachments | 
|  | const VkPipelineColorBlendAttachmentState*  pAttachments | 
|  | f32[4]                                      blendConstants | 
|  | } | 
|  |  | 
|  | class VkStencilOpState { | 
|  | VkStencilOp                                 failOp | 
|  | VkStencilOp                                 passOp | 
|  | VkStencilOp                                 depthFailOp | 
|  | VkCompareOp                                 compareOp | 
|  | u32                                         compareMask | 
|  | u32                                         writeMask | 
|  | u32                                         reference | 
|  | } | 
|  |  | 
|  | class VkPipelineDepthStencilStateCreateInfo { | 
|  | VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO | 
|  | const void*                                 pNext      /// Pointer to next structure | 
|  | VkPipelineDepthStencilStateCreateFlags      flags | 
|  | VkBool32                                    depthTestEnable | 
|  | VkBool32                                    depthWriteEnable | 
|  | VkCompareOp                                 depthCompareOp | 
|  | VkBool32                                    depthBoundsTestEnable  /// optional (depth_bounds_test) | 
|  | VkBool32                                    stencilTestEnable | 
|  | VkStencilOpState                            front | 
|  | VkStencilOpState                            back | 
|  | f32                                         minDepthBounds | 
|  | f32                                         maxDepthBounds | 
|  | } | 
|  |  | 
|  | class VkPipelineDynamicStateCreateInfo { | 
|  | VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO | 
|  | const void*                                 pNext      /// Pointer to next structure | 
|  | VkPipelineDynamicStateCreateFlags           flags | 
|  | u32                                         dynamicStateCount | 
|  | const VkDynamicState*                       pDynamicStates | 
|  | } | 
|  |  | 
|  | class VkGraphicsPipelineCreateInfo { | 
|  | VkStructureType                                 sType               /// Must be VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO | 
|  | const void*                                     pNext               /// Pointer to next structure | 
|  | VkPipelineCreateFlags                           flags               /// Pipeline creation flags | 
|  | u32                                             stageCount | 
|  | const VkPipelineShaderStageCreateInfo*          pStages             /// One entry for each active shader stage | 
|  | const VkPipelineVertexInputStateCreateInfo*     pVertexInputState | 
|  | const VkPipelineInputAssemblyStateCreateInfo*   pInputAssemblyState | 
|  | const VkPipelineTessellationStateCreateInfo*    pTessellationState | 
|  | const VkPipelineViewportStateCreateInfo*        pViewportState | 
|  | const VkPipelineRasterizationStateCreateInfo*   pRasterizationState | 
|  | const VkPipelineMultisampleStateCreateInfo*     pMultisampleState | 
|  | const VkPipelineDepthStencilStateCreateInfo*    pDepthStencilState | 
|  | const VkPipelineColorBlendStateCreateInfo*      pColorBlendState | 
|  | const VkPipelineDynamicStateCreateInfo*         pDynamicState | 
|  | VkPipelineLayout                                layout              /// Interface layout of the pipeline | 
|  | VkRenderPass                                    renderPass | 
|  | u32                                             subpass | 
|  | 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 | 
|  | 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 | 
|  | } | 
|  |  | 
|  | class VkPipelineCacheCreateInfo { | 
|  | VkStructureType                             sType                 /// Must be VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO | 
|  | const void*                                 pNext                 /// Pointer to next structure | 
|  | VkPipelineCacheCreateFlags                  flags | 
|  | platform.size_t                             initialDataSize       /// Size of initial data to populate cache, in bytes | 
|  | const void*                                 pInitialData          /// Initial data to populate cache | 
|  | } | 
|  |  | 
|  | class VkPushConstantRange { | 
|  | VkShaderStageFlags                          stageFlags   /// Which stages use the range | 
|  | u32                                         offset       /// Start of the range, in bytes | 
|  | u32                                         size        /// Length of the range, in bytes | 
|  | } | 
|  |  | 
|  | class VkPipelineLayoutCreateInfo { | 
|  | VkStructureType                             sType                   /// Must be VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO | 
|  | const void*                                 pNext                   /// Pointer to next structure | 
|  | VkPipelineLayoutCreateFlags                 flags | 
|  | u32                                         descriptorSetCount      /// Number of descriptor sets interfaced by the pipeline | 
|  | const VkDescriptorSetLayout*                pSetLayouts             /// Array of <setCount> number of descriptor set layout objects defining the layout of the | 
|  | u32                                         pushConstantRangeCount  /// Number of push-constant ranges used by the pipeline | 
|  | const VkPushConstantRange*                  pPushConstantRanges     /// Array of pushConstantRangeCount number of ranges used by various shader stages | 
|  | } | 
|  |  | 
|  | class VkSamplerCreateInfo { | 
|  | VkStructureType                             sType          /// Must be VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO | 
|  | const void*                                 pNext          /// Pointer to next structure | 
|  | VkSamplerCreateFlags                        flags | 
|  | VkFilter                                    magFilter      /// Filter mode for magnification | 
|  | VkFilter                                    minFilter      /// Filter mode for minifiation | 
|  | VkSamplerMipmapMode                         mipmapMode     /// Mipmap selection mode | 
|  | VkSamplerAddressMode                        addressModeU | 
|  | VkSamplerAddressMode                        addressModeV | 
|  | VkSamplerAddressMode                        addressModeW | 
|  | f32                                         mipLodBias | 
|  | VkBool32                                    anisotropyEnable | 
|  | f32                                         maxAnisotropy | 
|  | VkBool32                                    compareEnable | 
|  | VkCompareOp                                 compareOp | 
|  | f32                                         minLod | 
|  | f32                                         maxLod | 
|  | VkBorderColor                               borderColor | 
|  | VkBool32                                    unnormalizedCoordinates | 
|  | } | 
|  |  | 
|  | class VkCommandPoolCreateInfo { | 
|  | VkStructureType                             sType            /// Must be VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO | 
|  | const void*                                 pNext            /// Pointer to next structure | 
|  | VkCommandPoolCreateFlags                    flags            /// Command pool creation flags | 
|  | u32                                         queueFamilyIndex | 
|  | } | 
|  |  | 
|  | class VkCommandBufferAllocateInfo { | 
|  | VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO | 
|  | const void*                                 pNext      /// Pointer to next structure | 
|  | VkCommandPool                               commandPool | 
|  | VkCommandBufferLevel                        level | 
|  | u32                                         commandBufferCount | 
|  | } | 
|  |  | 
|  | class VkCommandBufferInheritanceInfo { | 
|  | VkStructureType                             sType       /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO | 
|  | const void*                                 pNext       /// Pointer to next structure | 
|  | VkRenderPass                                renderPass  /// Render pass for secondary command buffers | 
|  | u32                                         subpass | 
|  | VkFramebuffer                               framebuffer /// Framebuffer for secondary command buffers | 
|  | VkBool32                                    occlusionQueryEnable | 
|  | VkQueryControlFlags                         queryFlags | 
|  | VkQueryPipelineStatisticFlags               pipelineStatistics | 
|  | } | 
|  |  | 
|  | class VkCommandBufferBeginInfo { | 
|  | VkStructureType                             sType       /// Must be VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO | 
|  | const void*                                 pNext       /// Pointer to next structure | 
|  | VkCommandBufferUsageFlags                   flags       /// Command buffer usage flags | 
|  | const VkCommandBufferInheritanceInfo*       pInheritanceInfo | 
|  | } | 
|  |  | 
|  | class VkRenderPassBeginInfo { | 
|  | VkStructureType                             sType       /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO | 
|  | const void*                                 pNext       /// Pointer to next structure | 
|  | VkRenderPass                                renderPass | 
|  | VkFramebuffer                               framebuffer | 
|  | VkRect2D                                    renderArea | 
|  | u32                                         clearValueCount | 
|  | const VkClearValue*                         pClearValues | 
|  | } | 
|  |  | 
|  | @union | 
|  | /// Union allowing specification of floating point, integer, or unsigned integer color data. Actual value selected is based on image/attachment being cleared. | 
|  | class VkClearColorValue { | 
|  | f32[4]                                      float32 | 
|  | s32[4]                                      int32 | 
|  | u32[4]                                      uint32 | 
|  | } | 
|  |  | 
|  | class VkClearDepthStencilValue { | 
|  | f32                                         depth | 
|  | u32                                         stencil | 
|  | } | 
|  |  | 
|  | @union | 
|  | /// Union allowing specification of color, depth, and stencil color values. Actual value selected is based on attachment being cleared. | 
|  | class VkClearValue { | 
|  | VkClearColorValue                           color | 
|  | VkClearDepthStencilValue                    depthStencil | 
|  | } | 
|  |  | 
|  | class VkClearAttachment { | 
|  | VkImageAspectFlags                          aspectMask | 
|  | u32                                         colorAttachment | 
|  | VkClearValue                                clearValue | 
|  | } | 
|  |  | 
|  | class VkAttachmentDescription { | 
|  | VkAttachmentDescriptionFlags                flags | 
|  | VkFormat                                    format | 
|  | VkSampleCountFlagBits                       samples | 
|  | VkAttachmentLoadOp                          loadOp          /// Load op for color or depth data | 
|  | VkAttachmentStoreOp                         storeOp         /// Store op for color or depth data | 
|  | VkAttachmentLoadOp                          stencilLoadOp   /// Load op for stencil data | 
|  | VkAttachmentStoreOp                         stencilStoreOp  /// Store op for stencil data | 
|  | VkImageLayout                               initialLayout | 
|  | VkImageLayout                               finalLayout | 
|  | } | 
|  |  | 
|  | class VkAttachmentReference { | 
|  | u32                                         attachment | 
|  | VkImageLayout                               layout | 
|  | } | 
|  |  | 
|  | class VkSubpassDescription { | 
|  | VkSubpassDescriptionFlags                   flags | 
|  | VkPipelineBindPoint                         pipelineBindPoint  /// Must be VK_PIPELINE_BIND_POINT_GRAPHICS for now | 
|  | u32                                         inputAttachmentCount | 
|  | const VkAttachmentReference*                pInputAttachments | 
|  | u32                                         colorAttachmentCount | 
|  | const VkAttachmentReference*                pColorAttachments | 
|  | const VkAttachmentReference*                pResolveAttachments | 
|  | const VkAttachmentReference*                pDepthStencilAttachment | 
|  | u32                                         preserveAttachmentCount | 
|  | const u32*                                  pPreserveAttachments | 
|  | } | 
|  |  | 
|  | class VkSubpassDependency { | 
|  | u32                                         srcSubpass | 
|  | u32                                         dstSubpass | 
|  | VkPipelineStageFlags                        srcStageMask | 
|  | VkPipelineStageFlags                        dstStageMask | 
|  | VkAccessFlags                               srcAccessMask | 
|  | VkAccessFlags                               dstAccessMask | 
|  | VkDependencyFlags                           dependencyFlags | 
|  | } | 
|  |  | 
|  | class VkRenderPassCreateInfo { | 
|  | VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO | 
|  | const void*                                 pNext      /// Pointer to next structure | 
|  | VkRenderPassCreateFlags                     flags | 
|  | u32                                         attachmentCount | 
|  | const VkAttachmentDescription*              pAttachments | 
|  | u32                                         subpassCount | 
|  | const VkSubpassDescription*                 pSubpasses | 
|  | u32                                         dependencyCount | 
|  | const VkSubpassDependency*                  pDependencies | 
|  | } | 
|  |  | 
|  | class VkEventCreateInfo { | 
|  | VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_EVENT_CREATE_INFO | 
|  | const void*                                 pNext      /// Pointer to next structure | 
|  | VkEventCreateFlags                          flags      /// Event creation flags | 
|  | } | 
|  |  | 
|  | class VkFenceCreateInfo { | 
|  | VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_FENCE_CREATE_INFO | 
|  | const void*                                 pNext      /// Pointer to next structure | 
|  | VkFenceCreateFlags                          flags      /// Fence creation flags | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceFeatures { | 
|  | VkBool32                                    robustBufferAccess                        /// out of bounds buffer accesses are well defined | 
|  | VkBool32                                    fullDrawIndexUint32                       /// full 32-bit range of indices for indexed draw calls | 
|  | VkBool32                                    imageCubeArray                            /// image views which are arrays of cube maps | 
|  | VkBool32                                    independentBlend                          /// blending operations are controlled per-attachment | 
|  | VkBool32                                    geometryShader                            /// geometry stage | 
|  | VkBool32                                    tessellationShader                        /// tessellation control and evaluation stage | 
|  | VkBool32                                    sampleRateShading                         /// per-sample shading and interpolation | 
|  | VkBool32                                    dualSrcBlend                              /// blend operations which take two sources | 
|  | VkBool32                                    logicOp                                   /// logic operations | 
|  | VkBool32                                    multiDrawIndirect                         /// multi draw indirect | 
|  | VkBool32                                    drawIndirectFirstInstance | 
|  | VkBool32                                    depthClamp                                /// depth clamping | 
|  | VkBool32                                    depthBiasClamp                            /// depth bias clamping | 
|  | VkBool32                                    fillModeNonSolid                          /// point and wireframe fill modes | 
|  | VkBool32                                    depthBounds                               /// depth bounds test | 
|  | VkBool32                                    wideLines                                 /// lines with width greater than 1 | 
|  | VkBool32                                    largePoints                               /// points with size greater than 1 | 
|  | VkBool32                                    alphaToOne                                /// The fragment alpha channel can be forced to maximum representable alpha value | 
|  | VkBool32                                    multiViewport | 
|  | VkBool32                                    samplerAnisotropy | 
|  | VkBool32                                    textureCompressionETC2                    /// ETC texture compression formats | 
|  | VkBool32                                    textureCompressionASTC_LDR                /// ASTC LDR texture compression formats | 
|  | VkBool32                                    textureCompressionBC                      /// BC1-7 texture compressed formats | 
|  | VkBool32                                    occlusionQueryPrecise | 
|  | VkBool32                                    pipelineStatisticsQuery                   /// pipeline statistics query | 
|  | VkBool32                                    vertexPipelineStoresAndAtomics | 
|  | VkBool32                                    fragmentStoresAndAtomics | 
|  | VkBool32                                    shaderTessellationAndGeometryPointSize | 
|  | VkBool32                                    shaderImageGatherExtended                 /// texture gather with run-time values and independent offsets | 
|  | VkBool32                                    shaderStorageImageExtendedFormats         /// the extended set of formats can be used for storage images | 
|  | VkBool32                                    shaderStorageImageMultisample             /// multisample images can be used for storage images | 
|  | VkBool32                                    shaderStorageImageReadWithoutFormat | 
|  | VkBool32                                    shaderStorageImageWriteWithoutFormat | 
|  | VkBool32                                    shaderUniformBufferArrayDynamicIndexing   /// arrays of uniform buffers can be accessed with dynamically uniform indices | 
|  | VkBool32                                    shaderSampledImageArrayDynamicIndexing    /// arrays of sampled images can be accessed with dynamically uniform indices | 
|  | VkBool32                                    shaderStorageBufferArrayDynamicIndexing   /// arrays of storage buffers can be accessed with dynamically uniform indices | 
|  | VkBool32                                    shaderStorageImageArrayDynamicIndexing    /// arrays of storage images can be accessed with dynamically uniform indices | 
|  | VkBool32                                    shaderClipDistance                        /// clip distance in shaders | 
|  | VkBool32                                    shaderCullDistance                        /// cull distance in shaders | 
|  | VkBool32                                    shaderFloat64                             /// 64-bit floats (doubles) in shaders | 
|  | VkBool32                                    shaderInt64                               /// 64-bit integers in shaders | 
|  | VkBool32                                    shaderInt16                               /// 16-bit integers in shaders | 
|  | VkBool32                                    shaderResourceResidency                   /// shader can use texture operations that return resource residency information (requires sparseNonResident support) | 
|  | VkBool32                                    shaderResourceMinLod                      /// shader can use texture operations that specify minimum resource LOD | 
|  | VkBool32                                    sparseBinding                             /// Sparse resources support: Resource memory can be managed at opaque page level rather than object level | 
|  | VkBool32                                    sparseResidencyBuffer                     /// Sparse resources support: GPU can access partially resident buffers | 
|  | VkBool32                                    sparseResidencyImage2D                    /// Sparse resources support: GPU can access partially resident 2D (non-MSAA non-DepthStencil) images | 
|  | VkBool32                                    sparseResidencyImage3D                    /// Sparse resources support: GPU can access partially resident 3D images | 
|  | VkBool32                                    sparseResidency2Samples                   /// Sparse resources support: GPU can access partially resident MSAA 2D images with 2 samples | 
|  | VkBool32                                    sparseResidency4Samples                   /// Sparse resources support: GPU can access partially resident MSAA 2D images with 4 samples | 
|  | VkBool32                                    sparseResidency8Samples                   /// Sparse resources support: GPU can access partially resident MSAA 2D images with 8 samples | 
|  | VkBool32                                    sparseResidency16Samples                  /// Sparse resources support: GPU can access partially resident MSAA 2D images with 16 samples | 
|  | VkBool32                                    sparseResidencyAliased                    /// Sparse resources support: GPU can correctly access data aliased into multiple locations (opt-in) | 
|  | VkBool32                                    variableMultisampleRate | 
|  | VkBool32                                    inheritedQueries | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceLimits { | 
|  | /// resource maximum sizes | 
|  | u32                                         maxImageDimension1D                       /// max 1D image dimension | 
|  | u32                                         maxImageDimension2D                       /// max 2D image dimension | 
|  | u32                                         maxImageDimension3D                       /// max 3D image dimension | 
|  | u32                                         maxImageDimensionCube                     /// max cubemap image dimension | 
|  | u32                                         maxImageArrayLayers                       /// max layers for image arrays | 
|  | u32                                         maxTexelBufferElements | 
|  | u32                                         maxUniformBufferRange                     /// max uniform buffer size (bytes) | 
|  | u32                                         maxStorageBufferRange                     /// max storage buffer size (bytes) | 
|  | u32                                         maxPushConstantsSize                      /// max size of the push constants pool (bytes) | 
|  | /// memory limits | 
|  | u32                                         maxMemoryAllocationCount                  /// max number of device memory allocations supported | 
|  | u32                                         maxSamplerAllocationCount | 
|  | VkDeviceSize                                bufferImageGranularity                    /// Granularity (in bytes) at which buffers and images can be bound to adjacent memory for simultaneous usage | 
|  | VkDeviceSize                                sparseAddressSpaceSize                    /// Total address space available for sparse allocations (bytes) | 
|  | /// descriptor set limits | 
|  | u32                                         maxBoundDescriptorSets                    /// max number of descriptors sets that can be bound to a pipeline | 
|  | u32                                         maxPerStageDescriptorSamplers             /// max num of samplers allowed per-stage in a descriptor set | 
|  | u32                                         maxPerStageDescriptorUniformBuffers       /// max num of uniform buffers allowed per-stage in a descriptor set | 
|  | u32                                         maxPerStageDescriptorStorageBuffers       /// max num of storage buffers allowed per-stage in a descriptor set | 
|  | u32                                         maxPerStageDescriptorSampledImages        /// max num of sampled images allowed per-stage in a descriptor set | 
|  | u32                                         maxPerStageDescriptorStorageImages        /// max num of storage images allowed per-stage in a descriptor set | 
|  | u32                                         maxPerStageDescriptorInputAttachments | 
|  | u32                                         maxPerStageResources | 
|  | u32                                         maxDescriptorSetSamplers                  /// max num of samplers allowed in all stages in a descriptor set | 
|  | u32                                         maxDescriptorSetUniformBuffers            /// max num of uniform buffers allowed in all stages in a descriptor set | 
|  | u32                                         maxDescriptorSetUniformBuffersDynamic     /// max num of dynamic uniform buffers allowed in all stages in a descriptor set | 
|  | u32                                         maxDescriptorSetStorageBuffers            /// max num of storage buffers allowed in all stages in a descriptor set | 
|  | u32                                         maxDescriptorSetStorageBuffersDynamic     /// max num of dynamic storage buffers allowed in all stages in a descriptor set | 
|  | u32                                         maxDescriptorSetSampledImages             /// max num of sampled images allowed in all stages in a descriptor set | 
|  | u32                                         maxDescriptorSetStorageImages             /// max num of storage images allowed in all stages in a descriptor set | 
|  | u32                                         maxDescriptorSetInputAttachments | 
|  | /// vertex stage limits | 
|  | u32                                         maxVertexInputAttributes                  /// max num of vertex input attribute slots | 
|  | u32                                         maxVertexInputBindings                    /// max num of vertex input binding slots | 
|  | u32                                         maxVertexInputAttributeOffset             /// max vertex input attribute offset added to vertex buffer offset | 
|  | u32                                         maxVertexInputBindingStride               /// max vertex input binding stride | 
|  | u32                                         maxVertexOutputComponents                 /// max num of output components written by vertex shader | 
|  | /// tessellation control stage limits | 
|  | u32                                         maxTessellationGenerationLevel                  /// max level supported by tess primitive generator | 
|  | u32                                         maxTessellationPatchSize                        /// max patch size (vertices) | 
|  | u32                                         maxTessellationControlPerVertexInputComponents  /// max num of input components per-vertex in TCS | 
|  | u32                                         maxTessellationControlPerVertexOutputComponents /// max num of output components per-vertex in TCS | 
|  | u32                                         maxTessellationControlPerPatchOutputComponents  /// max num of output components per-patch in TCS | 
|  | u32                                         maxTessellationControlTotalOutputComponents     /// max total num of per-vertex and per-patch output components in TCS | 
|  | u32                                         maxTessellationEvaluationInputComponents        /// max num of input components per vertex in TES | 
|  | u32                                         maxTessellationEvaluationOutputComponents       /// max num of output components per vertex in TES | 
|  | /// geometry stage limits | 
|  | u32                                         maxGeometryShaderInvocations              /// max invocation count supported in geometry shader | 
|  | u32                                         maxGeometryInputComponents                /// max num of input components read in geometry stage | 
|  | u32                                         maxGeometryOutputComponents               /// max num of output components written in geometry stage | 
|  | u32                                         maxGeometryOutputVertices                 /// max num of vertices that can be emitted in geometry stage | 
|  | u32                                         maxGeometryTotalOutputComponents          /// max total num of components (all vertices) written in geometry stage | 
|  | /// fragment stage limits | 
|  | u32                                         maxFragmentInputComponents                /// max num of input compontents read in fragment stage | 
|  | u32                                         maxFragmentOutputAttachments              /// max num of output attachments written in fragment stage | 
|  | u32                                         maxFragmentDualSrcAttachments             /// max num of output attachments written when using dual source blending | 
|  | u32                                         maxFragmentCombinedOutputResources        /// max total num of storage buffers, storage images and output buffers | 
|  | /// compute stage limits | 
|  | u32                                         maxComputeSharedMemorySize                /// max total storage size of work group local storage (bytes) | 
|  | u32[3]                                      maxComputeWorkGroupCount                  /// max num of compute work groups that may be dispatched by a single command (x,y,z) | 
|  | u32                                         maxComputeWorkGroupInvocations            /// max total compute invocations in a single local work group | 
|  | u32[3]                                      maxComputeWorkGroupSize                   /// max local size of a compute work group (x,y,z) | 
|  |  | 
|  | u32                                         subPixelPrecisionBits                     /// num bits of subpixel precision in screen x and y | 
|  | u32                                         subTexelPrecisionBits                     /// num bits of subtexel precision | 
|  | u32                                         mipmapPrecisionBits                       /// num bits of mipmap precision | 
|  |  | 
|  | u32                                         maxDrawIndexedIndexValue                  /// max index value for indexed draw calls (for 32-bit indices) | 
|  | u32                                         maxDrawIndirectCount | 
|  |  | 
|  | f32                                         maxSamplerLodBias                         /// max absolute sampler level of detail bias | 
|  | f32                                         maxSamplerAnisotropy                      /// max degree of sampler anisotropy | 
|  |  | 
|  | u32                                         maxViewports                              /// max number of active viewports | 
|  | u32[2]                                      maxViewportDimensions                     /// max viewport dimensions (x,y) | 
|  | f32[2]                                      viewportBoundsRange                       /// viewport bounds range (min,max) | 
|  | u32                                         viewportSubPixelBits                      /// num bits of subpixel precision for viewport | 
|  |  | 
|  | platform.size_t                             minMemoryMapAlignment                     /// min required alignment of pointers returned by MapMemory (bytes) | 
|  | VkDeviceSize                                minTexelBufferOffsetAlignment             /// min required alignment for texel buffer offsets (bytes) | 
|  | VkDeviceSize                                minUniformBufferOffsetAlignment           /// min required alignment for uniform buffer sizes and offsets (bytes) | 
|  | VkDeviceSize                                minStorageBufferOffsetAlignment           /// min required alignment for storage buffer offsets (bytes) | 
|  |  | 
|  | s32                                         minTexelOffset                            /// min texel offset for OpTextureSampleOffset | 
|  | u32                                         maxTexelOffset                            /// max texel offset for OpTextureSampleOffset | 
|  | s32                                         minTexelGatherOffset                      /// min texel offset for OpTextureGatherOffset | 
|  | u32                                         maxTexelGatherOffset                      /// max texel offset for OpTextureGatherOffset | 
|  | f32                                         minInterpolationOffset                    /// furthest negative offset for interpolateAtOffset | 
|  | f32                                         maxInterpolationOffset                    /// furthest positive offset for interpolateAtOffset | 
|  | u32                                         subPixelInterpolationOffsetBits           /// num of subpixel bits for interpolateAtOffset | 
|  |  | 
|  | u32                                         maxFramebufferWidth                       /// max width for a framebuffer | 
|  | u32                                         maxFramebufferHeight                      /// max height for a framebuffer | 
|  | u32                                         maxFramebufferLayers                      /// max layer count for a layered framebuffer | 
|  | VkSampleCountFlags                          framebufferColorSampleCounts | 
|  | VkSampleCountFlags                          framebufferDepthSampleCounts | 
|  | VkSampleCountFlags                          framebufferStencilSampleCounts | 
|  | VkSampleCountFlags                          framebufferNoAttachmentSampleCounts | 
|  | u32                                         maxColorAttachments                       /// max num of framebuffer color attachments | 
|  |  | 
|  | VkSampleCountFlags                          sampledImageColorSampleCounts | 
|  | VkSampleCountFlags                          sampledImageIntegerSampleCounts | 
|  | VkSampleCountFlags                          sampledImageDepthSampleCounts | 
|  | VkSampleCountFlags                          sampledImageStencilSampleCounts | 
|  | VkSampleCountFlags                          storageImageSampleCounts | 
|  | u32                                         maxSampleMaskWords                        /// max num of sample mask words | 
|  | VkBool32                                    timestampComputeAndGraphics | 
|  |  | 
|  | f32                                         timestampPeriod | 
|  |  | 
|  | u32                                         maxClipDistances                          /// max number of clip distances | 
|  | u32                                         maxCullDistances                          /// max number of cull distances | 
|  | u32                                         maxCombinedClipAndCullDistances           /// max combined number of user clipping | 
|  |  | 
|  | u32                                         discreteQueuePriorities | 
|  |  | 
|  | f32[2]                                      pointSizeRange                            /// range (min,max) of supported point sizes | 
|  | f32[2]                                      lineWidthRange                            /// range (min,max) of supported line widths | 
|  | f32                                         pointSizeGranularity                      /// granularity of supported point sizes | 
|  | f32                                         lineWidthGranularity                      /// granularity of supported line widths | 
|  | VkBool32                                    strictLines | 
|  | VkBool32                                    standardSampleLocations | 
|  |  | 
|  | VkDeviceSize                                optimalBufferCopyOffsetAlignment | 
|  | VkDeviceSize                                optimalBufferCopyRowPitchAlignment | 
|  | VkDeviceSize                                nonCoherentAtomSize | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceSparseProperties { | 
|  | VkBool32                                    residencyStandard2DBlockShape             /// Sparse resources support: GPU will access all 2D (single sample) sparse resources using the standard block shapes (based on pixel format) | 
|  | VkBool32                                    residencyStandard2DMultisampleBlockShape  /// Sparse resources support: GPU will access all 2D (multisample) sparse resources using the standard block shapes (based on pixel format) | 
|  | VkBool32                                    residencyStandard3DBlockShape             /// Sparse resources support: GPU will access all 3D sparse resources using the standard block shapes (based on pixel format) | 
|  | 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 | 
|  | 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 | 
|  | } | 
|  |  | 
|  | class VkSemaphoreCreateInfo { | 
|  | VkStructureType                             sType      /// Must be VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO | 
|  | const void*                                 pNext      /// Pointer to next structure | 
|  | VkSemaphoreCreateFlags                      flags      /// Semaphore creation flags | 
|  | } | 
|  |  | 
|  | class VkQueryPoolCreateInfo { | 
|  | VkStructureType                             sType              /// Must be VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO | 
|  | const void*                                 pNext              /// Pointer to next structure | 
|  | VkQueryPoolCreateFlags                      flags | 
|  | VkQueryType                                 queryType | 
|  | u32                                         queryCount | 
|  | VkQueryPipelineStatisticFlags               pipelineStatistics /// Optional | 
|  | } | 
|  |  | 
|  | class VkFramebufferCreateInfo { | 
|  | VkStructureType                             sType  /// Must be VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO | 
|  | const void*                                 pNext  /// Pointer to next structure | 
|  | VkFramebufferCreateFlags                    flags | 
|  | VkRenderPass                                renderPass | 
|  | u32                                         attachmentCount | 
|  | const VkImageView*                          pAttachments | 
|  | u32                                         width | 
|  | u32                                         height | 
|  | u32                                         layers | 
|  | } | 
|  |  | 
|  | class VkDrawIndirectCommand { | 
|  | u32                                         vertexCount | 
|  | u32                                         instanceCount | 
|  | u32                                         firstVertex | 
|  | u32                                         firstInstance | 
|  | } | 
|  |  | 
|  | class VkDrawIndexedIndirectCommand { | 
|  | u32                                         indexCount | 
|  | u32                                         instanceCount | 
|  | u32                                         firstIndex | 
|  | s32                                         vertexOffset | 
|  | u32                                         firstInstance | 
|  | } | 
|  |  | 
|  | class VkDispatchIndirectCommand { | 
|  | u32                                         x | 
|  | u32                                         y | 
|  | u32                                         z | 
|  | } | 
|  |  | 
|  | class VkBaseOutStructure { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | } | 
|  |  | 
|  | class VkBaseInStructure { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | } | 
|  |  | 
|  | //@vulkan1_1 structures | 
|  |  | 
|  | class VkPhysicalDeviceSubgroupProperties { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | u32                                         subgroupSize | 
|  | VkShaderStageFlags                          supportedStages | 
|  | VkSubgroupFeatureFlags                      supportedOperations | 
|  | VkBool32                                    quadOperationsInAllStages | 
|  | } | 
|  |  | 
|  | class VkBindBufferMemoryInfo { | 
|  | VkStructureType    sType | 
|  | const void*        pNext | 
|  | VkBuffer           buffer | 
|  | VkDeviceMemory     memory | 
|  | VkDeviceSize       memoryOffset | 
|  | } | 
|  |  | 
|  | class VkBindImageMemoryInfo { | 
|  | VkStructureType    sType | 
|  | const void*        pNext | 
|  | VkImage            image | 
|  | VkDeviceMemory     memory | 
|  | VkDeviceSize       memoryOffset | 
|  | } | 
|  |  | 
|  | class VkPhysicalDevice16BitStorageFeatures { | 
|  | VkStructureType    sType | 
|  | void*              pNext | 
|  | VkBool32           storageBuffer16BitAccess | 
|  | VkBool32           uniformAndStorageBuffer16BitAccess | 
|  | VkBool32           storagePushConstant16 | 
|  | VkBool32           storageInputOutput16 | 
|  | } | 
|  |  | 
|  | class VkMemoryDedicatedRequirements { | 
|  | VkStructureType    sType | 
|  | void*              pNext | 
|  | VkBool32           prefersDedicatedAllocation | 
|  | VkBool32           requiresDedicatedAllocation | 
|  | } | 
|  |  | 
|  | class VkMemoryDedicatedAllocateInfo { | 
|  | VkStructureType    sType | 
|  | const void*        pNext | 
|  | VkImage            image | 
|  | VkBuffer           buffer | 
|  | } | 
|  |  | 
|  | class VkMemoryAllocateFlagsInfo { | 
|  | VkStructureType          sType | 
|  | const void*              pNext | 
|  | VkMemoryAllocateFlags    flags | 
|  | u32                      deviceMask | 
|  | } | 
|  |  | 
|  | class VkDeviceGroupRenderPassBeginInfo { | 
|  | VkStructureType    sType | 
|  | const void*        pNext | 
|  | u32                deviceMask | 
|  | u32                deviceRenderAreaCount | 
|  | const VkRect2D*    pDeviceRenderAreas | 
|  | } | 
|  |  | 
|  | class VkDeviceGroupCommandBufferBeginInfo { | 
|  | VkStructureType    sType | 
|  | const void*        pNext | 
|  | u32                deviceMask | 
|  | } | 
|  |  | 
|  | class VkDeviceGroupSubmitInfo { | 
|  | VkStructureType             sType | 
|  | const void*                 pNext | 
|  | u32                         waitSemaphoreCount | 
|  | const u32*                  pWaitSemaphoreDeviceIndices | 
|  | u32                         commandBufferCount | 
|  | const u32*                  pCommandBufferDeviceMasks | 
|  | u32                         signalSemaphoreCount | 
|  | const u32*                  pSignalSemaphoreDeviceIndices | 
|  | } | 
|  |  | 
|  | class VkDeviceGroupBindSparseInfo { | 
|  | VkStructureType    sType | 
|  | const void*        pNext | 
|  | u32                resourceDeviceIndex | 
|  | u32                memoryDeviceIndex | 
|  | } | 
|  |  | 
|  | class VkBindBufferMemoryDeviceGroupInfo { | 
|  | VkStructureType                     sType | 
|  | const void*                         pNext | 
|  | u32                                 deviceIndexCount | 
|  | const u32*                          pDeviceIndices | 
|  | } | 
|  |  | 
|  | class VkBindImageMemoryDeviceGroupInfo { | 
|  | VkStructureType                     sType | 
|  | const void*                         pNext | 
|  | u32                                 deviceIndexCount | 
|  | const u32*                          pDeviceIndices | 
|  | u32                                 splitInstanceBindRegionCount | 
|  | const VkRect2D*                     pSplitInstanceBindRegions | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceGroupProperties { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | u32                                         physicalDeviceCount | 
|  | VkPhysicalDevice[VK_MAX_DEVICE_GROUP_SIZE]  physicalDevices | 
|  | VkBool32                                    subsetAllocation | 
|  | } | 
|  |  | 
|  | class VkDeviceGroupDeviceCreateInfo { | 
|  | VkStructureType            sType | 
|  | const void*                pNext | 
|  | u32                        physicalDeviceCount | 
|  | const VkPhysicalDevice*    pPhysicalDevices | 
|  | } | 
|  |  | 
|  | class VkBufferMemoryRequirementsInfo2 { | 
|  | VkStructureType    sType | 
|  | const void*        pNext | 
|  | VkBuffer           buffer | 
|  | } | 
|  |  | 
|  | class VkImageMemoryRequirementsInfo2 { | 
|  | VkStructureType    sType | 
|  | const void*        pNext | 
|  | VkImage            image | 
|  | } | 
|  |  | 
|  | class VkImageSparseMemoryRequirementsInfo2 { | 
|  | VkStructureType    sType | 
|  | const void*        pNext | 
|  | VkImage            image | 
|  | } | 
|  |  | 
|  | class VkMemoryRequirements2 { | 
|  | VkStructureType         sType | 
|  | void*                   pNext | 
|  | VkMemoryRequirements    memoryRequirements | 
|  | } | 
|  |  | 
|  | class VkSparseImageMemoryRequirements2 { | 
|  | VkStructureType                    sType | 
|  | void*                              pNext | 
|  | VkSparseImageMemoryRequirements    memoryRequirements | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceFeatures2 { | 
|  | VkStructureType             sType | 
|  | void*                       pNext | 
|  | VkPhysicalDeviceFeatures    features | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceProperties2 { | 
|  | VkStructureType               sType | 
|  | void*                         pNext | 
|  | VkPhysicalDeviceProperties    properties | 
|  | } | 
|  |  | 
|  | class VkFormatProperties2 { | 
|  | VkStructureType       sType | 
|  | void*                 pNext | 
|  | VkFormatProperties    formatProperties | 
|  | } | 
|  |  | 
|  | class VkImageFormatProperties2 { | 
|  | VkStructureType            sType | 
|  | void*                      pNext | 
|  | VkImageFormatProperties    imageFormatProperties | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceImageFormatInfo2 { | 
|  | VkStructureType       sType | 
|  | const void*           pNext | 
|  | VkFormat              format | 
|  | VkImageType           type | 
|  | VkImageTiling         tiling | 
|  | VkImageUsageFlags     usage | 
|  | VkImageCreateFlags    flags | 
|  | } | 
|  |  | 
|  | class VkQueueFamilyProperties2 { | 
|  | VkStructureType            sType | 
|  | void*                      pNext | 
|  | VkQueueFamilyProperties    queueFamilyProperties | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceMemoryProperties2 { | 
|  | VkStructureType                     sType | 
|  | void*                               pNext | 
|  | VkPhysicalDeviceMemoryProperties    memoryProperties | 
|  | } | 
|  |  | 
|  | class VkSparseImageFormatProperties2 { | 
|  | VkStructureType                  sType | 
|  | void*                            pNext | 
|  | VkSparseImageFormatProperties    properties | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceSparseImageFormatInfo2 { | 
|  | VkStructureType          sType | 
|  | const void*              pNext | 
|  | VkFormat                 format | 
|  | VkImageType              type | 
|  | VkSampleCountFlagBits    samples | 
|  | VkImageUsageFlags        usage | 
|  | VkImageTiling            tiling | 
|  | } | 
|  |  | 
|  | class VkPhysicalDevicePointClippingProperties { | 
|  | VkStructureType            sType | 
|  | void*                      pNext | 
|  | VkPointClippingBehavior    pointClippingBehavior | 
|  | } | 
|  |  | 
|  | class VkInputAttachmentAspectReference { | 
|  | u32                   subpass | 
|  | u32                   inputAttachmentIndex | 
|  | VkImageAspectFlags    aspectMask | 
|  | } | 
|  |  | 
|  | class VkRenderPassInputAttachmentAspectCreateInfo { | 
|  | VkStructureType                            sType | 
|  | const void*                                pNext | 
|  | u32                                        aspectReferenceCount | 
|  | const VkInputAttachmentAspectReference*    pAspectReferences | 
|  | } | 
|  |  | 
|  | class VkImageViewUsageCreateInfo { | 
|  | VkStructureType      sType | 
|  | const void*          pNext | 
|  | VkImageUsageFlags    usage | 
|  | } | 
|  |  | 
|  | class VkPipelineTessellationDomainOriginStateCreateInfo { | 
|  | VkStructureType               sType | 
|  | const void*                   pNext | 
|  | VkTessellationDomainOrigin    domainOrigin | 
|  | } | 
|  |  | 
|  | class VkRenderPassMultiviewCreateInfo { | 
|  | VkStructureType    sType | 
|  | const void*        pNext | 
|  | u32                subpassCount | 
|  | const u32*         pViewMasks | 
|  | u32                dependencyCount | 
|  | const s32*         pViewOffsets | 
|  | u32                correlationMaskCount | 
|  | const u32*         pCorrelationMasks | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceMultiviewFeatures { | 
|  | VkStructureType    sType | 
|  | void*              pNext | 
|  | VkBool32           multiview | 
|  | VkBool32           multiviewGeometryShader | 
|  | VkBool32           multiviewTessellationShader | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceMultiviewProperties { | 
|  | VkStructureType    sType | 
|  | void*              pNext | 
|  | u32                maxMultiviewViewCount | 
|  | u32                maxMultiviewInstanceIndex | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceVariablePointerFeatures { | 
|  | VkStructureType    sType | 
|  | void*              pNext | 
|  | VkBool32           variablePointersStorageBuffer | 
|  | VkBool32           variablePointers | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceProtectedMemoryFeatures { | 
|  | VkStructureType    sType | 
|  | void*              pNext | 
|  | VkBool32           protectedMemory | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceProtectedMemoryProperties { | 
|  | VkStructureType    sType | 
|  | void*              pNext | 
|  | VkBool32           protectedNoFault | 
|  | } | 
|  |  | 
|  | class VkDeviceQueueInfo2 { | 
|  | VkStructureType             sType | 
|  | const void*                 pNext | 
|  | VkDeviceQueueCreateFlags    flags | 
|  | u32                         queueFamilyIndex | 
|  | u32                         queueIndex | 
|  | } | 
|  |  | 
|  | class VkProtectedSubmitInfo { | 
|  | VkStructureType    sType | 
|  | const void*        pNext | 
|  | VkBool32           protectedSubmit | 
|  | } | 
|  |  | 
|  | class VkSamplerYcbcrConversionCreateInfo { | 
|  | VkStructureType                  sType | 
|  | const void*                      pNext | 
|  | VkFormat                         format | 
|  | VkSamplerYcbcrModelConversion    ycbcrModel | 
|  | VkSamplerYcbcrRange              ycbcrRange | 
|  | VkComponentMapping               components | 
|  | VkChromaLocation                 xChromaOffset | 
|  | VkChromaLocation                 yChromaOffset | 
|  | VkFilter                         chromaFilter | 
|  | VkBool32                         forceExplicitReconstruction | 
|  | } | 
|  |  | 
|  | class VkSamplerYcbcrConversionInfo { | 
|  | VkStructureType             sType | 
|  | const void*                 pNext | 
|  | VkSamplerYcbcrConversion    conversion | 
|  | } | 
|  |  | 
|  | class VkBindImagePlaneMemoryInfo { | 
|  | VkStructureType          sType | 
|  | const void*              pNext | 
|  | VkImageAspectFlagBits    planeAspect | 
|  | } | 
|  |  | 
|  | class VkImagePlaneMemoryRequirementsInfo { | 
|  | VkStructureType          sType | 
|  | const void*              pNext | 
|  | VkImageAspectFlagBits    planeAspect | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceSamplerYcbcrConversionFeatures { | 
|  | VkStructureType    sType | 
|  | void*              pNext | 
|  | VkBool32           samplerYcbcrConversion | 
|  | } | 
|  |  | 
|  | class VkSamplerYcbcrConversionImageFormatProperties { | 
|  | VkStructureType    sType | 
|  | void*              pNext | 
|  | u32                combinedImageSamplerDescriptorCount | 
|  | } | 
|  |  | 
|  | class VkDescriptorUpdateTemplateEntry { | 
|  | u32                                 dstBinding | 
|  | u32                                 dstArrayElement | 
|  | u32                                 descriptorCount | 
|  | VkDescriptorType                    descriptorType | 
|  | platform.size_t                     offset | 
|  | platform.size_t                     stride | 
|  | } | 
|  |  | 
|  | class VkDescriptorUpdateTemplateCreateInfo { | 
|  | VkStructureType                           sType | 
|  | const void*                               pNext | 
|  | VkDescriptorUpdateTemplateCreateFlags     flags | 
|  | u32                                       descriptorUpdateEntryCount | 
|  | const VkDescriptorUpdateTemplateEntry*    pDescriptorUpdateEntries | 
|  | VkDescriptorUpdateTemplateType            templateType | 
|  | VkDescriptorSetLayout                     descriptorSetLayout | 
|  | VkPipelineBindPoint                       pipelineBindPoint | 
|  | VkPipelineLayout                          pipelineLayout | 
|  | u32                                       set | 
|  | } | 
|  |  | 
|  | class VkExternalMemoryProperties { | 
|  | VkExternalMemoryFeatureFlags       externalMemoryFeatures | 
|  | VkExternalMemoryHandleTypeFlags    exportFromImportedHandleTypes | 
|  | VkExternalMemoryHandleTypeFlags    compatibleHandleTypes | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceExternalImageFormatInfo { | 
|  | VkStructureType                       sType | 
|  | const void*                           pNext | 
|  | VkExternalMemoryHandleTypeFlagBits    handleType | 
|  | } | 
|  |  | 
|  | class VkExternalImageFormatProperties { | 
|  | VkStructureType               sType | 
|  | void*                         pNext | 
|  | VkExternalMemoryProperties    externalMemoryProperties | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceExternalBufferInfo { | 
|  | VkStructureType                       sType | 
|  | const void*                           pNext | 
|  | VkBufferCreateFlags                   flags | 
|  | VkBufferUsageFlags                    usage | 
|  | VkExternalMemoryHandleTypeFlagBits    handleType | 
|  | } | 
|  |  | 
|  | class VkExternalBufferProperties { | 
|  | VkStructureType               sType | 
|  | void*                         pNext | 
|  | VkExternalMemoryProperties    externalMemoryProperties | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceIDProperties { | 
|  | VkStructureType    sType | 
|  | void*              pNext | 
|  | u8[VK_UUID_SIZE]   deviceUUID | 
|  | u8[VK_UUID_SIZE]   driverUUID | 
|  | u8[VK_LUID_SIZE]   deviceLUID | 
|  | u32                deviceNodeMask | 
|  | VkBool32           deviceLUIDValid | 
|  | } | 
|  |  | 
|  | class VkExternalMemoryImageCreateInfo { | 
|  | VkStructureType                    sType | 
|  | const void*                        pNext | 
|  | VkExternalMemoryHandleTypeFlags    handleTypes | 
|  | } | 
|  |  | 
|  | class VkExternalMemoryBufferCreateInfo { | 
|  | VkStructureType                    sType | 
|  | const void*                        pNext | 
|  | VkExternalMemoryHandleTypeFlags    handleTypes | 
|  | } | 
|  |  | 
|  | class VkExportMemoryAllocateInfo { | 
|  | VkStructureType                    sType | 
|  | const void*                        pNext | 
|  | VkExternalMemoryHandleTypeFlags    handleTypes | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceExternalFenceInfo { | 
|  | VkStructureType                      sType | 
|  | const void*                          pNext | 
|  | VkExternalFenceHandleTypeFlagBits    handleType | 
|  | } | 
|  |  | 
|  | class VkExternalFenceProperties { | 
|  | VkStructureType                   sType | 
|  | void*                             pNext | 
|  | VkExternalFenceHandleTypeFlags    exportFromImportedHandleTypes | 
|  | VkExternalFenceHandleTypeFlags    compatibleHandleTypes | 
|  | VkExternalFenceFeatureFlags       externalFenceFeatures | 
|  | } | 
|  |  | 
|  | class VkExportFenceCreateInfo { | 
|  | VkStructureType                   sType | 
|  | const void*                       pNext | 
|  | VkExternalFenceHandleTypeFlags    handleTypes | 
|  | } | 
|  |  | 
|  | class VkExportSemaphoreCreateInfo { | 
|  | VkStructureType                       sType | 
|  | const void*                           pNext | 
|  | VkExternalSemaphoreHandleTypeFlags    handleTypes | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceExternalSemaphoreInfo { | 
|  | VkStructureType                          sType | 
|  | const void*                              pNext | 
|  | VkExternalSemaphoreHandleTypeFlagBits    handleType | 
|  | } | 
|  |  | 
|  | class VkExternalSemaphoreProperties { | 
|  | VkStructureType                       sType | 
|  | void*                                 pNext | 
|  | VkExternalSemaphoreHandleTypeFlags    exportFromImportedHandleTypes | 
|  | VkExternalSemaphoreHandleTypeFlags    compatibleHandleTypes | 
|  | VkExternalSemaphoreFeatureFlags       externalSemaphoreFeatures | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceMaintenance3Properties { | 
|  | VkStructureType    sType | 
|  | void*              pNext | 
|  | u32                maxPerSetDescriptors | 
|  | VkDeviceSize       maxMemoryAllocationSize | 
|  | } | 
|  |  | 
|  | class VkDescriptorSetLayoutSupport { | 
|  | VkStructureType    sType | 
|  | void*              pNext | 
|  | VkBool32           supported | 
|  | } | 
|  |  | 
|  | class VkPhysicalDeviceShaderDrawParameterFeatures { | 
|  | VkStructureType    sType | 
|  | void*              pNext | 
|  | VkBool32           shaderDrawParameters | 
|  | } | 
|  |  | 
|  |  | 
|  | @extension("VK_KHR_surface") // 1 | 
|  | class VkSurfaceCapabilitiesKHR { | 
|  | u32                                         minImageCount | 
|  | u32                                         maxImageCount | 
|  | VkExtent2D                                  currentExtent | 
|  | VkExtent2D                                  minImageExtent | 
|  | VkExtent2D                                  maxImageExtent | 
|  | u32                                         maxImageArrayLayers | 
|  | VkSurfaceTransformFlagsKHR                  supportedTransforms | 
|  | VkSurfaceTransformFlagBitsKHR               currentTransform | 
|  | VkCompositeAlphaFlagsKHR                    supportedCompositeAlpha | 
|  | VkImageUsageFlags                           supportedUsageFlags | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_surface") // 1 | 
|  | class VkSurfaceFormatKHR { | 
|  | VkFormat                                    format | 
|  | VkColorSpaceKHR                             colorSpace | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | class VkSwapchainCreateInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkSwapchainCreateFlagsKHR                   flags | 
|  | VkSurfaceKHR                                surface | 
|  | u32                                         minImageCount | 
|  | VkFormat                                    imageFormat | 
|  | VkColorSpaceKHR                             imageColorSpace | 
|  | VkExtent2D                                  imageExtent | 
|  | u32                                         imageArrayLayers | 
|  | VkImageUsageFlags                           imageUsage | 
|  | VkSharingMode                               sharingMode | 
|  | u32                                         queueFamilyIndexCount | 
|  | const u32*                                  pQueueFamilyIndices | 
|  | VkSurfaceTransformFlagBitsKHR               preTransform | 
|  | VkCompositeAlphaFlagBitsKHR                 compositeAlpha | 
|  | VkPresentModeKHR                            presentMode | 
|  | VkBool32                                    clipped | 
|  | VkSwapchainKHR                              oldSwapchain | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | class VkPresentInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | u32                                         waitSemaphoreCount | 
|  | const VkSemaphore*                          pWaitSemaphores | 
|  | u32                                         swapchainCount | 
|  | const VkSwapchainKHR*                       pSwapchains | 
|  | const u32*                                  pImageIndices | 
|  | VkResult*                                   pResults | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | class VkImageSwapchainCreateInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkSwapchainKHR                              swapchain | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | class VkBindImageMemorySwapchainInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkSwapchainKHR                              swapchain | 
|  | u32                                         imageIndex | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | class VkAcquireNextImageInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkSwapchainKHR                              swapchain | 
|  | u64                                         timeout | 
|  | VkSemaphore                                 semaphore | 
|  | VkFence                                     fence | 
|  | u32                                         deviceMask | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | class VkDeviceGroupPresentCapabilitiesKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | u32[VK_MAX_DEVICE_GROUP_SIZE]               presentMask | 
|  | VkDeviceGroupPresentModeFlagsKHR            modes | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | class VkDeviceGroupPresentInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | u32                                         swapchainCount | 
|  | const u32*                                  pDeviceMasks | 
|  | VkDeviceGroupPresentModeFlagBitsKHR         mode | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | class VkDeviceGroupSwapchainCreateInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkDeviceGroupPresentModeFlagsKHR            modes | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display") // 3 | 
|  | class VkDisplayPropertiesKHR { | 
|  | VkDisplayKHR                                display | 
|  | const char*                                 displayName | 
|  | VkExtent2D                                  physicalDimensions | 
|  | VkExtent2D                                  physicalResolution | 
|  | VkSurfaceTransformFlagsKHR                  supportedTransforms | 
|  | VkBool32                                    planeReorderPossible | 
|  | VkBool32                                    persistentContent | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display") // 3 | 
|  | class VkDisplayModeParametersKHR { | 
|  | VkExtent2D                                  visibleRegion | 
|  | u32                                         refreshRate | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display") // 3 | 
|  | class VkDisplayModePropertiesKHR { | 
|  | VkDisplayModeKHR                            displayMode | 
|  | VkDisplayModeParametersKHR                  parameters | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display") // 3 | 
|  | class VkDisplayModeCreateInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkDisplayModeCreateFlagsKHR                 flags | 
|  | VkDisplayModeParametersKHR                  parameters | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display") // 3 | 
|  | class VkDisplayPlanePropertiesKHR { | 
|  | VkDisplayKHR                                currentDisplay | 
|  | u32                                         currentStackIndex | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display") // 3 | 
|  | class VkDisplayPlaneCapabilitiesKHR { | 
|  | VkDisplayPlaneAlphaFlagsKHR                 supportedAlpha | 
|  | VkOffset2D                                  minSrcPosition | 
|  | VkOffset2D                                  maxSrcPosition | 
|  | VkExtent2D                                  minSrcExtent | 
|  | VkExtent2D                                  maxSrcExtent | 
|  | VkOffset2D                                  minDstPosition | 
|  | VkOffset2D                                  maxDstPosition | 
|  | VkExtent2D                                  minDstExtent | 
|  | VkExtent2D                                  maxDstExtent | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display") // 3 | 
|  | class VkDisplaySurfaceCreateInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkDisplaySurfaceCreateFlagsKHR              flags | 
|  | VkDisplayModeKHR                            displayMode | 
|  | u32                                         planeIndex | 
|  | u32                                         planeStackIndex | 
|  | VkSurfaceTransformFlagBitsKHR               transform | 
|  | f32                                         globalAlpha | 
|  | VkDisplayPlaneAlphaFlagBitsKHR              alphaMode | 
|  | VkExtent2D                                  imageExtent | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display_swapchain") // 4 | 
|  | class VkDisplayPresentInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkRect2D                                    srcRect | 
|  | VkRect2D                                    dstRect | 
|  | VkBool32                                    persistent | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_xlib_surface") // 5 | 
|  | class VkXlibSurfaceCreateInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkXlibSurfaceCreateFlagsKHR                 flags | 
|  | platform.Display*                           dpy | 
|  | platform.Window                             window | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_xcb_surface") // 6 | 
|  | class VkXcbSurfaceCreateInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkXcbSurfaceCreateFlagsKHR                  flags | 
|  | platform.xcb_connection_t*                  connection | 
|  | platform.xcb_window_t                       window | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_wayland_surface") // 7 | 
|  | class VkWaylandSurfaceCreateInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkWaylandSurfaceCreateFlagsKHR              flags | 
|  | platform.wl_display*                        display | 
|  | platform.wl_surface*                        surface | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_android_surface") // 9 | 
|  | class VkAndroidSurfaceCreateInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkAndroidSurfaceCreateFlagsKHR              flags | 
|  | platform.ANativeWindow*                     window | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_win32_surface") // 10 | 
|  | class VkWin32SurfaceCreateInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkWin32SurfaceCreateFlagsKHR                flags | 
|  | platform.HINSTANCE                          hinstance | 
|  | platform.HWND                               hwnd | 
|  | } | 
|  |  | 
|  | @extension("VK_ANDROID_native_buffer") // 11 | 
|  | @internal class Gralloc1Usage { | 
|  | u64                                         consumer | 
|  | u64                                         producer | 
|  | } | 
|  |  | 
|  | @extension("VK_ANDROID_native_buffer") // 11 | 
|  | class VkNativeBufferANDROID { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | platform.buffer_handle_t                    handle | 
|  | s32                                         stride | 
|  | s32                                         format | 
|  | s32                                         usage | 
|  | Gralloc1Usage                               usage2 | 
|  | } | 
|  |  | 
|  | @extension("VK_ANDROID_native_buffer") // 11 | 
|  | class VkSwapchainImageCreateInfoANDROID { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkSwapchainImageUsageFlagsANDROID           flags | 
|  | } | 
|  |  | 
|  | @extension("VK_ANDROID_native_buffer") // 11 | 
|  | class VkPhysicalDevicePresentationPropertiesANDROID { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkBool32                                    sharedImage | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_report") // 12 | 
|  | class VkDebugReportCallbackCreateInfoEXT { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkDebugReportFlagsEXT                       flags | 
|  | PFN_vkDebugReportCallbackEXT                pfnCallback | 
|  | void*                                       pUserData | 
|  | } | 
|  |  | 
|  | @extension("VK_AMD_rasterization_order") // 19 | 
|  | class VkPipelineRasterizationStateRasterizationOrderAMD { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkRasterizationOrderAMD                     rasterizationOrder | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_marker") // 23 | 
|  | class VkDebugMarkerObjectNameInfoEXT { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkDebugReportObjectTypeEXT                  objectType | 
|  | u64                                         object | 
|  | const char*                                 pObjectName | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_marker") // 23 | 
|  | class VkDebugMarkerObjectTagInfoEXT { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkDebugReportObjectTypeEXT                  objectType | 
|  | u64                                         object | 
|  | u64                                         tagName | 
|  | platform.size_t                             tagSize | 
|  | const void*                                 pTag | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_marker") // 23 | 
|  | class VkDebugMarkerMarkerInfoEXT { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | const char*                                 pMarkerName | 
|  | f32[4]                                      color | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_dedicated_allocation") // 27 | 
|  | class VkDedicatedAllocationImageCreateInfoNV { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkBool32                                    dedicatedAllocation | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_dedicated_allocation") // 27 | 
|  | class VkDedicatedAllocationBufferCreateInfoNV { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkBool32                                    dedicatedAllocation | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_dedicated_allocation") // 27 | 
|  | class VkDedicatedAllocationMemoryAllocateInfoNV { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkImage                                     image | 
|  | VkBuffer                                    buffer | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_transform_feedback") // 29 | 
|  | class VkPhysicalDeviceTransformFeedbackFeaturesEXT { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkBool32                                    transformFeedback | 
|  | VkBool32                                    geometryStreams | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_transform_feedback") // 29 | 
|  | class VkPhysicalDeviceTransformFeedbackPropertiesEXT { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | u32                                         maxTransformFeedbackStreams | 
|  | u32                                         maxTransformFeedbackBuffers | 
|  | VkDeviceSize                                maxTransformFeedbackBufferSize | 
|  | u32                                         maxTransformFeedbackStreamDataSize | 
|  | u32                                         maxTransformFeedbackBufferDataSize | 
|  | u32                                         maxTransformFeedbackBufferDataStride | 
|  | VkBool32                                    transformFeedbackQueries | 
|  | VkBool32                                    transformFeedbackStreamsLinesTriangles | 
|  | VkBool32                                    transformFeedbackRasterizationStreamSelect | 
|  | VkBool32                                    transformFeedbackDraw | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_transform_feedback") // 29 | 
|  | class VkPipelineRasterizationStateStreamCreateInfoEXT { | 
|  | VkStructureType                                     sType | 
|  | const void*                                         pNext | 
|  | VkPipelineRasterizationStateStreamCreateFlagsEXT    flags | 
|  | u32                                                 rasterizationStream | 
|  | } | 
|  |  | 
|  | @extension("VK_AMD_texture_gather_bias_lod") // 42 | 
|  | class VkTextureLODGatherFormatPropertiesAMD { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkBool32                                    supportsTextureGatherLODBiasAMD | 
|  | } | 
|  |  | 
|  | @extension("VK_AMD_shader_info") // 43 | 
|  | class VkShaderResourceUsageAMD { | 
|  | u32                                         numUsedVgprs | 
|  | u32                                         numUsedSgprs | 
|  | u32                                         ldsSizePerLocalWorkGroup | 
|  | platform.size_t                             ldsUsageSizeInBytes | 
|  | platform.size_t                             scratchMemUsageInBytes | 
|  | } | 
|  |  | 
|  | @extension("VK_AMD_shader_info") // 43 | 
|  | class VkShaderStatisticsInfoAMD { | 
|  | VkShaderStageFlags                          shaderStageMask | 
|  | VkShaderResourceUsageAMD                    resourceUsage | 
|  | u32                                         numPhysicalVgprs | 
|  | u32                                         numPhysicalSgprs | 
|  | u32                                         numAvailableVgprs | 
|  | u32                                         numAvailableSgprs | 
|  | u32[3]                                      computeWorkGroupSize | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_corner_sampled_image") // 51 | 
|  | class VkPhysicalDeviceCornerSampledImageFeaturesNV { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkBool32                                    cornerSampledImage | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_multiview") // 54 | 
|  | class VkRenderPassMultiviewCreateInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | u32                                         subpassCount | 
|  | const u32*                                  pViewMasks | 
|  | u32                                         dependencyCount | 
|  | const s32*                                  pViewOffsets | 
|  | u32                                         correlationMaskCount | 
|  | const u32*                                  pCorrelationMasks | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_multiview") // 54 | 
|  | class VkPhysicalDeviceMultiviewFeaturesKHR { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkBool32                                    multiview | 
|  | VkBool32                                    multiviewGeometryShader | 
|  | VkBool32                                    multiviewTessellationShader | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_multiview") // 54 | 
|  | class VkPhysicalDeviceMultiviewPropertiesKHR { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | u32                                         maxMultiviewViewCount | 
|  | u32                                         maxMultiviewInstanceIndex | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_external_memory_capabilities") // 56 | 
|  | class VkExternalImageFormatPropertiesNV { | 
|  | VkImageFormatProperties                     imageFormatProperties | 
|  | VkExternalMemoryFeatureFlagsNV              externalMemoryFeatures | 
|  | VkExternalMemoryHandleTypeFlagsNV           exportFromImportedHandleTypes | 
|  | VkExternalMemoryHandleTypeFlagsNV           compatibleHandleTypes | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_external_memory") // 57 | 
|  | class VkExternalMemoryImageCreateInfoNV { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkExternalMemoryHandleTypeFlagsNV           handleTypes | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_external_memory") // 57 | 
|  | class VkExportMemoryAllocateInfoNV { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkExternalMemoryHandleTypeFlagsNV           handleTypes | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_external_memory_win32") // 58 | 
|  | class VkImportMemoryWin32HandleInfoNV { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkExternalMemoryHandleTypeFlagsNV           handleType | 
|  | platform.HANDLE                             handle | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_external_memory_win32") // 58 | 
|  | class VkExportMemoryWin32HandleInfoNV { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | const platform.SECURITY_ATTRIBUTES*         pAttributes | 
|  | platform.DWORD                              dwAccess | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_win32_keyed_mutex") // 59 | 
|  | class VkWin32KeyedMutexAcquireReleaseInfoNV { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | u32                                         acquireCount | 
|  | const VkDeviceMemory*                       pAcquireSyncs | 
|  | const u64*                                  pAcquireKeys | 
|  | const u32*                                  pAcquireTimeoutMilliseconds | 
|  | u32                                         releaseCount | 
|  | const VkDeviceMemory*                       pReleaseSyncs | 
|  | const u64*                                  pReleaseKeys | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_physical_device_properties2") // 60 | 
|  | class VkPhysicalDeviceFeatures2KHR { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkPhysicalDeviceFeatures                    features | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_physical_device_properties2") // 60 | 
|  | class VkPhysicalDeviceProperties2KHR { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkPhysicalDeviceProperties                  properties | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_physical_device_properties2") // 60 | 
|  | class VkFormatProperties2KHR { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkFormatProperties                          formatProperties | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_physical_device_properties2") // 60 | 
|  | class VkImageFormatProperties2KHR { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkImageFormatProperties                     imageFormatProperties | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_physical_device_properties2") // 60 | 
|  | class VkPhysicalDeviceImageFormatInfo2KHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkFormat                                    format | 
|  | VkImageType                                 type | 
|  | VkImageTiling                               tiling | 
|  | VkImageUsageFlags                           usage | 
|  | VkImageCreateFlags                          flags | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_physical_device_properties2") // 60 | 
|  | class VkQueueFamilyProperties2KHR { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkQueueFamilyProperties                     queueFamilyProperties | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_physical_device_properties2") // 60 | 
|  | class VkPhysicalDeviceMemoryProperties2KHR { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkPhysicalDeviceMemoryProperties            memoryProperties | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_physical_device_properties2") // 60 | 
|  | class VkSparseImageFormatProperties2KHR { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkSparseImageFormatProperties               properties | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_physical_device_properties2") // 60 | 
|  | class VkPhysicalDeviceSparseImageFormatInfo2KHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkFormat                                    format | 
|  | VkImageType                                 type | 
|  | VkSampleCountFlagBits                       samples | 
|  | VkImageUsageFlags                           usage | 
|  | VkImageTiling                               tiling | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_device_group") // 61 | 
|  | class VkMemoryAllocateFlagsInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkMemoryAllocateFlagsKHR                    flags | 
|  | u32                                         deviceMask | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_device_group") // 61 | 
|  | class VkBindBufferMemoryDeviceGroupInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | u32                                         deviceIndexCount | 
|  | const u32*                                  pDeviceIndices | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_device_group") // 61 | 
|  | class VkBindImageMemoryDeviceGroupInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | u32                                         deviceIndexCount | 
|  | const u32*                                  pDeviceIndices | 
|  | u32                                         SFRRectCount | 
|  | const VkRect2D*                             pSFRRects | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_device_group") // 61 | 
|  | class VkDeviceGroupRenderPassBeginInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | u32                                         deviceMask | 
|  | u32                                         deviceRenderAreaCount | 
|  | const VkRect2D*                             pDeviceRenderAreas | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_device_group") // 61 | 
|  | class VkDeviceGroupCommandBufferBeginInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | u32                                         deviceMask | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_device_group") // 61 | 
|  | class VkDeviceGroupSubmitInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | u32                                         waitSemaphoreCount | 
|  | const u32*                                  pWaitSemaphoreDeviceIndices | 
|  | u32                                         commandBufferCount | 
|  | const u32*                                  pCommandBufferDeviceMasks | 
|  | u32                                         signalSemaphoreCount | 
|  | const u32*                                  pSignalSemaphoreDeviceIndices | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_device_group") // 61 | 
|  | class VkDeviceGroupBindSparseInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | u32                                         resourceDeviceIndex | 
|  | u32                                         memoryDeviceIndex | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_validation_flags") // 62 | 
|  | class VkValidationFlagsEXT { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | u32                                         disabledValidationCheckCount | 
|  | const VkValidationCheckEXT*                 pDisabledValidationChecks | 
|  | } | 
|  |  | 
|  | @extension("VK_NN_vi_surface") // 63 | 
|  | class VkViSurfaceCreateInfoNN { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkViSurfaceCreateFlagsNN                    flags | 
|  | void*                                       window | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_astc_decode_mode") // 68 | 
|  | class VkImageViewASTCDecodeModeEXT { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkFormat                                    decodeMode | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_astc_decode_mode") // 68 | 
|  | class VkPhysicalDeviceASTCDecodeFeaturesEXT { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkBool32                                    decodeModeSharedExponent | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_device_group_creation") // 71 | 
|  | class VkPhysicalDeviceGroupPropertiesKHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | u32                                             physicalDeviceCount | 
|  | VkPhysicalDevice[VK_MAX_DEVICE_GROUP_SIZE]      physicalDevices | 
|  | VkBool32                                        subsetAllocation | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_device_group_creation") // 71 | 
|  | class VkDeviceGroupDeviceCreateInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | u32                                         physicalDeviceCount | 
|  | const VkPhysicalDevice*                     pPhysicalDevices | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory_capabilities") // 72 | 
|  | class VkExternalMemoryPropertiesKHR { | 
|  | VkExternalMemoryFeatureFlagsKHR             externalMemoryFeatures | 
|  | VkExternalMemoryHandleTypeFlagsKHR          exportFromImportedHandleTypes | 
|  | VkExternalMemoryHandleTypeFlagsKHR          compatibleHandleTypes | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory_capabilities") // 72 | 
|  | class VkPhysicalDeviceExternalImageFormatInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkExternalMemoryHandleTypeFlagBitsKHR       handleType | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory_capabilities") // 72 | 
|  | class VkExternalImageFormatPropertiesKHR { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkExternalMemoryPropertiesKHR               externalMemoryProperties | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory_capabilities") // 72 | 
|  | class VkPhysicalDeviceExternalBufferInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkBufferCreateFlags                         flags | 
|  | VkBufferUsageFlags                          usage | 
|  | VkExternalMemoryHandleTypeFlagBitsKHR       handleType | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory_capabilities") // 72 | 
|  | class VkExternalBufferPropertiesKHR { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkExternalMemoryPropertiesKHR               externalMemoryProperties | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory_capabilities") // 72 | 
|  | class VkPhysicalDeviceIDPropertiesKHR { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | u8[VK_UUID_SIZE]                            deviceUUID | 
|  | u8[VK_UUID_SIZE]                            driverUUID | 
|  | u8[VK_LUID_SIZE]                            deviceLUID | 
|  | u32                                         deviceNodeMask | 
|  | VkBool32                                    deviceLUIDValid | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory") // 73 | 
|  | class VkExternalMemoryImageCreateInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkExternalMemoryHandleTypeFlagsKHR          handleTypes | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory") // 73 | 
|  | class VkExternalMemoryBufferCreateInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkExternalMemoryHandleTypeFlagsKHR          handleTypes | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory") // 73 | 
|  | class VkExportMemoryAllocateInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkExternalMemoryHandleTypeFlagsKHR          handleTypes | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory_win32") // 74 | 
|  | class VkImportMemoryWin32HandleInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkExternalMemoryHandleTypeFlagBitsKHR       handleType | 
|  | platform.HANDLE                             handle | 
|  | platform.LPCWSTR                            name | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory_win32") // 74 | 
|  | class VkExportMemoryWin32HandleInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | const platform.SECURITY_ATTRIBUTES*         pAttributes | 
|  | platform.DWORD                              dwAccess | 
|  | platform.LPCWSTR                            name | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory_win32") // 74 | 
|  | class VkMemoryWin32HandlePropertiesKHR { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | u32                                         memoryTypeBits | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory_win32") // 74 | 
|  | class VkMemoryGetWin32HandleInfoKHR { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkDeviceMemory                              memory | 
|  | VkExternalMemoryHandleTypeFlagBitsKHR       handleType | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory_fd") // 75 | 
|  | class VkImportMemoryFdInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkExternalMemoryHandleTypeFlagBitsKHR       handleType | 
|  | int                                         fd | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory_fd") // 75 | 
|  | class VkMemoryFdPropertiesKHR { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | u32                                         memoryTypeBits | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory_fd") // 75 | 
|  | class VkMemoryGetFdInfoKHR { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkDeviceMemory                              memory | 
|  | VkExternalMemoryHandleTypeFlagBitsKHR       handleType | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_win32_keyed_mutex") // 76 | 
|  | class VkWin32KeyedMutexAcquireReleaseInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | u32                                         acquireCount | 
|  | const VkDeviceMemory*                       pAcquireSyncs | 
|  | const u64*                                  pAcquireKeys | 
|  | const u32*                                  pAcquireTimeouts | 
|  | u32                                         releaseCount | 
|  | const VkDeviceMemory*                       pReleaseSyncs | 
|  | const u64*                                  pReleaseKeys | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_semaphore_capabilities") // 77 | 
|  | class VkPhysicalDeviceExternalSemaphoreInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkExternalSemaphoreHandleTypeFlagBitsKHR    handleType | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_semaphore_capabilities") // 77 | 
|  | class VkExternalSemaphorePropertiesKHR { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkExternalSemaphoreHandleTypeFlagsKHR       exportFromImportedHandleTypes | 
|  | VkExternalSemaphoreHandleTypeFlagsKHR       compatibleHandleTypes | 
|  | VkExternalSemaphoreFeatureFlagsKHR          externalSemaphoreFeatures | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_semaphore") // 78 | 
|  | class VkExportSemaphoreCreateInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkExternalSemaphoreHandleTypeFlagsKHR       handleTypes | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_semaphore_win32") // 79 | 
|  | class VkImportSemaphoreWin32HandleInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkSemaphore                                 semaphore | 
|  | VkSemaphoreImportFlagsKHR                   flags | 
|  | VkExternalSemaphoreHandleTypeFlagsKHR       handleType | 
|  | platform.HANDLE                             handle | 
|  | platform.LPCWSTR                            name | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_semaphore_win32") // 79 | 
|  | class VkExportSemaphoreWin32HandleInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | const platform.SECURITY_ATTRIBUTES*         pAttributes | 
|  | platform.DWORD                              dwAccess | 
|  | platform.LPCWSTR                            name | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_semaphore_win32") // 79 | 
|  | class VkD3D12FenceSubmitInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | u32                                         waitSemaphoreValuesCount | 
|  | const u64*                                  pWaitSemaphoreValues | 
|  | u32                                         signalSemaphoreValuesCount | 
|  | const u64*                                  pSignalSemaphoreValues | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_semaphore_win32") // 79 | 
|  | class VkSemaphoreGetWin32HandleInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkSemaphore                                 semaphore | 
|  | VkExternalSemaphoreHandleTypeFlagBitsKHR    handleType | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_semaphore_fd") // 80 | 
|  | class VkImportSemaphoreFdInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkSemaphore                                 semaphore | 
|  | VkSemaphoreImportFlagsKHR                   flags | 
|  | VkExternalSemaphoreHandleTypeFlagBitsKHR    handleType | 
|  | s32                                         fd | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_semaphore_fd") // 80 | 
|  | class VkSemaphoreGetFdInfoKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkSemaphore                                 semaphore | 
|  | VkExternalSemaphoreHandleTypeFlagBitsKHR    handleType | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_push_descriptor") // 81 | 
|  | class VkPhysicalDevicePushDescriptorPropertiesKHR { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | u32                                         maxPushDescriptors | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_conditional_rendering") // 82 | 
|  | class VkConditionalRenderingBeginInfoEXT { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkBuffer                                    buffer | 
|  | VkDeviceSize                                offset | 
|  | VkConditionalRenderingFlagsEXT              flags | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_conditional_rendering") // 82 | 
|  | class VkPhysicalDeviceConditionalRenderingFeaturesEXT { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkBool32                                    conditionalRendering | 
|  | VkBool32                                    inheritedConditionalRendering | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_conditional_rendering") // 82 | 
|  | class VkCommandBufferInheritanceConditionalRenderingInfoEXT { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkBool32                                    conditionalRenderingEnable | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_shader_float16_int8") // 83 | 
|  | class VkPhysicalDeviceFloat16Int8FeaturesKHR { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkBool32                                    shaderFloat16 | 
|  | VkBool32                                    shaderInt8 | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_16bit_storage") // 84 | 
|  | class VkPhysicalDevice16BitStorageFeaturesKHR { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkBool32                                    storageBuffer16BitAccess | 
|  | VkBool32                                    uniformAndStorageBuffer16BitAccess | 
|  | VkBool32                                    storagePushConstant16 | 
|  | VkBool32                                    storageInputOutput16 | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_incremental_present") // 85 | 
|  | class VkRectLayerKHR { | 
|  | VkOffset2D                                  offset | 
|  | VkExtent2D                                  extent | 
|  | u32                                         layer | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_incremental_present") // 85 | 
|  | class VkPresentRegionKHR { | 
|  | u32                                         rectangleCount | 
|  | const VkRectLayerKHR*                       pRectangles | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_incremental_present") // 85 | 
|  | class VkPresentRegionsKHR { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | u32                                         swapchainCount | 
|  | const VkPresentRegionKHR*                   pRegions | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_descriptor_update_template") // 86 | 
|  | class VkDescriptorUpdateTemplateEntryKHR { | 
|  | u32                                         dstBinding | 
|  | u32                                         dstArrayElement | 
|  | u32                                         descriptorCount | 
|  | VkDescriptorType                            descriptorType | 
|  | platform.size_t                             offset | 
|  | platform.size_t                             stride | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_descriptor_update_template") // 86 | 
|  | class VkDescriptorUpdateTemplateCreateInfoKHR { | 
|  | VkStructureType                              sType | 
|  | void*                                        pNext | 
|  | VkDescriptorUpdateTemplateCreateFlagsKHR     flags | 
|  | u32                                          descriptorUpdateEntryCount | 
|  | const VkDescriptorUpdateTemplateEntryKHR*    pDescriptorUpdateEntries | 
|  | VkDescriptorUpdateTemplateTypeKHR            templateType | 
|  | VkDescriptorSetLayout                        descriptorSetLayout | 
|  | VkPipelineBindPoint                          pipelineBindPoint | 
|  | VkPipelineLayout                             pipelineLayout | 
|  | u32                                          set | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | class VkDeviceGeneratedCommandsFeaturesNVX { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkBool32                                    computeBindingPointSupport | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | class VkDeviceGeneratedCommandsLimitsNVX { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | u32                                         maxIndirectCommandsLayoutTokenCount | 
|  | u32                                         maxObjectEntryCounts | 
|  | u32                                         minSequenceCountBufferOffsetAlignment | 
|  | u32                                         minSequenceIndexBufferOffsetAlignment | 
|  | u32                                         minCommandsTokenBufferOffsetAlignment | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | class VkIndirectCommandsTokenNVX { | 
|  | VkIndirectCommandsTokenTypeNVX              tokenType | 
|  | VkBuffer                                    buffer | 
|  | VkDeviceSize                                offset | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | class VkIndirectCommandsLayoutTokenNVX { | 
|  | VkIndirectCommandsTokenTypeNVX              tokenType | 
|  | u32                                         bindingUnit | 
|  | u32                                         dynamicCount | 
|  | u32                                         divisor | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | class VkIndirectCommandsLayoutCreateInfoNVX { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkPipelineBindPoint                         pipelineBindPoint | 
|  | VkIndirectCommandsLayoutUsageFlagsNVX       flags | 
|  | u32                                         tokenCount | 
|  | const VkIndirectCommandsLayoutTokenNVX*     pTokens | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | class VkCmdProcessCommandsInfoNVX { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkObjectTableNVX                            objectTable | 
|  | VkIndirectCommandsLayoutNVX                 indirectCommandsLayout | 
|  | u32                                         indirectCommandsTokenCount | 
|  | const VkIndirectCommandsTokenNVX*           pIndirectCommandsTokens | 
|  | u32                                         maxSequencesCount | 
|  | VkCommandBuffer                             targetCommandBuffer | 
|  | VkBuffer                                    sequencesCountBuffer | 
|  | VkDeviceSize                                sequencesCountOffset | 
|  | VkBuffer                                    sequencesIndexBuffer | 
|  | VkDeviceSize                                sequencesIndexOffset | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | class VkCmdReserveSpaceForCommandsInfoNVX { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkObjectTableNVX                            objectTable | 
|  | VkIndirectCommandsLayoutNVX                 indirectCommandsLayout | 
|  | u32                                         maxSequencesCount | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | class VkObjectTableCreateInfoNVX { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | u32                                         objectCount | 
|  | const VkObjectEntryTypeNVX*                 pObjectEntryTypes | 
|  | const u32*                                  pObjectEntryCounts | 
|  | const VkObjectEntryUsageFlagsNVX*           pObjectEntryUsageFlags | 
|  | u32                                         maxUniformBuffersPerDescriptor | 
|  | u32                                         maxStorageBuffersPerDescriptor | 
|  | u32                                         maxStorageImagesPerDescriptor | 
|  | u32                                         maxSampledImagesPerDescriptor | 
|  | u32                                         maxPipelineLayouts | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | class VkObjectTableEntryNVX { | 
|  | VkObjectEntryTypeNVX                        type | 
|  | VkObjectEntryUsageFlagsNVX                  flags | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | class VkObjectTablePipelineEntryNVX { | 
|  | VkObjectEntryTypeNVX                        type | 
|  | VkObjectEntryUsageFlagsNVX                  flags | 
|  | VkPipeline                                  pipeline | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | class VkObjectTableDescriptorSetEntryNVX { | 
|  | VkObjectEntryTypeNVX                        type | 
|  | VkObjectEntryUsageFlagsNVX                  flags | 
|  | VkPipelineLayout                            pipelineLayout | 
|  | VkDescriptorSet                             descriptorSet | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | class VkObjectTableVertexBufferEntryNVX { | 
|  | VkObjectEntryTypeNVX                        type | 
|  | VkObjectEntryUsageFlagsNVX                  flags | 
|  | VkBuffer                                    buffer | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | class VkObjectTableIndexBufferEntryNVX { | 
|  | VkObjectEntryTypeNVX                        type | 
|  | VkObjectEntryUsageFlagsNVX                  flags | 
|  | VkBuffer                                    buffer | 
|  | VkIndexType                                 indexType | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | class VkObjectTablePushConstantEntryNVX { | 
|  | VkObjectEntryTypeNVX                        type | 
|  | VkObjectEntryUsageFlagsNVX                  flags | 
|  | VkPipelineLayout                            pipelineLayout | 
|  | VkShaderStageFlags                          stageFlags | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_clip_space_w_scaling") // 88 | 
|  | class VkViewportWScalingNV { | 
|  | f32                                         xcoeff | 
|  | f32                                         ycoeff | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_clip_space_w_scaling") // 88 | 
|  | class VkPipelineViewportWScalingStateCreateInfoNV { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkBool32                                    viewportWScalingEnable | 
|  | u32                                         viewportCount | 
|  | const VkViewportWScalingNV*                 pViewportWScalings | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_display_surface_counter") // 91 | 
|  | class VkSurfaceCapabilities2EXT { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | u32                                         minImageCount | 
|  | u32                                         maxImageCount | 
|  | VkExtent2D                                  currentExtent | 
|  | VkExtent2D                                  minImageExtent | 
|  | VkExtent2D                                  maxImageExtent | 
|  | u32                                         maxImageArrayLayers | 
|  | VkSurfaceTransformFlagsKHR                  supportedTransforms | 
|  | VkSurfaceTransformFlagBitsKHR               currentTransform | 
|  | VkCompositeAlphaFlagsKHR                    supportedCompositeAlpha | 
|  | VkImageUsageFlags                           supportedUsageFlags | 
|  | VkSurfaceCounterFlagsEXT                    supportedSurfaceCounters | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_display_control") // 92 | 
|  | class VkDisplayPowerInfoEXT { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkDisplayPowerStateEXT                      powerState | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_display_control") // 92 | 
|  | class VkDeviceEventInfoEXT { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkDeviceEventTypeEXT                        deviceEvent | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_display_control") // 92 | 
|  | class VkDisplayEventInfoEXT { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkDisplayEventTypeEXT                       displayEvent | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_display_control") // 92 | 
|  | class VkSwapchainCounterCreateInfoEXT { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkSurfaceCounterFlagsEXT                    surfaceCounters | 
|  | } | 
|  |  | 
|  | @extension("VK_GOOGLE_display_timing") // 93 | 
|  | class VkRefreshCycleDurationGOOGLE { | 
|  | u64                                             refreshDuration | 
|  | } | 
|  |  | 
|  | @extension("VK_GOOGLE_display_timing") // 93 | 
|  | class VkPastPresentationTimingGOOGLE { | 
|  | u32                                             presentID | 
|  | u64                                             desiredPresentTime | 
|  | u64                                             actualPresentTime | 
|  | u64                                             earliestPresentTime | 
|  | u64                                             presentMargin | 
|  | } | 
|  |  | 
|  | @extension("VK_GOOGLE_display_timing") // 93 | 
|  | class VkPresentTimeGOOGLE { | 
|  | u32                                             presentID | 
|  | u64                                             desiredPresentTime | 
|  | } | 
|  |  | 
|  | @extension("VK_GOOGLE_display_timing") // 93 | 
|  | class VkPresentTimesInfoGOOGLE { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | u32                                             swapchainCount | 
|  | const VkPresentTimeGOOGLE*                      pTimes | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_multiview_per_view_attributes") // 98 | 
|  | class VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | VkBool32                                    perViewPositionAllComponents | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_viewport_swizzle") // 99 | 
|  | class VkViewportSwizzleNV { | 
|  | VkViewportCoordinateSwizzleNV               x | 
|  | VkViewportCoordinateSwizzleNV               y | 
|  | VkViewportCoordinateSwizzleNV               z | 
|  | VkViewportCoordinateSwizzleNV               w | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_viewport_swizzle") // 99 | 
|  | class VkPipelineViewportSwizzleStateCreateInfoNV { | 
|  | VkStructureType                             sType | 
|  | const void*                                 pNext | 
|  | VkPipelineViewportSwizzleStateCreateFlagsNV flags | 
|  | u32                                         viewportCount | 
|  | const VkViewportSwizzleNV*                  pViewportSwizzles | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_discard_rectangles") // 100 | 
|  | class VkPhysicalDeviceDiscardRectanglePropertiesEXT { | 
|  | VkStructureType                             sType | 
|  | void*                                       pNext | 
|  | u32                                         maxDiscardRectangles | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_discard_rectangles") // 100 | 
|  | class VkPipelineDiscardRectangleStateCreateInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkPipelineDiscardRectangleStateCreateFlagsEXT   flags | 
|  | VkDiscardRectangleModeEXT                       discardRectangleMode | 
|  | u32                                             discardRectangleCount | 
|  | const VkRect2D*                                 pDiscardRectangles | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_conservative_rasterization") // 102 | 
|  | class VkPhysicalDeviceConservativeRasterizationPropertiesEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | f32                                             primitiveOverestimationSize | 
|  | f32                                             maxExtraPrimitiveOverestimationSize | 
|  | f32                                             extraPrimitiveOverestimationSizeGranularity | 
|  | VkBool32                                        primitiveUnderestimation | 
|  | VkBool32                                        conservativePointAndLineRasterization | 
|  | VkBool32                                        degenerateTrianglesRasterized | 
|  | VkBool32                                        degenerateLinesRasterized | 
|  | VkBool32                                        fullyCoveredFragmentShaderInputVariable | 
|  | VkBool32                                        conservativeRasterizationPostDepthCoverage | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_conservative_rasterization") // 102 | 
|  | class VkPipelineRasterizationConservativeStateCreateInfoEXT { | 
|  | VkStructureType                                           sType | 
|  | const void*                                               pNext | 
|  | VkPipelineRasterizationConservativeStateCreateFlagsEXT    flags | 
|  | VkConservativeRasterizationModeEXT                        conservativeRasterizationMode | 
|  | f32                                                       extraPrimitiveOverestimationSize | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_hdr_metadata") // 106 | 
|  | class VkXYColorEXT { | 
|  | f32                                             x | 
|  | f32                                             y | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_hdr_metadata") // 106 | 
|  | class VkHdrMetadataEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkXYColorEXT                                    displayPrimaryRed | 
|  | VkXYColorEXT                                    displayPrimaryGreen | 
|  | VkXYColorEXT                                    displayPrimaryBlue | 
|  | VkXYColorEXT                                    whitePoint | 
|  | f32                                             maxLuminance | 
|  | f32                                             minLuminance | 
|  | f32                                             maxContentLightLevel | 
|  | f32                                             maxFrameAverageLightLevel | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_create_renderpass2") // 110 | 
|  | class VkAttachmentDescription2KHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkAttachmentDescriptionFlags                    flags | 
|  | VkFormat                                        format | 
|  | VkSampleCountFlagBits                           samples | 
|  | VkAttachmentLoadOp                              loadOp | 
|  | VkAttachmentStoreOp                             storeOp | 
|  | VkAttachmentLoadOp                              stencilLoadOp | 
|  | VkAttachmentStoreOp                             stencilStoreOp | 
|  | VkImageLayout                                   initialLayout | 
|  | VkImageLayout                                   finalLayout | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_create_renderpass2") // 110 | 
|  | class VkAttachmentReference2KHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | u32                                             attachment | 
|  | VkImageLayout                                   layout | 
|  | VkImageAspectFlags                              aspectMask | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_create_renderpass2") // 110 | 
|  | class VkSubpassDescription2KHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkSubpassDescriptionFlags                       flags | 
|  | VkPipelineBindPoint                             pipelineBindPoint | 
|  | u32                                             viewMask | 
|  | u32                                             inputAttachmentCount | 
|  | const VkAttachmentReference2KHR*                pInputAttachments | 
|  | u32                                             colorAttachmentCount | 
|  | const VkAttachmentReference2KHR*                pColorAttachments | 
|  | const VkAttachmentReference2KHR*                pResolveAttachments | 
|  | const VkAttachmentReference2KHR*                pDepthStencilAttachment | 
|  | u32                                             preserveAttachmentCount | 
|  | const u32*                                      pPreserveAttachments | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_create_renderpass2") // 110 | 
|  | class VkSubpassDependency2KHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | u32                                             srcSubpass | 
|  | u32                                             dstSubpass | 
|  | VkPipelineStageFlags                            srcStageMask | 
|  | VkPipelineStageFlags                            dstStageMask | 
|  | VkAccessFlags                                   srcAccessMask | 
|  | VkAccessFlags                                   dstAccessMask | 
|  | VkDependencyFlags                               dependencyFlags | 
|  | s32                                             viewOffset | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_create_renderpass2") // 110 | 
|  | class VkRenderPassCreateInfo2KHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkRenderPassCreateFlags                         flags | 
|  | u32                                             attachmentCount | 
|  | const VkAttachmentDescription2KHR*              pAttachments | 
|  | u32                                             subpassCount | 
|  | const VkSubpassDescription2KHR*                 pSubpasses | 
|  | u32                                             dependencyCount | 
|  | const VkSubpassDependency2KHR*                  pDependencies | 
|  | u32                                             correlatedViewMaskCount | 
|  | const u32*                                      pCorrelatedViewMasks | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_create_renderpass2") // 110 | 
|  | class VkSubpassBeginInfoKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkSubpassContents                               contents | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_create_renderpass2") // 110 | 
|  | class VkSubpassEndInfoKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_shared_presentable_image") // 112 | 
|  | class VkSharedPresentSurfaceCapabilitiesKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkImageUsageFlags                               sharedPresentSupportedUsageFlags | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_fence_capabilities") // 113 | 
|  | class VkPhysicalDeviceExternalFenceInfoKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkExternalFenceHandleTypeFlagBitsKHR            handleType | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_fence_capabilities") // 113 | 
|  | class VkExternalFencePropertiesKHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkExternalFenceHandleTypeFlagsKHR               exportFromImportedHandleTypes | 
|  | VkExternalFenceHandleTypeFlagsKHR               compatibleHandleTypes | 
|  | VkExternalFenceFeatureFlagsKHR                  externalFenceFeatures | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_fence") // 114 | 
|  | class VkExportFenceCreateInfoKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkExternalFenceHandleTypeFlagsKHR               handleTypes | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_fence_win32") // 115 | 
|  | class VkImportFenceWin32HandleInfoKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkFence                                         fence | 
|  | VkFenceImportFlagsKHR                           flags | 
|  | VkExternalFenceHandleTypeFlagBitsKHR            handleType | 
|  | platform.HANDLE                                 handle | 
|  | platform.LPCWSTR                                name | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_fence_win32") // 115 | 
|  | class VkExportFenceWin32HandleInfoKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | const platform.SECURITY_ATTRIBUTES*             pAttributes | 
|  | platform.DWORD                                  dwAccess | 
|  | platform.LPCWSTR                                name | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_fence_win32") // 115 | 
|  | class VkFenceGetWin32HandleInfoKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkFence                                         fence | 
|  | VkExternalFenceHandleTypeFlagBitsKHR            handleType | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_fence_fd") // 116 | 
|  | class VkImportFenceFdInfoKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkFence                                         fence | 
|  | VkFenceImportFlagsKHR                           flags | 
|  | VkExternalFenceHandleTypeFlagBitsKHR            handleType | 
|  | int                                             fd | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_fence_fd") // 116 | 
|  | class VkFenceGetFdInfoKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkFence                                         fence | 
|  | VkExternalFenceHandleTypeFlagBitsKHR            handleType | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_maintenance2") // 118 | 
|  | class VkPhysicalDevicePointClippingPropertiesKHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkPointClippingBehaviorKHR                      pointClippingBehavior | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_maintenance2") // 118 | 
|  | class VkInputAttachmentAspectReferenceKHR { | 
|  | u32                                             subpass | 
|  | u32                                             inputAttachmentIndex | 
|  | VkImageAspectFlags                              aspectMask | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_maintenance2") // 118 | 
|  | class VkRenderPassInputAttachmentAspectCreateInfoKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | u32                                             aspectReferenceCount | 
|  | const VkInputAttachmentAspectReferenceKHR*      pAspectReferences | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_maintenance2") // 118 | 
|  | class VkImageViewUsageCreateInfoKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkImageUsageFlags                               usage | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_maintenance2") // 118 | 
|  | class VkPipelineTessellationDomainOriginStateCreateInfoKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkTessellationDomainOriginKHR                   domainOrigin | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_surface_capabilities2") // 120 | 
|  | class VkPhysicalDeviceSurfaceInfo2KHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkSurfaceKHR                                    surface | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_surface_capabilities2") // 120 | 
|  | class VkSurfaceCapabilities2KHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkSurfaceCapabilitiesKHR                        surfaceCapabilities | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_surface_capabilities2") // 120 | 
|  | class VkSurfaceFormat2KHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkSurfaceFormatKHR                              surfaceFormat | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_variable_pointers") // 121 | 
|  | class VkPhysicalDeviceVariablePointerFeaturesKHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        variablePointersStorageBuffer | 
|  | VkBool32                                        variablePointers | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display_properties2") // 122 | 
|  | class VkDisplayProperties2KHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkDisplayPropertiesKHR                          displayProperties | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display_properties2") // 122 | 
|  | class VkDisplayPlaneProperties2KHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkDisplayPlanePropertiesKHR                     displayPlaneProperties | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display_properties2") // 122 | 
|  | class VkDisplayModeProperties2KHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkDisplayModePropertiesKHR                      displayModeProperties | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display_properties2") // 122 | 
|  | class VkDisplayPlaneInfo2KHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkDisplayModeKHR                                mode | 
|  | u32                                             planeIndex | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display_properties2") // 122 | 
|  | class VkDisplayPlaneCapabilities2KHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkDisplayPlaneCapabilitiesKHR                   capabilities | 
|  | } | 
|  |  | 
|  | @extension("VK_MVK_ios_surface") // 123 | 
|  | class VkIOSSurfaceCreateInfoMVK { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkIOSSurfaceCreateFlagsMVK                      flags | 
|  | const void*                                     pView | 
|  | } | 
|  |  | 
|  | @extension("VK_MVK_macos_surface") // 124 | 
|  | class VkMacOSSurfaceCreateInfoMVK { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkMacOSSurfaceCreateFlagsMVK                    flags | 
|  | const void*                                     pView | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_dedicated_allocation") // 128 | 
|  | class VkMemoryDedicatedRequirementsKHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        prefersDedicatedAllocation | 
|  | VkBool32                                        requiresDedicatedAllocation | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_dedicated_allocation") // 128 | 
|  | class VkMemoryDedicatedAllocateInfoKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkImage                                         image | 
|  | VkBuffer                                        buffer | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | class VkDebugUtilsObjectNameInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkObjectType                                    objectType | 
|  | u64                                             objectHandle | 
|  | const char*                                     pObjectName | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | class VkDebugUtilsObjectTagInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkObjectType                                    objectType | 
|  | u64                                             objectHandle | 
|  | u64                                             tagName | 
|  | platform.size_t                                 tagSize | 
|  | const void*                                     pTag | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | class VkDebugUtilsLabelEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | const char*                                     pLabelName | 
|  | f32[4]                                          color | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | class VkDebugUtilsMessengerCallbackDataEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkDebugUtilsMessengerCallbackDataFlagsEXT       flags | 
|  | const char*                                     pMessageIdName | 
|  | s32                                             messageIdNumber | 
|  | const char*                                     pMessage | 
|  | u32                                             queueLabelCount | 
|  | const VkDebugUtilsLabelEXT*                     pQueueLabels | 
|  | u32                                             cmdBufLabelCount | 
|  | const VkDebugUtilsLabelEXT*                     pCmdBufLabels | 
|  | u32                                             objectCount | 
|  | const VkDebugUtilsObjectNameInfoEXT*            pObjects | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | class VkDebugUtilsMessengerCreateInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkDebugUtilsMessengerCreateFlagsEXT             flags | 
|  | VkDebugUtilsMessageSeverityFlagsEXT             messageSeverity | 
|  | VkDebugUtilsMessageTypeFlagsEXT                 messageTypes | 
|  | PFN_vkDebugUtilsMessengerCallbackEXT            pfnUserCallback | 
|  | void*                                           pUserData | 
|  | } | 
|  |  | 
|  | @extension("VK_ANDROID_external_memory_android_hardware_buffer") // 131 | 
|  | class VkAndroidHardwareBufferUsageANDROID { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | u64                                             androidHardwareBufferUsage | 
|  | } | 
|  |  | 
|  | @extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130 | 
|  | class VkAndroidHardwareBufferPropertiesANDROID { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkDeviceSize                                    allocationSize | 
|  | u32                                             memoryTypeBits | 
|  | } | 
|  |  | 
|  | @extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130 | 
|  | class VkAndroidHardwareBufferFormatPropertiesANDROID { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkFormat                                        format | 
|  | u64                                             externalFormat | 
|  | VkFormatFeatureFlags                            formatFeatures | 
|  | VkComponentMapping                              samplerYcbcrConversionComponents | 
|  | VkSamplerYcbcrModelConversion                   suggestedYcbcrModel | 
|  | VkSamplerYcbcrRange                             suggestedYcbcrRange | 
|  | VkChromaLocation                                suggestedXChromaOffset | 
|  | VkChromaLocation                                suggestedYChromaOffset | 
|  | } | 
|  |  | 
|  | @extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130 | 
|  | class VkImportAndroidHardwareBufferInfoANDROID { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | platform.AHardwareBuffer*                       buffer | 
|  | } | 
|  |  | 
|  | @extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130 | 
|  | class VkMemoryGetAndroidHardwareBufferInfoANDROID { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkDeviceMemory                                  memory | 
|  | } | 
|  |  | 
|  | @extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130 | 
|  | class VkExternalFormatANDROID { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | u64                                             externalFormat | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_sampler_filter_minmax") // 131 | 
|  | class VkSamplerReductionModeCreateInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkSamplerReductionModeEXT                       reductionMode | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_sampler_filter_minmax") // 131 | 
|  | class VkPhysicalDeviceSamplerFilterMinmaxPropertiesEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        filterMinmaxSingleComponentFormats | 
|  | VkBool32                                        filterMinmaxImageComponentMapping | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_inline_uniform_block") // 139 | 
|  | class VkPhysicalDeviceInlineUniformBlockFeaturesEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        inlineUniformBlock | 
|  | VkBool32                                        descriptorBindingInlineUniformBlockUpdateAfterBind | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_inline_uniform_block") // 139 | 
|  | class VkPhysicalDeviceInlineUniformBlockPropertiesEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | u32                                             maxInlineUniformBlockSize | 
|  | u32                                             maxPerStageDescriptorInlineUniformBlocks | 
|  | u32                                             maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks | 
|  | u32                                             maxDescriptorSetInlineUniformBlocks | 
|  | u32                                             maxDescriptorSetUpdateAfterBindInlineUniformBlocks | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_inline_uniform_block") // 139 | 
|  | class VkWriteDescriptorSetInlineUniformBlockEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | u32                                             dataSize | 
|  | const void*                                     pData | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_inline_uniform_block") // 139 | 
|  | class VkDescriptorPoolInlineUniformBlockCreateInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | u32                                             maxInlineUniformBlockBindings | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_sample_locations") // 144 | 
|  | class VkSampleLocationEXT { | 
|  | f32                                             x | 
|  | f32                                             y | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_sample_locations") // 144 | 
|  | class VkSampleLocationsInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkSampleCountFlagBits                           sampleLocationsPerPixel | 
|  | VkExtent2D                                      sampleLocationGridSize | 
|  | u32                                             sampleLocationsCount | 
|  | const VkSampleLocationEXT*                      pSampleLocations | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_sample_locations") // 144 | 
|  | class VkAttachmentSampleLocationsEXT { | 
|  | u32                                             attachmentIndex | 
|  | VkSampleLocationsInfoEXT                        sampleLocationsInfo | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_sample_locations") // 144 | 
|  | class VkSubpassSampleLocationsEXT { | 
|  | u32                                             subpassIndex | 
|  | VkSampleLocationsInfoEXT                        sampleLocationsInfo | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_sample_locations") // 144 | 
|  | class VkRenderPassSampleLocationsBeginInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | u32                                             attachmentInitialSampleLocationsCount | 
|  | const VkAttachmentSampleLocationsEXT*           pAttachmentInitialSampleLocations | 
|  | u32                                             postSubpassSampleLocationsCount | 
|  | const VkSubpassSampleLocationsEXT*              pPostSubpassSampleLocations | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_sample_locations") // 144 | 
|  | class VkPipelineSampleLocationsStateCreateInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkBool32                                        sampleLocationsEnable | 
|  | VkSampleLocationsInfoEXT                        sampleLocationsInfo | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_sample_locations") // 144 | 
|  | class VkPhysicalDeviceSampleLocationsPropertiesEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkSampleCountFlags                              sampleLocationSampleCounts | 
|  | VkExtent2D                                      maxSampleLocationGridSize | 
|  | f32[2]                                          sampleLocationCoordinateRange | 
|  | u32                                             sampleLocationSubPixelBits | 
|  | VkBool32                                        variableSampleLocations | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_sample_locations") // 144 | 
|  | class VkMultisamplePropertiesEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkExtent2D                                      maxSampleLocationGridSize | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_memory_requirements2") // 147 | 
|  | class VkBufferMemoryRequirementsInfo2KHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkBuffer                                        buffer | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_memory_requirements2") // 147 | 
|  | class VkImageMemoryRequirementsInfo2KHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkImage                                         image | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_memory_requirements2") // 147 | 
|  | class VkImageSparseMemoryRequirementsInfo2KHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkImage                                         image | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_memory_requirements2") // 147 | 
|  | class VkMemoryRequirements2KHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkMemoryRequirements                            memoryRequirements | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_memory_requirements2") // 147 | 
|  | class VkSparseImageMemoryRequirements2KHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkSparseImageMemoryRequirements                 memoryRequirements | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_image_format_list") // 148 | 
|  | class VkImageFormatListCreateInfoKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | u32                                             viewFormatCount | 
|  | const VkFormat*                                 pViewFormats | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_blend_operation_advanced") // 149 | 
|  | class VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        advancedBlendCoherentOperations | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_blend_operation_advanced") // 149 | 
|  | class VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | u32                                             advancedBlendMaxColorAttachments | 
|  | VkBool32                                        advancedBlendIndependentBlend | 
|  | VkBool32                                        advancedBlendNonPremultipliedSrcColor | 
|  | VkBool32                                        advancedBlendNonPremultipliedDstColor | 
|  | VkBool32                                        advancedBlendCorrelatedOverlap | 
|  | VkBool32                                        advancedBlendAllOperations | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_blend_operation_advanced") // 149 | 
|  | class VkPipelineColorBlendAdvancedStateCreateInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkBool32                                        srcPremultiplied | 
|  | VkBool32                                        dstPremultiplied | 
|  | VkBlendOverlapEXT                               blendOverlap | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_fragment_coverage_to_color") // 150 | 
|  | class VkPipelineCoverageToColorStateCreateInfoNV { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkPipelineCoverageToColorStateCreateFlagsNV     flags | 
|  | VkBool32                                        coverageToColorEnable | 
|  | u32                                             coverageToColorLocation | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_framebuffer_mixed_samples") // 153 | 
|  | class VkPipelineCoverageModulationStateCreateInfoNV { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkPipelineCoverageModulationStateCreateFlagsNV  flags | 
|  | VkCoverageModulationModeNV                      coverageModulationMode | 
|  | VkBool32                                        coverageModulationTableEnable | 
|  | u32                                             coverageModulationTableCount | 
|  | const f32*                                      pCoverageModulationTable | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_sampler_ycbcr_conversion") // 157 | 
|  | class VkSamplerYcbcrConversionCreateInfoKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkFormat                                        format | 
|  | VkSamplerYcbcrModelConversionKHR                ycbcrModel | 
|  | VkSamplerYcbcrRangeKHR                          ycbcrRange | 
|  | VkComponentMapping                              components | 
|  | VkChromaLocationKHR                             xChromaOffset | 
|  | VkChromaLocationKHR                             yChromaOffset | 
|  | VkFilter                                        chromaFilter | 
|  | VkBool32                                        forceExplicitReconstruction | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_sampler_ycbcr_conversion") // 157 | 
|  | class VkSamplerYcbcrConversionInfoKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkSamplerYcbcrConversionKHR                     conversion | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_sampler_ycbcr_conversion") // 157 | 
|  | class VkBindImagePlaneMemoryInfoKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkImageAspectFlagBits                           planeAspect | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_sampler_ycbcr_conversion") // 157 | 
|  | class VkImagePlaneMemoryRequirementsInfoKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkImageAspectFlagBits                           planeAspect | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_sampler_ycbcr_conversion") // 157 | 
|  | class VkPhysicalDeviceSamplerYcbcrConversionFeaturesKHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        samplerYcbcrConversion | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_sampler_ycbcr_conversion") // 157 | 
|  | class VkSamplerYcbcrConversionImageFormatPropertiesKHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | u32                                             combinedImageSamplerDescriptorCount | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_bind_memory2") // 158 | 
|  | class VkBindBufferMemoryInfoKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkBuffer                                        buffer | 
|  | VkDeviceMemory                                  memory | 
|  | VkDeviceSize                                    memoryOffset | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_bind_memory2") // 158 | 
|  | class VkBindImageMemoryInfoKHR { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkImage                                         image | 
|  | VkDeviceMemory                                  memory | 
|  | VkDeviceSize                                    memoryOffset | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_image_drm_format_modifier") // 159 | 
|  | class VkDrmFormatModifierPropertiesEXT { | 
|  | u64                                             drmFormatModifier | 
|  | u32                                             drmFormatModifierPlaneCount | 
|  | VkFormatFeatureFlags                            drmFormatModifierTilingFeatures | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_image_drm_format_modifier") // 159 | 
|  | class VkDrmFormatModifierPropertiesListEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | u32                                             drmFormatModifierCount | 
|  | VkDrmFormatModifierPropertiesEXT*               pDrmFormatModifierProperties | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_image_drm_format_modifier") // 159 | 
|  | class VkPhysicalDeviceImageDrmFormatModifierInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | u64                                             drmFormatModifier | 
|  | VkSharingMode                                   sharingMode | 
|  | u32                                             queueFamilyIndexCount | 
|  | const u32*                                      pQueueFamilyIndices | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_image_drm_format_modifier") // 159 | 
|  | class VkImageDrmFormatModifierListCreateInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | u32                                             drmFormatModifierCount | 
|  | const u64*                                      pDrmFormatModifiers | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_image_drm_format_modifier") // 159 | 
|  | class VkImageDrmFormatModifierExplicitCreateInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | u64                                             drmFormatModifier | 
|  | u32                                             drmFormatModifierPlaneCount | 
|  | const VkSubresourceLayout*                      pPlaneLayouts | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_image_drm_format_modifier") // 159 | 
|  | class VkImageDrmFormatModifierPropertiesEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | u64                                             drmFormatModifier | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_validation_cache") // 161 | 
|  | class VkValidationCacheCreateInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkValidationCacheCreateFlagsEXT                 flags | 
|  | platform.size_t                                 initialDataSize | 
|  | const void*                                     pInitialData | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_validation_cache") // 161 | 
|  | class VkShaderModuleValidationCacheCreateInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkValidationCacheEXT                            validationCache | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_descriptor_indexing") // 162 | 
|  | class VkDescriptorSetLayoutBindingFlagsCreateInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | u32                                             bindingCount | 
|  | const VkDescriptorBindingFlagsEXT*              pBindingFlags | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_descriptor_indexing") // 162 | 
|  | class VkPhysicalDeviceDescriptorIndexingFeaturesEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        shaderInputAttachmentArrayDynamicIndexing | 
|  | VkBool32                                        shaderUniformTexelBufferArrayDynamicIndexing | 
|  | VkBool32                                        shaderStorageTexelBufferArrayDynamicIndexing | 
|  | VkBool32                                        shaderUniformBufferArrayNonUniformIndexing | 
|  | VkBool32                                        shaderSampledImageArrayNonUniformIndexing | 
|  | VkBool32                                        shaderStorageBufferArrayNonUniformIndexing | 
|  | VkBool32                                        shaderStorageImageArrayNonUniformIndexing | 
|  | VkBool32                                        shaderInputAttachmentArrayNonUniformIndexing | 
|  | VkBool32                                        shaderUniformTexelBufferArrayNonUniformIndexing | 
|  | VkBool32                                        shaderStorageTexelBufferArrayNonUniformIndexing | 
|  | VkBool32                                        descriptorBindingUniformBufferUpdateAfterBind | 
|  | VkBool32                                        descriptorBindingSampledImageUpdateAfterBind | 
|  | VkBool32                                        descriptorBindingStorageImageUpdateAfterBind | 
|  | VkBool32                                        descriptorBindingStorageBufferUpdateAfterBind | 
|  | VkBool32                                        descriptorBindingUniformTexelBufferUpdateAfterBind | 
|  | VkBool32                                        descriptorBindingStorageTexelBufferUpdateAfterBind | 
|  | VkBool32                                        descriptorBindingUpdateUnusedWhilePending | 
|  | VkBool32                                        descriptorBindingPartiallyBound | 
|  | VkBool32                                        descriptorBindingVariableDescriptorCount | 
|  | VkBool32                                        runtimeDescriptorArray | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_descriptor_indexing") // 162 | 
|  | class VkPhysicalDeviceDescriptorIndexingPropertiesEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | u32                                             maxUpdateAfterBindDescriptorsInAllPools | 
|  | VkBool32                                        shaderUniformBufferArrayNonUniformIndexingNative | 
|  | VkBool32                                        shaderSampledImageArrayNonUniformIndexingNative | 
|  | VkBool32                                        shaderStorageBufferArrayNonUniformIndexingNative | 
|  | VkBool32                                        shaderStorageImageArrayNonUniformIndexingNative | 
|  | VkBool32                                        shaderInputAttachmentArrayNonUniformIndexingNative | 
|  | VkBool32                                        robustBufferAccessUpdateAfterBind | 
|  | VkBool32                                        quadDivergentImplicitLod | 
|  | u32                                             maxPerStageDescriptorUpdateAfterBindSamplers | 
|  | u32                                             maxPerStageDescriptorUpdateAfterBindUniformBuffers | 
|  | u32                                             maxPerStageDescriptorUpdateAfterBindStorageBuffers | 
|  | u32                                             maxPerStageDescriptorUpdateAfterBindSampledImages | 
|  | u32                                             maxPerStageDescriptorUpdateAfterBindStorageImages | 
|  | u32                                             maxPerStageDescriptorUpdateAfterBindInputAttachments | 
|  | u32                                             maxPerStageUpdateAfterBindResources | 
|  | u32                                             maxDescriptorSetUpdateAfterBindSamplers | 
|  | u32                                             maxDescriptorSetUpdateAfterBindUniformBuffers | 
|  | u32                                             maxDescriptorSetUpdateAfterBindUniformBuffersDynamic | 
|  | u32                                             maxDescriptorSetUpdateAfterBindStorageBuffers | 
|  | u32                                             maxDescriptorSetUpdateAfterBindStorageBuffersDynamic | 
|  | u32                                             maxDescriptorSetUpdateAfterBindSampledImages | 
|  | u32                                             maxDescriptorSetUpdateAfterBindStorageImages | 
|  | u32                                             maxDescriptorSetUpdateAfterBindInputAttachments | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_descriptor_indexing") // 162 | 
|  | class VkDescriptorSetVariableDescriptorCountAllocateInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | u32                                             descriptorSetCount | 
|  | const u32*                                      pDescriptorCounts | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_descriptor_indexing") // 162 | 
|  | class VkDescriptorSetVariableDescriptorCountLayoutSupportEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | u32                                             maxVariableDescriptorCount | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_shading_rate_image") // 165 | 
|  | class VkShadingRatePaletteNV { | 
|  | u32                                             shadingRatePaletteEntryCount | 
|  | const VkShadingRatePaletteEntryNV*              pShadingRatePaletteEntries | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_shading_rate_image") // 165 | 
|  | class VkPipelineViewportShadingRateImageStateCreateInfoNV { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkBool32                                        shadingRateImageEnable | 
|  | u32                                             viewportCount | 
|  | const VkShadingRatePaletteNV*                   pShadingRatePalettes | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_shading_rate_image") // 165 | 
|  | class VkPhysicalDeviceShadingRateImageFeaturesNV { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        shadingRateImage | 
|  | VkBool32                                        shadingRateCoarseSampleOrder | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_shading_rate_image") // 165 | 
|  | class VkPhysicalDeviceShadingRateImagePropertiesNV { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkExtent2D                                      shadingRateTexelSize | 
|  | u32                                             shadingRatePaletteSize | 
|  | u32                                             shadingRateMaxCoarseSamples | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_shading_rate_image") // 165 | 
|  | class VkCoarseSampleLocationNV { | 
|  | u32                                             pixelX | 
|  | u32                                             pixelY | 
|  | u32                                             sample | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_shading_rate_image") // 165 | 
|  | class VkCoarseSampleOrderCustomNV { | 
|  | VkShadingRatePaletteEntryNV                     shadingRate | 
|  | u32                                             sampleCount | 
|  | u32                                             sampleLocationCount | 
|  | const VkCoarseSampleLocationNV*                 pSampleLocations | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_shading_rate_image") // 165 | 
|  | class VkPipelineViewportCoarseSampleOrderStateCreateInfoNV { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkCoarseSampleOrderTypeNV                       sampleOrderType | 
|  | u32                                             customSampleOrderCount | 
|  | const VkCoarseSampleOrderCustomNV*              pCustomSampleOrders | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | class VkRayTracingShaderGroupCreateInfoNV { | 
|  | VkStructureType                  sType | 
|  | const void*                      pNext | 
|  | VkRayTracingShaderGroupTypeNV    type | 
|  | u32                              generalShader | 
|  | u32                              closestHitShader | 
|  | u32                              anyHitShader | 
|  | u32                              intersectionShader | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | class VkRayTracingPipelineCreateInfoNV { | 
|  | VkStructureType                               sType | 
|  | const void*                                   pNext | 
|  | VkPipelineCreateFlags                         flags | 
|  | u32                                           stageCount | 
|  | const VkPipelineShaderStageCreateInfo*        pStages | 
|  | u32                                           groupCount | 
|  | const VkRayTracingShaderGroupCreateInfoNV*    pGroups | 
|  | u32                                           maxRecursionDepth | 
|  | VkPipelineLayout                              layout | 
|  | VkPipeline                                    basePipelineHandle | 
|  | s32                                           basePipelineIndex | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | class VkGeometryTrianglesNV { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkBuffer                                        vertexData | 
|  | VkDeviceSize                                    vertexOffset | 
|  | u32                                             vertexCount | 
|  | VkDeviceSize                                    vertexStride | 
|  | VkFormat                                        vertexFormat | 
|  | VkBuffer                                        indexData | 
|  | VkDeviceSize                                    indexOffset | 
|  | u32                                             indexCount | 
|  | VkIndexType                                     indexType | 
|  | VkBuffer                                        transformData | 
|  | VkDeviceSize                                    transformOffset | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | class VkGeometryAABBNV { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkBuffer                                        aabbData | 
|  | u32                                             numAABBs | 
|  | u32                                             stride | 
|  | VkDeviceSize                                    offset | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | class VkGeometryDataNV { | 
|  | VkGeometryTrianglesNV                           triangles | 
|  | VkGeometryAABBNV                                aabbs | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | class VkGeometryNV { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkGeometryTypeNV                                geometryType | 
|  | VkGeometryDataNV                                geometry | 
|  | VkGeometryFlagsNV                               flags | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | class VkAccelerationStructureInfoNV { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkAccelerationStructureTypeNV                   type | 
|  | VkBuildAccelerationStructureFlagsNV             flags | 
|  | u32                                             instanceCount | 
|  | u32                                             geometryCount | 
|  | const VkGeometryNV*                             pGeometries | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | class VkAccelerationStructureCreateInfoNV { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkDeviceSize                                    compactedSize | 
|  | VkAccelerationStructureInfoNV                   info | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | class VkBindAccelerationStructureMemoryInfoNV { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkAccelerationStructureNV                       accelerationStructure | 
|  | VkDeviceMemory                                  memory | 
|  | VkDeviceSize                                    memoryOffset | 
|  | u32                                             deviceIndexCount | 
|  | const u32*                                      pDeviceIndices | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | class VkDescriptorAccelerationStructureInfoNV { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | u32                                             accelerationStructureCount | 
|  | const VkAccelerationStructureNV*                pAccelerationStructures | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | class VkAccelerationStructureMemoryRequirementsInfoNV { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkAccelerationStructureMemoryRequirementsTypeNV type | 
|  | VkAccelerationStructureNV                       accelerationStructure | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | class VkPhysicalDeviceRaytracingPropertiesNV { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | u32                                             shaderGroupHandleSize | 
|  | u32                                             maxRecursionDepth | 
|  | u32                                             maxShaderGroupStride | 
|  | u32                                             shaderGroupBaseAlignment | 
|  | u64                                             maxGeometryCount | 
|  | u64                                             maxInstanceCount | 
|  | u64                                             maxTriangleCount | 
|  | u32                                             maxDescriptorSetAccelerationStructures | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_representative_fragment_test") // 167 | 
|  | class VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        representativeFragmentTest | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_representative_fragment_test") // 167 | 
|  | class VkPipelineRepresentativeFragmentTestStateCreateInfoNV { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkBool32                                        representativeFragmentTestEnable | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_maintenance3") // 169 | 
|  | class VkPhysicalDeviceMaintenance3PropertiesKHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | u32                                             maxPerSetDescriptors | 
|  | VkDeviceSize                                    maxMemoryAllocationSize | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_maintenance3") // 169 | 
|  | class VkDescriptorSetLayoutSupportKHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        supported | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_global_priority") // 175 | 
|  | class VkDeviceQueueGlobalPriorityCreateInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkQueueGlobalPriorityEXT                        globalPriority | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_8bit_storage") // 178 | 
|  | class VkPhysicalDevice8BitStorageFeaturesKHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        storageBuffer8BitAccess | 
|  | VkBool32                                        uniformAndStorageBuffer8BitAccess | 
|  | VkBool32                                        storagePushConstant8 | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_external_memory_host") // 179 | 
|  | class VkImportMemoryHostPointerInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkExternalMemoryHandleTypeFlagBits              handleType | 
|  | void*                                           pHostPointer | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_external_memory_host") // 179 | 
|  | class VkMemoryHostPointerPropertiesEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | u32                                             memoryTypeBits | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_external_memory_host") // 179 | 
|  | class VkPhysicalDeviceExternalMemoryHostPropertiesEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkDeviceSize                                    minImportedHostPointerAlignment | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_shader_atomic_int64") // 181 | 
|  | class VkPhysicalDeviceShaderAtomicInt64FeaturesKHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        shaderBufferInt64Atomics | 
|  | VkBool32                                        shaderSharedInt64Atomics | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_calibrated_timestamps") // 185 | 
|  | class VkCalibratedTimestampInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkTimeDomainEXT                                 timeDomain | 
|  | } | 
|  |  | 
|  | @extension("VK_AMD_shader_core_properties") // 186 | 
|  | class VkPhysicalDeviceShaderCorePropertiesAMD { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | u32                                             shaderEngineCount | 
|  | u32                                             shaderArraysPerEngineCount | 
|  | u32                                             computeUnitsPerShaderArray | 
|  | u32                                             simdPerComputeUnit | 
|  | u32                                             wavefrontsPerSimd | 
|  | u32                                             wavefrontSize | 
|  | u32                                             sgprsPerSimd | 
|  | u32                                             minSgprAllocation | 
|  | u32                                             maxSgprAllocation | 
|  | u32                                             sgprAllocationGranularity | 
|  | u32                                             vgprsPerSimd | 
|  | u32                                             minVgprAllocation | 
|  | u32                                             maxVgprAllocation | 
|  | u32                                             vgprAllocationGranularity | 
|  | } | 
|  |  | 
|  | @extension("VK_AMD_memory_overallocation_behavior") // 190 | 
|  | class VkDeviceMemoryOverallocationCreateInfoAMD { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkMemoryOverallocationBehaviorAMD               overallocationBehavior | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_vertex_attribute_divisor") // 191 | 
|  | class VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | u32                                             maxVertexAttribDivisor | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_vertex_attribute_divisor") // 191 | 
|  | class VkVertexInputBindingDivisorDescriptionEXT { | 
|  | u32                                             binding | 
|  | u32                                             divisor | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_vertex_attribute_divisor") // 191 | 
|  | class VkPipelineVertexInputDivisorStateCreateInfoEXT { | 
|  | VkStructureType                                     sType | 
|  | const void*                                         pNext | 
|  | u32                                                 vertexBindingDivisorCount | 
|  | const VkVertexInputBindingDivisorDescriptionEXT*    pVertexBindingDivisors | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_vertex_attribute_divisor") // 191 | 
|  | class VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        vertexAttributeInstanceRateDivisor | 
|  | VkBool32                                        vertexAttributeInstanceRateZeroDivisor | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_driver_properties") // 197 | 
|  | class VkConformanceVersionKHR { | 
|  | u8                                              major | 
|  | u8                                              minor | 
|  | u8                                              subminor | 
|  | u8                                              patch | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_driver_properties") // 197 | 
|  | class VkPhysicalDeviceDriverPropertiesKHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkDriverIdKHR                                   driverID | 
|  | char[VK_MAX_DRIVER_NAME_SIZE_KHR]               driverName | 
|  | char[VK_MAX_DRIVER_INFO_SIZE_KHR]               driverInfo | 
|  | VkConformanceVersionKHR                         conformanceVersion | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_shader_float_controls") // 198 | 
|  | class VkPhysicalDeviceFloatControlsPropertiesKHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        separateDenormSettings | 
|  | VkBool32                                        separateRoundingModeSettings | 
|  | VkBool32                                        shaderSignedZeroInfNanPreserveFloat16 | 
|  | VkBool32                                        shaderSignedZeroInfNanPreserveFloat32 | 
|  | VkBool32                                        shaderSignedZeroInfNanPreserveFloat64 | 
|  | VkBool32                                        shaderDenormPreserveFloat16 | 
|  | VkBool32                                        shaderDenormPreserveFloat32 | 
|  | VkBool32                                        shaderDenormPreserveFloat64 | 
|  | VkBool32                                        shaderDenormFlushToZeroFloat16 | 
|  | VkBool32                                        shaderDenormFlushToZeroFloat32 | 
|  | VkBool32                                        shaderDenormFlushToZeroFloat64 | 
|  | VkBool32                                        shaderRoundingModeRTEFloat16 | 
|  | VkBool32                                        shaderRoundingModeRTEFloat32 | 
|  | VkBool32                                        shaderRoundingModeRTEFloat64 | 
|  | VkBool32                                        shaderRoundingModeRTZFloat16 | 
|  | VkBool32                                        shaderRoundingModeRTZFloat32 | 
|  | VkBool32                                        shaderRoundingModeRTZFloat64 | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_compute_shader_derivatives") // 202 | 
|  | class VkPhysicalDeviceComputeShaderDerivativesFeaturesNV { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        computeDerivativeGroupQuads | 
|  | VkBool32                                        computeDerivativeGroupLinear | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_mesh_shader") // 203 | 
|  | class VkPhysicalDeviceMeshShaderFeaturesNV { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        taskShader | 
|  | VkBool32                                        meshShader | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_mesh_shader") // 203 | 
|  | class VkPhysicalDeviceMeshShaderPropertiesNV { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | u32                                             maxDrawMeshTasksCount | 
|  | u32                                             maxTaskWorkGroupInvocations | 
|  | u32[3]                                          maxTaskWorkGroupSize | 
|  | u32                                             maxTaskTotalMemorySize | 
|  | u32                                             maxTaskOutputCount | 
|  | u32                                             maxMeshWorkGroupInvocations | 
|  | u32[3]                                          maxMeshWorkGroupSize | 
|  | u32                                             maxMeshTotalMemorySize | 
|  | u32                                             maxMeshOutputVertices | 
|  | u32                                             maxMeshOutputPrimitives | 
|  | u32                                             maxMeshMultiviewViewCount | 
|  | u32                                             meshOutputPerVertexGranularity | 
|  | u32                                             meshOutputPerPrimitiveGranularity | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_mesh_shader") // 203 | 
|  | class VkDrawMeshTasksIndirectCommandNV { | 
|  | u32                                             taskCount | 
|  | u32                                             firstTask | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_fragment_shader_barycentric") // 204 | 
|  | class VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        fragmentShaderBarycentric | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_shader_image_footprint") // 205 | 
|  | class VkPhysicalDeviceShaderImageFootprintFeaturesNV { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        imageFootprint | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_scissor_exclusive") // 206 | 
|  | class VkPipelineViewportExclusiveScissorStateCreateInfoNV { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | u32                                             exclusiveScissorCount | 
|  | const VkRect2D*                                 pExclusiveScissors | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_scissor_exclusive") // 206 | 
|  | class VkPhysicalDeviceExclusiveScissorFeaturesNV { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        exclusiveScissor | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_device_diagnostic_checkpoints") // 207 | 
|  | class VkQueueFamilyCheckpointPropertiesNV { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkPipelineStageFlags                            checkpointExecutionStageMask | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_device_diagnostic_checkpoints") // 207 | 
|  | class VkCheckpointDataNV { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkPipelineStageFlagBits                         stage | 
|  | void*                                           pCheckpointMarker | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_vulkan_memory_model") // 212 | 
|  | class VkPhysicalDeviceVulkanMemoryModelFeaturesKHR { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        vulkanMemoryModel | 
|  | VkBool32                                        vulkanMemoryModelDeviceScope | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_pci_bus_info") // 213 | 
|  | class VkPhysicalDevicePCIBusInfoPropertiesEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | u32                                             pciDomain | 
|  | u32                                             pciBus | 
|  | u32                                             pciDevice | 
|  | u32                                             pciFunction | 
|  | } | 
|  |  | 
|  | @extension("VK_FUCHSIA_imagepipe_surface") // 215 | 
|  | class VkImagePipeSurfaceCreateInfoFUCHSIA { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkImagePipeSurfaceCreateFlagsFUCHSIA            flags | 
|  | platform.zx_handle_t                            imagePipeHandle | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_fragment_density_map") // 219 | 
|  | class VkPhysicalDeviceFragmentDensityMapFeaturesEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        fragmentDensityMap | 
|  | VkBool32                                        fragmentDensityMapDynamic | 
|  | VkBool32                                        fragmentDensityMapNonSubsampledImages | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_fragment_density_map") // 219 | 
|  | class VkPhysicalDeviceFragmentDensityMapPropertiesEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkExtent2D                                      minFragmentDensityTexelSize | 
|  | VkExtent2D                                      maxFragmentDensityTexelSize | 
|  | VkBool32                                        fragmentDensityInvocations | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_fragment_density_map") // 219 | 
|  | class VkRenderPassFragmentDensityMapCreateInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkAttachmentReference                           fragmentDensityMapAttachment | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_scalar_block_layout") // 222 | 
|  | class VkPhysicalDeviceScalarBlockLayoutFeaturesEXT { | 
|  | VkStructureType                                 sType | 
|  | void*                                           pNext | 
|  | VkBool32                                        scalarBlockLayout | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_separate_stencil_usage") // 247 | 
|  | class VkImageStencilUsageCreateInfoEXT { | 
|  | VkStructureType                                 sType | 
|  | const void*                                     pNext | 
|  | VkImageUsageFlags                               stencilUsage | 
|  | } | 
|  |  | 
|  |  | 
|  | //////////////// | 
|  | //  Commands  // | 
|  | //////////////// | 
|  |  | 
|  | // Function pointers. TODO: add support for function pointers. | 
|  |  | 
|  | @external type void* PFN_vkVoidFunction | 
|  | @pfn cmd void vkVoidFunction() { | 
|  | } | 
|  |  | 
|  | @external type void* PFN_vkAllocationFunction | 
|  | @pfn cmd void* vkAllocationFunction( | 
|  | void*                                       pUserData, | 
|  | platform.size_t                             size, | 
|  | platform.size_t                             alignment, | 
|  | VkSystemAllocationScope                     allocationScope) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @external type void* PFN_vkReallocationFunction | 
|  | @pfn cmd void* vkReallocationFunction( | 
|  | void*                                       pUserData, | 
|  | void*                                       pOriginal, | 
|  | platform.size_t                             size, | 
|  | platform.size_t                             alignment, | 
|  | VkSystemAllocationScope                     allocationScope) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @external type void* PFN_vkFreeFunction | 
|  | @pfn cmd void vkFreeFunction( | 
|  | void*                                       pUserData, | 
|  | void*                                       pMemory) { | 
|  | } | 
|  |  | 
|  | @external type void* PFN_vkInternalAllocationNotification | 
|  | @pfn cmd void vkInternalAllocationNotification( | 
|  | void*                                       pUserData, | 
|  | platform.size_t                             size, | 
|  | VkInternalAllocationType                    allocationType, | 
|  | VkSystemAllocationScope                     allocationScope) { | 
|  | } | 
|  |  | 
|  | @external type void* PFN_vkInternalFreeNotification | 
|  | @pfn cmd void vkInternalFreeNotification( | 
|  | void*                                       pUserData, | 
|  | platform.size_t                             size, | 
|  | VkInternalAllocationType                    allocationType, | 
|  | VkSystemAllocationScope                     allocationScope) { | 
|  | } | 
|  |  | 
|  | // Global functions | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkCreateInstance( | 
|  | const VkInstanceCreateInfo*                 pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkInstance*                                 pInstance) { | 
|  | assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO) | 
|  |  | 
|  | instance := ? | 
|  | pInstance[0] = instance | 
|  | State.Instances[instance] = new!InstanceObject() | 
|  |  | 
|  | layers := pCreateInfo.ppEnabledLayerNames[0:pCreateInfo.enabledLayerCount] | 
|  | extensions := pCreateInfo.ppEnabledExtensionNames[0:pCreateInfo.enabledExtensionCount] | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd void vkDestroyInstance( | 
|  | VkInstance                                  instance, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | instanceObject := GetInstance(instance) | 
|  |  | 
|  | State.Instances[instance] = null | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkEnumeratePhysicalDevices( | 
|  | VkInstance                                  instance, | 
|  | u32*                                        pPhysicalDeviceCount, | 
|  | VkPhysicalDevice*                           pPhysicalDevices) { | 
|  | instanceObject := GetInstance(instance) | 
|  |  | 
|  | physicalDeviceCount := as!u32(?) | 
|  | pPhysicalDeviceCount[0] = physicalDeviceCount | 
|  | physicalDevices := pPhysicalDevices[0:physicalDeviceCount] | 
|  |  | 
|  | for i in (0 .. physicalDeviceCount) { | 
|  | physicalDevice := ? | 
|  | physicalDevices[i] = physicalDevice | 
|  | if !(physicalDevice in State.PhysicalDevices) { | 
|  | State.PhysicalDevices[physicalDevice] = new!PhysicalDeviceObject(instance: instance) | 
|  | } | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | cmd PFN_vkVoidFunction vkGetDeviceProcAddr( | 
|  | VkDevice                                    device, | 
|  | const char*                                 pName) { | 
|  | if device != NULL_HANDLE { | 
|  | device := GetDevice(device) | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | cmd PFN_vkVoidFunction vkGetInstanceProcAddr( | 
|  | VkInstance                                  instance, | 
|  | const char*                                 pName) { | 
|  | if instance != NULL_HANDLE { | 
|  | instanceObject := GetInstance(instance) | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | cmd void vkGetPhysicalDeviceProperties( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkPhysicalDeviceProperties*                 pProperties) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  |  | 
|  | properties := ? | 
|  | pProperties[0] = properties | 
|  | } | 
|  |  | 
|  | cmd void vkGetPhysicalDeviceQueueFamilyProperties( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | u32*                                        pQueueFamilyPropertyCount, | 
|  | VkQueueFamilyProperties*                    pQueueFamilyProperties) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  | // TODO: Figure out how to express fetch-count-or-properties | 
|  | // This version fails 'apic validate' with 'fence not allowed in | 
|  | // *semantic.Branch'. Other attempts have failed with the same or other | 
|  | // errors. | 
|  | // if pQueueFamilyProperties != null { | 
|  | //     queuesProperties := pQueueFamilyProperties[0:pCount[0]] | 
|  | //     for i in (0 .. pCount[0]) { | 
|  | //         queueProperties := as!VkQueueFamilyProperties(?) | 
|  | //         queuesProperties[i] = queueProperties | 
|  | //    } | 
|  | // } else { | 
|  | //     count := ? | 
|  | //     pCount[0] = count | 
|  | // } | 
|  | } | 
|  |  | 
|  | cmd void vkGetPhysicalDeviceMemoryProperties( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkPhysicalDeviceMemoryProperties*           pMemoryProperties) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  |  | 
|  | memoryProperties := ? | 
|  | pMemoryProperties[0] = memoryProperties | 
|  | } | 
|  |  | 
|  | cmd void vkGetPhysicalDeviceFeatures( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkPhysicalDeviceFeatures*                   pFeatures) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  |  | 
|  | features := ? | 
|  | pFeatures[0] = features | 
|  | } | 
|  |  | 
|  | cmd void vkGetPhysicalDeviceFormatProperties( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkFormat                                    format, | 
|  | VkFormatProperties*                         pFormatProperties) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  |  | 
|  | formatProperties := ? | 
|  | pFormatProperties[0] = formatProperties | 
|  | } | 
|  |  | 
|  | cmd VkResult vkGetPhysicalDeviceImageFormatProperties( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkFormat                                    format, | 
|  | VkImageType                                 type, | 
|  | VkImageTiling                               tiling, | 
|  | VkImageUsageFlags                           usage, | 
|  | VkImageCreateFlags                          flags, | 
|  | VkImageFormatProperties*                    pImageFormatProperties) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  |  | 
|  | imageFormatProperties := ? | 
|  | pImageFormatProperties[0] = imageFormatProperties | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  |  | 
|  | // Device functions | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkCreateDevice( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | const VkDeviceCreateInfo*                   pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkDevice*                                   pDevice) { | 
|  | assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO) | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  |  | 
|  | device := ? | 
|  | pDevice[0] = device | 
|  | State.Devices[device] = new!DeviceObject(physicalDevice: physicalDevice) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd void vkDestroyDevice( | 
|  | VkDevice                                    device, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | State.Devices[device] = null | 
|  | } | 
|  |  | 
|  |  | 
|  | // Extension discovery functions | 
|  |  | 
|  | cmd VkResult vkEnumerateInstanceLayerProperties( | 
|  | u32*                                        pPropertyCount, | 
|  | VkLayerProperties*                          pProperties) { | 
|  | count := as!u32(?) | 
|  | pPropertyCount[0] = count | 
|  |  | 
|  | properties := pProperties[0:count] | 
|  | for i in (0 .. count) { | 
|  | property := ? | 
|  | properties[i] = property | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | cmd VkResult vkEnumerateInstanceExtensionProperties( | 
|  | const char*                                 pLayerName, | 
|  | u32*                                        pPropertyCount, | 
|  | VkExtensionProperties*                      pProperties) { | 
|  | count := as!u32(?) | 
|  | pPropertyCount[0] = count | 
|  |  | 
|  | properties := pProperties[0:count] | 
|  | for i in (0 .. count) { | 
|  | property := ? | 
|  | properties[i] = property | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | cmd VkResult vkEnumerateDeviceLayerProperties( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | u32*                                        pPropertyCount, | 
|  | VkLayerProperties*                          pProperties) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  | count := as!u32(?) | 
|  | pPropertyCount[0] = count | 
|  |  | 
|  | properties := pProperties[0:count] | 
|  | for i in (0 .. count) { | 
|  | property := ? | 
|  | properties[i] = property | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | cmd VkResult vkEnumerateDeviceExtensionProperties( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | const char*                                 pLayerName, | 
|  | u32*                                        pPropertyCount, | 
|  | VkExtensionProperties*                      pProperties) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  |  | 
|  | count := as!u32(?) | 
|  | pPropertyCount[0] = count | 
|  |  | 
|  | properties := pProperties[0:count] | 
|  | for i in (0 .. count) { | 
|  | property := ? | 
|  | properties[i] = property | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  |  | 
|  | // Queue functions | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd void vkGetDeviceQueue( | 
|  | VkDevice                                    device, | 
|  | u32                                         queueFamilyIndex, | 
|  | u32                                         queueIndex, | 
|  | VkQueue*                                    pQueue) { | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | queue := ? | 
|  | pQueue[0] = queue | 
|  |  | 
|  | if !(queue in State.Queues) { | 
|  | State.Queues[queue] = new!QueueObject(device: device) | 
|  | } | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd VkResult vkQueueSubmit( | 
|  | VkQueue                                     queue, | 
|  | u32                                         submitCount, | 
|  | const VkSubmitInfo*                         pSubmits, | 
|  | VkFence                                     fence) { | 
|  | queueObject := GetQueue(queue) | 
|  |  | 
|  | if fence != NULL_HANDLE { | 
|  | fenceObject := GetFence(fence) | 
|  | assert(fenceObject.device == queueObject.device) | 
|  | } | 
|  |  | 
|  | // commandBuffers := pcommandBuffers[0:commandBufferCount] | 
|  | // for i in (0 .. commandBufferCount) { | 
|  | //    commandBuffer := commandBuffers[i] | 
|  | //    commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | //    assert(commandBufferObject.device == queueObject.device) | 
|  | // | 
|  | //    validate("QueueCheck", commandBufferObject.queueFlags in queueObject.flags, | 
|  | //        "vkQueueSubmit: enqueued commandBuffer requires missing queue capabilities.") | 
|  | // } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkQueueWaitIdle( | 
|  | VkQueue                                     queue) { | 
|  | queueObject := GetQueue(queue) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkDeviceWaitIdle( | 
|  | VkDevice                                    device) { | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  |  | 
|  | // Memory functions | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkAllocateMemory( | 
|  | VkDevice                                    device, | 
|  | const VkMemoryAllocateInfo*                 pAllocateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkDeviceMemory*                             pMemory) { | 
|  | assert(pAllocateInfo.sType == VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO) | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | memory := ? | 
|  | pMemory[0] = memory | 
|  | State.DeviceMemories[memory] = new!DeviceMemoryObject( | 
|  | device: device, | 
|  | allocationSize: pAllocateInfo[0].allocationSize) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd void vkFreeMemory( | 
|  | VkDevice                                    device, | 
|  | VkDeviceMemory                              memory, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  | memoryObject := GetDeviceMemory(memory) | 
|  | assert(memoryObject.device == device) | 
|  |  | 
|  | // Check that no objects are still bound before freeing. | 
|  | validate("MemoryCheck", len(memoryObject.boundObjects) == 0, | 
|  | "vkFreeMemory: objects still bound") | 
|  | validate("MemoryCheck", len(memoryObject.boundCommandBuffers) == 0, | 
|  | "vkFreeMemory: commandBuffers still bound") | 
|  | State.DeviceMemories[memory] = null | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd VkResult vkMapMemory( | 
|  | VkDevice                                    device, | 
|  | VkDeviceMemory                              memory, | 
|  | VkDeviceSize                                offset, | 
|  | VkDeviceSize                                size, | 
|  | VkMemoryMapFlags                            flags, | 
|  | void**                                      ppData) { | 
|  | deviceObject := GetDevice(device) | 
|  | memoryObject := GetDeviceMemory(memory) | 
|  | assert(memoryObject.device == device) | 
|  |  | 
|  | assert(flags == as!VkMemoryMapFlags(0)) | 
|  | assert((offset + size) <= memoryObject.allocationSize) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkUnmapMemory( | 
|  | VkDevice                                    device, | 
|  | VkDeviceMemory                              memory) { | 
|  | deviceObject := GetDevice(device) | 
|  | memoryObject := GetDeviceMemory(memory) | 
|  | assert(memoryObject.device == device) | 
|  | } | 
|  |  | 
|  | cmd VkResult vkFlushMappedMemoryRanges( | 
|  | VkDevice                                    device, | 
|  | u32                                         memoryRangeCount | 
|  | const VkMappedMemoryRange*                  pMemoryRanges) { | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | memoryRanges := pMemoryRanges[0:memoryRangeCount] | 
|  | for i in (0 .. memoryRangeCount) { | 
|  | memoryRange := memoryRanges[i] | 
|  | memoryObject := GetDeviceMemory(memoryRange.memory) | 
|  | assert(memoryObject.device == device) | 
|  | assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize) | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | cmd VkResult vkInvalidateMappedMemoryRanges( | 
|  | VkDevice                                    device, | 
|  | u32                                         memoryRangeCount, | 
|  | const VkMappedMemoryRange*                  pMemoryRanges) { | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | memoryRanges := pMemoryRanges[0:memoryRangeCount] | 
|  | for i in (0 .. memoryRangeCount) { | 
|  | memoryRange := memoryRanges[i] | 
|  | memoryObject := GetDeviceMemory(memoryRange.memory) | 
|  | assert(memoryObject.device == device) | 
|  | assert((memoryRange.offset + memoryRange.size) <= memoryObject.allocationSize) | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  |  | 
|  | // Memory management API functions | 
|  |  | 
|  | cmd void vkGetDeviceMemoryCommitment( | 
|  | VkDevice                                    device, | 
|  | VkDeviceMemory                              memory, | 
|  | VkDeviceSize*                               pCommittedMemoryInBytes) { | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | if memory != NULL_HANDLE { | 
|  | memoryObject := GetDeviceMemory(memory) | 
|  | assert(memoryObject.device == device) | 
|  | } | 
|  |  | 
|  | committedMemoryInBytes := ? | 
|  | pCommittedMemoryInBytes[0] = committedMemoryInBytes | 
|  | } | 
|  |  | 
|  | cmd void vkGetBufferMemoryRequirements( | 
|  | VkDevice                                    device, | 
|  | VkBuffer                                    buffer, | 
|  | VkMemoryRequirements*                       pMemoryRequirements) { | 
|  | deviceObject := GetDevice(device) | 
|  | bufferObject := GetBuffer(buffer) | 
|  | assert(bufferObject.device == device) | 
|  | } | 
|  |  | 
|  | cmd VkResult vkBindBufferMemory( | 
|  | VkDevice                                    device, | 
|  | VkBuffer                                    buffer, | 
|  | VkDeviceMemory                              memory, | 
|  | VkDeviceSize                                memoryOffset) { | 
|  | deviceObject := GetDevice(device) | 
|  | bufferObject := GetBuffer(buffer) | 
|  | assert(bufferObject.device == device) | 
|  |  | 
|  | // Unbind buffer from previous memory object, if not VK_NULL_HANDLE. | 
|  | if bufferObject.memory != NULL_HANDLE { | 
|  | memoryObject := GetDeviceMemory(bufferObject.memory) | 
|  | memoryObject.boundObjects[as!u64(buffer)] = null | 
|  | } | 
|  |  | 
|  | // Bind buffer to given memory object, if not VK_NULL_HANDLE. | 
|  | if memory != NULL_HANDLE { | 
|  | memoryObject := GetDeviceMemory(memory) | 
|  | assert(memoryObject.device == device) | 
|  | memoryObject.boundObjects[as!u64(buffer)] = memoryOffset | 
|  | } | 
|  | bufferObject.memory = memory | 
|  | bufferObject.memoryOffset = memoryOffset | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | cmd void vkGetImageMemoryRequirements( | 
|  | VkDevice                                    device, | 
|  | VkImage                                     image, | 
|  | VkMemoryRequirements*                       pMemoryRequirements) { | 
|  | deviceObject := GetDevice(device) | 
|  | imageObject := GetImage(image) | 
|  | assert(imageObject.device == device) | 
|  | } | 
|  |  | 
|  | cmd VkResult vkBindImageMemory( | 
|  | VkDevice                                    device, | 
|  | VkImage                                     image, | 
|  | VkDeviceMemory                              memory, | 
|  | VkDeviceSize                                memoryOffset) { | 
|  | deviceObject := GetDevice(device) | 
|  | imageObject := GetImage(image) | 
|  | assert(imageObject.device == device) | 
|  |  | 
|  | // Unbind image from previous memory object, if not VK_NULL_HANDLE. | 
|  | if imageObject.memory != NULL_HANDLE { | 
|  | memoryObject := GetDeviceMemory(imageObject.memory) | 
|  | memoryObject.boundObjects[as!u64(image)] = null | 
|  | } | 
|  |  | 
|  | // Bind image to given memory object, if not VK_NULL_HANDLE. | 
|  | if memory != NULL_HANDLE { | 
|  | memoryObject := GetDeviceMemory(memory) | 
|  | assert(memoryObject.device == device) | 
|  | memoryObject.boundObjects[as!u64(image)] = memoryOffset | 
|  | } | 
|  | imageObject.memory = memory | 
|  | imageObject.memoryOffset = memoryOffset | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | cmd void vkGetImageSparseMemoryRequirements( | 
|  | VkDevice                                    device, | 
|  | VkImage                                     image, | 
|  | u32*                                        pSparseMemoryRequirementCount, | 
|  | VkSparseImageMemoryRequirements*            pSparseMemoryRequirements) { | 
|  | deviceObject := GetDevice(device) | 
|  | imageObject := GetImage(image) | 
|  | assert(imageObject.device == device) | 
|  | } | 
|  |  | 
|  | cmd void vkGetPhysicalDeviceSparseImageFormatProperties( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkFormat                                    format, | 
|  | VkImageType                                 type, | 
|  | VkSampleCountFlagBits                       samples, | 
|  | VkImageUsageFlags                           usage, | 
|  | VkImageTiling                               tiling, | 
|  | u32*                                        pPropertyCount, | 
|  | VkSparseImageFormatProperties*              pProperties) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  | } | 
|  |  | 
|  | cmd VkResult vkQueueBindSparse( | 
|  | VkQueue                                     queue, | 
|  | u32                                         bindInfoCount, | 
|  | const VkBindSparseInfo*                     pBindInfo, | 
|  | VkFence                                     fence) { | 
|  | queueObject := GetQueue(queue) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  |  | 
|  | // Fence functions | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkCreateFence( | 
|  | VkDevice                                    device, | 
|  | const VkFenceCreateInfo*                    pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkFence*                                    pFence) { | 
|  | assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FENCE_CREATE_INFO) | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | fence := ? | 
|  | pFence[0] = fence | 
|  | State.Fences[fence] = new!FenceObject( | 
|  | device: device, signaled: (pCreateInfo.flags == as!VkFenceCreateFlags(VK_FENCE_CREATE_SIGNALED_BIT))) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd void vkDestroyFence( | 
|  | VkDevice                                    device, | 
|  | VkFence                                     fence, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  | fenceObject := GetFence(fence) | 
|  | assert(fenceObject.device == device) | 
|  |  | 
|  | State.Fences[fence] = null | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkResetFences( | 
|  | VkDevice                                    device, | 
|  | u32                                         fenceCount, | 
|  | const VkFence*                              pFences) { | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | fences := pFences[0:fenceCount] | 
|  | for i in (0 .. fenceCount) { | 
|  | fence := fences[i] | 
|  | fenceObject := GetFence(fence) | 
|  | assert(fenceObject.device == device) | 
|  | fenceObject.signaled = false | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkGetFenceStatus( | 
|  | VkDevice                                    device, | 
|  | VkFence                                     fence) { | 
|  | deviceObject := GetDevice(device) | 
|  | fenceObject := GetFence(fence) | 
|  | assert(fenceObject.device == device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkWaitForFences( | 
|  | VkDevice                                    device, | 
|  | u32                                         fenceCount, | 
|  | const VkFence*                              pFences, | 
|  | VkBool32                                    waitAll, | 
|  | u64                                         timeout) {  /// timeout in nanoseconds | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | fences := pFences[0:fenceCount] | 
|  | for i in (0 .. fenceCount) { | 
|  | fence := fences[i] | 
|  | fenceObject := GetFence(fence) | 
|  | assert(fenceObject.device == device) | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  |  | 
|  | // Queue semaphore functions | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkCreateSemaphore( | 
|  | VkDevice                                    device, | 
|  | const VkSemaphoreCreateInfo*                pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkSemaphore*                                pSemaphore) { | 
|  | assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO) | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | semaphore := ? | 
|  | pSemaphore[0] = semaphore | 
|  | State.Semaphores[semaphore] = new!SemaphoreObject(device: device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd void vkDestroySemaphore( | 
|  | VkDevice                                    device, | 
|  | VkSemaphore                                 semaphore, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  | semaphoreObject := GetSemaphore(semaphore) | 
|  | assert(semaphoreObject.device == device) | 
|  |  | 
|  | State.Semaphores[semaphore] = null | 
|  | } | 
|  |  | 
|  |  | 
|  | // Event functions | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkCreateEvent( | 
|  | VkDevice                                    device, | 
|  | const VkEventCreateInfo*                    pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkEvent*                                    pEvent) { | 
|  | assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_EVENT_CREATE_INFO) | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | event := ? | 
|  | pEvent[0] = event | 
|  | State.Events[event] = new!EventObject(device: device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd void vkDestroyEvent( | 
|  | VkDevice                                    device, | 
|  | VkEvent                                     event, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  | eventObject := GetEvent(event) | 
|  | assert(eventObject.device == device) | 
|  |  | 
|  | State.Events[event] = null | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkGetEventStatus( | 
|  | VkDevice                                    device, | 
|  | VkEvent                                     event) { | 
|  | deviceObject := GetDevice(device) | 
|  | eventObject := GetEvent(event) | 
|  | assert(eventObject.device == device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkSetEvent( | 
|  | VkDevice                                    device, | 
|  | VkEvent                                     event) { | 
|  | deviceObject := GetDevice(device) | 
|  | eventObject := GetEvent(event) | 
|  | assert(eventObject.device == device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkResetEvent( | 
|  | VkDevice                                    device, | 
|  | VkEvent                                     event) { | 
|  | deviceObject := GetDevice(device) | 
|  | eventObject := GetEvent(event) | 
|  | assert(eventObject.device == device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  |  | 
|  | // Query functions | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkCreateQueryPool( | 
|  | VkDevice                                    device, | 
|  | const VkQueryPoolCreateInfo*                pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkQueryPool*                                pQueryPool) { | 
|  | assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO) | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | queryPool := ? | 
|  | pQueryPool[0] = queryPool | 
|  | State.QueryPools[queryPool] = new!QueryPoolObject(device: device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd void vkDestroyQueryPool( | 
|  | VkDevice                                    device, | 
|  | VkQueryPool                                 queryPool, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  | queryPoolObject := GetQueryPool(queryPool) | 
|  | assert(queryPoolObject.device == device) | 
|  |  | 
|  | State.QueryPools[queryPool] = null | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkGetQueryPoolResults( | 
|  | VkDevice                                    device, | 
|  | VkQueryPool                                 queryPool, | 
|  | u32                                         firstQuery, | 
|  | u32                                         queryCount, | 
|  | platform.size_t                             dataSize, | 
|  | void*                                       pData, | 
|  | VkDeviceSize                                stride, | 
|  | VkQueryResultFlags                          flags) { | 
|  | deviceObject := GetDevice(device) | 
|  | queryPoolObject := GetQueryPool(queryPool) | 
|  | assert(queryPoolObject.device == device) | 
|  |  | 
|  | data := pData[0:dataSize] | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | // Buffer functions | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkCreateBuffer( | 
|  | VkDevice                                    device, | 
|  | const VkBufferCreateInfo*                   pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkBuffer*                                   pBuffer) { | 
|  | assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO) | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | buffer := ? | 
|  | pBuffer[0] = buffer | 
|  | State.Buffers[buffer] = new!BufferObject(device: device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd void vkDestroyBuffer( | 
|  | VkDevice                                    device, | 
|  | VkBuffer                                    buffer, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  | bufferObject := GetBuffer(buffer) | 
|  | assert(bufferObject.device == device) | 
|  |  | 
|  | assert(bufferObject.memory == 0) | 
|  | State.Buffers[buffer] = null | 
|  | } | 
|  |  | 
|  |  | 
|  | // Buffer view functions | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkCreateBufferView( | 
|  | VkDevice                                    device, | 
|  | const VkBufferViewCreateInfo*               pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkBufferView*                               pView) { | 
|  | assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO) | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | bufferObject := GetBuffer(pCreateInfo.buffer) | 
|  | assert(bufferObject.device == device) | 
|  |  | 
|  | view := ? | 
|  | pView[0] = view | 
|  | State.BufferViews[view] = new!BufferViewObject(device: device, buffer: pCreateInfo.buffer) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd void vkDestroyBufferView( | 
|  | VkDevice                                    device, | 
|  | VkBufferView                                bufferView, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  | bufferViewObject := GetBufferView(bufferView) | 
|  | assert(bufferViewObject.device == device) | 
|  |  | 
|  | State.BufferViews[bufferView] = null | 
|  | } | 
|  |  | 
|  |  | 
|  | // Image functions | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkCreateImage( | 
|  | VkDevice                                    device, | 
|  | const VkImageCreateInfo*                    pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkImage*                                    pImage) { | 
|  | assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO) | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | image := ? | 
|  | pImage[0] = image | 
|  | State.Images[image] = new!ImageObject(device: device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd void vkDestroyImage( | 
|  | VkDevice                                    device, | 
|  | VkImage                                     image, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  | imageObject := GetImage(image) | 
|  | assert(imageObject.device == device) | 
|  |  | 
|  | assert(imageObject.memory == 0) | 
|  | State.Images[image] = null | 
|  | } | 
|  |  | 
|  | cmd void vkGetImageSubresourceLayout( | 
|  | VkDevice                                    device, | 
|  | VkImage                                     image, | 
|  | const VkImageSubresource*                   pSubresource, | 
|  | VkSubresourceLayout*                        pLayout) { | 
|  | deviceObject := GetDevice(device) | 
|  | imageObject := GetImage(image) | 
|  | assert(imageObject.device == device) | 
|  | } | 
|  |  | 
|  |  | 
|  | // Image view functions | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkCreateImageView( | 
|  | VkDevice                                    device, | 
|  | const VkImageViewCreateInfo*                pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkImageView*                                pView) { | 
|  | assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO) | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | imageObject := GetImage(pCreateInfo.image) | 
|  | assert(imageObject.device == device) | 
|  |  | 
|  | view := ? | 
|  | pView[0] = view | 
|  | State.ImageViews[view] = new!ImageViewObject(device: device, image: pCreateInfo.image) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd void vkDestroyImageView( | 
|  | VkDevice                                    device, | 
|  | VkImageView                                 imageView, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  | imageViewObject := GetImageView(imageView) | 
|  | assert(imageViewObject.device == device) | 
|  |  | 
|  | State.ImageViews[imageView] = null | 
|  | } | 
|  |  | 
|  |  | 
|  | // Shader functions | 
|  |  | 
|  | cmd VkResult vkCreateShaderModule( | 
|  | VkDevice                                    device, | 
|  | const VkShaderModuleCreateInfo*             pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkShaderModule*                             pShaderModule) { | 
|  | assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO) | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | shaderModule := ? | 
|  | pShaderModule[0] = shaderModule | 
|  | State.ShaderModules[shaderModule] = new!ShaderModuleObject(device: device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | cmd void vkDestroyShaderModule( | 
|  | VkDevice                                    device, | 
|  | VkShaderModule                              shaderModule, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  | shaderModuleObject := GetShaderModule(shaderModule) | 
|  | assert(shaderModuleObject.device == device) | 
|  |  | 
|  | State.ShaderModules[shaderModule] = null | 
|  | } | 
|  |  | 
|  |  | 
|  | // Pipeline functions | 
|  |  | 
|  | cmd VkResult vkCreatePipelineCache( | 
|  | VkDevice                                    device, | 
|  | const VkPipelineCacheCreateInfo*            pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkPipelineCache*                            pPipelineCache) { | 
|  | assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO) | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | pipelineCache := ? | 
|  | pPipelineCache[0] = pipelineCache | 
|  | State.PipelineCaches[pipelineCache] = new!PipelineCacheObject(device: device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | cmd void vkDestroyPipelineCache( | 
|  | VkDevice                                    device, | 
|  | VkPipelineCache                             pipelineCache, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  | pipelineCacheObject := GetPipelineCache(pipelineCache) | 
|  | assert(pipelineCacheObject.device == device) | 
|  |  | 
|  | State.PipelineCaches[pipelineCache] = null | 
|  | } | 
|  |  | 
|  | cmd VkResult vkGetPipelineCacheData( | 
|  | VkDevice                                    device, | 
|  | VkPipelineCache                             pipelineCache, | 
|  | platform.size_t*                            pDataSize, | 
|  | void*                                       pData) { | 
|  | deviceObject := GetDevice(device) | 
|  | pipelineCacheObject := GetPipelineCache(pipelineCache) | 
|  | assert(pipelineCacheObject.device == device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | cmd VkResult vkMergePipelineCaches( | 
|  | VkDevice                                    device, | 
|  | VkPipelineCache                             dstCache, | 
|  | u32                                         srcCacheCount, | 
|  | const VkPipelineCache*                      pSrcCaches) { | 
|  | deviceObject := GetDevice(device) | 
|  | dstCacheObject := GetPipelineCache(dstCache) | 
|  | assert(dstCacheObject.device == device) | 
|  |  | 
|  | srcCaches := pSrcCaches[0:srcCacheCount] | 
|  | for i in (0 .. srcCacheCount) { | 
|  | srcCache := srcCaches[i] | 
|  | srcCacheObject := GetPipelineCache(srcCache) | 
|  | assert(srcCacheObject.device == device) | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | cmd VkResult vkCreateGraphicsPipelines( | 
|  | VkDevice                                    device, | 
|  | VkPipelineCache                             pipelineCache, | 
|  | u32                                         createInfoCount, | 
|  | const VkGraphicsPipelineCreateInfo*         pCreateInfos, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkPipeline*                                 pPipelines) { | 
|  | deviceObject := GetDevice(device) | 
|  | if pipelineCache != NULL_HANDLE { | 
|  | pipelineCacheObject := GetPipelineCache(pipelineCache) | 
|  | assert(pipelineCacheObject.device == device) | 
|  | } | 
|  |  | 
|  | createInfos := pCreateInfos[0:createInfoCount] | 
|  | pipelines := pPipelines[0:createInfoCount] | 
|  | for i in (0 .. createInfoCount) { | 
|  | pipeline := ? | 
|  | pipelines[i] = pipeline | 
|  | State.Pipelines[pipeline] = new!PipelineObject(device: device) | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | cmd VkResult vkCreateComputePipelines( | 
|  | VkDevice                                    device, | 
|  | VkPipelineCache                             pipelineCache, | 
|  | u32                                         createInfoCount, | 
|  | const VkComputePipelineCreateInfo*          pCreateInfos, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkPipeline*                                 pPipelines) { | 
|  | deviceObject := GetDevice(device) | 
|  | if pipelineCache != NULL_HANDLE { | 
|  | pipelineCacheObject := GetPipelineCache(pipelineCache) | 
|  | assert(pipelineCacheObject.device == device) | 
|  | } | 
|  |  | 
|  | createInfos := pCreateInfos[0:createInfoCount] | 
|  | pipelines := pPipelines[0:createInfoCount] | 
|  | for i in (0 .. createInfoCount) { | 
|  | pipeline := ? | 
|  | pipelines[i] = pipeline | 
|  | State.Pipelines[pipeline] = new!PipelineObject(device: device) | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd void vkDestroyPipeline( | 
|  | VkDevice                                    device, | 
|  | VkPipeline                                  pipeline, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  | pipelineObjects := GetPipeline(pipeline) | 
|  | assert(pipelineObjects.device == device) | 
|  |  | 
|  | State.Pipelines[pipeline] = null | 
|  | } | 
|  |  | 
|  |  | 
|  | // Pipeline layout functions | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkCreatePipelineLayout( | 
|  | VkDevice                                    device, | 
|  | const VkPipelineLayoutCreateInfo*           pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkPipelineLayout*                           pPipelineLayout) { | 
|  | assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO) | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | pipelineLayout := ? | 
|  | pPipelineLayout[0] = pipelineLayout | 
|  | State.PipelineLayouts[pipelineLayout] = new!PipelineLayoutObject(device: device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd void vkDestroyPipelineLayout( | 
|  | VkDevice                                    device, | 
|  | VkPipelineLayout                            pipelineLayout, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  | pipelineLayoutObjects := GetPipelineLayout(pipelineLayout) | 
|  | assert(pipelineLayoutObjects.device == device) | 
|  |  | 
|  | State.PipelineLayouts[pipelineLayout] = null | 
|  | } | 
|  |  | 
|  |  | 
|  | // Sampler functions | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkCreateSampler( | 
|  | VkDevice                                    device, | 
|  | const VkSamplerCreateInfo*                  pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkSampler*                                  pSampler) { | 
|  | assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO) | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | sampler := ? | 
|  | pSampler[0] = sampler | 
|  | State.Samplers[sampler] = new!SamplerObject(device: device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd void vkDestroySampler( | 
|  | VkDevice                                    device, | 
|  | VkSampler                                   sampler, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  | samplerObject := GetSampler(sampler) | 
|  | assert(samplerObject.device == device) | 
|  |  | 
|  | State.Samplers[sampler] = null | 
|  | } | 
|  |  | 
|  |  | 
|  | // Descriptor set functions | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkCreateDescriptorSetLayout( | 
|  | VkDevice                                    device, | 
|  | const VkDescriptorSetLayoutCreateInfo*      pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkDescriptorSetLayout*                      pSetLayout) { | 
|  | assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO) | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | setLayout := ? | 
|  | pSetLayout[0] = setLayout | 
|  | State.DescriptorSetLayouts[setLayout] = new!DescriptorSetLayoutObject(device: device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd void vkDestroyDescriptorSetLayout( | 
|  | VkDevice                                    device, | 
|  | VkDescriptorSetLayout                       descriptorSetLayout, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  | descriptorSetLayoutObject := GetDescriptorSetLayout(descriptorSetLayout) | 
|  | assert(descriptorSetLayoutObject.device == device) | 
|  |  | 
|  | State.DescriptorSetLayouts[descriptorSetLayout] = null | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkCreateDescriptorPool( | 
|  | VkDevice                                    device, | 
|  | const VkDescriptorPoolCreateInfo*           pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkDescriptorPool*                           pDescriptorPool) { | 
|  | assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO) | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | descriptorPool := ? | 
|  | pDescriptorPool[0] = descriptorPool | 
|  | State.DescriptorPools[descriptorPool] = new!DescriptorPoolObject(device: device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd void vkDestroyDescriptorPool( | 
|  | VkDevice                                    device, | 
|  | VkDescriptorPool                            descriptorPool, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  | descriptorPoolObject := GetDescriptorPool(descriptorPool) | 
|  | assert(descriptorPoolObject.device == device) | 
|  |  | 
|  | State.DescriptorPools[descriptorPool] = null | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd VkResult vkResetDescriptorPool( | 
|  | VkDevice                                    device, | 
|  | VkDescriptorPool                            descriptorPool, | 
|  | VkDescriptorPoolResetFlags                  flags) { | 
|  | deviceObject := GetDevice(device) | 
|  | descriptorPoolObject := GetDescriptorPool(descriptorPool) | 
|  | assert(descriptorPoolObject.device == device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd VkResult vkAllocateDescriptorSets( | 
|  | VkDevice                                    device, | 
|  | const VkDescriptorSetAllocateInfo*          pAllocateInfo, | 
|  | VkDescriptorSet*                            pDescriptorSets) { | 
|  | deviceObject := GetDevice(device) | 
|  | allocInfo := pAllocateInfo[0] | 
|  | descriptorPoolObject := GetDescriptorPool(allocInfo.descriptorPool) | 
|  |  | 
|  | setLayouts := allocInfo.pSetLayouts[0:allocInfo.setCount] | 
|  | for i in (0 .. allocInfo.setCount) { | 
|  | setLayout := setLayouts[i] | 
|  | setLayoutObject := GetDescriptorSetLayout(setLayout) | 
|  | assert(setLayoutObject.device == device) | 
|  | } | 
|  |  | 
|  | descriptorSets := pDescriptorSets[0:allocInfo.setCount] | 
|  | for i in (0 .. allocInfo.setCount) { | 
|  | descriptorSet := ? | 
|  | descriptorSets[i] = descriptorSet | 
|  | State.DescriptorSets[descriptorSet] = new!DescriptorSetObject(device: device) | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | cmd VkResult vkFreeDescriptorSets( | 
|  | VkDevice                                    device, | 
|  | VkDescriptorPool                            descriptorPool, | 
|  | u32                                         descriptorSetCount, | 
|  | const VkDescriptorSet*                      pDescriptorSets) { | 
|  | deviceObject := GetDevice(device) | 
|  | descriptorPoolObject := GetDescriptorPool(descriptorPool) | 
|  |  | 
|  | descriptorSets := pDescriptorSets[0:descriptorSetCount] | 
|  | for i in (0 .. descriptorSetCount) { | 
|  | descriptorSet := descriptorSets[i] | 
|  | descriptorSetObject := GetDescriptorSet(descriptorSet) | 
|  | assert(descriptorSetObject.device == device) | 
|  | State.DescriptorSets[descriptorSet] = null | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | cmd void vkUpdateDescriptorSets( | 
|  | VkDevice                                    device, | 
|  | u32                                         descriptorWriteCount, | 
|  | const VkWriteDescriptorSet*                 pDescriptorWrites, | 
|  | u32                                         descriptorCopyCount, | 
|  | const VkCopyDescriptorSet*                  pDescriptorCopies) { | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | descriptorWrites := pDescriptorWrites[0:descriptorWriteCount] | 
|  | for i in (0 .. descriptorWriteCount) { | 
|  | descriptorWrite := descriptorWrites[i] | 
|  | descriptorWriteObject := GetDescriptorSet(descriptorWrite.dstSet) | 
|  | assert(descriptorWriteObject.device == device) | 
|  | } | 
|  |  | 
|  | descriptorCopies := pDescriptorCopies[0:descriptorCopyCount] | 
|  | for i in (0 .. descriptorCopyCount) { | 
|  | descriptorCopy := descriptorCopies[i] | 
|  | descriptorCopyObject := GetDescriptorSet(descriptorCopy.dstSet) | 
|  | assert(descriptorCopyObject.device == device) | 
|  | } | 
|  | } | 
|  |  | 
|  |  | 
|  | // Framebuffer functions | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkCreateFramebuffer( | 
|  | VkDevice                                    device, | 
|  | const VkFramebufferCreateInfo*              pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkFramebuffer*                              pFramebuffer) { | 
|  | assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO) | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | framebuffer := ? | 
|  | pFramebuffer[0] = framebuffer | 
|  | State.Framebuffers[framebuffer] = new!FramebufferObject(device: device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd void vkDestroyFramebuffer( | 
|  | VkDevice                                    device, | 
|  | VkFramebuffer                               framebuffer, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  | framebufferObject := GetFramebuffer(framebuffer) | 
|  | assert(framebufferObject.device == device) | 
|  |  | 
|  | State.Framebuffers[framebuffer] = null | 
|  | } | 
|  |  | 
|  |  | 
|  | // Renderpass functions | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkCreateRenderPass( | 
|  | VkDevice                                    device, | 
|  | const VkRenderPassCreateInfo*               pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkRenderPass*                               pRenderPass) { | 
|  | assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO) | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | renderpass := ? | 
|  | pRenderPass[0] = renderpass | 
|  | State.RenderPasses[renderpass] = new!RenderPassObject(device: device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd void vkDestroyRenderPass( | 
|  | VkDevice                                    device, | 
|  | VkRenderPass                                renderPass, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  | renderPassObject := GetRenderPass(renderPass) | 
|  | assert(renderPassObject.device == device) | 
|  |  | 
|  | State.RenderPasses[renderPass] = null | 
|  | } | 
|  |  | 
|  | cmd void vkGetRenderAreaGranularity( | 
|  | VkDevice                                    device, | 
|  | VkRenderPass                                renderPass, | 
|  | VkExtent2D*                                 pGranularity) { | 
|  | deviceObject := GetDevice(device) | 
|  | renderPassObject := GetRenderPass(renderPass) | 
|  |  | 
|  | granularity := ? | 
|  | pGranularity[0] = granularity | 
|  | } | 
|  |  | 
|  | // Command pool functions | 
|  |  | 
|  | cmd VkResult vkCreateCommandPool( | 
|  | VkDevice                                    device, | 
|  | const VkCommandPoolCreateInfo*              pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkCommandPool*                              pCommandPool) { | 
|  | assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO) | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | commandPool := ? | 
|  | pCommandPool[0] = commandPool | 
|  | State.CommandPools[commandPool] = new!CommandPoolObject(device: device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | cmd void vkDestroyCommandPool( | 
|  | VkDevice                                    device, | 
|  | VkCommandPool                               commandPool, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  | commandPoolObject := GetCommandPool(commandPool) | 
|  | assert(commandPoolObject.device == device) | 
|  |  | 
|  | State.CommandPools[commandPool] = null | 
|  | } | 
|  |  | 
|  | cmd VkResult vkResetCommandPool( | 
|  | VkDevice                                    device, | 
|  | VkCommandPool                               commandPool, | 
|  | VkCommandPoolResetFlags                     flags) { | 
|  | deviceObject := GetDevice(device) | 
|  | commandPoolObject := GetCommandPool(commandPool) | 
|  | assert(commandPoolObject.device == device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | // Command buffer functions | 
|  |  | 
|  | macro void bindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) { | 
|  | memoryObject := GetDeviceMemory(memory) | 
|  | memoryObject.boundCommandBuffers[commandBuffer] = commandBuffer | 
|  |  | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | commandBufferObject.boundObjects[as!u64(obj)] = memory | 
|  | } | 
|  |  | 
|  | macro void unbindCommandBuffer(VkCommandBuffer commandBuffer, any obj, VkDeviceMemory memory) { | 
|  | memoryObject := GetDeviceMemory(memory) | 
|  | memoryObject.boundCommandBuffers[commandBuffer] = null | 
|  |  | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | commandBufferObject.boundObjects[as!u64(obj)] = null | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkAllocateCommandBuffers( | 
|  | VkDevice                                    device, | 
|  | const VkCommandBufferAllocateInfo*          pAllocateInfo, | 
|  | VkCommandBuffer*                            pCommandBuffers) { | 
|  | assert(pAllocateInfo[0].sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO) | 
|  |  | 
|  | count := pAllocateInfo[0].commandBufferCount | 
|  | commandBuffers := pCommandBuffers[0:count] | 
|  | for i in (0 .. count) { | 
|  | commandBuffer := ? | 
|  | commandBuffers[i] = commandBuffer | 
|  | State.CommandBuffers[commandBuffer] = new!CommandBufferObject(device: device) | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | cmd void vkFreeCommandBuffers( | 
|  | VkDevice                                    device, | 
|  | VkCommandPool                               commandPool, | 
|  | u32                                         commandBufferCount, | 
|  | const VkCommandBuffer*                      pCommandBuffers) { | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | commandBuffers := pCommandBuffers[0:commandBufferCount] | 
|  | for i in (0 .. commandBufferCount) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffers[i]) | 
|  | assert(commandBufferObject.device == device) | 
|  | // TODO: iterate over boundObjects and clear memory bindings | 
|  | State.CommandBuffers[commandBuffers[i]] = null | 
|  | } | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd VkResult vkBeginCommandBuffer( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | const VkCommandBufferBeginInfo*             pBeginInfo) { | 
|  | assert(pBeginInfo.sType == VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO) | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  |  | 
|  | // TODO: iterate over boundObjects and clear memory bindings | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd VkResult vkEndCommandBuffer( | 
|  | VkCommandBuffer                             commandBuffer) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd VkResult vkResetCommandBuffer( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkCommandBufferResetFlags                   flags) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  |  | 
|  | // TODO: iterate over boundObjects and clear memory bindings | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  |  | 
|  | // Command buffer building functions | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdBindPipeline( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkPipelineBindPoint                         pipelineBindPoint, | 
|  | VkPipeline                                  pipeline) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | pipelineObject := GetPipeline(pipeline) | 
|  | assert(commandBufferObject.device == pipelineObject.device) | 
|  |  | 
|  | queue := switch (pipelineBindPoint) { | 
|  | case VK_PIPELINE_BIND_POINT_COMPUTE:  VK_QUEUE_COMPUTE_BIT | 
|  | case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT | 
|  | } | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdSetViewport( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         firstViewport, | 
|  | u32                                         viewportCount, | 
|  | const VkViewport*                           pViewports) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdSetScissor( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         firstScissor, | 
|  | u32                                         scissorCount, | 
|  | const VkRect2D*                             pScissors) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdSetLineWidth( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | f32                                         lineWidth) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdSetDepthBias( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | f32                                         depthBiasConstantFactor, | 
|  | f32                                         depthBiasClamp, | 
|  | f32                                         depthBiasSlopeFactor) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdSetBlendConstants( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | // TODO(jessehall): apic only supports 'const' on pointer types. Using | 
|  | // an annotation as a quick hack to pass this to the template without | 
|  | // having to modify the AST and semantic model. | 
|  | @readonly f32[4]                            blendConstants) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdSetDepthBounds( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | f32                                         minDepthBounds, | 
|  | f32                                         maxDepthBounds) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdSetStencilCompareMask( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkStencilFaceFlags                          faceMask, | 
|  | u32                                         compareMask) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdSetStencilWriteMask( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkStencilFaceFlags                          faceMask, | 
|  | u32                                         writeMask) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdSetStencilReference( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkStencilFaceFlags                          faceMask, | 
|  | u32                                         reference) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdBindDescriptorSets( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkPipelineBindPoint                         pipelineBindPoint, | 
|  | VkPipelineLayout                            layout, | 
|  | u32                                         firstSet, | 
|  | u32                                         descriptorSetCount, | 
|  | const VkDescriptorSet*                      pDescriptorSets, | 
|  | u32                                         dynamicOffsetCount, | 
|  | const u32*                                  pDynamicOffsets) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  |  | 
|  | descriptorSets := pDescriptorSets[0:descriptorSetCount] | 
|  | for i in (0 .. descriptorSetCount) { | 
|  | descriptorSet := descriptorSets[i] | 
|  | descriptorSetObject := GetDescriptorSet(descriptorSet) | 
|  | assert(commandBufferObject.device == descriptorSetObject.device) | 
|  | } | 
|  |  | 
|  | dynamicOffsets := pDynamicOffsets[0:dynamicOffsetCount] | 
|  | for i in (0 .. dynamicOffsetCount) { | 
|  | dynamicOffset := dynamicOffsets[i] | 
|  | } | 
|  |  | 
|  | queue := switch (pipelineBindPoint) { | 
|  | case VK_PIPELINE_BIND_POINT_COMPUTE:  VK_QUEUE_COMPUTE_BIT | 
|  | case VK_PIPELINE_BIND_POINT_GRAPHICS: VK_QUEUE_GRAPHICS_BIT | 
|  | } | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, queue) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdBindIndexBuffer( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkBuffer                                    buffer, | 
|  | VkDeviceSize                                offset, | 
|  | VkIndexType                                 indexType) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | bufferObject := GetBuffer(buffer) | 
|  | assert(commandBufferObject.device == bufferObject.device) | 
|  |  | 
|  | bindCommandBuffer(commandBuffer, buffer, bufferObject.memory) | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdBindVertexBuffers( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         firstBinding, | 
|  | u32                                         bindingCount, | 
|  | const VkBuffer*                             pBuffers, | 
|  | const VkDeviceSize*                         pOffsets) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  |  | 
|  | // TODO: check if not [firstBinding:firstBinding+bindingCount] | 
|  | buffers := pBuffers[0:bindingCount] | 
|  | offsets := pOffsets[0:bindingCount] | 
|  | for i in (0 .. bindingCount) { | 
|  | buffer := buffers[i] | 
|  | offset := offsets[i] | 
|  | bufferObject := GetBuffer(buffer) | 
|  | assert(commandBufferObject.device == bufferObject.device) | 
|  |  | 
|  | bindCommandBuffer(commandBuffer, buffer, bufferObject.memory) | 
|  | } | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdDraw( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         vertexCount, | 
|  | u32                                         instanceCount, | 
|  | u32                                         firstVertex, | 
|  | u32                                         firstInstance) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdDrawIndexed( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         indexCount, | 
|  | u32                                         instanceCount, | 
|  | u32                                         firstIndex, | 
|  | s32                                         vertexOffset, | 
|  | u32                                         firstInstance) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdDrawIndirect( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkBuffer                                    buffer, | 
|  | VkDeviceSize                                offset, | 
|  | u32                                         drawCount, | 
|  | u32                                         stride) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | bufferObject := GetBuffer(buffer) | 
|  | assert(commandBufferObject.device == bufferObject.device) | 
|  |  | 
|  | bindCommandBuffer(commandBuffer, buffer, bufferObject.memory) | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdDrawIndexedIndirect( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkBuffer                                    buffer, | 
|  | VkDeviceSize                                offset, | 
|  | u32                                         drawCount, | 
|  | u32                                         stride) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | bufferObject := GetBuffer(buffer) | 
|  | assert(commandBufferObject.device == bufferObject.device) | 
|  |  | 
|  | bindCommandBuffer(commandBuffer, buffer, bufferObject.memory) | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdDispatch( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         groupCountX, | 
|  | u32                                         groupCountY, | 
|  | u32                                         groupCountZ) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdDispatchIndirect( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkBuffer                                    buffer, | 
|  | VkDeviceSize                                offset) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | bufferObject := GetBuffer(buffer) | 
|  | assert(commandBufferObject.device == bufferObject.device) | 
|  |  | 
|  | bindCommandBuffer(commandBuffer, buffer, bufferObject.memory) | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_COMPUTE_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdCopyBuffer( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkBuffer                                    srcBuffer, | 
|  | VkBuffer                                    dstBuffer, | 
|  | u32                                         regionCount, | 
|  | const VkBufferCopy*                         pRegions) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | srcBufferObject := GetBuffer(srcBuffer) | 
|  | dstBufferObject := GetBuffer(dstBuffer) | 
|  | assert(commandBufferObject.device == srcBufferObject.device) | 
|  | assert(commandBufferObject.device == dstBufferObject.device) | 
|  |  | 
|  | regions := pRegions[0:regionCount] | 
|  | for i in (0 .. regionCount) { | 
|  | region := regions[i] | 
|  | } | 
|  |  | 
|  | bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory) | 
|  | bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory) | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdCopyImage( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkImage                                     srcImage, | 
|  | VkImageLayout                               srcImageLayout, | 
|  | VkImage                                     dstImage, | 
|  | VkImageLayout                               dstImageLayout, | 
|  | u32                                         regionCount, | 
|  | const VkImageCopy*                          pRegions) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | srcImageObject := GetImage(srcImage) | 
|  | dstImageObject := GetImage(dstImage) | 
|  | assert(commandBufferObject.device == srcImageObject.device) | 
|  | assert(commandBufferObject.device == dstImageObject.device) | 
|  |  | 
|  | regions := pRegions[0:regionCount] | 
|  | for i in (0 .. regionCount) { | 
|  | region := regions[i] | 
|  | } | 
|  |  | 
|  | bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory) | 
|  | bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory) | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdBlitImage( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkImage                                     srcImage, | 
|  | VkImageLayout                               srcImageLayout, | 
|  | VkImage                                     dstImage, | 
|  | VkImageLayout                               dstImageLayout, | 
|  | u32                                         regionCount, | 
|  | const VkImageBlit*                          pRegions, | 
|  | VkFilter                                    filter) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | srcImageObject := GetImage(srcImage) | 
|  | dstImageObject := GetImage(dstImage) | 
|  | assert(commandBufferObject.device == srcImageObject.device) | 
|  | assert(commandBufferObject.device == dstImageObject.device) | 
|  |  | 
|  | regions := pRegions[0:regionCount] | 
|  | for i in (0 .. regionCount) { | 
|  | region := regions[i] | 
|  | } | 
|  |  | 
|  | bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory) | 
|  | bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory) | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdCopyBufferToImage( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkBuffer                                    srcBuffer, | 
|  | VkImage                                     dstImage, | 
|  | VkImageLayout                               dstImageLayout, | 
|  | u32                                         regionCount, | 
|  | const VkBufferImageCopy*                    pRegions) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | srcBufferObject := GetBuffer(srcBuffer) | 
|  | dstImageObject := GetImage(dstImage) | 
|  | assert(commandBufferObject.device == srcBufferObject.device) | 
|  | assert(commandBufferObject.device == dstImageObject.device) | 
|  |  | 
|  | regions := pRegions[0:regionCount] | 
|  | for i in (0 .. regionCount) { | 
|  | region := regions[i] | 
|  | } | 
|  |  | 
|  | bindCommandBuffer(commandBuffer, srcBuffer, srcBufferObject.memory) | 
|  | bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory) | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdCopyImageToBuffer( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkImage                                     srcImage, | 
|  | VkImageLayout                               srcImageLayout, | 
|  | VkBuffer                                    dstBuffer, | 
|  | u32                                         regionCount, | 
|  | const VkBufferImageCopy*                    pRegions) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | srcImageObject := GetImage(srcImage) | 
|  | dstBufferObject := GetBuffer(dstBuffer) | 
|  | assert(commandBufferObject.device == srcImageObject.device) | 
|  | assert(commandBufferObject.device == dstBufferObject.device) | 
|  |  | 
|  | regions := pRegions[0:regionCount] | 
|  | for i in (0 .. regionCount) { | 
|  | region := regions[i] | 
|  | } | 
|  |  | 
|  | bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory) | 
|  | bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory) | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdUpdateBuffer( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkBuffer                                    dstBuffer, | 
|  | VkDeviceSize                                dstOffset, | 
|  | VkDeviceSize                                dataSize, | 
|  | const void*                                 pData) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | dstBufferObject := GetBuffer(dstBuffer) | 
|  | assert(commandBufferObject.device == dstBufferObject.device) | 
|  |  | 
|  | data := pData[0:dataSize] | 
|  |  | 
|  | bindCommandBuffer(commandBuffer, dstBuffer, dstBufferObject.memory) | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdFillBuffer( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkBuffer                                    dstBuffer, | 
|  | VkDeviceSize                                dstOffset, | 
|  | VkDeviceSize                                size, | 
|  | u32                                         data) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | dstBufferObject := GetBuffer(dstBuffer) | 
|  | assert(commandBufferObject.device == dstBufferObject.device) | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_TRANSFER_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdClearColorImage( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkImage                                     image, | 
|  | VkImageLayout                               imageLayout, | 
|  | const VkClearColorValue*                    pColor, | 
|  | u32                                         rangeCount, | 
|  | const VkImageSubresourceRange*              pRanges) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | imageObject := GetImage(image) | 
|  | assert(commandBufferObject.device == imageObject.device) | 
|  |  | 
|  | ranges := pRanges[0:rangeCount] | 
|  | for i in (0 .. rangeCount) { | 
|  | range := ranges[i] | 
|  | } | 
|  |  | 
|  | bindCommandBuffer(commandBuffer, image, imageObject.memory) | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdClearDepthStencilImage( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkImage                                     image, | 
|  | VkImageLayout                               imageLayout, | 
|  | const VkClearDepthStencilValue*             pDepthStencil, | 
|  | u32                                         rangeCount, | 
|  | const VkImageSubresourceRange*              pRanges) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | imageObject := GetImage(image) | 
|  | assert(commandBufferObject.device == imageObject.device) | 
|  |  | 
|  | ranges := pRanges[0:rangeCount] | 
|  | for i in (0 .. rangeCount) { | 
|  | range := ranges[i] | 
|  | } | 
|  |  | 
|  | bindCommandBuffer(commandBuffer, image, imageObject.memory) | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdClearAttachments( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         attachmentCount, | 
|  | const VkClearAttachment*                    pAttachments, | 
|  | u32                                         rectCount, | 
|  | const VkClearRect*                          pRects) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  |  | 
|  | rects := pRects[0:rectCount] | 
|  | for i in (0 .. rectCount) { | 
|  | rect := rects[i] | 
|  | } | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdResolveImage( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkImage                                     srcImage, | 
|  | VkImageLayout                               srcImageLayout, | 
|  | VkImage                                     dstImage, | 
|  | VkImageLayout                               dstImageLayout, | 
|  | u32                                         regionCount, | 
|  | const VkImageResolve*                       pRegions) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | srcImageObject := GetImage(srcImage) | 
|  | dstImageObject := GetImage(dstImage) | 
|  | assert(commandBufferObject.device == srcImageObject.device) | 
|  | assert(commandBufferObject.device == dstImageObject.device) | 
|  |  | 
|  | regions := pRegions[0:regionCount] | 
|  | for i in (0 .. regionCount) { | 
|  | region := regions[i] | 
|  | } | 
|  |  | 
|  | bindCommandBuffer(commandBuffer, srcImage, srcImageObject.memory) | 
|  | bindCommandBuffer(commandBuffer, dstImage, dstImageObject.memory) | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdSetEvent( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkEvent                                     event, | 
|  | VkPipelineStageFlags                        stageMask) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | eventObject := GetEvent(event) | 
|  | assert(commandBufferObject.device == eventObject.device) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdResetEvent( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkEvent                                     event, | 
|  | VkPipelineStageFlags                        stageMask) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | eventObject := GetEvent(event) | 
|  | assert(commandBufferObject.device == eventObject.device) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdWaitEvents( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         eventCount, | 
|  | const VkEvent*                              pEvents, | 
|  | VkPipelineStageFlags                        srcStageMask, | 
|  | VkPipelineStageFlags                        dstStageMask, | 
|  | u32                                         memoryBarrierCount, | 
|  | const VkMemoryBarrier*                      pMemoryBarriers, | 
|  | u32                                         bufferMemoryBarrierCount, | 
|  | const VkBufferMemoryBarrier*                pBufferMemoryBarriers, | 
|  | u32                                         imageMemoryBarrierCount, | 
|  | const VkImageMemoryBarrier*                 pImageMemoryBarriers) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  |  | 
|  | events := pEvents[0:eventCount] | 
|  | for i in (0 .. eventCount) { | 
|  | event := events[i] | 
|  | eventObject := GetEvent(event) | 
|  | assert(commandBufferObject.device == eventObject.device) | 
|  | } | 
|  |  | 
|  | memoryBarriers := pMemoryBarriers[0:memoryBarrierCount] | 
|  | for i in (0 .. memoryBarrierCount) { | 
|  | memoryBarrier := memoryBarriers[i] | 
|  | } | 
|  | bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount] | 
|  | for i in (0 .. bufferMemoryBarrierCount) { | 
|  | bufferMemoryBarrier := bufferMemoryBarriers[i] | 
|  | bufferObject := GetBuffer(bufferMemoryBarrier.buffer) | 
|  | assert(bufferObject.device == commandBufferObject.device) | 
|  | } | 
|  | imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount] | 
|  | for i in (0 .. imageMemoryBarrierCount) { | 
|  | imageMemoryBarrier := imageMemoryBarriers[i] | 
|  | imageObject := GetImage(imageMemoryBarrier.image) | 
|  | assert(imageObject.device == commandBufferObject.device) | 
|  | } | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdPipelineBarrier( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkPipelineStageFlags                        srcStageMask, | 
|  | VkPipelineStageFlags                        dstStageMask, | 
|  | VkDependencyFlags                           dependencyFlags, | 
|  | u32                                         memoryBarrierCount, | 
|  | const VkMemoryBarrier*                      pMemoryBarriers, | 
|  | u32                                         bufferMemoryBarrierCount, | 
|  | const VkBufferMemoryBarrier*                pBufferMemoryBarriers, | 
|  | u32                                         imageMemoryBarrierCount, | 
|  | const VkImageMemoryBarrier*                 pImageMemoryBarriers) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  |  | 
|  | memoryBarriers := pMemoryBarriers[0:memoryBarrierCount] | 
|  | for i in (0 .. memoryBarrierCount) { | 
|  | memoryBarrier := memoryBarriers[i] | 
|  | } | 
|  | bufferMemoryBarriers := pBufferMemoryBarriers[0:bufferMemoryBarrierCount] | 
|  | for i in (0 .. bufferMemoryBarrierCount) { | 
|  | bufferMemoryBarrier := bufferMemoryBarriers[i] | 
|  | bufferObject := GetBuffer(bufferMemoryBarrier.buffer) | 
|  | assert(bufferObject.device == commandBufferObject.device) | 
|  | } | 
|  | imageMemoryBarriers := pImageMemoryBarriers[0:imageMemoryBarrierCount] | 
|  | for i in (0 .. imageMemoryBarrierCount) { | 
|  | imageMemoryBarrier := imageMemoryBarriers[i] | 
|  | imageObject := GetImage(imageMemoryBarrier.image) | 
|  | assert(imageObject.device == commandBufferObject.device) | 
|  | } | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdBeginQuery( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkQueryPool                                 queryPool, | 
|  | u32                                         query, | 
|  | VkQueryControlFlags                         flags) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | queryPoolObject := GetQueryPool(queryPool) | 
|  | assert(commandBufferObject.device == queryPoolObject.device) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdEndQuery( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkQueryPool                                 queryPool, | 
|  | u32                                         query) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | queryPoolObject := GetQueryPool(queryPool) | 
|  | assert(commandBufferObject.device == queryPoolObject.device) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdResetQueryPool( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkQueryPool                                 queryPool, | 
|  | u32                                         firstQuery, | 
|  | u32                                         queryCount) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | queryPoolObject := GetQueryPool(queryPool) | 
|  | assert(commandBufferObject.device == queryPoolObject.device) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdWriteTimestamp( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkPipelineStageFlagBits                     pipelineStage, | 
|  | VkQueryPool                                 queryPool, | 
|  | u32                                         query) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | queryPoolObject := GetQueryPool(queryPool) | 
|  | assert(commandBufferObject.device == queryPoolObject.device) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdCopyQueryPoolResults( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkQueryPool                                 queryPool, | 
|  | u32                                         firstQuery, | 
|  | u32                                         queryCount, | 
|  | VkBuffer                                    dstBuffer, | 
|  | VkDeviceSize                                dstOffset, | 
|  | VkDeviceSize                                stride, | 
|  | VkQueryResultFlags                          flags) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | queryPoolObject := GetQueryPool(queryPool) | 
|  | dstBufferObject := GetBuffer(dstBuffer) | 
|  | assert(commandBufferObject.device == queryPoolObject.device) | 
|  | assert(commandBufferObject.device == dstBufferObject.device) | 
|  | } | 
|  |  | 
|  | cmd void vkCmdPushConstants( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkPipelineLayout                            layout, | 
|  | VkShaderStageFlags                          stageFlags, | 
|  | u32                                         offset, | 
|  | u32                                         size, | 
|  | const void*                                 pValues) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | layoutObject := GetPipelineLayout(layout) | 
|  | assert(commandBufferObject.device == layoutObject.device) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdBeginRenderPass( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | const VkRenderPassBeginInfo*                pRenderPassBegin, | 
|  | VkSubpassContents                           contents) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | renderPassObject := GetRenderPass(pRenderPassBegin.renderPass) | 
|  | framebufferObject := GetFramebuffer(pRenderPassBegin.framebuffer) | 
|  | assert(commandBufferObject.device == renderPassObject.device) | 
|  | assert(commandBufferObject.device == framebufferObject.device) | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | cmd void vkCmdNextSubpass( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkSubpassContents                           contents) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  | } | 
|  |  | 
|  | @threadSafety("app") | 
|  | cmd void vkCmdEndRenderPass( | 
|  | VkCommandBuffer                             commandBuffer) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  |  | 
|  | commandBufferObject.queueFlags = AddQueueFlag(commandBufferObject.queueFlags, VK_QUEUE_GRAPHICS_BIT) | 
|  | } | 
|  |  | 
|  | cmd void vkCmdExecuteCommands( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         commandBufferCount, | 
|  | const VkCommandBuffer*                      pCommandBuffers) { | 
|  | commandBufferObject := GetCommandBuffer(commandBuffer) | 
|  |  | 
|  | commandBuffers := pCommandBuffers[0:commandBufferCount] | 
|  | for i in (0 .. commandBufferCount) { | 
|  | secondaryCommandBuffer := commandBuffers[i] | 
|  | secondaryCommandBufferObject := GetCommandBuffer(secondaryCommandBuffer) | 
|  | assert(commandBufferObject.device == secondaryCommandBufferObject.device) | 
|  | } | 
|  | } | 
|  |  | 
|  | //@vulkan1_1 functions | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd VkResult vkEnumerateInstanceVersion( | 
|  | u32*                                            pApiVersion) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd VkResult vkBindBufferMemory2( | 
|  | VkDevice                                        device, | 
|  | u32                                             bindInfoCount, | 
|  | const VkBindBufferMemoryInfo*                   pBindInfos) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd VkResult vkBindImageMemory2( | 
|  | VkDevice                                        device, | 
|  | u32                                             bindInfoCount, | 
|  | const VkBindImageMemoryInfo*                    pBindInfos) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkGetDeviceGroupPeerMemoryFeatures( | 
|  | VkDevice                                    device, | 
|  | u32                                         heapIndex, | 
|  | u32                                         localDeviceIndex, | 
|  | u32                                         remoteDeviceIndex, | 
|  | VkPeerMemoryFeatureFlags*                   pPeerMemoryFeatures) { | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkCmdSetDeviceMask( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         deviceMask) { | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkCmdDispatchBase( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         baseGroupX, | 
|  | u32                                         baseGroupY, | 
|  | u32                                         baseGroupZ, | 
|  | u32                                         groupCountX, | 
|  | u32                                         groupCountY, | 
|  | u32                                         groupCountZ) { | 
|  | } | 
|  |  | 
|  | @threadSafety("system") | 
|  | @vulkan1_1 | 
|  | cmd VkResult vkEnumeratePhysicalDeviceGroups( | 
|  | VkInstance                                  instance, | 
|  | u32*                                        pPhysicalDeviceGroupCount, | 
|  | VkPhysicalDeviceGroupProperties*            pPhysicalDeviceGroupProperties) { | 
|  | instanceObject := GetInstance(instance) | 
|  |  | 
|  | physicalDeviceGroupCount := as!u32(?) | 
|  | pPhysicalDeviceGroupCount[0] = physicalDeviceGroupCount | 
|  | physicalDevices := pPhysicalDeviceGroupProperties[0:physicalDeviceGroupCount] | 
|  |  | 
|  | for i in (0 .. physicalDeviceGroupCount) { | 
|  | physicalDevice := ? | 
|  | physicalDevices[i] = physicalDevice | 
|  | if !(physicalDevice in State.PhysicalDevices) { | 
|  | State.PhysicalDevices[physicalDevice] = new!PhysicalDeviceObject(instance: instance) | 
|  | } | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkGetImageMemoryRequirements2( | 
|  | VkDevice                                    device, | 
|  | const VkImageMemoryRequirementsInfo2*       pInfo, | 
|  | VkMemoryRequirements2*                      pMemoryRequirements) { | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkGetBufferMemoryRequirements2( | 
|  | VkDevice                                    device, | 
|  | const VkBufferMemoryRequirementsInfo2*      pInfo, | 
|  | VkMemoryRequirements2*                      pMemoryRequirements) { | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkGetImageSparseMemoryRequirements2( | 
|  | VkDevice                                        device, | 
|  | const VkImageSparseMemoryRequirementsInfo2*     pInfo, | 
|  | u32*                                            pSparseMemoryRequirementCount, | 
|  | VkSparseImageMemoryRequirements2*               pSparseMemoryRequirements) { | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkGetPhysicalDeviceFeatures2( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkPhysicalDeviceFeatures2*                  pFeatures) { | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkGetPhysicalDeviceProperties2( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkPhysicalDeviceProperties2*                pProperties) { | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkGetPhysicalDeviceFormatProperties2( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkFormat                                    format, | 
|  | VkFormatProperties2*                        pFormatProperties) { | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd VkResult vkGetPhysicalDeviceImageFormatProperties2( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | const VkPhysicalDeviceImageFormatInfo2*     pImageFormatInfo, | 
|  | VkImageFormatProperties2*                   pImageFormatProperties) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkGetPhysicalDeviceQueueFamilyProperties2( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | u32*                                        pQueueFamilyPropertyCount, | 
|  | VkQueueFamilyProperties2*                   pQueueFamilyProperties) { | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkGetPhysicalDeviceMemoryProperties2( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkPhysicalDeviceMemoryProperties2*          pMemoryProperties) { | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkGetPhysicalDeviceSparseImageFormatProperties2( | 
|  | VkPhysicalDevice                                    physicalDevice, | 
|  | const VkPhysicalDeviceSparseImageFormatInfo2*       pFormatInfo, | 
|  | u32*                                                pPropertyCount, | 
|  | VkSparseImageFormatProperties2*                     pProperties) { | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkTrimCommandPool( | 
|  | VkDevice                                    device, | 
|  | VkCommandPool                               commandPool, | 
|  | VkCommandPoolTrimFlags                      flags) { | 
|  | } | 
|  |  | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkGetDeviceQueue2( | 
|  | VkDevice                                    device, | 
|  | const VkDeviceQueueInfo2*                   pQueueInfo, | 
|  | VkQueue*                                    pQueue) { | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | queue := ? | 
|  | pQueue[0] = queue | 
|  |  | 
|  | if !(queue in State.Queues) { | 
|  | State.Queues[queue] = new!QueueObject(device: device) | 
|  | } | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd VkResult vkCreateSamplerYcbcrConversion( | 
|  | VkDevice                                        device, | 
|  | const VkSamplerYcbcrConversionCreateInfo*       pCreateInfo, | 
|  | const VkAllocationCallbacks*                    pAllocator, | 
|  | VkSamplerYcbcrConversion*                       pYcbcrConversion) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkDestroySamplerYcbcrConversion( | 
|  | VkDevice                                        device, | 
|  | VkSamplerYcbcrConversion                        ycbcrConversion, | 
|  | const VkAllocationCallbacks*                    pAllocator) { | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd VkResult vkCreateDescriptorUpdateTemplate( | 
|  | VkDevice                                    device, | 
|  | const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkDescriptorUpdateTemplate*                 pDescriptorUpdateTemplate) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkDestroyDescriptorUpdateTemplate( | 
|  | VkDevice                                    device, | 
|  | VkDescriptorUpdateTemplate                  descriptorUpdateTemplate, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkUpdateDescriptorSetWithTemplate( | 
|  | VkDevice                                    device, | 
|  | VkDescriptorSet                             descriptorSet, | 
|  | VkDescriptorUpdateTemplate                  descriptorUpdateTemplate, | 
|  | const void*                                 pData) { | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkGetPhysicalDeviceExternalBufferProperties( | 
|  | VkPhysicalDevice                                physicalDevice, | 
|  | const VkPhysicalDeviceExternalBufferInfo*       pExternalBufferInfo, | 
|  | VkExternalBufferProperties*                     pExternalBufferProperties) { | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkGetPhysicalDeviceExternalFenceProperties( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | const VkPhysicalDeviceExternalFenceInfo*    pExternalFenceInfo, | 
|  | VkExternalFenceProperties*                  pExternalFenceProperties) { | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkGetPhysicalDeviceExternalSemaphoreProperties( | 
|  | VkPhysicalDevice                                physicalDevice, | 
|  | const VkPhysicalDeviceExternalSemaphoreInfo*    pExternalSemaphoreInfo, | 
|  | VkExternalSemaphoreProperties*                  pExternalSemaphoreProperties) { | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | cmd void vkGetDescriptorSetLayoutSupport( | 
|  | VkDevice                                    device, | 
|  | const VkDescriptorSetLayoutCreateInfo*      pCreateInfo, | 
|  | VkDescriptorSetLayoutSupport*               pSupport) { | 
|  | } | 
|  |  | 
|  |  | 
|  | @extension("VK_KHR_surface") // 1 | 
|  | cmd void vkDestroySurfaceKHR( | 
|  | VkInstance                                  instance, | 
|  | VkSurfaceKHR                                surface, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | instanceObject := GetInstance(instance) | 
|  | surfaceObject := GetSurface(surface) | 
|  | assert(surfaceObject.instance == instance) | 
|  |  | 
|  | State.Surfaces[surface] = null | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_surface") // 1 | 
|  | cmd VkResult vkGetPhysicalDeviceSurfaceSupportKHR( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | u32                                         queueFamilyIndex, | 
|  | VkSurfaceKHR                                surface, | 
|  | VkBool32*                                   pSupported) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_surface") // 1 | 
|  | cmd VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkSurfaceKHR                                surface, | 
|  | VkSurfaceCapabilitiesKHR*                   pSurfaceCapabilities) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  |  | 
|  | surfaceCapabilities := ? | 
|  | pSurfaceCapabilities[0] = surfaceCapabilities | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_surface") // 1 | 
|  | cmd VkResult vkGetPhysicalDeviceSurfaceFormatsKHR( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkSurfaceKHR                                surface, | 
|  | u32*                                        pSurfaceFormatCount, | 
|  | VkSurfaceFormatKHR*                         pSurfaceFormats) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  |  | 
|  | count := as!u32(?) | 
|  | pSurfaceFormatCount[0] = count | 
|  | surfaceFormats := pSurfaceFormats[0:count] | 
|  |  | 
|  | for i in (0 .. count) { | 
|  | surfaceFormat := ? | 
|  | surfaceFormats[i] = surfaceFormat | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_surface") // 1 | 
|  | cmd VkResult vkGetPhysicalDeviceSurfacePresentModesKHR( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkSurfaceKHR                                surface, | 
|  | u32*                                        pPresentModeCount, | 
|  | VkPresentModeKHR*                           pPresentModes) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  |  | 
|  | count := as!u32(?) | 
|  | pPresentModeCount[0] = count | 
|  | presentModes := pPresentModes[0:count] | 
|  |  | 
|  | for i in (0 .. count) { | 
|  | presentMode := ? | 
|  | presentModes[i] = presentMode | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | cmd VkResult vkCreateSwapchainKHR( | 
|  | VkDevice                                 device, | 
|  | const VkSwapchainCreateInfoKHR*          pCreateInfo, | 
|  | const VkAllocationCallbacks*             pAllocator, | 
|  | VkSwapchainKHR*                          pSwapchain) { | 
|  | assert(pCreateInfo.sType == VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR) | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | swapchain := ? | 
|  | pSwapchain[0] = swapchain | 
|  | State.Swapchains[swapchain] = new!SwapchainObject(device: device) | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | cmd void vkDestroySwapchainKHR( | 
|  | VkDevice                                 device, | 
|  | VkSwapchainKHR                           swapchain, | 
|  | const VkAllocationCallbacks*             pAllocator) { | 
|  | deviceObject := GetDevice(device) | 
|  | swapchainObject := GetSwapchain(swapchain) | 
|  | assert(swapchainObject.device == device) | 
|  |  | 
|  | State.Swapchains[swapchain] = null | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | cmd VkResult vkGetSwapchainImagesKHR( | 
|  | VkDevice                                 device, | 
|  | VkSwapchainKHR                           swapchain, | 
|  | u32*                                     pSwapchainImageCount, | 
|  | VkImage*                                 pSwapchainImages) { | 
|  | deviceObject := GetDevice(device) | 
|  |  | 
|  | count := as!u32(?) | 
|  | pSwapchainImageCount[0] = count | 
|  | swapchainImages := pSwapchainImages[0:count] | 
|  |  | 
|  | for i in (0 .. count) { | 
|  | swapchainImage := ? | 
|  | swapchainImages[i] = swapchainImage | 
|  | State.Images[swapchainImage] = new!ImageObject(device: device) | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | cmd VkResult vkAcquireNextImageKHR( | 
|  | VkDevice                                 device, | 
|  | VkSwapchainKHR                           swapchain, | 
|  | u64                                      timeout, | 
|  | VkSemaphore                              semaphore, | 
|  | VkFence                                  fence, | 
|  | u32*                                     pImageIndex) { | 
|  | deviceObject := GetDevice(device) | 
|  | swapchainObject := GetSwapchain(swapchain) | 
|  |  | 
|  | imageIndex := ? | 
|  | pImageIndex[0] = imageIndex | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | cmd VkResult vkQueuePresentKHR( | 
|  | VkQueue                                  queue, | 
|  | const VkPresentInfoKHR*                  pPresentInfo) { | 
|  | queueObject := GetQueue(queue) | 
|  |  | 
|  | presentInfo := ? | 
|  | pPresentInfo[0] = presentInfo | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | cmd VkResult vkGetDeviceGroupPresentCapabilitiesKHR( | 
|  | VkDevice                                    device, | 
|  | VkDeviceGroupPresentCapabilitiesKHR*        pDeviceGroupPresentCapabilities) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | cmd VkResult vkGetDeviceGroupSurfacePresentModesKHR( | 
|  | VkDevice                                    device, | 
|  | VkSurfaceKHR                                surface, | 
|  | VkDeviceGroupPresentModeFlagsKHR*           pModes) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | cmd VkResult vkGetPhysicalDevicePresentRectanglesKHR( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkSurfaceKHR                                surface, | 
|  | u32*                                        pRectCount, | 
|  | VkRect2D*                                   pRects) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @vulkan1_1 | 
|  | @extension("VK_KHR_swapchain") // 2 | 
|  | cmd VkResult vkAcquireNextImage2KHR( | 
|  | VkDevice                                    device, | 
|  | const VkAcquireNextImageInfoKHR*            pAcquireInfo, | 
|  | u32*                                        pImageIndex) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display") // 3 | 
|  | cmd VkResult vkGetPhysicalDeviceDisplayPropertiesKHR( | 
|  | VkPhysicalDevice                        physicalDevice, | 
|  | u32*                                    pPropertyCount, | 
|  | VkDisplayPropertiesKHR*                 pProperties) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display") // 3 | 
|  | cmd VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR( | 
|  | VkPhysicalDevice                        physicalDevice, | 
|  | u32*                                    pPropertyCount, | 
|  | VkDisplayPlanePropertiesKHR*            pProperties) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display") // 3 | 
|  | cmd VkResult vkGetDisplayPlaneSupportedDisplaysKHR( | 
|  | VkPhysicalDevice                        physicalDevice, | 
|  | u32                                     planeIndex, | 
|  | u32*                                    pDisplayCount, | 
|  | VkDisplayKHR*                           pDisplays) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display") // 3 | 
|  | cmd VkResult vkGetDisplayModePropertiesKHR( | 
|  | VkPhysicalDevice                        physicalDevice, | 
|  | VkDisplayKHR                            display, | 
|  | u32*                                    pPropertyCount, | 
|  | VkDisplayModePropertiesKHR*             pProperties) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display") // 3 | 
|  | cmd VkResult vkCreateDisplayModeKHR( | 
|  | VkPhysicalDevice                        physicalDevice, | 
|  | VkDisplayKHR                            display, | 
|  | const VkDisplayModeCreateInfoKHR*       pCreateInfo, | 
|  | const VkAllocationCallbacks*            pAllocator, | 
|  | VkDisplayModeKHR*                       pMode) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display") // 3 | 
|  | cmd VkResult vkGetDisplayPlaneCapabilitiesKHR( | 
|  | VkPhysicalDevice                        physicalDevice, | 
|  | VkDisplayModeKHR                        mode, | 
|  | u32                                     planeIndex, | 
|  | VkDisplayPlaneCapabilitiesKHR*          pCapabilities) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display") // 3 | 
|  | cmd VkResult vkCreateDisplayPlaneSurfaceKHR( | 
|  | VkInstance                              instance, | 
|  | const VkDisplaySurfaceCreateInfoKHR*    pCreateInfo, | 
|  | const VkAllocationCallbacks*            pAllocator, | 
|  | VkSurfaceKHR*                           pSurface) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display_swapchain") // 4 | 
|  | cmd VkResult vkCreateSharedSwapchainsKHR( | 
|  | VkDevice                                device, | 
|  | u32                                     swapchainCount, | 
|  | const VkSwapchainCreateInfoKHR*         pCreateInfos, | 
|  | const VkAllocationCallbacks*            pAllocator, | 
|  | VkSwapchainKHR*                         pSwapchains) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_xlib_surface") // 5 | 
|  | cmd VkResult vkCreateXlibSurfaceKHR( | 
|  | VkInstance                              instance, | 
|  | const VkXlibSurfaceCreateInfoKHR*       pCreateInfo, | 
|  | const VkAllocationCallbacks*            pAllocator, | 
|  | VkSurfaceKHR*                           pSurface) { | 
|  | instanceObject := GetInstance(instance) | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_xlib_surface") // 5 | 
|  | cmd VkBool32 vkGetPhysicalDeviceXlibPresentationSupportKHR( | 
|  | VkPhysicalDevice                        physicalDevice, | 
|  | u32                                     queueFamilyIndex, | 
|  | platform.Display*                       dpy, | 
|  | platform.VisualID                       visualID) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_xcb_surface") // 6 | 
|  | cmd VkResult vkCreateXcbSurfaceKHR( | 
|  | VkInstance                              instance, | 
|  | const VkXcbSurfaceCreateInfoKHR*        pCreateInfo, | 
|  | const VkAllocationCallbacks*            pAllocator, | 
|  | VkSurfaceKHR*                           pSurface) { | 
|  | instanceObject := GetInstance(instance) | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_xcb_surface") // 6 | 
|  | cmd VkBool32 vkGetPhysicalDeviceXcbPresentationSupportKHR( | 
|  | VkPhysicalDevice                        physicalDevice, | 
|  | u32                                     queueFamilyIndex, | 
|  | platform.xcb_connection_t*              connection, | 
|  | platform.xcb_visualid_t                 visual_id) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_wayland_surface") // 7 | 
|  | cmd VkResult vkCreateWaylandSurfaceKHR( | 
|  | VkInstance                              instance, | 
|  | const VkWaylandSurfaceCreateInfoKHR*    pCreateInfo, | 
|  | const VkAllocationCallbacks*            pAllocator, | 
|  | VkSurfaceKHR*                           pSurface) { | 
|  | instanceObject := GetInstance(instance) | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_wayland_surface") // 7 | 
|  | cmd VkBool32 vkGetPhysicalDeviceWaylandPresentationSupportKHR( | 
|  | VkPhysicalDevice                        physicalDevice, | 
|  | u32                                     queueFamilyIndex, | 
|  | platform.wl_display*                    display) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_android_surface") // 9 | 
|  | cmd VkResult vkCreateAndroidSurfaceKHR( | 
|  | VkInstance                              instance, | 
|  | const VkAndroidSurfaceCreateInfoKHR*    pCreateInfo, | 
|  | const VkAllocationCallbacks*            pAllocator, | 
|  | VkSurfaceKHR*                           pSurface) { | 
|  | instanceObject := GetInstance(instance) | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_win32_surface") // 10 | 
|  | cmd VkResult vkCreateWin32SurfaceKHR( | 
|  | VkInstance                              instance, | 
|  | const VkWin32SurfaceCreateInfoKHR*      pCreateInfo, | 
|  | const VkAllocationCallbacks*            pAllocator, | 
|  | VkSurfaceKHR*                           pSurface) { | 
|  | instanceObject := GetInstance(instance) | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_win32_surface") // 10 | 
|  | cmd VkResult vkGetPhysicalDeviceWin32PresentationSupportKHR( | 
|  | VkPhysicalDevice                        physicalDevice, | 
|  | u32                                     queueFamilyIndex) { | 
|  | physicalDeviceObject := GetPhysicalDevice(physicalDevice) | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_ANDROID_native_buffer") // 11 | 
|  | @optional | 
|  | cmd VkResult vkGetSwapchainGrallocUsageANDROID( | 
|  | VkDevice                                device, | 
|  | VkFormat                                format, | 
|  | VkImageUsageFlags                       imageUsage, | 
|  | s32*                                    grallocUsage) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_ANDROID_native_buffer") // 11 | 
|  | @optional | 
|  | cmd VkResult vkGetSwapchainGrallocUsage2ANDROID( | 
|  | VkDevice                                device, | 
|  | VkFormat                                format, | 
|  | VkImageUsageFlags                       imageUsage, | 
|  | VkSwapchainImageUsageFlagsANDROID       swapchainImageUsage, | 
|  | u64*                                    grallocConsumerUsage, | 
|  | u64*                                    grallocProducerUsage) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_ANDROID_native_buffer") // 11 | 
|  | cmd VkResult vkAcquireImageANDROID( | 
|  | VkDevice                                device, | 
|  | VkImage                                 image, | 
|  | int                                     nativeFenceFd, | 
|  | VkSemaphore                             semaphore, | 
|  | VkFence                                 fence) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_ANDROID_native_buffer") // 11 | 
|  | cmd VkResult vkQueueSignalReleaseImageANDROID( | 
|  | VkQueue                                 queue, | 
|  | u32                                     waitSemaphoreCount, | 
|  | const VkSemaphore*                      pWaitSemaphores, | 
|  | VkImage                                 image, | 
|  | int*                                    pNativeFenceFd) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_report") // 12 | 
|  | @external type void* PFN_vkDebugReportCallbackEXT | 
|  | @extension("VK_EXT_debug_report") // 12 | 
|  | @pfn cmd VkBool32 vkDebugReportCallbackEXT( | 
|  | VkDebugReportFlagsEXT                   flags, | 
|  | VkDebugReportObjectTypeEXT              objectType, | 
|  | u64                                     object, | 
|  | platform.size_t                         location, | 
|  | s32                                     messageCode, | 
|  | const char*                             pLayerPrefix, | 
|  | const char*                             pMessage, | 
|  | void*                                   pUserData) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_report") // 12 | 
|  | cmd VkResult vkCreateDebugReportCallbackEXT( | 
|  | VkInstance                                  instance, | 
|  | const VkDebugReportCallbackCreateInfoEXT*   pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkDebugReportCallbackEXT*                   pCallback) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_report") // 12 | 
|  | cmd void vkDestroyDebugReportCallbackEXT( | 
|  | VkInstance                                  instance, | 
|  | VkDebugReportCallbackEXT                    callback, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_report") // 12 | 
|  | cmd void vkDebugReportMessageEXT( | 
|  | VkInstance                                  instance, | 
|  | VkDebugReportFlagsEXT                       flags, | 
|  | VkDebugReportObjectTypeEXT                  objectType, | 
|  | u64                                         object, | 
|  | platform.size_t                             location, | 
|  | s32                                         messageCode, | 
|  | const char*                                 pLayerPrefix, | 
|  | const char*                                 pMessage) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_marker") // 23 | 
|  | cmd VkResult vkDebugMarkerSetObjectTagEXT( | 
|  | VkDevice                                    device, | 
|  | const VkDebugMarkerObjectTagInfoEXT*        pTagInfo) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_marker") // 23 | 
|  | cmd VkResult vkDebugMarkerSetObjectNameEXT( | 
|  | VkDevice                                    device, | 
|  | const VkDebugMarkerObjectNameInfoEXT*       pNameInfo) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_marker") // 23 | 
|  | cmd void vkCmdDebugMarkerBeginEXT( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | const VkDebugMarkerMarkerInfoEXT*           pMarkerInfo) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_marker") // 23 | 
|  | cmd void vkCmdDebugMarkerEndEXT( | 
|  | VkCommandBuffer                             commandBuffer) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_marker") // 23 | 
|  | cmd void vkCmdDebugMarkerInsertEXT( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | const VkDebugMarkerMarkerInfoEXT*           pMarkerInfo) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_transform_feedback") // 29 | 
|  | cmd void vkCmdBindTransformFeedbackBuffersEXT( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         firstBinding, | 
|  | u32                                         bindingCount, | 
|  | const VkBuffer*                             pBuffers, | 
|  | const VkDeviceSize*                         pOffsets, | 
|  | const VkDeviceSize*                         pSizes) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_transform_feedback") // 29 | 
|  | cmd void vkCmdBeginTransformFeedbackEXT( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         firstCounterBuffer, | 
|  | u32                                         counterBufferCount, | 
|  | const VkBuffer*                             pCounterBuffers, | 
|  | const VkDeviceSize*                         pCounterBufferOffsets) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_transform_feedback") // 29 | 
|  | cmd void vkCmdEndTransformFeedbackEXT( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         firstCounterBuffer, | 
|  | u32                                         counterBufferCount, | 
|  | const VkBuffer*                             pCounterBuffers, | 
|  | const VkDeviceSize*                         pCounterBufferOffsets) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_transform_feedback") // 29 | 
|  | cmd void vkCmdBeginQueryIndexedEXT( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkQueryPool                                 queryPool, | 
|  | u32                                         query, | 
|  | VkQueryControlFlags                         flags, | 
|  | u32                                         index) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_transform_feedback") // 29 | 
|  | cmd void vkCmdEndQueryIndexedEXT( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkQueryPool                                 queryPool, | 
|  | u32                                         query, | 
|  | u32                                         index) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_transform_feedback") // 29 | 
|  | cmd void vkCmdDrawIndirectByteCountEXT( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         instanceCount, | 
|  | u32                                         firstInstance, | 
|  | VkBuffer                                    counterBuffer, | 
|  | VkDeviceSize                                counterBufferOffset, | 
|  | u32                                         counterOffset, | 
|  | u32                                         vertexStride) { | 
|  | } | 
|  |  | 
|  | @extension("VK_AMD_draw_indirect_count") // 34 | 
|  | cmd void vkCmdDrawIndirectCountAMD( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkBuffer                                    buffer, | 
|  | VkDeviceSize                                offset, | 
|  | VkBuffer                                    countBuffer, | 
|  | VkDeviceSize                                countBufferOffset, | 
|  | u32                                         maxDrawCount, | 
|  | u32                                         stride) { | 
|  | } | 
|  |  | 
|  | @extension("VK_AMD_draw_indirect_count") // 34 | 
|  | cmd void vkCmdDrawIndexedIndirectCountAMD( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkBuffer                                    buffer, | 
|  | VkDeviceSize                                offset, | 
|  | VkBuffer                                    countBuffer, | 
|  | VkDeviceSize                                countBufferOffset, | 
|  | u32                                         maxDrawCount, | 
|  | u32                                         stride) { | 
|  | } | 
|  |  | 
|  | @extension("VK_AMD_shader_info") // 43 | 
|  | cmd VkResult vkGetShaderInfoAMD( | 
|  | VkDevice                                    device, | 
|  | VkPipeline                                  pipeline, | 
|  | VkShaderStageFlagBits                       shaderStage, | 
|  | VkShaderInfoTypeAMD                         infoType, | 
|  | platform.size_t*                            pInfoSize, | 
|  | void*                                       pInfo) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_external_memory_capabilities") // 56 | 
|  | cmd VkResult vkGetPhysicalDeviceExternalImageFormatPropertiesNV( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkFormat                                    format, | 
|  | VkImageType                                 type, | 
|  | VkImageTiling                               tiling, | 
|  | VkImageUsageFlags                           usage, | 
|  | VkImageCreateFlags                          flags, | 
|  | VkExternalMemoryHandleTypeFlagsNV           externalHandleType, | 
|  | VkExternalImageFormatPropertiesNV*          pExternalImageFormatProperties) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_external_memory_win32") // 58 | 
|  | cmd VkResult vkGetMemoryWin32HandleNV( | 
|  | VkDevice                                    device, | 
|  | VkDeviceMemory                              memory, | 
|  | VkExternalMemoryHandleTypeFlagsNV           handleType, | 
|  | platform.HANDLE*                            pHandle) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_physical_device_properties2") // 60 | 
|  | cmd void vkGetPhysicalDeviceFeatures2KHR( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkPhysicalDeviceFeatures2KHR*               pFeatures) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_physical_device_properties2") // 60 | 
|  | cmd void vkGetPhysicalDeviceProperties2KHR( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkPhysicalDeviceProperties2KHR*             pProperties) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_physical_device_properties2") // 60 | 
|  | cmd void vkGetPhysicalDeviceFormatProperties2KHR( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkFormat                                    format, | 
|  | VkFormatProperties2KHR*                     pFormatProperties) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_physical_device_properties2") // 60 | 
|  | cmd VkResult vkGetPhysicalDeviceImageFormatProperties2KHR( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | const VkPhysicalDeviceImageFormatInfo2KHR*  pImageFormatInfo, | 
|  | VkImageFormatProperties2KHR*                pImageFormatProperties) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_physical_device_properties2") // 60 | 
|  | cmd void vkGetPhysicalDeviceQueueFamilyProperties2KHR( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | u32*                                        pQueueFamilyPropertyCount, | 
|  | VkQueueFamilyProperties2KHR*                pQueueFamilyProperties) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_physical_device_properties2") // 60 | 
|  | cmd void vkGetPhysicalDeviceMemoryProperties2KHR( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkPhysicalDeviceMemoryProperties2KHR*       pMemoryProperties) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_physical_device_properties2") // 60 | 
|  | cmd void vkGetPhysicalDeviceSparseImageFormatProperties2KHR( | 
|  | VkPhysicalDevice                                    physicalDevice, | 
|  | const VkPhysicalDeviceSparseImageFormatInfo2KHR*    pFormatInfo, | 
|  | u32*                                                pPropertyCount, | 
|  | VkSparseImageFormatProperties2KHR*                  pProperties) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_device_group") // 61 | 
|  | cmd void vkGetDeviceGroupPeerMemoryFeaturesKHR( | 
|  | VkDevice                                    device, | 
|  | u32                                         heapIndex, | 
|  | u32                                         localDeviceIndex, | 
|  | u32                                         remoteDeviceIndex, | 
|  | VkPeerMemoryFeatureFlagsKHR*                pPeerMemoryFeatures) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_device_group") // 61 | 
|  | cmd void vkCmdSetDeviceMaskKHR( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         deviceMask) { | 
|  | } | 
|  |  | 
|  |  | 
|  | @extension("VK_KHR_device_group") // 61 | 
|  | cmd void vkCmdDispatchBaseKHR( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         baseGroupX, | 
|  | u32                                         baseGroupY, | 
|  | u32                                         baseGroupZ, | 
|  | u32                                         groupCountX, | 
|  | u32                                         groupCountY, | 
|  | u32                                         groupCountZ) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NN_vi_surface") // 63 | 
|  | cmd VkResult vkCreateViSurfaceNN( | 
|  | VkInstance                                  instance, | 
|  | const VkViSurfaceCreateInfoNN*              pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkSurfaceKHR*                               pSurface) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_maintenance1") // 70 | 
|  | cmd void vkTrimCommandPoolKHR( | 
|  | VkDevice                                    device, | 
|  | VkCommandPool                               commandPool, | 
|  | VkCommandPoolTrimFlagsKHR                   flags) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_device_group_creation") // 71 | 
|  | @threadSafety("system") | 
|  | cmd VkResult vkEnumeratePhysicalDeviceGroupsKHR( | 
|  | VkInstance                                  instance, | 
|  | u32*                                        pPhysicalDeviceGroupCount, | 
|  | VkPhysicalDeviceGroupPropertiesKHR*         pPhysicalDeviceGroupProperties) { | 
|  | instanceObject := GetInstance(instance) | 
|  |  | 
|  | physicalDeviceGroupCount := as!u32(?) | 
|  | pPhysicalDeviceGroupCount[0] = physicalDeviceGroupCount | 
|  | physicalDevices := pPhysicalDeviceGroupProperties[0:physicalDeviceGroupCount] | 
|  |  | 
|  | for i in (0 .. physicalDeviceGroupCount) { | 
|  | physicalDevice := ? | 
|  | physicalDevices[i] = physicalDevice | 
|  | if !(physicalDevice in State.PhysicalDevices) { | 
|  | State.PhysicalDevices[physicalDevice] = new!PhysicalDeviceObject(instance: instance) | 
|  | } | 
|  | } | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory_capabilities") // 72 | 
|  | cmd void vkGetPhysicalDeviceExternalBufferPropertiesKHR( | 
|  | VkPhysicalDevice                                physicalDevice, | 
|  | const VkPhysicalDeviceExternalBufferInfoKHR*    pExternalBufferInfo, | 
|  | VkExternalBufferPropertiesKHR*                  pExternalBufferProperties) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory_win32") // 74 | 
|  | cmd VkResult vkGetMemoryWin32HandleKHR( | 
|  | VkDevice                                    device, | 
|  | const VkMemoryGetWin32HandleInfoKHR*        pGetWin32HandleInfo, | 
|  | platform.HANDLE*                            pHandle) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory_win32") // 74 | 
|  | cmd VkResult vkGetMemoryWin32HandlePropertiesKHR( | 
|  | VkDevice                                    device, | 
|  | VkExternalMemoryHandleTypeFlagBitsKHR       handleType, | 
|  | platform.HANDLE                             handle, | 
|  | VkMemoryWin32HandlePropertiesKHR*           pMemoryWin32HandleProperties) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory_fd") // 75 | 
|  | cmd VkResult vkGetMemoryFdKHR( | 
|  | VkDevice                                    device, | 
|  | const VkMemoryGetFdInfoKHR*                 pGetFdInfo, | 
|  | s32*                                        pFd) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_memory_fd") // 75 | 
|  | cmd VkResult vkGetMemoryFdPropertiesKHR( | 
|  | VkDevice                                    device, | 
|  | VkExternalMemoryHandleTypeFlagBitsKHR       handleType, | 
|  | s32                                         fd, | 
|  | VkMemoryFdPropertiesKHR*                    pMemoryFdProperties) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_semaphore_capabilities") // 77 | 
|  | cmd void vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | const VkPhysicalDeviceExternalSemaphoreInfoKHR* pExternalSemaphoreInfo, | 
|  | VkExternalSemaphorePropertiesKHR*           pExternalSemaphoreProperties) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_semaphore_win32") // 79 | 
|  | cmd VkResult vkImportSemaphoreWin32HandleKHR( | 
|  | VkDevice                                    device, | 
|  | const VkImportSemaphoreWin32HandleInfoKHR*  pImportSemaphoreWin32HandleInfo) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_semaphore_win32") // 79 | 
|  | cmd VkResult vkGetSemaphoreWin32HandleKHR( | 
|  | VkDevice                                    device, | 
|  | const VkSemaphoreGetWin32HandleInfoKHR*     pGetWin32HandleInfo, | 
|  | platform.HANDLE*                            pHandle) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_semaphore_fd") // 80 | 
|  | cmd VkResult vkImportSemaphoreFdKHR( | 
|  | VkDevice                                    device, | 
|  | const VkImportSemaphoreFdInfoKHR*           pImportSemaphoreFdInfo) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_semaphore_fd") // 80 | 
|  | cmd VkResult vkGetSemaphoreFdKHR( | 
|  | VkDevice                                    device, | 
|  | const VkSemaphoreGetFdInfoKHR*              pGetFdInfo, | 
|  | s32*                                        pFd) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_push_descriptor") // 81 | 
|  | cmd void vkCmdPushDescriptorSetKHR( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkPipelineBindPoint                         pipelineBindPoint, | 
|  | VkPipelineLayout                            layout, | 
|  | u32                                         set, | 
|  | u32                                         descriptorWriteCount, | 
|  | const VkWriteDescriptorSet*                 pDescriptorWrites) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_conditional_rendering") // 82 | 
|  | cmd void vkCmdBeginConditionalRenderingEXT( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | const VkConditionalRenderingBeginInfoEXT*   pConditionalRenderingBegin) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_conditional_rendering") // 82 | 
|  | cmd void vkCmdEndConditionalRenderingEXT( | 
|  | VkCommandBuffer                             commandBuffer) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_descriptor_update_template") // 86 | 
|  | cmd VkResult vkCreateDescriptorUpdateTemplateKHR( | 
|  | VkDevice                                    device, | 
|  | const VkDescriptorUpdateTemplateCreateInfoKHR* pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkDescriptorUpdateTemplateKHR*              pDescriptorUpdateTemplate) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_descriptor_update_template") // 86 | 
|  | cmd void vkDestroyDescriptorUpdateTemplateKHR( | 
|  | VkDevice                                    device, | 
|  | VkDescriptorUpdateTemplateKHR               descriptorUpdateTemplate, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_descriptor_update_template") // 86 | 
|  | cmd void vkUpdateDescriptorSetWithTemplateKHR( | 
|  | VkDevice                                    device, | 
|  | VkDescriptorSet                             descriptorSet, | 
|  | VkDescriptorUpdateTemplateKHR               descriptorUpdateTemplate, | 
|  | const void*                                 pData) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_descriptor_update_template") // 86 | 
|  | cmd void vkCmdPushDescriptorSetWithTemplateKHR( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkDescriptorUpdateTemplateKHR               descriptorUpdateTemplate, | 
|  | VkPipelineLayout                            layout, | 
|  | u32                                         set, | 
|  | const void*                                 pData) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | cmd void vkCmdProcessCommandsNVX( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | const VkCmdProcessCommandsInfoNVX*          pProcessCommandsInfo) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | cmd void vkCmdReserveSpaceForCommandsNVX( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | const VkCmdReserveSpaceForCommandsInfoNVX*  pReserveSpaceInfo) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | cmd VkResult vkCreateIndirectCommandsLayoutNVX( | 
|  | VkDevice                                    device, | 
|  | const VkIndirectCommandsLayoutCreateInfoNVX* pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkIndirectCommandsLayoutNVX*                pIndirectCommandsLayout) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | cmd void vkDestroyIndirectCommandsLayoutNVX( | 
|  | VkDevice                                    device, | 
|  | VkIndirectCommandsLayoutNVX                 indirectCommandsLayout, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | cmd VkResult vkCreateObjectTableNVX( | 
|  | VkDevice                                    device, | 
|  | const VkObjectTableCreateInfoNVX*           pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkObjectTableNVX*                           pObjectTable) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | cmd void vkDestroyObjectTableNVX( | 
|  | VkDevice                                    device, | 
|  | VkObjectTableNVX                            objectTable, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | cmd VkResult vkRegisterObjectsNVX( | 
|  | VkDevice                                    device, | 
|  | VkObjectTableNVX                            objectTable, | 
|  | u32                                         objectCount, | 
|  | const VkObjectTableEntryNVX* const*         ppObjectTableEntries, | 
|  | const u32*                                  pObjectIndices) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | cmd VkResult vkUnregisterObjectsNVX( | 
|  | VkDevice                                    device, | 
|  | VkObjectTableNVX                            objectTable, | 
|  | u32                                         objectCount, | 
|  | const VkObjectEntryTypeNVX*                 pObjectEntryTypes, | 
|  | const u32*                                  pObjectIndices) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_NVX_device_generated_commands") // 87 | 
|  | cmd void vkGetPhysicalDeviceGeneratedCommandsPropertiesNVX( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkDeviceGeneratedCommandsFeaturesNVX*       pFeatures, | 
|  | VkDeviceGeneratedCommandsLimitsNVX*         pLimits) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_clip_space_w_scaling") // 88 | 
|  | cmd void vkCmdSetViewportWScalingNV( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         firstViewport, | 
|  | u32                                         viewportCount, | 
|  | const VkViewportWScalingNV*                 pViewportWScalings) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_direct_mode_display") // 89 | 
|  | cmd VkResult vkReleaseDisplayEXT( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkDisplayKHR                                display) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_acquire_xlib_display") // 90 | 
|  | cmd VkResult vkAcquireXlibDisplayEXT( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | platform.Display*                           dpy, | 
|  | VkDisplayKHR                                display) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_acquire_xlib_display") // 90 | 
|  | cmd VkResult vkGetRandROutputDisplayEXT( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | platform.Display*                           dpy, | 
|  | platform.RROutput                           rrOutput, | 
|  | VkDisplayKHR*                               pDisplay) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_display_surface_counter") // 91 | 
|  | cmd VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkSurfaceKHR                                surface, | 
|  | VkSurfaceCapabilities2EXT*                  pSurfaceCapabilities) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_display_control") // 92 | 
|  | cmd VkResult vkDisplayPowerControlEXT( | 
|  | VkDevice                                    device, | 
|  | VkDisplayKHR                                display, | 
|  | const VkDisplayPowerInfoEXT*                pDisplayPowerInfo) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_display_control") // 92 | 
|  | cmd VkResult vkRegisterDeviceEventEXT( | 
|  | VkDevice                                    device, | 
|  | const VkDeviceEventInfoEXT*                 pDeviceEventInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkFence*                                    pFence) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_display_control") // 92 | 
|  | cmd VkResult vkRegisterDisplayEventEXT( | 
|  | VkDevice                                    device, | 
|  | VkDisplayKHR                                display, | 
|  | const VkDisplayEventInfoEXT*                pDisplayEventInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkFence*                                    pFence) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_display_control") // 92 | 
|  | cmd VkResult vkGetSwapchainCounterEXT( | 
|  | VkDevice                                    device, | 
|  | VkSwapchainKHR                              swapchain, | 
|  | VkSurfaceCounterFlagBitsEXT                 counter, | 
|  | u64*                                        pCounterValue) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_GOOGLE_display_timing") // 93 | 
|  | cmd VkResult vkGetRefreshCycleDurationGOOGLE( | 
|  | VkDevice                                    device, | 
|  | VkSwapchainKHR                              swapchain, | 
|  | VkRefreshCycleDurationGOOGLE*               pDisplayTimingProperties) { | 
|  | deviceObject := GetDevice(device) | 
|  | swapchainObject := GetSwapchain(swapchain) | 
|  |  | 
|  | displayTimingProperties := ? | 
|  | pDisplayTimingProperties[0] = displayTimingProperties | 
|  |  | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_GOOGLE_display_timing") // 93 | 
|  | cmd VkResult vkGetPastPresentationTimingGOOGLE( | 
|  | VkDevice                                    device, | 
|  | VkSwapchainKHR                              swapchain, | 
|  | u32*                                        pPresentationTimingCount, | 
|  | VkPastPresentationTimingGOOGLE*             pPresentationTimings) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_discard_rectangles") // 100 | 
|  | cmd void vkCmdSetDiscardRectangleEXT( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         firstDiscardRectangle, | 
|  | u32                                         discardRectangleCount, | 
|  | const VkRect2D*                             pDiscardRectangles) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_hdr_metadata") // 106 | 
|  | cmd void vkSetHdrMetadataEXT( | 
|  | VkDevice                                    device, | 
|  | u32                                         swapchainCount, | 
|  | const VkSwapchainKHR*                       pSwapchains, | 
|  | const VkHdrMetadataEXT*                     pMetadata) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_create_renderpass2") // 110 | 
|  | cmd VkResult vkCreateRenderPass2KHR( | 
|  | VkDevice                                    device, | 
|  | const VkRenderPassCreateInfo2KHR*           pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkRenderPass*                               pRenderPass) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_create_renderpass2") // 110 | 
|  | cmd void vkCmdBeginRenderPass2KHR( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | const VkRenderPassBeginInfo*                pRenderPassBegin, | 
|  | const VkSubpassBeginInfoKHR*                pSubpassBeginInfo) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_create_renderpass2") // 110 | 
|  | cmd void vkCmdNextSubpass2KHR( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | const VkSubpassBeginInfoKHR*                pSubpassBeginInfo, | 
|  | const VkSubpassEndInfoKHR*                  pSubpassEndInfo) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_create_renderpass2") // 110 | 
|  | cmd void vkCmdEndRenderPass2KHR( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | const VkSubpassEndInfoKHR*                  pSubpassEndInfo) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_shared_presentable_image") // 112 | 
|  | cmd VkResult vkGetSwapchainStatusKHR( | 
|  | VkDevice                                    device, | 
|  | VkSwapchainKHR                              swapchain) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_fence_capabilities") // 113 | 
|  | cmd void vkGetPhysicalDeviceExternalFencePropertiesKHR( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | const VkPhysicalDeviceExternalFenceInfoKHR* pExternalFenceInfo, | 
|  | VkExternalFencePropertiesKHR*               pExternalFenceProperties) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_fence_win32") // 115 | 
|  | cmd VkResult vkImportFenceWin32HandleKHR( | 
|  | VkDevice                                    device, | 
|  | const VkImportFenceWin32HandleInfoKHR*      pImportFenceWin32HandleInfo) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_fence_win32") // 115 | 
|  | cmd VkResult vkGetFenceWin32HandleKHR( | 
|  | VkDevice                                    device, | 
|  | const VkFenceGetWin32HandleInfoKHR*         pGetWin32HandleInfo, | 
|  | platform.HANDLE*                            pHandle) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_fence_fd") // 116 | 
|  | cmd VkResult vkImportFenceFdKHR( | 
|  | VkDevice                                    device, | 
|  | const VkImportFenceFdInfoKHR*               pImportFenceFdInfo) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_external_fence_fd") // 116 | 
|  | cmd VkResult vkGetFenceFdKHR( | 
|  | VkDevice                                    device, | 
|  | const VkFenceGetFdInfoKHR*                  pGetFdInfo, | 
|  | int*                                        pFd) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_surface_capabilities2") // 120 | 
|  | cmd VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo, | 
|  | VkSurfaceCapabilities2KHR*                  pSurfaceCapabilities) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_surface_capabilities2") // 120 | 
|  | cmd VkResult vkGetPhysicalDeviceSurfaceFormats2KHR( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | const VkPhysicalDeviceSurfaceInfo2KHR*      pSurfaceInfo, | 
|  | u32*                                        pSurfaceFormatCount, | 
|  | VkSurfaceFormat2KHR*                        pSurfaceFormats) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display_properties2") // 122 | 
|  | cmd VkResult vkGetPhysicalDeviceDisplayProperties2KHR( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | u32*                                        pPropertyCount, | 
|  | VkDisplayProperties2KHR*                    pProperties) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display_properties2") // 122 | 
|  | cmd VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | u32*                                        pPropertyCount, | 
|  | VkDisplayPlaneProperties2KHR*               pProperties) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display_properties2") // 122 | 
|  | cmd VkResult vkGetDisplayModeProperties2KHR( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkDisplayKHR                                display, | 
|  | u32*                                        pPropertyCount, | 
|  | VkDisplayModeProperties2KHR*                pProperties) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_display_properties2") // 122 | 
|  | cmd VkResult vkGetDisplayPlaneCapabilities2KHR( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | const VkDisplayPlaneInfo2KHR*               pDisplayPlaneInfo, | 
|  | VkDisplayPlaneCapabilities2KHR*             pCapabilities) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_MVK_ios_surface") // 123 | 
|  | cmd VkResult vkCreateIOSSurfaceMVK( | 
|  | VkInstance                                  instance, | 
|  | const VkIOSSurfaceCreateInfoMVK*            pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkSurfaceKHR*                               pSurface) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_MVK_macos_surface") // 124 | 
|  | cmd VkResult vkCreateMacOSSurfaceMVK( | 
|  | VkInstance                                  instance, | 
|  | const VkMacOSSurfaceCreateInfoMVK*          pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkSurfaceKHR*                               pSurface) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | @external type void* PFN_vkDebugUtilsMessengerCallbackEXT | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | @pfn cmd VkBool32 vkDebugUtilsMessengerCallbackEXT( | 
|  | VkDebugUtilsMessageSeverityFlagBitsEXT      messageSeverity, | 
|  | VkDebugUtilsMessageTypeFlagsEXT             messageType, | 
|  | const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData, | 
|  | void*                                       pUserData) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | cmd VkResult vkSetDebugUtilsObjectNameEXT( | 
|  | VkDevice                                    device, | 
|  | const VkDebugUtilsObjectNameInfoEXT*        pNameInfo) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | cmd VkResult vkSetDebugUtilsObjectTagEXT( | 
|  | VkDevice                                    device, | 
|  | const VkDebugUtilsObjectTagInfoEXT*         pTagInfo) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | cmd void vkQueueBeginDebugUtilsLabelEXT( | 
|  | VkQueue                                     queue, | 
|  | const VkDebugUtilsLabelEXT*                 pLabelInfo) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | cmd void vkQueueEndDebugUtilsLabelEXT(VkQueue       queue) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | cmd void vkQueueInsertDebugUtilsLabelEXT( | 
|  | VkQueue                                     queue, | 
|  | const VkDebugUtilsLabelEXT*                 pLabelInfo) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | cmd void vkCmdBeginDebugUtilsLabelEXT( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | const VkDebugUtilsLabelEXT*                 pLabelInfo) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | cmd void vkCmdEndDebugUtilsLabelEXT(VkCommandBuffer commandBuffer) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | cmd void vkCmdInsertDebugUtilsLabelEXT( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | const VkDebugUtilsLabelEXT*                 pLabelInfo) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | cmd VkResult vkCreateDebugUtilsMessengerEXT( | 
|  | VkInstance                                  instance, | 
|  | const VkDebugUtilsMessengerCreateInfoEXT*   pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkDebugUtilsMessengerEXT*                   pMessenger) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | cmd void vkDestroyDebugUtilsMessengerEXT( | 
|  | VkInstance                                  instance, | 
|  | VkDebugUtilsMessengerEXT                    messenger, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_debug_utils") // 129 | 
|  | cmd void vkSubmitDebugUtilsMessageEXT( | 
|  | VkInstance                                  instance, | 
|  | VkDebugUtilsMessageSeverityFlagBitsEXT      messageSeverity, | 
|  | VkDebugUtilsMessageTypeFlagsEXT             messageTypes, | 
|  | const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData) { | 
|  | } | 
|  |  | 
|  | @extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130 | 
|  | @vulkan1_1 // extension requires 1.1, and should become non-optional when 1.1 does | 
|  | cmd VkResult vkGetAndroidHardwareBufferPropertiesANDROID( | 
|  | VkDevice                                    device, | 
|  | const platform.AHardwareBuffer*             buffer, | 
|  | VkAndroidHardwareBufferPropertiesANDROID*   pProperties) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_ANDROID_external_memory_android_hardware_buffer") // 130 | 
|  | @vulkan1_1 // extension requires 1.1, and should become non-optional when 1.1 does | 
|  | cmd VkResult vkGetMemoryAndroidHardwareBufferANDROID( | 
|  | VkDevice                                            device, | 
|  | const VkMemoryGetAndroidHardwareBufferInfoANDROID*  pInfo, | 
|  | platform.AHardwareBuffer**                          pBuffer) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_sample_locations") // 144 | 
|  | cmd void vkCmdSetSampleLocationsEXT( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | const VkSampleLocationsInfoEXT*             pSampleLocationsInfo) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_sample_locations") // 144 | 
|  | cmd void vkGetPhysicalDeviceMultisamplePropertiesEXT( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | VkSampleCountFlagBits                       samples, | 
|  | VkMultisamplePropertiesEXT*                 pMultisampleProperties) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_memory_requirements2") // 147 | 
|  | cmd void vkGetImageMemoryRequirements2KHR( | 
|  | VkDevice                                    device, | 
|  | const VkImageMemoryRequirementsInfo2KHR*    pInfo, | 
|  | VkMemoryRequirements2KHR*                   pMemoryRequirements) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_memory_requirements2") // 147 | 
|  | cmd void vkGetBufferMemoryRequirements2KHR( | 
|  | VkDevice                                    device, | 
|  | const VkBufferMemoryRequirementsInfo2KHR*   pInfo, | 
|  | VkMemoryRequirements2KHR*                   pMemoryRequirements) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_get_memory_requirements2") // 147 | 
|  | cmd void vkGetImageSparseMemoryRequirements2KHR( | 
|  | VkDevice                                        device, | 
|  | const VkImageSparseMemoryRequirementsInfo2KHR*  pInfo, | 
|  | u32*                                            pSparseMemoryRequirementCount, | 
|  | VkSparseImageMemoryRequirements2KHR*            pSparseMemoryRequirements) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_sampler_ycbcr_conversion") // 157 | 
|  | cmd VkResult vkCreateSamplerYcbcrConversionKHR( | 
|  | VkDevice                                        device, | 
|  | const VkSamplerYcbcrConversionCreateInfoKHR*    pCreateInfo, | 
|  | const VkAllocationCallbacks*                    pAllocator, | 
|  | VkSamplerYcbcrConversionKHR*                    pYcbcrConversion) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_sampler_ycbcr_conversion") // 157 | 
|  | cmd void vkDestroySamplerYcbcrConversionKHR( | 
|  | VkDevice                                        device, | 
|  | VkSamplerYcbcrConversionKHR                     ycbcrConversion, | 
|  | const VkAllocationCallbacks*                    pAllocator) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_bind_memory2") // 158 | 
|  | cmd VkResult vkBindBufferMemory2KHR( | 
|  | VkDevice                                        device, | 
|  | u32                                             bindInfoCount, | 
|  | const VkBindBufferMemoryInfoKHR*                pBindInfos) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_bind_memory2") // 158 | 
|  | cmd VkResult vkBindImageMemory2KHR( | 
|  | VkDevice                                        device, | 
|  | u32                                             bindInfoCount, | 
|  | const VkBindImageMemoryInfoKHR*                 pBindInfos) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_image_drm_format_modifier") // 159 | 
|  | cmd VkResult vkGetImageDrmFormatModifierPropertiesEXT( | 
|  | VkDevice                                        device, | 
|  | VkImage                                         image, | 
|  | VkImageDrmFormatModifierPropertiesEXT*          pProperties) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_validation_cache") // 161 | 
|  | cmd VkResult vkCreateValidationCacheEXT( | 
|  | VkDevice                                    device, | 
|  | const VkValidationCacheCreateInfoEXT*       pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkValidationCacheEXT*                       pValidationCache) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_validation_cache") // 161 | 
|  | cmd void vkDestroyValidationCacheEXT( | 
|  | VkDevice                                    device, | 
|  | VkValidationCacheEXT                        validationCache, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_validation_cache") // 161 | 
|  | cmd VkResult vkMergeValidationCachesEXT( | 
|  | VkDevice                                    device, | 
|  | VkValidationCacheEXT                        dstCache, | 
|  | u32                                         srcCacheCount, | 
|  | const VkValidationCacheEXT*                 pSrcCaches) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_validation_cache") // 161 | 
|  | cmd VkResult vkGetValidationCacheDataEXT( | 
|  | VkDevice                                    device, | 
|  | VkValidationCacheEXT                        validationCache, | 
|  | platform.size_t*                            pDataSize, | 
|  | void*                                       pData) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_shading_rate_image") // 165 | 
|  | cmd void vkCmdBindShadingRateImageNV( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkImageView                                 imageView, | 
|  | VkImageLayout                               imageLayout) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_shading_rate_image") // 165 | 
|  | cmd void vkCmdSetViewportShadingRatePaletteNV( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         firstViewport, | 
|  | u32                                         viewportCount, | 
|  | const VkShadingRatePaletteNV*               pShadingRatePalettes) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_shading_rate_image") // 165 | 
|  | cmd void vkCmdSetCoarseSampleOrderNV( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkCoarseSampleOrderTypeNV                   sampleOrderType, | 
|  | u32                                         customSampleOrderCount, | 
|  | const VkCoarseSampleOrderCustomNV*          pCustomSampleOrders) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | cmd VkResult vkCreateAccelerationStructureNV( | 
|  | VkDevice                                    device, | 
|  | const VkAccelerationStructureCreateInfoNV*  pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkAccelerationStructureNV*                  pAccelerationStructure) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | cmd void vkDestroyAccelerationStructureNV( | 
|  | VkDevice                                    device, | 
|  | VkAccelerationStructureNV                   accelerationStructure, | 
|  | const VkAllocationCallbacks*                pAllocator) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | cmd void vkGetAccelerationStructureMemoryRequirementsNV( | 
|  | VkDevice                                                device, | 
|  | const VkAccelerationStructureMemoryRequirementsInfoNV*  pInfo, | 
|  | VkMemoryRequirements2KHR*                               pMemoryRequirements) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | cmd VkResult vkBindAccelerationStructureMemoryNV( | 
|  | VkDevice                                        device, | 
|  | u32                                             bindInfoCount, | 
|  | const VkBindAccelerationStructureMemoryInfoNV*  pBindInfos) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | cmd void vkCmdBuildAccelerationStructureNV( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | const VkAccelerationStructureInfoNV*        pInfo, | 
|  | VkBuffer                                    instanceData, | 
|  | VkDeviceSize                                instanceOffset, | 
|  | VkBool32                                    update, | 
|  | VkAccelerationStructureNV                   dst, | 
|  | VkAccelerationStructureNV                   src, | 
|  | VkBuffer                                    scratch, | 
|  | VkDeviceSize                                scratchOffset) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | cmd void vkCmdCopyAccelerationStructureNV( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkAccelerationStructureNV                   dst, | 
|  | VkAccelerationStructureNV                   src, | 
|  | VkCopyAccelerationStructureModeNV           mode) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | cmd void vkCmdTraceRaysNV( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkBuffer                                    raygenShaderBindingTableBuffer, | 
|  | VkDeviceSize                                raygenShaderBindingOffset, | 
|  | VkBuffer                                    missShaderBindingTableBuffer, | 
|  | VkDeviceSize                                missShaderBindingOffset, | 
|  | VkDeviceSize                                missShaderBindingStride, | 
|  | VkBuffer                                    hitShaderBindingTableBuffer, | 
|  | VkDeviceSize                                hitShaderBindingOffset, | 
|  | VkDeviceSize                                hitShaderBindingStride, | 
|  | VkBuffer                                    callableShaderBindingTableBuffer, | 
|  | VkDeviceSize                                callableShaderBindingOffset, | 
|  | VkDeviceSize                                callableShaderBindingStride, | 
|  | u32                                         width, | 
|  | u32                                         height, | 
|  | u32                                         depth) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | cmd VkResult vkCreateRaytracingPipelinesNV( | 
|  | VkDevice                                    device, | 
|  | VkPipelineCache                             pipelineCache, | 
|  | u32                                         createInfoCount, | 
|  | const VkRayTracingPipelineCreateInfoNV*     pCreateInfos, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkPipeline*                                 pPipelines) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | cmd VkResult vkGetRaytracingShaderHandlesNV( | 
|  | VkDevice                                    device, | 
|  | VkPipeline                                  pipeline, | 
|  | u32                                         firstGroup, | 
|  | u32                                         groupCount, | 
|  | platform.size_t                             dataSize, | 
|  | void*                                       pData) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | cmd VkResult vkGetAccelerationStructureHandleNV( | 
|  | VkDevice                                    device, | 
|  | VkAccelerationStructureNV                   accelerationStructure, | 
|  | platform.size_t                             dataSize, | 
|  | void*                                       pData) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | cmd void vkCmdWriteAccelerationStructurePropertiesNV( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         accelerationStructureCount, | 
|  | const VkAccelerationStructureNV*            pAccelerationStructures, | 
|  | VkQueryType                                 queryType, | 
|  | VkQueryPool                                 queryPool, | 
|  | u32                                         firstQuery) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_ray_tracing") // 166 | 
|  | cmd VkResult vkCompileDeferredNV( | 
|  | VkDevice                                    device, | 
|  | VkPipeline                                  pipeline, | 
|  | u32                                         shader) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_maintenance3") // 169 | 
|  | cmd void vkGetDescriptorSetLayoutSupportKHR( | 
|  | VkDevice                                    device, | 
|  | const VkDescriptorSetLayoutCreateInfo*      pCreateInfo, | 
|  | VkDescriptorSetLayoutSupportKHR*            pSupport) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_draw_indirect_count") // 170 | 
|  | cmd void vkCmdDrawIndirectCountKHR( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkBuffer                                    buffer, | 
|  | VkDeviceSize                                offset, | 
|  | VkBuffer                                    countBuffer, | 
|  | VkDeviceSize                                countBufferOffset, | 
|  | u32                                         maxDrawCount, | 
|  | u32                                         stride) { | 
|  | } | 
|  |  | 
|  | @extension("VK_KHR_draw_indirect_count") // 170 | 
|  | cmd void vkCmdDrawIndexedIndirectCountKHR( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkBuffer                                    buffer, | 
|  | VkDeviceSize                                offset, | 
|  | VkBuffer                                    countBuffer, | 
|  | VkDeviceSize                                countBufferOffset, | 
|  | u32                                         maxDrawCount, | 
|  | u32                                         stride) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_external_memory_host") // 179 | 
|  | cmd VkResult vkGetMemoryHostPointerPropertiesEXT( | 
|  | VkDevice                                    device, | 
|  | VkExternalMemoryHandleTypeFlagBits          handleType, | 
|  | const void*                                 pHostPointer, | 
|  | VkMemoryHostPointerPropertiesEXT*           pMemoryHostPointerProperties) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_AMD_buffer_marker") // 180 | 
|  | cmd void vkCmdWriteBufferMarkerAMD( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkPipelineStageFlagBits                     pipelineStage, | 
|  | VkBuffer                                    dstBuffer, | 
|  | VkDeviceSize                                dstOffset, | 
|  | u32                                         marker) { | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_calibrated_timestamps") // 185 | 
|  | cmd VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( | 
|  | VkPhysicalDevice                            physicalDevice, | 
|  | u32*                                        pTimeDomainCount, | 
|  | VkTimeDomainEXT*                            pTimeDomains) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_EXT_calibrated_timestamps") // 185 | 
|  | cmd VkResult vkGetCalibratedTimestampsEXT( | 
|  | VkDevice                                    device, | 
|  | u32                                         timestampCount, | 
|  | const VkCalibratedTimestampInfoEXT*         pTimestampInfos, | 
|  | u64*                                        pTimestamps, | 
|  | u64*                                        pMaxDeviation) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_mesh_shader") // 203 | 
|  | cmd void vkCmdDrawMeshTasksNV( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         taskCount, | 
|  | u32                                         firstTask) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_mesh_shader") // 203 | 
|  | cmd void vkCmdDrawMeshTasksIndirectNV( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkBuffer                                    buffer, | 
|  | VkDeviceSize                                offset, | 
|  | u32                                         drawCount, | 
|  | u32                                         stride) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_mesh_shader") // 203 | 
|  | cmd void vkCmdDrawMeshTasksIndirectCountNV( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | VkBuffer                                    buffer, | 
|  | VkDeviceSize                                offset, | 
|  | VkBuffer                                    countBuffer, | 
|  | VkDeviceSize                                countBufferOffset, | 
|  | u32                                         maxDrawCount, | 
|  | u32                                         stride) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_scissor_exclusive") // 206 | 
|  | cmd void vkCmdSetExclusiveScissorNV( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | u32                                         firstExclusiveScissor, | 
|  | u32                                         exclusiveScissorCount, | 
|  | const VkRect2D*                             pExclusiveScissors) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_device_diagnostic_checkpoints") // 207 | 
|  | cmd void vkCmdSetCheckpointNV( | 
|  | VkCommandBuffer                             commandBuffer, | 
|  | const void*                                 pCheckpointMarker) { | 
|  | } | 
|  |  | 
|  | @extension("VK_NV_device_diagnostic_checkpoints") // 207 | 
|  | cmd void vkGetQueueCheckpointDataNV( | 
|  | VkQueue                                     queue, | 
|  | u32*                                        pCheckpointDataCount, | 
|  | VkCheckpointDataNV*                         pCheckpointData) { | 
|  | } | 
|  |  | 
|  | @extension("VK_FUCHSIA_imagepipe_surface") // 215 | 
|  | cmd VkResult vkCreateImagePipeSurfaceFUCHSIA( | 
|  | VkInstance                                  instance, | 
|  | const VkImagePipeSurfaceCreateInfoFUCHSIA*  pCreateInfo, | 
|  | const VkAllocationCallbacks*                pAllocator, | 
|  | VkSurfaceKHR*                               pSurface) { | 
|  | return ? | 
|  | } | 
|  |  | 
|  |  | 
|  | //////////////// | 
|  | // Validation // | 
|  | //////////////// | 
|  |  | 
|  | extern void validate(string layerName, bool condition, string message) | 
|  |  | 
|  |  | 
|  | ///////////////////////////// | 
|  | // Internal State Tracking // | 
|  | ///////////////////////////// | 
|  |  | 
|  | StateObject State | 
|  |  | 
|  | @internal class StateObject { | 
|  | // Dispatchable objects. | 
|  | map!(VkInstance,       ref!InstanceObject)       Instances | 
|  | map!(VkPhysicalDevice, ref!PhysicalDeviceObject) PhysicalDevices | 
|  | map!(VkDevice,         ref!DeviceObject)         Devices | 
|  | map!(VkQueue,          ref!QueueObject)          Queues | 
|  | map!(VkCommandBuffer,  ref!CommandBufferObject)  CommandBuffers | 
|  |  | 
|  | // Non-dispatchable objects. | 
|  | map!(VkDeviceMemory,             ref!DeviceMemoryObject)             DeviceMemories | 
|  | map!(VkBuffer,                   ref!BufferObject)                   Buffers | 
|  | map!(VkBufferView,               ref!BufferViewObject)               BufferViews | 
|  | map!(VkImage,                    ref!ImageObject)                    Images | 
|  | map!(VkImageView,                ref!ImageViewObject)                ImageViews | 
|  | map!(VkShaderModule,             ref!ShaderModuleObject)             ShaderModules | 
|  | map!(VkPipeline,                 ref!PipelineObject)                 Pipelines | 
|  | map!(VkPipelineLayout,           ref!PipelineLayoutObject)           PipelineLayouts | 
|  | map!(VkSampler,                  ref!SamplerObject)                  Samplers | 
|  | map!(VkDescriptorSet,            ref!DescriptorSetObject)            DescriptorSets | 
|  | map!(VkDescriptorSetLayout,      ref!DescriptorSetLayoutObject)      DescriptorSetLayouts | 
|  | map!(VkDescriptorPool,           ref!DescriptorPoolObject)           DescriptorPools | 
|  | map!(VkFence,                    ref!FenceObject)                    Fences | 
|  | map!(VkSemaphore,                ref!SemaphoreObject)                Semaphores | 
|  | map!(VkEvent,                    ref!EventObject)                    Events | 
|  | map!(VkQueryPool,                ref!QueryPoolObject)                QueryPools | 
|  | map!(VkFramebuffer,              ref!FramebufferObject)              Framebuffers | 
|  | map!(VkRenderPass,               ref!RenderPassObject)               RenderPasses | 
|  | map!(VkPipelineCache,            ref!PipelineCacheObject)            PipelineCaches | 
|  | map!(VkCommandPool,              ref!CommandPoolObject)              CommandPools | 
|  | map!(VkSurfaceKHR,               ref!SurfaceObject)                  Surfaces | 
|  | map!(VkSwapchainKHR,             ref!SwapchainObject)                Swapchains | 
|  | } | 
|  |  | 
|  | @internal class InstanceObject { | 
|  | } | 
|  |  | 
|  | @internal class PhysicalDeviceObject { | 
|  | VkInstance instance | 
|  | } | 
|  |  | 
|  | @internal class DeviceObject { | 
|  | VkPhysicalDevice physicalDevice | 
|  | } | 
|  |  | 
|  | @internal class QueueObject { | 
|  | VkDevice      device | 
|  | VkQueueFlags  flags | 
|  | } | 
|  |  | 
|  | @internal class CommandBufferObject { | 
|  | VkDevice                  device | 
|  | map!(u64, VkDeviceMemory) boundObjects | 
|  | VkQueueFlags              queueFlags | 
|  | } | 
|  |  | 
|  | @internal class DeviceMemoryObject { | 
|  | VkDevice                                device | 
|  | VkDeviceSize                            allocationSize | 
|  | map!(u64, VkDeviceSize)                 boundObjects | 
|  | map!(VkCommandBuffer, VkCommandBuffer)  boundCommandBuffers | 
|  | } | 
|  |  | 
|  | @internal class BufferObject { | 
|  | VkDevice              device | 
|  | VkDeviceMemory        memory | 
|  | VkDeviceSize          memoryOffset | 
|  | } | 
|  |  | 
|  | @internal class BufferViewObject { | 
|  | VkDevice      device | 
|  | VkBuffer      buffer | 
|  | } | 
|  |  | 
|  | @internal class ImageObject { | 
|  | VkDevice              device | 
|  | VkDeviceMemory        memory | 
|  | VkDeviceSize          memoryOffset | 
|  | } | 
|  |  | 
|  | @internal class ImageViewObject { | 
|  | VkDevice      device | 
|  | VkImage       image | 
|  | } | 
|  |  | 
|  | @internal class ShaderObject { | 
|  | VkDevice      device | 
|  | } | 
|  |  | 
|  | @internal class ShaderModuleObject { | 
|  | VkDevice      device | 
|  | } | 
|  |  | 
|  | @internal class PipelineObject { | 
|  | VkDevice      device | 
|  | } | 
|  |  | 
|  | @internal class PipelineLayoutObject { | 
|  | VkDevice      device | 
|  | } | 
|  |  | 
|  | @internal class SamplerObject { | 
|  | VkDevice      device | 
|  | } | 
|  |  | 
|  | @internal class DescriptorSetObject { | 
|  | VkDevice      device | 
|  | } | 
|  |  | 
|  | @internal class DescriptorSetLayoutObject { | 
|  | VkDevice      device | 
|  | } | 
|  |  | 
|  | @internal class DescriptorPoolObject { | 
|  | VkDevice      device | 
|  | } | 
|  |  | 
|  | @internal class FenceObject { | 
|  | VkDevice      device | 
|  | bool          signaled | 
|  | } | 
|  |  | 
|  | @internal class SemaphoreObject { | 
|  | VkDevice      device | 
|  | } | 
|  |  | 
|  | @internal class EventObject { | 
|  | VkDevice      device | 
|  | } | 
|  |  | 
|  | @internal class QueryPoolObject { | 
|  | VkDevice      device | 
|  | } | 
|  |  | 
|  | @internal class FramebufferObject { | 
|  | VkDevice      device | 
|  | } | 
|  |  | 
|  | @internal class RenderPassObject { | 
|  | VkDevice      device | 
|  | } | 
|  |  | 
|  | @internal class PipelineCacheObject { | 
|  | VkDevice      device | 
|  | } | 
|  |  | 
|  | @internal class CommandPoolObject { | 
|  | VkDevice      device | 
|  | } | 
|  |  | 
|  | @internal class SurfaceObject { | 
|  | VkInstance    instance | 
|  | } | 
|  |  | 
|  | @internal class SwapchainObject { | 
|  | VkDevice      device | 
|  | } | 
|  |  | 
|  | macro ref!InstanceObject GetInstance(VkInstance instance) { | 
|  | assert(instance in State.Instances) | 
|  | return State.Instances[instance] | 
|  | } | 
|  |  | 
|  | macro ref!PhysicalDeviceObject GetPhysicalDevice(VkPhysicalDevice physicalDevice) { | 
|  | assert(physicalDevice in State.PhysicalDevices) | 
|  | return State.PhysicalDevices[physicalDevice] | 
|  | } | 
|  |  | 
|  | macro ref!DeviceObject GetDevice(VkDevice device) { | 
|  | assert(device in State.Devices) | 
|  | return State.Devices[device] | 
|  | } | 
|  |  | 
|  | macro ref!QueueObject GetQueue(VkQueue queue) { | 
|  | assert(queue in State.Queues) | 
|  | return State.Queues[queue] | 
|  | } | 
|  |  | 
|  | macro ref!CommandBufferObject GetCommandBuffer(VkCommandBuffer commandBuffer) { | 
|  | assert(commandBuffer in State.CommandBuffers) | 
|  | return State.CommandBuffers[commandBuffer] | 
|  | } | 
|  |  | 
|  | macro ref!DeviceMemoryObject GetDeviceMemory(VkDeviceMemory memory) { | 
|  | assert(memory in State.DeviceMemories) | 
|  | return State.DeviceMemories[memory] | 
|  | } | 
|  |  | 
|  | macro ref!BufferObject GetBuffer(VkBuffer buffer) { | 
|  | assert(buffer in State.Buffers) | 
|  | return State.Buffers[buffer] | 
|  | } | 
|  |  | 
|  | macro ref!BufferViewObject GetBufferView(VkBufferView bufferView) { | 
|  | assert(bufferView in State.BufferViews) | 
|  | return State.BufferViews[bufferView] | 
|  | } | 
|  |  | 
|  | macro ref!ImageObject GetImage(VkImage image) { | 
|  | assert(image in State.Images) | 
|  | return State.Images[image] | 
|  | } | 
|  |  | 
|  | macro ref!ImageViewObject GetImageView(VkImageView imageView) { | 
|  | assert(imageView in State.ImageViews) | 
|  | return State.ImageViews[imageView] | 
|  | } | 
|  |  | 
|  | macro ref!ShaderModuleObject GetShaderModule(VkShaderModule shaderModule) { | 
|  | assert(shaderModule in State.ShaderModules) | 
|  | return State.ShaderModules[shaderModule] | 
|  | } | 
|  |  | 
|  | macro ref!PipelineObject GetPipeline(VkPipeline pipeline) { | 
|  | assert(pipeline in State.Pipelines) | 
|  | return State.Pipelines[pipeline] | 
|  | } | 
|  |  | 
|  | macro ref!PipelineLayoutObject GetPipelineLayout(VkPipelineLayout pipelineLayout) { | 
|  | assert(pipelineLayout in State.PipelineLayouts) | 
|  | return State.PipelineLayouts[pipelineLayout] | 
|  | } | 
|  |  | 
|  | macro ref!SamplerObject GetSampler(VkSampler sampler) { | 
|  | assert(sampler in State.Samplers) | 
|  | return State.Samplers[sampler] | 
|  | } | 
|  |  | 
|  | macro ref!DescriptorSetObject GetDescriptorSet(VkDescriptorSet descriptorSet) { | 
|  | assert(descriptorSet in State.DescriptorSets) | 
|  | return State.DescriptorSets[descriptorSet] | 
|  | } | 
|  |  | 
|  | macro ref!DescriptorSetLayoutObject GetDescriptorSetLayout(VkDescriptorSetLayout descriptorSetLayout) { | 
|  | assert(descriptorSetLayout in State.DescriptorSetLayouts) | 
|  | return State.DescriptorSetLayouts[descriptorSetLayout] | 
|  | } | 
|  |  | 
|  | macro ref!DescriptorPoolObject GetDescriptorPool(VkDescriptorPool descriptorPool) { | 
|  | assert(descriptorPool in State.DescriptorPools) | 
|  | return State.DescriptorPools[descriptorPool] | 
|  | } | 
|  |  | 
|  | macro ref!FenceObject GetFence(VkFence fence) { | 
|  | assert(fence in State.Fences) | 
|  | return State.Fences[fence] | 
|  | } | 
|  |  | 
|  | macro ref!SemaphoreObject GetSemaphore(VkSemaphore semaphore) { | 
|  | assert(semaphore in State.Semaphores) | 
|  | return State.Semaphores[semaphore] | 
|  | } | 
|  |  | 
|  | macro ref!EventObject GetEvent(VkEvent event) { | 
|  | assert(event in State.Events) | 
|  | return State.Events[event] | 
|  | } | 
|  |  | 
|  | macro ref!QueryPoolObject GetQueryPool(VkQueryPool queryPool) { | 
|  | assert(queryPool in State.QueryPools) | 
|  | return State.QueryPools[queryPool] | 
|  | } | 
|  |  | 
|  | macro ref!FramebufferObject GetFramebuffer(VkFramebuffer framebuffer) { | 
|  | assert(framebuffer in State.Framebuffers) | 
|  | return State.Framebuffers[framebuffer] | 
|  | } | 
|  |  | 
|  | macro ref!RenderPassObject GetRenderPass(VkRenderPass renderPass) { | 
|  | assert(renderPass in State.RenderPasses) | 
|  | return State.RenderPasses[renderPass] | 
|  | } | 
|  |  | 
|  | macro ref!PipelineCacheObject GetPipelineCache(VkPipelineCache pipelineCache) { | 
|  | assert(pipelineCache in State.PipelineCaches) | 
|  | return State.PipelineCaches[pipelineCache] | 
|  | } | 
|  |  | 
|  | macro ref!CommandPoolObject GetCommandPool(VkCommandPool commandPool) { | 
|  | assert(commandPool in State.CommandPools) | 
|  | return State.CommandPools[commandPool] | 
|  | } | 
|  |  | 
|  | macro ref!SurfaceObject GetSurface(VkSurfaceKHR surface) { | 
|  | assert(surface in State.Surfaces) | 
|  | return State.Surfaces[surface] | 
|  | } | 
|  |  | 
|  | macro ref!SwapchainObject GetSwapchain(VkSwapchainKHR swapchain) { | 
|  | assert(swapchain in State.Swapchains) | 
|  | return State.Swapchains[swapchain] | 
|  | } | 
|  |  | 
|  | macro VkQueueFlags AddQueueFlag(VkQueueFlags flags, VkQueueFlagBits bit) { | 
|  | return as!VkQueueFlags(as!u32(flags) | as!u32(bit)) | 
|  | } |