Module: Mesa
Branch: master
Commit: 5f73726013fabaa2b1bda595a2b2192a4db25760
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=5f73726013fabaa2b1bda595a2b2192a4db25760

Author: Jonathan Marek <[email protected]>
Date:   Wed Jul  3 14:04:20 2019 -0400

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 <[email protected]>
Reviewed-by: Christian Gmeiner <[email protected]>

---

 src/gallium/drivers/etnaviv/etnaviv_blend.c | 15 +++++++++------
 1 file 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 =

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to