Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kwin5 for openSUSE:Factory checked 
in at 2022-03-28 16:58:46
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kwin5 (Old)
 and      /work/SRC/openSUSE:Factory/.kwin5.new.1900 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kwin5"

Mon Mar 28 16:58:46 2022 rev:164 rq:964723 version:5.24.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/kwin5/kwin5.changes      2022-03-12 
17:15:08.322282113 +0100
+++ /work/SRC/openSUSE:Factory/.kwin5.new.1900/kwin5.changes    2022-03-28 
16:59:16.116864017 +0200
@@ -1,0 +2,6 @@
+Thu Mar 24 16:08:01 UTC 2022 - Fabian Vogt <fab...@ritter-vogt.de>
+
+- Add patch to fix client cursor offset in VMs (kde#427060):
+  * 0001-backends-drm-fall-back-to-legacy-mode-in-virtual-mac.patch
+
+-------------------------------------------------------------------

New:
----
  0001-backends-drm-fall-back-to-legacy-mode-in-virtual-mac.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kwin5.spec ++++++
--- /var/tmp/diff_new_pack.rkmdAY/_old  2022-03-28 16:59:16.752864881 +0200
+++ /var/tmp/diff_new_pack.rkmdAY/_new  2022-03-28 16:59:16.756864886 +0200
@@ -39,6 +39,8 @@
 Source1:        
https://download.kde.org/stable/plasma/%{version}/kwin-%{version}.tar.xz.sig
 Source2:        plasma.keyring
 %endif
+# PATCH-FIX-UPSTREAM
+Patch1:         0001-backends-drm-fall-back-to-legacy-mode-in-virtual-mac.patch
 # PATCH-FEATURE-OPENSUSE
 Patch101:       0001-Export-consistent-hostname-as-XAUTHLOCALHOSTNAME.patch
 BuildRequires:  extra-cmake-modules >= 0.0.11

++++++ 0001-backends-drm-fall-back-to-legacy-mode-in-virtual-mac.patch ++++++
>From 9f2ed15be073d3c4cc3e133acecf8d586322b2bf Mon Sep 17 00:00:00 2001
From: Xaver Hugl <xaver.h...@gmail.com>
Date: Sun, 20 Mar 2022 05:12:48 +0100
Subject: [PATCH] backends/drm: fall back to legacy mode in virtual machines

Virtual machines aren't properly supporting atomic mode setting yet, which
causes the cursor to be offset, and will cause more issues with overlay
planes. In order to prevent that from impacting users, fall back to legacy,
unless KWIN_DRM_NO_AMS is set.

BUG: 427060
FIXED-IN: 5.24.4


(cherry picked from commit 4a7007cd935a864847962106f170d2428943f025)
---
 src/backends/drm/drm_gpu.cpp | 12 ++++++++----
 src/backends/drm/drm_gpu.h   |  1 +
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/backends/drm/drm_gpu.cpp b/src/backends/drm/drm_gpu.cpp
index 8f7b92b53..b49597dca 100644
--- a/src/backends/drm/drm_gpu.cpp
+++ b/src/backends/drm/drm_gpu.cpp
@@ -75,9 +75,11 @@ DrmGpu::DrmGpu(DrmBackend *backend, const QString &devNode, 
int fd, dev_t device
     m_addFB2ModifiersSupported = drmGetCap(fd, DRM_CAP_ADDFB2_MODIFIERS, 
&capability) == 0 && capability == 1;
     qCDebug(KWIN_DRM) << "drmModeAddFB2WithModifiers is" << 
(m_addFB2ModifiersSupported ? "supported" : "not supported") << "on GPU" << 
m_devNode;
 
-    // find out if this GPU is using the NVidia proprietary driver
+    // find out what driver this kms device is using
     DrmScopedPointer<drmVersion> version(drmGetVersion(fd));
     m_isNVidia = strstr(version->name, "nvidia-drm");
+    m_isVirtualMachine = strstr(version->name, "virtio") || 
strstr(version->name, "qxl")
+                        || strstr(version->name, "vmwgfx") || 
strstr(version->name, "vboxvideo");
     m_gbmDevice = gbm_create_device(m_fd);
 
     m_socketNotifier = new QSocketNotifier(fd, QSocketNotifier::Read, this);
@@ -148,9 +150,11 @@ clockid_t DrmGpu::presentationClock() const
 void DrmGpu::initDrmResources()
 {
     // try atomic mode setting
-    bool tmp = false;
-    bool noAMS = qEnvironmentVariableIntValue("KWIN_DRM_NO_AMS", &tmp) != 0 && 
tmp;
-    if (noAMS) {
+    bool isEnvVarSet = false;
+    bool noAMS = qEnvironmentVariableIntValue("KWIN_DRM_NO_AMS", &isEnvVarSet) 
!= 0 && isEnvVarSet;
+    if (m_isVirtualMachine && !isEnvVarSet) {
+        qCWarning(KWIN_DRM, "Atomic Mode Setting disabled on GPU %s because of 
cursor offset issues in virtual machines", qPrintable(m_devNode));
+    } else if (noAMS) {
         qCWarning(KWIN_DRM) << "Atomic Mode Setting requested off via 
environment variable. Using legacy mode on GPU" << m_devNode;
     } else if(drmSetClientCap(m_fd, DRM_CLIENT_CAP_ATOMIC, 1) != 0) {
         qCWarning(KWIN_DRM) << "drmSetClientCap for Atomic Mode Setting 
failed. Using legacy mode on GPU" << m_devNode;
diff --git a/src/backends/drm/drm_gpu.h b/src/backends/drm/drm_gpu.h
index 543a2a3a7..10bb13837 100644
--- a/src/backends/drm/drm_gpu.h
+++ b/src/backends/drm/drm_gpu.h
@@ -117,6 +117,7 @@ private:
     bool m_atomicModeSetting;
     bool m_addFB2ModifiersSupported = false;
     bool m_isNVidia;
+    bool m_isVirtualMachine;
     clockid_t m_presentationClock;
     gbm_device* m_gbmDevice;
     EGLDisplay m_eglDisplay = EGL_NO_DISPLAY;
-- 
2.33.1

Reply via email to