There's conflicting advice on when to do it, but to avoid people testing
their cheats twice, let's match as closely as we can.
This means that 30hz games will only have the callback run at 30hz.
The duplicate frames option may interfere, just like it may on libretro.
It seems to be possible for a user to back out of a screen before
receiving the "dialog completed" callback on Android, in which case
things pointed to by the callback might be gone.
In this case, it's better to simply not call the callback, rather than
crashing.
This is accomplished by assigning "Tokens" to screens that cause
requests, and in ~Screen, invalidate any pending requests belonging to
that token.
Should fix#18720
We need to annotate store mode properly too, in order to merge passes
that load with DONT_CARE.
The reason it's a problem that we fail to merge renderpasses is that old
Mali drivers get things in a terribly wrong state if you submit an empty
renderpass.
Range culling (which we'll just call culling in the setting
name) still is problematic enough that it can be useful to have this
way to turn it off as an escape route. Since disabling it can break some
games like famously TOCA, it needs to be under speedhacks, though likely
the performance change is minimal.
See for example #17061