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