Arm-2D  
2D Image Processing Library for Cortex-M Processors
 
Loading...
Searching...
No Matches
arm_2d_alpha_blending.h
1/*
2 * Copyright (C) 2022 Arm Limited or its affiliates. All rights reserved.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 *
6 * Licensed under the Apache License, Version 2.0 (the License); you may
7 * not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
9 *
10 * www.apache.org/licenses/LICENSE-2.0
11 *
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an AS IS BASIS, WITHOUT
14 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
17 */
18
19/* ----------------------------------------------------------------------
20 * Project: Arm-2D Library
21 * Title: arm_2d_alpha_blending.h
22 * Description: Public header file to contain the alpha related APIs
23 *
24 * $Date: 02 Dec 2025
25 * $Revision: V.1.15.0
26 *
27 * Target Processor: Cortex-M cores
28 * -------------------------------------------------------------------- */
29
30#ifndef __ARM_2D_ALPHA_BLENDING_H__
31#define __ARM_2D_ALPHA_BLENDING_H__
32
33/*============================ INCLUDES ======================================*/
34
35#include "arm_2d_types.h"
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41#if defined(__clang__)
42# pragma clang diagnostic push
43# pragma clang diagnostic ignored "-Wunknown-warning-option"
44# pragma clang diagnostic ignored "-Wreserved-identifier"
45# pragma clang diagnostic ignored "-Wmissing-declarations"
46# pragma clang diagnostic ignored "-Wpadded"
47# pragma clang diagnostic ignored "-Wc11-extensions"
48#endif
49
50/*============================ MACROS ========================================*/
51
52/*!
53 * \addtogroup Deprecated
54 * @{
55 */
56#define arm_2d_rgb565_fill_colour_with_alpha \
57 arm_2d_rgb565_fill_colour_with_opacity
58
59#define arm_2d_rgb888_fill_colour_with_alpha \
60 arm_2d_rgb888_fill_colour_with_opacity
61
62#define arm_2d_cccn888_fill_colour_with_alpha \
63 arm_2d_cccn888_fill_colour_with_opacity
64
65#define arm_2d_gray8_fill_colour_with_alpha_mask \
66 arm_2d_gray8_fill_colour_with_mask
67
68#define arm_2d_rgb565_fill_colour_with_alpha_mask \
69 arm_2d_rgb565_fill_colour_with_mask
70
71#define arm_2d_rgb888_fill_colour_with_alpha_mask \
72 arm_2d_rgb888_fill_colour_with_mask
73
74#define arm_2d_cccn888_fill_colour_with_alpha_mask \
75 arm_2d_cccn888_fill_colour_with_mask
76
77#define arm_2d_gray8_fill_colour_with_alpha_mask_and_opacity \
78 arm_2d_gray8_fill_colour_with_mask_and_opacity
79
80#define arm_2d_rgb565_fill_colour_with_alpha_mask_and_opacity \
81 arm_2d_rgb565_fill_colour_with_mask_and_opacity
82
83#define arm_2d_rgb888_fill_colour_with_alpha_mask_and_opacity \
84 arm_2d_rgb888_fill_colour_with_mask_and_opacity
85
86#define arm_2d_cccn888_fill_colour_with_alpha_mask_and_opacity \
87 arm_2d_cccn888_fill_colour_with_mask_and_opacity
88
89#define arm_2d_gray8_alpha_blending_with_colour_masking \
90 arm_2d_gray8_tile_copy_with_colour_keying_and_opacity
91
92#define arm_2d_rgb565_alpha_blending_with_colour_masking \
93 arm_2d_rgb565_tile_copy_with_colour_keying_and_opacity
94
95#define arm_2d_rgb888_alpha_blending_with_colour_masking \
96 arm_2d_rgb888_tile_copy_with_colour_keying_and_opacity
97
98#define arm_2d_cccn888_alpha_blending_with_colour_masking \
99 arm_2d_cccn888_tile_copy_with_colour_keying_and_opacity
100
101#define arm_2d_gray8_tile_copy_with_alpha_masks \
102 arm_2d_gray8_tile_copy_with_masks
103
104#define arm_2d_rgb565_tile_copy_with_alpha_masks \
105 arm_2d_rgb565_tile_copy_with_masks
106
107#define arm_2d_cccn888_tile_copy_with_alpha_masks \
108 arm_2d_cccn888_tile_copy_with_masks
109
110#define arm_2d_rgb888_tile_copy_with_alpha_mask \
111 arm_2d_rgb888_tile_copy_with_masks
112
113
114#define arm_2dp_gray8_alpha_blending arm_2dp_gray8_tile_copy_with_opacity_only
115#define arm_2dp_rgb565_alpha_blending arm_2dp_rgb565_tile_copy_with_opacity_only
116#define arm_2dp_cccn888_alpha_blending arm_2dp_cccn888_tile_copy_with_opacity_only
117#define arm_2dp_rgb888_alpha_blending arm_2dp_cccn888_tile_copy_with_opacity_only
118#define arm_2d_gray8_alpha_blending arm_2d_gray8_tile_copy_with_opacity_only
119#define arm_2d_rgb565_alpha_blending arm_2d_rgb565_tile_copy_with_opacity_only
120#define arm_2d_cccn888_alpha_blending arm_2d_cccn888_tile_copy_with_opacity_only
121#define arm_2d_rgb888_alpha_blending arm_2d_cccn888_tile_copy_with_opacity_only
122
123#define arm_2d_gray8_tile_copy_with_opacity arm_2d_gray8_tile_copy_with_opacity_only
124#define arm_2d_rgb565_tile_copy_with_opacity arm_2d_rgb565_tile_copy_with_opacity_only
125#define arm_2d_rgb888_tile_copy_with_opacity arm_2d_rgb888_tile_copy_with_opacity_only
126#define arm_2d_cccn888_tile_copy_with_opacity arm_2d_cccn888_tile_copy_with_opacity_only
127
128#define arm_2dp_gray8_tile_copy_with_opacity arm_2dp_gray8_tile_copy_with_opacity_only
129#define arm_2dp_rgb565_tile_copy_with_opacity arm_2dp_rgb565_tile_copy_with_opacity_only
130#define arm_2dp_cccn888_tile_copy_with_opacity arm_2dp_cccn888_tile_copy_with_opacity_only
131
132#define arm_2dp_gray8_alpha_blending_with_colour_keying \
133 arm_2dp_gray8_tile_copy_with_colour_keying_and_opacity
134#define arm_2dp_rgb565_alpha_blending_with_colour_keying \
135 arm_2dp_rgb565_tile_copy_with_colour_keying_and_opacity
136#define arm_2dp_cccn888_alpha_blending_with_colour_keying \
137 arm_2dp_cccn888_tile_copy_with_colour_keying_and_opacity
138#define arm_2d_gray8_alpha_blending_with_colour_keying \
139 arm_2d_gray8_tile_copy_with_colour_keying_and_opacity
140#define arm_2d_rgb565_alpha_blending_with_colour_keying \
141 arm_2d_rgb565_tile_copy_with_colour_keying_and_opacity
142#define arm_2d_cccn888_alpha_blending_with_colour_keying \
143 arm_2d_cccn888_tile_copy_with_colour_keying_and_opacity
144
145/*! @} */
146
147/*!
148 * \addtogroup gAlpha 4 Alpha Blending Operations
149 * @{
150 */
151
152/*============================ MACROFIED FUNCTIONS ===========================*/
153
154#define arm_2d_gray8_tile_copy_with_opacity_only( \
155 __SRC_ADDR, /* source tile address */ \
156 __DES_ADDR, /* target tile address */ \
157 __REGION_ADDR,/* region address */ \
158 __ALPHA) /* alpha */ \
159 arm_2dp_gray8_tile_copy_with_opacity_only( NULL, \
160 (__SRC_ADDR), \
161 (__DES_ADDR), \
162 (__REGION_ADDR), \
163 (__ALPHA))
164
165#define arm_2d_rgb565_tile_copy_with_opacity_only( \
166 __SRC_ADDR, /* source tile address */ \
167 __DES_ADDR, /* target tile address */ \
168 __REGION_ADDR,/* region address */ \
169 __ALPHA) /* alpha */ \
170 arm_2dp_rgb565_tile_copy_with_opacity_only( NULL, \
171 (__SRC_ADDR), \
172 (__DES_ADDR), \
173 (__REGION_ADDR), \
174 (__ALPHA))
175
176#define arm_2d_rgb888_tile_copy_with_opacity_only( \
177 __SRC_ADDR, /* source tile address */ \
178 __DES_ADDR, /* target tile address */ \
179 __REGION_ADDR,/* region address */ \
180 __ALPHA) /* alpha */ \
181 arm_2dp_cccn888_tile_copy_with_opacity_only( NULL, \
182 (__SRC_ADDR), \
183 (__DES_ADDR), \
184 (__REGION_ADDR), \
185 (__ALPHA))
186
187#define arm_2d_cccn888_tile_copy_with_opacity_only( \
188 __SRC_ADDR, /* source tile address */ \
189 __DES_ADDR, /* target tile address */ \
190 __REGION_ADDR,/* region address */ \
191 __ALPHA) /* alpha */ \
192 arm_2dp_cccn888_tile_copy_with_opacity_only( NULL, \
193 (__SRC_ADDR), \
194 (__DES_ADDR), \
195 (__REGION_ADDR), \
196 (__ALPHA))
197
198
199#define arm_2d_gray8_fill_colour_with_opacity( \
200 __DES_ADDR, /* target tile address */ \
201 __REGION_ADDR,/* region address */ \
202 __COLOUR, /* colour */ \
203 __ALPHA) /* alpha */ \
204 arm_2dp_gray8_fill_colour_with_opacity( NULL, \
205 (__DES_ADDR), \
206 (__REGION_ADDR), \
207 (__COLOUR), \
208 (__ALPHA))
209
210#define arm_2d_rgb565_fill_colour_with_opacity( \
211 __DES_ADDR, /* target tile address */ \
212 __REGION_ADDR,/* region address */ \
213 __COLOUR, /* colour */ \
214 __ALPHA) /* alpha */ \
215 arm_2dp_rgb565_fill_colour_with_opacity( NULL, \
216 (__DES_ADDR), \
217 (__REGION_ADDR), \
218 (__COLOUR), \
219 (__ALPHA))
220
221#define arm_2d_rgb888_fill_colour_with_opacity( \
222 __DES_ADDR, /* target tile address */ \
223 __REGION_ADDR,/* region address */ \
224 __COLOUR, /* colour */ \
225 __ALPHA) /* alpha */ \
226 arm_2dp_cccn888_fill_colour_with_opacity( NULL, \
227 (__DES_ADDR), \
228 (__REGION_ADDR), \
229 (arm_2d_color_cccn888_t){(__COLOUR).tValue}, \
230 (__ALPHA))
231
232
233#define arm_2d_cccn888_fill_colour_with_opacity( \
234 __DES_ADDR, /* target tile address */ \
235 __REGION_ADDR,/* region address */ \
236 __COLOUR, /* colour */ \
237 __ALPHA) /* alpha */ \
238 arm_2dp_cccn888_fill_colour_with_opacity( NULL, \
239 (__DES_ADDR), \
240 (__REGION_ADDR), \
241 (__COLOUR), \
242 (__ALPHA))
243
244#define arm_2d_gray8_fill_colour_with_a1_mask( \
245 __TARGET_ADDR, /* target tile address*/ \
246 __REGION_ADDR, /* target region address*/\
247 __ALPHA_ADDR, /* alpha tile address */ \
248 __COLOUR) /* colour */ \
249 arm_2dp_gray8_fill_colour_with_a1_mask( \
250 NULL, \
251 (__TARGET_ADDR), \
252 (__REGION_ADDR), \
253 (__ALPHA_ADDR), \
254 (__COLOUR))
255
256#define arm_2d_rgb565_fill_colour_with_a1_mask( \
257 __TARGET_ADDR, /* target tile address*/ \
258 __REGION_ADDR, /* target region address*/\
259 __ALPHA_ADDR, /* alpha tile address */ \
260 __COLOUR) /* colour */ \
261 arm_2dp_rgb565_fill_colour_with_a1_mask( \
262 NULL, \
263 (__TARGET_ADDR), \
264 (__REGION_ADDR), \
265 (__ALPHA_ADDR), \
266 (__COLOUR))
267
268#define arm_2d_rgb888_fill_colour_with_a1_mask( \
269 __TARGET_ADDR, /* target tile address*/ \
270 __REGION_ADDR, /* target region address*/\
271 __ALPHA_ADDR, /* alpha tile address */ \
272 __COLOUR) /* colour */ \
273 arm_2dp_cccn888_fill_colour_with_a1_mask( \
274 NULL, \
275 (__TARGET_ADDR), \
276 (__REGION_ADDR), \
277 (__ALPHA_ADDR), \
278 (arm_2d_color_cccn888_t){(__COLOUR).tValue})
279
280#define arm_2d_cccn888_fill_colour_with_a1_mask( \
281 __TARGET_ADDR, /* target tile address*/ \
282 __REGION_ADDR, /* target region address*/\
283 __ALPHA_ADDR, /* alpha tile address */ \
284 __COLOUR) /* colour */ \
285 arm_2dp_cccn888_fill_colour_with_a1_mask( \
286 NULL, \
287 (__TARGET_ADDR), \
288 (__REGION_ADDR), \
289 (__ALPHA_ADDR), \
290 (__COLOUR))
291
292#define arm_2d_gray8_fill_colour_with_a2_mask( \
293 __TARGET_ADDR, /* target tile address*/ \
294 __REGION_ADDR, /* target region address*/\
295 __ALPHA_ADDR, /* alpha tile address */ \
296 __COLOUR) /* colour */ \
297 arm_2dp_gray8_fill_colour_with_a2_mask( \
298 NULL, \
299 (__TARGET_ADDR), \
300 (__REGION_ADDR), \
301 (__ALPHA_ADDR), \
302 (__COLOUR))
303
304#define arm_2d_rgb565_fill_colour_with_a2_mask( \
305 __TARGET_ADDR, /* target tile address*/ \
306 __REGION_ADDR, /* target region address*/\
307 __ALPHA_ADDR, /* alpha tile address */ \
308 __COLOUR) /* colour */ \
309 arm_2dp_rgb565_fill_colour_with_a2_mask( \
310 NULL, \
311 (__TARGET_ADDR), \
312 (__REGION_ADDR), \
313 (__ALPHA_ADDR), \
314 (__COLOUR))
315
316#define arm_2d_rgb888_fill_colour_with_a2_mask( \
317 __TARGET_ADDR, /* target tile address*/ \
318 __REGION_ADDR, /* target region address*/\
319 __ALPHA_ADDR, /* alpha tile address */ \
320 __COLOUR) /* colour */ \
321 arm_2dp_cccn888_fill_colour_with_a2_mask( \
322 NULL, \
323 (__TARGET_ADDR), \
324 (__REGION_ADDR), \
325 (__ALPHA_ADDR), \
326 (arm_2d_color_cccn888_t){(__COLOUR).tValue})
327
328#define arm_2d_cccn888_fill_colour_with_a2_mask( \
329 __TARGET_ADDR, /* target tile address*/ \
330 __REGION_ADDR, /* target region address*/\
331 __ALPHA_ADDR, /* alpha tile address */ \
332 __COLOUR) /* colour */ \
333 arm_2dp_cccn888_fill_colour_with_a2_mask( \
334 NULL, \
335 (__TARGET_ADDR), \
336 (__REGION_ADDR), \
337 (__ALPHA_ADDR), \
338 (__COLOUR))
339
340#define arm_2d_gray8_fill_colour_with_a4_mask( \
341 __TARGET_ADDR, /* target tile address*/ \
342 __REGION_ADDR, /* target region address*/\
343 __ALPHA_ADDR, /* alpha tile address */ \
344 __COLOUR) /* colour */ \
345 arm_2dp_gray8_fill_colour_with_a4_mask( \
346 NULL, \
347 (__TARGET_ADDR), \
348 (__REGION_ADDR), \
349 (__ALPHA_ADDR), \
350 (__COLOUR))
351
352#define arm_2d_rgb565_fill_colour_with_a4_mask( \
353 __TARGET_ADDR, /* target tile address*/ \
354 __REGION_ADDR, /* target region address*/\
355 __ALPHA_ADDR, /* alpha tile address */ \
356 __COLOUR) /* colour */ \
357 arm_2dp_rgb565_fill_colour_with_a4_mask( \
358 NULL, \
359 (__TARGET_ADDR), \
360 (__REGION_ADDR), \
361 (__ALPHA_ADDR), \
362 (__COLOUR))
363
364#define arm_2d_rgb888_fill_colour_with_a4_mask( \
365 __TARGET_ADDR, /* target tile address*/ \
366 __REGION_ADDR, /* target region address*/\
367 __ALPHA_ADDR, /* alpha tile address */ \
368 __COLOUR) /* colour */ \
369 arm_2dp_cccn888_fill_colour_with_a4_mask( \
370 NULL, \
371 (__TARGET_ADDR), \
372 (__REGION_ADDR), \
373 (__ALPHA_ADDR), \
374 (arm_2d_color_cccn888_t){(__COLOUR).tValue})
375
376#define arm_2d_cccn888_fill_colour_with_a4_mask( \
377 __TARGET_ADDR, /* target tile address*/ \
378 __REGION_ADDR, /* target region address*/\
379 __ALPHA_ADDR, /* alpha tile address */ \
380 __COLOUR) /* colour */ \
381 arm_2dp_cccn888_fill_colour_with_a4_mask( \
382 NULL, \
383 (__TARGET_ADDR), \
384 (__REGION_ADDR), \
385 (__ALPHA_ADDR), \
386 (__COLOUR))
387
388#define arm_2d_rgb888_fill_colour_with_mask( \
389 __TARGET_ADDR, /* target tile address*/ \
390 __REGION_ADDR, /* target region address*/\
391 __ALPHA_ADDR, /* alpha tile address */ \
392 __COLOUR) /* colour */ \
393 arm_2dp_cccn888_fill_colour_with_mask_only( \
394 NULL, \
395 (__TARGET_ADDR), \
396 (__REGION_ADDR), \
397 (__ALPHA_ADDR), \
398 (arm_2d_color_cccn888_t){(__COLOUR).tValue})
399
400#define arm_2d_gray8_fill_colour_with_a8_mask \
401 arm_2d_gray8_fill_colour_with_mask
402#define arm_2d_rgb565_fill_colour_with_a8_mask \
403 arm_2d_rgb565_fill_colour_with_mask
404#define arm_2d_rgb888_fill_colour_with_a8_mask \
405 arm_2d_rgb888_fill_colour_with_mask
406#define arm_2d_cccn888_fill_colour_with_a8_mask \
407 arm_2d_cccn888_fill_colour_with_mask
408
409#define arm_2d_gray8_fill_colour_with_a1_mask_and_opacity( \
410 __TARGET_ADDR, /* target tile address*/ \
411 __REGION_ADDR, /* target region address*/\
412 __ALPHA_ADDR, /* alpha tile address */ \
413 __COLOUR, /* colour */ \
414 __OPACITY) \
415 arm_2dp_gray8_fill_colour_with_a1_mask_and_opacity( \
416 NULL, \
417 (__TARGET_ADDR), \
418 (__REGION_ADDR), \
419 (__ALPHA_ADDR), \
420 (__COLOUR), \
421 (__OPACITY))
422
423#define arm_2d_rgb565_fill_colour_with_a1_mask_and_opacity( \
424 __TARGET_ADDR, /* target tile address*/ \
425 __REGION_ADDR, /* target region address*/\
426 __ALPHA_ADDR, /* alpha tile address */ \
427 __COLOUR, /* colour */ \
428 __OPACITY) \
429 arm_2dp_rgb565_fill_colour_with_a1_mask_and_opacity( \
430 NULL, \
431 (__TARGET_ADDR), \
432 (__REGION_ADDR), \
433 (__ALPHA_ADDR), \
434 (__COLOUR), \
435 (__OPACITY))
436
437#define arm_2d_rgb888_fill_colour_with_a1_mask_and_opacity( \
438 __TARGET_ADDR, /* target tile address*/ \
439 __REGION_ADDR, /* target region address*/\
440 __ALPHA_ADDR, /* alpha tile address */ \
441 __COLOUR, /* colour */ \
442 __OPACITY) \
443 arm_2dp_cccn888_fill_colour_with_a1_mask_and_opacity( \
444 NULL, \
445 (__TARGET_ADDR), \
446 (__REGION_ADDR), \
447 (__ALPHA_ADDR), \
448 (arm_2d_color_cccn888_t){(__COLOUR).tValue}, \
449 (__OPACITY))
450
451#define arm_2d_cccn888_fill_colour_with_a1_mask_and_opacity( \
452 __TARGET_ADDR, /* target tile address*/ \
453 __REGION_ADDR, /* target region address*/\
454 __ALPHA_ADDR, /* alpha tile address */ \
455 __COLOUR, /* colour */ \
456 __OPACITY) \
457 arm_2dp_cccn888_fill_colour_with_a1_mask_and_opacity( \
458 NULL, \
459 (__TARGET_ADDR), \
460 (__REGION_ADDR), \
461 (__ALPHA_ADDR), \
462 (__COLOUR), \
463 (__OPACITY))
464
465#define arm_2d_gray8_fill_colour_with_a2_mask_and_opacity( \
466 __TARGET_ADDR, /* target tile address*/ \
467 __REGION_ADDR, /* target region address*/\
468 __ALPHA_ADDR, /* alpha tile address */ \
469 __COLOUR, /* colour */ \
470 __OPACITY) \
471 arm_2dp_gray8_fill_colour_with_a2_mask_and_opacity( \
472 NULL, \
473 (__TARGET_ADDR), \
474 (__REGION_ADDR), \
475 (__ALPHA_ADDR), \
476 (__COLOUR), \
477 (__OPACITY))
478
479#define arm_2d_rgb565_fill_colour_with_a2_mask_and_opacity( \
480 __TARGET_ADDR, /* target tile address*/ \
481 __REGION_ADDR, /* target region address*/\
482 __ALPHA_ADDR, /* alpha tile address */ \
483 __COLOUR, /* colour */ \
484 __OPACITY) \
485 arm_2dp_rgb565_fill_colour_with_a2_mask_and_opacity( \
486 NULL, \
487 (__TARGET_ADDR), \
488 (__REGION_ADDR), \
489 (__ALPHA_ADDR), \
490 (__COLOUR), \
491 (__OPACITY))
492
493#define arm_2d_rgb888_fill_colour_with_a2_mask_and_opacity( \
494 __TARGET_ADDR, /* target tile address*/ \
495 __REGION_ADDR, /* target region address*/\
496 __ALPHA_ADDR, /* alpha tile address */ \
497 __COLOUR, /* colour */ \
498 __OPACITY) \
499 arm_2dp_cccn888_fill_colour_with_a2_mask_and_opacity( \
500 NULL, \
501 (__TARGET_ADDR), \
502 (__REGION_ADDR), \
503 (__ALPHA_ADDR), \
504 (arm_2d_color_cccn888_t){(__COLOUR).tValue}, \
505 (__OPACITY))
506
507#define arm_2d_cccn888_fill_colour_with_a2_mask_and_opacity( \
508 __TARGET_ADDR, /* target tile address*/ \
509 __REGION_ADDR, /* target region address*/\
510 __ALPHA_ADDR, /* alpha tile address */ \
511 __COLOUR, /* colour */ \
512 __OPACITY) \
513 arm_2dp_cccn888_fill_colour_with_a2_mask_and_opacity( \
514 NULL, \
515 (__TARGET_ADDR), \
516 (__REGION_ADDR), \
517 (__ALPHA_ADDR), \
518 (__COLOUR), \
519 (__OPACITY))
520
521#define arm_2d_gray8_fill_colour_with_a4_mask_and_opacity( \
522 __TARGET_ADDR, /* target tile address*/ \
523 __REGION_ADDR, /* target region address*/\
524 __ALPHA_ADDR, /* alpha tile address */ \
525 __COLOUR, /* colour */ \
526 __OPACITY) \
527 arm_2dp_gray8_fill_colour_with_a4_mask_and_opacity( \
528 NULL, \
529 (__TARGET_ADDR), \
530 (__REGION_ADDR), \
531 (__ALPHA_ADDR), \
532 (__COLOUR), \
533 (__OPACITY))
534
535#define arm_2d_rgb565_fill_colour_with_a4_mask_and_opacity( \
536 __TARGET_ADDR, /* target tile address*/ \
537 __REGION_ADDR, /* target region address*/\
538 __ALPHA_ADDR, /* alpha tile address */ \
539 __COLOUR, /* colour */ \
540 __OPACITY) \
541 arm_2dp_rgb565_fill_colour_with_a4_mask_and_opacity( \
542 NULL, \
543 (__TARGET_ADDR), \
544 (__REGION_ADDR), \
545 (__ALPHA_ADDR), \
546 (__COLOUR), \
547 (__OPACITY))
548
549#define arm_2d_rgb888_fill_colour_with_a4_mask_and_opacity( \
550 __TARGET_ADDR, /* target tile address*/ \
551 __REGION_ADDR, /* target region address*/\
552 __ALPHA_ADDR, /* alpha tile address */ \
553 __COLOUR, /* colour */ \
554 __OPACITY) \
555 arm_2dp_cccn888_fill_colour_with_a4_mask_and_opacity( \
556 NULL, \
557 (__TARGET_ADDR), \
558 (__REGION_ADDR), \
559 (__ALPHA_ADDR), \
560 (arm_2d_color_cccn888_t){(__COLOUR).tValue}, \
561 (__OPACITY))
562
563#define arm_2d_cccn888_fill_colour_with_a4_mask_and_opacity( \
564 __TARGET_ADDR, /* target tile address*/ \
565 __REGION_ADDR, /* target region address*/\
566 __ALPHA_ADDR, /* alpha tile address */ \
567 __COLOUR, /* colour */ \
568 __OPACITY) \
569 arm_2dp_cccn888_fill_colour_with_a4_mask_and_opacity( \
570 NULL, \
571 (__TARGET_ADDR), \
572 (__REGION_ADDR), \
573 (__ALPHA_ADDR), \
574 (__COLOUR), \
575 (__OPACITY))
576
577#define arm_2d_rgb888_fill_colour_with_mask_and_opacity( \
578 __TARGET_ADDR, /* target tile address*/ \
579 __REGION_ADDR, /* target region address*/\
580 __ALPHA_ADDR, /* alpha tile address */ \
581 __COLOUR, /* colour */ \
582 __OPACITY) \
583 arm_2dp_cccn888_fill_colour_with_mask_and_opacity_only( \
584 NULL, \
585 (__TARGET_ADDR), \
586 (__REGION_ADDR), \
587 (__ALPHA_ADDR), \
588 (arm_2d_color_cccn888_t){(__COLOUR).tValue}, \
589 (__OPACITY))
590
591
592#define arm_2d_gray8_fill_colour_with_a8_mask_and_opacity \
593 arm_2d_gray8_fill_colour_with_mask_and_opacity
594#define arm_2d_rgb565_fill_colour_with_a8_mask_and_opacity \
595 arm_2d_rgb565_fill_colour_with_mask_and_opacity
596#define arm_2d_rgb888_fill_colour_with_a8_mask_and_opacity \
597 arm_2d_rgb888_fill_colour_with_mask_and_opacity
598#define arm_2d_cccn888_fill_colour_with_a8_mask_and_opacity \
599 arm_2d_cccn888_fill_colour_with_mask_and_opacity
600
601#define arm_2d_gray8_tile_copy_with_colour_keying_and_opacity( \
602 __SRC_ADDR, /* source tile address */ \
603 __DES_ADDR, /* target tile address */ \
604 __REGION_ADDR,/* region address */ \
605 __ALPHA, /* colour */ \
606 __COLOUR) /* alpha */ \
607 arm_2dp_gray8_tile_copy_with_colour_keying_and_opacity( \
608 NULL, \
609 (__SRC_ADDR), \
610 (__DES_ADDR), \
611 (__REGION_ADDR), \
612 (__ALPHA), \
613 (__COLOUR))
614
615#define arm_2d_rgb565_tile_copy_with_colour_keying_and_opacity( \
616 __SRC_ADDR, /* source tile address */ \
617 __DES_ADDR, /* target tile address */ \
618 __REGION_ADDR,/* region address */ \
619 __ALPHA, /* colour */ \
620 __COLOUR) /* alpha */ \
621 arm_2dp_rgb565_tile_copy_with_colour_keying_and_opacity( \
622 NULL, \
623 (__SRC_ADDR), \
624 (__DES_ADDR), \
625 (__REGION_ADDR), \
626 (__ALPHA), \
627 (__COLOUR))
628
629#define arm_2d_rgb888_tile_copy_with_colour_keying_and_opacity( \
630 __SRC_ADDR, /* source tile address */ \
631 __DES_ADDR, /* target tile address */ \
632 __REGION_ADDR,/* region address */ \
633 __ALPHA, /* colour */ \
634 __COLOUR) /* alpha */ \
635 arm_2dp_cccn888_tile_copy_with_colour_keying_and_opacity( \
636 NULL, \
637 (__SRC_ADDR), \
638 (__DES_ADDR), \
639 (__REGION_ADDR), \
640 (__ALPHA), \
641 (arm_2d_color_cccn888_t){(__COLOUR).tValue})
642
643#define arm_2d_cccn888_tile_copy_with_colour_keying_and_opacity( \
644 __SRC_ADDR, /* source tile address */ \
645 __DES_ADDR, /* target tile address */ \
646 __REGION_ADDR,/* region address */ \
647 __ALPHA, /* colour */ \
648 __COLOUR) /* alpha */ \
649 arm_2dp_cccn888_tile_copy_with_colour_keying_and_opacity( \
650 NULL, \
651 (__SRC_ADDR), \
652 (__DES_ADDR), \
653 (__REGION_ADDR), \
654 (__ALPHA), \
655 (__COLOUR))
656
657#define arm_2d_gray8_tile_copy_with_colour_keying_and_opacity( \
658 __SRC_ADDR, /* source tile address */ \
659 __DES_ADDR, /* target tile address */ \
660 __REGION_ADDR,/* region address */ \
661 __ALPHA, /* colour */ \
662 __COLOUR) /* alpha */ \
663 arm_2dp_gray8_tile_copy_with_colour_keying_and_opacity( \
664 NULL, \
665 (__SRC_ADDR), \
666 (__DES_ADDR), \
667 (__REGION_ADDR), \
668 (__ALPHA), \
669 (__COLOUR))
670
671#define arm_2d_rgb565_tile_copy_with_colour_keying_and_opacity( \
672 __SRC_ADDR, /* source tile address */ \
673 __DES_ADDR, /* target tile address */ \
674 __REGION_ADDR,/* region address */ \
675 __ALPHA, /* colour */ \
676 __COLOUR) /* alpha */ \
677 arm_2dp_rgb565_tile_copy_with_colour_keying_and_opacity( \
678 NULL, \
679 (__SRC_ADDR), \
680 (__DES_ADDR), \
681 (__REGION_ADDR), \
682 (__ALPHA), \
683 (__COLOUR))
684
685#define arm_2d_rgb888_tile_copy_with_colour_keying_and_opacity( \
686 __SRC_ADDR, /* source tile address */ \
687 __DES_ADDR, /* target tile address */ \
688 __REGION_ADDR,/* region address */ \
689 __ALPHA, /* colour */ \
690 __COLOUR) /* alpha */ \
691 arm_2dp_cccn888_tile_copy_with_colour_keying_and_opacity( \
692 NULL, \
693 (__SRC_ADDR), \
694 (__DES_ADDR), \
695 (__REGION_ADDR), \
696 (__ALPHA), \
697 (arm_2d_color_cccn888_t){(__COLOUR).tValue})
698
699#define arm_2d_cccn888_tile_copy_with_colour_keying_and_opacity( \
700 __SRC_ADDR, /* source tile address */ \
701 __DES_ADDR, /* target tile address */ \
702 __REGION_ADDR,/* region address */ \
703 __ALPHA, /* colour */ \
704 __COLOUR) /* alpha */ \
705 arm_2dp_cccn888_tile_copy_with_colour_keying_and_opacity( \
706 NULL, \
707 (__SRC_ADDR), \
708 (__DES_ADDR), \
709 (__REGION_ADDR), \
710 (__ALPHA), \
711 (__COLOUR))
712
713#define arm_2d_gray8_tile_copy_with_masks( \
714 __SRC_ADDR, /* source tile address */ \
715 __SRC_MSK_ADDR, /* source mask address */ \
716 __DES_ADDR, /* target tile address */ \
717 __DES_MSK_ADDR, /* target mask address */ \
718 __REGION, /* region address */ \
719 ...) /* copy mode */ \
720 arm_2dp_gray8_tile_copy_with_masks( \
721 NULL, \
722 (__SRC_ADDR), \
723 (__SRC_MSK_ADDR), \
724 (__DES_ADDR), \
725 (__DES_MSK_ADDR), \
726 (__REGION), \
727 ##__VA_ARGS__)
728
729#define arm_2d_rgb565_tile_copy_with_masks( \
730 __SRC_ADDR, /* source tile address */ \
731 __SRC_MSK_ADDR, /* source mask address */ \
732 __DES_ADDR, /* target tile address */ \
733 __DES_MSK_ADDR, /* target mask address */ \
734 __REGION, /* region address */ \
735 ...) /* copy mode */ \
736 arm_2dp_rgb565_tile_copy_with_masks( \
737 NULL, \
738 (__SRC_ADDR), \
739 (__SRC_MSK_ADDR), \
740 (__DES_ADDR), \
741 (__DES_MSK_ADDR), \
742 (__REGION), \
743 ##__VA_ARGS__)
744
745#define arm_2d_rgb888_tile_copy_with_masks \
746 arm_2d_cccn888_tile_copy_with_masks
747
748#define arm_2d_cccn888_tile_copy_with_masks( \
749 __SRC_ADDR, /* source tile address */ \
750 __SRC_MSK_ADDR, /* source mask address */ \
751 __DES_ADDR, /* target tile address */ \
752 __DES_MSK_ADDR, /* target mask address */ \
753 __REGION, /* region address */ \
754 ...) /* copy mode */ \
755 arm_2dp_cccn888_tile_copy_with_masks( \
756 NULL, \
757 (__SRC_ADDR), \
758 (__SRC_MSK_ADDR), \
759 (__DES_ADDR), \
760 (__DES_MSK_ADDR), \
761 (__REGION), \
762 ##__VA_ARGS__)
763
764#define arm_2dp_gray8_tile_fill_with_masks( \
765 __OPCODE_PTR, /* arm_2d_op_cp_t * */ \
766 __SRC_ADDR, /* source tile address */ \
767 __SRC_MSK_ADDR, /* source mask address */ \
768 __DES_ADDR, /* target tile address*/ \
769 __DES_MSK_ADDR, /* target mask address */ \
770 __REGION, /* target region address*/\
771 ...) /* mode */ \
772({ \
773 arm_fsm_rt_t tResult = (arm_fsm_rt_t)ARM_2D_ERR_UNKNOWN; \
774 switch ( (ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) \
775 & ARM_2D_CP_MODE_XY_MIRROR) { \
776 case ARM_2D_CP_MODE_NO_MIRROR: \
777 tResult = arm_2dp_gray8_tile_fill_with_masks_only( \
778 (__OPCODE_PTR), \
779 (__SRC_ADDR), \
780 (__SRC_MSK_ADDR), \
781 (__DES_ADDR), \
782 (__DES_MSK_ADDR), \
783 (__REGION)); \
784 break; \
785 case ARM_2D_CP_MODE_X_MIRROR: \
786 tResult = arm_2dp_gray8_tile_fill_with_masks_and_x_mirror( \
787 (__OPCODE_PTR), \
788 (__SRC_ADDR), \
789 (__SRC_MSK_ADDR), \
790 (__DES_ADDR), \
791 (__DES_MSK_ADDR), \
792 (__REGION)); \
793 break; \
794 case ARM_2D_CP_MODE_Y_MIRROR: \
795 tResult = arm_2dp_gray8_tile_fill_with_masks_and_y_mirror( \
796 (__OPCODE_PTR), \
797 (__SRC_ADDR), \
798 (__SRC_MSK_ADDR), \
799 (__DES_ADDR), \
800 (__DES_MSK_ADDR), \
801 (__REGION)); \
802 break; \
803 case ARM_2D_CP_MODE_XY_MIRROR: \
804 tResult = arm_2dp_gray8_tile_fill_with_masks_and_xy_mirror( \
805 (__OPCODE_PTR), \
806 (__SRC_ADDR), \
807 (__SRC_MSK_ADDR), \
808 (__DES_ADDR), \
809 (__DES_MSK_ADDR), \
810 (__REGION)); \
811 break; \
812 } \
813 tResult; \
814})
815
816#define arm_2d_gray8_tile_fill_with_masks( \
817 __SRC_ADDR, /* source tile address */ \
818 __SRC_MSK_ADDR, /* source mask address */ \
819 __DES_ADDR, /* target tile address*/ \
820 __DES_MSK_ADDR, /* target mask address */ \
821 __REGION, /* target region address*/\
822 ...) /* mode */ \
823 arm_2dp_gray8_tile_fill_with_masks( \
824 NULL, \
825 (__SRC_ADDR), \
826 (__SRC_MSK_ADDR), \
827 (__DES_ADDR), \
828 (__DES_MSK_ADDR), \
829 (__REGION), \
830 ##__VA_ARGS__)
831
832#define arm_2dp_rgb565_tile_fill_with_masks( \
833 __OPCODE_PTR, /* arm_2d_op_cp_t * */ \
834 __SRC_ADDR, /* source tile address */ \
835 __SRC_MSK_ADDR, /* source mask address */ \
836 __DES_ADDR, /* target tile address*/ \
837 __DES_MSK_ADDR, /* target mask address */ \
838 __REGION, /* target region address*/\
839 ...) /* mode */ \
840({ \
841 arm_fsm_rt_t tResult = (arm_fsm_rt_t)ARM_2D_ERR_UNKNOWN; \
842 switch ( (ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) \
843 & ARM_2D_CP_MODE_XY_MIRROR) { \
844 case ARM_2D_CP_MODE_NO_MIRROR: \
845 tResult = arm_2dp_rgb565_tile_fill_with_masks_only( \
846 (__OPCODE_PTR), \
847 (__SRC_ADDR), \
848 (__SRC_MSK_ADDR), \
849 (__DES_ADDR), \
850 (__DES_MSK_ADDR), \
851 (__REGION)); \
852 break; \
853 case ARM_2D_CP_MODE_X_MIRROR: \
854 tResult = arm_2dp_rgb565_tile_fill_with_masks_and_x_mirror( \
855 (__OPCODE_PTR), \
856 (__SRC_ADDR), \
857 (__SRC_MSK_ADDR), \
858 (__DES_ADDR), \
859 (__DES_MSK_ADDR), \
860 (__REGION)); \
861 break; \
862 case ARM_2D_CP_MODE_Y_MIRROR: \
863 tResult = arm_2dp_rgb565_tile_fill_with_masks_and_y_mirror( \
864 (__OPCODE_PTR), \
865 (__SRC_ADDR), \
866 (__SRC_MSK_ADDR), \
867 (__DES_ADDR), \
868 (__DES_MSK_ADDR), \
869 (__REGION)); \
870 break; \
871 case ARM_2D_CP_MODE_XY_MIRROR: \
872 tResult = arm_2dp_rgb565_tile_fill_with_masks_and_xy_mirror( \
873 (__OPCODE_PTR), \
874 (__SRC_ADDR), \
875 (__SRC_MSK_ADDR), \
876 (__DES_ADDR), \
877 (__DES_MSK_ADDR), \
878 (__REGION)); \
879 break; \
880 } \
881 tResult; \
882})
883
884#define arm_2d_rgb565_tile_fill_with_masks( \
885 __SRC_ADDR, /* source tile address */ \
886 __SRC_MSK_ADDR, /* source mask address */ \
887 __DES_ADDR, /* target tile address*/ \
888 __DES_MSK_ADDR, /* target mask address */ \
889 __REGION, /* target region address*/\
890 ...) /* mode */ \
891 arm_2dp_rgb565_tile_fill_with_masks( \
892 NULL, \
893 (__SRC_ADDR), \
894 (__SRC_MSK_ADDR), \
895 (__DES_ADDR), \
896 (__DES_MSK_ADDR), \
897 (__REGION), \
898 ##__VA_ARGS__)
899
900#define arm_2dp_cccn888_tile_fill_with_masks( \
901 __OPCODE_PTR, /* arm_2d_op_cp_t * */ \
902 __SRC_ADDR, /* source tile address */ \
903 __SRC_MSK_ADDR, /* source mask address */ \
904 __DES_ADDR, /* target tile address*/ \
905 __DES_MSK_ADDR, /* target mask address */ \
906 __REGION, /* target region address*/\
907 ...) /* mode */ \
908({ \
909 arm_fsm_rt_t tResult = (arm_fsm_rt_t)ARM_2D_ERR_UNKNOWN; \
910 switch ( (ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) \
911 & ARM_2D_CP_MODE_XY_MIRROR) { \
912 case ARM_2D_CP_MODE_NO_MIRROR: \
913 tResult = arm_2dp_cccn888_tile_fill_with_masks_only( \
914 (__OPCODE_PTR), \
915 (__SRC_ADDR), \
916 (__SRC_MSK_ADDR), \
917 (__DES_ADDR), \
918 (__DES_MSK_ADDR), \
919 (__REGION)); \
920 break; \
921 case ARM_2D_CP_MODE_X_MIRROR: \
922 tResult = arm_2dp_cccn888_tile_fill_with_masks_and_x_mirror( \
923 (__OPCODE_PTR), \
924 (__SRC_ADDR), \
925 (__SRC_MSK_ADDR), \
926 (__DES_ADDR), \
927 (__DES_MSK_ADDR), \
928 (__REGION)); \
929 break; \
930 case ARM_2D_CP_MODE_Y_MIRROR: \
931 tResult = arm_2dp_cccn888_tile_fill_with_masks_and_y_mirror( \
932 (__OPCODE_PTR), \
933 (__SRC_ADDR), \
934 (__SRC_MSK_ADDR), \
935 (__DES_ADDR), \
936 (__DES_MSK_ADDR), \
937 (__REGION)); \
938 break; \
939 case ARM_2D_CP_MODE_XY_MIRROR: \
940 tResult = arm_2dp_cccn888_tile_fill_with_masks_and_xy_mirror( \
941 (__OPCODE_PTR), \
942 (__SRC_ADDR), \
943 (__SRC_MSK_ADDR), \
944 (__DES_ADDR), \
945 (__DES_MSK_ADDR), \
946 (__REGION)); \
947 break; \
948 } \
949 tResult; \
950})
951
952#define arm_2d_cccn888_tile_fill_with_masks( \
953 __SRC_ADDR, /* source tile address */ \
954 __SRC_MSK_ADDR, /* source mask address */ \
955 __DES_ADDR, /* target tile address*/ \
956 __DES_MSK_ADDR, /* target mask address */ \
957 __REGION, /* target region address*/\
958 ...) /* mode */ \
959 arm_2dp_cccn888_tile_fill_with_masks( \
960 NULL, \
961 (__SRC_ADDR), \
962 (__SRC_MSK_ADDR), \
963 (__DES_ADDR), \
964 (__DES_MSK_ADDR), \
965 (__REGION), \
966 ##__VA_ARGS__)
967
968/*!
969 * \brief copy a source tile to a target tile with masks and an optional mode
970 * \param[in] __OPCODE_PTR the control block, NULL means using the default
971 * control block
972 * \param[in] __SRC_ADDR the source tile
973 * \param[in] __SRC_MSK_ADDR the mask on the source side
974 * \param[in] __DES_ADDR the target tile
975 * \param[in] __DES_MSK_ADDR the mask on the target side
976 * \param[in] __REGION the target region
977 * \param[in] ... the optional copy mode
978 * \return arm_fsm_rt_t the operation result
979 */
980#define arm_2dp_gray8_tile_copy_with_masks( \
981 __OPCODE_PTR, /* arm_2d_op_cp_msk_t * */\
982 __SRC_ADDR, /* source tile address */ \
983 __SRC_MSK_ADDR, /* source mask address */ \
984 __DES_ADDR, /* target tile address*/ \
985 __DES_MSK_ADDR, /* target mask address */ \
986 __REGION, /* target region address*/\
987 ...) /* mode */ \
988({ \
989 arm_fsm_rt_t tResult = (arm_fsm_rt_t)ARM_2D_ERR_UNKNOWN; \
990 if ((ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) & ARM_2D_CP_MODE_FILL) { \
991 tResult = arm_2dp_gray8_tile_fill_with_masks( \
992 (__OPCODE_PTR), \
993 (__SRC_ADDR), \
994 (__SRC_MSK_ADDR), \
995 (__DES_ADDR), \
996 (__DES_MSK_ADDR), \
997 (__REGION), \
998 ##__VA_ARGS__); \
999 } else { \
1000 switch ( (ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) \
1001 & ARM_2D_CP_MODE_XY_MIRROR) { \
1002 case ARM_2D_CP_MODE_NO_MIRROR: \
1003 tResult = arm_2dp_gray8_tile_copy_with_masks_only( \
1004 (__OPCODE_PTR), \
1005 (__SRC_ADDR), \
1006 (__SRC_MSK_ADDR), \
1007 (__DES_ADDR), \
1008 (__DES_MSK_ADDR), \
1009 (__REGION)); \
1010 break; \
1011 case ARM_2D_CP_MODE_X_MIRROR: \
1012 tResult = arm_2dp_gray8_tile_copy_with_masks_and_x_mirror( \
1013 (__OPCODE_PTR), \
1014 (__SRC_ADDR), \
1015 (__SRC_MSK_ADDR), \
1016 (__DES_ADDR), \
1017 (__DES_MSK_ADDR), \
1018 (__REGION)); \
1019 break; \
1020 case ARM_2D_CP_MODE_Y_MIRROR: \
1021 tResult = arm_2dp_gray8_tile_copy_with_masks_and_y_mirror( \
1022 (__OPCODE_PTR), \
1023 (__SRC_ADDR), \
1024 (__SRC_MSK_ADDR), \
1025 (__DES_ADDR), \
1026 (__DES_MSK_ADDR), \
1027 (__REGION)); \
1028 break; \
1029 case ARM_2D_CP_MODE_XY_MIRROR: \
1030 tResult = arm_2dp_gray8_tile_copy_with_masks_and_xy_mirror( \
1031 (__OPCODE_PTR), \
1032 (__SRC_ADDR), \
1033 (__SRC_MSK_ADDR), \
1034 (__DES_ADDR), \
1035 (__DES_MSK_ADDR), \
1036 (__REGION)); \
1037 break; \
1038 } \
1039 }; \
1040 tResult; \
1041})
1042
1043/*!
1044 * \brief copy a source tile to a target tile with masks and an optional mode
1045 * \param[in] __OPCODE_PTR the control block, NULL means using the default
1046 * control block
1047 * \param[in] __SRC_ADDR the source tile
1048 * \param[in] __SRC_MSK_ADDR the mask on the source side
1049 * \param[in] __DES_ADDR the target tile
1050 * \param[in] __DES_MSK_ADDR the mask on the target side
1051 * \param[in] __REGION the target region
1052 * \param[in] ... the optional copy mode
1053 * \return arm_fsm_rt_t the operation result
1054 */
1055#define arm_2dp_rgb565_tile_copy_with_masks( \
1056 __OPCODE_PTR, /* arm_2d_op_cp_msk_t * */\
1057 __SRC_ADDR, /* source tile address */ \
1058 __SRC_MSK_ADDR, /* source mask address */ \
1059 __DES_ADDR, /* target tile address*/ \
1060 __DES_MSK_ADDR, /* target mask address */ \
1061 __REGION, /* target region address*/\
1062 ...) /* mode */ \
1063({ \
1064 arm_fsm_rt_t tResult = (arm_fsm_rt_t)ARM_2D_ERR_UNKNOWN; \
1065 if ((ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) & ARM_2D_CP_MODE_FILL) { \
1066 tResult = arm_2dp_rgb565_tile_fill_with_masks( \
1067 (__OPCODE_PTR), \
1068 (__SRC_ADDR), \
1069 (__SRC_MSK_ADDR), \
1070 (__DES_ADDR), \
1071 (__DES_MSK_ADDR), \
1072 (__REGION), \
1073 ##__VA_ARGS__); \
1074 } else { \
1075 switch ( (ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) \
1076 & ARM_2D_CP_MODE_XY_MIRROR) { \
1077 case ARM_2D_CP_MODE_NO_MIRROR: \
1078 tResult = arm_2dp_rgb565_tile_copy_with_masks_only( \
1079 (__OPCODE_PTR), \
1080 (__SRC_ADDR), \
1081 (__SRC_MSK_ADDR), \
1082 (__DES_ADDR), \
1083 (__DES_MSK_ADDR), \
1084 (__REGION)); \
1085 break; \
1086 case ARM_2D_CP_MODE_X_MIRROR: \
1087 tResult = arm_2dp_rgb565_tile_copy_with_masks_and_x_mirror( \
1088 (__OPCODE_PTR), \
1089 (__SRC_ADDR), \
1090 (__SRC_MSK_ADDR), \
1091 (__DES_ADDR), \
1092 (__DES_MSK_ADDR), \
1093 (__REGION)); \
1094 break; \
1095 case ARM_2D_CP_MODE_Y_MIRROR: \
1096 tResult = arm_2dp_rgb565_tile_copy_with_masks_and_y_mirror( \
1097 (__OPCODE_PTR), \
1098 (__SRC_ADDR), \
1099 (__SRC_MSK_ADDR), \
1100 (__DES_ADDR), \
1101 (__DES_MSK_ADDR), \
1102 (__REGION)); \
1103 break; \
1104 case ARM_2D_CP_MODE_XY_MIRROR: \
1105 tResult = arm_2dp_rgb565_tile_copy_with_masks_and_xy_mirror( \
1106 (__OPCODE_PTR), \
1107 (__SRC_ADDR), \
1108 (__SRC_MSK_ADDR), \
1109 (__DES_ADDR), \
1110 (__DES_MSK_ADDR), \
1111 (__REGION)); \
1112 break; \
1113 } \
1114 }; \
1115 tResult; \
1116})
1117
1118/*!
1119 * \brief copy a source tile to a target tile with masks and an optional mode
1120 * \param[in] __OPCODE_PTR the control block, NULL means using the default
1121 * control block
1122 * \param[in] __SRC_ADDR the source tile
1123 * \param[in] __SRC_MSK_ADDR the mask on the source side
1124 * \param[in] __DES_ADDR the target tile
1125 * \param[in] __DES_MSK_ADDR the mask on the target side
1126 * \param[in] __REGION the target region
1127 * \param[in] ... the optional copy mode
1128 * \return arm_fsm_rt_t the operation result
1129 */
1130#define arm_2dp_cccn888_tile_copy_with_masks( \
1131 __OPCODE_PTR, /* arm_2d_op_cp_msk_t * */\
1132 __SRC_ADDR, /* source tile address */ \
1133 __SRC_MSK_ADDR, /* source mask address */ \
1134 __DES_ADDR, /* target tile address*/ \
1135 __DES_MSK_ADDR, /* target mask address */ \
1136 __REGION, /* target region address*/\
1137 ...) /* mode */ \
1138({ \
1139 arm_fsm_rt_t tResult = (arm_fsm_rt_t)ARM_2D_ERR_UNKNOWN; \
1140 if ((ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) & ARM_2D_CP_MODE_FILL) { \
1141 tResult = arm_2dp_cccn888_tile_fill_with_masks( \
1142 (__OPCODE_PTR), \
1143 (__SRC_ADDR), \
1144 (__SRC_MSK_ADDR), \
1145 (__DES_ADDR), \
1146 (__DES_MSK_ADDR), \
1147 (__REGION), \
1148 ##__VA_ARGS__); \
1149 } else { \
1150 switch ( (ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) \
1151 & ARM_2D_CP_MODE_XY_MIRROR) { \
1152 case ARM_2D_CP_MODE_NO_MIRROR: \
1153 tResult = arm_2dp_cccn888_tile_copy_with_masks_only( \
1154 (__OPCODE_PTR), \
1155 (__SRC_ADDR), \
1156 (__SRC_MSK_ADDR), \
1157 (__DES_ADDR), \
1158 (__DES_MSK_ADDR), \
1159 (__REGION)); \
1160 break; \
1161 case ARM_2D_CP_MODE_X_MIRROR: \
1162 tResult = arm_2dp_cccn888_tile_copy_with_masks_and_x_mirror( \
1163 (__OPCODE_PTR), \
1164 (__SRC_ADDR), \
1165 (__SRC_MSK_ADDR), \
1166 (__DES_ADDR), \
1167 (__DES_MSK_ADDR), \
1168 (__REGION)); \
1169 break; \
1170 case ARM_2D_CP_MODE_Y_MIRROR: \
1171 tResult = arm_2dp_cccn888_tile_copy_with_masks_and_y_mirror( \
1172 (__OPCODE_PTR), \
1173 (__SRC_ADDR), \
1174 (__SRC_MSK_ADDR), \
1175 (__DES_ADDR), \
1176 (__DES_MSK_ADDR), \
1177 (__REGION)); \
1178 break; \
1179 case ARM_2D_CP_MODE_XY_MIRROR: \
1180 tResult = arm_2dp_cccn888_tile_copy_with_masks_and_xy_mirror( \
1181 (__OPCODE_PTR), \
1182 (__SRC_ADDR), \
1183 (__SRC_MSK_ADDR), \
1184 (__DES_ADDR), \
1185 (__DES_MSK_ADDR), \
1186 (__REGION)); \
1187 break; \
1188 } \
1189 }; \
1190 tResult; \
1191})
1192
1193/*!
1194 * \brief copy a source tile to a target tile with a source mask and an optional
1195 * mode
1196 * \param[in] __OPCODE_PTR the control block, NULL means using the default
1197 * control block
1198 * \param[in] __SRC_ADDR the source tile
1199 * \param[in] __SRC_MSK_ADDR the mask on the source side
1200 * \param[in] __DES_ADDR the target tile
1201 * \param[in] __REGION the target region
1202 * \param[in] ... the optional copy mode
1203 * \return arm_fsm_rt_t the operation result
1204 */
1205#define arm_2dp_gray8_tile_copy_with_src_mask( \
1206 __OPCODE_PTR, /* arm_2d_op_cp_msk_t * */\
1207 __SRC_ADDR, /* source tile address */ \
1208 __SRC_MSK_ADDR, /* source mask address */ \
1209 __DES_ADDR, /* target tile address*/ \
1210 __REGION, /* target region address*/\
1211 ...) /* mode */ \
1212({ \
1213 arm_fsm_rt_t tResult = (arm_fsm_rt_t)ARM_2D_ERR_UNKNOWN; \
1214 if ((ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) & ARM_2D_CP_MODE_FILL) { \
1215 tResult = arm_2dp_gray8_tile_fill_with_src_mask( \
1216 (__OPCODE_PTR), \
1217 (__SRC_ADDR), \
1218 (__SRC_MSK_ADDR), \
1219 (__DES_ADDR), \
1220 (__REGION), \
1221 ##__VA_ARGS__); \
1222 } else { \
1223 switch ( (ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) \
1224 & ARM_2D_CP_MODE_XY_MIRROR) { \
1225 case ARM_2D_CP_MODE_NO_MIRROR: \
1226 tResult = arm_2dp_gray8_tile_copy_with_src_mask_only( \
1227 (__OPCODE_PTR), \
1228 (__SRC_ADDR), \
1229 (__SRC_MSK_ADDR), \
1230 (__DES_ADDR), \
1231 (__REGION)); \
1232 break; \
1233 case ARM_2D_CP_MODE_X_MIRROR: \
1234 tResult = arm_2dp_gray8_tile_copy_with_src_mask_and_x_mirror( \
1235 (__OPCODE_PTR), \
1236 (__SRC_ADDR), \
1237 (__SRC_MSK_ADDR), \
1238 (__DES_ADDR), \
1239 (__REGION)); \
1240 break; \
1241 case ARM_2D_CP_MODE_Y_MIRROR: \
1242 tResult = arm_2dp_gray8_tile_copy_with_src_mask_and_y_mirror( \
1243 (__OPCODE_PTR), \
1244 (__SRC_ADDR), \
1245 (__SRC_MSK_ADDR), \
1246 (__DES_ADDR), \
1247 (__REGION)); \
1248 break; \
1249 case ARM_2D_CP_MODE_XY_MIRROR: \
1250 tResult = arm_2dp_gray8_tile_copy_with_src_mask_and_xy_mirror( \
1251 (__OPCODE_PTR), \
1252 (__SRC_ADDR), \
1253 (__SRC_MSK_ADDR), \
1254 (__DES_ADDR), \
1255 (__REGION)); \
1256 break; \
1257 } \
1258 }; \
1259 tResult; \
1260})
1261
1262#define arm_2d_gray8_tile_copy_with_src_mask( \
1263 __SRC_ADDR, /* source tile address */ \
1264 __SRC_MSK_ADDR, /* source mask address */ \
1265 __DES_ADDR, /* target tile address*/ \
1266 __REGION, /* target region address*/\
1267 ...) /* mode */ \
1268 arm_2dp_gray8_tile_copy_with_src_mask(NULL, \
1269 __SRC_ADDR, /* source tile address */ \
1270 __SRC_MSK_ADDR, /* source mask address */ \
1271 __DES_ADDR, /* target tile address*/ \
1272 __REGION, /* target region address*/\
1273 ##__VA_ARGS__)
1274
1275/*!
1276 * \brief copy a source tile to a target tile with a source mask and an optional
1277 * mode
1278 * \param[in] __OPCODE_PTR the control block, NULL means using the default
1279 * control block
1280 * \param[in] __SRC_ADDR the source tile
1281 * \param[in] __SRC_MSK_ADDR the mask on the source side
1282 * \param[in] __DES_ADDR the target tile
1283 * \param[in] __REGION the target region
1284 * \param[in] ... the optional copy mode
1285 * \return arm_fsm_rt_t the operation result
1286 */
1287#define arm_2dp_rgb565_tile_copy_with_src_mask( \
1288 __OPCODE_PTR, /* arm_2d_op_cp_msk_t * */\
1289 __SRC_ADDR, /* source tile address */ \
1290 __SRC_MSK_ADDR, /* source mask address */ \
1291 __DES_ADDR, /* target tile address*/ \
1292 __REGION, /* target region address*/\
1293 ...) /* mode */ \
1294({ \
1295 arm_fsm_rt_t tResult = (arm_fsm_rt_t)ARM_2D_ERR_UNKNOWN; \
1296 if ((ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) & ARM_2D_CP_MODE_FILL) { \
1297 tResult = arm_2dp_rgb565_tile_fill_with_src_mask( \
1298 (__OPCODE_PTR), \
1299 (__SRC_ADDR), \
1300 (__SRC_MSK_ADDR), \
1301 (__DES_ADDR), \
1302 (__REGION), \
1303 ##__VA_ARGS__); \
1304 } else { \
1305 switch ( (ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) \
1306 & ARM_2D_CP_MODE_XY_MIRROR) { \
1307 case ARM_2D_CP_MODE_NO_MIRROR: \
1308 tResult = arm_2dp_rgb565_tile_copy_with_src_mask_only( \
1309 (__OPCODE_PTR), \
1310 (__SRC_ADDR), \
1311 (__SRC_MSK_ADDR), \
1312 (__DES_ADDR), \
1313 (__REGION)); \
1314 break; \
1315 case ARM_2D_CP_MODE_X_MIRROR: \
1316 tResult = arm_2dp_rgb565_tile_copy_with_src_mask_and_x_mirror( \
1317 (__OPCODE_PTR), \
1318 (__SRC_ADDR), \
1319 (__SRC_MSK_ADDR), \
1320 (__DES_ADDR), \
1321 (__REGION)); \
1322 break; \
1323 case ARM_2D_CP_MODE_Y_MIRROR: \
1324 tResult = arm_2dp_rgb565_tile_copy_with_src_mask_and_y_mirror( \
1325 (__OPCODE_PTR), \
1326 (__SRC_ADDR), \
1327 (__SRC_MSK_ADDR), \
1328 (__DES_ADDR), \
1329 (__REGION)); \
1330 break; \
1331 case ARM_2D_CP_MODE_XY_MIRROR: \
1332 tResult = arm_2dp_rgb565_tile_copy_with_src_mask_and_xy_mirror( \
1333 (__OPCODE_PTR), \
1334 (__SRC_ADDR), \
1335 (__SRC_MSK_ADDR), \
1336 (__DES_ADDR), \
1337 (__REGION)); \
1338 break; \
1339 } \
1340 }; \
1341 tResult; \
1342})
1343
1344#define arm_2d_rgb565_tile_copy_with_src_mask( \
1345 __SRC_ADDR, /* source tile address */ \
1346 __SRC_MSK_ADDR, /* source mask address */ \
1347 __DES_ADDR, /* target tile address*/ \
1348 __REGION, /* target region address*/\
1349 ...) /* mode */ \
1350 arm_2dp_rgb565_tile_copy_with_src_mask(NULL, \
1351 __SRC_ADDR, /* source tile address */ \
1352 __SRC_MSK_ADDR, /* source mask address */ \
1353 __DES_ADDR, /* target tile address*/ \
1354 __REGION, /* target region address*/\
1355 ##__VA_ARGS__)
1356
1357/*!
1358 * \brief copy a source tile to a target tile with a source mask and an optional
1359 * mode
1360 * \param[in] __OPCODE_PTR the control block, NULL means using the default
1361 * control block
1362 * \param[in] __SRC_ADDR the source tile
1363 * \param[in] __SRC_MSK_ADDR the mask on the source side
1364 * \param[in] __DES_ADDR the target tile
1365 * \param[in] __REGION the target region
1366 * \param[in] ... the optional copy mode
1367 * \return arm_fsm_rt_t the operation result
1368 */
1369#define arm_2dp_cccn888_tile_copy_with_src_mask( \
1370 __OPCODE_PTR, /* arm_2d_op_cp_msk_t * */\
1371 __SRC_ADDR, /* source tile address */ \
1372 __SRC_MSK_ADDR, /* source mask address */ \
1373 __DES_ADDR, /* target tile address*/ \
1374 __REGION, /* target region address*/\
1375 ...) /* mode */ \
1376({ \
1377 arm_fsm_rt_t tResult = (arm_fsm_rt_t)ARM_2D_ERR_UNKNOWN; \
1378 if ((ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) & ARM_2D_CP_MODE_FILL) { \
1379 tResult = arm_2dp_cccn888_tile_fill_with_src_mask( \
1380 (__OPCODE_PTR), \
1381 (__SRC_ADDR), \
1382 (__SRC_MSK_ADDR), \
1383 (__DES_ADDR), \
1384 (__REGION), \
1385 ##__VA_ARGS__); \
1386 } else { \
1387 switch ( (ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) \
1388 & ARM_2D_CP_MODE_XY_MIRROR) { \
1389 case ARM_2D_CP_MODE_NO_MIRROR: \
1390 tResult = arm_2dp_cccn888_tile_copy_with_src_mask_only( \
1391 (__OPCODE_PTR), \
1392 (__SRC_ADDR), \
1393 (__SRC_MSK_ADDR), \
1394 (__DES_ADDR), \
1395 (__REGION)); \
1396 break; \
1397 case ARM_2D_CP_MODE_X_MIRROR: \
1398 tResult = arm_2dp_cccn888_tile_copy_with_src_mask_and_x_mirror( \
1399 (__OPCODE_PTR), \
1400 (__SRC_ADDR), \
1401 (__SRC_MSK_ADDR), \
1402 (__DES_ADDR), \
1403 (__REGION)); \
1404 break; \
1405 case ARM_2D_CP_MODE_Y_MIRROR: \
1406 tResult = arm_2dp_cccn888_tile_copy_with_src_mask_and_y_mirror( \
1407 (__OPCODE_PTR), \
1408 (__SRC_ADDR), \
1409 (__SRC_MSK_ADDR), \
1410 (__DES_ADDR), \
1411 (__REGION)); \
1412 break; \
1413 case ARM_2D_CP_MODE_XY_MIRROR: \
1414 tResult = arm_2dp_cccn888_tile_copy_with_src_mask_and_xy_mirror(\
1415 (__OPCODE_PTR), \
1416 (__SRC_ADDR), \
1417 (__SRC_MSK_ADDR), \
1418 (__DES_ADDR), \
1419 (__REGION)); \
1420 break; \
1421 } \
1422 }; \
1423 tResult; \
1424})
1425
1426#define arm_2d_cccn888_tile_copy_with_src_mask( \
1427 __SRC_ADDR, /* source tile address */ \
1428 __SRC_MSK_ADDR, /* source mask address */ \
1429 __DES_ADDR, /* target tile address*/ \
1430 __REGION, /* target region address*/\
1431 ...) /* mode */ \
1432 arm_2dp_cccn888_tile_copy_with_src_mask(NULL, \
1433 __SRC_ADDR, /* source tile address */ \
1434 __SRC_MSK_ADDR, /* source mask address */ \
1435 __DES_ADDR, /* target tile address*/ \
1436 __REGION, /* target region address*/\
1437 ##__VA_ARGS__)
1438
1439#define arm_2d_rgb888_tile_copy_with_src_mask \
1440 arm_2d_cccn888_tile_copy_with_src_mask
1441
1442#define arm_2dp_gray8_tile_fill_with_src_mask( \
1443 __OPCODE_PTR, /* arm_2d_op_cp_t * */ \
1444 __SRC_ADDR, /* source tile address */ \
1445 __SRC_MSK_ADDR, /* source mask address */ \
1446 __DES_ADDR, /* target tile address*/ \
1447 __REGION, /* target region address*/\
1448 ...) /* mode */ \
1449({ \
1450 arm_fsm_rt_t tResult = (arm_fsm_rt_t)ARM_2D_ERR_UNKNOWN; \
1451 switch ( (ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) \
1452 & ARM_2D_CP_MODE_XY_MIRROR) { \
1453 case ARM_2D_CP_MODE_NO_MIRROR: \
1454 tResult = arm_2dp_gray8_tile_fill_with_src_mask_only( \
1455 (__OPCODE_PTR), \
1456 (__SRC_ADDR), \
1457 (__SRC_MSK_ADDR), \
1458 (__DES_ADDR), \
1459 (__REGION)); \
1460 break; \
1461 case ARM_2D_CP_MODE_X_MIRROR: \
1462 tResult = arm_2dp_gray8_tile_fill_with_src_mask_and_x_mirror( \
1463 (__OPCODE_PTR), \
1464 (__SRC_ADDR), \
1465 (__SRC_MSK_ADDR), \
1466 (__DES_ADDR), \
1467 (__REGION)); \
1468 break; \
1469 case ARM_2D_CP_MODE_Y_MIRROR: \
1470 tResult = arm_2dp_gray8_tile_fill_with_src_mask_and_y_mirror( \
1471 (__OPCODE_PTR), \
1472 (__SRC_ADDR), \
1473 (__SRC_MSK_ADDR), \
1474 (__DES_ADDR), \
1475 (__REGION)); \
1476 break; \
1477 case ARM_2D_CP_MODE_XY_MIRROR: \
1478 tResult = arm_2dp_gray8_tile_fill_with_src_mask_and_xy_mirror( \
1479 (__OPCODE_PTR), \
1480 (__SRC_ADDR), \
1481 (__SRC_MSK_ADDR), \
1482 (__DES_ADDR), \
1483 (__REGION)); \
1484 break; \
1485 } \
1486 tResult; \
1487})
1488
1489#define arm_2d_gray8_tile_fill_with_src_mask( \
1490 __SRC_ADDR, /* source tile address */ \
1491 __SRC_MSK_ADDR, /* source mask address */ \
1492 __DES_ADDR, /* target tile address*/ \
1493 __REGION, /* target region address*/\
1494 ...) /* mode */ \
1495 arm_2dp_gray8_tile_fill_with_src_mask(NULL, \
1496 __SRC_ADDR, /* source tile address */ \
1497 __SRC_MSK_ADDR, /* source mask address */ \
1498 __DES_ADDR, /* target tile address*/ \
1499 __REGION, /* target region address*/\
1500 ##__VA_ARGS__)
1501
1502#define arm_2dp_rgb565_tile_fill_with_src_mask( \
1503 __OPCODE_PTR, /* arm_2d_op_cp_t * */ \
1504 __SRC_ADDR, /* source tile address */ \
1505 __SRC_MSK_ADDR, /* source mask address */ \
1506 __DES_ADDR, /* target tile address*/ \
1507 __REGION, /* target region address*/\
1508 ...) /* mode */ \
1509({ \
1510 arm_fsm_rt_t tResult = (arm_fsm_rt_t)ARM_2D_ERR_UNKNOWN; \
1511 switch ( (ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) \
1512 & ARM_2D_CP_MODE_XY_MIRROR) { \
1513 case ARM_2D_CP_MODE_NO_MIRROR: \
1514 tResult = arm_2dp_rgb565_tile_fill_with_src_mask_only( \
1515 (__OPCODE_PTR), \
1516 (__SRC_ADDR), \
1517 (__SRC_MSK_ADDR), \
1518 (__DES_ADDR), \
1519 (__REGION)); \
1520 break; \
1521 case ARM_2D_CP_MODE_X_MIRROR: \
1522 tResult = arm_2dp_rgb565_tile_fill_with_src_mask_and_x_mirror( \
1523 (__OPCODE_PTR), \
1524 (__SRC_ADDR), \
1525 (__SRC_MSK_ADDR), \
1526 (__DES_ADDR), \
1527 (__REGION)); \
1528 break; \
1529 case ARM_2D_CP_MODE_Y_MIRROR: \
1530 tResult = arm_2dp_rgb565_tile_fill_with_src_mask_and_y_mirror( \
1531 (__OPCODE_PTR), \
1532 (__SRC_ADDR), \
1533 (__SRC_MSK_ADDR), \
1534 (__DES_ADDR), \
1535 (__REGION)); \
1536 break; \
1537 case ARM_2D_CP_MODE_XY_MIRROR: \
1538 tResult = arm_2dp_rgb565_tile_fill_with_src_mask_and_xy_mirror( \
1539 (__OPCODE_PTR), \
1540 (__SRC_ADDR), \
1541 (__SRC_MSK_ADDR), \
1542 (__DES_ADDR), \
1543 (__REGION)); \
1544 break; \
1545 } \
1546 tResult; \
1547})
1548
1549#define arm_2d_rgb565_tile_fill_with_src_mask( \
1550 __SRC_ADDR, /* source tile address */ \
1551 __SRC_MSK_ADDR, /* source mask address */ \
1552 __DES_ADDR, /* target tile address*/ \
1553 __REGION, /* target region address*/\
1554 ...) /* mode */ \
1555 arm_2dp_rgb565_tile_fill_with_src_mask(NULL, \
1556 __SRC_ADDR, /* source tile address */ \
1557 __SRC_MSK_ADDR, /* source mask address */ \
1558 __DES_ADDR, /* target tile address*/ \
1559 __REGION, /* target region address*/\
1560 ##__VA_ARGS__)
1561
1562#define arm_2dp_cccn888_tile_fill_with_src_mask( \
1563 __OPCODE_PTR, /* arm_2d_op_cp_t * */ \
1564 __SRC_ADDR, /* source tile address */ \
1565 __SRC_MSK_ADDR, /* source mask address */ \
1566 __DES_ADDR, /* target tile address*/ \
1567 __REGION, /* target region address*/\
1568 ...) /* mode */ \
1569({ \
1570 arm_fsm_rt_t tResult = (arm_fsm_rt_t)ARM_2D_ERR_UNKNOWN; \
1571 switch ( (ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) \
1572 & ARM_2D_CP_MODE_XY_MIRROR) { \
1573 case ARM_2D_CP_MODE_NO_MIRROR: \
1574 tResult = arm_2dp_cccn888_tile_fill_with_src_mask_only( \
1575 (__OPCODE_PTR), \
1576 (__SRC_ADDR), \
1577 (__SRC_MSK_ADDR), \
1578 (__DES_ADDR), \
1579 (__REGION)); \
1580 break; \
1581 case ARM_2D_CP_MODE_X_MIRROR: \
1582 tResult = arm_2dp_cccn888_tile_fill_with_src_mask_and_x_mirror( \
1583 (__OPCODE_PTR), \
1584 (__SRC_ADDR), \
1585 (__SRC_MSK_ADDR), \
1586 (__DES_ADDR), \
1587 (__REGION)); \
1588 break; \
1589 case ARM_2D_CP_MODE_Y_MIRROR: \
1590 tResult = arm_2dp_cccn888_tile_fill_with_src_mask_and_y_mirror( \
1591 (__OPCODE_PTR), \
1592 (__SRC_ADDR), \
1593 (__SRC_MSK_ADDR), \
1594 (__DES_ADDR), \
1595 (__REGION)); \
1596 break; \
1597 case ARM_2D_CP_MODE_XY_MIRROR: \
1598 tResult = arm_2dp_cccn888_tile_fill_with_src_mask_and_xy_mirror( \
1599 (__OPCODE_PTR), \
1600 (__SRC_ADDR), \
1601 (__SRC_MSK_ADDR), \
1602 (__DES_ADDR), \
1603 (__REGION)); \
1604 break; \
1605 } \
1606 tResult; \
1607})
1608
1609#define arm_2d_cccn888_tile_fill_with_src_mask( \
1610 __SRC_ADDR, /* source tile address */ \
1611 __SRC_MSK_ADDR, /* source mask address */ \
1612 __DES_ADDR, /* target tile address*/ \
1613 __REGION, /* target region address*/\
1614 ...) /* mode */ \
1615 arm_2dp_cccn888_tile_fill_with_src_mask(NULL, \
1616 __SRC_ADDR, /* source tile address */ \
1617 __SRC_MSK_ADDR, /* source mask address */ \
1618 __DES_ADDR, /* target tile address*/ \
1619 __REGION, /* target region address*/\
1620 ##__VA_ARGS__)
1621
1622#define arm_2d_gray8_tile_copy_with_src_mask_only( \
1623 __SRC_ADDR, /* source tile address */ \
1624 __SRC_MSK_ADDR, /* source mask address */ \
1625 __DES_ADDR, /* target tile address */ \
1626 __REGION) /* region address */ \
1627 arm_2dp_gray8_tile_copy_with_src_mask_only( \
1628 NULL, \
1629 (__SRC_ADDR), \
1630 (__SRC_MSK_ADDR), \
1631 (__DES_ADDR), \
1632 (__REGION))
1633
1634#define arm_2d_rgb565_tile_copy_with_src_mask_only( \
1635 __SRC_ADDR, /* source tile address */ \
1636 __SRC_MSK_ADDR, /* source mask address */ \
1637 __DES_ADDR, /* target tile address */ \
1638 __REGION) /* region address */ \
1639 arm_2dp_rgb565_tile_copy_with_src_mask_only( \
1640 NULL, \
1641 (__SRC_ADDR), \
1642 (__SRC_MSK_ADDR), \
1643 (__DES_ADDR), \
1644 (__REGION))
1645
1646
1647#define arm_2d_rgb888_tile_copy_with_src_mask_only \
1648 arm_2d_cccn888_tile_copy_with_src_mask_only
1649
1650#define arm_2d_cccn888_tile_copy_with_src_mask_only( \
1651 __SRC_ADDR, /* source tile address */ \
1652 __SRC_MSK_ADDR, /* source mask address */ \
1653 __DES_ADDR, /* target tile address */ \
1654 __REGION) /* region address */ \
1655 arm_2dp_cccn888_tile_copy_with_src_mask_only( \
1656 NULL, \
1657 (__SRC_ADDR), \
1658 (__SRC_MSK_ADDR), \
1659 (__DES_ADDR), \
1660 (__REGION))
1661
1662#define arm_2d_gray8_tile_copy_with_src_mask_and_x_mirror( \
1663 __SRC_ADDR, /* source tile address */ \
1664 __SRC_MSK_ADDR, /* source mask address */ \
1665 __DES_ADDR, /* target tile address */ \
1666 __REGION) /* region address */ \
1667 arm_2dp_gray8_tile_copy_with_src_mask_and_x_mirror( \
1668 NULL, \
1669 (__SRC_ADDR), \
1670 (__SRC_MSK_ADDR), \
1671 (__DES_ADDR), \
1672 (__REGION))
1673
1674
1675#define arm_2d_rgb565_tile_copy_with_src_mask_and_x_mirror( \
1676 __SRC_ADDR, /* source tile address */ \
1677 __SRC_MSK_ADDR, /* source mask address */ \
1678 __DES_ADDR, /* target tile address */ \
1679 __REGION) /* region address */ \
1680 arm_2dp_rgb565_tile_copy_with_src_mask_and_x_mirror( \
1681 NULL, \
1682 (__SRC_ADDR), \
1683 (__SRC_MSK_ADDR), \
1684 (__DES_ADDR), \
1685 (__REGION))
1686
1687
1688#define arm_2d_rgb888_tile_copy_with_src_mask_and_x_mirror \
1689 arm_2d_cccn888_tile_copy_with_src_mask_and_x_mirror
1690
1691#define arm_2d_cccn888_tile_copy_with_src_mask_and_x_mirror( \
1692 __SRC_ADDR, /* source tile address */ \
1693 __SRC_MSK_ADDR, /* source mask address */ \
1694 __DES_ADDR, /* target tile address */ \
1695 __REGION) /* region address */ \
1696 arm_2dp_cccn888_tile_copy_with_src_mask_and_x_mirror( \
1697 NULL, \
1698 (__SRC_ADDR), \
1699 (__SRC_MSK_ADDR), \
1700 (__DES_ADDR), \
1701 (__REGION))
1702
1703#define arm_2d_gray8_tile_copy_with_src_mask_and_y_mirror( \
1704 __SRC_ADDR, /* source tile address */ \
1705 __SRC_MSK_ADDR, /* source mask address */ \
1706 __DES_ADDR, /* target tile address */ \
1707 __REGION) /* region address */ \
1708 arm_2dp_gray8_tile_copy_with_src_mask_and_y_mirror( \
1709 NULL, \
1710 (__SRC_ADDR), \
1711 (__SRC_MSK_ADDR), \
1712 (__DES_ADDR), \
1713 (__REGION))
1714
1715
1716#define arm_2d_rgb565_tile_copy_with_src_mask_and_y_mirror( \
1717 __SRC_ADDR, /* source tile address */ \
1718 __SRC_MSK_ADDR, /* source mask address */ \
1719 __DES_ADDR, /* target tile address */ \
1720 __REGION) /* region address */ \
1721 arm_2dp_rgb565_tile_copy_with_src_mask_and_y_mirror( \
1722 NULL, \
1723 (__SRC_ADDR), \
1724 (__SRC_MSK_ADDR), \
1725 (__DES_ADDR), \
1726 (__REGION))
1727
1728
1729#define arm_2d_rgb888_tile_copy_with_src_mask_and_y_mirror \
1730 arm_2d_cccn888_tile_copy_with_src_mask_and_y_mirror
1731
1732#define arm_2d_cccn888_tile_copy_with_src_mask_and_y_mirror( \
1733 __SRC_ADDR, /* source tile address */ \
1734 __SRC_MSK_ADDR, /* source mask address */ \
1735 __DES_ADDR, /* target tile address */ \
1736 __REGION) /* region address */ \
1737 arm_2dp_cccn888_tile_copy_with_src_mask_and_y_mirror( \
1738 NULL, \
1739 (__SRC_ADDR), \
1740 (__SRC_MSK_ADDR), \
1741 (__DES_ADDR), \
1742 (__REGION))
1743
1744#define arm_2d_gray8_tile_copy_with_src_mask_and_xy_mirror( \
1745 __SRC_ADDR, /* source tile address */ \
1746 __SRC_MSK_ADDR, /* source mask address */ \
1747 __DES_ADDR, /* target tile address */ \
1748 __REGION) /* region address */ \
1749 arm_2dp_gray8_tile_copy_with_src_mask_and_xy_mirror( \
1750 NULL, \
1751 (__SRC_ADDR), \
1752 (__SRC_MSK_ADDR), \
1753 (__DES_ADDR), \
1754 (__REGION))
1755
1756
1757#define arm_2d_rgb565_tile_copy_with_src_mask_and_xy_mirror( \
1758 __SRC_ADDR, /* source tile address */ \
1759 __SRC_MSK_ADDR, /* source mask address */ \
1760 __DES_ADDR, /* target tile address */ \
1761 __REGION) /* region address */ \
1762 arm_2dp_rgb565_tile_copy_with_src_mask_and_xy_mirror( \
1763 NULL, \
1764 (__SRC_ADDR), \
1765 (__SRC_MSK_ADDR), \
1766 (__DES_ADDR), \
1767 (__REGION))
1768
1769
1770#define arm_2d_rgb888_tile_copy_with_src_mask_and_xy_mirror \
1771 arm_2d_cccn888_tile_copy_with_src_mask_and_xy_mirror
1772
1773#define arm_2d_cccn888_tile_copy_with_src_mask_and_xy_mirror( \
1774 __SRC_ADDR, /* source tile address */ \
1775 __SRC_MSK_ADDR, /* source mask address */ \
1776 __DES_ADDR, /* target tile address */ \
1777 __REGION) /* region address */ \
1778 arm_2dp_cccn888_tile_copy_with_src_mask_and_xy_mirror( \
1779 NULL, \
1780 (__SRC_ADDR), \
1781 (__SRC_MSK_ADDR), \
1782 (__DES_ADDR), \
1783 (__REGION))
1784
1785#define arm_2d_gray8_tile_fill_with_src_mask_only( \
1786 __SRC_ADDR, /* source tile address */ \
1787 __SRC_MSK_ADDR, /* source mask address */ \
1788 __DES_ADDR, /* target tile address */ \
1789 __REGION) /* region address */ \
1790 arm_2dp_gray8_tile_fill_with_src_mask_only( \
1791 NULL, \
1792 (__SRC_ADDR), \
1793 (__SRC_MSK_ADDR), \
1794 (__DES_ADDR), \
1795 (__REGION))
1796
1797
1798#define arm_2d_rgb565_tile_fill_with_src_mask_only( \
1799 __SRC_ADDR, /* source tile address */ \
1800 __SRC_MSK_ADDR, /* source mask address */ \
1801 __DES_ADDR, /* target tile address */ \
1802 __REGION) /* region address */ \
1803 arm_2dp_rgb565_tile_fill_with_src_mask_only( \
1804 NULL, \
1805 (__SRC_ADDR), \
1806 (__SRC_MSK_ADDR), \
1807 (__DES_ADDR), \
1808 (__REGION))
1809
1810
1811#define arm_2d_rgb888_tile_fill_with_src_mask_only \
1812 arm_2d_cccn888_tile_fill_with_src_mask_only
1813
1814#define arm_2d_cccn888_tile_fill_with_src_mask_only( \
1815 __SRC_ADDR, /* source tile address */ \
1816 __SRC_MSK_ADDR, /* source mask address */ \
1817 __DES_ADDR, /* target tile address */ \
1818 __REGION) /* region address */ \
1819 arm_2dp_cccn888_tile_fill_with_src_mask_only( \
1820 NULL, \
1821 (__SRC_ADDR), \
1822 (__SRC_MSK_ADDR), \
1823 (__DES_ADDR), \
1824 (__REGION))
1825
1826#define arm_2d_gray8_tile_fill_with_src_mask_and_x_mirror( \
1827 __SRC_ADDR, /* source tile address */ \
1828 __SRC_MSK_ADDR, /* source mask address */ \
1829 __DES_ADDR, /* target tile address */ \
1830 __REGION) /* region address */ \
1831 arm_2dp_gray8_tile_fill_with_src_mask_and_x_mirror( \
1832 NULL, \
1833 (__SRC_ADDR), \
1834 (__SRC_MSK_ADDR), \
1835 (__DES_ADDR), \
1836 (__REGION))
1837
1838
1839#define arm_2d_rgb565_tile_fill_with_src_mask_and_x_mirror( \
1840 __SRC_ADDR, /* source tile address */ \
1841 __SRC_MSK_ADDR, /* source mask address */ \
1842 __DES_ADDR, /* target tile address */ \
1843 __REGION) /* region address */ \
1844 arm_2dp_rgb565_tile_fill_with_src_mask_and_x_mirror( \
1845 NULL, \
1846 (__SRC_ADDR), \
1847 (__SRC_MSK_ADDR), \
1848 (__DES_ADDR), \
1849 (__REGION))
1850
1851
1852#define arm_2d_rgb888_tile_fill_with_src_mask_and_x_mirror \
1853 arm_2d_cccn888_tile_fill_with_src_mask_and_x_mirror
1854
1855#define arm_2d_cccn888_tile_fill_with_src_mask_and_x_mirror( \
1856 __SRC_ADDR, /* source tile address */ \
1857 __SRC_MSK_ADDR, /* source mask address */ \
1858 __DES_ADDR, /* target tile address */ \
1859 __REGION) /* region address */ \
1860 arm_2dp_cccn888_tile_fill_with_src_mask_and_x_mirror( \
1861 NULL, \
1862 (__SRC_ADDR), \
1863 (__SRC_MSK_ADDR), \
1864 (__DES_ADDR), \
1865 (__REGION))
1866
1867#define arm_2d_gray8_tile_fill_with_src_mask_and_y_mirror( \
1868 __SRC_ADDR, /* source tile address */ \
1869 __SRC_MSK_ADDR, /* source mask address */ \
1870 __DES_ADDR, /* target tile address */ \
1871 __REGION) /* region address */ \
1872 arm_2dp_gray8_tile_fill_with_src_mask_and_y_mirror( \
1873 NULL, \
1874 (__SRC_ADDR), \
1875 (__SRC_MSK_ADDR), \
1876 (__DES_ADDR), \
1877 (__REGION))
1878
1879
1880#define arm_2d_rgb565_tile_fill_with_src_mask_and_y_mirror( \
1881 __SRC_ADDR, /* source tile address */ \
1882 __SRC_MSK_ADDR, /* source mask address */ \
1883 __DES_ADDR, /* target tile address */ \
1884 __REGION) /* region address */ \
1885 arm_2dp_rgb565_tile_fill_with_src_mask_and_y_mirror( \
1886 NULL, \
1887 (__SRC_ADDR), \
1888 (__SRC_MSK_ADDR), \
1889 (__DES_ADDR), \
1890 (__REGION))
1891
1892
1893#define arm_2d_rgb888_tile_fill_with_src_mask_and_y_mirror \
1894 arm_2d_cccn888_tile_fill_with_src_mask_and_y_mirror
1895
1896#define arm_2d_cccn888_tile_fill_with_src_mask_and_y_mirror( \
1897 __SRC_ADDR, /* source tile address */ \
1898 __SRC_MSK_ADDR, /* source mask address */ \
1899 __DES_ADDR, /* target tile address */ \
1900 __REGION) /* region address */ \
1901 arm_2dp_cccn888_tile_fill_with_src_mask_and_y_mirror( \
1902 NULL, \
1903 (__SRC_ADDR), \
1904 (__SRC_MSK_ADDR), \
1905 (__DES_ADDR), \
1906 (__REGION))
1907
1908#define arm_2d_gray8_tile_fill_with_src_mask_and_xy_mirror( \
1909 __SRC_ADDR, /* source tile address */ \
1910 __SRC_MSK_ADDR, /* source mask address */ \
1911 __DES_ADDR, /* target tile address */ \
1912 __REGION) /* region address */ \
1913 arm_2dp_gray8_tile_fill_with_src_mask_and_xy_mirror( \
1914 NULL, \
1915 (__SRC_ADDR), \
1916 (__SRC_MSK_ADDR), \
1917 (__DES_ADDR), \
1918 (__REGION))
1919
1920
1921#define arm_2d_rgb565_tile_fill_with_src_mask_and_xy_mirror( \
1922 __SRC_ADDR, /* source tile address */ \
1923 __SRC_MSK_ADDR, /* source mask address */ \
1924 __DES_ADDR, /* target tile address */ \
1925 __REGION) /* region address */ \
1926 arm_2dp_rgb565_tile_fill_with_src_mask_and_xy_mirror( \
1927 NULL, \
1928 (__SRC_ADDR), \
1929 (__SRC_MSK_ADDR), \
1930 (__DES_ADDR), \
1931 (__REGION))
1932
1933
1934#define arm_2d_rgb888_tile_fill_with_src_mask_and_xy_mirror \
1935 arm_2d_cccn888_tile_fill_with_src_mask_and_xy_mirror
1936
1937#define arm_2d_cccn888_tile_fill_with_src_mask_and_xy_mirror( \
1938 __SRC_ADDR, /* source tile address */ \
1939 __SRC_MSK_ADDR, /* source mask address */ \
1940 __DES_ADDR, /* target tile address */ \
1941 __REGION) /* region address */ \
1942 arm_2dp_cccn888_tile_fill_with_src_mask_and_xy_mirror( \
1943 NULL, \
1944 (__SRC_ADDR), \
1945 (__SRC_MSK_ADDR), \
1946 (__DES_ADDR), \
1947 (__REGION))
1948
1949#define arm_2d_gray8_tile_copy_with_masks_only( \
1950 __SRC_ADDR, /* source tile address */ \
1951 __SRC_MSK_ADDR, /* source mask address */ \
1952 __DES_ADDR, /* target tile address */ \
1953 __DES_MSK_ADDR, /* target mask address */ \
1954 __REGION) /* region address */ \
1955 arm_2dp_gray8_tile_copy_with_masks_only( \
1956 NULL, \
1957 (__SRC_ADDR), \
1958 (__SRC_MSK_ADDR), \
1959 (__DES_ADDR), \
1960 (__DES_MSK_ADDR), \
1961 (__REGION))
1962
1963
1964#define arm_2d_rgb565_tile_copy_with_masks_only( \
1965 __SRC_ADDR, /* source tile address */ \
1966 __SRC_MSK_ADDR, /* source mask address */ \
1967 __DES_ADDR, /* target tile address */ \
1968 __DES_MSK_ADDR, /* target mask address */ \
1969 __REGION) /* region address */ \
1970 arm_2dp_rgb565_tile_copy_with_masks_only( \
1971 NULL, \
1972 (__SRC_ADDR), \
1973 (__SRC_MSK_ADDR), \
1974 (__DES_ADDR), \
1975 (__DES_MSK_ADDR), \
1976 (__REGION))
1977
1978
1979#define arm_2d_rgb888_tile_copy_with_masks_only \
1980 arm_2d_cccn888_tile_copy_with_masks_only
1981
1982#define arm_2d_cccn888_tile_copy_with_masks_only( \
1983 __SRC_ADDR, /* source tile address */ \
1984 __SRC_MSK_ADDR, /* source mask address */ \
1985 __DES_ADDR, /* target tile address */ \
1986 __DES_MSK_ADDR, /* target mask address */ \
1987 __REGION) /* region address */ \
1988 arm_2dp_cccn888_tile_copy_with_masks_only( \
1989 NULL, \
1990 (__SRC_ADDR), \
1991 (__SRC_MSK_ADDR), \
1992 (__DES_ADDR), \
1993 (__DES_MSK_ADDR), \
1994 (__REGION))
1995
1996#define arm_2d_gray8_tile_copy_with_masks_and_x_mirror( \
1997 __SRC_ADDR, /* source tile address */ \
1998 __SRC_MSK_ADDR, /* source mask address */ \
1999 __DES_ADDR, /* target tile address */ \
2000 __DES_MSK_ADDR, /* target mask address */ \
2001 __REGION) /* region address */ \
2002 arm_2dp_gray8_tile_copy_with_masks_and_x_mirror( \
2003 NULL, \
2004 (__SRC_ADDR), \
2005 (__SRC_MSK_ADDR), \
2006 (__DES_ADDR), \
2007 (__DES_MSK_ADDR), \
2008 (__REGION))
2009
2010
2011#define arm_2d_rgb565_tile_copy_with_masks_and_x_mirror( \
2012 __SRC_ADDR, /* source tile address */ \
2013 __SRC_MSK_ADDR, /* source mask address */ \
2014 __DES_ADDR, /* target tile address */ \
2015 __DES_MSK_ADDR, /* target mask address */ \
2016 __REGION) /* region address */ \
2017 arm_2dp_rgb565_tile_copy_with_masks_and_x_mirror( \
2018 NULL, \
2019 (__SRC_ADDR), \
2020 (__SRC_MSK_ADDR), \
2021 (__DES_ADDR), \
2022 (__DES_MSK_ADDR), \
2023 (__REGION))
2024
2025
2026#define arm_2d_rgb888_tile_copy_with_masks_and_x_mirror \
2027 arm_2d_cccn888_tile_copy_with_masks_and_x_mirror
2028
2029#define arm_2d_cccn888_tile_copy_with_masks_and_x_mirror( \
2030 __SRC_ADDR, /* source tile address */ \
2031 __SRC_MSK_ADDR, /* source mask address */ \
2032 __DES_ADDR, /* target tile address */ \
2033 __DES_MSK_ADDR, /* target mask address */ \
2034 __REGION) /* region address */ \
2035 arm_2dp_cccn888_tile_copy_with_masks_and_x_mirror( \
2036 NULL, \
2037 (__SRC_ADDR), \
2038 (__SRC_MSK_ADDR), \
2039 (__DES_ADDR), \
2040 (__DES_MSK_ADDR), \
2041 (__REGION))
2042
2043#define arm_2d_gray8_tile_copy_with_masks_and_y_mirror( \
2044 __SRC_ADDR, /* source tile address */ \
2045 __SRC_MSK_ADDR, /* source mask address */ \
2046 __DES_ADDR, /* target tile address */ \
2047 __DES_MSK_ADDR, /* target mask address */ \
2048 __REGION) /* region address */ \
2049 arm_2dp_gray8_tile_copy_with_masks_and_y_mirror( \
2050 NULL, \
2051 (__SRC_ADDR), \
2052 (__SRC_MSK_ADDR), \
2053 (__DES_ADDR), \
2054 (__DES_MSK_ADDR), \
2055 (__REGION))
2056
2057
2058#define arm_2d_rgb565_tile_copy_with_masks_and_y_mirror( \
2059 __SRC_ADDR, /* source tile address */ \
2060 __SRC_MSK_ADDR, /* source mask address */ \
2061 __DES_ADDR, /* target tile address */ \
2062 __DES_MSK_ADDR, /* target mask address */ \
2063 __REGION) /* region address */ \
2064 arm_2dp_rgb565_tile_copy_with_masks_and_y_mirror( \
2065 NULL, \
2066 (__SRC_ADDR), \
2067 (__SRC_MSK_ADDR), \
2068 (__DES_ADDR), \
2069 (__DES_MSK_ADDR), \
2070 (__REGION))
2071
2072
2073#define arm_2d_rgb888_tile_copy_with_masks_and_y_mirror \
2074 arm_2d_cccn888_tile_copy_with_masks_and_y_mirror
2075
2076#define arm_2d_cccn888_tile_copy_with_masks_and_y_mirror( \
2077 __SRC_ADDR, /* source tile address */ \
2078 __SRC_MSK_ADDR, /* source mask address */ \
2079 __DES_ADDR, /* target tile address */ \
2080 __DES_MSK_ADDR, /* target mask address */ \
2081 __REGION) /* region address */ \
2082 arm_2dp_cccn888_tile_copy_with_masks_and_y_mirror( \
2083 NULL, \
2084 (__SRC_ADDR), \
2085 (__SRC_MSK_ADDR), \
2086 (__DES_ADDR), \
2087 (__DES_MSK_ADDR), \
2088 (__REGION))
2089
2090#define arm_2d_gray8_tile_copy_with_masks_and_xy_mirror( \
2091 __SRC_ADDR, /* source tile address */ \
2092 __SRC_MSK_ADDR, /* source mask address */ \
2093 __DES_ADDR, /* target tile address */ \
2094 __DES_MSK_ADDR, /* target mask address */ \
2095 __REGION) /* region address */ \
2096 arm_2dp_gray8_tile_copy_with_masks_and_xy_mirror( \
2097 NULL, \
2098 (__SRC_ADDR), \
2099 (__SRC_MSK_ADDR), \
2100 (__DES_ADDR), \
2101 (__DES_MSK_ADDR), \
2102 (__REGION))
2103
2104
2105#define arm_2d_rgb565_tile_copy_with_masks_and_xy_mirror( \
2106 __SRC_ADDR, /* source tile address */ \
2107 __SRC_MSK_ADDR, /* source mask address */ \
2108 __DES_ADDR, /* target tile address */ \
2109 __DES_MSK_ADDR, /* target mask address */ \
2110 __REGION) /* region address */ \
2111 arm_2dp_rgb565_tile_copy_with_masks_and_xy_mirror( \
2112 NULL, \
2113 (__SRC_ADDR), \
2114 (__SRC_MSK_ADDR), \
2115 (__DES_ADDR), \
2116 (__DES_MSK_ADDR), \
2117 (__REGION))
2118
2119
2120#define arm_2d_rgb888_tile_copy_with_masks_and_xy_mirror \
2121 arm_2d_cccn888_tile_copy_with_masks_and_xy_mirror
2122
2123#define arm_2d_cccn888_tile_copy_with_masks_and_xy_mirror( \
2124 __SRC_ADDR, /* source tile address */ \
2125 __SRC_MSK_ADDR, /* source mask address */ \
2126 __DES_ADDR, /* target tile address */ \
2127 __DES_MSK_ADDR, /* target mask address */ \
2128 __REGION) /* region address */ \
2129 arm_2dp_cccn888_tile_copy_with_masks_and_xy_mirror( \
2130 NULL, \
2131 (__SRC_ADDR), \
2132 (__SRC_MSK_ADDR), \
2133 (__DES_ADDR), \
2134 (__DES_MSK_ADDR), \
2135 (__REGION))
2136
2137#define arm_2d_gray8_tile_fill_with_masks_only( \
2138 __SRC_ADDR, /* source tile address */ \
2139 __SRC_MSK_ADDR, /* source mask address */ \
2140 __DES_ADDR, /* target tile address */ \
2141 __DES_MSK_ADDR, /* target mask address */ \
2142 __REGION) /* region address */ \
2143 arm_2dp_gray8_tile_fill_with_masks_only( \
2144 NULL, \
2145 (__SRC_ADDR), \
2146 (__SRC_MSK_ADDR), \
2147 (__DES_ADDR), \
2148 (__DES_MSK_ADDR), \
2149 (__REGION))
2150
2151
2152#define arm_2d_rgb565_tile_fill_with_masks_only( \
2153 __SRC_ADDR, /* source tile address */ \
2154 __SRC_MSK_ADDR, /* source mask address */ \
2155 __DES_ADDR, /* target tile address */ \
2156 __DES_MSK_ADDR, /* target mask address */ \
2157 __REGION) /* region address */ \
2158 arm_2dp_rgb565_tile_fill_with_masks_only( \
2159 NULL, \
2160 (__SRC_ADDR), \
2161 (__SRC_MSK_ADDR), \
2162 (__DES_ADDR), \
2163 (__DES_MSK_ADDR), \
2164 (__REGION))
2165
2166
2167#define arm_2d_rgb888_tile_fill_with_masks_only \
2168 arm_2d_cccn888_tile_fill_with_masks_only
2169
2170#define arm_2d_cccn888_tile_fill_with_masks_only( \
2171 __SRC_ADDR, /* source tile address */ \
2172 __SRC_MSK_ADDR, /* source mask address */ \
2173 __DES_ADDR, /* target tile address */ \
2174 __DES_MSK_ADDR, /* target mask address */ \
2175 __REGION) /* region address */ \
2176 arm_2dp_cccn888_tile_fill_with_masks_only( \
2177 NULL, \
2178 (__SRC_ADDR), \
2179 (__SRC_MSK_ADDR), \
2180 (__DES_ADDR), \
2181 (__DES_MSK_ADDR), \
2182 (__REGION))
2183
2184#define arm_2d_gray8_tile_fill_with_masks_and_x_mirror( \
2185 __SRC_ADDR, /* source tile address */ \
2186 __SRC_MSK_ADDR, /* source mask address */ \
2187 __DES_ADDR, /* target tile address */ \
2188 __DES_MSK_ADDR, /* target mask address */ \
2189 __REGION) /* region address */ \
2190 arm_2dp_gray8_tile_fill_with_masks_and_x_mirror( \
2191 NULL, \
2192 (__SRC_ADDR), \
2193 (__SRC_MSK_ADDR), \
2194 (__DES_ADDR), \
2195 (__DES_MSK_ADDR), \
2196 (__REGION))
2197
2198
2199#define arm_2d_rgb565_tile_fill_with_masks_and_x_mirror( \
2200 __SRC_ADDR, /* source tile address */ \
2201 __SRC_MSK_ADDR, /* source mask address */ \
2202 __DES_ADDR, /* target tile address */ \
2203 __DES_MSK_ADDR, /* target mask address */ \
2204 __REGION) /* region address */ \
2205 arm_2dp_rgb565_tile_fill_with_masks_and_x_mirror( \
2206 NULL, \
2207 (__SRC_ADDR), \
2208 (__SRC_MSK_ADDR), \
2209 (__DES_ADDR), \
2210 (__DES_MSK_ADDR), \
2211 (__REGION))
2212
2213
2214#define arm_2d_rgb888_tile_fill_with_masks_and_x_mirror \
2215 arm_2d_cccn888_tile_fill_with_masks_and_x_mirror
2216
2217#define arm_2d_cccn888_tile_fill_with_masks_and_x_mirror( \
2218 __SRC_ADDR, /* source tile address */ \
2219 __SRC_MSK_ADDR, /* source mask address */ \
2220 __DES_ADDR, /* target tile address */ \
2221 __DES_MSK_ADDR, /* target mask address */ \
2222 __REGION) /* region address */ \
2223 arm_2dp_cccn888_tile_fill_with_masks_and_x_mirror( \
2224 NULL, \
2225 (__SRC_ADDR), \
2226 (__SRC_MSK_ADDR), \
2227 (__DES_ADDR), \
2228 (__DES_MSK_ADDR), \
2229 (__REGION))
2230
2231#define arm_2d_gray8_tile_fill_with_masks_and_y_mirror( \
2232 __SRC_ADDR, /* source tile address */ \
2233 __SRC_MSK_ADDR, /* source mask address */ \
2234 __DES_ADDR, /* target tile address */ \
2235 __DES_MSK_ADDR, /* target mask address */ \
2236 __REGION) /* region address */ \
2237 arm_2dp_gray8_tile_fill_with_masks_and_y_mirror( \
2238 NULL, \
2239 (__SRC_ADDR), \
2240 (__SRC_MSK_ADDR), \
2241 (__DES_ADDR), \
2242 (__DES_MSK_ADDR), \
2243 (__REGION))
2244
2245
2246#define arm_2d_rgb565_tile_fill_with_masks_and_y_mirror( \
2247 __SRC_ADDR, /* source tile address */ \
2248 __SRC_MSK_ADDR, /* source mask address */ \
2249 __DES_ADDR, /* target tile address */ \
2250 __DES_MSK_ADDR, /* target mask address */ \
2251 __REGION) /* region address */ \
2252 arm_2dp_rgb565_tile_fill_with_masks_and_y_mirror( \
2253 NULL, \
2254 (__SRC_ADDR), \
2255 (__SRC_MSK_ADDR), \
2256 (__DES_ADDR), \
2257 (__DES_MSK_ADDR), \
2258 (__REGION))
2259
2260
2261#define arm_2d_rgb888_tile_fill_with_masks_and_y_mirror \
2262 arm_2d_cccn888_tile_fill_with_masks_and_y_mirror
2263
2264#define arm_2d_cccn888_tile_fill_with_masks_and_y_mirror( \
2265 __SRC_ADDR, /* source tile address */ \
2266 __SRC_MSK_ADDR, /* source mask address */ \
2267 __DES_ADDR, /* target tile address */ \
2268 __DES_MSK_ADDR, /* target mask address */ \
2269 __REGION) /* region address */ \
2270 arm_2dp_cccn888_tile_fill_with_masks_and_y_mirror( \
2271 NULL, \
2272 (__SRC_ADDR), \
2273 (__SRC_MSK_ADDR), \
2274 (__DES_ADDR), \
2275 (__DES_MSK_ADDR), \
2276 (__REGION))
2277
2278#define arm_2d_gray8_tile_fill_with_masks_and_xy_mirror( \
2279 __SRC_ADDR, /* source tile address */ \
2280 __SRC_MSK_ADDR, /* source mask address */ \
2281 __DES_ADDR, /* target tile address */ \
2282 __DES_MSK_ADDR, /* target mask address */ \
2283 __REGION) /* region address */ \
2284 arm_2dp_gray8_tile_fill_with_masks_and_xy_mirror( \
2285 NULL, \
2286 (__SRC_ADDR), \
2287 (__SRC_MSK_ADDR), \
2288 (__DES_ADDR), \
2289 (__DES_MSK_ADDR), \
2290 (__REGION))
2291
2292
2293#define arm_2d_rgb565_tile_fill_with_masks_and_xy_mirror( \
2294 __SRC_ADDR, /* source tile address */ \
2295 __SRC_MSK_ADDR, /* source mask address */ \
2296 __DES_ADDR, /* target tile address */ \
2297 __DES_MSK_ADDR, /* target mask address */ \
2298 __REGION) /* region address */ \
2299 arm_2dp_rgb565_tile_fill_with_masks_and_xy_mirror( \
2300 NULL, \
2301 (__SRC_ADDR), \
2302 (__SRC_MSK_ADDR), \
2303 (__DES_ADDR), \
2304 (__DES_MSK_ADDR), \
2305 (__REGION))
2306
2307
2308#define arm_2d_rgb888_tile_fill_with_masks_and_xy_mirror \
2309 arm_2d_cccn888_tile_fill_with_masks_and_xy_mirror
2310
2311#define arm_2d_cccn888_tile_fill_with_masks_and_xy_mirror( \
2312 __SRC_ADDR, /* source tile address */ \
2313 __SRC_MSK_ADDR, /* source mask address */ \
2314 __DES_ADDR, /* target tile address */ \
2315 __DES_MSK_ADDR, /* target mask address */ \
2316 __REGION) /* region address */ \
2317 arm_2dp_cccn888_tile_fill_with_masks_and_xy_mirror( \
2318 NULL, \
2319 (__SRC_ADDR), \
2320 (__SRC_MSK_ADDR), \
2321 (__DES_ADDR), \
2322 (__DES_MSK_ADDR), \
2323 (__REGION))
2324
2325
2326#define arm_2d_gray8_tile_copy_with_des_mask( \
2327 __SRC_ADDR, /* source tile address */ \
2328 __DES_ADDR, /* target tile address */ \
2329 __DES_MSK_ADDR, /* target mask address */ \
2330 __REGION, /* region address */ \
2331 ...) /* copy mode */ \
2332 arm_2dp_gray8_tile_copy_with_des_mask( \
2333 NULL, \
2334 (__SRC_ADDR), \
2335 (__DES_ADDR), \
2336 (__DES_MSK_ADDR), \
2337 (__REGION), \
2338 ##__VA_ARGS__)
2339
2340#define arm_2d_rgb565_tile_copy_with_des_mask( \
2341 __SRC_ADDR, /* source tile address */ \
2342 __DES_ADDR, /* target tile address */ \
2343 __DES_MSK_ADDR, /* target mask address */ \
2344 __REGION, /* region address */ \
2345 ...) /* copy mode */ \
2346 arm_2dp_rgb565_tile_copy_with_des_mask( \
2347 NULL, \
2348 (__SRC_ADDR), \
2349 (__DES_ADDR), \
2350 (__DES_MSK_ADDR), \
2351 (__REGION), \
2352 ##__VA_ARGS__)
2353
2354#define arm_2d_rgb888_tile_copy_with_des_mask \
2355 arm_2d_cccn888_tile_copy_with_des_mask
2356
2357#define arm_2d_cccn888_tile_copy_with_des_mask( \
2358 __SRC_ADDR, /* source tile address */ \
2359 __DES_ADDR, /* target tile address */ \
2360 __DES_MSK_ADDR, /* target mask address */ \
2361 __REGION, /* region address */ \
2362 ...) /* copy mode */ \
2363 arm_2dp_cccn888_tile_copy_with_des_mask( \
2364 NULL, \
2365 (__SRC_ADDR), \
2366 (__DES_ADDR), \
2367 (__DES_MSK_ADDR), \
2368 (__REGION), \
2369 ##__VA_ARGS__)
2370
2371
2372#define arm_2d_gray8_tile_copy_with_des_mask_only( \
2373 __SRC_ADDR, /* source tile address */ \
2374 __DES_ADDR, /* target tile address */ \
2375 __DES_MSK_ADDR, /* target mask address */ \
2376 __REGION) /* region address */ \
2377 arm_2dp_gray8_tile_copy_with_des_mask_only( \
2378 NULL, \
2379 (__SRC_ADDR), \
2380 (__DES_ADDR), \
2381 (__DES_MSK_ADDR), \
2382 (__REGION))
2383
2384
2385#define arm_2d_rgb565_tile_copy_with_des_mask_only( \
2386 __SRC_ADDR, /* source tile address */ \
2387 __DES_ADDR, /* target tile address */ \
2388 __DES_MSK_ADDR, /* target mask address */ \
2389 __REGION) /* region address */ \
2390 arm_2dp_rgb565_tile_copy_with_des_mask_only( \
2391 NULL, \
2392 (__SRC_ADDR), \
2393 (__DES_ADDR), \
2394 (__DES_MSK_ADDR), \
2395 (__REGION))
2396
2397
2398#define arm_2d_rgb888_tile_copy_with_des_mask_only \
2399 arm_2d_cccn888_tile_copy_with_des_mask_only
2400
2401#define arm_2d_cccn888_tile_copy_with_des_mask_only( \
2402 __SRC_ADDR, /* source tile address */ \
2403 __DES_ADDR, /* target tile address */ \
2404 __DES_MSK_ADDR, /* target mask address */ \
2405 __REGION) /* region address */ \
2406 arm_2dp_cccn888_tile_copy_with_des_mask_only( \
2407 NULL, \
2408 (__SRC_ADDR), \
2409 (__DES_ADDR), \
2410 (__DES_MSK_ADDR), \
2411 (__REGION))
2412
2413#define arm_2d_gray8_tile_copy_with_des_mask_and_x_mirror( \
2414 __SRC_ADDR, /* source tile address */ \
2415 __DES_ADDR, /* target tile address */ \
2416 __DES_MSK_ADDR, /* target mask address */ \
2417 __REGION) /* region address */ \
2418 arm_2dp_gray8_tile_copy_with_des_mask_and_x_mirror( \
2419 NULL, \
2420 (__SRC_ADDR), \
2421 (__DES_ADDR), \
2422 (__DES_MSK_ADDR), \
2423 (__REGION))
2424
2425
2426#define arm_2d_rgb565_tile_copy_with_des_mask_and_x_mirror( \
2427 __SRC_ADDR, /* source tile address */ \
2428 __DES_ADDR, /* target tile address */ \
2429 __DES_MSK_ADDR, /* target mask address */ \
2430 __REGION) /* region address */ \
2431 arm_2dp_rgb565_tile_copy_with_des_mask_and_x_mirror( \
2432 NULL, \
2433 (__SRC_ADDR), \
2434 (__DES_ADDR), \
2435 (__DES_MSK_ADDR), \
2436 (__REGION))
2437
2438
2439#define arm_2d_rgb888_tile_copy_with_des_mask_and_x_mirror \
2440 arm_2d_cccn888_tile_copy_with_des_mask_and_x_mirror
2441
2442#define arm_2d_cccn888_tile_copy_with_des_mask_and_x_mirror( \
2443 __SRC_ADDR, /* source tile address */ \
2444 __DES_ADDR, /* target tile address */ \
2445 __DES_MSK_ADDR, /* target mask address */ \
2446 __REGION) /* region address */ \
2447 arm_2dp_cccn888_tile_copy_with_des_mask_and_x_mirror( \
2448 NULL, \
2449 (__SRC_ADDR), \
2450 (__DES_ADDR), \
2451 (__DES_MSK_ADDR), \
2452 (__REGION))
2453
2454#define arm_2d_gray8_tile_copy_with_des_mask_and_y_mirror( \
2455 __SRC_ADDR, /* source tile address */ \
2456 __DES_ADDR, /* target tile address */ \
2457 __DES_MSK_ADDR, /* target mask address */ \
2458 __REGION) /* region address */ \
2459 arm_2dp_gray8_tile_copy_with_des_mask_and_y_mirror( \
2460 NULL, \
2461 (__SRC_ADDR), \
2462 (__DES_ADDR), \
2463 (__DES_MSK_ADDR), \
2464 (__REGION))
2465
2466
2467#define arm_2d_rgb565_tile_copy_with_des_mask_and_y_mirror( \
2468 __SRC_ADDR, /* source tile address */ \
2469 __DES_ADDR, /* target tile address */ \
2470 __DES_MSK_ADDR, /* target mask address */ \
2471 __REGION) /* region address */ \
2472 arm_2dp_rgb565_tile_copy_with_des_mask_and_y_mirror( \
2473 NULL, \
2474 (__SRC_ADDR), \
2475 (__DES_ADDR), \
2476 (__DES_MSK_ADDR), \
2477 (__REGION))
2478
2479
2480#define arm_2d_rgb888_tile_copy_with_des_mask_and_y_mirror \
2481 arm_2d_cccn888_tile_copy_with_des_mask_and_y_mirror
2482
2483#define arm_2d_cccn888_tile_copy_with_des_mask_and_y_mirror( \
2484 __SRC_ADDR, /* source tile address */ \
2485 __DES_ADDR, /* target tile address */ \
2486 __DES_MSK_ADDR, /* target mask address */ \
2487 __REGION) /* region address */ \
2488 arm_2dp_cccn888_tile_copy_with_des_mask_and_y_mirror( \
2489 NULL, \
2490 (__SRC_ADDR), \
2491 (__DES_ADDR), \
2492 (__DES_MSK_ADDR), \
2493 (__REGION))
2494
2495#define arm_2d_gray8_tile_copy_with_des_mask_and_xy_mirror( \
2496 __SRC_ADDR, /* source tile address */ \
2497 __DES_ADDR, /* target tile address */ \
2498 __DES_MSK_ADDR, /* target mask address */ \
2499 __REGION) /* region address */ \
2500 arm_2dp_gray8_tile_copy_with_des_mask_and_xy_mirror( \
2501 NULL, \
2502 (__SRC_ADDR), \
2503 (__DES_ADDR), \
2504 (__DES_MSK_ADDR), \
2505 (__REGION))
2506
2507
2508#define arm_2d_rgb565_tile_copy_with_des_mask_and_xy_mirror( \
2509 __SRC_ADDR, /* source tile address */ \
2510 __DES_ADDR, /* target tile address */ \
2511 __DES_MSK_ADDR, /* target mask address */ \
2512 __REGION) /* region address */ \
2513 arm_2dp_rgb565_tile_copy_with_des_mask_and_xy_mirror( \
2514 NULL, \
2515 (__SRC_ADDR), \
2516 (__DES_ADDR), \
2517 (__DES_MSK_ADDR), \
2518 (__REGION))
2519
2520
2521#define arm_2d_rgb888_tile_copy_with_des_mask_and_xy_mirror \
2522 arm_2d_cccn888_tile_copy_with_des_mask_and_xy_mirror
2523
2524#define arm_2d_cccn888_tile_copy_with_des_mask_and_xy_mirror( \
2525 __SRC_ADDR, /* source tile address */ \
2526 __DES_ADDR, /* target tile address */ \
2527 __DES_MSK_ADDR, /* target mask address */ \
2528 __REGION) /* region address */ \
2529 arm_2dp_cccn888_tile_copy_with_des_mask_and_xy_mirror( \
2530 NULL, \
2531 (__SRC_ADDR), \
2532 (__DES_ADDR), \
2533 (__DES_MSK_ADDR), \
2534 (__REGION))
2535
2536#define arm_2d_gray8_tile_fill_with_des_mask_only( \
2537 __SRC_ADDR, /* source tile address */ \
2538 __DES_ADDR, /* target tile address */ \
2539 __DES_MSK_ADDR, /* target mask address */ \
2540 __REGION) /* region address */ \
2541 arm_2dp_gray8_tile_fill_with_des_mask_only( \
2542 NULL, \
2543 (__SRC_ADDR), \
2544 (__DES_ADDR), \
2545 (__DES_MSK_ADDR), \
2546 (__REGION))
2547
2548
2549#define arm_2d_rgb565_tile_fill_with_des_mask_only( \
2550 __SRC_ADDR, /* source tile address */ \
2551 __DES_ADDR, /* target tile address */ \
2552 __DES_MSK_ADDR, /* target mask address */ \
2553 __REGION) /* region address */ \
2554 arm_2dp_rgb565_tile_fill_with_des_mask_only( \
2555 NULL, \
2556 (__SRC_ADDR), \
2557 (__DES_ADDR), \
2558 (__DES_MSK_ADDR), \
2559 (__REGION))
2560
2561
2562#define arm_2d_rgb888_tile_fill_with_des_mask_only \
2563 arm_2d_cccn888_tile_fill_with_des_mask_only
2564
2565#define arm_2d_cccn888_tile_fill_with_des_mask_only( \
2566 __SRC_ADDR, /* source tile address */ \
2567 __DES_ADDR, /* target tile address */ \
2568 __DES_MSK_ADDR, /* target mask address */ \
2569 __REGION) /* region address */ \
2570 arm_2dp_cccn888_tile_fill_with_des_mask_only( \
2571 NULL, \
2572 (__SRC_ADDR), \
2573 (__DES_ADDR), \
2574 (__DES_MSK_ADDR), \
2575 (__REGION))
2576
2577#define arm_2d_gray8_tile_fill_with_des_mask_and_x_mirror( \
2578 __SRC_ADDR, /* source tile address */ \
2579 __DES_ADDR, /* target tile address */ \
2580 __DES_MSK_ADDR, /* target mask address */ \
2581 __REGION) /* region address */ \
2582 arm_2dp_gray8_tile_fill_with_des_mask_and_x_mirror( \
2583 NULL, \
2584 (__SRC_ADDR), \
2585 (__DES_ADDR), \
2586 (__DES_MSK_ADDR), \
2587 (__REGION))
2588
2589
2590#define arm_2d_rgb565_tile_fill_with_des_mask_and_x_mirror( \
2591 __SRC_ADDR, /* source tile address */ \
2592 __DES_ADDR, /* target tile address */ \
2593 __DES_MSK_ADDR, /* target mask address */ \
2594 __REGION) /* region address */ \
2595 arm_2dp_rgb565_tile_fill_with_des_mask_and_x_mirror( \
2596 NULL, \
2597 (__SRC_ADDR), \
2598 (__DES_ADDR), \
2599 (__DES_MSK_ADDR), \
2600 (__REGION))
2601
2602
2603#define arm_2d_rgb888_tile_fill_with_des_mask_and_x_mirror \
2604 arm_2d_cccn888_tile_fill_with_des_mask_and_x_mirror
2605
2606#define arm_2d_cccn888_tile_fill_with_des_mask_and_x_mirror( \
2607 __SRC_ADDR, /* source tile address */ \
2608 __DES_ADDR, /* target tile address */ \
2609 __DES_MSK_ADDR, /* target mask address */ \
2610 __REGION) /* region address */ \
2611 arm_2dp_cccn888_tile_fill_with_des_mask_and_x_mirror( \
2612 NULL, \
2613 (__SRC_ADDR), \
2614 (__DES_ADDR), \
2615 (__DES_MSK_ADDR), \
2616 (__REGION))
2617
2618#define arm_2d_gray8_tile_fill_with_des_mask_and_y_mirror( \
2619 __SRC_ADDR, /* source tile address */ \
2620 __DES_ADDR, /* target tile address */ \
2621 __DES_MSK_ADDR, /* target mask address */ \
2622 __REGION) /* region address */ \
2623 arm_2dp_gray8_tile_fill_with_des_mask_and_y_mirror( \
2624 NULL, \
2625 (__SRC_ADDR), \
2626 (__DES_ADDR), \
2627 (__DES_MSK_ADDR), \
2628 (__REGION))
2629
2630
2631#define arm_2d_rgb565_tile_fill_with_des_mask_and_y_mirror( \
2632 __SRC_ADDR, /* source tile address */ \
2633 __DES_ADDR, /* target tile address */ \
2634 __DES_MSK_ADDR, /* target mask address */ \
2635 __REGION) /* region address */ \
2636 arm_2dp_rgb565_tile_fill_with_des_mask_and_y_mirror( \
2637 NULL, \
2638 (__SRC_ADDR), \
2639 (__DES_ADDR), \
2640 (__DES_MSK_ADDR), \
2641 (__REGION))
2642
2643
2644#define arm_2d_rgb888_tile_fill_with_des_mask_and_y_mirror \
2645 arm_2d_cccn888_tile_fill_with_des_mask_and_y_mirror
2646
2647#define arm_2d_cccn888_tile_fill_with_des_mask_and_y_mirror( \
2648 __SRC_ADDR, /* source tile address */ \
2649 __DES_ADDR, /* target tile address */ \
2650 __DES_MSK_ADDR, /* target mask address */ \
2651 __REGION) /* region address */ \
2652 arm_2dp_cccn888_tile_fill_with_des_mask_and_y_mirror( \
2653 NULL, \
2654 (__SRC_ADDR), \
2655 (__DES_ADDR), \
2656 (__DES_MSK_ADDR), \
2657 (__REGION))
2658
2659#define arm_2d_gray8_tile_fill_with_des_mask_and_xy_mirror( \
2660 __SRC_ADDR, /* source tile address */ \
2661 __DES_ADDR, /* target tile address */ \
2662 __DES_MSK_ADDR, /* target mask address */ \
2663 __REGION) /* region address */ \
2664 arm_2dp_gray8_tile_fill_with_des_mask_and_xy_mirror( \
2665 NULL, \
2666 (__SRC_ADDR), \
2667 (__DES_ADDR), \
2668 (__DES_MSK_ADDR), \
2669 (__REGION))
2670
2671
2672#define arm_2d_rgb565_tile_fill_with_des_mask_and_xy_mirror( \
2673 __SRC_ADDR, /* source tile address */ \
2674 __DES_ADDR, /* target tile address */ \
2675 __DES_MSK_ADDR, /* target mask address */ \
2676 __REGION) /* region address */ \
2677 arm_2dp_rgb565_tile_fill_with_des_mask_and_xy_mirror( \
2678 NULL, \
2679 (__SRC_ADDR), \
2680 (__DES_ADDR), \
2681 (__DES_MSK_ADDR), \
2682 (__REGION))
2683
2684
2685#define arm_2d_rgb888_tile_fill_with_des_mask_and_xy_mirror \
2686 arm_2d_cccn888_tile_fill_with_des_mask_and_xy_mirror
2687
2688#define arm_2d_cccn888_tile_fill_with_des_mask_and_xy_mirror( \
2689 __SRC_ADDR, /* source tile address */ \
2690 __DES_ADDR, /* target tile address */ \
2691 __DES_MSK_ADDR, /* target mask address */ \
2692 __REGION) /* region address */ \
2693 arm_2dp_cccn888_tile_fill_with_des_mask_and_xy_mirror( \
2694 NULL, \
2695 (__SRC_ADDR), \
2696 (__DES_ADDR), \
2697 (__DES_MSK_ADDR), \
2698 (__REGION))
2699
2700/*!
2701 * \brief fill a target tile with a source tile and a target mask in an optional
2702 * copy mode
2703 * \param[in] __OPCODE_PTR the control block, NULL means using the default
2704 * control block
2705 * \param[in] __SRC_ADDR the source tile
2706 * \param[in] __DES_ADDR the target tile
2707 * \param[in] __DES_MSK_ADDR the mask on the target side
2708 * \param[in] __REGION the target region
2709 * \param[in] ... the optional copy mode
2710 * \return arm_fsm_rt_t the operation result
2711 */
2712#define arm_2dp_gray8_tile_fill_with_des_mask( \
2713 __OPCODE_PTR, /* arm_2d_op_cp_t * */ \
2714 __SRC_ADDR, /* source tile address */ \
2715 __DES_ADDR, /* target tile address*/ \
2716 __DES_MSK_ADDR, /* target mask address */ \
2717 __REGION, /* target region address*/\
2718 ...) /* mode */ \
2719({ \
2720 arm_fsm_rt_t tResult = (arm_fsm_rt_t)ARM_2D_ERR_UNKNOWN; \
2721 switch ( (ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) \
2722 & ARM_2D_CP_MODE_XY_MIRROR) { \
2723 case ARM_2D_CP_MODE_NO_MIRROR: \
2724 tResult = arm_2dp_gray8_tile_fill_with_des_mask_only( \
2725 (__OPCODE_PTR), \
2726 (__SRC_ADDR), \
2727 (__DES_ADDR), \
2728 (__DES_MSK_ADDR), \
2729 (__REGION)); \
2730 break; \
2731 case ARM_2D_CP_MODE_X_MIRROR: \
2732 tResult = arm_2dp_gray8_tile_fill_with_des_mask_and_x_mirror( \
2733 (__OPCODE_PTR), \
2734 (__SRC_ADDR), \
2735 (__DES_ADDR), \
2736 (__DES_MSK_ADDR), \
2737 (__REGION)); \
2738 break; \
2739 case ARM_2D_CP_MODE_Y_MIRROR: \
2740 tResult = arm_2dp_gray8_tile_fill_with_des_mask_and_y_mirror( \
2741 (__OPCODE_PTR), \
2742 (__SRC_ADDR), \
2743 (__DES_ADDR), \
2744 (__DES_MSK_ADDR), \
2745 (__REGION)); \
2746 break; \
2747 case ARM_2D_CP_MODE_XY_MIRROR: \
2748 tResult = arm_2dp_gray8_tile_fill_with_des_mask_and_xy_mirror( \
2749 (__OPCODE_PTR), \
2750 (__SRC_ADDR), \
2751 (__DES_ADDR), \
2752 (__DES_MSK_ADDR), \
2753 (__REGION)); \
2754 break; \
2755 } \
2756 tResult; \
2757})
2758
2759#define arm_2d_gray8_tile_fill_with_des_mask( \
2760 __SRC_ADDR, /* source tile address */ \
2761 __DES_ADDR, /* target tile address*/ \
2762 __DES_MSK_ADDR, /* target mask address */ \
2763 __REGION, /* target region address*/\
2764 ...) /* mode */ \
2765 arm_2dp_gray8_tile_fill_with_des_mask(NULL, \
2766 __SRC_ADDR, /* source tile address */ \
2767 __DES_ADDR, /* target tile address*/ \
2768 __SRC_MSK_ADDR, /* target mask address */ \
2769 __REGION, /* target region address*/\
2770 ##__VA_ARGS__)
2771
2772
2773/*!
2774 * \brief fill a target tile with a source tile and a target mask in an optional
2775 * copy mode
2776 * \param[in] __OPCODE_PTR the control block, NULL means using the default
2777 * control block
2778 * \param[in] __SRC_ADDR the source tile
2779 * \param[in] __DES_ADDR the target tile
2780 * \param[in] __DES_MSK_ADDR the mask on the target side
2781 * \param[in] __REGION the target region
2782 * \param[in] ... the optional copy mode
2783 * \return arm_fsm_rt_t the operation result
2784 */
2785#define arm_2dp_rgb565_tile_fill_with_des_mask( \
2786 __OPCODE_PTR, /* arm_2d_op_cp_t * */ \
2787 __SRC_ADDR, /* source tile address */ \
2788 __DES_ADDR, /* target tile address*/ \
2789 __DES_MSK_ADDR, /* target mask address */ \
2790 __REGION, /* target region address*/\
2791 ...) /* mode */ \
2792({ \
2793 arm_fsm_rt_t tResult = (arm_fsm_rt_t)ARM_2D_ERR_UNKNOWN; \
2794 switch ( (ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) \
2795 & ARM_2D_CP_MODE_XY_MIRROR) { \
2796 case ARM_2D_CP_MODE_NO_MIRROR: \
2797 tResult = arm_2dp_rgb565_tile_fill_with_des_mask_only( \
2798 (__OPCODE_PTR), \
2799 (__SRC_ADDR), \
2800 (__DES_ADDR), \
2801 (__DES_MSK_ADDR), \
2802 (__REGION)); \
2803 break; \
2804 case ARM_2D_CP_MODE_X_MIRROR: \
2805 tResult = arm_2dp_rgb565_tile_fill_with_des_mask_and_x_mirror( \
2806 (__OPCODE_PTR), \
2807 (__SRC_ADDR), \
2808 (__DES_ADDR), \
2809 (__DES_MSK_ADDR), \
2810 (__REGION)); \
2811 break; \
2812 case ARM_2D_CP_MODE_Y_MIRROR: \
2813 tResult = arm_2dp_rgb565_tile_fill_with_des_mask_and_y_mirror( \
2814 (__OPCODE_PTR), \
2815 (__SRC_ADDR), \
2816 (__DES_ADDR), \
2817 (__DES_MSK_ADDR), \
2818 (__REGION)); \
2819 break; \
2820 case ARM_2D_CP_MODE_XY_MIRROR: \
2821 tResult = arm_2dp_rgb565_tile_fill_with_des_mask_and_xy_mirror( \
2822 (__OPCODE_PTR), \
2823 (__SRC_ADDR), \
2824 (__DES_ADDR), \
2825 (__DES_MSK_ADDR), \
2826 (__REGION)); \
2827 break; \
2828 } \
2829 tResult; \
2830})
2831
2832#define arm_2d_rgb565_tile_fill_with_des_mask( \
2833 __SRC_ADDR, /* source tile address */ \
2834 __DES_ADDR, /* target tile address*/ \
2835 __DES_MSK_ADDR, /* target mask address */ \
2836 __REGION, /* target region address*/\
2837 ...) /* mode */ \
2838 arm_2dp_rgb565_tile_fill_with_des_mask(NULL, \
2839 __SRC_ADDR, /* source tile address */ \
2840 __DES_ADDR, /* target tile address*/ \
2841 __SRC_MSK_ADDR, /* target mask address */ \
2842 __REGION, /* target region address*/\
2843 ##__VA_ARGS__)
2844
2845/*!
2846 * \brief fill a target tile with a source tile and a target mask in an optional
2847 * copy mode
2848 * \param[in] __OPCODE_PTR the control block, NULL means using the default
2849 * control block
2850 * \param[in] __SRC_ADDR the source tile
2851 * \param[in] __DES_ADDR the target tile
2852 * \param[in] __DES_MSK_ADDR the mask on the target side
2853 * \param[in] __REGION the target region
2854 * \param[in] ... the optional copy mode
2855 * \return arm_fsm_rt_t the operation result
2856 */
2857#define arm_2dp_cccn888_tile_fill_with_des_mask( \
2858 __OPCODE_PTR, /* arm_2d_op_cp_t * */ \
2859 __SRC_ADDR, /* source tile address */ \
2860 __DES_ADDR, /* target tile address*/ \
2861 __DES_MSK_ADDR, /* target mask address */ \
2862 __REGION, /* target region address*/\
2863 ...) /* mode */ \
2864({ \
2865 arm_fsm_rt_t tResult = (arm_fsm_rt_t)ARM_2D_ERR_UNKNOWN; \
2866 switch ( (ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) \
2867 & ARM_2D_CP_MODE_XY_MIRROR) { \
2868 case ARM_2D_CP_MODE_NO_MIRROR: \
2869 tResult = arm_2dp_cccn888_tile_fill_with_des_mask_only( \
2870 (__OPCODE_PTR), \
2871 (__SRC_ADDR), \
2872 (__DES_ADDR), \
2873 (__DES_MSK_ADDR), \
2874 (__REGION)); \
2875 break; \
2876 case ARM_2D_CP_MODE_X_MIRROR: \
2877 tResult = arm_2dp_cccn888_tile_fill_with_des_mask_and_x_mirror( \
2878 (__OPCODE_PTR), \
2879 (__SRC_ADDR), \
2880 (__DES_ADDR), \
2881 (__DES_MSK_ADDR), \
2882 (__REGION)); \
2883 break; \
2884 case ARM_2D_CP_MODE_Y_MIRROR: \
2885 tResult = arm_2dp_cccn888_tile_fill_with_des_mask_and_y_mirror( \
2886 (__OPCODE_PTR), \
2887 (__SRC_ADDR), \
2888 (__DES_ADDR), \
2889 (__DES_MSK_ADDR), \
2890 (__REGION)); \
2891 break; \
2892 case ARM_2D_CP_MODE_XY_MIRROR: \
2893 tResult = arm_2dp_cccn888_tile_fill_with_des_mask_and_xy_mirror( \
2894 (__OPCODE_PTR), \
2895 (__SRC_ADDR), \
2896 (__DES_ADDR), \
2897 (__DES_MSK_ADDR), \
2898 (__REGION)); \
2899 break; \
2900 } \
2901 tResult; \
2902})
2903
2904#define arm_2d_cccn888_tile_fill_with_des_mask( \
2905 __SRC_ADDR, /* source tile address */ \
2906 __DES_ADDR, /* target tile address*/ \
2907 __DES_MSK_ADDR, /* target mask address */ \
2908 __REGION, /* target region address*/\
2909 ...) /* mode */ \
2910 arm_2dp_cccn888_tile_fill_with_des_mask(NULL, \
2911 __SRC_ADDR, /* source tile address */ \
2912 __DES_ADDR, /* target tile address*/ \
2913 __SRC_MSK_ADDR, /* target mask address */ \
2914 __REGION, /* target region address*/\
2915 ##__VA_ARGS__)
2916
2917/*!
2918 * \brief copy a source tile to a target tile with a target mask and an optional
2919 * copy mode
2920 * \param[in] __OPCODE_PTR the control block, NULL means using the default
2921 * control block
2922 * \param[in] __SRC_ADDR the source tile
2923 * \param[in] __DES_ADDR the target tile
2924 * \param[in] __DES_MSK_ADDR the mask on the target side
2925 * \param[in] __REGION the target region
2926 * \param[in] ... the optional copy mode
2927 * \return arm_fsm_rt_t the operation result
2928 */
2929#define arm_2dp_gray8_tile_copy_with_des_mask( \
2930 __OPCODE_PTR, /* arm_2d_op_cp_msk_t * */\
2931 __SRC_ADDR, /* source tile address */ \
2932 __DES_ADDR, /* target tile address*/ \
2933 __DES_MSK_ADDR, /* target mask address */ \
2934 __REGION, /* target region address*/\
2935 ...) /* mode */ \
2936({ \
2937 arm_fsm_rt_t tResult = (arm_fsm_rt_t)ARM_2D_ERR_UNKNOWN; \
2938 if ((ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) & ARM_2D_CP_MODE_FILL) { \
2939 tResult = arm_2dp_gray8_tile_fill_with_des_mask( \
2940 (__OPCODE_PTR), \
2941 (__SRC_ADDR), \
2942 (__DES_ADDR), \
2943 (__DES_MSK_ADDR), \
2944 (__REGION), \
2945 ##__VA_ARGS__); \
2946 } else { \
2947 switch ( (ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) \
2948 & ARM_2D_CP_MODE_XY_MIRROR) { \
2949 case ARM_2D_CP_MODE_NO_MIRROR: \
2950 tResult = arm_2dp_gray8_tile_copy_with_des_mask_only( \
2951 (__OPCODE_PTR), \
2952 (__SRC_ADDR), \
2953 (__DES_ADDR), \
2954 (__DES_MSK_ADDR), \
2955 (__REGION)); \
2956 break; \
2957 case ARM_2D_CP_MODE_X_MIRROR: \
2958 tResult = arm_2dp_gray8_tile_copy_with_des_mask_and_x_mirror( \
2959 (__OPCODE_PTR), \
2960 (__SRC_ADDR), \
2961 (__DES_ADDR), \
2962 (__DES_MSK_ADDR), \
2963 (__REGION)); \
2964 break; \
2965 case ARM_2D_CP_MODE_Y_MIRROR: \
2966 tResult = arm_2dp_gray8_tile_copy_with_des_mask_and_y_mirror( \
2967 (__OPCODE_PTR), \
2968 (__SRC_ADDR), \
2969 (__DES_ADDR), \
2970 (__DES_MSK_ADDR), \
2971 (__REGION)); \
2972 break; \
2973 case ARM_2D_CP_MODE_XY_MIRROR: \
2974 tResult = arm_2dp_gray8_tile_copy_with_des_mask_and_xy_mirror( \
2975 (__OPCODE_PTR), \
2976 (__SRC_ADDR), \
2977 (__DES_ADDR), \
2978 (__DES_MSK_ADDR), \
2979 (__REGION)); \
2980 break; \
2981 } \
2982 }; \
2983 tResult; \
2984})
2985
2986/*!
2987 * \brief copy a source tile to a target tile with a target mask and an optional
2988 * copy mode
2989 * \param[in] __OPCODE_PTR the control block, NULL means using the default
2990 * control block
2991 * \param[in] __SRC_ADDR the source tile
2992 * \param[in] __DES_ADDR the target tile
2993 * \param[in] __DES_MSK_ADDR the mask on the target side
2994 * \param[in] __REGION the target region
2995 * \param[in] ... the optional copy mode
2996 * \return arm_fsm_rt_t the operation result
2997 */
2998#define arm_2dp_rgb565_tile_copy_with_des_mask( \
2999 __OPCODE_PTR, /* arm_2d_op_cp_msk_t * */\
3000 __SRC_ADDR, /* source tile address */ \
3001 __DES_ADDR, /* target tile address*/ \
3002 __DES_MSK_ADDR, /* target mask address */ \
3003 __REGION, /* target region address*/\
3004 ...) /* mode */ \
3005({ \
3006 arm_fsm_rt_t tResult = (arm_fsm_rt_t)ARM_2D_ERR_UNKNOWN; \
3007 if ((ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) & ARM_2D_CP_MODE_FILL) { \
3008 tResult = arm_2dp_rgb565_tile_fill_with_des_mask( \
3009 (__OPCODE_PTR), \
3010 (__SRC_ADDR), \
3011 (__DES_ADDR), \
3012 (__DES_MSK_ADDR), \
3013 (__REGION), \
3014 ##__VA_ARGS__); \
3015 } else { \
3016 switch ( (ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) \
3017 & ARM_2D_CP_MODE_XY_MIRROR) { \
3018 case ARM_2D_CP_MODE_NO_MIRROR: \
3019 tResult = arm_2dp_rgb565_tile_copy_with_des_mask_only( \
3020 (__OPCODE_PTR), \
3021 (__SRC_ADDR), \
3022 (__DES_ADDR), \
3023 (__DES_MSK_ADDR), \
3024 (__REGION)); \
3025 break; \
3026 case ARM_2D_CP_MODE_X_MIRROR: \
3027 tResult = arm_2dp_rgb565_tile_copy_with_des_mask_and_x_mirror( \
3028 (__OPCODE_PTR), \
3029 (__SRC_ADDR), \
3030 (__DES_ADDR), \
3031 (__DES_MSK_ADDR), \
3032 (__REGION)); \
3033 break; \
3034 case ARM_2D_CP_MODE_Y_MIRROR: \
3035 tResult = arm_2dp_rgb565_tile_copy_with_des_mask_and_y_mirror( \
3036 (__OPCODE_PTR), \
3037 (__SRC_ADDR), \
3038 (__DES_ADDR), \
3039 (__DES_MSK_ADDR), \
3040 (__REGION)); \
3041 break; \
3042 case ARM_2D_CP_MODE_XY_MIRROR: \
3043 tResult = arm_2dp_rgb565_tile_copy_with_des_mask_and_xy_mirror( \
3044 (__OPCODE_PTR), \
3045 (__SRC_ADDR), \
3046 (__DES_ADDR), \
3047 (__DES_MSK_ADDR), \
3048 (__REGION)); \
3049 break; \
3050 } \
3051 }; \
3052 tResult; \
3053})
3054
3055/*!
3056 * \brief copy a source tile to a target tile with a target mask and an optional
3057 * copy mode
3058 * \param[in] __OPCODE_PTR the control block, NULL means using the default
3059 * control block
3060 * \param[in] __SRC_ADDR the source tile
3061 * \param[in] __DES_ADDR the target tile
3062 * \param[in] __DES_MSK_ADDR the mask on the target side
3063 * \param[in] __REGION the target region
3064 * \param[in] ... the optional copy mode
3065 * \return arm_fsm_rt_t the operation result
3066 */
3067#define arm_2dp_cccn888_tile_copy_with_des_mask( \
3068 __OPCODE_PTR, /* arm_2d_op_cp_msk_t * */\
3069 __SRC_ADDR, /* source tile address */ \
3070 __DES_ADDR, /* target tile address*/ \
3071 __DES_MSK_ADDR, /* target mask address */ \
3072 __REGION, /* target region address*/\
3073 ...) /* mode */ \
3074({ \
3075 arm_fsm_rt_t tResult = (arm_fsm_rt_t)ARM_2D_ERR_UNKNOWN; \
3076 if ((ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) & ARM_2D_CP_MODE_FILL) { \
3077 tResult = arm_2dp_cccn888_tile_fill_with_des_mask( \
3078 (__OPCODE_PTR), \
3079 (__SRC_ADDR), \
3080 (__DES_ADDR), \
3081 (__DES_MSK_ADDR), \
3082 (__REGION), \
3083 ##__VA_ARGS__); \
3084 } else { \
3085 switch ( (ARM_2D_CP_MODE_NO_MIRROR, ##__VA_ARGS__) \
3086 & ARM_2D_CP_MODE_XY_MIRROR) { \
3087 case ARM_2D_CP_MODE_NO_MIRROR: \
3088 tResult = arm_2dp_cccn888_tile_copy_with_des_mask_only( \
3089 (__OPCODE_PTR), \
3090 (__SRC_ADDR), \
3091 (__DES_ADDR), \
3092 (__DES_MSK_ADDR), \
3093 (__REGION)); \
3094 break; \
3095 case ARM_2D_CP_MODE_X_MIRROR: \
3096 tResult = arm_2dp_cccn888_tile_copy_with_des_mask_and_x_mirror( \
3097 (__OPCODE_PTR), \
3098 (__SRC_ADDR), \
3099 (__DES_ADDR), \
3100 (__DES_MSK_ADDR), \
3101 (__REGION)); \
3102 break; \
3103 case ARM_2D_CP_MODE_Y_MIRROR: \
3104 tResult = arm_2dp_cccn888_tile_copy_with_des_mask_and_y_mirror( \
3105 (__OPCODE_PTR), \
3106 (__SRC_ADDR), \
3107 (__DES_ADDR), \
3108 (__DES_MSK_ADDR), \
3109 (__REGION)); \
3110 break; \
3111 case ARM_2D_CP_MODE_XY_MIRROR: \
3112 tResult = arm_2dp_cccn888_tile_copy_with_des_mask_and_xy_mirror(\
3113 (__OPCODE_PTR), \
3114 (__SRC_ADDR), \
3115 (__DES_ADDR), \
3116 (__DES_MSK_ADDR), \
3117 (__REGION)); \
3118 break; \
3119 } \
3120 }; \
3121 tResult; \
3122})
3123
3124/*============================ TYPES =========================================*/
3125
3126/*!
3127 * \brief control block for alpha-blending operations
3128 * \note arm_2d_op_alpha_t inherits from arm_2d_op_src_t explicitly
3129 */
3130typedef struct arm_2d_op_alpha_t {
3132 struct {
3133 const arm_2d_tile_t *ptTile; //!< target tile
3134 const arm_2d_region_t *ptRegion; //!< target region
3135 } Target; //!< target
3136 struct {
3137 const arm_2d_tile_t *ptTile; //!< source tile
3138 }Source; //!< source
3139 uint32_t wMode; //!< copy mode
3140 uint8_t chRatio; //!< opacity
3142
3143
3144/*!
3145 * \brief control block for alpha-blending-with-colour-keying operations
3146 * \note arm_2d_op_alpha_cl_key_t inherits from arm_2d_op_src_t explicitly
3147 */
3150 struct {
3151 const arm_2d_tile_t *ptTile; //!< target tile
3152 const arm_2d_region_t *ptRegion; //!< target region
3153 } Target; //!< target
3154 struct {
3155 const arm_2d_tile_t *ptTile; //!< source tile
3156 }Source; //!< source
3157 uint32_t wMode; //!< copy mode
3158 uint8_t chRatio; //!< opacity
3159
3160 union {
3161 uint8_t chColour; //!< 8bit key colour
3162 uint16_t hwColour; //!< 16bit key colour
3163 uint32_t wColour; //!< 32bit key colour
3164 };
3166
3167
3168/*!
3169 * \brief control block for colour-filling-with-mask operations
3170 * \note arm_2d_op_fill_cl_msk_t inherits from arm_2d_op_src_t explicitly
3171 */
3174 struct {
3175 const arm_2d_tile_t *ptTile; //!< target tile
3176 const arm_2d_region_t *ptRegion; //!< target region
3177 } Target; //!< target
3178 struct {
3179 const arm_2d_tile_t *ptTile; //!< Alpha Mask tile
3180 } Mask; //!< mask
3181 uint32_t wMode; //!< copy mode
3182
3183 union {
3184 uint8_t chColour; //!< 8bit key colour
3185 uint16_t hwColour; //!< 16bit key colour
3186 uint32_t wColour; //!< 32bit key colour
3187 };
3189
3190
3191/*!
3192 * \brief control block for colour-filling-with-mask-and-opacity operations
3193 * \note arm_2d_op_fill_cl_msk_t inherits from arm_2d_op_src_t explicitly
3194 */
3197 struct {
3198 const arm_2d_tile_t *ptTile; //!< target tile
3199 const arm_2d_region_t *ptRegion; //!< target region
3200 } Target; //!< target
3201 struct {
3202 const arm_2d_tile_t *ptTile; //!< Alpha Mask tile
3203 } Mask; //!< mask
3204 uint32_t wMode; //!< copy mode
3205 union {
3206 uint8_t chColour; //!< 8bit key colour
3207 uint16_t hwColour; //!< 16bit key colour
3208 uint32_t wColour; //!< 32bit key colour
3209 };
3210 union {
3211 uint8_t chRatio; //!< opacity
3212 uint8_t chOpacity;
3213 };
3215
3216/*!
3217 * \brief control block for colour-filling-with-opacity operations
3218 * \note arm_2d_op_fill_cl_t inherits from arm_2d_op_t explicitly
3219 */
3222 struct {
3223 const arm_2d_tile_t *ptTile; //!< target tile
3224 const arm_2d_region_t *ptRegion; //!< target region
3225 } Target; //!< target
3226 union {
3227 uint8_t chColour; //!< 8bit key colour
3228 uint16_t hwColour; //!< 16bit key colour
3229 uint32_t wColour; //!< 32bit key colour
3230 };
3231 uint8_t chRatio; //!< opacity
3233
3234/*!
3235 * \brief control block for copy with masks operations
3236 *
3237 */
3239
3240/*============================ GLOBAL VARIABLES ==============================*/
3241/*============================ PROTOTYPES ====================================*/
3242
3243/*----------------------------------------------------------------------------*
3244 * Copy tile to destination with specified transparency ratio (0~255) *
3245 *----------------------------------------------------------------------------*/
3246
3247/*!
3248 * \brief blend a source tile to a target tile with a specified opacity
3249 * \param[in] ptOP the control block, NULL means using the default control block
3250 * \param[in] ptSource the source tile
3251 * \param[in] ptTarget the target tile
3252 * \param[in] ptRegion the target region
3253 * \param[in] chRatio the opacity
3254 * \return arm_fsm_rt_t the operation result
3255 */
3256extern
3257ARM_NONNULL(2,3)
3259 const arm_2d_tile_t *ptSource,
3260 const arm_2d_tile_t *ptTarget,
3261 const arm_2d_region_t *ptRegion,
3262 uint_fast8_t chRatio);
3263
3264/*!
3265 * \brief blend a source tile to a target tile with a specified opacity
3266 * \param[in] ptOP the control block, NULL means using the default control block
3267 * \param[in] ptSource the source tile
3268 * \param[in] ptTarget the target tile
3269 * \param[in] ptRegion the target region
3270 * \param[in] chRatio the opacity
3271 * \return arm_fsm_rt_t the operation result
3272 */
3273extern
3274ARM_NONNULL(2,3)
3276 const arm_2d_tile_t *ptSource,
3277 const arm_2d_tile_t *ptTarget,
3278 const arm_2d_region_t *ptRegion,
3279 uint_fast8_t chRatio);
3280
3281/*!
3282 * \brief blend a source tile to a target tile with a specified opacity
3283 * \param[in] ptOP the control block, NULL means using the default control block
3284 * \param[in] ptSource the source tile
3285 * \param[in] ptTarget the target tile
3286 * \param[in] ptRegion the target region
3287 * \param[in] chRatio the opacity
3288 * \return arm_fsm_rt_t the operation result
3289 */
3290extern
3291ARM_NONNULL(2,3)
3293 const arm_2d_tile_t *ptSource,
3294 const arm_2d_tile_t *ptTarget,
3295 const arm_2d_region_t *ptRegion,
3296 uint_fast8_t chRatio);
3297
3298
3299/*----------------------------------------------------------------------------*
3300 * Fill a specified region with a given colour and transparency ratio (0~255) *
3301 *----------------------------------------------------------------------------*/
3302
3303/*!
3304 * \brief fill a target tile with a given gray8 colour and a specified opacity
3305 * \param[in] ptOP the control block, NULL means using the default control block
3306 * \param[in] ptTarget the target tile
3307 * \param[in] ptRegion the target region
3308 * \param[in] tColour a gray8 colour
3309 * \param[in] chRatio the opacity
3310 * \return arm_fsm_rt_t the operation result
3311 */
3312extern
3313ARM_NONNULL(2)
3316 const arm_2d_tile_t *ptTarget,
3317 const arm_2d_region_t *ptRegion,
3318 arm_2d_color_gray8_t tColour,
3319 uint_fast8_t chRatio);
3320
3321/*!
3322 * \brief fill a target tile with a given rgb565 colour and a specified opacity
3323 * \param[in] ptOP the control block, NULL means using the default control block
3324 * \param[in] ptTarget the target tile
3325 * \param[in] ptRegion the target region
3326 * \param[in] tColour a rgb565 colour
3327 * \param[in] chRatio the opacity
3328 * \return arm_fsm_rt_t the operation result
3329 */
3330extern
3331ARM_NONNULL(2)
3334 const arm_2d_tile_t *ptTarget,
3335 const arm_2d_region_t *ptRegion,
3336 arm_2d_color_rgb565_t tColour,
3337 uint_fast8_t chRatio);
3338
3339/*!
3340 * \brief fill a target tile with a given cccn888 colour and a specified opacity
3341 * \param[in] ptOP the control block, NULL means using the default control block
3342 * \param[in] ptTarget the target tile
3343 * \param[in] ptRegion the target region
3344 * \param[in] tColour a cccn888 colour
3345 * \param[in] chRatio the opacity
3346 * \return arm_fsm_rt_t the operation result
3347 */
3348extern
3349ARM_NONNULL(2)
3352 const arm_2d_tile_t *ptTarget,
3353 const arm_2d_region_t *ptRegion,
3354 arm_2d_color_cccn888_t tColour,
3355 uint_fast8_t chRatio);
3356
3357/*----------------------------------------------------------------------------*
3358 * Fill tile with a specified colour and an a1 mask *
3359 *----------------------------------------------------------------------------*/
3360
3361/*!
3362 * \brief fill a target tile with a given gray8 colour and an a1 mask on target side
3363 * \param[in] ptOP the control block, NULL means using the default control block
3364 * \param[in] ptTarget the target tile
3365 * \param[in] ptRegion the target region
3366 * \param[in] ptAlpha the mask on the target side
3367 * \param[in] tColour a gray8 colour
3368 * \return arm_fsm_rt_t the operation result
3369 */
3370extern
3371ARM_NONNULL(2,4)
3374 const arm_2d_tile_t *ptTarget,
3375 const arm_2d_region_t *ptRegion,
3376 const arm_2d_tile_t *ptAlpha,
3377 arm_2d_color_gray8_t tColour);
3378
3379/*!
3380 * \brief fill a target tile with a given rgb565 colour and an a1 mask on target side
3381 * \param[in] ptOP the control block, NULL means using the default control block
3382 * \param[in] ptTarget the target tile
3383 * \param[in] ptRegion the target region
3384 * \param[in] ptAlpha the mask on the target side
3385 * \param[in] tColour a rgb565 colour
3386 * \return arm_fsm_rt_t the operation result
3387 */
3388extern
3389ARM_NONNULL(2,4)
3392 const arm_2d_tile_t *ptTarget,
3393 const arm_2d_region_t *ptRegion,
3394 const arm_2d_tile_t *ptAlpha,
3395 arm_2d_color_rgb565_t tColour);
3396
3397/*!
3398 * \brief fill a target tile with a given cccn888 colour and an a1 mask on target side
3399 * \param[in] ptOP the control block, NULL means using the default control block
3400 * \param[in] ptTarget the target tile
3401 * \param[in] ptRegion the target region
3402 * \param[in] ptAlpha the mask on the target side
3403 * \param[in] tColour a cccn888 colour
3404 * \return arm_fsm_rt_t the operation result
3405 */
3406extern
3407ARM_NONNULL(2,4)
3410 const arm_2d_tile_t *ptTarget,
3411 const arm_2d_region_t *ptRegion,
3412 const arm_2d_tile_t *ptAlpha,
3413 arm_2d_color_cccn888_t tColour);
3414
3415/*----------------------------------------------------------------------------*
3416 * Fill tile with a specified colour and an a2 mask *
3417 *----------------------------------------------------------------------------*/
3418
3419/*!
3420 * \brief fill a target tile with a given gray8 colour and an a2 mask on target side
3421 * \param[in] ptOP the control block, NULL means using the default control block
3422 * \param[in] ptTarget the target tile
3423 * \param[in] ptRegion the target region
3424 * \param[in] ptAlpha the mask on the target side
3425 * \param[in] tColour a gray8 colour
3426 * \return arm_fsm_rt_t the operation result
3427 */
3428extern
3429ARM_NONNULL(2,4)
3432 const arm_2d_tile_t *ptTarget,
3433 const arm_2d_region_t *ptRegion,
3434 const arm_2d_tile_t *ptAlpha,
3435 arm_2d_color_gray8_t tColour);
3436
3437/*!
3438 * \brief fill a target tile with a given rgb565 colour and an a2 mask on target side
3439 * \param[in] ptOP the control block, NULL means using the default control block
3440 * \param[in] ptTarget the target tile
3441 * \param[in] ptRegion the target region
3442 * \param[in] ptAlpha the mask on the target side
3443 * \param[in] tColour a rgb565 colour
3444 * \return arm_fsm_rt_t the operation result
3445 */
3446extern
3447ARM_NONNULL(2,4)
3450 const arm_2d_tile_t *ptTarget,
3451 const arm_2d_region_t *ptRegion,
3452 const arm_2d_tile_t *ptAlpha,
3453 arm_2d_color_rgb565_t tColour);
3454
3455/*!
3456 * \brief fill a target tile with a given cccn888 colour and an a2 mask on target side
3457 * \param[in] ptOP the control block, NULL means using the default control block
3458 * \param[in] ptTarget the target tile
3459 * \param[in] ptRegion the target region
3460 * \param[in] ptAlpha the mask on the target side
3461 * \param[in] tColour a cccn888 colour
3462 * \return arm_fsm_rt_t the operation result
3463 */
3464extern
3465ARM_NONNULL(2,4)
3468 const arm_2d_tile_t *ptTarget,
3469 const arm_2d_region_t *ptRegion,
3470 const arm_2d_tile_t *ptAlpha,
3471 arm_2d_color_cccn888_t tColour);
3472
3473
3474/*----------------------------------------------------------------------------*
3475 * Fill tile with a specified colour and an a4 mask *
3476 *----------------------------------------------------------------------------*/
3477
3478/*!
3479 * \brief fill a target tile with a given gray8 colour and an a4 mask on target side
3480 * \param[in] ptOP the control block, NULL means using the default control block
3481 * \param[in] ptTarget the target tile
3482 * \param[in] ptRegion the target region
3483 * \param[in] ptAlpha the mask on the target side
3484 * \param[in] tColour a gray8 colour
3485 * \return arm_fsm_rt_t the operation result
3486 */
3487extern
3488ARM_NONNULL(2,4)
3491 const arm_2d_tile_t *ptTarget,
3492 const arm_2d_region_t *ptRegion,
3493 const arm_2d_tile_t *ptAlpha,
3494 arm_2d_color_gray8_t tColour);
3495
3496/*!
3497 * \brief fill a target tile with a given rgb565 colour and an a4 mask on target side
3498 * \param[in] ptOP the control block, NULL means using the default control block
3499 * \param[in] ptTarget the target tile
3500 * \param[in] ptRegion the target region
3501 * \param[in] ptAlpha the mask on the target side
3502 * \param[in] tColour a rgb565 colour
3503 * \return arm_fsm_rt_t the operation result
3504 */
3505extern
3506ARM_NONNULL(2,4)
3509 const arm_2d_tile_t *ptTarget,
3510 const arm_2d_region_t *ptRegion,
3511 const arm_2d_tile_t *ptAlpha,
3512 arm_2d_color_rgb565_t tColour);
3513
3514/*!
3515 * \brief fill a target tile with a given cccn888 colour and an a4 mask on target side
3516 * \param[in] ptOP the control block, NULL means using the default control block
3517 * \param[in] ptTarget the target tile
3518 * \param[in] ptRegion the target region
3519 * \param[in] ptAlpha the mask on the target side
3520 * \param[in] tColour a cccn888 colour
3521 * \return arm_fsm_rt_t the operation result
3522 */
3523extern
3524ARM_NONNULL(2,4)
3527 const arm_2d_tile_t *ptTarget,
3528 const arm_2d_region_t *ptRegion,
3529 const arm_2d_tile_t *ptAlpha,
3530 arm_2d_color_cccn888_t tColour);
3531
3532/*----------------------------------------------------------------------------*
3533 * Fill tile with a specified colour and an a8 mask *
3534 *----------------------------------------------------------------------------*/
3535
3536/*!
3537 * \brief fill a target tile with a given gray8 colour and a mask on target side
3538 * \param[in] ptOP the control block, NULL means using the default control block
3539 * \param[in] ptTarget the target tile
3540 * \param[in] ptRegion the target region
3541 * \param[in] ptAlpha the mask on the target side
3542 * \param[in] tColour a gray8 colour
3543 * \return arm_fsm_rt_t the operation result
3544 */
3545extern
3546ARM_NONNULL(2,4)
3549 const arm_2d_tile_t *ptTarget,
3550 const arm_2d_region_t *ptRegion,
3551 const arm_2d_tile_t *ptAlpha,
3552 arm_2d_color_gray8_t tColour);
3553
3554/*!
3555 * \brief fill a target tile with a given rgb565 colour and a mask on target side
3556 * \param[in] ptOP the control block, NULL means using the default control block
3557 * \param[in] ptTarget the target tile
3558 * \param[in] ptRegion the target region
3559 * \param[in] ptAlpha the mask on the target side
3560 * \param[in] tColour a rgb565 colour
3561 * \return arm_fsm_rt_t the operation result
3562 */
3563extern
3564ARM_NONNULL(2,4)
3567 const arm_2d_tile_t *ptTarget,
3568 const arm_2d_region_t *ptRegion,
3569 const arm_2d_tile_t *ptAlpha,
3570 arm_2d_color_rgb565_t tColour);
3571
3572/*!
3573 * \brief fill a target tile with a given cccn888 colour and a mask on target side
3574 * \param[in] ptOP the control block, NULL means using the default control block
3575 * \param[in] ptTarget the target tile
3576 * \param[in] ptRegion the target region
3577 * \param[in] ptAlpha the mask on the target side
3578 * \param[in] tColour a cccn888 colour
3579 * \return arm_fsm_rt_t the operation result
3580 */
3581extern
3582ARM_NONNULL(2,4)
3585 const arm_2d_tile_t *ptTarget,
3586 const arm_2d_region_t *ptRegion,
3587 const arm_2d_tile_t *ptAlpha,
3588 arm_2d_color_cccn888_t tColour);
3589
3590/*----------------------------------------------------------------------------*
3591 * Fill tile with a specified colour, an a1 mask and a specified opacity *
3592 *----------------------------------------------------------------------------*/
3593
3594/*!
3595 * \brief fill a target tile with a given gray8 colour, an a1 mask on target side and an opacity
3596 * \param[in] ptOP the control block, NULL means using the default control block
3597 * \param[in] ptTarget the target tile
3598 * \param[in] ptRegion the target region
3599 * \param[in] ptAlpha the mask on the target side
3600 * \param[in] tColour a gray8 colour
3601 * \param[in] chOpacity the opacity
3602 * \return arm_fsm_rt_t the operation result
3603 */
3604extern
3605ARM_NONNULL(2,4)
3608 const arm_2d_tile_t *ptTarget,
3609 const arm_2d_region_t *ptRegion,
3610 const arm_2d_tile_t *ptAlpha,
3611 arm_2d_color_gray8_t tColour,
3612 uint8_t chOpacity);
3613
3614/*!
3615 * \brief fill a target tile with a given rgb565 colour, an a1 mask on target side and an opacity
3616 * \param[in] ptOP the control block, NULL means using the default control block
3617 * \param[in] ptTarget the target tile
3618 * \param[in] ptRegion the target region
3619 * \param[in] ptAlpha the mask on the target side
3620 * \param[in] tColour a rgb565 colour
3621 * \param[in] chOpacity the opacity
3622 * \return arm_fsm_rt_t the operation result
3623 */
3624extern
3625ARM_NONNULL(2,4)
3628 const arm_2d_tile_t *ptTarget,
3629 const arm_2d_region_t *ptRegion,
3630 const arm_2d_tile_t *ptAlpha,
3631 arm_2d_color_rgb565_t tColour,
3632 uint8_t chOpacity);
3633
3634/*!
3635 * \brief fill a target tile with a given cccn888 colour, an a1 mask on target side and an opacity
3636 * \param[in] ptOP the control block, NULL means using the default control block
3637 * \param[in] ptTarget the target tile
3638 * \param[in] ptRegion the target region
3639 * \param[in] ptAlpha the mask on the target side
3640 * \param[in] tColour a cccn888 colour
3641 * \param[in] chOpacity the opacity
3642 * \return arm_fsm_rt_t the operation result
3643 */
3644extern
3645ARM_NONNULL(2,4)
3648 const arm_2d_tile_t *ptTarget,
3649 const arm_2d_region_t *ptRegion,
3650 const arm_2d_tile_t *ptAlpha,
3651 arm_2d_color_cccn888_t tColour,
3652 uint8_t chOpacity);
3653
3654/*----------------------------------------------------------------------------*
3655 * Fill tile with a specified colour, an a2 mask and a specified opacity *
3656 *----------------------------------------------------------------------------*/
3657
3658/*!
3659 * \brief fill a target tile with a given gray8 colour, an a2 mask on target side and an opacity
3660 * \param[in] ptOP the control block, NULL means using the default control block
3661 * \param[in] ptTarget the target tile
3662 * \param[in] ptRegion the target region
3663 * \param[in] ptAlpha the mask on the target side
3664 * \param[in] tColour a gray8 colour
3665 * \param[in] chOpacity the opacity
3666 * \return arm_fsm_rt_t the operation result
3667 */
3668extern
3669ARM_NONNULL(2,4)
3672 const arm_2d_tile_t *ptTarget,
3673 const arm_2d_region_t *ptRegion,
3674 const arm_2d_tile_t *ptAlpha,
3675 arm_2d_color_gray8_t tColour,
3676 uint8_t chOpacity);
3677
3678/*!
3679 * \brief fill a target tile with a given rgb565 colour, an a2 mask on target side and an opacity
3680 * \param[in] ptOP the control block, NULL means using the default control block
3681 * \param[in] ptTarget the target tile
3682 * \param[in] ptRegion the target region
3683 * \param[in] ptAlpha the mask on the target side
3684 * \param[in] tColour a rgb565 colour
3685 * \param[in] chOpacity the opacity
3686 * \return arm_fsm_rt_t the operation result
3687 */
3688extern
3689ARM_NONNULL(2,4)
3692 const arm_2d_tile_t *ptTarget,
3693 const arm_2d_region_t *ptRegion,
3694 const arm_2d_tile_t *ptAlpha,
3695 arm_2d_color_rgb565_t tColour,
3696 uint8_t chOpacity);
3697
3698/*!
3699 * \brief fill a target tile with a given cccn888 colour, an a2 mask on target side and an opacity
3700 * \param[in] ptOP the control block, NULL means using the default control block
3701 * \param[in] ptTarget the target tile
3702 * \param[in] ptRegion the target region
3703 * \param[in] ptAlpha the mask on the target side
3704 * \param[in] tColour a cccn888 colour
3705 * \param[in] chOpacity the opacity
3706 * \return arm_fsm_rt_t the operation result
3707 */
3708extern
3709ARM_NONNULL(2,4)
3712 const arm_2d_tile_t *ptTarget,
3713 const arm_2d_region_t *ptRegion,
3714 const arm_2d_tile_t *ptAlpha,
3715 arm_2d_color_cccn888_t tColour,
3716 uint8_t chOpacity);
3717
3718/*----------------------------------------------------------------------------*
3719 * Fill tile with a specified colour, an a4 mask and a specified opacity *
3720 *----------------------------------------------------------------------------*/
3721
3722/*!
3723 * \brief fill a target tile with a given gray8 colour, an a4 mask on target side and an opacity
3724 * \param[in] ptOP the control block, NULL means using the default control block
3725 * \param[in] ptTarget the target tile
3726 * \param[in] ptRegion the target region
3727 * \param[in] ptAlpha the mask on the target side
3728 * \param[in] tColour a gray8 colour
3729 * \param[in] chOpacity the opacity
3730 * \return arm_fsm_rt_t the operation result
3731 */
3732extern
3733ARM_NONNULL(2,4)
3736 const arm_2d_tile_t *ptTarget,
3737 const arm_2d_region_t *ptRegion,
3738 const arm_2d_tile_t *ptAlpha,
3739 arm_2d_color_gray8_t tColour,
3740 uint8_t chOpacity);
3741
3742/*!
3743 * \brief fill a target tile with a given rgb565 colour, an a4 mask on target side and an opacity
3744 * \param[in] ptOP the control block, NULL means using the default control block
3745 * \param[in] ptTarget the target tile
3746 * \param[in] ptRegion the target region
3747 * \param[in] ptAlpha the mask on the target side
3748 * \param[in] tColour a rgb565 colour
3749 * \param[in] chOpacity the opacity
3750 * \return arm_fsm_rt_t the operation result
3751 */
3752extern
3753ARM_NONNULL(2,4)
3756 const arm_2d_tile_t *ptTarget,
3757 const arm_2d_region_t *ptRegion,
3758 const arm_2d_tile_t *ptAlpha,
3759 arm_2d_color_rgb565_t tColour,
3760 uint8_t chOpacity);
3761
3762/*!
3763 * \brief fill a target tile with a given cccn888 colour, an a4 mask on target side and an opacity
3764 * \param[in] ptOP the control block, NULL means using the default control block
3765 * \param[in] ptTarget the target tile
3766 * \param[in] ptRegion the target region
3767 * \param[in] ptAlpha the mask on the target side
3768 * \param[in] tColour a cccn888 colour
3769 * \param[in] chOpacity the opacity
3770 * \return arm_fsm_rt_t the operation result
3771 */
3772extern
3773ARM_NONNULL(2,4)
3776 const arm_2d_tile_t *ptTarget,
3777 const arm_2d_region_t *ptRegion,
3778 const arm_2d_tile_t *ptAlpha,
3779 arm_2d_color_cccn888_t tColour,
3780 uint8_t chOpacity);
3781
3782/*----------------------------------------------------------------------------*
3783 * Fill tile with a specified colour, an alpha mask and a specified opacity *
3784 *----------------------------------------------------------------------------*/
3785
3786/*!
3787 * \brief fill a target tile with a given gray8 colour, a mask on target side and an opacity
3788 * \param[in] ptOP the control block, NULL means using the default control block
3789 * \param[in] ptTarget the target tile
3790 * \param[in] ptRegion the target region
3791 * \param[in] ptAlpha the mask on the target side
3792 * \param[in] tColour a gray8 colour
3793 * \param[in] chOpacity the opacity
3794 * \return arm_fsm_rt_t the operation result
3795 */
3796extern
3797ARM_NONNULL(2,4)
3800 const arm_2d_tile_t *ptTarget,
3801 const arm_2d_region_t *ptRegion,
3802 const arm_2d_tile_t *ptAlpha,
3803 arm_2d_color_gray8_t tColour,
3804 uint8_t chOpacity);
3805
3806/*!
3807 * \brief fill a target tile with a given rgb565 colour, a mask on target side and an opacity
3808 * \param[in] ptOP the control block, NULL means using the default control block
3809 * \param[in] ptTarget the target tile
3810 * \param[in] ptRegion the target region
3811 * \param[in] ptAlpha the mask on the target side
3812 * \param[in] tColour a rgb565 colour
3813 * \param[in] chOpacity the opacity
3814 * \return arm_fsm_rt_t the operation result
3815 */
3816extern
3817ARM_NONNULL(2,4)
3820 const arm_2d_tile_t *ptTarget,
3821 const arm_2d_region_t *ptRegion,
3822 const arm_2d_tile_t *ptAlpha,
3823 arm_2d_color_rgb565_t tColour,
3824 uint8_t chOpacity);
3825
3826/*!
3827 * \brief fill a target tile with a given cccn888 colour, a mask on target side and an opacity
3828 * \param[in] ptOP the control block, NULL means using the default control block
3829 * \param[in] ptTarget the target tile
3830 * \param[in] ptRegion the target region
3831 * \param[in] ptAlpha the mask on the target side
3832 * \param[in] tColour a cccn888 colour
3833 * \param[in] chOpacity the opacity
3834 * \return arm_fsm_rt_t the operation result
3835 */
3836extern
3837ARM_NONNULL(2,4)
3840 const arm_2d_tile_t *ptTarget,
3841 const arm_2d_region_t *ptRegion,
3842 const arm_2d_tile_t *ptAlpha,
3843 arm_2d_color_cccn888_t tColour,
3844 uint8_t chOpacity);
3845
3846/*----------------------------------------------------------------------------*
3847 * Blend tile and background with a specified transparency ratio(0~255) and *
3848 * colour keying *
3849 *----------------------------------------------------------------------------*/
3850
3851/*!
3852 * \brief blend a source tile to a target tile with a opacity and colour keying
3853 * \param[in] ptOP the control block, NULL means using the default control block
3854 * \param[in] ptSource the source tile
3855 * \param[in] ptTarget the target tile
3856 * \param[in] ptRegion the target region
3857 * \param[in] chRatio the opacity
3858 * \param[in] tColour the key colour
3859 * \return arm_fsm_rt_t the operation result
3860 */
3861extern
3862ARM_NONNULL(2,3)
3865 const arm_2d_tile_t *ptSource,
3866 const arm_2d_tile_t *ptTarget,
3867 const arm_2d_region_t *ptRegion,
3868 uint_fast8_t chRatio,
3869 arm_2d_color_gray8_t tColour);
3870
3871/*!
3872 * \brief blend a source tile to a target tile with a opacity and colour keying
3873 * \param[in] ptOP the control block, NULL means using the default control block
3874 * \param[in] ptSource the source tile
3875 * \param[in] ptTarget the target tile
3876 * \param[in] ptRegion the target region
3877 * \param[in] chRatio the opacity
3878 * \param[in] tColour the key colour
3879 * \return arm_fsm_rt_t the operation result
3880 */
3881extern
3882ARM_NONNULL(2,3)
3885 const arm_2d_tile_t *ptSource,
3886 const arm_2d_tile_t *ptTarget,
3887 const arm_2d_region_t *ptRegion,
3888 uint_fast8_t chRatio,
3889 arm_2d_color_rgb565_t tColour);
3890
3891/*!
3892 * \brief blend a source tile to a target tile with a opacity and colour keying
3893 * \param[in] ptOP the control block, NULL means using the default control block
3894 * \param[in] ptSource the source tile
3895 * \param[in] ptTarget the target tile
3896 * \param[in] ptRegion the target region
3897 * \param[in] chRatio the opacity
3898 * \param[in] tColour the key colour
3899 * \return arm_fsm_rt_t the operation result
3900 */
3901extern
3902ARM_NONNULL(2,3)
3905 const arm_2d_tile_t *ptSource,
3906 const arm_2d_tile_t *ptTarget,
3907 const arm_2d_region_t *ptRegion,
3908 uint_fast8_t chRatio,
3909 arm_2d_color_cccn888_t tColour);
3910
3911/*----------------------------------------------------------------------------*
3912 * Copy tile to target tile with a source mask and a target mask *
3913 *----------------------------------------------------------------------------*/
3914
3915/*!
3916 * \brief copy a source tile to a target tile with masks
3917 * \param[in] ptOP the control block, NULL means using the default control block
3918 * \param[in] ptSource the source tile
3919 * \param[in] ptSrcMask the mask on the source side
3920 * \param[in] ptTarget the target tile
3921 * \param[in] ptDesMask the mask on the target side
3922 * \param[in] ptRegion the target region
3923 * \return arm_fsm_rt_t the operation result
3924 */
3925extern
3926ARM_NONNULL(2,3,4,5)
3928 arm_2d_op_cp_msk_t *ptOP,
3929 const arm_2d_tile_t *ptSource,
3930 const arm_2d_tile_t *ptSrcMask,
3931 const arm_2d_tile_t *ptTarget,
3932 const arm_2d_tile_t *ptDesMask,
3933 const arm_2d_region_t *ptRegion);
3934
3935/*!
3936 * \brief copy a source tile to a target tile with masks
3937 * \param[in] ptOP the control block, NULL means using the default control block
3938 * \param[in] ptSource the source tile
3939 * \param[in] ptSrcMask the mask on the source side
3940 * \param[in] ptTarget the target tile
3941 * \param[in] ptDesMask the mask on the target side
3942 * \param[in] ptRegion the target region
3943 * \return arm_fsm_rt_t the operation result
3944 */
3945extern
3946ARM_NONNULL(2,3,4,5)
3948 arm_2d_op_cp_msk_t *ptOP,
3949 const arm_2d_tile_t *ptSource,
3950 const arm_2d_tile_t *ptSrcMask,
3951 const arm_2d_tile_t *ptTarget,
3952 const arm_2d_tile_t *ptDesMask,
3953 const arm_2d_region_t *ptRegion);
3954
3955/*!
3956 * \brief copy a source tile to a target tile with masks
3957 * \param[in] ptOP the control block, NULL means using the default control block
3958 * \param[in] ptSource the source tile
3959 * \param[in] ptSrcMask the mask on the source side
3960 * \param[in] ptTarget the target tile
3961 * \param[in] ptDesMask the mask on the target side
3962 * \param[in] ptRegion the target region
3963 * \return arm_fsm_rt_t the operation result
3964 */
3965extern
3966ARM_NONNULL(2,3,4,5)
3968 arm_2d_op_cp_msk_t *ptOP,
3969 const arm_2d_tile_t *ptSource,
3970 const arm_2d_tile_t *ptSrcMask,
3971 const arm_2d_tile_t *ptTarget,
3972 const arm_2d_tile_t *ptDesMask,
3973 const arm_2d_region_t *ptRegion);
3974
3975
3976/*----------------------------------------------------------------------------*
3977 * Copy tile to target tile with a source mask, a target mask and x-mirroring *
3978 *----------------------------------------------------------------------------*/
3979
3980/*!
3981 * \brief copy a source tile to a target tile with masks and x-mirroring
3982 * \param[in] ptOP the control block, NULL means using the default control block
3983 * \param[in] ptSource the source tile
3984 * \param[in] ptSrcMask the mask on the source side
3985 * \param[in] ptTarget the target tile
3986 * \param[in] ptDesMask the mask on the target side
3987 * \param[in] ptRegion the target region
3988 * \return arm_fsm_rt_t the operation result
3989 */
3990extern
3991ARM_NONNULL(2,3,4,5)
3993 arm_2d_op_cp_msk_t *ptOP,
3994 const arm_2d_tile_t *ptSource,
3995 const arm_2d_tile_t *ptSrcMask,
3996 const arm_2d_tile_t *ptTarget,
3997 const arm_2d_tile_t *ptDesMask,
3998 const arm_2d_region_t *ptRegion);
3999
4000/*!
4001 * \brief copy a source tile to a target tile with masks and x-mirroring
4002 * \param[in] ptOP the control block, NULL means using the default control block
4003 * \param[in] ptSource the source tile
4004 * \param[in] ptSrcMask the mask on the source side
4005 * \param[in] ptTarget the target tile
4006 * \param[in] ptDesMask the mask on the target side
4007 * \param[in] ptRegion the target region
4008 * \return arm_fsm_rt_t the operation result
4009 */
4010extern
4011ARM_NONNULL(2,3,4,5)
4013 arm_2d_op_cp_msk_t *ptOP,
4014 const arm_2d_tile_t *ptSource,
4015 const arm_2d_tile_t *ptSrcMask,
4016 const arm_2d_tile_t *ptTarget,
4017 const arm_2d_tile_t *ptDesMask,
4018 const arm_2d_region_t *ptRegion);
4019
4020/*!
4021 * \brief copy a source tile to a target tile with masks and x-mirroring
4022 * \param[in] ptOP the control block, NULL means using the default control block
4023 * \param[in] ptSource the source tile
4024 * \param[in] ptSrcMask the mask on the source side
4025 * \param[in] ptTarget the target tile
4026 * \param[in] ptDesMask the mask on the target side
4027 * \param[in] ptRegion the target region
4028 * \return arm_fsm_rt_t the operation result
4029 */
4030extern
4031ARM_NONNULL(2,3,4,5)
4033 arm_2d_op_cp_msk_t *ptOP,
4034 const arm_2d_tile_t *ptSource,
4035 const arm_2d_tile_t *ptSrcMask,
4036 const arm_2d_tile_t *ptTarget,
4037 const arm_2d_tile_t *ptDesMask,
4038 const arm_2d_region_t *ptRegion);
4039
4040
4041/*----------------------------------------------------------------------------*
4042 * Copy tile to target tile with a source mask, a target mask and y-mirroring *
4043 *----------------------------------------------------------------------------*/
4044
4045/*!
4046 * \brief copy a source tile to a target tile with masks and y-mirroring
4047 * \param[in] ptOP the control block, NULL means using the default control block
4048 * \param[in] ptSource the source tile
4049 * \param[in] ptSrcMask the mask on the source side
4050 * \param[in] ptTarget the target tile
4051 * \param[in] ptDesMask the mask on the target side
4052 * \param[in] ptRegion the target region
4053 * \return arm_fsm_rt_t the operation result
4054 */
4055extern
4056ARM_NONNULL(2,3,4,5)
4058 arm_2d_op_cp_msk_t *ptOP,
4059 const arm_2d_tile_t *ptSource,
4060 const arm_2d_tile_t *ptSrcMask,
4061 const arm_2d_tile_t *ptTarget,
4062 const arm_2d_tile_t *ptDesMask,
4063 const arm_2d_region_t *ptRegion);
4064
4065/*!
4066 * \brief copy a source tile to a target tile with masks and y-mirroring
4067 * \param[in] ptOP the control block, NULL means using the default control block
4068 * \param[in] ptSource the source tile
4069 * \param[in] ptSrcMask the mask on the source side
4070 * \param[in] ptTarget the target tile
4071 * \param[in] ptDesMask the mask on the target side
4072 * \param[in] ptRegion the target region
4073 * \return arm_fsm_rt_t the operation result
4074 */
4075extern
4076ARM_NONNULL(2,3,4,5)
4078 arm_2d_op_cp_msk_t *ptOP,
4079 const arm_2d_tile_t *ptSource,
4080 const arm_2d_tile_t *ptSrcMask,
4081 const arm_2d_tile_t *ptTarget,
4082 const arm_2d_tile_t *ptDesMask,
4083 const arm_2d_region_t *ptRegion);
4084
4085/*!
4086 * \brief copy a source tile to a target tile with masks and y-mirroring
4087 * \param[in] ptOP the control block, NULL means using the default control block
4088 * \param[in] ptSource the source tile
4089 * \param[in] ptSrcMask the mask on the source side
4090 * \param[in] ptTarget the target tile
4091 * \param[in] ptDesMask the mask on the target side
4092 * \param[in] ptRegion the target region
4093 * \return arm_fsm_rt_t the operation result
4094 */
4095extern
4096ARM_NONNULL(2,3,4,5)
4098 arm_2d_op_cp_msk_t *ptOP,
4099 const arm_2d_tile_t *ptSource,
4100 const arm_2d_tile_t *ptSrcMask,
4101 const arm_2d_tile_t *ptTarget,
4102 const arm_2d_tile_t *ptDesMask,
4103 const arm_2d_region_t *ptRegion);
4104
4105
4106/*----------------------------------------------------------------------------*
4107 * Copy tile to target tile with a source mask, a target mask and xy-mirroring *
4108 *----------------------------------------------------------------------------*/
4109
4110/*!
4111 * \brief copy a source tile to a target tile with masks and xy-mirroring
4112 * \param[in] ptOP the control block, NULL means using the default control block
4113 * \param[in] ptSource the source tile
4114 * \param[in] ptSrcMask the mask on the source side
4115 * \param[in] ptTarget the target tile
4116 * \param[in] ptDesMask the mask on the target side
4117 * \param[in] ptRegion the target region
4118 * \return arm_fsm_rt_t the operation result
4119 */
4120extern
4121ARM_NONNULL(2,3,4,5)
4123 arm_2d_op_cp_msk_t *ptOP,
4124 const arm_2d_tile_t *ptSource,
4125 const arm_2d_tile_t *ptSrcMask,
4126 const arm_2d_tile_t *ptTarget,
4127 const arm_2d_tile_t *ptDesMask,
4128 const arm_2d_region_t *ptRegion);
4129
4130/*!
4131 * \brief copy a source tile to a target tile with masks and xy-mirroring
4132 * \param[in] ptOP the control block, NULL means using the default control block
4133 * \param[in] ptSource the source tile
4134 * \param[in] ptSrcMask the mask on the source side
4135 * \param[in] ptTarget the target tile
4136 * \param[in] ptDesMask the mask on the target side
4137 * \param[in] ptRegion the target region
4138 * \return arm_fsm_rt_t the operation result
4139 */
4140extern
4141ARM_NONNULL(2,3,4,5)
4143 arm_2d_op_cp_msk_t *ptOP,
4144 const arm_2d_tile_t *ptSource,
4145 const arm_2d_tile_t *ptSrcMask,
4146 const arm_2d_tile_t *ptTarget,
4147 const arm_2d_tile_t *ptDesMask,
4148 const arm_2d_region_t *ptRegion);
4149
4150/*!
4151 * \brief copy a source tile to a target tile with masks and xy-mirroring
4152 * \param[in] ptOP the control block, NULL means using the default control block
4153 * \param[in] ptSource the source tile
4154 * \param[in] ptSrcMask the mask on the source side
4155 * \param[in] ptTarget the target tile
4156 * \param[in] ptDesMask the mask on the target side
4157 * \param[in] ptRegion the target region
4158 * \return arm_fsm_rt_t the operation result
4159 */
4160extern
4161ARM_NONNULL(2,3,4,5)
4163 arm_2d_op_cp_msk_t *ptOP,
4164 const arm_2d_tile_t *ptSource,
4165 const arm_2d_tile_t *ptSrcMask,
4166 const arm_2d_tile_t *ptTarget,
4167 const arm_2d_tile_t *ptDesMask,
4168 const arm_2d_region_t *ptRegion);
4169
4170/*----------------------------------------------------------------------------*
4171 * Fill tile to target tile with a source mask and a target mask *
4172 *----------------------------------------------------------------------------*/
4173
4174/*!
4175 * \brief fill a source tile to a target tile with masks
4176 * \param[in] ptOP the control block, NULL means using the default control block
4177 * \param[in] ptSource the source tile
4178 * \param[in] ptSrcMask the mask on the source side
4179 * \param[in] ptTarget the target tile
4180 * \param[in] ptDesMask the mask on the target side
4181 * \param[in] ptRegion the target region
4182 * \return arm_fsm_rt_t the operation result
4183 */
4184extern
4185ARM_NONNULL(2,3,4,5)
4187 arm_2d_op_cp_msk_t *ptOP,
4188 const arm_2d_tile_t *ptSource,
4189 const arm_2d_tile_t *ptSrcMask,
4190 const arm_2d_tile_t *ptTarget,
4191 const arm_2d_tile_t *ptDesMask,
4192 const arm_2d_region_t *ptRegion);
4193
4194/*!
4195 * \brief fill a source tile to a target tile with masks
4196 * \param[in] ptOP the control block, NULL means using the default control block
4197 * \param[in] ptSource the source tile
4198 * \param[in] ptSrcMask the mask on the source side
4199 * \param[in] ptTarget the target tile
4200 * \param[in] ptDesMask the mask on the target side
4201 * \param[in] ptRegion the target region
4202 * \return arm_fsm_rt_t the operation result
4203 */
4204extern
4205ARM_NONNULL(2,3,4,5)
4207 arm_2d_op_cp_msk_t *ptOP,
4208 const arm_2d_tile_t *ptSource,
4209 const arm_2d_tile_t *ptSrcMask,
4210 const arm_2d_tile_t *ptTarget,
4211 const arm_2d_tile_t *ptDesMask,
4212 const arm_2d_region_t *ptRegion);
4213
4214/*!
4215 * \brief fill a source tile to a target tile with masks
4216 * \param[in] ptOP the control block, NULL means using the default control block
4217 * \param[in] ptSource the source tile
4218 * \param[in] ptSrcMask the mask on the source side
4219 * \param[in] ptTarget the target tile
4220 * \param[in] ptDesMask the mask on the target side
4221 * \param[in] ptRegion the target region
4222 * \return arm_fsm_rt_t the operation result
4223 */
4224extern
4225ARM_NONNULL(2,3,4,5)
4227 arm_2d_op_cp_msk_t *ptOP,
4228 const arm_2d_tile_t *ptSource,
4229 const arm_2d_tile_t *ptSrcMask,
4230 const arm_2d_tile_t *ptTarget,
4231 const arm_2d_tile_t *ptDesMask,
4232 const arm_2d_region_t *ptRegion);
4233
4234
4235/*----------------------------------------------------------------------------*
4236 * Fill tile to target tile with a source mask, a target mask and x-mirroring *
4237 *----------------------------------------------------------------------------*/
4238
4239/*!
4240 * \brief fill a source tile to a target tile with masks and x-mirroring
4241 * \param[in] ptOP the control block, NULL means using the default control block
4242 * \param[in] ptSource the source tile
4243 * \param[in] ptSrcMask the mask on the source side
4244 * \param[in] ptTarget the target tile
4245 * \param[in] ptDesMask the mask on the target side
4246 * \param[in] ptRegion the target region
4247 * \return arm_fsm_rt_t the operation result
4248 */
4249extern
4250ARM_NONNULL(2,3,4,5)
4252 arm_2d_op_cp_msk_t *ptOP,
4253 const arm_2d_tile_t *ptSource,
4254 const arm_2d_tile_t *ptSrcMask,
4255 const arm_2d_tile_t *ptTarget,
4256 const arm_2d_tile_t *ptDesMask,
4257 const arm_2d_region_t *ptRegion);
4258
4259/*!
4260 * \brief fill a source tile to a target tile with masks and x-mirroring
4261 * \param[in] ptOP the control block, NULL means using the default control block
4262 * \param[in] ptSource the source tile
4263 * \param[in] ptSrcMask the mask on the source side
4264 * \param[in] ptTarget the target tile
4265 * \param[in] ptDesMask the mask on the target side
4266 * \param[in] ptRegion the target region
4267 * \return arm_fsm_rt_t the operation result
4268 */
4269extern
4270ARM_NONNULL(2,3,4,5)
4272 arm_2d_op_cp_msk_t *ptOP,
4273 const arm_2d_tile_t *ptSource,
4274 const arm_2d_tile_t *ptSrcMask,
4275 const arm_2d_tile_t *ptTarget,
4276 const arm_2d_tile_t *ptDesMask,
4277 const arm_2d_region_t *ptRegion);
4278
4279/*!
4280 * \brief fill a source tile to a target tile with masks and x-mirroring
4281 * \param[in] ptOP the control block, NULL means using the default control block
4282 * \param[in] ptSource the source tile
4283 * \param[in] ptSrcMask the mask on the source side
4284 * \param[in] ptTarget the target tile
4285 * \param[in] ptDesMask the mask on the target side
4286 * \param[in] ptRegion the target region
4287 * \return arm_fsm_rt_t the operation result
4288 */
4289extern
4290ARM_NONNULL(2,3,4,5)
4292 arm_2d_op_cp_msk_t *ptOP,
4293 const arm_2d_tile_t *ptSource,
4294 const arm_2d_tile_t *ptSrcMask,
4295 const arm_2d_tile_t *ptTarget,
4296 const arm_2d_tile_t *ptDesMask,
4297 const arm_2d_region_t *ptRegion);
4298
4299
4300/*----------------------------------------------------------------------------*
4301 * Fill tile to target tile with a source mask, a target mask and y-mirroring *
4302 *----------------------------------------------------------------------------*/
4303
4304/*!
4305 * \brief fill a source tile to a target tile with masks and y-mirroring
4306 * \param[in] ptOP the control block, NULL means using the default control block
4307 * \param[in] ptSource the source tile
4308 * \param[in] ptSrcMask the mask on the source side
4309 * \param[in] ptTarget the target tile
4310 * \param[in] ptDesMask the mask on the target side
4311 * \param[in] ptRegion the target region
4312 * \return arm_fsm_rt_t the operation result
4313 */
4314extern
4315ARM_NONNULL(2,3,4,5)
4317 arm_2d_op_cp_msk_t *ptOP,
4318 const arm_2d_tile_t *ptSource,
4319 const arm_2d_tile_t *ptSrcMask,
4320 const arm_2d_tile_t *ptTarget,
4321 const arm_2d_tile_t *ptDesMask,
4322 const arm_2d_region_t *ptRegion);
4323
4324/*!
4325 * \brief fill a source tile to a target tile with masks and y-mirroring
4326 * \param[in] ptOP the control block, NULL means using the default control block
4327 * \param[in] ptSource the source tile
4328 * \param[in] ptSrcMask the mask on the source side
4329 * \param[in] ptTarget the target tile
4330 * \param[in] ptDesMask the mask on the target side
4331 * \param[in] ptRegion the target region
4332 * \return arm_fsm_rt_t the operation result
4333 */
4334extern
4335ARM_NONNULL(2,3,4,5)
4337 arm_2d_op_cp_msk_t *ptOP,
4338 const arm_2d_tile_t *ptSource,
4339 const arm_2d_tile_t *ptSrcMask,
4340 const arm_2d_tile_t *ptTarget,
4341 const arm_2d_tile_t *ptDesMask,
4342 const arm_2d_region_t *ptRegion);
4343
4344/*!
4345 * \brief fill a source tile to a target tile with masks and y-mirroring
4346 * \param[in] ptOP the control block, NULL means using the default control block
4347 * \param[in] ptSource the source tile
4348 * \param[in] ptSrcMask the mask on the source side
4349 * \param[in] ptTarget the target tile
4350 * \param[in] ptDesMask the mask on the target side
4351 * \param[in] ptRegion the target region
4352 * \return arm_fsm_rt_t the operation result
4353 */
4354extern
4355ARM_NONNULL(2,3,4,5)
4357 arm_2d_op_cp_msk_t *ptOP,
4358 const arm_2d_tile_t *ptSource,
4359 const arm_2d_tile_t *ptSrcMask,
4360 const arm_2d_tile_t *ptTarget,
4361 const arm_2d_tile_t *ptDesMask,
4362 const arm_2d_region_t *ptRegion);
4363
4364
4365/*----------------------------------------------------------------------------*
4366 * Fill tile to target tile with a source mask, a target mask and xy-mirroring *
4367 *----------------------------------------------------------------------------*/
4368
4369/*!
4370 * \brief fill a source tile to a target tile with masks and xy-mirroring
4371 * \param[in] ptOP the control block, NULL means using the default control block
4372 * \param[in] ptSource the source tile
4373 * \param[in] ptSrcMask the mask on the source side
4374 * \param[in] ptTarget the target tile
4375 * \param[in] ptDesMask the mask on the target side
4376 * \param[in] ptRegion the target region
4377 * \return arm_fsm_rt_t the operation result
4378 */
4379extern
4380ARM_NONNULL(2,3,4,5)
4382 arm_2d_op_cp_msk_t *ptOP,
4383 const arm_2d_tile_t *ptSource,
4384 const arm_2d_tile_t *ptSrcMask,
4385 const arm_2d_tile_t *ptTarget,
4386 const arm_2d_tile_t *ptDesMask,
4387 const arm_2d_region_t *ptRegion);
4388
4389/*!
4390 * \brief fill a source tile to a target tile with masks and xy-mirroring
4391 * \param[in] ptOP the control block, NULL means using the default control block
4392 * \param[in] ptSource the source tile
4393 * \param[in] ptSrcMask the mask on the source side
4394 * \param[in] ptTarget the target tile
4395 * \param[in] ptDesMask the mask on the target side
4396 * \param[in] ptRegion the target region
4397 * \return arm_fsm_rt_t the operation result
4398 */
4399extern
4400ARM_NONNULL(2,3,4,5)
4402 arm_2d_op_cp_msk_t *ptOP,
4403 const arm_2d_tile_t *ptSource,
4404 const arm_2d_tile_t *ptSrcMask,
4405 const arm_2d_tile_t *ptTarget,
4406 const arm_2d_tile_t *ptDesMask,
4407 const arm_2d_region_t *ptRegion);
4408
4409/*!
4410 * \brief fill a source tile to a target tile with masks and xy-mirroring
4411 * \param[in] ptOP the control block, NULL means using the default control block
4412 * \param[in] ptSource the source tile
4413 * \param[in] ptSrcMask the mask on the source side
4414 * \param[in] ptTarget the target tile
4415 * \param[in] ptDesMask the mask on the target side
4416 * \param[in] ptRegion the target region
4417 * \return arm_fsm_rt_t the operation result
4418 */
4419extern
4420ARM_NONNULL(2,3,4,5)
4422 arm_2d_op_cp_msk_t *ptOP,
4423 const arm_2d_tile_t *ptSource,
4424 const arm_2d_tile_t *ptSrcMask,
4425 const arm_2d_tile_t *ptTarget,
4426 const arm_2d_tile_t *ptDesMask,
4427 const arm_2d_region_t *ptRegion);
4428
4429
4430/*----------------------------------------------------------------------------*
4431 * Copy tile to destination with a specified source mask *
4432 *----------------------------------------------------------------------------*/
4433/*!
4434 * \brief copy a source tile to a target tile with a source mask
4435 * \param[in] ptOP the control block, NULL means using the default control block
4436 * \param[in] ptSource the source tile
4437 * \param[in] ptSrcMask the mask on the source side
4438 * \param[in] ptTarget the target tile
4439 * \param[in] ptRegion the target region
4440 * \return arm_fsm_rt_t the operation result
4441 */
4442extern
4443ARM_NONNULL(2,3,4)
4445 arm_2d_op_cp_msk_t *ptOP,
4446 const arm_2d_tile_t *ptSource,
4447 const arm_2d_tile_t *ptSrcMask,
4448 const arm_2d_tile_t *ptTarget,
4449 const arm_2d_region_t *ptRegion);
4450
4451/*!
4452 * \brief copy a source tile to a target tile with a source mask
4453 * \param[in] ptOP the control block, NULL means using the default control block
4454 * \param[in] ptSource the source tile
4455 * \param[in] ptSrcMask the mask on the source side
4456 * \param[in] ptTarget the target tile
4457 * \param[in] ptRegion the target region
4458 * \return arm_fsm_rt_t the operation result
4459 */
4460extern
4461ARM_NONNULL(2,3,4)
4463 arm_2d_op_cp_msk_t *ptOP,
4464 const arm_2d_tile_t *ptSource,
4465 const arm_2d_tile_t *ptSrcMask,
4466 const arm_2d_tile_t *ptTarget,
4467 const arm_2d_region_t *ptRegion);
4468
4469/*!
4470 * \brief copy a source tile to a target tile with a source mask
4471 * \param[in] ptOP the control block, NULL means using the default control block
4472 * \param[in] ptSource the source tile
4473 * \param[in] ptSrcMask the mask on the source side
4474 * \param[in] ptTarget the target tile
4475 * \param[in] ptRegion the target region
4476 * \param[in] wMode the copy mode
4477 * \return arm_fsm_rt_t the operation result
4478 */
4479extern
4480ARM_NONNULL(2,3,4)
4482 arm_2d_op_cp_msk_t *ptOP,
4483 const arm_2d_tile_t *ptSource,
4484 const arm_2d_tile_t *ptSrcMask,
4485 const arm_2d_tile_t *ptTarget,
4486 const arm_2d_region_t *ptRegion);
4487
4488
4489/*----------------------------------------------------------------------------*
4490 * Copy tile to destination with a specified source mask and x-mirroring *
4491 *----------------------------------------------------------------------------*/
4492/*!
4493 * \brief copy a source tile to a target tile with a source mask and x-mirroring
4494 * \param[in] ptOP the control block, NULL means using the default control block
4495 * \param[in] ptSource the source tile
4496 * \param[in] ptSrcMask the mask on the source side
4497 * \param[in] ptTarget the target tile
4498 * \param[in] ptRegion the target region
4499 * \return arm_fsm_rt_t the operation result
4500 */
4501extern
4502ARM_NONNULL(2,3,4)
4504 arm_2d_op_cp_msk_t *ptOP,
4505 const arm_2d_tile_t *ptSource,
4506 const arm_2d_tile_t *ptSrcMask,
4507 const arm_2d_tile_t *ptTarget,
4508 const arm_2d_region_t *ptRegion);
4509
4510/*!
4511 * \brief copy a source tile to a target tile with a source mask and x-mirroring
4512 * \param[in] ptOP the control block, NULL means using the default control block
4513 * \param[in] ptSource the source tile
4514 * \param[in] ptSrcMask the mask on the source side
4515 * \param[in] ptTarget the target tile
4516 * \param[in] ptRegion the target region
4517 * \return arm_fsm_rt_t the operation result
4518 */
4519extern
4520ARM_NONNULL(2,3,4)
4522 arm_2d_op_cp_msk_t *ptOP,
4523 const arm_2d_tile_t *ptSource,
4524 const arm_2d_tile_t *ptSrcMask,
4525 const arm_2d_tile_t *ptTarget,
4526 const arm_2d_region_t *ptRegion);
4527
4528/*!
4529 * \brief copy a source tile to a target tile with a source mask and x-mirroring
4530 * \param[in] ptOP the control block, NULL means using the default control block
4531 * \param[in] ptSource the source tile
4532 * \param[in] ptSrcMask the mask on the source side
4533 * \param[in] ptTarget the target tile
4534 * \param[in] ptRegion the target region
4535 * \param[in] wMode the copy mode
4536 * \return arm_fsm_rt_t the operation result
4537 */
4538extern
4539ARM_NONNULL(2,3,4)
4541 arm_2d_op_cp_msk_t *ptOP,
4542 const arm_2d_tile_t *ptSource,
4543 const arm_2d_tile_t *ptSrcMask,
4544 const arm_2d_tile_t *ptTarget,
4545 const arm_2d_region_t *ptRegion);
4546
4547/*----------------------------------------------------------------------------*
4548 * Copy tile to destination with a specified source mask and y-mirroring *
4549 *----------------------------------------------------------------------------*/
4550/*!
4551 * \brief copy a source tile to a target tile with a source mask and y-mirroring
4552 * \param[in] ptOP the control block, NULL means using the default control block
4553 * \param[in] ptSource the source tile
4554 * \param[in] ptSrcMask the mask on the source side
4555 * \param[in] ptTarget the target tile
4556 * \param[in] ptRegion the target region
4557 * \return arm_fsm_rt_t the operation result
4558 */
4559extern
4560ARM_NONNULL(2,3,4)
4562 arm_2d_op_cp_msk_t *ptOP,
4563 const arm_2d_tile_t *ptSource,
4564 const arm_2d_tile_t *ptSrcMask,
4565 const arm_2d_tile_t *ptTarget,
4566 const arm_2d_region_t *ptRegion);
4567
4568/*!
4569 * \brief copy a source tile to a target tile with a source mask and y-mirroring
4570 * \param[in] ptOP the control block, NULL means using the default control block
4571 * \param[in] ptSource the source tile
4572 * \param[in] ptSrcMask the mask on the source side
4573 * \param[in] ptTarget the target tile
4574 * \param[in] ptRegion the target region
4575 * \return arm_fsm_rt_t the operation result
4576 */
4577extern
4578ARM_NONNULL(2,3,4)
4580 arm_2d_op_cp_msk_t *ptOP,
4581 const arm_2d_tile_t *ptSource,
4582 const arm_2d_tile_t *ptSrcMask,
4583 const arm_2d_tile_t *ptTarget,
4584 const arm_2d_region_t *ptRegion);
4585
4586/*!
4587 * \brief copy a source tile to a target tile with a source mask and y-mirroring
4588 * \param[in] ptOP the control block, NULL means using the default control block
4589 * \param[in] ptSource the source tile
4590 * \param[in] ptSrcMask the mask on the source side
4591 * \param[in] ptTarget the target tile
4592 * \param[in] ptRegion the target region
4593 * \param[in] wMode the copy mode
4594 * \return arm_fsm_rt_t the operation result
4595 */
4596extern
4597ARM_NONNULL(2,3,4)
4599 arm_2d_op_cp_msk_t *ptOP,
4600 const arm_2d_tile_t *ptSource,
4601 const arm_2d_tile_t *ptSrcMask,
4602 const arm_2d_tile_t *ptTarget,
4603 const arm_2d_region_t *ptRegion);
4604
4605
4606/*----------------------------------------------------------------------------*
4607 * Copy tile to destination with a specified source mask and xy-mirroring *
4608 *----------------------------------------------------------------------------*/
4609/*!
4610 * \brief copy a source tile to a target tile with a source mask and xy-mirroring
4611 * \param[in] ptOP the control block, NULL means using the default control block
4612 * \param[in] ptSource the source tile
4613 * \param[in] ptSrcMask the mask on the source side
4614 * \param[in] ptTarget the target tile
4615 * \param[in] ptRegion the target region
4616 * \return arm_fsm_rt_t the operation result
4617 */
4618extern
4619ARM_NONNULL(2,3,4)
4621 arm_2d_op_cp_msk_t *ptOP,
4622 const arm_2d_tile_t *ptSource,
4623 const arm_2d_tile_t *ptSrcMask,
4624 const arm_2d_tile_t *ptTarget,
4625 const arm_2d_region_t *ptRegion);
4626
4627/*!
4628 * \brief copy a source tile to a target tile with a source mask and xy-mirroring
4629 * \param[in] ptOP the control block, NULL means using the default control block
4630 * \param[in] ptSource the source tile
4631 * \param[in] ptSrcMask the mask on the source side
4632 * \param[in] ptTarget the target tile
4633 * \param[in] ptRegion the target region
4634 * \return arm_fsm_rt_t the operation result
4635 */
4636extern
4637ARM_NONNULL(2,3,4)
4639 arm_2d_op_cp_msk_t *ptOP,
4640 const arm_2d_tile_t *ptSource,
4641 const arm_2d_tile_t *ptSrcMask,
4642 const arm_2d_tile_t *ptTarget,
4643 const arm_2d_region_t *ptRegion);
4644
4645/*!
4646 * \brief copy a source tile to a target tile with a source mask and xy-mirroring
4647 * \param[in] ptOP the control block, NULL means using the default control block
4648 * \param[in] ptSource the source tile
4649 * \param[in] ptSrcMask the mask on the source side
4650 * \param[in] ptTarget the target tile
4651 * \param[in] ptRegion the target region
4652 * \param[in] wMode the copy mode
4653 * \return arm_fsm_rt_t the operation result
4654 */
4655extern
4656ARM_NONNULL(2,3,4)
4658 arm_2d_op_cp_msk_t *ptOP,
4659 const arm_2d_tile_t *ptSource,
4660 const arm_2d_tile_t *ptSrcMask,
4661 const arm_2d_tile_t *ptTarget,
4662 const arm_2d_region_t *ptRegion);
4663
4664/*----------------------------------------------------------------------------*
4665 * Fill tile to destination with a specified source mask *
4666 *----------------------------------------------------------------------------*/
4667/*!
4668 * \brief fill a source tile to a target tile with a source mask
4669 * \param[in] ptOP the control block, NULL means using the default control block
4670 * \param[in] ptSource the source tile
4671 * \param[in] ptSrcMask the mask on the source side
4672 * \param[in] ptTarget the target tile
4673 * \param[in] ptRegion the target region
4674 * \return arm_fsm_rt_t the operation result
4675 */
4676extern
4677ARM_NONNULL(2,3,4)
4679 arm_2d_op_cp_msk_t *ptOP,
4680 const arm_2d_tile_t *ptSource,
4681 const arm_2d_tile_t *ptSrcMask,
4682 const arm_2d_tile_t *ptTarget,
4683 const arm_2d_region_t *ptRegion);
4684
4685/*!
4686 * \brief fill a source tile to a target tile with a source mask
4687 * \param[in] ptOP the control block, NULL means using the default control block
4688 * \param[in] ptSource the source tile
4689 * \param[in] ptSrcMask the mask on the source side
4690 * \param[in] ptTarget the target tile
4691 * \param[in] ptRegion the target region
4692 * \return arm_fsm_rt_t the operation result
4693 */
4694extern
4695ARM_NONNULL(2,3,4)
4697 arm_2d_op_cp_msk_t *ptOP,
4698 const arm_2d_tile_t *ptSource,
4699 const arm_2d_tile_t *ptSrcMask,
4700 const arm_2d_tile_t *ptTarget,
4701 const arm_2d_region_t *ptRegion);
4702
4703/*!
4704 * \brief fill a source tile to a target tile with a source mask
4705 * \param[in] ptOP the control block, NULL means using the default control block
4706 * \param[in] ptSource the source tile
4707 * \param[in] ptSrcMask the mask on the source side
4708 * \param[in] ptTarget the target tile
4709 * \param[in] ptRegion the target region
4710 * \param[in] wMode the fill mode
4711 * \return arm_fsm_rt_t the operation result
4712 */
4713extern
4714ARM_NONNULL(2,3,4)
4716 arm_2d_op_cp_msk_t *ptOP,
4717 const arm_2d_tile_t *ptSource,
4718 const arm_2d_tile_t *ptSrcMask,
4719 const arm_2d_tile_t *ptTarget,
4720 const arm_2d_region_t *ptRegion);
4721
4722
4723/*----------------------------------------------------------------------------*
4724 * Fill tile to destination with a specified source mask and x-mirroring *
4725 *----------------------------------------------------------------------------*/
4726/*!
4727 * \brief fill a source tile to a target tile with a source mask and x-mirroring
4728 * \param[in] ptOP the control block, NULL means using the default control block
4729 * \param[in] ptSource the source tile
4730 * \param[in] ptSrcMask the mask on the source side
4731 * \param[in] ptTarget the target tile
4732 * \param[in] ptRegion the target region
4733 * \return arm_fsm_rt_t the operation result
4734 */
4735extern
4736ARM_NONNULL(2,3,4)
4738 arm_2d_op_cp_msk_t *ptOP,
4739 const arm_2d_tile_t *ptSource,
4740 const arm_2d_tile_t *ptSrcMask,
4741 const arm_2d_tile_t *ptTarget,
4742 const arm_2d_region_t *ptRegion);
4743
4744/*!
4745 * \brief fill a source tile to a target tile with a source mask and x-mirroring
4746 * \param[in] ptOP the control block, NULL means using the default control block
4747 * \param[in] ptSource the source tile
4748 * \param[in] ptSrcMask the mask on the source side
4749 * \param[in] ptTarget the target tile
4750 * \param[in] ptRegion the target region
4751 * \return arm_fsm_rt_t the operation result
4752 */
4753extern
4754ARM_NONNULL(2,3,4)
4756 arm_2d_op_cp_msk_t *ptOP,
4757 const arm_2d_tile_t *ptSource,
4758 const arm_2d_tile_t *ptSrcMask,
4759 const arm_2d_tile_t *ptTarget,
4760 const arm_2d_region_t *ptRegion);
4761
4762/*!
4763 * \brief fill a source tile to a target tile with a source mask and x-mirroring
4764 * \param[in] ptOP the control block, NULL means using the default control block
4765 * \param[in] ptSource the source tile
4766 * \param[in] ptSrcMask the mask on the source side
4767 * \param[in] ptTarget the target tile
4768 * \param[in] ptRegion the target region
4769 * \param[in] wMode the fill mode
4770 * \return arm_fsm_rt_t the operation result
4771 */
4772extern
4773ARM_NONNULL(2,3,4)
4775 arm_2d_op_cp_msk_t *ptOP,
4776 const arm_2d_tile_t *ptSource,
4777 const arm_2d_tile_t *ptSrcMask,
4778 const arm_2d_tile_t *ptTarget,
4779 const arm_2d_region_t *ptRegion);
4780
4781/*----------------------------------------------------------------------------*
4782 * Fill tile to destination with a specified source mask and y-mirroring *
4783 *----------------------------------------------------------------------------*/
4784/*!
4785 * \brief fill a source tile to a target tile with a source mask and y-mirroring
4786 * \param[in] ptOP the control block, NULL means using the default control block
4787 * \param[in] ptSource the source tile
4788 * \param[in] ptSrcMask the mask on the source side
4789 * \param[in] ptTarget the target tile
4790 * \param[in] ptRegion the target region
4791 * \return arm_fsm_rt_t the operation result
4792 */
4793extern
4794ARM_NONNULL(2,3,4)
4796 arm_2d_op_cp_msk_t *ptOP,
4797 const arm_2d_tile_t *ptSource,
4798 const arm_2d_tile_t *ptSrcMask,
4799 const arm_2d_tile_t *ptTarget,
4800 const arm_2d_region_t *ptRegion);
4801
4802/*!
4803 * \brief fill a source tile to a target tile with a source mask and y-mirroring
4804 * \param[in] ptOP the control block, NULL means using the default control block
4805 * \param[in] ptSource the source tile
4806 * \param[in] ptSrcMask the mask on the source side
4807 * \param[in] ptTarget the target tile
4808 * \param[in] ptRegion the target region
4809 * \return arm_fsm_rt_t the operation result
4810 */
4811extern
4812ARM_NONNULL(2,3,4)
4814 arm_2d_op_cp_msk_t *ptOP,
4815 const arm_2d_tile_t *ptSource,
4816 const arm_2d_tile_t *ptSrcMask,
4817 const arm_2d_tile_t *ptTarget,
4818 const arm_2d_region_t *ptRegion);
4819
4820/*!
4821 * \brief fill a source tile to a target tile with a source mask and y-mirroring
4822 * \param[in] ptOP the control block, NULL means using the default control block
4823 * \param[in] ptSource the source tile
4824 * \param[in] ptSrcMask the mask on the source side
4825 * \param[in] ptTarget the target tile
4826 * \param[in] ptRegion the target region
4827 * \param[in] wMode the fill mode
4828 * \return arm_fsm_rt_t the operation result
4829 */
4830extern
4831ARM_NONNULL(2,3,4)
4833 arm_2d_op_cp_msk_t *ptOP,
4834 const arm_2d_tile_t *ptSource,
4835 const arm_2d_tile_t *ptSrcMask,
4836 const arm_2d_tile_t *ptTarget,
4837 const arm_2d_region_t *ptRegion);
4838
4839
4840/*----------------------------------------------------------------------------*
4841 * Fill tile to destination with a specified source mask and xy-mirroring *
4842 *----------------------------------------------------------------------------*/
4843/*!
4844 * \brief fill a source tile to a target tile with a source mask and xy-mirroring
4845 * \param[in] ptOP the control block, NULL means using the default control block
4846 * \param[in] ptSource the source tile
4847 * \param[in] ptSrcMask the mask on the source side
4848 * \param[in] ptTarget the target tile
4849 * \param[in] ptRegion the target region
4850 * \return arm_fsm_rt_t the operation result
4851 */
4852extern
4853ARM_NONNULL(2,3,4)
4855 arm_2d_op_cp_msk_t *ptOP,
4856 const arm_2d_tile_t *ptSource,
4857 const arm_2d_tile_t *ptSrcMask,
4858 const arm_2d_tile_t *ptTarget,
4859 const arm_2d_region_t *ptRegion);
4860
4861/*!
4862 * \brief fill a source tile to a target tile with a source mask and xy-mirroring
4863 * \param[in] ptOP the control block, NULL means using the default control block
4864 * \param[in] ptSource the source tile
4865 * \param[in] ptSrcMask the mask on the source side
4866 * \param[in] ptTarget the target tile
4867 * \param[in] ptRegion the target region
4868 * \return arm_fsm_rt_t the operation result
4869 */
4870extern
4871ARM_NONNULL(2,3,4)
4873 arm_2d_op_cp_msk_t *ptOP,
4874 const arm_2d_tile_t *ptSource,
4875 const arm_2d_tile_t *ptSrcMask,
4876 const arm_2d_tile_t *ptTarget,
4877 const arm_2d_region_t *ptRegion);
4878
4879/*!
4880 * \brief fill a source tile to a target tile with a source mask and xy-mirroring
4881 * \param[in] ptOP the control block, NULL means using the default control block
4882 * \param[in] ptSource the source tile
4883 * \param[in] ptSrcMask the mask on the source side
4884 * \param[in] ptTarget the target tile
4885 * \param[in] ptRegion the target region
4886 * \param[in] wMode the fill mode
4887 * \return arm_fsm_rt_t the operation result
4888 */
4889extern
4890ARM_NONNULL(2,3,4)
4892 arm_2d_op_cp_msk_t *ptOP,
4893 const arm_2d_tile_t *ptSource,
4894 const arm_2d_tile_t *ptSrcMask,
4895 const arm_2d_tile_t *ptTarget,
4896 const arm_2d_region_t *ptRegion);
4897
4898/*----------------------------------------------------------------------------*
4899 * Copy tile to target tile with a source tile and a target mask *
4900 *----------------------------------------------------------------------------*/
4901
4902/*!
4903 * \brief copy a source tile to a target tile with a target mask
4904 * \param[in] ptOP the control block, NULL means using the default control block
4905 * \param[in] ptSource the source tile
4906 * \param[in] ptTarget the target tile
4907 * \param[in] ptDesMask the mask on the target side
4908 * \param[in] ptRegion the target region
4909 * \return arm_fsm_rt_t the operation result
4910 */
4911extern
4912ARM_NONNULL(2,3,4)
4914 arm_2d_op_cp_msk_t *ptOP,
4915 const arm_2d_tile_t *ptSource,
4916 const arm_2d_tile_t *ptTarget,
4917 const arm_2d_tile_t *ptDesMask,
4918 const arm_2d_region_t *ptRegion);
4919
4920/*!
4921 * \brief copy a source tile to a target tile with a target mask
4922 * \param[in] ptOP the control block, NULL means using the default control block
4923 * \param[in] ptSource the source tile
4924 * \param[in] ptTarget the target tile
4925 * \param[in] ptDesMask the mask on the target side
4926 * \param[in] ptRegion the target region
4927 * \return arm_fsm_rt_t the operation result
4928 */
4929extern
4930ARM_NONNULL(2,3,4)
4932 arm_2d_op_cp_msk_t *ptOP,
4933 const arm_2d_tile_t *ptSource,
4934 const arm_2d_tile_t *ptTarget,
4935 const arm_2d_tile_t *ptDesMask,
4936 const arm_2d_region_t *ptRegion);
4937
4938/*!
4939 * \brief copy a source tile to a target tile with a target mask
4940 * \param[in] ptOP the control block, NULL means using the default control block
4941 * \param[in] ptSource the source tile
4942 * \param[in] ptTarget the target tile
4943 * \param[in] ptDesMask the mask on the target side
4944 * \param[in] ptRegion the target region
4945 * \return arm_fsm_rt_t the operation result
4946 */
4947extern
4948ARM_NONNULL(2,3,4)
4950 arm_2d_op_cp_msk_t *ptOP,
4951 const arm_2d_tile_t *ptSource,
4952 const arm_2d_tile_t *ptTarget,
4953 const arm_2d_tile_t *ptDesMask,
4954 const arm_2d_region_t *ptRegion);
4955
4956
4957/*----------------------------------------------------------------------------*
4958 * Copy tile to target tile with a source mask, a target mask and x-mirroring *
4959 *----------------------------------------------------------------------------*/
4960
4961/*!
4962 * \brief copy a source tile to a target tile with a target mask and x-mirroring
4963 * \param[in] ptOP the control block, NULL means using the default control block
4964 * \param[in] ptSource the source tile
4965 * \param[in] ptTarget the target tile
4966 * \param[in] ptDesMask the mask on the target side
4967 * \param[in] ptRegion the target region
4968 * \return arm_fsm_rt_t the operation result
4969 */
4970extern
4971ARM_NONNULL(2,3,4)
4973 arm_2d_op_cp_msk_t *ptOP,
4974 const arm_2d_tile_t *ptSource,
4975 const arm_2d_tile_t *ptTarget,
4976 const arm_2d_tile_t *ptDesMask,
4977 const arm_2d_region_t *ptRegion);
4978
4979/*!
4980 * \brief copy a source tile to a target tile with a target mask and x-mirroring
4981 * \param[in] ptOP the control block, NULL means using the default control block
4982 * \param[in] ptSource the source tile
4983 * \param[in] ptTarget the target tile
4984 * \param[in] ptDesMask the mask on the target side
4985 * \param[in] ptRegion the target region
4986 * \return arm_fsm_rt_t the operation result
4987 */
4988extern
4989ARM_NONNULL(2,3,4)
4991 arm_2d_op_cp_msk_t *ptOP,
4992 const arm_2d_tile_t *ptSource,
4993 const arm_2d_tile_t *ptTarget,
4994 const arm_2d_tile_t *ptDesMask,
4995 const arm_2d_region_t *ptRegion);
4996
4997/*!
4998 * \brief copy a source tile to a target tile with a target mask and x-mirroring
4999 * \param[in] ptOP the control block, NULL means using the default control block
5000 * \param[in] ptSource the source tile
5001 * \param[in] ptTarget the target tile
5002 * \param[in] ptDesMask the mask on the target side
5003 * \param[in] ptRegion the target region
5004 * \return arm_fsm_rt_t the operation result
5005 */
5006extern
5007ARM_NONNULL(2,3,4)
5009 arm_2d_op_cp_msk_t *ptOP,
5010 const arm_2d_tile_t *ptSource,
5011 const arm_2d_tile_t *ptTarget,
5012 const arm_2d_tile_t *ptDesMask,
5013 const arm_2d_region_t *ptRegion);
5014
5015
5016/*----------------------------------------------------------------------------*
5017 * Copy tile to target tile with a source tile, a target mask and y-mirroring *
5018 *----------------------------------------------------------------------------*/
5019
5020/*!
5021 * \brief copy a source tile to a target tile with a target mask and y-mirroring
5022 * \param[in] ptOP the control block, NULL means using the default control block
5023 * \param[in] ptSource the source tile
5024 * \param[in] ptTarget the target tile
5025 * \param[in] ptDesMask the mask on the target side
5026 * \param[in] ptRegion the target region
5027 * \return arm_fsm_rt_t the operation result
5028 */
5029extern
5030ARM_NONNULL(2,3,4)
5032 arm_2d_op_cp_msk_t *ptOP,
5033 const arm_2d_tile_t *ptSource,
5034 const arm_2d_tile_t *ptTarget,
5035 const arm_2d_tile_t *ptDesMask,
5036 const arm_2d_region_t *ptRegion);
5037
5038/*!
5039 * \brief copy a source tile to a target tile with a target mask and y-mirroring
5040 * \param[in] ptOP the control block, NULL means using the default control block
5041 * \param[in] ptSource the source tile
5042 * \param[in] ptTarget the target tile
5043 * \param[in] ptDesMask the mask on the target side
5044 * \param[in] ptRegion the target region
5045 * \return arm_fsm_rt_t the operation result
5046 */
5047extern
5048ARM_NONNULL(2,3,4)
5050 arm_2d_op_cp_msk_t *ptOP,
5051 const arm_2d_tile_t *ptSource,
5052 const arm_2d_tile_t *ptTarget,
5053 const arm_2d_tile_t *ptDesMask,
5054 const arm_2d_region_t *ptRegion);
5055
5056/*!
5057 * \brief copy a source tile to a target tile with a target mask and y-mirroring
5058 * \param[in] ptOP the control block, NULL means using the default control block
5059 * \param[in] ptSource the source tile
5060 * \param[in] ptTarget the target tile
5061 * \param[in] ptDesMask the mask on the target side
5062 * \param[in] ptRegion the target region
5063 * \return arm_fsm_rt_t the operation result
5064 */
5065extern
5066ARM_NONNULL(2,3,4)
5068 arm_2d_op_cp_msk_t *ptOP,
5069 const arm_2d_tile_t *ptSource,
5070 const arm_2d_tile_t *ptTarget,
5071 const arm_2d_tile_t *ptDesMask,
5072 const arm_2d_region_t *ptRegion);
5073
5074
5075/*----------------------------------------------------------------------------*
5076 * Copy tile to target tile with a source tile, a target mask and xy-mirroring*
5077 *----------------------------------------------------------------------------*/
5078
5079/*!
5080 * \brief copy a source tile to a target tile with a target mask and xy-mirroring
5081 * \param[in] ptOP the control block, NULL means using the default control block
5082 * \param[in] ptSource the source tile
5083 * \param[in] ptTarget the target tile
5084 * \param[in] ptDesMask the mask on the target side
5085 * \param[in] ptRegion the target region
5086 * \return arm_fsm_rt_t the operation result
5087 */
5088extern
5089ARM_NONNULL(2,3,4)
5091 arm_2d_op_cp_msk_t *ptOP,
5092 const arm_2d_tile_t *ptSource,
5093 const arm_2d_tile_t *ptTarget,
5094 const arm_2d_tile_t *ptDesMask,
5095 const arm_2d_region_t *ptRegion);
5096
5097/*!
5098 * \brief copy a source tile to a target tile with a target mask and xy-mirroring
5099 * \param[in] ptOP the control block, NULL means using the default control block
5100 * \param[in] ptSource the source tile
5101 * \param[in] ptTarget the target tile
5102 * \param[in] ptDesMask the mask on the target side
5103 * \param[in] ptRegion the target region
5104 * \return arm_fsm_rt_t the operation result
5105 */
5106extern
5107ARM_NONNULL(2,3,4)
5109 arm_2d_op_cp_msk_t *ptOP,
5110 const arm_2d_tile_t *ptSource,
5111 const arm_2d_tile_t *ptTarget,
5112 const arm_2d_tile_t *ptDesMask,
5113 const arm_2d_region_t *ptRegion);
5114
5115/*!
5116 * \brief copy a source tile to a target tile with a target mask and xy-mirroring
5117 * \param[in] ptOP the control block, NULL means using the default control block
5118 * \param[in] ptSource the source tile
5119 * \param[in] ptTarget the target tile
5120 * \param[in] ptDesMask the mask on the target side
5121 * \param[in] ptRegion the target region
5122 * \return arm_fsm_rt_t the operation result
5123 */
5124extern
5125ARM_NONNULL(2,3,4)
5127 arm_2d_op_cp_msk_t *ptOP,
5128 const arm_2d_tile_t *ptSource,
5129 const arm_2d_tile_t *ptTarget,
5130 const arm_2d_tile_t *ptDesMask,
5131 const arm_2d_region_t *ptRegion);
5132
5133/*----------------------------------------------------------------------------*
5134 * Fill tile to target tile with a source tile and a target mask *
5135 *----------------------------------------------------------------------------*/
5136
5137/*!
5138 * \brief fill a source tile to a target tile with a target mask
5139 * \param[in] ptOP the control block, NULL means using the default control block
5140 * \param[in] ptSource the source tile
5141 * \param[in] ptTarget the target tile
5142 * \param[in] ptDesMask the mask on the target side
5143 * \param[in] ptRegion the target region
5144 * \return arm_fsm_rt_t the operation result
5145 */
5146extern
5147ARM_NONNULL(2,3,4)
5149 arm_2d_op_cp_msk_t *ptOP,
5150 const arm_2d_tile_t *ptSource,
5151 const arm_2d_tile_t *ptTarget,
5152 const arm_2d_tile_t *ptDesMask,
5153 const arm_2d_region_t *ptRegion);
5154
5155/*!
5156 * \brief fill a source tile to a target tile with a target mask
5157 * \param[in] ptOP the control block, NULL means using the default control block
5158 * \param[in] ptSource the source tile
5159 * \param[in] ptTarget the target tile
5160 * \param[in] ptDesMask the mask on the target side
5161 * \param[in] ptRegion the target region
5162 * \return arm_fsm_rt_t the operation result
5163 */
5164extern
5165ARM_NONNULL(2,3,4)
5167 arm_2d_op_cp_msk_t *ptOP,
5168 const arm_2d_tile_t *ptSource,
5169 const arm_2d_tile_t *ptTarget,
5170 const arm_2d_tile_t *ptDesMask,
5171 const arm_2d_region_t *ptRegion);
5172
5173/*!
5174 * \brief fill a source tile to a target tile with a target mask
5175 * \param[in] ptOP the control block, NULL means using the default control block
5176 * \param[in] ptSource the source tile
5177 * \param[in] ptTarget the target tile
5178 * \param[in] ptDesMask the mask on the target side
5179 * \param[in] ptRegion the target region
5180 * \return arm_fsm_rt_t the operation result
5181 */
5182extern
5183ARM_NONNULL(2,3,4)
5185 arm_2d_op_cp_msk_t *ptOP,
5186 const arm_2d_tile_t *ptSource,
5187 const arm_2d_tile_t *ptTarget,
5188 const arm_2d_tile_t *ptDesMask,
5189 const arm_2d_region_t *ptRegion);
5190
5191
5192/*----------------------------------------------------------------------------*
5193 * Fill tile to target tile with a source tile, a target mask and x-mirroring *
5194 *----------------------------------------------------------------------------*/
5195
5196/*!
5197 * \brief fill a source tile to a target tile with a target mask and x-mirroring
5198 * \param[in] ptOP the control block, NULL means using the default control block
5199 * \param[in] ptSource the source tile
5200 * \param[in] ptTarget the target tile
5201 * \param[in] ptDesMask the mask on the target side
5202 * \param[in] ptRegion the target region
5203 * \return arm_fsm_rt_t the operation result
5204 */
5205extern
5206ARM_NONNULL(2,3,4)
5208 arm_2d_op_cp_msk_t *ptOP,
5209 const arm_2d_tile_t *ptSource,
5210 const arm_2d_tile_t *ptTarget,
5211 const arm_2d_tile_t *ptDesMask,
5212 const arm_2d_region_t *ptRegion);
5213
5214/*!
5215 * \brief fill a source tile to a target tile with a target mask and x-mirroring
5216 * \param[in] ptOP the control block, NULL means using the default control block
5217 * \param[in] ptSource the source tile
5218 * \param[in] ptTarget the target tile
5219 * \param[in] ptDesMask the mask on the target side
5220 * \param[in] ptRegion the target region
5221 * \return arm_fsm_rt_t the operation result
5222 */
5223extern
5224ARM_NONNULL(2,3,4)
5226 arm_2d_op_cp_msk_t *ptOP,
5227 const arm_2d_tile_t *ptSource,
5228 const arm_2d_tile_t *ptTarget,
5229 const arm_2d_tile_t *ptDesMask,
5230 const arm_2d_region_t *ptRegion);
5231
5232/*!
5233 * \brief fill a source tile to a target tile with a target mask and x-mirroring
5234 * \param[in] ptOP the control block, NULL means using the default control block
5235 * \param[in] ptSource the source tile
5236 * \param[in] ptTarget the target tile
5237 * \param[in] ptDesMask the mask on the target side
5238 * \param[in] ptRegion the target region
5239 * \return arm_fsm_rt_t the operation result
5240 */
5241extern
5242ARM_NONNULL(2,3,4)
5244 arm_2d_op_cp_msk_t *ptOP,
5245 const arm_2d_tile_t *ptSource,
5246 const arm_2d_tile_t *ptTarget,
5247 const arm_2d_tile_t *ptDesMask,
5248 const arm_2d_region_t *ptRegion);
5249
5250
5251/*----------------------------------------------------------------------------*
5252 * Fill tile to target tile with a source tile, a target mask and y-mirroring *
5253 *----------------------------------------------------------------------------*/
5254
5255/*!
5256 * \brief fill a source tile to a target tile with a target mask and y-mirroring
5257 * \param[in] ptOP the control block, NULL means using the default control block
5258 * \param[in] ptSource the source tile
5259 * \param[in] ptTarget the target tile
5260 * \param[in] ptDesMask the mask on the target side
5261 * \param[in] ptRegion the target region
5262 * \return arm_fsm_rt_t the operation result
5263 */
5264extern
5265ARM_NONNULL(2,3,4)
5267 arm_2d_op_cp_msk_t *ptOP,
5268 const arm_2d_tile_t *ptSource,
5269 const arm_2d_tile_t *ptTarget,
5270 const arm_2d_tile_t *ptDesMask,
5271 const arm_2d_region_t *ptRegion);
5272
5273/*!
5274 * \brief fill a source tile to a target tile with a target mask and y-mirroring
5275 * \param[in] ptOP the control block, NULL means using the default control block
5276 * \param[in] ptSource the source tile
5277 * \param[in] ptTarget the target tile
5278 * \param[in] ptDesMask the mask on the target side
5279 * \param[in] ptRegion the target region
5280 * \return arm_fsm_rt_t the operation result
5281 */
5282extern
5283ARM_NONNULL(2,3,4)
5285 arm_2d_op_cp_msk_t *ptOP,
5286 const arm_2d_tile_t *ptSource,
5287 const arm_2d_tile_t *ptTarget,
5288 const arm_2d_tile_t *ptDesMask,
5289 const arm_2d_region_t *ptRegion);
5290
5291/*!
5292 * \brief fill a source tile to a target tile with a target mask and y-mirroring
5293 * \param[in] ptOP the control block, NULL means using the default control block
5294 * \param[in] ptSource the source tile
5295 * \param[in] ptTarget the target tile
5296 * \param[in] ptDesMask the mask on the target side
5297 * \param[in] ptRegion the target region
5298 * \return arm_fsm_rt_t the operation result
5299 */
5300extern
5301ARM_NONNULL(2,3,4)
5303 arm_2d_op_cp_msk_t *ptOP,
5304 const arm_2d_tile_t *ptSource,
5305 const arm_2d_tile_t *ptTarget,
5306 const arm_2d_tile_t *ptDesMask,
5307 const arm_2d_region_t *ptRegion);
5308
5309
5310/*----------------------------------------------------------------------------*
5311 * Fill tile to target tile with a source tile, a target mask and xy-mirroring*
5312 *----------------------------------------------------------------------------*/
5313
5314/*!
5315 * \brief fill a source tile to a target tile with a target mask and xy-mirroring
5316 * \param[in] ptOP the control block, NULL means using the default control block
5317 * \param[in] ptSource the source tile
5318 * \param[in] ptTarget the target tile
5319 * \param[in] ptDesMask the mask on the target side
5320 * \param[in] ptRegion the target region
5321 * \return arm_fsm_rt_t the operation result
5322 */
5323extern
5324ARM_NONNULL(2,3,4)
5326 arm_2d_op_cp_msk_t *ptOP,
5327 const arm_2d_tile_t *ptSource,
5328 const arm_2d_tile_t *ptTarget,
5329 const arm_2d_tile_t *ptDesMask,
5330 const arm_2d_region_t *ptRegion);
5331
5332/*!
5333 * \brief fill a source tile to a target tile with target mask and xy-mirroring
5334 * \param[in] ptOP the control block, NULL means using the default control block
5335 * \param[in] ptSource the source tile
5336 * \param[in] ptTarget the target tile
5337 * \param[in] ptDesMask the mask on the target side
5338 * \param[in] ptRegion the target region
5339 * \return arm_fsm_rt_t the operation result
5340 */
5341extern
5342ARM_NONNULL(2,3,4)
5344 arm_2d_op_cp_msk_t *ptOP,
5345 const arm_2d_tile_t *ptSource,
5346 const arm_2d_tile_t *ptTarget,
5347 const arm_2d_tile_t *ptDesMask,
5348 const arm_2d_region_t *ptRegion);
5349
5350/*!
5351 * \brief fill a source tile to a target tile with a target mask and xy-mirroring
5352 * \param[in] ptOP the control block, NULL means using the default control block
5353 * \param[in] ptSource the source tile
5354 * \param[in] ptTarget the target tile
5355 * \param[in] ptDesMask the mask on the target side
5356 * \param[in] ptRegion the target region
5357 * \return arm_fsm_rt_t the operation result
5358 */
5359extern
5360ARM_NONNULL(2,3,4)
5362 arm_2d_op_cp_msk_t *ptOP,
5363 const arm_2d_tile_t *ptSource,
5364 const arm_2d_tile_t *ptTarget,
5365 const arm_2d_tile_t *ptDesMask,
5366 const arm_2d_region_t *ptRegion);
5367
5368/*! @} */
5369
5370/*========================= POST INCLUDES ====================================*/
5371#include "__arm_2d_fill_colour_with_mask_and_mirroring.h"
5372#include "__arm_2d_fill_colour_with_masks_and_mirroring.h"
5373#include "__arm_2d_fill_colour_with_horizontal_line_mask.h"
5374#include "__arm_2d_fill_colour_with_vertical_line_mask.h"
5375#include "__arm_2d_fill_colour_with_alpha_gradient.h"
5376#include "__arm_2d_fill_colour_with_alpha_gradient_and_mask.h"
5377#include "__arm_2d_tile_copy_with_source_mask_and_opacity.h"
5378#include "__arm_2d_tile_fill_with_source_mask_and_opacity.h"
5379#include "__arm_2d_tile_fill_with_opacity.h"
5380
5381#if defined(__clang__)
5382#pragma clang diagnostic pop
5383#endif
5384
5385#ifdef __cplusplus
5386}
5387#endif
5388
5389#endif