]> git.nega.tv - josh/narcissus/commitdiff
vulkan-sys: Add `vkEnumerateInstanceLayerProperties`
authorJosh Simmons <josh@nega.tv>
Sat, 11 May 2024 18:38:00 +0000 (20:38 +0200)
committerJosh Simmons <josh@nega.tv>
Sat, 11 May 2024 18:38:00 +0000 (20:38 +0200)
external/vulkan-sys/src/functions.rs
external/vulkan-sys/src/lib.rs
external/vulkan-sys/src/structs.rs

index 9ddceb1938d3e8f19de901ef9763549d0cd9fcf6..1926575b1e632823d05a79c79f6f36a4caa71057 100644 (file)
@@ -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>,
index 50494d49ac28c6086a1517c16d8872eee17a46ab..b18d778ce3a6f476f515843b14512b13cbda4ae7 100644 (file)
@@ -303,6 +303,7 @@ pub struct GlobalFunctions {
     get_instance_proc_addr: FnGetInstanceProcAddr,
     enumerate_instance_version: Option<FnEnumerateInstanceVersion>,
     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,
index 2fbb061aee1016ac4006723fed69282f712e9d4b..7b36af63d7de92a37d152dd7590c790e0546d4d2 100644 (file)
@@ -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,