From c59d32d1ce9eee7bf0dcebfca1e69edbda90c22d Mon Sep 17 00:00:00 2001 From: Dave Airlie Date: Sat, 24 Mar 2012 14:28:03 +0000 Subject: [PATCH] util: add dual blend helper function (v2) This is just a function to tell if a certain blend mode requires dual sources. v2: move to inlines as per Brian's suggestion Signed-off-by: Dave Airlie --- src/gallium/auxiliary/util/u_dual_blend.h | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 src/gallium/auxiliary/util/u_dual_blend.h diff --git a/src/gallium/auxiliary/util/u_dual_blend.h b/src/gallium/auxiliary/util/u_dual_blend.h new file mode 100644 index 0000000..e31d43c --- /dev/null +++ b/src/gallium/auxiliary/util/u_dual_blend.h @@ -0,0 +1,26 @@ +#ifndef U_DUAL_BLEND_H +#define U_DUAL_BLEND_H + +#include "pipe/p_state.h" + +static INLINE boolean util_blend_factor_is_dual_src(int factor) +{ + return (factor == PIPE_BLENDFACTOR_SRC1_COLOR) || + (factor == PIPE_BLENDFACTOR_SRC1_ALPHA) || + (factor == PIPE_BLENDFACTOR_INV_SRC1_COLOR) || + (factor == PIPE_BLENDFACTOR_INV_SRC1_ALPHA); +} + +static INLINE boolean util_blend_state_is_dual(const struct pipe_blend_state *blend, + int index) +{ + if (util_blend_factor_is_dual_src(blend->rt[index].rgb_src_factor) || + util_blend_factor_is_dual_src(blend->rt[index].alpha_src_factor) || + util_blend_factor_is_dual_src(blend->rt[index].rgb_dst_factor) || + util_blend_factor_is_dual_src(blend->rt[index].alpha_dst_factor)) + return true; + return false; +} + + +#endif -- 2.7.4