Blender 2.79 runing accelerated on RK3588 with box64

It's hard to have a working Blender on ARM64 (or AARCH64) on Linux, I found a working solution on current state of Panfrost driver

Date: 2028-08-03
Tags: 3d, Blender, RK3588, Rockchip, Wayland, X11, Xorg, arm64, box64, mesa

This could be updated depending on driver, box64, and new ARM/RISC-V Blender port progress

I'm runing it on RK3588, with Arch Linux ARM, using box64-git-0.4.3.4.r65.g78383901f (git rev 7838390 or git rev 1058aae) or stable 0.4.2. It work some times with box64 0.4.4 stable and not at all with version git 0.4.4.r6.ge0ae94d74. An issue about this 0.4.4 regression is open, you can follow it, I will update this post as soon it is resolved, if don't forget.

Warning, it fails at first launch, as you see in the video, with message "Open dir error: Connection refused", you need to launch it a second time, at first launch.

>
Blender 2.79b with emulation, note that the video is not 60fps due to video capture pipeline, and recording at 25fps on a 60Hz display ^^
>
Tests of in editor Blender rendering and Cycles rendering with mirror material and subsurfacescattering matierial.

I already managed to compile and making 2.76 work on ARM 32bits (RK3288), nativen ten years ago (October 2015) with a simple few lines patch. Software rendering was fast enough for old version of Blender at this time. As it become very hard to compile this time version with today systems libs, I found a solution, with x86_64 version + Box64, a 86_64 JIT + dynarec CPU emulator and native system library wrapper. Software rendering is still usable, but that's now possible to use full hardware acceleration for the on screen 3d rendering. Thanks to Panfrost Mesa driver.

Blender 2.93.18 can run on the same system but only with Mesa LLVMpipe software rendering (see the last line of this post for the launch line), it is a bit slow, but not unusable for simple scenes or modeling light objects.

ToC


What works

With 2.79b:

What work (already tested):

Possible improvment:

Installing Tools

We need:

I believe all the process for 2.79b at least should work on RISC-V architecture too. There is an official port of box64 too, and most integrated GPU are PowerVR, also supported by Mesa since few time now.

For box64 (with Arch Linux ARM)

yay -S box64 wget
wget https://github.com/Lethja/blender-appimage/releases/download/2026-07-22/blender-2.79b-x86_64.AppImage.zip
unzip blender-2.79b-x86_64.AppImage.zip

Running it

It will fail the first time, due to a problem with directory, so need to launch it 2 times at first. One time only is good enough as long as path of the appImage is not moved. You will need to launch it two times again else :).

PAN_MESA_DEBUG=gl3 box64 blender-2.79b-x86_64.AppImage

So if fails with "Open dir error: Connection refused" (as in the video), it will now work at next launchs. Launch it a second time

PAN_MESA_DEBUG=gl3 box64 blender-2.79b-x86_64.AppImage

It also work with zink (Vulkan conversion) by using the following command (you need to fake full 3.3 support, as all used function are here, but not the full 3.3 that blender wants, by default zink claims GL 2.1):

MESA_GL_VERSION_OVERRIDE=3.3 MESA_LOADER_DRIVER_OVERRIDE=zink GALLIUM_DRIVER=zink box64 blender-2.79b-x86_64.AppImage

I tried among Blender demo files Barbershop Interior, a complex scene, it works slowly with OpenGL (maybe 3fps) and crash with Zink. Obviously that's not a good idea to make final render using CPU emulation, but if OpenCL acceleration is used for rendering. In my own point of view, it's far faster with such complex scenes than on 32 bits x86 used 20 years ago ^^.

For information, it throws some warnings:

MESA: warning: WARNING: Incorrect rendering will happen because the Vulkan device doesn't support the 'smoothLines' feature
MESA: warning: WARNING: Incorrect rendering will happen because the Vulkan device doesn't support the 'stippledBresenhamLines' feature

I managed to run 2.93.18 with Mesa OpenGL software (LLVMpipe) rendering

LIBGL_ALWAYS_SOFTWARE=1 box64 blender-2.93.18-x86_64.AppImage

Triend pure zink with it, it crash:

