dra7xx: weston: add patches for weston 1.11
[AGL/meta-agl.git] / meta-agl-bsp / meta-ti / recipes-arago / weston / weston / 0001-weston-Enabling-DRM-backend-with-multiple-displays.patch
diff --git a/meta-agl-bsp/meta-ti/recipes-arago/weston/weston/0001-weston-Enabling-DRM-backend-with-multiple-displays.patch b/meta-agl-bsp/meta-ti/recipes-arago/weston/weston/0001-weston-Enabling-DRM-backend-with-multiple-displays.patch
new file mode 100644 (file)
index 0000000..2f215c9
--- /dev/null
@@ -0,0 +1,60 @@
+From b1829ce962aa4e13d737edb54130bdce05f068f0 Mon Sep 17 00:00:00 2001
+From: Karthik Ramanan <a0393906@ti.com>
+Date: Wed, 17 Dec 2014 09:21:49 +0530
+Subject: [PATCH] weston: Enabling DRM backend with multiple displays
+
+There are three main issues that this patch tries to address
+
+ 1. Black screen when running weston
+ 2. Support for multiple displays
+ 3. Handling missing VBlanks
+
+There is an issue with missing VBlanks for LCD and
+HDMI connectors which leads to display not getting refreshed.
+This patch can be considered as a workaround.
+
+Signed-off-by: Karthik Ramanan <a0393906@ti.com>
+---
+ src/compositor-drm.c |   10 ++++++++--
+ 1 files changed, 8 insertions(+), 2 deletions(-)
+
+diff --git a/src/compositor-drm.c b/src/compositor-drm.c
+index e4496e7..3b22aa3 100644
+--- a/src/compositor-drm.c
++++ b/src/compositor-drm.c
+@@ -646,7 +646,7 @@ drm_output_repaint(struct weston_output *output_base,
+                       .request.sequence = 1,
+               };
+-              if ((!s->current && !s->next) ||
++              if ((!s->current && !s->next) &&
+                   !drm_sprite_crtc_supported(output_base, s->possible_crtcs))
+                       continue;
+@@ -757,6 +757,7 @@ page_flip_handler(int fd, unsigned int frame,
+ {
+       struct drm_output *output = (struct drm_output *) data;
+       uint32_t msecs;
++      uint32_t bail;
+       /* We don't set page_flip_pending on start_repaint_loop, in that case
+        * we just want to page flip to the current buffer to get an accurate
+@@ -769,9 +770,14 @@ page_flip_handler(int fd, unsigned int frame,
+       output->page_flip_pending = 0;
++      if(output->vblank_pending) {
++              weston_log("VBlank is pending for connector = %d, frame = %d\n", output->connector_id, frame);
++              bail = 1;
++      }
++
+       if (output->destroy_pending)
+               drm_output_destroy(&output->base);
+-      else if (!output->vblank_pending) {
++      else if (!output->vblank_pending || bail ) {
+               msecs = sec * 1000 + usec / 1000;
+               weston_output_finish_frame(&output->base, msecs);
+-- 
+1.7.9.5
+