mirror of
https://github.com/ARMSX2/ARMSX2.git
synced 2026-08-24 16:50:16 -07:00
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>