summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gallium/drivers/etnaviv/etnaviv_blend.c15
1 files changed, 9 insertions, 6 deletions
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 =