Macros | |
#define | __implement_ex(__type, __name) |
#define | __inherit_ex(__type, __name) __type __name |
#define | __implement(__type) |
#define | __inherit(__type) __inherit_ex(__type,use_as__##__type) |
#define | implement(__type) __implement(__type) |
inherit a given class More... | |
#define | implement_ex(__type, __name) __implement_ex(__type, __name) |
inherit a given class and give it an alias name More... | |
#define | inherit(__type) __inherit(__type) |
inherit a given class More... | |
#define | inherit_ex(__type, __name) __inherit_ex(__type, __name) |
inherit a given class and give it an alias name More... | |
#define | ARM_2D_UNUSED(__VAR) (void)(__VAR) |
a macro to mark unused variables and let the compiler happy More... | |
#define | ARM_TYPE_CONVERT(__VAR, __TYPE) (*((__TYPE *)&(__VAR))) |
convert a given variable to a specified type, the converted result can be used as lvalue. More... | |
#define | ARM_TEST_BITS(__VALUE, __BITS) ((__BITS) == ((__VALUE) & (__BITS))) |
a macro to test the boolean result for a given value using a given bitmask More... | |
#define | dimof(__array) (sizeof(__array)/sizeof(__array[0])) |
get the number of items in an given array More... | |
#define | offsetof(__type, __member) ((uintptr_t)&(((__type *)NULL)->__member)) |
get the offset of a given member in a specified structure/union More... | |
#define | __ARM_TO_STRING(__STR) #__STR |
#define | ARM_TO_STRING(__STR) __ARM_TO_STRING(__STR) |
convert a string to C string More... | |
#define | __ARM_VA_NUM_ARGS_IMPL(_0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, __N, ...) __N |
#define | __ARM_VA_NUM_ARGS(...) |
A macro to count the number of parameters. More... | |
#define | ARM_2D_PARAM(...) __VA_ARGS__ |
detect whether GNU extension is enabled in compilation or not More... | |
#define | ARM_2D_INVOKE(__FUNC_PTR, ...) ((NULL == (__FUNC_PTR)) ? 0 : ((*(__FUNC_PTR))(__VA_ARGS__))) |
A macro to safely invode a function pointer. More... | |
#define | ARM_2D_INVOKE_RT_VOID(__FUNC_PTR, ...) if (NULL != (__FUNC_PTR)) (*(__FUNC_PTR))(__VA_ARGS__) |
A macro to safely call a function pointer that has no return value. More... | |
#define | __ARM_CONNECT2(__A, __B) __A##__B |
#define | __ARM_CONNECT2_ALT(__A, __B) __A##__B |
#define | __ARM_CONNECT3(__A, __B, __C) __A##__B##__C |
#define | __ARM_CONNECT4(__A, __B, __C, __D) __A##__B##__C##__D |
#define | __ARM_CONNECT5(__A, __B, __C, __D, __E) __A##__B##__C##__D##__E |
#define | __ARM_CONNECT6(__A, __B, __C, __D, __E, __F) __A##__B##__C##__D##__E##__F |
#define | __ARM_CONNECT7(__A, __B, __C, __D, __E, __F, __G) __A##__B##__C##__D##__E##__F##__G |
#define | __ARM_CONNECT8(__A, __B, __C, __D, __E, __F, __G, __H) __A##__B##__C##__D##__E##__F##__G##__H |
#define | __ARM_CONNECT9(__A, __B, __C, __D, __E, __F, __G, __H, __I) __A##__B##__C##__D##__E##__F##__G##__H##__I |
#define | ARM_CONNECT2(__A, __B) __ARM_CONNECT2(__A, __B) |
connect two symbol names as one More... | |
#define | ARM_CONNECT2_ALT(__A, __B) __ARM_CONNECT2_ALT(__A, __B) |
connect two symbol names as one More... | |
#define | ARM_CONNECT3(__A, __B, __C) __ARM_CONNECT3(__A, __B, __C) |
connect three symbol names as one More... | |
#define | ARM_CONNECT4(__A, __B, __C, __D) __ARM_CONNECT4(__A, __B, __C, __D) |
connect four symbol names as one More... | |
#define | ARM_CONNECT5(__A, __B, __C, __D, __E) __ARM_CONNECT5(__A, __B, __C, __D, __E) |
connect five symbol names as one More... | |
#define | ARM_CONNECT6(__A, __B, __C, __D, __E, __F) __ARM_CONNECT6(__A, __B, __C, __D, __E, __F) |
connect six symbol names as one More... | |
#define | ARM_CONNECT7(__A, __B, __C, __D, __E, __F, __G) __ARM_CONNECT7(__A, __B, __C, __D, __E, __F, __G) |
connect seven symbol names as one More... | |
#define | ARM_CONNECT8(__A, __B, __C, __D, __E, __F, __G, __H) __ARM_CONNECT8(__A, __B, __C, __D, __E, __F, __G, __H) |
connect eight symbol names as one More... | |
#define | ARM_CONNECT9(__A, __B, __C, __D, __E, __F, __G, __H, __I) __ARM_CONNECT9(__A, __B, __C, __D, __E, __F, __G, __H, __I) |
connect nine symbol names as one More... | |
#define | arm_connect(...) |
connect up to 9 symbol names as one More... | |
#define | ARM_CONNECT(...) arm_connect(__VA_ARGS__) |
connect up to 9 symbol names as one More... | |
#define | __ARM_USING1(__declare) |
#define | __ARM_USING2(__declare, __on_leave_expr) |
#define | __ARM_USING3(__declare, __on_enter_expr, __on_leave_expr) |
#define | __ARM_USING4(__dcl1, __dcl2, __on_enter_expr, __on_leave_expr) |
#define | arm_using(...) ARM_CONNECT2(__ARM_USING, __ARM_VA_NUM_ARGS(__VA_ARGS__))(__VA_ARGS__) |
create a code segment with up to two local variables and entering/leaving operations More... | |
#define | __ARM_WITH2(__type, __addr) arm_using(__type *_=(__addr)) |
#define | __ARM_WITH3(__type, __addr, __item) arm_using(__type *_=(__addr), *__item = _, (void)_, (void)0) |
#define | arm_with(...) ARM_CONNECT2(__ARM_WITH, __ARM_VA_NUM_ARGS(__VA_ARGS__))(__VA_ARGS__) |
a with block to access members of a given object More... | |
#define | ARM_FOREACH2(__type, __array) |
access each items in a given array More... | |
#define | ARM_FOREACH3(__type, __array, __item) |
access each items in a given array More... | |
#define | ARM_FOREACH4(__type, __array, __count, __item) |
access each items in a given array More... | |
#define | arm_foreach(...) ARM_CONNECT2(ARM_FOREACH, __ARM_VA_NUM_ARGS(__VA_ARGS__))(__VA_ARGS__) |
access each items in a given array More... | |
#define | __ARM_SECTION(__X) __attribute__((section(__X))) |
a wrapper for attribute((nonnull)) More... | |
#define | ARM_SECTION(__X) __ARM_SECTION(__X) |
an attribute to specify the section More... | |
#define | ARM_NOINIT |
an attribute for static variables that no initialisation is required in the C startup process. More... | |
#define | __ARM_ALIGN(__N) __attribute__((aligned(__N))) |
#define | ARM_ALIGN(__N) __ARM_ALIGN(__N) |
an attribute to specify aligment requirement More... | |
#define | __RESTRICT __restrict |
local variable decoration for pointers: restrict More... | |
#define | __OVERRIDE_WEAK |
an decoration for claiming that the immediate following symbol (variable / function) is not WEAK. If there is an __WEAK symbol, the __OVERRIDE_WEAK one can override it. More... | |
#define | ARM_2D_SAFE_NAME(...) ARM_CONNECT(__,__LINE__,##__VA_ARGS__) |
A macro to generate a safe name, usually used in macro template as the name of local variables. More... | |
#define | arm_2d_safe_name(...) ARM_2D_SAFE_NAME(__VA_ARGS__) |
A macro to generate a safe name, usually used in macro template as the name of local variables. More... | |
#define | __ARM_2D_WRAP_FUNC(x) __wrap_ ## x |
a decoration to make the immediate following code irq-safe More... | |
#define | __ARM_2D_ORIG_FUNC(x) __real_ ## x |
#define | ARM_2D_WRAP_FUNC(__FUNC) __ARM_2D_WRAP_FUNC(__FUNC) |
a symbol wrapper to override a specified function More... | |
#define | ARM_2D_ORIG_FUNC(__FUNC) __ARM_2D_ORIG_FUNC(__FUNC) |
a symbol wrapper to refer the original function with a given name More... | |
#define | __ARM_LIST_STACK_PUSH(__P_TOP, __P_NODE) |
#define | ARM_LIST_STACK_PUSH(__P_TOP, __P_NODE) __ARM_LIST_STACK_PUSH((__P_TOP), (__P_NODE)) |
push a item to a list More... | |
#define | ARM_LIST_INSERT_AFTER(__P_TARGET, __P_NODE) __ARM_LIST_STACK_PUSH((__P_TARGET), (__P_NODE)) |
insert a item after a specified node More... | |
#define | __ARM_LIST_STACK_POP(__P_TOP, __P_NODE) |
#define | ARM_LIST_STACK_POP(__P_TOP, __P_NODE) __ARM_LIST_STACK_POP((__P_TOP), (__P_NODE)) |
pop a item from a list More... | |
#define | ARM_LIST_REMOVE_AFTER(__P_TARGET, __P_NODE) ARM_LIST_STACK_POP((__P_TARGET), (__P_NODE)) |
remove a item after a specified node More... | |
#define | __ARM_LIST_QUEUE_ENQUEUE(__HEAD, __TAIL, __ITEM) |
#define | ARM_LIST_QUEUE_ENQUEUE(__HEAD, __TAIL, __ITEM) __ARM_LIST_QUEUE_ENQUEUE((__HEAD), (__TAIL), (__ITEM)) |
enter a node to a queue More... | |
#define | __ARM_LIST_QUEUE_DEQUEUE(__HEAD, __TAIL, __ITEM) |
#define | ARM_LIST_QUEUE_DEQUEUE(__HEAD, __TAIL, __ITEM) __ARM_LIST_QUEUE_DEQUEUE((__HEAD), (__TAIL), (__ITEM)) |
fetch a node from a queue More... | |
#define | __ARM_LIST_QUEUE_PEEK(__HEAD, __TAIL, __ITEM) |
#define | ARM_LIST_QUEUE_PEEK(__HEAD, __TAIL, __ITEM) __ARM_LIST_QUEUE_PEEK((__HEAD), (__TAIL), (__ITEM)) \ |
peek a node from a queue More... | |
#define | __ARM_LIST_QUEUE_IS_EMPTY(__HEAD, __TAIL) ((__HEAD) == NULL) |
#define | ARM_LIST_QUEUE_IS_EMPTY(__HEAD, __TAIL) __ARM_LIST_QUEUE_IS_EMPTY((__HEAD), (__TAIL)) |
check whether a list FIFO is empty or not More... | |
#define | ARM_PT_BEGIN(__STATE) |
#define | ARM_PT_ENTRY(...) |
#define | ARM_PT_YIELD(...) ARM_PT_ENTRY(return __VA_ARGS__;) |
#define | ARM_PT_END() |
#define | ARM_PT_GOTO_PREV_ENTRY(...) return __VA_ARGS__; |
#define | ARM_PT_WAIT_UNTIL(__CONDITION, ...) |
#define | ARM_PT_WAIT_OBJ_UNTIL(__CONDITION, ...) |
#define | ARM_PT_WAIT_RESOURCE_UNTIL(__CONDITION, ...) |
#define | ARM_PT_DELAY_MS(__MS, ...) |
#define | ARM_PT_REPORT_STATUS(...) |
#define | ARM_PT_RETURN(...) |
#define | __def_low_lv_io(__NAME, __SW, ...) |
#define | __ref_low_lv_io(__NAME) &LOW_LEVEL_IO##__NAME |
#define | ref_low_lv_io(__NAME) __ref_low_lv_io(__NAME) |
a symbol wrapper for referencing a specified low-level IO More... | |
#define | ARM_2D_LOG_CHN_TYPE_USER _BV(28) |
the bit-mask for log channels More... | |
#define | ARM_2D_LOG_CHN_TYPE_INFO _BV(29) |
the channel for generic information More... | |
#define | ARM_2D_LOG_CHN_TYPE_WARNING _BV(30) |
the channel for warnings messages More... | |
#define | ARM_2D_LOG_CHN_TYPE_ERROR _BV(31) |
the channel for error messages More... | |
#define | ARM_2D_LOG_CHN_PIPELINE _BV(0) |
the channel dedicated to the pixel-pipeline More... | |
#define | ARM_2D_LOG_CHN_OPCODE _BV(1) |
the channel dedicated to OPCODEs and related algorithms More... | |
#define | ARM_2D_LOG_CHN_HELPER _BV(2) |
the channel dedicated to Helper services More... | |
#define | ARM_2D_LOG_CHN_HELPER_PFB _BV(3) |
the channel dedicated to the PFB helper service More... | |
#define | ARM_2D_LOG_CHN_SCENE_PLAYER _BV(4) |
the channel dedicated to the scene player service More... | |
#define | ARM_2D_LOG_CHN_DIRTY_REGION_OPTIMISATION _BV(5) |
the channel dedicated to the dirty region optimization services More... | |
#define | ARM_2D_LOG_CHN_STATISTICS _BV(6) |
the channel dedicated to show statistics More... | |
#define | ARM_2D_LOG_CHN_CONTROLS _BV(7) |
the channel dedicated to example controls More... | |
#define | ARM_2D_LOG_CHN_GUI_STACK _BV(16) |
the channel dedicated to USER defined GUI stack More... | |
#define | ARM_2D_LOG_CHN_APP _BV(24) |
the channel dedicated to applications and examples More... | |
#define | ARM_2D_TERMINAL_COLOUR_DEFAULT |
#define | ARM_2D_TERMINAL_COLOUR_GREEN |
#define | ARM_2D_TERMINAL_COLOUR_RED |
#define | ARM_2D_TERMINAL_COLOUR_YELLOW |
#define | ARM_2D_TERMINAL_COLOUR_WHITE |
#define | ARM_2D_TERMINAL_COLOUR_BRIGHT_BLACK |
#define | __ARM_2D_LOG_CHANNEL_MASK_FILTER__ 0xFFFFFFFF |
the filter to enable log channels More... | |
#define | __ARM_2D_LOG_PRINTF_PIPELINE __arm_2d_log_printf |
the log printf entry dedicated to pixel pipeline More... | |
#define | __ARM_2D_LOG_PRINTF_OPCODE __arm_2d_log_printf |
the log printf entry dedicated to OPCODEs and related algorithms More... | |
#define | __ARM_2D_LOG_PRINTF_HELPER __arm_2d_log_printf |
the log printf entry dedicated to Helper services More... | |
#define | __ARM_2D_LOG_PRINTF_HELPER_PFB __arm_2d_log_printf |
the log printf entry dedicated to the PFB helper service More... | |
#define | __ARM_2D_LOG_PRINTF_SCENE_PLAYER __arm_2d_log_printf |
the log printf entry dedicated to the scene player service More... | |
#define | __ARM_2D_LOG_PRINTF_DIRTY_REGION_OPTIMISATION __arm_2d_log_printf |
the log printf entry dedicated to the dirty region optimization service More... | |
#define | __ARM_2D_LOG_PRINTF_STATISTICS __arm_2d_log_printf |
the log printf entry dedicated to show statistics More... | |
#define | __ARM_2D_LOG_PRINTF_CONTROLS __arm_2d_log_printf |
the log printf entry dedicated to example controls More... | |
#define | __ARM_2D_LOG_PRINTF_GUI_STACK __arm_2d_log_printf |
the log printf entry dedicated to applications and examples More... | |
#define | __ARM_2D_LOG_PRINTF_APP __arm_2d_log_printf |
the log printf entry dedicated to applications and examples More... | |
#define | ARM_2D_LOG_INFO(__CHN, __INDENT, __PREFIX, __FORMAT_STR, ...) |
#define | ARM_2D_LOG_WARNING(__CHN, __INDENT, __PREFIX, __FORMAT_STR, ...) |
#define | ARM_2D_LOG_ERROR(__CHN, __INDENT, __PREFIX, __FORMAT_STR, ...) |
#define | ARM_2D_LOG_USER(__CHN, __INDENT, __PREFIX, __FORMAT_STR, ...) |
#define | __ARM_2D_PORT_PRINTF__(__format, ...) printf((__format), ##__VA_ARGS__) |
the low level entry for printf More... | |
#define | __ARM_2D_LOG_MAX_STRING_LEN__ 256 |
the maximum allowed string length. The log service requests the specified number of bytes for storing string. default value is 256 More... | |
#define | ARM_2D_M_COLOUR_SZ_1BIT 0 |
1 bit:black and white More... | |
#define | ARM_2D_M_COLOUR_SZ_2BIT 1 |
4 colours or 4 gray-levels More... | |
#define | ARM_2D_M_COLOUR_SZ_4BIT 2 |
16 colours or 16 gray-levels More... | |
#define | ARM_2D_M_COLOUR_SZ_8BIT 3 |
256 colours More... | |
#define | ARM_2D_M_COLOUR_SZ_16BIT 4 |
16bits More... | |
#define | ARM_2D_M_COLOUR_SZ_32BIT 5 |
true colour More... | |
#define | ARM_2D_M_COLOUR_SZ_24BIT 6 |
true colour More... | |
#define | ARM_2D_M_COLOUR_SZ_1BIT_msk (ARM_2D_M_COLOUR_SZ_1BIT << 1) |
bitmask for 1bit colour formats More... | |
#define | ARM_2D_M_COLOUR_SZ_2BIT_msk (ARM_2D_M_COLOUR_SZ_2BIT << 1) |
bitmask for 2bit colour formats More... | |
#define | ARM_2D_M_COLOUR_SZ_4BIT_msk (ARM_2D_M_COLOUR_SZ_4BIT << 1) |
bitmask for 4bit colour formats More... | |
#define | ARM_2D_M_COLOUR_SZ_8BIT_msk (ARM_2D_M_COLOUR_SZ_8BIT << 1) |
bitmask for 8bit colour formats More... | |
#define | ARM_2D_M_COLOUR_SZ_16BIT_msk (ARM_2D_M_COLOUR_SZ_16BIT<< 1) |
bitmask for 16bit colour formats More... | |
#define | ARM_2D_M_COLOUR_SZ_32BIT_msk (ARM_2D_M_COLOUR_SZ_32BIT<< 1) |
bitmask for 32bit colour formats More... | |
#define | ARM_2D_M_COLOUR_SZ_24BIT_msk (ARM_2D_M_COLOUR_SZ_24BIT<< 1) |
bitmask for 24bit colour formats More... | |
#define | ARM_2D_M_COLOUR_SZ_msk (0x07 << 1), |
bitmask for the SZ bitfield More... | |
#define | ARM_2D_M_COLOUR_LITTLE_ENDIAN 0 |
pixels are stored in little endian More... | |
#define | ARM_2D_M_COLOUR_BIG_ENDIAN 1 |
pixels are stored big endian More... | |
#define | ARM_2D_M_COLOUR_LITTLE_ENDIAN_msk (ARM_2D_M_COLOUR_LITTLE_ENDIAN << 4) |
bitmask for little-endian More... | |
#define | ARM_2D_M_COLOUR_BIG_ENDIAN_msk (ARM_2D_M_COLOUR_BIG_ENDIAN << 4) |
bitmask for big-endian More... | |
#define | ARM_2D_M_COLOUR_NO_ALPHA 0 |
there is no alpha channel in each pixel More... | |
#define | ARM_2D_M_COLOUR_HAS_ALPHA 1 |
there is an alpha channel in each pixel More... | |
#define | ARM_2D_M_COLOUR_NO_ALPHA_msk (ARM_2D_M_COLOUR_NO_ALPHA << 0) |
bitmask for no-alpha-channel-in-pixel More... | |
#define | ARM_2D_M_COLOUR_HAS_ALPHA_msk (ARM_2D_M_COLOUR_HAS_ALPHA << 0) |
bitmask for has-alpha-channel-in-pixel More... | |
#define | ARM_2D_M_COLOUR_VARIANT_pos 5 |
offset for the VARIANT bitfield More... | |
#define | ARM_2D_M_COLOUR_VARIANT_msk (0x07<<ARM_2D_M_COLOUR_VARIANT_pos) |
bitmask for the VARIANT bitfield More... | |
#define | ARM_2D_M_COLOUR_MONOCHROME ARM_2D_M_COLOUR_SZ_1BIT_msk |
macro for the monochrome More... | |
#define | ARM_2D_M_COLOUR_BIN ARM_2D_M_COLOUR_SZ_1BIT_msk |
macro for the 1bit colour format (alias) More... | |
#define | ARM_2D_M_COLOUR_1BIT ARM_2D_M_COLOUR_SZ_1BIT_msk |
macro for the 1bin colour format (alias) More... | |
#define | ARM_2D_M_COLOUR_MASK_A1 ARM_2D_M_COLOUR_SZ_1BIT_msk |
macro for the 1bit alpha mask More... | |
#define | ARM_2D_M_COLOUR_MASK_A2 ARM_2D_M_COLOUR_SZ_2BIT_msk |
macro for the 2bit alpha mask More... | |
#define | ARM_2D_M_COLOUR_MASK_A4 ARM_2D_M_COLOUR_SZ_4BIT_msk |
macro for the 4bit alpha mask More... | |
#define | ARM_2D_M_COLOUR_8BIT ARM_2D_M_COLOUR_SZ_8BIT_msk |
macro for the generic 8bit colour formats More... | |
#define | ARM_2D_M_COLOUR_GRAY8 ARM_2D_M_COLOUR_SZ_8BIT_msk |
macro for the gray8 colour format More... | |
#define | ARM_2D_M_COLOUR_MASK_A8 ARM_2D_M_COLOUR_SZ_8BIT_msk |
macro for the 8bit alpha mask More... | |
#define | ARM_2D_M_COLOUR_16BIT ARM_2D_M_COLOUR_SZ_16BIT_msk |
macro for the generic 16bit colour formats More... | |
#define | ARM_2D_M_COLOUR_RGB16 ARM_2D_M_COLOUR_SZ_16BIT_msk |
macro for the generic 16bit colour formats More... | |
#define | ARM_2D_M_COLOUR_RGB565 ARM_2D_M_COLOUR_RGB16 |
macro for the rgb565 More... | |
#define | ARM_2D_M_COLOUR_24BIT ARM_2D_M_COLOUR_SZ_24BIT_msk |
macro for the generic 24bit colour formats More... | |
#define | ARM_2D_M_COLOUR_RGB24 ARM_2D_M_COLOUR_SZ_24BIT_msk |
macro for the generic 24bit colour formats More... | |
#define | ARM_2D_M_COLOUR_32BIT ARM_2D_M_COLOUR_SZ_32BIT_msk |
macro for the generic 32bit colour formats More... | |
#define | ARM_2D_M_COLOUR_RGB32 ARM_2D_M_COLOUR_SZ_32BIT_msk |
macro for the generic 32bit colour formats More... | |
#define | ARM_2D_M_COLOUR_CCCN888 ARM_2D_M_COLOUR_RGB32 |
macro for the generic 32bit colour formats with an reserved channel at the highest byte More... | |
#define | ARM_2D_M_COLOUR_CCCA8888 |
#define | ARM_2D_M_COLOUR_RGBX888 ARM_2D_M_COLOUR_CCCN888 |
macro for the RGB888 (BGRN8888) More... | |
#define | ARM_2D_M_COLOUR_BGRA8888 ARM_2D_M_COLOUR_CCCA8888 |
macro for the BGRA8888 More... | |
#define | ARM_2D_M_CHANNEL_8in32 |
#define | ARM_2D_OP_INFO_PARAM_HAS_SOURCE _BV(0) |
opcode has source tile info More... | |
#define | ARM_2D_OP_INFO_PARAM_HAS_TARGET _BV(1) |
opcode has target tile info More... | |
#define | ARM_2D_OP_INFO_PARAM_HAS_SOURCE_MASK _BV(2) |
opcode has source mask info More... | |
#define | ARM_2D_OP_INFO_PARAM_HAS_TARGET_MASK _BV(3) |
opcode has target mask info More... | |
#define | ARM_2D_OP_INFO_PARAM_HAS_ORIGIN _BV(4) |
opcode has original tile info More... | |
#define | ARM_2D_OP_INFO_PARAM_TILES_MASK |
#define | __ARM_2D_OP_STATUS_BUSY_msk (1 << 4) |
bitmask for the busy flag More... | |
#define | __ARM_2D_OP_STATUS_IO_ERROR_msk (1 << 5) |
bitmask for the IO error flag More... | |
#define | __ARM_2D_OP_STATUS_CPL_msk (1 << 6) |
bitmask for the complete flag More... | |
#define | __ARM_2D_HAS_HELIUM__ 0 |
target MCU has no Helium extension More... | |
#define | __ARM_2D_HAS_HELIUM_INTEGER__ 0 |
target MCU has no Helium integer extension More... | |
#define | __ARM_2D_HAS_HELIUM_FLOAT__ 0 |
target MCU has no Helium floating point extension More... | |
#define | __ARM_2D_HAS_ACI__ 0 |
target MCU has no ACI implementation More... | |
#define | __ARM_2D_HAS_TIGHTLY_COUPLED_ACC__ 0 |
target MCU has no tightly coupled acceleration (other than ACI) More... | |
#define | __ARM_2D_HAS_HW_ACC__ 0 |
target MCU has no dedicated hardware (async) acceleration More... | |
#define | __ARM_2D_HAS_ASYNC__ 1 |
enable asynchronous mode (enable pipeline) More... | |
#define | __ARM_2D_CFG_DEFAULT_SUB_TASK_POOL_SIZE__ 4 |
default pool size for sub-tasks More... | |
#define | __ARM_2D_HAS_FPU__ 0 |
target MCU has no FPU More... | |
#define | __ARM_2D_HAS_DSP__ 0 |
target MCU has no DSP extension More... | |
#define | __ARM_2D_HAS_ANTI_ALIAS_TRANSFORM__ 0 |
disable the anti-alias support in transform operations More... | |
#define | __ARM_2D_CFG_FORCED_FIXED_POINT_TRANSFORM__ 1 |
use fixed point numbers in transform operations More... | |
#define | __ARM_2D_CFG_OPTIMIZE_FOR_POINTER_LIKE_SHAPES_IN_TRANSFORM__ 1 |
#define | __ARM_2D_CFG_SUPPORT_COLOUR_CHANNEL_ACCESS__ 1 |
enable the support for CCCA8888 More... | |
#define | __ARM_2D_CFG_USE_IIR_BLUR_REVERSE_PATH__ 0 |
#define | __ARM_2D_CFG_SUPPORT_CCCA8888_IMPLICIT_CONVERSION__ 0 |
#define | ARM_2D_VERSION_MAJOR 1 |
Major version. More... | |
#define | ARM_2D_VERSION_MINOR 2 |
Minor version. More... | |
#define | ARM_2D_VERSION_PATCH 1 |
Patch number. More... | |
#define | ARM_2D_VERSION_STR "dev" |
tag More... | |
#define | ARM_2D_VERSION |
arm-2d version number in decimal More... | |
#define | ARM_2D_OP_INIT(__OP) arm_2d_op_init((arm_2d_op_core_t *)&(__OP), sizeof(__OP)) |
#define | ARM_2D_OP_DEPOSE(__OP) arm_2d_op_depose((arm_2d_op_core_t *)&(__OP), sizeof(__OP)) |
#define | ARM_2D_OP_WAIT_ASYNC(...) arm_2d_op_wait_async((arm_2d_op_core_t *)(NULL,##__VA_ARGS__)) |
wait asynchronous operation complete More... | |
Typedefs | |
typedef bool | arm_2d_op_evt_handler_t(arm_2d_op_core_t *ptThisOP, arm_fsm_rt_t tResult, void *pTarget) |
a prototype of event handlers for 2D operations More... | |
typedef bool | arm_2d_evt_handler_t(void *pTarget) |
a prototype for generic event handlers More... | |
typedef struct __arm_2d_low_level_io_t | __arm_2d_low_level_io_t |
an incomplete defintion which is only used for defining pointers More... | |
Enumerations | |
enum | arm_fsm_rt_t { arm_fsm_rt_err = -1 , arm_fsm_rt_cpl = 0 , arm_fsm_rt_on_going = 1 , arm_fsm_rt_wait_for_obj = 2 , arm_fsm_rt_async = 3 , arm_fsm_rt_wait_for_res = 4 } |
finite-state-machine status return (Compatible with arm_status, minimal integer: int8_t) More... | |
enum | arm_2d_err_t { ARM_2D_ERR_INVALID_STATUS = -13 , ARM_2D_ERR_NOT_AVAILABLE = -12 , ARM_2D_ERR_UNSUPPORTED_COLOUR = -11 , ARM_2D_ERR_BUSY = -10 , ARM_2D_ERR_INSUFFICIENT_RESOURCE = -9 , ARM_2D_ERR_IO_BUSY = -8 , ARM_2D_ERR_IO_ERROR = -7 , ARM_2D_ERR_MISSING_PARAM = -6 , ARM_2D_ERR_INVALID_OP = -5 , ARM_2D_ERR_NOT_SUPPORT = -4 , ARM_2D_ERR_OUT_OF_REGION = -3 , ARM_2D_ERR_INVALID_PARAM = -2 , ARM_2D_ERR_UNKNOWN = -1 , ARM_2D_ERR_NONE = 0 , ARM_2D_RT_FALSE = 0 , ARM_2D_RT_TRUE = 1 } |
the error code for arm-2d (minimal integer: int8_t) More... | |
enum | arm_2d_cmp_t { ARM_2D_CMP_SMALLER = -1 , ARM_2D_CMP_EQUALS = 0 , ARM_2D_CMP_LARGER = 1 } |
comparison result More... | |
enum | { ARM_2D_COLOUR_SZ_1BIT = 0 , ARM_2D_COLOUR_SZ_2BIT = 1 , ARM_2D_COLOUR_SZ_4BIT = 2 , ARM_2D_COLOUR_SZ_8BIT = 3 , ARM_2D_COLOUR_SZ_16BIT = 4 , ARM_2D_COLOUR_SZ_32BIT = 5 , ARM_2D_COLOUR_SZ_24BIT = 6 , ARM_2D_COLOUR_SZ_1BIT_msk = ARM_2D_COLOUR_SZ_1BIT << 1 , ARM_2D_COLOUR_SZ_2BIT_msk = ARM_2D_COLOUR_SZ_2BIT << 1 , ARM_2D_COLOUR_SZ_4BIT_msk = ARM_2D_COLOUR_SZ_4BIT << 1 , ARM_2D_COLOUR_SZ_8BIT_msk = ARM_2D_COLOUR_SZ_8BIT << 1 , ARM_2D_COLOUR_SZ_16BIT_msk = ARM_2D_COLOUR_SZ_16BIT<< 1 , ARM_2D_COLOUR_SZ_32BIT_msk = ARM_2D_COLOUR_SZ_32BIT<< 1 , ARM_2D_COLOUR_SZ_24BIT_msk = ARM_2D_COLOUR_SZ_24BIT<< 1 , ARM_2D_COLOUR_SZ_msk = (0x07 << 1) , ARM_2D_COLOUR_LITTLE_ENDIAN = 0 , ARM_2D_COLOUR_BIG_ENDIAN = 1 , ARM_2D_COLOUR_LITTLE_ENDIAN_msk = ARM_2D_COLOUR_LITTLE_ENDIAN << 4 , ARM_2D_COLOUR_BIG_ENDIAN_msk = ARM_2D_COLOUR_BIG_ENDIAN << 4 , ARM_2D_COLOUR_NO_ALPHA = 0 , ARM_2D_COLOUR_HAS_ALPHA = 1 , ARM_2D_COLOUR_NO_ALPHA_msk = ARM_2D_COLOUR_NO_ALPHA << 0 , ARM_2D_COLOUR_HAS_ALPHA_msk = ARM_2D_COLOUR_HAS_ALPHA << 0 , ARM_2D_COLOUR_VARIANT_pos = 5 , ARM_2D_COLOUR_VARIANT_msk = 0x07 << ARM_2D_COLOUR_VARIANT_pos } |
enumerations for colour attributes More... | |
enum | { ARM_2D_COLOUR_MONOCHROME = ARM_2D_COLOUR_SZ_1BIT_msk , ARM_2D_COLOUR_BIN = ARM_2D_COLOUR_SZ_1BIT_msk , ARM_2D_COLOUR_1BIT = ARM_2D_COLOUR_SZ_1BIT_msk , ARM_2D_COLOUR_MASK_A1 = ARM_2D_M_COLOUR_SZ_1BIT_msk , ARM_2D_COLOUR_MASK_A2 = ARM_2D_M_COLOUR_SZ_2BIT_msk , ARM_2D_COLOUR_MASK_A4 = ARM_2D_M_COLOUR_SZ_4BIT_msk , ARM_2D_COLOUR_2BIT = ARM_2D_M_COLOUR_SZ_2BIT_msk , ARM_2D_COLOUR_4BIT = ARM_2D_M_COLOUR_SZ_4BIT_msk , ARM_2D_COLOUR_8BIT = ARM_2D_COLOUR_SZ_8BIT_msk , ARM_2D_COLOUR_GRAY8 = ARM_2D_COLOUR_SZ_8BIT_msk , ARM_2D_COLOUR_MASK_A8 = ARM_2D_COLOUR_SZ_8BIT_msk , ARM_2D_COLOUR_16BIT = ARM_2D_COLOUR_SZ_16BIT_msk , ARM_2D_COLOUR_RGB16 = ARM_2D_COLOUR_SZ_16BIT_msk , ARM_2D_COLOUR_RGB565 = ARM_2D_COLOUR_RGB16 , ARM_2D_COLOUR_24BIT = ARM_2D_COLOUR_SZ_24BIT_msk , ARM_2D_COLOUR_RGB24 = ARM_2D_COLOUR_SZ_24BIT_msk , ARM_2D_COLOUR_32BIT = ARM_2D_COLOUR_SZ_32BIT_msk , ARM_2D_COLOUR_RGB32 = ARM_2D_COLOUR_SZ_32BIT_msk , ARM_2D_COLOUR_CCCN888 = ARM_2D_COLOUR_RGB32 , ARM_2D_COLOUR_CCCA8888 , ARM_2D_COLOUR_RGB888 = ARM_2D_COLOUR_CCCN888 , ARM_2D_COLOUR_BGRA8888 = ARM_2D_COLOUR_CCCA8888 , ARM_2D_CHANNEL_8in32 } |
enumerations for colour types More... | |
enum | { ARM_2D_TILE_EXTENSION_NONE = 0 , ARM_2D_TILE_EXTENSION_PFB , ARM_2D_TILE_EXTENSION_VRES } |
the tile extension ID More... | |
enum | arm_2d_align_t { ARM_2D_ALIGN_LEFT = _BV(0) , ARM_2D_ALIGN_RIGHT = _BV(1) , ARM_2D_ALIGN_TOP = _BV(2) , ARM_2D_ALIGN_BOTTOM = _BV(3) , ARM_2D_ALIGN_CENTRE = 0 , ARM_2D_ALIGN_CENTRE_ALIAS , ARM_2D_ALIGN_TOP_LEFT , ARM_2D_ALIGN_TOP_RIGHT , ARM_2D_ALIGN_TOP_MIDDLE , ARM_2D_ALIGN_TOP_CENTRE = ARM_2D_ALIGN_TOP_MIDDLE , ARM_2D_ALIGN_BOTTOM_LEFT , ARM_2D_ALIGN_BOTTOM_RIGHT , ARM_2D_ALIGN_BOTTOM_MIDDLE , ARM_2D_ALIGN_BOTTOM_CENTRE = ARM_2D_ALIGN_BOTTOM_MIDDLE , ARM_2D_ALIGN_MIDDLE_LEFT , ARM_2D_ALIGN_MIDDLE_RIGHT } |
alignment More... | |
enum | arm_2d_mem_type_t { ARM_2D_MEM_TYPE_UNSPECIFIED , ARM_2D_MEM_TYPE_SLOW , ARM_2D_MEM_TYPE_FAST } |
the enumeration type for describing memory types More... | |
enum | { ARM_2D_PREF_ACC_USE_HW_IF_POSSIBLE = 0 , ARM_2D_PREF_ACC_HW_ONLY = 1 , ARM_2D_PREF_ACC_SW_ONLY = 2 , ARM_2D_PREF_ACC_DONT_CARE = 3 } |
how would you want to accelerate the 2d-operation More... | |
Functions | |
void | __arm_2d_log_printf (int32_t nIndentLevel, uint32_t wChannelMask, const char *pchPrefix, const char *pchFormatString,...) |
an entry for log printf More... | |
void | arm_2d_init (void) |
initialise arm-2d More... | |
arm_2d_tile_t * | arm_2d_set_default_frame_buffer (const arm_2d_tile_t *ptFrameBuffer) |
set the default frame buffer More... | |
arm_2d_tile_t * | arm_2d_get_default_frame_buffer (void) |
get the default frame buffer More... | |
void | arm_2d_set_user_param (arm_2d_op_core_t *ptOP, uintptr_t pUserParam) |
attach a user param (which could be a pointer) to specified OP More... | |
arm_2d_op_core_t * | arm_2d_op_init (arm_2d_op_core_t *ptOP, size_t tSize) |
initialize an given opcode More... | |
arm_2d_op_core_t * | arm_2d_op_depose (arm_2d_op_core_t *ptOP, size_t tSize) |
depose an given opcode More... | |
void | arm_2d_op_attach_semaphore (arm_2d_op_core_t *ptOP, uintptr_t pSemaphore) |
attach a semaphore (which could be a pointer) to specified OP More... | |
uintptr_t | arm_2d_op_get_semaphore (arm_2d_op_core_t *ptOP) |
get the attached semaphore (which could be a pointer) from specified OP More... | |
bool | arm_2d_op_wait_async (arm_2d_op_core_t *ptOP) |
wait asynchronous operation complete More... | |
arm_2d_op_status_t | arm_2d_get_op_status (arm_2d_op_core_t *ptOP) |
get the status of a specified OP, More... | |
arm_fsm_rt_t | arm_2d_task (arm_2d_task_t *ptTask) |
arm-2d pixel pipeline task entery More... | |
void * | __arm_2d_allocate_scratch_memory (uint32_t wSize, uint_fast8_t nAlign, arm_2d_mem_type_t tType) |
allocate a memory block with specified memory type More... | |
void | __arm_2d_free_scratch_memory (arm_2d_mem_type_t tType, void *pBuff) |
free a specified memory block More... | |
arm_2d_scratch_mem_t * | arm_2d_scratch_memory_new (arm_2d_scratch_mem_t *ptMemory, uint16_t hwItemSize, uint16_t hwItemCount, uint16_t hwAlignment, arm_2d_mem_type_t tType) |
allocate a scratch memory and initialize arm_2d_scratch_mem_t object More... | |
arm_2d_scratch_mem_t * | arm_2d_scratch_memory_free (arm_2d_scratch_mem_t *ptMemory) |
free a scratch memory with a given scratch memory descriptor object More... | |
Variables | |
arm_2d_runtime_feature_t | ARM_2D_RUNTIME_FEATURE |
arm-2d runtime feature configuration More... | |
const arm_2d_version_t | ARM_2D_VERSION_INFO |
arm-2d version More... | |
struct __arm_slist_node_t |
a type for generic list
Data Fields | ||
---|---|---|
__arm_slist_node_t * | ptNext | the next node |
union arm_2d_color_rgb565_t |
the colour type for rgb565
Data Fields | ||
---|---|---|
uint16_t | tValue | |
struct arm_2d_color_rgb565_t.__unnamed5__ | __unnamed__ |
union arm_2d_color_bgra8888_t |
the colour type for brga8888
In most cases four equal-sized pieces of adjacent memory are used, one for each channel, and a 0 in a channel indicates black color or transparent alpha, while all-1 bits indicates white or fully opaque alpha. By far the most common format is to store 8 bits (one byte) for each channel, which is 32 bits for each pixel.
(source: https://en.wikipedia.org/wiki/RGBA_color_model#ARGB32)
Data Fields | ||
---|---|---|
uint32_t | tValue | |
uint8_t | chChannel[4] | |
struct arm_2d_color_bgra8888_t.__unnamed7__ | __unnamed__ |
union arm_2d_color_rgb888_t |
the colour type for rgb888 (compliant with ccca888 and bgra8888)
In most cases four equal-sized pieces of adjacent memory are used, one for each channel, and a 0 in a channel indicates black color or transparent alpha, while all-1 bits indicates white or fully opaque alpha. By far the most common format is to store 8 bits (one byte) for each channel, which is 32 bits for each pixel.
(source: https://en.wikipedia.org/wiki/RGBA_color_model#ARGB32)
Data Fields | ||
---|---|---|
uint32_t | tValue | |
struct arm_2d_color_rgb888_t.__unnamed9__ | __unnamed__ |
union arm_2d_color_ccca8888_t |
the colour type for any 32bit colour formats which has an alpha channel on its 3rd byte.
In most cases four equal-sized pieces of adjacent memory are used, one for each channel, and a 0 in a channel indicates black color or transparent alpha, while all-1 bits indicates white or fully opaque alpha. By far the most common format is to store 8 bits (one byte) for each channel, which is 32 bits for each pixel.
(source: https://en.wikipedia.org/wiki/RGBA_color_model#ARGB32)
Data Fields | ||
---|---|---|
uint32_t | tValue | |
struct arm_2d_color_ccca8888_t.__unnamed11__ | __unnamed__ |
union arm_2d_color_accc8888_t |
the colour type for any 32bit colour formats which has an alpha channel on its first byte.
In most cases four equal-sized pieces of adjacent memory are used, one for each channel, and a 0 in a channel indicates black color or transparent alpha, while all-1 bits indicates white or fully opaque alpha. By far the most common format is to store 8 bits (one byte) for each channel, which is 32 bits for each pixel.
(source: https://en.wikipedia.org/wiki/RGBA_color_model#ARGB32)
Data Fields | ||
---|---|---|
uint32_t | tValue | |
struct arm_2d_color_accc8888_t.__unnamed13__ | __unnamed__ |
union arm_2d_color_cccn888_t |
the colour type for any 32bit colour formats which has an unused-alpha channel on its 3rd byte.
In most cases four equal-sized pieces of adjacent memory are used, one for each channel, and a 0 in a channel indicates black color or transparent alpha, while all-1 bits indicates white or fully opaque alpha. By far the most common format is to store 8 bits (one byte) for each channel, which is 32 bits for each pixel.
(source: https://en.wikipedia.org/wiki/RGBA_color_model#ARGB32)
Data Fields | ||
---|---|---|
uint32_t | tValue | |
struct arm_2d_color_cccn888_t.__unnamed15__ | __unnamed__ |
union arm_2d_color_nccc888_t |
the colour type for any 32bit colour formats which has an unused-alpha channel on its first byte.
In most cases four equal-sized pieces of adjacent memory are used, one for each channel, and a 0 in a channel indicates black color or transparent alpha, while all-1 bits indicates white or fully opaque alpha. By far the most common format is to store 8 bits (one byte) for each channel, which is 32 bits for each pixel.
(source: https://en.wikipedia.org/wiki/RGBA_color_model#ARGB32)
Data Fields | ||
---|---|---|
uint32_t | tValue | |
struct arm_2d_color_nccc888_t.__unnamed17__ | __unnamed__ |
union arm_2d_colour_t |
union arm_2d_color_info_t |
a type used as colour descriptor
Data Fields | ||
---|---|---|
struct arm_2d_color_info_t.__unnamed19__ | __unnamed__ | |
struct arm_2d_color_info_t.__unnamed21__ | __unnamed__ | |
uint8_t | chScheme |
struct arm_2d_location_t |
struct arm_2d_point_float_t |
struct arm_2d_point_fx_t |
struct arm_2d_size_t |
struct arm_2d_region_t |
struct arm_2d_tile_t |
a type for tile
Data Fields | ||
---|---|---|
struct arm_2d_tile_t.__unnamed23__ | __unnamed__ |
< is this tile a root tile does this tile contains enforced colour info indicate whether this is a derived resources (when bIsRoot == 0) indicate whether the resource should be loaded on-demand DO NOT USE! indicate whether the tile is considered as the virtual screen, it is used in dirty region calculation Tile Extension ID enforced colour |
arm_2d_region_t | the region of the tile | |
union arm_2d_tile_t.__unnamed25__ | __unnamed__ |
struct arm_2d_margin_t |
struct arm_2d_padding_t |
union arm_2d_alpha_samples_4pts_t |
type for 4 points alpha sample points
Data Fields | ||
---|---|---|
struct arm_2d_alpha_samples_4pts_t.__unnamed30__ | __unnamed__ | |
uint8_t | chAlpha[4] |
union arm_2d_alpha_samples_3pts_t |
type for 3 points alpha sample points
Data Fields | ||
---|---|---|
struct arm_2d_alpha_samples_3pts_t.__unnamed32__ | __unnamed__ | |
uint8_t | chAlpha[3] |
union arm_2d_alpha_samples_2pts_t |
type for 2 points alpha sample points
Data Fields | ||
---|---|---|
struct arm_2d_alpha_samples_2pts_t.__unnamed34__ | __unnamed__ | |
struct arm_2d_alpha_samples_2pts_t.__unnamed36__ | __unnamed__ | |
struct arm_2d_alpha_samples_2pts_t.__unnamed38__ | __unnamed__ | |
uint8_t | chAlpha[2] |
union __arm_2d_mem_info_t |
Data Fields | ||
---|---|---|
struct __arm_2d_mem_info_t.__unnamed42__ | __unnamed__ | |
uint32_t | Value | Memory Information. |
struct arm_2d_scratch_mem_t |
scratch memory descriptor
Data Fields | ||
---|---|---|
union arm_2d_scratch_mem_t.__unnamed44__ | __unnamed__ |
< Memory Information < the memory size in Byte the size of the data item the alignment The memory type define in enum arm_2d_mem_type_t |
uintptr_t | pBuffer |
struct __arm_2d_mem_t |
a type for scratch memory blocks
Data Fields | ||
---|---|---|
union __arm_2d_mem_t.__unnamed48__ | __unnamed__ | |
__arm_2d_mem_info_t | tInfo | memory info |
uint8_t | pBuffer[] | a constant pointer points to the buffer following this header |
struct arm_2d_vres_t |
a type for virtual resource
Data Fields | |
arm_2d_tile_t | |
uintptr_t | pTarget |
intptr_t(* | Load )(uintptr_t pTarget, arm_2d_vres_t *ptVRES, arm_2d_region_t *ptRegion) |
a method to load a specific part of an image More... | |
void(* | Depose )(uintptr_t pTarget, arm_2d_vres_t *ptVRES, intptr_t pBuffer) |
a method to despose the buffer More... | |
arm_2d_vres_t::arm_2d_tile_t |
base class: tTile
uintptr_t arm_2d_vres_t::pTarget |
a reference of an user object
intptr_t(* arm_2d_vres_t::Load) (uintptr_t pTarget, arm_2d_vres_t *ptVRES, arm_2d_region_t *ptRegion) |
a method to load a specific part of an image
[in] | pTarget | a reference of an user object |
[in] | ptVRES | a reference of this virtual resource |
[in] | ptRegion | the target region of the image |
void(* arm_2d_vres_t::Depose) (uintptr_t pTarget, arm_2d_vres_t *ptVRES, intptr_t pBuffer) |
a method to despose the buffer
[in] | pTarget | a reference of an user object |
[in] | ptVRES | a reference of this virtual resource |
[in] | pBuffer | the target buffer |
struct arm_2d_task_t |
arm-2d application level task control block
Data Fields | ||
---|---|---|
struct arm_2d_task_t.__unnamed50__ | __unnamed__ |
< a pointer for an internal object < the temporary result of the task the state of the FSM |
struct arm_2d_op_evt_t |
a type for 2D operation event handling
Data Fields | ||
---|---|---|
arm_2d_op_evt_handler_t * | fnHandler | event handler |
void * | pTarget | user attached target |
struct arm_2d_evt_t |
a type for generic event handling
Data Fields | ||
---|---|---|
arm_2d_evt_handler_t * | fnHandler | event handler |
void * | pTarget | user attached target |
union __arm_2d_op_info_t |
A descriptive header for 2D operations.
Data Fields | ||
---|---|---|
struct __arm_2d_op_info_t.Info | Info | operation description |
uint32_t | wID | Operation ID. |
union arm_2d_op_status_t |
a type for 2D operation status
Data Fields | ||
---|---|---|
struct arm_2d_op_status_t.__unnamed70__ | __unnamed__ | |
uint16_t | tValue | the host integer |
struct arm_2d_op_core_t |
the abstract class of 2D operations
Data Fields | ||
---|---|---|
struct arm_2d_op_core_t.__unnamed72__ | __unnamed__ |
< a pointer for a single list < the pointer for the corresponding 2D operation description < acceleration Methods reserved < operation result operation status < operation-complete event < point to semaphore |
uintptr_t | pUserParam | user attached object |
struct arm_2d_op_t |
the base class for operations with only a target tile
Data Fields | ||
---|---|---|
arm_2d_op_core_t | ||
struct arm_2d_op_t.Target | Target |
struct arm_2d_op_msk_t |
the base class for operations with a target tile and a target mask
Data Fields | ||
---|---|---|
arm_2d_op_core_t | ||
struct arm_2d_op_msk_t.Target | Target | |
struct arm_2d_op_msk_t.Mask | Mask |
struct arm_2d_op_src_t |
the base class for operations with a target tile and a source tile
Data Fields | ||
---|---|---|
arm_2d_op_core_t | ||
struct arm_2d_op_src_t.Target | Target | |
struct arm_2d_op_src_t.Source | Source | |
uint32_t | wMode |
struct arm_2d_op_src_msk_t |
the base class for operations with a target tile, a source tile and masks
Data Fields | ||
---|---|---|
arm_2d_op_core_t | ||
struct arm_2d_op_src_msk_t.Target | Target | |
struct arm_2d_op_src_msk_t.Source | Source | |
uint32_t | wMode | |
struct arm_2d_op_src_msk_t.Mask | Mask |
struct arm_2d_op_src_msk_opc_t |
the base class for operations with a target tile, a source tile and masks
Data Fields | ||
---|---|---|
arm_2d_op_core_t | ||
struct arm_2d_op_src_msk_opc_t.Target | Target | |
struct arm_2d_op_src_msk_opc_t.Source | Source | |
uint32_t | wMode | |
struct arm_2d_op_src_msk_opc_t.Mask | Mask | |
uint8_t | chOpacity | opacity |
struct arm_2d_op_src_orig_t |
the base class for operations with a target tile, a dummy tile and a reference to the original source tile
Data Fields | ||
---|---|---|
arm_2d_op_core_t | ||
struct arm_2d_op_src_orig_t.Target | Target | |
struct arm_2d_op_src_orig_t.Source | Source | |
uint32_t | wMode | |
struct arm_2d_op_src_orig_t.Origin | Origin |
struct arm_2d_op_src_orig_msk_t |
the base class for operations with a target tile, a dummy tile, a reference to the original source tile and masks
Data Fields | ||
---|---|---|
arm_2d_op_core_t | ||
struct arm_2d_op_src_orig_msk_t.Target | Target | |
struct arm_2d_op_src_orig_msk_t.Source | Source | |
uint32_t | wMode | |
struct arm_2d_op_src_orig_msk_t.Origin | Origin | |
struct arm_2d_op_src_orig_msk_t.Mask | Mask |
struct arm_2d_rot_linear_regr_t |
struct arm_2d_runtime_feature_t |
a type for arm-2d runtime configuration
Data Fields | ||
---|---|---|
uint8_t | TREAT_OUT_OF_RANGE_AS_COMPLETE: 1 |
if the target region is out of the target tile, return arm_fsm_rt_cpl |
uint8_t | HAS_DEDICATED_THREAD_FOR_2D_TASK: 1 |
indicate that there is a dedicated thread to run arm_2d_task() in RTOS env |
struct arm_2d_version_t |
struct arm_2d_color_rgb565_t.__unnamed5__ |
struct arm_2d_color_bgra8888_t.__unnamed7__ |
struct arm_2d_color_rgb888_t.__unnamed9__ |
struct arm_2d_color_info_t.__unnamed19__ |
struct arm_2d_tile_t.__unnamed23__ |
< is this tile a root tile does this tile contains enforced colour info indicate whether this is a derived resources (when bIsRoot == 0) indicate whether the resource should be loaded on-demand DO NOT USE! indicate whether the tile is considered as the virtual screen, it is used in dirty region calculation Tile Extension ID enforced colour
Data Fields | ||
---|---|---|
uint8_t | bIsRoot: 1 | |
uint8_t | bHasEnforcedColour: 1 | |
uint8_t | bDerivedResource: 1 | |
uint8_t | bVirtualResource: 1 | |
uint8_t | bVirtualScreen: 1 | |
uint8_t | u3ExtensionID: 3 | |
arm_2d_color_info_t | tColourInfo | |
union arm_2d_tile_t.__unnamed23__.Extension | Extension |
union arm_2d_tile_t.__unnamed23__.Extension |
Data Fields | ||
---|---|---|
struct arm_2d_tile_t.__unnamed23__.Extension.PFB | PFB | |
struct arm_2d_tile_t.__unnamed23__.Extension.VRES | VRES |
struct arm_2d_tile_t.__unnamed23__.Extension.PFB |
union arm_2d_tile_t.__unnamed25__ |
Data Fields | ||
---|---|---|
arm_2d_tile_t * | ptParent | a pointer points to the parent tile |
uint8_t * | pchBuffer | a pointer points to a buffer in a 8bit colour type |
uint16_t * | phwBuffer | a pointer points to a buffer in a 16bit colour type |
uint32_t * | pwBuffer | a pointer points to a buffer in a 32bit colour type |
intptr_t | nAddress | a pointer in integer |
struct arm_2d_alpha_samples_4pts_t.__unnamed30__ |
struct arm_2d_alpha_samples_3pts_t.__unnamed32__ |
struct arm_2d_alpha_samples_2pts_t.__unnamed36__ |
Data Fields | ||
---|---|---|
uint8_t | chTopLeft | |
union arm_2d_alpha_samples_2pts_t.__unnamed36__.__unnamed40__ | __unnamed__ |
union arm_2d_alpha_samples_2pts_t.__unnamed36__.__unnamed40__ |
struct __arm_2d_mem_info_t.__unnamed42__ |
union arm_2d_scratch_mem_t.__unnamed44__ |
< Memory Information
< the memory size in Byte the size of the data item the alignment The memory type define in enum arm_2d_mem_type_t
Data Fields | ||
---|---|---|
struct arm_2d_scratch_mem_t.__unnamed44__.__unnamed46__ | __unnamed__ | |
uint32_t | Value |
struct arm_2d_scratch_mem_t.__unnamed44__.__unnamed46__ |
union __arm_2d_mem_t.__unnamed48__ |
Data Fields | ||
---|---|---|
__arm_2d_mem_t * | ptNext | a list pointer |
uint32_t | wSignature | a signature for validation |
struct arm_2d_task_t.__unnamed50__ |
< a pointer for an internal object
< the temporary result of the task the state of the FSM
Data Fields | ||
---|---|---|
arm_fsm_rt_t | tResult | |
uint8_t | chState | |
void * | ptTask |
struct __arm_2d_op_info_t.Info |
Data Fields | ||
---|---|---|
arm_2d_color_info_t | Colour | the colour used in thie operation |
union __arm_2d_op_info_t.Info.Param | Param | operation feature set |
uint8_t | chInClassOffset | some operation uses this as the offset of the key member in the class |
uint8_t | chOpIndex | __ARM_2D_OP_IDX_XXXXXX |
union __arm_2d_op_info_t.Info.LowLevelInterfaceIndex | LowLevelInterfaceIndex | Low level interface index. |
union __arm_2d_op_info_t.Info.LowLevelIO | LowLevelIO | low level IO definition |
union __arm_2d_op_info_t.Info.Param |
Data Fields | ||
---|---|---|
struct __arm_2d_op_info_t.Info.Param.__unnamed56__ | __unnamed__ | |
uint8_t | chValue | feature value |
struct __arm_2d_op_info_t.Info.Param.__unnamed56__ |
union __arm_2d_op_info_t.Info.LowLevelInterfaceIndex |
Data Fields | ||
---|---|---|
struct __arm_2d_op_info_t.Info.LowLevelInterfaceIndex.__unnamed58__ | __unnamed__ | |
struct __arm_2d_op_info_t.Info.LowLevelInterfaceIndex.__unnamed60__ | __unnamed__ | |
struct __arm_2d_op_info_t.Info.LowLevelInterfaceIndex.__unnamed62__ | __unnamed__ |
struct __arm_2d_op_info_t.Info.LowLevelInterfaceIndex.__unnamed58__ |
struct __arm_2d_op_info_t.Info.LowLevelInterfaceIndex.__unnamed60__ |
struct __arm_2d_op_info_t.Info.LowLevelInterfaceIndex.__unnamed62__ |
union __arm_2d_op_info_t.Info.LowLevelIO |
Data Fields | ||
---|---|---|
const __arm_2d_low_level_io_t * | IO[2] | array of IOs |
struct __arm_2d_op_info_t.Info.LowLevelIO.__unnamed64__ | __unnamed__ | |
struct __arm_2d_op_info_t.Info.LowLevelIO.__unnamed66__ | __unnamed__ | |
struct __arm_2d_op_info_t.Info.LowLevelIO.__unnamed68__ | __unnamed__ |
struct __arm_2d_op_info_t.Info.LowLevelIO.__unnamed64__ |
Data Fields | ||
---|---|---|
const __arm_2d_low_level_io_t * | ptCopyLike | the function pointer for a copy-like implementation |
const __arm_2d_low_level_io_t * | ptFillLike | the function pointer for a fill-like implementation |
struct __arm_2d_op_info_t.Info.LowLevelIO.__unnamed66__ |
Data Fields | ||
---|---|---|
const __arm_2d_low_level_io_t * | ptCopyOrigLike | the function pointer for a copy-orig-like implementation |
const __arm_2d_low_level_io_t * | ptFillOrigLike | the function pointer for a fill-orig-like implementation |
struct __arm_2d_op_info_t.Info.LowLevelIO.__unnamed68__ |
Data Fields | ||
---|---|---|
const __arm_2d_low_level_io_t * | ptTileProcessLike | the function pointer for the tile-process-like implementation |
struct arm_2d_op_status_t.__unnamed70__ |
struct arm_2d_op_core_t.__unnamed72__ |
< a pointer for a single list
< the pointer for the corresponding 2D operation description < acceleration Methods reserved < operation result operation status < operation-complete event < point to semaphore
Data Fields | ||
---|---|---|
arm_2d_op_core_t * | ptNext | |
const __arm_2d_op_info_t * | ptOp | |
struct arm_2d_op_core_t.__unnamed72__.Preference | Preference | |
int8_t | tResult | |
volatile arm_2d_op_status_t | Status | |
arm_2d_op_evt_t | evt2DOpCpl |
struct arm_2d_op_t.Target |
Data Fields | ||
---|---|---|
const arm_2d_tile_t * | ptTile | target tile |
const arm_2d_region_t * | ptRegion | target region |
struct arm_2d_op_msk_t.Target |
Data Fields | ||
---|---|---|
const arm_2d_tile_t * | ptTile | target tile |
const arm_2d_region_t * | ptRegion | target region |
struct arm_2d_op_msk_t.Mask |
Data Fields | ||
---|---|---|
const arm_2d_tile_t * | ptTargetSide | target mask tile |
struct arm_2d_op_src_t.Target |
Data Fields | ||
---|---|---|
const arm_2d_tile_t * | ptTile | target tile |
const arm_2d_region_t * | ptRegion | target region |
struct arm_2d_op_src_t.Source |
Data Fields | ||
---|---|---|
const arm_2d_tile_t * | ptTile | source tile |
struct arm_2d_op_src_msk_t.Target |
Data Fields | ||
---|---|---|
const arm_2d_tile_t * | ptTile | target tile |
const arm_2d_region_t * | ptRegion | target region |
struct arm_2d_op_src_msk_t.Source |
Data Fields | ||
---|---|---|
const arm_2d_tile_t * | ptTile | source tile |
struct arm_2d_op_src_msk_t.Mask |
Data Fields | ||
---|---|---|
const arm_2d_tile_t * | ptSourceSide | source side mask |
const arm_2d_tile_t * | ptTargetSide | target side mask |
struct arm_2d_op_src_msk_opc_t.Target |
Data Fields | ||
---|---|---|
const arm_2d_tile_t * | ptTile | target tile |
const arm_2d_region_t * | ptRegion | target region |
struct arm_2d_op_src_msk_opc_t.Source |
Data Fields | ||
---|---|---|
const arm_2d_tile_t * | ptTile | source tile |
struct arm_2d_op_src_msk_opc_t.Mask |
Data Fields | ||
---|---|---|
const arm_2d_tile_t * | ptSourceSide | source side mask |
const arm_2d_tile_t * | ptTargetSide | target side mask |
struct arm_2d_op_src_orig_t.Target |
Data Fields | ||
---|---|---|
const arm_2d_tile_t * | ptTile | target tile |
const arm_2d_region_t * | ptRegion | target region |
struct arm_2d_op_src_orig_t.Source |
Data Fields | ||
---|---|---|
const arm_2d_tile_t * | ptTile | the dummy source tile |
struct arm_2d_op_src_orig_t.Origin |
Data Fields | ||
---|---|---|
const arm_2d_tile_t * | ptTile | the origin tile |
arm_2d_tile_t | tDummySource | the buffer for the source |
struct arm_2d_op_src_orig_msk_t.Target |
Data Fields | ||
---|---|---|
const arm_2d_tile_t * | ptTile | target tile |
const arm_2d_region_t * | ptRegion | target region |
struct arm_2d_op_src_orig_msk_t.Source |
Data Fields | ||
---|---|---|
const arm_2d_tile_t * | ptTile | the dummy source tile |
struct arm_2d_op_src_orig_msk_t.Origin |
Data Fields | ||
---|---|---|
const arm_2d_tile_t * | ptTile | the origin tile |
arm_2d_tile_t | tDummySource | the buffer for the source |
struct arm_2d_op_src_orig_msk_t.Mask |
Data Fields | ||
---|---|---|
const arm_2d_tile_t * | ptOriginSide | origin side mask |
const arm_2d_tile_t * | ptTargetSide | target side mask |
#define __implement_ex | ( | __type, | |
__name | |||
) |
#define __inherit_ex | ( | __type, | |
__name | |||
) | __type __name |
#define __implement | ( | __type | ) |
#define __inherit | ( | __type | ) | __inherit_ex(__type,use_as__##__type) |
#define implement | ( | __type | ) | __implement(__type) |
inherit a given class
__type | the base class, you can use .use_as_xxxxx for referencing the base. |
#define implement_ex | ( | __type, | |
__name | |||
) | __implement_ex(__type, __name) |
inherit a given class and give it an alias name
__type | the base class |
__name | an alias name for referencing the base class |
#define inherit | ( | __type | ) | __inherit(__type) |
inherit a given class
__type | the base class, you can use .use_as_xxxxx for referencing the base. |
#define inherit_ex | ( | __type, | |
__name | |||
) | __inherit_ex(__type, __name) |
inherit a given class and give it an alias name
__type | the base class |
__name | an alias name for referencing the base class |
#define ARM_2D_UNUSED | ( | __VAR | ) | (void)(__VAR) |
a macro to mark unused variables and let the compiler happy
#define ARM_TYPE_CONVERT | ( | __VAR, | |
__TYPE | |||
) | (*((__TYPE *)&(__VAR))) |
convert a given variable to a specified type, the converted result can be used as lvalue.
__VAR | the target variable |
__TYPE | the target type |
#define ARM_TEST_BITS | ( | __VALUE, | |
__BITS | |||
) | ((__BITS) == ((__VALUE) & (__BITS))) |
a macro to test the boolean result for a given value using a given bitmask
[in] | __VALUE | the target value |
[in] | __BITS | a bitmask |
true | all bits in the bitmask is 1 |
false | not all bits in the bitmask is 1 |
#define dimof | ( | __array | ) | (sizeof(__array)/sizeof(__array[0])) |
get the number of items in an given array
#define offsetof | ( | __type, | |
__member | |||
) | ((uintptr_t)&(((__type *)NULL)->__member)) |
get the offset of a given member in a specified structure/union
__type | the host type |
__member | the name of the target member |
#define __ARM_TO_STRING | ( | __STR | ) | #__STR |
#define ARM_TO_STRING | ( | __STR | ) | __ARM_TO_STRING(__STR) |
convert a string to C string
#define __ARM_VA_NUM_ARGS_IMPL | ( | _0, | |
_1, | |||
_2, | |||
_3, | |||
_4, | |||
_5, | |||
_6, | |||
_7, | |||
_8, | |||
_9, | |||
_10, | |||
_11, | |||
_12, | |||
_13, | |||
_14, | |||
_15, | |||
_16, | |||
__N, | |||
... | |||
) | __N |
#define __ARM_VA_NUM_ARGS | ( | ... | ) |
A macro to count the number of parameters.
#define ARM_2D_PARAM | ( | ... | ) | __VA_ARGS__ |
detect whether GNU extension is enabled in compilation or not
a macro helper to be used with ARM_2D_INVODE to improve the readability of the code
#define ARM_2D_INVOKE | ( | __FUNC_PTR, | |
... | |||
) | ((NULL == (__FUNC_PTR)) ? 0 : ((*(__FUNC_PTR))(__VA_ARGS__))) |
A macro to safely invode a function pointer.
[in] | __FUNC_PTR | the target function pointer |
[in] | ... | an optional parameter list |
#define ARM_2D_INVOKE_RT_VOID | ( | __FUNC_PTR, | |
... | |||
) | if (NULL != (__FUNC_PTR)) (*(__FUNC_PTR))(__VA_ARGS__) |
A macro to safely call a function pointer that has no return value.
[in] | __FUNC_PTR | the target function pointer |
[in] | ... | an optional parameter list |
#define __ARM_CONNECT2 | ( | __A, | |
__B | |||
) | __A##__B |
#define __ARM_CONNECT2_ALT | ( | __A, | |
__B | |||
) | __A##__B |
#define __ARM_CONNECT3 | ( | __A, | |
__B, | |||
__C | |||
) | __A##__B##__C |
#define __ARM_CONNECT4 | ( | __A, | |
__B, | |||
__C, | |||
__D | |||
) | __A##__B##__C##__D |
#define __ARM_CONNECT5 | ( | __A, | |
__B, | |||
__C, | |||
__D, | |||
__E | |||
) | __A##__B##__C##__D##__E |
#define __ARM_CONNECT6 | ( | __A, | |
__B, | |||
__C, | |||
__D, | |||
__E, | |||
__F | |||
) | __A##__B##__C##__D##__E##__F |
#define __ARM_CONNECT7 | ( | __A, | |
__B, | |||
__C, | |||
__D, | |||
__E, | |||
__F, | |||
__G | |||
) | __A##__B##__C##__D##__E##__F##__G |
#define __ARM_CONNECT8 | ( | __A, | |
__B, | |||
__C, | |||
__D, | |||
__E, | |||
__F, | |||
__G, | |||
__H | |||
) | __A##__B##__C##__D##__E##__F##__G##__H |
#define __ARM_CONNECT9 | ( | __A, | |
__B, | |||
__C, | |||
__D, | |||
__E, | |||
__F, | |||
__G, | |||
__H, | |||
__I | |||
) | __A##__B##__C##__D##__E##__F##__G##__H##__I |
#define ARM_CONNECT2 | ( | __A, | |
__B | |||
) | __ARM_CONNECT2(__A, __B) |
connect two symbol names as one
#define ARM_CONNECT2_ALT | ( | __A, | |
__B | |||
) | __ARM_CONNECT2_ALT(__A, __B) |
connect two symbol names as one
#define ARM_CONNECT3 | ( | __A, | |
__B, | |||
__C | |||
) | __ARM_CONNECT3(__A, __B, __C) |
connect three symbol names as one
#define ARM_CONNECT4 | ( | __A, | |
__B, | |||
__C, | |||
__D | |||
) | __ARM_CONNECT4(__A, __B, __C, __D) |
connect four symbol names as one
#define ARM_CONNECT5 | ( | __A, | |
__B, | |||
__C, | |||
__D, | |||
__E | |||
) | __ARM_CONNECT5(__A, __B, __C, __D, __E) |
connect five symbol names as one
#define ARM_CONNECT6 | ( | __A, | |
__B, | |||
__C, | |||
__D, | |||
__E, | |||
__F | |||
) | __ARM_CONNECT6(__A, __B, __C, __D, __E, __F) |
connect six symbol names as one
#define ARM_CONNECT7 | ( | __A, | |
__B, | |||
__C, | |||
__D, | |||
__E, | |||
__F, | |||
__G | |||
) | __ARM_CONNECT7(__A, __B, __C, __D, __E, __F, __G) |
connect seven symbol names as one
#define ARM_CONNECT8 | ( | __A, | |
__B, | |||
__C, | |||
__D, | |||
__E, | |||
__F, | |||
__G, | |||
__H | |||
) | __ARM_CONNECT8(__A, __B, __C, __D, __E, __F, __G, __H) |
connect eight symbol names as one
#define ARM_CONNECT9 | ( | __A, | |
__B, | |||
__C, | |||
__D, | |||
__E, | |||
__F, | |||
__G, | |||
__H, | |||
__I | |||
) | __ARM_CONNECT9(__A, __B, __C, __D, __E, __F, __G, __H, __I) |
connect nine symbol names as one
#define arm_connect | ( | ... | ) |
connect up to 9 symbol names as one
#define ARM_CONNECT | ( | ... | ) | arm_connect(__VA_ARGS__) |
connect up to 9 symbol names as one
#define __ARM_USING1 | ( | __declare | ) |
#define __ARM_USING2 | ( | __declare, | |
__on_leave_expr | |||
) |
#define __ARM_USING3 | ( | __declare, | |
__on_enter_expr, | |||
__on_leave_expr | |||
) |
#define __ARM_USING4 | ( | __dcl1, | |
__dcl2, | |||
__on_enter_expr, | |||
__on_leave_expr | |||
) |
#define arm_using | ( | ... | ) | ARM_CONNECT2(__ARM_USING, __ARM_VA_NUM_ARGS(__VA_ARGS__))(__VA_ARGS__) |
create a code segment with up to two local variables and entering/leaving operations
#define __ARM_WITH2 | ( | __type, | |
__addr | |||
) | arm_using(__type *_=(__addr)) |
#define __ARM_WITH3 | ( | __type, | |
__addr, | |||
__item | |||
) | arm_using(__type *_=(__addr), *__item = _, (void)_, (void)0) |
#define arm_with | ( | ... | ) | ARM_CONNECT2(__ARM_WITH, __ARM_VA_NUM_ARGS(__VA_ARGS__))(__VA_ARGS__) |
a with block to access members of a given object
#define ARM_FOREACH2 | ( | __type, | |
__array | |||
) |
access each items in a given array
__type | the type of the array |
__array | the target array |
#define ARM_FOREACH3 | ( | __type, | |
__array, | |||
__item | |||
) |
access each items in a given array
__type | the type of the array |
__array | the target array |
__item | a name for the current item (iterator) |
#define ARM_FOREACH4 | ( | __type, | |
__array, | |||
__count, | |||
__item | |||
) |
access each items in a given array
__type | the type of the array |
__array | the target array or the pointer of an memory block |
__count | number of items in the array/memory block |
__item | a name for the current item (iterator) |
#define arm_foreach | ( | ... | ) | ARM_CONNECT2(ARM_FOREACH, __ARM_VA_NUM_ARGS(__VA_ARGS__))(__VA_ARGS__) |
access each items in a given array
#define __ARM_SECTION | ( | __X | ) | __attribute__((section(__X))) |
a wrapper for attribute((nonnull))
#define ARM_SECTION | ( | __X | ) | __ARM_SECTION(__X) |
an attribute to specify the section
#define ARM_NOINIT |
an attribute for static variables that no initialisation is required in the C startup process.
#define __ARM_ALIGN | ( | __N | ) | __attribute__((aligned(__N))) |
#define ARM_ALIGN | ( | __N | ) | __ARM_ALIGN(__N) |
an attribute to specify aligment requirement
#define __RESTRICT __restrict |
local variable decoration for pointers: restrict
#define __OVERRIDE_WEAK |
an decoration for claiming that the immediate following symbol (variable / function) is not WEAK. If there is an __WEAK symbol, the __OVERRIDE_WEAK one can override it.
#define ARM_2D_SAFE_NAME | ( | ... | ) | ARM_CONNECT(__,__LINE__,##__VA_ARGS__) |
A macro to generate a safe name, usually used in macro template as the name of local variables.
#define arm_2d_safe_name | ( | ... | ) | ARM_2D_SAFE_NAME(__VA_ARGS__) |
A macro to generate a safe name, usually used in macro template as the name of local variables.
#define __ARM_2D_WRAP_FUNC | ( | x | ) | __wrap_ ## x |
a decoration to make the immediate following code irq-safe
#define __ARM_2D_ORIG_FUNC | ( | x | ) | __real_ ## x |
#define ARM_2D_WRAP_FUNC | ( | __FUNC | ) | __ARM_2D_WRAP_FUNC(__FUNC) |
a symbol wrapper to override a specified function
#define ARM_2D_ORIG_FUNC | ( | __FUNC | ) | __ARM_2D_ORIG_FUNC(__FUNC) |
a symbol wrapper to refer the original function with a given name
#define __ARM_LIST_STACK_PUSH | ( | __P_TOP, | |
__P_NODE | |||
) |
#define ARM_LIST_STACK_PUSH | ( | __P_TOP, | |
__P_NODE | |||
) | __ARM_LIST_STACK_PUSH((__P_TOP), (__P_NODE)) |
push a item to a list
[in] | __P_TOP | a pointer points to the first item of a list |
[in] | __P_NODE | a pointer points to the new item |
#define ARM_LIST_INSERT_AFTER | ( | __P_TARGET, | |
__P_NODE | |||
) | __ARM_LIST_STACK_PUSH((__P_TARGET), (__P_NODE)) |
insert a item after a specified node
[in] | __P_TARGET | a pointer points to the target node |
[in] | __P_NODE | a pointer points to the new item |
#define __ARM_LIST_STACK_POP | ( | __P_TOP, | |
__P_NODE | |||
) |
#define ARM_LIST_STACK_POP | ( | __P_TOP, | |
__P_NODE | |||
) | __ARM_LIST_STACK_POP((__P_TOP), (__P_NODE)) |
pop a item from a list
[in] | __P_TOP | a pointer points to the first item of a list |
[out] | __P_NODE | a pointer variable for the node |
#define ARM_LIST_REMOVE_AFTER | ( | __P_TARGET, | |
__P_NODE | |||
) | ARM_LIST_STACK_POP((__P_TARGET), (__P_NODE)) |
remove a item after a specified node
[in] | __P_TARGET | a pointer points to the target node |
[out] | __P_NODE | a pointer variable for the node |
#define __ARM_LIST_QUEUE_ENQUEUE | ( | __HEAD, | |
__TAIL, | |||
__ITEM | |||
) |
#define ARM_LIST_QUEUE_ENQUEUE | ( | __HEAD, | |
__TAIL, | |||
__ITEM | |||
) | __ARM_LIST_QUEUE_ENQUEUE((__HEAD), (__TAIL), (__ITEM)) |
enter a node to a queue
[in] | __HEAD | a pointer points to the queue head |
[in] | __TAIL | a pointer points to the queue tail |
[in] | __ITEM | a pointer variable for the new node |
#define __ARM_LIST_QUEUE_DEQUEUE | ( | __HEAD, | |
__TAIL, | |||
__ITEM | |||
) |
#define ARM_LIST_QUEUE_DEQUEUE | ( | __HEAD, | |
__TAIL, | |||
__ITEM | |||
) | __ARM_LIST_QUEUE_DEQUEUE((__HEAD), (__TAIL), (__ITEM)) |
fetch a node from a queue
[in] | __HEAD | a pointer points to the queue head |
[in] | __TAIL | a pointer points to the queue tail |
[out] | __ITEM | a pointer variable for the node |
#define __ARM_LIST_QUEUE_PEEK | ( | __HEAD, | |
__TAIL, | |||
__ITEM | |||
) |
#define ARM_LIST_QUEUE_PEEK | ( | __HEAD, | |
__TAIL, | |||
__ITEM | |||
) | __ARM_LIST_QUEUE_PEEK((__HEAD), (__TAIL), (__ITEM)) \ |
peek a node from a queue
[in] | __HEAD | a pointer points to the queue head |
[in] | __TAIL | a pointer points to the queue tail |
[out] | __ITEM | a pointer variable for the node |
#define __ARM_LIST_QUEUE_IS_EMPTY | ( | __HEAD, | |
__TAIL | |||
) | ((__HEAD) == NULL) |
#define ARM_LIST_QUEUE_IS_EMPTY | ( | __HEAD, | |
__TAIL | |||
) | __ARM_LIST_QUEUE_IS_EMPTY((__HEAD), (__TAIL)) |
check whether a list FIFO is empty or not
[in] | __HEAD | a pointer points to the queue head |
[in] | __TAIL | a pointer points to the queue tail |
true | the list FIFO is empty |
false | the list FIFO is not empty |
#define ARM_PT_BEGIN | ( | __STATE | ) |
#define ARM_PT_ENTRY | ( | ... | ) |
#define ARM_PT_END | ( | ) |
#define ARM_PT_WAIT_UNTIL | ( | __CONDITION, | |
... | |||
) |
#define ARM_PT_WAIT_OBJ_UNTIL | ( | __CONDITION, | |
... | |||
) |
#define ARM_PT_WAIT_RESOURCE_UNTIL | ( | __CONDITION, | |
... | |||
) |
#define ARM_PT_DELAY_MS | ( | __MS, | |
... | |||
) |
#define ARM_PT_REPORT_STATUS | ( | ... | ) |
#define ARM_PT_RETURN | ( | ... | ) |
#define __def_low_lv_io | ( | __NAME, | |
__SW, | |||
... | |||
) |
#define __ref_low_lv_io | ( | __NAME | ) | &LOW_LEVEL_IO##__NAME |
#define ref_low_lv_io | ( | __NAME | ) | __ref_low_lv_io(__NAME) |
a symbol wrapper for referencing a specified low-level IO
#define ARM_2D_LOG_CHN_TYPE_USER _BV(28) |
the bit-mask for log channels
the channel for user messages
#define ARM_2D_LOG_CHN_TYPE_INFO _BV(29) |
the channel for generic information
#define ARM_2D_LOG_CHN_TYPE_WARNING _BV(30) |
the channel for warnings messages
#define ARM_2D_LOG_CHN_TYPE_ERROR _BV(31) |
the channel for error messages
#define ARM_2D_LOG_CHN_PIPELINE _BV(0) |
the channel dedicated to the pixel-pipeline
#define ARM_2D_LOG_CHN_OPCODE _BV(1) |
the channel dedicated to OPCODEs and related algorithms
#define ARM_2D_LOG_CHN_HELPER _BV(2) |
the channel dedicated to Helper services
#define ARM_2D_LOG_CHN_HELPER_PFB _BV(3) |
the channel dedicated to the PFB helper service
#define ARM_2D_LOG_CHN_SCENE_PLAYER _BV(4) |
the channel dedicated to the scene player service
#define ARM_2D_LOG_CHN_DIRTY_REGION_OPTIMISATION _BV(5) |
the channel dedicated to the dirty region optimization services
#define ARM_2D_LOG_CHN_STATISTICS _BV(6) |
the channel dedicated to show statistics
#define ARM_2D_LOG_CHN_CONTROLS _BV(7) |
the channel dedicated to example controls
#define ARM_2D_LOG_CHN_GUI_STACK _BV(16) |
the channel dedicated to USER defined GUI stack
#define ARM_2D_LOG_CHN_APP _BV(24) |
the channel dedicated to applications and examples
#define __ARM_2D_LOG_CHANNEL_MASK_FILTER__ 0xFFFFFFFF |
the filter to enable log channels
#define __ARM_2D_LOG_PRINTF_PIPELINE __arm_2d_log_printf |
the log printf entry dedicated to pixel pipeline
#define __ARM_2D_LOG_PRINTF_OPCODE __arm_2d_log_printf |
the log printf entry dedicated to OPCODEs and related algorithms
#define __ARM_2D_LOG_PRINTF_HELPER __arm_2d_log_printf |
the log printf entry dedicated to Helper services
#define __ARM_2D_LOG_PRINTF_HELPER_PFB __arm_2d_log_printf |
the log printf entry dedicated to the PFB helper service
#define __ARM_2D_LOG_PRINTF_SCENE_PLAYER __arm_2d_log_printf |
the log printf entry dedicated to the scene player service
#define __ARM_2D_LOG_PRINTF_DIRTY_REGION_OPTIMISATION __arm_2d_log_printf |
the log printf entry dedicated to the dirty region optimization service
#define __ARM_2D_LOG_PRINTF_STATISTICS __arm_2d_log_printf |
the log printf entry dedicated to show statistics
#define __ARM_2D_LOG_PRINTF_CONTROLS __arm_2d_log_printf |
the log printf entry dedicated to example controls
#define __ARM_2D_LOG_PRINTF_GUI_STACK __arm_2d_log_printf |
the log printf entry dedicated to applications and examples
#define __ARM_2D_LOG_PRINTF_APP __arm_2d_log_printf |
the log printf entry dedicated to applications and examples
#define __ARM_2D_PORT_PRINTF__ | ( | __format, | |
... | |||
) | printf((__format), ##__VA_ARGS__) |
the low level entry for printf
#define __ARM_2D_LOG_MAX_STRING_LEN__ 256 |
the maximum allowed string length. The log service requests the specified number of bytes for storing string. default value is 256
#define ARM_2D_M_COLOUR_SZ_1BIT 0 |
1 bit:black and white
#define ARM_2D_M_COLOUR_SZ_2BIT 1 |
4 colours or 4 gray-levels
#define ARM_2D_M_COLOUR_SZ_4BIT 2 |
16 colours or 16 gray-levels
#define ARM_2D_M_COLOUR_SZ_8BIT 3 |
256 colours
#define ARM_2D_M_COLOUR_SZ_16BIT 4 |
16bits
#define ARM_2D_M_COLOUR_SZ_32BIT 5 |
true colour
#define ARM_2D_M_COLOUR_SZ_24BIT 6 |
true colour
#define ARM_2D_M_COLOUR_SZ_1BIT_msk (ARM_2D_M_COLOUR_SZ_1BIT << 1) |
bitmask for 1bit colour formats
#define ARM_2D_M_COLOUR_SZ_2BIT_msk (ARM_2D_M_COLOUR_SZ_2BIT << 1) |
bitmask for 2bit colour formats
#define ARM_2D_M_COLOUR_SZ_4BIT_msk (ARM_2D_M_COLOUR_SZ_4BIT << 1) |
bitmask for 4bit colour formats
#define ARM_2D_M_COLOUR_SZ_8BIT_msk (ARM_2D_M_COLOUR_SZ_8BIT << 1) |
bitmask for 8bit colour formats
#define ARM_2D_M_COLOUR_SZ_16BIT_msk (ARM_2D_M_COLOUR_SZ_16BIT<< 1) |
bitmask for 16bit colour formats
#define ARM_2D_M_COLOUR_SZ_32BIT_msk (ARM_2D_M_COLOUR_SZ_32BIT<< 1) |
bitmask for 32bit colour formats
#define ARM_2D_M_COLOUR_SZ_24BIT_msk (ARM_2D_M_COLOUR_SZ_24BIT<< 1) |
bitmask for 24bit colour formats
#define ARM_2D_M_COLOUR_SZ_msk (0x07 << 1), |
bitmask for the SZ bitfield
#define ARM_2D_M_COLOUR_LITTLE_ENDIAN 0 |
pixels are stored in little endian
#define ARM_2D_M_COLOUR_BIG_ENDIAN 1 |
pixels are stored big endian
#define ARM_2D_M_COLOUR_LITTLE_ENDIAN_msk (ARM_2D_M_COLOUR_LITTLE_ENDIAN << 4) |
bitmask for little-endian
#define ARM_2D_M_COLOUR_BIG_ENDIAN_msk (ARM_2D_M_COLOUR_BIG_ENDIAN << 4) |
bitmask for big-endian
#define ARM_2D_M_COLOUR_NO_ALPHA 0 |
there is no alpha channel in each pixel
#define ARM_2D_M_COLOUR_HAS_ALPHA 1 |
there is an alpha channel in each pixel
#define ARM_2D_M_COLOUR_NO_ALPHA_msk (ARM_2D_M_COLOUR_NO_ALPHA << 0) |
bitmask for no-alpha-channel-in-pixel
#define ARM_2D_M_COLOUR_HAS_ALPHA_msk (ARM_2D_M_COLOUR_HAS_ALPHA << 0) |
bitmask for has-alpha-channel-in-pixel
#define ARM_2D_M_COLOUR_VARIANT_pos 5 |
offset for the VARIANT bitfield
#define ARM_2D_M_COLOUR_VARIANT_msk (0x07<<ARM_2D_M_COLOUR_VARIANT_pos) |
bitmask for the VARIANT bitfield
#define ARM_2D_M_COLOUR_MONOCHROME ARM_2D_M_COLOUR_SZ_1BIT_msk |
macro for the monochrome
#define ARM_2D_M_COLOUR_BIN ARM_2D_M_COLOUR_SZ_1BIT_msk |
macro for the 1bit colour format (alias)
#define ARM_2D_M_COLOUR_1BIT ARM_2D_M_COLOUR_SZ_1BIT_msk |
macro for the 1bin colour format (alias)
#define ARM_2D_M_COLOUR_MASK_A1 ARM_2D_M_COLOUR_SZ_1BIT_msk |
macro for the 1bit alpha mask
#define ARM_2D_M_COLOUR_MASK_A2 ARM_2D_M_COLOUR_SZ_2BIT_msk |
macro for the 2bit alpha mask
#define ARM_2D_M_COLOUR_MASK_A4 ARM_2D_M_COLOUR_SZ_4BIT_msk |
macro for the 4bit alpha mask
#define ARM_2D_M_COLOUR_8BIT ARM_2D_M_COLOUR_SZ_8BIT_msk |
macro for the generic 8bit colour formats
#define ARM_2D_M_COLOUR_GRAY8 ARM_2D_M_COLOUR_SZ_8BIT_msk |
macro for the gray8 colour format
#define ARM_2D_M_COLOUR_MASK_A8 ARM_2D_M_COLOUR_SZ_8BIT_msk |
macro for the 8bit alpha mask
#define ARM_2D_M_COLOUR_16BIT ARM_2D_M_COLOUR_SZ_16BIT_msk |
macro for the generic 16bit colour formats
#define ARM_2D_M_COLOUR_RGB16 ARM_2D_M_COLOUR_SZ_16BIT_msk |
macro for the generic 16bit colour formats
#define ARM_2D_M_COLOUR_RGB565 ARM_2D_M_COLOUR_RGB16 |
macro for the rgb565
#define ARM_2D_M_COLOUR_24BIT ARM_2D_M_COLOUR_SZ_24BIT_msk |
macro for the generic 24bit colour formats
#define ARM_2D_M_COLOUR_RGB24 ARM_2D_M_COLOUR_SZ_24BIT_msk |
macro for the generic 24bit colour formats
#define ARM_2D_M_COLOUR_32BIT ARM_2D_M_COLOUR_SZ_32BIT_msk |
macro for the generic 32bit colour formats
#define ARM_2D_M_COLOUR_RGB32 ARM_2D_M_COLOUR_SZ_32BIT_msk |
macro for the generic 32bit colour formats
#define ARM_2D_M_COLOUR_CCCN888 ARM_2D_M_COLOUR_RGB32 |
macro for the generic 32bit colour formats with an reserved channel at the highest byte
#define ARM_2D_M_COLOUR_CCCA8888 |
macro for the generic 32bit colour formats with an alpha channel at the highest byte
#define ARM_2D_M_COLOUR_RGBX888 ARM_2D_M_COLOUR_CCCN888 |
macro for the RGB888 (BGRN8888)
#define ARM_2D_M_COLOUR_BGRA8888 ARM_2D_M_COLOUR_CCCA8888 |
macro for the BGRA8888
#define ARM_2D_M_CHANNEL_8in32 |
macro for a special colour format which access only one channel in RGB32
#define ARM_2D_OP_INFO_PARAM_HAS_SOURCE _BV(0) |
opcode has source tile info
#define ARM_2D_OP_INFO_PARAM_HAS_TARGET _BV(1) |
opcode has target tile info
#define ARM_2D_OP_INFO_PARAM_HAS_SOURCE_MASK _BV(2) |
opcode has source mask info
#define ARM_2D_OP_INFO_PARAM_HAS_TARGET_MASK _BV(3) |
opcode has target mask info
#define ARM_2D_OP_INFO_PARAM_HAS_ORIGIN _BV(4) |
opcode has original tile info
#define ARM_2D_OP_INFO_PARAM_TILES_MASK |
a bitmask for INFO_PARAM_HAS_xxxx bitfields
#define __ARM_2D_OP_STATUS_BUSY_msk (1 << 4) |
bitmask for the busy flag
#define __ARM_2D_OP_STATUS_IO_ERROR_msk (1 << 5) |
bitmask for the IO error flag
#define __ARM_2D_OP_STATUS_CPL_msk (1 << 6) |
bitmask for the complete flag
#define __ARM_2D_HAS_HELIUM__ 0 |
target MCU has no Helium extension
#define __ARM_2D_HAS_HELIUM_INTEGER__ 0 |
target MCU has no Helium integer extension
#define __ARM_2D_HAS_HELIUM_FLOAT__ 0 |
target MCU has no Helium floating point extension
#define __ARM_2D_HAS_ACI__ 0 |
target MCU has no ACI implementation
#define __ARM_2D_HAS_TIGHTLY_COUPLED_ACC__ 0 |
target MCU has no tightly coupled acceleration (other than ACI)
#define __ARM_2D_HAS_HW_ACC__ 0 |
target MCU has no dedicated hardware (async) acceleration
#define __ARM_2D_HAS_ASYNC__ 1 |
enable asynchronous mode (enable pipeline)
#define __ARM_2D_CFG_DEFAULT_SUB_TASK_POOL_SIZE__ 4 |
default pool size for sub-tasks
#define __ARM_2D_HAS_FPU__ 0 |
target MCU has no FPU
#define __ARM_2D_HAS_DSP__ 0 |
target MCU has no DSP extension
#define __ARM_2D_HAS_ANTI_ALIAS_TRANSFORM__ 0 |
disable the anti-alias support in transform operations
#define __ARM_2D_CFG_FORCED_FIXED_POINT_TRANSFORM__ 1 |
use fixed point numbers in transform operations
#define __ARM_2D_CFG_SUPPORT_COLOUR_CHANNEL_ACCESS__ 1 |
enable the support for CCCA8888
#define ARM_2D_VERSION_MAJOR 1 |
Major version.
#define ARM_2D_VERSION_MINOR 2 |
Minor version.
#define ARM_2D_VERSION_PATCH 1 |
Patch number.
#define ARM_2D_VERSION_STR "dev" |
tag
#define ARM_2D_VERSION |
arm-2d version number in decimal
#define ARM_2D_OP_WAIT_ASYNC | ( | ... | ) | arm_2d_op_wait_async((arm_2d_op_core_t *)(NULL,##__VA_ARGS__)) |
wait asynchronous operation complete
[in] | ... | [OPTIONAL] the address of the target OP (NULL or ignore means using the default OP) |
true | sync up with operation |
false | operation is busy |
typedef bool arm_2d_op_evt_handler_t(arm_2d_op_core_t *ptThisOP, arm_fsm_rt_t tResult, void *pTarget) |
a prototype of event handlers for 2D operations
[in] | ptThisOP | the target 2D operation descriptor |
[in] | tResult | the operation result |
[in] | pTarget | A user attached object |
typedef bool arm_2d_evt_handler_t(void *pTarget) |
a prototype for generic event handlers
pTarget | A user attached object |
typedef struct __arm_2d_low_level_io_t __arm_2d_low_level_io_t |
an incomplete defintion which is only used for defining pointers
enum arm_fsm_rt_t |
finite-state-machine status return (Compatible with arm_status, minimal integer: int8_t)
enum arm_2d_err_t |
the error code for arm-2d (minimal integer: int8_t)
enum arm_2d_cmp_t |
anonymous enum |
enumerations for colour attributes
anonymous enum |
enumerations for colour types
anonymous enum |
enum arm_2d_align_t |
alignment
enum arm_2d_mem_type_t |
anonymous enum |
how would you want to accelerate the 2d-operation
void __arm_2d_log_printf | ( | int32_t | nIndentLevel, |
uint32_t | wChannelMask, | ||
const char * | pchPrefix, | ||
const char * | pchFormatString, | ||
... | |||
) |
an entry for log printf
[in] | nIndentLevel | number of indents before print actual content |
[in] | wChannelMask | a bit-mask to indicate the log channel |
[in] | pchPrefix | a string used as prefix, we can use it to print content like function name, service name etc. |
[in] | pchFormatString | the format string used in printf |
[in] | ... | the optional parameters |
void arm_2d_init | ( | void | ) |
initialise arm-2d
arm_2d_tile_t * arm_2d_set_default_frame_buffer | ( | const arm_2d_tile_t * | ptFrameBuffer | ) |
set the default frame buffer
ptFrameBuffer | the new frame buffer, |
arm_2d_tile_t * arm_2d_get_default_frame_buffer | ( | void | ) |
get the default frame buffer
void arm_2d_set_user_param | ( | arm_2d_op_core_t * | ptOP, |
uintptr_t | pUserParam | ||
) |
attach a user param (which could be a pointer) to specified OP
ptOP | the address of the target OP (NULL means using the default OP) |
pUserParam | a user parameter (it can be used as a pointer) |
arm_2d_op_core_t * arm_2d_op_init | ( | arm_2d_op_core_t * | ptOP, |
size_t | tSize | ||
) |
initialize an given opcode
ptOP | the address of the target OP |
tSize | the size of the opcode object |
arm_2d_op_core_t * arm_2d_op_depose | ( | arm_2d_op_core_t * | ptOP, |
size_t | tSize | ||
) |
depose an given opcode
ptOP | the address of the target OP |
tSize | the size of the opcode object |
void arm_2d_op_attach_semaphore | ( | arm_2d_op_core_t * | ptOP, |
uintptr_t | pSemaphore | ||
) |
attach a semaphore (which could be a pointer) to specified OP
ptOP | the address of the target OP (NULL means using the default OP) |
pSemaphore | a pointer points to a RTOS semaphore |
uintptr_t arm_2d_op_get_semaphore | ( | arm_2d_op_core_t * | ptOP | ) |
get the attached semaphore (which could be a pointer) from specified OP
ptOP | the address of the target OP (NULL means using the default OP) |
bool arm_2d_op_wait_async | ( | arm_2d_op_core_t * | ptOP | ) |
wait asynchronous operation complete
[in] | ptOP | the address of the target OP (NULL means using the default OP) |
true | sync up with operation |
false | operation is busy |
arm_2d_op_status_t arm_2d_get_op_status | ( | arm_2d_op_core_t * | ptOP | ) |
get the status of a specified OP,
usually, it is used after calling arm_2d_op_wait_async(). E.g.
ptOP | the address of the target OP (NULL means using the default OP) |
arm_fsm_rt_t arm_2d_task | ( | arm_2d_task_t * | ptTask | ) |
arm-2d pixel pipeline task entery
ptTask | the address of an arm-2d task control block |
arm_fsm_rt_cpl | The sub-task FIFO is empty, the caller can wait for a semaphore set by arm_2d_notif_sub_task_fifo_task_arrive() |
arm_fsm_rt_on_going | The arm_2d_task yields |
arm_fsm_rt_async | You shouldn't see this value |
arm_fsm_rt_wait_for_obj | hardware accelerator wants to sync-up with applications. |
(<0) | Serious error is detected. |
void * __arm_2d_allocate_scratch_memory | ( | uint32_t | wSize, |
uint_fast8_t | nAlign, | ||
arm_2d_mem_type_t | tType | ||
) |
allocate a memory block with specified memory type
wSize | the minimal size |
nAlign | the alignment |
tType | the type of memory |
void __arm_2d_free_scratch_memory | ( | arm_2d_mem_type_t | tType, |
void * | pBuff | ||
) |
free a specified memory block
tType | the type of memory |
pBuff | the address of the memory |
arm_2d_scratch_mem_t * arm_2d_scratch_memory_new | ( | arm_2d_scratch_mem_t * | ptMemory, |
uint16_t | hwItemSize, | ||
uint16_t | hwItemCount, | ||
uint16_t | hwAlignment, | ||
arm_2d_mem_type_t | tType | ||
) |
allocate a scratch memory and initialize arm_2d_scratch_mem_t object
[out] | ptMemory | the address of an arm_2d_scratch_mem_t object to hold the result |
[in] | hwItemSize | the size of each item |
[in] | hwItemCount | the number of items |
[in] | hwAlignment | the alignment requirement |
[in] | tType | the type of memory |
arm_2d_scratch_mem_t * arm_2d_scratch_memory_free | ( | arm_2d_scratch_mem_t * | ptMemory | ) |
free a scratch memory with a given scratch memory descriptor object
[in] | the | target scratch memory descriptor |
|
extern |
arm-2d runtime feature configuration
|
extern |
arm-2d version