Arm-2D  
2D Image Processing Library for Cortex-M Processors
1 Kernel

Data Structures

struct  __arm_slist_node_t
 a type for generic list More...
 
struct  arm_2d_color_gray8_t
 the colour type for gray8 (8bit gray scale) More...
 
union  arm_2d_color_rgb565_t
 the colour type for rgb565 More...
 
union  arm_2d_color_bgra8888_t
 the colour type for brga8888 More...
 
union  arm_2d_color_rgb888_t
 the colour type for rgb888 (compliant with ccca888 and bgra8888) More...
 
union  arm_2d_color_ccca8888_t
 the colour type for any 32bit colour formats which has an alpha channel on its 3rd byte. More...
 
union  arm_2d_color_accc8888_t
 the colour type for any 32bit colour formats which has an alpha channel on its first byte. More...
 
union  arm_2d_color_cccn888_t
 the colour type for any 32bit colour formats which has an unused-alpha channel on its 3rd byte. More...
 
union  arm_2d_color_nccc888_t
 the colour type for any 32bit colour formats which has an unused-alpha channel on its first byte. More...
 
union  arm_2d_colour_t
 the generic type to hold a colour More...
 
union  arm_2d_color_info_t
 a type used as colour descriptor More...
 
struct  arm_2d_location_t
 a type for coordinates (integer) More...
 
struct  arm_2d_point_float_t
 a type for coordinates in floating point More...
 
struct  arm_2d_point_fx_t
 a type for coordinates in fixed point More...
 
struct  arm_2d_size_t
 a type for the size of an rectangular area More...
 
struct  arm_2d_region_t
 a type for an rectangular area More...
 
struct  arm_2d_tile_t
 a type for tile More...
 
struct  arm_2d_margin_t
 the margin inside a region / container More...
 
struct  arm_2d_padding_t
 the padding between rectanglar areas More...
 
union  arm_2d_alpha_samples_4pts_t
 type for 4 points alpha sample points More...
 
union  arm_2d_alpha_samples_3pts_t
 type for 3 points alpha sample points More...
 
union  arm_2d_alpha_samples_2pts_t
 type for 2 points alpha sample points More...
 
union  __arm_2d_mem_info_t
 
struct  arm_2d_scratch_mem_t
 scratch memory descriptor More...
 
struct  __arm_2d_mem_t
 a type for scratch memory blocks More...
 
struct  arm_2d_vres_t
 a type for virtual resource More...
 
struct  arm_2d_task_t
 arm-2d application level task control block More...
 
struct  arm_2d_op_evt_t
 a type for 2D operation event handling More...
 
struct  arm_2d_evt_t
 a type for generic event handling More...
 
union  __arm_2d_op_info_t
 A descriptive header for 2D operations. More...
 
union  arm_2d_op_status_t
 a type for 2D operation status More...
 
struct  arm_2d_op_core_t
 the abstract class of 2D operations More...
 
struct  arm_2d_op_t
 the base class for operations with only a target tile More...
 
struct  arm_2d_op_msk_t
 the base class for operations with a target tile and a target mask More...
 
struct  arm_2d_op_src_t
 the base class for operations with a target tile and a source tile More...
 
struct  arm_2d_op_src_msk_t
 the base class for operations with a target tile, a source tile and masks More...
 
struct  arm_2d_op_src_msk_opc_t
 the base class for operations with a target tile, a source tile and masks More...
 
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 More...
 
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 More...
 
struct  arm_2d_rot_linear_regr_t
 a type for parameters of linear interpolation (in fixed point) More...
 
struct  arm_2d_runtime_feature_t
 a type for arm-2d runtime configuration More...
 
struct  arm_2d_version_t
 a type for arm-2d version More...
 
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_ccca8888_t.__unnamed11__
 
struct  arm_2d_color_accc8888_t.__unnamed13__
 
struct  arm_2d_color_cccn888_t.__unnamed15__
 
struct  arm_2d_color_nccc888_t.__unnamed17__
 
struct  arm_2d_color_info_t.__unnamed19__
 
struct  arm_2d_color_info_t.__unnamed21__
 
struct  arm_2d_tile_t.__unnamed23__
 
union  arm_2d_tile_t.__unnamed23__.Extension
 
struct  arm_2d_tile_t.__unnamed23__.Extension.PFB
 
struct  arm_2d_tile_t.__unnamed23__.Extension.VRES
 
union  arm_2d_tile_t.__unnamed25__
 
struct  arm_2d_alpha_samples_4pts_t.__unnamed30__
 
struct  arm_2d_alpha_samples_3pts_t.__unnamed32__
 
struct  arm_2d_alpha_samples_2pts_t.__unnamed34__
 
struct  arm_2d_alpha_samples_2pts_t.__unnamed36__
 
union  arm_2d_alpha_samples_2pts_t.__unnamed36__.__unnamed40__
 
struct  arm_2d_alpha_samples_2pts_t.__unnamed38__
 
struct  __arm_2d_mem_info_t.__unnamed42__
 
union  arm_2d_scratch_mem_t.__unnamed44__
 < Memory Information More...
 
struct  arm_2d_scratch_mem_t.__unnamed44__.__unnamed46__
 
union  __arm_2d_mem_t.__unnamed48__
 
struct  arm_2d_task_t.__unnamed50__
 < a pointer for an internal object More...
 
struct  __arm_2d_op_info_t.Info
 
union  __arm_2d_op_info_t.Info.Param
 
struct  __arm_2d_op_info_t.Info.Param.__unnamed56__
 
union  __arm_2d_op_info_t.Info.LowLevelInterfaceIndex
 
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
 
struct  __arm_2d_op_info_t.Info.LowLevelIO.__unnamed64__
 
struct  __arm_2d_op_info_t.Info.LowLevelIO.__unnamed66__
 
struct  __arm_2d_op_info_t.Info.LowLevelIO.__unnamed68__
 
struct  arm_2d_op_status_t.__unnamed70__
 
struct  arm_2d_op_core_t.__unnamed72__
 < a pointer for a single list More...
 
struct  arm_2d_op_core_t.__unnamed72__.Preference
 
struct  arm_2d_op_t.Target
 
struct  arm_2d_op_msk_t.Target
 
struct  arm_2d_op_msk_t.Mask
 
struct  arm_2d_op_src_t.Target
 
struct  arm_2d_op_src_t.Source
 
struct  arm_2d_op_src_msk_t.Target
 
struct  arm_2d_op_src_msk_t.Source
 
struct  arm_2d_op_src_msk_t.Mask
 
struct  arm_2d_op_src_msk_opc_t.Target
 
struct  arm_2d_op_src_msk_opc_t.Source
 
struct  arm_2d_op_src_msk_opc_t.Mask
 
struct  arm_2d_op_src_orig_t.Target
 
struct  arm_2d_op_src_orig_t.Source
 
struct  arm_2d_op_src_orig_t.Origin
 
struct  arm_2d_op_src_orig_msk_t.Target
 
struct  arm_2d_op_src_orig_msk_t.Source
 
struct  arm_2d_op_src_orig_msk_t.Origin
 
struct  arm_2d_op_src_orig_msk_t.Mask
 

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_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_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_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_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   0
 Patch number. More...
 
#define ARM_2D_VERSION_STR   ""
 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_TOP_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_tarm_2d_set_default_frame_buffer (const arm_2d_tile_t *ptFrameBuffer)
 set the default frame buffer More...
 
arm_2d_tile_tarm_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_tarm_2d_op_init (arm_2d_op_core_t *ptOP, size_t tSize)
 initialize an given opcode More...
 
arm_2d_op_core_tarm_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_tarm_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_tarm_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...
 

Description

Note
arm-2d relies on CMSIS 5.8.0 and above.

Data Structure Documentation

◆ __arm_slist_node_t

struct __arm_slist_node_t

a type for generic list

Note
to avoid using container_of() operand, please put __arm_slist_node_t at the beginning of a class/structure
Data Fields
__arm_slist_node_t * ptNext the next node

◆ arm_2d_color_gray8_t

struct arm_2d_color_gray8_t

the colour type for gray8 (8bit gray scale)

Data Fields
uint8_t tValue

◆ arm_2d_color_rgb565_t

union arm_2d_color_rgb565_t

the colour type for rgb565

Data Fields
uint16_t tValue
struct arm_2d_color_rgb565_t.__unnamed5__ __unnamed__

◆ arm_2d_color_bgra8888_t

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__

◆ arm_2d_color_rgb888_t

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__

◆ arm_2d_color_ccca8888_t

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__

◆ arm_2d_color_accc8888_t

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__

◆ arm_2d_color_cccn888_t

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__

◆ arm_2d_color_nccc888_t

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__

◆ arm_2d_colour_t

union arm_2d_colour_t

the generic type to hold a colour

Data Fields
uint32_t wColour
uint16_t hwColour
uint8_t chColour
arm_2d_color_gray8_t
arm_2d_color_rgb565_t
arm_2d_color_bgra8888_t
arm_2d_color_rgb888_t
arm_2d_color_ccca8888_t
arm_2d_color_accc8888_t
arm_2d_color_cccn888_t
arm_2d_color_nccc888_t

◆ arm_2d_color_info_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

◆ arm_2d_location_t

struct arm_2d_location_t

a type for coordinates (integer)

Data Fields
int16_t iX x in Cartesian coordinate system
int16_t iY y in Cartesian coordinate system

◆ arm_2d_point_float_t

struct arm_2d_point_float_t

a type for coordinates in floating point

Data Fields
float fX x in Cartesian coordinate system
float fY y in Cartesian coordinate system

◆ arm_2d_point_fx_t

struct arm_2d_point_fx_t

a type for coordinates in fixed point

Data Fields
int32_t X x in Cartesian coordinate system
int32_t Y y in Cartesian coordinate system

