Как включить аппаратное ускорение графики в веб-браузере 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://gpuChromium говорит, что ускорение графического процессора не включено:

Статус графических функций

  • Холст: только программное обеспечение. Аппаратное ускорение отключено
  • Растеризация холста вне процесса: отключено
  • Композитинг: только программное обеспечение. Аппаратное ускорение отключено
  • Несколько растровых потоков: отключено
  • Внепроцессная растеризация: отключена
  • 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 без лагов и разрывов.

Другие вопросы по тегам