All GPU verification and every timing number in PARITY.md, bench/docs/NEXT-STEPS.md, and bench/docs/PARITY-DECISIONS.md comes from a single Apple Metal-3 adapter family. Nothing has run on Windows/Linux with NVIDIA, AMD, or Intel.
Two distinct risks:
Correctness. WGSL validation is per-implementation. Storage-texture format support, timestamp-query availability, depth-stencil aspect views, and workgroup limits are the usual divergence points. We also depend on two private three internals (renderer.backend.device, renderer.backend.get(texture).texture) which are backend-shaped.
Performance claims. The adopted results are stated as percentages — RCAS conditioned-space −34%, the source-style candidate graphs +36%/+6.5%/+76%, the shading detector at 0.044 ms. Fused-vs-separate-pass tradeoffs are exactly the kind of thing that inverts on a different memory hierarchy, so a candidate we rejected on Apple could be the right choice elsewhere.
Wanted:
- Bench boot + all four modes + all debug views, clean console, on at least one non-Apple adapter.
node scripts/run-benchmark.mjs --smoke timings, to see whether the pass-cost ordering holds.
node scripts/measure-convergence.mjs --scenario Q12 — the still-scene convergence numbers (0.024 consecutive) should reproduce; a materially worse number would suggest precision-dependent behavior in the accumulate blend.
Note the recorded methodology caveat: absolute times are hostage to GPU power state (a cold worktree read a uniform ~3× slower). Compare within an environment, never across.
All GPU verification and every timing number in
PARITY.md,bench/docs/NEXT-STEPS.md, andbench/docs/PARITY-DECISIONS.mdcomes from a single Apple Metal-3 adapter family. Nothing has run on Windows/Linux with NVIDIA, AMD, or Intel.Two distinct risks:
Correctness. WGSL validation is per-implementation. Storage-texture format support,
timestamp-queryavailability, depth-stencil aspect views, and workgroup limits are the usual divergence points. We also depend on two private three internals (renderer.backend.device,renderer.backend.get(texture).texture) which are backend-shaped.Performance claims. The adopted results are stated as percentages — RCAS conditioned-space −34%, the source-style candidate graphs +36%/+6.5%/+76%, the shading detector at 0.044 ms. Fused-vs-separate-pass tradeoffs are exactly the kind of thing that inverts on a different memory hierarchy, so a candidate we rejected on Apple could be the right choice elsewhere.
Wanted:
node scripts/run-benchmark.mjs --smoketimings, to see whether the pass-cost ordering holds.node scripts/measure-convergence.mjs --scenario Q12— the still-scene convergence numbers (0.024 consecutive) should reproduce; a materially worse number would suggest precision-dependent behavior in the accumulate blend.Note the recorded methodology caveat: absolute times are hostage to GPU power state (a cold worktree read a uniform ~3× slower). Compare within an environment, never across.