xref: /OK3568_Linux_fs/external/linux-rga/README.md (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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.mkAndroid.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.buildbuildroot/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