aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Giessen <charles@lunarg.com>2026-01-20 09:34:28 -0600
committerCharles Giessen <46324611+charles-lunarg@users.noreply.github.com>2026-01-20 13:12:03 -0600
commit983f86f9b5f5de9ce37349f42c38d6418218126f (patch)
tree876a0b06784277f8d8adb51652361dd329eeb448
parentab8520f3445dbf823d3927d6faf22b7f5651000a (diff)
downloadusermoji-983f86f9b5f5de9ce37349f42c38d6418218126f.tar.xz
vulkaninfo: Fix string printing in VK_KHR_display
Strings must be printed with the PrintString/PrintKeyString functions in order to properly escape and quote them in the JSON output.
-rw-r--r--scripts/generators/vulkaninfo_generator.py16
-rw-r--r--vulkaninfo/generated/vulkaninfo.hpp6
-rw-r--r--vulkaninfo/vulkaninfo.cpp2
3 files changed, 17 insertions, 7 deletions
diff --git a/scripts/generators/vulkaninfo_generator.py b/scripts/generators/vulkaninfo_generator.py
index 86a32c48..472459ac 100644
--- a/scripts/generators/vulkaninfo_generator.py
+++ b/scripts/generators/vulkaninfo_generator.py
@@ -817,13 +817,19 @@ std::vector<std::unique_ptr<AppVideoProfile>> enumerate_supported_video_profiles
if max_key_len > 0:
out.append(f' p.SetMinKeyWidth({max_key_len});\n')
for v in struct.members:
+ # strings
+ if v.type == 'char':
+ if v.pointer == True:
+ out.append(f' if (obj.{v.name} == nullptr) {{')
+ out.append(f' p.PrintKeyString("{v.name}", "NULL");\n')
+ out.append(' } else {')
+ out.append(f' p.PrintKeyString("{v.name}", obj.{v.name});\n')
+ if v.pointer == True:
+ out.append(' }')
# arrays
- if v.length is not None:
- # strings
- if v.type == 'char':
- out.append(f' p.PrintKeyString("{v.name}", obj.{v.name});\n')
+ elif v.length is not None:
# uuid's
- elif v.type == 'uint8_t' and (v.fixedSizeArray[0] == 'VK_LUID_SIZE' or v.fixedSizeArray[0] == 'VK_UUID_SIZE'): # VK_UUID_SIZE
+ if v.type == 'uint8_t' and (v.fixedSizeArray[0] == 'VK_LUID_SIZE' or v.fixedSizeArray[0] == 'VK_UUID_SIZE'): # VK_UUID_SIZE
if v.fixedSizeArray[0] == 'VK_LUID_SIZE':
out.append(' if (obj.deviceLUIDValid) { // special case\n')
out.append(f' p.PrintKeyValue("{v.name}", obj.{v.name});\n')
diff --git a/vulkaninfo/generated/vulkaninfo.hpp b/vulkaninfo/generated/vulkaninfo.hpp
index d52d8001..39e4b188 100644
--- a/vulkaninfo/generated/vulkaninfo.hpp
+++ b/vulkaninfo/generated/vulkaninfo.hpp
@@ -5004,7 +5004,11 @@ void DumpVkDisplayPlanePropertiesKHR(Printer &p, std::string name, const VkDispl
void DumpVkDisplayPropertiesKHR(Printer &p, std::string name, const VkDisplayPropertiesKHR &obj) {
ObjectWrapper object{p, name};
p.SetMinKeyWidth(20);
- p.PrintKeyValue("displayName", obj.displayName);
+ if (obj.displayName == nullptr) {
+ p.PrintKeyString("displayName", "NULL");
+ } else {
+ p.PrintKeyString("displayName", obj.displayName);
+ }
DumpVkExtent2D(p, "physicalDimensions", obj.physicalDimensions);
DumpVkExtent2D(p, "physicalResolution", obj.physicalResolution);
DumpVkSurfaceTransformFlagsKHR(p, "supportedTransforms", obj.supportedTransforms);
diff --git a/vulkaninfo/vulkaninfo.cpp b/vulkaninfo/vulkaninfo.cpp
index ba562189..2c11226a 100644
--- a/vulkaninfo/vulkaninfo.cpp
+++ b/vulkaninfo/vulkaninfo.cpp
@@ -884,7 +884,7 @@ void GpuDumpDisplayPlanes(Printer &p, AppGpu &gpu) {
auto *current = gpu.FindDisplay(plane.properties.currentDisplay);
- p.PrintKeyValue("currentDisplay", current ? current->name.c_str() : "none");
+ p.PrintKeyString("currentDisplay", current ? current->name.c_str() : "none");
DumpVkDisplayPlanePropertiesKHR(p, "VkDisplayPlanePropertiesKHR", plane.properties);