Commit f33083a2 authored by Rob Clark's avatar Rob Clark

freedreno/ir3: allow for additional VS sysval inputs

There are a total of four possible currently, rather than 2.  So we need
to be prepared for the input array to grow by 16 components.  We could
get away with less if we could pack sysval inputs..  and the way this is
handled currently isn't really the nicest thing.  But it's a tactical
fix for an issue hit in:

GL31-CTS.gtf30.GL3Tests.transform_feedback.transform_feedback_vertex_id
Signed-off-by: default avatarRob Clark <robclark@freedesktop.org>
parent a0d9279e
......@@ -2062,11 +2062,14 @@ setup_input(struct ir3_compile *ctx, nir_variable *in)
instr = create_frag_input(ctx, use_ldlv);
}
compile_assert(ctx, idx < ctx->ir->ninputs);
ctx->ir->inputs[idx] = instr;
}
} else if (ctx->so->type == SHADER_VERTEX) {
for (int i = 0; i < ncomp; i++) {
unsigned idx = (n * 4) + i;
compile_assert(ctx, idx < ctx->ir->ninputs);
ctx->ir->inputs[idx] = create_input(ctx->block, idx);
}
} else {
......@@ -2170,7 +2173,7 @@ emit_instructions(struct ir3_compile *ctx)
/* or vtx shaders, we need to leave room for sysvals:
*/
if (ctx->so->type == SHADER_VERTEX) {
ninputs += 8;
ninputs += 16;
}
ctx->ir = ir3_create(ctx->compiler, ninputs, noutputs);
......@@ -2181,7 +2184,7 @@ emit_instructions(struct ir3_compile *ctx)
list_addtail(&ctx->block->node, &ctx->ir->block_list);
if (ctx->so->type == SHADER_VERTEX) {
ctx->ir->ninputs -= 8;
ctx->ir->ninputs -= 16;
}
/* for fragment shader, we have a single input register (usually
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment