Want to get rid of direct accesses to GPUState in modules that may be reused in
my future next-gen backends, that will reformat display lists into command lists that will
then be optimized and executed, out of sync with the real GPUState.
Candidate modules that may be reused in full are Framebuffer and Depal, possibly TextureCache to some degree.
Just makes the debug stats actually useful while stepping. A bit of
overengineering, but it makes it easy to go frame-by-frame looking for
perf issues.
Fixes#3049, which apparently expects an END/FINISH to not immediately
trigger (it drawsyncs soon after, and completely expects that to
reschedule.)
Either way, it seems plausible an END would take a few more cycles than
most instructions, since it generates an interrupt.
If only parameters change (like wrapping or clut, etc.) we don't need to
rehash the data - we know it hasn't changed.
Should reduce the distance between lazy texture hashing on and off.
They really should pause, but we were resetting them incorrectly.
And most importantly, sceGeContinue() inside the signal handler absolutely
must work. Games use this a lot.
Fixes#5806, bcause it avoids rescheduling at the signal, which it should
not do. Possibly this is incorrect for all GE signals, but we don't need
to trigger any behavior on a sync anyway.