MESA_GL_VERSION_OVERRIDE=3.3 MESA_LOADER_DRIVER_OVERRIDE=zink GALLIUM_DRIVER=zink box64 blender-2.93.18-x86_64.AppImage

And tried with LLVMpipe + zink too but the display is very slow too.

MESA_GL_VERSION_OVERRIDE=3.3 LIBGL_ALWAYS_SOFTWARE=1 MESA_LOADER_DRIVER_OVERRIDE=zink GALLIUM_DRIVER=zink box64 blender-2.93.18-x86_64.AppImage

It also crash with zink + lavapipe (software Vulkan rendering):

VK_DRIVER_FILES=/usr/share/vulkan/icd.d/lvp_icd.aarch64.json MESA_LOADER_DRIVER_OVERRIDE=zink GALLIUM_DRIVER=zink box64 blender-2.93.18-x86_64.AppImage

Context and Problems

The used version of Blender is an old 2.96b version. This achievement use x86_64 appimage version found on . It still have most needed basic features for modern computer (including rigging, uvmapping, shaders, etc). In the current state ARM Mali GPU, Panfrost driver, doesn't support geometry shaders. This is needed by 2.90 version of Blender, so you will be able to run it with software rendering only, and despite the efficiency of llvmpipe (didn't managed to use llvmlava + zink), this is a bit slow for real usage, but still usable if your are patient enough ^^.

RK3588 use Mali G610 MP4, so depend on Panfrost (Open GL + Open GL ES Open CL + GLSL + Vulkan)

Blender >=2.90 complains about missing geometry shaders (there are not implemented in august 2026 on Panfrost driver) before failing :

ERROR (gpu.shader): OVERLAY_shader_armature_shape_421 GeomShader: 
      | 
  451 | layout(line_strip, max_vertices = 2) out;
      |                     ^
      | Error:  maximum output vertices (2) exceeds GL_MAX_GEOMETRY_OUTPUT_VERTICES

But it can be used with far slower software rendering (see instruction at the end of Running it section above.

Current system status

August 2026

You can downlooad full raw OpenCL clinfo command output, OpenGL glxinfo and Vulkan vulkaninfo status.

OpenCL level support of Mesa for G610 GPU at current time, after clinfo command, I only pasted some information that look useful, don't know a lot about OpenCL:

  Device Name                                     Mali-G610 MC4 (Panfrost)
  Device Vendor                                   Arm
  Device Vendor ID                                0x13b5
  Device Version                                  OpenCL 3.0
  Device Numeric Version                          0xc00000 (3.0.0)
  Driver Version                                  26.3.0-devel (git-64f9ff1d26)
  Device OpenCL C Version                         OpenCL C 1.2
  Device OpenCL C Numeric Version                 0x402000 (1.2.0)
  [...]
  Latest conformance test passed                  v2026-06-18-00
  Device Type                                     GPU
  Device Profile                                  FULL_PROFILE
  [...]
  Execution capabilities
    Run OpenCL kernels                            Yes
    Run native kernels                            No
    Non-uniform work-groups                       No
    Work-group collective functions               No
    Sub-group independent forward progress        No
    IL version                                    SPIR-V_1.0 SPIR-V_1.1 SPIR-V_1.2 SPIR-V_1.3 SPIR-V_1.4 SPIR-V_1.5 SPIR-V_1.6

Détails: For cpython3.5, I use python 3.14; could need a pyton3.5 in parallel to have wrapper working:

found bundled python: /tmp/.mount_blendeDfhjaa/2.79/python
[BOX64] Using emulated /tmp/.mount_blendeDfhjaa/2.79/python/lib/python3.5/lib-dynload/math.cpython-35m-x86_64-linux-gnu.so
[BOX64] Using emulated /tmp/.mount_blendeDfhjaa/2.79/python/lib/python3.5/lib-dynload/_heapq.cpython-35m-x86_64-linux-gnu.so

For jack at boot, I use pipewire jack wrapper ant it is in /usr/lib/libjack.so.0:

[BOX64] Error loading needed lib libjack.so
[BOX64] Warning: Cannot dlopen("libjack.so"/0x61449a8, 1)
[BOX64] Error loading needed lib libjack.so.0
[BOX64] Warning: Cannot dlopen("libjack.so.0"/0x61449b3, 1)