1 use crate::vk; 2 use crate::{Device, Instance}; 3 use std::ffi::CStr; 4 use std::mem; 5 6 #[derive(Clone)] 7 pub struct Maintenance3 { 8 handle: vk::Device, 9 fns: vk::KhrMaintenance3Fn, 10 } 11 12 impl Maintenance3 { new(instance: &Instance, device: &Device) -> Self13 pub fn new(instance: &Instance, device: &Device) -> Self { 14 let fns = vk::KhrMaintenance3Fn::load(|name| unsafe { 15 mem::transmute(instance.get_device_proc_addr(device.handle(), name.as_ptr())) 16 }); 17 Self { 18 handle: device.handle(), 19 fns, 20 } 21 } 22 name() -> &'static CStr23 pub fn name() -> &'static CStr { 24 vk::KhrMaintenance3Fn::name() 25 } 26 27 #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetDescriptorSetLayoutSupportKHR.html>"] get_descriptor_set_layout_support( &self, create_info: &vk::DescriptorSetLayoutCreateInfo, out: &mut vk::DescriptorSetLayoutSupportKHR, )28 pub unsafe fn get_descriptor_set_layout_support( 29 &self, 30 create_info: &vk::DescriptorSetLayoutCreateInfo, 31 out: &mut vk::DescriptorSetLayoutSupportKHR, 32 ) { 33 self.fns 34 .get_descriptor_set_layout_support_khr(self.handle, create_info, out); 35 } 36 fp(&self) -> &vk::KhrMaintenance3Fn37 pub fn fp(&self) -> &vk::KhrMaintenance3Fn { 38 &self.fns 39 } 40 device(&self) -> vk::Device41 pub fn device(&self) -> vk::Device { 42 self.handle 43 } 44 } 45