[PATCH] winevulkan: Fix 64bit enums on old gcc versions.
Georg Lehmann
dadschoorse at gmail.com
Thu Mar 11 08:01:33 CST 2021
Signed-off-by: Georg Lehmann <dadschoorse at gmail.com>
---
dlls/winevulkan/make_vulkan | 12 +++++++++---
1 file changed, 9 insertions(+), 3 deletions(-)
diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan
index 1d739c12cae..2e27ceafc40 100755
--- a/dlls/winevulkan/make_vulkan
+++ b/dlls/winevulkan/make_vulkan
@@ -405,7 +405,13 @@ class VkEnum(object):
def create_alias(self, name, alias_name):
""" Create an aliased value for this enum """
- self.add(VkEnumValue(name, self.bitwidth, alias=alias_name))
+ # 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))
def create_value(self, name, value):
""" Create a new value for this enum """
@@ -475,14 +481,14 @@ class VkEnumValue(object):
def __repr__(self):
postfix = "ull" if self.bitwidth == 64 else ""
- if self.is_alias():
+ if self.is_alias() and not self.value:
return "{0}={1}".format(self.name, self.alias)
return "{0}={1}{2}".format(self.name, self.value, postfix)
def definition(self):
""" Convert to text definition e.g. VK_FOO = 1 """
postfix = "ull" if self.bitwidth == 64 else ""
- if self.is_alias():
+ if self.is_alias() and not self.value:
return "{0} = {1}".format(self.name, self.alias)
# Hex is commonly used for FlagBits and sometimes within
--
2.30.2
More information about the wine-devel
mailing list