From: Jacek Caban jacek@codeweavers.com
--- dlls/winevulkan/Makefile.in | 2 +- dlls/winevulkan/loader.c | 15 +-------------- dlls/winevulkan/vulkan.c | 9 ++++++++- 3 files changed, 10 insertions(+), 16 deletions(-)
diff --git a/dlls/winevulkan/Makefile.in b/dlls/winevulkan/Makefile.in index 360fb77a6eb..732bf5493a9 100644 --- a/dlls/winevulkan/Makefile.in +++ b/dlls/winevulkan/Makefile.in @@ -2,7 +2,7 @@ MODULE = winevulkan.dll UNIXLIB = winevulkan.so IMPORTLIB = winevulkan IMPORTS = user32 gdi32 advapi32 setupapi win32u -UNIX_LIBS = $(PTHREAD_LIBS) +UNIX_LIBS = -lwin32u $(PTHREAD_LIBS)
C_SRCS = \ loader.c \ diff --git a/dlls/winevulkan/loader.c b/dlls/winevulkan/loader.c index 61c583d5c13..3be43432504 100644 --- a/dlls/winevulkan/loader.c +++ b/dlls/winevulkan/loader.c @@ -215,24 +215,11 @@ VkResult WINAPI vk_icdNegotiateLoaderICDInterfaceVersion(uint32_t *supported_ver
static BOOL WINAPI wine_vk_init(INIT_ONCE *once, void *param, void **context) { - const void *driver; - - driver = __wine_get_vulkan_driver(WINE_VULKAN_DRIVER_VERSION); - if (!driver) - { - ERR("Failed to load Wine graphics driver supporting Vulkan.\n"); - return FALSE; - } - if (NtQueryVirtualMemory(GetCurrentProcess(), hinstance, MemoryWineUnixFuncs, &unix_handle, sizeof(unix_handle), NULL)) return FALSE;
- if (vk_unix_call(unix_init, &driver) || !driver) - return FALSE; - - unix_funcs = driver; - return TRUE; + return !vk_unix_call(unix_init, &unix_funcs); }
static BOOL wine_vk_init_once(void) diff --git a/dlls/winevulkan/vulkan.c b/dlls/winevulkan/vulkan.c index 190f70f3616..071dbd4cdff 100644 --- a/dlls/winevulkan/vulkan.c +++ b/dlls/winevulkan/vulkan.c @@ -436,7 +436,14 @@ static void wine_vk_device_free(struct VkDevice_T *device)
NTSTATUS init_vulkan(void *args) { - vk_funcs = *(const struct vulkan_funcs **)args; + vk_funcs = __wine_get_vulkan_driver(WINE_VULKAN_DRIVER_VERSION); + if (!vk_funcs) + { + ERR("Failed to load Wine graphics driver supporting Vulkan.\n"); + return STATUS_UNSUCCESSFUL; + } + + *(const struct unix_funcs **)args = &loader_funcs; return STATUS_SUCCESS; }