From: Alyssa Rosenzweig Date: Tue, 18 Aug 2020 21:28:38 +0000 (-0400) Subject: gallium: Add util_blend_factor_uses_dest helper X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=e05930511b7d3dafa36cc8d2dca51767edeff3b9;p=mesa.git gallium: Add util_blend_factor_uses_dest helper Drivers may be able to optimize cases where blending is enabled but the destination colour is not used. This helps detect that case. Signed-off-by: Alyssa Rosenzweig Reviewed-by: Eric Anholt Reviewed-by: Marek Olšák Part-of: --- diff --git a/src/gallium/auxiliary/util/u_blend.h b/src/gallium/auxiliary/util/u_blend.h index d5f9050bc32..7fca2fab6d1 100644 --- a/src/gallium/auxiliary/util/u_blend.h +++ b/src/gallium/auxiliary/util/u_blend.h @@ -114,4 +114,22 @@ util_blend_factor_is_inverted(enum pipe_blendfactor factor) } } +/* To determine if the destination needs to be read while blending */ + +static inline bool +util_blend_factor_uses_dest(enum pipe_blendfactor factor, bool alpha) +{ + switch (factor) { + case PIPE_BLENDFACTOR_DST_ALPHA: + case PIPE_BLENDFACTOR_DST_COLOR: + case PIPE_BLENDFACTOR_INV_DST_ALPHA: + case PIPE_BLENDFACTOR_INV_DST_COLOR: + return true; + case PIPE_BLENDFACTOR_SRC_ALPHA_SATURATE: + return !alpha; + default: + return false; + } +} + #endif /* U_BLEND_H */