如何在 RPi 4(armhf)上的 Ubuntu MATE 21.10 上运行的 Chromium 网络浏览器中启用硬件图形加速?

如何在 RPi 4(armhf)上的 Ubuntu MATE 21.10 上运行的 Chromium 网络浏览器中启用硬件图形加速?

我刚刚在配备 4 GB RAM 的 Raspberry Pi 4 上安装了 Ubuntu MATE 21.10(32 位,armhf)。注意:我需要 32 位版本才能Modelica 编译器可用。所有设置均为默认设置。有关视频驱动程序的信息如下:

$ lsmod | grep drm
drm_kms_helper        282624  3 vc4
cec                    65536  2 vc4,drm_kms_helper
fb_sys_fops            16384  1 drm_kms_helper
syscopyarea            16384  1 drm_kms_helper
sysfillrect            16384  1 drm_kms_helper
sysimgblt              16384  1 drm_kms_helper
drm                   540672  12 v3d,vc4,gpu_sched,drm_kms_helper

$ grep -E "^dtoverlay|^max_framebuffers|^gpu_mem|^hdmi" /boot/firmware/config.txt 
max_framebuffers=2
dtoverlay=vc4-fkms-v3d
gpu_mem=128

$ cat /proc/device-tree/soc/firmwarekms@7e600000/status
okay

$ cat /proc/device-tree/v3dbus/v3d@7ec04000/status
okay

$ glxinfo | grep -i opengl
OpenGL vendor string: Broadcom
OpenGL renderer string: V3D 4.2
OpenGL version string: 2.1 Mesa 21.2.2
OpenGL shading language version string: 1.20
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 21.2.2
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10
OpenGL ES profile extensions:

然后我安装了 Chromium 浏览器,非常简单sudo apt-get install chromium-browser,首次启动它以启用以下选项chrome://flags

  • 覆盖软件渲染列表又名#ignore-gpu-blocklist
  • GPU 光栅化又名#enable-gpu-rasterization
  • 零拷贝光栅化器又名#enable-zero-copy
  • 使显示合成器能够使用新的 GPU 线程。又名#enable-drdc
  • 进程外 2D 画布光栅化。又名#canvas-oop-rasterization

然后使用chromium --enable-features=VaapiVideoDecoder命令重新启动它。

完成所有这些步骤后,chrome://gpuChromium 说未启用 GPU 加速:

图形功能状态

  • 帆布:仅限软件。硬件加速已禁用
  • 画布进程外光栅化:已禁用
  • 合成:仅限软件。硬件加速已禁用
  • 多个光栅线程:已禁用
  • 进程外光栅化:已禁用
  • OpenGL的:已禁用
  • 光栅化:仅限软件。硬件加速已禁用
  • 原始抽签:已禁用
  • Skia 渲染器:已启用
  • 视频解码:仅限软件。硬件加速已禁用
  • 火神:已禁用
  • WebGL:已禁用
  • WebGL2:已禁用

所以问题就在标题里。

答案1

这里的主要问题是 Chromium 以 Snap 的形式发布,因此在 ARM 上运行时 VA-API 不可用。

因此,第一步很明显——删除 Snap 版本的 Chromium sudo snap remove chromium

第二步是使用以下命令从 RaspberryPi OS 存储库安装 Chromium 作为 deb 包:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 82B129927FA3303E
sudo apt-add-repository "deb http://archive.raspberrypi.org/debian/ bullseye main"

cat <<EOF | sudo tee /etc/apt/preferences.d/pin-chromium
Package: *
Pin: release o=Raspberry Pi Foundation
Pin-Priority: -1

Package: chromium*
Pin: release o=Raspberry Pi Foundation
Pin-Priority: 1000
EOF

sudo apt-get update
sudo apt-get install chromium-browser

然后启动 Chromium 并照常进行配置 - 启用以下选项chrome://flags

  • 覆盖软件渲染列表又名#ignore-gpu-blocklist
  • GPU 光栅化又名#enable-gpu-rasterization
  • 零拷贝光栅化器又名#enable-zero-copy
  • 使显示合成器能够使用新的 GPU 线程。又名#enable-drdc
  • 进程外 2D 画布光栅化。又名#canvas-oop-rasterization

使用重新启动它chromium-browser --enable-features=VaapiVideoDecoder,访问chrome://gpu确保已启用所有选项(Vulkan 除外):

图形功能状态

  • Canvas:硬件加速
  • 画布进程外光栅化:已启用
  • 合成:硬件加速
  • 多光栅线程:已启用
  • 进程外光栅化:硬件加速
  • OpenGL:已启用
  • 光栅化:所有页面均采用硬件加速
  • Skia 渲染器:已启用
  • 视频解码:硬件加速
  • Vulkan:已禁用
  • WebGL:硬件加速
  • WebGL2:硬件加速

为了使--enable-features=VaapiVideoDecoder标志永久生效,应该以编程方式编辑相关的配置文件,如下所示:

echo 'CHROMIUM_FLAGS="${CHROMIUM_FLAGS} --enable-features=VaapiVideoDecoder"' | sudo tee /etc/chromium.d/92-vaapi-hardware-decoding

因此,所有网络播放器播放 1080p 时都不会出现延迟和撕裂。

相关内容