[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