nouveau ( / n uː ˈ v oʊ / ) — это бесплатный драйвер графического устройства с открытым исходным кодом для видеокарт Nvidia и семейства SoC Tegra , написанный независимыми разработчиками программного обеспечения при незначительной помощи сотрудников Nvidia.
Целью проекта является создание драйвера с открытым исходным кодом путем обратного проектирования собственных драйверов Linux от Nvidia . Он управляется X.Org Foundation , размещен на сайте freedesktop.org и распространяется как часть Mesa 3D . Первоначально проект был основан на бесплатном драйвере nv с открытым исходным кодом, предназначенном только для 2D , который, как утверждают разработчик Red Hat Мэтью Гарретт и другие, был запутан. [2] nouveau лицензируется по лицензии MIT .
Название проекта происходит от французского слова nouveau , что означает новый . [3] Это было предложено первоначальным автором, Стефаном Маршезеном, после того, как франкоязычная система автозамены его клиента IRC предложила слово «нуво» в качестве исправления для букв «nv». [4]
nouveau — это драйвер устройства в стиле Gallium3D , работающий поверх инфраструктуры прямого рендеринга (DRI). Он состоит из двух компонентов ядра — драйвера DRM и KMS , а также компонентов пользовательского пространства libDRM и Mesa 3D .
nouveau намерен поддерживать все микроархитектуры Nvidia: Tesla , Fermi , Kepler , Maxwell , в версии 1.0.13 поддержку Pascal и в версии 1.0.15 поддержку Volta . В версии 1.0.16 добавлена поддержка Тьюринга .
По техническим причинам все графические процессоры Nvidia загружаются с низкой частотой (так называемой «тактовой частотой»). Драйвер устройства должен установить более высокую частоту после загрузки. Из-за отсутствия документации по графическому процессору в Nouveau с самого начала не было этой возможности. Результатом стала/является серьезная потеря производительности, о чем свидетельствуют тесты, в которых сравнивалась производительность проприетарного драйвера устройства Nvidia с драйвером nouveau. [5] В июне 2014 года наконец был достигнут прорыв: в nouveau была добавлена первоначальная поддержка повторной тактовой частоты. [6] [7] [8] В версии 1.0.14 поддержка Pascal находится на уровне Maxwell 2. [9] В версии 1.0.15 имеется патч для GTX 970 с 4 ГБ и ускорением Pascal до уровня Maxwell 2.
В отличие от AMD , Nvidia не предоставляет документации о своих графических процессорах. Разработчики модерна были вынуждены использовать реверс-инжиниринг в «чистой комнате» , чтобы получить необходимые данные, позволяющие им писать модерн. В проекте используется несколько специально разработанных программ для обратного проектирования, таких как MmioTrace (трассировка ввода-вывода с отображением в памяти), [10] REnouveau и Valgrind MMT. [11]
REnouveau (обратное проектирование для нуво) [12] — это программа, лицензируемая под лицензией GNU GPL (с использованием SDL ), которая собирает данные для большей части работ по обратному проектированию в стиле нуво. Пользователи с проприетарными драйверами NVIDIA могут помочь в разработке Nouveau, предоставив информацию об аппаратном обеспечении своих карт NVIDIA через REnouveau. REnouveau работает путем копирования текущего регистрового пространства MMIO видеокарты , рисования некоторой графики, создания еще одной копии MMIO и вывода разницы в текстовый файл. Он запускает около шести десятков различных тестов, которые пользователь компьютера затем записывает в tar . bz2 и отправляется по электронной почте , после чего автоматически передается на FTP-серверы проекта для анализа разработчиками. В настоящее время REnouveau в основном заменен Valgrind-MMT. [ нужна цитата ]
Только ядро имеет прямой доступ к оборудованию, включая видеокарту. Программное обеспечение конечного пользователя получает доступ к нему через различные интерфейсы , специфичные для конкретной задачи. nouveau пишется как драйвер устройства типа Gallium3D , что означает, что он использует большой объем кода совместно с другими драйверами Gallium3D. Большая часть этого общего ядра встроена в Mesa 3D , а затем распространяется как таковая в различных дистрибутивах Linux .
Mesa 3D и включенные в нее драйверы поддерживают несколько интерфейсов рендеринга , каждый из которых предназначен для предоставления программам пользовательского пространства, таким как, например, видеоигры или программное обеспечение САПР , доступ к соответствующим блокам SIP .
Бесплатная реализация Direct3D версии 9 с открытым исходным кодом была встроена в Mesa 3D. Его можно использовать с модерном; Однако , поскольку любое программное обеспечение, использующее Direct3D, запрограммировано для Windows, это программное обеспечение можно использовать только вместе с Wine в Linux.
Интерфейс рендеринга OpenGL разрабатывается компанией Khronos Group . Реализации этого API являются частью драйверов Nvidia и собственной разработки AMD Catalyst . Другая реализация пишется энтузиастами свободного программного обеспечения, такими как Брайан Пол или Intel, и координируется в Mesa 3D. Будучи драйвером типа Gallium3D, Nouveau нуждается лишь в незначительной адаптации для работы с этой реализацией.
По состоянию на декабрь 2023 года [обновлять]Nouveau имеет некоторую поддержку API Vulkan через экспериментальный драйвер NVK. [13]
Mesa 3D поддерживает несколько интерфейсов, каждый из которых предназначен для предоставления программам пользовательского пространства, таким как, например, GStreamer или HandBrake , доступ к соответствующим блокам SIP. Для этой цели также можно использовать микросхему, предназначенную для рендеринга вычислений, хотя этот подход потребляет гораздо больше электроэнергии по сравнению с использованием SIP-блока PureVideo .
nouveau поддерживает PureVideo и предоставляет доступ к нему через VDPAU и частично через XvMC . [14]
Nouveau не поддерживает Nvidia NVENC .
В Mesa GalliumCompute также является основным проектом Nvidia, но только часть AMD находится на стадии бета-тестирования для OpenCL 1.0, 1.1 и 1.2. [15]
nouveau не поддерживает CUDA .
С помощью проекта Coriander возможно преобразование кода CUDA в OpenCL 1.2. [16]
Примерно в 2006 году Nvidia представила FALCON (FAst Logic CONtroller) для своих графических процессоров.
На 4-м семинаре RISC-V в июле 2016 года сотрудники Nvidia представили свои планы по замене FALCON новой собственной разработкой, основанной на наборе инструкций RISC-V. [17]
Nouveau был начат в 2005 году Стефаном Маршезеном как серия патчей для драйвера «nv» [18] и официально анонсирован в феврале 2006 года на мероприятии FOSDEM. [19] Первая живая демонстрация nouveau была представлена на Linux.conf.au в 2007 году. [19] В 2010 году nouveau был принят в версии ядра Linux 2.6.33 в качестве экспериментального драйвера. [18] [20] 26 марта 2012 года драйвер nouveau был помечен как стабильный и переведен из промежуточной области Linux 3.4. [21] [22] Nouveau претерпел серьезные изменения внутренней архитектуры в Linux 3.7. [22]
Nouveau изначально использовал инфраструктуру прямого рендеринга (DRI) Mesa 3D для рендеринга 3D-компьютерной графики , которая позволяет ускорять 3D-рисование с помощью графического процессора (GPU) непосредственно из 3D-приложения; но в феврале 2008 года работа над поддержкой DRI прекратилась и перешла к новому Gallium3D . [23] [24]
23 сентября 2013 года [25] Nvidia публично объявила, что выпустит некоторую документацию о своих графических процессорах с намерением устранить области, влияющие на удобство использования графических процессоров NVIDIA с нуво «из коробки».
По состоянию на 31 января 2014 года Александр Курбо из Nvidia выпустил обширный набор патчей, которые добавляют первоначальную поддержку GK20A ( Tegra K1 ) в Nouveau. [26]
По состоянию на 9 июля 2016 года сотрудник Red Hat Бен Скеггс выпустил патч, который добавляет поддержку чипа GP104 на базе Pascal , установленного на видеокартах GeForce GTX 1070 и GeForce GTX 1080, в ядро Linux. [27]
Статус 2016 года и будущая работа были представлены в XDC2016. [28] Статус новых разработок в OpenCL показан на FOSDEM. [29]
В 2019 году NVidia опубликовала некоторую документацию о своих чипсетах Kepler, Maxwell, Pascal и Volta. [30] [31]
Драйвер nouveau и его 3D-аналог в Mesa использовались в качестве драйвера с открытым исходным кодом по умолчанию для карт Nvidia во многих дистрибутивах Linux , включая Fedora 11, [32] [33] openSUSE 11.3, [34] Ubuntu 10.04, [35] [ 36] и Debian . [37]
Compiz рекомендовался в 2010 году вместо проприетарного драйвера Nvidia. [38]
В июне 2014 года компания Codethink сообщила о запуске компоновщика Weston на базе Wayland с ядром Linux 3.15 с использованием EGL и «стека графических драйверов со 100% открытым исходным кодом» на Tegra K1 . [39]
В октябре 2016 года NetBSD добавила экспериментальную поддержку nouveau в NetBSD 7. [40]
{{cite web}}
: Отсутствует или пусто |url=
( помощь )Наша рекомендация: используйте nouveau.