Бесплатный и открытый исходный код драйвера графического устройства представляет собой программный стек , который управляет аппаратным обеспечением компьютерной графики и поддерживает интерфейсы прикладного программирования (API) рендеринга графики и выпускается под свободной и открытой лицензией программного обеспечения. Драйверы графических устройств написаны для определенного оборудования для работы в определенном ядре операционной системы и для поддержки ряда API, используемых приложениями для доступа к графическому оборудованию. Они также могут управлять выводом на дисплей, если драйвер дисплея является частью графического оборудования. Большинство бесплатных и открытых исходных кодов драйверов графических устройств разработаны проектом Mesa . Драйвер состоит из компилятора , API рендеринга и программного обеспечения, которое управляет доступом к графическому оборудованию.
Драйверы без свободно (и легально) доступного исходного кода обычно называются бинарными драйверами . Бинарные драйверы, используемые в контексте операционных систем, которые подвержены постоянной разработке и изменению (например, 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]
Когда приложения, такие как движок 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.
Бесплатные и открытые драйверы в основном разрабатываются на и для Linux разработчиками ядра Linux, сторонними энтузиастами программирования и сотрудниками таких компаний, как Advanced Micro Devices . Каждый драйвер состоит из пяти частей:
DRM зависит от ядра . Драйвер VESA обычно доступен для любой операционной системы. Драйвер VESA поддерживает большинство графических карт без ускорения и с разрешениями экрана , ограниченными набором, запрограммированным в Video BIOS производителем. [15]
Графический стек Linux претерпел изменения, обусловленные основным протоколом X Window System .
Собственный драйвер 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 в некоторых случаях.
На конференции разработчиков игр 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.
Собственный драйвер 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 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 разрабатывает серию мобильных графических процессоров 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 .
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 направлен на создание малобюджетной видеокарты с открытым исходным кодом, совместимой с 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.
{{cite journal}}
: Цитировать журнал требует |journal=
( помощь )... против такого запутанного кода. Мы не считаем это свободным программным обеспечением в соответствии с нашими стандартами