summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/nouveau/nv50/nv50_shader_state.c
diff options
context:
space:
mode:
authorIlia Mirkin <imirkin@alum.mit.edu>2014-01-15 03:49:57 -0500
committerMaarten Lankhorst <maarten.lankhorst@canonical.com>2014-01-27 16:40:42 +0100
commitc4adbd5a579a0b5952674106c1a4e0420209b321 (patch)
treef0dda9177b985e11c4b5d54a63e8a68b62405d0c /src/gallium/drivers/nouveau/nv50/nv50_shader_state.c
parent70a07ac35269c037adb2b724df28357b7f87efb1 (diff)
downloadexternal_mesa3d-c4adbd5a579a0b5952674106c1a4e0420209b321.zip
external_mesa3d-c4adbd5a579a0b5952674106c1a4e0420209b321.tar.gz
external_mesa3d-c4adbd5a579a0b5952674106c1a4e0420209b321.tar.bz2
nv50: enable primitive id generation when it is an FP input without GP
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Diffstat (limited to 'src/gallium/drivers/nouveau/nv50/nv50_shader_state.c')
-rw-r--r--src/gallium/drivers/nouveau/nv50/nv50_shader_state.c13
1 files changed, 4 insertions, 9 deletions
diff --git a/src/gallium/drivers/nouveau/nv50/nv50_shader_state.c b/src/gallium/drivers/nouveau/nv50/nv50_shader_state.c
index b24e3ac..6bd1974 100644
--- a/src/gallium/drivers/nouveau/nv50/nv50_shader_state.c
+++ b/src/gallium/drivers/nouveau/nv50/nv50_shader_state.c
@@ -401,18 +401,13 @@ 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) {
+ primid = m;
+ }
m = nv50_vec4_map(map, m, lin,
&fp->in[i], (n < vp->out_nr) ? &vp->out[n] : &dummy);
}
- /* PrimitiveID either is replaced by the system value, or
- * written by the geometry shader into an output register
- */
- if (fp->gp.primid < 0x80) {
- primid = m;
- map[m++] = vp->gp.primid;
- }
-
if (vp->gp.has_layer) {
// In GL4.x, layer can be an fp input, but not in 3.x. Make sure to add
// it to the output map.
@@ -461,7 +456,7 @@ nv50_fp_linkage_validate(struct nv50_context *nv50)
PUSH_DATAp(push, map, n);
} else {
BEGIN_NV04(push, NV50_3D(VP_GP_BUILTIN_ATTR_EN), 1);
- PUSH_DATA (push, vp->vp.attrs[2]);
+ PUSH_DATA (push, vp->vp.attrs[2] | fp->vp.attrs[2]);
BEGIN_NV04(push, NV50_3D(SEMANTIC_PRIM_ID), 1);
PUSH_DATA (push, primid);