mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-03 07:10:15 +01:00
intel/genxml: Add filter_engines() to GenXml class
Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24547>
This commit is contained in:
parent
5e275d8a2b
commit
493e8c4b50
3 changed files with 24 additions and 20 deletions
|
|
@ -255,11 +255,6 @@ class XmlParser(object):
|
|||
name = item.tag
|
||||
attrs = item.attrib
|
||||
if name in ('instruction', 'struct', 'register'):
|
||||
if name == 'instruction' and 'engine' in attrs:
|
||||
engines = set(attrs['engine'].split('|'))
|
||||
if not engines & self.engines:
|
||||
self.container_stack.append(None)
|
||||
return
|
||||
self.start_container(attrs)
|
||||
for struct_item in item:
|
||||
self.process_item(struct_item)
|
||||
|
|
@ -320,9 +315,9 @@ def parse_args():
|
|||
def main():
|
||||
pargs = parse_args()
|
||||
|
||||
engines = pargs.engines.split(',')
|
||||
engines = set(pargs.engines.split(','))
|
||||
valid_engines = [ 'render', 'blitter', 'video' ]
|
||||
if set(engines) - set(valid_engines):
|
||||
if engines - set(valid_engines):
|
||||
print("Invalid engine specified, valid engines are:\n")
|
||||
for e in valid_engines:
|
||||
print("\t%s" % e)
|
||||
|
|
@ -333,8 +328,8 @@ def main():
|
|||
|
||||
for source in pargs.xml_sources:
|
||||
p = XmlParser(containers)
|
||||
p.engines = set(engines)
|
||||
genxml = intel_genxml.GenXml(source)
|
||||
genxml.filter_engines(engines)
|
||||
p.emit_genxml(genxml)
|
||||
|
||||
included_symbols_list = pargs.include_symbols.split(',')
|
||||
|
|
|
|||
|
|
@ -453,13 +453,6 @@ class Parser(object):
|
|||
if name == "instruction":
|
||||
self.instruction = safe_name(attrs["name"])
|
||||
self.length_bias = int(attrs["bias"])
|
||||
if "engine" in attrs:
|
||||
self.instruction_engines = set(attrs["engine"].split('|'))
|
||||
else:
|
||||
# When an instruction doesn't have the engine specified,
|
||||
# it is considered to be for all engines, so 'None' is used
|
||||
# to signify that the instruction belongs to all engines.
|
||||
self.instruction_engines = None
|
||||
elif name == "struct":
|
||||
self.struct = safe_name(attrs["name"])
|
||||
self.structs[attrs["name"]] = 1
|
||||
|
|
@ -549,8 +542,6 @@ class Parser(object):
|
|||
|
||||
def emit_instruction(self):
|
||||
name = self.instruction
|
||||
if self.instruction_engines and not self.instruction_engines & self.engines:
|
||||
return
|
||||
|
||||
if not self.length is None:
|
||||
print('#define %-33s %6d' %
|
||||
|
|
@ -640,17 +631,17 @@ def parse_args():
|
|||
def main():
|
||||
pargs = parse_args()
|
||||
|
||||
engines = pargs.engines.split(',')
|
||||
engines = set(pargs.engines.split(','))
|
||||
valid_engines = [ 'render', 'blitter', 'video' ]
|
||||
if set(engines) - set(valid_engines):
|
||||
if engines - set(valid_engines):
|
||||
print("Invalid engine specified, valid engines are:\n")
|
||||
for e in valid_engines:
|
||||
print("\t%s" % e)
|
||||
sys.exit(1)
|
||||
|
||||
genxml = intel_genxml.GenXml(pargs.xml_source)
|
||||
genxml.filter_engines(engines)
|
||||
p = Parser()
|
||||
p.engines = set(engines)
|
||||
p.emit_genxml(genxml)
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
|
|||
|
|
@ -169,3 +169,21 @@ def sort_xml(xml: et.ElementTree) -> None:
|
|||
class GenXml(object):
|
||||
def __init__(self, filename):
|
||||
self.et = et.parse(filename)
|
||||
|
||||
def filter_engines(self, engines):
|
||||
changed = False
|
||||
items = []
|
||||
for item in self.et.getroot():
|
||||
# When an instruction doesn't have the engine specified,
|
||||
# it is considered to be for all engines. Otherwise, we
|
||||
# check to see if it's tagged for the engines requested.
|
||||
if item.tag == 'instruction' and 'engine' in item.attrib:
|
||||
i_engines = set(item.attrib["engine"].split('|'))
|
||||
if not (i_engines & engines):
|
||||
# Drop this instruction because it doesn't support
|
||||
# the requested engine types.
|
||||
changed = True
|
||||
continue
|
||||
items.append(item)
|
||||
if changed:
|
||||
self.et.getroot()[:] = items
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue