jay_ash/extensions/ext/
private_data.rs1use crate::RawPtr;
4use crate::prelude::*;
5use crate::vk;
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 unsafe {
17 let mut private_data_slot = mem::MaybeUninit::uninit();
18 (self.fp.create_private_data_slot_ext)(
19 self.handle,
20 create_info,
21 allocation_callbacks.as_raw_ptr(),
22 private_data_slot.as_mut_ptr(),
23 )
24 .assume_init_on_success(private_data_slot)
25 }
26 }
27
28 #[inline]
30 pub unsafe fn destroy_private_data_slot(
31 &self,
32 private_data_slot: vk::PrivateDataSlotEXT,
33 allocation_callbacks: Option<&vk::AllocationCallbacks<'_>>,
34 ) {
35 unsafe {
36 (self.fp.destroy_private_data_slot_ext)(
37 self.handle,
38 private_data_slot,
39 allocation_callbacks.as_raw_ptr(),
40 )
41 }
42 }
43
44 #[inline]
46 pub unsafe fn set_private_data<T: vk::Handle>(
47 &self,
48 object: T,
49 private_data_slot: vk::PrivateDataSlotEXT,
50 data: u64,
51 ) -> VkResult<()> {
52 unsafe {
53 (self.fp.set_private_data_ext)(
54 self.handle,
55 T::TYPE,
56 object.as_raw(),
57 private_data_slot,
58 data,
59 )
60 .result()
61 }
62 }
63
64 #[inline]
66 pub unsafe fn get_private_data<T: vk::Handle>(
67 &self,
68 object: T,
69 private_data_slot: vk::PrivateDataSlotEXT,
70 ) -> u64 {
71 unsafe {
72 let mut data = mem::MaybeUninit::uninit();
73 (self.fp.get_private_data_ext)(
74 self.handle,
75 T::TYPE,
76 object.as_raw(),
77 private_data_slot,
78 data.as_mut_ptr(),
79 );
80 data.assume_init()
81 }
82 }
83}