From: Ilia Mirkin Date: Tue, 4 Feb 2014 04:20:32 +0000 (-0500) Subject: nv50: rework primid logic X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c7373b7dc7202b93eecc1072efda7319b1ad0da8;p=mesa.git nv50: rework primid logic Functionally identical but much simpler. Should also better integrate with future layer/viewport changes/fixes. Cc: 10.1 Signed-off-by: Ilia Mirkin Reviewed-by: Christoph Bumiller --- diff --git a/src/gallium/drivers/nouveau/nv50/nv50_program.c b/src/gallium/drivers/nouveau/nv50/nv50_program.c index 636ef873be4..f14d3ef7fa0 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_program.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_program.c @@ -170,10 +170,8 @@ nv50_fragprog_assign_slots(struct nv50_ir_prog_info *info) if (info->in[i].sn == TGSI_SEMANTIC_COLOR) prog->vp.bfc[info->in[i].si] = j; - else if (info->in[i].sn == TGSI_SEMANTIC_PRIMID) { + else if (info->in[i].sn == TGSI_SEMANTIC_PRIMID) prog->vp.attrs[2] |= NV50_3D_VP_GP_BUILTIN_ATTR_EN_PRIMITIVE_ID; - prog->gp.primid = j; - } prog->in[j].id = i; prog->in[j].mask = info->in[i].mask; @@ -345,7 +343,6 @@ nv50_program_translate(struct nv50_program *prog, uint16_t chipset) prog->vp.clpd[0] = map_undef; prog->vp.clpd[1] = map_undef; prog->vp.psiz = map_undef; - prog->gp.primid = 0x80; prog->gp.has_layer = 0; info->driverPriv = prog; diff --git a/src/gallium/drivers/nouveau/nv50/nv50_program.h b/src/gallium/drivers/nouveau/nv50/nv50_program.h index 5b092bde815..75de007e4d2 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_program.h +++ b/src/gallium/drivers/nouveau/nv50/nv50_program.h @@ -88,7 +88,6 @@ struct nv50_program { struct { uint32_t vert_count; - ubyte primid; /* primitive id output register */ uint8_t prim_type; /* point, line strip or tri strip */ bool has_layer; ubyte layerid; /* hw value of layer output */ diff --git a/src/gallium/drivers/nouveau/nv50/nv50_shader_state.c b/src/gallium/drivers/nouveau/nv50/nv50_shader_state.c index 9a435028704..f8b1c1b203c 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_shader_state.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_shader_state.c @@ -401,8 +401,10 @@ nv50_fp_linkage_validate(struct nv50_context *nv50) if (vp->out[n].sn == fp->in[i].sn && vp->out[n].si == fp->in[i].si) break; - if (i == fp->gp.primid) { + switch (fp->in[i].sn) { + case TGSI_SEMANTIC_PRIMID: primid = m; + break; } m = nv50_vec4_map(map, m, lin, &fp->in[i], (n < vp->out_nr) ? &vp->out[n] : &dummy);