Skip to content

Commit ad6e499

Browse files
committed
RegTest: Add PGXP/upscale/recompiler options
1 parent bc2c334 commit ad6e499

File tree

2 files changed

+61
-7
lines changed

2 files changed

+61
-7
lines changed

scripts/run_regression_tests.py

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,22 @@ def is_game_path(path):
1515
return extension in ["cue", "chd"]
1616

1717

18-
def run_regression_test(runner, destdir, dump_interval, frames, renderer, gamepath):
18+
def run_regression_test(runner, destdir, dump_interval, frames, renderer, cargs, gamepath):
1919
args = [runner,
2020
"-log", "error",
2121
"-dumpdir", destdir,
2222
"-dumpinterval", str(dump_interval),
2323
"-frames", str(frames),
2424
"-renderer", ("Software" if renderer is None else renderer),
25-
"--", gamepath
2625
]
26+
args += cargs
27+
args += ["--", gamepath]
2728

2829
print("Running '%s'" % (" ".join(args)))
2930
subprocess.run(args)
3031

3132

32-
def run_regression_tests(runner, gamedir, destdir, dump_interval, frames, parallel, renderer):
33+
def run_regression_tests(runner, gamedir, destdir, dump_interval, frames, parallel, renderer, cargs):
3334
paths = glob.glob(gamedir + "/*.*", recursive=True)
3435
gamepaths = list(filter(is_game_path, paths))
3536

@@ -44,10 +45,10 @@ def run_regression_tests(runner, gamedir, destdir, dump_interval, frames, parall
4445

4546
if parallel <= 1:
4647
for game in gamepaths:
47-
run_regression_test(runner, destdir, dump_interval, frames, renderer, game)
48+
run_regression_test(runner, destdir, dump_interval, frames, renderer, cargs, game)
4849
else:
4950
print("Processing %u games on %u processors" % (len(gamepaths), parallel))
50-
func = partial(run_regression_test, runner, destdir, dump_interval, frames, renderer)
51+
func = partial(run_regression_test, runner, destdir, dump_interval, frames, renderer, cargs)
5152
pool = multiprocessing.Pool(parallel)
5253
pool.map(func, gamepaths, chunksize=1)
5354
pool.close()
@@ -65,10 +66,23 @@ def run_regression_tests(runner, gamedir, destdir, dump_interval, frames, parall
6566
parser.add_argument("-frames", action="store", type=int, default=36000, help="Number of frames to run")
6667
parser.add_argument("-parallel", action="store", type=int, default=1, help="Number of processes to run")
6768
parser.add_argument("-renderer", action="store", type=str, help="Renderer to use")
69+
parser.add_argument("-upscale", action="store", type=int, help="Upscale multiplier")
70+
parser.add_argument("-pgxp", action="store_true", help="Enable PGXP")
71+
parser.add_argument("-pgxpcpu", action="store_true", help="Enable PGXP CPU mode")
72+
parser.add_argument("-cpu", action="store", help="CPU execution mode")
6873

6974
args = parser.parse_args()
70-
71-
if not run_regression_tests(args.runner, os.path.realpath(args.gamedir), os.path.realpath(args.destdir), args.dumpinterval, args.frames, args.parallel, args.renderer):
75+
cargs = []
76+
if (args.upscale is not None):
77+
cargs += ["-upscale", str(args.upscale)]
78+
if (args.pgxp):
79+
cargs += ["-pgxp"]
80+
if (args.pgxpcpu):
81+
cargs += ["-pgxp-cpu"]
82+
if (args.cpu is not None):
83+
cargs += ["-cpu", args.cpu]
84+
85+
if not run_regression_tests(args.runner, os.path.realpath(args.gamedir), os.path.realpath(args.destdir), args.dumpinterval, args.frames, args.parallel, args.renderer, cargs):
7286
sys.exit(1)
7387
else:
7488
sys.exit(0)

src/duckstation-regtest/regtest_host.cpp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -549,6 +549,46 @@ bool RegTestHost::ParseCommandLineParameters(int argc, char* argv[], std::option
549549
s_base_settings_interface->SetStringValue("GPU", "Renderer", Settings::GetRendererName(renderer.value()));
550550
continue;
551551
}
552+
else if (CHECK_ARG_PARAM("-upscale"))
553+
{
554+
const u32 upscale = StringUtil::FromChars<u32>(argv[++i]).value_or(0);
555+
if (upscale == 0)
556+
{
557+
Log_ErrorPrint("Invalid upscale value.");
558+
return false;
559+
}
560+
561+
Log_InfoFmt("Setting upscale to {}.", upscale);
562+
s_base_settings_interface->SetIntValue("GPU", "ResolutionScale", static_cast<s32>(upscale));
563+
continue;
564+
}
565+
else if (CHECK_ARG_PARAM("-cpu"))
566+
{
567+
const std::optional<CPUExecutionMode> cpu = Settings::ParseCPUExecutionMode(argv[++i]);
568+
if (!cpu.has_value())
569+
{
570+
Log_ErrorPrint("Invalid CPU execution mode.");
571+
return false;
572+
}
573+
574+
Log_InfoFmt("Setting CPU execution mode to {}.", Settings::GetCPUExecutionModeName(cpu.value()));
575+
s_base_settings_interface->SetStringValue("CPU", "ExecutionMode",
576+
Settings::GetCPUExecutionModeName(cpu.value()));
577+
continue;
578+
}
579+
else if (CHECK_ARG("-pgxp"))
580+
{
581+
Log_InfoPrint("Enabling PGXP.");
582+
s_base_settings_interface->SetBoolValue("GPU", "PGXPEnable", true);
583+
continue;
584+
}
585+
else if (CHECK_ARG("-pgxp-cpu"))
586+
{
587+
Log_InfoPrint("Enabling PGXP CPU mode.");
588+
s_base_settings_interface->SetBoolValue("GPU", "PGXPEnable", true);
589+
s_base_settings_interface->SetBoolValue("GPU", "PGXPCPU", true);
590+
continue;
591+
}
552592
else if (CHECK_ARG("--"))
553593
{
554594
no_more_args = true;

0 commit comments

Comments
 (0)