stringtranslate.com

Бесплатный и открытый драйвер графического устройства

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

Бесплатный и открытый исходный код драйвера графического устройства представляет собой программный стек , который управляет аппаратным обеспечением компьютерной графики и поддерживает интерфейсы прикладного программирования (API) рендеринга графики и выпускается под свободной и открытой лицензией программного обеспечения. Драйверы графических устройств написаны для определенного оборудования для работы в определенном ядре операционной системы и для поддержки ряда API, используемых приложениями для доступа к графическому оборудованию. Они также могут управлять выводом на дисплей, если драйвер дисплея является частью графического оборудования. Большинство бесплатных и открытых исходных кодов драйверов графических устройств разработаны проектом Mesa . Драйвер состоит из компилятора , API рендеринга и программного обеспечения, которое управляет доступом к графическому оборудованию.

Драйверы без свободно (и легально) доступного исходного кода обычно называются бинарными драйверами . Бинарные драйверы, используемые в контексте операционных систем, которые подвержены постоянной разработке и изменению (например, Linux), создают проблемы для конечных пользователей и сопровождающих пакетов . Эти проблемы, которые влияют на стабильность, безопасность и производительность системы, являются основной причиной независимой разработки бесплатных и открытых драйверов. Когда техническая документация недоступна, понимание базового оборудования часто достигается путем обратного проектирования в чистой комнате . Основываясь на этом понимании, драйверы устройств могут быть написаны и легально опубликованы под любой лицензией на программное обеспечение .

В редких случаях исходный код драйвера производителя доступен в Интернете без свободной лицензии . Это означает, что код можно изучать и изменять для личного использования, но измененный (и обычно оригинальный) исходный код не может свободно распространяться. Решения ошибок в драйвере не могут быть легко распространены в виде измененных версий драйвера. Поэтому полезность таких драйверов значительно снижается по сравнению с бесплатными и открытыми драйверами.

Проблемы с фирменными драйверами

Точка зрения разработчика программного обеспечения

Блок-схема; см. заголовок
Иллюстрация графического стека Linux

Существуют возражения против бинарных драйверов, основанные на авторских правах, безопасности, надежности и проблемах разработки. В рамках более широкой кампании против бинарных blobs ведущий разработчик OpenBSD Тео де Раадт сказал, что с бинарным драйвером «нет способа исправить его, когда он сломается (а он сломается)»; когда производитель объявляет продукт, который полагается на бинарные драйверы, как вышедший из строя , он фактически «сломан навсегда». [1] Проект также заявил, что бинарные драйверы [2] «скрывают ошибки и обходные пути для ошибок», [3] наблюдение, которое было в некоторой степени подтверждено недостатками, найденными в бинарных драйверах (включая эксплуатируемую ошибку в 3D-драйверах Nvidia, обнаруженную в октябре 2006 года Rapid7 ). Предполагается, что ошибка существовала с 2004 года; Nvidia отрицает это, утверждая, что о проблеме им сообщили только в июле 2006 года, а ошибка 2004 года была ошибкой в ​​X.Org (а не в драйвере Nvidia). [4]

Двоичные драйверы часто не работают с текущими версиями программного обеспечения с открытым исходным кодом и редко поддерживают снимки разработки программного обеспечения с открытым исходным кодом; обычно разработчик не может напрямую использовать фирменные драйверы Nvidia или ATI с снимком разработки сервера X или снимком разработки ядра Linux. Такие функции, как настройка режима ядра, не могут быть добавлены в бинарные драйверы никем, кроме поставщиков, что препятствует их включению, если поставщик не имеет возможности или интереса.

В сообществе разработчиков ядра Linux Линус Торвальдс сделал резкие заявления по вопросу о двоичных модулях: «Я отказываюсь даже рассматривать возможность связывать себе руки из-за какого-то двоичного модуля... Я хочу, чтобы люди знали, что когда они используют двоичные модули, это их проблема». [5] Другой разработчик ядра, Грег Кроа-Хартман , сказал, что двоичный модуль ядра не соответствует лицензии ядра ( GNU General Public License ); он «просто нарушает GPL из-за забавных вещей, таких как производные работы, ссылки и прочее». [6] Писатель и компьютерный ученый Питер Гутман выразил обеспокоенность тем, что схема управления цифровыми правами в операционной системе Windows Vista от Microsoft может ограничить доступность документации, необходимой для написания открытых драйверов, поскольку она «требует, чтобы эксплуатационные данные устройства оставались конфиденциальными». [7]

В случае бинарных драйверов существуют возражения, связанные с философией свободного программного обеспечения , качеством программного обеспечения и проблемами безопасности . [8] В 2006 году Грег Кроа-Хартман пришел к выводу, что:

«Модули ядра Linux с закрытым исходным кодом незаконны. Вот и все, все очень просто. За эти годы мне не повезло общаться со многими юристами по интеллектуальной собственности на эту тему, и все, с кем я говорил, соглашаются, что сегодня никто не может создать модуль ядра Linux, который может быть с закрытым исходным кодом. Это просто нарушает GPL из -за забавных вещей, таких как производные работы и ссылки ». [9]

Ядро Linux никогда не поддерживало стабильный двоичный интерфейс внутриядерных приложений . [10] Также существуют опасения, что проприетарные драйверы могут содержать бэкдоры , подобные тем, что были обнаружены в драйверах модемов серии Samsung Galaxy . [11]

Точка зрения разработчика оборудования

Еще одна блок-схема; см. подпись
В будущем libGL-fglrx-glx сможет использовать libDRM драйвера Radeon с открытым исходным кодом вместо фирменного двоичного blob ; большая часть инвестиций приходится на драйвер пользовательского пространства.

