1*4882a593Smuzhiyun /* GPL-2.0 WITH Linux-syscall-note OR Apache 2.0 */ 2*4882a593Smuzhiyun /* Copyright (c) 2021 Fuzhou Rockchip Electronics Co., Ltd */ 3*4882a593Smuzhiyun 4*4882a593Smuzhiyun #ifndef SRC_RT_MPI_INCLUDE_RK_COMM_TDE_H_ 5*4882a593Smuzhiyun #define SRC_RT_MPI_INCLUDE_RK_COMM_TDE_H_ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun #include "rk_type.h" 8*4882a593Smuzhiyun #include "rk_common.h" 9*4882a593Smuzhiyun #include "rk_comm_mb.h" 10*4882a593Smuzhiyun #include "rk_errno.h" 11*4882a593Smuzhiyun #include "rk_comm_video.h" 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #ifdef __cplusplus 14*4882a593Smuzhiyun #if __cplusplus 15*4882a593Smuzhiyun extern "C" { 16*4882a593Smuzhiyun #endif 17*4882a593Smuzhiyun #endif /* End of #ifdef __cplusplus */ 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun // error code 20*4882a593Smuzhiyun enum { 21*4882a593Smuzhiyun RK_ERR_NOT_ALIGNED = RK_ERR_BUTT - 1, /* < aligned error for position, stride, width */ 22*4882a593Smuzhiyun RK_ERR_MINIFICATION, /* < invalid minification */ 23*4882a593Smuzhiyun RK_ERR_CLIP_AREA, /* < clip area and operation area have no intersection */ 24*4882a593Smuzhiyun RK_ERR_JOB_TIMEOUT, /* < blocked job wait timeout */ 25*4882a593Smuzhiyun RK_ERR_UNSUPPORTED_OPERATION, /* < unsupported operation */ 26*4882a593Smuzhiyun RK_ERR_QUERY_TIMEOUT, /* < query time out */ 27*4882a593Smuzhiyun RK_ERR_INTERRUPT /* blocked job was interrupted */ 28*4882a593Smuzhiyun }; 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun #define RK_ERR_TDE_DEV_NOT_OPEN RK_DEF_ERR(RK_ID_TDE, RK_ERR_LEVEL_ERROR, RK_ERR_UNEXIST) 31*4882a593Smuzhiyun #define RK_ERR_TDE_DEV_OPEN_FAILED RK_DEF_ERR(RK_ID_TDE, RK_ERR_LEVEL_ERROR, RK_ERR_BUSY) 32*4882a593Smuzhiyun #define RK_ERR_TDE_NULL_PTR RK_DEF_ERR(RK_ID_TDE, RK_ERR_LEVEL_ERROR, RK_ERR_NULL_PTR) 33*4882a593Smuzhiyun #define RK_ERR_TDE_NO_MEM RK_DEF_ERR(RK_ID_TDE, RK_ERR_LEVEL_ERROR, RK_ERR_NOMEM) 34*4882a593Smuzhiyun #define RK_ERR_TDE_INVALID_HANDLE RK_DEF_ERR(RK_ID_TDE, RK_ERR_LEVEL_ERROR, RK_ERR_INVALID_DEVID) 35*4882a593Smuzhiyun #define RK_ERR_TDE_INVALID_PARA RK_DEF_ERR(RK_ID_TDE, RK_ERR_LEVEL_ERROR, RK_ERR_ILLEGAL_PARAM) 36*4882a593Smuzhiyun #define RK_ERR_TDE_NOT_ALIGNED RK_DEF_ERR(RK_ID_TDE, RK_ERR_LEVEL_ERROR, RK_ERR_NOT_ALIGNED) 37*4882a593Smuzhiyun #define RK_ERR_TDE_MINIFICATION RK_DEF_ERR(RK_ID_TDE, RK_ERR_LEVEL_ERROR, RK_ERR_MINIFICATION) 38*4882a593Smuzhiyun #define RK_ERR_TDE_CLIP_AREA RK_DEF_ERR(RK_ID_TDE, RK_ERR_LEVEL_ERROR, RK_ERR_CLIP_AREA) 39*4882a593Smuzhiyun #define RK_ERR_TDE_JOB_TIMEOUT RK_DEF_ERR(RK_ID_TDE, RK_ERR_LEVEL_ERROR, RK_ERR_JOB_TIMEOUT) 40*4882a593Smuzhiyun #define RK_ERR_TDE_UNSUPPORTED_OPERATION RK_DEF_ERR(RK_ID_TDE, RK_ERR_LEVEL_ERROR, RK_ERR_UNSUPPORTED_OPERATION) 41*4882a593Smuzhiyun #define RK_ERR_TDE_QUERY_TIMEOUT RK_DEF_ERR(RK_ID_TDE, RK_ERR_LEVEL_ERROR, RK_ERR_QUERY_TIMEOUT) 42*4882a593Smuzhiyun #define RK_ERR_TDE_INTERRUPT RK_DEF_ERR(RK_ID_TDE, RK_ERR_LEVEL_ERROR, RK_ERR_INTERRUPT) 43*4882a593Smuzhiyun 44*4882a593Smuzhiyun /* Definition of the TDE handle */ 45*4882a593Smuzhiyun typedef RK_S32 TDE_HANDLE; 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun typedef enum rkTDE_ALUCMD_E { 48*4882a593Smuzhiyun TDE_OSD_COVER = 0x100, /* not blend */ 49*4882a593Smuzhiyun TDE_OSD_DST_ALPHA = 0x105, /* blend:src data alpha premultipy */ 50*4882a593Smuzhiyun TDE_OSD_ALL_ALPHA = 0x405 /* blend:src data not alpha premultipy */ 51*4882a593Smuzhiyun } TDE_ALUCMD_E; 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun /* Structure of the bitmap information set by customers */ 54*4882a593Smuzhiyun typedef struct rkTDE_SURFACE_S { 55*4882a593Smuzhiyun MB_BLK pMbBlk;/* <Header address of a bitmap or the Y component */ 56*4882a593Smuzhiyun PIXEL_FORMAT_E enColorFmt; /* <Color format */ 57*4882a593Smuzhiyun RK_U32 u32Height; /* <Bitmap height */ 58*4882a593Smuzhiyun RK_U32 u32Width; /* <Bitmap width */ 59*4882a593Smuzhiyun COMPRESS_MODE_E enComprocessMode; /* compress type */ 60*4882a593Smuzhiyun RK_BOOL bAlphaExt1555; /* <Whether to enable the alpha extension of an ARGB1555 bitmap. */ 61*4882a593Smuzhiyun RK_U8 u8Alpha0; /* <Values of alpha0 and alpha1, used as the ARGB1555 format */ 62*4882a593Smuzhiyun RK_U8 u8Alpha1; /* <Values of alpha0 and alpha1, used as the ARGB1555 format */ 63*4882a593Smuzhiyun } TDE_SURFACE_S; 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun /* Definition of the TDE rectangle */ 66*4882a593Smuzhiyun typedef struct rkTDE_RECT_S { 67*4882a593Smuzhiyun RK_S32 s32Xpos; /* <Horizontal coordinate */ 68*4882a593Smuzhiyun RK_S32 s32Ypos; /* <Vertical coordinate */ 69*4882a593Smuzhiyun RK_U32 u32Width; /* <Width */ 70*4882a593Smuzhiyun RK_U32 u32Height; /* <Height */ 71*4882a593Smuzhiyun } TDE_RECT_S; 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun /* Definition of colorkey modes */ 74*4882a593Smuzhiyun typedef enum rkTDE_COLORKEY_MODE_E { 75*4882a593Smuzhiyun TDE_COLORKEY_MODE_NONE = 0, /* <No colorkey */ 76*4882a593Smuzhiyun /* 77*4882a593Smuzhiyun * <When performing the colorkey operation on the foreground bitmap, 78*4882a593Smuzhiyun * you need to perform this operation before the CLUT for color extension and perform this operation 79*4882a593Smuzhiyun * after the CLUT for color correction. 80*4882a593Smuzhiyun */ 81*4882a593Smuzhiyun TDE_COLORKEY_MODE_FOREGROUND, 82*4882a593Smuzhiyun TDE_COLORKEY_MODE_BACKGROUND, /* <Perform the colorkey operation on the background bitmap */ 83*4882a593Smuzhiyun TDE_COLORKEY_MODE_BUTT 84*4882a593Smuzhiyun } TDE_COLORKEY_MODE_E; 85*4882a593Smuzhiyun 86*4882a593Smuzhiyun /* Definition of blit operation options */ 87*4882a593Smuzhiyun typedef struct rkTDE_OPT_S { 88*4882a593Smuzhiyun TDE_COLORKEY_MODE_E enColorKeyMode; /* <Colorkey mode */ 89*4882a593Smuzhiyun RK_U32 unColorKeyValue; /* <Colorkey value */ 90*4882a593Smuzhiyun MIRROR_E enMirror; /* <Mirror type */ 91*4882a593Smuzhiyun TDE_RECT_S stClipRect; /* <Definition of the clipping area */ 92*4882a593Smuzhiyun RK_U32 u32GlobalAlpha; /* <Global alpha value */ 93*4882a593Smuzhiyun } TDE_OPT_S; 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun #ifdef __cplusplus 96*4882a593Smuzhiyun #if __cplusplus 97*4882a593Smuzhiyun } 98*4882a593Smuzhiyun #endif 99*4882a593Smuzhiyun #endif /* __cplusplus */ 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun #endif /* SRC_RT_MPI_INCLUDE_RK_COMM_TDE_H_ */ 102