From a75cf2f39d3ee134406e06b6d6e2e7f54f81dc9b Mon Sep 17 00:00:00 2001 From: Georg Lehmann Date: Sun, 15 Aug 2021 17:59:44 +0200 Subject: [PATCH] [d3d9] Fix parital DS clears with full RT clear --- src/d3d9/d3d9_device.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/d3d9/d3d9_device.cpp b/src/d3d9/d3d9_device.cpp index 1d9d32413..22c4439f1 100644 --- a/src/d3d9/d3d9_device.cpp +++ b/src/d3d9/d3d9_device.cpp @@ -1521,7 +1521,15 @@ namespace dxvk { bool extentMatches = align(extent.width, alignment) == align(rtSize.width, alignment) && align(extent.height, alignment) == align(rtSize.height, alignment); - bool rtSizeMatchesClearSize = offset.x == 0 && offset.y == 0 && extentMatches; + bool dsMatches = true; + if (depthAspectMask) { + auto dsSize = m_state.depthStencil->GetSurfaceExtent(); + + dsMatches = align(extent.width, alignment) == align(dsSize.width, alignment) + && align(extent.height, alignment) == align(dsSize.height, alignment); + } + + bool rtSizeMatchesClearSize = offset.x == 0 && offset.y == 0 && extentMatches && dsMatches; if (likely(!Count && rtSizeMatchesClearSize)) { // Fast path w/ ClearRenderTarget for when