树莓派显示加速

Raspberry Pi 400的4K显示Raspberry Pi 4B的4K显示 我们尝试激活 4K@60Hz 显示分辨率,涉及到有关显示加速的配置优化。从操作系统整体上加速显示,不仅有启动配置,也有桌面应用的加速。本文汇总相关设置,提供一个整体建议。

升级系统和安装系统库

在调优系统之前,首先要将系统升级到最新:

sudo apt update
sudo apt dist-upgrade
  • 安装必要库:

    sudo apt install libgles2-mesa libgles2-mesa-dev xorg-dev
    

配置显示

  • 使用 raspi-config 配置或直接修改 /boot/config.txt (树莓派3的32位系统) 或 /boot/firmware/usercfg.txt (树莓派4的64位系统)

    dtoverlay=vc4-fkms-v3d
    max_framebuffers=2
    gpu_mem=128
    hdmi_enable_4kp60=1
    

上述配置中启用了开源 vc4-fkms-v3d 3D显示驱动(Fake KMS),并且配置 129MB 内存给GPU内存管理。 ( 有关GPU需要预分配内存可以参考 Raspberry Pi OS Memory options in config.txt )

注解

启用 vc4-fkms-v3d 显示驱动非常重要,没有这个驱动,我在 树莓派Raspberry Pi 400 上运行 Kali Linux 无法识别HDMI连接的显示器型号 HPN 27" 并且也无法选择 2560x1440 高分辨率(该显示器支持2k),只能使用模糊的 1920x1080 分辨率

内存分离和CMA分配

虽然我们配置了有多少内存分配给GPU,剩余内存分配给CPU,但是这个内存分配默认是动态的。为了能够提升性能,可以采用内存分离配置来优化。

注解

不过,我现在在 树莓派Raspberry Pi 400 上使用 raspi-config 找不到 memory splitting 选项了。

  • 可以手工修订 /boot/config.txt

    dtoverlay=vc4-fkms-v3d, cma-128
    

这里 cma-128 就是预分配给GPU内存量。

重启和检查

重启系统通过以下命令检查3D驱动是否已经加载和工作:

cat /proc/device-tree/soc/firmwarekms@7e600000/status
cat /proc/device-tree/v3dbus/v3d@7ec04000/status

如果两个返回值都是 okay 则已经启用了硬件加速。如果结果是 disabled 则尝试其他 dtoverlay 选项,然后重启检查。

启用Firefox硬件加速

需要注意,虽然系统硬件加速已经启用,但是Firefox或chromium默认是没有配置使用硬件加速。

  • 在Firefox中地址栏输入 about:support ,然后检查 Compositing 配置项,如果是 Basic 就表明没有启用硬件加速

  • 在Firefox中地址栏输入 about:config ,然后选择以下配置项:

    layers.acceleration.force-enabled
    
  • 点击触发设置该值为 true ,然后重启Firefox。再次打开 about:support 页面,检查 Compositing 配置项是否是 OpenGL 的话就表明激活了硬件加速。

在使用上的感受区别就是,当滚动Firefox的WEB页面时,不再出现 Xorg 进程大量占用CPU资源情况(几乎不增加CPU)。

启用Chromium硬件加速

Chromium硬件加速配置检查位于 chrome://gpu ,配置修改则在 chrome://flags

我查看了一下当前配置 Graphics Feature Status

Canvas: Hardware accelerated
Compositing: Hardware accelerated
Multiple Raster Threads: Enabled
Out-of-process Rasterization: Hardware accelerated
OpenGL: Enabled
Rasterization: Hardware accelerated on all pages
Skia Renderer: Enabled
Video Decode: Software only. Hardware acceleration disabled
Vulkan: Disabled
WebGL: Hardware accelerated
WebGL2: Hardware accelerated
  • chrome://flags 中找到 Override software rendering list 将参数值从 Default 修改为 Enabled ,这样就覆盖了内建的软件渲染列表,并且在unsupported system configurations上激活了GPU加速。

注解

我在 Kali Linux for arm 上实践,发现已经激活了GPU加速,不需要上述 Override software rendering list 激活(激活也没有变化)

  • chrome://gup 页面再次检查,就会看到 Hardware Protected Video Decode: Hardware accelerated

  • 可以看到有2项没有激活硬件加速:

    Video Decode: Software only. Hardware acceleration disabled
    Vulkan: Disabled
    

上述2个硬件加速可以通过 chrome://flags 强制设置打开

VLC激活硬件加速

在VLC软件的配置 Tools > Preferences 中的 Video 面板的 Video Settings > Output 中可以选择 OpenGL video output。

注意,如果VLC没有编译OpenGL支持,这该选项设置不会生效。

参考