[Mesa-dev] [RFC 0/2] freedreno: adding adreno a3xx support

Rob Clark robdclark at gmail.com
Thu May 23 11:48:27 PDT 2013


From: Rob Clark <robclark at freedesktop.org>

Currently, es2gears, ioquake, xonotic, compiz, etc. 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/tree/a3xx-rfc
  git://github.com/freedreno/mesa.git a3xx-rfc

The first patch is mostly just shuffling things around.  The second
patch is what actually adds a3xx support.

Rob Clark (2):
  RFC: freedreno: prepare for a3xx
  RFC: freedreno: add a3xx support

 configure.ac                                       |    2 +
 src/gallium/drivers/freedreno/Makefile.am          |   20 +-
 src/gallium/drivers/freedreno/a2xx.xml.h           | 1473 ----------------
 src/gallium/drivers/freedreno/a2xx/Makefile.am     |   28 +
 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      |  393 +++++
 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     |   28 +
 src/gallium/drivers/freedreno/a3xx/a3xx.xml.h      | 1761 ++++++++++++++++++++
 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  |  998 +++++++++++
 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      |  229 +++
 src/gallium/drivers/freedreno/a3xx/fd3_draw.h      |   38 +
 src/gallium/drivers/freedreno/a3xx/fd3_emit.c      |  582 +++++++
 src/gallium/drivers/freedreno/a3xx/fd3_emit.h      |   62 +
 src/gallium/drivers/freedreno/a3xx/fd3_gmem.c      |  395 +++++
 src/gallium/drivers/freedreno/a3xx/fd3_gmem.h      |   36 +
 src/gallium/drivers/freedreno/a3xx/fd3_program.c   |  637 +++++++
 src/gallium/drivers/freedreno/a3xx/fd3_program.h   |  111 ++
 .../drivers/freedreno/a3xx/fd3_rasterizer.c        |   92 +
 .../drivers/freedreno/a3xx/fd3_rasterizer.h        |   56 +
 src/gallium/drivers/freedreno/a3xx/fd3_screen.c    |  103 ++
 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      |  292 ++++
 src/gallium/drivers/freedreno/a3xx/fd3_util.h      |   54 +
 src/gallium/drivers/freedreno/a3xx/fd3_zsa.c       |  100 ++
 src/gallium/drivers/freedreno/a3xx/fd3_zsa.h       |   56 +
 src/gallium/drivers/freedreno/a3xx/instr-a3xx.h    |  523 ++++++
 src/gallium/drivers/freedreno/a3xx/ir-a3xx.c       |  525 ++++++
 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     |   97 +-
 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  |   81 +-
 src/gallium/drivers/freedreno/freedreno_context.h  |   49 +-
 src/gallium/drivers/freedreno/freedreno_draw.c     |  212 +++
 src/gallium/drivers/freedreno/freedreno_draw.h     |   43 +
 src/gallium/drivers/freedreno/freedreno_gmem.c     |  323 +---
 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 |    7 +-
 src/gallium/drivers/freedreno/freedreno_screen.c   |  125 +-
 src/gallium/drivers/freedreno/freedreno_screen.h   |    1 +
 src/gallium/drivers/freedreno/freedreno_state.c    |  462 +----
 src/gallium/drivers/freedreno/freedreno_state.h    |   24 +-
 src/gallium/drivers/freedreno/freedreno_texture.c  |  129 +-
 src/gallium/drivers/freedreno/freedreno_texture.h  |   25 -
 src/gallium/drivers/freedreno/freedreno_util.c     |  387 ++---
 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, 16853 insertions(+), 7669 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