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(-) _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev