Add the GV-7 mode ladder as a restart-required GS option
(EmuCore/GS GSBackThreadMode: 0=off, 1=inline-records, 2=lockstep,
3=pipelined; default 0). Restart-required means the mode can never
change under a live GSState, so it's sampled once at construction.
Off now skips the DRAW record round-trip entirely: every field the
record carries is captured from live state and installed back over the
same live state, an identity — FlushPrim calls the executor tail
directly instead. ExecDrawRecord splits into the install block +
DrawRecordTail(draw_serial), which is the shared tail for both paths
(and closes the ~2 env memcpys/draw the GV7-0d inline path was paying;
GV7-3's bool-off profile verifies against the GV-6b baseline).
Mode >= 1 keeps the GV7-0 build+execute-inline shape (modes 2/3 fall
back to it until the thread lands). gsrunner grows -backthread <mode>
so the gate matrix can pin both rungs.
Gates: gs_vertex_tests 21/21; gsrunner PNG hashes bit-identical to
GV-0 baselines on all 10 dumps, vk + sw, in BOTH mode 0 and mode 1
(record path confirmed active via the new startup log line).
Co-Authored-By: Claude <noreply@anthropic.com>
Adds a test-only CLI flag to pcsx2-gsrunner that overrides the
EmuCore/GS accurate_blending_unit setting, so the SW-blend / fb-fetch
(ROV) feedback path can be exercised headlessly during GS-dump replay.
The game/global default is often Basic, which rarely activates the ROV
path, so a replayed dump reports zero @HWSTAT@ Draws-Calls-(ROV) even
for titles that show fb-fetch artifacts in real gameplay. -accblend
lets a dump be sieved at High/Maximum to find the buggy path.
Test tooling only; no effect on the emulator core.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>