aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/vulkaninfo_generator.py47
-rw-r--r--vulkaninfo/generated/vulkaninfo.hpp2
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);