1*4882a593Smuzhiyun# librga 2*4882a593Smuzhiyun 3*4882a593SmuzhiyunRGA (Raster Graphic Acceleration Unit)是一个独立的2D硬件加速器,可用于加速点/线绘制,执行图像缩放、旋转、bitBlt、alpha混合等常见的2D图形操作。本仓库代码实现了RGA用户空间驱动,并提供了一系列2D图形操作API。 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun## 版本说明 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun**RGA API** 版本: 1.9.3 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun## 适用芯片平台 10*4882a593Smuzhiyun 11*4882a593SmuzhiyunRockchip RK3066 | RK3188 | RK2926 | RK2928 | RK3026 | RK3028 | RK3128 | Sofia3gr | RK3288 | RK3288w | RK3190 | RK1108 | RK3368 | RK3326 | RK3228 | RK3228H | RK3326 | RK1808 | RV1126 | RV1109 | RK3399 | RK3399pro | RK3566 | RK3568 | RK3588 | RK3326S | RV1106 | RV1103 | RK3528 | RK3562 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun## 目录说明 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun├── **im2d_api**:RGA API相关实现及头文件<br/> 16*4882a593Smuzhiyun├── **include**:RGA硬件相关头文件<br/> 17*4882a593Smuzhiyun├── **core**:RGA用户空间驱动实现<br/> 18*4882a593Smuzhiyun├── **docs**:FAQ以及API说明文档<br/> 19*4882a593Smuzhiyun├── **samples**:示例代码<br/> 20*4882a593Smuzhiyun├── **toolchains**:示例工具链配置文件<br/> 21*4882a593Smuzhiyun└──其余编译相关文件<br/> 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun## 编译说明 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun### Android Source Project 26*4882a593Smuzhiyun 27*4882a593Smuzhiyun 下载librga仓库拷贝至android源码工程 hardware/rockchip目录,配置好编译环境后,执行**mm**进行编译,根据不同的Android版本将自动选择Android.mk或Android.bp作为编译脚本。 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun```bash 30*4882a593Smuzhiyun$ mm -j16 31*4882a593Smuzhiyun``` 32*4882a593Smuzhiyun 33*4882a593Smuzhiyun### CMAKE 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun 本仓库示例代码支持CMAKE编译,可以通过修改toolchain_*.cmake文件以及编译脚本实现快速编译。 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun#### 工具链修改 38*4882a593Smuzhiyun 39*4882a593Smuzhiyun- **Android NDK(build for android)** 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun 参考librga源码目录下**toolchains/toolchain_android_ndk.cmake**写法,修改NDK路径、Android版本信息等。 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun| 工具链选项 | 描述 | 44*4882a593Smuzhiyun| ----------------------------------- | -------------------------------------------- | 45*4882a593Smuzhiyun| CMAKE_ANDROID_NDK | NDK编译包路径 | 46*4882a593Smuzhiyun| CMAKE_SYSTEM_NAME | 平台名,默认为Android | 47*4882a593Smuzhiyun| CMAKE_SYSTEM_VERSION | Android版本 | 48*4882a593Smuzhiyun| CMAKE_ANDROID_ARCH_ABI | 处理器版本 | 49*4882a593Smuzhiyun| CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION | 工具链选择(clang/gcc) | 50*4882a593Smuzhiyun| CMAKE_ANDROID_STL_TYPE | NDK C++库的链接方式(c++_static/c++_shared) | 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun- **Linux(buildroot/debian)** 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun 参考librga源码目录下**toolchains/toolchain_linux.cmake**写法,修改工具链路径、名称。 55*4882a593Smuzhiyun 56*4882a593Smuzhiyun| 工具链选项 | 描述 | 57*4882a593Smuzhiyun| -------------- | ---------- | 58*4882a593Smuzhiyun| TOOLCHAIN_HOME | 工具链目录 | 59*4882a593Smuzhiyun| TOOLCHAIN_NAME | 工具链名称 | 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun#### 编译脚本修改 62*4882a593Smuzhiyun 63*4882a593Smuzhiyun 修改samples目录或需要编译的示例代码目录下**cmake_*.sh**,指定toolchain路径。 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun| 编译选项 | 描述 | 66*4882a593Smuzhiyun| -------------- | ------------------------------------------------------------ | 67*4882a593Smuzhiyun| TOOLCHAIN_PATH | toolchain的绝对路径,即《工具链修改》小节中修改后的toolchain_*.cmake文件的绝对路径 | 68*4882a593Smuzhiyun| LIBRGA_PATH | 需要链接的librga.so的绝对路径,默认为librga cmake编译时的默认打包路径 | 69*4882a593Smuzhiyun| BUILD_DIR | 编译生成文件存放的相对路径 | 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun#### 执行编译脚本 72*4882a593Smuzhiyun 73*4882a593Smuzhiyun- **Android NDK(build for android)** 74*4882a593Smuzhiyun 75*4882a593Smuzhiyun```bash 76*4882a593Smuzhiyun$ chmod +x ./cmake_android.sh 77*4882a593Smuzhiyun$ ./cmake_android.sh 78*4882a593Smuzhiyun``` 79*4882a593Smuzhiyun 80*4882a593Smuzhiyun- **Linux(buildroot/debian)** 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun```bash 83*4882a593Smuzhiyun$ chmod +x ./cmake_linux.sh 84*4882a593Smuzhiyun$ ./cmake_linux.sh 85*4882a593Smuzhiyun``` 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun### Meson 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun 本仓库提供了meson.build,buildroot/debian支持meson编译。单独编译可以使用meson.sh 脚本进行config,需要自行修改meson.sh 内指定install 路径,以及PATH等环境变量,cross目录下是交叉编译工具配置文件,也需要自行修改为对应交叉编译工具路径。 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun 执行以下操作完成编译: 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun```bash 94*4882a593Smuzhiyun$ ./meson.sh 95*4882a593Smuzhiyun``` 96*4882a593Smuzhiyun 97*4882a593Smuzhiyun## 使用说明 98*4882a593Smuzhiyun 99*4882a593Smuzhiyun* **头文件引用** 100*4882a593Smuzhiyun 101*4882a593Smuzhiyun * C++调用im2d api 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun im2d_api/im2d.hpp 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun * C调用im2d api 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun im2d_api/im2d.h 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun* **库文件** 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun librga.so 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun librga.a 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun* **librga应用开发接口说明文档** 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun [IM2D API说明文档【中文】](docs/Rockchip_Developer_Guide_RGA_CN.md) 118*4882a593Smuzhiyun 119*4882a593Smuzhiyun [IM2D API说明文档【英文】](docs/Rockchip_Developer_Guide_RGA_EN.md) 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun* **RGA模块FAQ文档** 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun [RGA_FAQ【中文】](docs/Rockchip_FAQ_RGA_CN.md) 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun [RGA_FAQ【英文】](docs/Rockchip_FAQ_RGA_EN.md) 126*4882a593Smuzhiyun 127