From cc0a0325deac7a20532766840edbed5167c2b183 Mon Sep 17 00:00:00 2001 From: Charles Giessen Date: Mon, 29 Nov 2021 22:44:05 -0700 Subject: vulkaninfo: bitmask printers check for 0 value Only generate the early exit if there doesn't exist an bitmask which has a value of 0. For example, VK_RESOLVE_MODE_NONE has a value of 0, but it would never be printed without this special case. --- scripts/vulkaninfo_generator.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'scripts') diff --git a/scripts/vulkaninfo_generator.py b/scripts/vulkaninfo_generator.py index 50bfcfb0..e7381e8b 100644 --- a/scripts/vulkaninfo_generator.py +++ b/scripts/vulkaninfo_generator.py @@ -430,9 +430,12 @@ def PrintEnum(enum, gen): def PrintGetFlagStrings(name, bitmask): out = '' - out += f"std::vector{name}GetStrings({name} value) {{\n" + out += f"std::vector {name}GetStrings({name} value) {{\n" out += f" std::vector strings;\n" - out += f" if (value == 0) {{ strings.push_back(\"None\"); return strings; }}\n" + # If a bitmask contains a field whose value is zero, we want to support printing the correct bitflag + # Otherwise, use "None" for when there are not bits set in the bitmask + if bitmask.options[0].value != "0": + out += f" if (value == 0) {{ strings.push_back(\"None\"); return strings; }}\n" for v in bitmask.options: out += f" if ({v.name} & value) strings.push_back(\"{str(v.name[3:])}\");\n" out += f" return strings;\n}}\n" -- cgit v1.2.3