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

Liam Middlebrook lmiddlebrook at nvidia.com
Thu Jan 21 16:20:59 CST 2021



On 1/21/21 11:58 AM, Georg Lehmann wrote:
> 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 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
>>
>> 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.

Sounds good. Thanks for the explanation. I saw that it was different and 
blanked out. A comment would be good for future readers.


Thanks,

Liam Middlebrook

> 
> Thanks,
> 
> Georg Lehmann
> 
>>
>>
>> Thanks,
>>
>> Liam Middlebrook
>>
>>>               return native_handle if native_handle else self.name
>>>
>>
> 
> 



More information about the wine-devel mailing list