◆ arm_2d_size_t

struct arm_2d_size_t

a type for the size of an rectangular area

Data Fields
int16_t iWidth width of an rectangular area
int16_t iHeight height of an rectangular area

◆ arm_2d_region_t

struct arm_2d_region_t

a type for an rectangular area

Data Fields
arm_2d_location_t the location (top-left corner)
arm_2d_size_t the size

◆ arm_2d_tile_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__

◆ arm_2d_margin_t

struct arm_2d_margin_t

the margin inside a region / container

Data Fields
uint8_t chLeft

left margin

uint8_t chRight

right margin

uint8_t chTop

top margin

uint8_t chBottom

bottom margin

◆ arm_2d_padding_t

struct arm_2d_padding_t

the padding between rectanglar areas

Data Fields
int8_t chLeft

left padding

int8_t chRight

right padding

int8_t chTop

top padding

int8_t chBottom

bottom padding

◆ arm_2d_alpha_samples_4pts_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]

◆ arm_2d_alpha_samples_3pts_t

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]

◆ arm_2d_alpha_samples_2pts_t

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]

◆ __arm_2d_mem_info_t

union __arm_2d_mem_info_t
Data Fields
struct __arm_2d_mem_info_t.__unnamed42__ __unnamed__
uint32_t Value Memory Information.

◆ arm_2d_scratch_mem_t

struct arm_2d_scratch_mem_t

scratch memory descriptor

Note
"manually" derived from __arm_2d_mem_info_t
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

◆ __arm_2d_mem_t

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

◆ arm_2d_vres_t

struct arm_2d_vres_t

a type for virtual resource

Note
the flag tTile.tInfo.bVirtualResource must be true (1)

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...
 

Field Documentation

◆ arm_2d_tile_t

arm_2d_vres_t::arm_2d_tile_t

base class: tTile

◆ pTarget

uintptr_t arm_2d_vres_t::pTarget

a reference of an user object

◆ Load

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

Parameters
[in]pTargeta reference of an user object
[in]ptVRESa reference of this virtual resource
[in]ptRegionthe target region of the image
Returns
intptr_t the address of a resource buffer which holds the content

◆ Depose

void(* arm_2d_vres_t::Depose) (uintptr_t pTarget, arm_2d_vres_t *ptVRES, intptr_t pBuffer)

a method to despose the buffer

Parameters
[in]pTargeta reference of an user object
[in]ptVRESa reference of this virtual resource
[in]pBufferthe target buffer

◆ arm_2d_task_t

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

◆ arm_2d_op_evt_t

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

◆ arm_2d_evt_t

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

◆ __arm_2d_op_info_t

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.

◆ arm_2d_op_status_t

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

◆ arm_2d_op_core_t

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

◆ arm_2d_op_t

struct arm_2d_op_t

the base class for operations with only a target tile

Note
arm_2d_op_msk_t inherits from arm_2d_op_core_t
Data Fields
arm_2d_op_core_t
struct arm_2d_op_t.Target Target

◆ arm_2d_op_msk_t

struct arm_2d_op_msk_t

the base class for operations with a target tile and a target mask

Note
arm_2d_op_msk_t inherits from arm_2d_op_t
Data Fields
arm_2d_op_core_t
struct arm_2d_op_msk_t.Target Target
struct arm_2d_op_msk_t.Mask Mask

◆ arm_2d_op_src_t

struct arm_2d_op_src_t

the base class for operations with a target tile and a source tile

Note
arm_2d_op_src_t inherits from arm_2d_op_t
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

◆ arm_2d_op_src_msk_t

struct arm_2d_op_src_msk_t

the base class for operations with a target tile, a source tile and masks

Note
arm_2d_op_src_msk_t inherits from arm_2d_op_src_t
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

◆ arm_2d_op_src_msk_opc_t

struct arm_2d_op_src_msk_opc_t

the base class for operations with a target tile, a source tile and masks

Note
arm_2d_op_src_msk_opc_t inherits from arm_2d_op_src_msk_t
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

◆ arm_2d_op_src_orig_t

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

Note
arm_2d_op_src_orig_t inherits from arm_2d_op_src_t
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

◆ arm_2d_op_src_orig_msk_t

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

Note
arm_2d_op_src_orig_msk_t inherits from arm_2d_op_src_orig_t
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

◆ arm_2d_rot_linear_regr_t

struct arm_2d_rot_linear_regr_t

a type for parameters of linear interpolation (in fixed point)

Data Fields
int32_t slopeY
int32_t interceptY
int32_t slopeX
int32_t interceptX

◆ arm_2d_runtime_feature_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

◆ arm_2d_version_t

struct arm_2d_version_t

a type for arm-2d version

Data Fields
uint8_t Major major version
uint8_t Minor minor version
uint8_t Patch patch number

◆ arm_2d_color_rgb565_t.__unnamed5__

struct arm_2d_color_rgb565_t.__unnamed5__
Data Fields
uint16_t u5B: 5
uint16_t u6G: 6
uint16_t u5R: 5

◆ arm_2d_color_bgra8888_t.__unnamed7__

struct arm_2d_color_bgra8888_t.__unnamed7__
Data Fields
uint32_t u8B: 8
uint32_t u8G: 8
uint32_t u8R: 8
uint32_t u8A: 8

◆ arm_2d_color_rgb888_t.__unnamed9__

struct arm_2d_color_rgb888_t.__unnamed9__
Data Fields
uint32_t u8B: 8
uint32_t u8G: 8
uint32_t u8R: 8

◆ arm_2d_color_ccca8888_t.__unnamed11__

struct arm_2d_color_ccca8888_t.__unnamed11__
Data Fields
uint8_t u8C[3]
uint8_t u8A

◆ arm_2d_color_accc8888_t.__unnamed13__

struct arm_2d_color_accc8888_t.__unnamed13__
Data Fields
uint8_t u8A
uint8_t u8C[3]

◆ arm_2d_color_cccn888_t.__unnamed15__

struct arm_2d_color_cccn888_t.__unnamed15__
Data Fields
uint8_t u8C[3]

◆ arm_2d_color_nccc888_t.__unnamed17__

struct arm_2d_color_nccc888_t.__unnamed17__
Data Fields
uint8_t u8C[3]

◆ arm_2d_color_info_t.__unnamed19__

struct arm_2d_color_info_t.__unnamed19__
Data Fields
uint8_t bHasAlpha: 1 whether the target colour has alpha channel
uint8_t u3ColourSZ: 3 the size of the colour
uint8_t bBigEndian: 1 whether the colour is stored in big endian
uint8_t u2Variant: 2

◆ arm_2d_color_info_t.__unnamed21__

struct arm_2d_color_info_t.__unnamed21__
Data Fields
uint8_t u7ColourFormat: 7

◆ arm_2d_tile_t.__unnamed23__

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

◆ arm_2d_tile_t.__unnamed23__.Extension

union arm_2d_tile_t.__unnamed23__.Extension

◆ arm_2d_tile_t.__unnamed23__.Extension.PFB

struct arm_2d_tile_t.__unnamed23__.Extension.PFB
Data Fields
uint8_t bIsNewFrame: 1
uint8_t bIsDryRun: 1

◆ arm_2d_tile_t.__unnamed23__.Extension.VRES

struct arm_2d_tile_t.__unnamed23__.Extension.VRES
Data Fields
int16_t iTargetStride

◆ arm_2d_tile_t.__unnamed25__

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

◆ arm_2d_alpha_samples_4pts_t.__unnamed30__

struct arm_2d_alpha_samples_4pts_t.__unnamed30__
Data Fields
uint8_t chTopLeft
uint8_t chTopRight
uint8_t chBottomLeft
uint8_t chBottomRight

◆ arm_2d_alpha_samples_3pts_t.__unnamed32__

struct arm_2d_alpha_samples_3pts_t.__unnamed32__
Data Fields
uint8_t chTopLeft
uint8_t chTopRight
uint8_t chBottomLeft

◆ arm_2d_alpha_samples_2pts_t.__unnamed34__

struct arm_2d_alpha_samples_2pts_t.__unnamed34__
Data Fields
uint8_t chLeft
uint8_t chRight

◆ arm_2d_alpha_samples_2pts_t.__unnamed36__

struct arm_2d_alpha_samples_2pts_t.__unnamed36__
Data Fields
uint8_t chTopLeft
union arm_2d_alpha_samples_2pts_t.__unnamed36__.__unnamed40__ __unnamed__

◆ arm_2d_alpha_samples_2pts_t.__unnamed36__.__unnamed40__

union arm_2d_alpha_samples_2pts_t.__unnamed36__.__unnamed40__
Data Fields
uint8_t chTopRight
uint8_t chBottomLeft

◆ arm_2d_alpha_samples_2pts_t.__unnamed38__

struct arm_2d_alpha_samples_2pts_t.__unnamed38__
Data Fields
uint8_t chTop
uint8_t chBottom

◆ __arm_2d_mem_info_t.__unnamed42__

struct __arm_2d_mem_info_t.__unnamed42__
Data Fields
uint32_t u24SizeInByte: 24 the memory size in Byte
uint32_t u2ItemSize: 3 the size of the data item
uint32_t u2Align: 3 the alignment
uint32_t u2Type: 2 The memory type define in enum arm_2d_mem_type_t.

◆ arm_2d_scratch_mem_t.__unnamed44__

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

◆ arm_2d_scratch_mem_t.__unnamed44__.__unnamed46__

struct arm_2d_scratch_mem_t.__unnamed44__.__unnamed46__
Data Fields
uint32_t u24SizeInByte: 24
uint32_t u2ItemSize: 3
uint32_t u2Align: 3
uint32_t u2Type: 2

◆ __arm_2d_mem_t.__unnamed48__

