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
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev