From 1c07c9d6e6dcf11affdd99ee53097db8af375a90 Mon Sep 17 00:00:00 2001 From: Josh Simmons Date: Sat, 11 May 2024 20:38:00 +0200 Subject: [PATCH] vulkan-sys: Add `vkEnumerateInstanceLayerProperties` --- external/vulkan-sys/src/functions.rs | 3 +++ external/vulkan-sys/src/lib.rs | 14 ++++++++++++++ external/vulkan-sys/src/structs.rs | 8 ++++++++ 3 files changed, 25 insertions(+) diff --git a/external/vulkan-sys/src/functions.rs b/external/vulkan-sys/src/functions.rs index 9ddceb1..1926575 100644 --- a/external/vulkan-sys/src/functions.rs +++ b/external/vulkan-sys/src/functions.rs @@ -46,6 +46,9 @@ pub type FnEnumerateInstanceExtensionProperties = extern "system" fn( properties: *mut ExtensionProperties, ) -> Result; +pub type FnEnumerateInstanceLayerProperties = + extern "system" fn(property_count: &mut u32, properties: *mut LayerProperties) -> Result; + pub type FnCreateInstance = extern "system" fn( create_info: &InstanceCreateInfo, allocator: Option<&AllocationCallbacks>, diff --git a/external/vulkan-sys/src/lib.rs b/external/vulkan-sys/src/lib.rs index 50494d4..b18d778 100644 --- a/external/vulkan-sys/src/lib.rs +++ b/external/vulkan-sys/src/lib.rs @@ -303,6 +303,7 @@ pub struct GlobalFunctions { get_instance_proc_addr: FnGetInstanceProcAddr, enumerate_instance_version: Option, enumerate_instance_extension_properties: FnEnumerateInstanceExtensionProperties, + enumerate_instance_layer_properties: FnEnumerateInstanceLayerProperties, create_instance: FnCreateInstance, } @@ -319,6 +320,10 @@ impl GlobalFunctions { Instance::null(), c"vkEnumerateInstanceExtensionProperties".as_ptr(), )), + enumerate_instance_layer_properties: transmute::<_, _>(get_instance_proc_addr( + Instance::null(), + c"vkEnumerateInstanceLayerProperties".as_ptr(), + )), create_instance: transmute::<_, _>( get_instance_proc_addr(Instance::null(), c"vkCreateInstance".as_ptr()) .expect("failed to load vkCreateInstance"), @@ -355,6 +360,15 @@ impl GlobalFunctions { (self.enumerate_instance_extension_properties)(layer_name, property_count, properties) } + #[inline] + pub unsafe fn enumerate_instance_layer_properties( + &self, + property_count: &mut u32, + properties: *mut LayerProperties, + ) -> Result { + (self.enumerate_instance_layer_properties)(property_count, properties) + } + #[inline] pub unsafe fn create_instance( &self, diff --git a/external/vulkan-sys/src/structs.rs b/external/vulkan-sys/src/structs.rs index 2fbb061..7b36af6 100644 --- a/external/vulkan-sys/src/structs.rs +++ b/external/vulkan-sys/src/structs.rs @@ -73,6 +73,14 @@ pub struct ExtensionProperties { pub spec_version: u32, } +#[repr(C)] +pub struct LayerProperties { + pub layer_name: [u8; 256], + pub spec_version: u32, + pub implementation_version: u32, + pub description: [u8; 256], +} + #[repr(C)] pub struct AllocationCallbacks { user_data: *mut c_void, -- 2.49.0