[PATCH 3/4] winevulkan: generate alias enum values
Liam Middlebrook
lmiddlebrook at nvidia.com
Fri Mar 20 21:39:31 CDT 2020
Signed-off-by: Liam Middlebrook <lmiddlebrook at nvidia.com>
Signed-off-by: Piers Daniell <pdaniell at nvidia.com>
---
dlls/winevulkan/make_vulkan | 13 ++++++++-----
1 file changed, 8 insertions(+), 5 deletions(-)
diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan
index c0dfbd976b..4383046cee 100755
--- a/dlls/winevulkan/make_vulkan
+++ b/dlls/winevulkan/make_vulkan
@@ -382,9 +382,10 @@ class VkEnum(object):
# Extensions can add new enum values. When an extension is promoted to Core
# the registry defines the value twice once for old extension and once for
- # new Core features. Ignore the duplicate entry.
+ # new Core features. Add the duplicate if it's explicitly marked as an
+ # alias, otherwise ignore it.
for v in self.values:
- if v.value == value.value:
+ if not value.is_alias() and v.value == value.value:
LOGGER.debug("Adding duplicate enum value {0} to {1}".format(v, self.name))
return
self.values.append(value)
@@ -396,7 +397,7 @@ class VkEnum(object):
text = "typedef enum {0}\n{{\n".format(self.name)
# Print values sorted, values can have been added in a random order.
- values = sorted(self.values, key=lambda value: value.value)
+ values = sorted(self.values, key=lambda value: value.value if value.value is not None else 0x7ffffffe)
for value in values:
text += " {0},\n".format(value.definition())
text += "}} {0};\n".format(self.name)
@@ -2739,10 +2740,12 @@ class VkRegistry(object):
if direction is not None:
value = -value
- enum.add(VkEnumValue(enum_elem.attrib["name"], value))
+ enum.add(VkEnumValue(enum_elem.attrib["name"], value=value))
elif "value" in enum_elem.keys():
- enum.add(VkEnumValue(enum_elem.attrib["name"], int(enum_elem.attrib["value"])))
+ enum.add(VkEnumValue(enum_elem.attrib["name"], value=int(enum_elem.attrib["value"])))
+ elif "alias" in enum_elem.keys():
+ enum.add(VkEnumValue(enum_elem.attrib["name"], alias=enum_elem.attrib["alias"]))
elif "value" in enum_elem.keys():
self.consts.append(VkConstant(enum_elem.attrib["name"], enum_elem.attrib["value"]))
--
2.17.1
More information about the wine-devel
mailing list