Skip to content

Commit 96eb9de

Browse files
GS/DX12: Expand the fb optimization hit detection.
1 parent 3f8eb5a commit 96eb9de

1 file changed

Lines changed: 12 additions & 15 deletions

File tree

pcsx2/GS/Renderers/DX12/GSDevice12.cpp

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4529,22 +4529,19 @@ void GSDevice12::RenderHW(GSHWDrawConfig& config)
45294529
(draw_ds && static_cast<GSTexture12*>(draw_ds)->GetSRVDescriptor() == m_tfx_textures[0])))
45304530
PSSetShaderResource(TEXTURE_TEXTURE, nullptr, false);
45314531

4532-
if (InRenderPass() && (m_current_render_target == draw_rt || m_current_depth_target == draw_ds))
4532+
// Avoid restarting the render pass just to switch from rt+depth to rt and vice versa.
4533+
// Keep the depth even if doing colclip hw draws, because the next draw will probably re-enable depth.
4534+
if (InRenderPass() && !(draw_rt || draw_rt_rov) && draw_ds && m_current_render_target && config.tex != m_current_render_target &&
4535+
m_current_render_target->GetSize() == draw_ds->GetSize())
45334536
{
4534-
// avoid restarting the render pass just to switch from rt+depth to rt and vice versa
4535-
// keep the depth even if doing colclip hw draws, because the next draw will probably re-enable depth
4536-
if (!(draw_rt || draw_rt_rov) && m_current_render_target && config.tex != m_current_render_target &&
4537-
draw_ds && m_current_render_target->GetSize() == draw_ds->GetSize())
4538-
{
4539-
draw_rt = m_current_render_target;
4540-
m_pipeline_selector.rt = true;
4541-
}
4542-
else if (!(draw_ds || draw_ds_rov) && m_current_depth_target && config.tex != m_current_depth_target &&
4543-
draw_rt && m_current_depth_target->GetSize() == draw_rt->GetSize())
4544-
{
4545-
draw_ds = m_current_depth_target;
4546-
m_pipeline_selector.ds = true;
4547-
}
4537+
draw_rt = m_current_render_target;
4538+
m_pipeline_selector.rt = true;
4539+
}
4540+
else if (InRenderPass() && !(draw_ds || draw_ds_rov) && draw_rt && m_current_depth_target && config.tex != m_current_depth_target &&
4541+
m_current_depth_target->GetSize() == draw_rt->GetSize())
4542+
{
4543+
draw_ds = m_current_depth_target;
4544+
m_pipeline_selector.ds = true;
45484545
}
45494546

45504547
GSTexture12* draw_ds_as_rt = static_cast<GSTexture12*>(m_ds_as_rt);

0 commit comments

Comments
 (0)