From 3637537a1f84b8b3fa07507ea1f503d219cce496 Mon Sep 17 00:00:00 2001 From: Christoph Bumiller Date: Mon, 17 Oct 2011 23:26:57 +0200 Subject: [PATCH] nvc0: prevent VERTEXID/INSTANCEID from consuming input slots --- src/gallium/drivers/nvc0/nvc0_program.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/gallium/drivers/nvc0/nvc0_program.c b/src/gallium/drivers/nvc0/nvc0_program.c index dc46e99..7893172 100644 --- a/src/gallium/drivers/nvc0/nvc0_program.c +++ b/src/gallium/drivers/nvc0/nvc0_program.c @@ -99,11 +99,23 @@ nvc0_shader_output_address(unsigned sn, unsigned si, unsigned ubase) static int nvc0_vp_assign_input_slots(struct nv50_ir_prog_info *info) { - unsigned i, c; + unsigned i, c, n; - for (i = 0; i < info->numInputs; ++i) + for (n = 0, i = 0; i < info->numInputs; ++i) { + switch (info->in[i].sn) { + case TGSI_SEMANTIC_INSTANCEID: + case NV50_SEMANTIC_VERTEXID: + info->in[i].mask = 0x1; + info->in[i].slot[0] = + nvc0_shader_input_address(info->in[i].sn, 0, 0) / 4; + continue; + default: + break; + } for (c = 0; c < 4; ++c) - info->in[i].slot[c] = (0x80 + i * 0x10 + c * 0x4) / 4; + info->in[i].slot[c] = (0x80 + n * 0x10 + c * 0x4) / 4; + ++n; + } return 0; } -- 2.7.4