Add FOG_ENABLE param, prune fog cone on the board profile (fix -6.165ns setup)
The fog blend's tex_color*F multiply landed on the texture->color critical path (u_texcache RAM -> u_tex|tex_color -> mult_126 -> raster_pixel_color_q, 46ns, -6.165ns setup). Fog is a proven no-op for the current board scene (96.5% F=255), so pay zero for it here. FOG_ENABLE (default 1, byte-identical fog) added to gs_stub; each fog mux gated (FOG_ENABLE && ras_fge) so FOG_ENABLE=0 constant-folds the entire fog cone away (multiply, FOGCOL adders, s2_fog_f/persp_fog_f5 interp). Threaded through top_psmct32_raster_demo_bram; set FOG_ENABLE(1'b0) on the active GS_SH3_LPDDR_FB board arm (elsif at :1086, the one the QSF profile compiles). Fog stays default-on everywhere else. Verified: FOG_ENABLE=1 fog TBs unchanged PASS; FOG_ENABLE=0 (new tb_gs_fog_disabled + board scene TB) emits raw color = pre-fog datapath; board elaborates clean. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -116,6 +116,11 @@ module tb_top_psmct32_sh3_zint640_shared;
|
||||
.BIN_BUFFER_ENABLE(1'b0), .HEARTBEAT_SPLICE_ENABLE(1'b0),
|
||||
.FEEDER_ENABLE(1'b1), .FEEDER_STG_WORDS(STG_WORDS), .FEEDER_AUTOSTART(1'b0),
|
||||
.PERSPECTIVE_CORRECT(1'b1), .PERSP_RECIP_IDX_BITS(`SH3_SHARED_RECIP_BITS),
|
||||
// Mirror the fitted board config: the GS_SH3_LPDDR_FB profile prunes
|
||||
// per-vertex fog (FOG_ENABLE=0) to keep the texel*F multiply off the
|
||||
// texture->color critical path. With fog pruned the scene must match the
|
||||
// non-fog reference this scoreboard already checks.
|
||||
.FOG_ENABLE(1'b0),
|
||||
`ifdef SH3_SUBPIXEL_XY
|
||||
.SUBPIXEL_XY(1'b1),
|
||||
`endif
|
||||
|
||||
Reference in New Issue
Block a user