2 /* blend mask x color -> dst */
6 _op_blend_mas_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
16 *d = c + MUL_256(l, *d);
20 DATA32 mc = MUL_SYM(a, c);
22 *d = mc + MUL_256(a, *d);
31 _op_blend_mas_can_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
44 *d = INTERP_256(l, c, *d);
51 #define _op_blend_mas_cn_dp _op_blend_mas_can_dp
52 #define _op_blend_mas_caa_dp _op_blend_mas_c_dp
54 #define _op_blend_mas_c_dpan _op_blend_mas_c_dp
55 #define _op_blend_mas_cn_dpan _op_blend_mas_cn_dp
56 #define _op_blend_mas_can_dpan _op_blend_mas_can_dp
57 #define _op_blend_mas_caa_dpan _op_blend_mas_caa_dp
60 init_blend_mask_color_span_funcs_c(void)
62 op_blend_span_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_blend_mas_c_dp;
63 op_blend_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_C] = _op_blend_mas_cn_dp;
64 op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_blend_mas_can_dp;
65 op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_blend_mas_caa_dp;
67 op_blend_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_blend_mas_c_dpan;
68 op_blend_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_mas_cn_dpan;
69 op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_blend_mas_can_dpan;
70 op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_blend_mas_caa_dpan;
76 _op_blend_pt_mas_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
79 *d = s + MUL_256(m, *d);
83 _op_blend_pt_mas_can_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
84 *d = INTERP_256(m + 1, c, *d);
87 #define _op_blend_pt_mas_cn_dp _op_blend_pt_mas_can_dp
88 #define _op_blend_pt_mas_caa_dp _op_blend_pt_mas_c_dp
90 #define _op_blend_pt_mas_c_dpan _op_blend_pt_mas_c_dp
91 #define _op_blend_pt_mas_cn_dpan _op_blend_pt_mas_cn_dp
92 #define _op_blend_pt_mas_can_dpan _op_blend_pt_mas_can_dp
93 #define _op_blend_pt_mas_caa_dpan _op_blend_pt_mas_caa_dp
96 init_blend_mask_color_pt_funcs_c(void)
98 op_blend_pt_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_blend_pt_mas_c_dp;
99 op_blend_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_C] = _op_blend_pt_mas_cn_dp;
100 op_blend_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_blend_pt_mas_can_dp;
101 op_blend_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_blend_pt_mas_caa_dp;
103 op_blend_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_blend_pt_mas_c_dpan;
104 op_blend_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_pt_mas_cn_dpan;
105 op_blend_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_blend_pt_mas_can_dpan;
106 op_blend_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_blend_pt_mas_caa_dpan;
112 /* blend_rel mask x color --> dst */
116 _op_blend_rel_mas_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
119 DATA32 mc = MUL_SYM(*m, c);
120 l = 256 - (mc >> 24);
121 *d = MUL_SYM(*d >> 24, mc) + MUL_256(l, *d);
127 #define _op_blend_rel_mas_cn_dp _op_blend_rel_mas_c_dp
128 #define _op_blend_rel_mas_can_dp _op_blend_rel_mas_c_dp
129 #define _op_blend_rel_mas_caa_dp _op_blend_rel_mas_c_dp
131 #define _op_blend_rel_mas_c_dpan _op_blend_mas_c_dpan
132 #define _op_blend_rel_mas_cn_dpan _op_blend_mas_cn_dpan
133 #define _op_blend_rel_mas_can_dpan _op_blend_mas_can_dpan
134 #define _op_blend_rel_mas_caa_dpan _op_blend_mas_caa_dpan
137 init_blend_rel_mask_color_span_funcs_c(void)
139 op_blend_rel_span_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_blend_rel_mas_c_dp;
140 op_blend_rel_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_mas_can_dp;
141 op_blend_rel_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_blend_rel_mas_can_dp;
142 op_blend_rel_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_blend_rel_mas_caa_dp;
144 op_blend_rel_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_blend_rel_mas_c_dpan;
145 op_blend_rel_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_mas_cn_dpan;
146 op_blend_rel_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_blend_rel_mas_can_dpan;
147 op_blend_rel_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_blend_rel_mas_caa_dpan;
153 _op_blend_rel_pt_mas_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
156 *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d);
159 #define _op_blend_rel_pt_mas_cn_dp _op_blend_rel_pt_mas_c_dp
160 #define _op_blend_rel_pt_mas_can_dp _op_blend_rel_pt_mas_c_dp
161 #define _op_blend_rel_pt_mas_caa_dp _op_blend_rel_pt_mas_c_dp
163 #define _op_blend_rel_pt_mas_c_dpan _op_blend_pt_mas_c_dpan
164 #define _op_blend_rel_pt_mas_cn_dpan _op_blend_pt_mas_cn_dpan
165 #define _op_blend_rel_pt_mas_can_dpan _op_blend_pt_mas_can_dpan
166 #define _op_blend_rel_pt_mas_caa_dpan _op_blend_pt_mas_caa_dpan
169 init_blend_rel_mask_color_pt_funcs_c(void)
171 op_blend_rel_pt_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_blend_rel_pt_mas_c_dp;
172 op_blend_rel_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_pt_mas_cn_dp;
173 op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_blend_rel_pt_mas_can_dp;
174 op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_blend_rel_pt_mas_caa_dp;
176 op_blend_rel_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_blend_rel_pt_mas_c_dpan;
177 op_blend_rel_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_pt_mas_cn_dpan;
178 op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_blend_rel_pt_mas_can_dpan;
179 op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_blend_rel_pt_mas_caa_dpan;