| // 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     8 | 
 | @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)) | 
 | } |