From 461f01718cd563bc635e955f569233341d41499c Mon Sep 17 00:00:00 2001 From: TJnotJT Date: Wed, 10 Dec 2025 18:02:54 -0500 Subject: [PATCH] GS/HW: Prevent assertion in StretchRect(). Depth copy was using the color StretchRect() causing an assertion in debug builds. --- pcsx2/GS/Renderers/HW/GSTextureCache.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/pcsx2/GS/Renderers/HW/GSTextureCache.cpp b/pcsx2/GS/Renderers/HW/GSTextureCache.cpp index 587ee4588d..e81885f786 100644 --- a/pcsx2/GS/Renderers/HW/GSTextureCache.cpp +++ b/pcsx2/GS/Renderers/HW/GSTextureCache.cpp @@ -2323,7 +2323,17 @@ void GSTextureCache::CombineAlignedInsideTargets(Target* target, GSTextureCache: GL_CACHE("Combining %x-%x in to %x-%x draw %d", t->m_TEX0.TBP0, t->m_end_block, target->m_TEX0.TBP0, target->m_end_block, GSState::s_n); - g_gs_device->StretchRect(t->m_texture, source_rect, target->m_texture, target_drect, valid_color, valid_color, valid_color, valid_alpha, (target->m_type == RenderTarget) ? ShaderConvert::COPY : ShaderConvert::DEPTH_COPY); + if (target->m_type == RenderTarget) + { + g_gs_device->StretchRect(t->m_texture, source_rect, target->m_texture, + target_drect, valid_color, valid_color, valid_color, valid_alpha, ShaderConvert::COPY); + } + else + { + if (!valid_color || (!valid_alpha && (GSUtil::GetChannelMask(t->m_TEX0.PSM) & 0x8))) + GL_CACHE("Warning: CombineAlignedInsideTargets: Depth copy with invalid lower 24 bits or invalid upper 8 bits."); + g_gs_device->StretchRect(t->m_texture, source_rect, target->m_texture, target_drect, ShaderConvert::DEPTH_COPY); + } target->UpdateValidity(target_drect_unscaled); }