[PATCH 1/3] winevulkan: Specify which structures to ignore in STRUCT_CHAIN_CONVERSIONS.
Liam Middlebrook
lmiddlebrook at nvidia.com
Tue May 18 02:06:48 CDT 2021
Signed-off-by: Liam Middlebrook <lmiddlebrook at nvidia.com>
On 5/17/21 1:00 PM, Derek Lesho wrote:
> Signed-off-by: Derek Lesho <dlesho at codeweavers.com>
> ---
> dlls/winevulkan/make_vulkan | 22 +++++++++++++---------
> 1 file changed, 13 insertions(+), 9 deletions(-)
>
> diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan
> index cc79b0a58cd..7f76d328fc8 100755
> --- a/dlls/winevulkan/make_vulkan
> +++ b/dlls/winevulkan/make_vulkan
> @@ -256,10 +256,11 @@ FUNCTION_OVERRIDES = {
> "vkDebugMarkerSetObjectTagEXT" : {"dispatch": True, "driver" : False, "thunk" : ThunkType.PRIVATE},
> }
>
> -STRUCT_CHAIN_CONVERSIONS = [
> - "VkDeviceCreateInfo",
> - "VkInstanceCreateInfo",
> -]
> +STRUCT_CHAIN_CONVERSIONS = {
> + # Ignore to not confuse host loader.
> + "VkDeviceCreateInfo": ["VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO"],
> + "VkInstanceCreateInfo": ["VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO"],
> +}
>
>
> class Direction(Enum):
> @@ -2417,9 +2418,10 @@ class FreeFunction(object):
>
>
> class StructChainConversionFunction(object):
> - def __init__(self, direction, struct):
> + def __init__(self, direction, struct, ignores):
> self.direction = direction
> self.struct = struct
> + self.ignores = ignores
> self.type = struct.name
>
> self.name = "convert_{0}_struct_chain".format(self.type)
> @@ -2444,9 +2446,8 @@ class StructChainConversionFunction(object):
> body += " switch (in_header->sType)\n"
> body += " {\n"
>
> - # Ignore to not confuse host loader.
> - body += " case VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO:\n"
> - body += " case VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO:\n"
> + for i in self.ignores:
> + body += " case {0}:\n".format(i)
> body += " break;\n\n"
>
> for e in self.struct.struct_extensions:
> @@ -2455,6 +2456,9 @@ class StructChainConversionFunction(object):
>
> stype = next(x for x in e.members if x.name == "sType")
>
> + if stype.values in self.ignores:
> + continue
> +
> body += " case {0}:\n".format(stype.values)
> body += " {\n"
>
> @@ -2604,7 +2608,7 @@ class VkGenerator(object):
>
> for struct in self.registry.structs:
> if struct.name in STRUCT_CHAIN_CONVERSIONS:
> - self.struct_chain_conversions.append(StructChainConversionFunction(Direction.INPUT, struct))
> + self.struct_chain_conversions.append(StructChainConversionFunction(Direction.INPUT, struct, STRUCT_CHAIN_CONVERSIONS[struct.name]))
> self.struct_chain_conversions.append(FreeStructChainFunction(struct))
> # Once we decide to support pNext chains conversion everywhere, move this under get_conversions
> for e in struct.struct_extensions:
>
More information about the wine-devel
mailing list