compositor-drm: handle vblanks on secondary crtc
authorRob Clark <rob@ti.com>
Thu, 9 Aug 2012 01:27:37 +0000 (20:27 -0500)
committerKristian Høgsberg <krh@bitplanet.net>
Thu, 9 Aug 2012 16:47:06 +0000 (12:47 -0400)
Signed-off-by: Rob Clark <rob@ti.com>
src/compositor-drm.c

index cde6d5d..e3cf134 100644 (file)
@@ -116,6 +116,7 @@ struct drm_output {
 
        char *name;
        uint32_t crtc_id;
+       int pipe;
        uint32_t connector_id;
        drmModeCrtcPtr original_crtc;
 
@@ -407,6 +408,9 @@ drm_output_repaint(struct weston_output *output_base,
                        weston_log("setplane failed: %d: %s\n",
                                ret, strerror(errno));
 
+               if (output->pipe > 0)
+                       vbl.request.type |= DRM_VBLANK_SECONDARY;
+
                /*
                 * Queue a vblank signal so we know when the surface
                 * becomes active on the display or has been replaced.
@@ -1365,6 +1369,7 @@ create_output_for_connector(struct drm_compositor *ec,
        output->name = strdup(name);
 
        output->crtc_id = resources->crtcs[i];
+       output->pipe = i;
        ec->crtc_allocator |= (1 << output->crtc_id);
        output->connector_id = connector->connector_id;
        ec->connector_allocator |= (1 << output->connector_id);