diff --git a/.agents/handoffs/forge-windows-parallel-replay.md b/.agents/handoffs/forge-windows-parallel-replay.md index 8819db6..1783931 100644 --- a/.agents/handoffs/forge-windows-parallel-replay.md +++ b/.agents/handoffs/forge-windows-parallel-replay.md @@ -60,3 +60,32 @@ at the same spot. Default flips on (`rendering/rendering_device/parallel_draw_replay/enabled=true` in the game's `project.godot`, then publish + pin) only if: oracle clean, soak clean, and frame time / `end_frame` drop at all 3 poses. + +## 2026-10-19 Engine-side test results on Forge (ZCode) — build a967d12bf, NOT published (test-only per this handoff) + +Tooling note: Vulkan SDK + Khronos validation layer and the D3D12 debug layer (Graphics Tools) are now +INSTALLED on Forge (admin install, C:\VulkanSDK) — the "--gpu-validation owed" notes in the manifest are +resolved from here on. + +1. parallel_draw_replay oracle, vulkan, --gpu-validation (RTX 5080): **ORACLE: 10 passed, 0 failed, exit 0** + (replay 64x8/8x32/120x2/16x3, record 96x8/8x32/200x2, record+replay 16x5, inline-again — all pixel-identical, + real chunk splits up to 160 chunks). + **VUID FINDING (not zero-VUID as this handoff expected):** 10x VUID-vkBeginCommandBuffer-commandBuffer-00050 + ("commandBuffer must be in the initial state … pool must have VK_COMMAND_POOL_CREATE_RESET_COMMAND_BUFFER_BIT"). + They fire in the FIRST parallel state (after the inline reference, before its PASS) and hit the duplicate limit. + Control: 120 frames of the same project, validation on, feature OFF → 0 VUIDs. So the parallel path re-begins + secondary command buffers from pools without the RESET bit — spec-UB that the current NVIDIA driver tolerates + (and MoltenVK runs never flagged). Benign today, but a candidate fix is the pool flag or explicit + vkResetCommandBuffer per chunk reuse. Pixel identity is unaffected. +2. draw_indirect_count oracle, d3d12, debug layer ON (run.sh): **22 passed, 0 failed, exit 0**, with the expected + `ORACLE SKIP base-instance cases: D3D12 shaders see base instance 0` line and zero D3D12 ERROR lines — this now + matches the wiki Windows checklist exactly (the earlier 22/2 was the no-debug-layer run where the cases ran + instead of skipping). Old "owed" item closed. +3. multimesh_cull_pool oracle, d3d12, debug layer ON: **4524 passed, 0 failed, exit 0**, zero D3D12 ERROR lines — + full parity with Mac Metal (4524/4524). The "base-instance gap may bite pooled draws" concern did NOT + materialize; per the G2 handoff this un-gates making pool the default. Old "owed" item closed. + +Still owed on Windows: the in-game A/Bs of this handoff (replay/record 4-state + occlusion on/off at the spawn +pose, render_thread_profile.py tables), the 10-minute replay soak + shadow-edge eye check, the tests=yes unit +suites (CrashReport/FreezeDetector/FreezeWatchdog/AgentLog/GpuCullArena/StaticShadow), and the 8-step crash +checklist. Publishing windows-x64 a967d12b + the default flip remain Ozan's call after the VUID finding.