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    pub unsafe fn cmd_set_patch_control_points(
22        &self,
23        command_buffer: vk::CommandBuffer,
24        patch_control_points: u32,
25    ) {
26        (self.fp.cmd_set_patch_control_points_ext)(command_buffer, patch_control_points)
27    }
28
29    /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetRasterizerDiscardEnableEXT.html>
30    pub unsafe fn cmd_set_rasterizer_discard_enable(
31        &self,
32        command_buffer: vk::CommandBuffer,
33        rasterizer_discard_enable: bool,
34    ) {
35        (self.fp.cmd_set_rasterizer_discard_enable_ext)(
36            command_buffer,
37            rasterizer_discard_enable.into(),
38        )
39    }
40
41    /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetDepthBiasEnableEXT.html>
42    pub unsafe fn cmd_set_depth_bias_enable(
43        &self,
44        command_buffer: vk::CommandBuffer,
45        depth_bias_enable: bool,
46    ) {
47        (self.fp.cmd_set_depth_bias_enable_ext)(command_buffer, depth_bias_enable.into())
48    }
49
50    /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetLogicOpEXT.html>
51    pub unsafe fn cmd_set_logic_op(
52        &self,
53        command_buffer: vk::CommandBuffer,
54        logic_op: vk::LogicOp,
55    ) {
56        (self.fp.cmd_set_logic_op_ext)(command_buffer, logic_op)
57    }
58
59    /// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetPrimitiveRestartEnableEXT.html>
60    pub unsafe fn cmd_set_primitive_restart_enable(
61        &self,
62        command_buffer: vk::CommandBuffer,
63        primitive_restart_enable: bool,
64    ) {
65        (self.fp.cmd_set_primitive_restart_enable_ext)(
66            command_buffer,
67            primitive_restart_enable.into(),
68        )
69    }
70
71    pub const fn name() -> &'static CStr {
72        vk::ExtExtendedDynamicState2Fn::name()
73    }
74
75    pub fn fp(&self) -> &vk::ExtExtendedDynamicState2Fn {
76        &self.fp
77    }
78}