2026山东大学软件学院创新项目实训(团队——7)
一、问题背景
在 OpenHarmony 系统移植和功能适配过程中,当前设备已经能够正常启动并完成基础显示,但是系统能够点亮屏幕并不代表 GPU 硬件加速链路已经完整工作。
为了确认当前板卡 GPU 是否真正参与系统图形渲染,需要对 GPU 从底层硬件到上层图形接口进行完整检查,确认各层之间是否已经建立正确连接。
本次排查主要围绕以下几个方面展开:
- GPU 硬件是否被系统正确识别;
- 内核 GPU 驱动是否成功加载;
- GPU Firmware 是否完整;
- 用户态 OpenGL ES/EGL 图形库是否部署;
- DRM 显示管线是否正常;
- 系统是否具备硬件加速能力。
整体排查思路如下:
GPU硬件
↓
内核驱动
↓
Firmware
↓
DRM设备节点
↓
Mesa/EGL
↓
OpenGL ES
↓
应用图形渲染
只有各个环节全部正常,才能说明 GPU 图形栈已经完成适配。
在排查过程中,针对部分底层状态判断问题,也与组长进行了沟通确认,进一步确定应该从整个 GPU 软件栈入手,而不是只观察应用层显示效果。
二、DRM 设备节点确认
首先从系统 DRM 子系统入手,确认 GPU 是否已经向系统注册。
通过查看设备节点:
/dev/dri/
可以发现系统存在:
card0
card1
renderD128
其中:
- card0 对应 GPU 设备;
- card1 对应显示控制器;
- renderD128 对应 GPU 渲染节点。
在 Linux 图形架构中,现代 OpenGL ES 等用户态图形接口通常通过 render 节点访问 GPU,而不是直接访问硬件节点。
因此 renderD128 的存在说明:
- DRM 框架已经初始化;
- GPU 驱动已经注册设备;
- 用户态程序具备访问 GPU 的基础条件。
这一步确认了 GPU 并不是简单存在硬件,而是已经进入系统图形框架。
三、GPU 硬件与驱动确认
确认 DRM 节点后,进一步检查 GPU 对应驱动信息。
通过系统设备信息可以看到:
DRIVER=pvrsrvkm
OF_COMPATIBLE_0=img,rgx
其中:
- pvrsrvkm 表示 PowerVR Services Kernel Module;
- img,rgx 表示设备树已经匹配到 PowerVR RGX GPU。
进一步确认驱动状态:
pvr dev=cac00000.imggpu
说明当前系统加载的是 PowerVR GPU 驱动。
经过检查可以确认:
- GPU 硬件已经被系统识别;
- Device Tree 配置匹配成功;
- 内核驱动正常加载。
这说明 GPU 底层硬件连接已经建立。
四、GPU Firmware 检查
GPU 驱动正常加载后,还需要确认 Firmware 是否完整。
现代 GPU 在运行过程中需要依赖专用固件完成初始化和任务调度,因此继续检查系统中的 RGX 固件文件。
系统中存在:
rgx.fw.*
rgx.sh.*
其中:
rgx.fw
负责:
- GPU 初始化;
- 命令调度;
- 硬件运行控制。
rgx.sh
负责:
- Shader 编译;
- 图形程序执行。
当前系统中 Firmware 和 Shader Firmware 均存在,并且版本匹配。
因此可以确认:
GPU 已经具备正常启动运行条件。
五、用户态图形库检查
完成内核部分检查后,需要继续确认用户态 OpenGL ES 图形环境。
检查系统图形库:
libGLES*
libEGL*
libpvr*
可以发现:
libEGL.so
libEGL_impl.so
libGLESv2_PVR_MESA.so
libGLESv1_CM_PVR_MESA.so
libpvr_mesa_wsi.so
其中关键的是:
PVR_MESA
说明当前系统采用:
PowerVR + Mesa
图形方案。
如果系统没有正确使用 GPU,一般会出现软件渲染组件,例如:
llvmpipe
softpipe
swrast
但当前系统不存在这些组件。
因此可以判断:
- EGL 环境完整;
- OpenGL ES 库完整;
- Mesa 已经连接 PowerVR 后端;
- 用户态具备 GPU 硬件加速能力。
六、DRM 显示链路确认
GPU 不仅需要能够渲染,还需要确认最终显示链路正常。
通过系统日志检查:
drm
gpu
pvrsrv
rgx
相关信息,可以看到:
dpu_init
spacemit_dsi_encoder_enable()
spacemit_panel_prepare()
spacemit_panel_enable()
对应完整显示流程:
GPU
↓
DRM
↓
DPU
↓
DSI Encoder
↓
LCD Panel
日志显示:
- DPU 初始化成功;
- DSI 显示接口启动;
- Panel 正常打开。
说明整个显示输出链路已经打通。
七、最终验证结果
经过逐层排查,目前系统 GPU 软件栈状态如下:
| 模块 | 状态 | 结果 |
|---|---|---|
| GPU硬件 | √ | PowerVR RGX识别成功 |
| DRM设备 | √ | card/render节点存在 |
| 内核驱动 | √ | pvrsrvkm正常加载 |
| GPU Firmware | √ | 固件完整 |
| Shader Firmware | √ | 运行环境完整 |
| EGL | √ | 接口库正常 |
| OpenGL ES | √ | 支持硬件渲染 |
| Mesa | √ | 连接PVR后端 |
| DRM/DPU显示 | √ | 显示链路正常 |
最终确认当前 OpenHarmony 系统已经形成完整 GPU 图形链路:
PowerVR RGX GPU
↓
pvrsrvkm 内核驱动
↓
GPU Firmware
↓
DRM Render Node
↓
Mesa
↓
EGL
↓
OpenGL ES
八、总结
本次 GPU 排查主要围绕系统图形栈完整性展开,通过从底层硬件到上层接口逐层验证,确认当前设备已经完成 GPU 软件栈集成。
整个过程并不是简单确认“屏幕亮了”,而是需要验证:
- GPU 是否被识别;
- 驱动是否加载;
- 固件是否存在;
- 用户态接口是否连接;
- 显示链路是否正常。
通过本次检查,确认 OpenHarmony 平台上的 PowerVR GPU 已经具备硬件加速能力,为后续图形性能优化、应用运行以及系统完善提供了基础。
更多推荐
所有评论(0)