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 b05bf5fdab8..ec1a0e5a459 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 e81f00e39c6..286c2700a64 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; -- GitLab 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 bef1e20657a..7c84f14f514 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; } -- GitLab