04.12.2022

Представлен NVK, открытый Vulkan-драйвер для видеокарт NVIDIA

Компания Collabora представила NVK, новый открытый драйвер для Mesa с реализацией графического API Vulkan для видеокарт NVIDIA. Драйвер написан с нуля, используя официальные заголовочные файлы и открытые модули ядра, опубликованные компанией NVIDIA. Код драйвера открыт под лицензией MIT. Драйвером поддерживаются пока только GPU на базе микроархитектур Turing и Ampere, выпускаемые с сентября 2018 года.

Проект развивается командой, в которую входят Карол Хербст (Karol Herbst), разработчик Nouveau из Red Hat, Дэвид Эйрли (David Airlie), мэйнтейнер подсистемы DRM из Red Hat, и Джейсон Экстранд (Jason Ekstrand), активный разработчик Mesa из Collabora. При разработке нового драйвера местами используются базовые компоненты OpenGL-драйвера Nouveau, но из-за отличий наименований в заголовочных файлах NVIDIA и наименований в Nouveau, полученных на основе обратного инжиниринга, прямое заимствование кода затруднено и по большей части пришлось переосмысливать многие вещи и реализовывать их с нуля.

Разработка также ведётся с оглядкой на создание нового эталонного Vulkan-драйвера для Mesa, код которого можно будет заимствовать при создании других драйверов. Для этого при работе над драйвером NVK попытались учесть весь имеющийся опыт разработки Vulkan-драйверов, поддерживать кодовую базу в оптимальной форме и минимизировать перенос кода из других Vulkan-драйверов, делая как должно быть для оптимальной и качественной работы, а не слепо копируя то как сделано в других драйверах.

Разработка драйвера NVK ведётся только несколько месяцев, поэтому его функциональность ограничена. Драйвер успешно проходит 98% проверок при запуске 10% тестов из набора Vulkan CTS (Compatibility Test Suite). В общем виде готовность драйвера оценивается как 20-25% от функциональности драйверов ANV и RADV. По уровню поддержки оборудования драйвер пока ограничен картами на базе микроархитектур Turing и Ampere. Ведётся работа над патчами для поддержки GPU Kepler, Maxwell и Pascal, но они ещё не готовы.

В долгосрочной перспективе ожидается, что для видеокарт NVIDIA драйвер NVK достигнет уровня качества и функциональности, подобного драйверу RADV для карт AMD. После готовности драйвера NVK, созданные при его разработке общие библитеки можно будет использовать для улучшения OpenGL-драйвера Nouveau для видеокарт NVIDIA. Также рассматривается возможность задействования проекта Zink для реализации полноценного OpenGL-драйвера для видеокарт NVIDIA, работающего через трансляцию вызовов в API Vulkan.

Источник.