diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp index a3e9d6b25..12c4bdb68 100644 --- a/src/d3d9/d3d9_device.cpp +++ b/src/d3d9/d3d9_device.cpp @@ -4229,7 +4229,7 @@ namespace dxvk { pResource->SetLocked(Subresource, true); - if (!(Flags & D3DLOCK_NO_DIRTY_UPDATE) && !(Flags & D3DLOCK_READONLY)) { + if ((desc.Pool == D3DPOOL_DEFAULT || !(Flags & D3DLOCK_NO_DIRTY_UPDATE)) && !(Flags & D3DLOCK_READONLY)) { if (pBox && MipLevel != 0) { D3DBOX scaledBox = *pBox; scaledBox.Left <<= MipLevel; @@ -4485,7 +4485,7 @@ namespace dxvk { uint32_t size = respectUserBounds ? std::min(SizeToLock, desc.Size - offset) : desc.Size; D3D9Range lockRange = D3D9Range(offset, offset + size); - if (!(Flags & D3DLOCK_READONLY)) + if ((desc.Pool == D3DPOOL_DEFAULT || !(Flags & D3DLOCK_NO_DIRTY_UPDATE)) && !(Flags & D3DLOCK_READONLY)) pResource->DirtyRange().Conjoin(lockRange); Rc mappingBuffer = pResource->GetBuffer();