jay_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 unsafe {
15 let mut count = mem::MaybeUninit::uninit();
16 (self.fp.get_descriptor_set_layout_size_ext)(self.handle, layout, count.as_mut_ptr());
17 count.assume_init()
18 }
19 }
20
21 #[inline]
23 pub unsafe fn get_descriptor_set_layout_binding_offset(
24 &self,
25 layout: vk::DescriptorSetLayout,
26 binding: u32,
27 ) -> vk::DeviceSize {
28 unsafe {
29 let mut offset = mem::MaybeUninit::uninit();
30 (self.fp.get_descriptor_set_layout_binding_offset_ext)(
31 self.handle,
32 layout,
33 binding,
34 offset.as_mut_ptr(),
35 );
36 offset.assume_init()
37 }
38 }
39
40 #[inline]
42 pub unsafe fn get_descriptor(
43 &self,
44 descriptor_info: &vk::DescriptorGetInfoEXT<'_>,
45 descriptor: &mut [u8],
46 ) {
47 unsafe {
48 (self.fp.get_descriptor_ext)(
49 self.handle,
50 descriptor_info,
51 descriptor.len(),
52 descriptor.as_mut_ptr().cast(),
53 )
54 }
55 }
56
57 #[inline]
59 pub unsafe fn cmd_bind_descriptor_buffers(
60 &self,
61 command_buffer: vk::CommandBuffer,
62 binding_info: &[vk::DescriptorBufferBindingInfoEXT<'_>],
63 ) {
64 unsafe {
65 (self.fp.cmd_bind_descriptor_buffers_ext)(
66 command_buffer,
67 binding_info.len() as u32,
68 binding_info.as_ptr(),
69 )
70 }
71 }
72
73 #[inline]
75 pub unsafe fn cmd_set_descriptor_buffer_offsets(
76 &self,
77 command_buffer: vk::CommandBuffer,
78 pipeline_bind_point: vk::PipelineBindPoint,
79 layout: vk::PipelineLayout,
80 first_set: u32,
81 buffer_indices: &[u32],
82 offsets: &[vk::DeviceSize],
83 ) {
84 unsafe {
85 assert_eq!(buffer_indices.len(), offsets.len());
86 (self.fp.cmd_set_descriptor_buffer_offsets_ext)(
87 command_buffer,
88 pipeline_bind_point,
89 layout,
90 first_set,
91 buffer_indices.len() as u32,
92 buffer_indices.as_ptr(),
93 offsets.as_ptr(),
94 )
95 }
96 }
97
98 #[inline]
100 pub unsafe fn cmd_bind_descriptor_buffer_embedded_samplers(
101 &self,
102 command_buffer: vk::CommandBuffer,
103 pipeline_bind_point: vk::PipelineBindPoint,
104 layout: vk::PipelineLayout,
105 set: u32,
106 ) {
107 unsafe {
108 (self.fp.cmd_bind_descriptor_buffer_embedded_samplers_ext)(
109 command_buffer,
110 pipeline_bind_point,
111 layout,
112 set,
113 )
114 }
115 }
116
117 #[inline]
119 pub unsafe fn get_buffer_opaque_capture_descriptor_data(
120 &self,
121 info: &vk::BufferCaptureDescriptorDataInfoEXT<'_>,
122 data: &mut [u8],
123 ) -> VkResult<()> {
124 unsafe {
125 (self.fp.get_buffer_opaque_capture_descriptor_data_ext)(
126 self.handle,
127 info,
128 data.as_mut_ptr().cast(),
129 )
130 .result()
131 }
132 }
133
134 #[inline]
136 pub unsafe fn get_image_opaque_capture_descriptor_data(
137 &self,
138 info: &vk::ImageCaptureDescriptorDataInfoEXT<'_>,
139 data: &mut [u8],
140 ) -> VkResult<()> {
141 unsafe {
142 (self.fp.get_image_opaque_capture_descriptor_data_ext)(
143 self.handle,
144 info,
145 data.as_mut_ptr().cast(),
146 )
147 .result()
148 }
149 }
150
151 #[inline]
153 pub unsafe fn get_image_view_opaque_capture_descriptor_data(
154 &self,
155 info: &vk::ImageViewCaptureDescriptorDataInfoEXT<'_>,
156 data: &mut [u8],
157 ) -> VkResult<()> {
158 unsafe {
159 (self.fp.get_image_view_opaque_capture_descriptor_data_ext)(
160 self.handle,
161 info,
162 data.as_mut_ptr().cast(),
163 )
164 .result()
165 }
166 }
167
168 #[inline]
170 pub unsafe fn get_sampler_opaque_capture_descriptor_data(
171 &self,
172 info: &vk::SamplerCaptureDescriptorDataInfoEXT<'_>,
173 data: &mut [u8],
174 ) -> VkResult<()> {
175 unsafe {
176 (self.fp.get_sampler_opaque_capture_descriptor_data_ext)(
177 self.handle,
178 info,
179 data.as_mut_ptr().cast(),
180 )
181 .result()
182 }
183 }
184
185 #[inline]
187 pub unsafe fn get_acceleration_structure_opaque_capture_descriptor_data(
188 &self,
189 info: &vk::AccelerationStructureCaptureDescriptorDataInfoEXT<'_>,
190 data: &mut [u8],
191 ) -> VkResult<()> {
192 unsafe {
193 (self
194 .fp
195 .get_acceleration_structure_opaque_capture_descriptor_data_ext)(
196 self.handle,
197 info,
198 data.as_mut_ptr().cast(),
199 )
200 .result()
201 }
202 }
203}