radeonsi: fix passing gl_ClipVertex for GS and tess

Also add the fprintf call.

Reviewed-by: Nicolai Hähnle <nicolai.haehnle@amd.com>
This commit is contained in:
Marek Olšák 2018-05-23 00:34:38 -04:00
parent a7d61c0753
commit 2f65c67043
3 changed files with 8 additions and 4 deletions

View file

@ -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;
}

View file

@ -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 {

View file

@ -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;