You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

293 lines
7.6 KiB

/*
* Copyright (c) Hisilicon Technologies Co., Ltd. 2019-2019. All rights reserved.
* Description: extended interface based on gfbg.h, define 110 111 cmd in gfbg_liteos.h
* Create: 2019-06-29
*/
#ifndef __GFBG_H__
#define __GFBG_H__
#include "td_type.h"
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif /* __cplusplus */
/* * \addtogroup GFBG */
/* * @{ */ /* * <!-- [GFBG] */
#define GFBG_IOC_TYPE 'F'
#define GFBG_LOWPOWER_PARA_NUM 17
#define GFBGIOGET_SHOW _IOR(GFBG_IOC_TYPE, 90, td_bool)
#define GFBGIOPUT_SHOW _IOW(GFBG_IOC_TYPE, 91, td_bool)
#define GFBGIOGET_DECOMPRESS _IOR(GFBG_IOC_TYPE, 92, td_bool)
#define GFBGIOPUT_DECOMPRESS _IOW(GFBG_IOC_TYPE, 93, td_bool)
#define GFBGIOGET_COLORKEY _IOR(GFBG_IOC_TYPE, 94, gfbg_colorkey)
#define GFBGIOPUT_COLORKEY _IOW(GFBG_IOC_TYPE, 95, gfbg_colorkey)
#define GFBGIOGET_ALPHA _IOR(GFBG_IOC_TYPE, 96, gfbg_alpha)
#define GFBGIOPUT_ALPHA _IOW(GFBG_IOC_TYPE, 97, gfbg_alpha)
#define GFBGIOGET_SCREENPOS _IOR(GFBG_IOC_TYPE, 98, gfbg_position)
#define GFBGIOPUT_SCREENPOS _IOW(GFBG_IOC_TYPE, 99, gfbg_position)
#define GFBGIOGET_VSCREENINFO _IOR(GFBG_IOC_TYPE, 112, gfbg_vscreeninfo)
#define GFBGIOPUT_VSCREENINFO _IOW(GFBG_IOC_TYPE, 113, gfbg_vscreeninfo)
#define GFBGIOGET_LAYERINFO _IOR(GFBG_IOC_TYPE, 114, gfbg_layerinfo)
#define GFBGIOPUT_LAYERINFO _IOW(GFBG_IOC_TYPE, 115, gfbg_layerinfo)
#define GFBGIO_SCROLLTEXT_CREATE _IOW(GFBG_IOC_TYPE, 130, gfbg_scrolltext_attr)
#define GFBGIO_SCROLLTEXT_FILL _IOW(GFBG_IOC_TYPE, 131, gfbg_scrolltext_data)
#define GFBGIO_SCROLLTEXT_PAUSE _IOW(GFBG_IOC_TYPE, 132, td_u32)
#define GFBGIO_SCROLLTEXT_RESUME _IOW(GFBG_IOC_TYPE, 133, td_u32)
#define GFBGIO_SCROLLTEXT_DESTORY _IOW(GFBG_IOC_TYPE, 134, td_u32)
#define GFBGIOPUT_STEREODEPTH _IOW(GFBG_IOC_TYPE, 150, td_s32)
#define GFBGIOGET_STEREODEPTH _IOR(GFBG_IOC_TYPE, 151, td_s32)
#define GFBGIOPUT_REFRESH _IOW(GFBG_IOC_TYPE, 170, gfbg_flush_info)
#define GFBGIOGET_VBLANK _IOR(GFBG_IOC_TYPE, 171, gfbg_vblank_info)
#define GFBGIOGET_DMABUF _IOWR(GFBG_IOC_TYPE, 172, gfbg_dmabuf_export)
#define GFBGIOGET_CAPABILITY _IOWR(GFBG_IOC_TYPE, 173, gfbg_capability_info)
#define GFBGIOSET_CURSOR_ATTACH_CHANNEL _IOWR(GFBG_IOC_TYPE, 174, gfbg_disp_channel)
#define GFBGIOGET_CURSOR_ATTACH_CHANNEL _IOWR(GFBG_IOC_TYPE, 175, gfbg_disp_channel)
/* ==== Macro Definition end ==== */
typedef enum {
GFBG_DISP_CHN0 = 0,
GFBG_DISP_CHN1,
GFBG_DISP_CHN_MAX
} gfbg_disp_channel;
/* color format */
typedef enum {
GFBG_COLOR_FMT_RGB565 = 0x0,
GFBG_COLOR_FMT_RGB888,
GFBG_COLOR_FMT_ARGB4444,
GFBG_COLOR_FMT_ARGB1555,
GFBG_COLOR_FMT_ARGB8888,
GFBG_COLOR_FMT_RGBA4444 = 0x10,
GFBG_COLOR_FMT_RGBA5551,
GFBG_COLOR_FMT_RGBA8888,
GFBG_COLOR_FMT_ABGR4444 = 0x20,
GFBG_COLOR_FMT_ABGR1555,
GFBG_COLOR_FMT_ABGR8888,
GFBG_COLOR_FMT_BGR565 = 0x30,
GFBG_COLOR_FMT_BGR888,
GFBG_COLOR_FMT_BGRA4444,
GFBG_COLOR_FMT_BGRA5551,
GFBG_COLOR_FMT_BGRA8888,
GFBG_COLOR_FMT_CLUT1 = 0x40,
GFBG_COLOR_FMT_CLUT2,
GFBG_COLOR_FMT_CLUT4,
GFBG_COLOR_FMT_CLUT8,
GFBG_COLOR_FMT_ACLUT44,
GFBG_COLOR_FMT_ACLUT88,
GFBG_COLOR_FMT_FP16 = 0x50,
GFBG_COLOR_FMT_ARGB2101010,
GFBG_COLOR_FMT_ARGB10101010,
GFBG_COLOR_FMT_MAX
} gfbg_color_fmt;
/* updata buffer mode */
typedef enum {
GFBG_BUFFER_NONE = 0x0, /* no display buffer, display used canvas buffer */
GFBG_BUFFER_ONE, /* one display buffer in gfbg */
GFBG_BUFFER_DOUBLE, /* two display buffer in gfbg */
GFBG_BUFFER_MAX
} gfbg_buffer_mode;
typedef enum {
GFBG_HDR_SDR = 0,
GFBG_HDR_HDR10,
GFBG_HDR_HLG,
GFBG_HDR_MAX
} gfbg_xdr_mode;
typedef enum {
GFBG_COLOR_SPACE_BT709,
GFBG_COLOR_SPACE_BT2020,
GFBG_COLOR_SPACE_MAX
} gfbg_color_space;
typedef enum {
GFBG_CMP_NONE = 0,
GFBG_CMP_HFBC,
GFBG_CMP_AFBC,
GFBG_CMP_MAX
} gfbg_compress_mode;
typedef struct {
td_bool is_support_hfbc;
td_bool is_support_afbc;
} gfbg_compression;
/* capability information */
typedef struct {
td_bool key_alpha;
td_bool global_alpha;
td_bool cmap;
td_bool has_cmap_reg;
td_bool col_fmt[GFBG_COLOR_FMT_MAX];
td_bool vo_scale;
td_bool layer_supported;
gfbg_compression compression;
td_bool stereo;
td_u32 max_width;
td_u32 max_height;
td_u32 max_stride;
td_u32 max_size;
td_u32 min_width;
td_u32 min_height;
td_u32 min_stride;
td_u32 min_size;
} gfbg_capability_info;
/* rect information */
typedef struct {
td_s32 x, y;
td_s32 w, h;
} gfbg_rect;
/* colorkey information */
typedef struct {
td_bool enable;
td_u32 key_value;
} gfbg_colorkey;
/* alpha information */
typedef struct {
td_bool pixel_alpha_en;
td_bool global_alpha_en;
td_u8 alpha0; /* be used in argb1555, pixel alpha = 0 will be replace by alpha0 value */
td_u8 alpha1; /* be used in argb1555, pixel alpha = 1 will be replace by alpha1 value */
td_u8 global_alpha;
} gfbg_alpha;
/* display position, be used for cursor */
typedef struct {
td_s32 x;
td_s32 y;
} gfbg_position;
/* input canvas information */
typedef struct {
td_u32 width;
td_u32 height;
td_u32 stride;
td_u32 mem_size;
td_mem_handle mem_handle;
gfbg_color_fmt fmt;
gfbg_buffer_mode buf_mode;
} gfbg_vscreeninfo;
/* scrolltext information */
typedef struct {
td_u32 handle;
td_u32 cache_num;
gfbg_rect rect;
gfbg_color_fmt fmt;
} gfbg_scrolltext_attr;
typedef struct {
td_u32 handle;
td_u32 stride;
td_u32 mem_size;
td_mem_handle mem_handle;
} gfbg_scrolltext_data;
/* refresh surface info */
typedef struct {
gfbg_rect updata_rect;
} gfbg_flush_info;
/* vblank information */
typedef enum {
GFBG_VSYNC_UPDATA, /* updata interrupt */
GFBG_VSYNC_FINISH, /* finish interrupt */
GFBG_VSYNC_MAX
} gfbg_vsync_type;
typedef struct {
td_u64 tv_sec; /* seconds */
td_u64 tv_msec; /* milliseconds */
td_u64 tv_usec; /* microseconds */
td_u64 tv_nsec; /* nanosecond */
} gfbg_timeval;
typedef struct {
td_u32 refresh_rate;
gfbg_timeval time_val;
gfbg_vsync_type vsync_type;
} gfbg_vblank_info;
/* layer information, only used in need sync scen */
typedef struct {
td_bool enable;
td_u32 mem_size;
td_mem_handle mem_handle;
td_handle win_handle;
gfbg_rect video_rect;
gfbg_rect output_rect;
} gfbg_sync_info;
typedef struct {
td_bool enable;
td_u32 lowpower_value[GFBG_LOWPOWER_PARA_NUM];
} gfbg_lowpower_info;
typedef struct {
td_u32 width;
td_u32 height;
td_u32 stride;
td_u32 cmp_stride;
td_u32 mem_size;
td_mem_handle mem_handle;
gfbg_color_fmt fmt;
} gfbg_surface;
typedef struct {
td_bool is_premulti;
td_bool is_stereo;
td_bool is_discard_frame;
td_u32 alpha_sum;
td_s32 acquire_fd;
td_s32 release_fd;
gfbg_surface surface;
gfbg_xdr_mode xdr_mode;
gfbg_color_space color_space;
gfbg_compress_mode compress_mode;
gfbg_lowpower_info lowpower_info; /* lowpower info from gfx2d */
gfbg_sync_info sync_info; /* used in video and ui sync scen */
} gfbg_layerinfo;
typedef struct {
td_mem_handle mem_handle;
td_u32 flags;
} gfbg_dmabuf_export;
/* * @} */ /* * <!-- ==== Structure Definition end ==== */
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif /* __cplusplus */
#endif /* __GFBG_H__ */