mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Only mask away Z mirrors if inside VRAM
This commit is contained in:
parent
d8f4a70396
commit
15f2e48887
1 changed files with 10 additions and 5 deletions
|
@ -635,9 +635,10 @@ void TextureCacheCommon::HandleTextureChange(TexCacheEntry *const entry, const c
|
|||
}
|
||||
|
||||
void TextureCacheCommon::NotifyFramebuffer(u32 address, VirtualFramebuffer *framebuffer, FramebufferNotification msg) {
|
||||
// Mask to ignore the Z memory mirrors.
|
||||
// Mask to ignore the Z memory mirrors if the address is in VRAM.
|
||||
// These checks are mainly to reduce scanning all textures.
|
||||
const u32 addr = address & 0x3F9FFFFF;
|
||||
const u32 mirrorMask = 0x00600000;
|
||||
const u32 addr = Memory::IsVRAMAddress(address) ? (address & ~mirrorMask) : address;
|
||||
const u32 bpp = framebuffer->format == GE_FORMAT_8888 ? 4 : 2;
|
||||
const u64 cacheKey = (u64)addr << 32;
|
||||
// If it has a clut, those are the low 32 bits, so it'll be inside this range.
|
||||
|
@ -749,9 +750,13 @@ bool TextureCacheCommon::AttachFramebuffer(TexCacheEntry *entry, u32 address, Vi
|
|||
|
||||
AttachedFramebufferInfo fbInfo = { 0 };
|
||||
|
||||
const u64 mirrorMask = 0x00600000;
|
||||
const u32 addr = (address & 0x3FFFFFFF) & ~mirrorMask;
|
||||
const u32 texaddr = ((entry->addr + texaddrOffset) & ~mirrorMask);
|
||||
const u32 mirrorMask = 0x00600000;
|
||||
u32 addr = address & 0x3FFFFFFF;
|
||||
u32 texaddr = entry->addr + texaddrOffset;
|
||||
if (entry->addr & 0x04000000) {
|
||||
addr &= ~mirrorMask;
|
||||
texaddr &= ~mirrorMask;
|
||||
}
|
||||
const bool noOffset = texaddr == addr;
|
||||
const bool exactMatch = noOffset && entry->format < 4;
|
||||
const u32 w = 1 << ((entry->dim >> 0) & 0xf);
|
||||
|
|
Loading…
Add table
Reference in a new issue