weston: handle upgrade to 11.0
authorScott Murray <scott.murray@konsulko.com>
Tue, 8 Nov 2022 16:01:32 +0000 (11:01 -0500)
committerScott Murray <scott.murray@konsulko.com>
Wed, 24 Apr 2024 16:29:35 +0000 (12:29 -0400)
Changes:
- Renamed local bbappend for weston to handle upstream upgrade to
  11.0.0.
- The local PACKAGECONFIG definitions have been removed as they are
  now present upstream.
- Removed backported patch.

Bug-AGL: SPEC-4578

Signed-off-by: Scott Murray <scott.murray@konsulko.com>
Change-Id: I3dc3c7042bf2ce8058df30ccd691232bf1d2a442

meta-agl-core/recipes-graphics/wayland/weston/0001-backend-drm-make-sure-all-buffers-are-released-when-.patch [deleted file]
meta-agl-core/recipes-graphics/wayland/weston/0001-libweston-desktop-xdg-shell-Add-tiled-orientation-st.patch [deleted file]
meta-agl-core/recipes-graphics/wayland/weston_11.0.%.bbappend [moved from meta-agl-core/recipes-graphics/wayland/weston_10.0.%.bbappend with 70% similarity]
meta-agl-core/recipes-graphics/wayland/weston_11.0_aglcore.inc [moved from meta-agl-core/recipes-graphics/wayland/weston_10.0_aglcore.inc with 75% similarity]

