From 42dd39a354dc19a214f11d772bedc122588f278b Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Mon, 2 May 2022 11:16:18 -0700 Subject: [PATCH] Backport MR #2359 to fix GNOME on legacy Radeon (#2081070) --- ...Add-addfb2_modifiers-to-MetaKmsDevic.patch | 51 +++++++++++++++++++ ...le-modifiers-when-DRM_CAP_ADDFB2_MOD.patch | 29 +++++++++++ mutter.spec | 12 ++++- 3 files changed, 91 insertions(+), 1 deletion(-) create mode 100644 0001-kms-impl-device-Add-addfb2_modifiers-to-MetaKmsDevic.patch create mode 100644 0002-kms-device-Disable-modifiers-when-DRM_CAP_ADDFB2_MOD.patch diff --git a/0001-kms-impl-device-Add-addfb2_modifiers-to-MetaKmsDevic.patch b/0001-kms-impl-device-Add-addfb2_modifiers-to-MetaKmsDevic.patch new file mode 100644 index 0000000..2699a2f --- /dev/null +++ b/0001-kms-impl-device-Add-addfb2_modifiers-to-MetaKmsDevic.patch @@ -0,0 +1,51 @@ +From 11e6100226006b5371de30310357582db64c9309 Mon Sep 17 00:00:00 2001 +From: Daniel van Vugt +Date: Tue, 5 Apr 2022 17:05:17 +0800 +Subject: [PATCH 1/2] kms/impl-device: Add addfb2_modifiers to + MetaKmsDeviceCaps + +Part-of: +--- + src/backends/native/meta-kms-impl-device.c | 6 ++++++ + src/backends/native/meta-kms-impl-device.h | 1 + + 2 files changed, 7 insertions(+) + +diff --git a/src/backends/native/meta-kms-impl-device.c b/src/backends/native/meta-kms-impl-device.c +index b05bf5fdab..ec1a0e5a45 100644 +--- a/src/backends/native/meta-kms-impl-device.c ++++ b/src/backends/native/meta-kms-impl-device.c +@@ -303,6 +303,7 @@ init_caps (MetaKmsImplDevice *impl_device) + uint64_t cursor_width, cursor_height; + uint64_t prefer_shadow; + uint64_t uses_monotonic_clock; ++ uint64_t addfb2_modifiers; + + fd = meta_device_file_get_fd (priv->device_file); + if (drmGetCap (fd, DRM_CAP_CURSOR_WIDTH, &cursor_width) == 0 && +@@ -325,6 +326,11 @@ init_caps (MetaKmsImplDevice *impl_device) + { + priv->caps.uses_monotonic_clock = uses_monotonic_clock; + } ++ ++ if (drmGetCap (fd, DRM_CAP_ADDFB2_MODIFIERS, &addfb2_modifiers) == 0) ++ { ++ priv->caps.addfb2_modifiers = (addfb2_modifiers != 0); ++ } + } + + static void +diff --git a/src/backends/native/meta-kms-impl-device.h b/src/backends/native/meta-kms-impl-device.h +index e81f00e39c..286c2700a6 100644 +--- a/src/backends/native/meta-kms-impl-device.h ++++ b/src/backends/native/meta-kms-impl-device.h +@@ -40,6 +40,7 @@ typedef struct _MetaKmsDeviceCaps + + gboolean prefers_shadow_buffer; + gboolean uses_monotonic_clock; ++ gboolean addfb2_modifiers; + } MetaKmsDeviceCaps; + + typedef struct _MetaKmsProp MetaKmsProp; +-- +2.36.0 + diff --git a/0002-kms-device-Disable-modifiers-when-DRM_CAP_ADDFB2_MOD.patch b/0002-kms-device-Disable-modifiers-when-DRM_CAP_ADDFB2_MOD.patch new file mode 100644 index 0000000..2b06d3d --- /dev/null +++ b/0002-kms-device-Disable-modifiers-when-DRM_CAP_ADDFB2_MOD.patch @@ -0,0 +1,29 @@ +From dd94c448e94b1033b90749d77c5dc587c3b8f9f4 Mon Sep 17 00:00:00 2001 +From: Daniel van Vugt +Date: Tue, 5 Apr 2022 17:06:21 +0800 +Subject: [PATCH 2/2] kms/device: Disable modifiers when + !DRM_CAP_ADDFB2_MODIFIERS + +Fixes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2210 +Part-of: +--- + src/backends/native/meta-kms-device.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/src/backends/native/meta-kms-device.c b/src/backends/native/meta-kms-device.c +index bef1e20657..7c84f14f51 100644 +--- a/src/backends/native/meta-kms-device.c ++++ b/src/backends/native/meta-kms-device.c +@@ -490,6 +490,9 @@ meta_kms_device_new (MetaKms *kms, + free (device->path); + device->path = data.out_path; + ++ if (!device->caps.addfb2_modifiers) ++ device->flags |= META_KMS_DEVICE_FLAG_DISABLE_MODIFIERS; ++ + return device; + } + +-- +2.36.0 + diff --git a/mutter.spec b/mutter.spec index 8b387cd..3b78334 100644 --- a/mutter.spec +++ b/mutter.spec @@ -10,7 +10,7 @@ Name: mutter Version: 42.0 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Window and compositing manager based on Clutter License: GPLv2+ @@ -63,6 +63,13 @@ Patch9: 0002-events-Use-the-event-target-actor-to-determine-windo.patch # https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2366 Patch10: 2366.patch +# Fix graphics initialization on legacy Radeon +# https://gitlab.gnome.org/GNOME/mutter/-/issues/2210 +# https://bugzilla.redhat.com/show_bug.cgi?id=2081070 +# https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2359 +Patch11: 0001-kms-impl-device-Add-addfb2_modifiers-to-MetaKmsDevic.patch +Patch12: 0002-kms-device-Disable-modifiers-when-DRM_CAP_ADDFB2_MOD.patch + BuildRequires: pkgconfig(gobject-introspection-1.0) >= 1.41.0 BuildRequires: pkgconfig(sm) BuildRequires: pkgconfig(libwacom) @@ -206,6 +213,9 @@ desktop-file-validate %{buildroot}/%{_datadir}/applications/%{name}.desktop %{_datadir}/mutter-%{mutter_api_version}/tests %changelog +* Mon May 02 2022 Adam Williamson - 42.0-6 +- Backport MR #2359 to fix GNOME on legacy Radeon (#2081070) + * Tue Apr 19 2022 Adam Williamson - 42.0-5 - Backport MR #2366 to fix stuck modifier key issues (#2076390) - Backport MR #2321 to fix top bar hover issues