ash/extensions/ext/
mesh_shader.rs

1//! <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_EXT_mesh_shader.html>
2
3use crate::vk;
4
5impl crate::ext::mesh_shader::Device {
6    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdDrawMeshTasksEXT.html>
7    #[inline]
8    pub unsafe fn cmd_draw_mesh_tasks(
9        &self,
10        command_buffer: vk::CommandBuffer,
11        group_count_x: u32,
12        group_count_y: u32,
13        group_count_z: u32,
14    ) {
15        (self.fp.cmd_draw_mesh_tasks_ext)(
16            command_buffer,
17            group_count_x,
18            group_count_y,
19            group_count_z,
20        )
21    }
22
23    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdDrawMeshTasksIndirectEXT.html>
24    ///
25    /// `buffer` contains `draw_count` [`vk::DrawMeshTasksIndirectCommandEXT`] structures starting at `offset` in bytes, holding the draw parameters.
26    #[inline]
27    pub unsafe fn cmd_draw_mesh_tasks_indirect(
28        &self,
29        command_buffer: vk::CommandBuffer,
30        buffer: vk::Buffer,
31        offset: vk::DeviceSize,
32        draw_count: u32,
33        stride: u32,
34    ) {
35        (self.fp.cmd_draw_mesh_tasks_indirect_ext)(
36            command_buffer,
37            buffer,
38            offset,
39            draw_count,
40            stride,
41        )
42    }
43
44    /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdDrawMeshTasksIndirectCountEXT.html>
45    ///
46    /// `buffer` contains a maximum of `max_draw_count` [`vk::DrawMeshTasksIndirectCommandEXT`] structures starting at `offset` in bytes, holding the draw parameters.
47    /// `count_buffer` is the buffer containing the draw count, starting at `count_buffer_offset` in bytes.
48    /// The actual number of executed draw calls is the minimum of the count specified in `count_buffer` and `max_draw_count`.
49    #[inline]
50    pub unsafe fn cmd_draw_mesh_tasks_indirect_count(
51        &self,
52        command_buffer: vk::CommandBuffer,
53        buffer: vk::Buffer,
54        offset: vk::DeviceSize,
55        count_buffer: vk::Buffer,
56        count_buffer_offset: vk::DeviceSize,
57        max_draw_count: u32,
58        stride: u32,
59    ) {
60        (self.fp.cmd_draw_mesh_tasks_indirect_count_ext)(
61            command_buffer,
62            buffer,
63            offset,
64            count_buffer,
65            count_buffer_offset,
66            max_draw_count,
67            stride,
68        )
69    }
70}