Первый выпуск | 1.0 / 18 июня 2012 г.; 8 лет назад (18.06.2012) |
---|---|
Стабильный выпуск | 1.0.16 / 28 января 2019 г.; 21 месяц назад (28.01.2019), |
Написано в | C |
Операционной системе | Linux, NetBSD |
Platform | x86, x86- 64, ARM, PowerPC |
Тип | Драйвер устройства |
Лицензия | Лицензия MIT |
Веб-сайт | nouveau.freedesktop.org |
nouveau () - это бесплатный драйвер графического устройства с открытым исходным кодом для Nvidia видеокарты и семейство Tegra из SoC, написанных независимыми инженерами-программистами при незначительной помощи сотрудников Nvidia.
Цель проекта - создать драйвер с открытым исходным кодом с помощью обратного проектирования собственных проприетарных Linux драйверов Nvidia. Он управляется X.Org Foundation, размещен на freedesktop.org и распространяется как часть Mesa 3D. Первоначально проект был основан на 2D -только бесплатном драйвере с открытым исходным кодом "nv", который, как утверждают разработчик Red Hat Мэтью Гаррет и другие, был запутан. nouveau находится под лицензией MIT License.
. Название проекта происходит от французского слова nouveau, что означает новый. Это было предложено первоначальной функцией автозамены IRC-клиента на французском языке, которая предлагала слово «nouveau», когда он набирал «nv».
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 поддерживает новый Turing.
По техническим причинам все графические процессоры Nvidia загружаются с низкой частотой (так называемой «тактовой частотой»). Драйвер устройства должен установить более высокую частоту после загрузки. Из-за отсутствия документации по графическому процессору, в nouveau с самого начала не было этой возможности. Результатом была / является серьезная потеря производительности, что подтверждается тестами, которые сравнивали производительность проприетарного драйвера устройства Nvidia с производительностью nouveau. В июне 2014 года был наконец достигнут прорыв, и в nouveau была добавлена первоначальная поддержка повторного тактирования. В версии 1.0.14 поддержка Pascal находится на уровне Maxwell 2. В версии 1.0.15 есть патч для GTX 970 с 4GB и ускорениями Pascal до Maxwell 2 Level.
В отличие от AMD, Nvidia не предоставляет документации по своим графическим процессорам. Разработчики модерна были вынуждены использовать «чистую комнату» обратный инжиниринг для получения необходимых данных, позволяющих им писать в стиле модерн. В проекте используется несколько специально разработанных программ для обратного проектирования, таких как MmioTrace (Memory Mapped I / O Trace), REnouveau и Valgrind MMT.
REnouveau (Reverse Engineering for nouveau) - это программа под лицензией GNU GPL (с использованием SDL ), которая собирает данные для большей части работ по обратному проектированию nouveau. Пользователи с проприетарными драйверами NVIDIA могут помочь в разработке nouveau, предоставив информацию об оборудовании своих карт NVIDIA через REnouveau. REnouveau работает, копируя текущую графическую карту MMIO регистрового пространства, отрисовывая некоторую графику и беря другую копию MMIO, и выводя разницу в текстовый файл. Он запускает около шести дюжин различных тестов, которые затем пользователь компьютера создает tar. bz2 архив и отправляет по электронной почте, после чего он автоматически передается на FTP-серверы проекта для анализа разработчиками.
Только ядро имеет прямой доступ к оборудованию, включая видеокарту. Программное обеспечение конечного пользователя обращается к нему через различные интерфейсы, специфичные для данной задачи. nouveau пишется как драйвер устройства типа Gallium3D, что означает, что он использует большой объем кода совместно с другими драйверами Gallium3D. Большая часть этого общего ядра поддерживается в Mesa 3D, а затем распространяется как таковые различными дистрибутивами Linux.
Mesa 3D и драйверами, которые оно включает, поддерживает несколько интерфейсов рендеринга, все они предназначены для предоставления программам пользовательского пространства, например, видеоигры или программное обеспечение CAD, доступ к соответствующим блокам SIP.
Бесплатная реализация Direct3D <с открытым исходным кодом 113>версия 9 встроена в Mesa 3D. Его можно использовать с модерном; однако, поскольку любое программное обеспечение, использующее Direct3D, запрограммировано для Windows, это программное обеспечение можно использовать только вместе с Wine в Linux.
. Интерфейс визуализации OpenGL разрабатывается Khronos Group. Реализации этого API являются частью проприетарного "Catalyst" Nvidia или AMD. Другая реализация пишется энтузиастами свободного программного обеспечения, такими как Брайан Пол или Intel, и координируется в Mesa 3D. Будучи драйвером типа Gallium3D, nouveau требует лишь незначительных изменений для работы с этой реализацией.
Mesa 3D поддерживает несколько интерфейсов, каждый из которых предназначен для предоставления программ в пользовательском пространстве, например, GStreamer или HandBrake, доступ к соответствующим блокам SIP. Также можно использовать для этой цели ИС, предназначенную для расчетов рендеринга, хотя этот подход потребляет гораздо больше электроэнергии по сравнению с использованием блока PureVideo SIP.
nouveau поддерживает PureVideo и предоставляет доступ к нему через VDPAU и частично через XvMC.
nouveau не поддерживает Nvidia NVENC.
В Mesa GalliumCompute также является основным проектом для Nvidia, но только часть AMD близка к бета-версии для OpenCL 1.0, 1.1 и 1.2.
nouveau не поддерживает CUDA.
В проекте Coriander преобразование кода CUDA в OpenCL 1.2 возможно. Таким образом, поддержка CUDA возможна при полной поддержке OpenCL 1.2 в GalliumCompute.
Примерно в 2006 году Nvidia представила FALCON (FAst Logic CONtroller) для своих графических процессоров. На 4-м семинаре RISC-V в июле 2016 года сотрудники Nvidia представили свои планы по замене FALCON на новый собственный дизайн, основанный на наборе команд RISC-V.
nouveau был запущен в 2005 году Стефаном Марчезеном как серия исправлений для драйвера «nv» и официально объявлен в феврале 2006 года на конференции. FOSDEM событие. Первая живая демонстрация nouveau была на Linux.conf.au 2007. В 2010 году nouveau был принят в версии 2.6.33 ядра Linux в качестве экспериментального драйвера. 26 марта 2012 года драйвер nouveau был отмечен как стабильный и повышен из промежуточной области Linux 3.4. nouveau претерпел серьезные изменения в архитектуре Linux 3.7.
nouveau изначально использовала инфраструктуру прямого рендеринга (DRI) Mesa 3D для рендеринга компьютерной графики 3D., который позволяет ускорять 3D-рисование с помощью графического процессора (GPU) непосредственно из 3D-приложения; но в феврале 2008 года работа над поддержкой DRI прекратилась и перешла к новому Gallium3D.
23 сентября 2013 года Nvidia публично объявила, что они выпустят некоторую документацию о своих графических процессорах с намерением решить области, которые влияют на выход готовое использование графических процессоров NVIDIA с модерном.
По состоянию на 31 января 2014 года Александр Курбот из Nvidia выпустил обширный набор исправлений, которые добавляют начальную поддержку GK20A (Tegra K1 ) в модерн.
По состоянию на 9 июля В 2016 году сотрудник Red Hat Бен Скеггс внес исправление, которое добавляет поддержку ядра Linux для чипа GP104 на базе Pascal, установленного в видеокартах GeForce GTX 1070 и GeForce GTX 1080.
Статус 2016 и Будущие работы были представлены в XDC2016. Статус новых усилий в OpenCL отображается на FOSDEM.
Драйвер nouveau и его 3D-аналог в Mesa использовались в качестве драйвера с открытым исходным кодом по умолчанию для карт Nvidia во многих Дистрибутивы Linux, включая Fedora 11, openSUSE 11.3, Ubuntu 10.04 и Debian.
Compiz рекомендует nouveau над проприетарным драйвером Nvidia.
В июне 2014 года Codethink сообщила о запуске Wayland -based Weston compositor с ядром Linux 3.15, используя EGL и «стек графических драйверов со 100% открытым исходным кодом» на Tegra K1.
. В октябре 2016 года NetBSD добавила экспериментальную поддержку модерна в NetBSD 7.