aboutsummaryrefslogtreecommitdiff
path: root/scripts/vulkaninfo_generator.py
diff options
context:
space:
mode:
authorCharles Giessen <charles@lunarg.com>2021-11-29 15:33:23 -0700
committerCharles Giessen <46324611+charles-lunarg@users.noreply.github.com>2022-02-02 16:22:12 -0700
commit25802a2fa838932038ee8bdf76800b7c9c5fd517 (patch)
tree594b83fb8ba20fc4f172ae3f95facb0552bf8214 /scripts/vulkaninfo_generator.py
parentce6a1491d6317d5311a939be50d854865018eee7 (diff)
downloadusermoji-25802a2fa838932038ee8bdf76800b7c9c5fd517.tar.xz
vulkaninfo: min_key_width now set in the object stack
Previously if a key-value pair wanted to be printed with padding, so the output would be aligned, it would have to pass in the width into each and every printer statement. This commit makes the min_key_width value set per object (in the object_stack) so it can be set after the object is started and re-used over and over. This simplifies the code gen and useability of the Printer class.
Diffstat (limited to 'scripts/vulkaninfo_generator.py')
-rw-r--r--scripts/vulkaninfo_generator.py47
1 files changed, 20 insertions, 27 deletions
diff --git a/scripts/vulkaninfo_generator.py b/scripts/vulkaninfo_generator.py
index bb28c06e..f698f736 100644
--- a/scripts/vulkaninfo_generator.py
+++ b/scripts/vulkaninfo_generator.py
@@ -59,9 +59,9 @@ license_header = '''
'''
custom_formaters = r'''
-void DumpVkConformanceVersion(Printer &p, std::string name, VkConformanceVersion &c, int width = 0) {
+void DumpVkConformanceVersion(Printer &p, std::string name, VkConformanceVersion &c) {
p.PrintKeyString("conformanceVersion", std::to_string(c.major)+ "." + std::to_string(c.minor) + "." + std::to_string(c.subminor) + "."
- + std::to_string(c.patch), width);
+ + std::to_string(c.patch));
}
template <typename T>
@@ -418,11 +418,11 @@ def PrintEnumToString(enum, gen):
def PrintEnum(enum, gen):
out = ''
out += AddGuardHeader(GetExtension(enum.name, gen))
- out += f"void Dump{enum.name}(Printer &p, std::string name, {enum.name} value, int width = 0) {{\n"
+ out += f"void Dump{enum.name}(Printer &p, std::string name, {enum.name} value) {{\n"
out += f" if (p.Type() == OutputType::json) {{\n"
- out += f" p.PrintKeyValue(name, value, width);\n"
+ out += f" p.PrintKeyValue(name, value);\n"
out += f" }} else {{\n"
- out += f" p.PrintKeyString(name, {enum.name}String(value), width);\n }}\n"
+ out += f" p.PrintKeyString(name, {enum.name}String(value));\n }}\n"
out += f"}}\n"
out += AddGuardFooter(GetExtension(enum.name, gen))
return out
@@ -441,7 +441,7 @@ def PrintGetFlagStrings(name, bitmask):
def PrintFlags(bitmask, name):
- out = f"void Dump{name}(Printer &p, std::string name, {name} value, int width = 0) {{\n"
+ out = f"void Dump{name}(Printer &p, std::string name, {name} value) {{\n"
out += f" if (p.Type() == OutputType::json) {{ p.PrintKeyValue(name, value); return; }}\n"
out += f" if (static_cast<{bitmask.name}>(value) == 0) {{\n"
out += f" ArrayWrapper arr(p, name, 0);\n"
@@ -459,9 +459,9 @@ def PrintFlags(bitmask, name):
def PrintFlagBits(bitmask):
- out = f"void Dump{bitmask.name}(Printer &p, std::string name, {bitmask.name} value, int width = 0) {{\n"
+ out = f"void Dump{bitmask.name}(Printer &p, std::string name, {bitmask.name} value) {{\n"
out += f" auto strings = {bitmask.name}GetStrings(value);\n"
- out += f" p.PrintKeyString(name, strings.at(0), width);\n"
+ out += f" p.PrintKeyString(name, strings.at(0));\n"
out += f"}}\n"
return out
@@ -478,7 +478,7 @@ def PrintBitMask(bitmask, name, gen):
def PrintBitMaskToString(bitmask, name, gen):
out = AddGuardHeader(GetExtension(bitmask.name, gen))
- out += f"std::string {name}String({name} value, int width = 0) {{\n"
+ out += f"std::string {name}String({name} value) {{\n"
out += f" std::string out;\n"
out += f" bool is_first = true;\n"
for v in bitmask.options:
@@ -519,19 +519,20 @@ def PrintStructure(struct, types_to_gen, structure_names, aliases):
out += f" p.SetSubHeader().ObjectStart(name);\n"
else:
out += f" ObjectWrapper object{{p, name}};\n"
-
+ if max_key_len > 0:
+ out += f" p.SetMinKeyWidth({max_key_len});\n"
for v in struct.members:
# arrays
if v.arrayLength is not None:
# strings
if v.typeID == "char":
- out += f" p.PrintKeyString(\"{v.name}\", obj.{v.name}, {str(max_key_len)});\n"
+ out += f" p.PrintKeyString(\"{v.name}\", obj.{v.name});\n"
# uuid's
elif (v.arrayLength == str(16) and v.typeID == "uint8_t"): # VK_UUID_SIZE
- out += f" p.PrintKeyString(\"{v.name}\", to_string_16(obj.{v.name}), {str(max_key_len)});\n"
+ out += f" p.PrintKeyString(\"{v.name}\", to_string_16(obj.{v.name}));\n"
elif (v.arrayLength == str(8) and v.typeID == "uint8_t"): # VK_LUID_SIZE
out += f" if (obj.deviceLUIDValid)" # special case
- out += f" p.PrintKeyString(\"{v.name}\", to_string_8(obj.{v.name}), {str(max_key_len)});\n"
+ out += f" p.PrintKeyString(\"{v.name}\", to_string_8(obj.{v.name}));\n"
elif struct.name == "VkQueueFamilyGlobalPriorityPropertiesEXT" and v.name == "priorities":
out += f" ArrayWrapper arr(p,\"{v.name}\", obj.priorityCount);\n"
out += f" for (uint32_t i = 0; i < obj.priorityCount; i++) {{\n"
@@ -554,23 +555,16 @@ def PrintStructure(struct, types_to_gen, structure_names, aliases):
out += f" p.PrintElement(obj.{v.name}[i]);\n"
out += f" }}\n"
elif v.typeID == "VkBool32":
- out += f" p.PrintKeyBool(\"{v.name}\", static_cast<bool>(obj.{v.name}), {str(max_key_len)});\n"
+ out += f" p.PrintKeyBool(\"{v.name}\", static_cast<bool>(obj.{v.name}));\n"
elif v.typeID == "VkConformanceVersion":
- out += f" DumpVkConformanceVersion(p, \"conformanceVersion\", obj.{v.name}, {str(max_key_len)});\n"
+ out += f" DumpVkConformanceVersion(p, \"conformanceVersion\", obj.{v.name});\n"
elif v.typeID == "VkDeviceSize":
- out += f" p.PrintKeyValue(\"{v.name}\", to_hex_str(p, obj.{v.name}), {str(max_key_len)});\n"
+ out += f" p.PrintKeyValue(\"{v.name}\", to_hex_str(p, obj.{v.name}));\n"
elif v.typeID in predefined_types:
- out += f" p.PrintKeyValue(\"{v.name}\", obj.{v.name}, {str(max_key_len)});\n"
+ out += f" p.PrintKeyValue(\"{v.name}\", obj.{v.name});\n"
elif v.name not in ['sType', 'pNext']:
- # if it is an enum/flag/bitmask, add the calculated width
- type_name = v.typeID
- for key, value in aliases.items():
- if type_name in value:
- type_name = key
- if type_name not in structure_names:
- out += f" Dump{type_name}(p, \"{v.name}\", obj.{v.name}, {str(max_key_len)});\n"
- else:
- out += f" Dump{type_name}(p, \"{v.name}\", obj.{v.name});\n"
+ # if it is an enum/flag/bitmask
+ out += f" Dump{v.typeID}(p, \"{v.name}\", obj.{v.name});\n"
if struct.name in ["VkPhysicalDeviceLimits", "VkPhysicalDeviceSparseProperties"]:
out += f" p.ObjectEnd();\n"
out += f"}}\n"
@@ -723,7 +717,6 @@ def PrintChainIterator(listName, structures, all_structures, checkExtLoc, extTyp
out += AddGuardFooter(s)
out += f" place = structure->pNext;\n"
out += f" }}\n"
- out += f" p.UnsetSubHeader();\n"
out += f"}}\n"
return out