union __arm_2d_mem_t.__unnamed48__
Data Fields
__arm_2d_mem_t * ptNext a list pointer
uint32_t wSignature a signature for validation

◆ arm_2d_task_t.__unnamed50__

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

◆ __arm_2d_op_info_t.Info

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

◆ __arm_2d_op_info_t.Info.Param

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

◆ __arm_2d_op_info_t.Info.Param.__unnamed56__

struct __arm_2d_op_info_t.Info.Param.__unnamed56__
Data Fields
uint8_t bHasSource: 1 whether this operation contains source tile
uint8_t bHasTarget: 1 whether this operation contains target tile
uint8_t bHasSrcMask: 1 whether this operation has Mask layer for source tile
uint8_t bHasDesMask: 1 whether this operation has Mask layer for target tile
uint8_t bHasOrigin: 1 whether the Source has an origin tile
uint8_t bAllowEnforcedColour: 1 whether this operation allow enforced colours in tiles

◆ __arm_2d_op_info_t.Info.LowLevelInterfaceIndex

union __arm_2d_op_info_t.Info.LowLevelInterfaceIndex

◆ __arm_2d_op_info_t.Info.LowLevelInterfaceIndex.__unnamed58__

struct __arm_2d_op_info_t.Info.LowLevelInterfaceIndex.__unnamed58__
Data Fields
uint8_t CopyLike A copy-like interface contains the target tile, the source tile and the copy size.
uint8_t FillLike A copy-like interface contains the target tile and the source tile.

◆ __arm_2d_op_info_t.Info.LowLevelInterfaceIndex.__unnamed60__

struct __arm_2d_op_info_t.Info.LowLevelInterfaceIndex.__unnamed60__
Data Fields
uint8_t CopyOrigLike A copy-like interface contains the target tile, the dummy tile, the reference to the original source tile and the copy size.
uint8_t FillOrigLike A copy-like interface contains the target tile, the dummy tile and the reference to the original source tile.

◆ __arm_2d_op_info_t.Info.LowLevelInterfaceIndex.__unnamed62__

struct __arm_2d_op_info_t.Info.LowLevelInterfaceIndex.__unnamed62__
Data Fields
uint8_t TileProcessLike A simple interface contains only the target tile.

◆ __arm_2d_op_info_t.Info.LowLevelIO

union __arm_2d_op_info_t.Info.LowLevelIO

◆ __arm_2d_op_info_t.Info.LowLevelIO.__unnamed64__

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

◆ __arm_2d_op_info_t.Info.LowLevelIO.__unnamed66__

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

◆ __arm_2d_op_info_t.Info.LowLevelIO.__unnamed68__

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

◆ arm_2d_op_status_t.__unnamed70__

struct arm_2d_op_status_t.__unnamed70__
Data Fields
uint16_t u4SubTaskCount: 4 sub task count
uint16_t bIsBusy: 1 busy flag
uint16_t bIOError: 1 HW IO Error.
uint16_t bOpCpl: 1 the whole operation complete

◆ arm_2d_op_core_t.__unnamed72__

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

◆ arm_2d_op_core_t.__unnamed72__.Preference

struct arm_2d_op_core_t.__unnamed72__.Preference
Data Fields
uint8_t u2ACCMethods: 2

◆ arm_2d_op_t.Target

struct arm_2d_op_t.Target
Data Fields
const arm_2d_tile_t * ptTile target tile
const arm_2d_region_t * ptRegion target region

◆ arm_2d_op_msk_t.Target

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

◆ arm_2d_op_msk_t.Mask

struct arm_2d_op_msk_t.Mask
Data Fields
const arm_2d_tile_t * ptTargetSide target mask tile

◆ arm_2d_op_src_t.Target

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

◆ arm_2d_op_src_t.Source

struct arm_2d_op_src_t.Source
Data Fields
const arm_2d_tile_t * ptTile source tile

◆ arm_2d_op_src_msk_t.Target

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

◆ arm_2d_op_src_msk_t.Source

struct arm_2d_op_src_msk_t.Source
Data Fields
const arm_2d_tile_t * ptTile source tile

◆ arm_2d_op_src_msk_t.Mask

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

◆ arm_2d_op_src_msk_opc_t.Target

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

◆ arm_2d_op_src_msk_opc_t.Source

struct arm_2d_op_src_msk_opc_t.Source
Data Fields
const arm_2d_tile_t * ptTile source tile

◆ arm_2d_op_src_msk_opc_t.Mask

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

◆ arm_2d_op_src_orig_t.Target

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

◆ arm_2d_op_src_orig_t.Source

struct arm_2d_op_src_orig_t.Source
Data Fields
const arm_2d_tile_t * ptTile the dummy source tile

◆ arm_2d_op_src_orig_t.Origin

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

◆ arm_2d_op_src_orig_msk_t.Target

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

◆ arm_2d_op_src_orig_msk_t.Source

struct arm_2d_op_src_orig_msk_t.Source
Data Fields
const arm_2d_tile_t * ptTile the dummy source tile

◆ arm_2d_op_src_orig_msk_t.Origin

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

◆ arm_2d_op_src_orig_msk_t.Mask

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

Macro Definition Documentation

◆ __implement_ex

#define __implement_ex (   __type,
  __name 
)
Value:
union { \
__type __name; \
__type; \
}
Note
do NOT use this macro directly

◆ __inherit_ex

#define __inherit_ex (   __type,
  __name 
)    __type __name
Note
do NOT use this macro

◆ __implement

#define __implement (   __type)
Value:
__implement_ex( __type, \
use_as__##__type)
Note
do NOT use this macro directly

◆ __inherit

#define __inherit (   __type)    __inherit_ex(__type,use_as__##__type)
Note
do NOT use this macro directly

◆ implement

#define implement (   __type)    __implement(__type)

inherit a given class

Parameters
__typethe base class, you can use .use_as_xxxxx for referencing the base.
Note
this macro supports microsoft extensions (-fms-extensions)

◆ implement_ex

#define implement_ex (   __type,
  __name 
)    __implement_ex(__type, __name)

inherit a given class and give it an alias name

Parameters
__typethe base class
__namean alias name for referencing the base class
Note
this macro supports microsoft extensions (-fms-extensions)

◆ inherit

#define inherit (   __type)    __inherit(__type)

inherit a given class

Parameters
__typethe base class, you can use .use_as_xxxxx for referencing the base.
Note
this macro does NOT support microsoft extensions (-fms-extensions)

◆ inherit_ex

#define inherit_ex (   __type,
  __name 
)    __inherit_ex(__type, __name)

inherit a given class and give it an alias name

Parameters
__typethe base class
__namean alias name for referencing the base class
Note
this macro does NOT support microsoft extensions (-fms-extensions)

◆ ARM_2D_UNUSED

#define ARM_2D_UNUSED (   __VAR)    (void)(__VAR)

a macro to mark unused variables and let the compiler happy

◆ ARM_TYPE_CONVERT

#define ARM_TYPE_CONVERT (   __VAR,
  __TYPE 
)    (*((__TYPE *)&(__VAR)))

convert a given variable to a specified type, the converted result can be used as lvalue.

Parameters
__VARthe target variable
__TYPEthe target type

◆ ARM_TEST_BITS

#define ARM_TEST_BITS (   __VALUE,
  __BITS 
)    ((__BITS) == ((__VALUE) & (__BITS)))

a macro to test the boolean result for a given value using a given bitmask

Parameters
[in]__VALUEthe target value
[in]__BITSa bitmask
Return values
trueall bits in the bitmask is 1
falsenot all bits in the bitmask is 1

◆ dimof

#define dimof (   __array)    (sizeof(__array)/sizeof(__array[0]))

get the number of items in an given array

◆ offsetof

#define offsetof (   __type,
  __member 
)     ((uintptr_t)&(((__type *)NULL)->__member))

get the offset of a given member in a specified structure/union

Parameters
__typethe host type
__memberthe name of the target member
Returns
size_t the offset (in bytes)

◆ __ARM_TO_STRING

#define __ARM_TO_STRING (   __STR)    #__STR
Note
do NOT use this macro directly

◆ ARM_TO_STRING

#define ARM_TO_STRING (   __STR)    __ARM_TO_STRING(__STR)

convert a string to C string

◆ __ARM_VA_NUM_ARGS_IMPL

#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
Note
do NOT use this macro directly

◆ __ARM_VA_NUM_ARGS

#define __ARM_VA_NUM_ARGS (   ...)
Value:
__ARM_VA_NUM_ARGS_IMPL( 0,##__VA_ARGS__,16,15,14,13,12,11,10,9, \
8,7,6,5,4,3,2,1,0)

A macro to count the number of parameters.

Note
if GNU extension is not supported or enabled, the following express will be false: (__ARM_VA_NUM_ARGS() != 0) This might cause problems when in this library.

◆ ARM_2D_PARAM

#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

◆ ARM_2D_INVOKE

#define ARM_2D_INVOKE (   __FUNC_PTR,
  ... 
)     ((NULL == (__FUNC_PTR)) ? 0 : ((*(__FUNC_PTR))(__VA_ARGS__)))

A macro to safely invode a function pointer.

Parameters
[in]__FUNC_PTRthe target function pointer
[in]...an optional parameter list

◆ ARM_2D_INVOKE_RT_VOID

#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.

Parameters
[in]__FUNC_PTRthe target function pointer
[in]...an optional parameter list

◆ __ARM_CONNECT2

#define __ARM_CONNECT2 (   __A,
  __B 
)    __A##__B
Note
do NOT use this macro directly

◆ __ARM_CONNECT2_ALT

#define __ARM_CONNECT2_ALT (   __A,
  __B 
)    __A##__B
Note
do NOT use this macro directly

◆ __ARM_CONNECT3

