Best way to run GPU-accelerated applications

Might buy one, if this board stays messy too long…
One thing I’m wondering, it seems community here is quite active, not sure how it is for other manufacturers like khadas, mekotronics…
Then wondering why they manage better on their side, if they do not have bigger community support.

The OP has hence why the discus but on Linux its generally there is no decent driver as if you watch the gpu load in sys often its not being loaded more than 60-70%
I am taking the OP at face value as for me Geekbench gave reasonable results but Glmark2-es2 was far off the mark I expected, but that is the current state of the driver.

If what you want is test/comparision with existing board, a YT channel you probably know has tested several RK3588(s) based boards (like this one, not sure he included benchmark though, but he is testing emulation/ android games.

Then you can just install same games, emulators and see how it performs.
On my side I tried WoT but not very demanding game, also Fortnite, but for some reason can’t log in, seems like button doesn’t respond (will retry with joystick).
Probably Genshin Impact is the best to have an idea (he says from previous video, 60FPS, medium settings).

EDIT: finally found some android benchmark for mekotronics,
score he got is 4054 which is a bit better to what I got (around 3700 I think) not huge difference it seems at the end.

I appreciate your advice… You must have searched for these things for a bit.
I can see that there are benchmarks there but these are overall scores, so one problem is that the CPU affects the results. We already know that the CPU on Rock 5B performs similarly (if not better) to the competing boards, but we’d like to isolate GPU performance as the variable. You can’t do this just by looking at YouTube, you have to do the tests yourself. In this way you can control other variables as well. Otherwise the numbers don’t mean much.

You also won’t get any info from running a game. You need a dedicated GPU test, with scores for various tasks done with various APIs. Then we can start to figure out what goes wrong and which driver combination actually works, or whether it’s a hardware problem.

I’ll check the Compute benchmark in Geekbench. Looks like it runs on the GPU, and is cross-platform. But we need something to compare to. So I am looking for

  1. Someone with another RK3588(S) board
  2. Someone who can boot the newest android image (20221104) from NVME as I don’t have a spare disk, and run it on their board
  3. Some suggestions for good GPU tests (games aren’t)

On second video link, he performs benchmarks both for CPU and GPU.

  • 3D Mark : 4050
  • Antutu (GPU) 222985

I just linked benchmark from YT because no one here seems to have other boards to test on.
Whether it was done by you or someone else, don’t really change the score you’ll get from benchmarks

As for accuracy, I would believe they still give good approximation of performance level you can expect from your GPU. Unless there are other way of testing …
Of course there is probably more in depth testing like Vulkan API…

1 Like

Ah yes. I’ll do antutu then and run the Vulkan and OpenGL Geekbench benchmarks. Then we can compare. I will edit the first post for the scores, and wait for someone to join…

Don’t forget to treat all kinds of “scores” with a grain of doubt. For example, I’ve just ran glmark-es2 with panfork and blob drivers, and got interesting results…


    GL_VENDOR:     Panfrost
    GL_RENDERER:   Mali-G610 (Panfrost)
    GL_VERSION:    OpenGL ES 3.1 Mesa 23.0.0-devel
[build] use-vbo=false: FPS: 1164 FrameTime: 0.859 ms
[build] use-vbo=true: FPS: 1223 FrameTime: 0.818 ms
[texture] texture-filter=nearest: FPS: 1314 FrameTime: 0.761 ms
[texture] texture-filter=linear: FPS: 1286 FrameTime: 0.778 ms
[texture] texture-filter=mipmap: FPS: 1276 FrameTime: 0.784 ms
[shading] shading=gouraud: FPS: 1195 FrameTime: 0.837 ms
[shading] shading=blinn-phong-inf: FPS: 1170 FrameTime: 0.855 ms
[shading] shading=phong: FPS: 1132 FrameTime: 0.883 ms
[shading] shading=cel: FPS: 1110 FrameTime: 0.901 ms
[bump] bump-render=high-poly: FPS: 843 FrameTime: 1.186 ms
[bump] bump-render=normals: FPS: 1302 FrameTime: 0.768 ms
[bump] bump-render=height: FPS: 1170 FrameTime: 0.855 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1162 FrameTime: 0.861 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 928 FrameTime: 1.078 ms
[pulsar] light=false:quads=5:texture=false: FPS: 1203 FrameTime: 0.831 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 304 FrameTime: 3.289 ms
[desktop] effect=shadow:windows=4: FPS: 943 FrameTime: 1.060 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 352 FrameTime: 2.841 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 351 FrameTime: 2.849 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 402 FrameTime: 2.488 ms
[ideas] speed=duration: FPS: 849 FrameTime: 1.178 ms
[jellyfish] <default>: FPS: 1039 FrameTime: 0.962 ms
[terrain] <default>: FPS: 69 FrameTime: 14.493 ms
[shadow] <default>: FPS: 870 FrameTime: 1.149 ms
[refract] <default>: FPS: 299 FrameTime: 3.344 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1227 FrameTime: 0.815 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1227 FrameTime: 0.815 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1249 FrameTime: 0.801 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 1238 FrameTime: 0.808 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1219 FrameTime: 0.820 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1237 FrameTime: 0.808 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1233 FrameTime: 0.811 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1232 FrameTime: 0.812 ms
                                  glmark2 Score: 994


    GL_VENDOR:     ARM
    GL_VERSION:    OpenGL ES 3.2 v1.g6p0-01eac0.efb75e2978d783a80fe78be1bfb0efc1
[build] use-vbo=false: FPS: 1005 FrameTime: 0.995 ms
[build] use-vbo=true: FPS: 1070 FrameTime: 0.935 ms
[texture] texture-filter=nearest: FPS: 1090 FrameTime: 0.917 ms
[texture] texture-filter=linear: FPS: 1120 FrameTime: 0.893 ms
[texture] texture-filter=mipmap: FPS: 1150 FrameTime: 0.870 ms
[shading] shading=gouraud: FPS: 1020 FrameTime: 0.980 ms
[shading] shading=blinn-phong-inf: FPS: 1027 FrameTime: 0.974 ms
[shading] shading=phong: FPS: 972 FrameTime: 1.029 ms
[shading] shading=cel: FPS: 1010 FrameTime: 0.990 ms
[bump] bump-render=high-poly: FPS: 804 FrameTime: 1.244 ms
[bump] bump-render=normals: FPS: 1169 FrameTime: 0.855 ms
[bump] bump-render=height: FPS: 1133 FrameTime: 0.883 ms
[effect2d] kernel=0,1,0;1,-4,1;0,1,0;: FPS: 1148 FrameTime: 0.871 ms
[effect2d] kernel=1,1,1,1,1;1,1,1,1,1;1,1,1,1,1;: FPS: 956 FrameTime: 1.046 ms
[pulsar] light=false:quads=5:texture=false: FPS: 1142 FrameTime: 0.876 ms
[desktop] blur-radius=5:effect=blur:passes=1:separable=true:windows=4: FPS: 737 FrameTime: 1.357 ms
[desktop] effect=shadow:windows=4: FPS: 987 FrameTime: 1.013 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 200 FrameTime: 5.000 ms
[buffer] columns=200:interleave=false:update-dispersion=0.9:update-fraction=0.5:update-method=subdata: FPS: 190 FrameTime: 5.263 ms
[buffer] columns=200:interleave=true:update-dispersion=0.9:update-fraction=0.5:update-method=map: FPS: 286 FrameTime: 3.497 ms
[ideas] speed=duration: FPS: 614 FrameTime: 1.629 ms
[jellyfish] <default>: FPS: 952 FrameTime: 1.050 ms
[terrain] <default>: FPS: 234 FrameTime: 4.274 ms
[shadow] <default>: FPS: 955 FrameTime: 1.047 ms
[refract] <default>: FPS: 362 FrameTime: 2.762 ms
[conditionals] fragment-steps=0:vertex-steps=0: FPS: 1047 FrameTime: 0.955 ms
[conditionals] fragment-steps=5:vertex-steps=0: FPS: 1074 FrameTime: 0.931 ms
[conditionals] fragment-steps=0:vertex-steps=5: FPS: 1092 FrameTime: 0.916 ms
[function] fragment-complexity=low:fragment-steps=5: FPS: 1097 FrameTime: 0.912 ms
[function] fragment-complexity=medium:fragment-steps=5: FPS: 1100 FrameTime: 0.909 ms
[loop] fragment-loop=false:fragment-steps=5:vertex-steps=5: FPS: 1108 FrameTime: 0.903 ms
[loop] fragment-steps=5:fragment-uniform=false:vertex-steps=5: FPS: 1122 FrameTime: 0.891 ms
[loop] fragment-steps=5:fragment-uniform=true:vertex-steps=5: FPS: 1135 FrameTime: 0.881 ms
                                  glmark2 Score: 912

You may notice that the score of the blob driver is somewhat lower. However, the most complicated tests, e.g. terrain and refract, were actually running a lot faster!

1 Like

Can someone explain step by step how to install the blob driver with radxa debian image and x11? I can’t find one anywhere.
Actually it’s in the repos and already installed. But Xorg is still using llvmpipe.

1 Like

Hi. Just booted amazingfates Armbian Ubu 22 Gnome build and I also get 995 for glmark2-es2-wayland score so I’d say that’s the confirmed speed status of panfork at this time for the G610.

I also have a Linux fr Scratch build of KDE on usb3 hdd working with X. Wayland wont fully start yet. That’s with mesa-panfork-git 23.0.0 I built myself. Happy so far with my Rock5. It’s noticibly faster than my N2+ and i’ve enjoyed that board for 2+ yrs.

1 Like

As mentioned above, that score of 995 is a bit misleading: you get ~1000 fps in all simple tests, but when it comes to the “terrain” test (the most computationally intensive one), the blob driver will get you a 3x speedup. In the “real life” performance, like Minecraft, that could mean some hefty 3x speedup too: Guide: run Minecraft at full speed on Rock 5B

What’s the package name?

It’s pretty much the same, I wouldn’t worry about that being an issue.

Using the Khadas Edge2 image for userspace, glmark2-es2-wayland gave me just about exactly the same score as cnx-software got in their review—slightly over 4000.

It’s somewhere in the middle. The difference in performance is less from being “computationally intensive”, and more about the number of GPU jobs required per frame.

The terrain and refract tests both do mipmapping every frame, which requires a lot of separate GPU jobs. Most games don’t do that, and only require one or two jobs, so the slow down will not be so bad.

That said, I do have some patches that improve performance a lot, with some games more than doubling in performance, but they are not quite ready. glmark2 improves a lot, though terrain and refract are still not as good as the blob:

[bump] bump-render=high-poly: FPS: 1907 FrameTime: 0.524 ms
[bump] bump-render=normals: FPS: 7389 FrameTime: 0.135 ms
[bump] bump-render=height: FPS: 7348 FrameTime: 0.136 ms
[terrain] <default>: FPS: 147 FrameTime: 6.803 ms
[shadow] <default>: FPS: 2905 FrameTime: 0.344 ms
[refract] <default>: FPS: 282 FrameTime: 3.546 ms

Finally, note that “real life” is not just about performance, but compatibility. gl4es works sometimes, but some hardware features (e.g. BCn texture compression, precise occlusion queries) cannot be used, and emulating features can only get so far… often gl4es+blob crashes or has game-breaking graphical artefacts.

1 Like

The OPi folks set up the apt configuration to hold back some upgrades. If you try to manually apt install gnome on debian, apt will abort because dependency on xserver-common. The X stuff seems to be what is held back form upgrading.

I believe (gut feel) the issues are centered around gnomes switch to Wayland. The Mali drivers apparently don’t want to play with Wayland yet, …

So, I think rockchip or someone at BSP level is still cooking the RK3588’ Mali drivers. Hence, at least 2 different 3588x boards (radxa and orngPi) won’t play with newer gnome packages.

1 Like