No need to walk the CRTC list every time looking for CRTC indices, when we
already have the CRTC index stashed away. Taking the plane as an argument
also simplifies things a little for callers, and future-proofs for a
potential future KMS API which passes a list of supported CRTC IDs rather
than a bitmask of supported CRTC indices.

Signed-off-by: Daniel Stone <dani...@collabora.com>

Differential Revision: https://phabricator.freedesktop.org/D1407
---
 libweston/compositor-drm.c | 20 ++++----------------
 1 file changed, 4 insertions(+), 16 deletions(-)

diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c
index d577c05..2d5faa0 100644
--- a/libweston/compositor-drm.c
+++ b/libweston/compositor-drm.c
@@ -234,21 +234,9 @@ static void
 drm_output_update_msc(struct drm_output *output, unsigned int seq);
 
 static int
-drm_sprite_crtc_supported(struct drm_output *output, uint32_t supported)
+drm_sprite_crtc_supported(struct drm_output *output, struct drm_sprite *sprite)
 {
-       struct weston_compositor *ec = output->base.compositor;
-       struct drm_backend *b = to_drm_backend(ec);
-       int crtc;
-
-       for (crtc = 0; crtc < b->num_crtcs; crtc++) {
-               if (b->crtcs[crtc] != output->crtc_id)
-                       continue;
-
-               if (supported & (1 << crtc))
-                       return -1;
-       }
-
-       return 0;
+       return !!(sprite->possible_crtcs & (1 << output->pipe));
 }
 
 static void
@@ -716,7 +704,7 @@ drm_output_repaint(struct weston_output *output_base,
                };
 
                if ((!s->current && !s->next) ||
-                   !drm_sprite_crtc_supported(output, s->possible_crtcs))
+                   !drm_sprite_crtc_supported(output, s))
                        continue;
 
                if (s->next && !backend->sprites_hidden)
@@ -991,7 +979,7 @@ drm_output_prepare_overlay_view(struct drm_output *output,
                return NULL;
 
        wl_list_for_each(s, &b->sprite_list, link) {
-               if (!drm_sprite_crtc_supported(output, s->possible_crtcs))
+               if (!drm_sprite_crtc_supported(output, s))
                        continue;
 
                if (!s->next) {
-- 
2.9.3

_______________________________________________
wayland-devel mailing list
wayland-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/wayland-devel

Reply via email to