freedreno/a5xx: set fragcoordxy properly
authorRob Clark <robdclark@gmail.com>
Sun, 22 Jan 2017 17:23:27 +0000 (12:23 -0500)
committerRob Clark <robdclark@gmail.com>
Sun, 22 Jan 2017 19:11:43 +0000 (14:11 -0500)
What a3xx docs call IJPERSPCENTERREGID.. the xy coord passed into
bary.f.  We were incorrectly setting both this and gl_FragCoord.xy to
the same register resulting in all sorts of hilarity.

Fixes stk, vdrift, 0ad, probably a bunch others.

Signed-off-by: Rob Clark <robdclark@gmail.com>
Cc: "17.0" <mesa-stable@lists.freedesktop.org>
src/gallium/drivers/freedreno/a5xx/fd5_program.c

index d297131c3fc2496f95946fda84b9e2facac7fd59..1738b2f9a316a1b6a6693e857d0f6f677160d6e8 100644 (file)
@@ -365,7 +365,7 @@ fd5_program_emit(struct fd_ringbuffer *ring, struct fd5_emit *emit)
        face_regid = s[FS].v->frag_face ? regid(0,0) : regid(63,0);
        coord_regid = s[FS].v->frag_coord ? regid(0,0) : regid(63,0);
        zwcoord_regid = s[FS].v->frag_coord ? regid(0,2) : regid(63,0);
-       vcoord_regid = (s[FS].v->total_in > 0) ? regid(0,0) : regid(63,0);
+       vcoord_regid = (s[FS].v->total_in > 0) ? s[FS].v->pos_regid : regid(63,0);
 
        /* we could probably divide this up into things that need to be
         * emitted if frag-prog is dirty vs if vert-prog is dirty..