我发现您也在使用 KaRo TX6QP。我已经成功让eglfs运行在QT5上
TX6DL/TX6S/TX6QP。
对于较新的内核(例如主线),您不需要已弃用的 vivante-gpu-driver。把它从你的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 为 TX6{Q,QP,DL,S,UL,ULL} 启用必要的 QT5 选项。
现在 QT5 构建了它的eglfs平台gdm
所需的模块mesa-etnaviv
.
2.在台面上启用镓和etnaviv
再次,在您自己的图层中创建文件recipes-graphics/mesa/mesa_17.1.7.bbappend
. 但请检查 17.1.7 是否也是您的 mesa 版本!要检查您的 mesa-version,请在以下位置搜索 mesa-recipe: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
module.
现在您已准备好使用 QT5-Etnaviv-Support 烘焙您自己的图像!
3. 正确开始您的申请!
两个 .bbappend 都不会修补 qt5-qmake 以启用开箱即用的正确平台。
./yourapplication -platform eglfs
现在您的应用程序应该能够成功并愉快地使用egl 运行。但是,您的 QT5 可能想要使用不同的 eglfs-deviceintegration。您可以通过运行来检查
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