diff --git a/src/renderer_d3d12.cpp b/src/renderer_d3d12.cpp index efcbf06cd..e4c4fb5a3 100644 --- a/src/renderer_d3d12.cpp +++ b/src/renderer_d3d12.cpp @@ -5893,7 +5893,7 @@ namespace bgfx { namespace d3d12 bool wasCompute = false; bool viewHasScissor = false; - bool restoreScissor = false; + bool scissorEnabled = false; Rect viewScissorRect; viewScissorRect.clear(); @@ -6033,7 +6033,6 @@ namespace bgfx { namespace d3d12 rc.right = viewScissorRect.m_x + viewScissorRect.m_width; rc.bottom = viewScissorRect.m_y + viewScissorRect.m_height; m_commandList->RSSetScissorRects(1, &rc); - restoreScissor = false; Clear& clr = _render->m_view[view].m_clear; if (BGFX_CLEAR_NONE != clr.m_flags) @@ -6530,10 +6529,9 @@ namespace bgfx { namespace d3d12 if (UINT16_MAX == scissor) { - if (restoreScissor - || viewHasScissor) + scissorEnabled = viewHasScissor; + if (viewHasScissor) { - restoreScissor = false; D3D12_RECT rc; rc.left = viewScissorRect.m_x; rc.top = viewScissorRect.m_y; @@ -6544,14 +6542,11 @@ namespace bgfx { namespace d3d12 } else { - restoreScissor = true; + Rect scissorRect; scissorRect.setIntersect(viewScissorRect, _render->m_frameCache.m_rectCache.m_cache[scissor]); - if (scissorRect.isZeroArea() ) - { - continue; - } + scissorEnabled = true; D3D12_RECT rc; rc.left = scissorRect.m_x; rc.top = scissorRect.m_y; diff --git a/src/renderer_vk.cpp b/src/renderer_vk.cpp index 99b374ac6..ea9038132 100644 --- a/src/renderer_vk.cpp +++ b/src/renderer_vk.cpp @@ -5944,7 +5944,7 @@ VK_DESTROY bool wasCompute = false; bool viewHasScissor = false; - bool restoreScissor = false; + bool scissorEnabled = false; Rect viewScissorRect; viewScissorRect.clear(); @@ -6097,8 +6097,6 @@ VK_DESTROY rc.extent.height = viewScissorRect.m_height; vkCmdSetScissor(m_commandBuffer, 0, 1, &rc); - restoreScissor = false; - Clear& clr = _render->m_view[view].m_clear; if (BGFX_CLEAR_NONE != clr.m_flags) { @@ -6396,10 +6394,9 @@ VK_DESTROY if (UINT16_MAX == scissor) { - if (restoreScissor - || viewHasScissor) + scissorEnabled = viewHasScissor; + if (viewHasScissor) { - restoreScissor = false; VkRect2D rc; rc.offset.x = viewScissorRect.m_x; rc.offset.y = viewScissorRect.m_y; @@ -6410,10 +6407,10 @@ VK_DESTROY } else { - restoreScissor = true; Rect scissorRect; scissorRect.setIntersect(viewScissorRect, _render->m_frameCache.m_rectCache.m_cache[scissor]); + scissorEnabled = true; VkRect2D rc; rc.offset.x = scissorRect.m_x; rc.offset.y = scissorRect.m_y;