O consórcio Khronos, responsável pelo desenvolvimento de padrões gráficos, reconheceu a total compatibilidade do driver aberto NVK com a especificação Vulkan 1.4 em sistemas com GPUs NVIDIA baseados nas microarquiteturas Maxwell (GTX 700/800/900), Pascal (GTX 1000) e Volta (TITAN V). O driver passou com sucesso em todos os testes do conjunto CTS (Khronos Conformance Test Suite) e foi incluído na lista de drivers certificados. Obter a certificação permite declarar oficialmente a compatibilidade com os padrões gráficos e usar as marcas registradas relacionadas do Khronos.
A partir do Mesa 25.1, o driver Vulkan NVK será utilizado por padrão para GPUs NVIDIA Maxwell, Pascal e Volta. No Mesa 25.2, o suporte ao OpenGL para as GPUs mencionadas será alterado por padrão do driver Nouveau para o Zink, em conjunto com o driver Vulkan NVK. O Zink fornece uma implementação do OpenGL 4.6 sobre o Vulkan, permitindo obter OpenGL acelerado por hardware em dispositivos que suportam a API Vulkan. O desempenho do Zink é próximo ao das implementações nativas do OpenGL.
Anteriormente, a compatibilidade com o Vulkan 1.4 no NVK era garantida apenas para novas GPUs NVIDIA baseadas nas microarquiteturas Turing (séries GeForce GTX 16xx, RTX 20xx e Quadro RTX), Ampere (séries GeForce RTX 30xx e RTX A2000/4000/5000/6000) e Ada (séries GeForce RTX 4xxx, RTX 4000 SFF, RTX 4xxx/5000/6000 Ada). Está em andamento o trabalho para adicionar suporte no NVK para GPUs baseadas nas microarquiteturas Kepler e Fermi, mas seu suporte será limitado no máximo ao Vulkan 1.2 devido a restrições de hardware.
O driver NVK foi criado do zero por uma equipe que inclui Karol Herbst (desenvolvedor Nouveau da Red Hat), David Airlie (mantenedor da subsistema DRM da Red Hat) e Jason/Faith Ekstrand (desenvolvedor ativo da Mesa da Collabora). Ao desenvolver o driver, os programadores utilizaram os arquivos de cabeçalho oficiais e módulos do kernel abertos publicados pela NVIDIA. No código NVK, alguns componentes básicos do driver OpenGL Nouveau foram utilizados, mas devido a diferenças nos nomes nos arquivos de cabeçalho da NVIDIA e nas nomenclaturas do Nouveau obtidas por meio de engenharia reversa, a cópia direta do código foi dificultada, sendo necessário repensar muitas coisas e implementá-las do zero.
O desenvolvimento foi realizado com o objetivo de criar um novo driver Vulkan de referência para Mesa, cujo código poderá ser emprestado na criação de outros drivers. Para isso, ao trabalhar no driver NVK, tentamos considerar toda a experiência existente na criação de drivers Vulkan, mantendo a base de código em condições ideais e minimizando a transferência de código de outros drivers Vulkan, fazendo o que é necessário para um funcionamento otimizado e de qualidade, em vez de copiar cegamente como é feito em outros drivers.
Fonte: opennet.ru
