ash/extensions/ext/
extended_dynamic_state2.rs

1use crate::vk;
2use crate::{Device, Instance};
3use std::ffi::CStr;
4use 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)]
8pub struct ExtendedDynamicState2 {
9    fp: vk::ExtExtendedDynamicState2Fn,
10}
11
12impl ExtendedDynamicState2 {
13    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]
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]
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]
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]
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]
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]
77    pub const fn name() -> &'static CStr {
78        vk::ExtExtendedDynamicState2Fn::name()
79    }
80
81    #[inline]
82    pub fn fp(&self) -> &vk::ExtExtendedDynamicState2Fn {
83        &self.fp
84    }
85}