mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-14 15:00:30 +02:00
A state that textures from what it draws to, or whose scissor reaches past the stride, used to switch the binner to one thread, and every primitive was drawn alone, copying the whole texture for its snapshot. In Wipeout, God of War and GTA that was a third to half of the time. Now it's decided per primitive. One is drawn after everything queued and before what follows only if it needs that: it textures from texels a queued primitive (or itself) writes, it writes texels a queued one still has to read, or it reaches past the stride. Reads are bounded by the vertices' texture coordinates plus the filter's neighbors and mapped to tiles of the target; queued writes and reads are tracked per tile. Everything else goes to the tiles as usual. The in-order ones are split into bands of rows when large, since each pixel reads only the snapshot, and the snapshot now only copies the previous primitive's columns. Same results on 263 frame dumps and 8 games. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
To get to 100% compatibility, we will need a software renderer as there are games out there that do tricks that can't really be faked in a sensible way. Useful for homebrew too that mix sw and accel rendering.