NVK र Zink ले NVIDIA GPU हरूको लागि खुला ड्राइभरहरूको साथ स्थितिमा उल्लेखनीय सुधार गरेको छ

Компания Сollabora объявила о доведении открытого драйвера NVK для видеокарт NVIDIA до готовности к повседневному использованию широким кругом пользователей и сертификации данного драйвера в консорциуме Khronos, занимающемся разработкой графических стандартов. Драйвер признан полностью совместимым со спецификацией Vulkan 1.3, успешно прошёл все тесты из набора CTS (Khronos Conformance Test Suite) и включён в список сертифицированных драйверов.

Сертификация пройдена для GPU NVIDIA на базе микроархитектур Turing (серии GeForce GTX 16xx, RTX 20xx и Quadro RTX), Ampere (серии GeForce RTX 30xx и RTX A2000/4000/5000/6000) и Ada (серии GeForce RTX 4xxx, RTX 4000 SFF, RTX 4xxx/5000/6000 Ada). Проверка была выполнена в окружении с ядром Linux 6.5 и 6.8rc1. Получение сертификата даёт возможность официально заявлять о совместимости с графическими стандартами и использовать связанные с ними торговые марки Khronos. Изменения уже приняты в кодовую базу Mesa и войдут в состав выпуска Mesa 24.1.

Кроме улучшений в NVK отмечается значительный прогресс в обеспечении поддержки OpenGL для видеокарт NVIDIA. В Mesa принято изменение, позволяющее задействовать драйвер Zink для обеспечения поддержки OpenGL 4.6 на системах с новыми сериями видеокарт NVIDIA (начиная с GeForce RTX 20xx), с которыми могут наблюдаться проблемы в штатном OpenGL-драйвере Nouveau (NVC0). Для включения Zink вместо NVC0 в Mesa 24.1 достаточно выставить переменную окружения «NOUVEAU_USE_ZINK=1».

Внесённые в Mesa изменения также предусматривают возможность использования Zink для поддержки OpenGL и в других драйверах в качестве запасного варианта, применяемого для GPU, не поддерживаемых штатными OpenGL-драйверами Mesa. Например, подобный подход уже применяется для предоставления поддержки OpenGL в драйвере freedreno для GPU Qualcomm Adreno 700 и в драйвере powervr для GPU Imagination PowerVR на базе микроархитектуры Rogue.

Zink предоставляет реализацию OpenGL поверх Vulkan, позволяющую получить аппаратно ускоренный OpenGL на устройствах, поддерживающих только API Vulkan. В следующем выпуске Mesa драйвер Zink будет активирован при сборке по умолчанию. Производительность Zink близка к производительности родных реализаций OpenGL, что даёт возможность вместо траты ресурсов на сопровождение отдельных OpenGL-драйверов, сосредоточиться на качественной поддержке API Vulkan, а поддержку OpenGL реализовать поверх Vulkan.

Старый OpenGL-драйвер Nouveau пока не планируют убирать, но в текущем виде связка Zink + NVK демонстрирует более высокую производительность во многих тестах. На текущем этапе разработки при запуске многих игр связка Zink + NVK позволяет добиться производительности 60 FPS и выше на новых моделях GPU, но ещё остаются некоторые нерешённые проблемы и неоптимизированные области, которые со временем будут решены.

Также отмечается работа по стабилизации работы поверх драйвера NVK прослойки DXVK, предоставляющей реализацию Direct3D 9, 10 и 11, работающую через трансляцию вызовов в API Vulkan. Не все игры D3D11 пока гарантированно работают с немодифицирвонной связкой NVK+DXVK из Mesa, но базовые возможности доступны и постепенно ведётся устранение выявляемых недоработок. Аналогично развивается связка NVK с VKD3D-Proton для обеспечения поддержки D3D12, но её состояние пока отстаёт от NVK+DXVK и необходима реализация некоторых отсутствующих возможностей.

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

मेसाको लागि नयाँ सन्दर्भ वल्कन ड्राइभर सिर्जना गर्ने आँखाको साथ विकास गरिएको थियो, जसको कोड अन्य ड्राइभरहरू सिर्जना गर्दा उधारो लिन सकिन्छ। यो गर्नको लागि, NVK ड्राइभरमा काम गर्दा, तिनीहरूले Vulkan ड्राइभरहरू विकास गर्ने सबै अवस्थित अनुभवहरूलाई ध्यानमा राख्ने प्रयास गरे, कोड आधारलाई इष्टतम रूपमा कायम राख्ने र अन्य Vulkan ड्राइभरहरूबाट कोडको स्थानान्तरणलाई कम गर्ने प्रयास गरे, जसरी यो हुनुपर्दछ। इष्टतम र उच्च-गुणस्तरको काम, र अन्य ड्राइभरहरूमा कसरी गरिन्छ अन्धाधुन्ध प्रतिलिपि गर्दैन। ड्राइभरलाई पहिले नै मेसामा समावेश गरिएको छ, र Nouveau DRM ड्राइभर API मा आवश्यक परिवर्तनहरू लिनक्स 6.6 कर्नेलमा समावेश गरिएको छ।

स्रोत: opennet.ru

एक टिप्पणी थप्न