mirror of
https://gitee.com/openharmony/third_party_mesa3d
synced 2024-11-24 07:50:26 +00:00
vulkan/enum_to_str: Add support for aliases and new Vulkan versions
Reviewed-by: Samuel Iglesias Gonsálvez <siglesias@igalia.com>
This commit is contained in:
parent
539a0aec45
commit
7fb86fb511
@ -152,28 +152,38 @@ class VkEnum(object):
|
||||
self.name = name
|
||||
# Maps numbers to names
|
||||
self.values = values or dict()
|
||||
self.name_to_value = dict()
|
||||
|
||||
def add_value(self, name, value=None,
|
||||
extension=None, offset=None,
|
||||
extnum=None, offset=None,
|
||||
error=False):
|
||||
assert value is not None or extension is not None
|
||||
assert value is not None or extnum is not None
|
||||
if value is None:
|
||||
value = 1000000000 + (extension.number - 1) * 1000 + offset
|
||||
value = 1000000000 + (extnum - 1) * 1000 + offset
|
||||
if error:
|
||||
value = -value
|
||||
|
||||
self.name_to_value[name] = value
|
||||
if value not in self.values:
|
||||
self.values[value] = name
|
||||
elif len(self.values[value]) > len(name):
|
||||
self.values[value] = name
|
||||
|
||||
def add_value_from_xml(self, elem, extension=None):
|
||||
if 'value' in elem.attrib:
|
||||
self.add_value(elem.attrib['name'],
|
||||
value=int(elem.attrib['value']))
|
||||
elif 'alias' in elem.attrib:
|
||||
self.add_value(elem.attrib['name'],
|
||||
value=self.name_to_value[elem.attrib['alias']])
|
||||
else:
|
||||
error = 'dir' in elem.attrib and elem.attrib['dir'] == '-'
|
||||
print(elem.attrib['name'])
|
||||
if 'extnumber' in elem.attrib:
|
||||
extnum = int(elem.attrib['extnumber'])
|
||||
else:
|
||||
extnum = extension.number
|
||||
self.add_value(elem.attrib['name'],
|
||||
extension=extension,
|
||||
extnum=extnum,
|
||||
offset=int(elem.attrib['offset']),
|
||||
error=error)
|
||||
|
||||
@ -192,6 +202,11 @@ def parse_xml(enum_factory, ext_factory, filename):
|
||||
for value in enum_type.findall('./enum'):
|
||||
enum.add_value_from_xml(value)
|
||||
|
||||
for value in xml.findall('./feature/require/enum[@extends]'):
|
||||
enum = enum_factory.get(value.attrib['extends'])
|
||||
if enum is not None:
|
||||
enum.add_value_from_xml(value)
|
||||
|
||||
for ext_elem in xml.findall('./extensions/extension[@supported="vulkan"]'):
|
||||
extension = ext_factory(ext_elem.attrib['name'],
|
||||
number=int(ext_elem.attrib['number']))
|
||||
|
Loading…
Reference in New Issue
Block a user