mirror of https://github.com/PCSX2/pcsx2.git
GS-TC: Make sure if we have an old frame check bounds of other frame
This commit is contained in:
parent
ad7736f90d
commit
8a22e44f3b
|
@ -529,15 +529,15 @@ GSTextureCache::Target* GSTextureCache::LookupTarget(const GIFRegTEX0& TEX0, con
|
||||||
// 2nd try ! Try to find a frame at the requested bp -> bp + size is inside of (or equal to)
|
// 2nd try ! Try to find a frame at the requested bp -> bp + size is inside of (or equal to)
|
||||||
if (!dst)
|
if (!dst)
|
||||||
{
|
{
|
||||||
|
const u32 needed_end = GSLocalMemory::m_psm[TEX0.PSM].info.bn(real_w - 1, real_h - 1, bp, TEX0.TBW);
|
||||||
for (auto t : list)
|
for (auto t : list)
|
||||||
{
|
{
|
||||||
// Make sure the target is inside the texture
|
// Make sure the target is inside the texture
|
||||||
if (t->m_TEX0.TBP0 <= bp && bp <= t->m_end_block && t->Inside(bp, TEX0.TBW, TEX0.PSM, GSVector4i(0, 0, real_w, real_h)))
|
if (t->m_TEX0.TBP0 <= bp && bp <= t->m_end_block && t->Inside(bp, TEX0.TBW, TEX0.PSM, GSVector4i(0, 0, real_w, real_h)))
|
||||||
{
|
{
|
||||||
if (old_found && t->m_age > 4)
|
// If we already have an old one, make sure the "new" one matches at least on one end (double buffer?).
|
||||||
{
|
if (old_found && (t->m_age > 4 || (t->m_TEX0.TBP0 != bp && needed_end != t->m_end_block)))
|
||||||
continue;
|
continue;
|
||||||
}
|
|
||||||
|
|
||||||
dst = t;
|
dst = t;
|
||||||
GL_CACHE("TC: Lookup Frame %dx%d, inclusive hit: %d (0x%x, took 0x%x -> 0x%x %s)", size.x, size.y, t->m_texture->GetID(), bp, t->m_TEX0.TBP0, t->m_end_block, psm_str(TEX0.PSM));
|
GL_CACHE("TC: Lookup Frame %dx%d, inclusive hit: %d (0x%x, took 0x%x -> 0x%x %s)", size.x, size.y, t->m_texture->GetID(), bp, t->m_TEX0.TBP0, t->m_end_block, psm_str(TEX0.PSM));
|
||||||
|
@ -783,7 +783,7 @@ void GSTextureCache::ExpandTarget(const GIFRegBITBLTBUF& BITBLTBUF, const GSVect
|
||||||
{
|
{
|
||||||
AddDirtyRectTarget(dst, r, TEX0.PSM, TEX0.TBW);
|
AddDirtyRectTarget(dst, r, TEX0.PSM, TEX0.TBW);
|
||||||
GetTargetHeight(TEX0.TBP0, TEX0.TBW, TEX0.PSM, r.w);
|
GetTargetHeight(TEX0.TBP0, TEX0.TBW, TEX0.PSM, r.w);
|
||||||
dst->Update(true);
|
dst->UpdateValidity(r);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue