i965: Add support for math on constants in gen6 brw_wm_glsl.c path.
authorEric Anholt <eric@anholt.net>
Wed, 10 Nov 2010 04:17:25 +0000 (20:17 -0800)
committerEric Anholt <eric@anholt.net>
Wed, 10 Nov 2010 04:20:00 +0000 (20:20 -0800)
Fixes 10 piglit cases that were assertion failing.

src/mesa/drivers/dri/i965/brw_wm_emit.c

index d03756067a7b24ad549fa6f717fd95e3585882f7..96fecc97ee2bf1c03eae446d3b169336db7e3be8 100644 (file)
@@ -896,11 +896,12 @@ void emit_math1(struct brw_wm_compile *c,
                      BRW_MATH_SATURATE_NONE);
    struct brw_reg src;
 
-   if (intel->gen >= 6 && arg0[0].hstride == BRW_HORIZONTAL_STRIDE_0) {
-      /* Gen6 math requires that source and dst horizontal stride be 1.
-       *
+   if (intel->gen >= 6 && (arg0[0].hstride == BRW_HORIZONTAL_STRIDE_0 ||
+                          arg0[0].file != BRW_GENERAL_REGISTER_FILE)) {
+      /* Gen6 math requires that source and dst horizontal stride be 1,
+       * and that the argument be in the GRF.
        */
-      src = *dst;
+      src = dst[dst_chan];
       brw_MOV(p, src, arg0[0]);
    } else {
       src = arg0[0];