Когда приложения, такие как движок 3D-игры или программное обеспечение для 3D-графики, переносят вычисления с ЦП на ГП, они обычно используют специализированный API, такой как OpenGL или Direct3D , и не обращаются к оборудованию напрямую. Поскольку вся трансляция (от вызовов API до кодов операций ГП ) выполняется драйвером устройства, он содержит специализированные знания и является объектом оптимизации. Из-за истории жесткости разработки проприетарных драйверов в последнее время наблюдается всплеск числа поддерживаемых сообществом драйверов устройств для настольных и мобильных ГП. Организации свободного и открытого оборудования, такие как FOSSi, LowRISC и другие, также выиграли бы от разработки открытого графического аппаратного стандарта. Это затем предоставило бы производителям компьютеров, любителям и т. п. полную, бесплатную платформу для разработки вычислительного оборудования и связанных с ним устройств.

На рынке настольных компьютеров долгое время доминировало оборудование ПК, использующее набор инструкций x86 / x86-64 и графические процессоры, доступные для ПК. С тремя основными конкурентами (Nvidia, AMD и Intel). Основным фактором конкуренции была цена оборудования и сырая производительность в 3D компьютерных играх, на которую в значительной степени влияет эффективная трансляция вызовов API в коды операций GPU. Драйвер дисплея и видеодекодер являются неотъемлемыми частями графической карты: оборудование, разработанное для помощи в вычислениях, необходимых для декодирования видеопотоков. Поскольку рынок оборудования для ПК сократился, кажется маловероятным, что на этот рынок выйдут новые конкуренты, и неясно, насколько больше знаний одна компания могла бы получить, увидев исходный код драйверов других компаний.

Мобильный сектор представляет собой иную ситуацию. Функциональные блоки ( драйвер дисплея интегральной схемы , специфичный для приложения, 2- и 3D-ускорение и декодирование и кодирование видео) являются отдельными блоками полупроводниковой интеллектуальной собственности (SIP) на чипе, поскольку аппаратные устройства существенно различаются; некоторым портативным медиаплеерам требуется драйвер дисплея, который ускоряет декодирование видео, но не требует 3D-ускорения. Целью разработки является не только сырая производительность 3D, но и системная интеграция, энергопотребление и возможности 2D. Существует также подход, который отказывается от традиционного метода ( Vsync ) обновления дисплея и лучше использует технологию выборки и хранения для снижения энергопотребления.

Во втором квартале 2013 года 79,3 процента смартфонов, проданных по всему миру, работали под управлением версии Android [12] , а ядро ​​Linux доминирует в смартфонах. У разработчиков оборудования есть стимул поставлять драйверы Linux для своего оборудования, но из-за конкуренции нет стимула делать эти драйверы бесплатными и с открытым исходным кодом. Дополнительные проблемы — это специфичные для Android дополнения к ядру Linux, которые не были приняты в основной ветке , такие как Atomic Display Framework (ADF). [13] ADF — это функция ядер AOSP 3.10, которая обеспечивает dma-buf -ориентированный фреймворк между HAL -компонентом Android и драйвером ядра. ADF значительно пересекается с фреймворком DRM - KMS . ADF не был принят в основную ветку, но другой набор решений, решающих те же проблемы (известный как настройка атомарного режима ), находится в стадии разработки. Такие проекты, как libhybris, используют драйверы устройств Android для работы на платформах Linux, отличных от Android.

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

Иллюстрация различий между моделями Gallium3D и Direct Rendering Infrastructure
Mesa ( DRI ) и Gallium3D имеют разные модели драйверов, но они имеют общий бесплатный и открытый исходный код.
Пример матрицы драйверов
Пример матрицы модели драйвера Gallium3D. С введением трекера Gallium3D и интерфейсов WinSys требуется 18 модулей вместо 36. Каждый модуль WinSys может работать с каждым модулем драйвера устройства Gallium3D и каждым модулем State Tracker.

Бесплатные и открытые драйверы в основном разрабатываются на и для Linux разработчиками ядра Linux, сторонними энтузиастами программирования и сотрудниками таких компаний, как Advanced Micro Devices . Каждый драйвер состоит из пяти частей:

  1. Компонент ядра Linux DRM
  2. Драйвер KMS компонента ядра Linux ( драйвер контроллера дисплея )
  3. Компонент пользовательского пространства libDRM (библиотека-оболочка для системных вызовов DRM, которая должна использоваться только Mesa 3D)
  4. Компонент пользовательского пространства Mesa 3D . Этот компонент зависит от оборудования; он выполняется на ЦП и преобразует команды OpenGL, например, в машинный код для ГП. Поскольку драйвер устройства разделен, возможен маршалинг . Mesa 3D — единственная бесплатная и открытая реализация OpenGL , OpenGL ES , OpenVG , GLX , EGL и OpenCL . В июле 2014 года большинство компонентов соответствовали спецификациям Gallium3D . Полностью функциональный State Tracker для Direct3D версии 9 написан на C , а неподдерживаемый трекер для Direct3D версий 10 и 11 написан на C++ . [14] В Wine есть Direct3D версии 9. Другой компонент Wine преобразует вызовы Direct3D в вызовы OpenGL, работая с OpenGL.
  5. Device Dependent X (DDX), еще один драйвер устройства 2D-графики для сервера X.Org

DRM зависит от ядра . Драйвер VESA обычно доступен для любой операционной системы. Драйвер VESA поддерживает большинство графических карт без ускорения и с разрешениями экрана , ограниченными набором, запрограммированным в Video BIOS производителем. [15]

История

