From 571a2d5811c48bd0498534d104cacd979638b1ac Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Mon, 7 Oct 2024 13:32:46 +0200 Subject: [PATCH] [dxvk] Tweak staging memory allocation behaviour --- src/dxvk/dxvk_memory.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/dxvk/dxvk_memory.cpp b/src/dxvk/dxvk_memory.cpp index 8c0a158b2..5ecaa0c00 100644 --- a/src/dxvk/dxvk_memory.cpp +++ b/src/dxvk/dxvk_memory.cpp @@ -458,6 +458,12 @@ namespace dxvk { type.devicePool.maxChunkSize = determineMaxChunkSize(type, false); type.mappedPool.maxChunkSize = determineMaxChunkSize(type, true); + + // Uncached system memory is going to be used for large temporary allocations + // during resource creation. Account for that by always using full-sized chunks. + if ((type.properties.propertyFlags & VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT) + && !(type.properties.propertyFlags & (VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT | VK_MEMORY_PROPERTY_HOST_CACHED_BIT))) + type.mappedPool.nextChunkSize = type.mappedPool.maxChunkSize; } determineMemoryTypesWithPropertyFlags();