Guide: run Minecraft at full speed on Rock 5B

  1. Compile install gl4es https://github.com/ptitSeb/gl4es
git clone https://github.com/ptitSeb/gl4es.git
cd gl4es
mkdir build
cd build
cmake .. -DODROID=1 -DCMAKE_BUILD_TYPE=RelWithDebInfo
make -j8 
sudo make install
  1. Export gl4es libGL.so
export LD_LIBRARY_PATH=/usr/lib/gl4es/

You can use glxgears to check if the gl4es works.

  1. Install minecraft arm64
  • Install arm64 JRE from apt or anywhere else. Personally I recommend using the dragonwell JDK for a free 20% performance boost and 30% less memory usage.
  • Install minecraft. You can use any launcher that supports ARM64 version of Minecraft. I am using HMCL that is confirmed working.
  1. Install mods
    The vanilla Minecraft works but performance is very poor(~30fps unstable)
    Use the 1.16.5 version and install these mods:
  • fabric
  • fabric api 0.42.0
  • sodium 0.2.0
  • reese’s sodium options 1.4.7
    (note: these versions is confirmed working but you can use others as well.)
  1. Change some settings
    Launch your game and turn off the “Use compact vertex format” option in the video settings, or the game will crash when entering any world.

  2. Enjoy Minecraft!
    Join any world, enter fullscreen and toggle VSync in the video setting several times, finally leave it ON.
    Then the Minecraft should be very smooth.

The performance is very impressive: ~90fps multiplayer without too many entity, ~60fps singleplayer.

6 Likes

Kudos to ptitSeb.

1 Like

Some screenshots:

~70fps singleplayer @ view distance 12 chunks, fancy graphic

~80fps multiplayer @ view distance 12 chunks, fancy graphic
(Taken at Almuj entrance, Wynncraft server)

1 Like

Hi! I tried this on my Rock5B and follow the full instruction, but I only get 20+ FPS at the same settings.

Can you show more details about your system environment?

This is the system image I am using now: https://github.com/amazingfate/armbian-rock5b-images
and installed Mesa via this : https://launchpad.net/~liujianfeng1994/+archive/ubuntu/panfork-mesa

It is expected that performance with Mesa is not yet as good as the blob driver.

It would be useful if you can install apitrace and upload a trace of Minecraft somewhere so that I can use it to optimise performance—note that gl4es should not be required for this.


Until I can improve performance, you may wish to play with the blob driver:

If you are using Wayland, you will need to compile https://gitlab.com/panfork/dri2to3.

You will also have to open the src/gl/loader.c file from gl4es and remove these two lines, then recompile and reinstall:

    if(!sanitizer)
        flags |= RTLD_DEEPBIND;

To actually download the blob driver is something like this:

mkdir -p ~/libmali/x11
cd ~/libmali/x11
wget https://github.com/JeffyCN/rockchip_mirrors/raw/libmali/lib/aarch64-linux-gnu/libmali-valhall-g610-g6p0-x11-gbm.so
ln -s libmali-valhall-g610-g6p0-x11-gbm.so libmali.so.1
for l in libEGL.so libEGL.so.1 libgbm.so.1 libGLESv2.so libGLESv2.so.2 libOpenCL.so.1; do ln -s libmali.so.1 $l; done

Then you would set these environment variables:

export LD_PRELOAD=~/dri2to3/build/libdri2to3.so LD_LIBRARY_PATH=/usr/lib/gl4es:~/libmali/x11

THX~ I tried it and now can get 60~FPS
But will it conflict when both panfrost and blob installed ?

As long as you use LD_LIBRARY_PATH when you want to use the blob rather than installing it to a system library directory, there should be no conflict.

There is no requirement to use a single driver at a time—as long as both the display server and application can speak the same protocol (DRI2/3 for Xorg, wl-drm/linux-dmabuf/mali-buffer-sharing for Wayland) then different drivers can be used together.

Note that this may change after the eventual migration to the panfrost.ko kernel driver, as the blob only knows how to deal with kbase.