Как включить аппаратное ускорение графики в веб-браузере Chromium, работающем на Ubuntu MATE 21.10 на RPi 4 (armhf)?
Я только что установил Ubuntu MATE 21.10 (32-разрядная версия, armhf) на свой Raspberry Pi 4 с 4 ГБ оперативной памяти. Примечание. Мне нужна 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
; - Позволяет Display Compositor использовать новый поток графического процессора. он же
#enable-drdc
; - Внепроцессная растеризация 2D-холста. он же
#canvas-oop-rasterization
.
затем перезапустил его, используя
chromium --enable-features=VaapiVideoDecoder
команда.
Несмотря на все эти шаги, на
chrome://gpu
Chromium говорит, что ускорение графического процессора не включено:
Статус графических функций
- Холст: только программное обеспечение. Аппаратное ускорение отключено
- Растеризация холста вне процесса: отключено
- Композитинг: только программное обеспечение. Аппаратное ускорение отключено
- Несколько растровых потоков: отключено
- Внепроцессная растеризация: отключена
- OpenGL: отключено
- Растеризация: только программное обеспечение. Аппаратное ускорение отключено
- Необработанное рисование: отключено
- Рендерер Skia: включен
- Декодирование видео: только программное обеспечение. Аппаратное ускорение отключено
- Вулкан: отключен
- WebGL: отключено
- WebGL2: отключено
Так что вопрос в заголовке.
1 ответ
Основная проблема здесь в том, что Chromium поставляется как Snap, поэтому VA-API недоступен, поскольку мы работаем на ARM.
Итак, первый шаг очевиден — удалите Snap-версию Chromium с помощью
sudo snap remove chromium
.
Второй шаг — установка Chromium в виде deb-пакета из репозитория ОС RaspberryPi с помощью следующих команд:
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
; - Позволяет Display Compositor использовать новый поток графического процессора. он же
#enable-drdc
; - Внепроцессная растеризация 2D-холста. он же
#canvas-oop-rasterization
.
Перезапустите его, используя
chromium-browser --enable-features=VaapiVideoDecoder
, посещать
chrome://gpu
чтобы убедиться, что у вас включены все (кроме Vulkan) опции:
Статус графических функций
- Холст: Аппаратное ускорение
- Внепроцессная растеризация холста: включена
- Композитинг: Аппаратное ускорение
- Несколько растровых потоков: включено
- Внепроцессная растеризация: аппаратное ускорение
- OpenGL: включен
- Растеризация: Аппаратное ускорение на всех страницах
- Рендерер Skia: включен
- Декодирование видео: Аппаратное ускорение
- Вулкан: отключен
- WebGL: аппаратное ускорение
- WebGL2: Аппаратное ускорение
Делать
--enable-features=VaapiVideoDecoder
флаг постоянный, следует программно отредактировать соответствующий конфигурационный файл, как показано ниже:
echo 'CHROMIUM_FLAGS="${CHROMIUM_FLAGS} --enable-features=VaapiVideoDecoder"' | sudo tee /etc/chromium.d/92-vaapi-hardware-decoding
В результате все веб-плееры будут воспроизводить 1080p без лагов и разрывов.