diff options
author | Petr Kraus <petr_kraus@email.cz> | 2019-08-12 00:53:58 +0200 |
---|---|---|
committer | Mark Lobodzinski <mark@lunarg.com> | 2019-08-16 10:01:59 -0600 |
commit | 52758be62c01542003ada6cb0ceb3764897548d2 (patch) | |
tree | 637acb7669ab641b9f3ecdab4d129aff8ddb31b5 /scripts | |
parent | 22a1c99af4c696e78f41cb38874b7491903e8825 (diff) | |
download | vulkan-validation-layers-52758be62c01542003ada6cb0ceb3764897548d2.tar.gz |
layers: Rewrite flag validation
- use proper VUID
- eliminate dependency on std::bitset
- do not use raw bool parameters
- make single bit, and unknown bit checks independent
- merge single bit and Flags generation script
Diffstat (limited to 'scripts')
-rw-r--r-- | scripts/parameter_validation_generator.py | 39 |
1 files changed, 20 insertions, 19 deletions
diff --git a/scripts/parameter_validation_generator.py b/scripts/parameter_validation_generator.py index e283c1c9d..1a12599b9 100644 --- a/scripts/parameter_validation_generator.py +++ b/scripts/parameter_validation_generator.py @@ -1197,25 +1197,26 @@ class ParameterValidationOutputGenerator(OutputGenerator): elif value.type in self.handleTypes: if not self.isHandleOptional(value, None): usedLines.append('skip |= validate_required_handle("{}", {ppp}"{}"{pps}, {}{});\n'.format(funcName, valueDisplayName, valuePrefix, value.name, **postProcSpec)) - elif value.type in self.flags: - flagBitsName = value.type.replace('Flags', 'FlagBits') - if not flagBitsName in self.flagBits: - vuid = self.GetVuid(vuid_name_tag, "%s-zerobitmask" % (value.name)) - usedLines.append('skip |= validate_reserved_flags("{}", {ppp}"{}"{pps}, {pf}{}, {});\n'.format(funcName, valueDisplayName, value.name, vuid, pf=valuePrefix, **postProcSpec)) - else: - if value.isoptional: - flagsRequired = 'false' - vuid = self.GetVuid(vuid_name_tag, "%s-parameter" % (value.name)) - else: - flagsRequired = 'true' - vuid = self.GetVuid(vuid_name_tag, "%s-requiredbitmask" % (value.name)) - allFlagsName = 'All' + flagBitsName - usedLines.append('skip |= validate_flags("{}", {ppp}"{}"{pps}, "{}", {}, {pf}{}, {}, false, {});\n'.format(funcName, valueDisplayName, flagBitsName, allFlagsName, value.name, flagsRequired, vuid, pf=valuePrefix, **postProcSpec)) - elif value.type in self.flagBits: - flagsRequired = 'false' if value.isoptional else 'true' - allFlagsName = 'All' + value.type - vuid = self.GetVuid(vuid_name_tag, "%s-parameter" % (value.name)) - usedLines.append('skip |= validate_flags("{}", {ppp}"{}"{pps}, "{}", {}, {pf}{}, {}, true, {});\n'.format(funcName, valueDisplayName, value.type, allFlagsName, value.name, flagsRequired, vuid, pf=valuePrefix, **postProcSpec)) + elif value.type in self.flags and value.type.replace('Flags', 'FlagBits') not in self.flagBits: + vuid = self.GetVuid(vuid_name_tag, "%s-zerobitmask" % (value.name)) + usedLines.append('skip |= validate_reserved_flags("{}", {ppp}"{}"{pps}, {pf}{}, {});\n'.format(funcName, valueDisplayName, value.name, vuid, pf=valuePrefix, **postProcSpec)) + elif value.type in self.flags or value.type in self.flagBits: + if value.type in self.flags: + flagBitsName = value.type.replace('Flags', 'FlagBits') + flagsType = 'kOptionalFlags' if value.isoptional else 'kRequiredFlags' + invalidVuid = self.GetVuid(vuid_name_tag, "%s-parameter" % (value.name)) + zeroVuid = self.GetVuid(vuid_name_tag, "%s-requiredbitmask" % (value.name)) + elif value.type in self.flagBits: + flagBitsName = value.type + flagsType = 'kOptionalSingleBit' if value.isoptional else 'kRequiredSingleBit' + invalidVuid = self.GetVuid(vuid_name_tag, "%s-parameter" % (value.name)) + zeroVuid = invalidVuid + allFlagsName = 'All' + flagBitsName + + invalid_vuid = self.GetVuid(vuid_name_tag, "%s-parameter" % (value.name)) + allFlagsName = 'All' + flagBitsName + zeroVuidArg = '' if value.isoptional else ', ' + zeroVuid + usedLines.append('skip |= validate_flags("{}", {ppp}"{}"{pps}, "{}", {}, {pf}{}, {}, {}{});\n'.format(funcName, valueDisplayName, flagBitsName, allFlagsName, value.name, flagsType, invalidVuid, zeroVuidArg, pf=valuePrefix, **postProcSpec)) elif value.isbool: usedLines.append('skip |= validate_bool32("{}", {ppp}"{}"{pps}, {}{});\n'.format(funcName, valueDisplayName, valuePrefix, value.name, **postProcSpec)) elif value.israngedenum: |