diff --git a/src/backends/native/meta-backend-native.c b/src/backends/native/meta-backend-native.c index 9b0220cbd..8900875a0 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 15ae92a26..c2c04e10a 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 b9e7eb0e1..e938e4522 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 81fcad0e6..55ba42fbf 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