MPP GE 接口说明
mpp_ge 接口说明请参考 MPP 对 GE 接口的封装。
由于驱动支持非命令队列和命令队列两种模式,在提供的用户 MPP 接口中,对调用驱动的接口进行了封装,保持了统一的调用 API, 建议用户统一使用 MPP 中间层 API。在命令队列模式下,task 会先缓存在用户的 buffer 中,当调用 emit 后, 会通过 write 接口把命令写入内核的 buffer。

接口列表
struct mpp_ge
*mpp_ge_open(); |
|
---|---|
功能说明 |
打开 ge 设备 |
参数定义 | 无 |
返回值 | struct mpp_ge 结构体指针 NULL:失败 |
注意事项 | 无 |
voidmpp_ge_close(structmpp_ge*ge); |
|
---|---|
功能说明 | 关闭 ge 设备 |
参数定义 | ge: struct mpp_ge 结构体指针 |
返回值 | 无 |
注意事项 | 无 |
enumge_modempp_ge_get_mode(structmpp_ge*ge); |
|
---|---|
功能说明 | 获取 GE 模式 |
参数定义 | ge: struct mpp_ge 结构体指针 |
返回值 | enum ge_mode 枚举类型通过返回值可以获取 GE 是否工作在命令队列模式 |
注意事项 | 无 |
intmpp_ge_fillrect(structmpp_ge*ge,structge_fillrect*fillrect); |
|
---|---|
功能说明 | 矩形填充 |
参数定义 | ge: struct mpp_ge 结构体指针 fillrect:struct ge_fillrect 结构体指针 |
返回值 | 0:成功;<0:失败 |
注意事项 | normal(非命令队列)模式此接口是同步的。命令队列模式此接口是异步的:(1)当用户的缓存 buffer 足够时候仅把命令缓存在用户;(2)当用户的缓存空间不够的时候,先通过 write 接口,把缓存的命令全部写入驱动,然后再把当前命令缓存到用户 buffer |
矩形填充在目标图像中指定一块矩形区域,填充颜色格式只能为 ARGB8888 格式, 在进行固定颜色填充的时候,不支持 scaler,不支持 90/180/270 度旋转,不支持镜像, 填充的颜色可以和目标层进行 blending 和 key。

intmpp_ge_bitblt(structmpp_ge*ge,structge_bitblt*blt); |
|
---|---|
功能说明 | 位块搬移 |
参数定义 | ge: struct mpp_ge 结构体指针 blt:struct ge_bitblt 结构体指针 |
返回值 | 0:成功;<0:失败 |
注意事项 | normal(非命令队列)模式此接口是同步的。命令队列模式此接口是异步的:(1)当用户的缓存 buffer 足够时候仅把命令缓存在用户;(2)当用户的缓存空间不够的时候,先通过 write 接口,把缓存的命令全部写入驱动,然后再把当前命令缓存到用户 buffer |
位块搬移可以分两种情况:
-
原图的矩形区域搬移到目标图的矩形区域中不进行缩放
图 3. 不进行缩放 -
原图的矩形区域搬移到目标图的矩形区域中同时进行放大或者缩小
图 4. 进行缩放 在进行位块搬移的同时可以进行 blending 和 key,同时也支持 90/180/270 度旋转和镜像。
intmpp_ge_rotate(structmpp_ge*ge,structge_rotation*rot); |
|
---|---|
功能说明 | 任意角度旋转 |
参数定义 | ge: struct mpp_ge 结构体指针 rot:struct ge_rotation 结构体指针 |
返回值 | 0:成功;<0:失败 |
注意事项 | normal(非命令队列)模式此接口是同步的。命令队列模式此接口是异步的:(1)当用户的缓存 buffer 足够时候仅把命令缓存在用户;(2)当用户的缓存空间不够的时候,先通过 write 接口,把缓存的命令全部写入驱动,然后再把当前命令缓存到用户 buffer |
进行任意角度旋转的时候可以进行 blending,并且可以指定原图和目标图的旋转中心,任意角度旋转原图和目标图都只支持 RGB 格式。 其中旋转角度传给驱动的是旋转角度的 sin 和 cos 值,为 2.12 定点数,其中小数部分 12bits ,则应用程序计算 sin 和 cos 值的方法如下:
iintmpp_ge_emit(structmpp_ge*ge); |
|
---|---|
功能说明 | 向驱动发送命令 |
参数定义 | ge: struct mpp_ge 结构体指针 |
返回值 | 0:成功;<0:失败 |
注意事项 | normal(非命令队列)模式此接口为空,不产生任何作用命令队列模式此接口通过 write 接口,把用户 buffer 中缓存的命令都写入驱动 |
iintmpp_ge_sync(structmpp_ge*ge); |
|
---|---|
功能说明 | 阻塞等待所有任务执行完成 |
参数定义 | ge: struct mpp_ge 结构体指针 |
返回值 | 0:成功;<0:失败 |
注意事项 | normal(非命令队列)模式此接口为空,不产生任何作用命令队列模式此接口通过调用 SYNC 接口,等待所有任务都完成 |