From 2f65c67043529f8f7fca8514f88251f935e61c2c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Wed, 23 May 2018 00:34:38 -0400 Subject: [PATCH] radeonsi: fix passing gl_ClipVertex for GS and tess MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Also add the fprintf call. Reviewed-by: Nicolai Hähnle --- src/gallium/drivers/radeonsi/si_shader.c | 5 ++++- src/gallium/drivers/radeonsi/si_shader.h | 2 +- src/gallium/drivers/radeonsi/si_state_shaders.c | 5 +++-- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/gallium/drivers/radeonsi/si_shader.c b/src/gallium/drivers/radeonsi/si_shader.c index 6734a16..d2b9b73 100644 --- a/src/gallium/drivers/radeonsi/si_shader.c +++ b/src/gallium/drivers/radeonsi/si_shader.c @@ -233,9 +233,12 @@ unsigned si_shader_io_get_unique_index(unsigned semantic_name, unsigned index, return SI_MAX_IO_GENERIC + 10 + index; case TGSI_SEMANTIC_TEXCOORD: assert(index < 8); - STATIC_ASSERT(SI_MAX_IO_GENERIC + 12 + 8 <= 64); + STATIC_ASSERT(SI_MAX_IO_GENERIC + 12 + 8 <= 63); return SI_MAX_IO_GENERIC + 12 + index; + case TGSI_SEMANTIC_CLIPVERTEX: + return 63; default: + fprintf(stderr, "invalid semantic name = %u\n", semantic_name); assert(!"invalid semantic name"); return 0; } diff --git a/src/gallium/drivers/radeonsi/si_shader.h b/src/gallium/drivers/radeonsi/si_shader.h index 555ca59..9e8d573 100644 --- a/src/gallium/drivers/radeonsi/si_shader.h +++ b/src/gallium/drivers/radeonsi/si_shader.h @@ -152,7 +152,7 @@ struct si_context; /* Shader IO unique indices are supported for TGSI_SEMANTIC_GENERIC with an * index smaller than this. */ -#define SI_MAX_IO_GENERIC 44 +#define SI_MAX_IO_GENERIC 43 /* SGPR user data indices */ enum { diff --git a/src/gallium/drivers/radeonsi/si_state_shaders.c b/src/gallium/drivers/radeonsi/si_state_shaders.c index 1f44366..707bb41 100644 --- a/src/gallium/drivers/radeonsi/si_state_shaders.c +++ b/src/gallium/drivers/radeonsi/si_state_shaders.c @@ -1226,9 +1226,10 @@ static void si_shader_selector_key_hw_vs(struct si_context *sctx, uint64_t outputs_written = vs->outputs_written_before_ps; uint64_t inputs_read = 0; - /* ignore POSITION, PSIZE */ + /* Ignore outputs that are not passed from VS to PS. */ outputs_written &= ~((1ull << si_shader_io_get_unique_index(TGSI_SEMANTIC_POSITION, 0, true)) | - (1ull << si_shader_io_get_unique_index(TGSI_SEMANTIC_PSIZE, 0, true))); + (1ull << si_shader_io_get_unique_index(TGSI_SEMANTIC_PSIZE, 0, true)) | + (1ull << si_shader_io_get_unique_index(TGSI_SEMANTIC_CLIPVERTEX, 0, true))); if (!ps_disabled) { inputs_read = ps->inputs_read; -- 2.7.4