[iterate-4A] intro-video: re-baseline boot golden 50M -> 200M after clock fix

The clock fix (INSTRUCTIONS_PER_MS 10_000 -> 1_000_000, commit 645feb8) moves
the worker-hub +66 ms render gate from ~660k to ~66M instructions, so the old
-n 50M anchor is now pre-render (swaps=0) and no longer guards boot rendering.

Re-anchor sylpheed_n50m -> sylpheed_n200m: at -n 200M the fixed build renders
steadily (draws=3165, swaps=895) and the stable digest is deterministic across
repeated inline lockstep runs. Renames the golden, updates the test's -n and
doc comment, and refreshes tests/golden/README.md. Per the README's re-baseline
policy (intentional digest move -> separate commit).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
MechaCat02
2026-07-01 20:39:38 +02:00
parent 645feb8f5b
commit 43441523f9
3 changed files with 24 additions and 15 deletions

View File

@@ -7,11 +7,16 @@ These JSON files anchor `xenia-rs check` digest output for Project Sylpheed.
| File | -n | Mode | Captures |
|------|----|------|----------|
| `sylpheed_n2m.json` | 2_000_000 | full digest | early boot (swaps=0, no rendering) |
| `sylpheed_n50m.json` | 50_000_000 | stable-digest | first VdSwap pair (swaps=2 post-Phase-A) |
| `sylpheed_n200m.json` | 200_000_000 | stable-digest | steady boot rendering (draws=3165, swaps=895) |
Note: `sylpheed_n200m.json` replaces the former `sylpheed_n50m.json`. The
intro-video clock fix (`INSTRUCTIONS_PER_MS` 10_000 → 1_000_000) moved the
worker-hub `+66 ms` render gate to ~66M instr, so 50M is now pre-render
(swaps=0). Re-anchored to 200M to keep the golden guarding boot rendering.
## Stable-digest mode
`sylpheed_n50m.json` is captured with `--stable-digest`, which omits
`sylpheed_n200m.json` is captured with `--stable-digest`, which omits
timing-sensitive counters: `packets` (±28% lockstep noise from a GPU thread
race), `resolves`, `interrupts_delivered`, `interrupts_dropped`,
`texture_decodes`. The remaining fields are byte-identical across repeated
@@ -35,9 +40,10 @@ a separate commit and reference the audit ID in the message.
cargo build --release -p xenia-app
target/release/xenia-rs check \
"$SYLPHEED_ISO" \
-n 50000000 \
-n 200000000 \
--gpu-inline \
--stable-digest \
--out crates/xenia-app/tests/golden/sylpheed_n50m.json
--out crates/xenia-app/tests/golden/sylpheed_n200m.json
```
## Running the goldens

View File

@@ -1,9 +1,9 @@
{
"instructions": 50000200,
"imports": 189264,
"instructions": 200000239,
"imports": 575447,
"unimpl": 0,
"draws": 768,
"swaps": 157,
"draws": 3165,
"swaps": 895,
"unique_render_targets": 2,
"shader_blobs_live": 6,
"texture_cache_entries": 1

View File

@@ -99,12 +99,15 @@ fn run_oracle(label: &str, max_instr: u64, golden_rel: &str) {
}
}
/// Sylpheed boot to first VdSwap pair, captured at -n 50M lockstep.
/// Catches regressions in: addi/addic semantics, kernel HLE for VdSwap path,
/// thread spawning, file I/O for sound/config. With Phase A's swap fix landed,
/// `swaps` should be 2 and `draws` 0 (Phase E gates draws>0).
/// Sylpheed boot to steady rendering, captured at -n 200M lockstep.
/// Catches regressions in: addi/addic semantics, kernel HLE for the VdSwap
/// path, thread spawning, file I/O for sound/config, and boot render
/// throughput. Re-anchored from 50M to 200M after the intro-video clock fix
/// (INSTRUCTIONS_PER_MS 10_000 -> 1_000_000): the worker-hub +66 ms render
/// gate now elapses at ~66M instr, so 50M is pre-render; by 200M boot is
/// rendering steadily (`draws` 3165, `swaps` 895).
#[test]
#[ignore = "long-running; run via `cargo test ... -- --ignored sylpheed_n50m`"]
fn sylpheed_n50m() {
run_oracle("sylpheed_n50m", 50_000_000, "tests/golden/sylpheed_n50m.json");
#[ignore = "long-running; run via `cargo test ... -- --ignored sylpheed_n200m`"]
fn sylpheed_n200m() {
run_oracle("sylpheed_n200m", 200_000_000, "tests/golden/sylpheed_n200m.json");
}