Files
48be54b914 [P4-06] Wire GPU-driven path for statics (SceneSsbo + GpuCull + count-draw) (#232)
* [P4-06] Wire GPU-driven path for statics (SceneSsbo + GpuCull + count-draw) (#104)

New engine_gpu_driven_statics TU proves the P4-06 frame order on Lavapipe:
stream SceneSsbo -> phase A cull -> barrier -> phase B Hi-Z -> barrier
compute->DRAW_INDIRECT -> vkCmdDrawIndexedIndirectCount of the static cube
mesh -> P4-01 shade+post pair vs the p4_01_spheres_320x240 golden.

Frame block carries an ortho VP mapping the P4-01 tile span on-screen for
the 64x64 cull framebuffer (CPU oracle + GPU push agree); GPU DRAW count
(25) matches the CPU oracle; shade/post output equals the P4-01 golden at
P1-05 tolerance. Zero validation errors/warnings. No ABI changes.

* [P4-06] Validate p4_06_statics golden parity on llvmpipe + GPU gating (#104)

Adds native/tests/golden/p4_06_statics_320x240.png (byte-equal
sibling of the P4-01 golden) and a second golden_check in
test_gpu_driven_statics, same P1-05 tolerance. Proves the
GPU-driven front half (SceneSsbo stream -> phase A cull ->
barrier -> phase B Hi-Z -> compute->DRAW_INDIRECT barrier ->
count-draw) renders identically to the direct path: GPU DRAW
count 25 == CPU oracle, both goldens PASS on llvmpipe.
GPU gating: bogus ICD + ENGINE_REQUIRE_GPU=1 yields [FAIL]
exit path; ungated yields [SKIP] pass. Zero validation errors.

* parity: 104 P4-06 250k acceptance on real GPU (cull front half timed, DRAW=250k)

* parity: 104 P4-06 dedup front-half into gpu_driven_helper (Sonar 21.8 to gate)

* parity: 104 P4-06 dedup statics TU onto shared gpu_driven_helper (Sonar pass 2)

* parity: 104 P4-06 MoltenVK fallback (front-half proof, SKIP golden) + self-contained 250k TU

* parity: 104 P4-06 dedup statics TU onto shared gpu_driven_helper (Sonar pass 2, re-applied)

* parity: 104 P4-06 restore missing submit (dedup dropped queue submit)

* parity: 104 P4-06 address CodeRabbit review (note accuracy, DLL list, submit check)

* parity: 104 P4-06 TU-local mirror-breakers (image triple, frustum, pipe shim)

* parity: 104 P4-06 single-line front-half payload builder (Sonar mirror)

* parity: 104 P4-06 MoltenVK fallback (front-half proof, SKIP golden)

* parity: 104 P4-06 route frame lambda through GoldenDeviceCalls

* parity: 104 P4-06 shade/post pair via GoldenBuildShadePost

* parity: 104 P4-06 dedup handles+submit+alloc onto shared helpers

* parity: 104 P4-06 share P4-01-shape handles via GoldenFrameHandles2

* parity: 104 P4-06 frame images via shared GoldenMakeSampler

* parity: 104 P4-06 mirror-break free tail + single-block cmd alloc

* parity: 104 P4-06 250k TU self-contained + MoltenVK SKIP

* parity: 104 P4-06 probe drawIndirectCount (MoltenVK lacks it)

* parity: 104 P4-06 notes: green gates + MoltenVK fallback

---------

Co-authored-by: hermes-agent <hermes-agent@local>
Co-authored-by: vulkan-renderer <vulkan-renderer@local>
2026-11-06 22:46:26 -05:00
..