1 #![allow(dead_code)]
2 use crate::version::{DeviceV1_0, InstanceV1_0};
3 use crate::vk;
4 use std::ffi::CStr;
5 use std::mem;
6 
7 #[derive(Clone)]
8 pub struct MeshShader {
9     mesh_shader_fn: vk::NvMeshShaderFn,
10 }
11 
12 impl MeshShader {
new<I: InstanceV1_0, D: DeviceV1_0>(instance: &I, device: &D) -> MeshShader13     pub fn new<I: InstanceV1_0, D: DeviceV1_0>(instance: &I, device: &D) -> MeshShader {
14         let mesh_shader_fn = vk::NvMeshShaderFn::load(|name| unsafe {
15             mem::transmute(instance.get_device_proc_addr(device.handle(), name.as_ptr()))
16         });
17         MeshShader { mesh_shader_fn }
18     }
19     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDrawMeshTasksNV.html>"]
cmd_draw_mesh_tasks( &self, command_buffer: vk::CommandBuffer, task_count: u32, first_task: u32, )20     pub unsafe fn cmd_draw_mesh_tasks(
21         &self,
22         command_buffer: vk::CommandBuffer,
23         task_count: u32,
24         first_task: u32,
25     ) {
26         self.mesh_shader_fn
27             .cmd_draw_mesh_tasks_nv(command_buffer, task_count, first_task);
28     }
29     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDrawMeshTasksIndirectNV.html>"]
cmd_draw_mesh_tasks_indirect( &self, command_buffer: vk::CommandBuffer, buffer: vk::Buffer, offset: vk::DeviceSize, draw_count: u32, stride: u32, )30     pub unsafe fn cmd_draw_mesh_tasks_indirect(
31         &self,
32         command_buffer: vk::CommandBuffer,
33         buffer: vk::Buffer,
34         offset: vk::DeviceSize,
35         draw_count: u32,
36         stride: u32,
37     ) {
38         self.mesh_shader_fn.cmd_draw_mesh_tasks_indirect_nv(
39             command_buffer,
40             buffer,
41             offset,
42             draw_count,
43             stride,
44         );
45     }
46     #[doc = "<https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdDrawMeshTasksIndirectCountNV.html>"]
cmd_draw_mesh_tasks_indirect_count( &self, command_buffer: vk::CommandBuffer, buffer: vk::Buffer, offset: vk::DeviceSize, count_buffer: vk::Buffer, count_buffer_offset: vk::DeviceSize, max_draw_count: u32, stride: u32, )47     pub unsafe fn cmd_draw_mesh_tasks_indirect_count(
48         &self,
49         command_buffer: vk::CommandBuffer,
50         buffer: vk::Buffer,
51         offset: vk::DeviceSize,
52         count_buffer: vk::Buffer,
53         count_buffer_offset: vk::DeviceSize,
54         max_draw_count: u32,
55         stride: u32,
56     ) {
57         self.mesh_shader_fn.cmd_draw_mesh_tasks_indirect_count_nv(
58             command_buffer,
59             buffer,
60             offset,
61             count_buffer,
62             count_buffer_offset,
63             max_draw_count,
64             stride,
65         );
66     }
name() -> &'static CStr67     pub fn name() -> &'static CStr {
68         vk::NvMeshShaderFn::name()
69     }
70 
fp(&self) -> &vk::NvMeshShaderFn71     pub fn fp(&self) -> &vk::NvMeshShaderFn {
72         &self.mesh_shader_fn
73     }
74 }
75