mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-08-14 18:46:48 +00:00
Don't refresh overlay unnecessarily when it's not enabled
This commit is contained in:
@@ -739,23 +739,28 @@ void TextureViewer::RT_FetchCurrentPixel(IReplayController *r, uint32_t x, uint3
|
||||
x = qMax(0U, x >> m_TexDisplay.subresource.mip);
|
||||
y = qMax(0U, y >> m_TexDisplay.subresource.mip);
|
||||
|
||||
ResourceId overlayResId = m_Output->GetDebugOverlayTexID();
|
||||
ResourceId id = m_TexDisplay.resourceId;
|
||||
Subresource sub = m_TexDisplay.subresource;
|
||||
CompType typeCast = m_TexDisplay.typeCast;
|
||||
|
||||
if((m_TexDisplay.overlay == DebugOverlay::QuadOverdrawDraw ||
|
||||
m_TexDisplay.overlay == DebugOverlay::QuadOverdrawPass ||
|
||||
m_TexDisplay.overlay == DebugOverlay::TriangleSizeDraw ||
|
||||
m_TexDisplay.overlay == DebugOverlay::TriangleSizePass) &&
|
||||
overlayResId != ResourceId())
|
||||
if(m_TexDisplay.overlay == DebugOverlay::QuadOverdrawDraw ||
|
||||
m_TexDisplay.overlay == DebugOverlay::QuadOverdrawPass ||
|
||||
m_TexDisplay.overlay == DebugOverlay::TriangleSizeDraw ||
|
||||
m_TexDisplay.overlay == DebugOverlay::TriangleSizePass)
|
||||
{
|
||||
realValue =
|
||||
r->PickPixel(overlayResId, x, y, {m_TexDisplay.subresource.mip, 0, 0}, CompType::Typeless);
|
||||
}
|
||||
else
|
||||
{
|
||||
realValue =
|
||||
r->PickPixel(m_TexDisplay.resourceId, x, y, m_TexDisplay.subresource, m_TexDisplay.typeCast);
|
||||
ResourceId overlayResId = m_Output->GetDebugOverlayTexID();
|
||||
|
||||
if(overlayResId != ResourceId())
|
||||
{
|
||||
id = overlayResId;
|
||||
sub.sample = 0;
|
||||
sub.slice = 0;
|
||||
typeCast = CompType::Typeless;
|
||||
}
|
||||
}
|
||||
|
||||
realValue = r->PickPixel(id, x, y, sub, CompType::Typeless);
|
||||
|
||||
if(m_TexDisplay.customShaderId != ResourceId())
|
||||
{
|
||||
pickValue = r->PickPixel(m_Output->GetCustomShaderTexID(), x, y,
|
||||
|
||||
@@ -92,7 +92,7 @@ ReplayOutput::ReplayOutput(ReplayController *parent, WindowingData window, Repla
|
||||
|
||||
m_MainOutput.dirty = true;
|
||||
|
||||
m_OverlayDirty = true;
|
||||
m_OverlayDirty = false;
|
||||
m_ForceOverlayRefresh = false;
|
||||
|
||||
m_pDevice = parent->GetDevice();
|
||||
@@ -177,8 +177,9 @@ void ReplayOutput::SetTextureDisplay(const TextureDisplay &o)
|
||||
bool wasClearBeforeDraw = (m_RenderData.texDisplay.overlay == DebugOverlay::ClearBeforeDraw ||
|
||||
m_RenderData.texDisplay.overlay == DebugOverlay::ClearBeforePass);
|
||||
|
||||
if(o.overlay != m_RenderData.texDisplay.overlay || o.typeCast != m_RenderData.texDisplay.typeCast ||
|
||||
o.resourceId != m_RenderData.texDisplay.resourceId)
|
||||
if(o.overlay != m_RenderData.texDisplay.overlay ||
|
||||
(o.overlay != DebugOverlay::NoOverlay && (o.typeCast != m_RenderData.texDisplay.typeCast ||
|
||||
o.resourceId != m_RenderData.texDisplay.resourceId)))
|
||||
{
|
||||
if(wasClearBeforeDraw)
|
||||
{
|
||||
@@ -211,7 +212,7 @@ void ReplayOutput::SetFrameEvent(int eventId)
|
||||
|
||||
m_EventID = eventId;
|
||||
|
||||
m_OverlayDirty = true;
|
||||
m_OverlayDirty = (m_RenderData.texDisplay.overlay != DebugOverlay::NoOverlay);
|
||||
m_MainOutput.dirty = true;
|
||||
|
||||
for(size_t i = 0; i < m_Thumbnails.size(); i++)
|
||||
|
||||
Reference in New Issue
Block a user