Software renderer version does use the usual framebuffer and video callbacks, so it actually does work with runahead. The emulator is a little slow, so it doesn’t have enough oomph to runahead with secondary core and do Hard GPU sync at the same time. When I disable hard gpu sync, it can run at 60FPS with secondary core (this is emulating two systems at once) as long as you don’t hit any buttons.
Only issue is that savestates are very slow, so resyncing, and not using the secondary core are really slow. Also there is no frameskip feature in there yet, so there is no optimization due to skipping audio or video emulation.