#define __ARM_CONNECT3 (   __A,
  __B,
  __C 
)    __A##__B##__C
Note
do NOT use this macro directly

◆ __ARM_CONNECT4

#define __ARM_CONNECT4 (   __A,
  __B,
  __C,
  __D 
)    __A##__B##__C##__D
Note
do NOT use this macro directly

◆ __ARM_CONNECT5

#define __ARM_CONNECT5 (   __A,
  __B,
  __C,
  __D,
  __E 
)    __A##__B##__C##__D##__E
Note
do NOT use this macro directly

◆ __ARM_CONNECT6

#define __ARM_CONNECT6 (   __A,
  __B,
  __C,
  __D,
  __E,
  __F 
)     __A##__B##__C##__D##__E##__F
Note
do NOT use this macro directly

◆ __ARM_CONNECT7

#define __ARM_CONNECT7 (   __A,
  __B,
  __C,
  __D,
  __E,
  __F,
  __G 
)     __A##__B##__C##__D##__E##__F##__G
Note
do NOT use this macro directly

◆ __ARM_CONNECT8

#define __ARM_CONNECT8 (   __A,
  __B,
  __C,
  __D,
  __E,
  __F,
  __G,
  __H 
)     __A##__B##__C##__D##__E##__F##__G##__H
Note
do NOT use this macro directly

◆ __ARM_CONNECT9

#define __ARM_CONNECT9 (   __A,
  __B,
  __C,
  __D,
  __E,
  __F,
  __G,
  __H,
  __I 
)     __A##__B##__C##__D##__E##__F##__G##__H##__I
Note
do NOT use this macro directly

◆ ARM_CONNECT2

#define ARM_CONNECT2 (   __A,
  __B 
)    __ARM_CONNECT2(__A, __B)

connect two symbol names as one

◆ ARM_CONNECT2_ALT

#define ARM_CONNECT2_ALT (   __A,
  __B 
)    __ARM_CONNECT2_ALT(__A, __B)

connect two symbol names as one

◆ ARM_CONNECT3

#define ARM_CONNECT3 (   __A,
  __B,
  __C 
)    __ARM_CONNECT3(__A, __B, __C)

connect three symbol names as one

◆ ARM_CONNECT4

#define ARM_CONNECT4 (   __A,
  __B,
  __C,
  __D 
)    __ARM_CONNECT4(__A, __B, __C, __D)

connect four symbol names as one

◆ ARM_CONNECT5

#define ARM_CONNECT5 (   __A,
  __B,
  __C,
  __D,
  __E 
)     __ARM_CONNECT5(__A, __B, __C, __D, __E)

connect five symbol names as one

◆ ARM_CONNECT6

#define ARM_CONNECT6 (   __A,
  __B,
  __C,
  __D,
  __E,
  __F 
)     __ARM_CONNECT6(__A, __B, __C, __D, __E, __F)

connect six symbol names as one

◆ ARM_CONNECT7

#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

◆ ARM_CONNECT8

#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

◆ ARM_CONNECT9

#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

◆ arm_connect

#define arm_connect (   ...)
Value:
(__VA_ARGS__)

connect up to 9 symbol names as one

◆ ARM_CONNECT

#define ARM_CONNECT (   ...)    arm_connect(__VA_ARGS__)

connect up to 9 symbol names as one

◆ __ARM_USING1

#define __ARM_USING1 (   __declare)
Value:
for (__declare, *ARM_CONNECT3(__ARM_USING_, __LINE__,_ptr) = NULL; \
ARM_CONNECT3(__ARM_USING_, __LINE__,_ptr)++ == NULL; \
)
Note
do NOT use this macro directly

◆ __ARM_USING2

#define __ARM_USING2 (   __declare,
  __on_leave_expr 
)
Value:
for (__declare, *ARM_CONNECT3(__ARM_USING_, __LINE__,_ptr) = NULL; \
ARM_CONNECT3(__ARM_USING_, __LINE__,_ptr)++ == NULL; \
(__on_leave_expr) \
)
Note
do NOT use this macro directly

◆ __ARM_USING3

#define __ARM_USING3 (   __declare,
  __on_enter_expr,
  __on_leave_expr 
)
Value:
for (__declare, *ARM_CONNECT3(__ARM_USING_, __LINE__,_ptr) = NULL; \
ARM_CONNECT3(__ARM_USING_, __LINE__,_ptr)++ == NULL ? \
((__on_enter_expr),1) : 0; \
(__on_leave_expr) \
)
Note
do NOT use this macro directly

◆ __ARM_USING4

#define __ARM_USING4 (   __dcl1,
  __dcl2,
  __on_enter_expr,
  __on_leave_expr 
)
Value:
for (__dcl1,__dcl2,*ARM_CONNECT3(__ARM_USING_, __LINE__,_ptr)= NULL;\
ARM_CONNECT3(__ARM_USING_, __LINE__,_ptr)++ == NULL ? \
((__on_enter_expr),1) : 0; \
(__on_leave_expr) \
)
Note
do NOT use this macro directly

◆ arm_using

#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

Note
prototype 1 arm_using(local variable declaration) { code body }
prototype 2 arm_using(local variable declaration, {code segment before leaving the body}) { code body }
prototype 3 arm_using( local variable declaration, {code segment before entering the body}, {code segment before leaving the body} ) { code body }
prototype 4 arm_using( local variable1 declaration, local variable2 with the same type as the local variable 1, {code segment before entering the body}, {code segment before leaving the body} ) { code body }

◆ __ARM_WITH2

#define __ARM_WITH2 (   __type,
  __addr 
)     arm_using(__type *_=(__addr))
Note
do NOT use this macro directly

◆ __ARM_WITH3

#define __ARM_WITH3 (   __type,
  __addr,
  __item 
)     arm_using(__type *_=(__addr), *__item = _, (void)_, (void)0)
Note
do NOT use this macro directly

◆ arm_with

#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

Note
prototype 1 arm_with(object type, address of the object) { you can use _.xxxx to access the members of the object }
prototype 2 arm_with(object type, address of the object, name of the iterator) { you can use your own iterator to access the members of the object }

◆ ARM_FOREACH2

#define ARM_FOREACH2 (   __type,
  __array 
)
Value:
arm_using(__type *_ = __array) \
for ( uint_fast32_t ARM_CONNECT2(count,__LINE__) = dimof(__array);\
ARM_CONNECT2(count,__LINE__) > 0; \
_++, ARM_CONNECT2(count,__LINE__)-- \
)

access each items in a given array

Parameters
__typethe type of the array
__arraythe target array
Note
you can use "_" as the current object (iterator)

◆ ARM_FOREACH3

#define ARM_FOREACH3 (   __type,
  __array,
  __item 
)
Value:
arm_using(__type *_ = __array, *__item = _, (void)_, (void)0 ) \
for ( uint_fast32_t ARM_CONNECT2(count,__LINE__) = dimof(__array);\
ARM_CONNECT2(count,__LINE__) > 0; \
_++, __item = _, ARM_CONNECT2(count,__LINE__)-- \
)

access each items in a given array

Parameters
__typethe type of the array
__arraythe target array
__itema name for the current item (iterator)

◆ ARM_FOREACH4

#define ARM_FOREACH4 (   __type,
  __array,
  __count,
  __item 
)
Value:
arm_using(__type *_ = __array, *__item = _, (void)_, (void)0) \
for ( uint_fast32_t ARM_CONNECT2(count,__LINE__) = (__count); \
ARM_CONNECT2(count,__LINE__) > 0; \
_++, __item = _, ARM_CONNECT2(count,__LINE__)-- \
)

access each items in a given array

Parameters
__typethe type of the array
__arraythe target array or the pointer of an memory block
__countnumber of items in the array/memory block
__itema name for the current item (iterator)

◆ arm_foreach

#define arm_foreach (   ...)     ARM_CONNECT2(ARM_FOREACH, __ARM_VA_NUM_ARGS(__VA_ARGS__))(__VA_ARGS__)

access each items in a given array

Note
there are 3 prototypes, please refer to ARM_FOREACH1/2/3 for details

◆ __ARM_SECTION

#define __ARM_SECTION (   __X)    __attribute__((section(__X)))

a wrapper for attribute((nonnull))

Note
do NOT use this macro directly

◆ ARM_SECTION

#define ARM_SECTION (   __X)    __ARM_SECTION(__X)

an attribute to specify the section

Note
it works for both functions and static/global variables

◆ ARM_NOINIT

#define ARM_NOINIT

an attribute for static variables that no initialisation is required in the C startup process.

◆ __ARM_ALIGN

#define __ARM_ALIGN (   __N)    __attribute__((aligned(__N)))
Note
do NOT use this macro directly

◆ ARM_ALIGN

#define ARM_ALIGN (   __N)    __ARM_ALIGN(__N)

an attribute to specify aligment requirement

Note
it works for both functions and static/global variables

◆ __RESTRICT

#define __RESTRICT   __restrict

local variable decoration for pointers: restrict

◆ __OVERRIDE_WEAK

#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.

◆ ARM_2D_SAFE_NAME

#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.

◆ arm_2d_safe_name

#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.

◆ __ARM_2D_WRAP_FUNC

#define __ARM_2D_WRAP_FUNC (   x)    __wrap_ ## x

a decoration to make the immediate following code irq-safe

arm_irq_safe {
// code inside the brackets are IRQ safe
...
}
// the printf is IRQ safe
arm_irq_safe printf("IRQ safe printf\n");
Note
do NOT use this macro directly

◆ __ARM_2D_ORIG_FUNC

#define __ARM_2D_ORIG_FUNC (   x)    __real_ ## x
Note
do NOT use this macro directly

◆ ARM_2D_WRAP_FUNC

