Опубликован код драйвера для видеоускорителя Broadcom VideoCore, используемого в Raspberry Pi

Разработчики проекта Raspberry Pi объявили о публикации компанией Broadcom исходных текстов драйвера для графической подсистемы VideoCore, используемой в одночиповых системах, производимых компанией Broadcom, и, в частности, в SoC BCM2835, на базе которого основаны платы Raspberry Pi. Примечательно, что компания Broadcom стала первым производителем, опубликовавшим исходные тексты полноценного драйвера для своих мультимедийных SoC, а плата Raspberry Pi стала первым продуктом для которого доступен полнофункциональный открытый графический стек, созданный не на основе обратного инжинигинга.

Код драйвера размещён в общедоступном репозитории и включает в себя как компоненты, работающие на уровне ядра Linux (модуль vcihq для передачи сообщений к VideoCore), так и набор библиотек для организация взаимодействия с GPU из пользовательских приложений и задействования всех поддерживаемых чипом средств аппаратной акселерации. В частности, в поставку входят библиотеки с реализацией интерфейсов к EGL, mmal, GLESv2, vcos, openmaxil, vchiq_arm, bcm_host, WFC и OpenVG. Код библиотек открыт под лицензией BSD, а часть, работающая на уровне ядра Linux распространяется под двойной лицензией GPL/BSD. Открыты только компоненты, работающие на CPU ARM, код загружаемой в GPU прошивки остаётся закрытым и требует заливки бинарного блоба в процессе загрузки системы.

Графическая подсистема чипов Broadcom кардинально отличается от подсистем других производителей и представляет собой по сути самодостаточный процессор, выходящий за рамки DSP, на котором работает некоторое подобие операционной системы (код прошивки остаётся закрытым). GPU может выполнять приложения независимо от остальной системы, самостоятельно компилировать шейдеры и обменивается сообщениями с системным процессором через совместно используемую область памяти.

Отмечается, что открытие кода драйвера позволит заинтересованным энтузиастам обеспечить поддержку Broadcom VideoCore в изначально не поддерживаемых операционных системах, таких как FreeBSD, NetBSD, Plan9, RISC OS и Haiku, создать прослойку для работы Wayland поверх EGL, улучшить интеграцию GLES/VG с X.Org, разработать драйверы для Mesa, подготовить выполняемые на уровне ядра части драйвера к включению в состав основного ядра Linux. Лицензия BSD выбрана для упрощения интеграции кода с компонентами графического стека Linux, большинство составных частей которого поставляется под лицензией MIT (например, X.Org, Wayland и Mesa).

©  OpenNet