ash/extensions/ext/
extended_dynamic_state2.rs1use crate::vk;
2use crate::{Device, Instance};
3use std::ffi::CStr;
4use std::mem;
5
6#[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 #[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 #[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 #[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 #[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 #[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}