ash/extensions/ext/
private_data.rs1use crate::prelude::*;
4use crate::vk;
5use crate::RawPtr;
6use core::mem;
7
8impl crate::ext::private_data::Device {
9 #[inline]
11 pub unsafe fn create_private_data_slot(
12 &self,
13 create_info: &vk::PrivateDataSlotCreateInfoEXT<'_>,
14 allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>,
15 ) -> VkResult<vk::PrivateDataSlotEXT> {
16 let mut private_data_slot = mem::MaybeUninit::uninit();
17 (self.fp.create_private_data_slot_ext)(
18 self.handle,
19 create_info,
20 allocation_callbacks.as_raw_ptr(),
21 private_data_slot.as_mut_ptr(),
22 )
23 .assume_init_on_success(private_data_slot)
24 }
25
26 #[inline]
28 pub unsafe fn destroy_private_data_slot(
29 &self,
30 private_data_slot: vk::PrivateDataSlotEXT,
31 allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>,
32 ) {
33 (self.fp.destroy_private_data_slot_ext)(
34 self.handle,
35 private_data_slot,
36 allocation_callbacks.as_raw_ptr(),
37 )
38 }
39
40 #[inline]
42 pub unsafe fn set_private_data<T: vk::Handle>(
43 &self,
44 object: T,
45 private_data_slot: vk::PrivateDataSlotEXT,
46 data: u64,
47 ) -> VkResult<()> {
48 (self.fp.set_private_data_ext)(
49 self.handle,
50 T::TYPE,
51 object.as_raw(),
52 private_data_slot,
53 data,
54 )
55 .result()
56 }
57
58 #[inline]
60 pub unsafe fn get_private_data<T: vk::Handle>(
61 &self,
62 object: T,
63 private_data_slot: vk::PrivateDataSlotEXT,
64 ) -> u64 {
65 let mut data = mem::MaybeUninit::uninit();
66 (self.fp.get_private_data_ext)(
67 self.handle,
68 T::TYPE,
69 object.as_raw(),
70 private_data_slot,
71 data.as_mut_ptr(),
72 );
73 data.assume_init()
74 }
75}