compositor-drm: Enable planes for atomic
authorDaniel Stone <daniels@collabora.com>
Fri, 9 Dec 2016 16:00:12 +0000 (16:00 +0000)
committerDaniel Stone <daniels@collabora.com>
Wed, 11 Jul 2018 13:17:52 +0000 (14:17 +0100)
Now that we can sensibly test proposed plane configurations with atomic,
sprites are not broken.

Signed-off-by: Daniel Stone <daniels@collabora.com>
Reviewed-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
libweston/compositor-drm.c

index 363354f..95b3797 100644 (file)
@@ -3834,6 +3834,17 @@ init_kms_caps(struct drm_backend *b)
        weston_log("DRM: %s atomic modesetting\n",
                   b->atomic_modeset ? "supports" : "does not support");
 
+       /*
+        * KMS support for hardware planes cannot properly synchronize
+        * without nuclear page flip. Without nuclear/atomic, hw plane
+        * and cursor plane updates would either tear or cause extra
+        * waits for vblanks which means dropping the compositor framerate
+        * to a fraction. For cursors, it's not so bad, so they are
+        * enabled.
+        */
+       if (!b->atomic_modeset)
+               b->sprites_are_broken = 1;
+
        ret = drmSetClientCap(b->drm.fd, DRM_CLIENT_CAP_ASPECT_RATIO, 1);
        b->aspect_ratio_supported = (ret == 0);
        weston_log("DRM: %s picture aspect ratio\n",
@@ -6714,17 +6725,6 @@ drm_backend_create(struct weston_compositor *compositor,
        b->drm.fd = -1;
        wl_array_init(&b->unused_crtcs);
 
-       /*
-        * KMS support for hardware planes cannot properly synchronize
-        * without nuclear page flip. Without nuclear/atomic, hw plane
-        * and cursor plane updates would either tear or cause extra
-        * waits for vblanks which means dropping the compositor framerate
-        * to a fraction. For cursors, it's not so bad, so they are
-        * enabled.
-        *
-        * These can be enabled again when nuclear/atomic support lands.
-        */
-       b->sprites_are_broken = 1;
        b->compositor = compositor;
        b->use_pixman = config->use_pixman;
        b->pageflip_timeout = config->pageflip_timeout;