RK3568 GPU调试记录

1、环境介绍

硬件:飞凌ok3568-c开发板

软件:原厂rk356x sdk

2、概念理清

2.1、Mali-G52 GPU

Mali是一款由ARM研发设计的移动显示芯片组(GPUs)系列。rk3566、rk3568芯片集成了一个型号为Mali-G52的GPU IP核。Mali-G52诞生于2018年第一季度。支持OpenGL ES1.1/2.0/3.0/3.1/3.2,Vulkan 1.1,OpenCL 2.1。

2.2、OpenGL、OpenGL ES、Vulkan、OpenCL

OpenGL 是一个跨平台的图形处理接口(API),用于渲染二维和三维图形。

OpenGL ES 是 OpenGL 的一个子集,专为移动设备和嵌入式系统设计。

Vulkan 是一个高性能、低开销的图形和计算 API,适用于现代 GPU 架构。

OpenCL 是一个跨平台的并行计算框架,用于通用计算任务。

3、GPU驱动

Mali GPU 驱动一般分为两部分:一小部分在 Linux 内核中,另外一大部分在 userspace,在 usercapce 的部分向下操作内核中的驱动,向上对应用层提供标准的 OpenGL 接口,这样各种图形显示相关的应用才能通过标准的 OpenGL API 进行图形渲染加速。其简易框架图参考如下:

4、获取libmali

关于内核态的GPU驱动,似乎不用我们关心,也不需要操作什么。我们需要关心的是用户空间驱动库,即libmali。下图粗略展示了OpenGL ES API -> libmali -> kernel Mali GPU driver之间的关系:

画板

可见,用户空间驱动库libmali实现了将OpenGL ES API转换成Mali GPU硬件可以理解的指令。所以所谓的用户空间驱动库是和GPU硬件高度相关的,一般由GPU厂家提供。

可以通过buildroot获取mali库:

编译buildroot过程中会下载到/external/libmali/lib/目录:

最后会拷贝到rootfs:

5、GPU测试

5.1、属性查看

如下是通过一些属性文件查看GPU相关信息:

# 查看GPU频率范围
root@rk3568-buildroot:/# cat /sys/class/devfreq/fde60000.gpu/available_frequencies
800000000 700000000 600000000 400000000 300000000 200000000
 
# 查看GPU工作模式
root@rk3568-buildroot:/# cat /sys/class/devfreq/fde60000.gpu/available_governors
rknpu_ondemand dmc_ondemand vdec2_ondemand venc_ondemand userspace powersave performance simple_ondemand
 
# 查看GPU最大频率
root@rk3568-buildroot:/# cat /sys/class/devfreq/fde60000.gpu/max_freq
800000000
 
# 查看GPU最小频率
root@rk3568-buildroot:/# cat /sys/class/devfreq/fde60000.gpu/min_freq
200000000
 
# 查看GPU实时工作模式及频率
root@rk3568-buildroot:/# cat /sys/class/devfreq/fde60000.gpu/trans_stat
     From  :   To
           : 800000000 700000000 600000000 400000000 300000000 200000000   time(ms)
  800000000:         0         4        10         2         2         6    310486
  700000000:         3         0         1         0         0         0       423
  600000000:         8         0         0         1         0         3     20326
* 400000000:         2         0         0         0         0         0       753
  300000000:         1         0         0         0         0         1       220
  200000000:        10         0         0         0         0         0      2920
Total transition : 54

# 查看当前GPU load情况
root@rk3568-buildroot:/# cat /sys/class/devfreq/fde60000.gpu/load
17@800000000Hz
# 17表示GPU的当前负载百分比。如果一直为0,说明GPU未启用。

5.2、glmark2跑分测试

GLMark2是一个用于评估和测试图形硬件加速性能的开源工具。它基于 OpenGL ES 和 OpenGL,用于测量图形系统的性能,通过一系列标准化的基准测试场景来评估渲染性能。

glmark2工具在/usr/bin目录下(没有的话需要在buildroot配置里勾选):

root@rk3568-buildroot:/# ls /usr/bin/glmark2-es2-*
/usr/bin/glmark2-es2-drm  /usr/bin/glmark2-es2-wayland

同时,rk也提供了gpu相关的测试脚本,在/rockchip-test/gpu目录下:

root@rk3568-buildroot:/# ls /rockchip-test/gpu/ -l
total 20
-rwxr-xr-x 1 root root 1289 Jan 13 16:46 gpu_test.sh					# 总脚本,用于选择测试模式
-rwxr-xr-x 1 root root 3134 Jan 13 16:46 test_fullscreen_glmark2.sh		# 以全屏模式进行图形性能测试
-rwxr-xr-x 1 root root 3013 Jan 13 16:46 test_normal_glmark2.sh			# 以普通窗口模式进行图形性能测试
-rwxr-xr-x 1 root root 2810 Jan 13 16:46 test_offscreen_glmark2.sh		# 以离屏渲染模式进行图形性能测试
-rwxr-xr-x 1 root root 3044 Jan 13 16:46 test_stress_glmark2.sh			# 压力测试,以评估 GPU 在高负载下的性能和稳定性

离屏渲染模式跑分:

全屏模式跑分:

5.3、Qt测试

使用Qt opengl es demo测试。这里暂时忽略。后面有时间移植了qt,再回来补充。

6、总结

嵌入式Linux学习交流群:424571391
参考文章:RK3568 GPU介绍及使用-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值