Files
builds/.agents/handoffs/forge-windows-gpu-diet-r0-p5.md
T

40 lines
2.7 KiB
Markdown

# Forge (Windows) — rebuild engine main at 0ec39c95 (GPU diet + R0 P5)
Mac `engine/macos-arm64` is engine `0ec39c95` (2026-10-17). Windows is still `1e7be28b1`. The game pins `4.7.2`
without a hash until Windows carries the same commit; then pin `4.7.2@0ec39c95` in ariki-game `project.godot`.
## Build
`tinqs pull` the engine, then the `windows-x64` manifest flags (MSVC, `platform=windows target=editor
module_mono_enabled=yes`), regenerate GodotSharp from that binary, publish binary + console binary + GodotSharp here
with sha256s, note in `manifest.json`.
## New and NOT yet compiled on Windows (no toolchain on the Mac)
- `platform/windows/crash_report_windows.{h,cpp}`, `crash_handler_windows_seh.cpp` / `_signal.cpp` (MiniDumpWriteDump,
pre-started writer thread, unhandled-exception filter), `os_windows_stack_sampling.cpp` (freeze watchdog stack walk),
dbghelp/psapi linked in every target (`detect.py`, `SCsub`).
- `drivers/d3d12/rendering_device_driver_d3d12.{h,cpp}`: GetDeviceRemovedReason + DRED on device removal.
- Verification checklist: engine `.agents/wiki/crash-freeze-and-error-reporting.md` (8 steps: main-thread crash,
worker-thread crash, stack overflow, native freeze, C# freeze, D3D12 TDR via `dxcap -forcetdr --gpu-breadcrumbs`,
`--disable-crash-handler` writes nothing, release template build links dbghelp).
## Bench after the build (the pacer box)
ariki-game `.agents/plans/gpu-frame-diet-ui-opaque-prepass-2026-10-17.md` and `render-thread-diet-2026-10-17.md`:
run the Jungle/Main stands with `--gpu-profile`; the RENDER CPU PROFILE block now prints `_draw wall` and
`end_frame (graph replay + submit)` — the split of the 12.6 ms render-thread floor that Phase 0 asked for.
## Next: both platforms to 7fb81364 (crash-report review fixes)
Engine main is `7fb81364` (`a040761b` + `7fb81364` on top of `0ec39c95`): freeze-report note/context read under a lock,
debugger pauses never count as stall time, macOS sidecar `thread_id`, one first-wins atomic claims a Windows crash.
No API change — GodotSharp is unchanged. Mac has built `7fb81364` (Kraken, `4.7.2.stable.mono.custom_build.7fb81364b`)
but does NOT publish it yet: the game pins `4.7.2@0ec39c954`, so a lone Mac publish would lock every Mac out.
Windows (Forge):
1. Build `7fb81364` with the manifest flags. The Windows files changed here were NOT compiled on the Mac:
`platform/windows/crash_handler_windows_seh.cpp`, `platform/windows/crash_report_windows.{h,cpp}` — if they fail,
write the error here.
2. If you have a `tests=yes` build: `--test --test-case="*CrashReport*,*FreezeDetector*,*FreezeWatchdog*,*AgentLog*"`.
3. Publish windows-x64 `7fb81364`, then tell Kraken: Mac publishes its `7fb81364` binary and the pin moves to
`4.7.2@7fb81364b` in the same game push.