Графический стек Linux претерпел изменения, обусловленные основным протоколом X Window System .

Бесплатные и открытые драйверы

АТИ и АМД

Радеон

Диаграмма
Драйверы устройств Linux для оборудования AMD в августе 2016 г.

Собственный драйвер AMD , AMD Catalyst для их Radeon , доступен для Microsoft Windows и Linux (ранее fglrx). Текущую версию можно загрузить с сайта AMD, а некоторые дистрибутивы Linux содержат ее в своих репозиториях. Он находится в процессе замены на гибридный драйвер AMDGPU-PRO, объединяющий ядро ​​с открытым исходным кодом, мультимедийные драйверы X и Mesa с драйверами OpenGL, OpenCL и Vulkan с закрытым исходным кодом, полученными из Catalyst.

Драйверы FOSS для графических процессоров ATI -AMD разрабатываются под названием Radeon (xf86-video-ati или xserver-xorg-video-radeon). Они по-прежнему должны загружать фирменный микрокод в графический процессор для включения аппаратного ускорения. [16] [ неудавшаяся проверка ]

Код Radeon 3D разделен на шесть драйверов в соответствии с технологией графического процессора: классические драйверы radeon, r200 и r300, а также драйверы r300g, r600g и radeonsi Gallium3D :

Доступна актуальная матрица функций [17] , а также поддержка Video Coding Engine [18] и Unified Video Decoder . [19] [20] Бесплатные и открытые драйверы графических устройств Radeon не подвергаются обратному проектированию, а основаны на документации, выпущенной AMD без требования подписать соглашение о неразглашении (NDA). [21] [22] [23] Документация начала постепенно выпускаться в 2007 году. [24] [25] [26]

Помимо предоставления необходимой документации, сотрудники AMD вносят код для поддержки своего оборудования и функций. [18]

Все компоненты драйвера графического устройства Radeon разрабатываются основными участниками и заинтересованными сторонами по всему миру. В 2011 году r300g превзошел Catalyst в некоторых случаях.

AMDGPU

На конференции разработчиков игр 2014 года компания AMD объявила, что изучает возможность изменения стратегии с целью перенести часть пользовательского пространства Catalyst на бесплатный модуль ядра DRM с открытым исходным кодом вместо своего собственного BLOB- объекта ядра . [27]

Выпуск нового модуля ядра AMDGPU и стека был анонсирован в списке рассылки dri-devel в апреле 2015 года. [28] Хотя AMDGPU официально поддерживает только видеокарты GCN 1.2 и более поздние версии, [29] экспериментальная поддержка видеокарт GCN 1.0 и 1.1 (которые официально поддерживаются только драйвером Radeon) может быть включена через параметр ядра. [30] [31] Отдельная libdrm , libdrm-amdgpu, была включена с версии libdrm 2.4.63. [32]

Код radeonsi 3D, упомянутый в предыдущем параграфе Radeon, также используется с amdgpu; 3D-драйвер имеет бэкэнды как для radeon, так и для amdgpu.

Нвидиа

Скриншот травы, растущей из воды
Скриншот REnouveau, программы, которая собирает данные для большинства работ Nouveau по обратному проектированию

Собственный драйвер Nvidia , драйвер Nvidia GeForce для GeForce , доступен для Windows x86 / x86-64 , Linux x86/x86-64/ ARM , OS X 10.5 и более поздних версий, Solaris x86/x86-64 и FreeBSD x86/x86-64. Текущую версию можно загрузить из Интернета, а некоторые дистрибутивы Linux содержат ее в своих репозиториях. Бета-версия драйвера Nvidia GeForce 331.13 от 4 октября 2013 года поддерживает интерфейс EGL , что обеспечивает поддержку Wayland в сочетании с этим драйвером. [33] [34]

Бесплатный и открытый драйвер Nvidia называется nv. [35] Он ограничен (поддерживает только 2D-ускорение), и Мэтью Гарретт , Дирк Хондель и другие назвали его исходный код запутанным. [36] [37] [38] Nvidia решила прекратить поддержку nv, не добавив поддержку Fermi или более поздних графических процессоров и DisplayPort , в марте 2010 года. [39]

В декабре 2009 года Nvidia объявила, что не будет поддерживать инициативы по свободной графике. [40] 23 сентября 2013 года компания объявила, что выпустит некоторую документацию по своим графическим процессорам. [41]

Nouveau почти полностью основан на информации, полученной в результате обратного проектирования . Этот проект направлен на создание 3D-ускорения для X.Org/Wayland с использованием Gallium3D . [42] 26 марта 2012 года компонент DRM Nouveau был отмечен как стабильный и повышен из области подготовки ядра Linux. [43] Nouveau поддерживает графические процессоры на базе Tesla (и более ранних версий), Fermi , Kepler и Maxwell . [44] 31 января 2014 года сотрудник Nvidia Александр Курбо опубликовал обширный набор исправлений, который добавляет начальную поддержку GK20A ( Tegra K1 ) в Nouveau. [45] Сообщается, что в июне 2014 года Codethink запустила композитор Weston на базе Wayland с ядром Linux 3.15, используя EGL и «стек графических драйверов с 100% открытым исходным кодом» на Tegra K1 . [46] Доступна матрица функций. [47] В июле 2014 года Nouveau не смог превзойти драйвер Nvidia GeForce из-за отсутствия поддержки повторной синхронизации. Tegra-re — это проект, который работает над обратным проектированием серии графических процессоров Tegra на базе VLIW от nVidia, которые предшествовали Tegra K1. [48]

