From: Jonathan Marek Date: Wed, 3 Jul 2019 18:04:20 +0000 (-0400) Subject: etnaviv: fix alpha blending cases X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5f73726013fabaa2b1bda595a2b2192a4db25760;p=mesa.git etnaviv: fix alpha blending cases We need to check rgb_func/alpha_func when determining if blend or separate alpha is required. Signed-off-by: Jonathan Marek Reviewed-by: Christian Gmeiner --- diff --git a/src/gallium/drivers/etnaviv/etnaviv_blend.c b/src/gallium/drivers/etnaviv/etnaviv_blend.c index 366be02f0ca..2e5538e3577 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_blend.c +++ b/src/gallium/drivers/etnaviv/etnaviv_blend.c @@ -49,23 +49,26 @@ etna_blend_state_create(struct pipe_context *pctx, /* Enable blending if * - blend enabled in blend state - * - NOT source factor is ONE and destination factor ZERO for both rgb and - * alpha (which would mean that blending is effectively disabled) + * - NOT source factor is ONE and destination factor ZERO and eq is ADD for + * both rgb and alpha (which mean that blending is effectively disabled) */ alpha_enable = rt0->blend_enable && !(rt0->rgb_src_factor == PIPE_BLENDFACTOR_ONE && rt0->rgb_dst_factor == PIPE_BLENDFACTOR_ZERO && + rt0->rgb_func == PIPE_BLEND_ADD && rt0->alpha_src_factor == PIPE_BLENDFACTOR_ONE && - rt0->alpha_dst_factor == PIPE_BLENDFACTOR_ZERO); + rt0->alpha_dst_factor == PIPE_BLENDFACTOR_ZERO && + rt0->alpha_func == PIPE_BLEND_ADD); /* Enable separate alpha if * - Blending enabled (see above) - * - NOT source factor is equal to destination factor for both rgb abd - * alpha (which would effectively that mean alpha is not separate) + * - NOT source/destination factor and eq is same for both rgb and alpha + * (which would effectively that mean alpha is not separate), and */ bool separate_alpha = alpha_enable && !(rt0->rgb_src_factor == rt0->alpha_src_factor && - rt0->rgb_dst_factor == rt0->alpha_dst_factor); + rt0->rgb_dst_factor == rt0->alpha_dst_factor && + rt0->rgb_func == rt0->alpha_func); if (alpha_enable) { co->PE_ALPHA_CONFIG =