gsrunner: add -accblend <0-5> to force accurate blending unit

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>
This commit is contained in:
Brian Degenhardt
2026-07-13 15:55:14 -07:00
co-authored by Claude Opus 4.8
parent c94c902860
commit 4c9ada053e
+14
View File
@@ -521,6 +521,8 @@ static void PrintCommandLineHelp(const char* progname)
"Falls back to hardware/geometry expansion.\n");
std::fprintf(stderr, " -no-tex-barriers: Force OverrideTextureBarriers=0. Disables the texture-barrier render-pass pattern "
"and the framebuffer-fetch / depth-feedback paths that build on it.\n");
std::fprintf(stderr, " -accblend <0-5>: Force accurate blending unit (0=Minimum, 1=Basic, 2=Medium, 3=High, 4=Full, 5=Maximum). "
"Overrides the game/global default; use to exercise the SW-blend / fb-fetch (ROV) path headlessly.\n");
std::fprintf(stderr, " --: Signals that no more arguments will follow and the remaining\n"
" parameters make up the filename. Use when the filename contains\n"
" spaces or starts with a dash.\n");
@@ -837,6 +839,18 @@ bool GSRunner::ParseCommandLineArgs(int argc, char* argv[], VMBootParameters& pa
s_settings_interface.SetIntValue("EmuCore/GS", "OverrideTextureBarriers", 0);
continue;
}
else if (CHECK_ARG_PARAM("-accblend"))
{
const std::optional<int> level = StringUtil::FromChars<int>(argv[++i]);
if (!level.has_value() || level.value() < 0 || level.value() > 5)
{
Console.Error("Invalid -accblend level (expected 0=Minimum .. 5=Maximum)");
return false;
}
Console.WriteLn(fmt::format("Forcing accurate blending unit = {}", level.value()));
s_settings_interface.SetIntValue("EmuCore/GS", "accurate_blending_unit", level.value());
continue;
}
else if (CHECK_ARG("-debugdevice"))
{
Console.WriteLn("Enable debug device");