From 3d9975cfe1973c1c02bc8c274c50645f72ea708d Mon Sep 17 00:00:00 2001 From: Scott Murray Date: Tue, 8 Nov 2022 11:01:32 -0500 Subject: [PATCH] weston: handle upgrade to 11.0 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 Change-Id: I3dc3c7042bf2ce8058df30ccd691232bf1d2a442 --- ...-make-sure-all-buffers-are-released-when-.patch | 71 --------- ...esktop-xdg-shell-Add-tiled-orientation-st.patch | 171 --------------------- ...ston_10.0.%.bbappend => weston_11.0.%.bbappend} | 2 +- ...on_10.0_aglcore.inc => weston_11.0_aglcore.inc} | 8 +- 4 files changed, 2 insertions(+), 250 deletions(-) delete mode 100644 meta-agl-core/recipes-graphics/wayland/weston/0001-backend-drm-make-sure-all-buffers-are-released-when-.patch delete mode 100644 meta-agl-core/recipes-graphics/wayland/weston/0001-libweston-desktop-xdg-shell-Add-tiled-orientation-st.patch rename meta-agl-core/recipes-graphics/wayland/{weston_10.0.%.bbappend => weston_11.0.%.bbappend} (70%) rename meta-agl-core/recipes-graphics/wayland/{weston_10.0_aglcore.inc => weston_11.0_aglcore.inc} (75%) 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 index fc2f35bd6..000000000 --- a/meta-agl-core/recipes-graphics/wayland/weston/0001-backend-drm-make-sure-all-buffers-are-released-when-.patch +++ /dev/null @@ -1,71 +0,0 @@ -From 6d9e9dfa0479abc0ed7921a4ebf42228c0da7533 Mon Sep 17 00:00:00 2001 -From: Michael Olbrich -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 -(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 index 02349c098..000000000 --- a/meta-agl-core/recipes-graphics/wayland/weston/0001-libweston-desktop-xdg-shell-Add-tiled-orientation-st.patch +++ /dev/null @@ -1,171 +0,0 @@ -From 6ab4713d3eba589aa1f39eee2b48c81906d7ba87 Mon Sep 17 00:00:00 2001 -From: Marius Vlad -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 -(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 - diff --git a/meta-agl-core/recipes-graphics/wayland/weston_10.0.%.bbappend b/meta-agl-core/recipes-graphics/wayland/weston_11.0.%.bbappend similarity index 70% rename from meta-agl-core/recipes-graphics/wayland/weston_10.0.%.bbappend rename to meta-agl-core/recipes-graphics/wayland/weston_11.0.%.bbappend index 685894116..d968cc01e 100644 --- a/meta-agl-core/recipes-graphics/wayland/weston_10.0.%.bbappend +++ b/meta-agl-core/recipes-graphics/wayland/weston_11.0.%.bbappend @@ -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)} diff --git a/meta-agl-core/recipes-graphics/wayland/weston_10.0_aglcore.inc b/meta-agl-core/recipes-graphics/wayland/weston_11.0_aglcore.inc similarity index 75% rename from meta-agl-core/recipes-graphics/wayland/weston_10.0_aglcore.inc rename to meta-agl-core/recipes-graphics/wayland/weston_11.0_aglcore.inc index a19e0f344..de816736a 100644 --- a/meta-agl-core/recipes-graphics/wayland/weston_10.0_aglcore.inc +++ b/meta-agl-core/recipes-graphics/wayland/weston_11.0_aglcore.inc @@ -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 -- 2.16.6