Драйвер GPU Mali
Документ описывает Linux-драйвер Mali GPU для поддержки аппаратного ускорения OpenGL ES на 1892ВМ14Я.
Драйвер поддерживается в ядре Linux 4.4.
Общие сведения
Особенности драйвера GPU:
Аппаратное ускорение OpenGL ES v1, OpenGL ES v2, EGL v1.4.
Поддержка ускорения приложений в Х11.
Поддержка ускорения приложений, работающих через Linux фреймбуфер.
Поддержка ускорения приложений Qt, работающих через фреймбуфер.
Поддержка форматов пикселей фреймбуфера:
32bpp ARGB 8888,
16bpp ARGB 4444,
16bpp ARGB 1555,
16bpp RGB 565.
Примеры интеграции драйвера в Buildroot (работа через фреймбуфер) и ALT Linux (работа в X11).
Ограничения:
Не поддерживается интеграция с libglvnd для работы с несколькими провайдерами OpenGL ES в X11.
Не поддерживается OpenVG.
Состав драйвера
Драйвер GPU состоит из компонентов, представленных в таблице Таблица 9.
Компонент |
Описание |
Лицензия |
|---|---|---|
|
Ссылка на библиотеку |
– |
|
Ссылка на библиотеку |
– |
|
Ссылка на библиотеку |
– |
|
Библиотеки для фреймбуфера и X11, реализуют API OpenGL ES v1, OpenGL ES v2, EGL v1.4. |
Proprietary |
|
Библиотека для выделения памяти для GPU. |
Apache |
|
Драйвер DDX для интеграции GPU в Xorg. |
GPLv2 |
|
Модуль ядра для выделения памяти для GPU. |
GPLv2 |
|
Модуль ядра GPU. |
GPLv2 |
Компоненты драйвера с открытой лицензией распространяются в виде исходных кодов в Git-репозиториях и в составе MCom-02 Buildroot:
libUMP.so— репозиторий mcom02-libump,ump.ko— репозиторий mcom02-mali-modules,mali.ko— репозиторий mcom02-mali-modules,fbturbo_drv.so— репозиторий xf86-video-fbturbo, не распространяется в составе Buildroot.
Для ускорения приложений в X11 и приложений, работающих через фреймбуфер, предоставляется две
несовместимые библиотеки libMali.so. Библиотеки распространяются в бинарном виде:
для X11 и фреймбуфера — в составе Buildroot (X11 в Buildroot не проверяется),
для X11 — в виде RPM-пакетов совместимых с ALT Linux на сайте dist.elvees.com.
Поддержка X11
На рисунке Рис. 5 представлена диаграмма зависимостей OpenGL и OpenGL ES-приложений X11, компонентов драйвера (обозначены как Mali-X11). Дополнительно на диаграмме представлены:
libGLX.so— библиотека вывода OpenGL-изображений в X11. Распространяется в составе пакета X.org.libGL.so— библиотека программного рендеринга OpenGL. Распространяется с сайта Mesa.
Рис. 5 Диаграмма зависимостей OpenGL и OpenGL ES-приложений X11
Поддержка фреймбуфера
На рисунке Рис. 6 представлена диаграмма зависимостей OpenGL ES-приложений для фреймбуфера, компонентов драйвера (обозначены как Mali-FB).
Рис. 6 Диаграмма зависимостей OpenGL ES-приложений для фреймбуфера
Поддержка Qt
В MCom-02 Buildroot Qt интегрирован с поддержкой OpenGL ES согласно диаграмме
Рис. 6.
Qt настроен на использование EGLFS-плагина для запуска приложений OpenGL ES.
Для указания конкретного плагина производителя GPU необходимо задать переменную окружения
QT_QPA_EGLFS_INTEGRATION:
export QT_QPA_EGLFS_INTEGRATION=eglfs_mali
Для включения отладки системы плагинов необходимо задать переменные окружения:
export QT_DEBUG_PLUGINS=1
export QT_QPA_EGLFS_DEBUG=1
export QT_LOGGING_RULES=qt.qpa.input=true
Подробнее см. Qt for Embedded Linux.
Тест OpenGL ES
Для модулей Салют-ЭЛ24Д1 или Салют-ЭЛ24Д2 загрузить модуль vpoutfb:
modprobe vpoutfb
Запуск теста:
$ cd /opt/mali/cube
$ ./cube
FPS: 75.1
FPS: 75.5
...
Во время теста на HDMI-мониторе наблюдать вращающийся объект. Для остановки приложения необходимо нажать Ctrl+C.
Тест OpenGL ES, EGLFS в Qt
Для проверки работоспособности приложений Qt на графическом ускорителе используется
утилита hellowindow из состава пакета Qt5base. Запуск теста:
export QT_QPA_EGLFS_INTEGRATION=eglfs_mali
/usr/lib/qt/examples/opengl/hellowindow/hellowindow
Во время теста на HDMI-мониторе наблюдать вращающийся трехмерный логотип Qt. Для остановки приложения необходимо нажать Ctrl+C.