aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/libraries/evas/src/lib/engines/common/evas_op_copy/op_copy_pixel_color_.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--libraries/evas/src/lib/engines/common/evas_op_copy/op_copy_pixel_color_.c236
1 files changed, 236 insertions, 0 deletions
diff --git a/libraries/evas/src/lib/engines/common/evas_op_copy/op_copy_pixel_color_.c b/libraries/evas/src/lib/engines/common/evas_op_copy/op_copy_pixel_color_.c
new file mode 100644
index 0000000..12b616d
--- /dev/null
+++ b/libraries/evas/src/lib/engines/common/evas_op_copy/op_copy_pixel_color_.c
@@ -0,0 +1,236 @@
1/* copy pixel x color --> dst */
2
3#ifdef BUILD_C
4static void
5_op_copy_p_c_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
6 DATA32 *e;
7 UNROLL8_PLD_WHILE(d, l, e,
8 {
9 *d = MUL4_SYM(c, *s);
10 d++;
11 s++;
12 });
13}
14
15static void
16_op_copy_p_caa_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
17 DATA32 *e;
18 c = 1 + (c >> 24);
19 UNROLL8_PLD_WHILE(d, l, e,
20 {
21 *d = MUL_256(c, *s);
22 d++;
23 s++;
24 });
25}
26
27
28#define _op_copy_pas_c_dp _op_copy_p_c_dp
29#define _op_copy_pan_c_dp _op_copy_p_c_dp
30#define _op_copy_p_can_dp _op_copy_p_c_dp
31#define _op_copy_pas_can_dp _op_copy_p_can_dp
32#define _op_copy_pan_can_dp _op_copy_p_c_dp
33#define _op_copy_pas_caa_dp _op_copy_p_caa_dp
34#define _op_copy_pan_caa_dp _op_copy_p_caa_dp
35
36#define _op_copy_p_c_dpan _op_copy_p_c_dp
37#define _op_copy_pas_c_dpan _op_copy_pas_c_dp
38#define _op_copy_pan_c_dpan _op_copy_pan_c_dp
39#define _op_copy_p_can_dpan _op_copy_p_can_dp
40#define _op_copy_pas_can_dpan _op_copy_pas_can_dp
41#define _op_copy_pan_can_dpan _op_copy_pan_can_dp
42#define _op_copy_p_caa_dpan _op_copy_p_caa_dp
43#define _op_copy_pas_caa_dpan _op_copy_pas_caa_dp
44#define _op_copy_pan_caa_dpan _op_copy_pan_caa_dp
45
46static void
47init_copy_pixel_color_span_funcs_c(void)
48{
49 op_copy_span_funcs[SP][SM_N][SC][DP][CPU_C] = _op_copy_p_c_dp;
50 op_copy_span_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_copy_pas_c_dp;
51 op_copy_span_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_copy_pan_c_dp;
52 op_copy_span_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_copy_p_can_dp;
53 op_copy_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_copy_pas_can_dp;
54 op_copy_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_copy_pan_can_dp;
55 op_copy_span_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_copy_p_caa_dp;
56 op_copy_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_copy_pas_caa_dp;
57 op_copy_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_copy_pan_caa_dp;
58
59 op_copy_span_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_copy_p_c_dpan;
60 op_copy_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_copy_pas_c_dpan;
61 op_copy_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_copy_pan_c_dpan;
62 op_copy_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_p_can_dpan;
63 op_copy_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_pas_can_dpan;
64 op_copy_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_pan_can_dpan;
65 op_copy_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_p_caa_dpan;
66 op_copy_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_pas_caa_dpan;
67 op_copy_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_pan_caa_dpan;
68}
69#endif
70
71#ifdef BUILD_C
72static void
73_op_copy_pt_p_c_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) {
74 *d = MUL4_SYM(c, s);
75}
76
77static void
78_op_copy_pt_p_caa_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) {
79 *d = MUL_SYM(c >> 24, s);
80}
81
82
83#define _op_copy_pt_p_can_dp _op_copy_pt_p_c_dp
84#define _op_copy_pt_pan_c_dp _op_copy_pt_p_c_dp
85#define _op_copy_pt_pan_can_dp _op_copy_pt_p_c_dp
86#define _op_copy_pt_pan_caa_dp _op_copy_pt_p_caa_dp
87#define _op_copy_pt_pas_c_dp _op_copy_pt_p_c_dp
88#define _op_copy_pt_pas_can_dp _op_copy_pt_p_can_dp
89#define _op_copy_pt_pas_caa_dp _op_copy_pt_p_caa_dp
90
91#define _op_copy_pt_p_c_dpan _op_copy_pt_p_c_dp
92#define _op_copy_pt_pas_c_dpan _op_copy_pt_pas_c_dp
93#define _op_copy_pt_pan_c_dpan _op_copy_pt_pan_c_dp
94#define _op_copy_pt_p_can_dpan _op_copy_pt_p_can_dp
95#define _op_copy_pt_pas_can_dpan _op_copy_pt_pas_can_dp
96#define _op_copy_pt_pan_can_dpan _op_copy_pt_pan_can_dp
97#define _op_copy_pt_p_caa_dpan _op_copy_pt_p_caa_dp
98#define _op_copy_pt_pas_caa_dpan _op_copy_pt_pas_caa_dp
99#define _op_copy_pt_pan_caa_dpan _op_copy_pt_pan_caa_dp
100
101static void
102init_copy_pixel_color_pt_funcs_c(void)
103{
104 op_copy_pt_funcs[SP][SM_N][SC][DP][CPU_C] = _op_copy_pt_p_c_dp;
105 op_copy_pt_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_copy_pt_pas_c_dp;
106 op_copy_pt_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_copy_pt_pan_c_dp;
107 op_copy_pt_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_copy_pt_p_can_dp;
108 op_copy_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_copy_pt_pas_can_dp;
109 op_copy_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_copy_pt_pan_can_dp;
110 op_copy_pt_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_copy_pt_p_caa_dp;
111 op_copy_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_copy_pt_pas_caa_dp;
112 op_copy_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_copy_pt_pan_caa_dp;
113
114 op_copy_pt_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_copy_pt_p_c_dpan;
115 op_copy_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_copy_pt_pas_c_dpan;
116 op_copy_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_copy_pt_pan_c_dpan;
117 op_copy_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_pt_p_can_dpan;
118 op_copy_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_pt_pas_can_dpan;
119 op_copy_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_pt_pan_can_dpan;
120 op_copy_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_pt_p_caa_dpan;
121 op_copy_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_pt_pas_caa_dpan;
122 op_copy_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_pt_pan_caa_dpan;
123}
124#endif
125
126/*-----*/
127
128/* copy_rel pixel x color --> dst */
129
130#ifdef BUILD_C
131static void
132_op_copy_rel_p_c_dp(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) {
133 DATA32 *e;
134 UNROLL8_PLD_WHILE(d, l, e,
135 {
136 DATA32 cs = MUL4_SYM(c, *s);
137 *d = MUL_SYM(*d >> 24, cs);
138 d++;
139 s++;
140 });
141}
142
143#define _op_copy_rel_pas_c_dp _op_copy_rel_p_c_dp
144#define _op_copy_rel_pan_c_dp _op_copy_rel_p_c_dp
145#define _op_copy_rel_p_can_dp _op_copy_rel_p_c_dp
146#define _op_copy_rel_pas_can_dp _op_copy_rel_pas_c_dp
147#define _op_copy_rel_pan_can_dp _op_copy_rel_p_c_dp
148#define _op_copy_rel_p_caa_dp _op_copy_rel_p_c_dp
149#define _op_copy_rel_pas_caa_dp _op_copy_rel_p_c_dp
150#define _op_copy_rel_pan_caa_dp _op_copy_rel_p_c_dp
151
152#define _op_copy_rel_p_c_dpan _op_copy_p_c_dpan
153#define _op_copy_rel_pas_c_dpan _op_copy_pas_c_dpan
154#define _op_copy_rel_pan_c_dpan _op_copy_pan_c_dpan
155#define _op_copy_rel_p_can_dpan _op_copy_p_can_dpan
156#define _op_copy_rel_pas_can_dpan _op_copy_pas_can_dpan
157#define _op_copy_rel_pan_can_dpan _op_copy_pan_can_dpan
158#define _op_copy_rel_p_caa_dpan _op_copy_p_caa_dpan
159#define _op_copy_rel_pas_caa_dpan _op_copy_pas_caa_dpan
160#define _op_copy_rel_pan_caa_dpan _op_copy_pan_caa_dpan
161
162static void
163init_copy_rel_pixel_color_span_funcs_c(void)
164{
165 op_copy_rel_span_funcs[SP][SM_N][SC][DP][CPU_C] = _op_copy_rel_p_c_dp;
166 op_copy_rel_span_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_copy_rel_pas_c_dp;
167 op_copy_rel_span_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_copy_rel_pan_c_dp;
168 op_copy_rel_span_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_copy_rel_p_can_dp;
169 op_copy_rel_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_copy_rel_pas_can_dp;
170 op_copy_rel_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_copy_rel_pan_can_dp;
171 op_copy_rel_span_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_copy_rel_p_caa_dp;
172 op_copy_rel_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_copy_rel_pas_caa_dp;
173 op_copy_rel_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_copy_rel_pan_caa_dp;
174
175 op_copy_rel_span_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_copy_rel_p_c_dpan;
176 op_copy_rel_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_copy_rel_pas_c_dpan;
177 op_copy_rel_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_copy_rel_pan_c_dpan;
178 op_copy_rel_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_rel_p_can_dpan;
179 op_copy_rel_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_rel_pas_can_dpan;
180 op_copy_rel_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_rel_pan_can_dpan;
181 op_copy_rel_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_rel_p_caa_dpan;
182 op_copy_rel_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_rel_pas_caa_dpan;
183 op_copy_rel_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_rel_pan_caa_dpan;
184}
185#endif
186
187#ifdef BUILD_C
188static void
189_op_copy_rel_pt_p_c_dp(DATA32 s, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) {
190 s = MUL4_SYM(c, s);
191 *d = MUL_SYM(*d >> 24, s);
192}
193
194#define _op_copy_rel_pt_pas_c_dp _op_copy_rel_pt_p_c_dp
195#define _op_copy_rel_pt_pan_c_dp _op_copy_rel_pt_p_c_dp
196#define _op_copy_rel_pt_p_can_dp _op_copy_rel_pt_p_c_dp
197#define _op_copy_rel_pt_pas_can_dp _op_copy_rel_pt_p_can_dp
198#define _op_copy_rel_pt_pan_can_dp _op_copy_rel_pt_p_c_dp
199#define _op_copy_rel_pt_p_caa_dp _op_copy_rel_pt_p_c_dp
200#define _op_copy_rel_pt_pas_caa_dp _op_copy_rel_pt_p_caa_dp
201#define _op_copy_rel_pt_pan_caa_dp _op_copy_rel_pt_p_caa_dp
202
203#define _op_copy_rel_pt_p_c_dpan _op_copy_pt_p_c_dpan
204#define _op_copy_rel_pt_pas_c_dpan _op_copy_pt_pas_c_dpan
205#define _op_copy_rel_pt_pan_c_dpan _op_copy_pt_pan_c_dpan
206#define _op_copy_rel_pt_p_can_dpan _op_copy_pt_p_can_dpan
207#define _op_copy_rel_pt_pas_can_dpan _op_copy_pt_pas_can_dpan
208#define _op_copy_rel_pt_pan_can_dpan _op_copy_pt_pan_can_dpan
209#define _op_copy_rel_pt_p_caa_dpan _op_copy_pt_p_caa_dpan
210#define _op_copy_rel_pt_pas_caa_dpan _op_copy_pt_pas_caa_dpan
211#define _op_copy_rel_pt_pan_caa_dpan _op_copy_pt_pan_caa_dpan
212
213static void
214init_copy_rel_pixel_color_pt_funcs_c(void)
215{
216 op_copy_rel_pt_funcs[SP][SM_N][SC][DP][CPU_C] = _op_copy_rel_pt_p_c_dp;
217 op_copy_rel_pt_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_copy_rel_pt_pas_c_dp;
218 op_copy_rel_pt_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_copy_rel_pt_pan_c_dp;
219 op_copy_rel_pt_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_copy_rel_pt_p_can_dp;
220 op_copy_rel_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_copy_rel_pt_pas_can_dp;
221 op_copy_rel_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_copy_rel_pt_pan_can_dp;
222 op_copy_rel_pt_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_copy_rel_pt_p_caa_dp;
223 op_copy_rel_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_copy_rel_pt_pas_caa_dp;
224 op_copy_rel_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_copy_rel_pt_pan_caa_dp;
225
226 op_copy_rel_pt_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_copy_rel_pt_p_c_dpan;
227 op_copy_rel_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_copy_rel_pt_pas_c_dpan;
228 op_copy_rel_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_copy_rel_pt_pan_c_dpan;
229 op_copy_rel_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_rel_pt_p_can_dpan;
230 op_copy_rel_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_rel_pt_pas_can_dpan;
231 op_copy_rel_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_rel_pt_pan_can_dpan;
232 op_copy_rel_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_rel_pt_p_caa_dpan;
233 op_copy_rel_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_rel_pt_pas_caa_dpan;
234 op_copy_rel_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_rel_pt_pan_caa_dpan;
235}
236#endif