diff options
author | Eric Anholt <[email protected]> | 2014-10-21 15:46:48 +0100 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2014-10-21 15:46:48 +0100 |
commit | ef280c95f2623357452f5ca8e65367b7ac30699f (patch) | |
tree | 236e908330a08d9100bbf36058d068ea7cad4a80 /src/gallium/drivers/vc4/vc4_program.c | |
parent | cc298023c9b302a7a24ee01fe2da1c93f5b44666 (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.c | 14 |
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, |