Table of Contents
Graphics hardware acceleration on the Raspberry Pi 2
In this article we will discover how to enable graphics hardware acceleration in the Chromium browser running on the Raspberry Pi 2, using RaspiOS based on Debian Bullseye 11.
The hardware model si Raspberry Pi 2 Model B Rev 1.1 (ARMv7 Processor rev 5, v7l), the operating system is RaspiOS based on Debian 11.5 Bullseye, the architecture is armhf (32bit), the running kernel is 5.15.61-v7+.
How to check if V3D and/or KMS are active
V3D is an API provided by the Linux kernel to support 3D graphics on the VideoCore VI GPU (RPi 4). The software driver is actually provided in the form of a Device Tree Overlay which is loaded at boot time adding the following line into /boot/config.txt:
dtoverlay=vc4-kms-v3d
The older Raspberry Pi 3 and Pi 2 have the older VideoCore IV GPU and the legacy software driver was called VC4. The new Device Tree Overly is capable to detect the actual VideoCore available (IV or VI) and provide the same new V3D interface.
To check if V3D is enabled you can read a /proc
pseudofile, the content of which can be okay or disabled. For the Raspberry Pi 3 it is:
cat /proc/device-tree/soc/v3d@7ec00000/status
For the Raspberry Pi 4 the exposed pseudofile is different:
cat /proc/device-tree/v3dbus/v3d@7ec04000/status
The KMS (Kernel Mode Setting) has two different implementations. The old one (known as Fake KMS) was the only one available at the time of Debian 9 Stretch and it is provided byt the vc4-fkms-v3d overlay. Once loaded you can check its availability reading the following pseudofile (should read disabled
or okay
):
cat /proc/device-tree/soc/firmwarekms@7e600000/status
The new overlay vc4-kms-v3d doesn't expose that node (which results as disabled
), but expose several others KMS related nodes:
cat /proc/device-tree/soc/hdmi@7e902000/status cat /proc/device-tree/soc/hvs@7e400000/status cat /proc/device-tree/soc/txp@7e004000/status cat /proc/device-tree/soc/pixelvalve@7e207000/status cat /proc/device-tree/soc/pixelvalve@7e807000/status cat /proc/device-tree/soc/pixelvalve@7e206000/status
Enable graphics acceleration in Chromium
In Chromium you can open the page chrome://gpu and check the Graphics Feature Status, you should read:
Canvas | Hardware accelerated |
---|---|
Canvas out-of-process rasterization | Enabled |
Direct Rendering Display Compositor | Disabled |
Compositing | Hardware accelerated |
Multiple Raster Threads | Enabled |
OpenGL | Enabled |
Rasterization | Hardware accelerated on all pages |
Raw Draw | Enabled |
Video Decode | Hardware accelerated |
Video Encode | Software only. Hardware acceleration disabled |
Vulkan | Disabled |
WebGL | Hardware accelerated |
WebGL2 | Hardware accelerated |
WebGPU | Disabled |
Probably something is disabled, because of Chromium defaults. In that case you have to open the page chrome://flags, then search and set the following flags:
Override software rendering list | Overrides the built-in software rendering list and enables GPU-acceleration on unsupported system configurations. |
---|---|
Enable raw draw | When enabled, web content will be rastered on output surface directly. |
GPU rasterization | Use GPU to rasterize web content. |
Out-of-process 2D canvas rasterization | The rasterization of 2d canvas contents is performed in the GPU process. |
Accelerated 2D canvas | Enables the use of the GPU to perform 2d canvas rendering instead of using software rendering. |