nir: Fix fddy swizzles in nir_lower_wpos_ytransform().
authorKenneth Graunke <kenneth@whitecape.org>
Wed, 18 May 2016 06:16:14 +0000 (23:16 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Fri, 20 May 2016 21:29:04 +0000 (14:29 -0700)
The original value might have been swizzled.  That's taken care of in
the fmul source - we don't want to reswizzle it again.

Fixes validation failures in glsl-derivs-varyings on a branch of mine
which uses this pass in i965.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Rob Clark <robdclark@gmail.com>
src/compiler/nir/nir_lower_wpos_ytransform.c

index 5546788..41f8554 100644 (file)
@@ -252,6 +252,9 @@ lower_fddy(lower_wpos_ytransform_state *state, nir_alu_instr *fddy)
    nir_instr_rewrite_src(&fddy->instr,
                          &fddy->src[0].src,
                          nir_src_for_ssa(pt));
+
+   for (unsigned i = 0; i < 4; i++)
+      fddy->src[0].swizzle[i] = MIN2(i, pt->num_components - 1);
 }
 
 static bool