summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2016-10-07 16:52:43 +0200
committerCarlos Garnacho <carlosg@gnome.org>2016-10-07 17:19:46 +0200
commite3dab707542cf3e528e4b4aa816d39e5cab0360a (patch)
tree4b2d50ea1ccd4e529a21d5c79fb94739377eefdf
parentb3eac93c4cef1b3ca6748cd95544ac720ee40821 (diff)
downloadmutter-e3dab707542cf3e528e4b4aa816d39e5cab0360a.tar.gz
backends: Use fallback rotation if native DRM plane rotation failed
Blacklist the HW mode so we fallback gracefully to our own paths. https://bugzilla.gnome.org/show_bug.cgi?id=772512
-rw-r--r--src/backends/native/meta-monitor-manager-kms.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/backends/native/meta-monitor-manager-kms.c b/src/backends/native/meta-monitor-manager-kms.c
index 2db7495e5..9daa0105d 100644
--- a/src/backends/native/meta-monitor-manager-kms.c
+++ b/src/backends/native/meta-monitor-manager-kms.c
@@ -1357,11 +1357,19 @@ meta_monitor_manager_kms_apply_configuration (MetaMonitorManager *manager,
else
hw_transform = META_MONITOR_TRANSFORM_NORMAL;
- drmModeObjectSetProperty (manager_kms->fd,
- crtc_kms->primary_plane_id,
- DRM_MODE_OBJECT_PLANE,
- crtc_kms->rotation_prop_id,
- crtc_kms->rotation_map[hw_transform]);
+ if (drmModeObjectSetProperty (manager_kms->fd,
+ crtc_kms->primary_plane_id,
+ DRM_MODE_OBJECT_PLANE,
+ crtc_kms->rotation_prop_id,
+ crtc_kms->rotation_map[hw_transform]) != 0)
+ {
+ g_warning ("Failed to apply DRM plane transform: %m", hw_transform);
+
+ /* Blacklist this HW transform, we want to fallback to our
+ * fallbacks in this case.
+ */
+ crtc_kms->all_hw_transforms &= ~(1 << hw_transform);
+ }
}
/* Disable CRTCs not mentioned in the list (they have is_dirty == FALSE,
because they weren't seen in the first loop) */