Skip to main content

jay_ash/extensions/nv/
device_generated_commands_compute.rs

1//! <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_device_generated_commands_compute.html>
2
3use crate::vk;
4
5impl crate::nv::device_generated_commands_compute::Device {
6    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkGetPipelineIndirectMemoryRequirementsNV.html>
7    #[inline]
8    pub unsafe fn get_pipeline_indirect_memory_requirements(
9        &self,
10        create_info: &vk::ComputePipelineCreateInfo<'_>,
11        memory_requirements: &mut vk::MemoryRequirements2<'_>,
12    ) {
13        unsafe {
14            (self.fp.get_pipeline_indirect_memory_requirements_nv)(
15                self.handle,
16                create_info,
17                memory_requirements,
18            )
19        }
20    }
21
22    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdUpdatePipelineIndirectBufferNV.html>
23    #[inline]
24    pub unsafe fn cmd_update_pipeline_indirect_buffer(
25        &self,
26        command_buffer: vk::CommandBuffer,
27        pipeline_bind_point: vk::PipelineBindPoint,
28        pipeline: vk::Pipeline,
29    ) {
30        unsafe {
31            (self.fp.cmd_update_pipeline_indirect_buffer_nv)(
32                command_buffer,
33                pipeline_bind_point,
34                pipeline,
35            )
36        }
37    }
38
39    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkGetPipelineIndirectDeviceAddressNV.html>
40    #[inline]
41    pub unsafe fn get_pipeline_indirect_device_address(
42        &self,
43        info: &vk::PipelineIndirectDeviceAddressInfoNV<'_>,
44    ) -> vk::DeviceAddress {
45        unsafe { (self.fp.get_pipeline_indirect_device_address_nv)(self.handle, info) }
46    }
47}