From 442f3951769dbbb0f9cc51252a8add78a6430141 Mon Sep 17 00:00:00 2001 From: Naoto Yamaguchi Date: Thu, 26 Sep 2024 21:30:44 +0900 Subject: [PATCH] Rework Qt6 eglfs drm lease support patch for Qt 6.7 Existing drm lease support patch was developed for Qt6.2 LTS. Current AGL master uses Qt6.7. This patch rework to use drm lease support in Qt 6.7. Bug-AGL: SPEC-5162 Change-Id: I24b2ffeb02ed371abc167113f573970ebc1464ee Signed-off-by: Naoto Yamaguchi --- .../dynamic-layers/meta-qt6/README.md | 2 +- ...lease-client-support-to-eglfs-kms-backend.patch | 42 +++++++++++----------- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/meta-agl-drm-lease/dynamic-layers/meta-qt6/README.md b/meta-agl-drm-lease/dynamic-layers/meta-qt6/README.md index 85069c0a..329ee834 100644 --- a/meta-agl-drm-lease/dynamic-layers/meta-qt6/README.md +++ b/meta-agl-drm-lease/dynamic-layers/meta-qt6/README.md @@ -2,7 +2,7 @@ The meta-agl-drm-lease/dynamic-layers/meta-qt6 is a DRM lease support for Qt 6.x eglfs kms backend. -This patch tested in Qt6.2.2 and Qt6.2.3. +This patch tested in Qt6.7. ## Usage diff --git a/meta-agl-drm-lease/dynamic-layers/meta-qt6/recipes-qt/qt6/qtbase/0001-Add-drm-lease-client-support-to-eglfs-kms-backend.patch b/meta-agl-drm-lease/dynamic-layers/meta-qt6/recipes-qt/qt6/qtbase/0001-Add-drm-lease-client-support-to-eglfs-kms-backend.patch index f4d197ed..5475e774 100644 --- a/meta-agl-drm-lease/dynamic-layers/meta-qt6/recipes-qt/qt6/qtbase/0001-Add-drm-lease-client-support-to-eglfs-kms-backend.patch +++ b/meta-agl-drm-lease/dynamic-layers/meta-qt6/recipes-qt/qt6/qtbase/0001-Add-drm-lease-client-support-to-eglfs-kms-backend.patch @@ -1,4 +1,4 @@ -From 85a85537b17742a839092bcc2a4684ab0bdb65d5 Mon Sep 17 00:00:00 2001 +From 7b0bff28e991bf9f8110a6e824c29044a7e09d39 Mon Sep 17 00:00:00 2001 From: Naoto Yamaguchi Date: Tue, 4 Jan 2022 23:52:31 +0900 Subject: [PATCH] Add drm-lease client support to eglfs kms backend @@ -160,22 +160,22 @@ index 0000000000..8dfac920ca + DESCRIPTION "The DRM Lease Manager uses the DRM Lease feature, introduced in the Linux kernel version 4.15, to partition display controller output resources between multiple processes." +) diff --git a/src/gui/configure.cmake b/src/gui/configure.cmake -index 0bf250eab6..b092b746c0 100644 +index 4affd7b30a..44ed626649 100644 --- a/src/gui/configure.cmake +++ b/src/gui/configure.cmake -@@ -38,6 +38,7 @@ endif() +@@ -46,6 +46,7 @@ endif() qt_find_package(Fontconfig PROVIDED_TARGETS Fontconfig::Fontconfig MODULE_NAME gui QMAKE_LIB fontconfig) qt_add_qmake_lib_dependency(fontconfig freetype) qt_find_package(gbm PROVIDED_TARGETS gbm::gbm MODULE_NAME gui QMAKE_LIB gbm) +qt_find_package(Libdlmclient PROVIDED_TARGETS Libdlmclient::Libdlmclient MODULE_NAME gui QMAKE_LIB libdlmclient) qt_find_package(WrapSystemHarfbuzz 2.6.0 PROVIDED_TARGETS WrapSystemHarfbuzz::WrapSystemHarfbuzz MODULE_NAME gui QMAKE_LIB harfbuzz) qt_find_package(Libinput PROVIDED_TARGETS Libinput::Libinput MODULE_NAME gui QMAKE_LIB libinput) - qt_find_package(JPEG PROVIDED_TARGETS JPEG::JPEG MODULE_NAME gui QMAKE_LIB libjpeg) + qt_find_package(WrapSystemJpeg PROVIDED_TARGETS WrapSystemJpeg::WrapSystemJpeg MODULE_NAME gui QMAKE_LIB libjpeg) diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/CMakeLists.txt b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/CMakeLists.txt -index a20a4a084d..2af7904eb6 100644 +index d575ae9d4f..7cf2d5dd78 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/CMakeLists.txt +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/CMakeLists.txt -@@ -23,6 +23,7 @@ qt_internal_add_module(EglFsKmsGbmSupportPrivate +@@ -24,6 +24,7 @@ qt_internal_add_module(EglFsKmsGbmSupportPrivate Qt::GuiPrivate Qt::KmsSupportPrivate gbm::gbm @@ -183,19 +183,17 @@ index a20a4a084d..2af7904eb6 100644 ) ##################################################################### ## QEglFSKmsGbmIntegrationPlugin Plugin: -@@ -44,6 +45,7 @@ qt_internal_add_plugin(QEglFSKmsGbmIntegrationPlugin +@@ -45,4 +46,5 @@ qt_internal_add_plugin(QEglFSKmsGbmIntegrationPlugin Qt::GuiPrivate Qt::KmsSupportPrivate gbm::gbm + Libdlmclient::Libdlmclient ) - - #### Keys ignored in scope 3:.:.:eglfs_kms-plugin.pro:: diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.cpp -index b5b7811b79..1e77c72ee5 100644 +index 89479fc250..2b4280ef12 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.cpp +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice.cpp -@@ -56,32 +56,51 @@ Q_DECLARE_LOGGING_CATEGORY(qLcEglfsKmsDebug) +@@ -20,32 +20,51 @@ Q_DECLARE_LOGGING_CATEGORY(qLcEglfsKmsDebug) QEglFSKmsGbmDevice::QEglFSKmsGbmDevice(QKmsScreenConfig *screenConfig, const QString &path) : QEglFSKmsDevice(screenConfig, path) , m_gbm_device(nullptr) @@ -254,9 +252,9 @@ index b5b7811b79..1e77c72ee5 100644 - setFd(fd); + setFd(drmfd); - m_eventReader.create(this); - -@@ -99,7 +118,11 @@ void QEglFSKmsGbmDevice::close() + if (usesEventReader()) { + qCDebug(qLcEglfsKmsDebug, "Using dedicated drm event reading thread"); +@@ -70,7 +89,11 @@ void QEglFSKmsGbmDevice::close() m_gbm_device = nullptr; } @@ -270,27 +268,27 @@ index b5b7811b79..1e77c72ee5 100644 setFd(-1); } diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice_p.h b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice_p.h -index bb67d800ee..b2d705800e 100644 +index e00992ed29..727555c5bd 100644 --- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice_p.h +++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmdevice_p.h -@@ -57,6 +57,7 @@ - #include +@@ -22,6 +22,7 @@ + #include #include +#include QT_BEGIN_NAMESPACE -@@ -92,6 +93,9 @@ private: - +@@ -61,6 +62,9 @@ private: gbm_device *m_gbm_device; - + QEglFSKmsEventReader m_eventReader; + QEglFSKmsGbmCursor *m_globalCursor; ++ + // only used for DRM lease + struct dlm_lease *m_lease; -+ - QEglFSKmsGbmCursor *m_globalCursor; }; + QT_END_NAMESPACE -- 2.25.1 -- 2.16.6