Драйвер бесплатно и с открытым исходным кодом графического устройства представляет собой программный стек , который управляет компьютерной графика аппаратных средства и поддерживает графический рендеринг интерфейсов прикладного программирования (API) и выпущен под свободной и открытым исходным кодом программного обеспечения лицензии. Драйверы графических устройств написаны для конкретного оборудования для работы в рамках определенного ядра операционной системы и для поддержки ряда API-интерфейсов, используемых приложениями для доступа к графическому оборудованию. Они также могут управлять выводом на дисплей, если драйвер дисплея является частью графического оборудования. Большинство бесплатных драйверов графических устройств с открытым исходным кодом разработаны компанией Mesa.проект. Драйвер состоит из компилятора , API рендеринга и программного обеспечения, которое управляет доступом к графическому оборудованию.
Драйверы без свободно (и легально) доступного исходного кода обычно называются бинарными драйверами . Двоичные драйверы, используемые в контексте операционных систем, которые постоянно развиваются и изменяются (например, Linux), создают проблемы для конечных пользователей и специалистов по сопровождению пакетов . Эти проблемы, влияющие на стабильность, безопасность и производительность системы, являются основной причиной независимой разработки бесплатных драйверов с открытым исходным кодом. Когда техническая документация недоступна, понимание лежащего в основе оборудования часто достигается с помощью обратного проектирования чистой комнаты . Исходя из этого понимания, драйверы устройств могут быть написаны и законно опубликованы под любой лицензией на программное обеспечение .
В редких случаях исходный код драйвера производителя доступен в Интернете без бесплатной лицензии . Это означает, что код можно изучать и изменять для личного использования, но измененный (и обычно исходный) исходный код не может свободно распространяться. Решениями ошибок в драйвере нельзя легко поделиться в виде модифицированных версий драйвера. Поэтому полезность таких драйверов значительно снижена по сравнению с бесплатными драйверами и драйверами с открытым исходным кодом.
Проблемы с проприетарными драйверами
Взгляд разработчика программного обеспечения
Есть возражения против бинарных драйверов, основанные на соображениях авторского права, безопасности, надежности и разработки. В рамках более широкой кампании против блоб , OpenBSD ведущий разработчик Тео де Raadt сказал , что с двоичным драйвером нет «никакого способа , чтобы исправить это , когда он ломается (и он сломается)»; когда производитель объявляет, что продукт, использующий бинарные драйверы, с истекшим сроком службы , он фактически «сломается навсегда». [1] В проекте также заявлено, что бинарные драйверы [2] «скрывают ошибки и обходные пути для них» [3] , наблюдение, которое было отчасти подтверждено недостатками, обнаруженными в бинарных драйверах (включая уязвимую ошибку в 3D-драйверах Nvidia, обнаруженную Октябрь 2006 г., Rapid7 ). Предполагается, что ошибка существует с 2004 года; Nvidia отрицала это, утверждая, что о проблеме им сообщили только в июле 2006 года, а ошибка 2004 года была ошибкой в X.Org (а не в драйвере Nvidia). [4]
Двоичные драйверы часто не работают с текущими версиями программного обеспечения с открытым исходным кодом и почти никогда не поддерживают моментальные снимки разработки программного обеспечения с открытым исходным кодом; Обычно разработчик не может напрямую использовать проприетарные драйверы Nvidia или ATI с моментальным снимком разработки X-сервера или моментальным снимком разработки ядра Linux. Такие функции, как настройка режима ядра, не могут быть добавлены в бинарные драйверы кем-либо, кроме поставщиков, что предотвращает их включение, если поставщик не имеет достаточных возможностей или заинтересованности.
В сообществе разработчиков ядра Linux Линус Торвальдс сделал резкие заявления по вопросу о модулях, предназначенных только для двоичных файлов: «Я отказываюсь даже думать о том, чтобы связать свои руки с каким-либо модулем, предназначенным только для двоичных файлов ... Я хочу, чтобы люди знали об этом, когда они используют двоичные модули. -только модули, это их проблема ». [5] Другой разработчик ядра, Грег Кроа-Хартман , сказал, что модуль ядра, предназначенный только для двоичных файлов, не соответствует лицензии ядра ( Стандартная общественная лицензия GNU ); он «просто нарушает GPL из-за забавных вещей, таких как производные работы, ссылки и другие вещи». [6] Писатель и ученый-компьютерщик Питер Гутманн выразил обеспокоенность тем, что схема управления цифровыми правами в операционной системе Microsoft Windows Vista может ограничить доступность документации, необходимой для написания открытых драйверов, поскольку она «требует, чтобы рабочие детали устройства сохранялись. конфиденциально ". [7]
В случае бинарных драйверов есть возражения из-за философии бесплатного программного обеспечения, качества программного обеспечения и соображений безопасности . [8] В 2006 году Грег Кроа-Хартман пришел к выводу, что:
«Модули ядра Linux с закрытым исходным кодом являются незаконными. Вот и все, это очень просто. Я имел несчастье разговаривать на эту тему со многими разными юристами в области интеллектуальной собственности за эти годы, и все, с кем я разговаривал, все согласны что сегодня никто не может создать модуль ядра Linux с закрытым исходным кодом. Это просто нарушает GPL из-за забавных вещей, таких как производные работы и ссылки ». [9]
Ядро Linux никогда не поддерживало стабильный бинарный интерфейс приложения внутри ядра . [10] Также есть опасения, что проприетарные драйверы могут содержать бэкдоры , подобные тому, который можно найти в драйверах модемов Samsung Galaxy -series. [11]
Взгляд разработчика оборудования
Когда приложения, такие как движок трехмерных игр или программное обеспечение для трехмерной компьютерной графики, передают вычисления от центрального процессора к графическому процессору, они обычно используют специальный API, такой как OpenGL или Direct3D, и не обращаются напрямую к оборудованию. Поскольку все преобразования (из вызовов API в коды операций графического процессора ) выполняются драйвером устройства, он содержит специальные знания и является объектом оптимизации. Из-за истории жесткости разработки проприетарных драйверов в последнее время наблюдается резкий рост числа поддерживаемых сообществом драйверов устройств для настольных и мобильных графических процессоров. Организации свободного и открытого оборудования, такие как FOSSi, LowRISC и другие, также выиграют от разработки стандарта открытого графического оборудования. Это затем предоставит производителям компьютеров, любителям и т.п. полную бесплатную платформу для разработки вычислительного оборудования и связанных устройств.
На рынке настольных компьютеров долгое время доминировало оборудование для ПК с набором инструкций x86 / x86-64 и графическими процессорами, доступными для ПК. С тремя основными конкурентами (Nvidia, AMD и Intel). Основным конкурирующим фактором была цена оборудования и сырая производительность в компьютерных 3D-играх, на которую сильно влияет эффективная трансляция вызовов API в коды операций графического процессора. Драйвер дисплея и видеодекодер являются неотъемлемыми частями видеокарты: аппаратное обеспечение, предназначенное для помощи в вычислениях, необходимых для декодирования видеопотоков. По мере того, как рынок оборудования для ПК сокращается, кажется маловероятным, что новые конкуренты выйдут на этот рынок, и неясно, сколько больше знаний может получить одна компания, просмотрев исходный код драйверов других компаний.
В мобильном секторе ситуация иная. Функциональные блоки ( драйвер дисплея интегральной схемы для конкретного приложения , 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, между Android hwcomposer HAL и драйвером ядра. ADF существенно пересекается со структурой DRM - KMS . ADF не был принят в основную линию, но другой набор решений, решающих те же проблемы (известный как настройка атомарного режима ), находится в стадии разработки. Такие проекты, как libhybris, используют драйверы устройств Android для работы на платформах Linux, отличных от Android.
Сравнение производительности
Phoronix , который сравнивает бесплатные драйверы, является источником для тестирования в реальных условиях:
- 19 марта 2011 [15]
- 31 марта 2013 [16]
- Сравнение FOSS и проприетарных драйверов от 29 апреля 2013 г. [17]
- 27 октября 2013 г. Сравнение проприетарных драйверов для Windows 8.1 и Linux [18]
- Сравнение драйверов FOSS для Linux от 25 января 2014 г. [19]
- Сравнение проприетарных драйверов для Linux от 27 января 2014 г. [20]
- Сравнение Ubuntu от 19 марта 2014 года с бесплатным драйвером графического устройства с открытым исходным кодом, распространяемым как часть Mesa 3D , который превосходит Mac OS X 10.9.2 при воспроизведении Xonotic на основе OpenGL на MacBook Air 2013 года . [21]
- Сравнение в январе 2017 года показало разницу в мощности между драйверами Mesa Nouveau и NVidia и Kepler и Maxwell. Повторная синхронизация необходима Максвеллу в «Модерне», чтобы повысить уровень до Кеплера. Отрыв от Mesa составляет от 30 до 50% в базовой эффективности драйвера по сравнению с Nvidia во всех чипах. [22]
- Сравнение, проведенное в феврале 2017 года, показало, что Mesa 17.1dev был равен или лучше драйвера AMD GPU 16.60 в OpenGL и на 20-30 процентов ниже в Vulkan . [23]
- Сравнение, проведенное в марте 2017 года, показало улучшения в Mesa для RadeonSI между версиями 11.1 и 17.1. [24]
- Июнь 2017 г. Сравнение программного обеспечения Windows 10 Radeon и Ubuntu 17.04 + Linux 4.12 + Mesa 17.2-dev -> Результат mesa radeonsi на том же уровне [25]
- Октябрь 2017 г. Сравнение RadeonSI / RADV Mesa 17.3 + AMDGPU DC с фирменной NVIDIA 387.12 Linux Gaming Performance -> Результат: Nvidia уверенно лидирует [26]
- 2018-02: Сравнение Mesa 12–18 с AMD R580 и R9 Fury для тестов OpenGL и Vulkan [27]
- 2018-06: Сравнение Mesa 18.2 и Nvidia Driver 396 с картами Nvidia GeForce 680 и выше [28]
- 2018-07: Сравнение Mesa RadeonSI 18.0, 18.1, 18.2 и RadV с картами Radeon RX [29]
- 2018-10: Сравнение AMD Closed Driver 18.40, AMDVLK и Mesa RadeonSI 18.2, 18.3 [30]
- 2018-11: Сравнение 25 карт AMD и Nvidia с Mesa 19.0dev и драйвером NVIDIA 415 [31]
- 2019-01: Сравнение Linux 5.0 + Mesa 19.0dev + AMD RX Cards и NVIDIA GeForce Driver 415 с картами Nvidia [32]
- 2019-01: Сравнение Mesa 18.2, 18.3, 19.0dev RadeonSI / RADV с картами AMD RX [33]
- 2019-05: Сравнение Mesa 19.2 AMD Polaris, Vega с Nvidia [34]
- 2019-12: Сравнение Mesa 18.2.8 до 20.0dev для RadeonSI с Radeon RX 580 и RX Vega 64 [35]
Журналы по видеоиграм редко публикуют отчеты о тестировании производительности Linux. Тесты на Phoronix ограничены по объему, в основном это тестирование игр, доступных в Linux и поддерживающих автоматический тест. [36]
Архитектура программного обеспечения
Бесплатные драйверы с открытым исходным кодом в основном разрабатываются для Linux разработчиками ядра Linux, сторонними энтузиастами программирования и сотрудниками таких компаний, как Advanced Micro Devices . Каждый драйвер состоит из пяти частей:
- DRM компонента ядра Linux
- Драйвер KMS компонента ядра Linux ( драйвер контроллера дисплея )
- Компонент пользовательского пространства libDRM (библиотека-оболочка для системных вызовов DRM, которая должна использоваться только Mesa 3D)
- Меса 3D пространство пользователя компоненты. Этот компонент зависит от оборудования; он выполняется на ЦП и транслирует команды OpenGL, например, в машинный код для графического процессора. Поскольку драйвер устройства разделен, возможна сортировка . Mesa 3D - единственная бесплатная реализация OpenGL , OpenGL ES , OpenVG , GLX , EGL и OpenCL с открытым исходным кодом . В июле 2014 года большинство компонентов соответствовали спецификациям Gallium3D . Полнофункциональный трекер состояния для Direct3D версии 9 написан на C , а неподдерживаемый трекер для Direct3D версий 10 и 11 написан на C ++ . [37] Wine имеет Direct3D версии 9. Другой компонент Wine переводит вызовы Direct3D в вызовы OpenGL, работая с OpenGL.
- Device Dependent X (DDX), еще один драйвер устройства 2D-графики для X.Org Server
DRM является ядро -специфическим. VESA драйвер , как правило , доступен для любой операционной системы. Драйвер VESA поддерживает большинство видеокарт без ускорения и с разрешениями дисплея, ограниченными набором, запрограммированным производителем в BIOS видео . [38]
История
Стек графики Linux эволюционировал в обход протокола ядра X Window System .
2D-драйверы в X-сервере
Косвенный рендеринг через GLX с использованием Utah GLX
Инфраструктура прямого рендеринга и кадровый буфер
Весь доступ осуществляется через Direct Rendering Manager.
В ядре Linux 3.12 узлы рендеринга объединены, а установка режима отключена. Wayland реализует прямой рендеринг через EGL .
Бесплатные драйверы с открытым исходным кодом
ATI и AMD
Radeon
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). Они по-прежнему должны загружать проприетарный микрокод в графический процессор, чтобы обеспечить аппаратное ускорение. [39] [ неудачная проверка ]
Код Radeon 3D разделен на шесть драйверов в соответствии с технологией графического процессора: драйверы radeon, r200 и r300 classic и драйверы r300g, r600g и radeonsi Gallium3D :
- Radeon поддерживает серию R100 .
- R200 поддерживает серию R200 .
- R300g поддерживает предварительно унифицированные микроархитектуры шейдерных моделей : R300 , R400 и R500 .
- R600g поддерживает все графические процессоры на базе TeraScale (VLIW5 / 4) : R600 , R700 , HD 5000 (Evergreen) и HD 6000 (Северные острова) .
- Radeonsi поддерживает все графические процессоры на базе Graphics Core Next : HD 7000 , HD 8000 и Rx 200 (Южные острова, Морские острова и Вулканические острова).
Доступна обновленная матрица функций, [40] и есть поддержка Video Coding Engine [41] и Unified Video Decoder . [42] [43] Бесплатные драйверы графических устройств Radeon с открытым исходным кодом не подвергаются обратному проектированию, а основаны на документации, выпущенной AMD без требования подписывать соглашение о неразглашении (NDA). [44] [45] [46] Документация начала постепенно выпускаться в 2007 году. [47] [48] [49] Это контрастирует с основным конкурентом AMD в области графики, Nvidia , у которой есть проприетарный драйвер, аналогичный AMD. Catalyst, но не поддерживает инициативы по созданию бесплатной графики. [50]
Помимо предоставления необходимой документации, сотрудники AMD вносят код для поддержки своего оборудования и функций. [41]
Все компоненты драйвера графического устройства Radeon разрабатываются основными участниками и заинтересованными сторонами по всему миру. В 2011 году r300g в некоторых случаях превосходил Catalyst.
AMDGPU
На конференции разработчиков игр 2014 года AMD объявила, что они изучают возможность изменения стратегии, чтобы заново основать часть пользовательского пространства Catalyst на бесплатном модуле ядра DRM с открытым исходным кодом, а не на собственном блобе ядра . [51]
О выпуске нового модуля ядра AMDGPU и стека было объявлено в списке рассылки Dri-devel в апреле 2015 года. [52] Хотя AMDGPU официально поддерживает только видеокарты GCN 1.2 и более поздних версий , [53] экспериментальная поддержка видеокарт GCN 1.0 и 1.1 (которые официально поддерживаются только драйвером Radeon) можно включить с помощью параметра ядра. [54] [55] Отдельная библиотека libdrm , libdrm-amdgpu, была добавлена начиная с libdrm 2.4.63. [56]
Код radeonsi 3D, упомянутый в предыдущем абзаце Radeon, также используется с amdgpu; у 3D-драйвера есть серверные части как для Radeon, так и для amdgpu.
Nvidia
Nvidia проприетарный драйвер «s, драйвер Nvidia GeForce для GeForce , доступна для Windows XP x86 - x86-64 и позже, Linux x86-x86-64- ARMv7-A , OS X 10.5 и более поздних версиях Solaris x86-x86-64 и FreeBSD x86 / x86-64. Актуальную версию можно загрузить из Интернета, и некоторые дистрибутивы Linux содержат ее в своих репозиториях. Бета-версия драйвера Nvidia GeForce 331.13 от 4 октября 2013 г. поддерживает интерфейс EGL , обеспечивая поддержку Wayland в сочетании с этим драйвером. [57] [58]
Бесплатный драйвер Nvidia с открытым исходным кодом называется nv. [59] Он ограничен (поддерживает только 2D-ускорение), и Мэтью Гарретт , Дирк Хондел и другие назвали его исходный код запутанным. [60] [61] [62] В марте 2010 года Nvidia решила отказаться от nv, не добавляя поддержку графических процессоров Fermi или более поздних версий и DisplayPort . [63]
В декабре 2009 года Nvidia объявила, что не будет поддерживать инициативы по бесплатной графике. [50] 23 сентября 2013 года компания объявила, что выпустит некоторую документацию по своим графическим процессорам. [64]
Модерн почти полностью основан на информации, полученной с помощью обратного инжиниринга . Этот проект направлен на создание 3D-ускорения для X.Org/ Wayland с использованием Gallium3D . [65] 26 марта 2012 г. компонент DRM Nouveau был отмечен как стабильный и переведен из промежуточной области ядра Linux. [66] Nouveau поддерживает графические процессоры на базе Tesla (и ранее), Fermi , Kepler и Maxwell . [67] 31 января 2014 года сотрудник Nvidia Александр Курбот (Alexandre Courbot) выпустил обширный набор исправлений, который добавляет начальную поддержку GK20A ( Tegra K1 ) в Nouveau. [68] В июне 2014 года Codethink, как сообщается, запустила основанный на Wayland композитор Weston с ядром Linux 3.15, используя EGL и «стек графических драйверов со 100% открытым исходным кодом» на Tegra K1 . [69] Доступна матрица характеристик. [70] В июле 2014 года Nouveau не смог превзойти драйвер Nvidia GeForce из-за отсутствия поддержки повторной синхронизации. Tegra-re - это проект, направленный на обратное проектирование графических процессоров nVidia на базе VLIW серии Tegra , предшествующих Tegra K1. [71]
Nvidia распространяет проприетарные драйверы устройств для Tegra через OEM-производителей и как часть своего комплекта разработки Linux for Tegra (ранее L4T). [72] Nvidia и ее партнер, Avionic Design , работали над выпуском Grate (бесплатных драйверов с открытым исходным кодом для Tegra) в апстрим основной ветки ядра Linux в апреле 2012 года. [73] [74] Соучредитель и генеральный директор компании заявил представили план развития процессоров Tegra с Ubuntu Unity на конференции по технологиям графических процессоров 2013 года . [75]
Драйвер унифицированной памяти Nvidia (nvidia-uvm.ko), который реализует управление памятью для графических процессоров Pascal и Volta в Linux, лицензирован MIT. Исходный код доступен для загрузки драйверов Nvidia Linux в системах, поддерживающих nvidia-uvm.ko.
Intel
Intel имеет опыт производства (или ввода в эксплуатацию) драйверов с открытым исходным кодом для своих графических чипов, за исключением чипов на базе PowerVR . [76] Их драйвер 2D X.Org называется xf86-video-intel. Драйвер настройки режима ядра в ядре Linux не использует BIOS видео для переключения режимов видео ; поскольку некоторые BIOS имеют ограниченный набор режимов, это обеспечивает более надежный доступ к тем, которые поддерживаются видеокартами Intel.
В 2011 году компания работала над оптимизацией своих бесплатных драйверов Linux для достижения производительности, приближающейся к их аналогам для Windows , особенно на Sandy Bridge и более новом оборудовании, где оптимизация производительности позволила драйверу Intel превзойти их проприетарные драйверы Windows в определенных задачах. [77] [78] [79] Некоторые улучшения производительности могут также принести пользу пользователям старого оборудования. [80]
Поддержка Intel LLC (Last Level Cache, L4-Cache, Crystalwell и Iris Pro) была добавлена в ядро Linux 3.12, [81] [82], и у компании есть от 20 до 30 постоянных разработчиков графики для Linux. [83]
Matrox
Matrox разрабатывает и производит Matrox Mystique , Parhelia , G200 , G400 и G550 . Хотя компания предоставляет бесплатные драйверы с открытым исходным кодом для своих наборов микросхем, которые старше G550; Чипсеты новее, чем G550, поддерживаются драйвером с закрытым исходным кодом.
S3 Графика
S3 Graphics разрабатывает S3 Trio , ViRGE , Savage и Chrome , поддерживаемые OpenChrome. [84]
Arm Holdings
Arm Holdings - это полупроводниковая компания без фабрик, которая лицензирует полупроводниковые ядра интеллектуальной собственности . Хотя они известны лицензированием набора инструкций ARM и процессоров на его основе, они также разрабатывают и лицензируют серию графических процессоров Mali . 21 января 2012 года Phoronix сообщил, что Люк Верхаген предпринял попытку реверс-инжиниринга графических процессоров Arm Holdings Mali (в частности, версий Mali-200 и Mali-400). Проект обратного инжиниринга, известный как Lima, был представлен на FOSDEM 4 февраля 2012 года. [85] [86] 2 февраля 2013 года Verhaegen продемонстрировал Quake III Arena в демо-режиме, работающем поверх драйвера Lima. [87] В мае 2018 года разработчик из Лимы опубликовал драйвер для включения в ядро Linux. [88] По состоянию на май 2019 года драйвер Lima является частью основного ядра Linux. [89]
Panfrost - это модифицированный драйвер для графических процессоров Mali Txxx (Midgard) и Gxx (Bifrost). Введение в Panfrost было представлено на конференции разработчиков X.Org 2018. По состоянию на май 2019 года драйвер Panfrost является частью основного ядра Linux. [90]
ARM не заявила о намерении предоставлять поддержку своего оборудования для ускорения графики, лицензированного по бесплатной лицензии с открытым исходным кодом. Однако сотрудники ARM отправили исправления для ядра Linux для поддержки их контроллера дисплея ARM HDLCD и SIP-блоков Mali DP500, DP550 и DP650 в декабре 2015 и апреле 2016 года. [91] [92]
Воображаемые Технологии
Imagination Technologies - полупроводниковая компания без фабрик, которая разрабатывает и лицензирует полупроводниковые ядра интеллектуальной собственности , в том числе графические процессоры PowerVR . Intel произвела ряд графических процессоров на базе PowerVR . Графические процессоры PowerVR широко используются в мобильных SoC . Компания не предоставляет драйверы FOSS или общедоступную документацию для PowerVR. Из-за его широкого использования во встраиваемых устройствах Free Software Foundation включил обратное проектирование драйвера PowerVR в свой список приоритетных проектов. [93]
Виванте
Vivante Corporation - полупроводниковая компания без фабрик, которая лицензирует полупроводниковые ядра интеллектуальной собственности и разрабатывает графические процессоры серии GCxxxx. Проприетарный драйвер Linux с закрытым исходным кодом Vivante состоит из частей ядра и пользовательского пространства. Хотя компонент ядра является открытым исходным кодом ( GPL ), компоненты пользовательского пространства, состоящие из реализаций GLES (2) и библиотеки HAL, таковыми не являются; они содержат основную часть логики драйвера.
Владимир Дж. Ван дер Лаан обнаружил и задокументировал биты состояния, командный поток и шейдерный ISA, изучив, как работают большие двоичные объекты, изучив и управляя дампами командного потока. Драйвер Etnaviv Gallium3D пишется на основе этой документации. Работа Ван дер Лаана была вдохновлена драйвером Lima, и в рамках проекта был создан функциональный, но не оптимизированный драйвер LLVM Gallium3D. Драйвер Etnaviv показал лучшие результаты, чем проприетарный код Vivante, в некоторых тестах и поддерживает серии Vivante GC400, GC800, GC1000, GC2000, GC3000 и GC7000. [94] В январе 2017 года Etnaviv был добавлен в Mesa с поддержкой OpenGL ES 2.0 и Desktop OpenGL 2.1. [95]
Qualcomm
Qualcomm разрабатывает серию мобильных графических процессоров Adreno (ранее ATI Imageon ) и включает их в свою серию мобильных SoC Snapdragon . В 2012 году Phoronix и Slashdot сообщили, что Роб Кларк, вдохновленный драйвером Lima, работал над обратным проектированием драйверов для серии графических процессоров Adreno. [96] [97] В упомянутом сообщении в блоге Кларк написал, что занимается этим проектом в свободное время и что платформа Qualcomm является его единственной жизнеспособной целью для работы с открытой трехмерной графикой. Его работодатели ( Texas Instruments и Linaro ) были связаны с ядрами Imagination PowerVR и ARM Mali , которые были его основными целями; у него были рабочие потоки команд для поддержки 2D, и команды 3D, казалось, имели те же характеристики. [98] Код драйвера был опубликован на Gitorious "freedreno", [99] и перемещен в Мезу. [100] [101] В 2012 году был завершен рабочий ассемблер шейдеров; [102] демонстрационные версии были разработаны для наложения текстур [103] и затенения фонга , [104] с использованием компилятора шейдеров с обратной инженерией. Кларк продемонстрировал Freedreno, работающий с настольным композитингом, медиаплеер XBMC и Quake III Arena на FOSDEM 2 февраля 2013 года. [105]
В августе 2013 года компонент ядра freedreno (драйвер MSM) был принят в основную линию и доступен в ядре Linux 3.12 и более поздних версиях. [106] В июле 2014 года драйвер DDX получил поддержку управляемых сервером файловых дескрипторов, требующих X.Org Server версии 1.16 и выше. [107] В январе 2016 года драйвер в стиле Mesa Gallium3D получил поддержку Adreno 430; [108] В ноябре того же года драйвер добавил поддержку серии Adreno 500. [109] Freedreno можно использовать на таких устройствах, как 96Boards Dragonboard 410c и Nexus 7 (2013) в традиционных дистрибутивах Linux (например, Debian и Fedora ) и на Android .
Broadcom
Broadcom разрабатывает и проектирует серию графических процессоров VideoCore как часть своих SoC . Поскольку он используется Raspberry Pi , существует значительный интерес к драйверу FOSS для VideoCore. [111] Raspberry Pi Foundation в сотрудничестве с Broadcom объявили 24 октября 2012 года, что они открыли исходный код «всего кода ARM (CPU), который управляет графическим процессором». [ необходима цитата ] Однако объявление вводило в заблуждение; по словам автора модифицированного драйвера Lima, новые компоненты с открытым исходным кодом позволяли передавать сообщения только между процессором ARM и VideoCore, но не давали понимания Videocore и мало дополнительной программируемости. [112] Графический процессор Videocore работает под управлением ОСРВ, которая обрабатывает обработку; видеоускорение осуществляется с помощью прошивки RTOS, закодированной для ее проприетарного графического процессора, и на тот момент прошивка не была в открытом доступе. [113] Поскольку не было ни цепочки инструментов, нацеленной на проприетарный графический процессор, ни задокументированного набора инструкций , никаких преимуществ не было бы, если бы исходный код прошивки стал доступен. Проект Videocoreiv [114] попытался задокументировать графические процессоры VideoCore.
28 февраля 2014 года (вторая годовщина Raspberry Pi) Broadcom и Raspberry Pi Foundation объявили о выпуске полной документации для графического ядра VideoCore IV и полной версии исходного кода графического стека по лицензии BSD с тремя пунктами . [115] [116] Бесплатная лицензия на код трехмерной графики была передана в Mesa 29 августа 2014 года, [117] и впервые появилась в версии 10.3 Mesa.
Другие поставщики
Хотя Silicon Integrated Systems и VIA Technologies проявили ограниченный интерес к драйверам с открытым исходным кодом, оба выпустили исходный код, который был интегрирован в X.Org разработчиками FOSS. [62] В июле 2008 года VIA открыла документацию по своим продуктам, чтобы улучшить свой имидж в Linux и сообществах разработчиков ПО с открытым кодом. [118] Компания не смогла работать с сообществом разработчиков ПО с открытым исходным кодом, чтобы предоставить документацию и работающий драйвер DRM , в результате чего ожидания поддержки Linux не оправдались. [119] 6 января 2011 г. было объявлено, что VIA больше не заинтересована в поддержке инициатив по бесплатной графике. [120]
DisplayLink анонсировала проект с открытым исходным кодом Libdlo [121] с целью обеспечить поддержку своей графической технологии USB для Linux и других платформ. Его код доступен по лицензии LGPL [122], но не интегрирован в драйвер X.Org . Поддержка графики DisplayLink доступна через драйвер ядра udlfb (с fbdev) в основной строке и драйвер udl / drm, который в марте 2012 года был доступен только в дереве drm-next.
Поставщики, не связанные с оборудованием, также могут помочь инициативам по бесплатной графике. В Red Hat есть два штатных сотрудника (Дэвид Эйрли и Жером Глисс), работающих над программным обеспечением Radeon [123], а проект Fedora спонсирует мероприятие Fedora Graphics Test Week перед выпуском новых версий дистрибутива Linux для тестирования бесплатных графических драйверов. [124] Другие компании, предоставившие разработку или поддержку, включают Novell и VMware .
Открытые аппаратные проекты
Проект VGA направлен на создание малобюджетной видеокарты с открытым исходным кодом, совместимой с VGA . [125] Open Graphics Project направлен на создание открытого аппаратного графического процессора. Open Graphics Device v1 имеет два выхода DVI-I и 100-контактный разъем IDC. В сентябре 2010 года первые 25 плат OGD1 были доступны для подачи заявки и покупки. [126] Система Milkymist на кристалле , ориентированная на встроенную графику, а не на настольные компьютеры, поддерживает вывод VGA, ограниченный вершинный шейдер и блок 2D-текстурирования. [127]
Nyuzi, [128] экспериментальный процессор GPGPU, включает синтезируемую конструкцию оборудования, написанную в System Verilog , эмулятор набора команд, компилятор C-C ++ на основе LLVM , программные библиотеки и тесты, а также исследует параллельное программное и аппаратное обеспечение. Он может работать на программируемой плате вентильной матрицы Terasic DE2-115 . [129] [130]
Если в проекте используются FPGA, он обычно имеет частично (или полностью) набор инструментов с закрытым исходным кодом. Однако в настоящее время доступно несколько наборов инструментов с открытым исходным кодом для FPGA на основе Lattice (особенно для плат iCE40 и ECP5), которые используют Project IceStorm, [131] и Trellis, [132] соответственно. Также прилагаются более масштабные, продолжающиеся усилия по созданию «GCC для FPGA» под названием SymbiFlow [133], который включает вышеупомянутые инструментальные средства FPGA, а также ранний набор инструментов с открытым исходным кодом для FPGA на базе Xilinx.
Смотрите также
- 3D компьютерная графика
- Ячейка (микропроцессор)
- Инфраструктура прямого рендеринга (DRI)
- Intel GMA
- Открыть графический проект
Рекомендации
- ^ Тео де Раадт (2006-12-03). «Открытая документация на оборудование» . Слайды презентации OpenCON 2006 . Проверено 1 февраля 2007 .
- ^ "Что означает" двоичный "в драйвере устройства?" . Проверено 14 ноября 2017 года .
- ^ «3.9:» Клякса! " " . OpenBSD . Проверено 12 февраля 2007 .
- ^ «Linux - Как Rapid7 Advisory R7-0025 влияет на драйвер NVIDIA Unix?» .
- ^ "a / lt-бинарный" .
- ^ Кроа-Хартман, Грег. «Мифы, ложь и правда о ядре Linux» . Журнал обезьяны ядра Linux.
- ^ Питер Гутманн (26 декабря 2006 г.). «Анализ затрат на защиту содержимого Windows Vista» . Проверено 28 января 2007 . Цитировать журнал требует
|journal=
( помощь ) - ^ Linux Weekly News, 14 августа 2006 г .: X.org, дистрибьюторы и проприетарные модули
- ^ Грег Кроа-Хартман (2006). «Мифы, ложь и правда о ядре Linux» . Симпозиум по Linux .
- ^ «Интерфейс драйвера ядра Linux» . Архивировано из оригинала на 2013-11-04 . Проверено 4 марта 2014 .
- ^ "SamsungGalaxyBackdoor" . 2014-02-04.
- ^ «По данным IDC, доля рынка Android в глобальных поставках смартфонов составляет около 80%, по данным iOS и BlackBerry» .
- ^ «Фреймворк Atomic Display» .
- ^ "Free3d.org FAQ" .
Является ли glxgears точным измерителем производительности 3D? Нет, это отстой по-разному.
- ^ «На графических процессорах низкого уровня, Nouveau опережает драйвер NVIDIA» . Проверено 15 ноября 2017 года .
- ^ "Новый подход к производительности OpenGL в драйвере NVIDIA" . Проверено 15 ноября 2017 года .
- ^ «Сравнение 15-сторонних открытых и закрытых графических процессоров NVIDIA / AMD Linux» . Проверено 15 ноября 2017 года .
- ^ «Игровая производительность Ubuntu Linux в основном соответствует Windows 8.1» . Проверено 15 ноября 2017 года .
- ^ «25-стороннее сравнение графических карт Linux с открытым исходным кодом» . Проверено 15 ноября 2017 года .
- ^ «Сравнение видеокарт AMD Radeon с 24 процессорами и NVIDIA GeForce Linux» . Проверено 15 ноября 2017 года .
- ^ «Ubuntu 14.04 превосходит OS X 10.9 на MacBook Air 2013 года» . Фороникс . 2014-03-19 . Проверено 19 марта 2014 .
- ^ «Nouveau Maxwell: Mesa 17.0 + Linux 4.10 против драйвера NVIDIA для Linux» . Проверено 15 ноября 2017 года .
- ^ «Сравнение производительности RADV Mesa 17.1-dev и AMDGPU-PRO 16.60» . Проверено 15 ноября 2017 года .
- ^ «Как производительность RadeonSI OpenGL эволюционировала с Mesa 11.1 на Mesa 17.1 Git» . Проверено 15 ноября 2017 года .
- ^ «Программное обеспечение Windows 10 Radeon против Ubuntu 17.04 + Linux 4.12 + Mesa 17.2-dev - Phoronix» . www.phoronix.com .
- ^ «RadeonSI / RADV Mesa 17.3 + AMDGPU DC против NVIDIA 387.12 в игровой производительности Linux - Phoronix» . www.phoronix.com .
- ^ «Тесты производительности от Mesa 12.0 до Mesa 18.0 показывают OpenGL / Vulkan Radeon Evolution - Phoronix» . www.phoronix.com .
- ^ https://www.phoronix.com/scan.php?page=article&item=nouveau-summer-2018&num=1
- ^ https://www.phoronix.com/scan.php?page=article&item=mesa182-4-july&num=1
- ^ https://www.phoronix.com/scan.php?page=article&item=radeon-software-1840&num=1
- ^ https://www.phoronix.com/scan.php?page=article&item=gcn10-tww2-radv&num=1
- ^ https://www.phoronix.com/scan.php?page=article&item=gaming-eojan-2019&num=1
- ^ https://www.phoronix.com/scan.php?page=article&item=mesa190-rad-jan&num=1
- ^ https://www.phoronix.com/scan.php?page=article&item=linux52-mesa192-high&num=1
- ^ https://www.phoronix.com/scan.php?page=article&item=radv-radeonsi-19&num=1
- ^ «Важность автоматизации тестов и почему я ненавижу запускать игры для Linux вручную» . Фороникс . 2016-06-04 . Проверено 4 июня 2016 .
- ^ «Отслеживание состояния Direct3D 9» . Архивировано 20 июля 2013 года . Проверено 15 ноября 2017 года .
- ^ "Индекс / doc / Documentation / fb /" . Проверено 15 ноября 2017 года .
- ^ Подробная информация о пакете Debian firmware-linux-nonfree в стабильном Debian.org
- ^ «Особенность Radeon» . Проверено 15 ноября 2017 года .
- ^ а б «начальная поддержка VCE в ядре Linux и в драйвере Mesa» .
- ^ "drm-next-3.15 18 февраля" .
- ^ "drm-next-3.15 марта 2004 г." .
- ^ «Руководства для разработчиков AMD» . Архивировано из оригинала на 2013-07-16.
- ^ «Документация предоставлена AMD» .
- ^ «Список документации AMD 3D» . Архивировано из оригинала на 2013-10-07.
- ^ «AMD откроет возможности графики» . LWN.net . 2007-09-05 . Проверено 15 июля 2014 .
- ^ «AMD: характеристики графического процессора без соглашений о неразглашении!» . 2007-09-10 . Проверено 15 июля 2014 .
- ^ Дэвид Эйрли (13 сентября 2007 г.). «AMD передала мне спецификации на компакт-диске» . Архивировано из оригинала на 2012-10-22 . Проверено 15 июля 2014 .
- ^ а б «Ответ Nvidia на последние работы в стиле модерн» . Фороникс . 2009-12-14.
- ^ «AMD изучает новую стратегию драйверов для Linux» . 2014-03-22 . Проверено 23 марта 2014 .
- ^ «Первоначальный выпуск драйвера AMDGPU» . 2015-04-20 . Проверено 26 апреля 2016 .
- ^ «AMD движется вперед с единой стратегией драйверов Linux, новым драйвером ядра» . Фороникс .
- ^ «Документация по драйверу AMDGPU» . Freedesktop.org .
- ^ «AMD представляет начальную поддержку драйвера AMDGPU для графических процессоров GCN 1.0 / Southern Islands» . Фороникс .
- ^ "libdrm 2.4.63" . 2015-08-14.
- ^ «Поддержка EGL на 32-битных платформах» . 2013-10-04 . Проверено 15 июля 2014 .
- ^ "Список файлов lib32-nvidia-utils 340.24-1" . 2014-07-15.
- ^ "Страница драйвера X.org nv" . 2013-05-20.
- ^ «Нашивка Дирка Хондела» . 1998-11-18. Архивировано из оригинала на 2014-02-01 . Проверено 15 июля 2014 .
... в отличие от такого запутанного кода. Мы не рассматриваем это как бесплатное программное обеспечение в соответствии с нашими стандартами.
- ^ «Модерн - Сообщество и прошлое, настоящее и будущее» (PDF) . 2011-09-13 . Проверено 15 июля 2014 .
- ^ а б Дэвид М. Эйрли (19 июля 2006 г.). «Графические драйверы с открытым исходным кодом - они не убивают котят» (PDF) . Труды первого тома симпозиума по Linux . Оттава , Онтарио, Канада. Архивировано из оригинального (PDF) 08 февраля 2007 года . Проверено 28 января 2007 .
- ^ "Nvidia "NV осуждает " " . Фороникс . 26 марта 2010 г.
- ^ «Nvidia предлагает выпустить общедоступную документацию по некоторым аспектам своих графических процессоров» . 2013-09-23 . Проверено 24 сентября 2013 .
- ^ «Nouveau: ускоренный драйвер с открытым исходным кодом для карт nVidia» . Архивировано из оригинала на 2014-07-23 . Проверено 10 августа 2006 .
- ^ «Водитель в стиле модерн заканчивает постановку» . LWN.net . 2012-03-23.
- ^ «Инженерные названия для Nvidia» .
- ^ «drm / nouveau: начальная поддержка GK20A (Tegra K1)» . 2014-01-31.
- ^ «Codethink получает NVIDIA Jetson TK1 под управлением Linux 3.15, Wayland» . Фороникс . 2014-06-12.
- ^ «Матрица характеристик нового драйвера» . Проверено 16 ноября 2017 года .
- ^ «Тегра-ре» . Проверено 16 ноября 2017 года .
- ^ «Linux для архива Tegra» . Проверено 16 ноября 2017 года .
- ^ Мэйо, Джон (2012-04-20). «[RFC 0/4] Добавить поддержку NVIDIA Tegra DRM» . Dri-devel (Список рассылки) . Проверено 21 августа 2012 .
- ^ Ларабель, Майкл (11 апреля 2012 г.). «Подсказка для драйвера NVIDIA Tegra 2 DRM / KMS» . Phoronix Media . Проверено 21 августа 2012 .
- ^ «GTC 2013: Дорожная карта NVIDIA Tegra (6 из 11)» . YouTube . Проверено 10 июля 2013 .
- ^ Обзор производителей видеокарт и того, насколько хорошо они работают с Ubuntu Ubuntu Gamer, 10 января 2011 г. (статья Люка Бенстеда); ( копия статьи )
- ^ «Intel Linux SNB обеспечивает более высокую производительность» . Фороникс . 2011-03-22 . Проверено 23 марта 2011 .
- ^ «Производительность Intel Sandy Bridge снова повышается» . Фороникс . 2011-03-31 . Проверено 31 марта 2011 .
- ^ «Драйвер Intel SNB для Linux не может запустить драйвер Windows» . Фороникс . 2011-05-23 . Проверено 23 мая 2011 .
- ^ «Исторический взгляд на производительность графики Intel Ironlake» . Фороникс . 2011-05-25 . Проверено 25 мая 2011 .
- ^ «drm / i915: использовать eLLC / LLC по умолчанию, если доступно» .
- ^ «drm / i915: использовать кэширование со сквозной записью для плоскости отображения на радужной оболочке» .
- ^ «У Intel 20-30 штатных разработчиков графики для Linux» . 2013-02-02.
- ^ «OpenChrome» . Проверено 16 ноября 2017 года .
- ^ phoronix (6 февраля 2012 г.). "Phoronix.com - FOSDEM 2012 - Open-Source ARM Mali" - через YouTube.
- ^ Phoronix, 21 января 2012: Open-Source, Reverse-Engineered Mali GPU Driver
- ^ "Демо Quake 3 Arena поверх водителя Лимы!" . Архивировано из оригинала на 2013-02-09.
- ^ "Драйвер Lima DRM [LWN.net]" . lwn.net .
- ^ drm / lima: драйвер для графических процессоров ARM Mali4xx}
- ^ drm / panfrost: Добавить начальный драйвер panfrost
- ^ «drm: добавить поддержку контроллера дисплея ARM HDLCD» . Список рассылки ядра Linux . 2015-12-11.
- ^ «Начальная поддержка ARM Mali Display Controller» . Список рассылки ядра Linux . 2016-04-01.
- ↑ Free Software Foundation, 25 апреля 2005 г .: Высокоприоритетные проекты свободного программного обеспечения
- ^ "laanwj / etna_viv" .
- ^ «etnaviv: галлиевый драйвер для графических процессоров Vivante» .
- ^ Майкл Ларабель (14 апреля 2012 г.). «Графический драйвер с открытым исходным кодом для Snapdragon» . Фороникс . Проверено 15 апреля 2012 года .
- ^ Soulskill (14 апреля 2012 г.). «Опубликован драйвер Qualcomm GPU с открытым исходным кодом» . Slashdot . Проверено 15 апреля 2012 года .
- ^ Роб Кларк (14 апреля 2012 г.). "Противодействие двоичным каплям!" . Линаро . Проверено 15 апреля 2012 года .
- ^ Freedreno, 15 апреля 2012 архивации 24 октября 2012 в Wayback Machine
- ^ "Mesa / Gallium3D получает свой первый драйвер графического процессора ARM SoC - Phoronix" .
- ^ http://lists.freedesktop.org/archives/mesa-commit/2013-March/042190.html
- ^ Роб Кларк (29 июля 2012 г.). "Обновление freedreno: первый рендеринг ассемблера шейдеров!" . Проверено 16 августа 2012 года .
- ^ Роб Кларк (5 августа 2012 г.). «текстурированный куб (полноэкранный!)» . Проверено 16 августа 2012 года .
- ^ Роб Кларк (15 августа 2012 г.). "Открытый исходный код, lolscat!" . Проверено 16 августа 2012 года .
- ^ «Открытые драйверы ARM GPU - Freedreno» . FOSDEM . 2013-02-02 . Проверено 15 июля 2014 .
- ^ «Слейте драйвер MSM от Роба Кларка» . kernel.org . 2013-08-28 . Проверено 4 июня 2014 .
- ^ "xf86-video-freedreno 1.2.0" . freedesktop.org . 2014-07-14.
- ^ «Добавить поддержку adreno 430» . Проверено 15 ноября 2017 года .
- ^ «Индекс Меса-Меса» . Проверено 15 ноября 2017 года .
- ^ Анхольт, Эрик (2014-06-17). «Новая работа в Broadcom» . Архивировано из оригинала на 2015-04-07.
- ^ «Фороникс на графическом процессоре Raspberry Pi» .
- ^ "Пользовательская среда ARM с открытым исходным кодом - Raspberry Pi" . 24 октября 2012 г.
- ^ "Пользовательская среда ARM с открытым исходным кодом - Raspberry Pi" . 24 октября 2012 г.
- ^ "херманэрмитаж / видеокорев" .
- ^ «Raspberry Pi отмечает второй день рождения с планом по выпуску графического драйвера с открытым исходным кодом» .
- ^ Аптон, Эбен (28 февраля 2014 г.). «Подарок на день рождения от Broadcom - Raspberry Pi» . Фонд Raspberry Pi . Проверено 8 июля 2019 .
- ^ «vc4: начальный импорт каркасного драйвера» . Библиотека 3D-графики Mesa. 2014-08-09.
- ^ Майкл Ларабель ( 26 июля 2008 г.). «VIA издает три руководства по программированию» . Фороникс . Проверено 4 августа 2008 .
- ^ Майкл Ларабель ( 21 ноября 2009 г.). "Список TODO Linux от VIA ... Может быть, с нетерпением ждем 2011 года?" . Фороникс . Проверено 30 декабря 2009 .
- ^ Open Linux Графический драйвер VIA был Defenestrated Phoronix , 6 января 2011 (Статья Майкл Ларабел )
- ^ «Либдло» . Проверено 16 ноября 2017 года .
- ^ «DisplayLink выпускает исходный код Linux для своих графических процессоров USB» (пресс-релиз). DisplayLink. 2009-05-15 . Проверено 15 мая 2009 .
- ^ AMD нанимает другого разработчика драйверов с открытым исходным кодом Phoronix , 11 декабря 2010 г. (статья Майкла Ларабеля )
- ^ Это неделя тестирования графики Fedora Phoronix , 22 февраля 2011 г. (статья Майкла Ларабеля )
- ^ «Дом проекта VGA, низкобюджетная видеокарта с открытым исходным кодом, совместимая с VGA» . 090503 wacco.mveas.com
- ^ «Linux Fund: OGD1» . Откройте графический проект . 2010-09-23 . Проверено 4 ноября 2011 .
- ^ Бурдодук, Себастьян (июнь 2010 г.). «Управляемая производительностью архитектура SoC для синтеза видео» (PDF) . Архивировано из оригинального (PDF) 27 июля 2011 года . Проверено 5 ноября 2010 .
- ^ «Нюзи - экспериментальный процессор GPGPU» .
- ^ «Тестовая среда SOC» .
- ^ «Работает на плате Terasic DE2-115 FPGA» .
- ^ "Домашняя страница проекта IceStorm" .
- ^ «Репозиторий Project Trellis» .
- ^ «Домашняя страница SymbiFlow» .
Внешние ссылки
- Графические драйверы для Linux от Intel
- Лучшая видеокарта для Linux
- Страница портала драйверов NVIDIA для Unix
- Проект VGA
- Отслеживание состояния Direct3D 9 на Gallium3D
- d3d1x: добавлен новый трекер состояния Direct3D 10/11 COM для Gallium
- Домашняя страница Freedreno
- Обновление Freedreno / Gallium
- Тестовый набор Фороникс
- Обновления статуса для трех графических драйверов (Nouveau, amdgpu и Etnaviv) LWN.net 2015