jay_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 unsafe {
16 (self.fp.cmd_draw_mesh_tasks_ext)(
17 command_buffer,
18 group_count_x,
19 group_count_y,
20 group_count_z,
21 )
22 }
23 }
24
25 /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdDrawMeshTasksIndirectEXT.html>
26 ///
27 /// `buffer` contains `draw_count` [`vk::DrawMeshTasksIndirectCommandEXT`] structures starting at `offset` in bytes, holding the draw parameters.
28 #[inline]
29 pub unsafe fn cmd_draw_mesh_tasks_indirect(
30 &self,
31 command_buffer: vk::CommandBuffer,
32 buffer: vk::Buffer,
33 offset: vk::DeviceSize,
34 draw_count: u32,
35 stride: u32,
36 ) {
37 unsafe {
38 (self.fp.cmd_draw_mesh_tasks_indirect_ext)(
39 command_buffer,
40 buffer,
41 offset,
42 draw_count,
43 stride,
44 )
45 }
46 }
47
48 /// <https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/vkCmdDrawMeshTasksIndirectCountEXT.html>
49 ///
50 /// `buffer` contains a maximum of `max_draw_count` [`vk::DrawMeshTasksIndirectCommandEXT`] structures starting at `offset` in bytes, holding the draw parameters.
51 /// `count_buffer` is the buffer containing the draw count, starting at `count_buffer_offset` in bytes.
52 /// The actual number of executed draw calls is the minimum of the count specified in `count_buffer` and `max_draw_count`.
53 #[inline]
54 pub unsafe fn cmd_draw_mesh_tasks_indirect_count(
55 &self,
56 command_buffer: vk::CommandBuffer,
57 buffer: vk::Buffer,
58 offset: vk::DeviceSize,
59 count_buffer: vk::Buffer,
60 count_buffer_offset: vk::DeviceSize,
61 max_draw_count: u32,
62 stride: u32,
63 ) {
64 unsafe {
65 (self.fp.cmd_draw_mesh_tasks_indirect_count_ext)(
66 command_buffer,
67 buffer,
68 offset,
69 count_buffer,
70 count_buffer_offset,
71 max_draw_count,
72 stride,
73 )
74 }
75 }
76}