aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Giessen <charles@lunarg.com>2021-11-29 22:44:05 -0700
committerCharles Giessen <46324611+charles-lunarg@users.noreply.github.com>2022-02-02 16:22:12 -0700
commitcc0a0325deac7a20532766840edbed5167c2b183 (patch)
tree5d26f18d6ee82e3f6351c0c07ad48120f2b93869
parent7a132ba4df38473423a2e1c0d212df2134bebc77 (diff)
downloadusermoji-cc0a0325deac7a20532766840edbed5167c2b183.tar.xz
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.
-rw-r--r--scripts/vulkaninfo_generator.py7
-rw-r--r--vulkaninfo/generated/vulkaninfo.hpp32
2 files changed, 20 insertions, 19 deletions
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<const char *>{name}GetStrings({name} value) {{\n"
+ out += f"std::vector<const char *> {name}GetStrings({name} value) {{\n"
out += f" std::vector<const char *> 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"
diff --git a/vulkaninfo/generated/vulkaninfo.hpp b/vulkaninfo/generated/vulkaninfo.hpp
index 69661bb0..89fbc936 100644
--- a/vulkaninfo/generated/vulkaninfo.hpp
+++ b/vulkaninfo/generated/vulkaninfo.hpp
@@ -515,7 +515,7 @@ void DumpVkShaderFloatControlsIndependence(Printer &p, std::string name, VkShade
p.PrintKeyString(name, VkShaderFloatControlsIndependenceString(value));
}
}
-std::vector<const char *>VkCompositeAlphaFlagBitsKHRGetStrings(VkCompositeAlphaFlagBitsKHR value) {
+std::vector<const char *> VkCompositeAlphaFlagBitsKHRGetStrings(VkCompositeAlphaFlagBitsKHR value) {
std::vector<const char *> strings;
if (value == 0) { strings.push_back("None"); return strings; }
if (VK_COMPOSITE_ALPHA_OPAQUE_BIT_KHR & value) strings.push_back("COMPOSITE_ALPHA_OPAQUE_BIT_KHR");
@@ -543,7 +543,7 @@ void DumpVkCompositeAlphaFlagBitsKHR(Printer &p, std::string name, VkCompositeAl
p.PrintKeyString(name, strings.at(0));
}
-std::vector<const char *>VkDeviceGroupPresentModeFlagBitsKHRGetStrings(VkDeviceGroupPresentModeFlagBitsKHR value) {
+std::vector<const char *> VkDeviceGroupPresentModeFlagBitsKHRGetStrings(VkDeviceGroupPresentModeFlagBitsKHR value) {
std::vector<const char *> strings;
if (value == 0) { strings.push_back("None"); return strings; }
if (VK_DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR & value) strings.push_back("DEVICE_GROUP_PRESENT_MODE_LOCAL_BIT_KHR");
@@ -571,7 +571,7 @@ void DumpVkDeviceGroupPresentModeFlagBitsKHR(Printer &p, std::string name, VkDev
p.PrintKeyString(name, strings.at(0));
}
-std::vector<const char *>VkFormatFeatureFlagBitsGetStrings(VkFormatFeatureFlagBits value) {
+std::vector<const char *> VkFormatFeatureFlagBitsGetStrings(VkFormatFeatureFlagBits value) {
std::vector<const char *> strings;
if (value == 0) { strings.push_back("None"); return strings; }
if (VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT & value) strings.push_back("FORMAT_FEATURE_SAMPLED_IMAGE_BIT");
@@ -626,7 +626,7 @@ void DumpVkFormatFeatureFlagBits(Printer &p, std::string name, VkFormatFeatureFl
p.PrintKeyString(name, strings.at(0));
}
-std::vector<const char *>VkFormatFeatureFlagBits2GetStrings(VkFormatFeatureFlagBits2 value) {
+std::vector<const char *> VkFormatFeatureFlagBits2GetStrings(VkFormatFeatureFlagBits2 value) {
std::vector<const char *> strings;
if (value == 0) { strings.push_back("None"); return strings; }
if (VK_FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT & value) strings.push_back("FORMAT_FEATURE_2_SAMPLED_IMAGE_BIT");
@@ -685,7 +685,7 @@ void DumpVkFormatFeatureFlagBits2(Printer &p, std::string name, VkFormatFeatureF
p.PrintKeyString(name, strings.at(0));
}
-std::vector<const char *>VkImageUsageFlagBitsGetStrings(VkImageUsageFlagBits value) {
+std::vector<const char *> VkImageUsageFlagBitsGetStrings(VkImageUsageFlagBits value) {
std::vector<const char *> strings;
if (value == 0) { strings.push_back("None"); return strings; }
if (VK_IMAGE_USAGE_TRANSFER_SRC_BIT & value) strings.push_back("IMAGE_USAGE_TRANSFER_SRC_BIT");
@@ -726,7 +726,7 @@ void DumpVkImageUsageFlagBits(Printer &p, std::string name, VkImageUsageFlagBits
p.PrintKeyString(name, strings.at(0));
}
-std::vector<const char *>VkMemoryHeapFlagBitsGetStrings(VkMemoryHeapFlagBits value) {
+std::vector<const char *> VkMemoryHeapFlagBitsGetStrings(VkMemoryHeapFlagBits value) {
std::vector<const char *> strings;
if (value == 0) { strings.push_back("None"); return strings; }
if (VK_MEMORY_HEAP_DEVICE_LOCAL_BIT & value) strings.push_back("MEMORY_HEAP_DEVICE_LOCAL_BIT");
@@ -752,7 +752,7 @@ void DumpVkMemoryHeapFlagBits(Printer &p, std::string name, VkMemoryHeapFlagBits
p.PrintKeyString(name, strings.at(0));
}
-std::vector<const char *>VkMemoryPropertyFlagBitsGetStrings(VkMemoryPropertyFlagBits value) {
+std::vector<const char *> VkMemoryPropertyFlagBitsGetStrings(VkMemoryPropertyFlagBits value) {
std::vector<const char *> strings;
if (value == 0) { strings.push_back("None"); return strings; }
if (VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT & value) strings.push_back("MEMORY_PROPERTY_DEVICE_LOCAL_BIT");
@@ -818,9 +818,8 @@ std::string VkQueueFlagsString(VkQueueFlags value) {
}
return out;
}
-std::vector<const char *>VkResolveModeFlagBitsGetStrings(VkResolveModeFlagBits value) {
+std::vector<const char *> VkResolveModeFlagBitsGetStrings(VkResolveModeFlagBits value) {
std::vector<const char *> strings;
- if (value == 0) { strings.push_back("None"); return strings; }
if (VK_RESOLVE_MODE_NONE & value) strings.push_back("RESOLVE_MODE_NONE");
if (VK_RESOLVE_MODE_SAMPLE_ZERO_BIT & value) strings.push_back("RESOLVE_MODE_SAMPLE_ZERO_BIT");
if (VK_RESOLVE_MODE_AVERAGE_BIT & value) strings.push_back("RESOLVE_MODE_AVERAGE_BIT");
@@ -847,7 +846,7 @@ void DumpVkResolveModeFlagBits(Printer &p, std::string name, VkResolveModeFlagBi
p.PrintKeyString(name, strings.at(0));
}
-std::vector<const char *>VkSampleCountFlagBitsGetStrings(VkSampleCountFlagBits value) {
+std::vector<const char *> VkSampleCountFlagBitsGetStrings(VkSampleCountFlagBits value) {
std::vector<const char *> strings;
if (value == 0) { strings.push_back("None"); return strings; }
if (VK_SAMPLE_COUNT_1_BIT & value) strings.push_back("SAMPLE_COUNT_1_BIT");
@@ -878,7 +877,7 @@ void DumpVkSampleCountFlagBits(Printer &p, std::string name, VkSampleCountFlagBi
p.PrintKeyString(name, strings.at(0));
}
-std::vector<const char *>VkShaderStageFlagBitsGetStrings(VkShaderStageFlagBits value) {
+std::vector<const char *> VkShaderStageFlagBitsGetStrings(VkShaderStageFlagBits value) {
std::vector<const char *> strings;
if (value == 0) { strings.push_back("None"); return strings; }
if (VK_SHADER_STAGE_VERTEX_BIT & value) strings.push_back("SHADER_STAGE_VERTEX_BIT");
@@ -919,7 +918,7 @@ void DumpVkShaderStageFlagBits(Printer &p, std::string name, VkShaderStageFlagBi
p.PrintKeyString(name, strings.at(0));
}
-std::vector<const char *>VkSubgroupFeatureFlagBitsGetStrings(VkSubgroupFeatureFlagBits value) {
+std::vector<const char *> VkSubgroupFeatureFlagBitsGetStrings(VkSubgroupFeatureFlagBits value) {
std::vector<const char *> strings;
if (value == 0) { strings.push_back("None"); return strings; }
if (VK_SUBGROUP_FEATURE_BASIC_BIT & value) strings.push_back("SUBGROUP_FEATURE_BASIC_BIT");
@@ -952,7 +951,7 @@ void DumpVkSubgroupFeatureFlagBits(Printer &p, std::string name, VkSubgroupFeatu
p.PrintKeyString(name, strings.at(0));
}
-std::vector<const char *>VkSurfaceCounterFlagBitsEXTGetStrings(VkSurfaceCounterFlagBitsEXT value) {
+std::vector<const char *> VkSurfaceCounterFlagBitsEXTGetStrings(VkSurfaceCounterFlagBitsEXT value) {
std::vector<const char *> strings;
if (value == 0) { strings.push_back("None"); return strings; }
if (VK_SURFACE_COUNTER_VBLANK_BIT_EXT & value) strings.push_back("SURFACE_COUNTER_VBLANK_BIT_EXT");
@@ -977,7 +976,7 @@ void DumpVkSurfaceCounterFlagBitsEXT(Printer &p, std::string name, VkSurfaceCoun
p.PrintKeyString(name, strings.at(0));
}
-std::vector<const char *>VkSurfaceTransformFlagBitsKHRGetStrings(VkSurfaceTransformFlagBitsKHR value) {
+std::vector<const char *> VkSurfaceTransformFlagBitsKHRGetStrings(VkSurfaceTransformFlagBitsKHR value) {
std::vector<const char *> strings;
if (value == 0) { strings.push_back("None"); return strings; }
if (VK_SURFACE_TRANSFORM_IDENTITY_BIT_KHR & value) strings.push_back("SURFACE_TRANSFORM_IDENTITY_BIT_KHR");
@@ -1010,7 +1009,7 @@ void DumpVkSurfaceTransformFlagBitsKHR(Printer &p, std::string name, VkSurfaceTr
p.PrintKeyString(name, strings.at(0));
}
-std::vector<const char *>VkToolPurposeFlagBitsGetStrings(VkToolPurposeFlagBits value) {
+std::vector<const char *> VkToolPurposeFlagBitsGetStrings(VkToolPurposeFlagBits value) {
std::vector<const char *> strings;
if (value == 0) { strings.push_back("None"); return strings; }
if (VK_TOOL_PURPOSE_VALIDATION_BIT & value) strings.push_back("TOOL_PURPOSE_VALIDATION_BIT");
@@ -1041,9 +1040,8 @@ void DumpVkToolPurposeFlagBits(Printer &p, std::string name, VkToolPurposeFlagBi
p.PrintKeyString(name, strings.at(0));
}
-std::vector<const char *>VkVideoCodecOperationFlagBitsKHRGetStrings(VkVideoCodecOperationFlagBitsKHR value) {
+std::vector<const char *> VkVideoCodecOperationFlagBitsKHRGetStrings(VkVideoCodecOperationFlagBitsKHR value) {
std::vector<const char *> strings;
- if (value == 0) { strings.push_back("None"); return strings; }
if (VK_VIDEO_CODEC_OPERATION_INVALID_BIT_KHR & value) strings.push_back("VIDEO_CODEC_OPERATION_INVALID_BIT_KHR");
if (VK_VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT & value) strings.push_back("VIDEO_CODEC_OPERATION_ENCODE_H264_BIT_EXT");
if (VK_VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT & value) strings.push_back("VIDEO_CODEC_OPERATION_ENCODE_H265_BIT_EXT");