radeonsi: add GS multiple streams support (v2)

Graphics / Mesa 3D Graphics Library / Mesa - Dave Airlie [redhat.com] - 30 July 2015 03:00 UTC

This is the final piece for ARB_gpu_shader5,

The code is based on the r600 code from Glenn Kennard, and myself.

While developing this, I'm not 100% sure of all the calculations made in the GS registers, this is why the max_stream is worked out there and used to limit the changes in registers. Otherwise my initial attempts either regressed GS texelFetch tests or primitive-id-restart. The current code has no regressions in piglit.

This commit doesn't enable ARB_gpu_shader5, since that just bumps the glsl level to 4.00, so I'll just do a separate patch for 4.10.

v1.1: fix bug introduced in rebase.
v2: Address Marek's review comments, remove my llvm stream code for simpler C, move gsvs_ring and gs_next_vertex to arrays.

3c73c41 radeonsi: add GS multiple streams support (v2)
src/gallium/drivers/radeonsi/si_descriptors.c | 4 +-
src/gallium/drivers/radeonsi/si_pipe.c | 2 +-
src/gallium/drivers/radeonsi/si_shader.c | 74 +++++++++++++++++-----
src/gallium/drivers/radeonsi/si_state.c | 4 --
src/gallium/drivers/radeonsi/si_state.h | 7 ++-
src/gallium/drivers/radeonsi/si_state_shaders.c | 75 ++++++++++++++++++-----
6 files changed, 127 insertions(+), 39 deletions(-)

Upstream: cgit.freedesktop.org


  • Share