rkrga
Rockchip RGA 库的 Rust 语言绑定.
Rockchip RGA 是一个独立的二维光栅图形加速单元。 它加速了二维图形操作,例如点/线绘制、图像缩放、旋转、位图、图像合成等。
当前基于 Rockchip RGA v1.2.x 应用接口接口实现。
本项目仅适用于 Rockchip 公司具有 RGA 模块的 SOC 平台,例如 RK33XX、RK35XX 等。
准备工作
在引用或编译本项目前,你需要将 Rust 工具链更新到 1.57 以上的版本。
同时确认 Target: aarch64-unknown-linux-gnu 已经安装,若是没有可以执行以下命令安装:
由于本项目的目标平台为 ARM64 架构,因此在开始是基本使用交叉编译模式, 在 x86/x86_64 平台上开发、编译,然后讲可执行文件上传到目标设备执行, 因此在交叉编译环境下编译本项目前你需要设置以下环境变量:
# 设置包含有 RgaApi.h 的目录
# 设置交叉编译工具链 SYSROOT 目录
另外还需要设定 Cargo 交叉编译关配置,创建 .cargo/config.toml 文件并写入类似于以下内容:
[]
= "aarch64-unknown-linux-gnu"
[]
= "/opt/fullv/2021.02.7-rklaser1/host/bin/aarch64-buildroot-linux-gnu-gcc"
= "./target-runner.sh"
注意:以上路径仅为作者自身项目所用,你需要调整为合适自己的路径。
当以上配置都妥当后,现在可以安照 Rust 标准开发流程来进行后续工作了。
使用示例
use ;
use Arc;
// 初始化 RGA 模块
let rga = new;
// 设定输入、输出图像信息
let src_rect = new.size.format.build;
let dst_rect = new.size.format.build;
// 分配输入、输出内存缓冲区
let src_bo = with_rect_mapped.unwrap;
let dst_bo = with_rect_mapped.unwrap;
// 生成 RGA 操作信息
let src_info = new.bo.rect.build;
let mut dst_info = new.bo.rect.build;
// 执行旋转操作
rga.rotate.unwrap;