From cb5f8aa392a12da20aecc697778e86b123a382fe Mon Sep 17 00:00:00 2001 From: Robin Kertels Date: Fri, 19 Mar 2021 01:55:05 +0100 Subject: [PATCH] [d3d9] Properly scale dirty box --- src/d3d9/d3d9_device.cpp | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp index 47614cd8..7dd2af65 100644 --- a/src/d3d9/d3d9_device.cpp +++ b/src/d3d9/d3d9_device.cpp @@ -3980,7 +3980,18 @@ namespace dxvk { Flags &= ~D3DLOCK_DISCARD; if (!(Flags & D3DLOCK_NO_DIRTY_UPDATE) && !(Flags & D3DLOCK_READONLY)) { + if (pBox && MipLevel != 0) { + D3DBOX scaledBox = *pBox; + scaledBox.Left <<= MipLevel; + scaledBox.Right = std::min(scaledBox.Right << MipLevel, pResource->Desc()->Width); + scaledBox.Top <<= MipLevel; + scaledBox.Bottom = std::min(scaledBox.Bottom << MipLevel, pResource->Desc()->Height); + scaledBox.Back <<= MipLevel; + scaledBox.Front = std::min(scaledBox.Front << MipLevel, pResource->Desc()->Depth); + pResource->AddDirtyBox(&scaledBox, Face); + } else { pResource->AddDirtyBox(pBox, Face); + } } auto& desc = *(pResource->Desc());