mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-10-01 14:58:14 +00:00
Resetting the GE also gets rid of an interrupt that was raised but not taken yet, so a list that reached its FINISH just before never gets its finish callback. We delivered one anyway, for a list that no longer existed. If the break comes from inside a GE callback, the interrupt being handled is kept, since its handler still has to return. Found by gpu/ge/intrsuspend, which also confirms from a thread, with interrupts suspended, that nothing moves along the queue until the FINISH interrupt has been taken. Savestates: bump GPUCommon to 7. We didn't use to mark a PAUSE signal as delivered, which sceGeContinue now goes by, so a state saved with a list paused that way would load into a game that could never continue it. Fixed up on load. gpu/signals/handlercalls goes in as known failing: with an old SDK version, a stall address set from inside a SUSPEND callback doesn't reach the GE, which we can't express with just the one stall address per list. See docs/sceGe.md. Co-Authored-By: Claude Fable 5.1 <[email protected]>