Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package libglvnd for openSUSE:Factory checked in at 2021-07-29 21:31:07 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libglvnd (Old) and /work/SRC/openSUSE:Factory/.libglvnd.new.1899 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libglvnd" Thu Jul 29 21:31:07 2021 rev:18 rq:908426 version:1.3.3 Changes: -------- --- /work/SRC/openSUSE:Factory/libglvnd/libglvnd.changes 2020-09-03 01:14:32.124478965 +0200 +++ /work/SRC/openSUSE:Factory/.libglvnd.new.1899/libglvnd.changes 2021-07-29 21:31:38.340795077 +0200 @@ -1,0 +2,5 @@ +Fri Jul 23 11:32:17 UTC 2021 - Michael Pujos <[email protected]> + +- update to 1.3.3, fixes boo#1188640 + +------------------------------------------------------------------- Old: ---- libglvnd-1.3.2.tar.gz New: ---- libglvnd-1.3.3.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libglvnd.spec ++++++ --- /var/tmp/diff_new_pack.aytLKo/_old 2021-07-29 21:31:39.164794062 +0200 +++ /var/tmp/diff_new_pack.aytLKo/_new 2021-07-29 21:31:39.168794058 +0200 @@ -1,7 +1,7 @@ # # spec file for package libglvnd # -# Copyright (c) 2020 SUSE LLC +# Copyright (c) 2021 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -19,7 +19,7 @@ # Please submit bugfixes or comments via http://bugs.opensuse.org/ # Name: libglvnd -Version: 1.3.2 +Version: 1.3.3 Release: 0 Summary: The GL Vendor-Neutral Dispatch library License: MIT ++++++ libglvnd-1.3.2.tar.gz -> libglvnd-1.3.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libglvnd-1.3.2/configure.ac new/libglvnd-1.3.3/configure.ac --- old/libglvnd-1.3.2/configure.ac 2020-06-26 00:17:25.000000000 +0200 +++ new/libglvnd-1.3.3/configure.ac 2021-04-30 21:09:52.000000000 +0200 @@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script. AC_PREREQ([2.63]) -AC_INIT([libglvnd], [1.3.2], [[email protected]]) +AC_INIT([libglvnd], [1.3.3], [[email protected]]) AC_CONFIG_SRCDIR([config.h.in]) AC_CONFIG_HEADERS([config.h]) @@ -106,6 +106,16 @@ AM_CONDITIONAL([ENABLE_GLES1_HEADERS], [test "x$enable_headers" = "xyes" -a "x$enable_gles1" = "xyes"]) AM_CONDITIONAL([ENABLE_GLES2_HEADERS], [test "x$enable_headers" = "xyes" -a "x$enable_gles2" = "xyes"]) +AC_ARG_ENABLE([entrypoint-patching], + [AS_HELP_STRING([--disable-entrypoint-patching], + [Disable OpenGL entrypoint patching optimization @<:@default=enabled@:>@])], + [enable_entrypoint_patching="$enableval"], + [enable_entrypoint_patching=yes] +) +AS_IF([test "x$enable_entrypoint_patching" = "xyes"], + [AC_DEFINE([GLDISPATCH_ENABLE_PATCHING], 1, + [Define to 1 to enable entrypoint patching in libGLdispatch.])]) + dnl dnl Arch/platform-specific settings. Copied from mesa dnl @@ -201,10 +211,6 @@ PKG_CHECK_MODULES([GLPROTO], [glproto]) fi -AS_IF([test "x$gldispatch_use_tls" = "xyes"], - [AC_DEFINE([GLDISPATCH_USE_TLS], 1, - [Define to 1 if libGLdispatch should use a TLS variable for the dispatch table.])]) - dnl Checks for typedefs, structures, and compiler characteristics. AC_C_TYPEOF @@ -236,8 +242,8 @@ AC_MSG_CHECKING([for entrypoint stub type]) case "x$asm_arch" in -xx86 | xx86_64) - # For x86 and x86-64, both the TLS and TSD stubs work. +xx86 | xx86_64 | xppc64) + # For x86, x86-64, and ppc64, both the TLS and TSD stubs work. if test "x$HAVE_INIT_TLS" = "xyes" ; then gldispatch_entry_type=${asm_arch}_tls gldispatch_use_tls=yes @@ -256,16 +262,6 @@ gldispatch_entry_type=aarch64_tsd gldispatch_use_tls=no ;; -xppc64) - # For ppc64, allow both the TLS and TSD stubs for now. - if test "x$HAVE_INIT_TLS" = "xyes" ; then - gldispatch_entry_type=ppc64_tls - gldispatch_use_tls=yes - else - gldispatch_entry_type=ppc64_tsd - gldispatch_use_tls=no - fi - ;; *) # The C stubs will work with either TLS or TSD. gldispatch_entry_type=pure_c diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libglvnd-1.3.2/meson.build new/libglvnd-1.3.3/meson.build --- old/libglvnd-1.3.2/meson.build 2020-06-26 00:17:25.000000000 +0200 +++ new/libglvnd-1.3.3/meson.build 2021-04-30 21:09:52.000000000 +0200 @@ -28,7 +28,7 @@ project( 'glvnd', 'c', - version : '1.3.2', + version : '1.3.3', meson_version : '>= 0.48', default_options : ['c_std=gnu99'] ) @@ -132,17 +132,18 @@ gl_dispatch_type = 'pure_c' if use_asm + thread_type = have_tls ? 'tls' : 'tsd' if host_machine.cpu_family().startswith('x86') gl_dispatch_type = '@0@_@1@'.format( host_machine.cpu_family(), - have_tls ? 'tls' : 'tsd', + thread_type, ) elif host_machine.cpu_family() == 'arm' gl_dispatch_type = 'armv7_tsd' elif host_machine.cpu_family() == 'aarch64' gl_dispatch_type = 'aarch64_tsd' elif host_machine.cpu_family() == 'ppc64' - gl_dispatch_type = 'ppc64_@0@'.format(have_tls ? 'tls' : 'tsd') + gl_dispatch_type = 'ppc64_@0@'.format(thread_type) endif endif message('Using dispatch stub type: @0@'.format(gl_dispatch_type)) @@ -190,6 +191,10 @@ add_project_arguments('-DGLDISPATCH_PAGE_SIZE=' + _p, language : ['c']) endif +if not get_option('entrypoint-patching').disabled() + add_project_arguments('-DGLDISPATCH_ENABLE_PATCHING', language : ['c']) +endif + # Set EGL_NO_X11 unconditionally, Libglvnd doesn't make any assumptions about # native display or drawable types, so we don't need X11-specific typedefs for # them diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libglvnd-1.3.2/meson_options.txt new/libglvnd-1.3.3/meson_options.txt --- old/libglvnd-1.3.2/meson_options.txt 2020-06-26 00:17:25.000000000 +0200 +++ new/libglvnd-1.3.3/meson_options.txt 2021-04-30 21:09:52.000000000 +0200 @@ -75,3 +75,8 @@ value : true, description : 'Install headers for enabled APIs.' ) +option( + 'entrypoint-patching', + type : 'feature', + description : 'Allow vendor libraries to patch OpenGL entrypoint functions.' +) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libglvnd-1.3.2/src/EGL/libeglmapping.c new/libglvnd-1.3.3/src/EGL/libeglmapping.c --- old/libglvnd-1.3.2/src/EGL/libeglmapping.c 2020-06-26 00:17:25.000000000 +0200 +++ new/libglvnd-1.3.3/src/EGL/libeglmapping.c 2021-04-30 21:09:52.000000000 +0200 @@ -276,7 +276,9 @@ } if (!vendor->staticDispatch.queryDevicesEXT(0, NULL, &count)) { - return EGL_FALSE; + // Even if this vendor fails, we can still return the devices from any + // other vendors + return EGL_TRUE; } if (count <= 0) { return EGL_TRUE; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libglvnd-1.3.2/src/GLX/glvnd_genentry.c new/libglvnd-1.3.3/src/GLX/glvnd_genentry.c --- old/libglvnd-1.3.2/src/GLX/glvnd_genentry.c 2020-06-26 00:17:25.000000000 +0200 +++ new/libglvnd-1.3.3/src/GLX/glvnd_genentry.c 2021-04-30 21:09:52.000000000 +0200 @@ -126,6 +126,10 @@ ".balign " U_STRINGIFY(STUB_SIZE) "\n" \ "glx_entrypoint_start:\n" +#if defined(USE_ARMV7_ASM) && defined(__thumb__) + ".arm\n" +#endif + #define GLX_STUBS_ASM #include "g_glx_dispatch_stub_list.h" @@ -133,6 +137,10 @@ ".hidden glx_entrypoint_end\n" ".balign " U_STRINGIFY(STUB_SIZE) "\n" \ "glx_entrypoint_end:\n" + +#if defined(USE_ARMV7_ASM) && defined(__thumb__) + ".thumb\n" +#endif ); static void *DefaultDispatchFunc(void) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libglvnd-1.3.2/src/GLX/libglxmapping.c new/libglvnd-1.3.3/src/GLX/libglxmapping.c --- old/libglvnd-1.3.2/src/GLX/libglxmapping.c 2020-06-26 00:17:25.000000000 +0200 +++ new/libglvnd-1.3.3/src/GLX/libglxmapping.c 2021-04-30 21:09:52.000000000 +0200 @@ -95,6 +95,7 @@ typedef struct __GLXdisplayInfoHashRec { __GLXdisplayInfo info; + Bool inTeardown; UT_hash_handle hh; } __GLXdisplayInfoHash; @@ -697,15 +698,27 @@ LKDHASH_WRLOCK(__glXDisplayInfoHash); + // Set the inTeardown flag for this display, but don't remove it from the + // hashtable yet. We shouldn't try to look up this display after this, but + // just in case something does, we don't want to try to set up a new + // __GLXdisplayInfoHash struct for it. HASH_FIND_PTR(_LH(__glXDisplayInfoHash), &dpy, pEntry); if (pEntry != NULL) { - __glXDisplayClosed(&pEntry->info); - HASH_DEL(_LH(__glXDisplayInfoHash), pEntry); + assert(!pEntry->inTeardown); + pEntry->inTeardown = True; } LKDHASH_UNLOCK(__glXDisplayInfoHash); - CleanupDisplayInfoEntry(NULL, pEntry); - free(pEntry); + if (pEntry != NULL) { + __glXDisplayClosed(&pEntry->info); + + // Now, we can remove the display from the hashtable and free it. + LKDHASH_WRLOCK(__glXDisplayInfoHash); + HASH_DEL(_LH(__glXDisplayInfoHash), pEntry); + LKDHASH_UNLOCK(__glXDisplayInfoHash); + CleanupDisplayInfoEntry(NULL, pEntry); + free(pEntry); + } return 0; } @@ -724,6 +737,12 @@ LKDHASH_UNLOCK(__glXDisplayInfoHash); if (pEntry != NULL) { + if (pEntry->inTeardown) { + // This shouldn't happen: If we're in the process of tearing down a + // display, then we shouldn't be trying to look up the display + // again. + return NULL; + } return &pEntry->info; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libglvnd-1.3.2/src/GLdispatch/vnd-glapi/entry_common.c new/libglvnd-1.3.3/src/GLdispatch/vnd-glapi/entry_common.c --- old/libglvnd-1.3.2/src/GLdispatch/vnd-glapi/entry_common.c 2020-06-26 00:17:25.000000000 +0200 +++ new/libglvnd-1.3.3/src/GLdispatch/vnd-glapi/entry_common.c 2021-04-30 21:09:52.000000000 +0200 @@ -41,6 +41,7 @@ static int entry_patch_mprotect(int prot) { +#if GLDISPATCH_ENABLE_PATCHING size_t size; size_t pageSize = (size_t) sysconf(_SC_PAGESIZE); @@ -57,6 +58,9 @@ return 0; } return 1; +#else // GLDISPATCH_ENABLE_PATCHING + return 0; +#endif } int entry_patch_start(void) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libglvnd-1.3.2/tests/testgldispatch.c new/libglvnd-1.3.3/tests/testgldispatch.c --- old/libglvnd-1.3.2/tests/testgldispatch.c 2020-06-26 00:17:25.000000000 +0200 +++ new/libglvnd-1.3.3/tests/testgldispatch.c 2021-04-30 21:09:52.000000000 +0200 @@ -149,6 +149,13 @@ } #endif +#if !defined(GLDISPATCH_ENABLE_PATCHING) + if (enablePatching) + { + return 77; + } +#endif + __glDispatchInit(); InitDummyVendors();