#define ARM_2D_WRAP_FUNC (   __FUNC)    __ARM_2D_WRAP_FUNC(__FUNC)

a symbol wrapper to override a specified function

◆ ARM_2D_ORIG_FUNC

#define ARM_2D_ORIG_FUNC (   __FUNC)    __ARM_2D_ORIG_FUNC(__FUNC)

a symbol wrapper to refer the original function with a given name

◆ __ARM_LIST_STACK_PUSH

#define __ARM_LIST_STACK_PUSH (   __P_TOP,
  __P_NODE 
)
Value:
do { \
((__arm_slist_node_t *)(__P_NODE))->ptNext = \
(__arm_slist_node_t *)(__P_TOP); \
(*(__arm_slist_node_t **)&(__P_TOP)) = \
(__arm_slist_node_t *)(__P_NODE); \
} while(0)
Note
do NOT use this macro directly

◆ ARM_LIST_STACK_PUSH

#define ARM_LIST_STACK_PUSH (   __P_TOP,
  __P_NODE 
)     __ARM_LIST_STACK_PUSH((__P_TOP), (__P_NODE))

push a item to a list

Parameters
[in]__P_TOPa pointer points to the first item of a list
[in]__P_NODEa pointer points to the new item

◆ ARM_LIST_INSERT_AFTER

#define ARM_LIST_INSERT_AFTER (   __P_TARGET,
  __P_NODE 
)     __ARM_LIST_STACK_PUSH((__P_TARGET), (__P_NODE))

insert a item after a specified node

Parameters
[in]__P_TARGETa pointer points to the target node
[in]__P_NODEa pointer points to the new item

◆ __ARM_LIST_STACK_POP

#define __ARM_LIST_STACK_POP (   __P_TOP,
  __P_NODE 
)
Value:
do { \
(*(__arm_slist_node_t **)&(__P_NODE)) = \
(__arm_slist_node_t *)(__P_TOP); \
if (NULL != (__P_TOP)) { \
(*(__arm_slist_node_t **)&(__P_TOP)) = \
((__arm_slist_node_t *)(__P_NODE))->ptNext; \
((__arm_slist_node_t *)(__P_NODE))->ptNext = NULL; \
} \
} while(0)
Note
do NOT use this macro directly

◆ ARM_LIST_STACK_POP

#define ARM_LIST_STACK_POP (   __P_TOP,
  __P_NODE 
)     __ARM_LIST_STACK_POP((__P_TOP), (__P_NODE))

pop a item from a list

Parameters
[in]__P_TOPa pointer points to the first item of a list
[out]__P_NODEa pointer variable for the node

◆ ARM_LIST_REMOVE_AFTER

#define ARM_LIST_REMOVE_AFTER (   __P_TARGET,
  __P_NODE 
)     ARM_LIST_STACK_POP((__P_TARGET), (__P_NODE))

remove a item after a specified node

Parameters
[in]__P_TARGETa pointer points to the target node
[out]__P_NODEa pointer variable for the node

◆ __ARM_LIST_QUEUE_ENQUEUE

#define __ARM_LIST_QUEUE_ENQUEUE (   __HEAD,
  __TAIL,
  __ITEM 
)
Value:
do { \
if (NULL == (__TAIL)) { \
(*((__arm_slist_node_t **)&(__TAIL))) = \
(__arm_slist_node_t *)(__ITEM); \
(*((__arm_slist_node_t **)&(__HEAD))) = \
(__arm_slist_node_t *)(__ITEM); \
} else { \
((__arm_slist_node_t *)(__TAIL))->ptNext = \
(__arm_slist_node_t *)(__ITEM); \
(*(__arm_slist_node_t **)&(__TAIL)) = \
(__arm_slist_node_t *)(__ITEM); \
} \
((__arm_slist_node_t *)(__ITEM))->ptNext = NULL; \
} while(0)
Note
do NOT use this macro directly

◆ ARM_LIST_QUEUE_ENQUEUE

#define ARM_LIST_QUEUE_ENQUEUE (   __HEAD,
  __TAIL,
  __ITEM 
)     __ARM_LIST_QUEUE_ENQUEUE((__HEAD), (__TAIL), (__ITEM))

enter a node to a queue

Parameters
[in]__HEADa pointer points to the queue head
[in]__TAILa pointer points to the queue tail
[in]__ITEMa pointer variable for the new node

◆ __ARM_LIST_QUEUE_DEQUEUE

#define __ARM_LIST_QUEUE_DEQUEUE (   __HEAD,
  __TAIL,
  __ITEM 
)
Value:
do { \
(*(__arm_slist_node_t **)&(__ITEM)) = (__arm_slist_node_t *)(__HEAD); \
if (NULL != (__HEAD)) { \
(*(__arm_slist_node_t **)&(__HEAD)) = \
((__arm_slist_node_t *)(__HEAD))->ptNext; \
if (NULL == (__HEAD)) { \
(__TAIL) = NULL; \
} \
} \
} while(0)
Note
do NOT use this macro directly

◆ ARM_LIST_QUEUE_DEQUEUE

#define ARM_LIST_QUEUE_DEQUEUE (   __HEAD,
  __TAIL,
  __ITEM 
)     __ARM_LIST_QUEUE_DEQUEUE((__HEAD), (__TAIL), (__ITEM))

fetch a node from a queue

Parameters
[in]__HEADa pointer points to the queue head
[in]__TAILa pointer points to the queue tail
[out]__ITEMa pointer variable for the node

◆ __ARM_LIST_QUEUE_PEEK

#define __ARM_LIST_QUEUE_PEEK (   __HEAD,
  __TAIL,
  __ITEM 
)
Value:
do { \
(*(__arm_slist_node_t **)&(__ITEM)) = (__arm_slist_node_t *)(__HEAD); \
} while(0)
Note
do NOT use this macro directly

◆ ARM_LIST_QUEUE_PEEK

#define ARM_LIST_QUEUE_PEEK (   __HEAD,
  __TAIL,
  __ITEM 
)     __ARM_LIST_QUEUE_PEEK((__HEAD), (__TAIL), (__ITEM)) \

peek a node from a queue

Parameters
[in]__HEADa pointer points to the queue head
[in]__TAILa pointer points to the queue tail
[out]__ITEMa pointer variable for the node

◆ ARM_PT_BEGIN

#define ARM_PT_BEGIN (   __STATE)
Value:
enum { \
count_offset = __COUNTER__ + 1, \
}; \
uint8_t *ptPTState = &(__STATE); \
switch (__STATE) { \
case __COUNTER__ - count_offset:

◆ ARM_PT_ENTRY

#define ARM_PT_ENTRY (   ...)
Value:
(*ptPTState) = (__COUNTER__ - count_offset + 1) >> 1; \
__VA_ARGS__ \
case (__COUNTER__ - count_offset) >> 1: (void)(*ptPTState);

◆ ARM_PT_END

#define ARM_PT_END ( )
Value:
(*ptPTState) = 0; \
break;}

◆ ARM_PT_REPORT_STATUS

#define ARM_PT_REPORT_STATUS (   ...)
Value:
ARM_PT_ENTRY( \
return __VA_ARGS__; \
)

◆ ARM_PT_RETURN

#define ARM_PT_RETURN (   ...)
Value:
(*ptPTState) = 0; \
return __VA_ARGS__;

◆ __def_low_lv_io

#define __def_low_lv_io (   __NAME,
  __SW,
  ... 
)
Value:
const __arm_2d_low_level_io_t LOW_LEVEL_IO##__NAME = { \
.SW = (__arm_2d_io_func_t *)&(__SW), \
.HW = (NULL, ##__VA_ARGS__) \
}
Note
do NOT use this macro directly

◆ __ref_low_lv_io

#define __ref_low_lv_io (   __NAME)    &LOW_LEVEL_IO##__NAME
Note
do NOT use this macro directly

◆ ref_low_lv_io

#define ref_low_lv_io (   __NAME)    __ref_low_lv_io(__NAME)

a symbol wrapper for referencing a specified low-level IO

◆ ARM_2D_LOG_CHN_TYPE_USER

#define ARM_2D_LOG_CHN_TYPE_USER   _BV(28)

the bit-mask for log channels

the channel for user messages

◆ ARM_2D_LOG_CHN_TYPE_INFO

#define ARM_2D_LOG_CHN_TYPE_INFO   _BV(29)

the channel for generic information

◆ ARM_2D_LOG_CHN_TYPE_WARNING

#define ARM_2D_LOG_CHN_TYPE_WARNING   _BV(30)

the channel for warnings messages

◆ ARM_2D_LOG_CHN_TYPE_ERROR

#define ARM_2D_LOG_CHN_TYPE_ERROR   _BV(31)

the channel for error messages

◆ ARM_2D_LOG_CHN_PIPELINE

#define ARM_2D_LOG_CHN_PIPELINE   _BV(0)

the channel dedicated to the pixel-pipeline

◆ ARM_2D_LOG_CHN_OPCODE

#define ARM_2D_LOG_CHN_OPCODE   _BV(1)

the channel dedicated to OPCODEs and related algorithms

◆ ARM_2D_LOG_CHN_HELPER

#define ARM_2D_LOG_CHN_HELPER   _BV(2)

the channel dedicated to Helper services

◆ ARM_2D_LOG_CHN_HELPER_PFB

#define ARM_2D_LOG_CHN_HELPER_PFB   _BV(3)

the channel dedicated to the PFB helper service

◆ ARM_2D_LOG_CHN_SCENE_PLAYER

#define ARM_2D_LOG_CHN_SCENE_PLAYER   _BV(4)

the channel dedicated to the scene player service

◆ ARM_2D_LOG_CHN_DIRTY_REGION_OPTIMISATION

#define ARM_2D_LOG_CHN_DIRTY_REGION_OPTIMISATION   _BV(5)

