mirror of
https://github.com/ARMSX2/ARMSX2.git
synced 2026-08-24 16:50:16 -07:00
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:
co-authored by
Claude Opus 4.8
parent
c94c902860
commit
4c9ada053e
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user