54 lines
2.0 KiB
Python
54 lines
2.0 KiB
Python
#!/usr/bin/env python3
|
|
"""Check the optional P3 capture matrix without starting Vulkan."""
|
|
|
|
import csv
|
|
import io
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
def main() -> None:
|
|
completed = subprocess.run(
|
|
[sys.argv[1], "--list-quality-runs"], capture_output=True, text=True, check=False)
|
|
assert completed.returncode == 0, completed.stderr
|
|
rows = list(csv.DictReader(io.StringIO(completed.stdout)))
|
|
assert len(rows) == 171, len(rows)
|
|
assert sum(int(row["frames"]) for row in rows) == 1386
|
|
assert {row["visibility"] for row in rows} == {
|
|
"direct", "gpu-frustum", "gpu-occlusion"}
|
|
|
|
sequence_frames = {
|
|
"wire-static": 16,
|
|
"pan": 16,
|
|
"moving-cube": 16,
|
|
"door-background": 16,
|
|
"door-open": 10,
|
|
"cut": 2,
|
|
"resize": 2,
|
|
"ui-alpha": 2,
|
|
"teleport": 2,
|
|
"projection": 2,
|
|
"view-switch": 2,
|
|
}
|
|
modes = {"off", "current", "taa", "upscale-current", "upscale"}
|
|
for visibility in ("direct", "gpu-frustum", "gpu-occlusion"):
|
|
actual = [row for row in rows if row["visibility"] == visibility]
|
|
assert len(actual) == 57
|
|
assert len({(row["sequence"], row["mode"]) for row in actual}) == 57
|
|
for sequence, count in sequence_frames.items():
|
|
runs = [row for row in actual
|
|
if row["sequence"] == sequence and row["mode"] != "spatial-2x"]
|
|
assert {row["mode"] for row in runs} == modes
|
|
assert all(int(row["frames"]) == count for row in runs)
|
|
assert all((int(row["width"]), int(row["height"])) == (160, 120)
|
|
for row in runs)
|
|
for sequence in ("wire-static", "pan"):
|
|
reference = next(row for row in actual
|
|
if row["sequence"] == sequence and row["mode"] == "spatial-2x")
|
|
assert (int(reference["frames"]), int(reference["width"]),
|
|
int(reference["height"])) == (16, 320, 240)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|