[Mesa-dev] [PATCH 0/3] freedreno: adreno a3xx support

Rob Clark robdclark at gmail.com
Wed Jun 5 12:16:18 PDT 2013


From: Rob Clark <robclark at freedesktop.org>

Currently, es2gears, ioquake, xonotic, compiz, gnome-shell, all
work.  The shader compiler is quite sub-optimal, but despite that
most things seem to be ~2-3x faster compared (and at higher
resolution) with the a320 on my nexus4 compared to a220 on my HP
touchpad.

Since the patches will probably bounce due to size, you can find
them on my github tree:

  https://github.com/freedreno/mesa/commits/master
  git://github.com/freedreno/mesa.git master

The first patch is mostly just shuffling things around.  The second
patch is what actually adds a3xx support.  The third adds support for
a rendering mode that bypasses the GMEM/tile buffer which greatly
speeds up XA and dma/blit sort of operations.

Rob Clark (3):
  freedreno: prepare for a3xx
  freedreno: add a3xx support
  freedreno: gmem bypass

 configure.ac                                       |    2 +
 src/gallium/drivers/freedreno/Makefile.am          |   21 +-
 src/gallium/drivers/freedreno/a2xx.xml.h           | 1473 ----------------
 src/gallium/drivers/freedreno/a2xx/Makefile.am     |   27 +
 src/gallium/drivers/freedreno/a2xx/a2xx.xml.h      | 1465 ++++++++++++++++
 src/gallium/drivers/freedreno/a2xx/disasm-a2xx.c   |  632 +++++++
 src/gallium/drivers/freedreno/a2xx/fd2_blend.c     |   86 +
 src/gallium/drivers/freedreno/a2xx/fd2_blend.h     |   51 +
 src/gallium/drivers/freedreno/a2xx/fd2_compiler.c  | 1191 +++++++++++++
 src/gallium/drivers/freedreno/a2xx/fd2_compiler.h  |   38 +
 src/gallium/drivers/freedreno/a2xx/fd2_context.c   |  101 ++
 src/gallium/drivers/freedreno/a2xx/fd2_context.h   |   52 +
 src/gallium/drivers/freedreno/a2xx/fd2_draw.c      |  294 ++++
 src/gallium/drivers/freedreno/a2xx/fd2_draw.h      |   38 +
 src/gallium/drivers/freedreno/a2xx/fd2_emit.c      |  443 +++++
 src/gallium/drivers/freedreno/a2xx/fd2_emit.h      |   48 +
 src/gallium/drivers/freedreno/a2xx/fd2_gmem.c      |  408 +++++
 src/gallium/drivers/freedreno/a2xx/fd2_gmem.h      |   36 +
 src/gallium/drivers/freedreno/a2xx/fd2_program.c   |  506 ++++++
 src/gallium/drivers/freedreno/a2xx/fd2_program.h   |   82 +
 .../drivers/freedreno/a2xx/fd2_rasterizer.c        |  113 ++
 .../drivers/freedreno/a2xx/fd2_rasterizer.h        |   55 +
 src/gallium/drivers/freedreno/a2xx/fd2_screen.c    |  109 ++
 src/gallium/drivers/freedreno/a2xx/fd2_screen.h    |   36 +
 src/gallium/drivers/freedreno/a2xx/fd2_texture.c   |  158 ++
 src/gallium/drivers/freedreno/a2xx/fd2_texture.h   |   69 +
 src/gallium/drivers/freedreno/a2xx/fd2_util.c      |  322 ++++
 src/gallium/drivers/freedreno/a2xx/fd2_util.h      |   47 +
 src/gallium/drivers/freedreno/a2xx/fd2_zsa.c       |   96 +
 src/gallium/drivers/freedreno/a2xx/fd2_zsa.h       |   56 +
 src/gallium/drivers/freedreno/a2xx/instr-a2xx.h    |  389 +++++
 src/gallium/drivers/freedreno/a2xx/ir-a2xx.c       |  635 +++++++
 src/gallium/drivers/freedreno/a2xx/ir-a2xx.h       |  180 ++
 src/gallium/drivers/freedreno/a3xx/Makefile.am     |   27 +
 src/gallium/drivers/freedreno/a3xx/a3xx.xml.h      | 1838 ++++++++++++++++++++
 src/gallium/drivers/freedreno/a3xx/disasm-a3xx.c   |  946 ++++++++++
 src/gallium/drivers/freedreno/a3xx/fd3_blend.c     |   87 +
 src/gallium/drivers/freedreno/a3xx/fd3_blend.h     |   52 +
 src/gallium/drivers/freedreno/a3xx/fd3_compiler.c  | 1240 +++++++++++++
 src/gallium/drivers/freedreno/a3xx/fd3_compiler.h  |   38 +
 src/gallium/drivers/freedreno/a3xx/fd3_context.c   |  118 ++
 src/gallium/drivers/freedreno/a3xx/fd3_context.h   |   68 +
 src/gallium/drivers/freedreno/a3xx/fd3_draw.c      |  236 +++
 src/gallium/drivers/freedreno/a3xx/fd3_draw.h      |   38 +
 src/gallium/drivers/freedreno/a3xx/fd3_emit.c      |  581 +++++++
 src/gallium/drivers/freedreno/a3xx/fd3_emit.h      |   89 +
 src/gallium/drivers/freedreno/a3xx/fd3_gmem.c      |  539 ++++++
 src/gallium/drivers/freedreno/a3xx/fd3_gmem.h      |   36 +
 src/gallium/drivers/freedreno/a3xx/fd3_program.c   |  642 +++++++
 src/gallium/drivers/freedreno/a3xx/fd3_program.h   |  116 ++
 .../drivers/freedreno/a3xx/fd3_rasterizer.c        |   92 +
 .../drivers/freedreno/a3xx/fd3_rasterizer.h        |   56 +
 src/gallium/drivers/freedreno/a3xx/fd3_screen.c    |  105 ++
 src/gallium/drivers/freedreno/a3xx/fd3_screen.h    |   36 +
 src/gallium/drivers/freedreno/a3xx/fd3_texture.c   |  140 ++
 src/gallium/drivers/freedreno/a3xx/fd3_texture.h   |   68 +
 src/gallium/drivers/freedreno/a3xx/fd3_util.c      |  348 ++++
 src/gallium/drivers/freedreno/a3xx/fd3_util.h      |   56 +
 src/gallium/drivers/freedreno/a3xx/fd3_zsa.c       |   98 ++
 src/gallium/drivers/freedreno/a3xx/fd3_zsa.h       |   56 +
 src/gallium/drivers/freedreno/a3xx/instr-a3xx.h    |  532 ++++++
 src/gallium/drivers/freedreno/a3xx/ir-a3xx.c       |  527 ++++++
 src/gallium/drivers/freedreno/a3xx/ir-a3xx.h       |  190 ++
 src/gallium/drivers/freedreno/adreno_common.xml.h  |   11 +-
 src/gallium/drivers/freedreno/adreno_pm4.xml.h     |   98 +-
 src/gallium/drivers/freedreno/disasm.c             |  632 -------
 src/gallium/drivers/freedreno/disasm.h             |    5 +-
 src/gallium/drivers/freedreno/freedreno_blend.c    |  175 --
 src/gallium/drivers/freedreno/freedreno_blend.h    |   44 -
 src/gallium/drivers/freedreno/freedreno_clear.c    |  251 ---
 src/gallium/drivers/freedreno/freedreno_clear.h    |   37 -
 src/gallium/drivers/freedreno/freedreno_compiler.c | 1195 -------------
 src/gallium/drivers/freedreno/freedreno_compiler.h |   38 -
 src/gallium/drivers/freedreno/freedreno_context.c  |   86 +-
 src/gallium/drivers/freedreno/freedreno_context.h  |   70 +-
 src/gallium/drivers/freedreno/freedreno_draw.c     |  235 +++
 src/gallium/drivers/freedreno/freedreno_draw.h     |   43 +
 src/gallium/drivers/freedreno/freedreno_gmem.c     |  386 +---
 src/gallium/drivers/freedreno/freedreno_program.c  |  504 ------
 src/gallium/drivers/freedreno/freedreno_program.h  |   82 -
 .../drivers/freedreno/freedreno_rasterizer.c       |  151 --
 .../drivers/freedreno/freedreno_rasterizer.h       |   48 -
 src/gallium/drivers/freedreno/freedreno_resource.c |   73 +-
 src/gallium/drivers/freedreno/freedreno_screen.c   |  125 +-
 src/gallium/drivers/freedreno/freedreno_screen.h   |    1 +
 src/gallium/drivers/freedreno/freedreno_state.c    |  470 +----
 src/gallium/drivers/freedreno/freedreno_state.h    |   32 +-
 src/gallium/drivers/freedreno/freedreno_texture.c  |  129 +-
 src/gallium/drivers/freedreno/freedreno_texture.h  |   25 -
 src/gallium/drivers/freedreno/freedreno_util.c     |  389 ++---
 src/gallium/drivers/freedreno/freedreno_util.h     |   31 +-
 src/gallium/drivers/freedreno/freedreno_vbo.c      |  239 ---
 src/gallium/drivers/freedreno/freedreno_vbo.h      |   42 -
 src/gallium/drivers/freedreno/freedreno_zsa.c      |  144 --
 src/gallium/drivers/freedreno/freedreno_zsa.h      |   59 -
 src/gallium/drivers/freedreno/instr-a2xx.h         |  389 -----
 src/gallium/drivers/freedreno/ir-a2xx.c            |  635 -------
 src/gallium/drivers/freedreno/ir-a2xx.h            |  180 --
 98 files changed, 17595 insertions(+), 7713 deletions(-)
 delete mode 100644 src/gallium/drivers/freedreno/a2xx.xml.h
 create mode 100644 src/gallium/drivers/freedreno/a2xx/Makefile.am
 create mode 100644 src/gallium/drivers/freedreno/a2xx/a2xx.xml.h
 create mode 100644 src/gallium/drivers/freedreno/a2xx/disasm-a2xx.c
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_blend.c
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_blend.h
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_compiler.c
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_compiler.h
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_context.c
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_context.h
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_draw.c
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_draw.h
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_emit.c
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_emit.h
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_gmem.c
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_gmem.h
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_program.c
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_program.h
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_rasterizer.c
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_rasterizer.h
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_screen.c
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_screen.h
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_texture.c
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_texture.h
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_util.c
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_util.h
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_zsa.c
 create mode 100644 src/gallium/drivers/freedreno/a2xx/fd2_zsa.h
 create mode 100644 src/gallium/drivers/freedreno/a2xx/instr-a2xx.h
 create mode 100644 src/gallium/drivers/freedreno/a2xx/ir-a2xx.c
 create mode 100644 src/gallium/drivers/freedreno/a2xx/ir-a2xx.h
 create mode 100644 src/gallium/drivers/freedreno/a3xx/Makefile.am
 create mode 100644 src/gallium/drivers/freedreno/a3xx/a3xx.xml.h
 create mode 100644 src/gallium/drivers/freedreno/a3xx/disasm-a3xx.c
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_blend.c
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_blend.h
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_compiler.c
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_compiler.h
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_context.c
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_context.h
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_draw.c
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_draw.h
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_emit.c
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_emit.h
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_gmem.c
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_gmem.h
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_program.c
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_program.h
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_rasterizer.c
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_rasterizer.h
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_screen.c
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_screen.h
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_texture.c
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_texture.h
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_util.c
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_util.h
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_zsa.c
 create mode 100644 src/gallium/drivers/freedreno/a3xx/fd3_zsa.h
 create mode 100644 src/gallium/drivers/freedreno/a3xx/instr-a3xx.h
 create mode 100644 src/gallium/drivers/freedreno/a3xx/ir-a3xx.c
 create mode 100644 src/gallium/drivers/freedreno/a3xx/ir-a3xx.h
 delete mode 100644 src/gallium/drivers/freedreno/disasm.c
 delete mode 100644 src/gallium/drivers/freedreno/freedreno_blend.c
 delete mode 100644 src/gallium/drivers/freedreno/freedreno_blend.h
 delete mode 100644 src/gallium/drivers/freedreno/freedreno_clear.c
 delete mode 100644 src/gallium/drivers/freedreno/freedreno_clear.h
 delete mode 100644 src/gallium/drivers/freedreno/freedreno_compiler.c
 delete mode 100644 src/gallium/drivers/freedreno/freedreno_compiler.h
 create mode 100644 src/gallium/drivers/freedreno/freedreno_draw.c
 create mode 100644 src/gallium/drivers/freedreno/freedreno_draw.h
 delete mode 100644 src/gallium/drivers/freedreno/freedreno_program.c
 delete mode 100644 src/gallium/drivers/freedreno/freedreno_program.h
 delete mode 100644 src/gallium/drivers/freedreno/freedreno_rasterizer.c
 delete mode 100644 src/gallium/drivers/freedreno/freedreno_rasterizer.h
 delete mode 100644 src/gallium/drivers/freedreno/freedreno_vbo.c
 delete mode 100644 src/gallium/drivers/freedreno/freedreno_vbo.h
 delete mode 100644 src/gallium/drivers/freedreno/freedreno_zsa.c
 delete mode 100644 src/gallium/drivers/freedreno/freedreno_zsa.h
 delete mode 100644 src/gallium/drivers/freedreno/instr-a2xx.h
 delete mode 100644 src/gallium/drivers/freedreno/ir-a2xx.c
 delete mode 100644 src/gallium/drivers/freedreno/ir-a2xx.h

-- 
1.8.1.4



More information about the mesa-dev mailing list