1
0
Fork 0

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>
This commit is contained in:
Jonas Ådahl 2022-08-17 12:28:52 +02:00 committed by Marge Bot
parent 58c3734d78
commit 44dae3e160
4 changed files with 8 additions and 1 deletions

View file

@ -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)

View file

@ -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;
}

View file

@ -1214,7 +1214,6 @@ is_atomic_allowed (const char *driver_name)
"qxl",
"vmwgfx",
"vboxvideo",
"nvidia-drm",
"virtio_gpu",
"xlnx",
NULL,

View file

@ -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