6.3.5.5.1. 概述¶
AICFB 显示驱动接口分可为标准功能和扩展功能。
- 标准功能: 
- 将物理显存映射到用户空间 
- 获取显示屏的分辨率和获取 Framebuffer 的像素格式 
- 支持单缓冲 Framebuffer 和双缓冲 Framebuffer 可配置 
- 扩展功能: 
- 获取图层个数 
- 获取图层能力 
- 获取图层配置数据 
- 更新图层配置数据 
- 支持同时更新多图层配置数据 
- 支持图层 scaler 设置 
- 支持 alpha blending 设置 
- 支持 color key 
- 获取显示屏大小 
- 绑定 DMA-BUF 
- 解绑 DMA-BUF 
- 将 /dev/fb0 导出为 dmabuf fd 
6.3.5.5.2. Framebuffer标准接口¶
int ioctl(int fd, unsigned long cmd, CMD_DATA_TYPE *cmddata);
| 参数 | 描述 | 输入/输出 | 
|---|---|---|
| Fd | 打开FB设备后设备描述符 | 输入 | 
| cmd | 主要的cmd命令如下: FBIOGET_VSCREENINFO:获取屏幕可变信息 FBIOPUT_VSCREENINFO:设置屏幕可变信息 FBIOGET_FSCREENINFO:获取屏幕固定信息 FBIOPAN_DISPLAY:设置PAN 显示 FBIO_WAITFORVSYNC: 等待vsync信号 | 输入 | 
| cmddata | 各cmd 对应的数据类型分别是: 屏幕可变信息:struct fb_var_screeninfo *类型 屏幕固定信息:struct fb_fix_screeninfo *类型 PAN显示:struct fb_var_screeninfo *类型 | 输入/输出 | 
6.3.5.5.3. 扩展接口¶
6.3.5.5.3.1. AICFB_WAIT_FOR_VSYNC¶
| 接口定义 | int ioctl(int fd, unsigned long cmd, unsigned int *pvalue); | 
|---|---|
| 功能说明 | 等待Vsync信号 | 
| 参数定义 | CMD: AICFB_WAIT_FOR_VSYNC pvalue:该值无意义,固定为NULL | 
| 返回值 | 0:成功 -1:失败 | 
| 注意事项 | 无 | 
6.3.5.5.3.2. AICFB_GET_LAYER_NUM¶
| 接口定义 | int ioctl(int fd, unsigned long cmd, struct aicfb_layer_num *pvalue); | 
|---|---|
| 功能说明 | 获取显示图层的个数, 包括UI 图层个数和Video 图层 | 
| 参数定义 | CMD: AICFB_GET_LAYER_NUM player_num: 参考结构体 struct aicfb_layer_num 定义 | 
| 返回值 | 0:成功 -1:失败 | 
| 注意事项 | 无 | 
6.3.5.5.3.3. AICFB_GET_LAYER_CAPABILITY¶
| 接口定义 | int ioctl(int fd, unsigned long cmd, struct aicfb_layer_capability *player_cap); | 
|---|---|
| 功能说明 | 获取当前图层的能力 | 
| 参数定义 | CMD: AICFB_GET_LAYER_CAPABILITY player_cap: 参考结构体 struct aicfb_layer_capability 定义 | 
| 返回值 | 0:成功 -1:失败 | 
| 注意事项 | 调用接口前要先填写结构体中的 layer_id | 
6.3.5.5.3.4. AICFB_GET_LAYER_CONFIG¶
| 接口定义 | int ioctl(int fd, unsigned long cmd, struct aicfb_layer_data *player_conf); | 
|---|---|
| 功能说明 | 获取图层配置信息 | 
| 参数定义 | CMD: AICFB_GET_LAYER_CONFIG player_conf: 参考结构体 struct aicfb_layer_data 定义 | 
| 返回值 | 0:成功 -1:失败 | 
| 注意事项 | 调用接口前要先填写结构体中的layer_id,如果是多矩形窗口要同时填写rect_win_id | 
6.3.5.5.3.5. AICFB_UPDATE_LAYER_CONFIG¶
| 接口定义 | int ioctl(int fd, unsigned long cmd, struct aicfb_layer_data *player_conf) | 
|---|---|
| 功能说明 | 更新图层配置信息 | 
| 参数定义 | CMD: AICFB_UPDATE_LAYER_CONFIG player_ocnf:参考结构体 struct aicfb_layer_data 定义 | 
| 返回值 | 0: 成功 -1:失败 | 
| 注意事项 | 如果是仅更新图层的部分config data 信息, 可以先调用接口AICFB_GET_LAYER_CONFIG,获取当前图层信息, 然后再修改要更新的图像信息,最后再调用此接口更新图层信息 | 
6.3.5.5.3.6. AICFB_UPDATE_LAYER_CONFIG_LISTS¶
| 接口定义 | int ioctl(int fd, unsigned long cmd, struct aicfb_config_lists *player_lists); | 
|---|---|
| 功能说明 | 更新图层配置数据列表 | 
| 参数定义 | CMD: AICFB_UPDATE_LAYER_CONFIG_LISTS aicfb_config_lists player_lists: 参考结构体 struct aicfb_config_lists 定义 | 
| 返回值 | 0:成功 -1:失败 | 
| 注意事项 | 通过此接口可以同时更新多个图层或者多个窗口的配置信息 通过此接口调用的好处是相关图层配置的更新可以同时生效 | 
6.3.5.5.3.7. AICFB_GET_ALPHA_CONFIG¶
| 接口定义 | int ioctl(int fd, unsigned long cmd, struct aicfb_alpha_config *alpha); | 
|---|---|
| 功能说明 | 获取当前图层的Alpha配置 | 
| 参数定义 | CMD: AICFB_GET_ALPHA_CONFIG alpha: 参结考构体 struct aicfb_alpha_config 定义 | 
| 返回值 | 0:成功 -1:失败 | 
| 注意事项 | 无 | 
6.3.5.5.3.8. AICFB_UPDATE_ALPHA_CONFIG¶
| 接口定义 | int ioctl(int fd, unsigned long cmd, struct aicfb_alpha_config *alpha); | 
|---|---|
| 功能说明 | 更新当前图层的Alpha配置 | 
| 参数定义 | CMD: AICFB_UPDATE_ALPHA_CONFIG alpha: 参结考构体 struct aicfb_alpha_config 定义 | 
| 返回值 | 0:成功 -1:失败 | 
| 注意事项 | 无 | 
6.3.5.5.3.9. AICFB_GET_CK_CONFIG¶
| 接口定义 | int ioctl(int fd, unsigned long cmd, struct aicfb_ck_config *player_ck); | 
|---|---|
| 功能说明 | 获取当前图层的CK配置 | 
| 参数定义 | CMD: AICFB_GET_CK_CONFIG player_ck: 参考结构体 struct aicfb_ck_config 定义 | 
| 返回值 | 0:成功 -1:当前图层不支持 color key | 
| 注意事项 | 无 | 
6.3.5.5.3.10. AICFB_UPDATE_CK_CONFIG¶
| 接口定义 | int ioctl(int fd, unsigned long cmd, struct aicfb_ck_config *player_ck); | 
|---|---|
| 功能说明 | 更新当前图层的CK配置 | 
| 参数定义 | CMD: AICFB_SET_CK_CONFIG player_ck: 参考结构体 struct aicfb_ck_config 定义 | 
| 返回值 | 0: 成功 -1:当前图层不支持 color key | 
| 注意事项 | 无 | 
6.3.5.5.3.11. AICFB_GET_SCREEN_SIZE¶
| 接口定义 | int ioctl(int fd, unsigned long cmd, struct aic_size *pscreen_size); | 
|---|---|
| 功能说明 | 更新当前图层的CK配置 | 
| 参数定义 | CMD: AICFB_GET_SCREEN_SIZE pscreen_size: 结构体 struct aic_size 定义了屏幕的宽,高信息 | 
| 返回值 | 0:成功 -1:失败 | 
| 注意事项 | 无 | 
6.3.5.5.3.12. AICFB_GET_FB_LAYER_CONFIG¶
| 接口定义 | int ioctl(int fd, unsigned long cmd, struct aicfb_layer_data *player_conf); | 
|---|---|
| 功能说明 | 获取标准framebuffer占用的图层信息 | 
| 参数定义 | CMD: AICFB_GET_FB_LAYER_CONFIG player_conf: 参考结构体 struct aicfb_layer_data 定义 | 
| 返回值 | 0:成功 -1:失败 | 
| 注意事项 | 无 | 
6.3.5.5.3.13. AICFB_GET_DMABUF¶
| 接口定义 | int ioctl(int fd, unsigned long cmd, struct aicfb_dmabuf_fd *fds); | 
|---|---|
| 功能说明 | 通知 fb 驱动绑定 DMA-BUF | 
| 参数定义 | CMD: AICFB_GET_DMABUF fds: 参考结构体 struct aicfb_dmabuf_fd 定义 | 
| 返回值 | 0:成功 -1:失败 | 
| 注意事项 | APP 在将 dmabuf 送给 DE 显示之前必须进行绑定,否则无法显示 buf 中的内容 | 
6.3.5.5.3.14. AICFB_PUT_DMABUF¶
| 接口定义 | int ioctl(int fd, unsigned long cmd, struct aicfb_dmabuf_fd *fds); | 
|---|---|
| 功能说明 | 通知 fb 驱动解绑 DMA-BUF | 
| 参数定义 | CMD: AICFB_PUT_DMABUF fds: 参考结构体 struct aicfb_dmabuf_fd 定义 | 
| 返回 值 | 0:成功 -1:失败 | 
| 注意事项 | 无 | 
6.3.5.5.3.15. AICFB_TO_DMABUF_FD¶
| 接口定义 | int ioctl(int fd, unsigned long cmd, struct aicfb_dmabuf_fd *fds); | 
|---|---|
| 功能说明 | 将 /dev/fb0 导出为一个 dmabuf fd | 
| 参数定义 | CMD: AICFB_TO_DMABUF_FD fds: 参考结构体 struct aicfb_dmabuf_fd 定义 | 
| 返回 值 | 0:成功 -1:失败 | 
| 注意事项 | 导出的 dmabuf fd 不支持 mmap 操作,无法得到一个有效的虚拟地址 |