From 124023bac55799f2c82012a71a877907450938b1 Mon Sep 17 00:00:00 2001 From: Joshua Ashton Date: Fri, 5 Jun 2020 23:33:00 +0100 Subject: [PATCH] [d3d9] Add read-only check to uploading managed textures on Lock --- src/d3d9/d3d9_device.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp index c8cf43b41..de21d1f7a 100644 --- a/src/d3d9/d3d9_device.cpp +++ b/src/d3d9/d3d9_device.cpp @@ -3952,7 +3952,8 @@ namespace dxvk { if (desc.Usage & D3DUSAGE_WRITEONLY) Flags &= ~D3DLOCK_READONLY; - pResource->SetReadOnlyLocked(Subresource, Flags & D3DLOCK_READONLY); + const bool readOnly = Flags & D3DLOCK_READONLY; + pResource->SetReadOnlyLocked(Subresource, readOnly); bool renderable = desc.Usage & (D3DUSAGE_RENDERTARGET | D3DUSAGE_DEPTHSTENCIL); @@ -3988,7 +3989,6 @@ namespace dxvk { // or is reading. Remember! This will only trigger for MANAGED resources // that cannot get affected by GPU, therefore readonly is A-OK for NOT waiting. const bool uploading = pResource->GetUploading(Subresource); - const bool readOnly = Flags & D3DLOCK_READONLY; const bool skipWait = (managed && !uploading) || (readOnly && managed) || scratch || (readOnly && systemmem && !dirty); if (alloced) @@ -4098,7 +4098,7 @@ namespace dxvk { pResource->SetLocked(Subresource, true); - if (pResource->IsManaged() && !m_d3d9Options.evictManagedOnUnlock) { + if (pResource->IsManaged() && !m_d3d9Options.evictManagedOnUnlock && !readOnly) { pResource->SetNeedsUpload(Subresource, true); for (uint32_t tex = m_activeTextures; tex; tex &= tex - 1) {