Module: wine Branch: master Commit: 0d21363903a0df6e6966eb6d9024ec66ace4d407 URL: https://gitlab.winehq.org/wine/wine/-/commit/0d21363903a0df6e6966eb6d9024ec6...
Author: Brendan Shanks bshanks@codeweavers.com Date: Thu Jun 29 16:33:25 2023 -0700
winevulkan: Set zero_bits correctly for large address aware applications on Wow64.
---
dlls/winevulkan/vulkan.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/dlls/winevulkan/vulkan.c b/dlls/winevulkan/vulkan.c index 2e251fba8f4..c00ca4c9180 100644 --- a/dlls/winevulkan/vulkan.c +++ b/dlls/winevulkan/vulkan.c @@ -41,10 +41,7 @@ static BOOL use_external_memory(void) return is_wow64(); }
-static ULONG_PTR zero_bits(void) -{ - return is_wow64() ? 0x7fffffff : 0; -} +static ULONG_PTR zero_bits = 0;
#define wine_vk_count_struct(s, t) wine_vk_count_struct_((void *)s, VK_STRUCTURE_TYPE_##t) static uint32_t wine_vk_count_struct_(void *s, VkStructureType t) @@ -471,6 +468,14 @@ NTSTATUS init_vulkan(void *args) return STATUS_UNSUCCESSFUL; }
+ if (is_wow64()) + { + SYSTEM_BASIC_INFORMATION info; + + NtQuerySystemInformation(SystemEmulationBasicInformation, &info, sizeof(info), NULL); + zero_bits = (ULONG_PTR)info.HighestUserAddress | 0x7fffffff; + } + return STATUS_SUCCESS; }
@@ -1519,7 +1524,7 @@ VkResult wine_vkAllocateMemory(VkDevice handle, const VkMemoryAllocateInfo *allo if (!once++) FIXME("Using VK_EXT_external_memory_host\n");
- if (NtAllocateVirtualMemory(GetCurrentProcess(), &mapping, zero_bits(), &alloc_size, + if (NtAllocateVirtualMemory(GetCurrentProcess(), &mapping, zero_bits, &alloc_size, MEM_COMMIT, PAGE_READWRITE)) { ERR("NtAllocateVirtualMemory failed\n");