From 6eacea03ea082aca888a6e922fc13912c0f61c2f Mon Sep 17 00:00:00 2001 From: Jacob Lifshay Date: Fri, 28 Sep 2018 02:36:34 -0700 Subject: [PATCH] working on implementing vulkan functions --- Cargo.toml | 9 + run.sh | 5 + vulkan-driver/Cargo.toml | 5 + vulkan-driver/build.rs | 173 +- vulkan-driver/src/api_impl.rs | 4096 +++++++++++++++++++++++++++----- vulkan-driver/src/handle.rs | 93 +- vulkan-driver/src/lib.rs | 13 +- vulkan-driver/vulkan-wrapper.h | 4 +- 8 files changed, 3693 insertions(+), 705 deletions(-) create mode 100755 run.sh diff --git a/Cargo.toml b/Cargo.toml index 54e9f3e..d49f2bc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,3 +2,12 @@ members = [ "vulkan-driver", ] + +[profile.dev] +panic = "abort" + +[profile.release] +panic = "abort" + +[profile.bench] +panic = "abort" diff --git a/run.sh b/run.sh new file mode 100755 index 0000000..31703a9 --- /dev/null +++ b/run.sh @@ -0,0 +1,5 @@ +#!/bin/sh +set -e +cargo build +export VK_ICD_FILENAMES="$(realpath "$(ls --sort=time /home/jacob/projects/kazan/target/debug/build/vulkan-driver-*/out/kazan_driver.json | head -n 1)")" +exec "$@" diff --git a/vulkan-driver/Cargo.toml b/vulkan-driver/Cargo.toml index cad14ee..5d9abff 100644 --- a/vulkan-driver/Cargo.toml +++ b/vulkan-driver/Cargo.toml @@ -4,8 +4,13 @@ version = "0.1.0" authors = ["Jacob Lifshay "] [lib] +name = "kazan_driver" crate-type = ["cdylib"] +[dependencies] +enum-map = "0.4" +uuid = {version = "0.7", features = ["v5"]} + [target.'cfg(unix)'.dependencies] xcb = "0.8" diff --git a/vulkan-driver/build.rs b/vulkan-driver/build.rs index 7dc1379..7c7fc09 100644 --- a/vulkan-driver/build.rs +++ b/vulkan-driver/build.rs @@ -2,12 +2,10 @@ extern crate bindgen; extern crate regex; extern crate xmltree; use std::env; -use std::fmt; use std::fs; use std::io; -use std::io::Write; use std::ops::Deref; -use std::path::PathBuf; +use std::path::{Path, PathBuf}; use std::str; use xmltree::Element; @@ -28,7 +26,8 @@ VKAPI_ATTR void VKAPI_CALL detect_fn(); } #endif "#, - ).clang_arg("-target") + ) + .clang_arg("-target") .clang_arg(env::var("TARGET").unwrap()) .clang_arg(format!("-I{}", VULKAN_HEADERS_INCLUDE_PATH)) .whitelist_function("detect_fn") @@ -46,35 +45,6 @@ VKAPI_ATTR void VKAPI_CALL detect_fn(); } } -struct GeneratedCode(String); - -impl GeneratedCode { - fn new() -> Self { - GeneratedCode(String::new()) - } -} - -impl fmt::Display for GeneratedCode { - fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - const END_OF_LINE: &'static str = "\n"; - let mut s: &str = &self.0; - if f.alternate() && s.ends_with(END_OF_LINE) { - s = &s[..s.len() - END_OF_LINE.len()]; - } - f.write_str(s) - } -} - -impl io::Write for GeneratedCode { - fn write(&mut self, buf: &[u8]) -> io::Result { - self.0 += str::from_utf8(buf).unwrap(); - Ok(buf.len()) - } - fn flush(&mut self) -> io::Result<()> { - Ok(()) - } -} - fn main() -> io::Result<()> { let vulkan_wrapper_header_path = "vulkan-wrapper.h"; let vulkan_vk_xml_path = "../external/Vulkan-Headers/registry/vk.xml"; @@ -84,6 +54,24 @@ fn main() -> io::Result<()> { let parsed_xml = Element::parse(fs::File::open(&PathBuf::from(vulkan_vk_xml_path))?) .map_err(|v| io::Error::new(io::ErrorKind::Other, format!("{}", v)))?; let types = parsed_xml.get_child("types").unwrap(); + let header_version: u32 = types + .children + .iter() + .filter_map(|v| { + if v.get_child("name") + .and_then(|v| v.text.as_ref().map(Deref::deref)) + == Some("VK_HEADER_VERSION") + { + Some(v.text.as_ref().unwrap()) + } else { + None + } + }) + .next() + .unwrap() + .trim() + .parse() + .unwrap(); let vulkan_calling_convention = detect_vulkan_calling_convention()?; let match_calling_convention_regex = regex::Regex::new(r#"extern "([^"]+)""#).unwrap(); let mut builder = bindgen::builder() @@ -105,6 +93,9 @@ fn main() -> io::Result<()> { } else { t.get_child("name").unwrap().text.as_ref().unwrap() }; + if name.ends_with("NVX") { + continue; + } builder = builder .blacklist_type(name) .blacklist_type(format!("{}_T", name)); @@ -113,7 +104,7 @@ fn main() -> io::Result<()> { .whitelist_type("PFN_.*") .blacklist_type("^xcb_.*") .derive_debug(false) - .ignore_functions() + .blacklist_function(".*") .constified_enum(".*"); let mut code = builder .generate() @@ -131,87 +122,49 @@ fn main() -> io::Result<()> { eprintln!("vulkan_calling_convention: {:?}", vulkan_calling_convention); panic!("unhandled non-vulkan calling convention"); } - }).into_owned(); + }) + .into_owned(); fs::write( PathBuf::from(env::var("OUT_DIR").unwrap()).join("vulkan-types.rs"), code, )?; - let mut extensions_enum = GeneratedCode::new(); - let mut extensions_struct = GeneratedCode::new(); - let mut extensions_default_init = GeneratedCode::new(); - let mut extensions_get_dependencies = GeneratedCode::new(); - for extension in parsed_xml.get_child("extensions").unwrap().children.iter() { - match &**extension.attributes.get("supported").unwrap() { - "vulkan" => {} - "disabled" => continue, - supported => panic!("unknown supported field: {:?}", supported), - } - let name = extension.attributes.get("name").unwrap(); - let mut requires = extension - .attributes - .get("requires") - .map(Deref::deref) - .unwrap_or("") - .split(',') - .filter(|v| v != &"") - .peekable(); - if requires.peek().is_some() { - writeln!(extensions_get_dependencies, " {} => {{", name); - for require in requires { - writeln!( - extensions_get_dependencies, - " retval.{} = true;", - require - ); - } - writeln!(extensions_get_dependencies, " }}"); - } else { - writeln!(extensions_get_dependencies, " {} => {{}}", name); - } - writeln!(extensions_enum, " {},", name)?; - writeln!(extensions_struct, " {}: bool,", name)?; - writeln!(extensions_default_init, " {}: false,", name)?; - } - let mut code = io::Cursor::new(Vec::new()); - writeln!( - code, - r"/* automatically generated code */ - -#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)] -pub enum Extension {{ -{extensions_enum:#} -}} - -#[derive(Debug, Copy, Clone, Eq, PartialEq, Hash)] -pub struct Extensions {{ -{extensions_struct:#} -}} - -impl Default for Extensions {{ - fn default() -> Self {{ - Self {{ -{extensions_default_init:#} - }} - }} -}} - -impl Extension {{ - pub fn get_dependencies(self) -> Extensions {{ - let mut retval = Extensions::default(); - match self {{ -{extensions_get_dependencies:#} - }} - retval - }} -}}", - extensions_enum = extensions_enum, - extensions_struct = extensions_struct, - extensions_default_init = extensions_default_init, - extensions_get_dependencies = extensions_get_dependencies - )?; + let driver_name_prefix = if cfg!(unix) { + "lib" + } else if cfg!(target_os = "windows") { + "" + } else { + unimplemented!() + }; + let driver_name_suffix = if cfg!(any(target_os = "linux", target_os = "android")) { + ".so" + } else if cfg!(any(target_os = "macos", target_os = "ios")) { + ".dylib" + } else if cfg!(target_os = "windows") { + ".dll" + } else { + unimplemented!() + }; + let driver_name = format!("{}kazan_driver{}", driver_name_prefix, driver_name_suffix); fs::write( - PathBuf::from(env::var("OUT_DIR").unwrap()).join("vulkan-properties.rs"), - code.into_inner(), + PathBuf::from(env::var("OUT_DIR").unwrap()).join("kazan_driver.json"), + format!( + r#"{{ + "file_format_version": "1.0.0", + "ICD": {{ + "library_path": "{}", + "api_version": "1.1.{}" + }} +}}"#, + PathBuf::from(env::var("OUT_DIR").unwrap()) + .parent() + .and_then(Path::parent) + .and_then(Path::parent) + .unwrap_or_else(|| Path::new("")) + .join(driver_name) + .to_str() + .unwrap(), + header_version + ), )?; Ok(()) } diff --git a/vulkan-driver/src/api_impl.rs b/vulkan-driver/src/api_impl.rs index c7504f9..ec687d3 100644 --- a/vulkan-driver/src/api_impl.rs +++ b/vulkan-driver/src/api_impl.rs @@ -1,321 +1,229 @@ +#![allow(dead_code)] use api; -use handle::Handle; +use enum_map::EnumMap; +use handle::{Handle, OwnedHandle, SharedHandle}; +use std::borrow::Borrow; use std::ffi::CStr; +use std::iter; +use std::mem; +use std::ops::*; use std::os::raw::c_char; +use std::slice; +use std::str::FromStr; +use uuid; +use xcb; +use KAZAN_DEVICE_NAME; +use KAZAN_VENDOR_ID; +use MIN_MEMORY_MAP_ALIGNMENT; -#[derive(Copy, Clone)] -enum ProcAddressScope { +fn copy_str_to_char_array(dest: &mut [c_char], src: &str) { + assert!(dest.len() >= src.len() + 1); + let src = src.as_bytes(); + for i in 0..src.len() { + dest[i] = src[i] as c_char; + } + for i in src.len()..dest.len() { + dest[i] = 0; + } +} + +#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug, Enum)] +#[repr(u32)] +#[allow(non_camel_case_types)] +pub enum Extension { + VK_KHR_surface, +} + +#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] +pub enum ExtensionScope { Device, Instance, - Global, } -impl ProcAddressScope { - fn global(self) -> bool { - match self { - ProcAddressScope::Device | ProcAddressScope::Instance | ProcAddressScope::Global => { - true +impl Extension { + pub fn get_required_extensions(self) -> Extensions { + Extensions(match self { + Extension::VK_KHR_surface => enum_map!{_ => false}, + }) + } + pub fn get_recursively_required_extensions(self) -> Extensions { + let mut retval = self.get_required_extensions(); + let mut worklist: EnumMap = enum_map!{_ => self}; + let worklist = worklist.as_mut_slice(); + let mut worklist_size = 1; + while worklist_size > 0 { + worklist_size -= 1; + let extension = worklist[worklist_size]; + retval[extension] = true; + for (extension, &v) in extension.get_required_extensions().iter() { + if v && !retval[extension] { + worklist[worklist_size] = extension; + worklist_size += 1; + } + } + } + retval + } + pub fn get_name(self) -> &'static str { + macro_rules! name { + ($($name:ident),*) => { + match self { + $(Extension::$name => stringify!($name),)* + } } } + name!(VK_KHR_surface) } - fn instance(self) -> bool { + pub fn get_spec_version(self) -> u32 { match self { - ProcAddressScope::Device | ProcAddressScope::Instance => true, - _ => false, + Extension::VK_KHR_surface => api::VK_KHR_SURFACE_SPEC_VERSION, } } - fn device(self) -> bool { + pub fn get_properties(self) -> api::VkExtensionProperties { + let mut retval = api::VkExtensionProperties { + extensionName: [0; api::VK_MAX_EXTENSION_NAME_SIZE as usize], + specVersion: self.get_spec_version(), + }; + copy_str_to_char_array(&mut retval.extensionName, self.get_name()); + retval + } + pub fn get_scope(self) -> ExtensionScope { match self { - ProcAddressScope::Device => true, - _ => false, + Extension::VK_KHR_surface => ExtensionScope::Instance, + } + } +} + +impl FromStr for Extension { + type Err = (); + fn from_str(s: &str) -> Result { + for (i, _) in Extensions::default().iter() { + if s == i.get_name() { + return Ok(i); + } } + Err(()) } } #[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)] -#[repr(i32)] -pub enum Extension { - VK_VERSION_1_0 = -1, - VK_VERSION_1_1 = -2, -} - -struct Extensions { - VK_VERSION_1_0: bool, - VK_VERSION_1_1: bool, - VK_AMD_buffer_marker: bool, - VK_AMD_draw_indirect_count: bool, - VK_AMD_gcn_shader: bool, - VK_AMD_gpu_shader_half_float: bool, - VK_AMD_gpu_shader_int16: bool, - VK_AMD_mixed_attachment_samples: bool, - VK_AMD_negative_viewport_height: bool, - VK_AMD_rasterization_order: bool, - VK_AMD_shader_ballot: bool, - VK_AMD_shader_core_properties: bool, - VK_AMD_shader_explicit_vertex_parameter: bool, - VK_AMD_shader_fragment_mask: bool, - VK_AMD_shader_image_load_store_lod: bool, - VK_AMD_shader_info: bool, - VK_AMD_shader_trinary_minmax: bool, - VK_AMD_texture_gather_bias_lod: bool, - VK_ANDROID_external_memory_android_hardware_buffer: bool, - VK_EXT_acquire_xlib_display: bool, - VK_EXT_astc_decode_mode: bool, - VK_EXT_blend_operation_advanced: bool, - VK_EXT_conditional_rendering: bool, - VK_EXT_conservative_rasterization: bool, - VK_EXT_debug_marker: bool, - VK_EXT_debug_report: bool, - VK_EXT_debug_utils: bool, - VK_EXT_depth_range_unrestricted: bool, - VK_EXT_descriptor_indexing: bool, - VK_EXT_direct_mode_display: bool, - VK_EXT_discard_rectangles: bool, - VK_EXT_display_control: bool, - VK_EXT_display_surface_counter: bool, - VK_EXT_external_memory_dma_buf: bool, - VK_EXT_external_memory_host: bool, - VK_EXT_global_priority: bool, - VK_EXT_hdr_metadata: bool, - VK_EXT_inline_uniform_block: bool, - VK_EXT_post_depth_coverage: bool, - VK_EXT_queue_family_foreign: bool, - VK_EXT_sample_locations: bool, - VK_EXT_sampler_filter_minmax: bool, - VK_EXT_shader_stencil_export: bool, - VK_EXT_shader_subgroup_ballot: bool, - VK_EXT_shader_subgroup_vote: bool, - VK_EXT_shader_viewport_index_layer: bool, - VK_EXT_swapchain_colorspace: bool, - VK_EXT_validation_cache: bool, - VK_EXT_validation_flags: bool, - VK_EXT_vertex_attribute_divisor: bool, - VK_GOOGLE_display_timing: bool, - VK_IMG_filter_cubic: bool, - VK_IMG_format_pvrtc: bool, - VK_KHR_16bit_storage: bool, - VK_KHR_8bit_storage: bool, - VK_KHR_android_surface: bool, - VK_KHR_bind_memory2: bool, - VK_KHR_create_renderpass2: bool, - VK_KHR_dedicated_allocation: bool, - VK_KHR_descriptor_update_template: bool, - VK_KHR_device_group: bool, - VK_KHR_device_group_creation: bool, - VK_KHR_display: bool, - VK_KHR_display_swapchain: bool, - VK_KHR_draw_indirect_count: bool, - VK_KHR_external_fence: bool, - VK_KHR_external_fence_capabilities: bool, - VK_KHR_external_fence_fd: bool, - VK_KHR_external_fence_win32: bool, - VK_KHR_external_memory: bool, - VK_KHR_external_memory_capabilities: bool, - VK_KHR_external_memory_fd: bool, - VK_KHR_external_memory_win32: bool, - VK_KHR_external_semaphore: bool, - VK_KHR_external_semaphore_capabilities: bool, - VK_KHR_external_semaphore_fd: bool, - VK_KHR_external_semaphore_win32: bool, - VK_KHR_get_display_properties2: bool, - VK_KHR_get_memory_requirements2: bool, - VK_KHR_get_physical_device_properties2: bool, - VK_KHR_get_surface_capabilities2: bool, - VK_KHR_image_format_list: bool, - VK_KHR_incremental_present: bool, - VK_KHR_maintenance1: bool, - VK_KHR_maintenance2: bool, - VK_KHR_maintenance3: bool, - VK_KHR_mir_surface: bool, - VK_KHR_multiview: bool, - VK_KHR_push_descriptor: bool, - VK_KHR_relaxed_block_layout: bool, - VK_KHR_sampler_mirror_clamp_to_edge: bool, - VK_KHR_sampler_ycbcr_conversion: bool, - VK_KHR_shader_draw_parameters: bool, - VK_KHR_shared_presentable_image: bool, - VK_KHR_storage_buffer_storage_class: bool, - VK_KHR_surface: bool, - VK_KHR_swapchain: bool, - VK_KHR_variable_pointers: bool, - VK_KHR_vulkan_memory_model: bool, - VK_KHR_wayland_surface: bool, - VK_KHR_win32_keyed_mutex: bool, - VK_KHR_win32_surface: bool, - VK_KHR_xcb_surface: bool, - VK_KHR_xlib_surface: bool, - VK_NV_clip_space_w_scaling: bool, - VK_NV_compute_shader_derivatives: bool, - VK_NV_corner_sampled_image: bool, - VK_NV_dedicated_allocation: bool, - VK_NV_device_diagnostic_checkpoints: bool, - VK_NV_external_memory: bool, - VK_NV_external_memory_capabilities: bool, - VK_NV_external_memory_win32: bool, - VK_NV_fill_rectangle: bool, - VK_NV_fragment_coverage_to_color: bool, - VK_NV_fragment_shader_barycentric: bool, - VK_NV_framebuffer_mixed_samples: bool, - VK_NV_geometry_shader_passthrough: bool, - VK_NV_glsl_shader: bool, - VK_NV_mesh_shader: bool, - VK_NV_representative_fragment_test: bool, - VK_NV_sample_mask_override_coverage: bool, - VK_NV_scissor_exclusive: bool, - VK_NV_shader_image_footprint: bool, - VK_NV_shader_subgroup_partitioned: bool, - VK_NV_shading_rate_image: bool, - VK_NV_viewport_array2: bool, - VK_NV_viewport_swizzle: bool, - VK_NV_win32_keyed_mutex: bool, +pub struct Extensions(EnumMap); + +impl Extensions { + pub fn create_empty() -> Self { + Extensions(enum_map!{_ => false}) + } + pub fn is_empty(&self) -> bool { + self.iter().all(|(_, &v)| !v) + } + pub fn is_full(&self) -> bool { + self.iter().all(|(_, &v)| v) + } + pub fn get_allowed_extensions_from_instance_scope(&self) -> Self { + let mut retval = Extensions::default(); + let instance_extensions = Self::instance_extensions(); + for (extension, value) in retval.iter_mut() { + if extension.get_scope() == ExtensionScope::Instance { + *value = self[extension]; + continue; + } + let required_extensions = + instance_extensions & extension.get_recursively_required_extensions(); + *value = (!*self & required_extensions).is_empty(); + } + retval + } + pub fn instance_extensions() -> Self { + Extensions( + (|extension: Extension| extension.get_scope() == ExtensionScope::Instance).into(), + ) + } + pub fn device_extensions() -> Self { + !Self::instance_extensions() + } } impl Default for Extensions { fn default() -> Self { - Self { - VK_VERSION_1_0: true, - VK_VERSION_1_1: false, - VK_AMD_buffer_marker: false, - VK_AMD_draw_indirect_count: false, - VK_AMD_gcn_shader: false, - VK_AMD_gpu_shader_half_float: false, - VK_AMD_gpu_shader_int16: false, - VK_AMD_mixed_attachment_samples: false, - VK_AMD_negative_viewport_height: false, - VK_AMD_rasterization_order: false, - VK_AMD_shader_ballot: false, - VK_AMD_shader_core_properties: false, - VK_AMD_shader_explicit_vertex_parameter: false, - VK_AMD_shader_fragment_mask: false, - VK_AMD_shader_image_load_store_lod: false, - VK_AMD_shader_info: false, - VK_AMD_shader_trinary_minmax: false, - VK_AMD_texture_gather_bias_lod: false, - VK_ANDROID_external_memory_android_hardware_buffer: false, - VK_EXT_acquire_xlib_display: false, - VK_EXT_astc_decode_mode: false, - VK_EXT_blend_operation_advanced: false, - VK_EXT_conditional_rendering: false, - VK_EXT_conservative_rasterization: false, - VK_EXT_debug_marker: false, - VK_EXT_debug_report: false, - VK_EXT_debug_utils: false, - VK_EXT_depth_range_unrestricted: false, - VK_EXT_descriptor_indexing: false, - VK_EXT_direct_mode_display: false, - VK_EXT_discard_rectangles: false, - VK_EXT_display_control: false, - VK_EXT_display_surface_counter: false, - VK_EXT_external_memory_dma_buf: false, - VK_EXT_external_memory_host: false, - VK_EXT_global_priority: false, - VK_EXT_hdr_metadata: false, - VK_EXT_inline_uniform_block: false, - VK_EXT_post_depth_coverage: false, - VK_EXT_queue_family_foreign: false, - VK_EXT_sample_locations: false, - VK_EXT_sampler_filter_minmax: false, - VK_EXT_shader_stencil_export: false, - VK_EXT_shader_subgroup_ballot: false, - VK_EXT_shader_subgroup_vote: false, - VK_EXT_shader_viewport_index_layer: false, - VK_EXT_swapchain_colorspace: false, - VK_EXT_validation_cache: false, - VK_EXT_validation_flags: false, - VK_EXT_vertex_attribute_divisor: false, - VK_GOOGLE_display_timing: false, - VK_IMG_filter_cubic: false, - VK_IMG_format_pvrtc: false, - VK_KHR_16bit_storage: false, - VK_KHR_8bit_storage: false, - VK_KHR_android_surface: false, - VK_KHR_bind_memory2: false, - VK_KHR_create_renderpass2: false, - VK_KHR_dedicated_allocation: false, - VK_KHR_descriptor_update_template: false, - VK_KHR_device_group: false, - VK_KHR_device_group_creation: false, - VK_KHR_display: false, - VK_KHR_display_swapchain: false, - VK_KHR_draw_indirect_count: false, - VK_KHR_external_fence: false, - VK_KHR_external_fence_capabilities: false, - VK_KHR_external_fence_fd: false, - VK_KHR_external_fence_win32: false, - VK_KHR_external_memory: false, - VK_KHR_external_memory_capabilities: false, - VK_KHR_external_memory_fd: false, - VK_KHR_external_memory_win32: false, - VK_KHR_external_semaphore: false, - VK_KHR_external_semaphore_capabilities: false, - VK_KHR_external_semaphore_fd: false, - VK_KHR_external_semaphore_win32: false, - VK_KHR_get_display_properties2: false, - VK_KHR_get_memory_requirements2: false, - VK_KHR_get_physical_device_properties2: false, - VK_KHR_get_surface_capabilities2: false, - VK_KHR_image_format_list: false, - VK_KHR_incremental_present: false, - VK_KHR_maintenance1: false, - VK_KHR_maintenance2: false, - VK_KHR_maintenance3: false, - VK_KHR_mir_surface: false, - VK_KHR_multiview: false, - VK_KHR_push_descriptor: false, - VK_KHR_relaxed_block_layout: false, - VK_KHR_sampler_mirror_clamp_to_edge: false, - VK_KHR_sampler_ycbcr_conversion: false, - VK_KHR_shader_draw_parameters: false, - VK_KHR_shared_presentable_image: false, - VK_KHR_storage_buffer_storage_class: false, - VK_KHR_surface: false, - VK_KHR_swapchain: false, - VK_KHR_variable_pointers: false, - VK_KHR_vulkan_memory_model: false, - VK_KHR_wayland_surface: false, - VK_KHR_win32_keyed_mutex: false, - VK_KHR_win32_surface: false, - VK_KHR_xcb_surface: false, - VK_KHR_xlib_surface: false, - VK_NV_clip_space_w_scaling: false, - VK_NV_compute_shader_derivatives: false, - VK_NV_corner_sampled_image: false, - VK_NV_dedicated_allocation: false, - VK_NV_device_diagnostic_checkpoints: false, - VK_NV_external_memory: false, - VK_NV_external_memory_capabilities: false, - VK_NV_external_memory_win32: false, - VK_NV_fill_rectangle: false, - VK_NV_fragment_coverage_to_color: false, - VK_NV_fragment_shader_barycentric: false, - VK_NV_framebuffer_mixed_samples: false, - VK_NV_geometry_shader_passthrough: false, - VK_NV_glsl_shader: false, - VK_NV_mesh_shader: false, - VK_NV_representative_fragment_test: false, - VK_NV_sample_mask_override_coverage: false, - VK_NV_scissor_exclusive: false, - VK_NV_shader_image_footprint: false, - VK_NV_shader_subgroup_partitioned: false, - VK_NV_shading_rate_image: false, - VK_NV_viewport_array2: false, - VK_NV_viewport_swizzle: false, - VK_NV_win32_keyed_mutex: false, + Self::create_empty() + } +} + +impl Deref for Extensions { + type Target = EnumMap; + fn deref(&self) -> &Self::Target { + &self.0 + } +} + +impl DerefMut for Extensions { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } +} + +impl BitAnd for Extensions { + type Output = Self; + fn bitand(self, rhs: Self) -> Self { + let mut retval = Self::default(); + for (index, retval) in retval.iter_mut() { + *retval = self[index] & rhs[index]; + } + retval + } +} + +impl BitOr for Extensions { + type Output = Self; + fn bitor(self, rhs: Self) -> Self { + let mut retval = Self::default(); + for (index, retval) in retval.iter_mut() { + *retval = self[index] | rhs[index]; + } + retval + } +} + +impl BitXor for Extensions { + type Output = Self; + fn bitxor(self, rhs: Self) -> Self { + let mut retval = Self::default(); + for (index, retval) in retval.iter_mut() { + *retval = self[index] ^ rhs[index]; + } + retval + } +} + +impl Not for Extensions { + type Output = Self; + fn not(mut self) -> Self { + for v in self.values_mut() { + *v = !*v; } + self } } fn get_proc_address( name: *const c_char, - scope: ProcAddressScope, - extensions: &Extensions, + has_instance_or_device: bool, + extensions: &EnumMap, ) -> api::PFN_vkVoidFunction { let name = unsafe { CStr::from_ptr(name) }.to_str().ok()?; use api::*; use std::mem::transmute; + struct Scope { + global: bool, + instance: bool, + } + let scope = Scope { + global: true, + instance: has_instance_or_device, + }; macro_rules! proc_address { ($name:ident, $pfn_name:ident, $required_scope:ident, $required_extension:expr) => { - if scope.$required_scope() && $required_extension && stringify!($name) == name { + if scope.$required_scope && $required_extension && stringify!($name) == name { let f: $pfn_name = Some($name); return unsafe { transmute(f) }; } @@ -323,319 +231,3339 @@ fn get_proc_address( } #[cfg_attr(rustfmt, rustfmt_skip)] { - proc_address!(vkAcquireNextImage2KHR, PFN_vkAcquireNextImage2KHR, unknown, unknown); - proc_address!(vkAcquireNextImageKHR, PFN_vkAcquireNextImageKHR, unknown, unknown); - proc_address!(vkAllocateCommandBuffers, PFN_vkAllocateCommandBuffers, unknown, unknown); - proc_address!(vkAllocateDescriptorSets, PFN_vkAllocateDescriptorSets, unknown, unknown); - proc_address!(vkAllocateMemory, PFN_vkAllocateMemory, unknown, unknown); - proc_address!(vkBeginCommandBuffer, PFN_vkBeginCommandBuffer, unknown, unknown); - proc_address!(vkBindBufferMemory, PFN_vkBindBufferMemory, unknown, unknown); - proc_address!(vkBindBufferMemory2, PFN_vkBindBufferMemory2, unknown, unknown); - proc_address!(vkBindBufferMemory2KHR, PFN_vkBindBufferMemory2KHR, unknown, unknown); - proc_address!(vkBindImageMemory, PFN_vkBindImageMemory, unknown, unknown); - proc_address!(vkBindImageMemory2, PFN_vkBindImageMemory2, unknown, unknown); - proc_address!(vkBindImageMemory2KHR, PFN_vkBindImageMemory2KHR, unknown, unknown); - proc_address!(vkCmdBeginConditionalRenderingEXT, PFN_vkCmdBeginConditionalRenderingEXT, unknown, unknown); - proc_address!(vkCmdBeginDebugUtilsLabelEXT, PFN_vkCmdBeginDebugUtilsLabelEXT, unknown, unknown); - proc_address!(vkCmdBeginQuery, PFN_vkCmdBeginQuery, unknown, unknown); - proc_address!(vkCmdBeginRenderPass, PFN_vkCmdBeginRenderPass, unknown, unknown); - proc_address!(vkCmdBeginRenderPass2KHR, PFN_vkCmdBeginRenderPass2KHR, unknown, unknown); - proc_address!(vkCmdBindDescriptorSets, PFN_vkCmdBindDescriptorSets, unknown, unknown); - proc_address!(vkCmdBindIndexBuffer, PFN_vkCmdBindIndexBuffer, unknown, unknown); - proc_address!(vkCmdBindPipeline, PFN_vkCmdBindPipeline, unknown, unknown); - proc_address!(vkCmdBindShadingRateImageNV, PFN_vkCmdBindShadingRateImageNV, unknown, unknown); - proc_address!(vkCmdBindVertexBuffers, PFN_vkCmdBindVertexBuffers, unknown, unknown); - proc_address!(vkCmdBlitImage, PFN_vkCmdBlitImage, unknown, unknown); - proc_address!(vkCmdClearAttachments, PFN_vkCmdClearAttachments, unknown, unknown); - proc_address!(vkCmdClearColorImage, PFN_vkCmdClearColorImage, unknown, unknown); - proc_address!(vkCmdClearDepthStencilImage, PFN_vkCmdClearDepthStencilImage, unknown, unknown); - proc_address!(vkCmdCopyBuffer, PFN_vkCmdCopyBuffer, unknown, unknown); - proc_address!(vkCmdCopyBufferToImage, PFN_vkCmdCopyBufferToImage, unknown, unknown); - proc_address!(vkCmdCopyImage, PFN_vkCmdCopyImage, unknown, unknown); - proc_address!(vkCmdCopyImageToBuffer, PFN_vkCmdCopyImageToBuffer, unknown, unknown); - proc_address!(vkCmdCopyQueryPoolResults, PFN_vkCmdCopyQueryPoolResults, unknown, unknown); - proc_address!(vkCmdDebugMarkerBeginEXT, PFN_vkCmdDebugMarkerBeginEXT, unknown, unknown); - proc_address!(vkCmdDebugMarkerEndEXT, PFN_vkCmdDebugMarkerEndEXT, unknown, unknown); - proc_address!(vkCmdDebugMarkerInsertEXT, PFN_vkCmdDebugMarkerInsertEXT, unknown, unknown); - proc_address!(vkCmdDispatch, PFN_vkCmdDispatch, unknown, unknown); - proc_address!(vkCmdDispatchBase, PFN_vkCmdDispatchBase, unknown, unknown); - proc_address!(vkCmdDispatchBaseKHR, PFN_vkCmdDispatchBaseKHR, unknown, unknown); - proc_address!(vkCmdDispatchIndirect, PFN_vkCmdDispatchIndirect, unknown, unknown); - proc_address!(vkCmdDraw, PFN_vkCmdDraw, unknown, unknown); - proc_address!(vkCmdDrawIndexed, PFN_vkCmdDrawIndexed, unknown, unknown); - proc_address!(vkCmdDrawIndexedIndirect, PFN_vkCmdDrawIndexedIndirect, unknown, unknown); - proc_address!(vkCmdDrawIndexedIndirectCountAMD, PFN_vkCmdDrawIndexedIndirectCountAMD, unknown, unknown); - proc_address!(vkCmdDrawIndexedIndirectCountKHR, PFN_vkCmdDrawIndexedIndirectCountKHR, unknown, unknown); - proc_address!(vkCmdDrawIndirect, PFN_vkCmdDrawIndirect, unknown, unknown); - proc_address!(vkCmdDrawIndirectCountAMD, PFN_vkCmdDrawIndirectCountAMD, unknown, unknown); - proc_address!(vkCmdDrawIndirectCountKHR, PFN_vkCmdDrawIndirectCountKHR, unknown, unknown); - proc_address!(vkCmdDrawMeshTasksIndirectCountNV, PFN_vkCmdDrawMeshTasksIndirectCountNV, unknown, unknown); - proc_address!(vkCmdDrawMeshTasksIndirectNV, PFN_vkCmdDrawMeshTasksIndirectNV, unknown, unknown); - proc_address!(vkCmdDrawMeshTasksNV, PFN_vkCmdDrawMeshTasksNV, unknown, unknown); - proc_address!(vkCmdEndConditionalRenderingEXT, PFN_vkCmdEndConditionalRenderingEXT, unknown, unknown); - proc_address!(vkCmdEndDebugUtilsLabelEXT, PFN_vkCmdEndDebugUtilsLabelEXT, unknown, unknown); - proc_address!(vkCmdEndQuery, PFN_vkCmdEndQuery, unknown, unknown); - proc_address!(vkCmdEndRenderPass, PFN_vkCmdEndRenderPass, unknown, unknown); - proc_address!(vkCmdEndRenderPass2KHR, PFN_vkCmdEndRenderPass2KHR, unknown, unknown); - proc_address!(vkCmdExecuteCommands, PFN_vkCmdExecuteCommands, unknown, unknown); - proc_address!(vkCmdFillBuffer, PFN_vkCmdFillBuffer, unknown, unknown); - proc_address!(vkCmdInsertDebugUtilsLabelEXT, PFN_vkCmdInsertDebugUtilsLabelEXT, unknown, unknown); - proc_address!(vkCmdNextSubpass, PFN_vkCmdNextSubpass, unknown, unknown); - proc_address!(vkCmdNextSubpass2KHR, PFN_vkCmdNextSubpass2KHR, unknown, unknown); - proc_address!(vkCmdPipelineBarrier, PFN_vkCmdPipelineBarrier, unknown, unknown); - proc_address!(vkCmdPushConstants, PFN_vkCmdPushConstants, unknown, unknown); - proc_address!(vkCmdPushDescriptorSetKHR, PFN_vkCmdPushDescriptorSetKHR, unknown, unknown); - proc_address!(vkCmdPushDescriptorSetWithTemplateKHR, PFN_vkCmdPushDescriptorSetWithTemplateKHR, unknown, unknown); - proc_address!(vkCmdResetEvent, PFN_vkCmdResetEvent, unknown, unknown); - proc_address!(vkCmdResetQueryPool, PFN_vkCmdResetQueryPool, unknown, unknown); - proc_address!(vkCmdResolveImage, PFN_vkCmdResolveImage, unknown, unknown); - proc_address!(vkCmdSetBlendConstants, PFN_vkCmdSetBlendConstants, unknown, unknown); - proc_address!(vkCmdSetCheckpointNV, PFN_vkCmdSetCheckpointNV, unknown, unknown); - proc_address!(vkCmdSetCoarseSampleOrderNV, PFN_vkCmdSetCoarseSampleOrderNV, unknown, unknown); - proc_address!(vkCmdSetDepthBias, PFN_vkCmdSetDepthBias, unknown, unknown); - proc_address!(vkCmdSetDepthBounds, PFN_vkCmdSetDepthBounds, unknown, unknown); - proc_address!(vkCmdSetDeviceMask, PFN_vkCmdSetDeviceMask, unknown, unknown); - proc_address!(vkCmdSetDeviceMaskKHR, PFN_vkCmdSetDeviceMaskKHR, unknown, unknown); - proc_address!(vkCmdSetDiscardRectangleEXT, PFN_vkCmdSetDiscardRectangleEXT, unknown, unknown); - proc_address!(vkCmdSetEvent, PFN_vkCmdSetEvent, unknown, unknown); - proc_address!(vkCmdSetExclusiveScissorNV, PFN_vkCmdSetExclusiveScissorNV, unknown, unknown); - proc_address!(vkCmdSetLineWidth, PFN_vkCmdSetLineWidth, unknown, unknown); - proc_address!(vkCmdSetSampleLocationsEXT, PFN_vkCmdSetSampleLocationsEXT, unknown, unknown); - proc_address!(vkCmdSetScissor, PFN_vkCmdSetScissor, unknown, unknown); - proc_address!(vkCmdSetStencilCompareMask, PFN_vkCmdSetStencilCompareMask, unknown, unknown); - proc_address!(vkCmdSetStencilReference, PFN_vkCmdSetStencilReference, unknown, unknown); - proc_address!(vkCmdSetStencilWriteMask, PFN_vkCmdSetStencilWriteMask, unknown, unknown); - proc_address!(vkCmdSetViewport, PFN_vkCmdSetViewport, unknown, unknown); - proc_address!(vkCmdSetViewportShadingRatePaletteNV, PFN_vkCmdSetViewportShadingRatePaletteNV, unknown, unknown); - proc_address!(vkCmdSetViewportWScalingNV, PFN_vkCmdSetViewportWScalingNV, unknown, unknown); - proc_address!(vkCmdUpdateBuffer, PFN_vkCmdUpdateBuffer, unknown, unknown); - proc_address!(vkCmdWaitEvents, PFN_vkCmdWaitEvents, unknown, unknown); - proc_address!(vkCmdWriteBufferMarkerAMD, PFN_vkCmdWriteBufferMarkerAMD, unknown, unknown); - proc_address!(vkCmdWriteTimestamp, PFN_vkCmdWriteTimestamp, unknown, unknown); - proc_address!(vkCreateBuffer, PFN_vkCreateBuffer, unknown, unknown); - proc_address!(vkCreateBufferView, PFN_vkCreateBufferView, unknown, unknown); - proc_address!(vkCreateCommandPool, PFN_vkCreateCommandPool, unknown, unknown); - proc_address!(vkCreateComputePipelines, PFN_vkCreateComputePipelines, unknown, unknown); - proc_address!(vkCreateDebugReportCallbackEXT, PFN_vkCreateDebugReportCallbackEXT, unknown, unknown); - proc_address!(vkCreateDebugUtilsMessengerEXT, PFN_vkCreateDebugUtilsMessengerEXT, unknown, unknown); - proc_address!(vkCreateDescriptorPool, PFN_vkCreateDescriptorPool, unknown, unknown); - proc_address!(vkCreateDescriptorSetLayout, PFN_vkCreateDescriptorSetLayout, unknown, unknown); - proc_address!(vkCreateDescriptorUpdateTemplate, PFN_vkCreateDescriptorUpdateTemplate, unknown, unknown); - proc_address!(vkCreateDescriptorUpdateTemplateKHR, PFN_vkCreateDescriptorUpdateTemplateKHR, unknown, unknown); - proc_address!(vkCreateDevice, PFN_vkCreateDevice, unknown, unknown); - proc_address!(vkCreateDisplayModeKHR, PFN_vkCreateDisplayModeKHR, unknown, unknown); - proc_address!(vkCreateDisplayPlaneSurfaceKHR, PFN_vkCreateDisplayPlaneSurfaceKHR, unknown, unknown); - proc_address!(vkCreateEvent, PFN_vkCreateEvent, unknown, unknown); - proc_address!(vkCreateFence, PFN_vkCreateFence, unknown, unknown); - proc_address!(vkCreateFramebuffer, PFN_vkCreateFramebuffer, unknown, unknown); - proc_address!(vkCreateGraphicsPipelines, PFN_vkCreateGraphicsPipelines, unknown, unknown); - proc_address!(vkCreateImage, PFN_vkCreateImage, unknown, unknown); - proc_address!(vkCreateImageView, PFN_vkCreateImageView, unknown, unknown); - proc_address!(vkCreateInstance, PFN_vkCreateInstance, unknown, unknown); - proc_address!(vkCreatePipelineCache, PFN_vkCreatePipelineCache, unknown, unknown); - proc_address!(vkCreatePipelineLayout, PFN_vkCreatePipelineLayout, unknown, unknown); - proc_address!(vkCreateQueryPool, PFN_vkCreateQueryPool, unknown, unknown); - proc_address!(vkCreateRenderPass, PFN_vkCreateRenderPass, unknown, unknown); - proc_address!(vkCreateRenderPass2KHR, PFN_vkCreateRenderPass2KHR, unknown, unknown); - proc_address!(vkCreateSampler, PFN_vkCreateSampler, unknown, unknown); - proc_address!(vkCreateSamplerYcbcrConversion, PFN_vkCreateSamplerYcbcrConversion, unknown, unknown); - proc_address!(vkCreateSamplerYcbcrConversionKHR, PFN_vkCreateSamplerYcbcrConversionKHR, unknown, unknown); - proc_address!(vkCreateSemaphore, PFN_vkCreateSemaphore, unknown, unknown); - proc_address!(vkCreateShaderModule, PFN_vkCreateShaderModule, unknown, unknown); - proc_address!(vkCreateSharedSwapchainsKHR, PFN_vkCreateSharedSwapchainsKHR, unknown, unknown); - proc_address!(vkCreateSwapchainKHR, PFN_vkCreateSwapchainKHR, unknown, unknown); - proc_address!(vkCreateValidationCacheEXT, PFN_vkCreateValidationCacheEXT, unknown, unknown); - proc_address!(vkCreateXcbSurfaceKHR, PFN_vkCreateXcbSurfaceKHR, unknown, unknown); - proc_address!(vkDebugMarkerSetObjectNameEXT, PFN_vkDebugMarkerSetObjectNameEXT, unknown, unknown); - proc_address!(vkDebugMarkerSetObjectTagEXT, PFN_vkDebugMarkerSetObjectTagEXT, unknown, unknown); - proc_address!(vkDebugReportCallbackEXT, PFN_vkDebugReportCallbackEXT, unknown, unknown); - proc_address!(vkDebugReportMessageEXT, PFN_vkDebugReportMessageEXT, unknown, unknown); - proc_address!(vkDebugUtilsMessengerCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT, unknown, unknown); - proc_address!(vkDestroyBuffer, PFN_vkDestroyBuffer, unknown, unknown); - proc_address!(vkDestroyBufferView, PFN_vkDestroyBufferView, unknown, unknown); - proc_address!(vkDestroyCommandPool, PFN_vkDestroyCommandPool, unknown, unknown); - proc_address!(vkDestroyDebugReportCallbackEXT, PFN_vkDestroyDebugReportCallbackEXT, unknown, unknown); - proc_address!(vkDestroyDebugUtilsMessengerEXT, PFN_vkDestroyDebugUtilsMessengerEXT, unknown, unknown); - proc_address!(vkDestroyDescriptorPool, PFN_vkDestroyDescriptorPool, unknown, unknown); - proc_address!(vkDestroyDescriptorSetLayout, PFN_vkDestroyDescriptorSetLayout, unknown, unknown); - proc_address!(vkDestroyDescriptorUpdateTemplate, PFN_vkDestroyDescriptorUpdateTemplate, unknown, unknown); - proc_address!(vkDestroyDescriptorUpdateTemplateKHR, PFN_vkDestroyDescriptorUpdateTemplateKHR, unknown, unknown); - proc_address!(vkDestroyDevice, PFN_vkDestroyDevice, unknown, unknown); - proc_address!(vkDestroyEvent, PFN_vkDestroyEvent, unknown, unknown); - proc_address!(vkDestroyFence, PFN_vkDestroyFence, unknown, unknown); - proc_address!(vkDestroyFramebuffer, PFN_vkDestroyFramebuffer, unknown, unknown); - proc_address!(vkDestroyImage, PFN_vkDestroyImage, unknown, unknown); - proc_address!(vkDestroyImageView, PFN_vkDestroyImageView, unknown, unknown); - proc_address!(vkDestroyInstance, PFN_vkDestroyInstance, unknown, unknown); - proc_address!(vkDestroyPipeline, PFN_vkDestroyPipeline, unknown, unknown); - proc_address!(vkDestroyPipelineCache, PFN_vkDestroyPipelineCache, unknown, unknown); - proc_address!(vkDestroyPipelineLayout, PFN_vkDestroyPipelineLayout, unknown, unknown); - proc_address!(vkDestroyQueryPool, PFN_vkDestroyQueryPool, unknown, unknown); - proc_address!(vkDestroyRenderPass, PFN_vkDestroyRenderPass, unknown, unknown); - proc_address!(vkDestroySampler, PFN_vkDestroySampler, unknown, unknown); - proc_address!(vkDestroySamplerYcbcrConversion, PFN_vkDestroySamplerYcbcrConversion, unknown, unknown); - proc_address!(vkDestroySamplerYcbcrConversionKHR, PFN_vkDestroySamplerYcbcrConversionKHR, unknown, unknown); - proc_address!(vkDestroySemaphore, PFN_vkDestroySemaphore, unknown, unknown); - proc_address!(vkDestroyShaderModule, PFN_vkDestroyShaderModule, unknown, unknown); - proc_address!(vkDestroySurfaceKHR, PFN_vkDestroySurfaceKHR, unknown, unknown); - proc_address!(vkDestroySwapchainKHR, PFN_vkDestroySwapchainKHR, unknown, unknown); - proc_address!(vkDestroyValidationCacheEXT, PFN_vkDestroyValidationCacheEXT, unknown, unknown); - proc_address!(vkDeviceWaitIdle, PFN_vkDeviceWaitIdle, unknown, unknown); - proc_address!(vkDisplayPowerControlEXT, PFN_vkDisplayPowerControlEXT, unknown, unknown); - proc_address!(vkEndCommandBuffer, PFN_vkEndCommandBuffer, unknown, unknown); - proc_address!(vkEnumerateDeviceExtensionProperties, PFN_vkEnumerateDeviceExtensionProperties, unknown, unknown); - proc_address!(vkEnumerateDeviceLayerProperties, PFN_vkEnumerateDeviceLayerProperties, unknown, unknown); - proc_address!(vkEnumerateInstanceExtensionProperties, PFN_vkEnumerateInstanceExtensionProperties, unknown, unknown); - proc_address!(vkEnumerateInstanceLayerProperties, PFN_vkEnumerateInstanceLayerProperties, unknown, unknown); - proc_address!(vkEnumerateInstanceVersion, PFN_vkEnumerateInstanceVersion, unknown, unknown); - proc_address!(vkEnumeratePhysicalDeviceGroups, PFN_vkEnumeratePhysicalDeviceGroups, unknown, unknown); - proc_address!(vkEnumeratePhysicalDeviceGroupsKHR, PFN_vkEnumeratePhysicalDeviceGroupsKHR, unknown, unknown); - proc_address!(vkEnumeratePhysicalDevices, PFN_vkEnumeratePhysicalDevices, unknown, unknown); - proc_address!(vkFlushMappedMemoryRanges, PFN_vkFlushMappedMemoryRanges, unknown, unknown); - proc_address!(vkFreeCommandBuffers, PFN_vkFreeCommandBuffers, unknown, unknown); - proc_address!(vkFreeDescriptorSets, PFN_vkFreeDescriptorSets, unknown, unknown); - proc_address!(vkFreeFunction, PFN_vkFreeFunction, unknown, unknown); - proc_address!(vkFreeMemory, PFN_vkFreeMemory, unknown, unknown); - proc_address!(vkGetBufferMemoryRequirements, PFN_vkGetBufferMemoryRequirements, unknown, unknown); - proc_address!(vkGetBufferMemoryRequirements2, PFN_vkGetBufferMemoryRequirements2, unknown, unknown); - proc_address!(vkGetBufferMemoryRequirements2KHR, PFN_vkGetBufferMemoryRequirements2KHR, unknown, unknown); - proc_address!(vkGetDescriptorSetLayoutSupport, PFN_vkGetDescriptorSetLayoutSupport, unknown, unknown); - proc_address!(vkGetDescriptorSetLayoutSupportKHR, PFN_vkGetDescriptorSetLayoutSupportKHR, unknown, unknown); - proc_address!(vkGetDeviceGroupPeerMemoryFeatures, PFN_vkGetDeviceGroupPeerMemoryFeatures, unknown, unknown); - proc_address!(vkGetDeviceGroupPeerMemoryFeaturesKHR, PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR, unknown, unknown); - proc_address!(vkGetDeviceGroupPresentCapabilitiesKHR, PFN_vkGetDeviceGroupPresentCapabilitiesKHR, unknown, unknown); - proc_address!(vkGetDeviceGroupSurfacePresentModesKHR, PFN_vkGetDeviceGroupSurfacePresentModesKHR, unknown, unknown); - proc_address!(vkGetDeviceMemoryCommitment, PFN_vkGetDeviceMemoryCommitment, unknown, unknown); - proc_address!(vkGetDeviceProcAddr, PFN_vkGetDeviceProcAddr, unknown, unknown); - proc_address!(vkGetDeviceQueue, PFN_vkGetDeviceQueue, unknown, unknown); - proc_address!(vkGetDeviceQueue2, PFN_vkGetDeviceQueue2, unknown, unknown); - proc_address!(vkGetDisplayModeProperties2KHR, PFN_vkGetDisplayModeProperties2KHR, unknown, unknown); - proc_address!(vkGetDisplayModePropertiesKHR, PFN_vkGetDisplayModePropertiesKHR, unknown, unknown); - proc_address!(vkGetDisplayPlaneCapabilities2KHR, PFN_vkGetDisplayPlaneCapabilities2KHR, unknown, unknown); - proc_address!(vkGetDisplayPlaneCapabilitiesKHR, PFN_vkGetDisplayPlaneCapabilitiesKHR, unknown, unknown); - proc_address!(vkGetDisplayPlaneSupportedDisplaysKHR, PFN_vkGetDisplayPlaneSupportedDisplaysKHR, unknown, unknown); - proc_address!(vkGetEventStatus, PFN_vkGetEventStatus, unknown, unknown); - proc_address!(vkGetFenceFdKHR, PFN_vkGetFenceFdKHR, unknown, unknown); - proc_address!(vkGetFenceStatus, PFN_vkGetFenceStatus, unknown, unknown); - proc_address!(vkGetImageMemoryRequirements, PFN_vkGetImageMemoryRequirements, unknown, unknown); - proc_address!(vkGetImageMemoryRequirements2, PFN_vkGetImageMemoryRequirements2, unknown, unknown); - proc_address!(vkGetImageMemoryRequirements2KHR, PFN_vkGetImageMemoryRequirements2KHR, unknown, unknown); - proc_address!(vkGetImageSparseMemoryRequirements, PFN_vkGetImageSparseMemoryRequirements, unknown, unknown); - proc_address!(vkGetImageSparseMemoryRequirements2, PFN_vkGetImageSparseMemoryRequirements2, unknown, unknown); - proc_address!(vkGetImageSparseMemoryRequirements2KHR, PFN_vkGetImageSparseMemoryRequirements2KHR, unknown, unknown); - proc_address!(vkGetImageSubresourceLayout, PFN_vkGetImageSubresourceLayout, unknown, unknown); - proc_address!(vkGetInstanceProcAddr, PFN_vkGetInstanceProcAddr, unknown, unknown); - proc_address!(vkGetMemoryFdKHR, PFN_vkGetMemoryFdKHR, unknown, unknown); - proc_address!(vkGetMemoryFdPropertiesKHR, PFN_vkGetMemoryFdPropertiesKHR, unknown, unknown); - proc_address!(vkGetMemoryHostPointerPropertiesEXT, PFN_vkGetMemoryHostPointerPropertiesEXT, unknown, unknown); - proc_address!(vkGetPastPresentationTimingGOOGLE, PFN_vkGetPastPresentationTimingGOOGLE, unknown, unknown); - proc_address!(vkGetPhysicalDeviceDisplayPlaneProperties2KHR, PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceDisplayPlanePropertiesKHR, PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceDisplayProperties2KHR, PFN_vkGetPhysicalDeviceDisplayProperties2KHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceDisplayPropertiesKHR, PFN_vkGetPhysicalDeviceDisplayPropertiesKHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceExternalBufferProperties, PFN_vkGetPhysicalDeviceExternalBufferProperties, unknown, unknown); - proc_address!(vkGetPhysicalDeviceExternalBufferPropertiesKHR, PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceExternalFenceProperties, PFN_vkGetPhysicalDeviceExternalFenceProperties, unknown, unknown); - proc_address!(vkGetPhysicalDeviceExternalFencePropertiesKHR, PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceExternalImageFormatPropertiesNV, PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, unknown, unknown); - proc_address!(vkGetPhysicalDeviceExternalSemaphoreProperties, PFN_vkGetPhysicalDeviceExternalSemaphoreProperties, unknown, unknown); - proc_address!(vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceFeatures, PFN_vkGetPhysicalDeviceFeatures, unknown, unknown); - proc_address!(vkGetPhysicalDeviceFeatures2, PFN_vkGetPhysicalDeviceFeatures2, unknown, unknown); - proc_address!(vkGetPhysicalDeviceFeatures2KHR, PFN_vkGetPhysicalDeviceFeatures2KHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceFormatProperties, PFN_vkGetPhysicalDeviceFormatProperties, unknown, unknown); - proc_address!(vkGetPhysicalDeviceFormatProperties2, PFN_vkGetPhysicalDeviceFormatProperties2, unknown, unknown); - proc_address!(vkGetPhysicalDeviceFormatProperties2KHR, PFN_vkGetPhysicalDeviceFormatProperties2KHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceImageFormatProperties, PFN_vkGetPhysicalDeviceImageFormatProperties, unknown, unknown); - proc_address!(vkGetPhysicalDeviceImageFormatProperties2, PFN_vkGetPhysicalDeviceImageFormatProperties2, unknown, unknown); - proc_address!(vkGetPhysicalDeviceImageFormatProperties2KHR, PFN_vkGetPhysicalDeviceImageFormatProperties2KHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceMemoryProperties, PFN_vkGetPhysicalDeviceMemoryProperties, unknown, unknown); - proc_address!(vkGetPhysicalDeviceMemoryProperties2, PFN_vkGetPhysicalDeviceMemoryProperties2, unknown, unknown); - proc_address!(vkGetPhysicalDeviceMemoryProperties2KHR, PFN_vkGetPhysicalDeviceMemoryProperties2KHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceMultisamplePropertiesEXT, PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT, unknown, unknown); - proc_address!(vkGetPhysicalDevicePresentRectanglesKHR, PFN_vkGetPhysicalDevicePresentRectanglesKHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceProperties, PFN_vkGetPhysicalDeviceProperties, unknown, unknown); - proc_address!(vkGetPhysicalDeviceProperties2, PFN_vkGetPhysicalDeviceProperties2, unknown, unknown); - proc_address!(vkGetPhysicalDeviceProperties2KHR, PFN_vkGetPhysicalDeviceProperties2KHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceQueueFamilyProperties, PFN_vkGetPhysicalDeviceQueueFamilyProperties, unknown, unknown); - proc_address!(vkGetPhysicalDeviceQueueFamilyProperties2, PFN_vkGetPhysicalDeviceQueueFamilyProperties2, unknown, unknown); - proc_address!(vkGetPhysicalDeviceQueueFamilyProperties2KHR, PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceSparseImageFormatProperties, PFN_vkGetPhysicalDeviceSparseImageFormatProperties, unknown, unknown); - proc_address!(vkGetPhysicalDeviceSparseImageFormatProperties2, PFN_vkGetPhysicalDeviceSparseImageFormatProperties2, unknown, unknown); - proc_address!(vkGetPhysicalDeviceSparseImageFormatProperties2KHR, PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceSurfaceCapabilities2EXT, PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT, unknown, unknown); - proc_address!(vkGetPhysicalDeviceSurfaceCapabilities2KHR, PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceSurfaceCapabilitiesKHR, PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceSurfaceFormats2KHR, PFN_vkGetPhysicalDeviceSurfaceFormats2KHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceSurfaceFormatsKHR, PFN_vkGetPhysicalDeviceSurfaceFormatsKHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceSurfacePresentModesKHR, PFN_vkGetPhysicalDeviceSurfacePresentModesKHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceSurfaceSupportKHR, PFN_vkGetPhysicalDeviceSurfaceSupportKHR, unknown, unknown); - proc_address!(vkGetPhysicalDeviceXcbPresentationSupportKHR, PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR, unknown, unknown); - proc_address!(vkGetPipelineCacheData, PFN_vkGetPipelineCacheData, unknown, unknown); - proc_address!(vkGetQueryPoolResults, PFN_vkGetQueryPoolResults, unknown, unknown); - proc_address!(vkGetQueueCheckpointDataNV, PFN_vkGetQueueCheckpointDataNV, unknown, unknown); - proc_address!(vkGetRefreshCycleDurationGOOGLE, PFN_vkGetRefreshCycleDurationGOOGLE, unknown, unknown); - proc_address!(vkGetRenderAreaGranularity, PFN_vkGetRenderAreaGranularity, unknown, unknown); - proc_address!(vkGetSemaphoreFdKHR, PFN_vkGetSemaphoreFdKHR, unknown, unknown); - proc_address!(vkGetShaderInfoAMD, PFN_vkGetShaderInfoAMD, unknown, unknown); - proc_address!(vkGetSwapchainCounterEXT, PFN_vkGetSwapchainCounterEXT, unknown, unknown); - proc_address!(vkGetSwapchainImagesKHR, PFN_vkGetSwapchainImagesKHR, unknown, unknown); - proc_address!(vkGetSwapchainStatusKHR, PFN_vkGetSwapchainStatusKHR, unknown, unknown); - proc_address!(vkGetValidationCacheDataEXT, PFN_vkGetValidationCacheDataEXT, unknown, unknown); - proc_address!(vkImportFenceFdKHR, PFN_vkImportFenceFdKHR, unknown, unknown); - proc_address!(vkImportSemaphoreFdKHR, PFN_vkImportSemaphoreFdKHR, unknown, unknown); - proc_address!(vkInternalAllocationNotification, PFN_vkInternalAllocationNotification, unknown, unknown); - proc_address!(vkInternalFreeNotification, PFN_vkInternalFreeNotification, unknown, unknown); - proc_address!(vkInvalidateMappedMemoryRanges, PFN_vkInvalidateMappedMemoryRanges, unknown, unknown); - proc_address!(vkMapMemory, PFN_vkMapMemory, unknown, unknown); - proc_address!(vkMergePipelineCaches, PFN_vkMergePipelineCaches, unknown, unknown); - proc_address!(vkMergeValidationCachesEXT, PFN_vkMergeValidationCachesEXT, unknown, unknown); - proc_address!(vkNegotiateLoaderICDInterfaceVersion, PFN_vkNegotiateLoaderICDInterfaceVersion, unknown, unknown); - proc_address!(vkQueueBeginDebugUtilsLabelEXT, PFN_vkQueueBeginDebugUtilsLabelEXT, unknown, unknown); - proc_address!(vkQueueBindSparse, PFN_vkQueueBindSparse, unknown, unknown); - proc_address!(vkQueueEndDebugUtilsLabelEXT, PFN_vkQueueEndDebugUtilsLabelEXT, unknown, unknown); - proc_address!(vkQueueInsertDebugUtilsLabelEXT, PFN_vkQueueInsertDebugUtilsLabelEXT, unknown, unknown); - proc_address!(vkQueuePresentKHR, PFN_vkQueuePresentKHR, unknown, unknown); - proc_address!(vkQueueSubmit, PFN_vkQueueSubmit, unknown, unknown); - proc_address!(vkQueueWaitIdle, PFN_vkQueueWaitIdle, unknown, unknown); - proc_address!(vkReallocationFunction, PFN_vkReallocationFunction, unknown, unknown); - proc_address!(vkRegisterDeviceEventEXT, PFN_vkRegisterDeviceEventEXT, unknown, unknown); - proc_address!(vkRegisterDisplayEventEXT, PFN_vkRegisterDisplayEventEXT, unknown, unknown); - proc_address!(vkReleaseDisplayEXT, PFN_vkReleaseDisplayEXT, unknown, unknown); - proc_address!(vkResetCommandBuffer, PFN_vkResetCommandBuffer, unknown, unknown); - proc_address!(vkResetCommandPool, PFN_vkResetCommandPool, unknown, unknown); - proc_address!(vkResetDescriptorPool, PFN_vkResetDescriptorPool, unknown, unknown); - proc_address!(vkResetEvent, PFN_vkResetEvent, unknown, unknown); - proc_address!(vkResetFences, PFN_vkResetFences, unknown, unknown); - proc_address!(vkSetDebugUtilsObjectNameEXT, PFN_vkSetDebugUtilsObjectNameEXT, unknown, unknown); - proc_address!(vkSetDebugUtilsObjectTagEXT, PFN_vkSetDebugUtilsObjectTagEXT, unknown, unknown); - proc_address!(vkSetEvent, PFN_vkSetEvent, unknown, unknown); - proc_address!(vkSetHdrMetadataEXT, PFN_vkSetHdrMetadataEXT, unknown, unknown); - proc_address!(vkSubmitDebugUtilsMessageEXT, PFN_vkSubmitDebugUtilsMessageEXT, unknown, unknown); - proc_address!(vkTrimCommandPool, PFN_vkTrimCommandPool, unknown, unknown); - proc_address!(vkTrimCommandPoolKHR, PFN_vkTrimCommandPoolKHR, unknown, unknown); - proc_address!(vkUnmapMemory, PFN_vkUnmapMemory, unknown, unknown); - proc_address!(vkUpdateDescriptorSetWithTemplate, PFN_vkUpdateDescriptorSetWithTemplate, unknown, unknown); - proc_address!(vkUpdateDescriptorSetWithTemplateKHR, PFN_vkUpdateDescriptorSetWithTemplateKHR, unknown, unknown); - proc_address!(vkUpdateDescriptorSets, PFN_vkUpdateDescriptorSets, unknown, unknown); - proc_address!(vkWaitForFences, PFN_vkWaitForFences, unknown, unknown); + proc_address!(vkCreateInstance, PFN_vkCreateInstance, global, true); + proc_address!(vkEnumerateInstanceExtensionProperties, PFN_vkEnumerateInstanceExtensionProperties, global, true); + proc_address!(vkEnumerateInstanceLayerProperties, PFN_vkEnumerateInstanceLayerProperties, global, true); + proc_address!(vkEnumerateInstanceVersion, PFN_vkEnumerateInstanceVersion, global, true); + proc_address!(vkAllocateCommandBuffers, PFN_vkAllocateCommandBuffers, instance, true); + proc_address!(vkAllocateDescriptorSets, PFN_vkAllocateDescriptorSets, instance, true); + proc_address!(vkAllocateMemory, PFN_vkAllocateMemory, instance, true); + proc_address!(vkBeginCommandBuffer, PFN_vkBeginCommandBuffer, instance, true); + proc_address!(vkBindBufferMemory, PFN_vkBindBufferMemory, instance, true); + proc_address!(vkBindBufferMemory2, PFN_vkBindBufferMemory2, instance, true); + proc_address!(vkBindImageMemory, PFN_vkBindImageMemory, instance, true); + proc_address!(vkBindImageMemory2, PFN_vkBindImageMemory2, instance, true); + proc_address!(vkCmdBeginQuery, PFN_vkCmdBeginQuery, instance, true); + proc_address!(vkCmdBeginRenderPass, PFN_vkCmdBeginRenderPass, instance, true); + proc_address!(vkCmdBindDescriptorSets, PFN_vkCmdBindDescriptorSets, instance, true); + proc_address!(vkCmdBindIndexBuffer, PFN_vkCmdBindIndexBuffer, instance, true); + proc_address!(vkCmdBindPipeline, PFN_vkCmdBindPipeline, instance, true); + proc_address!(vkCmdBindVertexBuffers, PFN_vkCmdBindVertexBuffers, instance, true); + proc_address!(vkCmdBlitImage, PFN_vkCmdBlitImage, instance, true); + proc_address!(vkCmdClearAttachments, PFN_vkCmdClearAttachments, instance, true); + proc_address!(vkCmdClearColorImage, PFN_vkCmdClearColorImage, instance, true); + proc_address!(vkCmdClearDepthStencilImage, PFN_vkCmdClearDepthStencilImage, instance, true); + proc_address!(vkCmdCopyBuffer, PFN_vkCmdCopyBuffer, instance, true); + proc_address!(vkCmdCopyBufferToImage, PFN_vkCmdCopyBufferToImage, instance, true); + proc_address!(vkCmdCopyImage, PFN_vkCmdCopyImage, instance, true); + proc_address!(vkCmdCopyImageToBuffer, PFN_vkCmdCopyImageToBuffer, instance, true); + proc_address!(vkCmdCopyQueryPoolResults, PFN_vkCmdCopyQueryPoolResults, instance, true); + proc_address!(vkCmdDispatch, PFN_vkCmdDispatch, instance, true); + proc_address!(vkCmdDispatchBase, PFN_vkCmdDispatchBase, instance, true); + proc_address!(vkCmdDispatchIndirect, PFN_vkCmdDispatchIndirect, instance, true); + proc_address!(vkCmdDraw, PFN_vkCmdDraw, instance, true); + proc_address!(vkCmdDrawIndexed, PFN_vkCmdDrawIndexed, instance, true); + proc_address!(vkCmdDrawIndexedIndirect, PFN_vkCmdDrawIndexedIndirect, instance, true); + proc_address!(vkCmdDrawIndirect, PFN_vkCmdDrawIndirect, instance, true); + proc_address!(vkCmdEndQuery, PFN_vkCmdEndQuery, instance, true); + proc_address!(vkCmdEndRenderPass, PFN_vkCmdEndRenderPass, instance, true); + proc_address!(vkCmdExecuteCommands, PFN_vkCmdExecuteCommands, instance, true); + proc_address!(vkCmdFillBuffer, PFN_vkCmdFillBuffer, instance, true); + proc_address!(vkCmdNextSubpass, PFN_vkCmdNextSubpass, instance, true); + proc_address!(vkCmdPipelineBarrier, PFN_vkCmdPipelineBarrier, instance, true); + proc_address!(vkCmdPushConstants, PFN_vkCmdPushConstants, instance, true); + proc_address!(vkCmdResetEvent, PFN_vkCmdResetEvent, instance, true); + proc_address!(vkCmdResetQueryPool, PFN_vkCmdResetQueryPool, instance, true); + proc_address!(vkCmdResolveImage, PFN_vkCmdResolveImage, instance, true); + proc_address!(vkCmdSetBlendConstants, PFN_vkCmdSetBlendConstants, instance, true); + proc_address!(vkCmdSetDepthBias, PFN_vkCmdSetDepthBias, instance, true); + proc_address!(vkCmdSetDepthBounds, PFN_vkCmdSetDepthBounds, instance, true); + proc_address!(vkCmdSetDeviceMask, PFN_vkCmdSetDeviceMask, instance, true); + proc_address!(vkCmdSetEvent, PFN_vkCmdSetEvent, instance, true); + proc_address!(vkCmdSetLineWidth, PFN_vkCmdSetLineWidth, instance, true); + proc_address!(vkCmdSetScissor, PFN_vkCmdSetScissor, instance, true); + proc_address!(vkCmdSetStencilCompareMask, PFN_vkCmdSetStencilCompareMask, instance, true); + proc_address!(vkCmdSetStencilReference, PFN_vkCmdSetStencilReference, instance, true); + proc_address!(vkCmdSetStencilWriteMask, PFN_vkCmdSetStencilWriteMask, instance, true); + proc_address!(vkCmdSetViewport, PFN_vkCmdSetViewport, instance, true); + proc_address!(vkCmdUpdateBuffer, PFN_vkCmdUpdateBuffer, instance, true); + proc_address!(vkCmdWaitEvents, PFN_vkCmdWaitEvents, instance, true); + proc_address!(vkCmdWriteTimestamp, PFN_vkCmdWriteTimestamp, instance, true); + proc_address!(vkCreateBuffer, PFN_vkCreateBuffer, instance, true); + proc_address!(vkCreateBufferView, PFN_vkCreateBufferView, instance, true); + proc_address!(vkCreateCommandPool, PFN_vkCreateCommandPool, instance, true); + proc_address!(vkCreateComputePipelines, PFN_vkCreateComputePipelines, instance, true); + proc_address!(vkCreateDescriptorPool, PFN_vkCreateDescriptorPool, instance, true); + proc_address!(vkCreateDescriptorSetLayout, PFN_vkCreateDescriptorSetLayout, instance, true); + proc_address!(vkCreateDescriptorUpdateTemplate, PFN_vkCreateDescriptorUpdateTemplate, instance, true); + proc_address!(vkCreateDevice, PFN_vkCreateDevice, instance, true); + proc_address!(vkCreateEvent, PFN_vkCreateEvent, instance, true); + proc_address!(vkCreateFence, PFN_vkCreateFence, instance, true); + proc_address!(vkCreateFramebuffer, PFN_vkCreateFramebuffer, instance, true); + proc_address!(vkCreateGraphicsPipelines, PFN_vkCreateGraphicsPipelines, instance, true); + proc_address!(vkCreateImage, PFN_vkCreateImage, instance, true); + proc_address!(vkCreateImageView, PFN_vkCreateImageView, instance, true); + proc_address!(vkCreatePipelineCache, PFN_vkCreatePipelineCache, instance, true); + proc_address!(vkCreatePipelineLayout, PFN_vkCreatePipelineLayout, instance, true); + proc_address!(vkCreateQueryPool, PFN_vkCreateQueryPool, instance, true); + proc_address!(vkCreateRenderPass, PFN_vkCreateRenderPass, instance, true); + proc_address!(vkCreateSampler, PFN_vkCreateSampler, instance, true); + proc_address!(vkCreateSamplerYcbcrConversion, PFN_vkCreateSamplerYcbcrConversion, instance, true); + proc_address!(vkCreateSemaphore, PFN_vkCreateSemaphore, instance, true); + proc_address!(vkCreateShaderModule, PFN_vkCreateShaderModule, instance, true); + proc_address!(vkDestroyBuffer, PFN_vkDestroyBuffer, instance, true); + proc_address!(vkDestroyBufferView, PFN_vkDestroyBufferView, instance, true); + proc_address!(vkDestroyCommandPool, PFN_vkDestroyCommandPool, instance, true); + proc_address!(vkDestroyDescriptorPool, PFN_vkDestroyDescriptorPool, instance, true); + proc_address!(vkDestroyDescriptorSetLayout, PFN_vkDestroyDescriptorSetLayout, instance, true); + proc_address!(vkDestroyDescriptorUpdateTemplate, PFN_vkDestroyDescriptorUpdateTemplate, instance, true); + proc_address!(vkDestroyDevice, PFN_vkDestroyDevice, instance, true); + proc_address!(vkDestroyEvent, PFN_vkDestroyEvent, instance, true); + proc_address!(vkDestroyFence, PFN_vkDestroyFence, instance, true); + proc_address!(vkDestroyFramebuffer, PFN_vkDestroyFramebuffer, instance, true); + proc_address!(vkDestroyImage, PFN_vkDestroyImage, instance, true); + proc_address!(vkDestroyImageView, PFN_vkDestroyImageView, instance, true); + proc_address!(vkDestroyInstance, PFN_vkDestroyInstance, instance, true); + proc_address!(vkDestroyPipeline, PFN_vkDestroyPipeline, instance, true); + proc_address!(vkDestroyPipelineCache, PFN_vkDestroyPipelineCache, instance, true); + proc_address!(vkDestroyPipelineLayout, PFN_vkDestroyPipelineLayout, instance, true); + proc_address!(vkDestroyQueryPool, PFN_vkDestroyQueryPool, instance, true); + proc_address!(vkDestroyRenderPass, PFN_vkDestroyRenderPass, instance, true); + proc_address!(vkDestroySampler, PFN_vkDestroySampler, instance, true); + proc_address!(vkDestroySamplerYcbcrConversion, PFN_vkDestroySamplerYcbcrConversion, instance, true); + proc_address!(vkDestroySemaphore, PFN_vkDestroySemaphore, instance, true); + proc_address!(vkDestroyShaderModule, PFN_vkDestroyShaderModule, instance, true); + proc_address!(vkDeviceWaitIdle, PFN_vkDeviceWaitIdle, instance, true); + proc_address!(vkEndCommandBuffer, PFN_vkEndCommandBuffer, instance, true); + proc_address!(vkEnumerateDeviceExtensionProperties, PFN_vkEnumerateDeviceExtensionProperties, instance, true); + proc_address!(vkEnumerateDeviceLayerProperties, PFN_vkEnumerateDeviceLayerProperties, instance, true); + proc_address!(vkEnumeratePhysicalDeviceGroups, PFN_vkEnumeratePhysicalDeviceGroups, instance, true); + proc_address!(vkEnumeratePhysicalDevices, PFN_vkEnumeratePhysicalDevices, instance, true); + proc_address!(vkFlushMappedMemoryRanges, PFN_vkFlushMappedMemoryRanges, instance, true); + proc_address!(vkFreeCommandBuffers, PFN_vkFreeCommandBuffers, instance, true); + proc_address!(vkFreeDescriptorSets, PFN_vkFreeDescriptorSets, instance, true); + proc_address!(vkFreeMemory, PFN_vkFreeMemory, instance, true); + proc_address!(vkGetBufferMemoryRequirements, PFN_vkGetBufferMemoryRequirements, instance, true); + proc_address!(vkGetBufferMemoryRequirements2, PFN_vkGetBufferMemoryRequirements2, instance, true); + proc_address!(vkGetDescriptorSetLayoutSupport, PFN_vkGetDescriptorSetLayoutSupport, instance, true); + proc_address!(vkGetDeviceGroupPeerMemoryFeatures, PFN_vkGetDeviceGroupPeerMemoryFeatures, instance, true); + proc_address!(vkGetDeviceMemoryCommitment, PFN_vkGetDeviceMemoryCommitment, instance, true); + proc_address!(vkGetDeviceProcAddr, PFN_vkGetDeviceProcAddr, instance, true); + proc_address!(vkGetDeviceQueue, PFN_vkGetDeviceQueue, instance, true); + proc_address!(vkGetDeviceQueue2, PFN_vkGetDeviceQueue2, instance, true); + proc_address!(vkGetEventStatus, PFN_vkGetEventStatus, instance, true); + proc_address!(vkGetFenceStatus, PFN_vkGetFenceStatus, instance, true); + proc_address!(vkGetImageMemoryRequirements, PFN_vkGetImageMemoryRequirements, instance, true); + proc_address!(vkGetImageMemoryRequirements2, PFN_vkGetImageMemoryRequirements2, instance, true); + proc_address!(vkGetImageSparseMemoryRequirements, PFN_vkGetImageSparseMemoryRequirements, instance, true); + proc_address!(vkGetImageSparseMemoryRequirements2, PFN_vkGetImageSparseMemoryRequirements2, instance, true); + proc_address!(vkGetImageSubresourceLayout, PFN_vkGetImageSubresourceLayout, instance, true); + proc_address!(vkGetInstanceProcAddr, PFN_vkGetInstanceProcAddr, instance, true); + proc_address!(vkGetPhysicalDeviceExternalBufferProperties, PFN_vkGetPhysicalDeviceExternalBufferProperties, instance, true); + proc_address!(vkGetPhysicalDeviceExternalFenceProperties, PFN_vkGetPhysicalDeviceExternalFenceProperties, instance, true); + proc_address!(vkGetPhysicalDeviceExternalSemaphoreProperties, PFN_vkGetPhysicalDeviceExternalSemaphoreProperties, instance, true); + proc_address!(vkGetPhysicalDeviceFeatures, PFN_vkGetPhysicalDeviceFeatures, instance, true); + proc_address!(vkGetPhysicalDeviceFeatures2, PFN_vkGetPhysicalDeviceFeatures2, instance, true); + proc_address!(vkGetPhysicalDeviceFormatProperties, PFN_vkGetPhysicalDeviceFormatProperties, instance, true); + proc_address!(vkGetPhysicalDeviceFormatProperties2, PFN_vkGetPhysicalDeviceFormatProperties2, instance, true); + proc_address!(vkGetPhysicalDeviceImageFormatProperties, PFN_vkGetPhysicalDeviceImageFormatProperties, instance, true); + proc_address!(vkGetPhysicalDeviceImageFormatProperties2, PFN_vkGetPhysicalDeviceImageFormatProperties2, instance, true); + proc_address!(vkGetPhysicalDeviceMemoryProperties, PFN_vkGetPhysicalDeviceMemoryProperties, instance, true); + proc_address!(vkGetPhysicalDeviceMemoryProperties2, PFN_vkGetPhysicalDeviceMemoryProperties2, instance, true); + proc_address!(vkGetPhysicalDeviceProperties, PFN_vkGetPhysicalDeviceProperties, instance, true); + proc_address!(vkGetPhysicalDeviceProperties2, PFN_vkGetPhysicalDeviceProperties2, instance, true); + proc_address!(vkGetPhysicalDeviceQueueFamilyProperties, PFN_vkGetPhysicalDeviceQueueFamilyProperties, instance, true); + proc_address!(vkGetPhysicalDeviceQueueFamilyProperties2, PFN_vkGetPhysicalDeviceQueueFamilyProperties2, instance, true); + proc_address!(vkGetPhysicalDeviceSparseImageFormatProperties, PFN_vkGetPhysicalDeviceSparseImageFormatProperties, instance, true); + proc_address!(vkGetPhysicalDeviceSparseImageFormatProperties2, PFN_vkGetPhysicalDeviceSparseImageFormatProperties2, instance, true); + proc_address!(vkGetPipelineCacheData, PFN_vkGetPipelineCacheData, instance, true); + proc_address!(vkGetQueryPoolResults, PFN_vkGetQueryPoolResults, instance, true); + proc_address!(vkGetRenderAreaGranularity, PFN_vkGetRenderAreaGranularity, instance, true); + proc_address!(vkInvalidateMappedMemoryRanges, PFN_vkInvalidateMappedMemoryRanges, instance, true); + proc_address!(vkMapMemory, PFN_vkMapMemory, instance, true); + proc_address!(vkMergePipelineCaches, PFN_vkMergePipelineCaches, instance, true); + proc_address!(vkQueueBindSparse, PFN_vkQueueBindSparse, instance, true); + proc_address!(vkQueueSubmit, PFN_vkQueueSubmit, instance, true); + proc_address!(vkQueueWaitIdle, PFN_vkQueueWaitIdle, instance, true); + proc_address!(vkResetCommandBuffer, PFN_vkResetCommandBuffer, instance, true); + proc_address!(vkResetCommandPool, PFN_vkResetCommandPool, instance, true); + proc_address!(vkResetDescriptorPool, PFN_vkResetDescriptorPool, instance, true); + proc_address!(vkResetEvent, PFN_vkResetEvent, instance, true); + proc_address!(vkResetFences, PFN_vkResetFences, instance, true); + proc_address!(vkSetEvent, PFN_vkSetEvent, instance, true); + proc_address!(vkTrimCommandPool, PFN_vkTrimCommandPool, instance, true); + proc_address!(vkUnmapMemory, PFN_vkUnmapMemory, instance, true); + proc_address!(vkUpdateDescriptorSets, PFN_vkUpdateDescriptorSets, instance, true); + proc_address!(vkUpdateDescriptorSetWithTemplate, PFN_vkUpdateDescriptorSetWithTemplate, instance, true); + proc_address!(vkWaitForFences, PFN_vkWaitForFences, instance, true); + /* + proc_address!(vkAcquireNextImage2KHR, PFN_vkAcquireNextImage2KHR, instance, unknown); + proc_address!(vkAcquireNextImageKHR, PFN_vkAcquireNextImageKHR, instance, unknown); + proc_address!(vkBindBufferMemory2KHR, PFN_vkBindBufferMemory2KHR, instance, unknown); + proc_address!(vkBindImageMemory2KHR, PFN_vkBindImageMemory2KHR, instance, unknown); + proc_address!(vkCmdBeginConditionalRenderingEXT, PFN_vkCmdBeginConditionalRenderingEXT, instance, unknown); + proc_address!(vkCmdBeginDebugUtilsLabelEXT, PFN_vkCmdBeginDebugUtilsLabelEXT, instance, unknown); + proc_address!(vkCmdBeginRenderPass2KHR, PFN_vkCmdBeginRenderPass2KHR, instance, unknown); + proc_address!(vkCmdBindShadingRateImageNV, PFN_vkCmdBindShadingRateImageNV, instance, unknown); + proc_address!(vkCmdDebugMarkerBeginEXT, PFN_vkCmdDebugMarkerBeginEXT, instance, unknown); + proc_address!(vkCmdDebugMarkerEndEXT, PFN_vkCmdDebugMarkerEndEXT, instance, unknown); + proc_address!(vkCmdDebugMarkerInsertEXT, PFN_vkCmdDebugMarkerInsertEXT, instance, unknown); + proc_address!(vkCmdDispatchBaseKHR, PFN_vkCmdDispatchBaseKHR, instance, unknown); + proc_address!(vkCmdDrawIndexedIndirectCountAMD, PFN_vkCmdDrawIndexedIndirectCountAMD, instance, unknown); + proc_address!(vkCmdDrawIndexedIndirectCountKHR, PFN_vkCmdDrawIndexedIndirectCountKHR, instance, unknown); + proc_address!(vkCmdDrawIndirectCountAMD, PFN_vkCmdDrawIndirectCountAMD, instance, unknown); + proc_address!(vkCmdDrawIndirectCountKHR, PFN_vkCmdDrawIndirectCountKHR, instance, unknown); + proc_address!(vkCmdDrawMeshTasksIndirectCountNV, PFN_vkCmdDrawMeshTasksIndirectCountNV, instance, unknown); + proc_address!(vkCmdDrawMeshTasksIndirectNV, PFN_vkCmdDrawMeshTasksIndirectNV, instance, unknown); + proc_address!(vkCmdDrawMeshTasksNV, PFN_vkCmdDrawMeshTasksNV, instance, unknown); + proc_address!(vkCmdEndConditionalRenderingEXT, PFN_vkCmdEndConditionalRenderingEXT, instance, unknown); + proc_address!(vkCmdEndDebugUtilsLabelEXT, PFN_vkCmdEndDebugUtilsLabelEXT, instance, unknown); + proc_address!(vkCmdEndRenderPass2KHR, PFN_vkCmdEndRenderPass2KHR, instance, unknown); + proc_address!(vkCmdInsertDebugUtilsLabelEXT, PFN_vkCmdInsertDebugUtilsLabelEXT, instance, unknown); + proc_address!(vkCmdNextSubpass2KHR, PFN_vkCmdNextSubpass2KHR, instance, unknown); + proc_address!(vkCmdPushDescriptorSetKHR, PFN_vkCmdPushDescriptorSetKHR, instance, unknown); + proc_address!(vkCmdPushDescriptorSetWithTemplateKHR, PFN_vkCmdPushDescriptorSetWithTemplateKHR, instance, unknown); + proc_address!(vkCmdSetCheckpointNV, PFN_vkCmdSetCheckpointNV, instance, unknown); + proc_address!(vkCmdSetCoarseSampleOrderNV, PFN_vkCmdSetCoarseSampleOrderNV, instance, unknown); + proc_address!(vkCmdSetDeviceMaskKHR, PFN_vkCmdSetDeviceMaskKHR, instance, unknown); + proc_address!(vkCmdSetDiscardRectangleEXT, PFN_vkCmdSetDiscardRectangleEXT, instance, unknown); + proc_address!(vkCmdSetExclusiveScissorNV, PFN_vkCmdSetExclusiveScissorNV, instance, unknown); + proc_address!(vkCmdSetSampleLocationsEXT, PFN_vkCmdSetSampleLocationsEXT, instance, unknown); + proc_address!(vkCmdSetViewportShadingRatePaletteNV, PFN_vkCmdSetViewportShadingRatePaletteNV, instance, unknown); + proc_address!(vkCmdSetViewportWScalingNV, PFN_vkCmdSetViewportWScalingNV, instance, unknown); + proc_address!(vkCmdWriteBufferMarkerAMD, PFN_vkCmdWriteBufferMarkerAMD, instance, unknown); + proc_address!(vkCreateDebugReportCallbackEXT, PFN_vkCreateDebugReportCallbackEXT, instance, unknown); + proc_address!(vkCreateDebugUtilsMessengerEXT, PFN_vkCreateDebugUtilsMessengerEXT, instance, unknown); + proc_address!(vkCreateDescriptorUpdateTemplateKHR, PFN_vkCreateDescriptorUpdateTemplateKHR, instance, unknown); + proc_address!(vkCreateDisplayModeKHR, PFN_vkCreateDisplayModeKHR, instance, unknown); + proc_address!(vkCreateDisplayPlaneSurfaceKHR, PFN_vkCreateDisplayPlaneSurfaceKHR, instance, unknown); + proc_address!(vkCreateRenderPass2KHR, PFN_vkCreateRenderPass2KHR, instance, unknown); + proc_address!(vkCreateSamplerYcbcrConversionKHR, PFN_vkCreateSamplerYcbcrConversionKHR, instance, unknown); + proc_address!(vkCreateSharedSwapchainsKHR, PFN_vkCreateSharedSwapchainsKHR, instance, unknown); + proc_address!(vkCreateSwapchainKHR, PFN_vkCreateSwapchainKHR, instance, unknown); + proc_address!(vkCreateValidationCacheEXT, PFN_vkCreateValidationCacheEXT, instance, unknown); + proc_address!(vkCreateXcbSurfaceKHR, PFN_vkCreateXcbSurfaceKHR, instance, unknown); + proc_address!(vkDebugMarkerSetObjectNameEXT, PFN_vkDebugMarkerSetObjectNameEXT, instance, unknown); + proc_address!(vkDebugMarkerSetObjectTagEXT, PFN_vkDebugMarkerSetObjectTagEXT, instance, unknown); + proc_address!(vkDebugReportCallbackEXT, PFN_vkDebugReportCallbackEXT, instance, unknown); + proc_address!(vkDebugReportMessageEXT, PFN_vkDebugReportMessageEXT, instance, unknown); + proc_address!(vkDebugUtilsMessengerCallbackEXT, PFN_vkDebugUtilsMessengerCallbackEXT, instance, unknown); + proc_address!(vkDestroyDebugReportCallbackEXT, PFN_vkDestroyDebugReportCallbackEXT, instance, unknown); + proc_address!(vkDestroyDebugUtilsMessengerEXT, PFN_vkDestroyDebugUtilsMessengerEXT, instance, unknown); + proc_address!(vkDestroyDescriptorUpdateTemplateKHR, PFN_vkDestroyDescriptorUpdateTemplateKHR, instance, unknown); + proc_address!(vkDestroySamplerYcbcrConversionKHR, PFN_vkDestroySamplerYcbcrConversionKHR, instance, unknown); + proc_address!(vkDestroySurfaceKHR, PFN_vkDestroySurfaceKHR, instance, unknown); + proc_address!(vkDestroySwapchainKHR, PFN_vkDestroySwapchainKHR, instance, unknown); + proc_address!(vkDestroyValidationCacheEXT, PFN_vkDestroyValidationCacheEXT, instance, unknown); + proc_address!(vkDisplayPowerControlEXT, PFN_vkDisplayPowerControlEXT, instance, unknown); + proc_address!(vkEnumeratePhysicalDeviceGroupsKHR, PFN_vkEnumeratePhysicalDeviceGroupsKHR, instance, unknown); + proc_address!(vkGetBufferMemoryRequirements2KHR, PFN_vkGetBufferMemoryRequirements2KHR, instance, unknown); + proc_address!(vkGetDescriptorSetLayoutSupportKHR, PFN_vkGetDescriptorSetLayoutSupportKHR, instance, unknown); + proc_address!(vkGetDeviceGroupPeerMemoryFeaturesKHR, PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR, instance, unknown); + proc_address!(vkGetDeviceGroupPresentCapabilitiesKHR, PFN_vkGetDeviceGroupPresentCapabilitiesKHR, instance, unknown); + proc_address!(vkGetDeviceGroupSurfacePresentModesKHR, PFN_vkGetDeviceGroupSurfacePresentModesKHR, instance, unknown); + proc_address!(vkGetDisplayModeProperties2KHR, PFN_vkGetDisplayModeProperties2KHR, instance, unknown); + proc_address!(vkGetDisplayModePropertiesKHR, PFN_vkGetDisplayModePropertiesKHR, instance, unknown); + proc_address!(vkGetDisplayPlaneCapabilities2KHR, PFN_vkGetDisplayPlaneCapabilities2KHR, instance, unknown); + proc_address!(vkGetDisplayPlaneCapabilitiesKHR, PFN_vkGetDisplayPlaneCapabilitiesKHR, instance, unknown); + proc_address!(vkGetDisplayPlaneSupportedDisplaysKHR, PFN_vkGetDisplayPlaneSupportedDisplaysKHR, instance, unknown); + proc_address!(vkGetFenceFdKHR, PFN_vkGetFenceFdKHR, instance, unknown); + proc_address!(vkGetImageMemoryRequirements2KHR, PFN_vkGetImageMemoryRequirements2KHR, instance, unknown); + proc_address!(vkGetImageSparseMemoryRequirements2KHR, PFN_vkGetImageSparseMemoryRequirements2KHR, instance, unknown); + proc_address!(vkGetMemoryFdKHR, PFN_vkGetMemoryFdKHR, instance, unknown); + proc_address!(vkGetMemoryFdPropertiesKHR, PFN_vkGetMemoryFdPropertiesKHR, instance, unknown); + proc_address!(vkGetMemoryHostPointerPropertiesEXT, PFN_vkGetMemoryHostPointerPropertiesEXT, instance, unknown); + proc_address!(vkGetPastPresentationTimingGOOGLE, PFN_vkGetPastPresentationTimingGOOGLE, instance, unknown); + proc_address!(vkGetPhysicalDeviceDisplayPlaneProperties2KHR, PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceDisplayPlanePropertiesKHR, PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceDisplayProperties2KHR, PFN_vkGetPhysicalDeviceDisplayProperties2KHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceDisplayPropertiesKHR, PFN_vkGetPhysicalDeviceDisplayPropertiesKHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceExternalBufferPropertiesKHR, PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceExternalFencePropertiesKHR, PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceExternalImageFormatPropertiesNV, PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV, instance, unknown); + proc_address!(vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceFeatures2KHR, PFN_vkGetPhysicalDeviceFeatures2KHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceFormatProperties2KHR, PFN_vkGetPhysicalDeviceFormatProperties2KHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceImageFormatProperties2KHR, PFN_vkGetPhysicalDeviceImageFormatProperties2KHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceMemoryProperties2KHR, PFN_vkGetPhysicalDeviceMemoryProperties2KHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceMultisamplePropertiesEXT, PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT, instance, unknown); + proc_address!(vkGetPhysicalDevicePresentRectanglesKHR, PFN_vkGetPhysicalDevicePresentRectanglesKHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceProperties2KHR, PFN_vkGetPhysicalDeviceProperties2KHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceQueueFamilyProperties2KHR, PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceSparseImageFormatProperties2KHR, PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceSurfaceCapabilities2EXT, PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT, instance, unknown); + proc_address!(vkGetPhysicalDeviceSurfaceCapabilities2KHR, PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceSurfaceCapabilitiesKHR, PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceSurfaceFormats2KHR, PFN_vkGetPhysicalDeviceSurfaceFormats2KHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceSurfaceFormatsKHR, PFN_vkGetPhysicalDeviceSurfaceFormatsKHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceSurfacePresentModesKHR, PFN_vkGetPhysicalDeviceSurfacePresentModesKHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceSurfaceSupportKHR, PFN_vkGetPhysicalDeviceSurfaceSupportKHR, instance, unknown); + proc_address!(vkGetPhysicalDeviceXcbPresentationSupportKHR, PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR, instance, unknown); + proc_address!(vkGetQueueCheckpointDataNV, PFN_vkGetQueueCheckpointDataNV, instance, unknown); + proc_address!(vkGetRefreshCycleDurationGOOGLE, PFN_vkGetRefreshCycleDurationGOOGLE, instance, unknown); + proc_address!(vkGetSemaphoreFdKHR, PFN_vkGetSemaphoreFdKHR, instance, unknown); + proc_address!(vkGetShaderInfoAMD, PFN_vkGetShaderInfoAMD, instance, unknown); + proc_address!(vkGetSwapchainCounterEXT, PFN_vkGetSwapchainCounterEXT, instance, unknown); + proc_address!(vkGetSwapchainImagesKHR, PFN_vkGetSwapchainImagesKHR, instance, unknown); + proc_address!(vkGetSwapchainStatusKHR, PFN_vkGetSwapchainStatusKHR, instance, unknown); + proc_address!(vkGetValidationCacheDataEXT, PFN_vkGetValidationCacheDataEXT, instance, unknown); + proc_address!(vkImportFenceFdKHR, PFN_vkImportFenceFdKHR, instance, unknown); + proc_address!(vkImportSemaphoreFdKHR, PFN_vkImportSemaphoreFdKHR, instance, unknown); + proc_address!(vkMergeValidationCachesEXT, PFN_vkMergeValidationCachesEXT, instance, unknown); + proc_address!(vkQueueBeginDebugUtilsLabelEXT, PFN_vkQueueBeginDebugUtilsLabelEXT, instance, unknown); + proc_address!(vkQueueEndDebugUtilsLabelEXT, PFN_vkQueueEndDebugUtilsLabelEXT, instance, unknown); + proc_address!(vkQueueInsertDebugUtilsLabelEXT, PFN_vkQueueInsertDebugUtilsLabelEXT, instance, unknown); + proc_address!(vkQueuePresentKHR, PFN_vkQueuePresentKHR, instance, unknown); + proc_address!(vkRegisterDeviceEventEXT, PFN_vkRegisterDeviceEventEXT, instance, unknown); + proc_address!(vkRegisterDisplayEventEXT, PFN_vkRegisterDisplayEventEXT, instance, unknown); + proc_address!(vkReleaseDisplayEXT, PFN_vkReleaseDisplayEXT, instance, unknown); + proc_address!(vkSetDebugUtilsObjectNameEXT, PFN_vkSetDebugUtilsObjectNameEXT, instance, unknown); + proc_address!(vkSetDebugUtilsObjectTagEXT, PFN_vkSetDebugUtilsObjectTagEXT, instance, unknown); + proc_address!(vkSetHdrMetadataEXT, PFN_vkSetHdrMetadataEXT, instance, unknown); + proc_address!(vkSubmitDebugUtilsMessageEXT, PFN_vkSubmitDebugUtilsMessageEXT, instance, unknown); + proc_address!(vkTrimCommandPoolKHR, PFN_vkTrimCommandPoolKHR, instance, unknown); + proc_address!(vkUpdateDescriptorSetWithTemplateKHR, PFN_vkUpdateDescriptorSetWithTemplateKHR, instance, unknown); + */ } + eprintln!("unknown function: {:?}", name); None } -pub struct Instance { +pub struct PhysicalDevice { enabled_extensions: Extensions, + allowed_extensions: Extensions, + properties: api::VkPhysicalDeviceProperties, +} + +impl PhysicalDevice { + pub fn get_pipeline_cache_uuid() -> uuid::Uuid { + // FIXME: return real uuid + uuid::Uuid::nil() + } +} + +pub struct Instance { + physical_device: OwnedHandle, +} + +impl Instance { + pub unsafe fn new( + create_info: &api::VkInstanceCreateInfo, + ) -> Result { + assert_eq!( + create_info.sType, + api::VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO + ); + if create_info.enabledLayerCount != 0 { + return Err(api::VK_ERROR_LAYER_NOT_PRESENT); + } + let mut enabled_extensions = Extensions::create_empty(); + for &extension_name in slice::from_raw_parts( + create_info.ppEnabledExtensionNames, + create_info.enabledExtensionCount as usize, + ) { + let extension: Extension = CStr::from_ptr(extension_name) + .to_str() + .map_err(|_| api::VK_ERROR_EXTENSION_NOT_PRESENT)? + .parse() + .map_err(|_| api::VK_ERROR_EXTENSION_NOT_PRESENT)?; + enabled_extensions[extension] = true; + } + for extension in enabled_extensions + .iter() + .filter_map(|(extension, &enabled)| if enabled { Some(extension) } else { None }) + { + let missing_extensions = extension.get_required_extensions() & !enabled_extensions; + for missing_extension in missing_extensions + .iter() + .filter_map(|(extension, &enabled)| if enabled { Some(extension) } else { None }) + { + panic!( + "extension {} enabled but required extension {} is not enabled", + extension.get_name(), + missing_extension.get_name() + ); + } + } + let mut device_name = [0; api::VK_MAX_PHYSICAL_DEVICE_NAME_SIZE as usize]; + copy_str_to_char_array(&mut device_name, KAZAN_DEVICE_NAME); + let retval = OwnedHandle::::new(Instance { + physical_device: OwnedHandle::new(PhysicalDevice { + enabled_extensions, + allowed_extensions: enabled_extensions.get_allowed_extensions_from_instance_scope(), + properties: api::VkPhysicalDeviceProperties { + apiVersion: make_api_version(1, 1, api::VK_HEADER_VERSION), + driverVersion: make_api_version( + env!("CARGO_PKG_VERSION_MAJOR").parse().unwrap(), + env!("CARGO_PKG_VERSION_MINOR").parse().unwrap(), + env!("CARGO_PKG_VERSION_PATCH").parse().unwrap(), + ), + vendorID: KAZAN_VENDOR_ID, + deviceID: 1, + deviceType: api::VK_PHYSICAL_DEVICE_TYPE_CPU, + deviceName: device_name, + pipelineCacheUUID: *PhysicalDevice::get_pipeline_cache_uuid().as_bytes(), + limits: api::VkPhysicalDeviceLimits { + maxImageDimension1D: !0, + maxImageDimension2D: !0, + maxImageDimension3D: !0, + maxImageDimensionCube: !0, + maxImageArrayLayers: !0, + maxTexelBufferElements: !0, + maxUniformBufferRange: !0, + maxStorageBufferRange: !0, + maxPushConstantsSize: !0, + maxMemoryAllocationCount: !0, + maxSamplerAllocationCount: !0, + bufferImageGranularity: 1, + sparseAddressSpaceSize: 0, + maxBoundDescriptorSets: !0, + maxPerStageDescriptorSamplers: !0, + maxPerStageDescriptorUniformBuffers: !0, + maxPerStageDescriptorStorageBuffers: !0, + maxPerStageDescriptorSampledImages: !0, + maxPerStageDescriptorStorageImages: !0, + maxPerStageDescriptorInputAttachments: !0, + maxPerStageResources: !0, + maxDescriptorSetSamplers: !0, + maxDescriptorSetUniformBuffers: !0, + maxDescriptorSetUniformBuffersDynamic: !0, + maxDescriptorSetStorageBuffers: !0, + maxDescriptorSetStorageBuffersDynamic: !0, + maxDescriptorSetSampledImages: !0, + maxDescriptorSetStorageImages: !0, + maxDescriptorSetInputAttachments: !0, + maxVertexInputAttributes: !0, + maxVertexInputBindings: !0, + maxVertexInputAttributeOffset: !0, + maxVertexInputBindingStride: !0, + maxVertexOutputComponents: !0, + maxTessellationGenerationLevel: 0, + maxTessellationPatchSize: 0, + maxTessellationControlPerVertexInputComponents: 0, + maxTessellationControlPerVertexOutputComponents: 0, + maxTessellationControlPerPatchOutputComponents: 0, + maxTessellationControlTotalOutputComponents: 0, + maxTessellationEvaluationInputComponents: 0, + maxTessellationEvaluationOutputComponents: 0, + maxGeometryShaderInvocations: 0, + maxGeometryInputComponents: 0, + maxGeometryOutputComponents: 0, + maxGeometryOutputVertices: 0, + maxGeometryTotalOutputComponents: 0, + maxFragmentInputComponents: !0, + maxFragmentOutputAttachments: !0, + maxFragmentDualSrcAttachments: 0, + maxFragmentCombinedOutputResources: !0, + maxComputeSharedMemorySize: !0, + maxComputeWorkGroupCount: [!0; 3], + maxComputeWorkGroupInvocations: !0, + maxComputeWorkGroupSize: [!0; 3], + subPixelPrecisionBits: 4, // FIXME: update to correct value + subTexelPrecisionBits: 4, // FIXME: update to correct value + mipmapPrecisionBits: 4, // FIXME: update to correct value + maxDrawIndexedIndexValue: !0, + maxDrawIndirectCount: !0, + maxSamplerLodBias: 2.0, // FIXME: update to correct value + maxSamplerAnisotropy: 1.0, + maxViewports: 1, + maxViewportDimensions: [4096; 2], // FIXME: update to correct value + viewportBoundsRange: [-8192.0, 8191.0], // FIXME: update to correct value + viewportSubPixelBits: 0, + minMemoryMapAlignment: MIN_MEMORY_MAP_ALIGNMENT, + minTexelBufferOffsetAlignment: 256, // FIXME: update to correct value + minUniformBufferOffsetAlignment: 256, // FIXME: update to correct value + minStorageBufferOffsetAlignment: 256, // FIXME: update to correct value + minTexelOffset: -8, // FIXME: update to correct value + maxTexelOffset: 7, // FIXME: update to correct value + minTexelGatherOffset: 0, + maxTexelGatherOffset: 0, + minInterpolationOffset: 0.0, + maxInterpolationOffset: 0.0, + subPixelInterpolationOffsetBits: 0, + maxFramebufferWidth: 4096, // FIXME: update to correct value + maxFramebufferHeight: 4096, // FIXME: update to correct value + maxFramebufferLayers: 256, // FIXME: update to correct value + framebufferColorSampleCounts: api::VK_SAMPLE_COUNT_1_BIT + | api::VK_SAMPLE_COUNT_4_BIT, // FIXME: update to correct value + framebufferDepthSampleCounts: api::VK_SAMPLE_COUNT_1_BIT + | api::VK_SAMPLE_COUNT_4_BIT, // FIXME: update to correct value + framebufferStencilSampleCounts: api::VK_SAMPLE_COUNT_1_BIT + | api::VK_SAMPLE_COUNT_4_BIT, // FIXME: update to correct value + framebufferNoAttachmentsSampleCounts: api::VK_SAMPLE_COUNT_1_BIT + | api::VK_SAMPLE_COUNT_4_BIT, // FIXME: update to correct value + maxColorAttachments: 4, + sampledImageColorSampleCounts: api::VK_SAMPLE_COUNT_1_BIT + | api::VK_SAMPLE_COUNT_4_BIT, // FIXME: update to correct value + sampledImageIntegerSampleCounts: api::VK_SAMPLE_COUNT_1_BIT + | api::VK_SAMPLE_COUNT_4_BIT, // FIXME: update to correct value + sampledImageDepthSampleCounts: api::VK_SAMPLE_COUNT_1_BIT + | api::VK_SAMPLE_COUNT_4_BIT, // FIXME: update to correct value + sampledImageStencilSampleCounts: api::VK_SAMPLE_COUNT_1_BIT + | api::VK_SAMPLE_COUNT_4_BIT, // FIXME: update to correct value + storageImageSampleCounts: api::VK_SAMPLE_COUNT_1_BIT, // FIXME: update to correct value + maxSampleMaskWords: 1, + timestampComputeAndGraphics: api::VK_FALSE, + timestampPeriod: 0.0, + maxClipDistances: 0, + maxCullDistances: 0, + maxCombinedClipAndCullDistances: 0, + discreteQueuePriorities: 2, + pointSizeRange: [1.0; 2], + lineWidthRange: [1.0; 2], + pointSizeGranularity: 0.0, + lineWidthGranularity: 0.0, + strictLines: api::VK_FALSE, + standardSampleLocations: api::VK_TRUE, + optimalBufferCopyOffsetAlignment: 16, + optimalBufferCopyRowPitchAlignment: 16, + nonCoherentAtomSize: 1, //TODO: check if this is correct + }, + sparseProperties: api::VkPhysicalDeviceSparseProperties { + residencyStandard2DBlockShape: api::VK_FALSE, + residencyStandard2DMultisampleBlockShape: api::VK_FALSE, + residencyStandard3DBlockShape: api::VK_FALSE, + residencyAlignedMipSize: api::VK_FALSE, + residencyNonResidentStrict: api::VK_FALSE, + }, + }, + }), + }); + Ok(retval.take()) + } } #[allow(non_snake_case)] -pub extern "system" fn vkGetInstanceProcAddr( +pub unsafe extern "system" fn vkGetInstanceProcAddr( instance: api::VkInstance, name: *const c_char, ) -> api::PFN_vkVoidFunction { match instance.get() { - Some(instance) => get_proc_address(name, ProcAddressScope::Instance, unsafe { - &instance.as_ref().enabled_extensions - }), - None => get_proc_address(name, ProcAddressScope::Global, &Extensions::default()), + Some(_) => get_proc_address( + name, + true, + &SharedHandle::from(instance) + .physical_device + .allowed_extensions, + ), + None => get_proc_address(name, false, &enum_map!{_ => false}), + } +} + +pub fn make_api_version(major: u32, minor: u32, patch: u32) -> u32 { + assert!(major < (1 << 10)); + assert!(minor < (1 << 10)); + assert!(patch < (1 << 12)); + (major << 22) | (minor << 12) | patch +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkEnumerateInstanceVersion(api_version: *mut u32) -> api::VkResult { + *api_version = make_api_version(1, 1, api::VK_HEADER_VERSION); + api::VK_SUCCESS +} + +pub unsafe fn enumerate_helper, I: IntoIterator>( + api_value_count: *mut u32, + api_values: *mut T, + values: I, +) -> api::VkResult { + let mut retval = api::VK_SUCCESS; + let mut api_values = if api_values.is_null() { + None + } else { + Some(slice::from_raw_parts_mut( + api_values, + *api_value_count as usize, + )) + }; + let mut final_count = 0; + for value in values { + if let Some(api_values) = &mut api_values { + if final_count >= api_values.len() { + retval = api::VK_INCOMPLETE; + break; + } else { + api_values[final_count] = value.borrow().clone(); + final_count += 1; + } + } else { + final_count += 1; + } + } + assert_eq!(final_count as u32 as usize, final_count); + *api_value_count = final_count as u32; + retval +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkEnumerateInstanceLayerProperties( + property_count: *mut u32, + properties: *mut api::VkLayerProperties, +) -> api::VkResult { + enumerate_helper(property_count, properties, &[]) +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkEnumerateInstanceExtensionProperties( + pLayerName: *const ::std::os::raw::c_char, + property_count: *mut u32, + properties: *mut api::VkExtensionProperties, +) -> api::VkResult { + if !pLayerName.is_null() { + return enumerate_helper(property_count, properties, &[]); + } + enumerate_helper( + property_count, + properties, + Extensions::default() + .iter() + .map(|(extension, _)| extension.get_properties()), + ) +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateInstance( + pCreateInfo: *const api::VkInstanceCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + pInstance: *mut api::VkInstance, +) -> api::VkResult { + *pInstance = Handle::null(); + match Instance::new(&*pCreateInfo) { + Ok(instance) => { + *pInstance = instance; + api::VK_SUCCESS + } + Err(error) => error, } } + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyInstance( + instance: api::VkInstance, + _pAllocator: *const api::VkAllocationCallbacks, +) { + instance.free(); +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkEnumeratePhysicalDevices( + instance: api::VkInstance, + pPhysicalDeviceCount: *mut u32, + pPhysicalDevices: *mut api::VkPhysicalDevice, +) -> api::VkResult { + let instance = SharedHandle::from(instance); + enumerate_helper( + pPhysicalDeviceCount, + pPhysicalDevices, + iter::once(instance.physical_device.get_handle()), + ) +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceFeatures( + _physicalDevice: api::VkPhysicalDevice, + _pFeatures: *mut api::VkPhysicalDeviceFeatures, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceFormatProperties( + _physicalDevice: api::VkPhysicalDevice, + _format: api::VkFormat, + _pFormatProperties: *mut api::VkFormatProperties, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceImageFormatProperties( + _physicalDevice: api::VkPhysicalDevice, + _format: api::VkFormat, + _type_: api::VkImageType, + _tiling: api::VkImageTiling, + _usage: api::VkImageUsageFlags, + _flags: api::VkImageCreateFlags, + _pImageFormatProperties: *mut api::VkImageFormatProperties, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceProperties( + physical_device: api::VkPhysicalDevice, + properties: *mut api::VkPhysicalDeviceProperties, +) { + let physical_device = SharedHandle::from(physical_device); + *properties = physical_device.properties; +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceQueueFamilyProperties( + _physicalDevice: api::VkPhysicalDevice, + _pQueueFamilyPropertyCount: *mut u32, + _pQueueFamilyProperties: *mut api::VkQueueFamilyProperties, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceMemoryProperties( + _physicalDevice: api::VkPhysicalDevice, + _pMemoryProperties: *mut api::VkPhysicalDeviceMemoryProperties, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetDeviceProcAddr( + _device: api::VkDevice, + _pName: *const ::std::os::raw::c_char, +) -> api::PFN_vkVoidFunction { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateDevice( + _physicalDevice: api::VkPhysicalDevice, + _pCreateInfo: *const api::VkDeviceCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pDevice: *mut api::VkDevice, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyDevice( + _device: api::VkDevice, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkEnumerateDeviceExtensionProperties( + _physicalDevice: api::VkPhysicalDevice, + _pLayerName: *const ::std::os::raw::c_char, + _pPropertyCount: *mut u32, + _pProperties: *mut api::VkExtensionProperties, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkEnumerateDeviceLayerProperties( + _physicalDevice: api::VkPhysicalDevice, + _pPropertyCount: *mut u32, + _pProperties: *mut api::VkLayerProperties, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetDeviceQueue( + _device: api::VkDevice, + _queueFamilyIndex: u32, + _queueIndex: u32, + _pQueue: *mut api::VkQueue, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkQueueSubmit( + _queue: api::VkQueue, + _submitCount: u32, + _pSubmits: *const api::VkSubmitInfo, + _fence: api::VkFence, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkQueueWaitIdle(_queue: api::VkQueue) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDeviceWaitIdle(_device: api::VkDevice) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkAllocateMemory( + _device: api::VkDevice, + _pAllocateInfo: *const api::VkMemoryAllocateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pMemory: *mut api::VkDeviceMemory, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkFreeMemory( + _device: api::VkDevice, + _memory: api::VkDeviceMemory, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkMapMemory( + _device: api::VkDevice, + _memory: api::VkDeviceMemory, + _offset: api::VkDeviceSize, + _size: api::VkDeviceSize, + _flags: api::VkMemoryMapFlags, + _ppData: *mut *mut ::std::os::raw::c_void, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkUnmapMemory(_device: api::VkDevice, _memory: api::VkDeviceMemory) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkFlushMappedMemoryRanges( + _device: api::VkDevice, + _memoryRangeCount: u32, + _pMemoryRanges: *const api::VkMappedMemoryRange, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkInvalidateMappedMemoryRanges( + _device: api::VkDevice, + _memoryRangeCount: u32, + _pMemoryRanges: *const api::VkMappedMemoryRange, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetDeviceMemoryCommitment( + _device: api::VkDevice, + _memory: api::VkDeviceMemory, + _pCommittedMemoryInBytes: *mut api::VkDeviceSize, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkBindBufferMemory( + _device: api::VkDevice, + _buffer: api::VkBuffer, + _memory: api::VkDeviceMemory, + _memoryOffset: api::VkDeviceSize, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkBindImageMemory( + _device: api::VkDevice, + _image: api::VkImage, + _memory: api::VkDeviceMemory, + _memoryOffset: api::VkDeviceSize, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetBufferMemoryRequirements( + _device: api::VkDevice, + _buffer: api::VkBuffer, + _pMemoryRequirements: *mut api::VkMemoryRequirements, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetImageMemoryRequirements( + _device: api::VkDevice, + _image: api::VkImage, + _pMemoryRequirements: *mut api::VkMemoryRequirements, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetImageSparseMemoryRequirements( + _device: api::VkDevice, + _image: api::VkImage, + _pSparseMemoryRequirementCount: *mut u32, + _pSparseMemoryRequirements: *mut api::VkSparseImageMemoryRequirements, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceSparseImageFormatProperties( + _physicalDevice: api::VkPhysicalDevice, + _format: api::VkFormat, + _type_: api::VkImageType, + _samples: api::VkSampleCountFlagBits, + _usage: api::VkImageUsageFlags, + _tiling: api::VkImageTiling, + _pPropertyCount: *mut u32, + _pProperties: *mut api::VkSparseImageFormatProperties, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkQueueBindSparse( + _queue: api::VkQueue, + _bindInfoCount: u32, + _pBindInfo: *const api::VkBindSparseInfo, + _fence: api::VkFence, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateFence( + _device: api::VkDevice, + _pCreateInfo: *const api::VkFenceCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pFence: *mut api::VkFence, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyFence( + _device: api::VkDevice, + _fence: api::VkFence, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkResetFences( + _device: api::VkDevice, + _fenceCount: u32, + _pFences: *const api::VkFence, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetFenceStatus( + _device: api::VkDevice, + _fence: api::VkFence, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkWaitForFences( + _device: api::VkDevice, + _fenceCount: u32, + _pFences: *const api::VkFence, + _waitAll: api::VkBool32, + _timeout: u64, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateSemaphore( + _device: api::VkDevice, + _pCreateInfo: *const api::VkSemaphoreCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pSemaphore: *mut api::VkSemaphore, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroySemaphore( + _device: api::VkDevice, + _semaphore: api::VkSemaphore, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateEvent( + _device: api::VkDevice, + _pCreateInfo: *const api::VkEventCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pEvent: *mut api::VkEvent, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyEvent( + _device: api::VkDevice, + _event: api::VkEvent, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetEventStatus( + _device: api::VkDevice, + _event: api::VkEvent, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkSetEvent( + _device: api::VkDevice, + _event: api::VkEvent, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkResetEvent( + _device: api::VkDevice, + _event: api::VkEvent, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateQueryPool( + _device: api::VkDevice, + _pCreateInfo: *const api::VkQueryPoolCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pQueryPool: *mut api::VkQueryPool, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyQueryPool( + _device: api::VkDevice, + _queryPool: api::VkQueryPool, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetQueryPoolResults( + _device: api::VkDevice, + _queryPool: api::VkQueryPool, + _firstQuery: u32, + _queryCount: u32, + _dataSize: usize, + _pData: *mut ::std::os::raw::c_void, + _stride: api::VkDeviceSize, + _flags: api::VkQueryResultFlags, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateBuffer( + _device: api::VkDevice, + _pCreateInfo: *const api::VkBufferCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pBuffer: *mut api::VkBuffer, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyBuffer( + _device: api::VkDevice, + _buffer: api::VkBuffer, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateBufferView( + _device: api::VkDevice, + _pCreateInfo: *const api::VkBufferViewCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pView: *mut api::VkBufferView, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyBufferView( + _device: api::VkDevice, + _bufferView: api::VkBufferView, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateImage( + _device: api::VkDevice, + _pCreateInfo: *const api::VkImageCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pImage: *mut api::VkImage, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyImage( + _device: api::VkDevice, + _image: api::VkImage, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetImageSubresourceLayout( + _device: api::VkDevice, + _image: api::VkImage, + _pSubresource: *const api::VkImageSubresource, + _pLayout: *mut api::VkSubresourceLayout, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateImageView( + _device: api::VkDevice, + _pCreateInfo: *const api::VkImageViewCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pView: *mut api::VkImageView, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyImageView( + _device: api::VkDevice, + _imageView: api::VkImageView, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateShaderModule( + _device: api::VkDevice, + _pCreateInfo: *const api::VkShaderModuleCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pShaderModule: *mut api::VkShaderModule, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyShaderModule( + _device: api::VkDevice, + _shaderModule: api::VkShaderModule, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreatePipelineCache( + _device: api::VkDevice, + _pCreateInfo: *const api::VkPipelineCacheCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pPipelineCache: *mut api::VkPipelineCache, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyPipelineCache( + _device: api::VkDevice, + _pipelineCache: api::VkPipelineCache, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPipelineCacheData( + _device: api::VkDevice, + _pipelineCache: api::VkPipelineCache, + _pDataSize: *mut usize, + _pData: *mut ::std::os::raw::c_void, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkMergePipelineCaches( + _device: api::VkDevice, + _dstCache: api::VkPipelineCache, + _srcCacheCount: u32, + _pSrcCaches: *const api::VkPipelineCache, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateGraphicsPipelines( + _device: api::VkDevice, + _pipelineCache: api::VkPipelineCache, + _createInfoCount: u32, + _pCreateInfos: *const api::VkGraphicsPipelineCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pPipelines: *mut api::VkPipeline, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateComputePipelines( + _device: api::VkDevice, + _pipelineCache: api::VkPipelineCache, + _createInfoCount: u32, + _pCreateInfos: *const api::VkComputePipelineCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pPipelines: *mut api::VkPipeline, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyPipeline( + _device: api::VkDevice, + _pipeline: api::VkPipeline, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreatePipelineLayout( + _device: api::VkDevice, + _pCreateInfo: *const api::VkPipelineLayoutCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pPipelineLayout: *mut api::VkPipelineLayout, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyPipelineLayout( + _device: api::VkDevice, + _pipelineLayout: api::VkPipelineLayout, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateSampler( + _device: api::VkDevice, + _pCreateInfo: *const api::VkSamplerCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pSampler: *mut api::VkSampler, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroySampler( + _device: api::VkDevice, + _sampler: api::VkSampler, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateDescriptorSetLayout( + _device: api::VkDevice, + _pCreateInfo: *const api::VkDescriptorSetLayoutCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pSetLayout: *mut api::VkDescriptorSetLayout, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyDescriptorSetLayout( + _device: api::VkDevice, + _descriptorSetLayout: api::VkDescriptorSetLayout, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateDescriptorPool( + _device: api::VkDevice, + _pCreateInfo: *const api::VkDescriptorPoolCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pDescriptorPool: *mut api::VkDescriptorPool, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyDescriptorPool( + _device: api::VkDevice, + _descriptorPool: api::VkDescriptorPool, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkResetDescriptorPool( + _device: api::VkDevice, + _descriptorPool: api::VkDescriptorPool, + _flags: api::VkDescriptorPoolResetFlags, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkAllocateDescriptorSets( + _device: api::VkDevice, + _pAllocateInfo: *const api::VkDescriptorSetAllocateInfo, + _pDescriptorSets: *mut api::VkDescriptorSet, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkFreeDescriptorSets( + _device: api::VkDevice, + _descriptorPool: api::VkDescriptorPool, + _descriptorSetCount: u32, + _pDescriptorSets: *const api::VkDescriptorSet, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkUpdateDescriptorSets( + _device: api::VkDevice, + _descriptorWriteCount: u32, + _pDescriptorWrites: *const api::VkWriteDescriptorSet, + _descriptorCopyCount: u32, + _pDescriptorCopies: *const api::VkCopyDescriptorSet, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateFramebuffer( + _device: api::VkDevice, + _pCreateInfo: *const api::VkFramebufferCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pFramebuffer: *mut api::VkFramebuffer, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyFramebuffer( + _device: api::VkDevice, + _framebuffer: api::VkFramebuffer, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateRenderPass( + _device: api::VkDevice, + _pCreateInfo: *const api::VkRenderPassCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pRenderPass: *mut api::VkRenderPass, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyRenderPass( + _device: api::VkDevice, + _renderPass: api::VkRenderPass, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetRenderAreaGranularity( + _device: api::VkDevice, + _renderPass: api::VkRenderPass, + _pGranularity: *mut api::VkExtent2D, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateCommandPool( + _device: api::VkDevice, + _pCreateInfo: *const api::VkCommandPoolCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pCommandPool: *mut api::VkCommandPool, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyCommandPool( + _device: api::VkDevice, + _commandPool: api::VkCommandPool, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkResetCommandPool( + _device: api::VkDevice, + _commandPool: api::VkCommandPool, + _flags: api::VkCommandPoolResetFlags, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkAllocateCommandBuffers( + _device: api::VkDevice, + _pAllocateInfo: *const api::VkCommandBufferAllocateInfo, + _pCommandBuffers: *mut api::VkCommandBuffer, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkFreeCommandBuffers( + _device: api::VkDevice, + _commandPool: api::VkCommandPool, + _commandBufferCount: u32, + _pCommandBuffers: *const api::VkCommandBuffer, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkBeginCommandBuffer( + _commandBuffer: api::VkCommandBuffer, + _pBeginInfo: *const api::VkCommandBufferBeginInfo, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkEndCommandBuffer( + _commandBuffer: api::VkCommandBuffer, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkResetCommandBuffer( + _commandBuffer: api::VkCommandBuffer, + _flags: api::VkCommandBufferResetFlags, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdBindPipeline( + _commandBuffer: api::VkCommandBuffer, + _pipelineBindPoint: api::VkPipelineBindPoint, + _pipeline: api::VkPipeline, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdSetViewport( + _commandBuffer: api::VkCommandBuffer, + _firstViewport: u32, + _viewportCount: u32, + _pViewports: *const api::VkViewport, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdSetScissor( + _commandBuffer: api::VkCommandBuffer, + _firstScissor: u32, + _scissorCount: u32, + _pScissors: *const api::VkRect2D, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdSetLineWidth( + _commandBuffer: api::VkCommandBuffer, + _lineWidth: f32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdSetDepthBias( + _commandBuffer: api::VkCommandBuffer, + _depthBiasConstantFactor: f32, + _depthBiasClamp: f32, + _depthBiasSlopeFactor: f32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdSetBlendConstants( + _commandBuffer: api::VkCommandBuffer, + _blendConstants: *const f32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdSetDepthBounds( + _commandBuffer: api::VkCommandBuffer, + _minDepthBounds: f32, + _maxDepthBounds: f32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdSetStencilCompareMask( + _commandBuffer: api::VkCommandBuffer, + _faceMask: api::VkStencilFaceFlags, + _compareMask: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdSetStencilWriteMask( + _commandBuffer: api::VkCommandBuffer, + _faceMask: api::VkStencilFaceFlags, + _writeMask: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdSetStencilReference( + _commandBuffer: api::VkCommandBuffer, + _faceMask: api::VkStencilFaceFlags, + _reference: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdBindDescriptorSets( + _commandBuffer: api::VkCommandBuffer, + _pipelineBindPoint: api::VkPipelineBindPoint, + _layout: api::VkPipelineLayout, + _firstSet: u32, + _descriptorSetCount: u32, + _pDescriptorSets: *const api::VkDescriptorSet, + _dynamicOffsetCount: u32, + _pDynamicOffsets: *const u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdBindIndexBuffer( + _commandBuffer: api::VkCommandBuffer, + _buffer: api::VkBuffer, + _offset: api::VkDeviceSize, + _indexType: api::VkIndexType, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdBindVertexBuffers( + _commandBuffer: api::VkCommandBuffer, + _firstBinding: u32, + _bindingCount: u32, + _pBuffers: *const api::VkBuffer, + _pOffsets: *const api::VkDeviceSize, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdDraw( + _commandBuffer: api::VkCommandBuffer, + _vertexCount: u32, + _instanceCount: u32, + _firstVertex: u32, + _firstInstance: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdDrawIndexed( + _commandBuffer: api::VkCommandBuffer, + _indexCount: u32, + _instanceCount: u32, + _firstIndex: u32, + _vertexOffset: i32, + _firstInstance: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdDrawIndirect( + _commandBuffer: api::VkCommandBuffer, + _buffer: api::VkBuffer, + _offset: api::VkDeviceSize, + _drawCount: u32, + _stride: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdDrawIndexedIndirect( + _commandBuffer: api::VkCommandBuffer, + _buffer: api::VkBuffer, + _offset: api::VkDeviceSize, + _drawCount: u32, + _stride: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdDispatch( + _commandBuffer: api::VkCommandBuffer, + _groupCountX: u32, + _groupCountY: u32, + _groupCountZ: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdDispatchIndirect( + _commandBuffer: api::VkCommandBuffer, + _buffer: api::VkBuffer, + _offset: api::VkDeviceSize, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdCopyBuffer( + _commandBuffer: api::VkCommandBuffer, + _srcBuffer: api::VkBuffer, + _dstBuffer: api::VkBuffer, + _regionCount: u32, + _pRegions: *const api::VkBufferCopy, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdCopyImage( + _commandBuffer: api::VkCommandBuffer, + _srcImage: api::VkImage, + _srcImageLayout: api::VkImageLayout, + _dstImage: api::VkImage, + _dstImageLayout: api::VkImageLayout, + _regionCount: u32, + _pRegions: *const api::VkImageCopy, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdBlitImage( + _commandBuffer: api::VkCommandBuffer, + _srcImage: api::VkImage, + _srcImageLayout: api::VkImageLayout, + _dstImage: api::VkImage, + _dstImageLayout: api::VkImageLayout, + _regionCount: u32, + _pRegions: *const api::VkImageBlit, + _filter: api::VkFilter, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdCopyBufferToImage( + _commandBuffer: api::VkCommandBuffer, + _srcBuffer: api::VkBuffer, + _dstImage: api::VkImage, + _dstImageLayout: api::VkImageLayout, + _regionCount: u32, + _pRegions: *const api::VkBufferImageCopy, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdCopyImageToBuffer( + _commandBuffer: api::VkCommandBuffer, + _srcImage: api::VkImage, + _srcImageLayout: api::VkImageLayout, + _dstBuffer: api::VkBuffer, + _regionCount: u32, + _pRegions: *const api::VkBufferImageCopy, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdUpdateBuffer( + _commandBuffer: api::VkCommandBuffer, + _dstBuffer: api::VkBuffer, + _dstOffset: api::VkDeviceSize, + _dataSize: api::VkDeviceSize, + _pData: *const ::std::os::raw::c_void, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdFillBuffer( + _commandBuffer: api::VkCommandBuffer, + _dstBuffer: api::VkBuffer, + _dstOffset: api::VkDeviceSize, + _size: api::VkDeviceSize, + _data: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdClearColorImage( + _commandBuffer: api::VkCommandBuffer, + _image: api::VkImage, + _imageLayout: api::VkImageLayout, + _pColor: *const api::VkClearColorValue, + _rangeCount: u32, + _pRanges: *const api::VkImageSubresourceRange, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdClearDepthStencilImage( + _commandBuffer: api::VkCommandBuffer, + _image: api::VkImage, + _imageLayout: api::VkImageLayout, + _pDepthStencil: *const api::VkClearDepthStencilValue, + _rangeCount: u32, + _pRanges: *const api::VkImageSubresourceRange, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdClearAttachments( + _commandBuffer: api::VkCommandBuffer, + _attachmentCount: u32, + _pAttachments: *const api::VkClearAttachment, + _rectCount: u32, + _pRects: *const api::VkClearRect, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdResolveImage( + _commandBuffer: api::VkCommandBuffer, + _srcImage: api::VkImage, + _srcImageLayout: api::VkImageLayout, + _dstImage: api::VkImage, + _dstImageLayout: api::VkImageLayout, + _regionCount: u32, + _pRegions: *const api::VkImageResolve, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdSetEvent( + _commandBuffer: api::VkCommandBuffer, + _event: api::VkEvent, + _stageMask: api::VkPipelineStageFlags, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdResetEvent( + _commandBuffer: api::VkCommandBuffer, + _event: api::VkEvent, + _stageMask: api::VkPipelineStageFlags, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdWaitEvents( + _commandBuffer: api::VkCommandBuffer, + _eventCount: u32, + _pEvents: *const api::VkEvent, + _srcStageMask: api::VkPipelineStageFlags, + _dstStageMask: api::VkPipelineStageFlags, + _memoryBarrierCount: u32, + _pMemoryBarriers: *const api::VkMemoryBarrier, + _bufferMemoryBarrierCount: u32, + _pBufferMemoryBarriers: *const api::VkBufferMemoryBarrier, + _imageMemoryBarrierCount: u32, + _pImageMemoryBarriers: *const api::VkImageMemoryBarrier, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdPipelineBarrier( + _commandBuffer: api::VkCommandBuffer, + _srcStageMask: api::VkPipelineStageFlags, + _dstStageMask: api::VkPipelineStageFlags, + _dependencyFlags: api::VkDependencyFlags, + _memoryBarrierCount: u32, + _pMemoryBarriers: *const api::VkMemoryBarrier, + _bufferMemoryBarrierCount: u32, + _pBufferMemoryBarriers: *const api::VkBufferMemoryBarrier, + _imageMemoryBarrierCount: u32, + _pImageMemoryBarriers: *const api::VkImageMemoryBarrier, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdBeginQuery( + _commandBuffer: api::VkCommandBuffer, + _queryPool: api::VkQueryPool, + _query: u32, + _flags: api::VkQueryControlFlags, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdEndQuery( + _commandBuffer: api::VkCommandBuffer, + _queryPool: api::VkQueryPool, + _query: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdResetQueryPool( + _commandBuffer: api::VkCommandBuffer, + _queryPool: api::VkQueryPool, + _firstQuery: u32, + _queryCount: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdWriteTimestamp( + _commandBuffer: api::VkCommandBuffer, + _pipelineStage: api::VkPipelineStageFlagBits, + _queryPool: api::VkQueryPool, + _query: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdCopyQueryPoolResults( + _commandBuffer: api::VkCommandBuffer, + _queryPool: api::VkQueryPool, + _firstQuery: u32, + _queryCount: u32, + _dstBuffer: api::VkBuffer, + _dstOffset: api::VkDeviceSize, + _stride: api::VkDeviceSize, + _flags: api::VkQueryResultFlags, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdPushConstants( + _commandBuffer: api::VkCommandBuffer, + _layout: api::VkPipelineLayout, + _stageFlags: api::VkShaderStageFlags, + _offset: u32, + _size: u32, + _pValues: *const ::std::os::raw::c_void, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdBeginRenderPass( + _commandBuffer: api::VkCommandBuffer, + _pRenderPassBegin: *const api::VkRenderPassBeginInfo, + _contents: api::VkSubpassContents, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdNextSubpass( + _commandBuffer: api::VkCommandBuffer, + _contents: api::VkSubpassContents, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdEndRenderPass(_commandBuffer: api::VkCommandBuffer) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdExecuteCommands( + _commandBuffer: api::VkCommandBuffer, + _commandBufferCount: u32, + _pCommandBuffers: *const api::VkCommandBuffer, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkBindBufferMemory2( + _device: api::VkDevice, + _bindInfoCount: u32, + _pBindInfos: *const api::VkBindBufferMemoryInfo, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkBindImageMemory2( + _device: api::VkDevice, + _bindInfoCount: u32, + _pBindInfos: *const api::VkBindImageMemoryInfo, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetDeviceGroupPeerMemoryFeatures( + _device: api::VkDevice, + _heapIndex: u32, + _localDeviceIndex: u32, + _remoteDeviceIndex: u32, + _pPeerMemoryFeatures: *mut api::VkPeerMemoryFeatureFlags, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdSetDeviceMask( + _commandBuffer: api::VkCommandBuffer, + _deviceMask: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdDispatchBase( + _commandBuffer: api::VkCommandBuffer, + _baseGroupX: u32, + _baseGroupY: u32, + _baseGroupZ: u32, + _groupCountX: u32, + _groupCountY: u32, + _groupCountZ: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkEnumeratePhysicalDeviceGroups( + _instance: api::VkInstance, + _pPhysicalDeviceGroupCount: *mut u32, + _pPhysicalDeviceGroupProperties: *mut api::VkPhysicalDeviceGroupProperties, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetImageMemoryRequirements2( + _device: api::VkDevice, + _pInfo: *const api::VkImageMemoryRequirementsInfo2, + _pMemoryRequirements: *mut api::VkMemoryRequirements2, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetBufferMemoryRequirements2( + _device: api::VkDevice, + _pInfo: *const api::VkBufferMemoryRequirementsInfo2, + _pMemoryRequirements: *mut api::VkMemoryRequirements2, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetImageSparseMemoryRequirements2( + _device: api::VkDevice, + _pInfo: *const api::VkImageSparseMemoryRequirementsInfo2, + _pSparseMemoryRequirementCount: *mut u32, + _pSparseMemoryRequirements: *mut api::VkSparseImageMemoryRequirements2, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceFeatures2( + _physicalDevice: api::VkPhysicalDevice, + _pFeatures: *mut api::VkPhysicalDeviceFeatures2, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceProperties2( + _physicalDevice: api::VkPhysicalDevice, + _pProperties: *mut api::VkPhysicalDeviceProperties2, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceFormatProperties2( + _physicalDevice: api::VkPhysicalDevice, + _format: api::VkFormat, + _pFormatProperties: *mut api::VkFormatProperties2, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceImageFormatProperties2( + _physicalDevice: api::VkPhysicalDevice, + _pImageFormatInfo: *const api::VkPhysicalDeviceImageFormatInfo2, + _pImageFormatProperties: *mut api::VkImageFormatProperties2, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceQueueFamilyProperties2( + _physicalDevice: api::VkPhysicalDevice, + _pQueueFamilyPropertyCount: *mut u32, + _pQueueFamilyProperties: *mut api::VkQueueFamilyProperties2, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceMemoryProperties2( + _physicalDevice: api::VkPhysicalDevice, + _pMemoryProperties: *mut api::VkPhysicalDeviceMemoryProperties2, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceSparseImageFormatProperties2( + _physicalDevice: api::VkPhysicalDevice, + _pFormatInfo: *const api::VkPhysicalDeviceSparseImageFormatInfo2, + _pPropertyCount: *mut u32, + _pProperties: *mut api::VkSparseImageFormatProperties2, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkTrimCommandPool( + _device: api::VkDevice, + _commandPool: api::VkCommandPool, + _flags: api::VkCommandPoolTrimFlags, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetDeviceQueue2( + _device: api::VkDevice, + _pQueueInfo: *const api::VkDeviceQueueInfo2, + _pQueue: *mut api::VkQueue, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateSamplerYcbcrConversion( + _device: api::VkDevice, + _pCreateInfo: *const api::VkSamplerYcbcrConversionCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pYcbcrConversion: *mut api::VkSamplerYcbcrConversion, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroySamplerYcbcrConversion( + _device: api::VkDevice, + _ycbcrConversion: api::VkSamplerYcbcrConversion, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateDescriptorUpdateTemplate( + _device: api::VkDevice, + _pCreateInfo: *const api::VkDescriptorUpdateTemplateCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pDescriptorUpdateTemplate: *mut api::VkDescriptorUpdateTemplate, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyDescriptorUpdateTemplate( + _device: api::VkDevice, + _descriptorUpdateTemplate: api::VkDescriptorUpdateTemplate, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkUpdateDescriptorSetWithTemplate( + _device: api::VkDevice, + _descriptorSet: api::VkDescriptorSet, + _descriptorUpdateTemplate: api::VkDescriptorUpdateTemplate, + _pData: *const ::std::os::raw::c_void, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceExternalBufferProperties( + _physicalDevice: api::VkPhysicalDevice, + _pExternalBufferInfo: *const api::VkPhysicalDeviceExternalBufferInfo, + _pExternalBufferProperties: *mut api::VkExternalBufferProperties, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceExternalFenceProperties( + _physicalDevice: api::VkPhysicalDevice, + _pExternalFenceInfo: *const api::VkPhysicalDeviceExternalFenceInfo, + _pExternalFenceProperties: *mut api::VkExternalFenceProperties, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceExternalSemaphoreProperties( + _physicalDevice: api::VkPhysicalDevice, + _pExternalSemaphoreInfo: *const api::VkPhysicalDeviceExternalSemaphoreInfo, + _pExternalSemaphoreProperties: *mut api::VkExternalSemaphoreProperties, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetDescriptorSetLayoutSupport( + _device: api::VkDevice, + _pCreateInfo: *const api::VkDescriptorSetLayoutCreateInfo, + _pSupport: *mut api::VkDescriptorSetLayoutSupport, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroySurfaceKHR( + _instance: api::VkInstance, + _surface: api::VkSurfaceKHR, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceSurfaceSupportKHR( + _physicalDevice: api::VkPhysicalDevice, + _queueFamilyIndex: u32, + _surface: api::VkSurfaceKHR, + _pSupported: *mut api::VkBool32, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceSurfaceCapabilitiesKHR( + _physicalDevice: api::VkPhysicalDevice, + _surface: api::VkSurfaceKHR, + _pSurfaceCapabilities: *mut api::VkSurfaceCapabilitiesKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceSurfaceFormatsKHR( + _physicalDevice: api::VkPhysicalDevice, + _surface: api::VkSurfaceKHR, + _pSurfaceFormatCount: *mut u32, + _pSurfaceFormats: *mut api::VkSurfaceFormatKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceSurfacePresentModesKHR( + _physicalDevice: api::VkPhysicalDevice, + _surface: api::VkSurfaceKHR, + _pPresentModeCount: *mut u32, + _pPresentModes: *mut api::VkPresentModeKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateSwapchainKHR( + _device: api::VkDevice, + _pCreateInfo: *const api::VkSwapchainCreateInfoKHR, + _pAllocator: *const api::VkAllocationCallbacks, + _pSwapchain: *mut api::VkSwapchainKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroySwapchainKHR( + _device: api::VkDevice, + _swapchain: api::VkSwapchainKHR, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetSwapchainImagesKHR( + _device: api::VkDevice, + _swapchain: api::VkSwapchainKHR, + _pSwapchainImageCount: *mut u32, + _pSwapchainImages: *mut api::VkImage, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkAcquireNextImageKHR( + _device: api::VkDevice, + _swapchain: api::VkSwapchainKHR, + _timeout: u64, + _semaphore: api::VkSemaphore, + _fence: api::VkFence, + _pImageIndex: *mut u32, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkQueuePresentKHR( + _queue: api::VkQueue, + _pPresentInfo: *const api::VkPresentInfoKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetDeviceGroupPresentCapabilitiesKHR( + _device: api::VkDevice, + _pDeviceGroupPresentCapabilities: *mut api::VkDeviceGroupPresentCapabilitiesKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetDeviceGroupSurfacePresentModesKHR( + _device: api::VkDevice, + _surface: api::VkSurfaceKHR, + _pModes: *mut api::VkDeviceGroupPresentModeFlagsKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDevicePresentRectanglesKHR( + _physicalDevice: api::VkPhysicalDevice, + _surface: api::VkSurfaceKHR, + _pRectCount: *mut u32, + _pRects: *mut api::VkRect2D, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkAcquireNextImage2KHR( + _device: api::VkDevice, + _pAcquireInfo: *const api::VkAcquireNextImageInfoKHR, + _pImageIndex: *mut u32, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceDisplayPropertiesKHR( + _physicalDevice: api::VkPhysicalDevice, + _pPropertyCount: *mut u32, + _pProperties: *mut api::VkDisplayPropertiesKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceDisplayPlanePropertiesKHR( + _physicalDevice: api::VkPhysicalDevice, + _pPropertyCount: *mut u32, + _pProperties: *mut api::VkDisplayPlanePropertiesKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetDisplayPlaneSupportedDisplaysKHR( + _physicalDevice: api::VkPhysicalDevice, + _planeIndex: u32, + _pDisplayCount: *mut u32, + _pDisplays: *mut api::VkDisplayKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetDisplayModePropertiesKHR( + _physicalDevice: api::VkPhysicalDevice, + _display: api::VkDisplayKHR, + _pPropertyCount: *mut u32, + _pProperties: *mut api::VkDisplayModePropertiesKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateDisplayModeKHR( + _physicalDevice: api::VkPhysicalDevice, + _display: api::VkDisplayKHR, + _pCreateInfo: *const api::VkDisplayModeCreateInfoKHR, + _pAllocator: *const api::VkAllocationCallbacks, + _pMode: *mut api::VkDisplayModeKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetDisplayPlaneCapabilitiesKHR( + _physicalDevice: api::VkPhysicalDevice, + _mode: api::VkDisplayModeKHR, + _planeIndex: u32, + _pCapabilities: *mut api::VkDisplayPlaneCapabilitiesKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateDisplayPlaneSurfaceKHR( + _instance: api::VkInstance, + _pCreateInfo: *const api::VkDisplaySurfaceCreateInfoKHR, + _pAllocator: *const api::VkAllocationCallbacks, + _pSurface: *mut api::VkSurfaceKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateSharedSwapchainsKHR( + _device: api::VkDevice, + _swapchainCount: u32, + _pCreateInfos: *const api::VkSwapchainCreateInfoKHR, + _pAllocator: *const api::VkAllocationCallbacks, + _pSwapchains: *mut api::VkSwapchainKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceFeatures2KHR( + _physicalDevice: api::VkPhysicalDevice, + _pFeatures: *mut api::VkPhysicalDeviceFeatures2, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceProperties2KHR( + _physicalDevice: api::VkPhysicalDevice, + _pProperties: *mut api::VkPhysicalDeviceProperties2, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceFormatProperties2KHR( + _physicalDevice: api::VkPhysicalDevice, + _format: api::VkFormat, + _pFormatProperties: *mut api::VkFormatProperties2, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceImageFormatProperties2KHR( + _physicalDevice: api::VkPhysicalDevice, + _pImageFormatInfo: *const api::VkPhysicalDeviceImageFormatInfo2, + _pImageFormatProperties: *mut api::VkImageFormatProperties2, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceQueueFamilyProperties2KHR( + _physicalDevice: api::VkPhysicalDevice, + _pQueueFamilyPropertyCount: *mut u32, + _pQueueFamilyProperties: *mut api::VkQueueFamilyProperties2, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceMemoryProperties2KHR( + _physicalDevice: api::VkPhysicalDevice, + _pMemoryProperties: *mut api::VkPhysicalDeviceMemoryProperties2, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceSparseImageFormatProperties2KHR( + _physicalDevice: api::VkPhysicalDevice, + _pFormatInfo: *const api::VkPhysicalDeviceSparseImageFormatInfo2, + _pPropertyCount: *mut u32, + _pProperties: *mut api::VkSparseImageFormatProperties2, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetDeviceGroupPeerMemoryFeaturesKHR( + _device: api::VkDevice, + _heapIndex: u32, + _localDeviceIndex: u32, + _remoteDeviceIndex: u32, + _pPeerMemoryFeatures: *mut api::VkPeerMemoryFeatureFlags, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdSetDeviceMaskKHR( + _commandBuffer: api::VkCommandBuffer, + _deviceMask: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdDispatchBaseKHR( + _commandBuffer: api::VkCommandBuffer, + _baseGroupX: u32, + _baseGroupY: u32, + _baseGroupZ: u32, + _groupCountX: u32, + _groupCountY: u32, + _groupCountZ: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkTrimCommandPoolKHR( + _device: api::VkDevice, + _commandPool: api::VkCommandPool, + _flags: api::VkCommandPoolTrimFlags, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkEnumeratePhysicalDeviceGroupsKHR( + _instance: api::VkInstance, + _pPhysicalDeviceGroupCount: *mut u32, + _pPhysicalDeviceGroupProperties: *mut api::VkPhysicalDeviceGroupProperties, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceExternalBufferPropertiesKHR( + _physicalDevice: api::VkPhysicalDevice, + _pExternalBufferInfo: *const api::VkPhysicalDeviceExternalBufferInfo, + _pExternalBufferProperties: *mut api::VkExternalBufferProperties, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetMemoryFdKHR( + _device: api::VkDevice, + _pGetFdInfo: *const api::VkMemoryGetFdInfoKHR, + _pFd: *mut ::std::os::raw::c_int, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetMemoryFdPropertiesKHR( + _device: api::VkDevice, + _handleType: api::VkExternalMemoryHandleTypeFlagBits, + _fd: ::std::os::raw::c_int, + _pMemoryFdProperties: *mut api::VkMemoryFdPropertiesKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( + _physicalDevice: api::VkPhysicalDevice, + _pExternalSemaphoreInfo: *const api::VkPhysicalDeviceExternalSemaphoreInfo, + _pExternalSemaphoreProperties: *mut api::VkExternalSemaphoreProperties, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkImportSemaphoreFdKHR( + _device: api::VkDevice, + _pImportSemaphoreFdInfo: *const api::VkImportSemaphoreFdInfoKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetSemaphoreFdKHR( + _device: api::VkDevice, + _pGetFdInfo: *const api::VkSemaphoreGetFdInfoKHR, + _pFd: *mut ::std::os::raw::c_int, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdPushDescriptorSetKHR( + _commandBuffer: api::VkCommandBuffer, + _pipelineBindPoint: api::VkPipelineBindPoint, + _layout: api::VkPipelineLayout, + _set: u32, + _descriptorWriteCount: u32, + _pDescriptorWrites: *const api::VkWriteDescriptorSet, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdPushDescriptorSetWithTemplateKHR( + _commandBuffer: api::VkCommandBuffer, + _descriptorUpdateTemplate: api::VkDescriptorUpdateTemplate, + _layout: api::VkPipelineLayout, + _set: u32, + _pData: *const ::std::os::raw::c_void, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateDescriptorUpdateTemplateKHR( + _device: api::VkDevice, + _pCreateInfo: *const api::VkDescriptorUpdateTemplateCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pDescriptorUpdateTemplate: *mut api::VkDescriptorUpdateTemplate, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyDescriptorUpdateTemplateKHR( + _device: api::VkDevice, + _descriptorUpdateTemplate: api::VkDescriptorUpdateTemplate, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkUpdateDescriptorSetWithTemplateKHR( + _device: api::VkDevice, + _descriptorSet: api::VkDescriptorSet, + _descriptorUpdateTemplate: api::VkDescriptorUpdateTemplate, + _pData: *const ::std::os::raw::c_void, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateRenderPass2KHR( + _device: api::VkDevice, + _pCreateInfo: *const api::VkRenderPassCreateInfo2KHR, + _pAllocator: *const api::VkAllocationCallbacks, + _pRenderPass: *mut api::VkRenderPass, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdBeginRenderPass2KHR( + _commandBuffer: api::VkCommandBuffer, + _pRenderPassBegin: *const api::VkRenderPassBeginInfo, + _pSubpassBeginInfo: *const api::VkSubpassBeginInfoKHR, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdNextSubpass2KHR( + _commandBuffer: api::VkCommandBuffer, + _pSubpassBeginInfo: *const api::VkSubpassBeginInfoKHR, + _pSubpassEndInfo: *const api::VkSubpassEndInfoKHR, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdEndRenderPass2KHR( + _commandBuffer: api::VkCommandBuffer, + _pSubpassEndInfo: *const api::VkSubpassEndInfoKHR, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetSwapchainStatusKHR( + _device: api::VkDevice, + _swapchain: api::VkSwapchainKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceExternalFencePropertiesKHR( + _physicalDevice: api::VkPhysicalDevice, + _pExternalFenceInfo: *const api::VkPhysicalDeviceExternalFenceInfo, + _pExternalFenceProperties: *mut api::VkExternalFenceProperties, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkImportFenceFdKHR( + _device: api::VkDevice, + _pImportFenceFdInfo: *const api::VkImportFenceFdInfoKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetFenceFdKHR( + _device: api::VkDevice, + _pGetFdInfo: *const api::VkFenceGetFdInfoKHR, + _pFd: *mut ::std::os::raw::c_int, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceSurfaceCapabilities2KHR( + _physicalDevice: api::VkPhysicalDevice, + _pSurfaceInfo: *const api::VkPhysicalDeviceSurfaceInfo2KHR, + _pSurfaceCapabilities: *mut api::VkSurfaceCapabilities2KHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceSurfaceFormats2KHR( + _physicalDevice: api::VkPhysicalDevice, + _pSurfaceInfo: *const api::VkPhysicalDeviceSurfaceInfo2KHR, + _pSurfaceFormatCount: *mut u32, + _pSurfaceFormats: *mut api::VkSurfaceFormat2KHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceDisplayProperties2KHR( + _physicalDevice: api::VkPhysicalDevice, + _pPropertyCount: *mut u32, + _pProperties: *mut api::VkDisplayProperties2KHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceDisplayPlaneProperties2KHR( + _physicalDevice: api::VkPhysicalDevice, + _pPropertyCount: *mut u32, + _pProperties: *mut api::VkDisplayPlaneProperties2KHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetDisplayModeProperties2KHR( + _physicalDevice: api::VkPhysicalDevice, + _display: api::VkDisplayKHR, + _pPropertyCount: *mut u32, + _pProperties: *mut api::VkDisplayModeProperties2KHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetDisplayPlaneCapabilities2KHR( + _physicalDevice: api::VkPhysicalDevice, + _pDisplayPlaneInfo: *const api::VkDisplayPlaneInfo2KHR, + _pCapabilities: *mut api::VkDisplayPlaneCapabilities2KHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetImageMemoryRequirements2KHR( + _device: api::VkDevice, + _pInfo: *const api::VkImageMemoryRequirementsInfo2, + _pMemoryRequirements: *mut api::VkMemoryRequirements2, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetBufferMemoryRequirements2KHR( + _device: api::VkDevice, + _pInfo: *const api::VkBufferMemoryRequirementsInfo2, + _pMemoryRequirements: *mut api::VkMemoryRequirements2, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetImageSparseMemoryRequirements2KHR( + _device: api::VkDevice, + _pInfo: *const api::VkImageSparseMemoryRequirementsInfo2, + _pSparseMemoryRequirementCount: *mut u32, + _pSparseMemoryRequirements: *mut api::VkSparseImageMemoryRequirements2, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateSamplerYcbcrConversionKHR( + _device: api::VkDevice, + _pCreateInfo: *const api::VkSamplerYcbcrConversionCreateInfo, + _pAllocator: *const api::VkAllocationCallbacks, + _pYcbcrConversion: *mut api::VkSamplerYcbcrConversion, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroySamplerYcbcrConversionKHR( + _device: api::VkDevice, + _ycbcrConversion: api::VkSamplerYcbcrConversion, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkBindBufferMemory2KHR( + _device: api::VkDevice, + _bindInfoCount: u32, + _pBindInfos: *const api::VkBindBufferMemoryInfo, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkBindImageMemory2KHR( + _device: api::VkDevice, + _bindInfoCount: u32, + _pBindInfos: *const api::VkBindImageMemoryInfo, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetDescriptorSetLayoutSupportKHR( + _device: api::VkDevice, + _pCreateInfo: *const api::VkDescriptorSetLayoutCreateInfo, + _pSupport: *mut api::VkDescriptorSetLayoutSupport, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdDrawIndirectCountKHR( + _commandBuffer: api::VkCommandBuffer, + _buffer: api::VkBuffer, + _offset: api::VkDeviceSize, + _countBuffer: api::VkBuffer, + _countBufferOffset: api::VkDeviceSize, + _maxDrawCount: u32, + _stride: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdDrawIndexedIndirectCountKHR( + _commandBuffer: api::VkCommandBuffer, + _buffer: api::VkBuffer, + _offset: api::VkDeviceSize, + _countBuffer: api::VkBuffer, + _countBufferOffset: api::VkDeviceSize, + _maxDrawCount: u32, + _stride: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateDebugReportCallbackEXT( + _instance: api::VkInstance, + _pCreateInfo: *const api::VkDebugReportCallbackCreateInfoEXT, + _pAllocator: *const api::VkAllocationCallbacks, + _pCallback: *mut api::VkDebugReportCallbackEXT, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyDebugReportCallbackEXT( + _instance: api::VkInstance, + _callback: api::VkDebugReportCallbackEXT, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDebugReportMessageEXT( + _instance: api::VkInstance, + _flags: api::VkDebugReportFlagsEXT, + _objectType: api::VkDebugReportObjectTypeEXT, + _object: u64, + _location: usize, + _messageCode: i32, + _pLayerPrefix: *const ::std::os::raw::c_char, + _pMessage: *const ::std::os::raw::c_char, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDebugMarkerSetObjectTagEXT( + _device: api::VkDevice, + _pTagInfo: *const api::VkDebugMarkerObjectTagInfoEXT, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDebugMarkerSetObjectNameEXT( + _device: api::VkDevice, + _pNameInfo: *const api::VkDebugMarkerObjectNameInfoEXT, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdDebugMarkerBeginEXT( + _commandBuffer: api::VkCommandBuffer, + _pMarkerInfo: *const api::VkDebugMarkerMarkerInfoEXT, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdDebugMarkerEndEXT(_commandBuffer: api::VkCommandBuffer) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdDebugMarkerInsertEXT( + _commandBuffer: api::VkCommandBuffer, + _pMarkerInfo: *const api::VkDebugMarkerMarkerInfoEXT, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdDrawIndirectCountAMD( + _commandBuffer: api::VkCommandBuffer, + _buffer: api::VkBuffer, + _offset: api::VkDeviceSize, + _countBuffer: api::VkBuffer, + _countBufferOffset: api::VkDeviceSize, + _maxDrawCount: u32, + _stride: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdDrawIndexedIndirectCountAMD( + _commandBuffer: api::VkCommandBuffer, + _buffer: api::VkBuffer, + _offset: api::VkDeviceSize, + _countBuffer: api::VkBuffer, + _countBufferOffset: api::VkDeviceSize, + _maxDrawCount: u32, + _stride: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetShaderInfoAMD( + _device: api::VkDevice, + _pipeline: api::VkPipeline, + _shaderStage: api::VkShaderStageFlagBits, + _infoType: api::VkShaderInfoTypeAMD, + _pInfoSize: *mut usize, + _pInfo: *mut ::std::os::raw::c_void, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceExternalImageFormatPropertiesNV( + _physicalDevice: api::VkPhysicalDevice, + _format: api::VkFormat, + _type_: api::VkImageType, + _tiling: api::VkImageTiling, + _usage: api::VkImageUsageFlags, + _flags: api::VkImageCreateFlags, + _externalHandleType: api::VkExternalMemoryHandleTypeFlagsNV, + _pExternalImageFormatProperties: *mut api::VkExternalImageFormatPropertiesNV, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdBeginConditionalRenderingEXT( + _commandBuffer: api::VkCommandBuffer, + _pConditionalRenderingBegin: *const api::VkConditionalRenderingBeginInfoEXT, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdEndConditionalRenderingEXT( + _commandBuffer: api::VkCommandBuffer, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdSetViewportWScalingNV( + _commandBuffer: api::VkCommandBuffer, + _firstViewport: u32, + _viewportCount: u32, + _pViewportWScalings: *const api::VkViewportWScalingNV, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkReleaseDisplayEXT( + _physicalDevice: api::VkPhysicalDevice, + _display: api::VkDisplayKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceSurfaceCapabilities2EXT( + _physicalDevice: api::VkPhysicalDevice, + _surface: api::VkSurfaceKHR, + _pSurfaceCapabilities: *mut api::VkSurfaceCapabilities2EXT, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDisplayPowerControlEXT( + _device: api::VkDevice, + _display: api::VkDisplayKHR, + _pDisplayPowerInfo: *const api::VkDisplayPowerInfoEXT, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkRegisterDeviceEventEXT( + _device: api::VkDevice, + _pDeviceEventInfo: *const api::VkDeviceEventInfoEXT, + _pAllocator: *const api::VkAllocationCallbacks, + _pFence: *mut api::VkFence, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkRegisterDisplayEventEXT( + _device: api::VkDevice, + _display: api::VkDisplayKHR, + _pDisplayEventInfo: *const api::VkDisplayEventInfoEXT, + _pAllocator: *const api::VkAllocationCallbacks, + _pFence: *mut api::VkFence, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetSwapchainCounterEXT( + _device: api::VkDevice, + _swapchain: api::VkSwapchainKHR, + _counter: api::VkSurfaceCounterFlagBitsEXT, + _pCounterValue: *mut u64, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetRefreshCycleDurationGOOGLE( + _device: api::VkDevice, + _swapchain: api::VkSwapchainKHR, + _pDisplayTimingProperties: *mut api::VkRefreshCycleDurationGOOGLE, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPastPresentationTimingGOOGLE( + _device: api::VkDevice, + _swapchain: api::VkSwapchainKHR, + _pPresentationTimingCount: *mut u32, + _pPresentationTimings: *mut api::VkPastPresentationTimingGOOGLE, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdSetDiscardRectangleEXT( + _commandBuffer: api::VkCommandBuffer, + _firstDiscardRectangle: u32, + _discardRectangleCount: u32, + _pDiscardRectangles: *const api::VkRect2D, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkSetHdrMetadataEXT( + _device: api::VkDevice, + _swapchainCount: u32, + _pSwapchains: *const api::VkSwapchainKHR, + _pMetadata: *const api::VkHdrMetadataEXT, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkSetDebugUtilsObjectNameEXT( + _device: api::VkDevice, + _pNameInfo: *const api::VkDebugUtilsObjectNameInfoEXT, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkSetDebugUtilsObjectTagEXT( + _device: api::VkDevice, + _pTagInfo: *const api::VkDebugUtilsObjectTagInfoEXT, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkQueueBeginDebugUtilsLabelEXT( + _queue: api::VkQueue, + _pLabelInfo: *const api::VkDebugUtilsLabelEXT, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkQueueEndDebugUtilsLabelEXT(_queue: api::VkQueue) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkQueueInsertDebugUtilsLabelEXT( + _queue: api::VkQueue, + _pLabelInfo: *const api::VkDebugUtilsLabelEXT, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdBeginDebugUtilsLabelEXT( + _commandBuffer: api::VkCommandBuffer, + _pLabelInfo: *const api::VkDebugUtilsLabelEXT, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdEndDebugUtilsLabelEXT(_commandBuffer: api::VkCommandBuffer) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdInsertDebugUtilsLabelEXT( + _commandBuffer: api::VkCommandBuffer, + _pLabelInfo: *const api::VkDebugUtilsLabelEXT, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateDebugUtilsMessengerEXT( + _instance: api::VkInstance, + _pCreateInfo: *const api::VkDebugUtilsMessengerCreateInfoEXT, + _pAllocator: *const api::VkAllocationCallbacks, + _pMessenger: *mut api::VkDebugUtilsMessengerEXT, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyDebugUtilsMessengerEXT( + _instance: api::VkInstance, + _messenger: api::VkDebugUtilsMessengerEXT, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkSubmitDebugUtilsMessageEXT( + _instance: api::VkInstance, + _messageSeverity: api::VkDebugUtilsMessageSeverityFlagBitsEXT, + _messageTypes: api::VkDebugUtilsMessageTypeFlagsEXT, + _pCallbackData: *const api::VkDebugUtilsMessengerCallbackDataEXT, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdSetSampleLocationsEXT( + _commandBuffer: api::VkCommandBuffer, + _pSampleLocationsInfo: *const api::VkSampleLocationsInfoEXT, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceMultisamplePropertiesEXT( + _physicalDevice: api::VkPhysicalDevice, + _samples: api::VkSampleCountFlagBits, + _pMultisampleProperties: *mut api::VkMultisamplePropertiesEXT, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateValidationCacheEXT( + _device: api::VkDevice, + _pCreateInfo: *const api::VkValidationCacheCreateInfoEXT, + _pAllocator: *const api::VkAllocationCallbacks, + _pValidationCache: *mut api::VkValidationCacheEXT, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkDestroyValidationCacheEXT( + _device: api::VkDevice, + _validationCache: api::VkValidationCacheEXT, + _pAllocator: *const api::VkAllocationCallbacks, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkMergeValidationCachesEXT( + _device: api::VkDevice, + _dstCache: api::VkValidationCacheEXT, + _srcCacheCount: u32, + _pSrcCaches: *const api::VkValidationCacheEXT, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetValidationCacheDataEXT( + _device: api::VkDevice, + _validationCache: api::VkValidationCacheEXT, + _pDataSize: *mut usize, + _pData: *mut ::std::os::raw::c_void, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdBindShadingRateImageNV( + _commandBuffer: api::VkCommandBuffer, + _imageView: api::VkImageView, + _imageLayout: api::VkImageLayout, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdSetViewportShadingRatePaletteNV( + _commandBuffer: api::VkCommandBuffer, + _firstViewport: u32, + _viewportCount: u32, + _pShadingRatePalettes: *const api::VkShadingRatePaletteNV, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdSetCoarseSampleOrderNV( + _commandBuffer: api::VkCommandBuffer, + _sampleOrderType: api::VkCoarseSampleOrderTypeNV, + _customSampleOrderCount: u32, + _pCustomSampleOrders: *const api::VkCoarseSampleOrderCustomNV, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetMemoryHostPointerPropertiesEXT( + _device: api::VkDevice, + _handleType: api::VkExternalMemoryHandleTypeFlagBits, + _pHostPointer: *const ::std::os::raw::c_void, + _pMemoryHostPointerProperties: *mut api::VkMemoryHostPointerPropertiesEXT, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdWriteBufferMarkerAMD( + _commandBuffer: api::VkCommandBuffer, + _pipelineStage: api::VkPipelineStageFlagBits, + _dstBuffer: api::VkBuffer, + _dstOffset: api::VkDeviceSize, + _marker: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdDrawMeshTasksNV( + _commandBuffer: api::VkCommandBuffer, + _taskCount: u32, + _firstTask: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdDrawMeshTasksIndirectNV( + _commandBuffer: api::VkCommandBuffer, + _buffer: api::VkBuffer, + _offset: api::VkDeviceSize, + _drawCount: u32, + _stride: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdDrawMeshTasksIndirectCountNV( + _commandBuffer: api::VkCommandBuffer, + _buffer: api::VkBuffer, + _offset: api::VkDeviceSize, + _countBuffer: api::VkBuffer, + _countBufferOffset: api::VkDeviceSize, + _maxDrawCount: u32, + _stride: u32, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdSetExclusiveScissorNV( + _commandBuffer: api::VkCommandBuffer, + _firstExclusiveScissor: u32, + _exclusiveScissorCount: u32, + _pExclusiveScissors: *const api::VkRect2D, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCmdSetCheckpointNV( + _commandBuffer: api::VkCommandBuffer, + _pCheckpointMarker: *const ::std::os::raw::c_void, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetQueueCheckpointDataNV( + _queue: api::VkQueue, + _pCheckpointDataCount: *mut u32, + _pCheckpointData: *mut api::VkCheckpointDataNV, +) { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkCreateXcbSurfaceKHR( + _instance: api::VkInstance, + _pCreateInfo: *const api::VkXcbSurfaceCreateInfoKHR, + _pAllocator: *const api::VkAllocationCallbacks, + _pSurface: *mut api::VkSurfaceKHR, +) -> api::VkResult { + unimplemented!() +} + +#[allow(non_snake_case)] +pub unsafe extern "system" fn vkGetPhysicalDeviceXcbPresentationSupportKHR( + _physicalDevice: api::VkPhysicalDevice, + _queueFamilyIndex: u32, + _connection: *mut xcb::ffi::xcb_connection_t, + _visual_id: xcb::ffi::xcb_visualid_t, +) -> api::VkBool32 { + unimplemented!() +} diff --git a/vulkan-driver/src/handle.rs b/vulkan-driver/src/handle.rs index ea1bb13..395edd1 100644 --- a/vulkan-driver/src/handle.rs +++ b/vulkan-driver/src/handle.rs @@ -1,5 +1,7 @@ use api; +use api_impl::{Instance, PhysicalDevice}; use std::marker::PhantomData; +use std::mem; use std::ops::Deref; use std::ops::DerefMut; use std::ptr::null_mut; @@ -39,27 +41,43 @@ pub trait Handle: Clone { type Value; fn get(&self) -> Option>; fn new(v: Option>) -> Self; + unsafe fn allocate>(v: T) -> Self { + Self::new(Some(NonNull::new_unchecked(Box::into_raw(Box::new( + v.into(), + ))))) + } + unsafe fn free(self) { + Box::from_raw(self.get().unwrap().as_ptr()); + } fn null() -> Self { Self::new(None) } + fn is_null(&self) -> bool { + self.get().is_none() + } + fn take(&mut self) -> Self { + let retval = self.clone(); + *self = Self::null(); + retval + } } #[repr(transparent)] -pub struct DispatchableHandle(Option>>); +pub struct DispatchableHandle(Option>, PhantomData<*mut DispatchableType>); impl Clone for DispatchableHandle { fn clone(&self) -> Self { - DispatchableHandle(self.0) + DispatchableHandle(self.0, PhantomData) } } impl Handle for DispatchableHandle { type Value = DispatchableType; fn get(&self) -> Option>> { - self.0 + unsafe { mem::transmute(self.0) } } fn new(v: Option>>) -> Self { - DispatchableHandle(v) + unsafe { DispatchableHandle(mem::transmute(v), PhantomData) } } } @@ -85,9 +103,72 @@ impl Handle for NondispatchableHandle { } } -pub type VkInstance = DispatchableHandle<::api_impl::Instance>; +#[derive(Debug)] +#[repr(transparent)] +pub struct OwnedHandle(T); + +impl OwnedHandle { + pub fn new>(v: I) -> Self { + unsafe { OwnedHandle(T::allocate(v)) } + } + pub unsafe fn from(v: T) -> Self { + OwnedHandle(v) + } + pub unsafe fn take(mut self) -> T { + self.0.take() + } + pub unsafe fn get_handle(&self) -> &T { + &self.0 + } +} + +impl Deref for OwnedHandle { + type Target = T::Value; + fn deref(&self) -> &T::Value { + unsafe { &*self.0.get().unwrap().as_ptr() } + } +} + +impl DerefMut for OwnedHandle { + fn deref_mut(&mut self) -> &mut T::Value { + unsafe { &mut *self.0.get().unwrap().as_ptr() } + } +} + +impl Drop for OwnedHandle { + fn drop(&mut self) { + if !self.0.is_null() { + unsafe { + self.0.take().free(); + } + } + } +} + +#[derive(Debug)] +#[repr(transparent)] +pub struct SharedHandle(T); + +impl SharedHandle { + pub unsafe fn from(v: T) -> Self { + SharedHandle(v) + } + pub unsafe fn take(mut self) -> T { + self.0.take() + } + pub unsafe fn get_handle(&self) -> &T { + &self.0 + } +} + +impl Deref for SharedHandle { + type Target = T::Value; + fn deref(&self) -> &T::Value { + unsafe { &*self.0.get().unwrap().as_ptr() } + } +} -pub struct PhysicalDevice {} +pub type VkInstance = DispatchableHandle; pub type VkPhysicalDevice = DispatchableHandle; diff --git a/vulkan-driver/src/lib.rs b/vulkan-driver/src/lib.rs index dc985fa..18fab2b 100644 --- a/vulkan-driver/src/lib.rs +++ b/vulkan-driver/src/lib.rs @@ -1,3 +1,6 @@ +#[macro_use] +extern crate enum_map; +extern crate uuid; #[cfg(unix)] extern crate xcb; mod api; @@ -6,8 +9,12 @@ mod handle; use std::ffi::CStr; use std::os::raw::c_char; +pub const KAZAN_VENDOR_ID: u32 = 0x10003; +pub const KAZAN_DEVICE_NAME: &'static str = "Kazan Software Renderer"; +pub const MIN_MEMORY_MAP_ALIGNMENT: usize = 128; // must be at least 64 and a power of 2 according to Vulkan spec + #[no_mangle] -pub extern "system" fn vk_icdGetInstanceProcAddr( +pub unsafe extern "system" fn vk_icdGetInstanceProcAddr( instance: api::VkInstance, name: *const c_char, ) -> api::PFN_vkVoidFunction { @@ -37,11 +44,11 @@ const ASSERT_TYPE_VK_ICD_NEGOTIATE_LOADER_ICD_INTERFACE_VERSION: api::PFN_vkNegotiateLoaderICDInterfaceVersion = Some(vk_icdNegotiateLoaderICDInterfaceVersion); #[no_mangle] -pub extern "system" fn vk_icdGetPhysicalDeviceProcAddr( +pub unsafe extern "system" fn vk_icdGetPhysicalDeviceProcAddr( instance: api::VkInstance, name: *const c_char, ) -> api::PFN_vkVoidFunction { - match unsafe { CStr::from_ptr(name) }.to_str().ok()? { + match CStr::from_ptr(name).to_str().ok()? { "vkCreateDevice" | "vkCreateDisplayModeKHR" | "vkEnumerateDeviceExtensionProperties" diff --git a/vulkan-driver/vulkan-wrapper.h b/vulkan-driver/vulkan-wrapper.h index 9e95fbd..7f728e1 100644 --- a/vulkan-driver/vulkan-wrapper.h +++ b/vulkan-driver/vulkan-wrapper.h @@ -2,7 +2,7 @@ #ifdef __ANDROID__ #error not supported on Android; need to fix ABI #endif -#define VK_NO_PROTOTYPES +//#define VK_NO_PROTOTYPES #include #include #ifdef __unix @@ -11,4 +11,4 @@ typedef uint32_t xcb_visualid_t; typedef uint32_t xcb_window_t; #include #endif -#undef VK_NO_PROTOTYPES +//#undef VK_NO_PROTOTYPES -- 2.30.2