ash/extensions/ext/
descriptor_buffer.rs

1//! <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_descriptor_buffer.html>
2
3use crate::prelude::*;
4use crate::vk;
5use core::mem;
6
7impl crate::ext::descriptor_buffer::Device {
8    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkGetDescriptorSetLayoutSizeEXT.html>
9    #[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    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkGetDescriptorSetLayoutBindingOffsetEXT.html>
20    #[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    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkGetDescriptorEXT.html>
37    #[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    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdBindDescriptorBuffersEXT.html>
52    #[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    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdSetDescriptorBufferOffsetsEXT.html>
66    #[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    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdBindDescriptorBufferEmbeddedSamplersEXT.html>
89    #[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    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkGetBufferOpaqueCaptureDescriptorDataEXT.html>
106    #[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    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkGetImageOpaqueCaptureDescriptorDataEXT.html>
121    #[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    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkGetImageViewOpaqueCaptureDescriptorDataEXT.html>
136    #[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    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkGetSamplerOpaqueCaptureDescriptorDataEXT.html>
151    #[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    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkGetAccelerationStructureOpaqueCaptureDescriptorDataEXT.html>
166    #[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}