public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Ionen Wolkens" <ionen@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: gui-libs/egl-wayland/files/, gui-libs/egl-wayland/
Date: Tue, 28 Jun 2022 17:26:48 +0000 (UTC)	[thread overview]
Message-ID: <1656437146.37e44543dc58bb084aa4519214c39775151cc848.ionen@gentoo> (raw)

commit:     37e44543dc58bb084aa4519214c39775151cc848
Author:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
AuthorDate: Tue Jun 28 15:57:08 2022 +0000
Commit:     Ionen Wolkens <ionen <AT> gentoo <DOT> org>
CommitDate: Tue Jun 28 17:25:46 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=37e44543

gui-libs/egl-wayland: revbump with a reverted commit

Unsure if 100% proper given doesn't revert cleanly, but choices are
either stick with 1.1.9 with broken vulkan, use 1.1.10 with broken
resizing, or try this.

Keeping -r0 for now in case testing is needed.

Signed-off-by: Ionen Wolkens <ionen <AT> gentoo.org>

 gui-libs/egl-wayland/egl-wayland-1.1.10-r1.ebuild  | 44 ++++++++++
 .../egl-wayland-1.1.10-revert-defer-resizes.patch  | 96 ++++++++++++++++++++++
 2 files changed, 140 insertions(+)

diff --git a/gui-libs/egl-wayland/egl-wayland-1.1.10-r1.ebuild b/gui-libs/egl-wayland/egl-wayland-1.1.10-r1.ebuild
new file mode 100644
index 000000000000..d3d107c293bf
--- /dev/null
+++ b/gui-libs/egl-wayland/egl-wayland-1.1.10-r1.ebuild
@@ -0,0 +1,44 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit meson
+
+DESCRIPTION="EGLStream-based Wayland external platform"
+HOMEPAGE="https://github.com/NVIDIA/egl-wayland"
+SRC_URI="https://github.com/NVIDIA/egl-wayland/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64 ~arm64"
+
+RDEPEND="
+	dev-libs/wayland
+	!<x11-drivers/nvidia-drivers-470.57.02[wayland(-)]"
+DEPEND="
+	${RDEPEND}
+	dev-libs/wayland-protocols
+	gui-libs/eglexternalplatform
+	>=media-libs/libglvnd-1.3.4
+	x11-libs/libdrm"
+BDEPEND="dev-util/wayland-scanner"
+
+PATCHES=(
+	"${FILESDIR}"/${PN}-1.1.6-remove-werror.patch
+	"${FILESDIR}"/${P}-revert-defer-resizes.patch
+)
+
+src_install() {
+	meson_src_install
+
+	insinto /usr/share/egl/egl_external_platform.d
+	doins "${FILESDIR}"/10_nvidia_wayland.json
+}
+
+pkg_postinst() {
+	if has_version "<x11-drivers/nvidia-drivers-391"; then
+		ewarn "<=nvidia-drivers-390.xx may not work properly with this version of"
+		ewarn "egl-wayland, it is recommended to use nouveau drivers for wayland."
+	fi
+}

diff --git a/gui-libs/egl-wayland/files/egl-wayland-1.1.10-revert-defer-resizes.patch b/gui-libs/egl-wayland/files/egl-wayland-1.1.10-revert-defer-resizes.patch
new file mode 100644
index 000000000000..bb54ad8d1a0c
--- /dev/null
+++ b/gui-libs/egl-wayland/files/egl-wayland-1.1.10-revert-defer-resizes.patch
@@ -0,0 +1,96 @@
+1.1.10 is needed for >=515.57 for working vulkan on wayland but
+carries a major regression that can make applications half-displayed
+and unusable after a resize.
+
+Official drivers seem to do something similar, they ship a modified
+1.1.9 with vulkan fixes rather than 1.1.10.
+
+https://github.com/NVIDIA/egl-wayland/issues/57
+Revert of https://github.com/NVIDIA/egl-wayland/commit/ddaa272
+--- a/src/wayland-eglsurface.c
++++ b/src/wayland-eglsurface.c
+@@ -1612,17 +1612,30 @@
+ }
+ 
+-void
+-wlEglResizeSurfaceIfRequired(WlEglDisplay *display, WlEglPlatformData *pData, WlEglSurface *surface)
++static void
++resize_callback(struct wl_egl_window *window, void *data)
+ {
++    WlEglDisplay      *display = NULL;
++    WlEglPlatformData *pData   = NULL;
++    WlEglSurface      *surface = (WlEglSurface *)data;
+     EGLint             err     = EGL_SUCCESS;
+ 
+-    if (!surface) {
++    if (!window || !surface) {
++        return;
++    }
++
++    display = surface->wlEglDpy;
++    if (!wlEglIsWaylandDisplay(display->nativeDpy) ||
++        !wlEglIsWaylandWindowValid(surface->wlEglWin)) {
+         return;
+     }
++    pData = display->data;
+ 
+     pthread_mutex_lock(&surface->mutexLock);
+ 
+     /* Resize stream only if window geometry has changed */
+-    if (surface->isResized) {
++    if ((surface->width != window->width) ||
++        (surface->height != window->height) ||
++        (surface->dx != window->dx) ||
++        (surface->dy != window->dy)) {
+         // If a damage thread is in use, wait for it to finish processing all
+         //   pending frames
+@@ -1630,5 +1643,4 @@
+ 
+         discard_surface_context(surface);
+-        surface->isResized = EGL_FALSE;
+         surface->ctx.wlStreamResource = NULL;
+         surface->ctx.isAttached = EGL_FALSE;
+@@ -1655,34 +1667,4 @@
+     pthread_mutex_unlock(&surface->mutexLock);
+ }
+-
+-static void
+-resize_callback(struct wl_egl_window *window, void *data)
+-{
+-    WlEglDisplay      *display = NULL;
+-    WlEglSurface      *surface = (WlEglSurface *)data;
+-
+-    if (!window || !surface) {
+-        return;
+-    }
+-
+-    display = surface->wlEglDpy;
+-    if (!wlEglIsWaylandDisplay(display->nativeDpy) ||
+-        !wlEglIsWaylandWindowValid(surface->wlEglWin)) {
+-        return;
+-    }
+-
+-    pthread_mutex_lock(&surface->mutexLock);
+-
+-    /* Resize stream only if window geometry has changed */
+-    if ((surface->width != window->width) ||
+-        (surface->height != window->height) ||
+-        (surface->dx != window->dx) ||
+-        (surface->dy != window->dy)) {
+-            surface->isResized = EGL_TRUE;
+-            wl_surface_commit(surface->wlSurface);
+-    }
+-    
+-    pthread_mutex_unlock(&surface->mutexLock);
+-}
+ 
+ static EGLBoolean validateSurfaceAttrib(EGLAttrib attrib, EGLAttrib value)
+--- a/src/wayland-eglswap.c
++++ b/src/wayland-eglswap.c
+@@ -65,6 +65,4 @@
+     surface = eglSurface;
+ 
+-    wlEglResizeSurfaceIfRequired(display, data, surface);
+-
+     if (surface->pendingSwapIntervalUpdate == EGL_TRUE) {
+         /* Send request from client to override swapinterval value based on


             reply	other threads:[~2022-06-28 17:27 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-28 17:26 Ionen Wolkens [this message]
  -- strict thread matches above, loose matches on Subject: below --
2023-09-12 16:15 [gentoo-commits] repo/gentoo:master commit in: gui-libs/egl-wayland/files/, gui-libs/egl-wayland/ Ionen Wolkens

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1656437146.37e44543dc58bb084aa4519214c39775151cc848.ionen@gentoo \
    --to=ionen@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox