qt5: ccmp1: add support for EGLFS backend

EGLFS is a platform plugin for running single Qt applications in full-screen
mode, without a windowing system like X11 or Wayland.

https://onedigi.atlassian.net/browse/DEL-8802

Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
This commit is contained in:
Arturo Buzarra 2024-01-12 11:10:57 +01:00
parent 0817a4de93
commit ba1e3b8328
6 changed files with 77 additions and 14 deletions

View File

@ -0,0 +1,8 @@
{
"device": "/dev/dri/card0",
"outputs": [
{ "name": "HDMI1", "mode": "1280x720", "size": "1280x720" }
],
"hwcursor": false
}

View File

@ -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

View File

@ -0,0 +1,3 @@
#!/bin/sh
export QT_QPA_PLATFORM="wayland"

View File

@ -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"

View File

@ -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)} \
"

View File

@ -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"