summaryrefslogtreecommitdiffstats
path: root/meta-agl-drm-lease
diff options
context:
space:
mode:
authorNaoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>2021-11-08 23:51:48 +0900
committerNaoto Yamaguchi <naoto.yamaguchi@aisin.co.jp>2021-11-22 15:39:50 +0900
commitb3152ef3299d29f65fc1aad46a6afdf8d9d8e9f1 (patch)
tree51a0fbea244469809b3e2425d711af2089dfd618 /meta-agl-drm-lease
parent81d6460b9f2b057c19d42217d2588a42139ee82b (diff)
BUG FIX: Some guest apps don't show own GUI frequently
Some guest apps don't show own GUI frequently. This bug is caused by wayland-wsegl, but it is depend on drm-lease environment use case. This bug was fixed in https://github.com/renesas-rcar/wayland-wsegl/commit/5a0a17bc0dafe577ec02ad2205c25bc8acb2c5e6 https://github.com/renesas-rcar/wayland-wsegl/commit/10c7f13a3d868d489054d8af4463bb68036055c6 But that fixed version can't use in Renesas BSP 5.5. This patch backport those patch to Renesas BSP 5.5 environment. Bug-AGL: SPEC-4134 Signed-off-by: Naoto Yamaguchi <naoto.yamaguchi@aisin.co.jp> Change-Id: Ief99ced0cd83348583d8e578f101ec724eec0450
Diffstat (limited to 'meta-agl-drm-lease')
-rw-r--r--meta-agl-drm-lease/dynamic-layers/meta-rcar-gen3/recipes-graphics/wayland/wayland-wsegl.bbappend6
-rw-r--r--meta-agl-drm-lease/dynamic-layers/meta-rcar-gen3/recipes-graphics/wayland/wayland-wsegl/0001-waylandws_client-Ensure-that-supported-DMAbuf-format.patch55
-rw-r--r--meta-agl-drm-lease/dynamic-layers/meta-rcar-gen3/recipes-graphics/wayland/wayland-wsegl/0002-waylandws_client-Rename-DRM-device-setup-function.patch37
3 files changed, 98 insertions, 0 deletions
diff --git a/meta-agl-drm-lease/dynamic-layers/meta-rcar-gen3/recipes-graphics/wayland/wayland-wsegl.bbappend b/meta-agl-drm-lease/dynamic-layers/meta-rcar-gen3/recipes-graphics/wayland/wayland-wsegl.bbappend
new file mode 100644
index 00000000..7670fe59
--- /dev/null
+++ b/meta-agl-drm-lease/dynamic-layers/meta-rcar-gen3/recipes-graphics/wayland/wayland-wsegl.bbappend
@@ -0,0 +1,6 @@
+FILESEXTRAPATHS:prepend:rcar-gen3 := "${THISDIR}/${PN}:"
+
+SRC_URI:append:rcar-gen3 = " \
+ file://0001-waylandws_client-Ensure-that-supported-DMAbuf-format.patch \
+ file://0002-waylandws_client-Rename-DRM-device-setup-function.patch \
+"
diff --git a/meta-agl-drm-lease/dynamic-layers/meta-rcar-gen3/recipes-graphics/wayland/wayland-wsegl/0001-waylandws_client-Ensure-that-supported-DMAbuf-format.patch b/meta-agl-drm-lease/dynamic-layers/meta-rcar-gen3/recipes-graphics/wayland/wayland-wsegl/0001-waylandws_client-Ensure-that-supported-DMAbuf-format.patch
new file mode 100644
index 00000000..850099c8
--- /dev/null
+++ b/meta-agl-drm-lease/dynamic-layers/meta-rcar-gen3/recipes-graphics/wayland/wayland-wsegl/0001-waylandws_client-Ensure-that-supported-DMAbuf-format.patch
@@ -0,0 +1,55 @@
+From 5a0a17bc0dafe577ec02ad2205c25bc8acb2c5e6 Mon Sep 17 00:00:00 2001
+From: Damian Hobson-Garcia <dhobsong@igel.co.jp>
+Date: Mon, 25 Oct 2021 18:26:34 +0900
+Subject: [PATCH 1/3] waylandws_client: Ensure that supported DMAbuf formats
+ are received
+
+Explicitly check that the list of supported dmabuf formats have
+been received from the server during initialization. At least
+one pixel format must be supported in order to complete initialization
+successfully.
+---
+ src/waylandws_client.c | 20 ++++++++++++++++++++
+ 1 file changed, 20 insertions(+)
+
+diff --git a/src/waylandws_client.c b/src/waylandws_client.c
+index e917347..20bfac9 100644
+--- a/src/waylandws_client.c
++++ b/src/waylandws_client.c
+@@ -698,6 +698,20 @@ static bool setup_buffer_sharing(WLWSClientDisplay *display)
+ return authenticate_kms_device(display);
+ }
+
++static bool ensure_supported_dmabuf_formats(WLWSClientDisplay *display)
++{
++ if (!display->zlinux_dmabuf)
++ return true;
++
++ if (wl_display_roundtrip_queue(display->wl_display, display->wl_queue) < 0 ||
++ !display->enable_formats) {
++ /* No supported dmabuf pixel formats */
++ return false;
++ }
++
++ return true;
++}
++
+ /***********************************************************************************
+ Function Name : WSEGL_InitialiseDisplay
+ Inputs : hNativeDisplay
+@@ -755,6 +769,12 @@ static WSEGLError WSEGLc_InitialiseDisplay(NativeDisplayType hNativeDisplay,
+ goto fail;
+ }
+
++ /* Get the list of supported pixel formats */
++ if (!ensure_supported_dmabuf_formats(display)) {
++ err = WSEGL_BAD_NATIVE_DISPLAY;
++ goto fail;
++ }
++
+ /* XXX: should we wrap this with wl_kms client code? */
+ if (kms_create(display->fd, &display->kms)) {
+ err = WSEGL_BAD_NATIVE_DISPLAY;
+--
+2.25.1
+
diff --git a/meta-agl-drm-lease/dynamic-layers/meta-rcar-gen3/recipes-graphics/wayland/wayland-wsegl/0002-waylandws_client-Rename-DRM-device-setup-function.patch b/meta-agl-drm-lease/dynamic-layers/meta-rcar-gen3/recipes-graphics/wayland/wayland-wsegl/0002-waylandws_client-Rename-DRM-device-setup-function.patch
new file mode 100644
index 00000000..e756d22e
--- /dev/null
+++ b/meta-agl-drm-lease/dynamic-layers/meta-rcar-gen3/recipes-graphics/wayland/wayland-wsegl/0002-waylandws_client-Rename-DRM-device-setup-function.patch
@@ -0,0 +1,37 @@
+From 10c7f13a3d868d489054d8af4463bb68036055c6 Mon Sep 17 00:00:00 2001
+From: Damian Hobson-Garcia <dhobsong@igel.co.jp>
+Date: Tue, 26 Oct 2021 15:05:38 +0900
+Subject: [PATCH 2/3] waylandws_client: Rename DRM device setup function
+
+Make the function name better reflect its purpose. Namely,
+getting the drm device and setting up authentication if
+necessary.
+---
+ src/waylandws_client.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/waylandws_client.c b/src/waylandws_client.c
+index 20bfac9..0638862 100644
+--- a/src/waylandws_client.c
++++ b/src/waylandws_client.c
+@@ -681,7 +681,7 @@ static bool authenticate_kms_device(WLWSClientDisplay *display)
+ return true;
+ }
+
+-static bool setup_buffer_sharing(WLWSClientDisplay *display)
++static bool setup_drm_device(WLWSClientDisplay *display)
+ {
+ display->fd = -1;
+
+@@ -764,7 +764,7 @@ static WSEGLError WSEGLc_InitialiseDisplay(NativeDisplayType hNativeDisplay,
+ wl_registry_add_listener(display->wl_registry, &wayland_registry_listener, display);
+
+ /* Now setup the DRM device */
+- if (!setup_buffer_sharing(display)) {
++ if (!setup_drm_device(display)) {
+ err = WSEGL_BAD_NATIVE_DISPLAY;
+ goto fail;
+ }
+--
+2.25.1
+