ARCH R

Driver de GPU

Alternando entre Panfrost (open-source) e libmali (proprietário)

Dois drivers de GPU acompanham o sistema. O ArchR inicializa com Panfrost (Mesa) por padrão, com libmali disponível como opt-in.


Referência rápida

Panfrostlibmali
OrigemOpen-source (Mesa)Proprietário (blob da ARM)
APIOpenGL 3.1, GLES 3.1Apenas GLES 3.1
VulkanPanVK (experimental)Sim (apenas Mali-G31)
Padrão-
RetroArch mais antigo⚠️ pode precisar de Mesa mais novo✅ mais próximo do stock
Desenvolvimento ativo✅ Mesa semanalmenteCongelado no BSP do fornecedor

Trocar de driver

EmulationStation → System SettingsGraphicsGPU driver → escolha panfrost ou libmali. Reinicie.

A configuração é persistida em /storage/.config/system.cfg (gpu.driver=panfrost|libmali). No boot, o script gpudriver --start:

  1. Carrega o módulo de kernel escolhido (panfrost ou mali_kbase)
  2. Faz bind-mount das bibliotecas de userspace corretas sobre o Mesa
  3. Mascara o JSON de Vulkan ICD errado

Se o driver escolhido falhar ao se vincular ao nó da GPU (por exemplo, mali_kbase reporta erro de regulador), o script faz fallback automático para o outro, então você tem um sistema gráfico de qualquer maneira.


Por que Panfrost é o padrão

  • Mesa 26.0.5 tem suporte sólido a Mali-G31 (Bifrost v9). Nenhuma extensão faltando em nenhum core libretro que distribuímos.
  • MESA_GLTHREAD ajustado por emulador (Flycast, PPSSPP) entrega throughput extra.
  • Upstream ativo: correções de bug chegam continuamente. Blob de fornecedor congelado significa preso em qualquer peculiaridade de 2019 que foi distribuída.
  • Mesma superfície de API que o libmali para tudo exceto Vulkan.

Quando experimentar libmali

Casos de borda específicos relatados em testes da comunidade:

  • Um emulador / jogo específico mostra glitches de renderização no Panfrost
  • Você quer experimentar Vulkan via mali (PanVK no G31 não é conformante)
  • Um pacote de shaders libretro X funciona de um jeito mas não do outro

O fallback em runtime significa que trocar é de baixo risco. Se o driver escolhido falhar ao se anexar à GPU no boot, o sistema troca para o alternativo automaticamente.


Quirks do Mesa aplicados (caminho Panfrost)

Para RK3326 / Mali-G31, o ArchR exporta isso globalmente para os emuladores:

PAN_MESA_DEBUG=forcepack            # força format-pack no G31
                                    # (apesar do nome, NÃO é uma flag de debug)
MESA_NO_ERROR=1                     # pula o rastreamento de erros do GL
MESA_SHADER_CACHE_DIR=/storage/.cache/mesa_shader_cache
MESA_SHADER_CACHE_MAX_SIZE=128MB    # cache de shaders sobrevive a reboots

Por emulador (apenas onde o benefício foi confirmado):

MESA_GLTHREAD=true   # Flycast, PPSSPP standalone, veja /docs/mesa-glthread-matrix

Vulkan

PanVK no Mali-G31 (Bifrost v9) não é conformante. O time upstream do Mesa só distribui PanVK oficialmente para Mali-G610 (Valhall). O ArchR desabilita o PanVK em tempo de build no RK3326, assim emuladores que sondam por Vulkan não tentam e falham.

Se uma futura atualização de emulador precisar de Vulkan e tivermos validado o PanVK contra ele, o toggle apareceria no mesmo menu Graphics.


Troubleshooting

Tela preta após trocar para Panfrost. O overlay DTBO do seu painel pode não ter sido carregado. Verifique com cat /sys/class/drm/card0/connector/*/status. Volte para libmali via o caminho de recuperação:

  1. Desligue, remova o cartão SD
  2. Em um PC, monte a partição BOOT
  3. Edite /storage/.config/system.cfg (na partição de storage) e defina gpu.driver=libmali
  4. Reinsira e inicialize

gpudriver alerta "did not bind to GPU". O auto-fallback já foi disparado. Seu driver efetivo é o outro. Verifique journalctl -t gpudriver (via SSH) para a mensagem exata.

Spam de sonda Vulkan nos logs. Alguns ports do PortMaster tentam Vulkan primeiro. Inofensivo: eles fazem fallback para GLES.

On this page