30#ifndef __ARM_2D_TILE_H__
31#define __ARM_2D_TILE_H__
34#include "arm_2d_types.h"
48#define arm_2d_c8bit_tile_copy_with_colour_masking \
49 arm_2d_c8bit_tile_copy_with_colour_keying
51#define arm_2d_rgb16_tile_copy_with_colour_masking \
52 arm_2d_rgb16_tile_copy_with_colour_keying
54#define arm_2d_rgb32_tile_copy_with_colour_masking \
55 arm_2d_rgb32_tile_copy_with_colour_keying
64#define arm_2d_c8bit_tile_copy( __SRC_ADDR, \
68 arm_2dp_c8bit_tile_copy(NULL, \
71 (__DES_REGION_ADDR), \
74#define arm_2d_rgb16_tile_copy( __SRC_ADDR, \
78 arm_2dp_rgb16_tile_copy(NULL, \
81 (__DES_REGION_ADDR), \
84#define arm_2d_rgb32_tile_copy( __SRC_ADDR, \
88 arm_2dp_rgb32_tile_copy(NULL, \
91 (__DES_REGION_ADDR), \
94#define arm_2d_c8bit_tile_copy_only( \
98 arm_2dp_c8bit_tile_copy_only(NULL, \
103#define arm_2d_rgb16_tile_copy_only( \
107 arm_2dp_rgb16_tile_copy_only(NULL, \
112#define arm_2d_rgb32_tile_copy_only( \
116 arm_2dp_rgb32_tile_copy_only(NULL, \
121#define arm_2d_c8bit_tile_copy_with_x_mirror( \
125 arm_2dp_c8bit_tile_copy_with_x_mirror( \
131#define arm_2d_rgb16_tile_copy_with_x_mirror( \
135 arm_2dp_rgb16_tile_copy_with_x_mirror( \
141#define arm_2d_rgb32_tile_copy_with_x_mirror( \
145 arm_2dp_rgb32_tile_copy_with_x_mirror( \
151#define arm_2d_c8bit_tile_copy_with_y_mirror( \
155 arm_2dp_c8bit_tile_copy_with_y_mirror( \
161#define arm_2d_rgb16_tile_copy_with_y_mirror( \
165 arm_2dp_rgb16_tile_copy_with_y_mirror( \
171#define arm_2d_rgb32_tile_copy_with_y_mirror( \
175 arm_2dp_rgb32_tile_copy_with_y_mirror( \
181#define arm_2d_c8bit_tile_copy_with_xy_mirror( \
185 arm_2dp_c8bit_tile_copy_with_xy_mirror( \
191#define arm_2d_rgb16_tile_copy_with_xy_mirror( \
195 arm_2dp_rgb16_tile_copy_with_xy_mirror( \
201#define arm_2d_rgb32_tile_copy_with_xy_mirror( \
205 arm_2dp_rgb32_tile_copy_with_xy_mirror( \
211#define arm_2d_c8bit_tile_fill_only( \
215 arm_2dp_c8bit_tile_fill_only(NULL, \
220#define arm_2d_rgb16_tile_fill_only( \
224 arm_2dp_rgb16_tile_fill_only(NULL, \
229#define arm_2d_rgb32_tile_fill_only( \
233 arm_2dp_rgb32_tile_fill_only(NULL, \
238#define arm_2d_c8bit_tile_fill_with_x_mirror( \
242 arm_2dp_c8bit_tile_fill_with_x_mirror( \
248#define arm_2d_rgb16_tile_fill_with_x_mirror( \
252 arm_2dp_rgb16_tile_fill_with_x_mirror( \
258#define arm_2d_rgb32_tile_fill_with_x_mirror( \
262 arm_2dp_rgb32_tile_fill_with_x_mirror( \
268#define arm_2d_c8bit_tile_fill_with_y_mirror( \
272 arm_2dp_c8bit_tile_fill_with_y_mirror( \
278#define arm_2d_rgb16_tile_fill_with_y_mirror( \
282 arm_2dp_rgb16_tile_fill_with_y_mirror( \
288#define arm_2d_rgb32_tile_fill_with_y_mirror( \
292 arm_2dp_rgb32_tile_fill_with_y_mirror( \
298#define arm_2d_c8bit_tile_fill_with_xy_mirror( \
302 arm_2dp_c8bit_tile_fill_with_xy_mirror( \
308#define arm_2d_rgb16_tile_fill_with_xy_mirror( \
312 arm_2dp_rgb16_tile_fill_with_xy_mirror( \
318#define arm_2d_rgb32_tile_fill_with_xy_mirror( \
322 arm_2dp_rgb32_tile_fill_with_xy_mirror( \
328#define arm_2d_c8bit_tile_copy_with_colour_keying( \
334 arm_2dp_c8bit_tile_copy_with_colour_keying( \
338 (__DES_REGION_ADDR), \
343#define arm_2d_rgb16_tile_copy_with_colour_keying( \
349 arm_2dp_rgb16_tile_copy_with_colour_keying( \
353 (__DES_REGION_ADDR), \
357#define arm_2d_rgb32_tile_copy_with_colour_keying( \
363 arm_2dp_rgb32_tile_copy_with_colour_keying( \
367 (__DES_REGION_ADDR), \
394#define __arm_2d_get_address_and_region_from_tile( __TILE_PTR, \
395 __VALID_REGION_NAME, \
396 __LOCATION_OFFSET_PTR, \
399 arm_2d_region_t __VALID_REGION_NAME; \
400 assert(NULL != (__TILE_PTR)); \
401 __TYPE *(__BUF_PTR_NAME) = NULL; \
403 (__TILE_PTR) = arm_2d_tile_get_root((__TILE_PTR), \
404 &__VALID_REGION_NAME, \
405 __LOCATION_OFFSET_PTR); \
407 if (NULL != (__TILE_PTR)) { \
408 (__BUF_PTR_NAME) = ((__TYPE *)((__TILE_PTR)->pchBuffer)) \
409 + (__TILE_PTR)->tRegion.tSize.iWidth * \
410 __VALID_REGION_NAME.tLocation.iY \
411 + __VALID_REGION_NAME.tLocation.iX; \
415#define arm_2d_get_address_and_region_from_tile(__TILE_PTR, \
416 __VALID_REGION_NAME, \
417 __LOCATION_OFFSET_PTR, \
420 __arm_2d_get_address_and_region_from_tile( __TILE_PTR, \
421 __VALID_REGION_NAME, \
422 __LOCATION_OFFSET_PTR, \
427#define __arm_2d_get_address_and_region_from_tile_with_mirroring( \
429 __VALID_REGION_NAME, \
430 __LOCATION_OFFSET_PTR, \
434 arm_2d_region_t __VALID_REGION_NAME; \
435 assert(NULL != (__TILE_PTR)); \
436 __TYPE *(__BUF_PTR_NAME) = NULL; \
438 (__TILE_PTR) = arm_2d_tile_get_root((__TILE_PTR), \
439 &__VALID_REGION_NAME, \
440 __LOCATION_OFFSET_PTR); \
442 if (NULL != (__TILE_PTR)) { \
443 arm_2d_location_t tOffset = __VALID_REGION_NAME.tLocation; \
444 if ((__MODE) & ARM_2D_CP_MODE_X_MIRROR) { \
447 if ((__MODE) & ARM_2D_CP_MODE_Y_MIRROR) { \
450 (__BUF_PTR_NAME) = ((__TYPE *)((__TILE_PTR)->pchBuffer)) \
451 + (__TILE_PTR)->tRegion.tSize.iWidth * tOffset.iY \
456#define arm_2d_get_address_and_region_from_tile_with_mirroring( \
458 __VALID_REGION_NAME, \
459 __LOCATION_OFFSET_PTR, \
463 __arm_2d_get_address_and_region_from_tile_with_mirroring( \
465 __VALID_REGION_NAME, \
466 __LOCATION_OFFSET_PTR, \
511 return ptTile->tInfo.bIsRoot;
697 ARM_2D_CP_MODE_COPY = 0,
698 ARM_2D_CP_MODE_FILL = _BV(0),
699 ARM_2D_CP_MODE_Y_MIRROR = _BV(2),
700 ARM_2D_CP_MODE_X_MIRROR = _BV(3),
701 ARM_2D_CP_MODE_XY_MIRROR = ARM_2D_CP_MODE_X_MIRROR |
702 ARM_2D_CP_MODE_Y_MIRROR,
1213 uint8_t chMaskColour,
1236 uint16_t hwMaskColour,
1260 uint32_t wMaskColour,