From: Jacek Caban jacek@codeweavers.com
--- dlls/winevulkan/vulkan.c | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-)
diff --git a/dlls/winevulkan/vulkan.c b/dlls/winevulkan/vulkan.c index ccd2669dad1..fc56620184d 100644 --- a/dlls/winevulkan/vulkan.c +++ b/dlls/winevulkan/vulkan.c @@ -38,7 +38,32 @@ static BOOL is_wow64(void)
static BOOL use_external_memory(void) { - return is_wow64(); + static int ret = -1; + + if (ret == -1) + { + const char *env; + if ((env = getenv("WINEVULKAN_EXTERNAL_MEMORY"))) + ret = *env && *env != '0'; + else ret = is_wow64(); + } + + return ret; +} + +static BOOL use_direct_unix_calls(void) +{ + static int ret = -1; + + if (ret == -1) + { + const char *env; + if ((env = getenv("WINEVULKAN_DIRECT_UNIX_CALLS"))) + ret = *env && *env != '0'; + else ret = !is_wow64(); + } + + return ret; }
static ULONG_PTR zero_bits(void) @@ -470,7 +495,8 @@ NTSTATUS init_vulkan(void *args) }
- *(void **)args = vk_direct_unix_call; + if (use_direct_unix_calls()) + *(void **)args = vk_direct_unix_call; return STATUS_SUCCESS; }
@@ -486,7 +512,8 @@ NTSTATUS init_vulkan32(void *args) }
#ifndef _WIN64 - *(void **)args = vk_direct_unix_call; + if (use_direct_unix_calls()) + *(void **)args = vk_direct_unix_call; #endif return STATUS_SUCCESS; }