From ca98e4446b690709ce517b33d17cb3e2af3f5084 Mon Sep 17 00:00:00 2001 From: Eric Engestrom Date: Thu, 21 Jul 2022 22:38:27 +0100 Subject: [PATCH] vk/util: keep track of extension requirements Signed-off-by: Eric Engestrom Reviewed-by: Faith Ekstrand Reviewed-by: Samuel Pitoiset Part-of: --- src/vulkan/util/vk_entrypoints.py | 2 +- src/vulkan/util/vk_extensions.py | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/vulkan/util/vk_entrypoints.py b/src/vulkan/util/vk_entrypoints.py index b0aafb65f2c..176ac3113a8 100644 --- a/src/vulkan/util/vk_entrypoints.py +++ b/src/vulkan/util/vk_entrypoints.py @@ -135,7 +135,7 @@ def get_entrypoints(doc, entrypoints_to_defines): ext_name = extension.attrib['name'] - ext = Extension(ext_name, 1, True) + ext = Extension(ext_name, 1, True, None) ext.type = extension.attrib['type'] for command in extension.findall('./require/command'): diff --git a/src/vulkan/util/vk_extensions.py b/src/vulkan/util/vk_extensions.py index b00daea4bf7..093147909fe 100644 --- a/src/vulkan/util/vk_extensions.py +++ b/src/vulkan/util/vk_extensions.py @@ -10,10 +10,11 @@ def _bool_to_c_expr(b): return b class Extension: - def __init__(self, name, ext_version, enable): + def __init__(self, name, ext_version, enable, requires): self.name = name self.ext_version = int(ext_version) self.enable = _bool_to_c_expr(enable) + self.requires = requires.split(',') if requires else [] def c_android_condition(self): # if it's an EXT or vendor extension, it's allowed @@ -98,6 +99,7 @@ def get_all_exts_from_xml(xml): name = ext_elem.attrib['name'] if not supported and name != 'VK_ANDROID_native_buffer': continue + requires = ext_elem.attrib.get('requires') version = None for enum_elem in ext_elem.findall('.require/enum'): if enum_elem.attrib['name'].endswith('_SPEC_VERSION'): @@ -105,7 +107,7 @@ def get_all_exts_from_xml(xml): if 'value' in enum_elem.attrib: assert version is None version = int(enum_elem.attrib['value']) - extensions.append(Extension(name, version, True)) + extensions.append(Extension(name, version, True, requires)) return sorted(extensions, key=extension_order) @@ -130,6 +132,7 @@ def init_exts_from_xml(xml, extensions, platform_defines): ext = ext_name_map[ext_name] ext.type = ext_elem.attrib['type'] + ext.requires = [ext_name_map[req] for req in ext.requires] # Mapping between extension name and the android version in which the extension # was whitelisted in Android CTS's dEQP-VK.info.device_extensions and