From b913523066f7def9755c0c34d77c32f2e0df6c53 Mon Sep 17 00:00:00 2001 From: refractionpcsx2 Date: Sun, 1 Oct 2023 14:49:05 +0100 Subject: [PATCH] GS/HW: Update dirty depth in matching format --- pcsx2/GS/Renderers/HW/GSTextureCache.cpp | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/pcsx2/GS/Renderers/HW/GSTextureCache.cpp b/pcsx2/GS/Renderers/HW/GSTextureCache.cpp index 26d8422732..87f35b6569 100644 --- a/pcsx2/GS/Renderers/HW/GSTextureCache.cpp +++ b/pcsx2/GS/Renderers/HW/GSTextureCache.cpp @@ -5435,10 +5435,25 @@ void GSTextureCache::Target::Update() if (ndrects > 0) { + ShaderConvert depth_shader = upscaled ? ShaderConvert::RGBA8_TO_FLOAT32_BILN : ShaderConvert::RGBA8_TO_FLOAT32; + if (m_type == DepthStencil && GSLocalMemory::m_psm[m_TEX0.PSM].trbpp != 32) + { + switch (GSLocalMemory::m_psm[m_TEX0.PSM].trbpp) + { + case 24: + depth_shader = upscaled ? ShaderConvert::RGBA8_TO_FLOAT24_BILN : ShaderConvert::RGBA8_TO_FLOAT24; + break; + case 16: + depth_shader = upscaled ? ShaderConvert::RGB5A1_TO_FLOAT16_BILN : ShaderConvert::RGB5A1_TO_FLOAT16; + break; + default: + break; + } + } + // No need to sort here, it's all the one texture. - const ShaderConvert shader = (m_type == RenderTarget) ? ShaderConvert::COPY : - (upscaled ? ShaderConvert::RGBA8_TO_FLOAT32_BILN : - ShaderConvert::RGBA8_TO_FLOAT32); + const ShaderConvert shader = (m_type == RenderTarget) ? ShaderConvert::COPY : depth_shader; + g_gs_device->DrawMultiStretchRects(drects, ndrects, m_texture, shader); }