Kenneth Graunke <kenn...@whitecape.org> writes:

> We'll do blending in the shader in this case, so just disable the
> hardware blending.
>
> Signed-off-by: Kenneth Graunke <kenn...@whitecape.org>

Reviewed-by: Francisco Jerez <curroje...@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(-)
>
> This has been tested on Gen7+...and Gen7 hits the same paths as Gen6.
> I still need to test the Gen4-5 code.
>
> 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 f1a15c0..65988f9 100644
> --- a/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
> +++ b/src/mesa/drivers/dri/i965/brw_wm_surface_state.c
> @@ -924,8 +924,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;
> -- 
> 2.9.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Attachment: signature.asc
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to