i915: Include gl_FragCoord.w data, not just xyz.
authorEric Anholt <eric@anholt.net>
Wed, 13 Jul 2011 17:56:37 +0000 (10:56 -0700)
committerEric Anholt <eric@anholt.net>
Mon, 18 Jul 2011 18:26:33 +0000 (11:26 -0700)
Fixes piglit fragcoord_w test.
Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=34323

src/mesa/drivers/dri/i915/i915_fragprog.c

index e9e8078328afebc4b3a91b6bc4cb3debbf0dff1e..ac95d44b57401434db94b53f3abb07d9c68b27d7 100644 (file)
@@ -1346,7 +1346,7 @@ i915ValidateFragmentProgram(struct i915_context *i915)
    intel->coloroffset = 0;
    intel->specoffset = 0;
 
-   if (inputsRead & FRAG_BITS_TEX_ANY) {
+   if (inputsRead & FRAG_BITS_TEX_ANY || p->wpos_tex != -1) {
       EMIT_ATTR(_TNL_ATTRIB_POS, EMIT_4F_VIEWPORT, S4_VFMT_XYZW, 16);
    }
    else {
@@ -1390,10 +1390,10 @@ i915ValidateFragmentProgram(struct i915_context *i915)
           * unused texture coordinate:
           */
          s2 &= ~S2_TEXCOORD_FMT(i, S2_TEXCOORD_FMT0_MASK);
-         s2 |= S2_TEXCOORD_FMT(i, SZ_TO_HW(3));
+         s2 |= S2_TEXCOORD_FMT(i, SZ_TO_HW(4));
 
          intel->wpos_offset = offset;
-         intel->wpos_size = 3 * sizeof(GLuint);
+         intel->wpos_size = 4 * sizeof(GLuint);
 
          EMIT_PAD(intel->wpos_size);
       }