backends/native: Add support to disable VRR using udev

This can be used to disable VRR in specific drivers and hardware
combinations where it is found to be problematic.

No default rules are added for now to encourage testing.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1154>
This commit is contained in:
Dor Askayo 2022-07-31 14:04:01 +03:00 committed by Marge Bot
parent e72baac97d
commit b2ceb055d6
4 changed files with 13 additions and 0 deletions

View File

@ -537,6 +537,9 @@ add_drm_device (MetaBackendNative *backend_native,
if (meta_is_udev_device_disable_modifiers (device))
flags |= META_KMS_DEVICE_FLAG_DISABLE_MODIFIERS;
if (meta_is_udev_device_disable_vrr (device))
flags |= META_KMS_DEVICE_FLAG_DISABLE_VRR;
if (meta_is_udev_device_preferred_primary (device))
flags |= META_KMS_DEVICE_FLAG_PREFERRED_PRIMARY;

View File

@ -63,6 +63,7 @@ typedef enum _MetaKmsDeviceFlag
META_KMS_DEVICE_FLAG_HAS_ADDFB2 = 1 << 5,
META_KMS_DEVICE_FLAG_FORCE_LEGACY = 1 << 6,
META_KMS_DEVICE_FLAG_DISABLE_CLIENT_MODIFIERS = 1 << 7,
META_KMS_DEVICE_FLAG_DISABLE_VRR = 1 << 8,
} MetaKmsDeviceFlag;
typedef enum _MetaKmsResourceChanges

View File

@ -100,6 +100,13 @@ meta_is_udev_device_disable_modifiers (GUdevDevice *device)
"mutter-device-disable-kms-modifiers");
}
gboolean
meta_is_udev_device_disable_vrr (GUdevDevice *device)
{
return meta_has_udev_device_tag (device,
"mutter-device-disable-vrr");
}
gboolean
meta_is_udev_device_ignore (GUdevDevice *device)
{

View File

@ -32,6 +32,8 @@ gboolean meta_is_udev_device_boot_vga (GUdevDevice *device);
gboolean meta_is_udev_device_disable_modifiers (GUdevDevice *device);
gboolean meta_is_udev_device_disable_vrr (GUdevDevice *device);
gboolean meta_is_udev_device_ignore (GUdevDevice *device);
gboolean meta_is_udev_test_device (GUdevDevice *device);