• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 Maintenance1 {
8     handle: vk::Device,
9     fns: vk::KhrMaintenance1Fn,
10 }
11 
12 impl Maintenance1 {
new(instance: &Instance, device: &Device) -> Self13     pub fn new(instance: &Instance, device: &Device) -> Self {
14         let fns = vk::KhrMaintenance1Fn::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::KhrMaintenance1Fn::name()
25     }
26 
27     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkTrimCommandPoolKHR.html>"]
trim_command_pool( &self, command_pool: vk::CommandPool, flags: vk::CommandPoolTrimFlagsKHR, )28     pub unsafe fn trim_command_pool(
29         &self,
30         command_pool: vk::CommandPool,
31         flags: vk::CommandPoolTrimFlagsKHR,
32     ) {
33         self.fns
34             .trim_command_pool_khr(self.handle, command_pool, flags);
35     }
36 
fp(&self) -> &vk::KhrMaintenance1Fn37     pub fn fp(&self) -> &vk::KhrMaintenance1Fn {
38         &self.fns
39     }
40 
device(&self) -> vk::Device41     pub fn device(&self) -> vk::Device {
42         self.handle
43     }
44 }
45