From 8b2a521a91e4f0ccaedfd2687547a349b7f00f57 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 24 Sep 2020 22:29:12 +0100 Subject: [PATCH] Fix crash when no scissor regions are bound at D3D12 draw --- renderdoc/driver/d3d12/d3d12_overlay.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/renderdoc/driver/d3d12/d3d12_overlay.cpp b/renderdoc/driver/d3d12/d3d12_overlay.cpp index a004dda9b..914119f09 100644 --- a/renderdoc/driver/d3d12/d3d12_overlay.cpp +++ b/renderdoc/driver/d3d12/d3d12_overlay.cpp @@ -975,10 +975,17 @@ ResourceId D3D12Replay::RenderOverlay(ResourceId texid, FloatVector clearCol, De list->DrawInstanced(3, 1, 0, 0); - viewport.TopLeftX = (float)rs.scissors[0].left; - viewport.TopLeftY = (float)rs.scissors[0].top; - viewport.Width = (float)(rs.scissors[0].right - rs.scissors[0].left); - viewport.Height = (float)(rs.scissors[0].bottom - rs.scissors[0].top); + if(rs.scissors.empty()) + { + viewport = {}; + } + else + { + viewport.TopLeftX = (float)rs.scissors[0].left; + viewport.TopLeftY = (float)rs.scissors[0].top; + viewport.Width = (float)(rs.scissors[0].right - rs.scissors[0].left); + viewport.Height = (float)(rs.scissors[0].bottom - rs.scissors[0].top); + } list->RSSetViewports(1, &viewport); // black/white checkered border