From 3acb81f66d073cc858c069f61100dee8cb18b242 Mon Sep 17 00:00:00 2001 From: lightningterror <18107717+lightningterror@users.noreply.github.com> Date: Mon, 6 Jan 2025 02:42:40 +0100 Subject: [PATCH] GS/HW: Check channel coverage on targets if it should draw during clears. No fixes noticed, some games gained copies, needs more testing. --- pcsx2/GS/Renderers/HW/GSRendererHW.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pcsx2/GS/Renderers/HW/GSRendererHW.cpp b/pcsx2/GS/Renderers/HW/GSRendererHW.cpp index 3cb54177f1..cdca4aef24 100644 --- a/pcsx2/GS/Renderers/HW/GSRendererHW.cpp +++ b/pcsx2/GS/Renderers/HW/GSRendererHW.cpp @@ -2358,12 +2358,12 @@ void GSRendererHW::Draw() (no_rt || height_invalid || (tgt = g_texture_cache->GetExactTarget(m_cached_ctx.FRAME.Block(), m_cached_ctx.FRAME.FBW, GSTextureCache::RenderTarget, rt_end_bp)) == nullptr || - m_r.rintersect(tgt->m_valid).eq(tgt->m_valid)); + m_r.rintersect(tgt->m_valid).eq(tgt->m_valid) && GSUtil::GetChannelMask(m_cached_ctx.FRAME.PSM) >= GSUtil::GetChannelMask(tgt->m_TEX0.PSM)); const bool overwriting_whole_ds = (no_ds || height_invalid || (tgt = g_texture_cache->GetExactTarget(m_cached_ctx.ZBUF.Block(), m_cached_ctx.FRAME.FBW, GSTextureCache::DepthStencil, ds_end_bp)) == nullptr || - m_r.rintersect(tgt->m_valid).eq(tgt->m_valid)); + m_r.rintersect(tgt->m_valid).eq(tgt->m_valid) && GSUtil::GetChannelMask(m_cached_ctx.ZBUF.PSM) >= GSUtil::GetChannelMask(tgt->m_TEX0.PSM)); if (overwriting_whole_rt && overwriting_whole_ds && TryGSMemClear(no_rt, preserve_rt_color, is_zero_color_clear, rt_end_bp,