i965/fs: Don't propagate saturation modifiers if there are source modifiers.
authorMatt Turner <mattst88@gmail.com>
Thu, 3 Apr 2014 20:57:44 +0000 (13:57 -0700)
committerMatt Turner <mattst88@gmail.com>
Sat, 5 Apr 2014 16:47:36 +0000 (09:47 -0700)
Which would lead to translating

   mad     vgrf9:F,  vgrf3:F, u0:F, vgrf6:F
   mov.sat vgrf7:F, -vgrf9:F

into

   mad.sat vgrf9:F,  vgrf3:F, u0:F, vgrf6:F
   mov     vgrf7:F, -vgrf9:F

Fixes some lighting effects in Dota2.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=76749
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
src/mesa/drivers/dri/i965/brw_fs_saturate_propagation.cpp

index 4f3dcff500eb66be79ad85fef811d4622b81f81f..35e677401374f94642251c1dc53c0f9a8d397baa 100644 (file)
@@ -42,6 +42,8 @@ opt_saturate_propagation_local(fs_visitor *v, bblock_t *block)
       if (inst->opcode != BRW_OPCODE_MOV ||
           inst->dst.file != GRF ||
           inst->src[0].file != GRF ||
+          inst->src[0].abs ||
+          inst->src[0].negate ||
           !inst->saturate)
          continue;