nt9856x/code/hdal/vendor/media/include/vendor_gfx.h
2023-03-28 15:07:53 +08:00

380 lines
12 KiB
C
Executable File

#ifndef __VENDOR_GFX_H__
#define __VENDOR_GFX_H__
#ifdef __cplusplus
extern "C" {
#endif
#include "hdal.h"
typedef enum _VENDOR_GFX_ISE_ENGINE {
VENDOR_GFX_ISE_ENGINE_1 = 0,
VENDOR_GFX_ISE_ENGINE_2,
VENDOR_GFX_ISE_ENGINE_MAX,
ENUM_DUMMY4WORD(VENDOR_GFX_ISE_ENGINE)
} VENDOR_GFX_ISE_ENGINE;
typedef struct _VENDOR_GFX_ISE_SCALE_Y8 {
HD_DIM src_dim;
HD_DIM dst_dim;
UINT32 p_src_phy_addr;
UINT32 src_loff;
UINT32 p_dst_phy_addr;
UINT32 dst_loff;
HD_GFX_SCALE_QUALITY quality;
VENDOR_GFX_ISE_ENGINE engine;
} VENDOR_GFX_ISE_SCALE_Y8;
HD_RESULT vendor_gfx_ise_scale_y8(VENDOR_GFX_ISE_SCALE_Y8 *p_param);
typedef struct _VENDOR_GFX_AFFINE {
HD_GFX_IMG_BUF src_img;//only support yuv420 packed
HD_GFX_IMG_BUF dst_img;//format, width, height and lineoffset are the same with src_img
float fCoeffA;
float fCoeffB;
float fCoeffC;
float fCoeffD;
float fCoeffE;
float fCoeffF;
} VENDOR_GFX_AFFINE;
typedef struct _VENDOR_GFX_SCALE_LINK_LIST_BUF {
UINT32 p_addr;
UINT32 length;
} VENDOR_GFX_SCALE_LINK_LIST_BUF;
HD_RESULT vendor_gfx_affine(VENDOR_GFX_AFFINE *p_param);
HD_RESULT vendor_gfx_I8_colorkey(HD_GFX_COPY *p_param);
HD_RESULT vendor_gfx_scale_link_list_buf(VENDOR_GFX_SCALE_LINK_LIST_BUF *p_param);
typedef struct _VENDOR_GFX_SCALE_DMA_FLUSH {
HD_GFX_IMG_BUF src_img;
HD_GFX_IMG_BUF dst_img;
HD_IRECT src_region;
HD_IRECT dst_region;
HD_GFX_SCALE_QUALITY quality;
int in_buf_flush;
int out_buf_flush;
} VENDOR_GFX_SCALE_DMA_FLUSH;
HD_RESULT vendor_gfx_scale_link_list(VENDOR_GFX_SCALE_DMA_FLUSH *p_param, int num);
HD_RESULT vendor_gfx_scale_dma_flush(HD_GFX_SCALE *p_param, int flush);
typedef struct _VENDOR_GFX_ALPHA_BLEND {
HD_GFX_IMG_BUF src_img;
HD_GFX_IMG_BUF dst_img;
HD_IPOINT dst_pos;
UINT32 p_alpha;
} VENDOR_GFX_ALPHA_BLEND;
HD_RESULT vendor_gfx_alpha_blend(VENDOR_GFX_ALPHA_BLEND *p_param);
HD_RESULT vendor_gfx_alpha_blend_no_flush(VENDOR_GFX_ALPHA_BLEND *p_param);
typedef enum _VENDOR_GFX_ENG_ID {
VENDOR_GFX_ENG_ID1 = 0,
VENDOR_GFX_ENG_ID2,
ENUM_DUMMY4WORD(VENDOR_GFX_ENG_ID)
} VENDOR_GFX_ENG_ID;
typedef enum _VENDOR_GFX_GRPH_CMD {
VENDOR_GFX_GRPH_CMD_ROT_90,
VENDOR_GFX_GRPH_CMD_ROT_270,
VENDOR_GFX_GRPH_CMD_ROT_180,
VENDOR_GFX_GRPH_CMD_HRZ_FLIP,
VENDOR_GFX_GRPH_CMD_VTC_FLIP,
VENDOR_GFX_GRPH_CMD_HRZ_FLIP_ROT_90,
VENDOR_GFX_GRPH_CMD_HRZ_FLIP_ROT_270,
VENDOR_GFX_GRPH_CMD_ROT_0 = 7,
VENDOR_GFX_GRPH_CMD_VCOV = 8,
VENDOR_GFX_GRPH_CMD_GOPMAX,
VENDOR_GFX_GRPH_CMD_A_COPY = 0x10000,
VENDOR_GFX_GRPH_CMD_PLUS_SHF,
VENDOR_GFX_GRPH_CMD_MINUS_SHF,
VENDOR_GFX_GRPH_CMD_COLOR_EQ,
VENDOR_GFX_GRPH_CMD_COLOR_LE,
VENDOR_GFX_GRPH_CMD_A_AND_B,
VENDOR_GFX_GRPH_CMD_A_OR_B,
VENDOR_GFX_GRPH_CMD_A_XOR_B,
VENDOR_GFX_GRPH_CMD_TEXT_COPY,
VENDOR_GFX_GRPH_CMD_TEXT_AND_A,
VENDOR_GFX_GRPH_CMD_TEXT_OR_A,
VENDOR_GFX_GRPH_CMD_TEXT_XOR_A,
VENDOR_GFX_GRPH_CMD_TEXT_AND_AB,
VENDOR_GFX_GRPH_CMD_BLENDING,
VENDOR_GFX_GRPH_CMD_ACC,
VENDOR_GFX_GRPH_CMD_MULTIPLY_DIV,
VENDOR_GFX_GRPH_CMD_PACKING,
VENDOR_GFX_GRPH_CMD_DEPACKING,
VENDOR_GFX_GRPH_CMD_TEXT_MUL,
VENDOR_GFX_GRPH_CMD_PLANE_BLENDING,
VENDOR_GFX_GRPH_CMD_1D_LUT = VENDOR_GFX_GRPH_CMD_PLANE_BLENDING + 3,
VENDOR_GFX_GRPH_CMD_2D_LUT,
VENDOR_GFX_GRPH_CMD_RGBYUV_BLEND,
VENDOR_GFX_GRPH_CMD_RGBYUV_COLORKEY,
VENDOR_GFX_GRPH_CMD_RGB_INVERT,
VENDOR_GFX_GRPH_CMD_AOPMAX,
VENDOR_GFX_GRPH_CMD_MINUS_SHF_ABS = 0x10000 + 0x80,
VENDOR_GFX_GRPH_CMD_COLOR_MR,
VENDOR_GFX_GRPH_CMD_COLOR_FILTER,
ENUM_DUMMY4WORD(VENDOR_GFX_GRPH_CMD)
} VENDOR_GFX_GRPH_CMD;
typedef enum _GRPH_VENDOR_GFX_FORMAT {
VENDOR_GFX_GRPH_FORMAT_1BIT,
VENDOR_GFX_GRPH_FORMAT_4BITS,
VENDOR_GFX_GRPH_FORMAT_8BITS,
VENDOR_GFX_GRPH_FORMAT_16BITS,
VENDOR_GFX_GRPH_FORMAT_16BITS_UVPACK,
VENDOR_GFX_GRPH_FORMAT_16BITS_UVPACK_U,
VENDOR_GFX_GRPH_FORMAT_16BITS_UVPACK_V,
VENDOR_GFX_GRPH_FORMAT_16BITS_RGB565,
VENDOR_GFX_GRPH_FORMAT_32BITS,
VENDOR_GFX_GRPH_FORMAT_32BITS_ARGB8888_RGB,
VENDOR_GFX_GRPH_FORMAT_32BITS_ARGB8888_A,
VENDOR_GFX_GRPH_FORMAT_16BITS_ARGB1555_RGB,
VENDOR_GFX_GRPH_FORMAT_16BITS_ARGB1555_A,
VENDOR_GFX_GRPH_FORMAT_16BITS_ARGB4444_RGB,
VENDOR_GFX_GRPH_FORMAT_16BITS_ARGB4444_A,
VENDOR_GFX_GRPH_FORMAT_PALETTE_1BIT,
VENDOR_GFX_GRPH_FORMAT_PALETTE_2BITS,
VENDOR_GFX_GRPH_FORMAT_PALETTE_4BITS,
ENUM_DUMMY4WORD(VENDOR_GFX_GRPH_FORMAT)
} VENDOR_GFX_GRPH_FORMAT;
typedef enum _VENDOR_GFX_GRPH_IMG_ID {
VENDOR_GFX_GRPH_IMG_ID_A,
VENDOR_GFX_GRPH_IMG_ID_B,
VENDOR_GFX_GRPH_IMG_ID_C,
ENUM_DUMMY4WORD(VENDOR_GFX_GRPH_IMG_ID)
} VENDOR_GFX_GRPH_IMG_ID;
typedef enum _VENDOR_GFX_GRPH_YUV_FMT {
VENDOR_GFX_GRPH_YUV_422,
VENDOR_GFX_GRPH_YUV_411,
ENUM_DUMMY4WORD(VENDOR_GFX_GRPH_YUV_FMT)
} VENDOR_GFX_GRPH_YUV_FMT;
typedef enum _VENDOR_GFX_GRPH_UV_SUBSAMPLE {
VENDOR_GFX_GRPH_UV_COCITED,
VENDOR_GFX_GRPH_UV_CENTERED,
ENUM_DUMMY4WORD(VENDOR_GFX_GRPH_UV_SUBSAMPLE)
} VENDOR_GFX_GRPH_UV_SUBSAMPLE;
typedef enum {
VENDOR_GFX_GRPH_MOSAIC_FMT_NORMAL,
VENDOR_GFX_GRPH_MOSAIC_FMT_YUV444,
ENUM_DUMMY4WORD(VENDOR_GFX_GRPH_MOSAIC_FMT)
} VENDOR_GFX_GRPH_MOSAIC_FMT;
typedef enum _VENDOR_GFX_GRPH_PROPERTY_ID {
VENDOR_GFX_GRPH_PROPERTY_ID_NORMAL,
VENDOR_GFX_GRPH_PROPERTY_ID_U,
VENDOR_GFX_GRPH_PROPERTY_ID_V,
VENDOR_GFX_GRPH_PROPERTY_ID_R,
VENDOR_GFX_GRPH_PROPERTY_ID_G,
VENDOR_GFX_GRPH_PROPERTY_ID_B,
VENDOR_GFX_GRPH_PROPERTY_ID_A,
VENDOR_GFX_GRPH_PROPERTY_ID_ACC_SKIPCTRL,
VENDOR_GFX_GRPH_PROPERTY_ID_ACC_FULL_FLAG,
VENDOR_GFX_GRPH_PROPERTY_ID_PIXEL_CNT,
VENDOR_GFX_GRPH_PROPERTY_ID_VALID_PIXEL_CNT,
VENDOR_GFX_GRPH_PROPERTY_ID_ACC_RESULT,
VENDOR_GFX_GRPH_PROPERTY_ID_ACC_RESULT2,
VENDOR_GFX_GRPH_PROPERTY_ID_LUT_BUF,
VENDOR_GFX_GRPH_PROPERTY_ID_YUVFMT,
VENDOR_GFX_GRPH_PROPERTY_ID_ALPHA0_INDEX,
VENDOR_GFX_GRPH_PROPERTY_ID_ALPHA1_INDEX,
VENDOR_GFX_GRPH_PROPERTY_ID_INVRGB,
VENDOR_GFX_GRPH_PROPERTY_ID_PAL_BUF,
VENDOR_GFX_GRPH_PROPERTY_ID_QUAD_PTR,
VENDOR_GFX_GRPH_PROPERTY_ID_QUAD_INNER_PTR,
VENDOR_GFX_GRPH_PROPERTY_ID_MOSAIC_SRC_FMT,
VENDOR_GFX_GRPH_PROPERTY_ID_UV_SUBSAMPLE,
ENUM_DUMMY4WORD(VENDOR_GFX_GRPH_PROPERTY_ID)
} VENDOR_GFX_GRPH_PROPERTY_ID;
typedef enum _VENDOR_GFX_GRPH_INOUT_ID {
VENDOR_GFX_GRPH_INOUT_ID_IN_A,
VENDOR_GFX_GRPH_INOUT_ID_IN_A_U,
VENDOR_GFX_GRPH_INOUT_ID_IN_A_V,
VENDOR_GFX_GRPH_INOUT_ID_IN_B,
VENDOR_GFX_GRPH_INOUT_ID_IN_B_U,
VENDOR_GFX_GRPH_INOUT_ID_IN_B_V,
VENDOR_GFX_GRPH_INOUT_ID_OUT_C,
VENDOR_GFX_GRPH_INOUT_ID_OUT_C_U,
VENDOR_GFX_GRPH_INOUT_ID_OUT_C_V,
ENUM_DUMMY4WORD(VENDOR_GFX_GRPH_INOUT_ID)
} VENDOR_GFX_GRPH_INOUT_ID;
typedef enum _VENDOR_GFX_GRPH_COLORKEY_FLTSEL {
VENDOR_GFX_GRPH_COLORKEY_FLTSEL_0,
VENDOR_GFX_GRPH_COLORKEY_FLTSEL_1,
VENDOR_GFX_GRPH_COLORKEY_FLTSEL_2,
ENUM_DUMMY4WORD(VENDOR_GFX_GRPH_COLORKEY_FLTSEL)
} VENDOR_GFX_GRPH_COLORKEY_FLTSEL;
typedef enum _VENDOR_GFX_GRPH_COLORKEY_FLTMODE {
VENDOR_GFX_GRPH_COLORKEY_FLTMODE_BOTH,
VENDOR_GFX_GRPH_COLORKEY_FLTMODE_OR,
VENDOR_GFX_GRPH_COLORKEY_FLTMODE_1ST,
VENDOR_GFX_GRPH_COLORKEY_FLTMODE_2ND,
ENUM_DUMMY4WORD(VENDOR_GFX_GRPH_COLORKEY_FLTMODE)
} VENDOR_GFX_GRPH_COLORKEY_FLTMODE;
#define VENDOR_GFX_GRPH_PLUS_PROPTY(SHF) ((SHF)&0x3)
#define VENDOR_GFX_GRPH_SUB_PROPTY(SHF) ((SHF)&0x3)
#define VENDOR_GFX_GRPH_COLOR_KEY_PROPTY(COLOR) ((COLOR)&0xFF)
#define VENDOR_GFX_GRPH_COLOR_FLT_PROPTY(FLT_SEL, FLT_MODE, COLORKEY) ((((FLT_SEL)&0x3)<<30) | 0x20000000 | (((FLT_MODE)&0x3)<<26) | ((COLORKEY)&0xFFFFFF))
#define VENDOR_GFX_GRPH_BLD_WA_WB_THR(WA, WB, THR) (((WA)&0xFF)|(((WB)&0xFF)<<8)|(((THR)&0xFF)<<16))
#define VENDOR_GFX_GRPH_ACC_PROPTY(MODE, THR) ((((MODE)&0x1)<<31) | ((THR)&0xFFF))
#define VENDOR_GFX_GRPH_MULT_PROPTY(DITHER_EN, SQ1, SQ2, SHF) ((((DITHER_EN)&0x1)<<31) | (((SQ1)&0xF)<<24) | (((SQ2)&0x7FFF)<<8) | ((SHF)&0xF))
#define VENDOR_GFX_GRPH_TEXTMUL_BYTE 0x00000000
#define VENDOR_GFX_GRPH_TEXTMUL_HWORD 0x80000000
#define VENDOR_GFX_GRPH_TEXTMUL_SIGNED 0x40000000
#define VENDOR_GFX_GRPH_TEXTMUL_UNSIGNED 0x00000000
#define VENDOR_GFX_GRPH_TEXT_MULT_PROPTY(PRECISION, SIGNED, CTEX, SHF) (((PRECISION)&VENDOR_GFX_GRPH_TEXTMUL_HWORD) | ((SIGNED)&VENDOR_GFX_GRPH_TEXTMUL_SIGNED) | (((CTEX)&0xFF)<<4) | ((SHF)&0xF))
#define VENDOR_GFX_GRPH_ENABLE_COLOR_CONST 0x10000
#define VENDOR_GFX_GRPH_ENABLE_ALPHA_CONST 0x20000
#define VENDOR_GFX_GRPH_ENABLE_ALPHA_SRC 0x40000
#define VENDOR_GFX_GRPH_ENABLE_ALPHA_FROM_C 0x40000
#define VENDOR_GFX_GRPH_ENABLE_ALPHA_FROM_A 0x00000
#define VENDOR_GFX_GRPH_COLOR_ALPHA_MASK (VENDOR_GFX_GRPH_ENABLE_COLOR_CONST|VENDOR_GFX_GRPH_ENABLE_ALPHA_CONST)
#define VENDOR_GFX_GRPH_COLOR_CONST(x) ((((x) & 0xFF) << 0) | VENDOR_GFX_GRPH_ENABLE_COLOR_CONST)
#define VENDOR_GFX_GRPH_ALPHA_CONST(x) ((((x) & 0xFF) << 8) | VENDOR_GFX_GRPH_ENABLE_ALPHA_CONST)
#define VENDOR_GFX_GRPH_CONST_MASK 0x0000FFFF
#define VENDOR_GFX_GRPH_RGB_INV_PROPTY(threshold, inv_alpha) (((threshold)&0xFF) | ((inv_alpha)<<8))
typedef enum _VENDOR_GFX_GRPH_INOPCTL {
VENDOR_GFX_GRPH_INOP_NONE,
VENDOR_GFX_GRPH_INOP_INVERT,
VENDOR_GFX_GRPH_INOP_SHIFTR_ADD,
VENDOR_GFX_GRPH_INOP_SHIFTL_ADD,
VENDOR_GFX_GRPH_INOP_SHIFTL_SUB,
ENUM_DUMMY4WORD(VENDOR_GFX_GRPH_INOPCTL)
} VENDOR_GFX_GRPH_INOPCTL;
typedef enum _VENDOR_GFX_GRPH_OUTOPCTL {
VENDOR_GFX_GRPH_OUTOP_SHF,
VENDOR_GFX_GRPH_OUTOP_INVERT,
VENDOR_GFX_GRPH_OUTOP_ADD,
VENDOR_GFX_GRPH_OUTOP_SUB,
VENDOR_GFX_GRPH_OUTOP_ABS,
ENUM_DUMMY4WORD(VENDOR_GFX_GRPH_OUTOPCTL)
} VENDOR_GFX_GRPH_OUTOPCTL;
typedef struct _VENDOR_GFX_GRPH_INOUTOP {
UINT32 en;
VENDOR_GFX_GRPH_INOUT_ID id;
UINT32 op;
UINT32 shifts;
UINT32 constant;
} VENDOR_GFX_GRPH_INOUTOP, *PVENDOR_GFX_GRPH_INOUTOP;
typedef struct _VENDOR_GFX_GRPH_IMG {
VENDOR_GFX_GRPH_IMG_ID img_id;
UINT32 dram_addr;
UINT32 lineoffset;
UINT32 width;
UINT32 height;
VENDOR_GFX_GRPH_INOUTOP inoutop;
} VENDOR_GFX_GRPH_IMG, *PVENDOR_GFX_GRPH_IMG;
typedef struct _VENDOR_GFX_GRPH_CKEYFILTER {
UINT32 FKEY1;
UINT32 FKEY2;
UINT32 RKEY;
} VENDOR_GFX_GRPH_CKEYFILTER, *PVENDOR_GFX_GRPH_CKEYFILTER;
typedef struct _VENDOR_GFX_GRPH_POINT_DESC {
INT32 x;
INT32 y;
} VENDOR_GFX_GRPH_POINT_DESC, *PVENDOR_GFX_GRPH_POINT_DESC;
typedef struct _VENDOR_GFX_GRPH_QUAD_DESC {
BOOL blend_en;
UINT32 alpha;
UINT32 mosaic_width;
UINT32 mosaic_height;
VENDOR_GFX_GRPH_POINT_DESC top_left;
VENDOR_GFX_GRPH_POINT_DESC top_right;
VENDOR_GFX_GRPH_POINT_DESC bottom_right;
VENDOR_GFX_GRPH_POINT_DESC bottom_left;
} VENDOR_GFX_GRPH_QUAD_DESC, *PVENDOR_GFX_GRPH_QUAD_DESC;
typedef struct _VENDOR_GFX_GRPH_PROPERTY {
UINT32 en;
VENDOR_GFX_GRPH_PROPERTY_ID id;
union {
UINT32 property;
VENDOR_GFX_GRPH_QUAD_DESC quad;
} data;
} VENDOR_GFX_GRPH_PROPERTY, *PVENDOR_GFX_GRPH_PROPERTY;
typedef struct _VENDOR_GFX_GRPH_TRIGGER_PARAM {
VENDOR_GFX_GRPH_CMD command;
VENDOR_GFX_GRPH_FORMAT format;
VENDOR_GFX_GRPH_IMG images[3];
VENDOR_GFX_GRPH_PROPERTY property[5];
VENDOR_GFX_GRPH_CKEYFILTER ckeyfilter;
} VENDOR_GFX_GRPH_TRIGGER_PARAM;
typedef enum _VENDOR_GFX_PARAM_ID {
VENDOR_GFX_PARAM_ABORT=0, ///< IPC only. abort current operation
ENUM_DUMMY4WORD(VENDOR_GFX_PARAM_ID)
} VENDOR_GFX_PARAM_ID;
HD_RESULT vendor_gfx_grph_trigger(VENDOR_GFX_ENG_ID id, VENDOR_GFX_GRPH_TRIGGER_PARAM *p_param);
HD_RESULT vendor_gfx_grph_trigger_no_flush(VENDOR_GFX_ENG_ID id, VENDOR_GFX_GRPH_TRIGGER_PARAM *p_param);
HD_RESULT vendor_gfx_copy_no_flush(HD_GFX_COPY *p_param);
HD_RESULT vendor_gfx_rotate_no_flush(HD_GFX_ROTATE *p_param);
HD_RESULT vendor_gfx_422_packed_to_yuyv(HD_GFX_COLOR_TRANSFORM *p_param);
HD_RESULT vendor_gfx_copy_no_flush_eng2(HD_GFX_COPY *p_param);
HD_RESULT vendor_gfx_set(VENDOR_GFX_ENG_ID id, VENDOR_GFX_PARAM_ID idx, VOID *p_param);
HD_RESULT vendor_gfx_draw_rect_no_flush(HD_GFX_DRAW_RECT *p_param);
HD_RESULT vendor_gfx_draw_line_no_flush(HD_GFX_DRAW_LINE *p_param);
#ifdef __cplusplus
}
#endif
#endif // __VENDOR_GFX_H__