[mutter] kms: Only force legacy mode setting when using EGLStream
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] kms: Only force legacy mode setting when using EGLStream
- Date: Fri, 2 Sep 2022 21:10:20 +0000 (UTC)
commit 44dae3e1605549077230e80a403320d3d44d07bd
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Wed Aug 17 12:28:52 2022 +0200
kms: Only force legacy mode setting when using EGLStream
EGLStream is incompatible with atomic mode setting, but nvidia-drm when
using libgbm is not, so lets only deny using atomic mode setting when
the render device is an EGLStream based one.
Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2578>
src/backends/native/meta-backend-native.c | 5 +++++
src/backends/native/meta-kms-device.c | 2 ++
src/backends/native/meta-kms-impl-device-atomic.c | 1 -
src/backends/native/meta-kms-types.h | 1 +
4 files changed, 8 insertions(+), 1 deletion(-)
---
diff --git a/src/backends/native/meta-backend-native.c b/src/backends/native/meta-backend-native.c
index 9b0220cbd7..8900875a07 100644
--- a/src/backends/native/meta-backend-native.c
+++ b/src/backends/native/meta-backend-native.c
@@ -604,6 +604,11 @@ add_drm_device (MetaBackendNative *backend_native,
if (!render_device)
return FALSE;
+#ifdef HAVE_EGL_DEVICE
+ if (META_IS_RENDER_DEVICE_EGL_STREAM (render_device))
+ flags |= META_KMS_DEVICE_FLAG_FORCE_LEGACY;
+#endif
+
kms_device = meta_kms_create_device (backend_native->kms, device_path, flags,
error);
if (!kms_device)
diff --git a/src/backends/native/meta-kms-device.c b/src/backends/native/meta-kms-device.c
index 15ae92a262..c2c04e10a8 100644
--- a/src/backends/native/meta-kms-device.c
+++ b/src/backends/native/meta-kms-device.c
@@ -411,6 +411,8 @@ meta_create_kms_impl_device (MetaKmsDevice *device,
{
if (flags & META_KMS_DEVICE_FLAG_NO_MODE_SETTING)
kms_mode = KMS_MODE_HEADLESS;
+ else if (flags & META_KMS_DEVICE_FLAG_FORCE_LEGACY)
+ kms_mode = KMS_MODE_SIMPLE;
else
kms_mode = KMS_MODE_AUTO;
}
diff --git a/src/backends/native/meta-kms-impl-device-atomic.c
b/src/backends/native/meta-kms-impl-device-atomic.c
index b9e7eb0e1f..e938e4522c 100644
--- a/src/backends/native/meta-kms-impl-device-atomic.c
+++ b/src/backends/native/meta-kms-impl-device-atomic.c
@@ -1214,7 +1214,6 @@ is_atomic_allowed (const char *driver_name)
"qxl",
"vmwgfx",
"vboxvideo",
- "nvidia-drm",
"virtio_gpu",
"xlnx",
NULL,
diff --git a/src/backends/native/meta-kms-types.h b/src/backends/native/meta-kms-types.h
index 81fcad0e66..55ba42fbfd 100644
--- a/src/backends/native/meta-kms-types.h
+++ b/src/backends/native/meta-kms-types.h
@@ -63,6 +63,7 @@ typedef enum _MetaKmsDeviceFlag
META_KMS_DEVICE_FLAG_PREFERRED_PRIMARY = 1 << 3,
META_KMS_DEVICE_FLAG_NO_MODE_SETTING = 1 << 4,
META_KMS_DEVICE_FLAG_HAS_ADDFB2 = 1 << 5,
+ META_KMS_DEVICE_FLAG_FORCE_LEGACY = 1 << 6,
} MetaKmsDeviceFlag;
typedef enum _MetaKmsResourceChanges
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]