Nvidia распространяет фирменные драйверы устройств для Tegra через OEM-производителей и как часть своего комплекта разработки Linux для Tegra (ранее L4T). [49] Nvidia и ее партнер Avionic Design работали над представлением Grate (бесплатных и открытых драйверов для Tegra) в качестве апстрима основного ядра Linux в апреле 2012 года. [50] [51] Соучредитель и генеральный директор компании изложил дорожную карту процессора Tegra с Ubuntu Unity на конференции по технологиям графических процессоров 2013 года . [52]

Драйвер Unified Memory от Nvidia (nvidia-uvm.ko), реализующий управление памятью для графических процессоров Pascal и Volta на Linux, лицензирован MIT. Исходный код доступен в загрузках драйверов Nvidia Linux на системах, которые поддерживают nvidia-uvm.ko.

В мае 2022 года Nvidia объявила о новой инициативе и политике по открытию исходного кода своих загружаемых модулей ядра GPU с двойной лицензией GPL / MIT , но только новые модели в альфа -качестве. Но заявила: «Эти изменения касаются модулей ядра, в то время как компоненты пользовательского режима остаются нетронутыми. Пользовательский режим остается с закрытым исходным кодом и публикуется с предварительно собранными двоичными файлами в драйвере и наборе инструментов CUDA». [53]

Интел

Intel имеет историю создания (или ввода в эксплуатацию) драйверов с открытым исходным кодом для своих графических чипов, за исключением чипов на базе PowerVR . [54] Их драйвер 2D X.Org называется xf86-video-intel. Драйвер настройки режима ядра в ядре Linux не использует видео BIOS для переключения видеорежимов ; поскольку некоторые BIOS имеют ограниченный набор режимов, это обеспечивает более надежный доступ к тем, которые поддерживаются видеоадаптерами Intel.

В 2011 году компания работала над оптимизацией своих бесплатных драйверов Linux для достижения производительности, приближающейся к производительности их аналогов для Windows , особенно на Sandy Bridge и новом оборудовании, где оптимизация производительности позволила драйверу Intel превзойти свои фирменные драйверы Windows в определенных задачах. [55] [56] [57] Некоторые улучшения производительности могут также принести пользу пользователям старого оборудования. [58]

Поддержка LLC от Intel (кэш последнего уровня, кэш L4, Crystalwell и Iris Pro) была добавлена ​​в ядро ​​Linux 3.12. [59] [60] В 2013 году в компании работало от 20 до 30 штатных разработчиков графики для Linux. [61]

Матрокс

Matrox разрабатывает и производит Matrox Mystique , Parhelia , G200 , G400 и G550 . Хотя компания предоставляет бесплатные и открытые драйверы для своих чипсетов, которые старше G550; чипсеты новее G550 поддерживаются драйвером с закрытым исходным кодом.

Графика S3

S3 Graphics разрабатывает S3 Trio , ViRGE , Savage и Chrome , поддерживаемые OpenChrome. [62]

Арм ООО

Arm Ltd — это полупроводниковая компания без собственных производственных мощностей , которая лицензирует ядра интеллектуальной собственности полупроводников . Хотя они известны лицензированием набора инструкций ARM и процессоров на его основе, они также разрабатывают и лицензируют серию графических процессоров Mali , а в последнее время — графические процессоры Imortalis, поддерживающие трассировку лучей. 21 января 2012 года Phoronix сообщила, что Люк Верхаген руководил попыткой обратного проектирования, направленной на серию графических процессоров Arm Mali (в частности, версии Mali-200 и Mali-400). Проект обратного проектирования, известный как Lima, был представлен на FOSDEM 4 февраля 2012 года. [63] [64] 2 февраля 2013 года Верхаген продемонстрировал Quake III Arena в режиме timedemo, работающем поверх драйвера Lima. [65] В мае 2018 года разработчик Lima опубликовал драйвер для включения в ядро ​​Linux. [66] По состоянию на май 2019 года драйвер Lima является частью основного ядра Linux. [67]

Panfrost — это попытка реверс-инжиниринга драйвера для графических процессоров Mali Txxx (Midgard) и Gxx (Bifrost). Введение в Panfrost было представлено на конференции разработчиков X.Org 2018. По состоянию на май 2019 года драйвер Panfrost является частью основного ядра Linux. [68]

ARM не заявила о намерении предоставлять поддержку для своего графического ускорительного оборудования, лицензированного по свободной и открытой лицензии. Тем не менее, сотрудники ARM отправили исправления для ядра Linux для поддержки своего контроллера дисплея ARM HDLCD и блоков Mali DP500, DP550 и DP650 SIP в декабре 2015 года и апреле 2016 года. [69] [70]

Технологии воображения

Imagination Technologies — это компания, занимающаяся полупроводниковыми технологиями без собственных производственных мощностей, которая разрабатывает и лицензирует ядра интеллектуальной собственности полупроводников , среди которых — графические процессоры PowerVR . Intel выпустила ряд графических процессоров на основе PowerVR . Графические процессоры PowerVR широко используются в мобильных SoC . В связи с его широким использованием во встраиваемых устройствах Free Software Foundation включил обратную разработку драйвера PowerVR в свой список высокоприоритетных проектов. [71] По состоянию на март 2022 года Imagination предоставила драйвер FOSS для своего PowerVR GX6250 на базе архитектуры Rogue с 2014 года и своих более поздних графических процессоров AXE-1-16M и BXS-4-64 на базе архитектуры A-Series. [72]

Виванте

