ash/extensions/ext/
extended_dynamic_state2.rs
1use 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 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 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 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 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 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}