the channel dedicated to the dirty region optimization services

◆ ARM_2D_LOG_CHN_STATISTICS

#define ARM_2D_LOG_CHN_STATISTICS   _BV(6)

the channel dedicated to show statistics

◆ ARM_2D_LOG_CHN_CONTROLS

#define ARM_2D_LOG_CHN_CONTROLS   _BV(7)

the channel dedicated to example controls

◆ ARM_2D_LOG_CHN_APP

#define ARM_2D_LOG_CHN_APP   _BV(24)

the channel dedicated to applications and examples

◆ __ARM_2D_LOG_CHANNEL_MASK_FILTER__

#define __ARM_2D_LOG_CHANNEL_MASK_FILTER__   0xFFFFFFFF

the filter to enable log channels

◆ __ARM_2D_LOG_PRINTF_PIPELINE

#define __ARM_2D_LOG_PRINTF_PIPELINE   __arm_2d_log_printf

the log printf entry dedicated to pixel pipeline

◆ __ARM_2D_LOG_PRINTF_OPCODE

#define __ARM_2D_LOG_PRINTF_OPCODE   __arm_2d_log_printf

the log printf entry dedicated to OPCODEs and related algorithms

◆ __ARM_2D_LOG_PRINTF_HELPER

#define __ARM_2D_LOG_PRINTF_HELPER   __arm_2d_log_printf

the log printf entry dedicated to Helper services

◆ __ARM_2D_LOG_PRINTF_HELPER_PFB

#define __ARM_2D_LOG_PRINTF_HELPER_PFB   __arm_2d_log_printf

the log printf entry dedicated to the PFB helper service

◆ __ARM_2D_LOG_PRINTF_SCENE_PLAYER

#define __ARM_2D_LOG_PRINTF_SCENE_PLAYER   __arm_2d_log_printf

the log printf entry dedicated to the scene player service

◆ __ARM_2D_LOG_PRINTF_DIRTY_REGION_OPTIMISATION

#define __ARM_2D_LOG_PRINTF_DIRTY_REGION_OPTIMISATION    __arm_2d_log_printf

the log printf entry dedicated to the dirty region optimization service

◆ __ARM_2D_LOG_PRINTF_STATISTICS

#define __ARM_2D_LOG_PRINTF_STATISTICS   __arm_2d_log_printf

the log printf entry dedicated to show statistics

◆ __ARM_2D_LOG_PRINTF_CONTROLS

#define __ARM_2D_LOG_PRINTF_CONTROLS   __arm_2d_log_printf

the log printf entry dedicated to example controls

◆ __ARM_2D_LOG_PRINTF_APP

#define __ARM_2D_LOG_PRINTF_APP   __arm_2d_log_printf

the log printf entry dedicated to applications and examples

◆ __ARM_2D_PORT_PRINTF__