Vivante Corporation — это компания, занимающаяся полупроводниковыми технологиями без собственных производственных мощностей, которая лицензирует интеллектуальную собственность полупроводниковых ядер и разрабатывает серию графических процессоров GCxxxx. Запатентованный драйвер Vivante для Linux с закрытым исходным кодом состоит из частей ядра и пользовательского пространства. Хотя компонент ядра имеет открытый исходный код ( GPL ), компоненты пользовательского пространства, состоящие из реализаций GLES(2) и библиотеки HAL, таковыми не являются; они содержат большую часть логики драйвера.

Wladimir J. van der Laan нашел и задокументировал биты состояния, поток команд и шейдер ISA, изучив, как работают BLOB-объекты, исследуя и манипулируя дампами потока команд. Драйвер Etnaviv Gallium3D пишется на основе этой документации. Работа Van der Laan была вдохновлена ​​драйвером Lima, и проект создал функциональный, но неоптимизированный драйвер Gallium3D LLVM. Драйвер Etnaviv показал себя лучше, чем собственный код Vivante в некоторых тестах производительности, и он поддерживает серии Vivante GC400, GC800, GC1000, GC2000, GC3000 и GC7000. [73] В январе 2017 года Etnaviv был добавлен в Mesa с поддержкой OpenGL ES 2.0 и Desktop OpenGL 2.1. [74]

Qualcomm

Qualcomm разрабатывает серию мобильных графических процессоров Adreno (ранее ATI Imageon ) и включает ее в свою серию мобильных SoC Snapdragon . Phoronix и Slashdot сообщили в 2012 году, что Роб Кларк, вдохновленный драйвером Lima, работал над реверс-инжинирингом драйверов для серии графических процессоров Adreno. [75] [76] В указанном сообщении в блоге Кларк написал, что он занимался проектом в свободное время и что платформа Qualcomm была его единственной жизнеспособной целью для работы над открытой 3D-графикой. Его работодатели ( Texas Instruments и Linaro ) были связаны с ядрами Imagination PowerVR и ARM Mali , которые были бы его основными целями; у него были рабочие потоки команд для поддержки 2D, а 3D-команды, по-видимому, имели те же характеристики. [77] Код драйвера был опубликован на Gitorious "freedreno", [78] и был перемещен в Mesa. [79] [80] В 2012 году был завершен рабочий ассемблер шейдеров; [81] были разработаны демонстрационные версии для текстурного отображения [82] и затенения по Фонгу , [83] с использованием обратного проектирования компилятора шейдеров. Кларк продемонстрировал Freedreno, работающий с композитингом рабочего стола, медиаплеером XBMC и Quake III Arena на FOSDEM 2 февраля 2013 года. [84]

В августе 2013 года компонент ядра freedreno (драйвер MSM) был принят в основную ветку и доступен в ядре Linux 3.12 и более поздних версиях. [85] Драйвер DDX получил поддержку управляемых сервером файловых дескрипторов , требующих X.Org Server версии 1.16 и выше в июле 2014 года. [86] В январе 2016 года драйвер в стиле Mesa Gallium3D получил поддержку Adreno 430; [87] в ноябре того же года драйвер добавил поддержку серии Adreno 500. [88] Freedreno можно использовать на таких устройствах, как 96Boards Dragonboard 410c и Nexus 7 (2013) в традиционных дистрибутивах Linux (таких как Debian и Fedora ) и на Android .

Бродком

Диаграмма программного обеспечения
Драйвер Mesa для VideoCore4, VC4, был написан с нуля Эриком Анхольтом из Broadcom. [89]

Broadcom разрабатывает и проектирует серию графических процессоров VideoCore как часть своих SoC . Поскольку она используется в Raspberry Pi , возник значительный интерес к драйверу FOSS для VideoCore. [90] Raspberry Pi Foundation в сотрудничестве с Broadcom объявили 24 октября 2012 года, что они открыли исходный код «всего кода ARM (CPU), который управляет GPU». [ требуется ссылка ] Однако это объявление было вводящим в заблуждение; по словам автора реверс-инжиниринга драйвера Lima, новые компоненты с открытым исходным кодом позволяли только передавать сообщения между CPU ARM и VideoCore, но предлагали мало информации о Videocore и мало дополнительной программируемости. [91] Графический процессор Videocore работает под управлением RTOS , которая обрабатывает обработку; ускорение видео выполняется с помощью прошивки RTOS, закодированной для его фирменного графического процессора, и прошивка не была открыта в тот день. [92] Поскольку не было ни набора инструментов, нацеленных на фирменный GPU, ни документированного набора инструкций , то не было никаких преимуществ, если бы исходный код прошивки стал доступен. Проект Videocoreiv [93] пытался документировать графические процессоры VideoCore.

28 февраля 2014 года (вторая годовщина Raspberry Pi) компании Broadcom и Raspberry Pi Foundation объявили о выпуске полной документации для графического ядра VideoCore IV и полного исходного кода графического стека в соответствии с лицензией BSD из 3 пунктов . [94] [95] Код 3D-графики со свободной лицензией был передан Mesa 29 августа 2014 года [96] и впервые появился в версии Mesa 10.3.

Другие поставщики

Хотя Silicon Integrated Systems и VIA Technologies выразили ограниченный интерес к драйверам с открытым исходным кодом, обе компании выпустили исходный код, который был интегрирован в X.Org разработчиками FOSS. [38] В июле 2008 года VIA открыла документацию по своим продуктам, чтобы улучшить свой имидж в сообществах Linux и open-source. [97] Компания не смогла работать с сообществом open-source, чтобы предоставить документацию и работающий драйвер DRM , оставив ожидания поддержки Linux невыполненными. [98] 6 января 2011 года было объявлено, что VIA больше не заинтересована в поддержке инициатив свободной графики. [99]

