mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-14 15:00:30 +02:00
BinQueue's head, tail and size were atomics, so each push was two locked increments, but only the emulation thread uses them: the drawing threads read items, which the tiles publish. And each BinItem was built on the stack in pieces and then copied with wider loads, a store forwarding stall. Now the indices are plain and items are built in place (PushItem). AddTriangle was 8% of the emulation thread's time in God of War, which now takes 4.1 s for five emulated seconds (from 4.2 s), Wipeout 3.5 s (from 3.7 s). 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.