NVK e Zink melhoraram significativamente a situação com drivers abertos para GPUs NVIDIA

A Collabora anunciou que trouxe o driver NVK aberto para placas de vídeo NVIDIA pronto para uso diário por uma ampla gama de usuários e certificou esse driver no consórcio Khronos, que desenvolve padrões gráficos. O driver é reconhecido como totalmente compatível com a especificação Vulkan 1.3, passou com sucesso em todos os testes do CTS (Khronos Conformance Test Suite) e está incluído na lista de drivers certificados.

A certificação foi concluída para GPUs NVIDIA baseadas em 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 (GeForce RTX 4xxx, RTX 4000 SFF , RTX 4xxx/5000/6000 Ada). O teste foi realizado em ambiente com kernel Linux 6.5 e 6.8rc1. A obtenção do certificado permite declarar oficialmente a compatibilidade com os padrões gráficos e usar as marcas registradas Khronos associadas. As alterações já foram aceitas na base de código do Mesa e farão parte da versão Mesa 24.1.

Além das melhorias no NVK, houve um progresso significativo no fornecimento de suporte OpenGL para placas de vídeo NVIDIA. Mesa adotou uma mudança que permite o uso do driver Zink para fornecer suporte ao OpenGL 4.6 em sistemas com novas séries de placas de vídeo NVIDIA (começando com GeForce RTX 20xx), que podem apresentar problemas no driver Nouveau OpenGL padrão (NVC0). Para habilitar o Zink em vez do NVC0 no Mesa 24.1, basta definir a variável de ambiente “NOUVEAU_USE_ZINK=1”.

As alterações feitas no Mesa também fornecem a capacidade de usar o Zink para oferecer suporte a OpenGL em outros drivers como um substituto para GPUs não suportadas pelos drivers OpenGL nativos do Mesa. Por exemplo, uma abordagem semelhante já está sendo usada para fornecer suporte OpenGL no driver freedreno para a GPU Qualcomm Adreno 700 e no driver powervr para a GPU Imagination PowerVR baseada na microarquitetura Rogue.

Zink fornece uma implementação OpenGL sobre Vulkan que permite obter OpenGL acelerado por hardware em dispositivos que suportam apenas a API Vulkan. Na próxima versão do Mesa, o driver Zink será habilitado por padrão durante a construção. O desempenho do Zink está próximo do desempenho das implementações nativas do OpenGL, o que torna possível, em vez de desperdiçar recursos na manutenção de drivers OpenGL individuais, focar no suporte de alta qualidade para a API Vulkan e implementar o suporte OpenGL no Vulkan.

Ainda não há planos para remover o antigo driver Nouveau OpenGL, mas em sua forma atual a combinação Zink + NVK demonstra desempenho superior em muitos testes. No atual estágio de desenvolvimento, ao rodar muitos jogos, a combinação Zink + NVK permite atingir desempenho de 60 FPS e superior em novos modelos de GPU, mas ainda existem alguns problemas não resolvidos e áreas não otimizadas que serão resolvidas com o tempo.

Também é destacado o trabalho de estabilização do trabalho da camada DXVK sobre o driver NVK, que fornece uma implementação do Direct3D 9, 10 e 11, trabalhando por meio da tradução de chamadas para a API Vulkan. Nem todos os jogos D3D11 funcionam com a combinação NVK + DXVK não modificada da Mesa, mas os recursos básicos estão disponíveis e os defeitos identificados estão sendo gradualmente eliminados. Da mesma forma, a conexão NVK com VKD3D-Proton está sendo desenvolvida para fornecer suporte para D3D12, mas seu status ainda está atrás de NVK+DXVK e alguns recursos ausentes precisam ser implementados.

O driver NVK foi construído do zero por uma equipe que inclui Karol Herbst (desenvolvedor Nouveau na Red Hat), David Airlie (mantenedor de DRM na Red Hat) e Jason/Faith Ekstrand (desenvolvedor ativo do Mesa) da Collabora). Ao criar o driver, os desenvolvedores usaram arquivos de cabeçalho oficiais e módulos abertos do kernel publicados pela NVIDIA. O código NVK usou alguns componentes básicos do driver Nouveau OpenGL em alguns lugares, mas devido às diferenças nos nomes nos arquivos de cabeçalho NVIDIA e nos nomes de engenharia reversa no Nouveau, o empréstimo direto do código é difícil e na maior parte foi 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 poderia ser emprestado na criação de outros drivers. Para isso, ao trabalhar no driver NVK, eles tentaram levar em consideração toda a experiência existente no desenvolvimento de drivers Vulkan, manter a base de código em ótima forma e minimizar a transferência de código de outros drivers Vulkan, fazendo o que deveria ser para trabalho ideal e de alta qualidade, e não copiar cegamente como é feito em outros drivers. O driver já está incluído no Mesa e as alterações necessárias na API do driver Nouveau DRM estão incluídas no kernel Linux 6.6.

Fonte: opennet.ru

Adicionar um comentário