315 lines
8.6 KiB
C
Executable File
315 lines
8.6 KiB
C
Executable File
/**
|
|
@brief Header file of hdal gximage module.\n
|
|
This file contains the functions which is related to hdal gximage in the chip.
|
|
|
|
@file hd_gximage.h
|
|
|
|
@ingroup gximage
|
|
|
|
@note Nothing.
|
|
|
|
Copyright Novatek Microelectronics Corp. 2018. All rights reserved.
|
|
*/
|
|
|
|
#ifndef _HD_GXIMAGE_H_
|
|
#define _HD_GXIMAGE_H_
|
|
|
|
#define GFX_USER_VERSION 20181022
|
|
|
|
#define GFX_MAX_PLANE_NUM 3
|
|
#define GFX_MAX_MULTI_OUT_NUM 3
|
|
|
|
#define MAX_JOB_IN_A_LIST 8
|
|
|
|
typedef enum {
|
|
GFX_USER_CMD_NULL,
|
|
GFX_USER_CMD_NULL1,
|
|
GFX_USER_CMD_NULL2,
|
|
GFX_USER_CMD_NULL3,
|
|
GFX_USER_CMD_INIT,
|
|
GFX_USER_CMD_UNINIT,
|
|
GFX_USER_CMD_COPY,
|
|
GFX_USER_CMD_DMA_COPY,
|
|
GFX_USER_CMD_SCALE,
|
|
GFX_USER_CMD_ROTATE,
|
|
GFX_USER_CMD_COLOR_TRANSFORM,
|
|
GFX_USER_CMD_DRAW_LINE,
|
|
GFX_USER_CMD_DRAW_RECT,
|
|
GFX_USER_CMD_ARITHMETIC,
|
|
GFX_USER_CMD_JOB_LIST,
|
|
GFX_USER_CMD_ISE_SCALE_Y8,
|
|
GFX_USER_CMD_AFFINE,
|
|
GFX_USER_CMD_I8_COLORKEY,
|
|
GFX_USER_CMD_SCALE_LINK_LIST_BUF,
|
|
GFX_USER_CMD_SCALE_LINK_LIST,
|
|
GFX_USER_CMD_ALPHA_BLEND,
|
|
GFX_USER_CMD_RAW_GRAPHIC,
|
|
GFX_USER_CMD_SET_ABORT,
|
|
GFX_USER_CMD_DRAW_LINE_BY_CPU,
|
|
GFX_USER_CMD_MAX,
|
|
ENUM_DUMMY4WORD(GFX_USER_CMD)
|
|
} GFX_USER_CMD;
|
|
|
|
typedef enum _GFX_GRPH_ENGINE {
|
|
GFX_GRPH_ENGINE_1 = 0,
|
|
GFX_GRPH_ENGINE_2,
|
|
GFX_GRPH_ENGINE_MAX,
|
|
ENUM_DUMMY4WORD(GFX_GRPH_ENGINE)
|
|
} GFX_GRPH_ENGINE;
|
|
|
|
typedef enum {
|
|
GFX_ARITH_BIT_NULL,
|
|
GFX_ARITH_BIT_8,
|
|
GFX_ARITH_BIT_16,
|
|
GFX_ARITH_BIT_MAX,
|
|
ENUM_DUMMY4WORD(GFX_ARITH_BIT)
|
|
} GFX_ARITH_BIT;
|
|
|
|
typedef enum {
|
|
GFX_ARITH_OP_NULL,
|
|
GFX_ARITH_OP_PLUS,
|
|
GFX_ARITH_OP_MINUS,
|
|
GFX_ARITH_OP_MULTIPLY,
|
|
GFX_ARITH_OP_MAX,
|
|
ENUM_DUMMY4WORD(GFX_ARITH_OP)
|
|
} GFX_ARITH_OP;
|
|
|
|
typedef enum {
|
|
GFX_ROTATE_ANGLE_NULL,
|
|
GFX_ROTATE_ANGLE_90,
|
|
GFX_ROTATE_ANGLE_180,
|
|
GFX_ROTATE_ANGLE_270,
|
|
GFX_ROTATE_ANGLE_MIRROR_X,
|
|
GFX_ROTATE_ANGLE_MIRROR_Y,
|
|
GFX_ROTATE_ANGLE_MAX,
|
|
ENUM_DUMMY4WORD(GFX_ROTATE_ANGLE)
|
|
} GFX_ROTATE_ANGLE;
|
|
|
|
typedef enum _GFX_SCALE_METHOD {
|
|
GFX_SCALE_METHOD_NULL,
|
|
GFX_SCALE_METHOD_BICUBIC,
|
|
GFX_SCALE_METHOD_BILINEAR,
|
|
GFX_SCALE_METHOD_NEAREST,
|
|
GFX_SCALE_METHOD_INTEGRATION,
|
|
GFX_SCALE_METHOD_MAX,
|
|
ENUM_DUMMY4WORD(GFX_SCALE_METHOD)
|
|
} GFX_SCALE_METHOD;
|
|
|
|
typedef enum _GFX_ISE_ENGINE {
|
|
GFX_ISE_ENGINE_1 = 0,
|
|
GFX_ISE_ENGINE_2,
|
|
GFX_ISE_ENGINE_MAX,
|
|
ENUM_DUMMY4WORD(GFX_ISE_ENGINE)
|
|
} GFX_ISE_ENGINE;
|
|
|
|
typedef enum _GFX_RECT_TYPE {
|
|
GFX_RECT_TYPE_NULL,
|
|
GFX_RECT_TYPE_SOLID,
|
|
GFX_RECT_TYPE_HOLLOW,
|
|
GFX_RECT_TYPE_MAX,
|
|
ENUM_DUMMY4WORD(GFX_RECT_TYPE)
|
|
} GFX_RECT_TYPE;
|
|
|
|
|
|
typedef enum {
|
|
GFX_SET_DRV_ABORT,
|
|
ENUM_DUMMY4WORD(GFX_KDRV_CMD)
|
|
} GFX_KDRV_CMD;
|
|
|
|
typedef struct _GFX_IMG_BUF {
|
|
UINT32 w;
|
|
UINT32 h;
|
|
VDO_PXLFMT format;
|
|
UINT32 p_phy_addr[GFX_MAX_PLANE_NUM];
|
|
UINT32 lineoffset[GFX_MAX_PLANE_NUM];
|
|
UINT32 palette[16];
|
|
} GFX_IMG_BUF;
|
|
|
|
typedef struct _GFX_COPY {
|
|
GFX_IMG_BUF src_img;
|
|
GFX_IMG_BUF dst_img;
|
|
INT32 src_x;
|
|
INT32 src_y;
|
|
INT32 src_w;
|
|
INT32 src_h;
|
|
INT32 dst_x;
|
|
INT32 dst_y;
|
|
UINT32 colorkey;
|
|
UINT32 alpha;
|
|
UINT32 flush;
|
|
GFX_GRPH_ENGINE engine;
|
|
} GFX_COPY;
|
|
|
|
typedef struct _GFX_DMA_COPY {
|
|
UINT32 p_src;
|
|
UINT32 p_dst;
|
|
UINT32 length;
|
|
} GFX_DMA_COPY;
|
|
|
|
typedef struct _GFX_SCALE {
|
|
GFX_IMG_BUF src_img;
|
|
GFX_IMG_BUF dst_img;
|
|
INT32 src_x;
|
|
INT32 src_y;
|
|
INT32 src_w;
|
|
INT32 src_h;
|
|
INT32 dst_x;
|
|
INT32 dst_y;
|
|
INT32 dst_w;
|
|
INT32 dst_h;
|
|
GFX_SCALE_METHOD method;
|
|
INT32 flush;
|
|
} GFX_SCALE;
|
|
|
|
typedef struct _GFX_ROTATE {
|
|
GFX_IMG_BUF src_img;
|
|
GFX_IMG_BUF dst_img;
|
|
INT32 src_x;
|
|
INT32 src_y;
|
|
INT32 src_w;
|
|
INT32 src_h;
|
|
INT32 dst_x;
|
|
INT32 dst_y;
|
|
UINT32 angle;
|
|
UINT32 flush;
|
|
} GFX_ROTATE;
|
|
|
|
typedef struct _GFX_COLOR_TRANSFORM {
|
|
GFX_IMG_BUF src_img;
|
|
GFX_IMG_BUF dst_img;
|
|
UINT32 p_tmp_buf;
|
|
UINT32 tmp_buf_size;
|
|
UINT32 p_lookup_table[GFX_MAX_PLANE_NUM];
|
|
} GFX_COLOR_TRANSFORM;
|
|
|
|
typedef struct _GFX_DRAW_LINE {
|
|
GFX_IMG_BUF dst_img;
|
|
UINT32 color;
|
|
UINT32 start_x;
|
|
UINT32 start_y;
|
|
UINT32 end_x;
|
|
UINT32 end_y;
|
|
UINT32 thickness;
|
|
UINT32 flush;
|
|
} GFX_DRAW_LINE;
|
|
|
|
typedef struct _GFX_DRAW_RECT {
|
|
GFX_IMG_BUF dst_img;
|
|
GFX_RECT_TYPE type;
|
|
UINT32 color;
|
|
UINT32 x;
|
|
UINT32 y;
|
|
UINT32 w;
|
|
UINT32 h;
|
|
UINT32 thickness;
|
|
UINT32 flush;
|
|
} GFX_DRAW_RECT;
|
|
|
|
typedef struct _GFX_ARITHMETIC {
|
|
UINT32 p_op1;
|
|
UINT32 p_op2;
|
|
UINT32 p_out;
|
|
UINT32 size;
|
|
GFX_ARITH_OP operation;
|
|
GFX_ARITH_BIT bits;
|
|
} GFX_ARITHMETIC;
|
|
|
|
typedef struct _GFX_ISE_SCALE_Y8 {
|
|
INT32 src_w;
|
|
INT32 src_h;
|
|
INT32 dst_w;
|
|
INT32 dst_h;
|
|
UINT32 p_src;
|
|
UINT32 src_loff;
|
|
UINT32 p_dst;
|
|
UINT32 dst_loff;
|
|
GFX_SCALE_METHOD method;
|
|
GFX_ISE_ENGINE engine;
|
|
} GFX_ISE_SCALE_Y8;
|
|
|
|
typedef struct _GFX_AFFINE {
|
|
INT32 w;
|
|
INT32 h;
|
|
INT32 plane_num;
|
|
UINT32 p_src[GFX_MAX_PLANE_NUM];
|
|
UINT32 src_loff[GFX_MAX_PLANE_NUM];
|
|
UINT32 p_dst[GFX_MAX_PLANE_NUM];
|
|
UINT32 dst_loff[GFX_MAX_PLANE_NUM];
|
|
UINT32 uvpack[GFX_MAX_PLANE_NUM];
|
|
float fCoeffA[GFX_MAX_PLANE_NUM];
|
|
float fCoeffB[GFX_MAX_PLANE_NUM];
|
|
float fCoeffC[GFX_MAX_PLANE_NUM];
|
|
float fCoeffD[GFX_MAX_PLANE_NUM];
|
|
float fCoeffE[GFX_MAX_PLANE_NUM];
|
|
float fCoeffF[GFX_MAX_PLANE_NUM];
|
|
} GFX_AFFINE;
|
|
|
|
typedef struct _GFX_SCALE_LINK_LIST_BUF {
|
|
UINT32 p_addr;
|
|
UINT32 length;
|
|
} GFX_SCALE_LINK_LIST_BUF;
|
|
|
|
typedef struct _GFX_SCALE_DMA_FLUSH {
|
|
GFX_IMG_BUF src_img;
|
|
GFX_IMG_BUF dst_img;
|
|
INT32 src_x;
|
|
INT32 src_y;
|
|
INT32 src_w;
|
|
INT32 src_h;
|
|
INT32 dst_x;
|
|
INT32 dst_y;
|
|
INT32 dst_w;
|
|
INT32 dst_h;
|
|
GFX_SCALE_METHOD method;
|
|
int in_buf_flush;
|
|
int out_buf_flush;
|
|
} GFX_SCALE_DMA_FLUSH;
|
|
|
|
typedef struct _GFX_ALPHA_BLEND {
|
|
GFX_IMG_BUF src_img;
|
|
GFX_IMG_BUF dst_img;
|
|
INT32 dst_x;
|
|
INT32 dst_y;
|
|
UINT32 p_alpha;
|
|
UINT32 flush;
|
|
} GFX_ALPHA_BLEND;
|
|
|
|
typedef struct _GFX_RAW_GRAPHIC {
|
|
UINT32 engine;
|
|
UINT32 p_addr;
|
|
UINT32 length;
|
|
UINT32 flush;
|
|
} GFX_RAW_GRAPHIC;
|
|
|
|
typedef struct _GFX_ABORT {
|
|
UINT32 engine;
|
|
} GFX_ABORT;
|
|
|
|
typedef struct _GFX_USER_DATA {
|
|
UINT32 version;
|
|
GFX_USER_CMD cmd;
|
|
union {
|
|
GFX_COPY copy;
|
|
GFX_DMA_COPY dma_copy;
|
|
GFX_SCALE scale;
|
|
GFX_ROTATE rotate;
|
|
GFX_COLOR_TRANSFORM color_transform;
|
|
GFX_DRAW_LINE draw_line;
|
|
GFX_DRAW_RECT draw_rect;
|
|
GFX_ARITHMETIC arithmetic;
|
|
GFX_ISE_SCALE_Y8 ise_scale_y8;
|
|
GFX_AFFINE affine;
|
|
GFX_SCALE_LINK_LIST_BUF scale_link_list_buf;
|
|
GFX_SCALE_DMA_FLUSH ise_scale_dma_flush;
|
|
GFX_ALPHA_BLEND alpha_blend;
|
|
GFX_RAW_GRAPHIC raw_graphic;
|
|
GFX_ABORT abort;
|
|
} data;
|
|
} GFX_USER_DATA;
|
|
|
|
#if defined(__FREERTOS)
|
|
extern int nvt_gfx_init(void);
|
|
extern int nvt_gfx_ioctl(int f, unsigned int cmd, void *arg);
|
|
#endif
|
|
#endif //_HD_GXIMAGE_H_
|