gsdx tc: don't partially invalidate small target

It creates a regression on game that uses a small temporary target to
upload textures of various sizes. Inital code was done to handle direct
frame write (background, FMV) so big target
This commit is contained in:
Gregory Hainaut 2016-08-18 08:33:18 +02:00
parent c71ef6fa4c
commit a1cdf7189a
1 changed files with 5 additions and 1 deletions

View File

@ -820,7 +820,11 @@ void GSTextureCache::InvalidateVideoMem(GSOffset* off, const GSVector4i& rect, b
// FIXME: this code "fixes" black FMV issue with rule of rose. // FIXME: this code "fixes" black FMV issue with rule of rose.
#if 1 #if 1
// Greg: I'm not sure the 'bw' equality is required but it won't hurt too much // Greg: I'm not sure the 'bw' equality is required but it won't hurt too much
if (t->m_TEX0.TBW == bw && t->Inside(bp, bw, psm, rect) && GSUtil::HasCompatibleBits(psm, t->m_TEX0.PSM)) { //
// Ben 10 Alien Force : Vilgax Attacks uses a small temporary target for multiple textures (different bw)
// It is too complex to handle, and purpose of the code was to handle FMV (large bw). So let's skip small
// (128 pixels) target
if (bw > 2 && t->m_TEX0.TBW == bw && t->Inside(bp, bw, psm, rect) && GSUtil::HasCompatibleBits(psm, t->m_TEX0.PSM)) {
uint32 rowsize = bw * 8192u; uint32 rowsize = bw * 8192u;
uint32 offset = (uint32)((bp - t->m_TEX0.TBP0) * 256); uint32 offset = (uint32)((bp - t->m_TEX0.TBP0) * 256);