From ab6befea6946d6d01708d5bcde0aba1e8834ca69dfa141a8d2a9ba3afbf8184c Mon Sep 17 00:00:00 2001 From: Stefan Dirsch Date: Tue, 14 Mar 2023 12:12:19 +0000 Subject: [PATCH] - U_glx-Remove-pointless-GLX_INTEL_swap_event-paranoia.patch * reverse apply this patch to fix a regression caused by this commit, which resulted in gnome-shell constantly crashing, which is making a GNOME/X11 session impossible (boo#1209005) OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/Mesa?expand=0&rev=1200 --- Mesa.changes | 8 ++ Mesa.spec | 3 + ...ntless-GLX_INTEL_swap_event-paranoia.patch | 83 +++++++++++++++++++ 3 files changed, 94 insertions(+) create mode 100644 U_glx-Remove-pointless-GLX_INTEL_swap_event-paranoia.patch diff --git a/Mesa.changes b/Mesa.changes index eb38238..819e4cf 100644 --- a/Mesa.changes +++ b/Mesa.changes @@ -1,3 +1,11 @@ +------------------------------------------------------------------- +Tue Mar 14 11:53:20 UTC 2023 - Stefan Dirsch + +- U_glx-Remove-pointless-GLX_INTEL_swap_event-paranoia.patch + * reverse apply this patch to fix a regression caused by this + commit, which resulted in gnome-shell constantly crashing, which + is making a GNOME/X11 session impossible (boo#1209005) + ------------------------------------------------------------------- Wed Mar 1 21:55:02 UTC 2023 - Stefan Dirsch diff --git a/Mesa.spec b/Mesa.spec index 7aabbce..e9d65bb 100644 --- a/Mesa.spec +++ b/Mesa.spec @@ -148,6 +148,7 @@ Patch200: u_fix-build-on-ppc64le.patch Patch300: n_no-sse2-on-ix86-except-for-intel-drivers.patch Patch400: n_stop-iris-flicker.patch Patch500: U_ReturnME.patch +Patch600: U_glx-Remove-pointless-GLX_INTEL_swap_event-paranoia.patch %ifarch %{ix86} x86_64 BuildRequires: DirectX-Headers %endif @@ -795,6 +796,8 @@ rm -rf docs/README.{VMS,WIN32,OS2} %endif %patch400 -p1 %patch500 -p1 +# reverse apply to fix a regression (boo#1209005) +%patch600 -p1 -R # Remove requires to vulkan libs from baselibs.conf on platforms # where vulkan build is disabled; ugly ... diff --git a/U_glx-Remove-pointless-GLX_INTEL_swap_event-paranoia.patch b/U_glx-Remove-pointless-GLX_INTEL_swap_event-paranoia.patch new file mode 100644 index 0000000..e53accd --- /dev/null +++ b/U_glx-Remove-pointless-GLX_INTEL_swap_event-paranoia.patch @@ -0,0 +1,83 @@ +From 19c57ea3bf6d77cf6f07f2a56e781f55b0e6013b Mon Sep 17 00:00:00 2001 +From: Adam Jackson +Date: Tue, 13 Dec 2022 12:26:58 -0500 +Subject: [PATCH] glx: Remove pointless GLX_INTEL_swap_event paranoia + +It's not our job to filter this out, it's the server's job to not send +events that haven't been selected for. We'll still throw the event away +if we don't have any client-side state for it though. + +Acked-by: David Heidelberg +Part-of: +--- + src/glx/dri2_glx.c | 2 +- + src/glx/glx_pbuffer.c | 20 -------------------- + src/glx/glxclient.h | 1 - + 3 files changed, 1 insertion(+), 22 deletions(-) + +diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c +index 9a47f40ca9c..85d6faee5f4 100644 +--- a/src/glx/dri2_glx.c ++++ b/src/glx/dri2_glx.c +@@ -649,7 +649,7 @@ unsigned dri2GetSwapEventType(Display* dpy, XID drawable) + struct glx_display *glx_dpy = __glXInitialize(dpy); + __GLXDRIdrawable *pdraw; + pdraw = dri2GetGlxDrawableFromXDrawableId(dpy, drawable); +- if (!pdraw || !(pdraw->eventMask & GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK)) ++ if (!pdraw) + return 0; + return glx_dpy->codes.first_event + GLX_BufferSwapComplete; + } +diff --git a/src/glx/glx_pbuffer.c b/src/glx/glx_pbuffer.c +index b74fed99efe..f66a520ea30 100644 +--- a/src/glx/glx_pbuffer.c ++++ b/src/glx/glx_pbuffer.c +@@ -64,10 +64,6 @@ ChangeDrawableAttribute(Display * dpy, GLXDrawable drawable, + const CARD32 * attribs, size_t num_attribs) + { + struct glx_display *priv = __glXInitialize(dpy); +-#ifdef GLX_DIRECT_RENDERING +- __GLXDRIdrawable *pdraw; +- int i; +-#endif + CARD32 *output; + CARD8 opcode; + +@@ -112,22 +108,6 @@ ChangeDrawableAttribute(Display * dpy, GLXDrawable drawable, + UnlockDisplay(dpy); + SyncHandle(); + +-#ifdef GLX_DIRECT_RENDERING +- pdraw = GetGLXDRIDrawable(dpy, drawable); +- +- if (!pdraw) +- return; +- +- for (i = 0; i < num_attribs; i++) { +- switch(attribs[i * 2]) { +- case GLX_EVENT_MASK: +- /* Keep a local copy for masking out DRI2 proto events as needed */ +- pdraw->eventMask = attribs[i * 2 + 1]; +- break; +- } +- } +-#endif +- + return; + } + +diff --git a/src/glx/glxclient.h b/src/glx/glxclient.h +index af7759bec02..8eda47988b4 100644 +--- a/src/glx/glxclient.h ++++ b/src/glx/glxclient.h +@@ -127,7 +127,6 @@ struct __GLXDRIdrawableRec + struct glx_screen *psc; + GLenum textureTarget; + GLenum textureFormat; /* EXT_texture_from_pixmap support */ +- unsigned long eventMask; + int refcount; + }; + +-- +2.35.3 +