diff --git a/meta-agl-core/recipes-graphics/wayland/weston/0001-backend-drm-make-sure-all-buffers-are-released-when-.patch b/meta-agl-core/recipes-graphics/wayland/weston/0001-backend-drm-make-sure-all-buffers-are-released-when-.patch
deleted file mode 100644 (file)
index fc2f35b..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-From 6d9e9dfa0479abc0ed7921a4ebf42228c0da7533 Mon Sep 17 00:00:00 2001
-From: Michael Olbrich <m.olbrich@pengutronix.de>
-Date: Wed, 22 Jun 2022 08:58:21 +0200
-Subject: [PATCH] backend-drm: make sure all buffers are released when an
- output is removed
-
-When an output is destroyed then the output state is freed immediately. In this
-case, the plane state is only partially destroyed because it is the currently
-active state. This includes the buffer reference.
-
-Without the output, the plane will not be updated any more until it is used by a
-different output (if possible) or the output returns and the plane is used
-again.
-As a result, the buffer reference is kept for a long time. This will cause some
-applications to stall because weston now keeps two buffers (the one here and
-another one for a different output where the application is now displayed).
-
-To avoid this, do a synchronous commit that disables the output. The output
-needs to be disabled anyways and this way the current state contains no
-buffers that would remain.
-
-`device->state_invalid = true` in drm_output_detach_crtc() is no longer
-needed, because drm_output_detach_crtc() is called only when initialization
-failed and the crtc was not yet used or in drm_output_deinit() when the
-crtc was already disabled with the new synchronous commit.
-
-Signed-off-by: Michael Olbrich <m.olbrich@pengutronix.de>
-(cherry picked from commit f5a4fb5abcb8aeb6b078b6235834cc4ab6176c26)
-
-Upstream-Status: Pending
-
----
- libweston/backend-drm/drm.c | 10 +++++++---
- 1 file changed, 7 insertions(+), 3 deletions(-)
-
-diff --git a/libweston/backend-drm/drm.c b/libweston/backend-drm/drm.c
-index 42787702..8425b0e9 100644
---- a/libweston/backend-drm/drm.c
-+++ b/libweston/backend-drm/drm.c
-@@ -1769,14 +1769,11 @@ drm_output_attach_crtc(struct drm_output *output)
- static void
- drm_output_detach_crtc(struct drm_output *output)
- {
--      struct drm_backend *b = output->backend;
-       struct drm_crtc *crtc = output->crtc;
-       crtc->output = NULL;
-       output->crtc = NULL;
--      /* Force resetting unused CRTCs */
--      b->state_invalid = true;
- }
- static int
-@@ -1839,6 +1836,13 @@ drm_output_deinit(struct weston_output *base)
- {
-       struct drm_output *output = to_drm_output(base);
-       struct drm_backend *b = to_drm_backend(base->compositor);
-+      struct drm_pending_state *pending;
-+
-+      if (!b->shutting_down) {
-+              pending = drm_pending_state_alloc(b);
-+              drm_output_get_disable_state(pending, output);
-+              drm_pending_state_apply_sync(pending);
-+      }
-       if (b->use_pixman)
-               drm_output_fini_pixman(output);
--- 
-2.39.2
-
diff --git a/meta-agl-core/recipes-graphics/wayland/weston/0001-libweston-desktop-xdg-shell-Add-tiled-orientation-st.patch b/meta-agl-core/recipes-graphics/wayland/weston/0001-libweston-desktop-xdg-shell-Add-tiled-orientation-st.patch
deleted file mode 100644 (file)
index 02349c0..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-From 6ab4713d3eba589aa1f39eee2b48c81906d7ba87 Mon Sep 17 00:00:00 2001
-From: Marius Vlad <marius.vlad@collabora.com>
-Date: Tue, 16 Aug 2022 13:34:19 +0300
-Subject: [PATCH] libweston/desktop/xdg-shell: Add tiled orientation states
-
-With the help of a newly introduced function, weston_desktop_surface_set_orientation(),
-this patch adds missing tiled states from the xdg-shell protocol.
-The orientation state is passed on as a bitmask enumeration flag, which the
-shell can set, allowing multiple tiling states at once.
-
-These new states are incorporated the same way as the others, retaining
-the set state, but also avoiding sending new configure events if nothing
-changed since previously acked data.
-
-Upstream-Status: Pending
-
-Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
-(cherry-picked from 37a3025d893def991dec59587d17672aa3bf967a)
-
-Note that this was actually ported because libweston-desktop is not
-embedded into libweston and the structure changed in upstream.
----
- include/libweston-desktop/libweston-desktop.h | 11 ++++++
- libweston-desktop/internal.h                  |  2 +
- libweston-desktop/surface.c                   | 10 +++++
- libweston-desktop/xdg-shell.c                 | 38 +++++++++++++++++++
- 4 files changed, 61 insertions(+)
-
-diff --git a/include/libweston-desktop/libweston-desktop.h b/include/libweston-desktop/libweston-desktop.h
-index 3e7ac73..c296d16 100644
---- a/include/libweston-desktop/libweston-desktop.h
-+++ b/include/libweston-desktop/libweston-desktop.h
-@@ -44,6 +44,14 @@ enum weston_desktop_surface_edge {
-       WESTON_DESKTOP_SURFACE_EDGE_BOTTOM_RIGHT = 10,
- };
-+enum weston_top_level_tiled_orientation {
-+      WESTON_TOP_LEVEL_TILED_ORIENTATION_NONE         = 0 << 0,
-+      WESTON_TOP_LEVEL_TILED_ORIENTATION_LEFT         = 1 << 1,
-+      WESTON_TOP_LEVEL_TILED_ORIENTATION_RIGHT        = 1 << 2,
-+      WESTON_TOP_LEVEL_TILED_ORIENTATION_TOP          = 1 << 3,
-+      WESTON_TOP_LEVEL_TILED_ORIENTATION_BOTTOM       = 1 << 4,
-+};
-+
- struct weston_desktop;
- struct weston_desktop_client;
- struct weston_desktop_surface;
-@@ -163,6 +171,9 @@ void
- weston_desktop_surface_set_size(struct weston_desktop_surface *surface,
-                               int32_t width, int32_t height);
- void
-+weston_desktop_surface_set_orientation(struct weston_desktop_surface *surface,
-+                                     enum weston_top_level_tiled_orientation tile_orientation);
-+void
- weston_desktop_surface_close(struct weston_desktop_surface *surface);
- void
- weston_desktop_surface_add_metadata_listener(struct weston_desktop_surface *surface,
-diff --git a/libweston-desktop/internal.h b/libweston-desktop/internal.h
-index 2606d27..8afdede 100644
---- a/libweston-desktop/internal.h
-+++ b/libweston-desktop/internal.h
-@@ -100,6 +100,8 @@ struct weston_desktop_surface_implementation {
-                            void *user_data, bool resizing);
-       void (*set_size)(struct weston_desktop_surface *surface,
-                        void *user_data, int32_t width, int32_t height);
-+      void (*set_orientation)(struct weston_desktop_surface *surface,
-+                              void *user_data, enum weston_top_level_tiled_orientation tiled_orientation);
-       void (*committed)(struct weston_desktop_surface *surface, void *user_data,
-                         int32_t sx, int32_t sy);
-       void (*update_position)(struct weston_desktop_surface *surface,
-diff --git a/libweston-desktop/surface.c b/libweston-desktop/surface.c
-index 433f08a..6b3f4ae 100644
---- a/libweston-desktop/surface.c
-+++ b/libweston-desktop/surface.c
-@@ -506,6 +506,16 @@ weston_desktop_surface_set_size(struct weston_desktop_surface *surface, int32_t
-                                                 width, height);
- }
-+WL_EXPORT void
-+weston_desktop_surface_set_orientation(struct weston_desktop_surface *surface,
-+                                     enum weston_top_level_tiled_orientation tile_orientation)
-+{
-+      if (surface->implementation->set_orientation != NULL)
-+              surface->implementation->set_orientation(surface,
-+                                                       surface->implementation_data,
-+                                                       tile_orientation);
-+}
-+
- WL_EXPORT void
- weston_desktop_surface_close(struct weston_desktop_surface *surface)
- {
-diff --git a/libweston-desktop/xdg-shell.c b/libweston-desktop/xdg-shell.c
-index ff76c39..1e49147 100644
---- a/libweston-desktop/xdg-shell.c
-+++ b/libweston-desktop/xdg-shell.c
-@@ -94,6 +94,7 @@ struct weston_desktop_xdg_toplevel_state {
-       bool fullscreen;
-       bool resizing;
-       bool activated;
-+      uint32_t tiled_orientation;
- };
- struct weston_desktop_xdg_toplevel_configure {
-@@ -624,6 +625,29 @@ weston_desktop_xdg_toplevel_send_configure(struct weston_desktop_xdg_toplevel *t
-               s = wl_array_add(&states, sizeof(uint32_t));
-               *s = XDG_TOPLEVEL_STATE_ACTIVATED;
-       }
-+      if (toplevel->pending.state.tiled_orientation &
-+          WESTON_TOP_LEVEL_TILED_ORIENTATION_LEFT) {
-+              s = wl_array_add(&states, sizeof(uint32_t));
-+              *s = XDG_TOPLEVEL_STATE_TILED_LEFT;
-+      }
-+
-+      if (toplevel->pending.state.tiled_orientation &
-+          WESTON_TOP_LEVEL_TILED_ORIENTATION_RIGHT) {
-+              s = wl_array_add(&states, sizeof(uint32_t));
-+              *s = XDG_TOPLEVEL_STATE_TILED_RIGHT;
-+      }
-+
-+      if (toplevel->pending.state.tiled_orientation &
-+          WESTON_TOP_LEVEL_TILED_ORIENTATION_TOP) {
-+              s = wl_array_add(&states, sizeof(uint32_t));
-+              *s = XDG_TOPLEVEL_STATE_TILED_TOP;
-+      }
-+
-+      if (toplevel->pending.state.tiled_orientation &
-+          WESTON_TOP_LEVEL_TILED_ORIENTATION_BOTTOM) {
-+              s = wl_array_add(&states, sizeof(uint32_t));
-+              *s = XDG_TOPLEVEL_STATE_TILED_BOTTOM;
-+      }
-       xdg_toplevel_send_configure(toplevel->resource,
-                                   toplevel->pending.size.width,
-@@ -686,6 +710,16 @@ weston_desktop_xdg_toplevel_set_size(struct weston_desktop_surface *dsurface,
-       weston_desktop_xdg_surface_schedule_configure(&toplevel->base);
- }
-+static void
-+weston_desktop_xdg_toplevel_set_orientation(struct weston_desktop_surface *surface, void *user_data,
-+                                          enum weston_top_level_tiled_orientation tiled_orientation)
-+{
-+      struct weston_desktop_xdg_toplevel *toplevel = user_data;
-+
-+      toplevel->pending.state.tiled_orientation = tiled_orientation;
-+      weston_desktop_xdg_surface_schedule_configure(&toplevel->base);
-+}
-+
- static void
- weston_desktop_xdg_toplevel_committed(struct weston_desktop_xdg_toplevel *toplevel,
-                                     int32_t sx, int32_t sy)
-@@ -1096,6 +1130,9 @@ weston_desktop_xdg_toplevel_state_compare(struct weston_desktop_xdg_toplevel *to
-               return false;
-       if (toplevel->pending.state.resizing != configured.state.resizing)
-               return false;
-+      if (toplevel->pending.state.tiled_orientation !=
-+          configured.state.tiled_orientation)
-+              return false;
-       if (toplevel->pending.size.width == configured.size.width &&
-           toplevel->pending.size.height == configured.size.height)
-@@ -1440,6 +1477,7 @@ static const struct weston_desktop_surface_implementation weston_desktop_xdg_sur
-       .set_resizing = weston_desktop_xdg_toplevel_set_resizing,
-       .set_activated = weston_desktop_xdg_toplevel_set_activated,
-       .set_size = weston_desktop_xdg_toplevel_set_size,
-+      .set_orientation = weston_desktop_xdg_toplevel_set_orientation,
-       .get_maximized = weston_desktop_xdg_toplevel_get_maximized,
-       .get_fullscreen = weston_desktop_xdg_toplevel_get_fullscreen,
--- 
-2.35.1
-
@@ -1 +1 @@
-require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', 'weston_10.0_aglcore.inc', '', d)}
+require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', 'weston_11.0_aglcore.inc', '', d)}
@@ -1,16 +1,10 @@
 FILESEXTRAPATHS:append := ":${THISDIR}/weston"
 
-# Workaround for incorrect upstream definition
-PACKAGECONFIG[remoting] = "-Dremoting=true,-Dremoting=false,gstreamer1.0 gstreamer1.0-plugins-base"
-PACKAGECONFIG[headless] = "-Dbackend-headless=true"
 PACKAGECONFIG:append = "${@bb.utils.contains('DISTRO_FEATURES', 'weston-remoting', ' remoting', '', d)}"
 
 SRC_URI:append = "file://0001-libweston-Send-name-description-update-wl_output-to-.patch \
-                 file://0001-libweston-desktop-xdg-shell-Add-tiled-orientation-st.patch \
                  file://0001-simple-touch-Add-maximized-fullscreen-states.patch \
-                 file://0001-backend-drm-make-sure-all-buffers-are-released-when-.patch \
-                 file://0001-libweston-weston-log-Add-a-iterator-helper-for-debug.patch \
-"
+                 file://0001-libweston-weston-log-Add-a-iterator-helper-for-debug.patch "
 
 # Split weston-terminal out of the main package to allow installing it
 # separately for use with other compositors.  The icons, etc. that end