From 5e0a5ca921524f8859808527a57655eec16efa52 Mon Sep 17 00:00:00 2001 From: V3n3RiX Date: Tue, 18 Jul 2023 00:58:25 +0100 Subject: gentoo auto-resync : 18:07:2023 - 00:58:24 --- dev-libs/weston/Manifest | 3 +- dev-libs/weston/files/weston-12.0.1-issue757.patch | 183 +++++++++++++++++++++ dev-libs/weston/weston-12.0.1-r1.ebuild | 146 ++++++++++++++++ dev-libs/weston/weston-12.0.1.ebuild | 142 ---------------- 4 files changed, 331 insertions(+), 143 deletions(-) create mode 100644 dev-libs/weston/files/weston-12.0.1-issue757.patch create mode 100644 dev-libs/weston/weston-12.0.1-r1.ebuild delete mode 100644 dev-libs/weston/weston-12.0.1.ebuild (limited to 'dev-libs/weston') diff --git a/dev-libs/weston/Manifest b/dev-libs/weston/Manifest index 661d6989af53..ff8fa3d9c47e 100644 --- a/dev-libs/weston/Manifest +++ b/dev-libs/weston/Manifest @@ -1,7 +1,8 @@ AUX README.gentoo 383 BLAKE2B a0d8fef2d1f0deebe46ed85065a09057a620aa7af4e7aa901f1fef7b75d15e2ca9d2be1b9367a651a2edf3b4265441ce47af832f423cf9725c78e61836a4f982 SHA512 e4d8f8e0edeb6773dd7ef6329074d1e40b694b9e7e10b6a429d8c5dd4fe1170594f447a42eb41446ec2355829a1da1606bf6c544434551c5c931b0794422e786 +AUX weston-12.0.1-issue757.patch 6852 BLAKE2B d3f330772bd80dadbf815f947054c3366ea074707237cb4e777f888dfd08dcc85d0e6a4c760a7f39796a30da9589521aa2a9208abe641649f6dd66c14667a1d2 SHA512 cfaf59ecbb66d11bb694e90848ecccf4141977ee3021888935826af294c3d60d7e73220e1099325d29b0912530ff7302b25298cd4cbc9d3455296bf33f85fbe3 DIST weston-11.0.1.tar.xz 1900796 BLAKE2B 33d7d5b3340e7074265885bd54ee039e8b5d448fa9f58f4bf9f823efd2557da9b916d903119565a806ab698382fe185165c8ede8614e983c872dfe15b474b616 SHA512 d451230fc260b45aaaadb5cf0aa360629e45e72e3b3676c6ec040d6c6549dbb57d05683effd962c3b2d61482b47a6c990d12cc736c896b501d982c8c4d34834c DIST weston-12.0.1.tar.xz 1969772 BLAKE2B d7a76ad6e11b76b73b91aeb9b3b49e823ecc8170bd1306f9a8ed90fa49d9bc7734e4c0595ca67f11421ecf5b4dbf04289cf803726c508e8c979a9850c0e94ccb SHA512 3dcfa1a2a6b9a605d3ecd597bf7ac0f87b0fd1971845b6e5c44b5e34296943ac146dae6e1cfea9be14ad7a9a8b6d30dc765f9289ef80920d7c516ebba1ba4688 EBUILD weston-11.0.1.ebuild 3647 BLAKE2B 4ea2290da03417622e5b11c2c066bed9c0012fd573dd2a3e09e465ee78d1cdb6e4db82bba05033cc14cd6fe2123b6cf797fd96d092e47bbba6e91c7914082de6 SHA512 df50728e3cefe2439ecfc3bbeb44a33b66125d679ea126c6e985730485fc3c4f2bd8b09cae393ce2bfa0dc0be0dd4e5befbed6e33bf910b43cf7a68867dfe0bf -EBUILD weston-12.0.1.ebuild 3686 BLAKE2B e84ee5c700efe156412620f048e47b54bb015b4a107c71f9c85ae7d9eefce40bdeae59b6b8837fb7be20666c12f89ef5269c1c0c08e068f0d3ee381f22e00d64 SHA512 1c7478c575d616e544451ea20fd6d92f0eb933731c8365ac19c389bf9d346db2c6a9eae1c3f5755e79e793e7b2e190992d8d2d30ebba1834a9a32ab577528e0c +EBUILD weston-12.0.1-r1.ebuild 3743 BLAKE2B bfb73ff935849b7ab104ca1f82f3155e24bea6473bc4c2b8cff901866f0ce14a68614f576d940d941be1849bd1e666456d322ed89de5c16880bc9d50336ed524 SHA512 5c7b0301d741270411e3821005fca930bb0f0a8c7a1304d7d1f26118c14c768c1a5790755c89af6d196cd613cec45720193b38d538d7f5c2ce552cd2f207641a EBUILD weston-9999.ebuild 3705 BLAKE2B 80f5d38e267ea8e422b2bd6b9b935dac285573c761be1a4319c3c7e26687bf52d598f24a6aeab96dd5c6c7f8b6ed5b5467b60fc44232bcd2653e5476f76972fa SHA512 c1077cd94be525ee6c09c3871567eb4f1bd33e99c6aa8f33424ff779874839847efbb564eb3d698ea0a17e3ea6bbb1b5b9411ca521cd54d5e7636a812e6db708 MISC metadata.xml 1549 BLAKE2B adfc4def87465ca322d87a45c8790244d9f05808608ac7d055356124f6cdd9602d97535e9751c04858825249fc17f2e6a43d52923b37b03d237df997d10386cd SHA512 7aafd337baa7b82533519a7082a6efe2cb88f67ad81f396f06268f1ff6512d4557016faddae49523aaafe83c6975bd798723a4a51b344abe3d77b2bc9b0326bc diff --git a/dev-libs/weston/files/weston-12.0.1-issue757.patch b/dev-libs/weston/files/weston-12.0.1-issue757.patch new file mode 100644 index 000000000000..c36647e22446 --- /dev/null +++ b/dev-libs/weston/files/weston-12.0.1-issue757.patch @@ -0,0 +1,183 @@ +https://gitlab.freedesktop.org/wayland/weston/-/issues/757 +https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/1257 + +From 6d8e3c569cf7e9ad80569768871e1ed30bf4d2a8 Mon Sep 17 00:00:00 2001 +From: Leandro Ribeiro +Date: Thu, 1 Jun 2023 18:51:34 -0300 +Subject: [PATCH 1/3] drm: drop disable_planes being false as a condition to + support writeback + +In 2d70bdfdcdb236ee3e466b1a24df494da43c8a68 "drm-backend: add support to +output capture writeback source" we've ensured that disable_planes +should be false in order to support writeback capture tasks. + +But this was wrong; disable_planes is transient (it is true when +there's some sort of content recording happening), and we enable/disable +that during compositor's lifetime. + +This is dangerous and may result in a crash. Imagine the following +sequence: + + 1. screen recording starts, disable_planes is set to true. + + 2. for whatever reason the output size changes, and we end up + not updating capture info because we think that writeback is not + supported by the device. + + 3. screen recording stops, disable_planes is set to false. + + 4. user tries to take a writeback screenshot, and the + DRM-backend will pull a writeback capture task with + weston_output_pull_capture_task(). + + 5. this function has an assert to ensure that the DRM-backend + did not forget to update the capture info, and we hit that + assert. + +With this patch we drop disable_planes being false as a condition to +support writeback. So now we keep the capture info up-to-date even when +screen recording is happening, and we gracefully fail writeback tasks. + +Signed-off-by: Leandro Ribeiro +--- + libweston/backend-drm/drm.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/libweston/backend-drm/drm.c b/libweston/backend-drm/drm.c +index 1078b89bf..a1e61df8c 100644 +--- a/libweston/backend-drm/drm.c ++++ b/libweston/backend-drm/drm.c +@@ -561,6 +561,12 @@ drm_output_pick_writeback_capture_task(struct drm_output *output) + + assert(output->device->atomic_modeset); + ++ if (output->base.disable_planes > 0) { ++ msg = "drm: KMS planes usage is disabled for now, so " \ ++ "writeback capture tasks are rejected"; ++ goto err; ++ } ++ + wb = drm_output_find_compatible_writeback(output); + if (!wb) { + msg = "drm: could not find writeback connector for output"; +@@ -948,7 +954,7 @@ drm_output_apply_mode(struct drm_output *output) + } + } + +- if (device->atomic_modeset && !output->base.disable_planes) ++ if (device->atomic_modeset) + weston_output_update_capture_info(&output->base, + WESTON_OUTPUT_CAPTURE_SOURCE_WRITEBACK, + output->base.current_mode->width, +@@ -2138,7 +2144,7 @@ drm_output_enable(struct weston_output *base) + output->base.switch_mode = drm_output_switch_mode; + output->base.set_gamma = drm_output_set_gamma; + +- if (device->atomic_modeset && !base->disable_planes) ++ if (device->atomic_modeset) + weston_output_update_capture_info(base, WESTON_OUTPUT_CAPTURE_SOURCE_WRITEBACK, + base->current_mode->width, + base->current_mode->height, +-- +GitLab + + +From 3226417573ac12e7d41823335bcb3036bf442cbc Mon Sep 17 00:00:00 2001 +From: Leandro Ribeiro +Date: Fri, 2 Jun 2023 14:44:44 -0300 +Subject: [PATCH 2/3] drm: do not pull writeback task if KMS atomic API is not + supported + +Since 2d70bdfdcdb236ee3e466b1a24df494da43c8a68 "drm-backend: add support +to output capture writeback source", the DRM-backend was broken for KMS +devices that do not support the atomic API. This fixes that. + +We don't support writeback screenshots without atomic modeset support. +So for such devices, we never update the output capture info +(weston_output_update_capture_info()) for the writeback source. + +The function that we use to pull writeback tasks +(weston_output_pull_capture_task()) asserts that the capture providers +(renderers, DRM-backend) did not forget to update the capture info +(size/format) if something changed. But as we've never updated the +capture info for such devices, it is zeroed, leading to an assert hit. + +With this patch we only pull the capture task for KMS devices that +support the atomic API. + +Signed-off-by: Leandro Ribeiro +--- + libweston/backend-drm/drm.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/libweston/backend-drm/drm.c b/libweston/backend-drm/drm.c +index a1e61df8c..b43791db5 100644 +--- a/libweston/backend-drm/drm.c ++++ b/libweston/backend-drm/drm.c +@@ -553,14 +553,14 @@ drm_output_pick_writeback_capture_task(struct drm_output *output) + int32_t height = output->base.current_mode->height; + uint32_t format = output->format->format; + ++ assert(output->device->atomic_modeset); ++ + ct = weston_output_pull_capture_task(&output->base, + WESTON_OUTPUT_CAPTURE_SOURCE_WRITEBACK, + width, height, pixel_format_get_info(format)); + if (!ct) + return; + +- assert(output->device->atomic_modeset); +- + if (output->base.disable_planes > 0) { + msg = "drm: KMS planes usage is disabled for now, so " \ + "writeback capture tasks are rejected"; +@@ -642,7 +642,8 @@ drm_output_repaint(struct weston_output *output_base, pixman_region32_t *damage) + if (drm_output_ensure_hdr_output_metadata_blob(output) < 0) + goto err; + +- drm_output_pick_writeback_capture_task(output); ++ if (device->atomic_modeset) ++ drm_output_pick_writeback_capture_task(output); + + drm_output_render(state, damage); + scanout_state = drm_output_state_get_plane(state, +-- +GitLab + + +From cf64fbe7847859ca11d4722f056d2ebfa8d10177 Mon Sep 17 00:00:00 2001 +From: Leandro Ribeiro +Date: Thu, 1 Jun 2023 17:04:56 -0300 +Subject: [PATCH 3/3] tests: assert that capture info was received before + trying screenshot + +If the source is not supported, we won't receive the capture +information. So the capture info (size/format) will be zeroed, and we +fail while trying to create a buffer for the screenshot with size/format +zeroed. + +With this patch we fail if we don't receive the capture info, what makes +the failure reason more explicit. + +Signed-off-by: Leandro Ribeiro +--- + tests/weston-test-client-helper.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/tests/weston-test-client-helper.c b/tests/weston-test-client-helper.c +index 3e24a0310..2a7f938d3 100644 +--- a/tests/weston-test-client-helper.c ++++ b/tests/weston-test-client-helper.c +@@ -1705,6 +1705,9 @@ client_capture_output(struct client *client, + + client_roundtrip(client); + ++ assert(capt.width != 0 && capt.height != 0 && capt.drm_format != 0 && ++ "capture source not available"); ++ + buf = create_shm_buffer(client, + capt.width, capt.height, capt.drm_format); + +-- +GitLab + diff --git a/dev-libs/weston/weston-12.0.1-r1.ebuild b/dev-libs/weston/weston-12.0.1-r1.ebuild new file mode 100644 index 000000000000..35a02ce6cc88 --- /dev/null +++ b/dev-libs/weston/weston-12.0.1-r1.ebuild @@ -0,0 +1,146 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +if [[ ${PV} = 9999* ]]; then + EGIT_REPO_URI="https://gitlab.freedesktop.org/wayland/weston.git" + GIT_ECLASS="git-r3" + EXPERIMENTAL="true" +fi + +PYTHON_COMPAT=( python3_{9..11} ) +inherit meson python-any-r1 readme.gentoo-r1 xdg-utils ${GIT_ECLASS} + +DESCRIPTION="Wayland reference compositor" +HOMEPAGE="https://wayland.freedesktop.org/ https://gitlab.freedesktop.org/wayland/weston" + +if [[ ${PV} = *9999* ]]; then + SRC_URI="${SRC_PATCHES}" +else + SRC_URI="https://gitlab.freedesktop.org/wayland/${PN}/-/releases/${PV}/downloads/${P}.tar.xz" + KEYWORDS="~amd64 ~arm ~arm64 ~ia64 ~loong ~riscv ~x86" +fi + +LICENSE="MIT CC-BY-SA-3.0" +SLOT="0" + +IUSE="+desktop +drm editor examples fullscreen +gles2 headless ivi jpeg kiosk lcms pipewire rdp remoting +resize-optimization screen-sharing +suid systemd test vnc wayland-compositor webp +X xwayland" +RESTRICT="!test? ( test )" + +REQUIRED_USE=" + drm? ( gles2 ) + pipewire? ( drm ) + remoting? ( drm gles2 ) + screen-sharing? ( rdp ) + test? ( desktop headless lcms xwayland ) + wayland-compositor? ( gles2 ) + || ( drm headless rdp vnc wayland-compositor X ) +" + +RDEPEND=" + >=dev-libs/libinput-1.2.0 + >=dev-libs/wayland-1.20.0 + media-libs/libpng:0= + sys-auth/seatd:= + >=x11-libs/cairo-1.11.3 + >=x11-libs/libdrm-2.4.108 + >=x11-libs/libxkbcommon-0.5.0 + >=x11-libs/pixman-0.25.2 + x11-misc/xkeyboard-config + drm? ( + >=media-libs/mesa-17.1[gbm(+)] + >=sys-libs/mtdev-1.1.0 + >=virtual/udev-136 + ) + editor? ( x11-libs/pango ) + examples? ( x11-libs/pango ) + gles2? ( media-libs/mesa[gles2,wayland] ) + jpeg? ( media-libs/libjpeg-turbo:0= ) + lcms? ( >=media-libs/lcms-2.9:2 ) + pipewire? ( >=media-video/pipewire-0.3:= ) + rdp? ( >=net-misc/freerdp-2.3.0:=[server] ) + remoting? ( + media-libs/gstreamer:1.0 + media-libs/gst-plugins-base:1.0 + ) + systemd? ( sys-apps/systemd ) + vnc? ( + =dev-libs/aml-0.3* + =gui-libs/neatvnc-0.6* + sys-libs/pam + ) + webp? ( media-libs/libwebp:0= ) + X? ( + >=x11-libs/libxcb-1.9 + x11-libs/libX11 + ) + xwayland? ( + x11-base/xwayland + x11-libs/cairo[X,xcb(+)] + >=x11-libs/libxcb-1.9 + x11-libs/libXcursor + >=x11-libs/xcb-util-cursor-0.1.4 + ) +" +DEPEND="${RDEPEND} + >=dev-libs/wayland-protocols-1.24 +" +BDEPEND=" + ${PYTHON_DEPS} + dev-util/wayland-scanner + virtual/pkgconfig +" + +PATCHES=( + "${FILESDIR}/weston-12.0.1-issue757.patch" +) + +src_configure() { + local emesonargs=( + $(meson_use drm backend-drm) + -Dbackend-drm-screencast-vaapi=false + $(meson_use headless backend-headless) + $(meson_use pipewire backend-pipewire) + $(meson_use rdp backend-rdp) + $(meson_use screen-sharing screenshare) + $(meson_use vnc backend-vnc) + $(meson_use wayland-compositor backend-wayland) + $(meson_use X backend-x11) + -Dbackend-default=auto + $(meson_use gles2 renderer-gl) + $(meson_use xwayland) + -Dlauncher-libseat=true + $(meson_use systemd) + $(meson_use remoting) + $(meson_use pipewire) + $(meson_use desktop shell-desktop) + $(meson_use fullscreen shell-fullscreen) + $(meson_use ivi shell-ivi) + $(meson_use kiosk shell-kiosk) + $(meson_use lcms color-management-lcms) + $(meson_use jpeg image-jpeg) + $(meson_use webp image-webp) + -Dtools=debug,info,terminal + $(meson_use examples demo-clients) + -Dsimple-clients=$(usex examples damage,dmabuf-v4l,im,shm,touch$(usex gles2 ,dmabuf-egl,egl "") "") + $(meson_use resize-optimization resize-pool) + -Dtest-junit-xml=false + "${myconf[@]}" + ) + meson_src_configure +} + +src_test() { + xdg_environment_reset + addwrite /dev/dri/ + + # xwayland test can fail if X11 socket already exists. + cd "${BUILD_DIR}" || die + meson test $(meson test --list | grep -Exv "xwayland") || die +} + +src_install() { + meson_src_install + readme.gentoo_create_doc +} diff --git a/dev-libs/weston/weston-12.0.1.ebuild b/dev-libs/weston/weston-12.0.1.ebuild deleted file mode 100644 index 684694b47195..000000000000 --- a/dev-libs/weston/weston-12.0.1.ebuild +++ /dev/null @@ -1,142 +0,0 @@ -# Copyright 1999-2023 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 - -if [[ ${PV} = 9999* ]]; then - EGIT_REPO_URI="https://gitlab.freedesktop.org/wayland/weston.git" - GIT_ECLASS="git-r3" - EXPERIMENTAL="true" -fi - -PYTHON_COMPAT=( python3_{9..11} ) -inherit meson python-any-r1 readme.gentoo-r1 xdg-utils ${GIT_ECLASS} - -DESCRIPTION="Wayland reference compositor" -HOMEPAGE="https://wayland.freedesktop.org/ https://gitlab.freedesktop.org/wayland/weston" - -if [[ ${PV} = *9999* ]]; then - SRC_URI="${SRC_PATCHES}" -else - SRC_URI="https://gitlab.freedesktop.org/wayland/${PN}/-/releases/${PV}/downloads/${P}.tar.xz" - KEYWORDS="~amd64 ~arm ~arm64 ~ia64 ~loong ~riscv ~x86" -fi - -LICENSE="MIT CC-BY-SA-3.0" -SLOT="0" - -IUSE="+desktop +drm editor examples fullscreen +gles2 headless ivi jpeg kiosk lcms pipewire rdp remoting +resize-optimization screen-sharing +suid systemd test vnc wayland-compositor webp +X xwayland" -RESTRICT="!test? ( test )" - -REQUIRED_USE=" - drm? ( gles2 ) - pipewire? ( drm ) - remoting? ( drm gles2 ) - screen-sharing? ( rdp ) - test? ( desktop headless lcms xwayland ) - wayland-compositor? ( gles2 ) - || ( drm headless rdp vnc wayland-compositor X ) -" - -RDEPEND=" - >=dev-libs/libinput-1.2.0 - >=dev-libs/wayland-1.20.0 - media-libs/libpng:0= - sys-auth/seatd:= - >=x11-libs/cairo-1.11.3 - >=x11-libs/libdrm-2.4.108 - >=x11-libs/libxkbcommon-0.5.0 - >=x11-libs/pixman-0.25.2 - x11-misc/xkeyboard-config - drm? ( - >=media-libs/mesa-17.1[gbm(+)] - >=sys-libs/mtdev-1.1.0 - >=virtual/udev-136 - ) - editor? ( x11-libs/pango ) - examples? ( x11-libs/pango ) - gles2? ( media-libs/mesa[gles2,wayland] ) - jpeg? ( media-libs/libjpeg-turbo:0= ) - lcms? ( >=media-libs/lcms-2.9:2 ) - pipewire? ( >=media-video/pipewire-0.3:= ) - rdp? ( >=net-misc/freerdp-2.3.0:=[server] ) - remoting? ( - media-libs/gstreamer:1.0 - media-libs/gst-plugins-base:1.0 - ) - systemd? ( sys-apps/systemd ) - vnc? ( - =dev-libs/aml-0.3* - =gui-libs/neatvnc-0.6* - sys-libs/pam - ) - webp? ( media-libs/libwebp:0= ) - X? ( - >=x11-libs/libxcb-1.9 - x11-libs/libX11 - ) - xwayland? ( - x11-base/xwayland - x11-libs/cairo[X,xcb(+)] - >=x11-libs/libxcb-1.9 - x11-libs/libXcursor - >=x11-libs/xcb-util-cursor-0.1.4 - ) -" -DEPEND="${RDEPEND} - >=dev-libs/wayland-protocols-1.24 -" -BDEPEND=" - ${PYTHON_DEPS} - dev-util/wayland-scanner - virtual/pkgconfig -" - -src_configure() { - local emesonargs=( - $(meson_use drm backend-drm) - -Dbackend-drm-screencast-vaapi=false - $(meson_use headless backend-headless) - $(meson_use pipewire backend-pipewire) - $(meson_use rdp backend-rdp) - $(meson_use screen-sharing screenshare) - $(meson_use vnc backend-vnc) - $(meson_use wayland-compositor backend-wayland) - $(meson_use X backend-x11) - -Dbackend-default=auto - $(meson_use gles2 renderer-gl) - $(meson_use xwayland) - -Dlauncher-libseat=true - $(meson_use systemd) - $(meson_use remoting) - $(meson_use pipewire) - $(meson_use desktop shell-desktop) - $(meson_use fullscreen shell-fullscreen) - $(meson_use ivi shell-ivi) - $(meson_use kiosk shell-kiosk) - $(meson_use lcms color-management-lcms) - $(meson_use jpeg image-jpeg) - $(meson_use webp image-webp) - -Dtools=debug,info,terminal - $(meson_use examples demo-clients) - -Dsimple-clients=$(usex examples damage,dmabuf-v4l,im,shm,touch$(usex gles2 ,dmabuf-egl,egl "") "") - $(meson_use resize-optimization resize-pool) - -Dtest-junit-xml=false - "${myconf[@]}" - ) - meson_src_configure -} - -src_test() { - xdg_environment_reset - addwrite /dev/dri/ - - # xwayland test can fail if X11 socket already exists. - cd "${BUILD_DIR}" || die - meson test $(meson test --list | grep -Exv "xwayland") || die -} - -src_install() { - meson_src_install - readme.gentoo_create_doc -} -- cgit v1.2.3