From 6fe6c42903b10888e42b6601febd475a0890a04f Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Tue, 10 Sep 2024 11:48:52 -0500 Subject: [PATCH] vulkan: Allow the same item to show up twice in core version The way the XML is being organized these days, they're doing one section for each promoted thing and if something gets promoted twice by different extensions. As long as we grab the lowest of those core versions, we should be fine. Reviewed-by: Alyssa Rosenzweig Reviewed-by: Samuel Pitoiset Part-of: --- src/vulkan/util/vk_extensions.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/vulkan/util/vk_extensions.py b/src/vulkan/util/vk_extensions.py index f58b04f71cb..a6dccf78f69 100644 --- a/src/vulkan/util/vk_extensions.py +++ b/src/vulkan/util/vk_extensions.py @@ -104,6 +104,9 @@ class VkVersion: return self.__int_ver() > other.__int_ver() + def __le__(self, other): + return not self.__gt__(other) + # Sort the extension list the way we expect: KHR, then EXT, then vendors # alphabetically. For digits, read them as a whole number sort that. # eg.: VK_KHR_8bit_storage < VK_KHR_16bit_storage < VK_EXT_acquire_xlib_display @@ -199,8 +202,10 @@ def get_all_required(xml, thing, api, beta): version = VkVersion(feature.attrib['number']) for t in feature.findall('./require/' + thing): name = t.attrib['name'] - assert name not in things - things[name] = Requirements(core_version=version) + if name in things: + assert things[name].core_version <= version + else: + things[name] = Requirements(core_version=version) for extension in xml.findall('.extensions/extension'): ext = Extension.from_xml(extension)