nouveau (программное обеспечение)

редактировать
Драйвер программного обеспечения с открытым исходным кодом для графического процессора Nvidia
nouveau
Первый выпуск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
Посередине: стек FOSS, состоящий из DRM и драйвера KMS, libDRM и Mesa 3D. Правая сторона: проприетарные драйверы: компоненты BLOB ядра и пользовательского пространства.

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».

Содержание
  • 1 Архитектура программного обеспечения
    • 1.1 Повторная синхронизация
    • 1.2 Инструменты
      • 1.2.1 REnouveau
  • 2 Поддерживаемые интерфейсы
    • 2.1 API рендеринга
      • 2.1.1 Direct3D
      • 2.1.2 OpenGL
    • 2.2 Ускорение видео
    • 2.3 Вычислительные API
      • 2.3.1 OpenCL
      • 2.3.2 CUDA
    • 2.4 Nvidia FALCON
  • 3 История
  • 4 Принятие
  • 5 См. Также
  • 6 Ссылки
  • 7 Внешние ссылки
Архитектура программного обеспечения
nouveau был переписан как драйвер графического устройства в стиле Gallium3D.

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.

Re-clocking

По техническим причинам все графические процессоры Nvidia загружаются с низкой частотой (так называемой «тактовой частотой»). Драйвер устройства должен установить более высокую частоту после загрузки. Из-за отсутствия документации по графическому процессору, в nouveau с самого начала не было этой возможности. Результатом была / является серьезная потеря производительности, что подтверждается тестами, которые сравнивали производительность проприетарного драйвера устройства Nvidia с производительностью nouveau. В июне 2014 года был наконец достигнут прорыв, и в nouveau была добавлена ​​первоначальная поддержка повторного тактирования. В версии 1.0.14 поддержка Pascal находится на уровне Maxwell 2. В версии 1.0.15 есть патч для GTX 970 с 4GB и ускорениями Pascal до Maxwell 2 Level.

Инструменты

A снимок экрана REnouveau в действии (REnouveau - синее окно в верхнем левом углу)

В отличие от AMD, Nvidia не предоставляет документации по своим графическим процессорам. Разработчики модерна были вынуждены использовать «чистую комнату» обратный инжиниринг для получения необходимых данных, позволяющих им писать в стиле модерн. В проекте используется несколько специально разработанных программ для обратного проектирования, таких как MmioTrace (Memory Mapped I / O Trace), REnouveau и Valgrind MMT.

REnouveau

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.

API рендеринга

Mesa 3D и драйверами, которые оно включает, поддерживает несколько интерфейсов рендеринга, все они предназначены для предоставления программам пользовательского пространства, например, видеоигры или программное обеспечение CAD, доступ к соответствующим блокам SIP.

Direct3D

Бесплатная реализация Direct3D <с открытым исходным кодом 113>версия 9 встроена в Mesa 3D. Его можно использовать с модерном; однако, поскольку любое программное обеспечение, использующее Direct3D, запрограммировано для Windows, это программное обеспечение можно использовать только вместе с Wine в Linux.

OpenGL

Данные и инструкции отправляются на GPU для обработки. Полученные результаты не отправляются обратно в основную память. Вместо этого они сохраняются в буфере кадра . Содержимое фреймбуфера впоследствии отправляется на контроллер дисплея .

. Интерфейс визуализации 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.

Вычислительные API

OpenCL

В Mesa GalliumCompute также является основным проектом для Nvidia, но только часть AMD близка к бета-версии для OpenCL 1.0, 1.1 и 1.2.

CUDA

nouveau не поддерживает CUDA.

В проекте Coriander преобразование кода CUDA в OpenCL 1.2 возможно. Таким образом, поддержка CUDA возможна при полной поддержке OpenCL 1.2 в GalliumCompute.

Nvidia FALCON

Примерно в 2006 году Nvidia представила FALCON (FAst Logic CONtroller) для своих графических процессоров. На 4-м семинаре RISC-V в июле 2016 года сотрудники Nvidia представили свои планы по замене FALCON на новый собственный дизайн, основанный на наборе команд RISC-V.

История
Left : драйвер графического устройства в классическом стиле; Справа: драйвер графического устройства в стиле Gallium3D. Оба типа имеют много общего бесплатного и открытого кода.

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.

Принятие
Иллюстрация графического стека Linux : DRM, драйвер KMS, libDRM, Меса 3D. Серверы отображения являются компонентом оконной системы и не требуются для игры в видеоигры.

Драйвер 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.

См. Также
  • Портал бесплатного программного обеспечения с открытым исходным кодом
Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-01 14:54:52
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте