stringtranslate.com

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

В середине: стек FOSS, состоящий из драйвера DRM и KMS , libDRM и Mesa 3D . Справа: проприетарные драйверы: компоненты ядра BLOB и пользовательского пространства.

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 предложила слово «нуво» в качестве исправления для букв «nv». [4]

Архитектура программного обеспечения

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 добавлена ​​поддержка Тьюринга .

Повторная синхронизация

По техническим причинам все графические процессоры 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.

Инструменты

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

В отличие от 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 .

API рендеринга

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

Директ3D

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

OpenGL

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

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

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

OpenCL

В 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) для своих графических процессоров.

НВ-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 был принят в версии ядра 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]

Принятие

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

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

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

Рекомендации

  1. ^ фон Эйтцен, Крис (18 июня 2012 г.). «Бесплатный графический драйвер NVIDIA достиг версии 1.0». H-Открыть . Хайнц Хайзе . Проверено 13 июня 2013 г.
  2. ^ «Отслеживание ошибок Debian» . 17 августа 2006 г. Проверено 7 апреля 2013 г.
  3. ^ "Новая Вики". 7 июля 2009 года . Проверено 23 сентября 2009 г.
  4. ^ «Государство Нуво, часть I». LWN.net . 15 февраля 2008 года . Проверено 24 ноября 2009 г.
  5. ^ «Нуво против проприетарного Linux NVIDIA против NVIDIA Windows 8.1» . Фороникс . 31 октября 2013 г.
  6. ^ "Детали повторного тактирования в стиле модерн обсуждаются далее" . Фороникс . 17 мая 2014 г.
  7. ^ «Повторная синхронизация в стиле модерн намного быстрее» . Фороникс . 20 июня 2014 г.
  8. ^ "Документация Nouveau PowerManagement" . сайт freedesktop.org .
  9. ^ "nouveau/xf86-video-nouveau - драйвер Nouveau Xorg для чипов NVIDIA" . cgit.freedesktop.org . Проверено 6 мая 2017 г.
  10. ^ «MmioTrace (трассировка ввода-вывода с отображением в памяти)» . нуво вики.
  11. ^ "Валгринд-ММТ". нуво вики.
  12. ^ «REnouveau (обратное проектирование модерна)» . нуво вики.
  13. ^ "Коллабора - НВК приземлился" .
  14. ^ "Ускорение видео в стиле модерн" . сайт freedesktop.org .
  15. ^ "ГаллийКомпьютер". Dri.freedesktop.org . Проверено 6 мая 2017 г.
  16. ^ «Кориандр». Гитхаб . 15 ноября 2021 г.
  17. ^ «История NVIDIA RISC-V» (PDF) . Июль 2016.
  18. ^ аб Перес, Мартин; Стах, Лукас. «Новый обзор, текущая и будущая работа» (PDF) . Проверено 1 сентября 2014 г.
  19. ^ ab «Государство Нуво, часть I». LWN.net . Проверено 1 сентября 2014 г.
  20. ^ «Нуво для перехода на ядро ​​​​Linux 2.6.33!». Фороникс . 11 декабря 2009 г.
  21. Джонатан Корбет (23 марта 2012 г.). «Водитель-нувоист заканчивает постановку». LWN.net .
  22. ^ аб Перес, Мартин. «Слайды Nouveau XDC 2013» (PDF) . X.Орг . Проверено 1 сентября 2014 г.
  23. ^ «Государство Нуво, часть 2». LWN.net . 26 февраля 2008 года . Проверено 7 марта 2008 г.
  24. ^ "Nouveau Companion 36 - Нестандартный спутник Nouveau-Development" . 7 марта 2008 г. Архивировано из оригинала 8 февраля 2012 г. Проверено 7 марта 2008 г.
  25. ^ «Nvidia предлагает опубликовать общедоступную документацию по некоторым аспектам своих графических процессоров» . 23 сентября 2013 г. Проверено 24 сентября 2013 г.
  26. ^ «drm/nouveau: первоначальная поддержка GK20A (Tegra K1)» . 31 января 2014 г.
  27. ^ «drm/nouveau: первоначальная поддержка GP104 (Pascal)» . Гитхаб . 09.07.2016.
  28. ^ «Отчет о состоянии» (PDF) . х.орг. Сентябрь 2016 года . Проверено 6 мая 2017 г.
  29. ^ «Вычислительная поддержка для Nouveau, создание LLVM для TGSI и SPIR-V для IR-сервера NV50» (PDF) . 2016 . Проверено 6 мая 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. Майкл Ларабель (29 марта 2009 г.). «Тестирование драйвера Nouveau в Fedora 11». Фороникс .
  33. ^ "Пакет Меса" . Apps.fedoraproject.org. Архивировано из оригинала 27 февраля 2020 г. Проверено 6 мая 2017 г.
  34. ^ «Основные продукты для версии openSUSE 11.3» . openSUSE . Проверено 29 декабря 2010 г.
  35. ^ «Ошибка № 454821: Ошибки: пакет «xserver-xorg-video-nv»: Ubuntu». {{cite web}}: Отсутствует или пусто |url=( помощь )
  36. ^ «Результаты поиска для «libgl1-mesa-dri»» . Пакеты Ubuntu . Проверено 6 мая 2017 г.
  37. ^ Debian (11 февраля 2011 г.). «Драйверы Nouveau nVidia теперь доступны в экспериментальной версии Debian».
  38. Сэм Спилсбери, главный специалист по поддержке Compiz (21 мая 2010 г.). «Остерегайтесь эталонов». Наша рекомендация: используйте nouveau.
  39. ^ «Codethink запускает NVIDIA Jetson TK1 с ​​Linux 3.15, Wayland» . Фороникс . 12 июня 2014 г.
  40. ^ "Нуво/NetBSD". freedesktop.org. 17 октября 2016 г. Проверено 30 января 2016 г.

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