From 7873bebaf219f3fa9b43729ff2b2c7f407c49bfc Mon Sep 17 00:00:00 2001 From: Robin Kertels Date: Wed, 28 Jul 2021 18:38:32 +0200 Subject: [PATCH] [d3d9] Only check range overlap if the buffer is not directly mapped --- src/d3d9/d3d9_device.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp index c19febbf..789d82ae 100644 --- a/src/d3d9/d3d9_device.cpp +++ b/src/d3d9/d3d9_device.cpp @@ -4525,7 +4525,8 @@ namespace dxvk { const bool noOverlap = !pResource->GPUReadingRange().Overlaps(lockRange); const bool noOverwrite = Flags & D3DLOCK_NOOVERWRITE; const bool usesStagingBuffer = pResource->DoesStagingBufferUploads(); - const bool skipWait = (!wasWrittenByGPU && (usesStagingBuffer || readOnly || noOverlap)) || noOverwrite; + const bool directMapping = pResource->GetMapMode() == D3D9_COMMON_BUFFER_MAP_MODE_DIRECT; + const bool skipWait = (!wasWrittenByGPU && (usesStagingBuffer || readOnly || (noOverlap && !directMapping))) || noOverwrite; if (!skipWait) { if (!(Flags & D3DLOCK_DONOTWAIT) && !WaitForResource(mappingBuffer, D3DLOCK_DONOTWAIT)) pResource->EnableStagingBufferUploads();