[Mesa-dev] [PATCH 0/8] gallium: add shader buffer support
eocallaghan at alterapraxis.com
eocallaghan at alterapraxis.com
Sat Jan 2 23:34:38 PST 2016
In this series patches 2-8 are:
Reviewed-by: Edward O'Callaghan <eocallaghan at alterapraxis.com>
with some commentary on patch 1.
Kind Regards,
On 2016-01-03 15:37, Ilia Mirkin wrote:
> This provides enough support in TGSI to support shader buffers. I do
> away with the defunct TGSI_FILE_RESOURCE (renaming it into
> TGSI_FILE_IMAGE to work with pipe_image_view), and add a brand new
> TGSI_FILE_BUFFER. At the declaration level, this can have an ATOMIC
> qualifier (and later a SHARED qualifier for compute shaders).
>
> I also add memory qualifiers to LOAD/STORE opcodes, which can convey
> the coherent/volatile/restrict flags as specified in the GLSL. I also
> modified all of the formerly resource opcodes to work on both buffers
> and images. For images they will derive the format from the IMAGE
> declaration, while buffers are format-less by definition.
>
> This is still missing a way to implement memory barriers, that will
> come soon, and is not going to affect anything else I do in this
> series.
>
> For the full series I'm working on, you can look at
>
> https://github.com/imirkin/mesa/commits/atomic3
>
> which exposes ARB_shader_atomic_counters and
> ARB_shader_storage_buffer_objects on nvc0+ (but it won't work on
> maxwell -- need to add emission of atomic ops and cache control).
>
> However this is a nice self-contained chunk to start with.
>
> Ilia Mirkin (8):
> tgsi: add ureg support for image decls
> ureg: add buffer support to ureg
> tgsi: provide a way to encode memory qualifiers for SSBO
> tgsi: add a is_store property
> tgsi: update atomic op docs
> gallium: add PIPE_SHADER_CAP_MAX_SHADER_BUFFERS
> gallium: add PIPE_CAP_SHADER_BUFFER_OFFSET_ALIGNMENT
> gallium: add a RESQ opcode to query info about a resource
>
> src/gallium/auxiliary/gallivm/lp_bld_limits.h | 1 +
> src/gallium/auxiliary/tgsi/tgsi_build.c | 112 ++++--
> src/gallium/auxiliary/tgsi/tgsi_dump.c | 25 +-
> src/gallium/auxiliary/tgsi/tgsi_exec.h | 1 +
> src/gallium/auxiliary/tgsi/tgsi_info.c | 446
> ++++++++++-----------
> src/gallium/auxiliary/tgsi/tgsi_info.h | 1 +
> src/gallium/auxiliary/tgsi/tgsi_parse.c | 8 +-
> src/gallium/auxiliary/tgsi/tgsi_parse.h | 3 +-
> src/gallium/auxiliary/tgsi/tgsi_strings.c | 12 +-
> src/gallium/auxiliary/tgsi/tgsi_strings.h | 2 +
> src/gallium/auxiliary/tgsi/tgsi_text.c | 42 +-
> src/gallium/auxiliary/tgsi/tgsi_ureg.c | 182 +++++++++
> src/gallium/auxiliary/tgsi/tgsi_ureg.h | 23 ++
> src/gallium/docs/source/screen.rst | 8 +
> src/gallium/docs/source/tgsi.rst | 105 ++---
> src/gallium/drivers/freedreno/freedreno_screen.c | 3 +
> src/gallium/drivers/i915/i915_screen.c | 1 +
> src/gallium/drivers/ilo/ilo_screen.c | 1 +
> src/gallium/drivers/ilo/shader/toy_tgsi.c | 8 +-
> src/gallium/drivers/llvmpipe/lp_screen.c | 1 +
> .../drivers/nouveau/codegen/nv50_ir_from_tgsi.cpp | 12 +-
> src/gallium/drivers/nouveau/nv30/nv30_screen.c | 3 +
> src/gallium/drivers/nouveau/nv50/nv50_screen.c | 2 +
> src/gallium/drivers/nouveau/nvc0/nvc0_screen.c | 2 +
> src/gallium/drivers/r300/r300_screen.c | 3 +
> src/gallium/drivers/r600/r600_pipe.c | 2 +
> src/gallium/drivers/radeonsi/si_pipe.c | 3 +
> src/gallium/drivers/softpipe/sp_screen.c | 1 +
> src/gallium/drivers/svga/svga_screen.c | 4 +
> src/gallium/drivers/svga/svga_tgsi_vgpu10.c | 2 +
> src/gallium/drivers/vc4/vc4_screen.c | 3 +
> src/gallium/drivers/virgl/virgl_screen.c | 1 +
> src/gallium/include/pipe/p_defines.h | 2 +
> src/gallium/include/pipe/p_shader_tokens.h | 28 +-
> 34 files changed, 729 insertions(+), 324 deletions(-)
More information about the mesa-dev
mailing list