From 2c56df3e588b1756128a3005b71eb62bc0aced70 Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Wed, 28 Feb 2018 13:50:06 +0100 Subject: [PATCH] Update to 1.5.0 --- .gitignore | 1 + 0001-dispatch-Learn-about-glvnd.patch | 94 ------------------- ...eference-glvnd-defines-on-non-glvnd-.patch | 34 ------- ...xy_conservative_glx_dlsym-when-probi.patch | 68 -------------- ...-paranoid-about-detecting-GLX-or-not.patch | 62 ------------ 0005-dispatch-Fix-the-libOpenGL-soname.patch | 27 ------ libepoxy.spec | 13 +-- sources | 2 +- 8 files changed, 7 insertions(+), 294 deletions(-) delete mode 100644 0001-dispatch-Learn-about-glvnd.patch delete mode 100644 0002-dispatch-Don-t-reference-glvnd-defines-on-non-glvnd-.patch delete mode 100644 0003-dispatch-Use-epoxy_conservative_glx_dlsym-when-probi.patch delete mode 100644 0004-dispatch-Be-more-paranoid-about-detecting-GLX-or-not.patch delete mode 100644 0005-dispatch-Fix-the-libOpenGL-soname.patch diff --git a/.gitignore b/.gitignore index 300247c..4985c8f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ /libepoxy-*.tar.gz /v*.tar.gz /libepoxy-1.4.3.tar.xz +/libepoxy-1.5.0.tar.xz diff --git a/0001-dispatch-Learn-about-glvnd.patch b/0001-dispatch-Learn-about-glvnd.patch deleted file mode 100644 index 659dd3c..0000000 --- a/0001-dispatch-Learn-about-glvnd.patch +++ /dev/null @@ -1,94 +0,0 @@ -From 58ca477e14c05435f32e4393ff31e8281e8e8c9d Mon Sep 17 00:00:00 2001 -From: Adam Jackson -Date: Fri, 16 Jun 2017 14:37:06 -0400 -Subject: [PATCH 1/5] dispatch: Learn about glvnd - -glvnd has the rather nice property that GLX and (desktop) GL are -available in separate libraries. As an example this would allow an EGL -app to use desktop GL without any X11 libraries. Fix up our dlopens to -prefer the glvnd libraries if available and fall back to the old ABI if -not. - -Signed-off-by: Adam Jackson -(cherry picked from commit 759de647298aca23b5d77f7f11e530dc99c08ca9) ---- - src/dispatch_common.c | 31 ++++++++++++++++++++++++++----- - 1 file changed, 26 insertions(+), 5 deletions(-) - -diff --git a/src/dispatch_common.c b/src/dispatch_common.c -index a38c0fc..bbbf913 100644 ---- a/src/dispatch_common.c -+++ b/src/dispatch_common.c -@@ -178,6 +178,7 @@ - #elif defined(ANDROID) - #define GLX_LIB "libGLESv2.so" - #else -+#define GLVND_GLX_LIB "libGLX.so.1" - #define GLX_LIB "libGL.so.1" - #endif - -@@ -193,6 +194,7 @@ - #define EGL_LIB "libEGL.so.1" - #define GLES1_LIB "libGLESv1_CM.so.1" - #define GLES2_LIB "libGLESv2.so.2" -+#define OPENGL_LIB "libOpenGL.so.1" - #endif - - #ifdef __GNUC__ -@@ -223,13 +225,18 @@ struct api { - pthread_mutex_t mutex; - #endif - -- /* dlopen() return value for libGL.so.1. */ -+ /* -+ * dlopen() return value for the GLX API. This is libGLX.so.1 if the -+ * runtime is glvnd-enabled, else libGL.so.1 -+ */ - void *glx_handle; - - /* -- * dlopen() return value for OS X's GL library. -+ * dlopen() return value for the desktop GL library. - * -- * On linux, glx_handle is used instead. -+ * On Windows this is OPENGL32. On OSX this is classic libGL. On Linux -+ * this is either libOpenGL (if the runtime is glvnd-enabled) or -+ * classic libGL.so.1 - */ - void *gl_handle; - -@@ -590,6 +597,10 @@ epoxy_egl_dlsym(const char *name) - void * - epoxy_conservative_glx_dlsym(const char *name, bool exit_if_fails) - { -+ /* prefer the glvnd library if it exists */ -+ if (!api.glx_handle) -+ get_dlopen_handle(&api.glx_handle, GLVND_GLX_LIB, false); -+ - return do_dlsym(&api.glx_handle, GLX_LIB, name, exit_if_fails); - } - -@@ -609,8 +620,18 @@ epoxy_gl_dlsym(const char *name) - "/System/Library/Frameworks/OpenGL.framework/Versions/Current/OpenGL", - name, true); - #else -- /* There's no library for desktop GL support independent of GLX. */ -- return epoxy_glx_dlsym(name); -+ void *sym; -+ -+ if (!api.gl_handle) -+ get_dlopen_handle(&api.gl_handle, OPENGL_LIB, false); -+ -+ if (api.gl_handle) -+ return do_dlsym(&api.gl_handle, NULL, name, true); -+ -+ sym = do_dlsym(&api.glx_handle, GLX_LIB, name, true); -+ api.gl_handle = api.glx_handle; /* skip the dlopen next time */ -+ -+ return sym; - #endif - } - --- -2.13.5 - diff --git a/0002-dispatch-Don-t-reference-glvnd-defines-on-non-glvnd-.patch b/0002-dispatch-Don-t-reference-glvnd-defines-on-non-glvnd-.patch deleted file mode 100644 index 5260fc4..0000000 --- a/0002-dispatch-Don-t-reference-glvnd-defines-on-non-glvnd-.patch +++ /dev/null @@ -1,34 +0,0 @@ -From 82d3b474a47994b5f939b81469dfcec933e5c364 Mon Sep 17 00:00:00 2001 -From: Adam Jackson -Date: Wed, 12 Jul 2017 13:59:44 -0400 -Subject: [PATCH 2/5] dispatch: Don't reference glvnd #defines on non-glvnd - systems - -Broke the build on OSX, oops. - -Resolves: https://github.com/anholt/libepoxy/issues/132 -Signed-off-by: Adam Jackson -(cherry picked from commit 91c9ecebd963c7af1f0ef3d1333ca0a723bdd6d4) ---- - src/dispatch_common.c | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/src/dispatch_common.c b/src/dispatch_common.c -index bbbf913..a7c2f74 100644 ---- a/src/dispatch_common.c -+++ b/src/dispatch_common.c -@@ -597,9 +597,11 @@ epoxy_egl_dlsym(const char *name) - void * - epoxy_conservative_glx_dlsym(const char *name, bool exit_if_fails) - { -+#ifdef GLVND_GLX_LIB - /* prefer the glvnd library if it exists */ - if (!api.glx_handle) - get_dlopen_handle(&api.glx_handle, GLVND_GLX_LIB, false); -+#endif - - return do_dlsym(&api.glx_handle, GLX_LIB, name, exit_if_fails); - } --- -2.13.5 - diff --git a/0003-dispatch-Use-epoxy_conservative_glx_dlsym-when-probi.patch b/0003-dispatch-Use-epoxy_conservative_glx_dlsym-when-probi.patch deleted file mode 100644 index 4285ce6..0000000 --- a/0003-dispatch-Use-epoxy_conservative_glx_dlsym-when-probi.patch +++ /dev/null @@ -1,68 +0,0 @@ -From e571f25187ef53ce41aa46bec6d7d2903ee51170 Mon Sep 17 00:00:00 2001 -From: Adam Jackson -Date: Wed, 12 Jul 2017 14:03:35 -0400 -Subject: [PATCH 3/5] dispatch: Use epoxy_conservative_glx_dlsym when probing - GLX - -This path should also only load libGLX.so if possible. - -Signed-off-by: Adam Jackson -(cherry picked from commit f81274b12470a0ce8678465112998708f63c3559) ---- - src/dispatch_common.c | 26 +++++++++++++------------- - 1 file changed, 13 insertions(+), 13 deletions(-) - -diff --git a/src/dispatch_common.c b/src/dispatch_common.c -index a7c2f74..48bd3f5 100644 ---- a/src/dispatch_common.c -+++ b/src/dispatch_common.c -@@ -500,6 +500,18 @@ epoxy_internal_has_gl_extension(const char *ext, bool invalid_op_mode) - } - } - -+void * -+epoxy_conservative_glx_dlsym(const char *name, bool exit_if_fails) -+{ -+#ifdef GLVND_GLX_LIB -+ /* prefer the glvnd library if it exists */ -+ if (!api.glx_handle) -+ get_dlopen_handle(&api.glx_handle, GLVND_GLX_LIB, false); -+#endif -+ -+ return do_dlsym(&api.glx_handle, GLX_LIB, name, exit_if_fails); -+} -+ - /** - * Tests whether the currently bound context is EGL or GLX, trying to - * avoid loading libraries unless necessary. -@@ -541,7 +553,7 @@ epoxy_current_context_is_glx(void) - * Presumably they dlopened with RTLD_LOCAL, which hides it - * from us. Just go dlopen()ing likely libraries and try them. - */ -- sym = do_dlsym(&api.glx_handle, GLX_LIB, "glXGetCurrentContext", false); -+ sym = epoxy_conservative_glx_dlsym("glXGetCurrentContext", false); - if (sym && glXGetCurrentContext()) - return true; - -@@ -595,18 +607,6 @@ epoxy_egl_dlsym(const char *name) - } - - void * --epoxy_conservative_glx_dlsym(const char *name, bool exit_if_fails) --{ --#ifdef GLVND_GLX_LIB -- /* prefer the glvnd library if it exists */ -- if (!api.glx_handle) -- get_dlopen_handle(&api.glx_handle, GLVND_GLX_LIB, false); --#endif -- -- return do_dlsym(&api.glx_handle, GLX_LIB, name, exit_if_fails); --} -- --void * - epoxy_glx_dlsym(const char *name) - { - return epoxy_conservative_glx_dlsym(name, true); --- -2.13.5 - diff --git a/0004-dispatch-Be-more-paranoid-about-detecting-GLX-or-not.patch b/0004-dispatch-Be-more-paranoid-about-detecting-GLX-or-not.patch deleted file mode 100644 index 827585b..0000000 --- a/0004-dispatch-Be-more-paranoid-about-detecting-GLX-or-not.patch +++ /dev/null @@ -1,62 +0,0 @@ -From f8b473bc44b01eeeca9ebada47ff1165c27f9deb Mon Sep 17 00:00:00 2001 -From: Adam Jackson -Date: Wed, 12 Jul 2017 13:26:05 -0400 -Subject: [PATCH 4/5] dispatch: Be more paranoid about detecting GLX or not - -This code attempts not to dlopen anything if it can find the appropriate -winsys symbols in the global namespace. That's nice. However we normally -do dlopen(RTLD_LOCAL) when we open lib{GLX,EGL} so those symbols will -_not_ in fact be in the global namespace. The code also prefers checking -GLX to EGL, which means even if we initialize EGL through epoxy, and -even if we're using glvnd, we'll still dlopen libGL the first time we -hit epoxy_is_desktop_gl(). - -There's a couple of ways to skin this cat, let's take the easy one. If -either-but-not-both of the glx or egl handles in the global API state -are initialized, then we know we're already in one or the other. If -neither or both are initialized, then the current heuristic should work -fine. - -Note that epoxy_is_desktop_gl() is only bothering to check for GLX to -work around PowerVR's broken GLES. One suspects a better way to do that -would be to check GL_VENDOR or GL_RENDERER and avoid probing the window -system at all. - -Signed-off-by: Adam Jackson -(cherry picked from commit 7c4817f2eed2faf0353c1ceb5f38b500f6aff7cf) ---- - src/dispatch_common.c | 11 ++++++++++- - 1 file changed, 10 insertions(+), 1 deletion(-) - -diff --git a/src/dispatch_common.c b/src/dispatch_common.c -index 48bd3f5..87bd98a 100644 ---- a/src/dispatch_common.c -+++ b/src/dispatch_common.c -@@ -522,6 +522,16 @@ epoxy_current_context_is_glx(void) - #if !PLATFORM_HAS_GLX - return false; - #else -+ void *sym; -+ -+ /* If we've been called already, don't load more */ -+ if (!api.egl_handle != !api.glx_handle) { -+ if (api.glx_handle) -+ return true; -+ else if (api.egl_handle) -+ return false; -+ } -+ - /* If the application hasn't explicitly called some of our GLX - * or EGL code but has presumably set up a context on its own, - * then we need to figure out how to getprocaddress anyway. -@@ -529,7 +539,6 @@ epoxy_current_context_is_glx(void) - * If there's a public GetProcAddress loaded in the - * application's namespace, then use that. - */ -- void *sym; - - sym = dlsym(NULL, "glXGetCurrentContext"); - if (sym) { --- -2.13.5 - diff --git a/0005-dispatch-Fix-the-libOpenGL-soname.patch b/0005-dispatch-Fix-the-libOpenGL-soname.patch deleted file mode 100644 index 0e09007..0000000 --- a/0005-dispatch-Fix-the-libOpenGL-soname.patch +++ /dev/null @@ -1,27 +0,0 @@ -From 5f64275aa1ddcf37c87599d1fae6dab8d58bb976 Mon Sep 17 00:00:00 2001 -From: Adam Jackson -Date: Thu, 7 Sep 2017 17:02:22 -0400 -Subject: [PATCH 5/5] dispatch: Fix the libOpenGL soname - -Brown-paper-bag-for: Adam Jackson -(cherry picked from commit e5372a25baa9034b6223b32a0cab838c42779a39) ---- - src/dispatch_common.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/dispatch_common.c b/src/dispatch_common.c -index 87bd98a..7ec91b6 100644 ---- a/src/dispatch_common.c -+++ b/src/dispatch_common.c -@@ -194,7 +194,7 @@ - #define EGL_LIB "libEGL.so.1" - #define GLES1_LIB "libGLESv1_CM.so.1" - #define GLES2_LIB "libGLESv2.so.2" --#define OPENGL_LIB "libOpenGL.so.1" -+#define OPENGL_LIB "libOpenGL.so.0" - #endif - - #ifdef __GNUC__ --- -2.13.5 - diff --git a/libepoxy.spec b/libepoxy.spec index c318e89..50b1dd6 100644 --- a/libepoxy.spec +++ b/libepoxy.spec @@ -1,7 +1,7 @@ Summary: epoxy runtime library Name: libepoxy -Version: 1.4.3 -Release: 6%{?dist} +Version: 1.5.0 +Release: 1%{?dist} License: MIT URL: https://github.com/anholt/libepoxy Source0: %{url}/releases/download/%{version}/%{name}-%{version}.tar.xz @@ -13,12 +13,6 @@ BuildRequires: pkgconfig(egl) BuildRequires: pkgconfig(glesv2) BuildRequires: python3 -Patch1: 0001-dispatch-Learn-about-glvnd.patch -Patch2: 0002-dispatch-Don-t-reference-glvnd-defines-on-non-glvnd-.patch -Patch3: 0003-dispatch-Use-epoxy_conservative_glx_dlsym-when-probi.patch -Patch4: 0004-dispatch-Be-more-paranoid-about-detecting-GLX-or-not.patch -Patch5: 0005-dispatch-Fix-the-libOpenGL-soname.patch - %description A library for handling OpenGL function pointer management. @@ -63,6 +57,9 @@ developing applications that use %{name}. %{_libdir}/pkgconfig/epoxy.pc %changelog +* Wed Feb 28 2018 Kalev Lember - 1.5.0-1 +- Update to 1.5.0 + * Wed Feb 07 2018 Fedora Release Engineering - 1.4.3-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild diff --git a/sources b/sources index 10a1b66..4d382f5 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (libepoxy-1.4.3.tar.xz) = f5d9fc74b062a0a90aea3abd7621ee4e2e27db359b82cacfbc8df64bceb4b7e4910755a078b46793b25e89d2e87ecb75556313dbad986aa4346f763dd43d2749 +SHA512 (libepoxy-1.5.0.tar.xz) = 86b8047f0fd7b5ab0b06e7662d85cb8a054f2068758c99ca58815335e466a34ac1dbee33ea036902633bb3531fd6a4e4bb8116d68613add08f6f540c1ba32e0c