DisplayLink анонсировала проект с открытым исходным кодом Libdlo [100] , целью которого является обеспечение поддержки их графической технологии USB для Linux и других платформ. Его код доступен по лицензии LGPL [101], но он не был интегрирован в драйвер X.Org . Поддержка графики DisplayLink доступна через драйвер ядра udlfb (с fbdev) в основной ветке и драйвер udl/drm, который в марте 2012 года был доступен только в дереве drm-next.

Поставщики, не связанные с оборудованием, также могут помогать инициативам по бесплатной графике. В Red Hat есть два штатных сотрудника (Дэвид Эйрли и Жером Глисс), работающих над программным обеспечением Radeon, [102] а Fedora Project спонсирует мероприятие Fedora Graphics Test Week перед запуском своих новых версий дистрибутивов Linux для тестирования бесплатных графических драйверов. [103] Другие компании, которые предоставляли разработку или поддержку, включают Novell и VMware .

Открытые аппаратные проекты

См. подпись
Собранный проект графической платы VGA
Другая печатная плата
Прототип проекта Open Graphics

Проект VGA направлен на создание малобюджетной видеокарты с открытым исходным кодом, совместимой с VGA . [104] Проект Open Graphics направлен на создание графического процессора с открытым аппаратным обеспечением. Устройство Open Graphics Device v1 имеет два выхода DVI-I и 100-контактный разъем IDC. В сентябре 2010 года первые 25 плат OGD1 были доступны для подачи заявок на гранты и покупки. [105] Система Milkymist на чипе , ориентированная на встроенную графику вместо настольных компьютеров, поддерживает выход VGA, ограниченный вершинный шейдер и блок 2D-текстурирования. [106]

Nyuzi, [107] экспериментальный процессор GPGPU, включает в себя синтезируемый аппаратный дизайн, написанный на System Verilog , эмулятор набора инструкций, компилятор C-C++ на основе LLVM , библиотеки программного обеспечения, а также тесты и исследования параллельного программного и аппаратного обеспечения. Он может работать на плате Terasic DE2-115 с программируемой вентильной матрицей . [108] [109]

Если проект использует ПЛИС, он обычно имеет частично (или полностью) закрытый исходный код инструментальной цепочки. Однако в настоящее время доступно несколько открытых исходных кодовых цепочек для ПЛИС на базе Lattice (в частности, для плат iCE40 и ECP5), которые используют Project IceStorm [110] и Trellis [111] соответственно. Также ведутся более масштабные текущие усилия по созданию «GCC ПЛИС» под названием SymbiFlow [112] , который включает вышеупомянутые инструментальные цепочки ПЛИС, а также раннюю стадию открытого исходного кода инструментальной цепочки для ПЛИС на базе Xilinx.

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

