[Mesa-dev] [RFC][PATCH 00/11] gallium: Basic compute infrastructure.

Francisco Jerez currojerez at riseup.net
Thu Mar 22 17:40:29 PDT 2012


This patch series is part of the ongoing work to put together a
compute stack on top of Gallium3D.  What we have been doing until now
to that end could be divided in 6 building blocks:

1/ Gallium API and TGSI changes (this patch series).
2/ Other fixes and additions to the gallium helper libraries that the
   state tracker needs to function.
3/ OpenCL state tracker.
4/ Implementation of this API for the r600g driver, and work on AMD's
   LLVM back-end.
5/ Implementation of this API for the nv50 driver, and related
   compiler changes based on Christoph's nv50/nvc0 codegen code.
6/ LLVM back-end that will be used along with clang to translate
   compute programs from the OpenCL language into TGSI.

Block 2 will be sent for review as a separate patch series soon.  I'm
not sending block 3 in patch form because it's probably too bulky for
this mailing list, and it's quite self-contained anyway, so, I've
pushed it together with the other changes it depends on to the new
'gallium-compute' branch.

Blocks 4-6 are still rather immature, but, for the curious: The
radeon-specific bits can be found in the 'clover-r600-master' branch
of Tom's mesa tree [1], and some of the work done for nouveau can be
found in the 'nv50-compute' branch of my tree [2].

About this patch series: patches 1 and 11 are API changes that give
compute powers to pipe_context and pipe_screen, patches 3-10 are the
extensions to the TGSI language that will be used by the state tracker
to represent compute programs, patch 2 is a refactoring required by
patch 10.

Comments, questions and r-b's are much appreciated.

[1] http://cgit.freedesktop.org/~tstellar/mesa/
[2] https://github.com/curro/mesa

Francisco Jerez (11):
      gallium: Basic compute interface.
      gallium/tgsi: Move interpolation info from tgsi_declaration to a separate token.
      gallium/tgsi: Introduce the compute processor.
      gallium/tgsi: Define the TGSI_BUFFER texture target.
      gallium/tgsi: Add support for raw resources.
      gallium/tgsi: Add resource write-back support.
      gallium/tgsi: Define system values used to query the compute grid parameters.
      gallium/tgsi: Add support for barriers.
      gallium/tgsi: Add support for atomic opcodes.
      gallium/tgsi: Introduce the "LOCAL" register declaration modifier.
      gallium/compute: Drop TGSI dependency.

 src/gallium/auxiliary/draw/draw_pipe_aaline.c      |    3 +-
 src/gallium/auxiliary/draw/draw_pipe_aapoint.c     |    3 +-
 src/gallium/auxiliary/draw/draw_pipe_pstipple.c    |    3 +-
 src/gallium/auxiliary/tgsi/tgsi_build.c            |   73 ++++-
 src/gallium/auxiliary/tgsi/tgsi_dump.c             |   81 +++---
 src/gallium/auxiliary/tgsi/tgsi_exec.c             |    2 +-
 src/gallium/auxiliary/tgsi/tgsi_info.c             |   16 ++
 src/gallium/auxiliary/tgsi/tgsi_parse.c            |    4 +
 src/gallium/auxiliary/tgsi/tgsi_parse.h            |    1 +
 src/gallium/auxiliary/tgsi/tgsi_ppc.c              |    2 +-
 src/gallium/auxiliary/tgsi/tgsi_scan.c             |    9 +-
 src/gallium/auxiliary/tgsi/tgsi_strings.c          |   13 +-
 src/gallium/auxiliary/tgsi/tgsi_strings.h          |    2 +-
 src/gallium/auxiliary/tgsi/tgsi_text.c             |  190 ++++++++-----
 src/gallium/auxiliary/tgsi/tgsi_ureg.c             |   21 +-
 src/gallium/auxiliary/util/u_blitter.c             |    2 +-
 src/gallium/auxiliary/util/u_pstipple.c            |    3 +-
 src/gallium/auxiliary/util/u_sampler.c             |    1 +
 src/gallium/docs/source/context.rst                |   39 +++
 src/gallium/docs/source/screen.rst                 |   35 ++-
 src/gallium/docs/source/tgsi.rst                   |  298 ++++++++++++++++++--
 .../drivers/nv50/codegen/nv50_ir_from_tgsi.cpp     |    8 +-
 src/gallium/drivers/nv50/nv50_program.c            |    6 +-
 src/gallium/drivers/nv50/nv50_tgsi_to_nc.c         |    1 -
 src/gallium/drivers/r300/r300_vs_draw.c            |    3 +-
 src/gallium/drivers/r600/r600_shader.c             |    6 +-
 src/gallium/include/pipe/p_context.h               |   66 +++++
 src/gallium/include/pipe/p_defines.h               |   23 +-
 src/gallium/include/pipe/p_screen.h                |   12 +
 src/gallium/include/pipe/p_shader_tokens.h         |   63 ++++-
 src/gallium/include/pipe/p_state.h                 |    8 +
 31 files changed, 809 insertions(+), 188 deletions(-)


More information about the mesa-dev mailing list