hrydgard/ppsspp — pull request #1505 by unknownbrackets (2013-04-24 08:14:43+00:00)
Title: Add a "secondary" texture cache for 2d animation and clut changes

I finally found the stupid mistake I made that broke this, so it works now.

The goal here is to avoid re-uploading textures. This does however make it use more VRAM, which I think @xsacha won't thank me for. But for 2d animation, and for games that reuse a texture with different cluts, this can be a significant improvement.

Popolocrois goes from 115 vps to 800 vps with this change, looks the same.

Crisis Core and Final Fantasy Type-0 seem unaffected, and LittleBigPlanet seems to lose 1-2 vps (but it's hard to tell for sure.) Tales of Eternia seems faster (animations) but it's the same vps while still.

On mobile, this seems like a similar story, but there cityhash is more expensive. But the numbers seem to indicate that, at worst, it just trades cityhash for texture upload.

Popolocrois actually crashes on my iPhone 3GS with memory warnings, though (before and after this change), and it's not allocations, so it must be GPU memory. And Final Fantasy Tactics still glitches out (not sure if that texture cache or not yet...)

Anyway, I'm not sure how this'll affect performance but I think more testing would be nice. If it doesn't help overall, we can revert or adjust.

-[Unknown]