Skip to content

Commit 2f29715

Browse files
committed
Use initial viewport for triangle size overlay
* Due to the way we render the triangle size overlay we don't respect state changes mid-way through a pass, but we should at least correctly use the viewport from the start of the pass.
1 parent 8c3cc36 commit 2f29715

2 files changed

Lines changed: 6 additions & 4 deletions

File tree

renderdoc/driver/d3d11/d3d11_overlay.cpp

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -648,9 +648,6 @@ ResourceId D3D11Replay::RenderOverlay(ResourceId texid, CompType typeHint, Debug
648648

649649
ID3D11Buffer *psbuf = GetDebugManager()->MakeCBuffer(&overdrawRamp[0].x, sizeof(overdrawRamp));
650650

651-
Vec4f viewport = Vec4f((float)details.texWidth, (float)details.texHeight);
652-
ID3D11Buffer *gsbuf = GetDebugManager()->MakeCBuffer(&viewport.x, sizeof(viewport));
653-
654651
float overlayConsts[] = {0.0f, 0.0f, 0.0f, 0.0f};
655652
m_pImmediateContext->ClearRenderTargetView(rtv, overlayConsts);
656653

@@ -666,6 +663,11 @@ ResourceId D3D11Replay::RenderOverlay(ResourceId texid, CompType typeHint, Debug
666663

667664
events.push_back(eventId);
668665

666+
D3D11_VIEWPORT view = m_pImmediateContext->GetCurrentPipelineState()->RS.Viewports[0];
667+
668+
Vec4f viewport = Vec4f(view.Width, view.Height);
669+
ID3D11Buffer *gsbuf = GetDebugManager()->MakeCBuffer(&viewport.x, sizeof(viewport));
670+
669671
for(size_t i = 0; i < events.size(); i++)
670672
{
671673
D3D11RenderState oldstate = *m_pImmediateContext->GetCurrentPipelineState();

renderdoc/driver/gl/gl_overlay.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -854,7 +854,7 @@ ResourceId GLReplay::RenderOverlay(ResourceId texid, CompType typeHint, DebugOve
854854
drv.glBindBuffer(eGL_COPY_WRITE_BUFFER, DebugData.UBOs[2]);
855855
v = (Vec4f *)drv.glMapBufferRange(eGL_COPY_WRITE_BUFFER, 0, sizeof(Vec4f),
856856
GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT);
857-
*v = Vec4f((float)texDetails.width, (float)texDetails.height);
857+
*v = Vec4f(rs.Viewports[0].width, rs.Viewports[0].height);
858858
drv.glUnmapBuffer(eGL_COPY_WRITE_BUFFER);
859859

860860
vector<uint32_t> events = passEvents;

0 commit comments

Comments
 (0)