GPUs mínimas para uma boa experiência no desktop Linux…

…considerando o Arch Linux. E sem gambiarras.

A linha de corte para um desktop performático começa em GPUs Intel Gen 8 ou superior, ou seja, nos processadores Intel Core de 5ª Geração (Broadwell) em diante. Essas arquiteturas possuem suporte completo e maduro ao Vulkan através do driver anv do Mesa (e ao OpenGL via iris). Em contrapartida, CPUs de 3ª e 4ª gerações — GPU Gen 7 (Ivy Bridge) e Gen 7.5 (Haswell) — dependem do driver Vulkan hasvk, que é limitado — embora o OpenGL ainda seja bem atendido de forma retroativa pelo driver crocus, que estende seu suporte desde a antiquíssima arquitetura Gen 4, do longínquo chipset i965 para Core 2 Duo.

Há uma nuance com modelos da AMD. Até o kernel 6.18, o módulo amdgpu — um requisito obrigatório para a integração com o driver Vulkan radv do Mesa — suportava por padrão apenas a arquitetura GCN 3 (Volcanic Islands) e superiores. A partir do kernel 6.19, o amdgpu passou a ser o padrão também para as gerações GCN 1 (Southern Islands) e GCN 2 (Sea Islands), fruto do esforço de engenharia de desenvolvedores da Valve. Já o suporte ao OpenGL é unificado, sendo atendido pelo driver radeonsi, que abraça uma imensa gama de chips desde a GCN 1 até a moderna RDNA 4. Apesar das arquiteturas GCN 1 e 2 serem viáveis a partir do kernel 6.19, trata-se de chips muito antigos, limitados ao Vulkan 1.3, que pouca gente usa e cujo desenvolvimento tende a ser lento porque poucos desenvolvedores se importam com eles. A GCN 4 (a famosa Polaris, das séries Radeon RX 400 e RX 500) é um requisito mínimo melhor, pois é suportada desde o início pelo amdgpu, possui suporte ao Vulkan 1.4 e tem uma base de usuários muito maior, o que a torna mais importante no desenvolvimento da pilha gráfica.

Com a Nvidia, a barreira é mais restritiva, exigindo a arquitetura Turing (séries GeForce GTX 16 e RTX 20) ou superior desde que os módulos abertos se tornaram o padrão no Arch Linux. Eles dependem do GSP (GPU System Processor) introduzido nessa geração. Arquiteturas anteriores, como Pascal, Maxwell e Kepler, carecem desse componente e ficam isoladas nos módulos proprietários, que estão obsoletos e não são mais empacotados no repositório oficial. A situação não seria tão ruim para hardware velho se o driver 580 fosse empacotado oficialmente em paralelo. Ele suporta Pascal e Maxwell (Kepler não) e é recente o suficiente para se integrar ao ecossistema Wayland através do protocolo linux-drm-syncobj-v1 — suportado desde o 555, o que torna qualquer versão anterior imprestável. Entretanto, a série 580 está prestes a entrar em suporte limitado de segurança (que vai até outubro de 2028). Com isso, novas versões do kernel podem quebrar a compatibilidade a qualquer momento e fica a dúvida se a Nvidia se dará ao trabalho de lançar patches de correção. Como a empresa agora trata apenas os módulos abertos como cidadãos de primeira classe — os quais não suportam nada pré-Turing —, a série 580 está na UTI e respira por aparelhos, não sendo uma boa ideia depender dela. Quando esse driver morrer de vez, usar qualquer modelo pré-Turing será um pesadelo.

Codificação e decodificação de vídeo na GPU é outra característica importante. A forma tradicional é o aplicativo usar a VA-API através da libva, que continua sendo o caminho mais popular enquanto escrevo. Funciona sem percalços com Intel Gen 8 e superior com o driver para a libva iHD_drv_video.so — chips anteriores usam o driver i965_drv_video.so, que está abandonado e quebrado. Com a AMD, o suporte também é funcional em toda a linha coberta pelo amdgpu através do driver para a libva radeonsi_drv_video.so. A Nvidia, contudo, representa um dos maiores pontos de incompatibilidade no ecossistema Linux: a empresa não implementa a VA-API, oferecendo apenas suas próprias APIs NVENC/NVDEC. Embora alguns programas (como o OBS Studio) as utilizem de forma nativa, essa abordagem não se popularizou. A solução comunitária é o nvidia_drv_video.so, uma camada de tradução (apenas decodificação) não oficial, que está sempre correndo atrás das mudanças do driver.

A publicação das extensões Vulkan Video, integradas à especificação Vulkan 1.3.238 no final de 2022, marcou o surgimento de uma nova padronização para o processamento de vídeo. Desde então, novos recursos e codificadores foram adicionados e, hoje, o que antes dependia da libva pode ser feito através do Vulkan, desde que haja a devida implementação. Inicialmente, o suporte nos drivers anv (Intel) e radv (AMD) era tratado como experimental, exigindo variáveis de ambiente específicas para ativação. Esse cenário mudou nos últimos anos. No lado da AMD, o recurso passou a ser habilitado por padrão de forma escalonada através das gerações do VCN (Video Core Next), o motor multimídia dedicado dos chips da marca: o Mesa 24.3 trouxe o suporte para o VCN 4 (RDNA 3), o Mesa 25.0 expandiu para o VCN 2 e VCN 3 (RDNA 1 e RDNA 2), e o Mesa 25.2 cobriu o VCN 5 (RDNA 4). Chips anteriores aos RDNA 1 não suportam Vulkan Video, mas há chance disso mudar no Mesa no futuro, o que seria impressionante em termos de retrocompatibilidade. Do lado da Intel, a decodificação está habilitada em todas as GPUs modernas, mas a codificação foi limitada até a Gen 12.5, que engloba as GPUs integradas com arquitetura Xe-LP dos processadores de 11ª a 14ª gerações (Rocket Lake, Alder Lake, Raptor Lake e Raptor Lake Refresh). Tudo o que veio depois fica de fora, incluindo as GPUs dedicadas Alchemist e Battlemage, além dos modelos com vídeo integrado mais novos (Meteor Lake e Arrow Lake). A codificação nesses chips é feita apenas através da libva. A Nvidia, por sua vez, também acompanha essa evolução, já que os componentes do seu driver implementam as extensões Vulkan Video desde a versão 535. Poucos aplicativos usam Vulkan Video no momento e os poucos que o fazem tratam-no como experimental (como o Firefox 153).

Uma observação relevante é que GPUs antigas suportam, descontando as inutilidades do MPEG-2 e VC-1, apenas o ancião H.264. Embora o YouTube esteja aposentando-o em favor de codificadores mais modernos, ele ainda é muito utilizado na internet para compatibilidade universal, e ter seu suporte via hardware alivia a CPU. Para uma melhor experiência de navegação, no entanto, é útil ter decodificação de pelo menos VP9 na GPU e, se possível, AV1 também. O VP9 é suportado desde a arquitetura Nvidia Pascal (garantido em Turing+), AMD GCN 5 (porém apenas nas APUs Raven Ridge; nas GPUs discretas, a partir da RDNA 1) e Intel a partir da Gen 9.5 (CPUs de 7ª Geração — Kaby Lake). O AV1 é suportado desde a Nvidia Ampere, AMD RDNA 2 e Intel Gen 12 (CPUs de 11ª Geração — Rocket Lake).

Comentários