4 simple steps (without compiling/patching code) to get better OpenGL perfomance on Rock5B with Armbian:
- Install and use panfork:
sudo add-apt-repository ppa:liujianfeng1994/panfork-mesa
q@rock-5b:~$ cd /lib/firmware
q@rock-5b:/lib/firmware$ sudo wget https://github.com/JeffyCN/rockchip_mirrors/raw/libmali/firmware/g610/mali_csffw.bin
--2023-02-10 01:07:06-- https://github.com/JeffyCN/rockchip_mirrors/raw/libmali/firmware/g610/mali_csffw.bin
Resolving github.com (github.com)... 140.82.121.3
Connecting to github.com (github.com)|140.82.121.3|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://raw.githubusercontent.com/JeffyCN/rockchip_mirrors/libmali/firmware/g610/mali_csffw.bin [following]
--2023-02-10 01:07:07-- https://raw.githubusercontent.com/JeffyCN/rockchip_mirrors/libmali/firmware/g610/mali_csffw.bin
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.110.133, 185.199.111.133, 185.199.108.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.110.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 274432 (268K) [application/octet-stream]
Saving to: ‘mali_csffw.bin’
mali_csffw.bin 100%[=============================>] 268.00K 1.73MB/s in 0.2s
2023-02-10 01:07:07 (1.73 MB/s) - ‘mali_csffw.bin’ saved [274432/274432]
q@rock-5b:/lib/firmware$ sudo add-apt-repository ppa:liujianfeng1994/panfork-mesa
q@rock-5b:/lib/firmware$ sudo apt update && sudo apt upgrade
q@rock-5b:~$ sudo apt list --installed | grep panfork
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
libegl-mesa0/jammy,now 23.0~panfork~csf~git221210.120202c6757~j arm64 [installed,automatic]
libegl1-mesa-dev/jammy,now 23.0~panfork~csf~git221210.120202c6757~j arm64 [installed,automatic]
libgbm-dev/jammy,now 23.0~panfork~csf~git221210.120202c6757~j arm64 [installed,automatic]
libgbm1/jammy,now 23.0~panfork~csf~git221210.120202c6757~j arm64 [installed,automatic]
libgbm1/jammy,now 23.0~panfork~csf~git221210.120202c6757~j armhf [installed,automatic]
libgl1-mesa-dri/jammy,now 23.0~panfork~csf~git221210.120202c6757~j arm64 [installed,automatic]
libgl1-mesa-dri/jammy,now 23.0~panfork~csf~git221210.120202c6757~j armhf [installed,automatic]
libglapi-mesa/jammy,now 23.0~panfork~csf~git221210.120202c6757~j arm64 [installed,automatic]
libglapi-mesa/jammy,now 23.0~panfork~csf~git221210.120202c6757~j armhf [installed,automatic]
libglx-mesa0/jammy,now 23.0~panfork~csf~git221210.120202c6757~j arm64 [installed,automatic]
libglx-mesa0/jammy,now 23.0~panfork~csf~git221210.120202c6757~j armhf [installed,automatic]
- Use nighly kernel:
sudo armbian-config
System - Nightly (Switch to nightly automated builds)
or
edit/etc/apt/sources.list.d/armbian.list
and replace
deb [signed-by=/usr/share/keyrings/armbian.gpg] http://apt.armbian.com jammy main jammy-utils jammy-desktop
with
deb [signed-by=/usr/share/keyrings/armbian.gpg] http://beta.armbian.com jammy main jammy-utils jammy-desktop
Then update your kernel and other:sudo apt update && sudo apt upgrade
q@rock-5b:~$ sudo apt list --installed | grep trunk
WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
armbian-bsp-cli-rock-5b/now 23.02.0-trunk.0247 arm64 [installed,local]
armbian-config/now 23.02.0-trunk.0247 all [installed,local]
armbian-firmware/now 23.02.0-trunk.0247 all [installed,local]
armbian-jammy-desktop-gnome/now 23.02.0-trunk.0247 all [installed,local]
armbian-plymouth-theme/now 23.02.0-trunk.0247 all [installed,local]
linux-dtb-legacy-rockchip-rk3588/now 23.02.0-trunk.0242 arm64 [installed,local]
linux-headers-legacy-rockchip-rk3588/now 23.02.0-trunk.0242 arm64 [installed,local]
linux-image-legacy-rockchip-rk3588/now 23.02.0-trunk.0242 arm64 [installed,local]
linux-libc-dev/now 23.02.0-trunk.0247 arm64 [installed,local]
linux-u-boot-rock-5b-legacy/now 23.02.0-trunk.0247 arm64 [installed,local]
- Use performance mode in cpu/gpu/dmc:
Create bash script and run it to switch between performance and ondemand modes.
q@rock-5b:~$ cat ./sw-perf.sh
#!/bin/bash
s="performance"
if [ "$s" == "$(cat /sys/class/devfreq/fb000000.gpu/governor)" ] ;then
echo simple_ondemand > /sys/class/devfreq/fb000000.gpu/governor
echo ondemand > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
echo ondemand > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor
echo ondemand > /sys/devices/system/cpu/cpufreq/policy6/scaling_governor
echo dmc_ondemand > /sys/class/devfreq/dmc/governor
else
echo "$s" > /sys/class/devfreq/fb000000.gpu/governor
echo "$s" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
echo "$s" > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor
echo "$s" > /sys/devices/system/cpu/cpufreq/policy6/scaling_governor
echo "$s" > /sys/class/devfreq/dmc/governor
fi
cat /sys/class/devfreq/fb000000.gpu/governor && cat /sys/devices/system/cpu/cpufreq/policy0/scaling_governor && cat /sys/devices/system/cpu/cpufreq/policy4/scaling_governor && cat /sys/devices/system/cpu/cpufreq/policy6/scaling_governor && cat /sys/class/devfreq/dmc/governor
q@rock-5b:~$ sudo ~/sw-perf.sh
[sudo] password for q:
performance
performance
performance
performance
performance
- Run your app with
PAN_MESA_DEBUG=gofaster:
I’m getting ~4400-4500 score in Gnome 42.5/Wayland when runningPAN_MESA_DEBUG=gofaster glmark2-wayland