我刚刚在配备 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://gpu
Chromium 说未启用 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 时都不会出现延迟和撕裂。