[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