Графическое оборудование и Свободное программное обеспечение — Википедия

Схема рендеринга: ОС Linux и приложения, использующие OpenGL.
Графический стек Linux

Свободное программное обеспечение (СПО) может быть использовано с разнообразным графическим оборудованием, в основном благодаря проекту X.Org. Существуют разные уровни поддержки оборудования — от полностью поддерживаемого до неподдерживаемого. Некоторые производители оборудования не предоставляют драйверов со свободным исходным кодом или техническую документацию для написания независимыми разработчиками драйверов с поддержкой 3D-ускорения, и поддержка продуктов этих компаний может быть ограниченной: могут предоставляться только бинарные драйверы (так называемые блобы), или же недостаток документации может вынуждать разработчиков свободных драйверов к обратной разработке оборудования, или же поддержки не будет совсем. В таких случаях бинарные драйверы противоречат философии СПО, качеству и безопасности ПО. Также это может привести к тому, что распространение ядра линукс вместе с закрытым ПО может оказаться незаконным.

Известный источник о быстродействии, http://www.free3d.org Архивная копия от 28 февраля 2022 на Wayback Machine, собирает информацию о быстродействии 3D, высылаемую пользователями. Phoronix также занимается сравнением быстродействия свободных драйверов.

Поддержка свободным программным обеспечением

[править | править код]

В общем случае, видеодрайвер vesa поддерживает без графического ускорения работу большинства видеокарт, с разрешениями экрана, заданными в BIOS производителем.

Проприетарный драйвер от ATI (ныне AMD) называется fglrx и распространяется как часть пакета AMD Catalyst Linux, который можно загрузить из интернета или получить из репозиториев некоторых дистрибутивов.

Свободный драйвер «radeon» представляет поддержку 2D, Xv и 3D-ускорения для видеокарт от Radeon 7000 (R100) до Radeon HD 7000 (архитектура Southern Islands). Также он известен как драйвер «ati»[1].

Для видеокарт серии HD7700 и выше, основанных на новой архитектуре GCN, применяется свободный драйвер RadeonSI, который пока менее функционален, чем драйвер R600g[2].

ATI выпускала спецификации для некоторых чипсетов в 2007—2009 годах. AMD также участвует в разработке и поддержке драйвера radeon.

В прошлом, Nvidia предоставляла документацию для чипов серии RIVA TNT и старее, предоставляя частично свободный и частично обфусицированный[3][4] драйвер nv для X.Org. 26 марта 2010 года объявила о прекращении поддержки новых GPU в драйвере nv. Существует проект свободных драйверов nouveau, в котором благодаря обратной разработке задействовано 3D-ускорение с помощью Gallium 3D. Матрица возможностей драйвера nouveau представлена на сайте проекта[5].

Для Nvidia tegra существует проприетарный драйвер (как часть Linux For Tegra Архивная копия от 10 мая 2013 на Wayback Machine). В апреле 2012 г., в связи с «производственной необходимостью», Nvidia совместно с партнёром Avionic Design GmbH начали работать над продвижением свободного драйвера в ядро Linux[6][7].

У Intel длительная история выпуска свободных драйверов для их графических ядер. Написанием драйверов занимается сторонний исполнитель Tungsten Graphics.

Есть только одно исключение: встроенная графика GMA 500/600 и GMA 3600/3650, используемая в процессорах Atom, — это не целиком собственный продукт от Intel[8] (там графические ядра PowerVR лицензированные у Imagination Technologies, а значит возможность появления свободных драйверов определяет именно эта фирма).

Существует две версии X.Org драйвера, драйвер xorg-video-i810, который поддерживает i810 и некоторые более старые модели и обновлённый драйвер xf86-video-intel Архивная копия от 11 мая 2013 на Wayback Machine, который изначально поддерживал те же модели, но в новых версиях 2.0 и 2.1 добавлена поддержка G33, Q33 и Q35.

Для поддержки ОС Unix и Linux, Matrox выпустила только бинарные драйверы для большинства своих продуктов, а также драйверы с частично доступным исходным кодом для видеокарт на основе чипа G550, работающие совместно с блобами. В дополнение к закрытым драйверам, сообщество разработчиков DRI выпустило полностью GPL-совместимые драйверы для большого числа видеокарт Matrox[9].

ARM разрабатывает графические ускорители Mali и продаёт лицензии как на программные блоки, так и аппаратные (см. IP-cores). 21 января 2012 года Phoronix сообщил, что Luc Verhaegen с помощью обратной разработки пишет драйвер Lima для Mali-200 и Mali-400[10]. Драйвер был представлен на выставке FOSDEM 4 февраля 2012 года.

В мае 2013 года на основе Ubuntu появилась сборка «Picuntu» с работающим ускорением графики для устройств на SoC Rockchip RK 3066 с GPU Mali-400[11].

Imagination Technologies

[править | править код]

Imagination Technologies разрабатывают GPU PowerVR и продают их как IP-cores. Производитель не предоставляет ни свободного драйвера, ни документации к своей продукции. Фонд свободного программного обеспечения поместил в список высокоприоритетных проектов обратную разработку драйвера PowerVR.

Qualcomm разрабатывают и производят GPU Adreno, чаще всего как часть системы на кристалле Snapdragon. В 2012 году Phoronix и Slashdot сообщили, что Rob Clark занимается обратной разработкой GPU Qualcomm Adreno (ранее называвшееся ATI Imageon), которое используется в мобильной платформе Snapdragon. Свободный драйвер, названный Freedreno, опубликован на GitHub. В 2012 году была завершена работа над шейдерным ассемблером и была продемонстрирована работа с текстурами и затенением по Фонгу. В марте 2013 г. Freedreno был добавлен[12] в Mesa (свободную реализацию графического API OpenGL).

