Acabei de instalar o Ubuntu MATE 21.10 (32 bits, armhf) no meu Raspberry Pi 4 com 4 Gb de RAM. Nota: Eu preciso da versão de 32 bits para ter o compilador Modelica disponível . Todas as configurações são padrão. As informações sobre o driver de vídeo estão abaixo:
$ 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:
Então eu instalei o navegador Chromium tão simples quanto sudo apt-get install chromium-browser
, lancei-o pela primeira vez para habilitar as seguintes opções em chrome://flags
:
- Substituir lista de renderização de software aka
#ignore-gpu-blocklist
; - Rasterização de GPU também conhecida como
#enable-gpu-rasterization
; - Rasterizador de cópia zero, também conhecido como
#enable-zero-copy
; - Permite que o Display Compositor use um novo thread de gpu. também conhecido como
#enable-drdc
; - Rasterização de tela 2D fora do processo. também conhecido
#canvas-oop-rasterization
como
em seguida, reiniciei-o usando o chromium --enable-features=VaapiVideoDecoder
comando.
Após todas essas etapas feitas, no chrome://gpu
Chromium diz que a aceleração da GPU não está ativada:
Status do recurso gráfico
- Tela: somente software. Aceleração de hardware desativada
- Rasterização de tela fora do processo: Desativada
- Composição: somente software. Aceleração de hardware desativada
- Múltiplos Tópicos de Raster: Desativado
- Rasterização fora do processo: Desativado
- OpenGL: Desativado
- Rasterização: Somente software. Aceleração de hardware desativada
- Empate Bruto: Desativado
- Renderizador Skia: Ativado
- Decodificação de vídeo: somente software. Aceleração de hardware desativada
- Vulkan: Desativado
- WebGL: Desativado
- WebGL2: Desativado
Então a pergunta está no título.
O principal problema aqui é que o Chromium é enviado como Snap, então a VA-API não está disponível porque estamos rodando em ARM.
Portanto, o primeiro passo é óbvio - remova a versão Snap do Chromium por
sudo snap remove chromium
.A segunda etapa é a instalação do Chromium como pacote deb do repositório RaspberryPi OS usando os comandos abaixo:
Em seguida, inicie o Chromium para configurá-lo como de costume - ative as seguintes opções em
chrome://flags
:#ignore-gpu-blocklist
;#enable-gpu-rasterization
;#enable-zero-copy
;#enable-drdc
;#canvas-oop-rasterization
comoReinicie-o usando
chromium-browser --enable-features=VaapiVideoDecoder
, visitechrome://gpu
para garantir que você tenha todas as opções (exceto Vulkan) ativadas:Para tornar
--enable-features=VaapiVideoDecoder
o sinalizador permanente, deve-se editar o arquivo de configuração relevante programaticamente, conforme mostrado abaixo:Como resultado, todos os jogadores da web jogarão em 1080p sem atrasos e rasgos.