From 5ff9c3385512072df18d442b96c91c37f087725a Mon Sep 17 00:00:00 2001 From: Philip Rebohle Date: Thu, 13 Jun 2019 02:16:12 +0200 Subject: [PATCH] [d3d11] Fix incorrect behaviour when a scissor rect is not specified --- src/d3d11/d3d11_context.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/d3d11/d3d11_context.cpp b/src/d3d11/d3d11_context.cpp index 52f5debea..f193b347c 100644 --- a/src/d3d11/d3d11_context.cpp +++ b/src/d3d11/d3d11_context.cpp @@ -3129,7 +3129,17 @@ namespace dxvk { } for (uint32_t i = 0; i < m_state.rs.numViewports; i++) { - if (enableScissorTest && (i < m_state.rs.numScissors)) { + if (!enableScissorTest) { + scissors[i] = VkRect2D { + VkOffset2D { 0, 0 }, + VkExtent2D { + D3D11_VIEWPORT_BOUNDS_MAX, + D3D11_VIEWPORT_BOUNDS_MAX } }; + } else if (i >= m_state.rs.numScissors) { + scissors[i] = VkRect2D { + VkOffset2D { 0, 0 }, + VkExtent2D { 0, 0 } }; + } else { D3D11_RECT sr = m_state.rs.scissors[i]; VkOffset2D srPosA; @@ -3145,12 +3155,6 @@ namespace dxvk { srSize.height = uint32_t(srPosB.y - srPosA.y); scissors[i] = VkRect2D { srPosA, srSize }; - } else { - scissors[i] = VkRect2D { - VkOffset2D { 0, 0 }, - VkExtent2D { - D3D11_VIEWPORT_BOUNDS_MAX, - D3D11_VIEWPORT_BOUNDS_MAX } }; } }