A Collabora anunciou os mais recentes recursos adicionados ao NVK, o driver Vulkan de código aberto da Collabora para hardware NVIDIA, que tem como objetivo fazer parte da pilha de gráficos Mesa.
O desenvolvimento do NVK começou há aproximadamente nove meses e parece que o driver de código aberto NVIDIA Vulkan está se tornando mais maduro e está em um estado bastante adequado para jogos Linux.
Desde então, o NVK recebeu suporte para placas gráficas NVIDIA mais antigas das séries Maxwell e Kepler, suporte para geometria, tesselação e feedback de transformação para suportar jogos modernos, além de um melhor suporte para a implementação baseada em DXVK Vulkan de D3D9, D3D10 e D3D11 para Linux/Wine.
Faith Ekstrand, da Collabora, disse em um post no blog:
"O Echo tem experimentado um pouco com NVK+DXVK e conseguiu fazer alguns jogos funcionarem."
"Ainda é cedo e requer alguns truques, mas já temos alguns títulos funcionando, e pude demonstrar o Hollow Knight e o F1 2017 na reunião da Collabora em maio."
O NVK também recebeu suporte para mais extensões Vulkan, incluindo VK_KHR_draw_indirect_count e VK_KHR_sampler_ycbcr_conversion. Além disso, parece que em breve a unidade NVIDIA Vulkan de código aberto oferecerá suporte às especificações Vulkan mais recentes, até a versão 1.3.
Atualmente, o NVK não é considerado uma implementação Vulkan em conformidade, pois precisa passar por testes de conformidade Vulkan, mas a Collabora está trabalhando arduamente para corrigir as falhas restantes. Além disso, eles estão trabalhando em algumas melhorias de desempenho para tornar o NVK mais estável e confiável para jogos adequados.
Ainda não há um prazo definido para quando o NVK será incorporado à pilha de gráficos Mesa, mas a Collabora afirmou que isso acontecerá junto com a nova API do kernel, necessária para implementar o Vulkan corretamente em vários cenários.
A nova API do kernel será baseada em ligações de VM controladas pelo espaço do usuário e objetos de sincronização DRM. Ela é necessária para habilitar o NVK a lidar corretamente com buffers de profundidade e estêncil, assim como MSAA para hardware NVIDIA pré-Turing. Em breve, a capacidade de controlar tabelas de página do espaço do usuário e o suporte adequado ao semáforo da linha do tempo também serão adicionados.
Faith Ekstrand, desenvolvedora de gráficos Linux 3D da Collabora, também revelou que tem trabalhado recentemente em um novo compilador back-end para hardware NVIDIA, escrito em Rust, chamado NAK (Nvidia Awesome Kompiler), como substituto do nv50 em GPUs modernas.
"No geral, estou muito satisfeita com o Rust como linguagem para o desenvolvimento do compilador back-end. É muito mais divertido escrever código Rust do que C ou C++", disse Ekstrand. "Atualmente, estou focando apenas em GPUs Turing, mas eventualmente irei expandir para mais hardware."