vk/util: keep track of extension requirements

Signed-off-by: Eric Engestrom <eric@igalia.com>
Reviewed-by: Faith Ekstrand <faith.ekstrand@collabora.com>
Reviewed-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21261>
This commit is contained in:
Eric Engestrom
2022-07-21 22:38:27 +01:00
committed by Marge Bot
parent 87e83ce58e
commit ca98e4446b
2 changed files with 6 additions and 3 deletions
+1 -1
View File
@@ -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'):
+5 -2
View File
@@ -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