RK3568开发板上应用Mesa 3D

本文介绍了如何在基于OpenHarmony的扬帆“竞”开发板上,使用Mesa3D开源库替换默认的闭源libmali库,详细阐述了编译Mesa库的步骤,并修改了相关配置文件以支持Mesa3D,从而实现OpenGL支持和图形栈的优化。

前言

本次采用的开发板为扬帆“竞”开发板,扬帆“竞”采用瑞芯微RK3568(Cortex-A55)四核64位超强CPU,搭载OpenHarmony最新操作系统,主频最高达2.0GHz。采用 Mali-G52 GPU,支持4K、H.265/H.264视频解码。
OpenHarmony最新版本的L2标准版图形子系统相比之前版本有着非常大的改动,使用了全新设计的框架,并使用Render Service替换了原来的Weston。图形栈整体上分为三层,从上到下依次为接口层、框架层和引擎层。设计上更加清晰,可以更加的灵活的适配不同的底层图形库和不同的显示硬件,最大限度的发挥硬件性能而不用影响到整体图形栈。


框架层的整体功能如下表,框架层的核心就是Render Service渲染服务。

模块 能力描述
Render Servicel (渲染服务) 提供UI框架的绘制能力,其核心职责是将ArkUI的控件描述转换成绘制树信息,根据对应的渲染策略,进行最佳路径渲染。同时,负责多窗口流畅和空间态下UI共享的核心底层机制。
Drawing (绘制) 提供图形子系统内部的标准化接口,主要完成2D渲染、3D渲染和渲染引擎的管理等基本功能。
Animation (动画) 提供动画引擎的相关能力。
Effect (效果) 主要完成图片效果、渲染特效等效果处理的能力,包括:多效果的串联、并联处理,在布局时加入渲染特效、控件交互特效等相关能力。
显示与内存管理 此模块是图形栈与硬件解耦的主要模块,主要定义了OpenHarmony 显示与内存管理的能力,其定义的南向HDI 接口需要让不同的OEM厂商完成对OpenHarmony图形栈的适配。

新的Render Service图形框架默认提供了对OpenGL的支持,并使用API HOOK技术,实现了OpenGL接口和实现的分离,大幅度降低了OpenGL库的适配难度。
扬帆“竞”开发板默认使用的是闭源的libmali-bifrost-g52-g2p0-ohos库,也可以使用开源的Mesa 3D库,实现对OpenGL的支持,在高级图形应用的开发和调试方面非常方便。

使用Mesa库

编译Mesa库

OpenHarmony已经在三方库中集成Mesa库。下载OpenHarmony全量代码,Mesa库在third_party/mesa3d。
进入third_party/mesa3d/目录,OpenHarmony已经提供了编译脚本。其中ohos/build_ohos.py就是针对新图形框架的编译脚本,参考README_zh.md文档,先进行一次全量编译,然后执行。

#python ohos/build_ohos.py </path/to/openharmony> yangfan-j </path/to/openharmony>/third_party/mesa3d

 

命令编译出mesa库。

生成Mesa组件

1.在device/soc/rockchip/rk3568/hardware/gpu/目录下新建lib-mesa目录,用于存放Mesa 3D库文件。

#mkdir …/device/soc/rockchip/rk3568/h

