From patchwork Thu Feb 15 01:01:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Randolph Sapp X-Patchwork-Id: 39312 X-Patchwork-Delegate: reatmon@ti.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id B8865C48BEC for ; Thu, 15 Feb 2024 01:01:33 +0000 (UTC) Received: from fllv0015.ext.ti.com (fllv0015.ext.ti.com [198.47.19.141]) by mx.groups.io with SMTP id smtpd.web10.3978.1707958885569517867 for ; Wed, 14 Feb 2024 17:01:25 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=iS8W/Oje; spf=pass (domain: ti.com, ip: 198.47.19.141, mailfrom: rs@ti.com) Received: from fllv0035.itg.ti.com ([10.64.41.0]) by fllv0015.ext.ti.com (8.15.2/8.15.2) with ESMTP id 41F11OUK109736; Wed, 14 Feb 2024 19:01:24 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1707958884; bh=XSMlSwiJR5VuM1GVmbqhc/hquBDuawCQ55X0mXv4Nqs=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=iS8W/OjewwZWU524AMyLKBnoRC5UhK0+wme3wEbPmm7gVYNLES0kA5/BfeuIvP/UO JPXOofju4VekMTs0qQUXvYSUuKY2/ErFtWy3yRKl97k3PrfyUlS2YK6gO+UhYjuTX+ XtcCLj0kK/tccHURmeZA9M8fIbl+4sw3kR2qY9V0= Received: from DFLE114.ent.ti.com (dfle114.ent.ti.com [10.64.6.35]) by fllv0035.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 41F11OBA083750 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 14 Feb 2024 19:01:24 -0600 Received: from DFLE100.ent.ti.com (10.64.6.21) by DFLE114.ent.ti.com (10.64.6.35) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23; Wed, 14 Feb 2024 19:01:23 -0600 Received: from lelvsmtp5.itg.ti.com (10.180.75.250) by DFLE100.ent.ti.com (10.64.6.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23 via Frontend Transport; Wed, 14 Feb 2024 19:01:24 -0600 Received: from rs-desk.dhcp.ti.com (rs-desk.dhcp.ti.com [128.247.81.144]) by lelvsmtp5.itg.ti.com (8.15.2/8.15.2) with ESMTP id 41F11NcC014547; Wed, 14 Feb 2024 19:01:23 -0600 From: To: , , CC: , Subject: [meta-arago][kirkstone][PATCH 1/2] weston: backport patches related to plane positioning Date: Wed, 14 Feb 2024 19:01:22 -0600 Message-ID: <20240215010123.3432540-2-rs@ti.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240215010123.3432540-1-rs@ti.com> References: <20240215010123.3432540-1-rs@ti.com> MIME-Version: 1.0 X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 15 Feb 2024 01:01:33 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/meta-arago/message/15189 From: Randolph Sapp Backport some sanity patches related to plane ordering and positioning. These are all mandatory for display subsystems that allow primary and overlay mutable zpos. Otherwise Weston will attempt to place sprite/overlay planes above whatever active primary plane it chooses for scanout, running into issues if the primary plane is above zpos 0 and there isn't enough headroom. They have all already been accepted upstream already and are only necessary for Kirkstone's version of Weston. Signed-off-by: Randolph Sapp --- ...kend-drm-Pre-sort-plane-list-by-zpos.patch | 48 +++++++++++++++ .../0002-backend-drm-fix-plane-sorting.patch | 38 ++++++++++++ ...mber-to-set-the-zpos-for-the-scanout.patch | 33 +++++++++++ ...Assign-plane_idx-by-plane-list-order.patch | 58 +++++++++++++++++++ 4 files changed, 177 insertions(+) create mode 100644 meta-arago-distro/recipes-graphics/wayland/weston/0001-backend-drm-Pre-sort-plane-list-by-zpos.patch create mode 100644 meta-arago-distro/recipes-graphics/wayland/weston/0002-backend-drm-fix-plane-sorting.patch create mode 100644 meta-arago-distro/recipes-graphics/wayland/weston/0003-drm-backend-Remember-to-set-the-zpos-for-the-scanout.patch create mode 100644 meta-arago-distro/recipes-graphics/wayland/weston/0004-backend-drm-Assign-plane_idx-by-plane-list-order.patch diff --git a/meta-arago-distro/recipes-graphics/wayland/weston/0001-backend-drm-Pre-sort-plane-list-by-zpos.patch b/meta-arago-distro/recipes-graphics/wayland/weston/0001-backend-drm-Pre-sort-plane-list-by-zpos.patch new file mode 100644 index 00000000..04ae08f5 --- /dev/null +++ b/meta-arago-distro/recipes-graphics/wayland/weston/0001-backend-drm-Pre-sort-plane-list-by-zpos.patch @@ -0,0 +1,48 @@ +From 9d2fda2a77cfa0932b2cef9af59033c187ec21d7 Mon Sep 17 00:00:00 2001 +From: Daniel Stone +Date: Tue, 7 Dec 2021 15:55:42 +0000 +Subject: [PATCH 1/3] backend-drm: Pre-sort plane list by zpos + +Rather than constructing a zpos-sorted list every time, just have +plane_list be pre-sorted. + +Backport: 6609840479934a1145372e8a850592eeffbdaf83 + +Signed-off-by: Daniel Stone +--- + libweston/backend-drm/drm.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/libweston/backend-drm/drm.c b/libweston/backend-drm/drm.c +index 42787702..102fa2d7 100644 +--- a/libweston/backend-drm/drm.c ++++ b/libweston/backend-drm/drm.c +@@ -760,7 +760,7 @@ init_pixman(struct drm_backend *b) + static struct drm_plane * + drm_plane_create(struct drm_backend *b, const drmModePlane *kplane) + { +- struct drm_plane *plane; ++ struct drm_plane *plane, *tmp; + drmModeObjectProperties *props; + uint64_t *zpos_range_values; + +@@ -817,7 +817,15 @@ drm_plane_create(struct drm_backend *b, const drmModePlane *kplane) + goto err_props; + + weston_plane_init(&plane->base, b->compositor, 0, 0); +- wl_list_insert(&b->plane_list, &plane->link); ++ ++ wl_list_for_each(tmp, &b->plane_list, link) { ++ if (tmp->zpos_max > plane->zpos_max) { ++ wl_list_insert(tmp->link.prev, &plane->link); ++ break; ++ } ++ } ++ if (plane->link.next == NULL) ++ wl_list_insert(b->plane_list.prev, &plane->link); + + return plane; + +-- +2.43.0 + diff --git a/meta-arago-distro/recipes-graphics/wayland/weston/0002-backend-drm-fix-plane-sorting.patch b/meta-arago-distro/recipes-graphics/wayland/weston/0002-backend-drm-fix-plane-sorting.patch new file mode 100644 index 00000000..cd9a8c5e --- /dev/null +++ b/meta-arago-distro/recipes-graphics/wayland/weston/0002-backend-drm-fix-plane-sorting.patch @@ -0,0 +1,38 @@ +From 450987334af6546b62aa8f5cce8a4c1b07fe5a5e Mon Sep 17 00:00:00 2001 +From: Michael Olbrich +Date: Tue, 30 Aug 2022 17:10:27 +0200 +Subject: [PATCH 2/3] backend-drm: fix plane sorting + +The planes in the plane_list must be sorted from largest zpos_max to smallest. + +Currently the plane order is only correct when the planes are already ordered +and added starting with the smallest zpos_max. This works accidentally in most +cases because the primary plane is usually first and there is often only one +overlay plane or the zpos is sufficiantly configurable. + +To fix this, insert a new plane before the first plane with a smaller zpos_max. +And if none is found, insert it at the end of the list. + +Backport: 4cde507be6a116b3828f3a86a0e97639f04d9046 + +Signed-off-by: Michael Olbrich +--- + libweston/backend-drm/drm.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/libweston/backend-drm/drm.c b/libweston/backend-drm/drm.c +index 102fa2d7..4c18f76c 100644 +--- a/libweston/backend-drm/drm.c ++++ b/libweston/backend-drm/drm.c +@@ -819,7 +819,7 @@ drm_plane_create(struct drm_backend *b, const drmModePlane *kplane) + weston_plane_init(&plane->base, b->compositor, 0, 0); + + wl_list_for_each(tmp, &b->plane_list, link) { +- if (tmp->zpos_max > plane->zpos_max) { ++ if (tmp->zpos_max < plane->zpos_max) { + wl_list_insert(tmp->link.prev, &plane->link); + break; + } +-- +2.43.0 + diff --git a/meta-arago-distro/recipes-graphics/wayland/weston/0003-drm-backend-Remember-to-set-the-zpos-for-the-scanout.patch b/meta-arago-distro/recipes-graphics/wayland/weston/0003-drm-backend-Remember-to-set-the-zpos-for-the-scanout.patch new file mode 100644 index 00000000..eaf074e8 --- /dev/null +++ b/meta-arago-distro/recipes-graphics/wayland/weston/0003-drm-backend-Remember-to-set-the-zpos-for-the-scanout.patch @@ -0,0 +1,33 @@ +From 84a7c7a7317b0cfd3a34557351041b560645a002 Mon Sep 17 00:00:00 2001 +From: Derek Foreman +Date: Tue, 31 Jan 2023 10:11:42 -0600 +Subject: [PATCH 3/3] drm-backend: Remember to set the zpos for the scanout + plane + +We can clear this via drm_plane_state_put_back() at the end of +drm_output_propose_state(). We need to set it back to the minimum zpos +when rendering. + +Backport: 58dde0e0c0000f1430624ee2fbf12886774ccd40 + +Signed-off-by: Derek Foreman +--- + libweston/backend-drm/drm.c | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/libweston/backend-drm/drm.c b/libweston/backend-drm/drm.c +index 4c18f76c..67d471aa 100644 +--- a/libweston/backend-drm/drm.c ++++ b/libweston/backend-drm/drm.c +@@ -404,6 +404,8 @@ drm_output_render(struct drm_output_state *state, pixman_region32_t *damage) + scanout_state->dest_w = output->base.current_mode->width; + scanout_state->dest_h = output->base.current_mode->height; + ++ scanout_state->zpos = scanout_plane->zpos_min; ++ + pixman_region32_subtract(&c->primary_plane.damage, + &c->primary_plane.damage, damage); + +-- +2.43.0 + diff --git a/meta-arago-distro/recipes-graphics/wayland/weston/0004-backend-drm-Assign-plane_idx-by-plane-list-order.patch b/meta-arago-distro/recipes-graphics/wayland/weston/0004-backend-drm-Assign-plane_idx-by-plane-list-order.patch new file mode 100644 index 00000000..ae76af7f --- /dev/null +++ b/meta-arago-distro/recipes-graphics/wayland/weston/0004-backend-drm-Assign-plane_idx-by-plane-list-order.patch @@ -0,0 +1,58 @@ +From af42fc1e336748b4e401e4441729dd79914425e6 Mon Sep 17 00:00:00 2001 +From: Daniel Stone +Date: Tue, 7 Dec 2021 15:58:49 +0000 +Subject: [PATCH] backend-drm: Assign plane_idx by plane list order + +Backport: af42fc1e336748b4e401e4441729dd79914425e6 + +Signed-off-by: Daniel Stone +--- + libweston/backend-drm/drm-internal.h | 1 - + libweston/backend-drm/drm.c | 5 ++++- + 2 files changed, 4 insertions(+), 2 deletions(-) + +diff --git a/libweston/backend-drm/drm-internal.h b/libweston/backend-drm/drm-internal.h +index 55e9414b..86d7368e 100644 +--- a/libweston/backend-drm/drm-internal.h ++++ b/libweston/backend-drm/drm-internal.h +@@ -276,7 +276,6 @@ struct drm_backend { + int min_height, max_height; + + struct wl_list plane_list; +- uint32_t next_plane_idx; + + void *repaint_data; + +diff --git a/libweston/backend-drm/drm.c b/libweston/backend-drm/drm.c +index 102fa2d7..203b8a4e 100644 +--- a/libweston/backend-drm/drm.c ++++ b/libweston/backend-drm/drm.c +@@ -771,7 +771,6 @@ drm_plane_create(struct drm_backend *b, const drmModePlane *kplane) + } + + plane->backend = b; +- plane->plane_idx = b->next_plane_idx++; + plane->state_cur = drm_plane_state_alloc(NULL, plane); + plane->state_cur->complete = true; + plane->possible_crtcs = kplane->possible_crtcs; +@@ -919,6 +918,7 @@ create_sprites(struct drm_backend *b) + drmModePlane *kplane; + struct drm_plane *drm_plane; + uint32_t i; ++ uint32_t next_plane_idx = 0; + kplane_res = drmModeGetPlaneResources(b->drm.fd); + if (!kplane_res) { + weston_log("failed to get plane resources: %s\n", +@@ -942,6 +942,9 @@ create_sprites(struct drm_backend *b) + &b->compositor->primary_plane); + } + ++ wl_list_for_each (drm_plane, &b->plane_list, link) ++ drm_plane->plane_idx = next_plane_idx++; ++ + drmModeFreePlaneResources(kplane_res); + } + +-- +2.43.0 + From patchwork Thu Feb 15 01:01:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Randolph Sapp X-Patchwork-Id: 39311 X-Patchwork-Delegate: reatmon@ti.com Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id AC7CBC48BC4 for ; Thu, 15 Feb 2024 01:01:33 +0000 (UTC) Received: from lelv0142.ext.ti.com (lelv0142.ext.ti.com [198.47.23.249]) by mx.groups.io with SMTP id smtpd.web10.3979.1707958886358015110 for ; Wed, 14 Feb 2024 17:01:26 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=G9MCdOU2; spf=pass (domain: ti.com, ip: 198.47.23.249, mailfrom: rs@ti.com) Received: from fllv0035.itg.ti.com ([10.64.41.0]) by lelv0142.ext.ti.com (8.15.2/8.15.2) with ESMTP id 41F11OOb067487; Wed, 14 Feb 2024 19:01:24 -0600 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1707958884; bh=Lyr0/Flf/rL7lgrq1tKp6Ido3uf2oi4anEDobgyqGgM=; h=From:To:CC:Subject:Date:In-Reply-To:References; b=G9MCdOU2Cr1izm5fkpwP9H+puffFGzl5GZ7FshBrm5mVkY+a5tvhcP8Jq9He676VT 8CnwMCFJLHkj0s3zR69IsNgZYxJj8OpBduUqwWTarIIxOKU5qdqj/W5Kyz8QjxaGkG L8zbni0FNTn59txcbCy1K6378iMhBpCi8eJV1FsA= Received: from DLEE115.ent.ti.com (dlee115.ent.ti.com [157.170.170.26]) by fllv0035.itg.ti.com (8.15.2/8.15.2) with ESMTPS id 41F11OZO083755 (version=TLSv1.2 cipher=AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 14 Feb 2024 19:01:24 -0600 Received: from DLEE113.ent.ti.com (157.170.170.24) by DLEE115.ent.ti.com (157.170.170.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23; Wed, 14 Feb 2024 19:01:23 -0600 Received: from lelvsmtp5.itg.ti.com (10.180.75.250) by DLEE113.ent.ti.com (157.170.170.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.2507.23 via Frontend Transport; Wed, 14 Feb 2024 19:01:23 -0600 Received: from rs-desk.dhcp.ti.com (rs-desk.dhcp.ti.com [128.247.81.144]) by lelvsmtp5.itg.ti.com (8.15.2/8.15.2) with ESMTP id 41F11NcD014547; Wed, 14 Feb 2024 19:01:23 -0600 From: To: , , CC: , Subject: [meta-arago][kirkstone][PATCH 2/2] weston: include backported patches in bbappend Date: Wed, 14 Feb 2024 19:01:23 -0600 Message-ID: <20240215010123.3432540-3-rs@ti.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240215010123.3432540-1-rs@ti.com> References: <20240215010123.3432540-1-rs@ti.com> MIME-Version: 1.0 X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Thu, 15 Feb 2024 01:01:33 -0000 X-Groupsio-URL: https://lists.yoctoproject.org/g/meta-arago/message/15190 From: Randolph Sapp Backport some sanity patches related to plane ordering and positioning. These are all mandatory for display subsystems that allow primary and overlay mutable zpos. They have all already been accepted upstream already and are only necessary for Kirkstone's version of Weston. Signed-off-by: Randolph Sapp --- .../recipes-graphics/wayland/weston_10.0.2.bbappend | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/meta-arago-distro/recipes-graphics/wayland/weston_10.0.2.bbappend b/meta-arago-distro/recipes-graphics/wayland/weston_10.0.2.bbappend index 698ff03e..3c577c6d 100644 --- a/meta-arago-distro/recipes-graphics/wayland/weston_10.0.2.bbappend +++ b/meta-arago-distro/recipes-graphics/wayland/weston_10.0.2.bbappend @@ -9,6 +9,10 @@ PR:append = ".arago1" SRC_URI += " \ file://0001-backend-drm-Select-plane-based-on-current-attached-C.patch \ file://0001-Revert-require-GL_EXT_unpack_subimage-commit.patch \ + file://0001-backend-drm-Pre-sort-plane-list-by-zpos.patch \ + file://0002-backend-drm-fix-plane-sorting.patch \ + file://0003-drm-backend-Remember-to-set-the-zpos-for-the-scanout.patch \ + file://0004-backend-drm-Assign-plane_idx-by-plane-list-order.patch \ " # required for weston user to interact with the render devices