• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 use crate::vk;
2 use crate::{Device, Instance};
3 use std::ffi::CStr;
4 use std::mem;
5 
6 /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_extended_dynamic_state2.html>
7 #[derive(Clone)]
8 pub struct ExtendedDynamicState2 {
9     fp: vk::ExtExtendedDynamicState2Fn,
10 }
11 
12 impl ExtendedDynamicState2 {
new(instance: &Instance, device: &Device) -> Self13     pub fn new(instance: &Instance, device: &Device) -> Self {
14         let fp = vk::ExtExtendedDynamicState2Fn::load(|name| unsafe {
15             mem::transmute(instance.get_device_proc_addr(device.handle(), name.as_ptr()))
16         });
17         Self { fp }
18     }
19 
20     /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetPatchControlPointsEXT.html>
21     #[inline]
cmd_set_patch_control_points( &self, command_buffer: vk::CommandBuffer, patch_control_points: u32, )22     pub unsafe fn cmd_set_patch_control_points(
23         &self,
24         command_buffer: vk::CommandBuffer,
25         patch_control_points: u32,
26     ) {
27         (self.fp.cmd_set_patch_control_points_ext)(command_buffer, patch_control_points)
28     }
29 
30     /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetRasterizerDiscardEnableEXT.html>
31     #[inline]
cmd_set_rasterizer_discard_enable( &self, command_buffer: vk::CommandBuffer, rasterizer_discard_enable: bool, )32     pub unsafe fn cmd_set_rasterizer_discard_enable(
33         &self,
34         command_buffer: vk::CommandBuffer,
35         rasterizer_discard_enable: bool,
36     ) {
37         (self.fp.cmd_set_rasterizer_discard_enable_ext)(
38             command_buffer,
39             rasterizer_discard_enable.into(),
40         )
41     }
42 
43     /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetDepthBiasEnableEXT.html>
44     #[inline]
cmd_set_depth_bias_enable( &self, command_buffer: vk::CommandBuffer, depth_bias_enable: bool, )45     pub unsafe fn cmd_set_depth_bias_enable(
46         &self,
47         command_buffer: vk::CommandBuffer,
48         depth_bias_enable: bool,
49     ) {
50         (self.fp.cmd_set_depth_bias_enable_ext)(command_buffer, depth_bias_enable.into())
51     }
52 
53     /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetLogicOpEXT.html>
54     #[inline]
cmd_set_logic_op( &self, command_buffer: vk::CommandBuffer, logic_op: vk::LogicOp, )55     pub unsafe fn cmd_set_logic_op(
56         &self,
57         command_buffer: vk::CommandBuffer,
58         logic_op: vk::LogicOp,
59     ) {
60         (self.fp.cmd_set_logic_op_ext)(command_buffer, logic_op)
61     }
62 
63     /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetPrimitiveRestartEnableEXT.html>
64     #[inline]
cmd_set_primitive_restart_enable( &self, command_buffer: vk::CommandBuffer, primitive_restart_enable: bool, )65     pub unsafe fn cmd_set_primitive_restart_enable(
66         &self,
67         command_buffer: vk::CommandBuffer,
68         primitive_restart_enable: bool,
69     ) {
70         (self.fp.cmd_set_primitive_restart_enable_ext)(
71             command_buffer,
72             primitive_restart_enable.into(),
73         )
74     }
75 
76     #[inline]
name() -> &'static CStr77     pub const fn name() -> &'static CStr {
78         vk::ExtExtendedDynamicState2Fn::name()
79     }
80 
81     #[inline]
fp(&self) -> &vk::ExtExtendedDynamicState2Fn82     pub fn fp(&self) -> &vk::ExtExtendedDynamicState2Fn {
83         &self.fp
84     }
85 }
86