A Collabora apresentou o NVK, um novo driver de código aberto para Mesa que implementa a API gráfica Vulkan para placas de vídeo NVIDIA. O driver foi escrito do zero usando arquivos de cabeçalho oficiais e módulos de kernel de código aberto publicados pela NVIDIA. O código do driver é de código aberto sob a licença do MIT. Atualmente, o driver suporta apenas GPUs baseadas nas microarquiteturas Turing e Ampere, lançadas desde setembro de 2018.
O projeto está sendo desenvolvido por uma equipe que inclui Karol Herbst, desenvolvedor Nouveau da Red Hat, David Airlie, mantenedor de DRM da Red Hat, e Jason Ekstrand, desenvolvedor Mesa ativo na Collabora. Ao desenvolver um novo driver, os componentes básicos do driver Nouveau OpenGL são usados em alguns lugares, mas devido às diferenças nos nomes nos arquivos de cabeçalho NVIDIA e nos nomes no Nouveau, obtidos com base na engenharia reversa, empréstimo direto de o código é difícil e na maioria das vezes foi necessário repensar muitas coisas e implementá-las com zero.
O desenvolvimento também está sendo realizado com o objetivo de criar um novo driver Vulkan de referência para Mesa, cujo código pode ser emprestado na criação de outros drivers. Para fazer isso, ao trabalhar no driver, a NVK tentou levar em consideração toda a experiência existente no desenvolvimento de drivers Vulkan, manter a base de código na forma ideal e minimizar a transferência de código de outros drivers Vulkan, fazendo o que deveria para obter o ideal e trabalho de alta qualidade, e não copiar cegamente como foi feito em outros drivers.
O driver NVK está em desenvolvimento há apenas alguns meses, portanto sua funcionalidade é limitada. O driver passa com sucesso em 98% dos testes ao executar 10% dos testes do Vulkan CTS (Compatibility Test Suite). Em geral, a prontidão do driver é estimada em 20-25% da funcionalidade dos drivers ANV e RADV. Em termos de suporte de hardware, o driver está atualmente limitado a placas baseadas nas microarquiteturas Turing e Ampere. Patches estão sendo trabalhados para suportar GPUs Kepler, Maxwell e Pascal, mas ainda não estão prontos.
No longo prazo, espera-se que o driver NVK para placas gráficas NVIDIA atinja níveis de qualidade e funcionalidade semelhantes aos do driver RADV para placas AMD. Assim que o driver NVK estiver pronto, as bibliotecas comuns criadas durante seu desenvolvimento poderão ser usadas para melhorar o driver Nouveau OpenGL para placas de vídeo NVIDIA. A possibilidade de usar o projeto Zink para implementar um driver OpenGL completo para placas de vídeo NVIDIA, funcionando por meio de chamadas de transmissão para a API Vulkan, também está sendo considerada.
Fonte: opennet.ru