<think>我们参考用户提供的引用内容,特别是引用[3]和引用[4]中关于在RK3588开发板(Ubuntu系统)上安装Qt运行环境的信息。 用户需求:在RK3588开发板上部署Qt运行环境(注意:不是在交叉编译的主机上,而是在开发板本身上运行Qt程序) 根据引用[3]: - 可以通过在线安装器下载Qt库,然后通过U盘拷贝到开发板,或者联网直接下载。 - 也可以使用apt命令安装Qt Creator和工具。 根据引用[4]: - 运行Qt程序时可能遇到缺少平台插件的问题,特别是xcb插件,需要安装相应的依赖库。 因此,在RK3588开发板上安装Qt运行环境的步骤如下: 1. 更新系统包 2. 安装必要的图形库依赖(解决xcb插件问题) 3. 安装Qt库(可以选择完整安装或者最小安装,根据需求) 4. 安装Qt Creator(可选,如果需要在开发板上开发) 5. 验证安装 注意:由于RK3588是ARM64架构,所以安装的包都是aarch64架构的。 具体步骤: ### 1. 更新系统 ```bash sudo apt update sudo apt upgrade ``` ### 2. 安装X11相关依赖(解决xcb插件问题) 根据引用[4]中提到的错误信息,缺少`libQt5XcbQpa.so.5`,这个库属于Qt5的XCB集成插件,需要安装对应的包。同时,还需要安装XCB相关的系统库。 ```bash sudo apt install libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-randr0 libxcb-randr0-dev libxcb-xtest0-dev libxcb-shm0-dev libxcb-xfixes0-dev ``` 另外,安装Qt5的XCB插件: ```bash sudo apt install libqt5xcbqpa5 ``` 如果使用Qt6,则安装Qt6的XCB插件(根据引用[3]): ```bash sudo apt install libqt6xcbqpa6 ``` ### 3. 安装Qt库 根据需求选择安装: - 安装完整的Qt5开发库: ```bash sudo apt install qt5-default ``` - 或者安装Qt6(如果系统支持): ```bash sudo apt install qt6-base-dev ``` 如果只需要运行环境而不需要开发,可以安装运行库: ```bash # Qt5运行环境 sudo apt install qtbase5-dev ``` ### 4. 安装Qt Creator(可选,如果需要在开发板上进行开发) ```bash sudo apt install qtcreator ``` ### 5. 验证安装 创建一个简单的Qt程序(例如一个Hello World程序),编译并运行。 如果使用命令行编译,可以创建一个`main.cpp`文件: ```cpp #include <QApplication> #include <QLabel> int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel label("Hello, RK3588!"); label.show(); return app.exec(); } ``` 然后使用qmake进行编译: ```bash qmake -project # 生成.pro文件 qmake # 生成Makefile make # 编译 ``` 运行程序: ```bash ./项目名称 ``` 如果遇到插件问题,可以设置环境变量调试: ```bash export QT_DEBUG_PLUGINS=1 ./项目名称 ``` 根据输出信息检查缺少的库,并安装相应的包。 ### 6. 设置快捷方式(可选) 如果安装了Qt Creator,可以通过菜单启动,也可以创建桌面快捷方式。参考引用[3]中提到的设置快捷方式的方法。 ### 常见问题解决 - **问题1:运行程序提示缺少xcb插件** 解决方案:安装上述提到的XCB相关库和Qt的XCB插件。 - **问题2:运行程序提示EGL相关错误** 如果使用EGLFS(嵌入式设备常用),可能需要设置环境变量: ```bash export QT_QPA_PLATFORM=eglfs ``` 或者使用XCB: ```bash export QT_QPA_PLATFORM=xcb ``` 如果使用XCB,确保开发板连接了显示器或者使用虚拟显示(如Xvfb)。 ### 总结 在RK3588开发板上部署Qt运行环境主要就是安装Qt库和解决依赖问题。由于RK3588运行的是Ubuntu系统,我们可以直接使用apt包管理器安装。注意根据实际使用的Qt版本(5或6)安装相应的包。 §§相关问题§§ 1. 如何在RK3588开发板上配置Qt应用程序的显示输出(如HDMI、MIPI)? 2. 如何为RK3588开发板编译Qt应用程序? 3. 如何解决RK3588上Qt应用程序的触摸屏支持问题? 4. RK3588上如何配置Qt Quick的硬件加速?</think>### RK3588开发板安装与配置Qt运行环境指南 以下步骤基于RK3588(ARM64架构)运行Ubuntu系统,结合引用内容整理: --- #### **1. 更新系统与安装基础依赖** ```bash sudo apt update sudo apt upgrade -y sudo apt install -y libxcb* libgl1-mesa-dev libegl1-mesa-dev libgles2-mesa-dev # 解决xcb插件问题[^4] ``` --- #### **2. 安装Qt运行环境** *根据需求选择方案:* - **方案A:APT安装标准版(推荐)** ```bash sudo apt install -y qt5-default qtbase5-dev qttools5-dev-tools # Qt5核心库 sudo apt install -y qtdeclarative5-dev qtquickcontrols2-5-dev # Qt Quick支持 sudo apt install -y libqt5svg5 libqt5multimedia5 # 扩展组件[^3] ``` - **方案B:手动安装Qt6(需联网)** 1. 下载Qt在线安装器: ```bash wget https://download.qt.io/official_releases/online_installers/qt-unified-linux-x64-online.run chmod +x qt-unified-linux-x64-online.run ``` 2. 选择ARM64组件: ```plaintext Qt 6.x.x > Linux ARM 64-bit Additional Libraries > Qt Multimedia, Qt Quick 3D ``` --- #### **3. 配置环境变量** ```bash # 添加到 ~/.bashrc export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/aarch64-linux-gnu/qt5/plugins export QT_QPA_PLATFORM=xcb # 使用X11显示[^4] export QT_DEBUG_PLUGINS=1 # 调试插件加载 ``` 执行生效: ```bash source ~/.bashrc ``` --- #### **4. 验证安装** ```bash # 测试Qt库 qmake -v # 应显示Qt版本 # 创建测试程序 echo -e '#include <QApplication>\n#include <QLabel>\nint main(int argc, char *argv[]){\nQApplication a(argc,argv);\nQLabel l("Qt on RK3588!");\nl.show();\nreturn a.exec();}" > test.cpp # 编译运行 qmake -project && qmake && make ./test # 应显示窗口 ``` --- ### **故障排除表** | 问题现象 | 解决方案 | |---------|----------| | **缺少libQt5XcbQpa.so** | `sudo apt install libqt5xcbqpa5` [^4] | | **EGL初始化失败** | 改用XCB:`export QT_QPA_PLATFORM=xcb` | | **触摸屏无响应** | 安装事件库:`sudo apt install libts-dev` | | **多屏显示异常** | 指定显示设备:`export QT_QPA_EGLFS_DEVICE=/dev/dri/card1` | > **关键提示**:若使用Rockchip原厂显示驱动,可启用硬件加速: > ```bash > export QT_QUICK_BACKEND=software # 改为"egl"启用GPU加速 > ``` --- ### **部署建议** 1. **最小化镜像**:使用`apt --no-install-recommends`仅安装必要组件 2. **开机自启**:创建systemd服务单元管理Qt应用 3. **内存优化**:禁用无用插件(如Wayland) ```bash sudo apt purge qtwayland5 # 移除Wayland支持 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值