intel/i965: Disable SampleAlphaToOne if dual source blending enabled
authorAnuj Phogat <anuj.phogat@gmail.com>
Fri, 21 Sep 2012 22:16:38 +0000 (15:16 -0700)
committerAnuj Phogat <anuj.phogat@gmail.com>
Sat, 29 Sep 2012 07:10:09 +0000 (00:10 -0700)
From SandyBridge PRM, volume 2 Part 1, section 12.2.3, BLEND_STATE:
DWord 1, Bit 30 (AlphaToOne Enable):
"If Dual Source Blending is enabled, this bit must be disabled"

Note: This is a candidate for stable branches.

Signed-off-by: Anuj Phogat <anuj.phogat@gmail.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/gen6_cc.c

index 6aeaaa253b919f46ee88501387b07067404202cb..e9c7f5064df13385f548d24859e7d6139189bb3b 100644 (file)
@@ -174,8 +174,17 @@ gen6_upload_blend_state(struct brw_context *brw)
          /* _NEW_MULTISAMPLE */
          blend[b].blend1.alpha_to_coverage =
             ctx->Multisample._Enabled && ctx->Multisample.SampleAlphaToCoverage;
-         blend[b].blend1.alpha_to_one =
-            ctx->Multisample._Enabled && ctx->Multisample.SampleAlphaToOne;
+
+       /* From SandyBridge PRM, volume 2 Part 1, section 8.2.3, BLEND_STATE:
+        * DWord 1, Bit 30 (AlphaToOne Enable):
+        * "If Dual Source Blending is enabled, this bit must be disabled"
+        */
+        if (ctx->Color.Blend[b]._UsesDualSrc)
+            blend[b].blend1.alpha_to_one = false;
+        else
+           blend[b].blend1.alpha_to_one =
+              ctx->Multisample._Enabled && ctx->Multisample.SampleAlphaToOne;
+
          blend[b].blend1.alpha_to_coverage_dither = (brw->intel.gen >= 7);
       }
       else {