From a full data-transport audit at b0f8780.
The wire contract is already right (centers + one scalar per cell, python/xy/_payload.py:484-505). But _buildHexbinMark (js/src/50_chartview.ts:2567-2613) expands the hex fan 6x on the CPU: 6 columns x n*6 f32 allocated + 6 uploads, cval expanded x6 — 42 floats/cell in GPU memory where an instanced draw needs center (2) + cval (1) per instance with the constant ring as uniforms or a tiny shared vertex buffer (offsets added in the vertex shader, the way BAR_VS uses u_width). ~14x buffer-volume reduction; needs a small dedicated program instead of reusing MESH.
From a full data-transport audit at b0f8780.
The wire contract is already right (centers + one scalar per cell,
python/xy/_payload.py:484-505). But_buildHexbinMark(js/src/50_chartview.ts:2567-2613) expands the hex fan 6x on the CPU: 6 columns x n*6 f32 allocated + 6 uploads, cval expanded x6 — 42 floats/cell in GPU memory where an instanced draw needs center (2) + cval (1) per instance with the constant ring as uniforms or a tiny shared vertex buffer (offsets added in the vertex shader, the way BAR_VS uses u_width). ~14x buffer-volume reduction; needs a small dedicated program instead of reusing MESH.