Files
spoopyghosty0 fc8a28b3cd Foveation: centre the full-density bins, not Valve's texels (#394)
Turnip renders each GMEM bin at the density the map has at the bin's centre, on
a grid anchored in map space, so the full-density area is the bins whose centre
falls in Valve's sharp texels: up to half a bin off the texels' centre the
centring layer aimed at (In Death 2768x2768: 192x224 bins, -80,+32 px in both
eyes). native/foveation/tu_bins.h recomputes Turnip's bin size per foveated pass
as Mesa does (tu_render_pass_gmem_config, tu_tiling_config_update_tile_layout,
the LRZ FDM limit; AVOID_CCU layout; Adreno 750 only, Mesa 26.3 window); the
layer tracks render-target images/views, models render passes and dynamic
rendering, and centres those bins on each eye. Unmodelled cases keep the texel
centre. Adapter settings fdm_bin_w/fdm_bin_h override the size (FrameBridge ->
fp_fdm_set_bin). No frame.adapter revision bump: games get it on rebuild.

Headless (darkening test, snapshot=15, Fixed), block centre vs optical centre:
In Death L -76,+31 / R -83,+35 px -> L +4,-1 / R -3,+3; AC Nexus (2592x2256,
computed 192x224) L +1,+5 / R +2,0; fdm_bin_w=288/fdm_bin_h=256 shifted the
block by the predicted -96,+48.
2026-10-25 19:59:10 -04:00
..