Module: wine Branch: master Commit: 71f7915650c5d779747ca0286086e69aff99b2dc URL: https://source.winehq.org/git/wine.git/?a=commit;h=71f7915650c5d779747ca0286...
Author: Georg Lehmann dadschoorse@gmail.com Date: Fri Aug 20 13:24:47 2021 +0200
winex11.drv: Only return vulkan functions if the host function is available.
Signed-off-by: Georg Lehmann dadschoorse@gmail.com Signed-off-by: Liam Middlebrook lmiddlebrook@nvidia.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/winex11.drv/vulkan.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+)
diff --git a/dlls/winex11.drv/vulkan.c b/dlls/winex11.drv/vulkan.c index bdc287afeea..1bbdba2ce1d 100644 --- a/dlls/winex11.drv/vulkan.c +++ b/dlls/winex11.drv/vulkan.c @@ -435,12 +435,25 @@ static VkResult X11DRV_vkGetDeviceGroupSurfacePresentModesKHR(VkDevice device, return pvkGetDeviceGroupSurfacePresentModesKHR(device, x11_surface->surface, flags); }
+static const char *wine_vk_native_fn_name(const char *name) +{ + if (!strcmp(name, "vkCreateWin32SurfaceKHR")) + return "vkCreateXlibSurfaceKHR"; + if (!strcmp(name, "vkGetPhysicalDeviceWin32PresentationSupportKHR")) + return "vkGetPhysicalDeviceXlibPresentationSupportKHR"; + + return name; +} + static void *X11DRV_vkGetDeviceProcAddr(VkDevice device, const char *name) { void *proc_addr;
TRACE("%p, %s\n", device, debugstr_a(name));
+ if (!pvkGetDeviceProcAddr(device, wine_vk_native_fn_name(name))) + return NULL; + if ((proc_addr = X11DRV_get_vk_device_proc_addr(name))) return proc_addr;
@@ -453,6 +466,9 @@ static void *X11DRV_vkGetInstanceProcAddr(VkInstance instance, const char *name)
TRACE("%p, %s\n", instance, debugstr_a(name));
+ if (!pvkGetInstanceProcAddr(instance, wine_vk_native_fn_name(name))) + return NULL; + if ((proc_addr = X11DRV_get_vk_instance_proc_addr(instance, name))) return proc_addr;