From 3ed7fe55cdd334a552ffd33d6d8d80496ecc96cf Mon Sep 17 00:00:00 2001 From: Charles Giessen Date: Fri, 24 Sep 2021 14:09:58 -0600 Subject: vulkaninfo: Update to 1.3 Only changes are making the autogen print all required structs, and moving from using the EXT version of tool properties to the core version. --- scripts/vulkaninfo_generator.py | 4 ++-- vulkaninfo/generated/vulkaninfo.hpp | 39 +++++++++++++++++++++++++++++++++++++ vulkaninfo/vulkaninfo.cpp | 2 +- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/scripts/vulkaninfo_generator.py b/scripts/vulkaninfo_generator.py index ceea1962..f4a00125 100644 --- a/scripts/vulkaninfo_generator.py +++ b/scripts/vulkaninfo_generator.py @@ -86,11 +86,11 @@ std::string to_hex_str(Printer &p, T i) { # used in the .cpp code structures_to_gen = ['VkExtent3D', 'VkExtent2D', 'VkPhysicalDeviceLimits', 'VkPhysicalDeviceFeatures', 'VkPhysicalDeviceSparseProperties', - 'VkSurfaceCapabilitiesKHR', 'VkSurfaceFormatKHR', 'VkLayerProperties', 'VkPhysicalDeviceToolPropertiesEXT'] + 'VkSurfaceCapabilitiesKHR', 'VkSurfaceFormatKHR', 'VkLayerProperties', 'VkPhysicalDeviceToolProperties'] enums_to_gen = ['VkResult', 'VkFormat', 'VkPresentModeKHR', 'VkPhysicalDeviceType', 'VkImageTiling'] flags_to_gen = ['VkSurfaceTransformFlagsKHR', 'VkCompositeAlphaFlagsKHR', 'VkSurfaceCounterFlagsEXT', - 'VkDeviceGroupPresentModeFlagsKHR', 'VkFormatFeatureFlags', 'VkMemoryPropertyFlags', 'VkMemoryHeapFlags'] + 'VkDeviceGroupPresentModeFlagsKHR', 'VkFormatFeatureFlags', 'VkFormatFeatureFlags2', 'VkMemoryPropertyFlags', 'VkMemoryHeapFlags'] flags_strings_to_gen = ['VkQueueFlags'] struct_short_versions_to_gen = ['VkExtent3D'] diff --git a/vulkaninfo/generated/vulkaninfo.hpp b/vulkaninfo/generated/vulkaninfo.hpp index b852b1f5..ad0e0851 100644 --- a/vulkaninfo/generated/vulkaninfo.hpp +++ b/vulkaninfo/generated/vulkaninfo.hpp @@ -994,6 +994,37 @@ void DumpVkSurfaceTransformFlagBitsKHR(Printer &p, std::string name, VkSurfaceTr p.PrintKeyString(name, strings.at(0), width); } +std::vectorVkToolPurposeFlagBitsGetStrings(VkToolPurposeFlagBits value) { + std::vector strings; + if (value == 0) { strings.push_back("None"); return strings; } + if (0x1 & value) strings.push_back("TOOL_PURPOSE_VALIDATION_BIT"); + if (0x2 & value) strings.push_back("TOOL_PURPOSE_PROFILING_BIT"); + if (0x4 & value) strings.push_back("TOOL_PURPOSE_TRACING_BIT"); + if (0x8 & value) strings.push_back("TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT"); + if (0x10 & value) strings.push_back("TOOL_PURPOSE_MODIFYING_FEATURES_BIT"); + if (0x20 & value) strings.push_back("TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT"); + if (0x40 & value) strings.push_back("TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT"); + return strings; +} +void DumpVkToolPurposeFlags(Printer &p, std::string name, VkToolPurposeFlags value, int width = 0) { + if (p.Type() == OutputType::json) { p.PrintKeyValue(name, value); return; } + if (static_cast(value) == 0) { + ArrayWrapper arr(p, name, 0); + if (p.Type() != OutputType::vkconfig_output) + p.SetAsType().PrintString("None"); + return; + } + auto strings = VkToolPurposeFlagBitsGetStrings(static_cast(value)); + ArrayWrapper arr(p, name, strings.size()); + for(auto& str : strings){ + p.SetAsType().PrintString(str); + } +} +void DumpVkToolPurposeFlagBits(Printer &p, std::string name, VkToolPurposeFlagBits value, int width = 0) { + auto strings = VkToolPurposeFlagBitsGetStrings(value); + p.PrintKeyString(name, strings.at(0), width); +} + void DumpVkDrmFormatModifierProperties2EXT(Printer &p, std::string name, VkDrmFormatModifierProperties2EXT &obj) { ObjectWrapper object{p, name}; p.PrintKeyValue("drmFormatModifier", obj.drmFormatModifier, 27); @@ -1986,6 +2017,14 @@ void DumpVkPhysicalDeviceTimelineSemaphoreProperties(Printer &p, std::string nam ObjectWrapper object{p, name}; p.PrintKeyValue("maxTimelineSemaphoreValueDifference", obj.maxTimelineSemaphoreValueDifference, 35); } +void DumpVkPhysicalDeviceToolProperties(Printer &p, std::string name, VkPhysicalDeviceToolProperties &obj) { + ObjectWrapper object{p, name}; + p.PrintKeyString("name", obj.name, 16); + p.PrintKeyString("version", obj.version, 16); + DumpVkToolPurposeFlags(p, "purposes", obj.purposes, 16); + p.PrintKeyString("description", obj.description, 16); + p.PrintKeyString("layer", obj.layer, 16); +} void DumpVkPhysicalDeviceTransformFeedbackFeaturesEXT(Printer &p, std::string name, VkPhysicalDeviceTransformFeedbackFeaturesEXT &obj) { ObjectWrapper object{p, name}; p.PrintKeyBool("transformFeedback", static_cast(obj.transformFeedback), 17); diff --git a/vulkaninfo/vulkaninfo.cpp b/vulkaninfo/vulkaninfo.cpp index 1e24ce81..01ed1743 100644 --- a/vulkaninfo/vulkaninfo.cpp +++ b/vulkaninfo/vulkaninfo.cpp @@ -550,7 +550,7 @@ void GpuDumpToolingInfo(Printer &p, AppGpu &gpu) { p.SetSubHeader(); ObjectWrapper obj(p, "Tooling Info"); for (auto tool : tools) { - DumpVkPhysicalDeviceToolPropertiesEXT(p, tool.name, tool); + DumpVkPhysicalDeviceToolProperties(p, tool.name, tool); p.AddNewline(); } } -- cgit v1.2.3