Your message dated Sat, 29 Apr 2023 10:54:14 +0100
with message-id
<502b8fb37ece620c9723446611a9287974ba5a0c.ca...@adam-barratt.org.uk>
and subject line Closing p-u requests for fixes included in 11.7
has caused the Debian Bug report #1031926,
regarding bullseye-pu: package gtk+3.0/3.24.24-4+deb11u3
to be marked as done.
This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.
(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)
--
1031926: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1031926
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: bullseye
User: [email protected]
Usertags: pu
X-Debbugs-Cc: [email protected], Dominique Martinet
<[email protected]>
Control: affects -1 + src:gtk+3.0
[ Reason ]
User request via #1020937: make it possible to run GTK 3 apps in native
Wayland on some proprietary GLES-only graphics drivers (Raspberry Pi
video core, iMX/Vivante).
[ Impact ]
If not accepted, GTK 3 apps on the affected hardware/driver combination
can only be run if forced to use X11.
[ Tests ]
The proposed change has been in testing and unstable since November
as part of version 3.24.34-4. The version proposed for bullseye is a
straightforward cherry-pick.
For the affected GLES-only graphics drivers, the user requesting the
change has confirmed that a functionally equivalent prerelease package
has the desired effect.
For ordinary "desktop GL" drivers, I used the same prerelease package on
a bullseye/NVIDIA system (with NVIDIA proprietary drivers) for several
weeks without incident, and my partner's bullseye/Intel/Mesa system now
has the proposed package, again without obvious regressions.
[ Risks ]
It's a minimal change, cherry-picked from newer GTK 3 without
modification. The affected code runs whenever GL is initialized for a
window, which should mean that any regressions would be very obvious,
since many (all?) GTK 3 apps use GL.
The version of this change in GTK 4 is much more intrusive and did not
seem suitable for backporting.
[ Checklist ]
[x] *all* changes are documented in the d/changelog
[x] I reviewed all changes and I approve them
[x] attach debdiff against the package in (old)stable
[x] the issue is verified as fixed in unstable
[ Changes ]
All changes are part of solving #1020937.
diffstat for gtk+3.0-3.24.24 gtk+3.0-3.24.24
debian/changelog | 12 +
debian/patches/gdk_wayland_display_init_gl-use-GLES-API-if-required.patch | 82 ++++++++++
debian/patches/series | 1
gdk/wayland/gdkglcontext-wayland.c | 12 -
gdk/wayland/gdkglcontext-wayland.h | 3
5 files changed, 105 insertions(+), 5 deletions(-)
diff -Nru gtk+3.0-3.24.24/debian/changelog gtk+3.0-3.24.24/debian/changelog
--- gtk+3.0-3.24.24/debian/changelog 2022-03-10 10:30:09.000000000 +0000
+++ gtk+3.0-3.24.24/debian/changelog 2023-02-24 19:07:01.000000000 +0000
@@ -1,3 +1,15 @@
+gtk+3.0 (3.24.24-4+deb11u3) bullseye; urgency=medium
+
+ * d/p/gdk_wayland_display_init_gl-use-GLES-API-if-required.patch:
+ Apply patch from 3.24.35 to fix Wayland + EGL on GLES-only platforms.
+ Previously, GTK assumed that EGL could use the OpenGL API everywhere,
+ but some proprietary drivers like those for Raspberry Pi and Vivante
+ only support OpenGL ES. Allow use of OpenGL ES to be forced via
+ environment variable GDK_GL=gles.
+ Thanks to Dominique Martinet (Closes: #1020937)
+
+ -- Simon McVittie <[email protected]> Fri, 24 Feb 2023 19:07:01 +0000
+
gtk+3.0 (3.24.24-4+deb11u2) bullseye; urgency=medium
[ Jian-Hong Pan ]
diff -Nru gtk+3.0-3.24.24/debian/patches/gdk_wayland_display_init_gl-use-GLES-API-if-required.patch gtk+3.0-3.24.24/debian/patches/gdk_wayland_display_init_gl-use-GLES-API-if-required.patch
--- gtk+3.0-3.24.24/debian/patches/gdk_wayland_display_init_gl-use-GLES-API-if-required.patch 1970-01-01 01:00:00.000000000 +0100
+++ gtk+3.0-3.24.24/debian/patches/gdk_wayland_display_init_gl-use-GLES-API-if-required.patch 2023-02-24 19:07:01.000000000 +0000
@@ -0,0 +1,82 @@
+From: Dominique Martinet <[email protected]>
+Date: Wed, 28 Sep 2022 14:18:31 +0900
+Subject: gdk_wayland_display_init_gl: use GLES API if required
+
+gdk_wayland_gl_context_realize properly checks for GLES and uses
+eglBindAPI with the proper API, but before that init is always called
+with regular GL interface which is not implemented for many embedded
+devices.
+
+This was fixed in GTK 4 with commit 482845b02705 ("wayland: Remove
+initial GL API bind"), but that commit cannot easily be applied because
+the current version queries some GL properties during init so we would
+need to backport more for it to be applicable.
+
+This patch takes the minimal approach of initializing GLES context,
+allowing the gtk3 demo OpenGL test (and real applications) to work
+when GDK_GL=gles is set.
+
+Bug: https://gitlab.gnome.org/GNOME/gtk/-/issues/3028
+Bug-Debian: https://bugs.debian.org/1020937
+Forwarded: https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/5062
+Applied-upstream: 3.24.35, commit:0e5fe45ea20cce074a128911949dbedf4f8265bf
+---
+ gdk/wayland/gdkglcontext-wayland.c | 12 ++++++++----
+ gdk/wayland/gdkglcontext-wayland.h | 3 ++-
+ 2 files changed, 10 insertions(+), 5 deletions(-)
+
+diff --git a/gdk/wayland/gdkglcontext-wayland.c b/gdk/wayland/gdkglcontext-wayland.c
+index a221025..296e5e0 100644
+--- a/gdk/wayland/gdkglcontext-wayland.c
++++ b/gdk/wayland/gdkglcontext-wayland.c
+@@ -309,11 +309,13 @@ gdk_wayland_get_display (GdkWaylandDisplay *display_wayland)
+ }
+
+ gboolean
+-gdk_wayland_display_init_gl (GdkDisplay *display)
++gdk_wayland_display_init_gl (GdkDisplay *display,
++ GdkGLContext *share)
+ {
+ GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display);
+ EGLint major, minor;
+ EGLDisplay dpy;
++ gboolean use_es;
+
+ if (display_wayland->have_egl)
+ return TRUE;
+@@ -326,8 +328,10 @@ gdk_wayland_display_init_gl (GdkDisplay *display)
+ if (!eglInitialize (dpy, &major, &minor))
+ return FALSE;
+
+- if (!eglBindAPI (EGL_OPENGL_API))
+- return FALSE;
++ use_es = (_gdk_gl_flags & GDK_GL_GLES) != 0 ||
++ (share != NULL && gdk_gl_context_get_use_es (share));
++ if (!eglBindAPI (use_es ? EGL_OPENGL_ES_API : EGL_OPENGL_API))
++ return FALSE;
+
+ display_wayland->egl_display = dpy;
+ display_wayland->egl_major_version = major;
+@@ -461,7 +465,7 @@ gdk_wayland_window_create_gl_context (GdkWindow *window,
+ GdkWaylandGLContext *context;
+ EGLConfig config;
+
+- if (!gdk_wayland_display_init_gl (display))
++ if (!gdk_wayland_display_init_gl (display, share))
+ {
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_NOT_AVAILABLE,
+diff --git a/gdk/wayland/gdkglcontext-wayland.h b/gdk/wayland/gdkglcontext-wayland.h
+index bd2bb88..88a319e 100644
+--- a/gdk/wayland/gdkglcontext-wayland.h
++++ b/gdk/wayland/gdkglcontext-wayland.h
+@@ -47,7 +47,8 @@ struct _GdkWaylandGLContextClass
+ GdkGLContextClass parent_class;
+ };
+
+-gboolean gdk_wayland_display_init_gl (GdkDisplay *display);
++gboolean gdk_wayland_display_init_gl (GdkDisplay *display,
++ GdkGLContext *share);
+ GdkGLContext * gdk_wayland_window_create_gl_context (GdkWindow *window,
+ gboolean attach,
+ GdkGLContext *share,
diff -Nru gtk+3.0-3.24.24/debian/patches/series gtk+3.0-3.24.24/debian/patches/series
--- gtk+3.0-3.24.24/debian/patches/series 2022-03-10 10:30:09.000000000 +0000
+++ gtk+3.0-3.24.24/debian/patches/series 2023-02-24 19:07:01.000000000 +0000
@@ -26,3 +26,4 @@
printing-Show-all-Avahi-advertised-printers.patch
Don-t-try-to-create-local-cups-printers-before-CUPS-2.2.patch
debian/cups-Use-the-same-name-mangling-as-Debian-11-s-cups-brows.patch
+gdk_wayland_display_init_gl-use-GLES-API-if-required.patch
diff -Nru gtk+3.0-3.24.24/gdk/wayland/gdkglcontext-wayland.c gtk+3.0-3.24.24/gdk/wayland/gdkglcontext-wayland.c
--- gtk+3.0-3.24.24/gdk/wayland/gdkglcontext-wayland.c 2020-12-02 22:21:55.000000000 +0000
+++ gtk+3.0-3.24.24/gdk/wayland/gdkglcontext-wayland.c 2023-02-25 11:30:29.000000000 +0000
@@ -309,11 +309,13 @@
}
gboolean
-gdk_wayland_display_init_gl (GdkDisplay *display)
+gdk_wayland_display_init_gl (GdkDisplay *display,
+ GdkGLContext *share)
{
GdkWaylandDisplay *display_wayland = GDK_WAYLAND_DISPLAY (display);
EGLint major, minor;
EGLDisplay dpy;
+ gboolean use_es;
if (display_wayland->have_egl)
return TRUE;
@@ -326,8 +328,10 @@
if (!eglInitialize (dpy, &major, &minor))
return FALSE;
- if (!eglBindAPI (EGL_OPENGL_API))
- return FALSE;
+ use_es = (_gdk_gl_flags & GDK_GL_GLES) != 0 ||
+ (share != NULL && gdk_gl_context_get_use_es (share));
+ if (!eglBindAPI (use_es ? EGL_OPENGL_ES_API : EGL_OPENGL_API))
+ return FALSE;
display_wayland->egl_display = dpy;
display_wayland->egl_major_version = major;
@@ -461,7 +465,7 @@
GdkWaylandGLContext *context;
EGLConfig config;
- if (!gdk_wayland_display_init_gl (display))
+ if (!gdk_wayland_display_init_gl (display, share))
{
g_set_error_literal (error, GDK_GL_ERROR,
GDK_GL_ERROR_NOT_AVAILABLE,
diff -Nru gtk+3.0-3.24.24/gdk/wayland/gdkglcontext-wayland.h gtk+3.0-3.24.24/gdk/wayland/gdkglcontext-wayland.h
--- gtk+3.0-3.24.24/gdk/wayland/gdkglcontext-wayland.h 2020-12-02 22:21:55.000000000 +0000
+++ gtk+3.0-3.24.24/gdk/wayland/gdkglcontext-wayland.h 2023-02-25 11:30:29.000000000 +0000
@@ -47,7 +47,8 @@
GdkGLContextClass parent_class;
};
-gboolean gdk_wayland_display_init_gl (GdkDisplay *display);
+gboolean gdk_wayland_display_init_gl (GdkDisplay *display,
+ GdkGLContext *share);
GdkGLContext * gdk_wayland_window_create_gl_context (GdkWindow *window,
gboolean attach,
GdkGLContext *share,
--- End Message ---
--- Begin Message ---
Package: release.debian.org
Version: 11.7
Hi,
Each of the updates referred to in these requests was included in this
morning's 11.7 point release.
Regards,
Adam
--- End Message ---