我刚刚在具有 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 渲染器:已启用
- 视频解码:仅限软件。禁用硬件加速
- Vulkan:已禁用
- WebGL:已禁用
- WebGL2:已禁用
所以问题就在标题中。
这里的主要问题是 Chromium 是作为 Snap 发布的,所以 VA-API 不可用,因为我们在 ARM 上运行。
所以第一步很明显——删除 Snap 版本的 Chromium by
sudo snap remove chromium
。第二步是使用以下命令从 RaspberryPi OS 存储库安装 Chromium 作为 deb 包:
然后启动 Chromium 像往常一样配置它 - 启用以下选项
chrome://flags
:#ignore-gpu-blocklist
;#enable-gpu-rasterization
;#enable-zero-copy
;#enable-drdc
;#canvas-oop-rasterization
。使用 重新启动它
chromium-browser --enable-features=VaapiVideoDecoder
,访问chrome://gpu
以确保您已启用所有(不包括 Vulkan)选项:要使
--enable-features=VaapiVideoDecoder
标志永久化,应以编程方式编辑相关配置文件,如下所示:结果,所有网络播放器都将播放 1080p 且没有延迟和撕裂。