MAX_CARLINK_A270S/MXC_A27-PCB4.5-270S/lib/lib_rtos/vg_lcdc.h

93 lines
2.3 KiB
C

#ifndef _VG_LCDC_H_
#define _VG_LCDC_H_
#if defined (__cplusplus)
extern "C"{
#endif
// 定义VG的FB模式 ()
// FB_COUNT = 2, 为双缓存模式
// FB_COUNT = 1, 为单帧模式
#ifndef FB_COUNT
#define FB_COUNT 2
//#define FB_COUNT 1
#endif
// 获取VG可用的framebuffer个数(固定为2个)
unsigned int xm_vg_get_fb_count (void);
// 获取VG帧(GPU帧)的每行数据字节长度
unsigned int xm_vg_get_stride (void);
// 获取OSD帧的每行数据字节长度
unsigned int xm_vg_get_osd_stride (void);
// 获取VG帧(GPU帧/OSD帧)的bpp设置
// 16 (RGB565)
// 32 (ARGB8888)
unsigned int xm_vg_get_bpp (void);
// 获取一个新的VG帧的GPU fb物理地址, 用于GPU后台渲染
// VG帧是OSD帧内部的开窗区域, 用于GPU绘图使用
// 返回值
// 指向VG帧的原点(左上角)
unsigned int xm_vg_require_gpu_fb (void);
// 释放当前后台渲染(GPU渲染)所使用的VG帧.
// 该VG帧(GPU)关联的OSD帧可用于LCD显示更新
void xm_vg_release_gpu_fb (void);
// 检查指定的基址是否是有效的GPU framebuffer
// 返回值
// 1 是有效的GPU framebuffer地址
// 0 不是
int xm_vg_is_valid_gpu_fb (unsigned int base);
// 设置VG帧在OSD帧内部的开窗位置
// VG帧属于OSD帧的内部开窗
void xm_vg_set_osd_window ( unsigned int x, // VG帧原点()OSD帧原点()
unsigned int y,
unsigned int w, // VG帧的像素尺寸
unsigned int h
);
void xm_vg_set_x (unsigned int x);
void xm_vg_set_y (unsigned int y);
void xm_vg_set_width (unsigned int w);
void xm_vg_set_height (unsigned int h);
// 读取VG帧在OSD帧内部的开窗位置
// VG帧属于OSD帧的内部开窗
void xm_vg_get_osd_window ( unsigned int* x, // OSD帧原点()
unsigned int* y,
unsigned int* w, // VG帧的像素尺寸
unsigned int* h,
unsigned int* stride // VG帧的每行字节长度
);
// 获取VG帧相对于OSD帧原点(左上角)的像素偏移
unsigned int xm_vg_get_x (void);
unsigned int xm_vg_get_y (void);
// 获取VG帧的像素宽度
unsigned int xm_vg_get_width (void);
// 获取VG帧的像素高度
unsigned int xm_vg_get_height (void);
// 获取当前正在渲染的OSD framebuffer
// *no == -1 表示获取当前正在渲染的OSD framebuffer
// 返回值
// 当前正在渲染的OSD framebuffer基址
unsigned int xm_vg_get_osd_fb (int *no);
// 获取VG帧填充的背景图基址(与GPU FB相同尺寸/规格)
void* xm_vg_get_gpu_background_image (void);
#if defined (__cplusplus)
}
#endif /* end of __cplusplus */
#endif /* _XM_SIGNAL_H_ */