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

Georg Lehmann dadschoorse at gmail.com
Thu Jan 21 12:12:27 CST 2021


Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=50422

Signed-off-by: Georg Lehmann <dadschoorse at 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
             return native_handle if native_handle else self.name
 
 
-- 
2.30.0




More information about the wine-devel mailing list