xref: /OK3568_Linux_fs/external/rockit/mpi/sdk/include/rk_comm_tde.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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