From 73c5c413ce8f3c9a0c47180bfd5df87494be9842 Mon Sep 17 00:00:00 2001 From: Naoto Yamaguchi Date: Mon, 8 Nov 2021 23:51:48 +0900 Subject: 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 Change-Id: Ief99ced0cd83348583d8e578f101ec724eec0450 --- .../wayland/wayland-wsegl.bbappend | 6 +++ ...lient-Ensure-that-supported-DMAbuf-format.patch | 55 ++++++++++++++++++++++ ...s_client-Rename-DRM-device-setup-function.patch | 37 +++++++++++++++ 3 files changed, 98 insertions(+) create mode 100644 meta-agl-drm-lease/dynamic-layers/meta-rcar-gen3/recipes-graphics/wayland/wayland-wsegl.bbappend create mode 100644 meta-agl-drm-lease/dynamic-layers/meta-rcar-gen3/recipes-graphics/wayland/wayland-wsegl/0001-waylandws_client-Ensure-that-supported-DMAbuf-format.patch create mode 100644 meta-agl-drm-lease/dynamic-layers/meta-rcar-gen3/recipes-graphics/wayland/wayland-wsegl/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.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 +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 +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 + -- cgit 1.2.3-korg