O consórcio Khronos, responsável pelo desenvolvimento de padrões gráficos, reconheceu a compatibilidade total do driver aberto NVK para placas de vídeo NVIDIA com a especificação Vulkan 1.0. O driver passou com sucesso por todos os testes do conjunto CTS (Kronos Conformance Test Suite) e foi incluído na lista de drivers certificados. A certificação foi obtida para GPUs NVIDIA baseadas na microarquitetura Turing (TITAN RTX, GeForce RTX 2060/2070/2080, GeForce GTX 1660, Quadro RTX 3000-8000, Quadro T1000/T2000). A verificação foi realizada em um ambiente com kernel Linux 6.5, X.Org X Server 1.20.14, XWayland 22.1.9 e GNOME Shell 44.4. A obtenção do certificado permite declarar oficialmente a conformidade com os padrões gráficos e utilizar as marcas registradas associadas do Khronos.
O driver NVK foi criado do zero por uma equipe que inclui Karol Herbst (desenvolvedor do Nouveau da Red Hat), David Airlie (mantenedor do subsistema DRM da Red Hat) e Jason Ekstrand (desenvolvedor ativo do Mesa da Collabora). Ao criar o driver, os desenvolvedores usaram arquivos de cabeçalho oficiais e módulos de kernel abertos publicados pela NVIDIA. No código do NVK, foram utilizados em algumas partes componentes básicos do driver OpenGL Nouveau, mas devido às diferenças na nomenclatura nos arquivos de cabeçalho da NVIDIA e na nomenclatura no Nouveau, obtidas por meio de engenharia reversa, o empréstimo direto de código é complicado e, na maior parte, foi necessário repensar muitos aspectos e implementá-los do zero.
O desenvolvimento foi realizado com a perspectiva de criar um novo driver Vulkan de referência para o Mesa, cujo código poderá ser utilizado na criação de outros drivers. Para isso, ao trabalhar no driver NVK, tentou-se levar em conta toda a experiência acumulada no desenvolvimento de drivers Vulkan, mantendo a base de código em forma ideal e minimizando a transferência de código de outros drivers Vulkan, fazendo o que deve ser feito para um funcionamento otimizado e de qualidade, em vez de copiar cegamente o que foi feito em outros drivers. O driver já faz parte do Mesa, e as mudanças necessárias para o funcionamento na API do driver DRM do Nouveau estão incluídas no kernel Linux 6.6.
No anúncio das mudanças também é destacada a inclusão de um novo compilador de backend para NVK, escrito na linguagem Rust, que resolve problemas do antigo compilador que impediam a passagem dos textos do Kronos e elimina algumas limitações fundamentais da arquitetura que não poderiam ser corrigidas sem uma reescrita completa do velho compilador. Entre os planos futuros, menciona-se a adição de suporte a GPU baseado na microarquitetura Maxwell e a implementação de suporte completo à API Vulkan 1.3.
Fonte: opennet.ru
