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