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