diff --git a/meta-digi-dey/dynamic-layers/qt5-layer/STM/recipes-qt/qt5/qtbase/cursor.json b/meta-digi-dey/dynamic-layers/qt5-layer/STM/recipes-qt/qt5/qtbase/cursor.json new file mode 100644 index 000000000..17563c866 --- /dev/null +++ b/meta-digi-dey/dynamic-layers/qt5-layer/STM/recipes-qt/qt5/qtbase/cursor.json @@ -0,0 +1,8 @@ +{ + "device": "/dev/dri/card0", + "outputs": [ + { "name": "HDMI1", "mode": "1280x720", "size": "1280x720" } + ], + "hwcursor": false +} + diff --git a/meta-digi-dey/dynamic-layers/qt5-layer/STM/recipes-qt/qt5/qtbase/qt5-eglfs.sh b/meta-digi-dey/dynamic-layers/qt5-layer/STM/recipes-qt/qt5/qtbase/qt5-eglfs.sh new file mode 100644 index 000000000..54500ffb6 --- /dev/null +++ b/meta-digi-dey/dynamic-layers/qt5-layer/STM/recipes-qt/qt5/qtbase/qt5-eglfs.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +export QT_QPA_PLATFORM=eglfs + +# Use the KMS/DRM backend +export QT_QPA_EGLFS_INTEGRATION=eglfs_kms + +if [ -e /usr/share/qt5/cursor.json ]; +then + export QT_QPA_EGLFS_KMS_CONFIG=/usr/share/qt5/cursor.json +fi + +# Force to keep the MODE SETTING set +export QT_QPA_EGLFS_ALWAYS_SET_MODE=1 + +# Force to use KMS ATOMIC +export QT_QPA_EGLFS_KMS_ATOMIC=1 + +# EGLFS environment variables accessible for qt 5.12 +# Documentation: https://doc.qt.io/qt-5/embedded-linux.html diff --git a/meta-digi-dey/dynamic-layers/qt5-layer/STM/recipes-qt/qt5/qtbase/qt5-wayland.sh b/meta-digi-dey/dynamic-layers/qt5-layer/STM/recipes-qt/qt5/qtbase/qt5-wayland.sh new file mode 100644 index 000000000..91f62aa25 --- /dev/null +++ b/meta-digi-dey/dynamic-layers/qt5-layer/STM/recipes-qt/qt5/qtbase/qt5-wayland.sh @@ -0,0 +1,3 @@ +#!/bin/sh + +export QT_QPA_PLATFORM="wayland" diff --git a/meta-digi-dey/dynamic-layers/qt5-layer/STM/recipes-qt/qt5/qtbase/qt5.sh b/meta-digi-dey/dynamic-layers/qt5-layer/STM/recipes-qt/qt5/qtbase/qt5.sh deleted file mode 100644 index 4052b0a13..000000000 --- a/meta-digi-dey/dynamic-layers/qt5-layer/STM/recipes-qt/qt5/qtbase/qt5.sh +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -export QT_QPA_PLATFORM="wayland" - -[ -f "/etc/profile.d/weston_profile.sh" ] && return - -# Use EGLFS platform plugin for images without Wayland -export QT_QPA_PLATFORM="eglfs" QT_QPA_EGLFS_INTEGRATION="eglfs_viv" diff --git a/meta-digi-dey/dynamic-layers/qt5-layer/STM/recipes-qt/qt5/qtbase_git.bbappend b/meta-digi-dey/dynamic-layers/qt5-layer/STM/recipes-qt/qt5/qtbase_git.bbappend index 1744da523..0b2fcb3a2 100644 --- a/meta-digi-dey/dynamic-layers/qt5-layer/STM/recipes-qt/qt5/qtbase_git.bbappend +++ b/meta-digi-dey/dynamic-layers/qt5-layer/STM/recipes-qt/qt5/qtbase_git.bbappend @@ -1,15 +1,37 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/${PN}:" -PACKAGECONFIG_GL = " ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2', '', d)} " -PACKAGECONFIG:append = " eglfs examples accessibility " +PACKAGECONFIG_GL = " ${@bb.utils.contains('DISTRO_FEATURES', 'opengl', \ + bb.utils.contains('DISTRO_FEATURES', 'wayland', 'gles2', \ + 'gles2 eglfs', d), '', d)}" +PACKAGECONFIG:append = " \ + eglfs \ + examples \ + accessibility \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', '', 'gbm kms', d)} \ +" QT_CONFIG_FLAGS += " -no-sse2 -no-opengles3" SRC_URI:append = " \ - file://qt5.sh \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', \ + 'file://qt5-wayland.sh', \ + 'file://qt5-eglfs.sh \ + file://cursor.json ', d)} \ " do_install:append () { install -d ${D}${sysconfdir}/profile.d/ - install -m 0755 ${WORKDIR}/qt5.sh ${D}${sysconfdir}/profile.d/qt5.sh + + if ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', 'true', 'false', d)}; then + # Wayland backend + install -m 0755 ${WORKDIR}/qt5-wayland.sh ${D}${sysconfdir}/profile.d/qt5.sh + else + # EGLFS backend + install -d ${D}${datadir}/qt5 + install -m 0755 ${WORKDIR}/qt5-eglfs.sh ${D}/${sysconfdir}/profile.d/qt5.sh + install -m 0664 ${WORKDIR}/cursor.json ${D}${datadir}/qt5/ + fi } -FILES:${PN} += "${sysconfdir}/profile.d/qt5.sh" +FILES:${PN} += " \ + ${sysconfdir}/profile.d/qt5.sh \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', '', '${datadir}/qt5', d)} \ +" diff --git a/meta-digi-dey/dynamic-layers/qt5-layer/recipes-qt/packagegroups/packagegroup-qt5-dey.bb b/meta-digi-dey/dynamic-layers/qt5-layer/recipes-qt/packagegroups/packagegroup-qt5-dey.bb index 94293de24..b16f30d14 100644 --- a/meta-digi-dey/dynamic-layers/qt5-layer/recipes-qt/packagegroups/packagegroup-qt5-dey.bb +++ b/meta-digi-dey/dynamic-layers/qt5-layer/recipes-qt/packagegroups/packagegroup-qt5-dey.bb @@ -1,5 +1,5 @@ # -# Copyright (C) 2013-2023, Digi International Inc. +# Copyright (C) 2013-2024, Digi International Inc. # SUMMARY = "QT packagegroup for DEY image" @@ -35,7 +35,24 @@ QT5_RDEPENDS:imxgpu3d = " \ gstreamer1.0-plugins-good-qt \ " -QT5_RDEPENDS:ccmp15 = "${QT5_RDEPENDS_common}" +QT5_RDEPENDS_eglfs = " \ + qtbase \ + qtbase-plugins \ + qtbase-tools \ + qtdeclarative \ + qtdeclarative-qmlplugins \ + qtdeclarative-tools \ + qtgraphicaleffects-qmlplugins \ + qtmultimedia \ + qtmultimedia-plugins \ + qtmultimedia-qmlplugins \ + qtscript \ +" + +QT5_RDEPENDS:ccmp15 = " \ + ${QT5_RDEPENDS_common} \ + ${@bb.utils.contains('DISTRO_FEATURES', 'wayland', '', '${QT5_RDEPENDS_eglfs}', d)} \ +" # Add packagegroup-qt5-webengine to QT5_RDEPENDS and comment out the line below to install qtwebengine to the rootfs. QT5_RDEPENDS:remove = " packagegroup-qt5-webengine"