[PATCH v2 2/2] winevulkan: Unwrap VkSurfaceKHR if required.

Liam Middlebrook lmiddlebrook at nvidia.com
Fri Jan 22 13:59:12 CST 2021


Signed-off-by: Liam Middlebrook <lmiddlebrook at nvidia.com>

On 1/22/21 9:31 AM, Georg Lehmann wrote:
> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50422
> 
> Signed-off-by: Georg Lehmann <dadschoorse at gmail.com>
> ---
>   dlls/winevulkan/make_vulkan | 12 ++++++++++--
>   1 file changed, 10 insertions(+), 2 deletions(-)
> 
> diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan
> index 6242ddcce0b..40978a8fc7a 100755
> --- a/dlls/winevulkan/make_vulkan
> +++ b/dlls/winevulkan/make_vulkan
> @@ -955,6 +955,8 @@ class VkHandle(object):
>               return "wine_debug_utils_messenger_from_handle({0})->debug_messenger".format(name)
>           if self.name == "VkDebugReportCallbackEXT":
>               return "wine_debug_report_callback_from_handle({0})->debug_callback".format(name)
> +        if self.name == "VkSurfaceKHR":
> +            return "wine_surface_from_handle({0})->base.surface".format(name)
>   
>           native_handle_name = None
>   
> @@ -979,6 +981,8 @@ class VkHandle(object):
>       def is_wrapped(self):
>           return self.native_handle("test") is not None
>   
> +    def is_unwrapped_by_driver(self):
> +        return self.name == "VkSurfaceKHR"
>   
>   class VkMember(object):
>       def __init__(self, const=False, struct_fwd_decl=False,_type=None, pointer=None, name=None, array_len=None,
> @@ -1601,8 +1605,12 @@ class VkParam(object):
>               else:
>                   return "&{0}_host".format(self.name)
>           else:
> -            # We need to pass the native handle to the native Vulkan calls.
> -            native_handle = self.handle.native_handle(self.name) if self.is_handle() else None
> +            # We need to pass the native handle to the native Vulkan calls unless
> +            # the wine driver unwraps the handle for us.
> +            if self.is_handle() and not self.handle.is_unwrapped_by_driver():
> +                native_handle = self.handle.native_handle(self.name)
> +            else:
> +                native_handle = None
>               return native_handle if native_handle else self.name
>   
>   
> 



More information about the wine-devel mailing list