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
Postar um comentário