6.3.5.5.1. 概述

AICFB 显示驱动接口分可为标准功能和扩展功能。

  • 标准功能:

  1. 将物理显存映射到用户空间

  2. 获取显示屏的分辨率和获取 Framebuffer 的像素格式

  3. 支持单缓冲 Framebuffer 和双缓冲 Framebuffer 可配置

  • 扩展功能:

  1. 获取图层个数

  2. 获取图层能力

  3. 获取图层配置数据

  4. 更新图层配置数据

  5. 支持同时更新多图层配置数据

  6. 支持图层 scaler 设置

  7. 支持 alpha blending 设置

  8. 支持 color key

  9. 获取显示屏大小

  10. 绑定 DMA-BUF

  11. 解绑 DMA-BUF

  12. 将 /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 操作,无法得到一个有效的虚拟地址