Uma nova e massiva série de otimizações de compilador para os drivers gráficos da Intel no Mesa promete ganhos de performance em jogos de até 18% – especialmente em plataformas Xe³ e mais recentes. O trabalho ataca gargalos que surgiram com as novidades dessa geração (como VRT e novas mensagens SENDG), afinando tanto o escalonamento de instruções quanto a forma como o compilador usa os registradores e decide quantas threads podem rodar em paralelo. Em bom português: mais quadros por segundo, menos soluços e um uso mais inteligente do “miolo” da GPU.
O dilema da otimização: latência vs. paralelismo
Otimizar um compilador de shaders é um ato de equilíbrio. Pense numa cozinha de restaurante em horário de pico: você pode pedir que um chef faça uma etapa super-rápida (reduzir latência), mas talvez ele ocupe uma bancada enorme para isso (usar muitos registradores). O problema? Em GPUs modernas, esse “espaço de trabalho” extra pode impedir que mais “cozinheiros” (as threads) trabalhem ao mesmo tempo. Resultado: você acelera uma tarefa, mas diminui a taxa de serviço global do restaurante — e a conta final (o FPS) cai.
O que essa série faz é ensinar o compilador a prever melhor esse trade-off. Há ajustes no escalonamento para respeitar peculiaridades do Xe³ (como o comportamento de SENDG e os tempos de escrita de destinos de renderização), e melhorias na alocação de registradores que reduzem a pressão de registros quando isso destrava mais paralelismo de threads. Na prática, o compilador agora escolhe, shader a shader, se vale a pena priorizar menor latência ou menor uso de registradores – sempre mirando o maior número de invocações por ciclo. Também volta à mesa, de forma criteriosa, a heurística SIMD32 quando ela se paga; quando não, SIMD16 permanece a melhor aposta. É a mesma ideia do maître que decide: “melhor dois cozinheiros por estação e mais pedidos simultâneos, do que um chef ocupando tudo sozinho”.
Tecnicamente, isso se apoia num modelo de performance mais honesto sobre o Xe³: ele contabiliza, de forma quantitativa, a interação entre pressão de registradores e paralelismo trazido por VRT, e usa esses números para escolher a estratégia de escalonamento mais vantajosa em cada caso. Outros refinamentos – como ajustes nas ponderações de operações atômicas e de fluxos de descarte – alinham a análise ao hardware real. Parte desse pano de fundo já vinha sendo preparado nos últimos ciclos (ex.: heurísticas específicas de Xe, ajustes de alocação e “scoreboarding” para o registrador escalar), e agora foi amarrado em um pacote coerente focado no Xe³.
Resultados impressionantes: ganhos de até 18% em jogos
Nada melhor que números de jogos para medir o impacto. Em uma bateria ampla de traces e títulos populares, a série reporta ganhos consistentes – com destaque para alguns campeões:
- NBA 2K23 (2160p, Ultra): ≈18%
- Ghostrunner 2 (1440p, Ultra): ≈9,4%
- Hogwarts Legacy (1080p, Ultra): ≈6,6%
- GTA V (2160p, Ultra): ≈4,9%
- Outros títulos como Superposition, Borderlands 3, Control, Fortnite, Cities: Skylines 2 e Baldur’s Gate 3 também sobem entre ~2% e ~6%.
Esses ganhos aparecem porque o Intel Mesa driver (o conjunto Iris/ANV + compilador brw/fs) passa a “destravar” paralelismo quando isso traz mais quadros, e a evitar decisões que inflariam registradores sem retorno prático. A base desse avanço está diretamente ligada às capacidades novas do Xe³ (como o VRT), que já vinham preparando terreno para saltos de desempenho em workloads de jogos e 3D no Linux.
O custo (e por que ele compensa)
Transparência importante: essas otimizações têm um preço — tempo de compilação de shaders maior, na casa de ~25% em testes de shader-db. A principal parcela desse custo vem justamente de recolocar a análise estática para guiar a decisão de SIMD32 no Xe³, agora sustentada por um modelo que captura melhor o impacto de VRT e da pressão de registradores. Em troca, é esse último passo que rende o maior ganho de FPS em jogos. Em outras palavras: compilar um pouco mais devagar para rodar visivelmente mais rápido vale a pena para quem joga. (Para usuários, esse impacto costuma ser mais sentido no primeiro carregamento e na compilação de shaders de um jogo novo; depois, o cache ajuda.)
Por que isso importa para você
Se você tem um laptop recente com iGPU Intel de geração Xe³ (ou uma Arc contemporânea rodando no caminho de OpenGL via brw/fs), verá um driver que pensa melhor antes de gastar registradores e que encaixa mais threads por ciclo quando isso faz diferença. Para a comunidade, é um passo importante: demonstra como, em GPUs modernas, a fronteira do desempenho não está só em “dar mais clocks”, mas em casar heurísticas de compilador ao hardware real – e em aceitar que, às vezes, menos é mais (menos registradores → mais paralelismo → mais FPS).
Vale notar que esse tipo de evolução costuma chegar gradualmente às releases estáveis do Mesa; as notas de versão recentes já mostram um histórico de trabalho contínuo nas heurísticas e nos caminhos específicos do Xe/Xe²/Xe³, preparando esse salto. Fique de olho nas próximas atualizações do seu distro/stack gráfico para colher os frutos.