Mesa (master): freedreno/a3xx: support for hw binning pass

Rob Clark robclark at kemper.freedesktop.org
Wed Jan 8 21:52:49 UTC 2014


Module: Mesa
Branch: master
Commit: c0766528baaef48902c87bbdaa4f5926c472269b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=c0766528baaef48902c87bbdaa4f5926c472269b

Author: Rob Clark <robclark at freedesktop.org>
Date:   Tue Jan  7 10:55:07 2014 -0500

freedreno/a3xx: support for hw binning pass

The binning pass sorts vertices into which bins/tiles they apply to.
The visibility information generated during the binning pass can be
used to speed up the rendering pass by filtering out vertices which
do not apply to the current tile.  See:

 https://github.com/freedreno/freedreno/wiki/Adreno-tiling#optimized-approach

This brings a significant fps boost.  A rough assortment of tests
(supertuxkart, etracer, tremulous, glmark2 'build' test, etc) seems
to yield a ~35-45% fps improvement.

For now, to be conservative, the binning pass is not enabled yet by
default.  To enable it use:

  FD_MESA_DEBUG=binning

So far I haven't found anything that breaks with binning enabled,
but I'd like a bit more testing before I enable it as default.

Signed-off-by: Rob Clark <robclark at freedesktop.org>

---

 configure.ac                                      |    2 +-
 src/gallium/drivers/freedreno/a2xx/fd2_draw.c     |    6 +-
 src/gallium/drivers/freedreno/a2xx/fd2_gmem.c     |    8 +-
 src/gallium/drivers/freedreno/a3xx/fd3_draw.c     |   81 ++++-
 src/gallium/drivers/freedreno/a3xx/fd3_emit.c     |   26 +-
 src/gallium/drivers/freedreno/a3xx/fd3_emit.h     |    3 +-
 src/gallium/drivers/freedreno/a3xx/fd3_gmem.c     |  360 +++++++++++++++++++--
 src/gallium/drivers/freedreno/a3xx/fd3_program.c  |  136 ++++----
 src/gallium/drivers/freedreno/a3xx/fd3_program.h  |    2 +-
 src/gallium/drivers/freedreno/freedreno_context.c |   45 ++-
 src/gallium/drivers/freedreno/freedreno_context.h |   12 +-
 src/gallium/drivers/freedreno/freedreno_draw.c    |    9 +-
 src/gallium/drivers/freedreno/freedreno_draw.h    |   23 +-
 src/gallium/drivers/freedreno/freedreno_gmem.c    |  100 ++++--
 src/gallium/drivers/freedreno/freedreno_screen.c  |    9 +
 src/gallium/drivers/freedreno/freedreno_util.h    |   44 ++-
 16 files changed, 707 insertions(+), 159 deletions(-)

Diff:   http://cgit.freedesktop.org/mesa/mesa/diff/?id=c0766528baaef48902c87bbdaa4f5926c472269b



More information about the mesa-commit mailing list