From 11801a0e32af0f5e486a24c968f3e86a8390c009 Mon Sep 17 00:00:00 2001 From: baldurk Date: Mon, 30 Mar 2020 18:02:12 +0100 Subject: [PATCH] Don't crash in D3D12 overlays if no viewport is set --- renderdoc/driver/d3d12/d3d12_overlay.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/renderdoc/driver/d3d12/d3d12_overlay.cpp b/renderdoc/driver/d3d12/d3d12_overlay.cpp index 8c507b319..b1cb6dba6 100644 --- a/renderdoc/driver/d3d12/d3d12_overlay.cpp +++ b/renderdoc/driver/d3d12/d3d12_overlay.cpp @@ -876,7 +876,10 @@ ResourceId D3D12Replay::RenderOverlay(ResourceId texid, const Subresource &sub, vertexData.ModelViewProj = Matrix4f::Identity(); vertexData.SpriteSize = Vec2f(); - Vec4f viewport(rs.views[0].Width, rs.views[0].Height); + Vec4f viewport; + + if(!rs.views.empty()) + viewport = Vec4f(rs.views[0].Width, rs.views[0].Height); if(rs.dsv.GetResResourceId() != ResourceId()) { @@ -888,7 +891,8 @@ ResourceId D3D12Replay::RenderOverlay(ResourceId texid, const Subresource &sub, list->OMSetRenderTargets(1, &rtv, TRUE, NULL); } - list->RSSetViewports(1, &rs.views[0]); + if(!rs.views.empty()) + list->RSSetViewports(1, &rs.views[0]); D3D12_RECT scissor = {0, 0, 16384, 16384}; list->RSSetScissorRects(1, &scissor); @@ -1089,7 +1093,8 @@ ResourceId D3D12Replay::RenderOverlay(ResourceId texid, const Subresource &sub, list->OMSetRenderTargets(1, &rtv, TRUE, NULL); - list->RSSetViewports(1, &rs.views[0]); + if(!rs.views.empty()) + list->RSSetViewports(1, &rs.views[0]); D3D12_RECT scissor = {0, 0, 16384, 16384}; list->RSSetScissorRects(1, &scissor);