diff options
Diffstat (limited to 'recipes-qt/qt5/qtbase/0024-eglfs_kms-Do-not-skip-the-initial-SetCrtc.patch')
-rw-r--r-- | recipes-qt/qt5/qtbase/0024-eglfs_kms-Do-not-skip-the-initial-SetCrtc.patch | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/recipes-qt/qt5/qtbase/0024-eglfs_kms-Do-not-skip-the-initial-SetCrtc.patch b/recipes-qt/qt5/qtbase/0024-eglfs_kms-Do-not-skip-the-initial-SetCrtc.patch new file mode 100644 index 00000000..71e8405d --- /dev/null +++ b/recipes-qt/qt5/qtbase/0024-eglfs_kms-Do-not-skip-the-initial-SetCrtc.patch @@ -0,0 +1,50 @@ +From f9e70f4905c5854bbae9c0b48ea8767312d96ca9 Mon Sep 17 00:00:00 2001 +From: Laszlo Agocs <laszlo.agocs@qt.io> +Date: Wed, 29 Jul 2020 12:52:35 +0200 +Subject: [PATCH] eglfs_kms: Do not skip the initial SetCrtc + +Upstream-Status: Backported + +Trying to be clever seems to cause issues on some systems, for example +AMD (RADV) on Ubuntu 20.04 gives totally garbled output by default. + +Remove the undocumented ALWAYS_SET_MODE env.var. as well, it won't have +much of a purpose since we'll in effect hit the SetCrtc path always now +once on startup. + +Change-Id: Ibaa463ff913eb0c1251d6d3435aa4799fe5c8a29 +Fixes: QTBUG-85797 +Reviewed-by: Andy Nichols <andy.nichols@qt.io> +(cherry picked from commit 61bd046b5810b867f4b1fd07cf4d65d7d423534e) +Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> +--- + .../eglfs_kms/qeglfskmsgbmscreen.cpp | 11 +++-------- + 1 file changed, 3 insertions(+), 8 deletions(-) + +diff --git a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp +index 6f5c3b6953..95b51c9601 100644 +--- a/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp ++++ b/src/plugins/platforms/eglfs/deviceintegration/eglfs_kms/qeglfskmsgbmscreen.cpp +@@ -227,16 +227,11 @@ void QEglFSKmsGbmScreen::ensureModeSet(uint32_t fb) + + bool doModeSet = true; + drmModeCrtcPtr currentMode = drmModeGetCrtc(fd, op.crtc_id); +- const bool alreadySet = currentMode && !memcmp(¤tMode->mode, &op.modes[op.mode], sizeof(drmModeModeInfo)); ++ const bool alreadySet = currentMode && currentMode->buffer_id == fb && !memcmp(¤tMode->mode, &op.modes[op.mode], sizeof(drmModeModeInfo)); + if (currentMode) + drmModeFreeCrtc(currentMode); +- if (alreadySet) { +- static bool alwaysDoSet = qEnvironmentVariableIntValue("QT_QPA_EGLFS_ALWAYS_SET_MODE"); +- if (!alwaysDoSet) { +- qCDebug(qLcEglfsKmsDebug, "Mode already set, skipping modesetting for screen %s", qPrintable(name())); +- doModeSet = false; +- } +- } ++ if (alreadySet) ++ doModeSet = false; + + if (doModeSet) { + qCDebug(qLcEglfsKmsDebug, "Setting mode for screen %s", qPrintable(name())); +-- +2.25.1 + |