Signed-off-by: Eric Ruei <[email protected]>
---
 .../0005-weston-drm-fix-dual-display-issue.patch   | 79 ++++++++++++++++++++++
 .../recipes-graphics/wayland/weston_5.0.0.bbappend |  3 +-
 2 files changed, 81 insertions(+), 1 deletion(-)
 create mode 100644 
meta-arago-distro/recipes-graphics/wayland/weston/0005-weston-drm-fix-dual-display-issue.patch

diff --git 
a/meta-arago-distro/recipes-graphics/wayland/weston/0005-weston-drm-fix-dual-display-issue.patch
 
b/meta-arago-distro/recipes-graphics/wayland/weston/0005-weston-drm-fix-dual-display-issue.patch
new file mode 100644
index 0000000..9b06b81
--- /dev/null
+++ 
b/meta-arago-distro/recipes-graphics/wayland/weston/0005-weston-drm-fix-dual-display-issue.patch
@@ -0,0 +1,79 @@
+From db6f5ce008d9b8a4cc7db71659ce1d21d3d7f97f Mon Sep 17 00:00:00 2001
+From: Eric Ruei <[email protected]>
+Date: Tue, 26 Mar 2019 13:32:31 -0400
+Subject: [PATCH 3/3] weston: drm: fix dual display issue
+
+This patch fixes the dual display issue by enhancing the primary plane
+search algorithm to keep the plane which is connected to the crtc of
+the output because the direct switching of active planes is not allowed.
+
+Upstream status: Pending
+
+Signed-off-by: Eric Ruei <[email protected]>
+---
+ libweston/compositor-drm.c | 17 ++++++++++++++++-
+ 1 file changed, 16 insertions(+), 1 deletion(-)
+
+diff --git a/libweston/compositor-drm.c b/libweston/compositor-drm.c
+index 3891176..fa694c3 100644
+--- a/libweston/compositor-drm.c
++++ b/libweston/compositor-drm.c
+@@ -428,6 +428,7 @@ struct drm_plane {
+ 
+       uint32_t possible_crtcs;
+       uint32_t plane_id;
++      uint32_t crtc_id;
+       uint32_t count_formats;
+ 
+       struct drm_property_info props[WDRM_PLANE__COUNT];
+@@ -4073,6 +4074,7 @@ drm_plane_create(struct drm_backend *b, const 
drmModePlane *kplane,
+       if (kplane) {
+               plane->possible_crtcs = kplane->possible_crtcs;
+               plane->plane_id = kplane->plane_id;
++              plane->crtc_id = kplane->crtc_id;
+ 
+               props = drmModeObjectGetProperties(b->drm.fd, kplane->plane_id,
+                                                  DRM_MODE_OBJECT_PLANE);
+@@ -4097,6 +4099,7 @@ drm_plane_create(struct drm_backend *b, const 
drmModePlane *kplane,
+       else {
+               plane->possible_crtcs = (1 << output->pipe);
+               plane->plane_id = 0;
++              plane->crtc_id = 0;
+               plane->count_formats = 1;
+               plane->formats[0].format = format;
+               plane->type = type;
+@@ -4157,6 +4160,7 @@ drm_output_find_special_plane(struct drm_backend *b, 
struct drm_output *output,
+                             enum wdrm_plane_type type)
+ {
+       struct drm_plane *plane;
++      struct drm_plane *plane2 = NULL; /* secondary plane */
+ 
+       if (!b->universal_planes) {
+               uint32_t format;
+@@ -4204,11 +4208,22 @@ drm_output_find_special_plane(struct drm_backend *b, 
struct drm_output *output,
+               if (found_elsewhere)
+                       continue;
+ 
++              /* The output should keep the primary plane connected to its
++               * crtc since the direct switching of active plane is not
++               * allowed. */
++              if ((type == WDRM_PLANE_TYPE_PRIMARY) &&
++                  (plane->crtc_id != output->crtc_id)) {
++                      if (plane->crtc_id == 0) {
++                              plane->possible_crtcs = (1 << output->pipe);
++                              plane2 = plane;
++                      }
++                      continue;
++              }
+               plane->possible_crtcs = (1 << output->pipe);
+               return plane;
+       }
+ 
+-      return NULL;
++      return plane2;
+ }
+ 
+ /**
+-- 
+1.9.1
+
diff --git a/meta-arago-distro/recipes-graphics/wayland/weston_5.0.0.bbappend 
b/meta-arago-distro/recipes-graphics/wayland/weston_5.0.0.bbappend
index 68e53cc..cc456b4 100644
--- a/meta-arago-distro/recipes-graphics/wayland/weston_5.0.0.bbappend
+++ b/meta-arago-distro/recipes-graphics/wayland/weston_5.0.0.bbappend
@@ -2,7 +2,7 @@
 PACKAGECONFIG[fbdev] = "--enable-fbdev-compositor 
WESTON_NATIVE_BACKEND="fbdev-backend.so",--disable-fbdev-compositor,udev mtdev"
 PACKAGECONFIG[kms] = "--enable-drm-compositor,--disable-drm-compositor,drm 
udev libgbm mtdev"
 
-PR_append = ".arago30"
+PR_append = ".arago31"
 
 FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
 
@@ -13,6 +13,7 @@ SRC_URI += " \
         file://0002-weston-Allow-visual_id-to-be-0.patch \
        file://0003-weston-Fix-virtual-keyboard-display-issue-for-QT5-ap.patch \
         file://0004-weston-Fix-touch-screen-crash-issue.patch \
+       file://0005-weston-drm-fix-dual-display-issue.patch \
 "
 
 INHIBIT_PACKAGE_STRIP = "1"
-- 
1.9.1

_______________________________________________
meta-arago mailing list
[email protected]
http://arago-project.org/cgi-bin/mailman/listinfo/meta-arago

Reply via email to