[ VK/DX12] Bring setScissor on par with the other renderers (#2239)

This commit is contained in:
Julian Xhokaxhiu
2020-08-22 18:09:11 +02:00
committed by GitHub
parent 20fd4ba49e
commit fbd7e9efd6
2 changed files with 9 additions and 17 deletions

View File

@@ -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;

View File

@@ -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;