
Na semana passada, a Valve surpreendeu o mundo dos videogames ao apresentar três novos dispositivos de uma só vez: o Steam Frame, um headset VR sem fio; o Steam Machine, um console de jogos semelhante ao PlayStation ou Xbox; e o Steam Controller, um controle de jogos portátil. Esses novos dispositivos são sucessores do bem-sucedido Valve Index e Steam Deck e têm lançamento previsto para o próximo ano.
A Igalia, que já colabora com a Valve no desenvolvimento do SteamOS, está entusiasmada em contribuir para esses novos lançamentos, especialmente o Frame. Diferente do Machine ou do Deck, que utilizam CPUs x86, o Frame opera com um CPU baseado em ARM.
Normalmente, isso significaria que apenas jogos compilados para chips ARM poderiam ser jogados no Frame. Para contornar essa limitação, um sistema de tradução chamado FEX é utilizado para permitir que aplicativos projetados para chips x86 (presentes na maioria dos PCs gamers) sejam executados em chips ARM, convertendo o código de máquina x86 em código de máquina ARM64.
"Se você ama videogames, como eu, trabalhar com FEX na Valve é um sonho realizado", comentou Paulo Matos, engenheiro da equipe de Compiladores da Igalia. Apesar do entusiasmo, os desafios são grandes, já que garantir o funcionamento da tradução frequentemente requer testes manuais ao invés de automáticos. "Você precisa iniciar um jogo e, às vezes, o erro aparece nas cores ou no som, ou no comportamento do jogo ao quebrar uma porta no segundo nível. Depurar isso pode levar um tempo", explicou Matos.
Além do CPU, o GPU Qualcomm Adreno 750 utilizado no Steam Frame apresentou seus próprios desafios ao rodar jogos de desktop e outras cargas de trabalho complexas. Para que isso funcionasse, era necessário um driver Vulkan robusto que garantisse precisão e eliminasse principais bugs de renderização, ao mesmo tempo em que mantinha um alto desempenho. Isso é uma combinação desafiadora, mas alcançamos exatamente isso para a Valve com o Mesa3D Turnip, um driver Vulkan de código aberto para GPUs Adreno da Qualcomm.
"Implementamos muitas extensões Vulkan e revisamos várias outras", disse Danylo Piliaiev, engenheiro da equipe de Gráficos. "Ao longo dos anos, asseguramos que jogos D3D11, D3D12 e OpenGL fossem renderizados corretamente através do DXVK, vkd3d-proton e Zink, investigando muitos problemas de renderização ao longo do caminho. Conseguimos maior precisão do que o driver proprietário e, em muitos casos, o Mesa3D Turnip é mais rápido também."
A colaboração com a Valve tem sido essencial. A escolha da empresa por utilizar softwares abertos como Mesa3D Turnip e FEX demonstra seu compromisso com melhorias que são acessíveis a todos que utilizam esses projetos de código aberto. "Recebemos muitos feedbacks positivos sobre o desempenho significativamente melhorado e menos falhas de renderização de entusiastas que usam esses projetos para rodar jogos de PC em celulares Android como resultado do nosso trabalho", afirmou Dhruv Mark Collins, outro engenheiro da equipe de Gráficos que trabalha no Turnip.
Um aspecto interessante do desenvolvimento de drivers gráficos é o trabalho de compiladores envolvido. Os drivers Vulkan, como o Mesa3D Turnip, precisam processar programas de shader enviados pelo aplicativo para a GPU. Job Noorman, engenheiro da equipe de Compiladores, fez contribuições significativas para o compilador utilizado pelo Mesa3D Turnip, além de trabalhar no compilador de shader NIR do Mesa3D, que é parte comum de todos os drivers Mesa.
Continuaremos nossos esforços para melhorar futuras versões do SteamOS, e, com um parceiro tão solidário quanto a Valve, esperamos realizar mais trabalho para aprimorar a experiência de jogos no Linux. Se alguma parte disso lhe interessou e você gostaria de se juntar a nós para resolver problemas desafiadores, entre em contato!
Confira os últimos vídeos publicados no canal