Я вижу, вы тоже используете KaRo TX6QP. Мне удалось получить eglfs с запущенным QT5
TX6DL / TX6S / TX6QP.
Для более новых ядер (например, магистрали) вам не нужен устаревший драйвер vivante-gpu. Выбросьте это из своего local.conf
! Вам нужен (или нужен) драйвер mesa-etnaviv
, разработанный сообществом для вашего ядра и QP-платы.
Требуются только три шага, поскольку meta-karo
уже включен mesa
для всех досок, которые вы вставили из meta-karo/conf/machine/include/tx-base.inc
1. Включить поддержку QT5-Mesa
В вашем собственном мета-слое создайте файл recipes-qt5/qt5/qtbase_%.bbappend
со следующим содержимым:
# mx6q = TX6Q/TX6QP, this is the important part!
PACKAGECONFIG_GL_mx6q = "gbm gles2 kms"
# mx6dl = TX6DL/TX6S
PACKAGECONFIG_GL_mx6dl = "gbm gles2 kms"
PACKAGECONFIG_GL_mx6sx = "gles2"
PACKAGECONFIG_GL_mx6sl = "${@base_contains('DISTRO_FEATURES', 'x11', ' gl', ' ', d)}"
PACKAGECONFIG_GL_mx6ul = "${@base_contains('DISTRO_FEATURES', 'x11', ' gl', ' ', d)}"
PACKAGECONFIG_GL_mx7 = "gles2"
QT_CONFIG_FLAGS_append_mx6q = "${@base_contains('DISTRO_FEATURES', 'x11', ' -no-eglfs', ' -eglfs', d)}"
QT_CONFIG_FLAGS_append_mx6dl = "${@base_contains('DISTRO_FEATURES', 'x11', ' -no-eglfs', ' -eglfs', d)}"
QT_CONFIG_FLAGS_append_mx6sx = "${@base_contains('DISTRO_FEATURES', 'x11', ' -no-eglfs', ' -eglfs', d)}"
QT_CONFIG_FLAGS_append_mx6sl = "${@base_contains('DISTRO_FEATURES', 'x11', ' -no-eglfs', ' -no-opengl -linuxfb -no-eglfs -opengl es2 -no-xcb', d)}"
QT_CONFIG_FLAGS_append_mx6ul = "${@base_contains('DISTRO_FEATURES', 'x11', ' -no-eglfs', ' -no-opengl -no-eglfs -linuxfb', d)}"
QT_CONFIG_FLAGS_append_mx7 = "${@base_contains('DISTRO_FEATURES', 'x11', ' -no-eglfs', ' -no-eglfs -linuxfb', d)}"
Этот .bbappend включает необходимые опции QT5 для TX6 {Q, QP, DL, S, UL, ULL}.
Теперь QT5 строит свою платформу eglfs с модулем gdm
, который необходим для mesa-etnaviv
.
2. Включить галлий и этнавив в мезе
Опять же, в вашем собственном слое, создайте файл recipes-graphics/mesa/mesa_17.1.7.bbappend
. Но проверьте, является ли 17.1.7 вашей версией мезы! Чтобы проверить свою меза-версию, найдите меза-рецепт в poky/meta/recipes-graphics/mesa/mesa_[...].bb
!
В вашем .bbappend вставьте следующее:
# FIXME: mesa should support 'x11-no-tls' option
python () {
overrides = d.getVar("OVERRIDES", True).split(":")
if "imxgpu2d" not in overrides:
return
x11flag = d.getVarFlag("PACKAGECONFIG", "x11", False)
d.setVarFlag("PACKAGECONFIG", "x11", x11flag.replace("--enable-glx-tls", "--enable-glx"))
}
# Enable Etnaviv support
PACKAGECONFIG_append = " gallium"
GALLIUMDRIVERS_append = ",etnaviv,imx"
Последние две строки являются наиболее важными: включение gallium
и модуля imx-etnaviv
.
Теперь вы готовы пойти и испечь свой собственный образ с помощью QT5-Etnaviv-Support!
3. Запустите ваше приложение правильно!
Оба .bbappends не исправляют qt5-qmake, чтобы включить нужную платформу из коробки.
./yourapplication -platform eglfs
Теперь ваше приложение должно сработать и успешно работать с egl. Однако может случиться так, что ваш QT5 хочет использовать другую интеграцию eglfs-device. Вы можете проверить это, запустив
export QT_LOGGING_RULES="qt.qpa.*=true"
./yourapplication -platform eglfs
Когда QT жалуется, что не поддерживает эмулированный egl или жалуется, что не может загрузить eglfs_viv, eglfs_emu или eglfs_ *, попытайтесь принудительно заставить его интегрироваться с устройством (gbm) с помощью
export QT_QPA_EGLFS_INTEGRATION=eglfs_gbm
./yourapplication -platform eglfs