Лицензируемые GPU от Vivante широко используются в различных системах на кристалле (Marvell Armada, Rockchip 2918, Freescale i.MX6, …[13]), но свободный драйвер производителем не предоставляется. В 2013 году был начат открытый проект Etna_viv[14] по написанию такого драйвера (также методами обратной разработки). Автором проекта является Владимир Дж. Ван-дер-Лан из Нидерландов. Он выкладывает сообщения по данной теме в своём блоге, а сам проект размещён на GitHub Архивная копия от 17 июля 2014 на Wayback Machine, где имеется своя специализированная Вики[15]. Целью проекта является разработка полноценных драйверов Mesa/Gallium3D. В рамках данного проект уже создан драйвер OpenGL ES 2.0 для версий 3D GPU с одним пиксельным конвейером (ядра GC1000 и ниже), его надёжности и функциональности достаточно для запуска таких игр, как Quake 3 Arena[16], Descent 2 rebirth и Hurrican[англ.][17]. Тем не менее проект находится на начальной стадии развития и автор призывает к помощи в развитии проекта[18][19].

Broadcom разрабатывают и производят GPU VideoCore, который используется, к примеру, в Raspberry Pi. Код драйвера сделали свободным в октябре 2012 года, однако прошивка видеокарты остаётся проприетарной.[20]

Другие производители

[править | править код]

SiS и VIA проявляют ограниченный интерес.

DisplayLink[англ.] анонсировал свободный проект libdlo, с упором на поддержку USB-видеокарт в Linux и на других платформах. Код доступен под лицензией LGPL.

Примечания

[править | править код]
  1. Описание драйвера radeon Архивная копия от 25 марта 2013 на Wayback Machine на сайте freedesktop.org
  2. В MESA-драйвере RadeonSI реализована поддержка тайлинга и сжатых текстур. Дата обращения: 26 апреля 2013. Архивировано 20 мая 2013 года.
  3. README.RIVATNT (недоступная ссылка), 11/18/98: «NVIDIA forced The XFree86 Project to replace the sources we had with sources that were partly run through the C preprocessor in order to remove some of the names that NVIDIA thought might give away IP from NVIDIA. This resulted in unreadable and unmaintainable code.»
  4. Пример обфускации (недоступная ссылка)
  5. Матрица возможностей nouveau. Дата обращения: 14 ноября 2012. Архивировано 12 ноября 2012 года.
  6. Mayo, Jon (2012-04-20). "[RFC 0/4] Add NVIDIA Tegra DRM support". dri-devel (Mailing list). Архивировано 25 декабря 2014. Дата обращения: 21 августа 2012.
  7. Larabel, Michael. A NVIDIA Tegra 2 DRM/KMS Driver Tips Up. Phoronix Media (11 апреля 2012). Дата обращения: 21 августа 2012. Архивировано 19 апреля 2013 года.
  8. Ответ Intel по поводу поддержки GMA 3600 в линукс Архивная копия от 9 июня 2013 на Wayback Machine
  9. Hardware Abstraction Layer by Matrox for G400/450/550 (англ.). dri.freedesktop.org. dri.freedesktop.org. — Бинарный модуль HAL от Matrox для обеспечения дополнительной функциональности чипов G400/450/550. Дата обращения: 22 марта 2017. Архивировано 22 марта 2017 года.
  10. Представлен открытый драйвер для используемого во многих ARM-чипах GPU Mali. Дата обращения: 19 октября 2012. Архивировано 12 мая 2012 года.
  11. Сборка «Picuntu» для Rockchip RK 3066. Дата обращения: 2 мая 2013. Архивировано 6 мая 2013 года.
  12. В Mesa добавлена поддержка первого драйвера GPU для SoC на базе ARM. Дата обращения: 13 марта 2013. Архивировано 26 апреля 2013 года.
  13. GitHub: laanwj/etna_viv (англ.). GitHub (декабрь 2012). — Основная страница ресурса. Дата обращения: 30 марта 2013. Архивировано 6 июня 2014 года.
  14. В рамках проекта etna_viv началась разработка открытого драйвера для GPU Vivante. opennet.ru. — Wladimir J. van der Laan, один из разработчиков системы Bitcoin, основал проект Etna_viv по созданию открытого драйвера для GPU Vivante GCxxx, поставляемых в некоторых ARM-платформах, таких как Marvell Armada 1500, Rockchip RK2918 и Freescale i.MX6. Дата обращения: 14 июня 2013. Архивировано 27 января 2013 года.
  15. GitHub: laanwj/etna_viv Wiki (англ.). GitHub (декабрь 2012). — Wiki-страница ресурса. Дата обращения: 30 марта 2013. Архивировано 6 июня 2014 года.
  16. Wladimir J. van der Laan. Q3A with Etna OpenGL ES driver (англ.) (13 сентября 2013). Дата обращения: 15 октября 2013. Архивировано из оригинала 15 октября 2013 года.
  17. Wladimir J. van der Laan. More etna_viv news (англ.) (28 августа 2013). Дата обращения: 15 октября 2013. Архивировано из оригинала 15 октября 2013 года.
  18. Etnaviv (драйвер для GPU Vivante): Нужна помощь! (11 октября 2013). Дата обращения: 15 октября 2013. Архивировано 15 октября 2013 года.
  19. Wladimir J. van der Laan. Etnaviv: Help needed (англ.) (8 октября 2013). Архивировано из оригинала 15 октября 2013 года.
  20. Опубликован код драйвера для видеоускорителя Broadcom VideoCore, используемого в Raspberry Pi. Дата обращения: 25 октября 2012. Архивировано 25 октября 2012 года.