stringtranslate.com

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

В середине: стек FOSS, состоящий из драйвера DRM и KMS , libDRM и Mesa 3D . Справа: фирменные драйверы: компоненты Kernel BLOB и User-space.

nouveau ( / n ˈ v / ) — бесплатный драйвер графического устройства с открытым исходным кодом для видеокарт 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 .

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.

Инструменты

Скриншот REnouveau в действии (REnouveau — это синее окно в левом верхнем углу)

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

REnouveau

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 .

API рендеринга

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

Direct3D

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

OpenGL

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

Интерфейс рендеринга 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 .

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

OpenCL

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

CUDA

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

С проектом Coriander возможна конвертация кода CUDA в OpenCL 1.2. [16]

Системный процессор GPU

Nvidia СОКОЛ

Примерно в 2006 году компания Nvidia представила FALCON (FAst Logic CONtroller) для своих графических процессоров.

NV-RISCV

На 4-м семинаре RISC-V в июле 2016 года сотрудники Nvidia представили свои планы по замене FALCON новой фирменной разработкой на основе набора инструкций RISC-V. [17]

История

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

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]

Принятие

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

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

Смотрите также

Ссылки

  1. ^ фон Айтцен, Крис (18 июня 2012 г.). "Бесплатный графический драйвер NVIDIA достигает версии 1.0". The H - Open . Heinz Heise . Получено 13 июня 2013 г. .
  2. ^ "Debian bug tracker". 17 августа 2006 г. Получено 7 апреля 2013 г.
  3. ^ "nouveau Wiki". 7 июля 2009 г. Получено 23 сентября 2009 г.
  4. ^ "Состояние Nouveau, часть I". LWN.net . 15 февраля 2008 г. Получено 24 ноября 2009 г.
  5. ^ "Nouveau против NVIDIA proprietary Linux против NVIDIA Windows 8.1". Phoronix . 2013-10-31.
  6. ^ "Подробности повторного тактирования Nouveau обсуждаются далее". Phoronix . 2014-05-17.
  7. ^ "Nouveau Re-Clocking Is Way Faster". Phoronix . 2014-06-20.
  8. ^ "Документация Nouveau PowerManagement" . сайт freedesktop.org .
  9. ^ "nouveau/xf86-video-nouveau - драйвер Nouveau Xorg для чипов NVIDIA" . cgit.freedesktop.org . Проверено 6 мая 2017 г.
  10. ^ "MmioTrace (Трассировка ввода-вывода с отображением в памяти)". nouveau Wiki.
  11. ^ "Валгринд-ММТ". нуво вики.
  12. ^ «REnouveau (обратное проектирование модерна)» . нуво вики.
  13. ^ «Collabora - NVK приземлился».
  14. ^ "Ускорение видео в стиле модерн" . сайт freedesktop.org .
  15. ^ "GalliumCompute". Dri.freedesktop.org . Получено 2017-05-06 .
  16. ^ "Кориандр". GitHub . 15 ноября 2021 г.
  17. ^ "История Nvidia RISC-V" (PDF) . Июль 2016 г.
  18. ^ ab Перес, Мартин; Стах, Лукас. "Nouveau Recap, текущая и будущая работа" (PDF) . Получено 1 сентября 2014 г.
  19. ^ ab "The state of Nouveau, part I". LWN.net . Получено 1 сентября 2014 г. .
  20. ^ «Нуво для перехода на ядро ​​Linux 2.6.33!». Фороникс . 11 декабря 2009 г.
  21. Джонатан Корбет (23 марта 2012 г.). «Водитель Nouveau заканчивает постановку». LWN.net .
  22. ^ ab Peres, Martin. "Nouveau XDC 2013 slides" (PDF) . X.Org . Получено 1 сентября 2014 г. .
  23. ^ "Государство Nouveau, часть 2". LWN.net . 26 февраля 2008 г. Получено 7 марта 2008 г.
  24. ^ "Nouveau Companion 36 - Нерегулярный компаньон Nouveau-Development". 7 марта 2008 г. Архивировано из оригинала 8 февраля 2012 г. Получено 7 марта 2008 г.
  25. ^ "Nvidia предлагает опубликовать публичную документацию по некоторым аспектам своих графических процессоров". 2013-09-23 . Получено 2013-09-24 .
  26. ^ "drm/nouveau: начальная поддержка GK20A (Tegra K1)". 2014-01-31.
  27. ^ "drm/nouveau: начальная поддержка GP104 (Pascal)". GitHub . 2016-07-09.
  28. ^ "Отчет о состоянии" (PDF) . x.org. Сентябрь 2016 . Получено 2017-05-06 .
  29. ^ "Поддержка вычислений для Nouveau, создание бэкэнда LLVM для TGSI и SPIR-V для NV50 IR" (PDF) . 2016 . Получено 06.05.2017 .
  30. ^ https://github.com/nvidia/open-gpu-doc Репозиторий NVIDIA open-gpu-doc
  31. ^ https://nvidia.github.io/open-gpu-doc/ Веб-страница NVidia open-gpu-doc
  32. ^ «Бывший ведущий разработчик Nouveau присоединяется к NVIDIA, продолжая работу над драйвером с открытым исходным кодом». www.phoronix.com . Получено 16 сентября 2024 г.
  33. Майкл Ларабель (29 марта 2009 г.). «Тестирование драйвера Nouveau на Fedora 11». Phoronix .
  34. ^ "Package mesa". Apps.fedoraproject.org. Архивировано из оригинала 2020-02-27 . Получено 2017-05-06 .
  35. ^ "Основные характеристики продукта для версии openSUSE 11.3". openSUSE . Получено 29 декабря 2010 г. .
  36. ^ «Ошибка № 454821: Ошибки: пакет «xserver-xorg-video-nv»: Ubuntu». {{cite web}}: Отсутствует или пусто |url=( помощь )
  37. ^ "Результаты поиска для "libgl1-mesa-dri"". Пакеты Ubuntu . Получено 2017-05-06 .
  38. Debian (11 февраля 2011 г.). «Драйверы Nouveau nVidia теперь доступны в экспериментальной версии Debian».
  39. ^ Сэм Спилсбери, главный сопровождающий Compiz (21 мая 2010 г.). «Остерегайтесь бенчмарков». Наша рекомендация: используйте nouveau.
  40. ^ "Codethink запускает NVIDIA Jetson TK1 с ​​Linux 3.15, Wayland". Phoronix . 2014-06-12.
  41. ^ "nouveau/NetBSD". freedesktop.org. 17 октября 2016 г. Получено 30 января 2016 г.

Внешние ссылки