diff options
Diffstat (limited to '')
-rw-r--r-- | libraries/evas/src/lib/engines/common/evas_op_copy/op_copy_pixel_color_.c | 236 |
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 | ||
4 | static 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 | |||
15 | static 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 | |||
46 | static void | ||
47 | init_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 | ||
72 | static 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 | |||
77 | static 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 | |||
101 | static void | ||
102 | init_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 | ||
131 | static 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 | |||
162 | static void | ||
163 | init_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 | ||
188 | static 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 | |||
213 | static void | ||
214 | init_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 | ||