chrisforbes/mesa

Promote small dense UBO access to push constants

chrisforbes opened this issue · 3 comments

When porting from DX10/11 to GL, it's natural to use UBO for absolutely everything, but this carries a stiff perf penalty on our driver. If we have small UBOs and a dense block of variables within them are used, we should try to promote that to push constants so they are delivered automatically to the shader kernel.

On Haswell, the RS has gather-from-memory capability which can be used to fetch from UBO and push the resulting data into the kernels.

Note: RS requires a change to our binding table management, since the HW wants to control it. We get binding table edit commands instead.

Also tons of weird issues in Haswell implementation; PRM documents required workarounds to prime the RS.

RS is apparently a disaster. Rest of this is done.