[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