diff options
| -rw-r--r-- | scripts/vulkaninfo_generator.py | 47 | ||||
| -rw-r--r-- | vulkaninfo/generated/vulkaninfo.hpp | 2 |
2 files changed, 28 insertions, 21 deletions
diff --git a/scripts/vulkaninfo_generator.py b/scripts/vulkaninfo_generator.py index 3e569809..572f63c2 100644 --- a/scripts/vulkaninfo_generator.py +++ b/scripts/vulkaninfo_generator.py @@ -214,7 +214,9 @@ class VulkanInfoGenerator(OutputGenerator): for node in self.registry.reg.find('extensions').findall('extension'): ext = VulkanExtension(node) for item in ext.vktypes: - self.extTypes[item] = ext + if item not in self.extTypes: + self.extTypes[item] = [] + self.extTypes[item].append(ext) for item in ext.vkfuncs: self.extFuncs[item] = ext @@ -383,7 +385,7 @@ def GetExtension(name, generator): if name in generator.extFuncs: return generator.extFuncs[name] elif name in generator.extTypes: - return generator.extTypes[name] + return generator.extTypes[name][0] else: return None @@ -676,15 +678,12 @@ def PrintChainIterator(listName, structures, all_structures, checkExtLoc, extTyp if s.sTypeName is None: continue - extNameStr = None - extType = None - for k, e in extTypes.items(): + extEnables = {} + for k, elem in extTypes.items(): if k == s.name or (s.name in aliases.keys() and k in aliases[s.name]): - if e.extNameStr is not None: - extNameStr = e.extNameStr - if e.type is not None: - extType = e.type - break + for e in elem: + extEnables[e.extNameStr] = e.type + version = None oldVersionName = None for v in vulkan_versions: @@ -698,18 +697,25 @@ def PrintChainIterator(listName, structures, all_structures, checkExtLoc, extTyp out += AddGuardHeader(s) out += f" if (structure->sType == {s.sTypeName}" has_version = version is not None - has_extNameStr = extNameStr is not None or s.name in aliases.keys() + has_extNameStr = len(extEnables) > 0 or s.name in aliases.keys() if has_version or has_extNameStr: out += f" && \n (" + has_printed_condition = False if has_extNameStr: - if extType == "device": - out += f"gpu.CheckPhysicalDeviceExtensionIncluded({extNameStr})" - elif extType == "instance": - out += f"inst.CheckExtensionEnabled({extNameStr})" - if has_version and extType is not None: - out += f" ||\n " + for key, value in extEnables.items(): + if has_printed_condition: + out += f' || ' + has_printed_condition = True + if value == "device": + out += f"gpu.CheckPhysicalDeviceExtensionIncluded({key})" + elif value == "instance": + out += f"inst.CheckExtensionEnabled({key})" + else: + assert(False and "Should never get here") if has_version: + if has_printed_condition: + out += f' ||\n ' out += f"{version_desc}.minor >= {str(version)}" out += f")" out += f") {{\n" @@ -926,10 +932,11 @@ class VulkanStructure: self.members.append(VulkanVariable( node, constants, self.name)) - for k, e in extTypes.items(): + for k, elem in extTypes.items(): if k == self.name: - if e.guard is not None: - self.guard = e.guard + for e in elem: + if e.guard is not None: + self.guard = e.guard class VulkanExtension: diff --git a/vulkaninfo/generated/vulkaninfo.hpp b/vulkaninfo/generated/vulkaninfo.hpp index e3676fd0..0bd71061 100644 --- a/vulkaninfo/generated/vulkaninfo.hpp +++ b/vulkaninfo/generated/vulkaninfo.hpp @@ -3201,7 +3201,7 @@ void chain_iterator_phys_device_props2(Printer &p, AppInstance &inst, AppGpu &gp p.AddNewline(); } if (structure->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES && - (inst.CheckExtensionEnabled(VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME) || + (inst.CheckExtensionEnabled(VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME) || inst.CheckExtensionEnabled(VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME) || inst.CheckExtensionEnabled(VK_KHR_EXTERNAL_FENCE_CAPABILITIES_EXTENSION_NAME) || gpu.api_version.minor >= 1)) { VkPhysicalDeviceIDProperties* props = (VkPhysicalDeviceIDProperties*)structure; DumpVkPhysicalDeviceIDProperties(p, gpu.api_version.minor >= 1 ?"VkPhysicalDeviceIDProperties":"VkPhysicalDeviceIDPropertiesKHR", *props); |
