lava/vulkan/ext/
vk_surface_counter_flags.rs1use utils::vk_traits::*;
4
5#[derive(Debug, Clone)]
17pub struct VkSurfaceCounterFlags {
18 pub vblank: bool,
19}
20
21#[doc(hidden)]
22pub type RawVkSurfaceCounterFlags = u32;
23
24impl VkWrappedType<RawVkSurfaceCounterFlags> for VkSurfaceCounterFlags {
25 fn vk_to_raw(src: &VkSurfaceCounterFlags, dst: &mut RawVkSurfaceCounterFlags) {
26 *dst = 0;
27 if src.vblank { *dst |= 0x00000001; }
28 }
29}
30
31impl VkRawType<VkSurfaceCounterFlags> for RawVkSurfaceCounterFlags {
32 fn vk_to_wrapped(src: &RawVkSurfaceCounterFlags) -> VkSurfaceCounterFlags {
33 VkSurfaceCounterFlags {
34 vblank: (src & 0x00000001) != 0,
35 }
36 }
37}
38
39impl Default for VkSurfaceCounterFlags {
40 fn default() -> VkSurfaceCounterFlags {
41 VkSurfaceCounterFlags {
42 vblank: false,
43 }
44 }
45}
46
47impl VkSurfaceCounterFlags {
48
49 pub fn none() -> Self {
51 VkSurfaceCounterFlags {
52 vblank: false,
53 }
54 }
55
56 pub fn all() -> Self {
58 VkSurfaceCounterFlags {
59 vblank: true,
60 }
61 }
62
63 pub fn to_u32(&self) -> u32 {
65 0
66 + if self.vblank { 0x00000001 } else { 0 }
67 }
68
69 pub fn from_u32(value: u32) -> Self {
71 VkSurfaceCounterFlags {
72 vblank: value & 0x00000001 > 0,
73 }
74 }
75}
76
77#[doc(hidden)]
78#[macro_export]
79macro_rules! VkSurfaceCounterFlags {
80 ( $( $x:ident ),* ) => {
81 VkSurfaceCounterFlags {
82 $($x: true,)*
83 ..VkSurfaceCounterFlags::none()
84 }
85 }
86}