Бесплатный драйвер графического устройства с открытым исходным кодом - Free and open-source graphics device driver
Эта статья может быть слишком техническим для большинства читателей, чтобы понять. Пожалуйста помогите улучшить это к сделать понятным для неспециалистов, не снимая технических деталей. (Ноябрь 2017 г.) (Узнайте, как и когда удалить этот шаблон сообщения) |
А бесплатный драйвер графического устройства с открытым исходным кодом это программный стек который контролирует компьютерно-графическое оборудование и поддерживает рендеринг графики интерфейсы прикладного программирования (API) и выпущен под бесплатное программное обеспечение с открытым исходным кодом лицензия. Графика драйверы устройств написаны для конкретного оборудования, чтобы работать в определенном ядро операционной системы и для поддержки ряда API-интерфейсов, используемых приложениями для доступа к графическому оборудованию. Они также могут управлять выводом на дисплей, если драйвер дисплея является частью графического оборудования. Большинство бесплатных драйверов графических устройств с открытым исходным кодом разработаны Меса проект. Драйвер состоит из компилятор, а рендеринг API, и программное обеспечение, которое управляет доступом к графическому оборудованию.
Драйверы без свободно (и легально) доступного исходного кода обычно известны как бинарные драйверы. Двоичные драйверы, используемые в контексте операционных систем, которые постоянно развиваются и изменяются (например, Linux), создают проблемы для конечных пользователей и упаковка сопровождающие. Эти проблемы, влияющие на стабильность, безопасность и производительность системы, являются основной причиной независимой разработки бесплатных драйверов с открытым исходным кодом. Когда техническая документация недоступна, понимание базового оборудования часто достигается обратное проектирование чистых помещений. Исходя из этого понимания, драйверы устройств могут быть написаны и законно опубликованы под любым лицензия на программное обеспечение.
В редких случаях исходный код драйвера производителя доступен в Интернете без бесплатная лицензия. Это означает, что код можно изучать и изменять для личного использования, но измененный (и обычно оригинальный) исходный код не может свободно распространяться. Решениями ошибок в драйвере не так просто поделиться в виде модифицированных версий драйвера. Следовательно, полезность таких драйверов значительно снижена по сравнению с бесплатными драйверами и драйверами с открытым исходным кодом.
Проблемы с проприетарными драйверами
Взгляд разработчика программного обеспечения
Есть возражения против бинарных драйверов, основанные на соображениях авторского права, безопасности, надежности и разработки. В рамках более широкой кампании против двоичные капли, OpenBSD ведущий разработчик Тео де Раадт сказал, что с бинарным драйвером «нет возможности исправить это, когда он сломается (и он сломается)»; когда продукт, основанный на бинарных драйверах, объявляется конец жизни По мнению производителя, он фактически «сломан навсегда».[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 Виндоус виста Операционная система может ограничивать доступность документации, необходимой для написания открытых драйверов, поскольку она «требует, чтобы рабочие детали устройства были конфиденциальными».[7]
В случае бинарных драйверов есть возражения из-за бесплатно программное обеспечение философия, качество программного обеспечения и безопасность обеспокоенность.[8] В 2006 г. Грег Кроа-Хартман пришли к выводу, что:
«Модули ядра Linux с закрытым исходным кодом являются незаконными. Вот и все, это очень просто. За эти годы я имел несчастье разговаривать по этой теме со многими разными юристами по интеллектуальной собственности, и все, с кем я разговаривал, согласны что сегодня никто не может создать модуль ядра Linux с закрытым исходным кодом. Это просто нарушает GPL из-за забавных вещей вроде производные работы и связывание."[9]
Ядро Linux никогда не поддерживало стабильное внутреннее ядро двоичный интерфейс приложения.[10] Есть также опасения, что проприетарные драйверы могут содержать бэкдоры, как найденный в Samsung Galaxy -серия драйверов модема.[11]
Взгляд разработчика оборудования
Когда такие приложения, как 3D игровой движок или ПО для компьютерной 3D-графики шунтировать вычисления от CPU к GPU, они обычно используют специальный API, например OpenGL или же Direct3D и не обращайтесь к оборудованию напрямую. Потому что все перевод (от вызовов API к GPU коды операций ) выполняется драйвером устройства, содержит специализированные знания и является объектом оптимизации. Из-за истории жесткости разработки проприетарных драйверов в последнее время наблюдается рост количества поддерживаемых сообществом драйверов устройств для настольных и мобильных графических процессоров. Организации свободного и открытого оборудования, такие как 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 (АПД).[13] ADF - это функция ядер AOSP 3.10, которая обеспечивает dma-buf -центрическая структура между hwcomposer Android HAL и драйвер ядра. АПД значительно перекрывает DRM -KMS рамки. ADF не был принят в основную линию, это был другой набор решений, направленных на те же проблемы (известный как установка атомарного режима ) находится в стадии разработки. Такие проекты как libhybris использовать драйверы устройств Android для работы на платформах Linux, отличных от Android.
Сравнение производительности
Фороникс, который сравнивает бесплатные драйверы, является источником для реального тестирования:
- 19 марта 2011 г.[15]
- 31 марта 2013 г.[16]
- Сравнение FOSS и проприетарных драйверов от 29 апреля 2013 г.[17]
- 27 октября 2013 г. Сравнение проприетарных драйверов для Windows 8.1 и Linux[18]
- Сравнение драйверов FOSS в Linux от 25 января 2014 г.[19]
- 27 января 2014 г. Сравнение проприетарных драйверов для Linux[20]
- Сравнение 19 марта 2014 г. Ubuntu с бесплатным драйвером графического устройства с открытым исходным кодом, распространяемым как часть Меса 3D, который превосходит Mac OS X 10.9.2 при игре OpenGL -основан Ксонотический на 2013 год MacBook Air.[21]
- Сравнение в январе 2017 года показало разницу в мощности между драйверами Mesa Nouveau и NVidia и Kepler и Maxwell. Для Максвелла в «Нуво» требуется повторная синхронизация, чтобы повысить уровень до Кеплера. Отрыв от Mesa составляет от 30 до 50% в базовой эффективности драйвера по сравнению с Nvidia во всех чипах.[22]
- Сравнение, проведенное в феврале 2017 года, показало, что Mesa 17.1dev был равен или лучше, чем драйвер AMD GPU 16.60 в OpenGL и на 20-30 процентов ниже в Вулкан.[23]
- Сравнение в марте 2017 г. показало улучшения в Mesa для RadeonSI между версиями 11.1 и 17.1.[24]
- Сравнение Windows 10 Radeon Software и Ubuntu 17.04 + Linux 4.12 + Mesa 17.2-dev в июне 2017 г. -> Результат mesa radeonsi на том же уровне [25]
- Сравнение производительности RadeonSI / RADV Mesa 17.3 + AMDGPU DC в октябре 2017 г. и проприетарной 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 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 Cards [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, сторонними энтузиастами программирования и сотрудниками таких компаний, как Продвинутые Микроустройства. Каждый драйвер состоит из пяти частей:
- Компонент ядра Linux DRM
- Компонент ядра Linux Драйвер KMS (в контроллер дисплея Водитель)
- Компонент пользовательского пространства libDRM (библиотека-оболочка для системных вызовов DRM, которая должна использоваться только Mesa 3D)
- А Меса 3D компонент пользовательского пространства. Этот компонент зависит от оборудования; он выполняется на CPU и преобразует команды OpenGL, например, в машинный код для GPU. Поскольку драйвер устройства разделен, сортировка возможно. Mesa 3D - единственная бесплатная реализация с открытым исходным кодом OpenGL, OpenGL ES, OpenVG, GLX, EGL и OpenCL. В июле 2014 года большинство компонентов соответствовали требованиям Галлий3D технические характеристики. Полнофункциональный трекер состояния для Direct3D версия 9 написана на C, а неподдерживаемый трекер для Direct3D версий 10 и 11 написан на C ++.[37] Вино имеет Direct3D версии 9. Другой компонент Wine переводит вызовы Direct3D в вызовы OpenGL, работая с OpenGL.
- Зависит от устройства X (DDX), еще один драйвер 2D-графики для Сервер X.Org
В DRM является ядро -специфический. А VESA драйвер обычно доступен для любой операционной системы. Драйвер VESA поддерживает большинство видеокарт без ускорения и с разрешением экрана, ограниченным набором, запрограммированным в видео. BIOS от производителя.[38]
История
Графический стек Linux эволюционировал, в обход Основной протокол X Window System.
2D-драйверы в X сервер
Весь доступ осуществляется через Менеджер прямого рендеринга
В ядре 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. Галлий3D драйверы:
- Radeon поддерживает R100 серии.
- R200 поддерживает R200 серии.
- R300g поддерживает предварительнуюунифицированная шейдерная модель микроархитектуры: R300, R400 и R500.
- R600g поддерживает все TeraScale (VLIW5 / 4) на базе графических процессоров: R600, R700, HD 5000 (вечнозеленый) и HD 6000 (Северные острова).
- Радеонси поддерживает все Графическое ядро Next на базе графических процессоров: HD 7000, HD 8000 и Rx 200 (Южные острова, Морские острова и Вулканические острова).
Доступна актуальная матрица функций,[40] и есть поддержка Механизм кодирования видео[41] и Единый видеодекодер.[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 проприетарный драйвер, Драйвер Nvidia GeForce за GeForce, доступен для Windows XP x86 -x86-64 и позже, Linux x86-x86-64-ARMv7-A, OS X 10.5 и позже, Солярис x86-x86-64 и FreeBSD x86 / x86-64. Текущую версию можно загрузить из Интернета, и некоторые дистрибутивы Linux содержат ее в своих репозиториях. 4 октября 2013 г. бета Драйвер Nvidia GeForce 331.13 поддерживает EGL интерфейс, позволяющий поддерживать Wayland совместно с этим драйвером.[57][58]
Бесплатный драйвер Nvidia с открытым исходным кодом называется nv.[59] Он ограничен (поддерживает только 2D-ускорение), и Мэтью Гарретт, Дирк Хондел а другие назвали его исходный код запутанным.[60][61][62] Nvidia решила отказаться от NV, не добавляя поддержку Ферми или более поздние графические процессоры и DisplayPort, в марте 2010 г.[63]
В декабре 2009 года Nvidia объявила, что не будет поддерживать инициативы по бесплатной графике.[50] 23 сентября 2013 года компания объявила, что выпустит некоторую документацию по своим графическим процессорам.[64]
Модерн почти полностью основан на информации, полученной через разобрать механизм с целью понять, как это работает. Этот проект направлен на создание 3D-ускорения для X.Org/Wayland с помощью Галлий3D.[65] 26 марта 2012 года журнал Nouveau's DRM Компонент был отмечен как стабильный и продвинут из промежуточной области ядра Linux.[66] Модерн поддерживает Тесла - (и ранее), Ферми -, Кеплер - и Максвелл на базе графических процессоров.[67] 31 января 2014 года сотрудник Nvidia Александр Курбот (Alexandre Courbot) выпустил обширный набор исправлений, который добавляет начальную поддержку GK20A (Тегра К1 ) в модерн.[68] Сообщается, что в июне 2014 года Codethink провел Wayland -основан Вестон наборщик с Ядро Linux 3.15, используя EGL и "стек графических драйверов со 100% открытым исходным кодом" на Тегра К1.[69] Доступна матрица характеристик.[70] В июле 2014 года Nouveau не смог превзойти драйвер Nvidia GeForce из-за отсутствия поддержки повторного тактирования. Tegra-re - это проект, который работает над обратным проектированием nVidia VLIW -основан Тегра серия графических процессоров, предшествующих Tegra K1.[71]
Nvidia распространяет проприетарные драйверы устройств для Tegra через OEM-производителей и как часть своего комплекта разработки Linux for Tegra (ранее L4T).[72] Nvidia и партнер, Авионический дизайн, работали над отправкой Grate (бесплатных драйверов с открытым исходным кодом для Tegra) в апстрим основной ветки ядра Linux в апреле 2012 года.[73][74]Соучредитель и генеральный директор компании изложил план развития процессоров Tegra с Ubuntu Unity на конференции 2013 г. Конференция по технологиям GPU.[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.
Компания работала над оптимизацией своих бесплатных Linux драйверы производительности, приближающиеся к их Windows аналоги, особенно на Песчаный Мост и более новое оборудование, в котором оптимизация производительности позволила драйверу Intel превзойти их проприетарные драйверы Windows в определенных задачах в 2011 году.[77][78][79] Некоторые улучшения производительности также могут принести пользу пользователям более старого оборудования.[80]
Поддержка Intel's LLC (кэш последнего уровня, кэш L4, Crystalwell и Iris Pro) был добавлен в ядро Linux 3.12,[81][82] В компании работает от 20 до 30 разработчиков графики для Linux на постоянной основе.[83]
Matrox
Matrox разрабатывает и производит Matrox Mystique, Пархелия, G200, G400 и G550. Хотя компания предоставляет бесплатные драйверы с открытым исходным кодом для своих наборов микросхем, которые старше G550; Чипсеты новее, чем G550, поддерживаются драйвером с закрытым исходным кодом.
S3 Графика
S3 Графика развивает S3 Трио, ViRGE, дикий и Хром, поддерживаемый OpenChrome.[84]
Arm Holdings
Arm Holdings это басни полупроводниковая компания, которая лицензирует полупроводниковые ядра интеллектуальной собственности. Хотя они известны лицензированием Набор инструкций ARM и Процессоры на его основе они также разрабатывают и лицензируют Серия Мали графических процессоров. 21 января 2012 г. Фороникс сообщили, что Люк Верхаген был инициатором попытки реверс-инжиниринга графических процессоров Arm Holdings Mali (в частности, версий Mali-200 и Mali-400). Проект обратного инжиниринга, известный как Lima, был представлен на FOSDEM 4 февраля 2012 г.[85][86] 2 февраля 2013 г. Верхэген продемонстрировал Quake III Arena в режиме timedemo, запущенном поверх драйвера Lima.[87] В мае 2018 года разработчик из Лимы разместил драйвер для включения в ядро Linux.[88] По состоянию на май 2019 года драйвер Lima является частью основного ядра Linux.[89]
Panfrost - это модифицированный драйвер для графических процессоров Mali Txxx (Midgard) и Gxx (Bifrost). Представляем Panfrost доклад был представлен на X.Org Developer's Conference 2018. По состоянию на май 2019 года драйвер Panfrost является частью основного ядра Linux.[90]
ARM не заявила о своем намерении предоставлять поддержку своего оборудования для ускорения графики, лицензированного по бесплатной лицензии с открытым исходным кодом. Однако сотрудники ARM разослали исправления для ядра Linux для поддержки их ARM HDLCD. контроллер дисплея и SIP-блоки Mali DP500, DP550 и DP650 в декабре 2015 и апреле 2016.[91][92]
Воображение Технологии
Воображение Технологии полупроводниковая компания без фабрик, которая разрабатывает и лицензирует полупроводниковые ядра интеллектуальной собственности, среди которых PowerVR GPU. Intel произвела ряд На базе PowerVR GPU. Графические процессоры PowerVR широко используются в мобильных SoC. Компания не предоставляет драйверы FOSS или общедоступную документацию для PowerVR. Благодаря широкому использованию во встраиваемых устройствах, Фонд свободного программного обеспечения внесла реверс-инжиниринг драйвера PowerVR в список своих приоритетных проектов.[93]
Виванте
Корпорация Виванте полупроводниковая компания без фабрики, которая лицензирует полупроводниковые ядра интеллектуальной собственности и разрабатывает графические процессоры серии GCxxxx. Проприетарный драйвер Linux с закрытым исходным кодом Vivante состоит из частей ядра и пользовательского пространства. Хотя компонент ядра имеет открытый исходный код (GPL ) компоненты пользовательского пространства, состоящие из реализаций GLES (2) и библиотеки HAL, не являются; они содержат основную часть логики драйвера.
Владимир Дж. Ван дер Лаан обнаружил и задокументировал биты состояния, командный поток и шейдер ISA, изучая, как работают большие двоичные объекты, исследуя дампы командного потока и управляя ими. Драйвер Etnaviv Gallium3D пишется на основе этой документации. Работа Ван дер Лаана была вдохновлена драйвером Lima, и в рамках проекта был создан функциональный, но неоптимизированный драйвер Gallium3D LLVM. Драйвер Etnaviv показал лучшие результаты, чем проприетарный код Vivante в некоторых тестах, и поддерживает серии Vivante GC400, GC800, GC1000, GC2000, GC3000 и GC7000.[94] В январе 2017 года Etnaviv был добавлен в Меса с поддержкой OpenGL ES 2.0 и Desktop OpenGL 2.1.[95]
Qualcomm
Qualcomm развивает Адрено (ранее ATI Imageon ) серии мобильных графических процессоров и включает ее как часть своих Серия мобильных SoC Snapdragon. Фороникс и Slashdot сообщал в 2012 году, что Роб Кларк, вдохновленный драйвером Lima, работал над обратным проектированием драйверов для серии графических процессоров Adreno.[96][97] В упомянутом сообщении блога Кларк написал, что занимается этим проектом в свободное время и что платформа Qualcomm является его единственной жизнеспособной целью для работы с открытой трехмерной графикой. Его работодатели (Инструменты Техаса и Линаро ) были связаны с Воображение PowerVR и ARM Мали ядра, которые были бы его основными целями; у него были рабочие потоки команд для поддержки 2D, и команды 3D, казалось, имели те же характеристики.[98] Код драйвера был опубликован Великолепный "фридрено",[99]и был перемещен в Месу.[100][101] В 2012 году был завершен рабочий ассемблер шейдеров;[102]демонстрационные версии были разработаны для наложение текстуры[103] и затенение по фонгу,[104] используя реверсивный компилятор шейдеров. Кларк продемонстрировал, что Freedreno запускает компоновку рабочего стола, XBMC медиаплеер и Quake III Arena в FOSDEM 2 февраля 2013 г.[105]
В августе 2013 года компонент ядра freedreno (драйвер MSM) был принят в основную линию и доступен в ядре Linux 3.12 и новее.[106] В Драйвер DDX получил поддержку для управления сервером файловые дескрипторы требующий Сервер X.Org версия 1.16 и выше в июле 2014 г.[107] В январе 2016 года драйвер в стиле Mesa Gallium3D получил поддержку Adreno 430;[108] в ноябре того же года драйвер добавил поддержку серии Adreno 500.[109] Freedreno можно использовать на таких устройствах, как 96Доски Dragonboard 410c и Nexus 7 (2013 г.) в традиционных дистрибутивах Linux (например, Debian и Fedora ) и дальше Android.
Broadcom
Broadcom разрабатывает и проектирует VideoCore Серии GPU в составе своих SoC. Поскольку он используется Raspberry Pi, существует значительный интерес к драйверу FOSS для VideoCore.[111] 24 октября 2012 года Raspberry Pi Foundation в сотрудничестве с Broadcom объявили, что они открыли исходный код «всего кода ARM (CPU), который управляет GPU».[нужна цитата ] Однако это объявление вводило в заблуждение; по словам автора реконструированного драйвера Lima, новые компоненты с открытым исходным кодом позволяли только передачу сообщений между процессором ARM и VideoCore, но не давали понимания Videocore и мало дополнительной программируемости.[112] Графический процессор Videocore запускает ОСРВ который занимается обработкой; видеоускорение осуществляется с помощью прошивки RTOS, закодированной для ее проприетарного графического процессора, и на тот момент прошивка не была в открытом доступе.[113] Поскольку не было ни набор инструментов нацелен на проприетарный графический процессор или документально подтвержденный Набор инструкций, если исходный код прошивки станет доступным, никаких преимуществ не будет. Проект Видеокорев[114] попытался задокументировать графические процессоры VideoCore.
28 февраля 2014 г. (вторая годовщина Raspberry Pi) Broadcom и Raspberry Pi Foundation объявили о выпуске полной документации для графического ядра VideoCore IV и полной версии исходного кода графического стека под лицензией Лицензия BSD с 3 пунктами.[115][116] Код для 3D-графики с бесплатной лицензией был передан в Mesa 29 августа 2014 г.[117] и впервые появился в версии 10.3 Mesa.
Другие поставщики
Несмотря на то что Кремниевые интегрированные системы и VIA Technologies проявили ограниченный интерес к драйверам с открытым исходным кодом, оба выпустили исходный код, который был интегрирован в X.Org разработчиками СОПО.[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.
Поставщики, не связанные с оборудованием, также могут помочь инициативам по бесплатной графике. Красная шляпа имеет двух штатных сотрудников (Дэвид Эйрли и Жером Глисс), работающих над программным обеспечением Radeon,[123] и Проект Fedora спонсирует мероприятие Fedora Graphics Test Week перед запуском нового Дистрибутив Linux версии для тестирования бесплатных графических драйверов.[124] Другие компании, предоставившие разработку или поддержку, включают: Novell и VMware.
Открытые аппаратные проекты
Проект VGA направлен на создание низкобюджетного проекта с открытым исходным кодом. VGA -совместимая видеокарта.[125]В Открыть графический проект стремится создать графический процессор с открытым аппаратным обеспечением. Open Graphics Device v1 имеет два выхода DVI-I и 100-контактный разъем IDC. В сентябре 2010 года первые 25 плат OGD1 были доступны для подачи заявки и покупки.[126] В Млечный туман система на чипе, ориентированный на встроенную графику вместо настольных компьютеров, поддерживает вывод VGA, ограниченный вершинный шейдер и блок 2D-текстурирования.[127]
Нюзи,[128] экспериментальный процессор GPGPU, включает синтезируемый аппаратный дизайн, написанный на Система Verilog, эмулятор набора команд, LLVM компилятор C-C ++, программные библиотеки и тесты, а также исследует параллельное программное и аппаратное обеспечение. Может работать на 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. Получено 2007-02-01.
- ^ "Что означает" двоичный "в драйвере устройства?". Получено 14 ноября, 2017.
- ^ «3.9:» Клякса!"". OpenBSD. Получено 2007-02-12.
- ^ «Linux - Как Rapid7 Advisory R7-0025 влияет на драйвер NVIDIA Unix?».
- ^ "a / lt-binary".
- ^ Кроа-Хартман, Грег. «Мифы, ложь и правда о ядре Linux». Журнал обезьяны ядра Linux.
- ^ Питер Гутманн (2006-12-26). «Анализ затрат на защиту содержимого Windows Vista». Получено 2007-01-28. Цитировать журнал требует
| журнал =
(помощь) - ^ Linux Weekly News, 14 августа 2006 г .: X.org, дистрибьюторы и проприетарные модули
- ^ Грег Кроа-Хартман (2006). «Мифы, ложь и правда о ядре Linux». Симпозиум по Linux.
- ^ «Интерфейс драйвера ядра Linux». Архивировано из оригинал на 2013-11-04. Получено 2014-03-04.
- ^ "SamsungGalaxyBackdoor". 2014-02-04.
- ^ «Android приближается к 80% доли рынка в глобальных поставках смартфонов, согласно слайдам, опубликованным на iOS и BlackBerry, по данным IDC».
- ^ «Фреймворк 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. Получено 2014-03-19.
- ^ "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 - 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. Получено 2016-06-04.
- ^ "Отслеживание состояния 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. Получено 2014-07-15.
- ^ «AMD: характеристики графического процессора без соглашений о неразглашении»!. 2007-09-10. Получено 2014-07-15.
- ^ Дэвид Эйрли (13 сентября 2007 г.). «AMD передает мне спецификации на компакт-диске». Архивировано из оригинал на 2012-10-22. Получено 2014-07-15.
- ^ а б «Ответ Nvidia на последние работы в стиле модерн». Фороникс. 2009-12-14.
- ^ «AMD изучает новую стратегию драйверов для Linux». 2014-03-22. Получено 2014-03-23.
- ^ «Первоначальный выпуск драйвера AMDGPU». 2015-04-20. Получено 2016-04-26.
- ^ «AMD движется вперед с единой стратегией драйверов Linux, новым драйвером ядра». Фороникс.
- ^ «Документация по драйверу AMDGPU». Freedesktop.org.
- ^ «AMD представляет начальную поддержку драйвера AMDGPU для графических процессоров GCN 1.0 / Southern Islands». Фороникс.
- ^ "libdrm 2.4.63". 2015-08-14.
- ^ «Поддержка EGL на 32-битных платформах». 2013-10-04. Получено 2014-07-15.
- ^ "lib32-nvidia-utils 340.24-1 Список файлов". 2014-07-15.
- ^ "Страница драйвера X.org nv". 2013-05-20.
- ^ "Нашивка Дирка Хондела". 1998-11-18. Архивировано из оригинал на 2014-02-01. Получено 2014-07-15.
... в отличие от такого запутанного кода. Мы не рассматриваем это как бесплатное программное обеспечение в соответствии с нашими стандартами.
- ^ «Модерн - Сообщество и прошлое, настоящее и будущее» (PDF). 2011-09-13. Получено 2014-07-15.
- ^ а б Дэвид М. Эйрли (19 июля 2006 г.). «Графические драйверы с открытым исходным кодом - они не убивают котят» (PDF). Материалы первого тома симпозиума по Linux. Оттава, Онтарио, Канада. Архивировано из оригинал (PDF) на 2007-02-08. Получено 2007-01-28.
- ^ «Nvidia осуждает» NV"". Фороникс. 2010-03-26.
- ^ «Nvidia предлагает выпустить общедоступную документацию по определенным аспектам своих графических процессоров». 2013-09-23. Получено 2013-09-24.
- ^ «Nouveau: ускоренный драйвер с открытым исходным кодом для карт nVidia».
- ^ «Водитель в стиле модерн заканчивает постановку». 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». дурачок (Список рассылки). Получено 2012-08-21.
- ^ Ларабель, Майкл (11 апреля 2012 г.). «Подсказка для драйвера NVIDIA Tegra 2 DRM / KMS». Phoronix Media. Получено 2012-08-21.
- ^ «GTC 2013: Дорожная карта NVIDIA Tegra (6 из 11)». YouTube. Получено 2013-07-10.
- ^ Обзор производителей видеокарт и того, насколько хорошо они работают с Ubuntu Ubuntu Gamer, 10 января 2011 г. (статья Люка Бенстеда); (копия статьи )
- ^ «Intel Linux SNB обеспечивает более высокую производительность». Фороникс. 2011-03-22. Получено 2011-03-23.
- ^ «Производительность Intel Sandy Bridge снова повышается». Фороникс. 2011-03-31. Получено 2011-03-31.
- ^ «Драйвер Intel SNB для Linux не может запустить драйвер для Windows». Фороникс. 2011-05-23. Получено 2011-05-23.
- ^ «Исторический взгляд на производительность графики Intel Ironlake». Фороникс. 2011-05-25. Получено 2011-05-25.
- ^ "drm / i915: использовать eLLC / LLC по умолчанию, если доступно".
- ^ "drm / i915: использовать кэширование со сквозной записью для плоскости отображения на Iris".
- ^ «У Intel 20-30 штатных разработчиков графики для Linux». 2013-02-02.
- ^ «OpenChrome». Получено 16 ноября 2017.
- ^ phoronix (6 февраля 2012 г.). "Phoronix.com - FOSDEM 2012 - ARM Mali с открытым исходным кодом" - через YouTube.
- ^ Phoronix, 21 января 2012 г .: Драйвер Mali GPU с открытым исходным кодом и обратной разработкой
- ^ "Демо Quake 3 Arena поверх водителя Лимы!". Архивировано из оригинал на 09.02.2013.
- ^ "Драйвер Lima DRM [LWN.net]". lwn.net.
- ^ drm / lima: драйвер для графических процессоров ARM Mali4xx}
- ^ drm/panfrost: Add initial panfrost driver
- ^ "drm: Add support for the ARM HDLCD display controller". Список рассылки ядра Linux. 2015-12-11.
- ^ «Начальная поддержка контроллера дисплея ARM Mali». Список рассылки ядра Linux. 2016-04-01.
- ^ Free Software Foundation, Apr 25, 2005: Высокоприоритетные проекты бесплатного программного обеспечения
- ^ "laanwj/etna_viv".
- ^ "etnaviv: gallium driver for Vivante GPUs".
- ^ Michael Larabel (14 April 2012). "An Open-Source Graphics Driver For Snapdragon". Фороникс. Получено 15 апреля 2012.
- ^ Soulskill (14 April 2012). "Open-Source Qualcomm GPU Driver Published". Slashdot. Получено 15 апреля 2012.
- ^ Rob Clark (14 April 2012). "Fighting back against binary blobs!". Линаро. Получено 15 апреля 2012.
- ^ Freedreno, 15 April 2012 В архиве 24 октября 2012 г. Wayback Machine
- ^ "Mesa/Gallium3D Gets Its First ARM SoC GPU Driver - Phoronix".
- ^ http://lists.freedesktop.org/archives/mesa-commit/2013-March/042190.html
- ^ Rob Clark (29 July 2012). "freedreno update: first renders shader assembler!". Получено 16 августа 2012.
- ^ Rob Clark (5 August 2012). "textured cube (fullscreen!)". Получено 16 августа 2012.
- ^ Rob Clark (15 August 2012). "Open Source lolscat!". Получено 16 августа 2012.
- ^ "Open ARM GPU drivers – Freedreno". FOSDEM. 2013-02-02. Получено 2014-07-15.
- ^ "Merge the MSM driver from Rob Clark". kernel.org. 2013-08-28. Получено 2014-06-04.
- ^ "xf86-video-freedreno 1.2.0". freedesktop.org. 2014-07-14.
- ^ "Add support for adreno 430". Получено 15 ноября 2017.
- ^ "Index Mesa-Mesa". Получено 15 ноября 2017.
- ^ Anholt, Eric (2014-06-17). "New Job at Broadcom". Архивировано из оригинал on 2015-04-07.
- ^ "Phoronix on the Raspberry Pi GPU".
- ^ "Open Source ARM userland - Raspberry Pi". 24 октября 2012 г.
- ^ "Open Source ARM userland - Raspberry Pi". 24 октября 2012 г.
- ^ "hermanhermitage/videocoreiv".
- ^ "Raspberry Pi marks 2nd birthday with plan for open source graphics driver".
- ^ Upton, Eben (28 February 2014). "A birthday present from Broadcom - Raspberry Pi". Фонд Raspberry Pi. Получено 8 июля 2019.
- ^ "vc4: Initial skeleton driver import". The Mesa 3D Graphics Library. 2014-08-09.
- ^ Майкл Ларабель (2008-07-26). "VIA Publishes Three Programming Guides". Фороникс. Получено 2008-08-04.
- ^ Майкл Ларабель (2009-11-21). "VIA's Linux TODO List... Maybe Look Forward To 2011?". Фороникс. Получено 2009-12-30.
- ^ VIA's Open Linux Graphics Driver Has Been Defenestrated Фороникс, January 06, 2011 (Article by Майкл Ларабель )
- ^ "Libdlo". Получено 16 ноября 2017.
- ^ "DisplayLink Releases Linux Source Code for its USB Graphics Processors" (Пресс-релиз). DisplayLink. 2009-05-15. Получено 2009-05-15.
- ^ AMD's Hiring Another Open-Source Driver Developer Фороникс, December 11, 2010 (Article by Майкл Ларабель )
- ^ It's Fedora Graphics Test Week Фороникс, February 22, 2011 (Article by Майкл Ларабель )
- ^ "Home of Project VGA, the low budget, open source, VGA compatible video card". 090503 wacco.mveas.com
- ^ "Linux Fund: OGD1". Открыть графический проект. 2010-09-23. Получено 2011-11-04.
- ^ Bourdeauducq, Sebastien (June 2010). "A performance-driven SoC architecture for video synthesis" (PDF). Архивировано из оригинал (PDF) на 2011-07-27. Получено 2010-11-05.
- ^ "Nyuzi is an experimental GPGPU processor".
- ^ "SOC Test Environment".
- ^ "Running on Terasic DE2-115 FPGA board".
- ^ "Project IceStorm Homepage".
- ^ "Project Trellis Repository".
- ^ "SymbiFlow Homepage".
внешняя ссылка
- Linux graphics drivers from Intel
- Best Graphics Card For Linux
- NVIDIA's Unix drivers portal page
- Project VGA
- Direct3D 9 state tracker on Gallium3D
- d3d1x: add new Direct3D 10/11 COM state tracker for Gallium
- Freedreno homepage
- Freedreno/Gallium update
- Тестовый набор Фороникс
- Status updates for three graphics drivers (Nouveau, amdgpu and Etnaviv) LWN.net 2015