1XilinxbackendXilinx支持4种用于MPSoC的libMali后端:X11,Wayland / GBM,Fbdev,Headless-EGL。 2QTQT支持4种插件或后端,FB,X11,Wayland,eglfs。
对于不同的插件或后端,QT应用程序层是相同的。其中,FB无法使用GPU进行渲染。
EGLFS允许QT应用程序直接在EGL和OpenGLES2.0上运行。也就是说,您可以在没有窗口管理器(windowingsystemlikeX11orWayland)的情况下运行QT软件。
对于带有GPU的嵌入式Linux系统,建议使用eglfs。使用KMS / DRM时,EGLFS的后端为eglfs_kms。
有关更多信息,请参阅QT文档https://doc.qt.io/qt-5/embedded-linux.html 3Xilinx支持状态Xilinx支持eglfs_kms。本文中的命令可以在Xilinx的ZCU102和ZCU106板上运行。
所有测试均基于ZCU102和ZCU106的PetaLinuxBSP项目。 3.1 rootfs在Linux的rootfs中,添加与qt相关的软件。
使用命令petalinux-config-crootfs来配置Linux rootfs并启用packagegroup-petalinux-qt。 3.2当libMali使用eglfs_kms时,libMali.so.9.0使用相应的Wayland版本,指向/usr/lib/wayland/libMali.so.9.0。
MALI_BACKEND_DEFAULT =“ wayland”在文件project-spec / meta-user / conf / petalinuxbsp.conf中,添加以下行以使libMali.so.9.0指向/usr/lib/wayland/libMali.so.9.0。 update-alternatives-当Linux正在运行以使libMali.so.9.0指向/ usr时,install / usr / lib / libMali.so.9.0libmali / usr / lib / wayland / libMali.so.9.090也可以执行以下命令。
/lib/wayland/libMali.so.9.0。 3.3 QT环境设置为了使QT使用eglfs_kms,需要设置以下两个环境变量。
exportQT_QPA_PLATFORM = eglfsexportQT_QPA_EGLFS_INTEGRATION = eglfs_kmsQT也可以通过JSON文件设置。可以设置更多参数。
通过导出系统变量QT_QPA_EGLFS_KMS_CONFIG,可以指定JSON文件名,例如exportQT_QPA_EGLFS_KMS_CONFIG =“ / home / root / kms.conf”。 kms.conf的内容如下:{“ device”:“ / dev / dri / card0&”,“ hwcursor”:false,“ pbuffers”:true,“ outputs”:[{“ name”” ; ::“ DP”,“ mode”:“ 3840x2160&”}]} 3.4检测显示通过以下命令检查显示并设置其分辨率。
ls / dev / dri / by / path / modetest-Dfd4a0000.zynqmp-displaymodetest-Dfd4a0000.zynqmp-display-s43:1920x1080-60@BG24modetest-Dfd4a0000.zynqmp-display-s43:3840x2160-29.98@BG243.5QT测试程序3.5 .1。由默认测试程序PetaLinux编译的文件系统在/ usr / share / examples / opengl目录下,具有许多opengl测试程序,例如多维数据集和纹理。
/usr/share/examples/opengl/cube/cube/usr/share/examples/opengl/textures/textures3.5.2.qt5everywheredemo一个更复杂的opengl测试程序QtDemo可以由qt5everywheredemo编译。以下命令直接编译qt5everywheredemo。
在petalinux-build-cqt5everywheredemo-xcompile在文件petalinuxbsp.conf中添加以下行之后,PetaLinux编译时将包括qt5everywheredemo。在MALI_BACKEND_DEFAULT =“ wayland” IMAGE_INSTALL_append =“ qt5everywheredemo”之后,您可以找到root @ xilinx-zcu106-2020_2#find-name“ QtDemo”。
/usr / share / qt5everywheredemo-1.0 / qt5every。 /share/qt5everywheredemo-1.0/QtDemo。