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