On 21.01.21 19:36, Liam Middlebrook wrote:
On 1/21/21 10:12 AM, Georg Lehmann wrote:
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50422
Signed-off-by: Georg Lehmann dadschoorse@gmail.com
dlls/winevulkan/make_vulkan | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/dlls/winevulkan/make_vulkan b/dlls/winevulkan/make_vulkan index 9fa0b2c9507..d2fc5b28114 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_wsi_wrapper(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, @@ -1602,7 +1606,10 @@ class VkParam(object): 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 + if self.is_handle() and not self.handle.is_wsi_wrapper(): + native_handle = self.handle.native_handle(self.name) + else: + native_handle = None
Can you explain why this is needed?
It's needed because otherwise winevulkan would pass the native surface handle to winex11/winemac but those use the wrapped handle to get their data + pass the native surface to the linux side. I will add a comment.
Thanks,
Georg Lehmann
Thanks,
Liam Middlebrook
return native_handle if native_handle else self.name