gs-tc: propagate texture shuffle format on readback

This commit is contained in:
kojin 2021-10-07 20:30:01 -04:00 committed by Kojin
parent 575b88ac04
commit ef2c7ac480
1 changed files with 10 additions and 0 deletions

View File

@ -1089,6 +1089,16 @@ void GSTextureCache::InvalidateLocalMem(GSOffset* off, const GSVector4i& r)
// note: r.rintersect breaks Wizardry and Chaos Legion // note: r.rintersect breaks Wizardry and Chaos Legion
// Read(t, t->m_valid) works in all tested games but is very slow in GUST titles >< // Read(t, t->m_valid) works in all tested games but is very slow in GUST titles ><
// propagate the format from the result of a channel effect
// texture is 16/8 bit but the real data is 32
// common use for shuffling is moving data into the alpha channel
// the game can then draw using 8H format
// in the case of silent hill blit 8H -> 8P
// this will matter later when the data ends up in GS memory in the wrong format
if (t->m_32_bits_fmt)
t->m_TEX0.PSM = PSM_PSMCT32;
if (GSTextureCache::m_disable_partial_invalidation) if (GSTextureCache::m_disable_partial_invalidation)
{ {
Read(t, r.rintersect(t->m_valid)); Read(t, r.rintersect(t->m_valid));