aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/vc4/vc4_program.c
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2014-10-21 15:46:48 +0100
committerEric Anholt <[email protected]>2014-10-21 15:46:48 +0100
commitef280c95f2623357452f5ca8e65367b7ac30699f (patch)
tree236e908330a08d9100bbf36058d068ea7cad4a80 /src/gallium/drivers/vc4/vc4_program.c
parentcc298023c9b302a7a24ee01fe2da1c93f5b44666 (diff)
vc4: Fix SRC_ALPHA_SATURATE blending.
Fixes glean blendFunc.
Diffstat (limited to 'src/gallium/drivers/vc4/vc4_program.c')
-rw-r--r--src/gallium/drivers/vc4/vc4_program.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/gallium/drivers/vc4/vc4_program.c b/src/gallium/drivers/vc4/vc4_program.c
index 7a2a9756a59..c6d9fb31603 100644
--- a/src/gallium/drivers/vc4/vc4_program.c
+++ b/src/gallium/drivers/vc4/vc4_program.c
@@ -1308,9 +1308,17 @@ vc4_blend_channel(struct vc4_compile *c,
case PIPE_BLENDFACTOR_DST_COLOR:
return qir_FMUL(c, val, dst[channel]);
case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE:
- return qir_FMIN(c, src[3], qir_FSUB(c,
- qir_uniform_f(c, 1.0),
- dst[3]));
+ if (channel != 3) {
+ return qir_FMUL(c,
+ val,
+ qir_FMIN(c,
+ src[3],
+ qir_FSUB(c,
+ qir_uniform_f(c, 1.0),
+ dst[3])));
+ } else {
+ return val;
+ }
case PIPE_BLENDFACTOR_CONST_COLOR:
return qir_FMUL(c, val,
get_temp_for_uniform(c,