winevulkan: Fixup 64bit enum aliases later to avoid using not yet defined values.

Signed-off-by: Georg Lehmann <dadschoorse@gmail.com>
This commit is contained in:
Georg Lehmann 2022-09-01 14:28:24 +02:00 committed by Alexandre Julliard
parent 5412401a31
commit 5ac5e2876a

View file

@ -435,13 +435,7 @@ class VkEnum(object):
def create_alias(self, name, alias_name):
""" Create an aliased value for this enum """
# Older GCC versions need a literal to initialize a static const uint64_t
# which is what we use for 64bit bitmasks.
if self.bitwidth == 64:
alias = next(x for x in self.values if x.name == alias_name)
self.add(VkEnumValue(name, self.bitwidth, value=alias.value, hex=alias.hex, alias=alias_name))
else:
self.add(VkEnumValue(name, self.bitwidth, alias=alias_name))
self.add(VkEnumValue(name, self.bitwidth, alias=alias_name))
def create_value(self, name, value):
""" Create a new value for this enum """
@ -469,6 +463,19 @@ class VkEnum(object):
if not any(x.name == value.name for x in self.values):
self.values.append(value)
def fixup_64bit_aliases(self):
""" Replace 64bit aliases with literal values """
# Older GCC versions need a literal to initialize a static const uint64_t
# which is what we use for 64bit bitmasks.
if self.bitwidth != 64:
return
for value in self.values:
if not value.is_alias():
continue
alias = next(x for x in self.values if x.name == value.alias)
value.hex = alias.hex
value.value = alias.value
def definition(self):
if self.is_alias():
return ""
@ -3310,6 +3317,9 @@ class VkRegistry(object):
self._parse_features(root)
self._parse_extensions(root)
for enum in self.enums.values():
enum.fixup_64bit_aliases()
self._match_object_types()
self.copyright = root.find('./comment').text