Mesa (master): i965: Disable hardware blending if advanced blending is in use.

Kenneth Graunke kwg at kemper.freedesktop.org
Fri Aug 26 03:05:54 UTC 2016


Module: Mesa
Branch: master
Commit: 40241d40d0a481f9f1cd112d2d48dadf1ec6ad0f
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=40241d40d0a481f9f1cd112d2d48dadf1ec6ad0f

Author: Kenneth Graunke <kenneth at whitecape.org>
Date:   Tue Jun 28 08:24:11 2016 -0700

i965: Disable hardware blending if advanced blending is in use.

We'll do blending in the shader in this case, so just disable the
hardware blending.

Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
Reviewed-by: Francisco Jerez <currojerez at riseup.net>

---

 src/mesa/drivers/dri/i965/brw_cc.c               | 2 +-
 src/mesa/drivers/dri/i965/brw_wm_surface_state.c | 4 ++--
 src/mesa/drivers/dri/i965/gen6_cc.c              | 3 ++-
 src/mesa/drivers/dri/i965/gen8_blend_state.c     | 3 ++-
 4 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/mesa/drivers/dri/i965/brw_cc.c b/src/mesa/drivers/dri/i965/brw_cc.c
index 2e8f0f7..5c58b44 100644
--- a/src/mesa/drivers/dri/i965/brw_cc.c
+++ b/src/mesa/drivers/dri/i965/brw_cc.c
@@ -159,7 +159,7 @@ static void upload_cc_unit(struct brw_context *brw)
    if (ctx->Color.ColorLogicOpEnabled && ctx->Color.LogicOp != GL_COPY) {
       cc->cc2.logicop_enable = 1;
       cc->cc5.logicop_func = intel_translate_logic_op(ctx->Color.LogicOp);
-   } else if (ctx->Color.BlendEnabled) {
+   } else if (ctx->Color.BlendEnabled && !ctx->Color._AdvancedBlendMode) {
       GLenum eqRGB = ctx->Color.Blend[0].EquationRGB;
       GLenum eqA = ctx->Color.Blend[0].EquationA;
       GLenum srcRGB = ctx->Color.Blend[0].SrcRGB;
diff --git a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
index e07e8da..023b1ff 100644
--- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
+++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
@@ -926,8 +926,8 @@ gen4_update_renderbuffer_surface(struct brw_context *brw,
 
    if (brw->gen < 6) {
       /* _NEW_COLOR */
-      if (!ctx->Color.ColorLogicOpEnabled &&
-	  (ctx->Color.BlendEnabled & (1 << unit)))
+      if (!ctx->Color.ColorLogicOpEnabled && !ctx->Color._AdvancedBlendMode &&
+          (ctx->Color.BlendEnabled & (1 << unit)))
 	 surf[0] |= BRW_SURFACE_BLEND_ENABLED;
 
       if (!ctx->Color.ColorMask[unit][0])
diff --git a/src/mesa/drivers/dri/i965/gen6_cc.c b/src/mesa/drivers/dri/i965/gen6_cc.c
index 69c8ebd..0c38930 100644
--- a/src/mesa/drivers/dri/i965/gen6_cc.c
+++ b/src/mesa/drivers/dri/i965/gen6_cc.c
@@ -104,7 +104,8 @@ gen6_upload_blend_state(struct brw_context *brw)
 	    blend[b].blend1.logic_op_func =
 	       intel_translate_logic_op(ctx->Color.LogicOp);
 	 }
-      } else if (ctx->Color.BlendEnabled & (1 << b) && !integer) {
+      } else if (ctx->Color.BlendEnabled & (1 << b) && !integer &&
+                 !ctx->Color._AdvancedBlendMode) {
 	 GLenum eqRGB = ctx->Color.Blend[b].EquationRGB;
 	 GLenum eqA = ctx->Color.Blend[b].EquationA;
 	 GLenum srcRGB = ctx->Color.Blend[b].SrcRGB;
diff --git a/src/mesa/drivers/dri/i965/gen8_blend_state.c b/src/mesa/drivers/dri/i965/gen8_blend_state.c
index 99b5e34..4935d82 100644
--- a/src/mesa/drivers/dri/i965/gen8_blend_state.c
+++ b/src/mesa/drivers/dri/i965/gen8_blend_state.c
@@ -107,7 +107,8 @@ gen8_upload_blend_state(struct brw_context *brw)
             GEN8_BLEND_LOGIC_OP_ENABLE |
             SET_FIELD(intel_translate_logic_op(ctx->Color.LogicOp),
                       GEN8_BLEND_LOGIC_OP_FUNCTION);
-      } else if (ctx->Color.BlendEnabled & (1 << i) && !integer) {
+      } else if (ctx->Color.BlendEnabled & (1 << i) && !integer &&
+                 !ctx->Color._AdvancedBlendMode) {
          GLenum eqRGB = ctx->Color.Blend[i].EquationRGB;
          GLenum eqA = ctx->Color.Blend[i].EquationA;
          GLenum srcRGB = ctx->Color.Blend[i].SrcRGB;




More information about the mesa-commit mailing list