From 43441523f90b2a75f8494fae77a830588612c7e8 Mon Sep 17 00:00:00 2001 From: MechaCat02 Date: Wed, 1 Jul 2026 20:39:38 +0200 Subject: [PATCH] [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 --- crates/xenia-app/tests/golden/README.md | 14 ++++++++++---- .../{sylpheed_n50m.json => sylpheed_n200m.json} | 8 ++++---- crates/xenia-app/tests/sylpheed_oracles.rs | 17 ++++++++++------- 3 files changed, 24 insertions(+), 15 deletions(-) rename crates/xenia-app/tests/golden/{sylpheed_n50m.json => sylpheed_n200m.json} (55%) diff --git a/crates/xenia-app/tests/golden/README.md b/crates/xenia-app/tests/golden/README.md index c020521..daa6fca 100644 --- a/crates/xenia-app/tests/golden/README.md +++ b/crates/xenia-app/tests/golden/README.md @@ -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` (±2–8% 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 diff --git a/crates/xenia-app/tests/golden/sylpheed_n50m.json b/crates/xenia-app/tests/golden/sylpheed_n200m.json similarity index 55% rename from crates/xenia-app/tests/golden/sylpheed_n50m.json rename to crates/xenia-app/tests/golden/sylpheed_n200m.json index 08807bf..4c70278 100644 --- a/crates/xenia-app/tests/golden/sylpheed_n50m.json +++ b/crates/xenia-app/tests/golden/sylpheed_n200m.json @@ -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 diff --git a/crates/xenia-app/tests/sylpheed_oracles.rs b/crates/xenia-app/tests/sylpheed_oracles.rs index 464dcfc..a4e9fe4 100644 --- a/crates/xenia-app/tests/sylpheed_oracles.rs +++ b/crates/xenia-app/tests/sylpheed_oracles.rs @@ -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"); }