1 /**
2 * @file lv_blend_neon.h
3 *
4 */
5
6 #ifndef LV_BLEND_NEON_H
7 #define LV_BLEND_NEON_H
8
9 #ifdef __cplusplus
10 extern "C" {
11 #endif
12
13 /*********************
14 * INCLUDES
15 *********************/
16
17 #include "../../../../lv_conf_internal.h"
18
19 #ifdef LV_DRAW_SW_NEON_CUSTOM_INCLUDE
20 #include LV_DRAW_SW_NEON_CUSTOM_INCLUDE
21 #endif
22
23 /*********************
24 * DEFINES
25 *********************/
26 #if !defined(__ASSEMBLY__)
27
28 #if __GNUC__ >= 4
29 #define LVGL_HIDDEN __attribute__((visibility("hidden")))
30 #else
31 #define LVGL_HIDDEN
32 #endif
33
34 #ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB565
35 #define LV_DRAW_SW_COLOR_BLEND_TO_RGB565(dsc) \
36 lv_color_blend_to_rgb565_neon(dsc)
37 #endif
38
39 #ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB565_WITH_OPA
40 #define LV_DRAW_SW_COLOR_BLEND_TO_RGB565_WITH_OPA(dsc) \
41 lv_color_blend_to_rgb565_with_opa_neon(dsc)
42 #endif
43
44 #ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB565_WITH_MASK
45 #define LV_DRAW_SW_COLOR_BLEND_TO_RGB565_WITH_MASK(dsc) \
46 lv_color_blend_to_rgb565_with_mask_neon(dsc)
47 #endif
48
49 #ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB565_MIX_MASK_OPA
50 #define LV_DRAW_SW_COLOR_BLEND_TO_RGB565_MIX_MASK_OPA(dsc) \
51 lv_color_blend_to_rgb565_mix_mask_opa_neon(dsc)
52 #endif
53
54 #ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565
55 #define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565(dsc) \
56 lv_rgb565_blend_normal_to_rgb565_neon(dsc)
57 #endif
58
59 #ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_WITH_OPA
60 #define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_WITH_OPA(dsc) \
61 lv_rgb565_blend_normal_to_rgb565_with_opa_neon(dsc)
62 #endif
63
64 #ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_WITH_MASK
65 #define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_WITH_MASK(dsc) \
66 lv_rgb565_blend_normal_to_rgb565_with_mask_neon(dsc)
67 #endif
68
69 #ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA
70 #define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA(dsc) \
71 lv_rgb565_blend_normal_to_rgb565_mix_mask_opa_neon(dsc)
72 #endif
73
74 #ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565
75 #define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565(dsc, src_px_size) \
76 lv_rgb888_blend_normal_to_rgb565_neon(dsc, src_px_size)
77 #endif
78
79 #ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_WITH_OPA
80 #define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_WITH_OPA(dsc, src_px_size) \
81 lv_rgb888_blend_normal_to_rgb565_with_opa_neon(dsc, src_px_size)
82 #endif
83
84 #ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_WITH_MASK
85 #define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_WITH_MASK(dsc, src_px_size) \
86 lv_rgb888_blend_normal_to_rgb565_with_mask_neon(dsc, src_px_size)
87 #endif
88
89 #ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA
90 #define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA(dsc, src_px_size) \
91 lv_rgb888_blend_normal_to_rgb565_mix_mask_opa_neon(dsc, src_px_size)
92 #endif
93
94 #ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565
95 #define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565(dsc) \
96 lv_argb8888_blend_normal_to_rgb565_neon(dsc)
97 #endif
98
99 #ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_WITH_OPA
100 #define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_WITH_OPA(dsc) \
101 lv_argb8888_blend_normal_to_rgb565_with_opa_neon(dsc)
102 #endif
103
104 #ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_WITH_MASK
105 #define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_WITH_MASK(dsc) \
106 lv_argb8888_blend_normal_to_rgb565_with_mask_neon(dsc)
107 #endif
108
109 #ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA
110 #define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB565_MIX_MASK_OPA(dsc) \
111 lv_argb8888_blend_normal_to_rgb565_mix_mask_opa_neon(dsc)
112 #endif
113
114 #ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB888
115 #define LV_DRAW_SW_COLOR_BLEND_TO_RGB888(dsc, dst_px_size) \
116 lv_color_blend_to_rgb888_neon(dsc, dst_px_size)
117 #endif
118
119 #ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB888_WITH_OPA
120 #define LV_DRAW_SW_COLOR_BLEND_TO_RGB888_WITH_OPA(dsc, dst_px_size) \
121 lv_color_blend_to_rgb888_with_opa_neon(dsc, dst_px_size)
122 #endif
123
124 #ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB888_WITH_MASK
125 #define LV_DRAW_SW_COLOR_BLEND_TO_RGB888_WITH_MASK(dsc, dst_px_size) \
126 lv_color_blend_to_rgb888_with_mask_neon(dsc, dst_px_size)
127 #endif
128
129 #ifndef LV_DRAW_SW_COLOR_BLEND_TO_RGB888_MIX_MASK_OPA
130 #define LV_DRAW_SW_COLOR_BLEND_TO_RGB888_MIX_MASK_OPA(dsc, dst_px_size) \
131 lv_color_blend_to_rgb888_mix_mask_opa_neon(dsc, dst_px_size)
132 #endif
133
134 #ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888
135 #define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888(dsc, dst_px_size) \
136 lv_rgb565_blend_normal_to_rgb888_neon(dsc, dst_px_size)
137 #endif
138
139 #ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_WITH_OPA
140 #define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_WITH_OPA(dsc, dst_px_size) \
141 lv_rgb565_blend_normal_to_rgb888_with_opa_neon(dsc, dst_px_size)
142 #endif
143
144 #ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_WITH_MASK
145 #define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_WITH_MASK(dsc, dst_px_size) \
146 lv_rgb565_blend_normal_to_rgb888_with_mask_neon(dsc, dst_px_size)
147 #endif
148
149 #ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA
150 #define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA(dsc, dst_px_size) \
151 lv_rgb565_blend_normal_to_rgb888_mix_mask_opa_neon(dsc, dst_px_size)
152 #endif
153
154 #ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888
155 #define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888(dsc, dst_px_size, src_px_size) \
156 lv_rgb888_blend_normal_to_rgb888_neon(dsc, dst_px_size, src_px_size)
157 #endif
158
159 #ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_WITH_OPA
160 #define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_WITH_OPA(dsc, dst_px_size, src_px_size) \
161 lv_rgb888_blend_normal_to_rgb888_with_opa_neon(dsc, dst_px_size, src_px_size)
162 #endif
163
164 #ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_WITH_MASK
165 #define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_WITH_MASK(dsc, dst_px_size, src_px_size) \
166 lv_rgb888_blend_normal_to_rgb888_with_mask_neon(dsc, dst_px_size, src_px_size)
167 #endif
168
169 #ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA
170 #define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA(dsc, dst_px_size, src_px_size) \
171 lv_rgb888_blend_normal_to_rgb888_mix_mask_opa_neon(dsc, dst_px_size, src_px_size)
172 #endif
173
174 #ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888
175 #define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888(dsc, dst_px_size) \
176 lv_argb8888_blend_normal_to_rgb888_neon(dsc, dst_px_size)
177 #endif
178
179 #ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_WITH_OPA
180 #define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_WITH_OPA(dsc, dst_px_size) \
181 lv_argb8888_blend_normal_to_rgb888_with_opa_neon(dsc, dst_px_size)
182 #endif
183
184 #ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_WITH_MASK
185 #define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_WITH_MASK(dsc, dst_px_size) \
186 lv_argb8888_blend_normal_to_rgb888_with_mask_neon(dsc, dst_px_size)
187 #endif
188
189 #ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA
190 #define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_RGB888_MIX_MASK_OPA(dsc, dst_px_size) \
191 lv_argb8888_blend_normal_to_rgb888_mix_mask_opa_neon(dsc, dst_px_size)
192 #endif
193
194 #ifndef LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888
195 #define LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888(dsc) \
196 lv_color_blend_to_argb8888_neon(dsc)
197 #endif
198
199 #ifndef LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_WITH_OPA
200 #define LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_WITH_OPA(dsc) \
201 lv_color_blend_to_argb8888_with_opa_neon(dsc)
202 #endif
203
204 #ifndef LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_WITH_MASK
205 #define LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_WITH_MASK(dsc) \
206 lv_color_blend_to_argb8888_with_mask_neon(dsc)
207 #endif
208
209 #ifndef LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_MIX_MASK_OPA
210 #define LV_DRAW_SW_COLOR_BLEND_TO_ARGB8888_MIX_MASK_OPA(dsc) \
211 lv_color_blend_to_argb8888_mix_mask_opa_neon(dsc)
212 #endif
213
214 #ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888
215 #define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888(dsc) \
216 lv_rgb565_blend_normal_to_argb8888_neon(dsc)
217 #endif
218
219 #ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_WITH_OPA
220 #define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_WITH_OPA(dsc) \
221 lv_rgb565_blend_normal_to_argb8888_with_opa_neon(dsc)
222 #endif
223
224 #ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_WITH_MASK
225 #define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_WITH_MASK(dsc) \
226 lv_rgb565_blend_normal_to_argb8888_with_mask_neon(dsc)
227 #endif
228
229 #ifndef LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA
230 #define LV_DRAW_SW_RGB565_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA(dsc) \
231 lv_rgb565_blend_normal_to_argb8888_mix_mask_opa_neon(dsc)
232 #endif
233
234 #ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888
235 #define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888(dsc, src_px_size) \
236 lv_rgb888_blend_normal_to_argb8888_neon(dsc, src_px_size)
237 #endif
238
239 #ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_WITH_OPA
240 #define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_WITH_OPA(dsc, src_px_size) \
241 lv_rgb888_blend_normal_to_argb8888_with_opa_neon(dsc, src_px_size)
242 #endif
243
244 #ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_WITH_MASK
245 #define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_WITH_MASK(dsc, src_px_size) \
246 lv_rgb888_blend_normal_to_argb8888_with_mask_neon(dsc, src_px_size)
247 #endif
248
249 #ifndef LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA
250 #define LV_DRAW_SW_RGB888_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA(dsc, src_px_size) \
251 lv_rgb888_blend_normal_to_argb8888_mix_mask_opa_neon(dsc, src_px_size)
252 #endif
253
254 #ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888
255 #define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888(dsc) \
256 lv_argb8888_blend_normal_to_argb8888_neon(dsc)
257 #endif
258
259 #ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_WITH_OPA
260 #define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_WITH_OPA(dsc) \
261 lv_argb8888_blend_normal_to_argb8888_with_opa_neon(dsc)
262 #endif
263
264 #ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_WITH_MASK
265 #define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_WITH_MASK(dsc) \
266 lv_argb8888_blend_normal_to_argb8888_with_mask_neon(dsc)
267 #endif
268
269 #ifndef LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA
270 #define LV_DRAW_SW_ARGB8888_BLEND_NORMAL_TO_ARGB8888_MIX_MASK_OPA(dsc) \
271 lv_argb8888_blend_normal_to_argb8888_mix_mask_opa_neon(dsc)
272 #endif
273
274 /**********************
275 * TYPEDEFS
276 **********************/
277
278 typedef struct {
279 uint32_t opa;
280 void * dst_buf;
281 uint32_t dst_w;
282 uint32_t dst_h;
283 uint32_t dst_stride;
284 const void * src_buf;
285 uint32_t src_stride;
286 const lv_opa_t * mask_buf;
287 uint32_t mask_stride;
288 } asm_dsc_t;
289 /**********************
290 * GLOBAL PROTOTYPES
291 **********************/
292
293 extern LVGL_HIDDEN void _lv_color_blend_to_rgb565_neon(asm_dsc_t * dsc);
lv_color_blend_to_rgb565_neon(lv_draw_sw_blend_fill_dsc_t * dsc)294 static inline lv_result_t lv_color_blend_to_rgb565_neon(lv_draw_sw_blend_fill_dsc_t * dsc)
295 {
296 asm_dsc_t asm_dsc = {
297 .dst_buf = dsc->dest_buf,
298 .dst_w = dsc->dest_w,
299 .dst_h = dsc->dest_h,
300 .dst_stride = dsc->dest_stride,
301 .src_buf = &dsc->color
302 };
303
304 _lv_color_blend_to_rgb565_neon(&asm_dsc);
305 return LV_RESULT_OK;
306 }
307
308 extern LVGL_HIDDEN void _lv_color_blend_to_rgb565_with_opa_neon(asm_dsc_t * dsc);
lv_color_blend_to_rgb565_with_opa_neon(lv_draw_sw_blend_fill_dsc_t * dsc)309 static inline lv_result_t lv_color_blend_to_rgb565_with_opa_neon(lv_draw_sw_blend_fill_dsc_t * dsc)
310 {
311 asm_dsc_t asm_dsc = {
312 .opa = dsc->opa,
313 .dst_buf = dsc->dest_buf,
314 .dst_w = dsc->dest_w,
315 .dst_h = dsc->dest_h,
316 .dst_stride = dsc->dest_stride,
317 .src_buf = &dsc->color
318 };
319 _lv_color_blend_to_rgb565_with_opa_neon(&asm_dsc);
320 return LV_RESULT_OK;
321 }
322
323 extern LVGL_HIDDEN void _lv_color_blend_to_rgb565_with_mask_neon(asm_dsc_t * dsc);
lv_color_blend_to_rgb565_with_mask_neon(lv_draw_sw_blend_fill_dsc_t * dsc)324 static inline lv_result_t lv_color_blend_to_rgb565_with_mask_neon(lv_draw_sw_blend_fill_dsc_t * dsc)
325 {
326 asm_dsc_t asm_dsc = {
327 .dst_buf = dsc->dest_buf,
328 .dst_w = dsc->dest_w,
329 .dst_h = dsc->dest_h,
330 .dst_stride = dsc->dest_stride,
331 .src_buf = &dsc->color,
332 .mask_buf = dsc->mask_buf,
333 .mask_stride = dsc->mask_stride
334 };
335 _lv_color_blend_to_rgb565_with_mask_neon(&asm_dsc);
336 return LV_RESULT_OK;
337 }
338
339 extern LVGL_HIDDEN void _lv_color_blend_to_rgb565_mix_mask_opa_neon(asm_dsc_t * dsc);
lv_color_blend_to_rgb565_mix_mask_opa_neon(lv_draw_sw_blend_fill_dsc_t * dsc)340 static inline lv_result_t lv_color_blend_to_rgb565_mix_mask_opa_neon(lv_draw_sw_blend_fill_dsc_t * dsc)
341 {
342 asm_dsc_t asm_dsc = {
343 .opa = dsc->opa,
344 .dst_buf = dsc->dest_buf,
345 .dst_w = dsc->dest_w,
346 .dst_h = dsc->dest_h,
347 .dst_stride = dsc->dest_stride,
348 .src_buf = &dsc->color,
349 .mask_buf = dsc->mask_buf,
350 .mask_stride = dsc->mask_stride
351 };
352 _lv_color_blend_to_rgb565_mix_mask_opa_neon(&asm_dsc);
353 return LV_RESULT_OK;
354 }
355
356 extern LVGL_HIDDEN void _lv_rgb565_blend_normal_to_rgb565_neon(asm_dsc_t * dsc);
lv_rgb565_blend_normal_to_rgb565_neon(lv_draw_sw_blend_image_dsc_t * dsc)357 static inline lv_result_t lv_rgb565_blend_normal_to_rgb565_neon(lv_draw_sw_blend_image_dsc_t * dsc)
358 {
359 asm_dsc_t asm_dsc = {
360 .dst_buf = dsc->dest_buf,
361 .dst_w = dsc->dest_w,
362 .dst_h = dsc->dest_h,
363 .dst_stride = dsc->dest_stride,
364 .src_buf = dsc->src_buf,
365 .src_stride = dsc->src_stride
366 };
367 _lv_rgb565_blend_normal_to_rgb565_neon(&asm_dsc);
368 return LV_RESULT_OK;
369 }
370
371 extern LVGL_HIDDEN void _lv_rgb565_blend_normal_to_rgb565_with_opa_neon(asm_dsc_t * dsc);
lv_rgb565_blend_normal_to_rgb565_with_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc)372 static inline lv_result_t lv_rgb565_blend_normal_to_rgb565_with_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc)
373 {
374 asm_dsc_t asm_dsc = {
375 .opa = dsc->opa,
376 .dst_buf = dsc->dest_buf,
377 .dst_w = dsc->dest_w,
378 .dst_h = dsc->dest_h,
379 .dst_stride = dsc->dest_stride,
380 .src_buf = dsc->src_buf,
381 .src_stride = dsc->src_stride
382 };
383 _lv_rgb565_blend_normal_to_rgb565_with_opa_neon(&asm_dsc);
384 return LV_RESULT_OK;
385 }
386
387 extern LVGL_HIDDEN void _lv_rgb565_blend_normal_to_rgb565_with_mask_neon(asm_dsc_t * dsc);
lv_rgb565_blend_normal_to_rgb565_with_mask_neon(lv_draw_sw_blend_image_dsc_t * dsc)388 static inline lv_result_t lv_rgb565_blend_normal_to_rgb565_with_mask_neon(lv_draw_sw_blend_image_dsc_t * dsc)
389 {
390 asm_dsc_t asm_dsc = {
391 .dst_buf = dsc->dest_buf,
392 .dst_w = dsc->dest_w,
393 .dst_h = dsc->dest_h,
394 .dst_stride = dsc->dest_stride,
395 .src_buf = dsc->src_buf,
396 .src_stride = dsc->src_stride,
397 .mask_buf = dsc->mask_buf,
398 .mask_stride = dsc->mask_stride
399 };
400 _lv_rgb565_blend_normal_to_rgb565_with_mask_neon(&asm_dsc);
401 return LV_RESULT_OK;
402 }
403
404 extern LVGL_HIDDEN void _lv_rgb565_blend_normal_to_rgb565_mix_mask_opa_neon(asm_dsc_t * dsc);
lv_rgb565_blend_normal_to_rgb565_mix_mask_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc)405 static inline lv_result_t lv_rgb565_blend_normal_to_rgb565_mix_mask_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc)
406 {
407 asm_dsc_t asm_dsc = {
408 .opa = dsc->opa,
409 .dst_buf = dsc->dest_buf,
410 .dst_w = dsc->dest_w,
411 .dst_h = dsc->dest_h,
412 .dst_stride = dsc->dest_stride,
413 .src_buf = dsc->src_buf,
414 .src_stride = dsc->src_stride,
415 .mask_buf = dsc->mask_buf,
416 .mask_stride = dsc->mask_stride
417 };
418 _lv_rgb565_blend_normal_to_rgb565_mix_mask_opa_neon(&asm_dsc);
419 return LV_RESULT_OK;
420 }
421
422 extern LVGL_HIDDEN void _lv_rgb888_blend_normal_to_rgb565_neon(asm_dsc_t * dsc);
423 extern LVGL_HIDDEN void _lv_xrgb8888_blend_normal_to_rgb565_neon(asm_dsc_t * dsc);
lv_rgb888_blend_normal_to_rgb565_neon(lv_draw_sw_blend_image_dsc_t * dsc,uint32_t src_px_size)424 static inline lv_result_t lv_rgb888_blend_normal_to_rgb565_neon(lv_draw_sw_blend_image_dsc_t * dsc,
425 uint32_t src_px_size)
426 {
427 asm_dsc_t asm_dsc = {
428 .dst_buf = dsc->dest_buf,
429 .dst_w = dsc->dest_w,
430 .dst_h = dsc->dest_h,
431 .dst_stride = dsc->dest_stride,
432 .src_buf = dsc->src_buf,
433 .src_stride = dsc->src_stride
434 };
435 if(src_px_size == 3) {
436 _lv_rgb888_blend_normal_to_rgb565_neon(&asm_dsc);
437 }
438 else {
439 _lv_xrgb8888_blend_normal_to_rgb565_neon(&asm_dsc);
440 }
441 return LV_RESULT_OK;
442 }
443
444 extern LVGL_HIDDEN void _lv_rgb888_blend_normal_to_rgb565_with_opa_neon(asm_dsc_t * dsc);
445 extern LVGL_HIDDEN void _lv_xrgb8888_blend_normal_to_rgb565_with_opa_neon(asm_dsc_t * dsc);
lv_rgb888_blend_normal_to_rgb565_with_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc,uint32_t src_px_size)446 static inline lv_result_t lv_rgb888_blend_normal_to_rgb565_with_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc,
447 uint32_t src_px_size)
448 {
449 asm_dsc_t asm_dsc = {
450 .opa = dsc->opa,
451 .dst_buf = dsc->dest_buf,
452 .dst_w = dsc->dest_w,
453 .dst_h = dsc->dest_h,
454 .dst_stride = dsc->dest_stride,
455 .src_buf = dsc->src_buf,
456 .src_stride = dsc->src_stride
457 };
458 if(src_px_size == 3) {
459 _lv_rgb888_blend_normal_to_rgb565_with_opa_neon(&asm_dsc);
460 }
461 else {
462 _lv_xrgb8888_blend_normal_to_rgb565_with_opa_neon(&asm_dsc);
463 }
464 return LV_RESULT_OK;
465 }
466
467 extern LVGL_HIDDEN void _lv_rgb888_blend_normal_to_rgb565_with_mask_neon(asm_dsc_t * dsc);
468 extern LVGL_HIDDEN void _lv_xrgb8888_blend_normal_to_rgb565_with_mask_neon(asm_dsc_t * dsc);
lv_rgb888_blend_normal_to_rgb565_with_mask_neon(lv_draw_sw_blend_image_dsc_t * dsc,uint32_t src_px_size)469 static inline lv_result_t lv_rgb888_blend_normal_to_rgb565_with_mask_neon(lv_draw_sw_blend_image_dsc_t * dsc,
470 uint32_t src_px_size)
471 {
472 asm_dsc_t asm_dsc = {
473 .dst_buf = dsc->dest_buf,
474 .dst_w = dsc->dest_w,
475 .dst_h = dsc->dest_h,
476 .dst_stride = dsc->dest_stride,
477 .src_buf = dsc->src_buf,
478 .src_stride = dsc->src_stride,
479 .mask_buf = dsc->mask_buf,
480 .mask_stride = dsc->mask_stride
481 };
482 if(src_px_size == 3) {
483 _lv_rgb888_blend_normal_to_rgb565_with_mask_neon(&asm_dsc);
484 }
485 else {
486 _lv_xrgb8888_blend_normal_to_rgb565_with_mask_neon(&asm_dsc);
487 }
488 return LV_RESULT_OK;
489 }
490
491 extern LVGL_HIDDEN void _lv_rgb888_blend_normal_to_rgb565_mix_mask_opa_neon(asm_dsc_t * dsc);
492 extern LVGL_HIDDEN void _lv_xrgb8888_blend_normal_to_rgb565_mix_mask_opa_neon(asm_dsc_t * dsc);
lv_rgb888_blend_normal_to_rgb565_mix_mask_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc,uint32_t src_px_size)493 static inline lv_result_t lv_rgb888_blend_normal_to_rgb565_mix_mask_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc,
494 uint32_t src_px_size)
495 {
496 asm_dsc_t asm_dsc = {
497 .opa = dsc->opa,
498 .dst_buf = dsc->dest_buf,
499 .dst_w = dsc->dest_w,
500 .dst_h = dsc->dest_h,
501 .dst_stride = dsc->dest_stride,
502 .src_buf = dsc->src_buf,
503 .src_stride = dsc->src_stride,
504 .mask_buf = dsc->mask_buf,
505 .mask_stride = dsc->mask_stride
506 };
507 if(src_px_size == 3) {
508 _lv_rgb888_blend_normal_to_rgb565_mix_mask_opa_neon(&asm_dsc);
509 }
510 else {
511 _lv_xrgb8888_blend_normal_to_rgb565_mix_mask_opa_neon(&asm_dsc);
512 }
513 return LV_RESULT_OK;
514 }
515
516 extern LVGL_HIDDEN void _lv_argb8888_blend_normal_to_rgb565_neon(asm_dsc_t * dsc);
lv_argb8888_blend_normal_to_rgb565_neon(lv_draw_sw_blend_image_dsc_t * dsc)517 static inline lv_result_t lv_argb8888_blend_normal_to_rgb565_neon(lv_draw_sw_blend_image_dsc_t * dsc)
518 {
519 asm_dsc_t asm_dsc = {
520 .dst_buf = dsc->dest_buf,
521 .dst_w = dsc->dest_w,
522 .dst_h = dsc->dest_h,
523 .dst_stride = dsc->dest_stride,
524 .src_buf = dsc->src_buf,
525 .src_stride = dsc->src_stride
526 };
527 _lv_argb8888_blend_normal_to_rgb565_neon(&asm_dsc);
528 return LV_RESULT_OK;
529 }
530
531 extern LVGL_HIDDEN void _lv_argb8888_blend_normal_to_rgb565_with_opa_neon(asm_dsc_t * dsc);
lv_argb8888_blend_normal_to_rgb565_with_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc)532 static inline lv_result_t lv_argb8888_blend_normal_to_rgb565_with_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc)
533 {
534 asm_dsc_t asm_dsc = {
535 .opa = dsc->opa,
536 .dst_buf = dsc->dest_buf,
537 .dst_w = dsc->dest_w,
538 .dst_h = dsc->dest_h,
539 .dst_stride = dsc->dest_stride,
540 .src_buf = dsc->src_buf,
541 .src_stride = dsc->src_stride
542 };
543 _lv_argb8888_blend_normal_to_rgb565_with_opa_neon(&asm_dsc);
544 return LV_RESULT_OK;
545 }
546
547 extern LVGL_HIDDEN void _lv_argb8888_blend_normal_to_rgb565_with_mask_neon(asm_dsc_t * dsc);
lv_argb8888_blend_normal_to_rgb565_with_mask_neon(lv_draw_sw_blend_image_dsc_t * dsc)548 static inline lv_result_t lv_argb8888_blend_normal_to_rgb565_with_mask_neon(lv_draw_sw_blend_image_dsc_t * dsc)
549 {
550 asm_dsc_t asm_dsc = {
551 .dst_buf = dsc->dest_buf,
552 .dst_w = dsc->dest_w,
553 .dst_h = dsc->dest_h,
554 .dst_stride = dsc->dest_stride,
555 .src_buf = dsc->src_buf,
556 .src_stride = dsc->src_stride,
557 .mask_buf = dsc->mask_buf,
558 .mask_stride = dsc->mask_stride
559 };
560 _lv_argb8888_blend_normal_to_rgb565_with_mask_neon(&asm_dsc);
561 return LV_RESULT_OK;
562 }
563
564 extern LVGL_HIDDEN void _lv_argb8888_blend_normal_to_rgb565_mix_mask_opa_neon(asm_dsc_t * dsc);
lv_argb8888_blend_normal_to_rgb565_mix_mask_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc)565 static inline lv_result_t lv_argb8888_blend_normal_to_rgb565_mix_mask_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc)
566 {
567 asm_dsc_t asm_dsc = {
568 .opa = dsc->opa,
569 .dst_buf = dsc->dest_buf,
570 .dst_w = dsc->dest_w,
571 .dst_h = dsc->dest_h,
572 .dst_stride = dsc->dest_stride,
573 .src_buf = dsc->src_buf,
574 .src_stride = dsc->src_stride,
575 .mask_buf = dsc->mask_buf,
576 .mask_stride = dsc->mask_stride
577 };
578 _lv_argb8888_blend_normal_to_rgb565_mix_mask_opa_neon(&asm_dsc);
579 return LV_RESULT_OK;
580 }
581
582 extern LVGL_HIDDEN void _lv_color_blend_to_rgb888_neon(asm_dsc_t * dsc);
583 extern LVGL_HIDDEN void _lv_color_blend_to_xrgb8888_neon(asm_dsc_t * dsc);
lv_color_blend_to_rgb888_neon(lv_draw_sw_blend_fill_dsc_t * dsc,uint32_t dst_px_size)584 static inline lv_result_t lv_color_blend_to_rgb888_neon(lv_draw_sw_blend_fill_dsc_t * dsc, uint32_t dst_px_size)
585 {
586 asm_dsc_t asm_dsc = {
587 .dst_buf = dsc->dest_buf,
588 .dst_w = dsc->dest_w,
589 .dst_h = dsc->dest_h,
590 .dst_stride = dsc->dest_stride,
591 .src_buf = &dsc->color
592 };
593 if(dst_px_size == 3) {
594 _lv_color_blend_to_rgb888_neon(&asm_dsc);
595 }
596 else {
597 _lv_color_blend_to_xrgb8888_neon(&asm_dsc);
598 }
599 return LV_RESULT_OK;
600 }
601
602 extern LVGL_HIDDEN void _lv_color_blend_to_rgb888_with_opa_neon(asm_dsc_t * dsc);
603 extern LVGL_HIDDEN void _lv_color_blend_to_xrgb8888_with_opa_neon(asm_dsc_t * dsc);
lv_color_blend_to_rgb888_with_opa_neon(lv_draw_sw_blend_fill_dsc_t * dsc,uint32_t dst_px_size)604 static inline lv_result_t lv_color_blend_to_rgb888_with_opa_neon(lv_draw_sw_blend_fill_dsc_t * dsc,
605 uint32_t dst_px_size)
606 {
607 asm_dsc_t asm_dsc = {
608 .opa = dsc->opa,
609 .dst_buf = dsc->dest_buf,
610 .dst_w = dsc->dest_w,
611 .dst_h = dsc->dest_h,
612 .dst_stride = dsc->dest_stride,
613 .src_buf = &dsc->color
614 };
615 if(dst_px_size == 3) {
616 _lv_color_blend_to_rgb888_with_opa_neon(&asm_dsc);
617 }
618 else {
619 _lv_color_blend_to_xrgb8888_with_opa_neon(&asm_dsc);
620 }
621 return LV_RESULT_OK;
622 }
623
624 extern LVGL_HIDDEN void _lv_color_blend_to_rgb888_with_mask_neon(asm_dsc_t * dsc);
625 extern LVGL_HIDDEN void _lv_color_blend_to_xrgb8888_with_mask_neon(asm_dsc_t * dsc);
lv_color_blend_to_rgb888_with_mask_neon(lv_draw_sw_blend_fill_dsc_t * dsc,uint32_t dst_px_size)626 static inline lv_result_t lv_color_blend_to_rgb888_with_mask_neon(lv_draw_sw_blend_fill_dsc_t * dsc,
627 uint32_t dst_px_size)
628 {
629 asm_dsc_t asm_dsc = {
630 .dst_buf = dsc->dest_buf,
631 .dst_w = dsc->dest_w,
632 .dst_h = dsc->dest_h,
633 .dst_stride = dsc->dest_stride,
634 .src_buf = &dsc->color,
635 .mask_buf = dsc->mask_buf,
636 .mask_stride = dsc->mask_stride
637 };
638 if(dst_px_size == 3) {
639 _lv_color_blend_to_rgb888_with_mask_neon(&asm_dsc);
640 }
641 else {
642 _lv_color_blend_to_xrgb8888_with_mask_neon(&asm_dsc);
643 }
644 return LV_RESULT_OK;
645 }
646
647 extern LVGL_HIDDEN void _lv_color_blend_to_rgb888_mix_mask_opa_neon(asm_dsc_t * dsc);
648 extern LVGL_HIDDEN void _lv_color_blend_to_xrgb8888_mix_mask_opa_neon(asm_dsc_t * dsc);
lv_color_blend_to_rgb888_mix_mask_opa_neon(lv_draw_sw_blend_fill_dsc_t * dsc,uint32_t dst_px_size)649 static inline lv_result_t lv_color_blend_to_rgb888_mix_mask_opa_neon(lv_draw_sw_blend_fill_dsc_t * dsc,
650 uint32_t dst_px_size)
651 {
652 asm_dsc_t asm_dsc = {
653 .opa = dsc->opa,
654 .dst_buf = dsc->dest_buf,
655 .dst_w = dsc->dest_w,
656 .dst_h = dsc->dest_h,
657 .dst_stride = dsc->dest_stride,
658 .src_buf = &dsc->color,
659 .mask_buf = dsc->mask_buf,
660 .mask_stride = dsc->mask_stride
661 };
662 if(dst_px_size == 3) {
663 _lv_color_blend_to_rgb888_mix_mask_opa_neon(&asm_dsc);
664 }
665 else {
666 _lv_color_blend_to_xrgb8888_mix_mask_opa_neon(&asm_dsc);
667 }
668 return LV_RESULT_OK;
669 }
670
671 extern LVGL_HIDDEN void _lv_rgb565_blend_normal_to_rgb888_neon(asm_dsc_t * dsc);
672 extern LVGL_HIDDEN void _lv_rgb565_blend_normal_to_xrgb8888_neon(asm_dsc_t * dsc);
lv_rgb565_blend_normal_to_rgb888_neon(lv_draw_sw_blend_image_dsc_t * dsc,uint32_t dst_px_size)673 static inline lv_result_t lv_rgb565_blend_normal_to_rgb888_neon(lv_draw_sw_blend_image_dsc_t * dsc,
674 uint32_t dst_px_size)
675 {
676 asm_dsc_t asm_dsc = {
677 .dst_buf = dsc->dest_buf,
678 .dst_w = dsc->dest_w,
679 .dst_h = dsc->dest_h,
680 .dst_stride = dsc->dest_stride,
681 .src_buf = dsc->src_buf,
682 .src_stride = dsc->src_stride
683 };
684 if(dst_px_size == 3) {
685 _lv_rgb565_blend_normal_to_rgb888_neon(&asm_dsc);
686 }
687 else {
688 _lv_rgb565_blend_normal_to_xrgb8888_neon(&asm_dsc);
689 }
690 return LV_RESULT_OK;
691 }
692
693 extern LVGL_HIDDEN void _lv_rgb565_blend_normal_to_rgb888_with_opa_neon(asm_dsc_t * dsc);
694 extern LVGL_HIDDEN void _lv_rgb565_blend_normal_to_xrgb8888_with_opa_neon(asm_dsc_t * dsc);
lv_rgb565_blend_normal_to_rgb888_with_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc,uint32_t dst_px_size)695 static inline lv_result_t lv_rgb565_blend_normal_to_rgb888_with_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc,
696 uint32_t dst_px_size)
697 {
698 asm_dsc_t asm_dsc = {
699 .opa = dsc->opa,
700 .dst_buf = dsc->dest_buf,
701 .dst_w = dsc->dest_w,
702 .dst_h = dsc->dest_h,
703 .dst_stride = dsc->dest_stride,
704 .src_buf = dsc->src_buf,
705 .src_stride = dsc->src_stride
706 };
707 if(dst_px_size == 3) {
708 _lv_rgb565_blend_normal_to_rgb888_with_opa_neon(&asm_dsc);
709 }
710 else {
711 _lv_rgb565_blend_normal_to_xrgb8888_with_opa_neon(&asm_dsc);
712 }
713 return LV_RESULT_OK;
714 }
715
716 extern LVGL_HIDDEN void _lv_rgb565_blend_normal_to_rgb888_with_mask_neon(asm_dsc_t * dsc);
717 extern LVGL_HIDDEN void _lv_rgb565_blend_normal_to_xrgb8888_with_mask_neon(asm_dsc_t * dsc);
lv_rgb565_blend_normal_to_rgb888_with_mask_neon(lv_draw_sw_blend_image_dsc_t * dsc,uint32_t dst_px_size)718 static inline lv_result_t lv_rgb565_blend_normal_to_rgb888_with_mask_neon(lv_draw_sw_blend_image_dsc_t * dsc,
719 uint32_t dst_px_size)
720 {
721 asm_dsc_t asm_dsc = {
722 .dst_buf = dsc->dest_buf,
723 .dst_w = dsc->dest_w,
724 .dst_h = dsc->dest_h,
725 .dst_stride = dsc->dest_stride,
726 .src_buf = dsc->src_buf,
727 .src_stride = dsc->src_stride,
728 .mask_buf = dsc->mask_buf,
729 .mask_stride = dsc->mask_stride
730 };
731 if(dst_px_size == 3) {
732 _lv_rgb565_blend_normal_to_rgb888_with_mask_neon(&asm_dsc);
733 }
734 else {
735 _lv_rgb565_blend_normal_to_xrgb8888_with_mask_neon(&asm_dsc);
736 }
737 return LV_RESULT_OK;
738 }
739
740 extern LVGL_HIDDEN void _lv_rgb565_blend_normal_to_rgb888_mix_mask_opa_neon(asm_dsc_t * dsc);
741 extern LVGL_HIDDEN void _lv_rgb565_blend_normal_to_xrgb8888_mix_mask_opa_neon(asm_dsc_t * dsc);
lv_rgb565_blend_normal_to_rgb888_mix_mask_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc,uint32_t dst_px_size)742 static inline lv_result_t lv_rgb565_blend_normal_to_rgb888_mix_mask_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc,
743 uint32_t dst_px_size)
744 {
745 asm_dsc_t asm_dsc = {
746 .opa = dsc->opa,
747 .dst_buf = dsc->dest_buf,
748 .dst_w = dsc->dest_w,
749 .dst_h = dsc->dest_h,
750 .dst_stride = dsc->dest_stride,
751 .src_buf = dsc->src_buf,
752 .src_stride = dsc->src_stride,
753 .mask_buf = dsc->mask_buf,
754 .mask_stride = dsc->mask_stride
755 };
756 if(dst_px_size == 3) {
757 _lv_rgb565_blend_normal_to_rgb888_mix_mask_opa_neon(&asm_dsc);
758 }
759 else {
760 _lv_rgb565_blend_normal_to_xrgb8888_mix_mask_opa_neon(&asm_dsc);
761 }
762 return LV_RESULT_OK;
763 }
764
765 extern LVGL_HIDDEN void _lv_rgb888_blend_normal_to_rgb888_neon(asm_dsc_t * dsc);
766 extern LVGL_HIDDEN void _lv_rgb888_blend_normal_to_xrgb8888_neon(asm_dsc_t * dsc);
767 extern LVGL_HIDDEN void _lv_xrgb8888_blend_normal_to_rgb888_neon(asm_dsc_t * dsc);
768 extern LVGL_HIDDEN void _lv_xrgb8888_blend_normal_to_xrgb8888_neon(asm_dsc_t * dsc);
lv_rgb888_blend_normal_to_rgb888_neon(lv_draw_sw_blend_image_dsc_t * dsc,uint32_t dst_px_size,uint32_t src_px_size)769 static inline lv_result_t lv_rgb888_blend_normal_to_rgb888_neon(lv_draw_sw_blend_image_dsc_t * dsc,
770 uint32_t dst_px_size,
771 uint32_t src_px_size)
772 {
773 asm_dsc_t asm_dsc = {
774 .dst_buf = dsc->dest_buf,
775 .dst_w = dsc->dest_w,
776 .dst_h = dsc->dest_h,
777 .dst_stride = dsc->dest_stride,
778 .src_buf = dsc->src_buf,
779 .src_stride = dsc->src_stride
780 };
781 if(dst_px_size == 3) {
782 if(src_px_size == 3) {
783 _lv_rgb888_blend_normal_to_rgb888_neon(&asm_dsc);
784 }
785 else {
786 _lv_xrgb8888_blend_normal_to_rgb888_neon(&asm_dsc);
787 }
788 }
789 else {
790 if(src_px_size == 3) {
791 _lv_rgb888_blend_normal_to_xrgb8888_neon(&asm_dsc);
792 }
793 else {
794 _lv_xrgb8888_blend_normal_to_xrgb8888_neon(&asm_dsc);
795 }
796 }
797 return LV_RESULT_OK;
798 }
799
800 extern LVGL_HIDDEN void _lv_rgb888_blend_normal_to_rgb888_with_opa_neon(asm_dsc_t * dsc);
801 extern LVGL_HIDDEN void _lv_rgb888_blend_normal_to_xrgb8888_with_opa_neon(asm_dsc_t * dsc);
802 extern LVGL_HIDDEN void _lv_xrgb8888_blend_normal_to_rgb888_with_opa_neon(asm_dsc_t * dsc);
803 extern LVGL_HIDDEN void _lv_xrgb8888_blend_normal_to_xrgb8888_with_opa_neon(asm_dsc_t * dsc);
lv_rgb888_blend_normal_to_rgb888_with_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc,uint32_t dst_px_size,uint32_t src_px_size)804 static inline lv_result_t lv_rgb888_blend_normal_to_rgb888_with_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc,
805 uint32_t dst_px_size, uint32_t src_px_size)
806 {
807 asm_dsc_t asm_dsc = {
808 .opa = dsc->opa,
809 .dst_buf = dsc->dest_buf,
810 .dst_w = dsc->dest_w,
811 .dst_h = dsc->dest_h,
812 .dst_stride = dsc->dest_stride,
813 .src_buf = dsc->src_buf,
814 .src_stride = dsc->src_stride
815 };
816 if(dst_px_size == 3) {
817 if(src_px_size == 3) {
818 _lv_rgb888_blend_normal_to_rgb888_with_opa_neon(&asm_dsc);
819 }
820 else {
821 _lv_xrgb8888_blend_normal_to_rgb888_with_opa_neon(&asm_dsc);
822 }
823 }
824 else {
825 if(src_px_size == 3) {
826 _lv_rgb888_blend_normal_to_xrgb8888_with_opa_neon(&asm_dsc);
827 }
828 else {
829 _lv_xrgb8888_blend_normal_to_xrgb8888_with_opa_neon(&asm_dsc);
830 }
831 }
832 return LV_RESULT_OK;
833 }
834
835 extern LVGL_HIDDEN void _lv_rgb888_blend_normal_to_rgb888_with_mask_neon(asm_dsc_t * dsc);
836 extern LVGL_HIDDEN void _lv_rgb888_blend_normal_to_xrgb8888_with_mask_neon(asm_dsc_t * dsc);
837 extern LVGL_HIDDEN void _lv_xrgb8888_blend_normal_to_rgb888_with_mask_neon(asm_dsc_t * dsc);
838 extern LVGL_HIDDEN void _lv_xrgb8888_blend_normal_to_xrgb8888_with_mask_neon(asm_dsc_t * dsc);
lv_rgb888_blend_normal_to_rgb888_with_mask_neon(lv_draw_sw_blend_image_dsc_t * dsc,uint32_t dst_px_size,uint32_t src_px_size)839 static inline lv_result_t lv_rgb888_blend_normal_to_rgb888_with_mask_neon(lv_draw_sw_blend_image_dsc_t * dsc,
840 uint32_t dst_px_size, uint32_t src_px_size)
841 {
842 asm_dsc_t asm_dsc = {
843 .dst_buf = dsc->dest_buf,
844 .dst_w = dsc->dest_w,
845 .dst_h = dsc->dest_h,
846 .dst_stride = dsc->dest_stride,
847 .src_buf = dsc->src_buf,
848 .src_stride = dsc->src_stride,
849 .mask_buf = dsc->mask_buf,
850 .mask_stride = dsc->mask_stride
851 };
852 if(dst_px_size == 3) {
853 if(src_px_size == 3) {
854 _lv_rgb888_blend_normal_to_rgb888_with_mask_neon(&asm_dsc);
855 }
856 else {
857 _lv_xrgb8888_blend_normal_to_rgb888_with_mask_neon(&asm_dsc);
858 }
859 }
860 else {
861 if(src_px_size == 3) {
862 _lv_rgb888_blend_normal_to_xrgb8888_with_mask_neon(&asm_dsc);
863 }
864 else {
865 _lv_xrgb8888_blend_normal_to_xrgb8888_with_mask_neon(&asm_dsc);
866 }
867 }
868 return LV_RESULT_OK;
869 }
870
871 extern LVGL_HIDDEN void _lv_rgb888_blend_normal_to_rgb888_mix_mask_opa_neon(asm_dsc_t * dsc);
872 extern LVGL_HIDDEN void _lv_rgb888_blend_normal_to_xrgb8888_mix_mask_opa_neon(asm_dsc_t * dsc);
873 extern LVGL_HIDDEN void _lv_xrgb8888_blend_normal_to_rgb888_mix_mask_opa_neon(asm_dsc_t * dsc);
874 extern LVGL_HIDDEN void _lv_xrgb8888_blend_normal_to_xrgb8888_mix_mask_opa_neon(asm_dsc_t * dsc);
lv_rgb888_blend_normal_to_rgb888_mix_mask_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc,uint32_t dst_px_size,uint32_t src_px_size)875 static inline lv_result_t lv_rgb888_blend_normal_to_rgb888_mix_mask_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc,
876 uint32_t dst_px_size, uint32_t src_px_size)
877 {
878 asm_dsc_t asm_dsc = {
879 .opa = dsc->opa,
880 .dst_buf = dsc->dest_buf,
881 .dst_w = dsc->dest_w,
882 .dst_h = dsc->dest_h,
883 .dst_stride = dsc->dest_stride,
884 .src_buf = dsc->src_buf,
885 .src_stride = dsc->src_stride,
886 .mask_buf = dsc->mask_buf,
887 .mask_stride = dsc->mask_stride
888 };
889 if(dst_px_size == 3) {
890 if(src_px_size == 3) {
891 _lv_rgb888_blend_normal_to_rgb888_mix_mask_opa_neon(&asm_dsc);
892 }
893 else {
894 _lv_xrgb8888_blend_normal_to_rgb888_mix_mask_opa_neon(&asm_dsc);
895 }
896 }
897 else {
898 if(src_px_size == 3) {
899 _lv_rgb888_blend_normal_to_xrgb8888_mix_mask_opa_neon(&asm_dsc);
900 }
901 else {
902 _lv_xrgb8888_blend_normal_to_xrgb8888_mix_mask_opa_neon(&asm_dsc);
903 }
904 }
905 return LV_RESULT_OK;
906 }
907
908 extern LVGL_HIDDEN void _lv_argb8888_blend_normal_to_rgb888_neon(asm_dsc_t * dsc);
909 extern LVGL_HIDDEN void _lv_argb8888_blend_normal_to_xrgb8888_neon(asm_dsc_t * dsc);
lv_argb8888_blend_normal_to_rgb888_neon(lv_draw_sw_blend_image_dsc_t * dsc,uint32_t dst_px_size)910 static inline lv_result_t lv_argb8888_blend_normal_to_rgb888_neon(lv_draw_sw_blend_image_dsc_t * dsc,
911 uint32_t dst_px_size)
912 {
913 asm_dsc_t asm_dsc = {
914 .dst_buf = dsc->dest_buf,
915 .dst_w = dsc->dest_w,
916 .dst_h = dsc->dest_h,
917 .dst_stride = dsc->dest_stride,
918 .src_buf = dsc->src_buf,
919 .src_stride = dsc->src_stride
920 };
921 if(dst_px_size == 3) {
922 _lv_argb8888_blend_normal_to_rgb888_neon(&asm_dsc);
923 }
924 else {
925 _lv_argb8888_blend_normal_to_xrgb8888_neon(&asm_dsc);
926 }
927 return LV_RESULT_OK;
928 }
929
930 extern LVGL_HIDDEN void _lv_argb8888_blend_normal_to_rgb888_with_opa_neon(asm_dsc_t * dsc);
931 extern LVGL_HIDDEN void _lv_argb8888_blend_normal_to_xrgb8888_with_opa_neon(asm_dsc_t * dsc);
lv_argb8888_blend_normal_to_rgb888_with_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc,uint32_t dst_px_size)932 static inline lv_result_t lv_argb8888_blend_normal_to_rgb888_with_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc,
933 uint32_t dst_px_size)
934 {
935 asm_dsc_t asm_dsc = {
936 .opa = dsc->opa,
937 .dst_buf = dsc->dest_buf,
938 .dst_w = dsc->dest_w,
939 .dst_h = dsc->dest_h,
940 .dst_stride = dsc->dest_stride,
941 .src_buf = dsc->src_buf,
942 .src_stride = dsc->src_stride
943 };
944 if(dst_px_size == 3) {
945 _lv_argb8888_blend_normal_to_rgb888_with_opa_neon(&asm_dsc);
946 }
947 else {
948 _lv_argb8888_blend_normal_to_xrgb8888_with_opa_neon(&asm_dsc);
949 }
950 return LV_RESULT_OK;
951 }
952
953 extern LVGL_HIDDEN void _lv_argb8888_blend_normal_to_rgb888_with_mask_neon(asm_dsc_t * dsc);
954 extern LVGL_HIDDEN void _lv_argb8888_blend_normal_to_xrgb8888_with_mask_neon(asm_dsc_t * dsc);
lv_argb8888_blend_normal_to_rgb888_with_mask_neon(lv_draw_sw_blend_image_dsc_t * dsc,uint32_t dst_px_size)955 static inline lv_result_t lv_argb8888_blend_normal_to_rgb888_with_mask_neon(lv_draw_sw_blend_image_dsc_t * dsc,
956 uint32_t dst_px_size)
957 {
958 asm_dsc_t asm_dsc = {
959 .dst_buf = dsc->dest_buf,
960 .dst_w = dsc->dest_w,
961 .dst_h = dsc->dest_h,
962 .dst_stride = dsc->dest_stride,
963 .src_buf = dsc->src_buf,
964 .src_stride = dsc->src_stride,
965 .mask_buf = dsc->mask_buf,
966 .mask_stride = dsc->mask_stride
967 };
968 if(dst_px_size == 3) {
969 _lv_argb8888_blend_normal_to_rgb888_with_mask_neon(&asm_dsc);
970 }
971 else {
972 _lv_argb8888_blend_normal_to_xrgb8888_with_mask_neon(&asm_dsc);
973 }
974 return LV_RESULT_OK;
975 }
976
977 extern LVGL_HIDDEN void _lv_argb8888_blend_normal_to_rgb888_mix_mask_opa_neon(asm_dsc_t * dsc);
978 extern LVGL_HIDDEN void _lv_argb8888_blend_normal_to_xrgb8888_mix_mask_opa_neon(asm_dsc_t * dsc);
lv_argb8888_blend_normal_to_rgb888_mix_mask_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc,uint32_t dst_px_size)979 static inline lv_result_t lv_argb8888_blend_normal_to_rgb888_mix_mask_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc,
980 uint32_t dst_px_size)
981 {
982 asm_dsc_t asm_dsc = {
983 .opa = dsc->opa,
984 .dst_buf = dsc->dest_buf,
985 .dst_w = dsc->dest_w,
986 .dst_h = dsc->dest_h,
987 .dst_stride = dsc->dest_stride,
988 .src_buf = dsc->src_buf,
989 .src_stride = dsc->src_stride,
990 .mask_buf = dsc->mask_buf,
991 .mask_stride = dsc->mask_stride
992 };
993 if(dst_px_size == 3) {
994 _lv_argb8888_blend_normal_to_rgb888_mix_mask_opa_neon(&asm_dsc);
995 }
996 else {
997 _lv_argb8888_blend_normal_to_xrgb8888_mix_mask_opa_neon(&asm_dsc);
998 }
999 return LV_RESULT_OK;
1000 }
1001
1002 extern LVGL_HIDDEN void _lv_color_blend_to_argb8888_neon(asm_dsc_t * dsc);
lv_color_blend_to_argb8888_neon(lv_draw_sw_blend_fill_dsc_t * dsc)1003 static inline lv_result_t lv_color_blend_to_argb8888_neon(lv_draw_sw_blend_fill_dsc_t * dsc)
1004 {
1005 asm_dsc_t asm_dsc = {
1006 .dst_buf = dsc->dest_buf,
1007 .dst_w = dsc->dest_w,
1008 .dst_h = dsc->dest_h,
1009 .dst_stride = dsc->dest_stride,
1010 .src_buf = &dsc->color
1011 };
1012
1013 _lv_color_blend_to_argb8888_neon(&asm_dsc);
1014 return LV_RESULT_OK;
1015 }
1016
1017 extern LVGL_HIDDEN void _lv_color_blend_to_argb8888_with_opa_neon(asm_dsc_t * dsc);
lv_color_blend_to_argb8888_with_opa_neon(lv_draw_sw_blend_fill_dsc_t * dsc)1018 static inline lv_result_t lv_color_blend_to_argb8888_with_opa_neon(lv_draw_sw_blend_fill_dsc_t * dsc)
1019 {
1020 asm_dsc_t asm_dsc = {
1021 .opa = dsc->opa,
1022 .dst_buf = dsc->dest_buf,
1023 .dst_w = dsc->dest_w,
1024 .dst_h = dsc->dest_h,
1025 .dst_stride = dsc->dest_stride,
1026 .src_buf = &dsc->color
1027 };
1028 _lv_color_blend_to_argb8888_with_opa_neon(&asm_dsc);
1029 return LV_RESULT_OK;
1030 }
1031
1032 extern LVGL_HIDDEN void _lv_color_blend_to_argb8888_with_mask_neon(asm_dsc_t * dsc);
lv_color_blend_to_argb8888_with_mask_neon(lv_draw_sw_blend_fill_dsc_t * dsc)1033 static inline lv_result_t lv_color_blend_to_argb8888_with_mask_neon(lv_draw_sw_blend_fill_dsc_t * dsc)
1034 {
1035 asm_dsc_t asm_dsc = {
1036 .dst_buf = dsc->dest_buf,
1037 .dst_w = dsc->dest_w,
1038 .dst_h = dsc->dest_h,
1039 .dst_stride = dsc->dest_stride,
1040 .src_buf = &dsc->color,
1041 .mask_buf = dsc->mask_buf,
1042 .mask_stride = dsc->mask_stride
1043 };
1044 _lv_color_blend_to_argb8888_with_mask_neon(&asm_dsc);
1045 return LV_RESULT_OK;
1046 }
1047
1048 extern LVGL_HIDDEN void _lv_color_blend_to_argb8888_mix_mask_opa_neon(asm_dsc_t * dsc);
lv_color_blend_to_argb8888_mix_mask_opa_neon(lv_draw_sw_blend_fill_dsc_t * dsc)1049 static inline lv_result_t lv_color_blend_to_argb8888_mix_mask_opa_neon(lv_draw_sw_blend_fill_dsc_t * dsc)
1050 {
1051 asm_dsc_t asm_dsc = {
1052 .opa = dsc->opa,
1053 .dst_buf = dsc->dest_buf,
1054 .dst_w = dsc->dest_w,
1055 .dst_h = dsc->dest_h,
1056 .dst_stride = dsc->dest_stride,
1057 .src_buf = &dsc->color,
1058 .mask_buf = dsc->mask_buf,
1059 .mask_stride = dsc->mask_stride
1060 };
1061 _lv_color_blend_to_argb8888_mix_mask_opa_neon(&asm_dsc);
1062 return LV_RESULT_OK;
1063 }
1064
1065 extern LVGL_HIDDEN void _lv_rgb565_blend_normal_to_argb8888_neon(asm_dsc_t * dsc);
lv_rgb565_blend_normal_to_argb8888_neon(lv_draw_sw_blend_image_dsc_t * dsc)1066 static inline lv_result_t lv_rgb565_blend_normal_to_argb8888_neon(lv_draw_sw_blend_image_dsc_t * dsc)
1067 {
1068 asm_dsc_t asm_dsc = {
1069 .dst_buf = dsc->dest_buf,
1070 .dst_w = dsc->dest_w,
1071 .dst_h = dsc->dest_h,
1072 .dst_stride = dsc->dest_stride,
1073 .src_buf = dsc->src_buf,
1074 .src_stride = dsc->src_stride
1075 };
1076 _lv_rgb565_blend_normal_to_argb8888_neon(&asm_dsc);
1077 return LV_RESULT_OK;
1078 }
1079
1080 extern LVGL_HIDDEN void _lv_rgb565_blend_normal_to_argb8888_with_opa_neon(asm_dsc_t * dsc);
lv_rgb565_blend_normal_to_argb8888_with_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc)1081 static inline lv_result_t lv_rgb565_blend_normal_to_argb8888_with_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc)
1082 {
1083 asm_dsc_t asm_dsc = {
1084 .opa = dsc->opa,
1085 .dst_buf = dsc->dest_buf,
1086 .dst_w = dsc->dest_w,
1087 .dst_h = dsc->dest_h,
1088 .dst_stride = dsc->dest_stride,
1089 .src_buf = dsc->src_buf,
1090 .src_stride = dsc->src_stride
1091 };
1092 _lv_rgb565_blend_normal_to_argb8888_with_opa_neon(&asm_dsc);
1093 return LV_RESULT_OK;
1094 }
1095
1096 extern LVGL_HIDDEN void _lv_rgb565_blend_normal_to_argb8888_with_mask_neon(asm_dsc_t * dsc);
lv_rgb565_blend_normal_to_argb8888_with_mask_neon(lv_draw_sw_blend_image_dsc_t * dsc)1097 static inline lv_result_t lv_rgb565_blend_normal_to_argb8888_with_mask_neon(lv_draw_sw_blend_image_dsc_t * dsc)
1098 {
1099 asm_dsc_t asm_dsc = {
1100 .dst_buf = dsc->dest_buf,
1101 .dst_w = dsc->dest_w,
1102 .dst_h = dsc->dest_h,
1103 .dst_stride = dsc->dest_stride,
1104 .src_buf = dsc->src_buf,
1105 .src_stride = dsc->src_stride,
1106 .mask_buf = dsc->mask_buf,
1107 .mask_stride = dsc->mask_stride
1108 };
1109 _lv_rgb565_blend_normal_to_argb8888_with_mask_neon(&asm_dsc);
1110 return LV_RESULT_OK;
1111 }
1112
1113 extern LVGL_HIDDEN void _lv_rgb565_blend_normal_to_argb8888_mix_mask_opa_neon(asm_dsc_t * dsc);
lv_rgb565_blend_normal_to_argb8888_mix_mask_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc)1114 static inline lv_result_t lv_rgb565_blend_normal_to_argb8888_mix_mask_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc)
1115 {
1116 asm_dsc_t asm_dsc = {
1117 .opa = dsc->opa,
1118 .dst_buf = dsc->dest_buf,
1119 .dst_w = dsc->dest_w,
1120 .dst_h = dsc->dest_h,
1121 .dst_stride = dsc->dest_stride,
1122 .src_buf = dsc->src_buf,
1123 .src_stride = dsc->src_stride,
1124 .mask_buf = dsc->mask_buf,
1125 .mask_stride = dsc->mask_stride
1126 };
1127 _lv_rgb565_blend_normal_to_argb8888_mix_mask_opa_neon(&asm_dsc);
1128 return LV_RESULT_OK;
1129 }
1130
1131 extern LVGL_HIDDEN void _lv_rgb888_blend_normal_to_argb8888_neon(asm_dsc_t * dsc);
1132 extern LVGL_HIDDEN void _lv_xrgb8888_blend_normal_to_argb8888_neon(asm_dsc_t * dsc);
lv_rgb888_blend_normal_to_argb8888_neon(lv_draw_sw_blend_image_dsc_t * dsc,uint32_t src_px_size)1133 static inline lv_result_t lv_rgb888_blend_normal_to_argb8888_neon(lv_draw_sw_blend_image_dsc_t * dsc,
1134 uint32_t src_px_size)
1135 {
1136 asm_dsc_t asm_dsc = {
1137 .dst_buf = dsc->dest_buf,
1138 .dst_w = dsc->dest_w,
1139 .dst_h = dsc->dest_h,
1140 .dst_stride = dsc->dest_stride,
1141 .src_buf = dsc->src_buf,
1142 .src_stride = dsc->src_stride
1143 };
1144 if(src_px_size == 3) {
1145 _lv_rgb888_blend_normal_to_argb8888_neon(&asm_dsc);
1146 }
1147 else {
1148 _lv_xrgb8888_blend_normal_to_argb8888_neon(&asm_dsc);
1149 }
1150 return LV_RESULT_OK;
1151 }
1152
1153 extern LVGL_HIDDEN void _lv_rgb888_blend_normal_to_argb8888_with_opa_neon(asm_dsc_t * dsc);
1154 extern LVGL_HIDDEN void _lv_xrgb8888_blend_normal_to_argb8888_with_opa_neon(asm_dsc_t * dsc);
lv_rgb888_blend_normal_to_argb8888_with_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc,uint32_t src_px_size)1155 static inline lv_result_t lv_rgb888_blend_normal_to_argb8888_with_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc,
1156 uint32_t src_px_size)
1157 {
1158 asm_dsc_t asm_dsc = {
1159 .opa = dsc->opa,
1160 .dst_buf = dsc->dest_buf,
1161 .dst_w = dsc->dest_w,
1162 .dst_h = dsc->dest_h,
1163 .dst_stride = dsc->dest_stride,
1164 .src_buf = dsc->src_buf,
1165 .src_stride = dsc->src_stride
1166 };
1167 if(src_px_size == 3) {
1168 _lv_rgb888_blend_normal_to_argb8888_with_opa_neon(&asm_dsc);
1169 }
1170 else {
1171 _lv_xrgb8888_blend_normal_to_argb8888_with_opa_neon(&asm_dsc);
1172 }
1173 return LV_RESULT_OK;
1174 }
1175
1176 extern LVGL_HIDDEN void _lv_rgb888_blend_normal_to_argb8888_with_mask_neon(asm_dsc_t * dsc);
1177 extern LVGL_HIDDEN void _lv_xrgb8888_blend_normal_to_argb8888_with_mask_neon(asm_dsc_t * dsc);
lv_rgb888_blend_normal_to_argb8888_with_mask_neon(lv_draw_sw_blend_image_dsc_t * dsc,uint32_t src_px_size)1178 static inline lv_result_t lv_rgb888_blend_normal_to_argb8888_with_mask_neon(lv_draw_sw_blend_image_dsc_t * dsc,
1179 uint32_t src_px_size)
1180 {
1181 asm_dsc_t asm_dsc = {
1182 .dst_buf = dsc->dest_buf,
1183 .dst_w = dsc->dest_w,
1184 .dst_h = dsc->dest_h,
1185 .dst_stride = dsc->dest_stride,
1186 .src_buf = dsc->src_buf,
1187 .src_stride = dsc->src_stride,
1188 .mask_buf = dsc->mask_buf,
1189 .mask_stride = dsc->mask_stride
1190 };
1191 if(src_px_size == 3) {
1192 _lv_rgb888_blend_normal_to_argb8888_with_mask_neon(&asm_dsc);
1193 }
1194 else {
1195 _lv_xrgb8888_blend_normal_to_argb8888_with_mask_neon(&asm_dsc);
1196 }
1197 return LV_RESULT_OK;
1198 }
1199
1200 extern LVGL_HIDDEN void _lv_rgb888_blend_normal_to_argb8888_mix_mask_opa_neon(asm_dsc_t * dsc);
1201 extern LVGL_HIDDEN void _lv_xrgb8888_blend_normal_to_argb8888_mix_mask_opa_neon(asm_dsc_t * dsc);
lv_rgb888_blend_normal_to_argb8888_mix_mask_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc,uint32_t src_px_size)1202 static inline lv_result_t lv_rgb888_blend_normal_to_argb8888_mix_mask_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc,
1203 uint32_t src_px_size)
1204 {
1205 asm_dsc_t asm_dsc = {
1206 .opa = dsc->opa,
1207 .dst_buf = dsc->dest_buf,
1208 .dst_w = dsc->dest_w,
1209 .dst_h = dsc->dest_h,
1210 .dst_stride = dsc->dest_stride,
1211 .src_buf = dsc->src_buf,
1212 .src_stride = dsc->src_stride,
1213 .mask_buf = dsc->mask_buf,
1214 .mask_stride = dsc->mask_stride
1215 };
1216 if(src_px_size == 3) {
1217 _lv_rgb888_blend_normal_to_argb8888_mix_mask_opa_neon(&asm_dsc);
1218 }
1219 else {
1220 _lv_xrgb8888_blend_normal_to_argb8888_mix_mask_opa_neon(&asm_dsc);
1221 }
1222 return LV_RESULT_OK;
1223 }
1224
1225 extern LVGL_HIDDEN void _lv_argb8888_blend_normal_to_argb8888_neon(asm_dsc_t * dsc);
lv_argb8888_blend_normal_to_argb8888_neon(lv_draw_sw_blend_image_dsc_t * dsc)1226 static inline lv_result_t lv_argb8888_blend_normal_to_argb8888_neon(lv_draw_sw_blend_image_dsc_t * dsc)
1227 {
1228 asm_dsc_t asm_dsc = {
1229 .dst_buf = dsc->dest_buf,
1230 .dst_w = dsc->dest_w,
1231 .dst_h = dsc->dest_h,
1232 .dst_stride = dsc->dest_stride,
1233 .src_buf = dsc->src_buf,
1234 .src_stride = dsc->src_stride
1235 };
1236 _lv_argb8888_blend_normal_to_argb8888_neon(&asm_dsc);
1237 return LV_RESULT_OK;
1238 }
1239
1240 extern LVGL_HIDDEN void _lv_argb8888_blend_normal_to_argb8888_with_opa_neon(asm_dsc_t * dsc);
lv_argb8888_blend_normal_to_argb8888_with_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc)1241 static inline lv_result_t lv_argb8888_blend_normal_to_argb8888_with_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc)
1242 {
1243 asm_dsc_t asm_dsc = {
1244 .opa = dsc->opa,
1245 .dst_buf = dsc->dest_buf,
1246 .dst_w = dsc->dest_w,
1247 .dst_h = dsc->dest_h,
1248 .dst_stride = dsc->dest_stride,
1249 .src_buf = dsc->src_buf,
1250 .src_stride = dsc->src_stride
1251 };
1252 _lv_argb8888_blend_normal_to_argb8888_with_opa_neon(&asm_dsc);
1253 return LV_RESULT_OK;
1254 }
1255
1256 extern LVGL_HIDDEN void _lv_argb8888_blend_normal_to_argb8888_with_mask_neon(asm_dsc_t * dsc);
lv_argb8888_blend_normal_to_argb8888_with_mask_neon(lv_draw_sw_blend_image_dsc_t * dsc)1257 static inline lv_result_t lv_argb8888_blend_normal_to_argb8888_with_mask_neon(lv_draw_sw_blend_image_dsc_t * dsc)
1258 {
1259 asm_dsc_t asm_dsc = {
1260 .dst_buf = dsc->dest_buf,
1261 .dst_w = dsc->dest_w,
1262 .dst_h = dsc->dest_h,
1263 .dst_stride = dsc->dest_stride,
1264 .src_buf = dsc->src_buf,
1265 .src_stride = dsc->src_stride,
1266 .mask_buf = dsc->mask_buf,
1267 .mask_stride = dsc->mask_stride
1268 };
1269 _lv_argb8888_blend_normal_to_argb8888_with_mask_neon(&asm_dsc);
1270 return LV_RESULT_OK;
1271 }
1272
1273 extern LVGL_HIDDEN void _lv_argb8888_blend_normal_to_argb8888_mix_mask_opa_neon(asm_dsc_t * dsc);
lv_argb8888_blend_normal_to_argb8888_mix_mask_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc)1274 static inline lv_result_t lv_argb8888_blend_normal_to_argb8888_mix_mask_opa_neon(lv_draw_sw_blend_image_dsc_t * dsc)
1275 {
1276 asm_dsc_t asm_dsc = {
1277 .opa = dsc->opa,
1278 .dst_buf = dsc->dest_buf,
1279 .dst_w = dsc->dest_w,
1280 .dst_h = dsc->dest_h,
1281 .dst_stride = dsc->dest_stride,
1282 .src_buf = dsc->src_buf,
1283 .src_stride = dsc->src_stride,
1284 .mask_buf = dsc->mask_buf,
1285 .mask_stride = dsc->mask_stride
1286 };
1287 _lv_argb8888_blend_normal_to_argb8888_mix_mask_opa_neon(&asm_dsc);
1288 return LV_RESULT_OK;
1289 }
1290
1291 #endif /* !defined(__ASSEMBLY__) */
1292
1293 /**********************
1294 * MACROS
1295 **********************/
1296
1297 #ifdef __cplusplus
1298 } /*extern "C"*/
1299 #endif
1300
1301 #endif /*LV_BLEND_NEON_H*/
1302