RPi 4: EOS is using software renderer (llvmpipe)

I’m a little ignorant on linux graphics tech so pardon me if I’m a little off track on how this is all supposed to work, terminology, etc.

I’m on a clean install of EOS on a Pi 4B, and I’m trying to get hardware graphics acceleration working. My installation is using llvmpipe software renderer by default, and I’m not entirely sure why or how to fix it.

$ uname -r
5.16.11-1-aarch64-ARCH

/boot/config.txt has dtoverlay=vc4-kms-v3d configured.

$ cat /boot/config.txt
enable_uart=1
dtoverlay=vc4-kms-v3d-pi4
initramfs initramfs-linux.img followkernel
disable_overscan=1
gpu_mem=512
max_framebuffers=2
hdmi_driver=2
[pi4]
# Run as fast as firmware / board allows
arm_boost=1

but glxinfo shows llvmpipe is in use

$ glxinfo | grep render
direct rendering: Yes
    GLX_MESA_query_renderer, GLX_MESA_swap_control, GLX_NV_float_buffer, 
    GLX_MESA_query_renderer, GLX_OML_swap_method, GLX_SGIS_multisample, 
Extended renderer info (GLX_MESA_query_renderer):
OpenGL renderer string: llvmpipe (LLVM 13.0.1, 128 bits)
    GL_ARB_conditional_render_inverted, GL_ARB_conservative_depth, 
    GL_NV_conditional_render, GL_NV_copy_image, GL_NV_depth_clamp, 
    GL_ARB_conditional_render_inverted, GL_ARB_conservative_depth, 
    GL_NV_blend_square, GL_NV_conditional_render, GL_NV_copy_depth_to_color, 
    GL_EXT_read_format_bgra, GL_EXT_render_snorm, GL_EXT_robustness, 
    GL_NV_conditional_render, GL_NV_draw_buffers, GL_NV_fbo_color_attachments, 
    GL_OES_element_index_uint, GL_OES_fbo_render_mipmap, 

OpenGL renderer string should say VC4 V3D instead of llvmpipe

In my research, I read in a few places that there should be an overlay_map.dts file in /boot/firmware or /boot/firmware/overlays. Here’s a related issue/bug discussing this

My installation doesn’t have a /boot/firmware directory at all, nor does it have an overlay_map.dts file.

I do have Pi firmware installed

$ pacman -Q firmware-raspberrypi
firmware-raspberrypi 20211222-1

More info on this page for anyone who understands it :slight_smile:

Any idea what I can do to get this configured correctly?

Thank you

I have

uname -r
5.15.24-3-rpi-ARCH

which is the Raspberry Pi Foundation kernel patched for Arch Linux.

My glxinfo

glxinfo | grep render
direct rendering: Yes
    GLX_MESA_query_renderer, GLX_MESA_swap_control, GLX_NV_float_buffer, 
    GLX_MESA_copy_sub_buffer, GLX_MESA_query_renderer, GLX_MESA_swap_control, 
Extended renderer info (GLX_MESA_query_renderer):
OpenGL renderer string: V3D 4.2
    GL_OES_fbo_render_mipmap, GL_OES_geometry_point_size, 

The
5.16.11-1-aarch64-ARCH
I believe is the mainline kernel compiled for aarch64.

I am running the
5.15.24-3-rpi-ARCH
which is the Raspberry Pi Foundation kernel. Perhaps the 5.16.11-1-aarch64-ARCH kernel does not supply the VD 3 4.2 driver?

If you want to try the 5.15.24-3-rpi-ARCH kernel, you can try this ( at your own risk of course)

sudo pacman -R --noconfirm linux-aarch64 uboot-raspberrypi
sudo pacman -Syu --noconfirm linux-rpi raspberrypi-bootloader raspberrypi-firmware
systemctl reboot

Also, in step two of installing RPi 4 one can read about the two different kernels, and choose to switch to the Raspberry Pi Foundation kernel.


If you switch to the Raspberry Pi Foundation kernel, later in the process it will ask if you want to copy the OS to a USB SSD then finish installing on the USB SSD.

Pudge

4 Likes

Just remembered.

that vc4-kms-v3d-pi4 has a problem and the devs disabled V3D until they fix it.

My /boot/config.txt

dtoverlay=vc4-fkms-v3d
dtparam=i2c_arm=on
dtparam=spi=on
dtparam=audio=on
dtoverlay=w1-gpio
camera_auto_detect=1
display_auto_detect=1
initramfs initramfs-linux.img followkernel
#hdmi_group:0=1
#hdmi_mode:0=4
#hdmi_drive:0=2
disable_overscan=1
gpu_mem=512
max_framebuffers=2

[pi4]
# Run as fast as firmware / board allows
# arm_boost=1

This dtoverlay=vc4-fkms-v3d has fkms instead of just kms, notice the f

The entire section of

dtoverlay=vc4-fkms-v3d
dtparam=i2c_arm=on
dtparam=spi=on
dtparam=audio=on
dtoverlay=w1-gpio
display_auto_detect=1

is required to get the work around configured for video.

This might be all you need to make the 5.16.11-1-aarch kernel to work with V3d?

If you used the step 3 script to install your DE or WM, it should have modified the config.txt like above.
The script copies this file to /boot/config.txt

Pudge

3 Likes

Swapping out the kernel went without a hitch and solved the problem!

$ glxinfo | grep render
direct rendering: Yes
    GLX_MESA_query_renderer, GLX_MESA_swap_control, GLX_NV_float_buffer, 
    GLX_MESA_copy_sub_buffer, GLX_MESA_query_renderer, GLX_MESA_swap_control, 
Extended renderer info (GLX_MESA_query_renderer):
OpenGL renderer string: V3D 4.2
    GL_OES_fbo_render_mipmap, GL_OES_geometry_point_size,

I was suspicious that the kernel could be the issue, and almost edited my original post about it. I selected the default during installation to be on the safe side (aarch64), but wasn’t aware of the graphics issue. I appreciate the info how to replace the kernel, that was going to be my next question.

I was only testing vc4-kms-v3d-pi4 to see if it might help, and forgot change it in my original post.

Thank you friend!

2 Likes

You are welcome. Thanks for giving EndeavourOS Arm a try.

Just out of curiosity, which DE or WM did you install?

Pudge

2 Likes

Xfce

It’s not my first rodeo with EOS on Arm. I’ve also got it running on my Pinebook Pro (w/ Budgie)

3 Likes

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.