Time for another freedreno update. hw binning support, and fun with gallium HUD.
Mesa/Gallium:
The big news is that hw binning pass support (for a3xx) is working. This is a pre-pass for all the draws which generates a visibility stream (ie. basically which vertices apply to which tiles) used to speed up the tile rendering step by filtering out non visible vertices for a given tile.
tl;dr: games or anything with a healthy vertex loading (ie. not window managers) are showing 35-45% fps boost.
Currently it is not enabled by default. I'd like some time for it to get more testing before it is enabled by default. For now, use the FD_MESA_DEBUG environment variable to enable it, ie:
FD_MESA_DEBUG=binning supertuxkart
Also, since I was looking for a way to correlate fps with various other statistics (in particular batches per second vs frames per second), I started playing with the gallium performance monitor HUD (heads-up-display). With the addition of a few driver custom queries, I had what I needed:
The driver custom queries:
export GALLIUM_HUD=cpu0+cpu1+cpu2+cpu3,fps+batches-sysmem+batches-gmem+restores,draw-calls
export FD_MESA_DEBUG=binning
supertuxkart -s 1280x720 --demo-mode 1
The binning and query support are on mesa master.
Mesa/Gallium:
The big news is that hw binning pass support (for a3xx) is working. This is a pre-pass for all the draws which generates a visibility stream (ie. basically which vertices apply to which tiles) used to speed up the tile rendering step by filtering out non visible vertices for a given tile.
tl;dr: games or anything with a healthy vertex loading (ie. not window managers) are showing 35-45% fps boost.
Currently it is not enabled by default. I'd like some time for it to get more testing before it is enabled by default. For now, use the FD_MESA_DEBUG environment variable to enable it, ie:
FD_MESA_DEBUG=binning supertuxkart
Also, since I was looking for a way to correlate fps with various other statistics (in particular batches per second vs frames per second), I started playing with the gallium performance monitor HUD (heads-up-display). With the addition of a few driver custom queries, I had what I needed:
The driver custom queries:
- draw-calls
- batches - number of batches per second, sum of batches-sysmem plus batches-gmem
- batches-gmem - a set of tiles in GMEM rendered, for each tile (optionally) system mem -> gmem (restore), plus N draws, plus gmem -> system mem (resolve); value in batches per second
- batches-sysmem - draws to system memory (GMEM bypass) per second
- restores - number of GMEM batches that required restore per second
export GALLIUM_HUD=cpu0+cpu1+cpu2+cpu3,fps+batches-sysmem+batches-gmem+restores,draw-calls
export FD_MESA_DEBUG=binning
supertuxkart -s 1280x720 --demo-mode 1
The binning and query support are on mesa master.