dacite/
ext_validation_flags.rs1use std::ptr;
18use vks;
19
20#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
22pub enum ValidationCheckExt {
23 All,
24 Unknown(vks::ext_validation_flags::VkValidationCheckEXT),
25}
26
27impl From<ValidationCheckExt> for vks::ext_validation_flags::VkValidationCheckEXT {
28 fn from(check: ValidationCheckExt) -> Self {
29 match check {
30 ValidationCheckExt::All => vks::ext_validation_flags::VK_VALIDATION_CHECK_ALL_EXT,
31 ValidationCheckExt::Unknown(check) => check,
32 }
33 }
34}
35
36gen_chain_struct! {
37 name: ValidationFlagsChainExt [ValidationFlagsChainExtWrapper],
38 query: ValidationFlagsChainQueryExt [ValidationFlagsChainQueryExtWrapper],
39 vks: vks::ext_validation_flags::VkValidationFlagsEXT,
40 input: true,
41 output: false,
42}
43
44#[derive(Debug, Clone, PartialEq)]
46pub struct ValidationFlagsExt {
47 pub disabled_validation_checks: Vec<ValidationCheckExt>,
48 pub chain: Option<ValidationFlagsChainExt>,
49}
50
51#[derive(Debug)]
52pub(crate) struct VkValidationFlagsEXTWrapper {
53 pub vks_struct: vks::ext_validation_flags::VkValidationFlagsEXT,
54 vk_disabled_validation_checks: Vec<vks::ext_validation_flags::VkValidationCheckEXT>,
55 chain: Option<ValidationFlagsChainExtWrapper>,
56}
57
58impl VkValidationFlagsEXTWrapper {
59 pub fn new(flags: &ValidationFlagsExt, with_chain: bool) -> Self {
60 let vk_disabled_validation_checks: Vec<_> = flags.disabled_validation_checks.iter().cloned().map(From::from).collect();
61 let vk_disabled_validation_checks_ptr = if !vk_disabled_validation_checks.is_empty() {
62 vk_disabled_validation_checks.as_ptr() as _
63 }
64 else {
65 ptr::null_mut()
66 };
67
68 let (pnext, chain) = ValidationFlagsChainExtWrapper::new_optional(&flags.chain, with_chain);
69
70 VkValidationFlagsEXTWrapper {
71 vks_struct: vks::ext_validation_flags::VkValidationFlagsEXT {
72 sType: vks::core::VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT,
73 pNext: pnext,
74 disabledValidationCheckCount: vk_disabled_validation_checks.len() as u32,
75 pDisabledValidationChecks: vk_disabled_validation_checks_ptr,
76 },
77 vk_disabled_validation_checks: vk_disabled_validation_checks,
78 chain: chain,
79 }
80 }
81}