@@ -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