@@ -4415,19 +4415,16 @@ void GSDevice12::RenderHW(GSHWDrawConfig& config)
44154415 (draw_ds && static_cast <GSTexture12*>(draw_ds)->GetSRVDescriptor () == m_tfx_textures[0 ])))
44164416 PSSetShaderResource (0 , nullptr , false );
44174417
4418- if (InRenderPass () && (m_current_render_target == draw_rt || m_current_depth_target == draw_ds))
4418+ // Avoid restarting the render pass just to switch from rt+depth to rt and vice versa.
4419+ // Keep the depth even if doing colclip hw draws, because the next draw will probably re-enable depth.
4420+ if (InRenderPass () && !(draw_rt || draw_rt_rov) && draw_ds && m_current_render_target && config.tex != m_current_render_target &&
4421+ m_current_render_target->GetSize () == draw_ds->GetSize ())
44194422 {
4420- // avoid restarting the render pass just to switch from rt+depth to rt and vice versa
4421- // keep the depth even if doing colclip hw draws, because the next draw will probably re-enable depth
4422- if (!(draw_rt || draw_rt_rov) && m_current_render_target && config.tex != m_current_render_target &&
4423- draw_ds && m_current_render_target->GetSize () == draw_ds->GetSize ())
4424- {
4425- draw_rt = m_current_render_target;
4426- m_pipeline_selector.rt = true ;
4427- }
4423+ draw_rt = m_current_render_target;
4424+ m_pipeline_selector.rt = true ;
44284425 }
4429- else if (!(draw_ds || draw_ds_rov) && m_current_depth_target && config.tex != m_current_depth_target &&
4430- draw_rt && m_current_depth_target->GetSize () == draw_rt->GetSize ())
4426+ else if (InRenderPass () && !(draw_ds || draw_ds_rov) && draw_rt && m_current_depth_target && config.tex != m_current_depth_target &&
4427+ m_current_depth_target->GetSize () == draw_rt->GetSize ())
44314428 {
44324429 draw_ds = m_current_depth_target;
44334430 m_pipeline_selector.ds = true ;
0 commit comments