[Mesa-dev] [PATCH v2 13/16] i965: Disable hardware blending if advanced blending is in use.

Francisco Jerez currojerez at riseup.net
Mon Aug 22 20:59:32 UTC 2016


Kenneth Graunke <kenneth at whitecape.org> writes:

> 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(-)
>
> 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 at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 212 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20160822/36c12f73/attachment-0001.sig>


More information about the mesa-dev mailing list