From e05930511b7d3dafa36cc8d2dca51767edeff3b9 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Tue, 18 Aug 2020 17:28:38 -0400 Subject: [PATCH] gallium: Add util_blend_factor_uses_dest helper MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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: --- src/gallium/auxiliary/util/u_blend.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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 */ -- 2.30.2