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- клиента предложила слово «nouveau» в качестве исправления букв «nv». [4]
nouveau — это драйвер устройства в стиле Gallium3D , работающий поверх Direct Rendering Infrastructure (DRI). Он состоит из двух компонентов ядра DRM и KMS-драйвера , а также компонентов пользовательского пространства libDRM и Mesa 3D .
nouveau намерен поддерживать все микроархитектуры Nvidia: Tesla , Fermi , Kepler , Maxwell , в версии 1.0.13 поддержку Pascal и в версии 1.0.15 поддержку Volta . В версии 1.0.16 добавлена поддержка Turing .
По техническим причинам все графические процессоры Nvidia загружаются с низкой частотой (называемой «тактовой частотой»). Драйвер устройства должен установить более высокую частоту после загрузки. Из-за отсутствия документации на GPU, у 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 не предоставляет никакой документации о своих графических процессорах. Разработчики nouveau были вынуждены использовать обратную разработку в чистой комнате , чтобы получить необходимые данные для написания nouveau. Проект использует несколько специально разработанных программ для обратной разработки, таких как MmioTrace (Memory Mapped I/O Trace), [10] REnouveau и Valgrind MMT. [11]
REnouveau (Reverse Engineering for nouveau) [12] — это программа, лицензированная по GNU GPL (использующая SDL ), которая собирает данные для большинства работ по обратному проектированию nouveau. Пользователи с фирменными драйверами 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. Она может использоваться с nouveau; [ требуется ссылка ] однако, поскольку любое программное обеспечение, использующее Direct3D, запрограммировано для Windows, это программное обеспечение может использоваться только вместе с Wine на Linux.
Интерфейс рендеринга OpenGL разрабатывается Khronos Group . Реализации этого API являются частью драйверов Nvidia и фирменного "Catalyst" AMD . Другая реализация пишется энтузиастами свободного программного обеспечения, такими как Брайан Пол или Intel, и координируется в Mesa 3D. Будучи драйвером типа Gallium3D, nouveau нуждается лишь в незначительной адаптации для работы с этой реализацией.
По состоянию на декабрь 2023 года [обновлять]Nouveau имеет некоторую поддержку API Vulkan через экспериментальный драйвер NVK. [13]
Mesa 3D поддерживает несколько интерфейсов, все из которых разработаны для предоставления программам пользовательского пространства, таким как GStreamer или HandBrake , доступа к соответствующим блокам SIP. Также возможно использовать ИС, разработанную для рендеринга расчетов для этой цели, хотя этот подход потребляет гораздо больше электроэнергии по сравнению с использованием блока PureVideo SIP.
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 был принят в версию 2.6.33 ядра Linux в качестве экспериментального драйвера. [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 «из коробки» с помощью nouveau.
По состоянию на 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] В 2024 году ведущий инженер Бен Скеггс был нанят Nvidia для продолжения работы над драйвером с открытым исходным кодом. [32]
Драйвер nouveau и его 3D-аналог в Mesa использовались в качестве драйвера с открытым исходным кодом по умолчанию для карт Nvidia во многих дистрибутивах Linux , включая Fedora 11, [33] [34] openSUSE 11.3, [35] Ubuntu 10.04, [36] [37] и Debian . [38]
Compiz рекомендовал в 2010 nouveau вместо фирменного драйвера Nvidia . [39]
В июне 2014 года Codethink сообщил о запуске композитора Weston на базе Wayland с ядром Linux 3.15, использующим EGL и «стек графических драйверов с 100% открытым исходным кодом» на Tegra K1 . [40]
В октябре 2016 года NetBSD добавила экспериментальную поддержку nouveau в NetBSD 7. [41]
{{cite web}}
: Отсутствует или пусто |url=
( помощь )Наша рекомендация: используйте nouveau.