Update to 1.5.0
This commit is contained in:
parent
138287cadc
commit
2c56df3e58
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,3 +1,4 @@
|
||||
/libepoxy-*.tar.gz
|
||||
/v*.tar.gz
|
||||
/libepoxy-1.4.3.tar.xz
|
||||
/libepoxy-1.5.0.tar.xz
|
||||
|
@ -1,94 +0,0 @@
|
||||
From 58ca477e14c05435f32e4393ff31e8281e8e8c9d Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
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 <ajax@redhat.com>
|
||||
(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
|
||||
|
@ -1,34 +0,0 @@
|
||||
From 82d3b474a47994b5f939b81469dfcec933e5c364 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
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 <ajax@redhat.com>
|
||||
(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
|
||||
|
@ -1,68 +0,0 @@
|
||||
From e571f25187ef53ce41aa46bec6d7d2903ee51170 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
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 <ajax@redhat.com>
|
||||
(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
|
||||
|
@ -1,62 +0,0 @@
|
||||
From f8b473bc44b01eeeca9ebada47ff1165c27f9deb Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
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 <ajax@redhat.com>
|
||||
(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
|
||||
|
@ -1,27 +0,0 @@
|
||||
From 5f64275aa1ddcf37c87599d1fae6dab8d58bb976 Mon Sep 17 00:00:00 2001
|
||||
From: Adam Jackson <ajax@redhat.com>
|
||||
Date: Thu, 7 Sep 2017 17:02:22 -0400
|
||||
Subject: [PATCH 5/5] dispatch: Fix the libOpenGL soname
|
||||
|
||||
Brown-paper-bag-for: Adam Jackson <ajax@redhat.com>
|
||||
(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
|
||||
|
@ -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 <klember@redhat.com> - 1.5.0-1
|
||||
- Update to 1.5.0
|
||||
|
||||
* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 1.4.3-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
|
2
sources
2
sources
@ -1 +1 @@
|
||||
SHA512 (libepoxy-1.4.3.tar.xz) = f5d9fc74b062a0a90aea3abd7621ee4e2e27db359b82cacfbc8df64bceb4b7e4910755a078b46793b25e89d2e87ecb75556313dbad986aa4346f763dd43d2749
|
||||
SHA512 (libepoxy-1.5.0.tar.xz) = 86b8047f0fd7b5ab0b06e7662d85cb8a054f2068758c99ca58815335e466a34ac1dbee33ea036902633bb3531fd6a4e4bb8116d68613add08f6f540c1ba32e0c
|
||||
|
Loading…
Reference in New Issue
Block a user