#define __ARM_2D_PORT_PRINTF__ (   __format,
  ... 
)    printf((__format), ##__VA_ARGS__)

the low level entry for printf

Note
you can define this macro for retargeting

◆ __ARM_2D_LOG_MAX_STRING_LEN__

#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

Note
please make sure there are sufficient memory in HEAP.

◆ ARM_2D_M_COLOUR_SZ_1BIT

#define ARM_2D_M_COLOUR_SZ_1BIT   0

1 bit:black and white

◆ ARM_2D_M_COLOUR_SZ_2BIT

#define ARM_2D_M_COLOUR_SZ_2BIT   1

4 colours or 4 gray-levels

◆ ARM_2D_M_COLOUR_SZ_4BIT

#define ARM_2D_M_COLOUR_SZ_4BIT   2

16 colours or 16 gray-levels

◆ ARM_2D_M_COLOUR_SZ_8BIT

#define ARM_2D_M_COLOUR_SZ_8BIT   3

256 colours

◆ ARM_2D_M_COLOUR_SZ_16BIT

#define ARM_2D_M_COLOUR_SZ_16BIT   4

16bits

◆ ARM_2D_M_COLOUR_SZ_32BIT

#define ARM_2D_M_COLOUR_SZ_32BIT   5

true colour

◆ ARM_2D_M_COLOUR_SZ_24BIT

#define ARM_2D_M_COLOUR_SZ_24BIT   6

true colour

◆ ARM_2D_M_COLOUR_SZ_1BIT_msk

#define ARM_2D_M_COLOUR_SZ_1BIT_msk   (ARM_2D_M_COLOUR_SZ_1BIT << 1)

bitmask for 1bit colour formats

◆ ARM_2D_M_COLOUR_SZ_2BIT_msk

#define ARM_2D_M_COLOUR_SZ_2BIT_msk   (ARM_2D_M_COLOUR_SZ_2BIT << 1)

bitmask for 2bit colour formats

◆ ARM_2D_M_COLOUR_SZ_4BIT_msk

#define ARM_2D_M_COLOUR_SZ_4BIT_msk   (ARM_2D_M_COLOUR_SZ_4BIT << 1)

bitmask for 4bit colour formats

◆ ARM_2D_M_COLOUR_SZ_8BIT_msk

#define ARM_2D_M_COLOUR_SZ_8BIT_msk   (ARM_2D_M_COLOUR_SZ_8BIT << 1)

bitmask for 8bit colour formats

◆ ARM_2D_M_COLOUR_SZ_16BIT_msk

#define ARM_2D_M_COLOUR_SZ_16BIT_msk   (ARM_2D_M_COLOUR_SZ_16BIT<< 1)

bitmask for 16bit colour formats

◆ ARM_2D_M_COLOUR_SZ_32BIT_msk

#define ARM_2D_M_COLOUR_SZ_32BIT_msk   (ARM_2D_M_COLOUR_SZ_32BIT<< 1)

bitmask for 32bit colour formats

◆ ARM_2D_M_COLOUR_SZ_24BIT_msk

#define ARM_2D_M_COLOUR_SZ_24BIT_msk   (ARM_2D_M_COLOUR_SZ_24BIT<< 1)

bitmask for 24bit colour formats

◆ ARM_2D_M_COLOUR_SZ_msk

#define ARM_2D_M_COLOUR_SZ_msk   (0x07 << 1),

bitmask for the SZ bitfield

◆ ARM_2D_M_COLOUR_LITTLE_ENDIAN

#define ARM_2D_M_COLOUR_LITTLE_ENDIAN   0

pixels are stored in little endian

◆ ARM_2D_M_COLOUR_BIG_ENDIAN

#define ARM_2D_M_COLOUR_BIG_ENDIAN   1

pixels are stored big endian

◆ ARM_2D_M_COLOUR_LITTLE_ENDIAN_msk

#define ARM_2D_M_COLOUR_LITTLE_ENDIAN_msk   (ARM_2D_M_COLOUR_LITTLE_ENDIAN << 4)

bitmask for little-endian

◆ ARM_2D_M_COLOUR_BIG_ENDIAN_msk

#define ARM_2D_M_COLOUR_BIG_ENDIAN_msk   (ARM_2D_M_COLOUR_BIG_ENDIAN << 4)

bitmask for big-endian

◆ ARM_2D_M_COLOUR_NO_ALPHA

#define ARM_2D_M_COLOUR_NO_ALPHA   0

there is no alpha channel in each pixel

◆ ARM_2D_M_COLOUR_HAS_ALPHA

#define ARM_2D_M_COLOUR_HAS_ALPHA   1

there is an alpha channel in each pixel

◆ ARM_2D_M_COLOUR_NO_ALPHA_msk

#define ARM_2D_M_COLOUR_NO_ALPHA_msk   (ARM_2D_M_COLOUR_NO_ALPHA << 0)

bitmask for no-alpha-channel-in-pixel

◆ ARM_2D_M_COLOUR_HAS_ALPHA_msk

#define ARM_2D_M_COLOUR_HAS_ALPHA_msk   (ARM_2D_M_COLOUR_HAS_ALPHA << 0)

bitmask for has-alpha-channel-in-pixel

◆ ARM_2D_M_COLOUR_VARIANT_pos

#define ARM_2D_M_COLOUR_VARIANT_pos   5

offset for the VARIANT bitfield

◆ ARM_2D_M_COLOUR_VARIANT_msk

#define ARM_2D_M_COLOUR_VARIANT_msk   (0x07<<ARM_2D_M_COLOUR_VARIANT_pos)

bitmask for the VARIANT bitfield

◆ ARM_2D_M_COLOUR_MONOCHROME

#define ARM_2D_M_COLOUR_MONOCHROME   ARM_2D_M_COLOUR_SZ_1BIT_msk

macro for the monochrome

◆ ARM_2D_M_COLOUR_BIN

#define ARM_2D_M_COLOUR_BIN   ARM_2D_M_COLOUR_SZ_1BIT_msk

macro for the 1bit colour format (alias)

◆ ARM_2D_M_COLOUR_1BIT

#define ARM_2D_M_COLOUR_1BIT   ARM_2D_M_COLOUR_SZ_1BIT_msk

macro for the 1bin colour format (alias)

◆ ARM_2D_M_COLOUR_MASK_A1

#define ARM_2D_M_COLOUR_MASK_A1   ARM_2D_M_COLOUR_SZ_1BIT_msk

macro for the 1bit alpha mask

◆ ARM_2D_M_COLOUR_MASK_A2

#define ARM_2D_M_COLOUR_MASK_A2   ARM_2D_M_COLOUR_SZ_2BIT_msk

macro for the 2bit alpha mask

◆ ARM_2D_M_COLOUR_MASK_A4

#define ARM_2D_M_COLOUR_MASK_A4   ARM_2D_M_COLOUR_SZ_4BIT_msk

macro for the 4bit alpha mask

◆ ARM_2D_M_COLOUR_8BIT

#define ARM_2D_M_COLOUR_8BIT   ARM_2D_M_COLOUR_SZ_8BIT_msk

macro for the generic 8bit colour formats

◆ ARM_2D_M_COLOUR_GRAY8

#define ARM_2D_M_COLOUR_GRAY8   ARM_2D_M_COLOUR_SZ_8BIT_msk

macro for the gray8 colour format

◆ ARM_2D_M_COLOUR_MASK_A8

#define ARM_2D_M_COLOUR_MASK_A8   ARM_2D_M_COLOUR_SZ_8BIT_msk

macro for the 8bit alpha mask

◆ ARM_2D_M_COLOUR_16BIT

#define ARM_2D_M_COLOUR_16BIT   ARM_2D_M_COLOUR_SZ_16BIT_msk

macro for the generic 16bit colour formats

◆ ARM_2D_M_COLOUR_RGB16

#define ARM_2D_M_COLOUR_RGB16   ARM_2D_M_COLOUR_SZ_16BIT_msk

macro for the generic 16bit colour formats

◆ ARM_2D_M_COLOUR_RGB565

#define ARM_2D_M_COLOUR_RGB565   ARM_2D_M_COLOUR_RGB16

macro for the rgb565

◆ ARM_2D_M_COLOUR_24BIT

#define ARM_2D_M_COLOUR_24BIT   ARM_2D_M_COLOUR_SZ_24BIT_msk

macro for the generic 24bit colour formats

◆ ARM_2D_M_COLOUR_RGB24

#define ARM_2D_M_COLOUR_RGB24   ARM_2D_M_COLOUR_SZ_24BIT_msk

macro for the generic 24bit colour formats

◆ ARM_2D_M_COLOUR_32BIT

#define ARM_2D_M_COLOUR_32BIT   ARM_2D_M_COLOUR_SZ_32BIT_msk

macro for the generic 32bit colour formats

◆ ARM_2D_M_COLOUR_RGB32

#define ARM_2D_M_COLOUR_RGB32   ARM_2D_M_COLOUR_SZ_32BIT_msk

macro for the generic 32bit colour formats

◆ ARM_2D_M_COLOUR_CCCN888

#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

◆ ARM_2D_M_COLOUR_CCCA8888

#define ARM_2D_M_COLOUR_CCCA8888
Value:

macro for the generic 32bit colour formats with an alpha channel at the highest byte

◆ ARM_2D_M_COLOUR_RGBX888

#define ARM_2D_M_COLOUR_RGBX888   ARM_2D_M_COLOUR_CCCN888

macro for the RGB888 (BGRN8888)

◆ ARM_2D_M_COLOUR_BGRA8888

#define ARM_2D_M_COLOUR_BGRA8888   ARM_2D_M_COLOUR_CCCA8888

macro for the BGRA8888

◆ ARM_2D_M_CHANNEL_8in32

#define ARM_2D_M_CHANNEL_8in32
Value:

macro for a special colour format which access only one channel in RGB32

◆ ARM_2D_OP_INFO_PARAM_HAS_SOURCE

#define ARM_2D_OP_INFO_PARAM_HAS_SOURCE   _BV(0)

opcode has source tile info

◆ ARM_2D_OP_INFO_PARAM_HAS_TARGET

#define ARM_2D_OP_INFO_PARAM_HAS_TARGET   _BV(1)

opcode has target tile info

◆ ARM_2D_OP_INFO_PARAM_HAS_SOURCE_MASK

#define ARM_2D_OP_INFO_PARAM_HAS_SOURCE_MASK   _BV(2)

opcode has source mask info

◆ ARM_2D_OP_INFO_PARAM_HAS_TARGET_MASK

#define ARM_2D_OP_INFO_PARAM_HAS_TARGET_MASK   _BV(3)

opcode has target mask info

◆ ARM_2D_OP_INFO_PARAM_HAS_ORIGIN

#define ARM_2D_OP_INFO_PARAM_HAS_ORIGIN   _BV(4)

opcode has original tile info

◆ ARM_2D_OP_INFO_PARAM_TILES_MASK

#define ARM_2D_OP_INFO_PARAM_TILES_MASK
Value:
( \
ARM_2D_OP_INFO_PARAM_HAS_SOURCE | \
ARM_2D_OP_INFO_PARAM_HAS_TARGET | \
ARM_2D_OP_INFO_PARAM_HAS_SOURCE_MASK | \
ARM_2D_OP_INFO_PARAM_HAS_TARGET_MASK | \
ARM_2D_OP_INFO_PARAM_HAS_ORIGIN )

a bitmask for INFO_PARAM_HAS_xxxx bitfields

◆ __ARM_2D_OP_STATUS_BUSY_msk

#define __ARM_2D_OP_STATUS_BUSY_msk   (1 << 4)

bitmask for the busy flag

◆ __ARM_2D_OP_STATUS_IO_ERROR_msk

#define __ARM_2D_OP_STATUS_IO_ERROR_msk   (1 << 5)

bitmask for the IO error flag

◆ __ARM_2D_OP_STATUS_CPL_msk

#define __ARM_2D_OP_STATUS_CPL_msk   (1 << 6)

bitmask for the complete flag

◆ __ARM_2D_HAS_HELIUM__

#define __ARM_2D_HAS_HELIUM__   0

target MCU has no Helium extension

◆ __ARM_2D_HAS_HELIUM_INTEGER__

#define __ARM_2D_HAS_HELIUM_INTEGER__   0

target MCU has no Helium integer extension

◆ __ARM_2D_HAS_HELIUM_FLOAT__

#define __ARM_2D_HAS_HELIUM_FLOAT__   0

target MCU has no Helium floating point extension

◆ __ARM_2D_HAS_ACI__

#define __ARM_2D_HAS_ACI__   0

target MCU has no ACI implementation

◆ __ARM_2D_HAS_TIGHTLY_COUPLED_ACC__

#define __ARM_2D_HAS_TIGHTLY_COUPLED_ACC__   0

target MCU has no tightly coupled acceleration (other than ACI)

◆ __ARM_2D_HAS_HW_ACC__

#define __ARM_2D_HAS_HW_ACC__   0

target MCU has no dedicated hardware (async) acceleration

◆ __ARM_2D_HAS_ASYNC__

#define __ARM_2D_HAS_ASYNC__   1

enable asynchronous mode (enable pipeline)

◆ __ARM_2D_CFG_DEFAULT_SUB_TASK_POOL_SIZE__

#define __ARM_2D_CFG_DEFAULT_SUB_TASK_POOL_SIZE__   4

default pool size for sub-tasks

◆ __ARM_2D_HAS_FPU__

#define __ARM_2D_HAS_FPU__   0

target MCU has no FPU

◆ __ARM_2D_HAS_DSP__

#define __ARM_2D_HAS_DSP__   0

target MCU has no DSP extension

◆ __ARM_2D_HAS_ANTI_ALIAS_TRANSFORM__

#define __ARM_2D_HAS_ANTI_ALIAS_TRANSFORM__   0

disable the anti-alias support in transform operations

◆ __ARM_2D_CFG_FORCED_FIXED_POINT_TRANSFORM__

#define __ARM_2D_CFG_FORCED_FIXED_POINT_TRANSFORM__   1

use fixed point numbers in transform operations

Note
DO NOT define macro ARM_2D_CFG_FORCED_FIXED_POINT_TRANSFORM unless ! you sure about what you are doing.

◆ __ARM_2D_CFG_SUPPORT_COLOUR_CHANNEL_ACCESS__

#define __ARM_2D_CFG_SUPPORT_COLOUR_CHANNEL_ACCESS__   1

enable the support for CCCA8888

Note
In your application, if you do need to use RGBA8888 for some resources ! and you want to use colour channels (e.g. the alpha channel) in mask ! related APIs, please set this macro to 1 in your project.

◆ ARM_2D_VERSION_MAJOR

#define ARM_2D_VERSION_MAJOR   1

Major version.

◆ ARM_2D_VERSION_MINOR

#define ARM_2D_VERSION_MINOR   2

Minor version.

◆ ARM_2D_VERSION_PATCH

#define ARM_2D_VERSION_PATCH   0

Patch number.

◆ ARM_2D_VERSION_STR

#define ARM_2D_VERSION_STR   ""

tag

◆ ARM_2D_VERSION

#define ARM_2D_VERSION
Value:

arm-2d version number in decimal

◆ ARM_2D_OP_WAIT_ASYNC

#define ARM_2D_OP_WAIT_ASYNC (   ...)     arm_2d_op_wait_async((arm_2d_op_core_t *)(NULL,##__VA_ARGS__))

wait asynchronous operation complete

Parameters
[in]...[OPTIONAL] the address of the target OP (NULL or ignore means using the default OP)
Return values
truesync up with operation
falseoperation is busy

Typedef Documentation

◆ arm_2d_op_evt_handler_t

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

Parameters
[in]ptThisOPthe target 2D operation descriptor
[in]tResultthe operation result
[in]pTargetA user attached object
Returns
bool a boolean value to indicate whether the event has been handled

◆ arm_2d_evt_handler_t

typedef bool arm_2d_evt_handler_t(void *pTarget)

a prototype for generic event handlers

Parameters
pTargetA user attached object
Returns
bool a boolean value to indicate whether the event has been handled

◆ __arm_2d_low_level_io_t

an incomplete defintion which is only used for defining pointers

Enumeration Type Documentation

◆ arm_fsm_rt_t

finite-state-machine status return (Compatible with arm_status, minimal integer: int8_t)

Enumerator
arm_fsm_rt_err 

fsm error

arm_fsm_rt_cpl 

fsm complete

arm_fsm_rt_on_going 

fsm on-going

arm_fsm_rt_wait_for_obj 

fsm wait for IPC object

arm_fsm_rt_async 

fsm work asynchronously, please check it later.

arm_fsm_rt_wait_for_res 

wait for resource

◆ arm_2d_err_t

the error code for arm-2d (minimal integer: int8_t)

Enumerator
ARM_2D_ERR_INVALID_STATUS 

the target service is in an invalid status for an API

ARM_2D_ERR_NOT_AVAILABLE 

service is not available or not initialissed

ARM_2D_ERR_UNSUPPORTED_COLOUR 

the specified colour is not supported

ARM_2D_ERR_BUSY 

service is busy

ARM_2D_ERR_INSUFFICIENT_RESOURCE 

insufficient resource

ARM_2D_ERR_IO_BUSY 

HW accelerator is busy.

ARM_2D_ERR_IO_ERROR 

Generic HW error.

ARM_2D_ERR_MISSING_PARAM 

missing mandatory parameter

ARM_2D_ERR_INVALID_OP 

unsupported / invalid operation

ARM_2D_ERR_NOT_SUPPORT 

feature/service/operation is not supported

ARM_2D_ERR_OUT_OF_REGION 

the operation is out of target area

ARM_2D_ERR_INVALID_PARAM 

invalid parameter

ARM_2D_ERR_UNKNOWN 

generic or unknown errors

ARM_2D_ERR_NONE 

no error

ARM_2D_RT_FALSE 

false

ARM_2D_RT_TRUE 

true

◆ arm_2d_cmp_t

comparison result

Enumerator
ARM_2D_CMP_SMALLER 

the target is smaller than the reference

ARM_2D_CMP_EQUALS 

the target is equal to the reference

ARM_2D_CMP_LARGER 

the target is larger than the reference

◆ anonymous enum

anonymous enum

enumerations for colour attributes

Enumerator
ARM_2D_COLOUR_SZ_1BIT 

1 bit:black and white

ARM_2D_COLOUR_SZ_2BIT 

4 colours or 4 gray-levels

ARM_2D_COLOUR_SZ_4BIT 

16 colours or 16 gray-levels

ARM_2D_COLOUR_SZ_8BIT 

256 colours

ARM_2D_COLOUR_SZ_16BIT 

16bits

ARM_2D_COLOUR_SZ_32BIT 

true colour (32bit)

ARM_2D_COLOUR_SZ_24BIT 

true colour (24bit)

◆ anonymous enum

anonymous enum

enumerations for colour types

◆ anonymous enum

anonymous enum

the tile extension ID

Enumerator
ARM_2D_TILE_EXTENSION_NONE 

no extension in the tile.tInfo.Extension field

ARM_2D_TILE_EXTENSION_PFB 

contains PFB extension information

ARM_2D_TILE_EXTENSION_VRES 

contains Virtual resource extension information

◆ arm_2d_align_t

alignment

Enumerator
ARM_2D_ALIGN_LEFT 

align to left

ARM_2D_ALIGN_RIGHT 

align to right

ARM_2D_ALIGN_TOP 

align to top

ARM_2D_ALIGN_BOTTOM 

align to bottom

ARM_2D_ALIGN_CENTRE 

align to centre

ARM_2D_ALIGN_CENTRE_ALIAS 

align to centre

ARM_2D_ALIGN_TOP_LEFT 

align to top left corner

ARM_2D_ALIGN_TOP_RIGHT 

align to top right corner

ARM_2D_ALIGN_TOP_MIDDLE 

align to the middle of the top

ARM_2D_ALIGN_BOTTOM_LEFT 

align to bottom left corner

ARM_2D_ALIGN_BOTTOM_RIGHT 

align to bottom right corner

ARM_2D_ALIGN_BOTTOM_MIDDLE 

align to the middle of the bottom

ARM_2D_ALIGN_MIDDLE_LEFT 

align to the middle of the left side

ARM_2D_ALIGN_MIDDLE_RIGHT 

align to the middle of the right side

◆ arm_2d_mem_type_t

the enumeration type for describing memory types

Enumerator
ARM_2D_MEM_TYPE_UNSPECIFIED 

normal memory, we don't know its characterisics

ARM_2D_MEM_TYPE_SLOW 

for slow memories, such as SDRAM, DDRAM, external memory etc

ARM_2D_MEM_TYPE_FAST 

for fast memories, such as TCM, SRAM etc.

◆ anonymous enum

anonymous enum

how would you want to accelerate the 2d-operation

Enumerator
ARM_2D_PREF_ACC_USE_HW_IF_POSSIBLE 

Use hardware acceleration if possible, even if there is a long queue to wait.

ARM_2D_PREF_ACC_HW_ONLY 

Only use Hardware Acceleration, if it is not supported, IO error will be issued.

ARM_2D_PREF_ACC_SW_ONLY 

Only use software algorithm.

don't care, let the arm-2d library decide

Function Documentation

◆ __arm_2d_log_printf()

void __arm_2d_log_printf ( int32_t  nIndentLevel,
uint32_t  wChannelMask,
const char *  pchPrefix,
const char *  pchFormatString,
  ... 
)

an entry for log printf

Parameters
[in]nIndentLevelnumber of indents before print actual content
[in]wChannelMaska bit-mask to indicate the log channel
[in]pchPrefixa string used as prefix, we can use it to print content like function name, service name etc.
[in]pchFormatStringthe format string used in printf
[in]...the optional parameters

◆ arm_2d_init()

void arm_2d_init ( void  )

initialise arm-2d

◆ arm_2d_set_default_frame_buffer()

arm_2d_tile_t * arm_2d_set_default_frame_buffer ( const arm_2d_tile_t ptFrameBuffer)

set the default frame buffer

Parameters
ptFrameBufferthe new frame buffer,
Note
Passing NULL means using no default framebuffer
Returns
arm_2d_tile_t* the address of the old frame buffer

◆ arm_2d_get_default_frame_buffer()

arm_2d_tile_t * arm_2d_get_default_frame_buffer ( void  )

get the default frame buffer

Returns
arm_2d_tile_t* the address of the default frame buffer

◆ arm_2d_set_user_param()

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

Parameters
ptOPthe address of the target OP (NULL means using the default OP)
pUserParama user parameter (it can be used as a pointer)

◆ arm_2d_op_init()

arm_2d_op_core_t * arm_2d_op_init ( arm_2d_op_core_t ptOP,
size_t  tSize 
)

initialize an given opcode

Parameters
ptOPthe address of the target OP
tSizethe size of the opcode object
Returns
arm_2d_op_core_t * the address of the OP

◆ arm_2d_op_depose()

arm_2d_op_core_t * arm_2d_op_depose ( arm_2d_op_core_t ptOP,
size_t  tSize 
)

depose an given opcode

Parameters
ptOPthe address of the target OP
tSizethe size of the opcode object
Returns
arm_2d_op_core_t * the address of the OP

◆ arm_2d_op_attach_semaphore()

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

Parameters
ptOPthe address of the target OP (NULL means using the default OP)
pSemaphorea pointer points to a RTOS semaphore
Note
this API only available when ARM_2D_HAS_ASYNC is 1

◆ arm_2d_op_get_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

Parameters
ptOPthe address of the target OP (NULL means using the default OP)
Returns
uintptr_t the semaphore
Note
this API only available when ARM_2D_HAS_ASYNC is 1

◆ arm_2d_op_wait_async()

bool arm_2d_op_wait_async ( arm_2d_op_core_t ptOP)

wait asynchronous operation complete

Parameters
[in]ptOPthe address of the target OP (NULL means using the default OP)
Return values
truesync up with operation
falseoperation is busy

◆ arm_2d_get_op_status()

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.

//! wait for previous operation complete
do {
if (tStatus.bIOError) {
//! error detected
...
} else if (tStatus.bOpCpl) {
break;
}
} while(true);
Parameters
ptOPthe address of the target OP (NULL means using the default OP)
Returns
arm_2d_op_status_t the operation status

◆ arm_2d_task()

arm_fsm_rt_t arm_2d_task ( arm_2d_task_t ptTask)

arm-2d pixel pipeline task entery

Note
This function is TRHEAD-SAFE
Parameters
ptTaskthe address of an arm-2d task control block
Return values
arm_fsm_rt_cplThe 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_goingThe arm_2d_task yields
arm_fsm_rt_asyncYou shouldn't see this value
arm_fsm_rt_wait_for_objhardware accelerator wants to sync-up with applications.
(<0)Serious error is detected.

◆ __arm_2d_allocate_scratch_memory()

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

Parameters
wSizethe minimal size
nAlignthe alignment
tTypethe type of memory
Returns
void* the memory address

◆ __arm_2d_free_scratch_memory()

void __arm_2d_free_scratch_memory ( arm_2d_mem_type_t  tType,
void *  pBuff 
)

free a specified memory block

Parameters
tTypethe type of memory
pBuffthe address of the memory

◆ arm_2d_scratch_memory_new()

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

Parameters
[out]ptMemorythe address of an arm_2d_scratch_mem_t object to hold the result
[in]hwItemSizethe size of each item
[in]hwItemCountthe number of items
[in]hwAlignmentthe alignment requirement
[in]tTypethe type of memory
Returns
arm_2d_scratch_mem_t* the initialized the arm_2d_scratch_mem_t object address. NULL means failed to allocate scratch memory

◆ arm_2d_scratch_memory_free()

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

Parameters
[in]thetarget scratch memory descriptor
Returns
arm_2d_scratch_mem_t * the de-initialized the scratch memory descriptor

Variable Documentation

◆ ARM_2D_RUNTIME_FEATURE

arm_2d_runtime_feature_t ARM_2D_RUNTIME_FEATURE
extern

arm-2d runtime feature configuration

◆ ARM_2D_VERSION_INFO

const arm_2d_version_t ARM_2D_VERSION_INFO
extern

arm-2d version