diff --git a/.agents/handoffs/forge-windows-parallel-replay.md b/.agents/handoffs/forge-windows-parallel-replay.md index f9d1f41..21fed23 100644 --- a/.agents/handoffs/forge-windows-parallel-replay.md +++ b/.agents/handoffs/forge-windows-parallel-replay.md @@ -22,6 +22,14 @@ Nothing is published or pinned for this yet. This is a test build on Forge only. ## 2. In-game A/B (box otherwise idle, one engine, nothing else running) +Laptop setup first, and write the settings into the report (each one alone can move fps 8–15 %): +- Plugged in; Windows power mode **Best performance**; the maker's performance/turbo profile. +- **MUX switch on dGPU only** (Ultimate / Discrete mode in the maker's app; needs a reboot). In hybrid mode + every frame is copied through the AMD integrated GPU to the panel. If the laptop has no MUX, say so. +- Record the CPU name (`Get-CimInstance Win32_Processor | Select-Object Name, NumberOfCores, NumberOfLogicalProcessors`). + On a Ryzen AI 9 HX 370-class chip only 4 cores are full-speed; note in Process Explorer (Threads) which cores the + engine's busiest threads sit on. + The game pins `4.7.2@e64890fd3`; skip the pin for this test build: ```bash @@ -61,6 +69,19 @@ ARIKI_API=http://127.0.0.1:4328 python tools/render_thread_profile.py --log "$LO Eye check with `hzb on`: turn the camera fast past a hill and a house. Plants must not pop in a frame late or vanish while visible. +Control, its own launch after the runs above: rendering on the main thread (`--render-thread safe`) instead of the +project's separate render thread. A frame should cost max(main, render) with the separate thread and main + render +without it; Windows reads ~22 ms against a ~11 ms `_draw` wall, which looks like main + render. + +```bash +TINQS_ENGINE_SKIP_CHECK=1 GAME_ARGS="--gpu-profile --render-thread safe" GAME_RES=1600x900 bash tools/game.sh run +# same ready / host_game / settle as above, then the 4-state profile again with OUT=.game-cli/safe-windows-$(date +%Y%m%d-%H%M) +``` + +Plus three `/mainthread` reads with the separate thread (default launch) and three with `safe`, all with +replay + record off. Report `mainWorkMs`, `tailAndRenderSyncMs`, `verdict` p50/p95 for each. If `safe` costs about +the same frame time as `separate`, the separate thread is not overlapping anything on Windows. + Report per pose and state: frame ms, `_draw` wall, `end_frame`, render-CPU labels, fps p25, `/perf gpucullCounters.parallelReplay` (lists / chunks), pixel diff vs the A/A floor, and the full `results.json`.