ash/extensions/ext/
descriptor_buffer.rs1use crate::prelude::*;
4use crate::vk;
5use core::mem;
6
7impl crate::ext::descriptor_buffer::Device {
8 #[inline]
10 pub unsafe fn get_descriptor_set_layout_size(
11 &self,
12 layout: vk::DescriptorSetLayout,
13 ) -> vk::DeviceSize {
14 let mut count = mem::MaybeUninit::uninit();
15 (self.fp.get_descriptor_set_layout_size_ext)(self.handle, layout, count.as_mut_ptr());
16 count.assume_init()
17 }
18
19 #[inline]
21 pub unsafe fn get_descriptor_set_layout_binding_offset(
22 &self,
23 layout: vk::DescriptorSetLayout,
24 binding: u32,
25 ) -> vk::DeviceSize {
26 let mut offset = mem::MaybeUninit::uninit();
27 (self.fp.get_descriptor_set_layout_binding_offset_ext)(
28 self.handle,
29 layout,
30 binding,
31 offset.as_mut_ptr(),
32 );
33 offset.assume_init()
34 }
35
36 #[inline]
38 pub unsafe fn get_descriptor(
39 &self,
40 descriptor_info: &vk::DescriptorGetInfoEXT<'_>,
41 descriptor: &mut [u8],
42 ) {
43 (self.fp.get_descriptor_ext)(
44 self.handle,
45 descriptor_info,
46 descriptor.len(),
47 descriptor.as_mut_ptr().cast(),
48 )
49 }
50
51 #[inline]
53 pub unsafe fn cmd_bind_descriptor_buffers(
54 &self,
55 command_buffer: vk::CommandBuffer,
56 binding_info: &[vk::DescriptorBufferBindingInfoEXT<'_>],
57 ) {
58 (self.fp.cmd_bind_descriptor_buffers_ext)(
59 command_buffer,
60 binding_info.len() as u32,
61 binding_info.as_ptr(),
62 )
63 }
64
65 #[inline]
67 pub unsafe fn cmd_set_descriptor_buffer_offsets(
68 &self,
69 command_buffer: vk::CommandBuffer,
70 pipeline_bind_point: vk::PipelineBindPoint,
71 layout: vk::PipelineLayout,
72 first_set: u32,
73 buffer_indices: &[u32],
74 offsets: &[vk::DeviceSize],
75 ) {
76 assert_eq!(buffer_indices.len(), offsets.len());
77 (self.fp.cmd_set_descriptor_buffer_offsets_ext)(
78 command_buffer,
79 pipeline_bind_point,
80 layout,
81 first_set,
82 buffer_indices.len() as u32,
83 buffer_indices.as_ptr(),
84 offsets.as_ptr(),
85 )
86 }
87
88 #[inline]
90 pub unsafe fn cmd_bind_descriptor_buffer_embedded_samplers(
91 &self,
92 command_buffer: vk::CommandBuffer,
93 pipeline_bind_point: vk::PipelineBindPoint,
94 layout: vk::PipelineLayout,
95 set: u32,
96 ) {
97 (self.fp.cmd_bind_descriptor_buffer_embedded_samplers_ext)(
98 command_buffer,
99 pipeline_bind_point,
100 layout,
101 set,
102 )
103 }
104
105 #[inline]
107 pub unsafe fn get_buffer_opaque_capture_descriptor_data(
108 &self,
109 info: &vk::BufferCaptureDescriptorDataInfoEXT<'_>,
110 data: &mut [u8],
111 ) -> VkResult<()> {
112 (self.fp.get_buffer_opaque_capture_descriptor_data_ext)(
113 self.handle,
114 info,
115 data.as_mut_ptr().cast(),
116 )
117 .result()
118 }
119
120 #[inline]
122 pub unsafe fn get_image_opaque_capture_descriptor_data(
123 &self,
124 info: &vk::ImageCaptureDescriptorDataInfoEXT<'_>,
125 data: &mut [u8],
126 ) -> VkResult<()> {
127 (self.fp.get_image_opaque_capture_descriptor_data_ext)(
128 self.handle,
129 info,
130 data.as_mut_ptr().cast(),
131 )
132 .result()
133 }
134
135 #[inline]
137 pub unsafe fn get_image_view_opaque_capture_descriptor_data(
138 &self,
139 info: &vk::ImageViewCaptureDescriptorDataInfoEXT<'_>,
140 data: &mut [u8],
141 ) -> VkResult<()> {
142 (self.fp.get_image_view_opaque_capture_descriptor_data_ext)(
143 self.handle,
144 info,
145 data.as_mut_ptr().cast(),
146 )
147 .result()
148 }
149
150 #[inline]
152 pub unsafe fn get_sampler_opaque_capture_descriptor_data(
153 &self,
154 info: &vk::SamplerCaptureDescriptorDataInfoEXT<'_>,
155 data: &mut [u8],
156 ) -> VkResult<()> {
157 (self.fp.get_sampler_opaque_capture_descriptor_data_ext)(
158 self.handle,
159 info,
160 data.as_mut_ptr().cast(),
161 )
162 .result()
163 }
164
165 #[inline]
167 pub unsafe fn get_acceleration_structure_opaque_capture_descriptor_data(
168 &self,
169 info: &vk::AccelerationStructureCaptureDescriptorDataInfoEXT<'_>,
170 data: &mut [u8],
171 ) -> VkResult<()> {
172 (self
173 .fp
174 .get_acceleration_structure_opaque_capture_descriptor_data_ext)(
175 self.handle,
176 info,
177 data.as_mut_ptr().cast(),
178 )
179 .result()
180 }
181}