31#ifndef __ARM_2D_TYPES_H__
32#define __ARM_2D_TYPES_H__
40#include "arm_2d_features.h"
41#include "arm_2d_utils.h"
42#include "__arm_2d_math.h"
49# pragma clang diagnostic push
50# pragma clang diagnostic ignored "-Wunknown-warning-option"
51# pragma clang diagnostic ignored "-Wreserved-identifier"
52# pragma clang diagnostic ignored "-Wmissing-declarations"
53# pragma clang diagnostic ignored "-Wpadded"
54# pragma clang diagnostic ignored "-Wc11-extensions"
55# pragma clang diagnostic ignored "-Wembedded-directive"
56#elif __IS_COMPILER_ARM_COMPILER_5__
57# pragma diag_suppress 64
58#elif __IS_COMPILER_GCC__
59# pragma GCC diagnostic push
60# pragma GCC diagnostic ignored "-Wmissing-declarations"
61# pragma GCC diagnostic ignored "-Wpadded"
72#if defined(__IS_COMPILER_GCC__) && __IS_COMPILER_GCC__ && __ARM_2D_HAS_HELIUM__
74# ifndef __ARM_2D_SUPPRESS_GCC_HELIUM_PATCH_WARNING__
75# pragma GCC warning "As GCC has compilation issues for supporting Helium,\
76 the scalar version is used. You can define a macro\
77 __ARM_2D_SUPPRESS_GCC_HELIUM_PATCH_WARNING__ to suppress this warning."
80# undef __ARM_2D_HAS_HELIUM__
81# undef __ARM_2D_HAS_HELIUM_INTEGER__
82# undef __ARM_2D_HAS_HELIUM_FLOAT__
84# define __ARM_2D_HAS_HELIUM__ 0
85# define __ARM_2D_HAS_HELIUM_INTEGER__ 0
86# define __ARM_2D_HAS_HELIUM_FLOAT__ 0
300 ARM_2D_COLOUR_SZ_msk = (0x07 << 1),
302 ARM_2D_COLOUR_LITTLE_ENDIAN = 0,
303 ARM_2D_COLOUR_BIG_ENDIAN = 1,
305 ARM_2D_COLOUR_LITTLE_ENDIAN_msk = ARM_2D_COLOUR_LITTLE_ENDIAN << 4,
306 ARM_2D_COLOUR_BIG_ENDIAN_msk = ARM_2D_COLOUR_BIG_ENDIAN << 4,
308 ARM_2D_COLOUR_NO_ALPHA = 0,
309 ARM_2D_COLOUR_HAS_ALPHA = 1,
311 ARM_2D_COLOUR_NO_ALPHA_msk = ARM_2D_COLOUR_NO_ALPHA << 0,
312 ARM_2D_COLOUR_HAS_ALPHA_msk = ARM_2D_COLOUR_HAS_ALPHA << 0,
314 ARM_2D_COLOUR_VARIANT_pos = 5,
315 ARM_2D_COLOUR_VARIANT_msk = 0x07 << ARM_2D_COLOUR_VARIANT_pos,
319#define ARM_2D_M_COLOUR_SZ_1BIT 0
320#define ARM_2D_M_COLOUR_SZ_2BIT 1
321#define ARM_2D_M_COLOUR_SZ_4BIT 2
322#define ARM_2D_M_COLOUR_SZ_8BIT 3
323#define ARM_2D_M_COLOUR_SZ_16BIT 4
324#define ARM_2D_M_COLOUR_SZ_32BIT 5
326#define ARM_2D_M_COLOUR_SZ_1BIT_msk (ARM_2D_M_COLOUR_SZ_1BIT << 1)
327#define ARM_2D_M_COLOUR_SZ_2BIT_msk (ARM_2D_M_COLOUR_SZ_2BIT << 1)
328#define ARM_2D_M_COLOUR_SZ_4BIT_msk (ARM_2D_M_COLOUR_SZ_4BIT << 1)
329#define ARM_2D_M_COLOUR_SZ_8BIT_msk (ARM_2D_M_COLOUR_SZ_8BIT << 1)
330#define ARM_2D_M_COLOUR_SZ_16BIT_msk (ARM_2D_M_COLOUR_SZ_16BIT<< 1)
331#define ARM_2D_M_COLOUR_SZ_32BIT_msk (ARM_2D_M_COLOUR_SZ_32BIT<< 1)
332#define ARM_2D_M_COLOUR_SZ_msk (0x07 << 1),
334#define ARM_2D_M_COLOUR_LITTLE_ENDIAN 0
335#define ARM_2D_M_COLOUR_BIG_ENDIAN 1
337#define ARM_2D_M_COLOUR_LITTLE_ENDIAN_msk (ARM_2D_M_COLOUR_LITTLE_ENDIAN << 4)
338#define ARM_2D_M_COLOUR_BIG_ENDIAN_msk (ARM_2D_M_COLOUR_BIG_ENDIAN << 4)
340#define ARM_2D_M_COLOUR_NO_ALPHA 0
341#define ARM_2D_M_COLOUR_HAS_ALPHA 1
343#define ARM_2D_M_COLOUR_NO_ALPHA_msk (ARM_2D_M_COLOUR_NO_ALPHA << 0)
344#define ARM_2D_M_COLOUR_HAS_ALPHA_msk (ARM_2D_M_COLOUR_HAS_ALPHA << 0)
346#define ARM_2D_M_COLOUR_VARIANT_pos 5
347#define ARM_2D_M_COLOUR_VARIANT_msk (0x07<<ARM_2D_M_COLOUR_VARIANT_pos)
354 ARM_2D_COLOUR_MONOCHROME = ARM_2D_COLOUR_SZ_1BIT_msk,
355 ARM_2D_COLOUR_BIN = ARM_2D_COLOUR_SZ_1BIT_msk,
356 ARM_2D_COLOUR_1BIT = ARM_2D_COLOUR_SZ_1BIT_msk,
364 ARM_2D_COLOUR_8BIT = ARM_2D_COLOUR_SZ_8BIT_msk,
365 ARM_2D_COLOUR_GRAY8 = ARM_2D_COLOUR_SZ_8BIT_msk,
366 ARM_2D_COLOUR_MASK_A8 = ARM_2D_COLOUR_SZ_8BIT_msk,
368 ARM_2D_COLOUR_16BIT = ARM_2D_COLOUR_SZ_16BIT_msk,
369 ARM_2D_COLOUR_RGB16 = ARM_2D_COLOUR_SZ_16BIT_msk,
370 ARM_2D_COLOUR_RGB565 = ARM_2D_COLOUR_RGB16,
377 ARM_2D_COLOUR_32BIT = ARM_2D_COLOUR_SZ_32BIT_msk ,
378 ARM_2D_COLOUR_RGB32 = ARM_2D_COLOUR_SZ_32BIT_msk ,
380 ARM_2D_COLOUR_CCCN888 = ARM_2D_COLOUR_RGB32 ,
381 ARM_2D_COLOUR_CCCA8888 = ARM_2D_COLOUR_SZ_32BIT_msk |
382 ARM_2D_COLOUR_HAS_ALPHA_msk ,
384 ARM_2D_COLOUR_RGB888 = ARM_2D_COLOUR_CCCN888 ,
385 ARM_2D_COLOUR_BGRA8888 = ARM_2D_COLOUR_CCCA8888 ,
394 ARM_2D_CHANNEL_8in32 = ARM_2D_COLOUR_SZ_32BIT_msk |
395 ARM_2D_COLOUR_HAS_ALPHA_msk |
396 ARM_2D_COLOUR_VARIANT_msk ,
400#define ARM_2D_M_COLOUR_MONOCHROME ARM_2D_M_COLOUR_SZ_1BIT_msk
401#define ARM_2D_M_COLOUR_BIN ARM_2D_M_COLOUR_SZ_1BIT_msk
402#define ARM_2D_M_COLOUR_1BIT ARM_2D_M_COLOUR_SZ_1BIT_msk
404#define ARM_2D_M_COLOUR_MASK_A2 ARM_2D_M_COLOUR_SZ_2BIT_msk
405#define ARM_2D_M_COLOUR_MASK_A4 ARM_2D_M_COLOUR_SZ_4BIT_msk
407#define ARM_2D_M_COLOUR_8BIT ARM_2D_M_COLOUR_SZ_8BIT_msk
408#define ARM_2D_M_COLOUR_GRAY8 ARM_2D_M_COLOUR_SZ_8BIT_msk
409#define ARM_2D_M_COLOUR_MASK_A8 ARM_2D_M_COLOUR_SZ_8BIT_msk
411#define ARM_2D_M_COLOUR_16BIT ARM_2D_M_COLOUR_SZ_16BIT_msk
412#define ARM_2D_M_COLOUR_RGB16 ARM_2D_M_COLOUR_SZ_16BIT_msk
413#define ARM_2D_M_COLOUR_RGB565 ARM_2D_M_COLOUR_RGB16
420#define ARM_2D_M_COLOUR_32BIT ARM_2D_M_COLOUR_SZ_32BIT_msk
421#define ARM_2D_M_COLOUR_RGB32 ARM_2D_M_COLOUR_SZ_32BIT_msk
423#define ARM_2D_M_COLOUR_CCCN888 ARM_2D_M_COLOUR_RGB32
426#define ARM_2D_M_COLOUR_CCCA8888 ( ARM_2D_M_COLOUR_SZ_32BIT_msk \
427 | ARM_2D_M_COLOUR_HAS_ALPHA_msk)
429#define ARM_2D_M_COLOUR_RGB888 ARM_2D_M_COLOUR_CCCN888
430#define ARM_2D_M_COLOUR_BGRAA8888 ARM_2D_M_COLOUR_CCCA8888
440#define ARM_2D_M_CHANNEL_8in32 ( ARM_2D_M_COLOUR_SZ_32BIT_msk \
441 | ARM_2D_M_COLOUR_HAS_ALPHA_msk) \
442 | ARM_2D_M_COLOUR_VARIANT_msk )
450 uint8_t bHasAlpha : 1;
451 uint8_t u3ColourSZ : 3;
452 uint8_t bBigEndian : 1;
453 uint8_t u3Variant : 3;
515 uint8_t bHasEnforcedColour : 1;
516 uint8_t bDerivedResource : 1;
517 uint8_t bVirtualResource : 1;
518 uint8_t bVirtualScreen : 1;
552 uint32_t u24SizeInByte : 24;
553 uint32_t u2ItemSize : 3;
554 uint32_t u2Align : 3;
675#define ARM_2D_OP_INFO_PARAM_HAS_SOURCE _BV(0)
676#define ARM_2D_OP_INFO_PARAM_HAS_TARGET _BV(1)
677#define ARM_2D_OP_INFO_PARAM_HAS_SOURCE_MASK _BV(2)
678#define ARM_2D_OP_INFO_PARAM_HAS_TARGET_MASK _BV(3)
679#define ARM_2D_OP_INFO_PARAM_HAS_ORIGIN _BV(4)
682#define ARM_2D_OP_INFO_PARAM_TILES_MASK ( \
683 ARM_2D_OP_INFO_PARAM_HAS_SOURCE | \
684 ARM_2D_OP_INFO_PARAM_HAS_TARGET | \
685 ARM_2D_OP_INFO_PARAM_HAS_SOURCE_MASK | \
686 ARM_2D_OP_INFO_PARAM_HAS_TARGET_MASK | \
687 ARM_2D_OP_INFO_PARAM_HAS_ORIGIN )
701 uint8_t bHasSource : 1;
702 uint8_t bHasTarget : 1;
703 uint8_t bHasSrcMask : 1;
704 uint8_t bHasDesMask : 1;
705 uint8_t bHasOrigin : 1;
707 uint8_t bAllowEnforcedColour : 1;
712 uint8_t chInClassOffset;
721 uint8_t CopyOrigLike;
722 uint8_t FillOrigLike;
725 uint8_t TileProcessLike;
727 }LowLevelInterfaceIndex;
763 ARM_2D_PREF_ACC_DONT_CARE = 3,
766#define __ARM_2D_OP_STATUS_BUSY_msk (1 << 4)
767#define __ARM_2D_OP_STATUS_IO_ERROR_msk (1 << 5)
768#define __ARM_2D_OP_STATUS_CPL_msk (1 << 6)
776 uint16_t u4SubTaskCount : 4;
777 uint16_t bIsBusy : 1;
778 uint16_t bIOError : 1;
796 uint8_t u2ACCMethods : 2;
805#if __ARM_2D_HAS_ASYNC__
806 uintptr_t pSemaphore;
936#if (__ARM_2D_HAS_HELIUM_FLOAT__ || __ARM_2D_HAS_FPU__) \
937 && !__ARM_2D_CFG_FORCED_FIXED_POINT_TRANSFORM__
968#if defined(__clang__)
969#pragma clang diagnostic pop
970#elif __IS_COMPILER_ARM_COMPILER_5__
971#pragma diag_warning 64
972#elif __IS_COMPILER_GCC__
973#pragma GCC diagnostic pop