[PATCH 1/6] winevulkan: Don't add alias structs to struct-extensions list

Liam Middlebrook lmiddlebrook at nvidia.com
Wed Oct 30 15:00:00 CDT 2019


This resolves compilation errors relating to duplicate case values for
alias structures when building against spec version 1.1.106. An example
of one of these errors has been included below:
	vulkan_thunks.c: In function ‘convert_VkDeviceCreateInfo_struct_chain’:
	vulkan_thunks.c:1997:9: error: duplicate case value
	         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES:
	         ^~~~
	vulkan_thunks.c:1377:9: note: previously used here
	         case VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES:
         ^~~~

Signed-off-by: Liam Middlebrook <lmiddlebrook at nvidia.com>
Reviewed-by: Daniel Koch <dkoch at nvidia.com>
---
 dlls/winevulkan/make_vulkan | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan
index 4f1c03cc7c..058c5e41e9 100755
--- a/dlls/winevulkan/make_vulkan
+++ b/dlls/winevulkan/make_vulkan
@@ -2955,6 +2955,13 @@ class VkRegistry(object):
         for struct in structs:
             struct.set_type_info(self.types)

+            # Alias structures have enum values equivalent to those of the
+            # structure which they are aliased against. we need to ignore alias
+            # structs when populating the struct extensions list, otherwise we
+            # will create duplicate case entries.
+            if struct.alias:
+                continue
+
             for structextend in struct.structextends:
                 s = self.types[structextend]["data"]
                 s.struct_extensions.append(struct)
--
2.17.1




More information about the wine-devel mailing list