v3d: Fix SRC_ALPHA_SATURATE blending for RTs without alpha.
authorEric Anholt <eric@anholt.net>
Thu, 6 Sep 2018 20:37:37 +0000 (13:37 -0700)
committerEric Anholt <eric@anholt.net>
Fri, 7 Sep 2018 15:11:05 +0000 (08:11 -0700)
Fixes
dEQP-GLES3.functional.fragment_ops.blend.default_framebuffer.rgb_func_alpha_func.dst.src_alpha_saturate_src_alpha_saturate
and friends with --deqp-egl-config-name=rgb565d0s0

Cc: "18.2" <mesa-stable@lists.freedesktop.org>
src/gallium/drivers/v3d/v3dx_emit.c

index c58ac4b44a2207cc3470b282655de438029cc95c..537dd1ff9ae4305e089c2336f0f449b5c1b44228 100644 (file)
@@ -69,7 +69,9 @@ v3d_factor(enum pipe_blendfactor factor, bool dst_alpha_one)
         case PIPE_BLENDFACTOR_INV_CONST_ALPHA:
                 return V3D_BLEND_FACTOR_INV_CONST_ALPHA;
         case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE:
-                return V3D_BLEND_FACTOR_SRC_ALPHA_SATURATE;
+                return (dst_alpha_one ?
+                        V3D_BLEND_FACTOR_ZERO :
+                        V3D_BLEND_FACTOR_SRC_ALPHA_SATURATE);
         default:
                 unreachable("Bad blend factor");
         }