ba74bbd5aa
Per-vertex GS fog end-to-end (gs_stub emit incl. persp_emit5, gs_prim_list_feeder XYZ2->XYZF2 on PRIM.FGE, gs_make_sh3_scheduler_fixture.py F/FGE packing), new fog TBs, fidelity attribution tooling. Functional baseline before removing the dead bilinear lerp8 clamps (Codex: 161-node comb loop -> -0.042ns setup fail). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
53 lines
2.5 KiB
Markdown
53 lines
2.5 KiB
Markdown
# Ch405 — authentic alpha-fan overlays (pre-fit gate)
|
|
|
|
## Objective
|
|
|
|
Add the 53 chronological PSMT8 alpha-fan draws at capture indices 196494
|
|
through 198058 after the accepted 75-epoch Ch404 opaque composite. These are
|
|
large translucent overlays using authentic `ZTE=1`, `GEQUAL`, `ZMSK=1`, and
|
|
`PSMZ16S`: they test the accumulated depth buffer, blend on pass, and must not
|
|
modify Z.
|
|
|
|
## RTL change
|
|
|
|
- Carry architectural `TEST.ZTE` and `ZBUF.ZMSK` alongside each perspective
|
|
fragment through `gs_stub` and `top_psmct32_raster_demo_bram` into the
|
|
existing external LPDDR Z/color ROP.
|
|
- Replace the de25 wrapper's former `ZTE=1/ZMSK=0` constants with those
|
|
sidebands.
|
|
- Increase the production async request FIFO from 4,096 to 16,384 entries.
|
|
The alpha writer preserves exact destination order and can be slower than
|
|
the unthrottled raster producer, so the fixture bounds each epoch to one
|
|
triangle. Measured worst-triangle occupancy is 12,953 entries, leaving
|
|
3,431 entries of observed headroom.
|
|
|
|
## Fixture
|
|
|
|
- `zsrt139c3`: 212 one-triangle alpha epochs, preserving all 212 triangles
|
|
expanded from the 53 authentic fan draws.
|
|
- `zsrt139c4`: Ch403 base + Ch404 detail tail + Ch405 alpha tail, 287 epochs.
|
|
- Authentic TEST/ZBUF header words are restored in the accepted base fixtures;
|
|
their geometry, colors, textures, palettes, and record counts are unchanged.
|
|
- Host/testbench epoch ceilings rise from 128 to 512.
|
|
|
|
## Pre-fit evidence
|
|
|
|
- The unbounded three-epoch diagnostic correctly failed closed at epoch 75:
|
|
169,213 request drops and FIFO high-water 4,096/4,096. It is retained only
|
|
as the measurement that justified bounded bursts.
|
|
- Worst-tail three-epoch test (empty Z): 43,680 fed/passed, zero drops,
|
|
high-water 12,953/16,384, exact color and Z, PASS.
|
|
- Checkerboard-Z test: 43,680 fed, 21,839 passed, zero drops, high-water
|
|
11,389/16,384, exact color, exact unchanged Z at all 307,200 pixels, PASS.
|
|
- Full Ch404 baseline replay with authentic headers reached its exact accepted
|
|
epoch-74 counts (667,279 fed / 351,074 passed) with zero drops before the
|
|
intentionally unbounded diagnostic alpha epoch.
|
|
- Host runner compiles cleanly; generated production assets total about 174 MiB.
|
|
|
|
## Status
|
|
|
|
Ready for owner Quartus 26.1 GUI compile. Do not deploy the prior
|
|
`28659ebf...` RBF as Ch405; the new RBF must contain the 16K request FIFO and
|
|
TEST/ZMSK sidebands. After a timing/resource-clean fit, deploy and run
|
|
`zsrt139c4`, then compare the board framebuffer byte-for-byte with RTL.
|