diff options
author | Ilia Mirkin <imirkin@alum.mit.edu> | 2014-02-03 23:35:14 -0500 |
---|---|---|
committer | Ilia Mirkin <imirkin@alum.mit.edu> | 2014-02-06 18:03:24 -0500 |
commit | 364bdd24197e83bc76b0d244271e57ef4334a859 (patch) | |
tree | 49229f485fc5a5471a8edc7e87886b91b2463011 /src/gallium/drivers/nouveau/nv50/nv50_shader_state.c | |
parent | c7373b7dc7202b93eecc1072efda7319b1ad0da8 (diff) | |
download | external_mesa3d-364bdd24197e83bc76b0d244271e57ef4334a859.zip external_mesa3d-364bdd24197e83bc76b0d244271e57ef4334a859.tar.gz external_mesa3d-364bdd24197e83bc76b0d244271e57ef4334a859.tar.bz2 |
nv50: fix layerid to be the fp input number rather than vp output number
In the tests they were the same so it didn't matter, but indications are
that this is the correct behaviour. Also take this opportunity to
(trivially) support using gl_Layer in fp.
Cc: 10.1 <mesa-stable@lists.freedesktop.org>
Signed-off-by: Ilia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: Christoph Bumiller <e0425955@student.tuwien.ac.at>
Diffstat (limited to 'src/gallium/drivers/nouveau/nv50/nv50_shader_state.c')
-rw-r--r-- | src/gallium/drivers/nouveau/nv50/nv50_shader_state.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/gallium/drivers/nouveau/nv50/nv50_shader_state.c b/src/gallium/drivers/nouveau/nv50/nv50_shader_state.c index f8b1c1b..129ed2a 100644 --- a/src/gallium/drivers/nouveau/nv50/nv50_shader_state.c +++ b/src/gallium/drivers/nouveau/nv50/nv50_shader_state.c @@ -346,7 +346,7 @@ nv50_fp_linkage_validate(struct nv50_context *nv50) struct nv50_varying dummy; int i, n, c, m; uint32_t primid = 0; - uint32_t layerid = vp->gp.layerid; + uint32_t layerid = 0; uint32_t psiz = 0x000; uint32_t interp = fp->fp.interp; uint32_t colors = fp->fp.colors; @@ -405,15 +405,17 @@ nv50_fp_linkage_validate(struct nv50_context *nv50) case TGSI_SEMANTIC_PRIMID: primid = m; break; + case TGSI_SEMANTIC_LAYER: + layerid = m; + break; } m = nv50_vec4_map(map, m, lin, &fp->in[i], (n < vp->out_nr) ? &vp->out[n] : &dummy); } - 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. - map[m++] = layerid; + if (vp->gp.has_layer && !layerid) { + layerid = m; + map[m++] = vp->gp.layerid; } if (nv50->rast->pipe.point_size_per_vertex) { |