[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:
@@ -7,11 +7,16 @@ These JSON files anchor `xenia-rs check` digest output for Project Sylpheed.
|
|||||||
| File | -n | Mode | Captures |
|
| File | -n | Mode | Captures |
|
||||||
|------|----|------|----------|
|
|------|----|------|----------|
|
||||||
| `sylpheed_n2m.json` | 2_000_000 | full digest | early boot (swaps=0, no rendering) |
|
| `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
|
## 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
|
timing-sensitive counters: `packets` (±2–8% lockstep noise from a GPU thread
|
||||||
race), `resolves`, `interrupts_delivered`, `interrupts_dropped`,
|
race), `resolves`, `interrupts_delivered`, `interrupts_dropped`,
|
||||||
`texture_decodes`. The remaining fields are byte-identical across repeated
|
`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
|
cargo build --release -p xenia-app
|
||||||
target/release/xenia-rs check \
|
target/release/xenia-rs check \
|
||||||
"$SYLPHEED_ISO" \
|
"$SYLPHEED_ISO" \
|
||||||
-n 50000000 \
|
-n 200000000 \
|
||||||
|
--gpu-inline \
|
||||||
--stable-digest \
|
--stable-digest \
|
||||||
--out crates/xenia-app/tests/golden/sylpheed_n50m.json
|
--out crates/xenia-app/tests/golden/sylpheed_n200m.json
|
||||||
```
|
```
|
||||||
|
|
||||||
## Running the goldens
|
## Running the goldens
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
{
|
{
|
||||||
"instructions": 50000200,
|
"instructions": 200000239,
|
||||||
"imports": 189264,
|
"imports": 575447,
|
||||||
"unimpl": 0,
|
"unimpl": 0,
|
||||||
"draws": 768,
|
"draws": 3165,
|
||||||
"swaps": 157,
|
"swaps": 895,
|
||||||
"unique_render_targets": 2,
|
"unique_render_targets": 2,
|
||||||
"shader_blobs_live": 6,
|
"shader_blobs_live": 6,
|
||||||
"texture_cache_entries": 1
|
"texture_cache_entries": 1
|
||||||
@@ -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.
|
/// Sylpheed boot to steady rendering, captured at -n 200M lockstep.
|
||||||
/// Catches regressions in: addi/addic semantics, kernel HLE for VdSwap path,
|
/// Catches regressions in: addi/addic semantics, kernel HLE for the VdSwap
|
||||||
/// thread spawning, file I/O for sound/config. With Phase A's swap fix landed,
|
/// path, thread spawning, file I/O for sound/config, and boot render
|
||||||
/// `swaps` should be 2 and `draws` 0 (Phase E gates draws>0).
|
/// 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]
|
#[test]
|
||||||
#[ignore = "long-running; run via `cargo test ... -- --ignored sylpheed_n50m`"]
|
#[ignore = "long-running; run via `cargo test ... -- --ignored sylpheed_n200m`"]
|
||||||
fn sylpheed_n50m() {
|
fn sylpheed_n200m() {
|
||||||
run_oracle("sylpheed_n50m", 50_000_000, "tests/golden/sylpheed_n50m.json");
|
run_oracle("sylpheed_n200m", 200_000_000, "tests/golden/sylpheed_n200m.json");
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user