Ссылки

  1. ^ Тео де Раадт (3 декабря 2006 г.). «Открытая документация по оборудованию». Слайды презентации с OpenCON 2006 . Проверено 1 февраля 2007 г.
  2. ^ "Что означает "двоичный" в драйвере устройства?" . Получено 14 ноября 2017 г. .
  3. ^ "3.9: "Blob!"". OpenBSD . Получено 2007-02-12 .
  4. ^ «Linux — Как Rapid7 Advisory R7-0025 влияет на драйвер NVIDIA Unix?».
  5. ^ "a/lt-двоичный".
  6. ^ Кроа-Хартман, Грег. «Мифы, ложь и правда о ядре Linux». Linux kernel monkey log.
  7. ^ Питер Гутман (2006-12-26). "Анализ стоимости защиты контента Windows Vista" . Получено 2007-01-28 . {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  8. Linux Weekly News, 14 августа 2006 г.: X.org, дистрибьюторы и фирменные модули
  9. ^ Грег Кроа-Хартман (2006). «Мифы, ложь и правда о ядре Linux». Linux Symposium .
  10. ^ "The Linux Kernel Driver Interface". Архивировано из оригинала 2013-11-04 . Получено 2014-03-04 .
  11. ^ "SamsungGalaxyBackdoor". 2014-02-04.
  12. ^ «Android приближается к 80% доли рынка в мировых поставках смартфонов, в то время как доли iOS и BlackBerry падают, по данным IDC». 7 августа 2013 г.
  13. ^ «Атомарный каркас отображения».
  14. ^ "Direct3D 9 state tracker". 16 июля 2013 г. Архивировано из оригинала 20 июля 2013 г. Получено 15 ноября 2017 г.
  15. ^ "Index of /doc/Documentation/fb/" . Получено 15 ноября 2017 г. .
  16. ^ Подробная информация о пакете Debian firmware-linux-nonfree в стабильной версии Debian.org
  17. ^ "Radeon Feature" . Получено 15 ноября 2017 г. .
  18. ^ ab "Первоначальная поддержка VCE в ядре Linux и драйвере Mesa". 4 февраля 2014 г.
  19. ^ "drm-next-3.15 18 февраля". 18 февраля 2014 г.
  20. ^ "drm-next-3.15 Mar 04". 4 марта 2014 г.
  21. ^ "Руководства разработчиков AMD". Архивировано из оригинала 2013-07-16.
  22. ^ «Документация предоставлена ​​AMD».
  23. ^ "Список документации AMD 3D". Архивировано из оригинала 2013-10-07.
  24. ^ "AMD раскроет графические характеристики". LWN.net . 2007-09-05 . Получено 2014-07-15 .
  25. ^ "AMD: Характеристики графических процессоров без NDA!". 2007-09-10 . Получено 2014-07-15 .
  26. ^ Дэвид Эйрли (2007-09-13). "AMD hand me specs on a CD". Архивировано из оригинала 2012-10-22 . Получено 2014-07-15 .
  27. ^ "AMD изучает новую стратегию драйверов Linux". 2014-03-22 . Получено 2014-03-23 ​​.
  28. ^ "Первоначальный выпуск драйвера AMDGPU". 2015-04-20 . Получено 2016-04-26 .
  29. ^ «AMD движется вперед с унифицированной стратегией драйверов Linux, новым драйвером ядра». Phoronix .
  30. ^ "Документация по драйверу AMDGPU". Freedesktop.org .
  31. ^ "AMD представляет первоначальную поддержку драйверов AMDGPU для графических процессоров GCN 1.0 / Southern Islands". Phoronix .
  32. ^ "libdrm 2.4.63". 2015-08-14.
  33. ^ "Поддержка EGL на 32-битных платформах". 2013-10-04 . Получено 2014-07-15 .
  34. ^ "Список файлов lib32-nvidia-utils 340.24-1". 2014-07-15.
  35. ^ "Страница драйвера X.org nv". 2013-05-20.
  36. ^ "Patch by Dirk Hohndel". 18.11.1998. Архивировано из оригинала 01.02.2014 . Получено 15.07.2014 . ... против такого запутанного кода. Мы не считаем это свободным программным обеспечением в соответствии с нашими стандартами
  37. ^ "Nouveau – Сообщество и прошлые, текущие и будущие разработки" (PDF) . 2011-09-13 . Получено 2014-07-15 .
  38. ^ Дэвид М. Эйрли (2006-07-19). "Open Source Graphic Drivers—They Don't Kill Kittens" (PDF) . Труды Linux Symposium Volume One . Оттава , Онтарио, Канада. Архивировано из оригинала (PDF) 2007-02-08 . Получено 2007-01-28 .
  39. ^ "Nvidia прекращает поддержку "NV"". Phoronix . 2010-03-26.
  40. ^ "Ответ Nvidia на недавнюю работу Nouveau". Phoronix . 2009-12-14.
  41. ^ "Nvidia предлагает опубликовать публичную документацию по некоторым аспектам своих графических процессоров". 2013-09-23 . Получено 2013-09-24 .
  42. ^ "Nouveau: Ускоренный драйвер с открытым исходным кодом для карт nVidia". Архивировано из оригинала 2014-07-23 . Получено 2006-08-10 .
  43. ^ "Водитель Nouveau заканчивает постановку". LWN.net . 2012-03-23.
  44. ^ «Инженерные названия для Nvidia».
  45. ^ "drm/nouveau: начальная поддержка GK20A (Tegra K1)". 2014-01-31.
  46. ^ "Codethink запускает NVIDIA Jetson TK1 с ​​Linux 3.15, Wayland". Phoronix . 2014-06-12.
  47. ^ "Nouveau Driver Feature Matrix" . Получено 16 ноября 2017 г. .
  48. ^ "Tegra-re". GitHub . Получено 16 ноября 2017 г.
  49. ^ "Архив Linux для Tegra". 30 января 2014 г. Получено 16 ноября 2017 г.
  50. ^ Mayo, Jon (2012-04-20). "[RFC 0/4] Добавить поддержку NVIDIA Tegra DRM". dri-devel (список рассылки) . Получено 2012-08-21 .
  51. ^ Ларабель, Майкл (2012-04-11). "Драйвер NVIDIA Tegra 2 DRM/KMS Tips Up". Phoronix Media . Получено 2012-08-21 .
  52. ^ "GTC 2013: NVIDIA's Tegra Roadmap (6 из 11)". YouTube. Архивировано из оригинала 2021-12-21 . Получено 2013-07-10 .
  53. ^ "NVIDIA выпускает модули ядра графического процессора с открытым исходным кодом". 2022-05-19 . Получено 2022-06-07 .
  54. ^ Обзор производителей графических карт и того, насколько хорошо они работают с Ubuntu Ubuntu Gamer, 10 января 2011 г. (статья Люка Бенстеда); (копия статьи)
  55. ^ "Больше производительности от Intel Linux SNB". Phoronix . 2011-03-22 . Получено 2011-03-23 ​​.
  56. ^ "Производительность Intel Sandy Bridge снова растет". Phoronix . 2011-03-31 . Получено 2011-03-31 .
  57. ^ "Драйвер Intel SNB Linux может обойти драйвер Windows". Phoronix . 2011-05-23 . Получено 2011-05-23 .
  58. ^ "Исторический взгляд на производительность графики Intel Ironlake". Phoronix . 2011-05-25 . Получено 2011-05-25 .
  59. ^ "drm/i915: Использовать eLLC/LLC по умолчанию, если доступно".
  60. ^ "drm/i915: Используйте кэширование со сквозной записью для плоскости отображения на Iris".
  61. ^ «В Intel работают 20–30 штатных разработчиков графики для Linux». 2013-02-02.
  62. ^ "OpenChrome" . Получено 16 ноября 2017 г.
  63. ^ phoronix (6 февраля 2012 г.). "Phoronix.com - FOSDEM 2012 - Open-Source ARM Mali". Архивировано из оригинала 2021-12-21 – через YouTube.
  64. Phoronix, 21 января 2012 г.: Драйвер Mali GPU с открытым исходным кодом, созданный методом обратного проектирования
  65. ^ "Quake 3 Arena timedemo на драйвере lima!". Архивировано из оригинала 2013-02-09.
  66. ^ "Драйвер Lima DRM [LWN.net]". lwn.net .
  67. ^ drm/lima: драйвер для графических процессоров ARM Mali4xx}
  68. ^ drm/panfrost: Добавить начальный драйвер panfrost
  69. ^ "drm: Добавить поддержку для контроллера дисплея ARM HDLCD". Список рассылки ядра Linux . 2015-12-11.
  70. ^ "Начальная поддержка ARM Mali Display Controller". Список рассылки по ядру Linux . 2016-04-01.
  71. Free Software Foundation, 25 апреля 2005 г.: Высокоприоритетные проекты свободного программного обеспечения
  72. ^ "Imagination Tech публикует драйвер PowerVR Vulkan с открытым исходным кодом для Mesa". www.phoronix.com . Получено 19 апреля 2022 г.
  73. ^ "laanwj/etna_viv". GitHub .
  74. ^ «etnaviv: драйвер Gallium для графических процессоров Vivante» .
  75. Майкл Ларабель (14 апреля 2012 г.). «Графический драйвер с открытым исходным кодом для Snapdragon». Phoronix . Получено 15 апреля 2012 г.
  76. Soulskill (14 апреля 2012 г.). "Open-Source Qualcomm GPU Driver Published". Slashdot . Получено 15 апреля 2012 г. .
  77. Роб Кларк (14 апреля 2012 г.). «Отпор бинарным кляксам!». Линаро . Получено 15 апреля 2012 г.
  78. ^ Freedreno, 15 апреля 2012 г. Архивировано 24 октября 2012 г. на Wayback Machine
  79. ^ «Mesa/Gallium3D получает свой первый драйвер ARM SoC GPU - Phoronix».
  80. ^ "Mesa (master): r600g: добавить идентификаторы PCI Richland APU". 15 марта 2013 г.
  81. Роб Кларк (29 июля 2012 г.). "Обновление freedreno: первый рендеринг шейдерного ассемблера!" . Получено 16 августа 2012 г.
  82. Роб Кларк (5 августа 2012 г.). "текстурированный куб (полный экран!)" . Получено 16 августа 2012 г.
  83. Роб Кларк (15 августа 2012 г.). "Open Source lolscat!" . Получено 16 августа 2012 г.
  84. ^ "Открытые драйверы ARM GPU – Freedreno". FOSDEM . 2013-02-02 . Получено 2014-07-15 .
  85. ^ "Объединить драйвер MSM от Роба Кларка". kernel.org . 2013-08-28 . Получено 2014-06-04 .
  86. ^ "xf86-video-freedreno 1.2.0". freedesktop.org . 2014-07-14.
  87. ^ "Добавить поддержку Adreno 430" . Получено 15 ноября 2017 г. .
  88. ^ "Index Mesa-Mesa" . Получено 15 ноября 2017 г. .
  89. ^ Анхольт, Эрик (2014-06-17). "Новая работа в Broadcom". Архивировано из оригинала 2015-04-07.
  90. ^ «Phoronix на графическом процессоре Raspberry Pi».
  91. ^ "Открытый исходный код ARM userland - Raspberry Pi". 24 октября 2012 г.
  92. ^ "Open Source ARM userland - Raspberry Pi". 24 октября 2012 г. Архивировано из оригинала 30 октября 2012 г. Получено 1 ноября 2012 г.
  93. ^ "hermanhermitage/videocoreiv". GitHub .
  94. ^ "Raspberry Pi отмечает свой второй день рождения планом создания графического драйвера с открытым исходным кодом". 28 февраля 2014 г.
  95. ^ Аптон, Эбен (28 февраля 2014 г.). «Подарок на день рождения от Broadcom — Raspberry Pi». Raspberry Pi Foundation . Получено 8 июля 2019 г.
  96. ^ "vc4: Первоначальный импорт драйвера скелета". Библиотека 3D-графики Mesa. 2014-08-09.
  97. ^ Майкл Ларабель (2008-07-26). "VIA публикует три руководства по программированию". Phoronix . Получено 2008-08-04 .
  98. ^ Майкл Ларабель (21.11.2009). «Список дел VIA в Linux... Может, стоит подождать 2011 года?». Phoronix . Получено 30.12.2009 .
  99. ^ Открытый графический драйвер Linux от VIA был дефенестрирован Phoronix , 06 января 2011 г. (статья Майкла Ларабеля )
  100. ^ "Libdlo" . Получено 16 ноября 2017 г.
  101. ^ "DisplayLink выпускает исходный код Linux для своих графических процессоров USB" (пресс-релиз). DisplayLink. 2009-05-15 . Получено 2009-05-15 .
  102. AMD нанимает еще одного разработчика драйверов с открытым исходным кодом Phoronix , 11 декабря 2010 г. (статья Майкла Ларабеля )
  103. It's Fedora Graphics Test Week Phoronix , 22 февраля 2011 г. (Статья Майкла Ларабеля )
  104. ^ «Домашняя страница Project VGA — малобюджетной видеокарты с открытым исходным кодом, совместимой с VGA».090503 wacco.mveas.com
  105. ^ "Linux Fund: OGD1". Open Graphics Project . 2010-09-23 . Получено 2011-11-04 .
  106. ^ Бурдодюк, Себастьен (июнь 2010 г.). "Архитектура SoC, ориентированная на производительность, для синтеза видео" (PDF) . Архивировано из оригинала (PDF) 2011-07-27 . Получено 2010-11-05 .
  107. ^ "Nyuzi — экспериментальный процессор GPGPU". GitHub . Июнь 2021 г.
  108. ^ "Тестовая среда SOC". GitHub .
  109. ^ "Работает на плате Terasic DE2-115 FPGA". GitHub .
  110. ^ "Домашняя страница проекта IceStorm". 21 января 2022 г.
  111. ^ "Репозиторий проекта Trellis". GitHub . 30 мая 2021 г.
  112. ^ "Домашняя страница SymbiFlow".

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