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