• 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 use std::ptr;
6 
7 #[derive(Clone)]
8 pub struct GetMemoryRequirements2 {
9     handle: vk::Device,
10     get_memory_requirements2_fn: vk::KhrGetMemoryRequirements2Fn,
11 }
12 
13 impl GetMemoryRequirements2 {
new(instance: &Instance, device: &Device) -> Self14     pub fn new(instance: &Instance, device: &Device) -> Self {
15         let get_memory_requirements2_fn = vk::KhrGetMemoryRequirements2Fn::load(|name| unsafe {
16             mem::transmute(instance.get_device_proc_addr(device.handle(), name.as_ptr()))
17         });
18         Self {
19             handle: device.handle(),
20             get_memory_requirements2_fn,
21         }
22     }
23 
name() -> &'static CStr24     pub fn name() -> &'static CStr {
25         vk::KhrGetMemoryRequirements2Fn::name()
26     }
27 
28     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetBufferMemoryRequirements2KHR.html>"]
get_buffer_memory_requirements2( &self, info: &vk::BufferMemoryRequirementsInfo2KHR, memory_requirements: &mut vk::MemoryRequirements2KHR, )29     pub unsafe fn get_buffer_memory_requirements2(
30         &self,
31         info: &vk::BufferMemoryRequirementsInfo2KHR,
32         memory_requirements: &mut vk::MemoryRequirements2KHR,
33     ) {
34         self.get_memory_requirements2_fn
35             .get_buffer_memory_requirements2_khr(self.handle, info, memory_requirements);
36     }
37 
38     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetImageMemoryRequirements2KHR.html>"]
get_image_memory_requirements2( &self, info: &vk::ImageMemoryRequirementsInfo2KHR, memory_requirements: &mut vk::MemoryRequirements2KHR, )39     pub unsafe fn get_image_memory_requirements2(
40         &self,
41         info: &vk::ImageMemoryRequirementsInfo2KHR,
42         memory_requirements: &mut vk::MemoryRequirements2KHR,
43     ) {
44         self.get_memory_requirements2_fn
45             .get_image_memory_requirements2_khr(self.handle, info, memory_requirements);
46     }
47 
get_image_sparse_memory_requirements2_len( &self, info: &vk::ImageSparseMemoryRequirementsInfo2KHR, ) -> usize48     pub unsafe fn get_image_sparse_memory_requirements2_len(
49         &self,
50         info: &vk::ImageSparseMemoryRequirementsInfo2KHR,
51     ) -> usize {
52         let mut count = 0;
53         self.get_memory_requirements2_fn
54             .get_image_sparse_memory_requirements2_khr(
55                 self.handle,
56                 info,
57                 &mut count,
58                 ptr::null_mut(),
59             );
60         count as usize
61     }
62 
63     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkGetImageSparseMemoryRequirements2KHR.html>"]
get_image_sparse_memory_requirements2( &self, info: &vk::ImageSparseMemoryRequirementsInfo2KHR, sparse_memory_requirements: &mut [vk::SparseImageMemoryRequirements2KHR], )64     pub unsafe fn get_image_sparse_memory_requirements2(
65         &self,
66         info: &vk::ImageSparseMemoryRequirementsInfo2KHR,
67         sparse_memory_requirements: &mut [vk::SparseImageMemoryRequirements2KHR],
68     ) {
69         let mut count = sparse_memory_requirements.len() as u32;
70         self.get_memory_requirements2_fn
71             .get_image_sparse_memory_requirements2_khr(
72                 self.handle,
73                 info,
74                 &mut count,
75                 sparse_memory_requirements.as_mut_ptr(),
76             );
77     }
78 
fp(&self) -> &vk::KhrGetMemoryRequirements2Fn79     pub fn fp(&self) -> &vk::KhrGetMemoryRequirements2Fn {
80         &self.get_memory_requirements2_fn
81     }
82 
device(&self) -> vk::Device83     pub fn device(&self) -> vk::Device {
84         self.handle
85     }
86 }
87