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:
committed by
Marge Bot
parent
87e83ce58e
commit
ca98e4446b
@@ -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'):
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user