From: Joshua Simmons Date: Fri, 5 Apr 2024 22:40:21 +0000 (+0200) Subject: vulkan-sys: Add `VK_KHR_get_surface_capabilities2` X-Git-Url: https://git.nega.tv//gitweb.cgi?a=commitdiff_plain;h=30b37037f9bff0de9164fee465fda848771f455c;p=josh%2Fnarcissus vulkan-sys: Add `VK_KHR_get_surface_capabilities2` --- diff --git a/external/vulkan-sys/src/functions.rs b/external/vulkan-sys/src/functions.rs index f4ff7b6..e22a711 100644 --- a/external/vulkan-sys/src/functions.rs +++ b/external/vulkan-sys/src/functions.rs @@ -926,3 +926,16 @@ pub type FnAcquireNextImage2KHR = extern "system" fn( acquire_info: &AcquireNextImageInfoKHR, image_index: &mut u32, ) -> Result; + +pub type FnGetPhysicalDeviceSurfaceCapabilities2KHR = extern "system" fn( + physical_device: PhysicalDevice, + surface_info: &PhysicalDeviceSurfaceInfo2KHR, + surface_capabilities: &mut SurfaceCapabilities2KHR, +) -> Result; + +pub type FnGetPhysicalDeviceSurfaceFormats2KHR = extern "system" fn( + physical_device: PhysicalDevice, + surface_info: PhysicalDeviceSurfaceInfo2KHR, + surface_format_count: &mut u32, + surface_formats: *mut SurfaceFormat2KHR, +) -> Result; diff --git a/external/vulkan-sys/src/lib.rs b/external/vulkan-sys/src/lib.rs index 260f659..c522176 100644 --- a/external/vulkan-sys/src/lib.rs +++ b/external/vulkan-sys/src/lib.rs @@ -2678,3 +2678,59 @@ impl SwapchainKHRFunctions { (self.queue_present)(queue, present_info) } } + +pub struct SurfaceCapabilities2KhrFunctions { + get_physical_device_surface_capabilities2_khr: FnGetPhysicalDeviceSurfaceCapabilities2KHR, + get_physical_device_surface_formats2_khr: FnGetPhysicalDeviceSurfaceFormats2KHR, +} + +impl SurfaceCapabilities2KhrFunctions { + pub fn new(global_functions: &GlobalFunctions, instance: Instance) -> Self { + unsafe { + let load = |name: &CStr| { + global_functions + .get_instance_proc_addr(instance, name) + .unwrap_or_else( + #[cold] + || panic!("failed to load device function {}", name.to_string_lossy()), + ) + }; + Self { + get_physical_device_surface_formats2_khr: transmute::<_, _>(load( + c"vkGetPhysicalDeviceSurfaceFormats2KHR", + )), + get_physical_device_surface_capabilities2_khr: transmute::<_, _>(load( + c"vkGetPhysicalDeviceSurfaceCapabilities2KHR", + )), + } + } + } + + pub unsafe fn get_physical_device_surface_capabilities2_khr( + &self, + physical_device: PhysicalDevice, + surface_info: &PhysicalDeviceSurfaceInfo2KHR, + surface_capabilities: &mut SurfaceCapabilities2KHR, + ) -> Result { + (self.get_physical_device_surface_capabilities2_khr)( + physical_device, + surface_info, + surface_capabilities, + ) + } + + pub unsafe fn get_physical_device_surface_formats2_khr( + &self, + physical_device: PhysicalDevice, + surface_info: PhysicalDeviceSurfaceInfo2KHR, + surface_format_count: &mut u32, + surface_formats: *mut SurfaceFormat2KHR, + ) -> Result { + (self.get_physical_device_surface_formats2_khr)( + physical_device, + surface_info, + surface_format_count, + surface_formats, + ) + } +} diff --git a/external/vulkan-sys/src/structs.rs b/external/vulkan-sys/src/structs.rs index 3b53950..2d46a60 100644 --- a/external/vulkan-sys/src/structs.rs +++ b/external/vulkan-sys/src/structs.rs @@ -2667,6 +2667,57 @@ impl Default for PhysicalDeviceVulkan13Properties { } } +#[repr(C)] +pub struct PhysicalDeviceSurfaceInfo2KHR { + pub _type: StructureType, + pub _next: *mut c_void, + pub surface: SurfaceKHR, +} + +impl Default for PhysicalDeviceSurfaceInfo2KHR { + fn default() -> Self { + Self { + _type: StructureType::PhysicalDeviceSurfaceInfo2Khr, + _next: core::ptr::null_mut(), + surface: Default::default(), + } + } +} + +#[repr(C)] +pub struct SurfaceCapabilities2KHR { + pub _type: StructureType, + pub _next: *mut c_void, + pub surface_capabilities: SurfaceCapabilitiesKHR, +} + +impl Default for SurfaceCapabilities2KHR { + fn default() -> Self { + Self { + _type: StructureType::SurfaceCapabilities2Khr, + _next: core::ptr::null_mut(), + surface_capabilities: Default::default(), + } + } +} + +#[repr(C)] +pub struct SurfaceFormat2KHR { + pub _type: StructureType, + pub _next: *mut c_void, + pub surface_format: SurfaceFormatKHR, +} + +impl Default for SurfaceFormat2KHR { + fn default() -> Self { + Self { + _type: StructureType::SurfaceFormat2Khr, + _next: core::ptr::null_mut(), + surface_format: Default::default(), + } + } +} + #[cfg(test)] mod test { use super::*;