За последний год NVK сформировался как — в настоящее время не существующий — драйвер Mesa Vulkan для поддержки графического оборудования NVIDIA. Этот драйвер NVIDIA Vulkan с открытым исходным кодом все ближе к тому, чтобы быть включенным в Mesa, но прежде чем он станет пригодным для использования геймерами/энтузиастами, необходимо провести работу над ядром.
Прежде чем драйвер NVK Vulkan станет пригодным для игр или какой-либо серьезной работы, наиболее заметным является то, что драйверу ядра Nouveau DRM необходимо разобраться с ситуацией с повторным разгоном. В настоящее время драйвер ядра Nouveau DRM привязан к GeForce GTX 900 и более поздним сериям и работает на очень низкой скорости boot-clock и не может быть разогнан до более высокой производительности. Таким образом, сейчас и драйверы Nouveau Gallium3D OpenGL, и разрабатываемые драйверы пользовательского пространства NVK покажут, что производительность Nouveau ужасная.
Однако драйвер DRM Nouveau работает над адаптацией поддержки системного процессора NVIDIA GPU System Processor (GSP), используемого в GeForce RTX 20 и более новых моделях. Использование GSP аналогично тому, что используется в драйвере ядра NVIDIA Open GPU Kernel Driver, который был открыт компанией NVIDIA в мае прошлого года. Используя GSP, можно надеяться, что драйверы будут работать проще, а в идеале, управление разгоном и состоянием производительности для RTX 20 и новее.
Проблемы с разгоном Nouveau были самой большой проблемой драйверов NVIDIA с открытым исходным кодом на протяжении многих лет.
Помимо многолетней борьбы с разгоном, другим препятствием на стороне ядра для NVK была необходимость введения новых интерфейсов ядра для лучшей работы с Vulkan. Большая часть интерфейсов ядра драйвера Nouveau DRM была разработана много лет назад с учетом потребностей OpenGL и аппаратных возможностей того времени. Сегодня появилась серия патчей от инженера Red Hat Данило Крумрича, работающего над внесением некоторых изменений в драйвер ядра для адаптации к потребностям Vulkan.
Данило Крумрич опубликовал набор исправлений, касающихся управления DRM GPUVA и дополнений API пользовательского пространства Nouveau. Основное внимание уделяется поддержке требований разреженных привязок и разреженных остатков Vulkan. В рамках этой работы над драйверами Nouveau также внедряется общий менеджер DRM GPUVA для ядра DRM, который может использоваться для отслеживания отображений виртуальных адресов GPU более общим способом.
14 патчей, адаптирующих Nouveau UAPI для Vulkan sparse bindings и residency needs, а также вводящих общий менеджер DRM GPUVA, сейчас ожидают рассмотрения. Уже есть готовый код Дэвида Эйрли для использования новых возможностей API пользовательского пространства драйвером NVK для включения объектов синхронизации и семафоров временной шкалы.
Источник: https://www.phoronix.com/