From: Emil Velikov <emil.veli...@collabora.com> In order to build EGL, one has to use shared glapi - libglapi.so.
Thus the dlopen/dlsym dance is no longer needed and we can link to the library directly. This allows us to remove a handful of platform specific names of the library. Cc: Jonathan Gray <j...@jsg.id.au> Cc: Jon Turney <jon.tur...@dronecode.org.uk> Cc: Julien Isorce <julien.iso...@gmail.com> Cc: Rob Herring <r...@kernel.org> Cc: Tomasz Figa <tf...@chromium.org> Signed-off-by: Emil Velikov <emil.veli...@collabora.com> --- src/egl/Android.mk | 2 ++ src/egl/Makefile.am | 2 ++ src/egl/drivers/dri2/egl_dri2.c | 40 ++++------------------------------------ src/egl/drivers/dri2/egl_dri2.h | 2 -- 4 files changed, 8 insertions(+), 38 deletions(-) diff --git a/src/egl/Android.mk b/src/egl/Android.mk index d7a6e88918f..4c112c20be2 100644 --- a/src/egl/Android.mk +++ b/src/egl/Android.mk @@ -44,6 +44,7 @@ LOCAL_CFLAGS := \ -DHAVE_ANDROID_PLATFORM LOCAL_C_INCLUDES := \ + $(MESA_TOP)/src/mapi \ $(MESA_TOP)/src/egl/main \ $(MESA_TOP)/src/egl/drivers/dri2 @@ -53,6 +54,7 @@ LOCAL_STATIC_LIBRARIES := \ LOCAL_SHARED_LIBRARIES := \ libdl \ + libglapi \ libhardware \ liblog \ libcutils \ diff --git a/src/egl/Makefile.am b/src/egl/Makefile.am index 8ff1ffaba18..451b2199c6e 100644 --- a/src/egl/Makefile.am +++ b/src/egl/Makefile.am @@ -27,6 +27,7 @@ BUILT_SOURCES = AM_CFLAGS = \ -I$(top_srcdir)/include \ + -I$(top_srcdir)/src/mapi \ -I$(top_srcdir)/src/egl/main \ -I$(top_srcdir)/src/gbm/main \ -I$(top_srcdir)/src \ @@ -45,6 +46,7 @@ libEGL_common_la_SOURCES = \ $(LIBEGL_C_FILES) libEGL_common_la_LIBADD = \ + $(top_builddir)/src/mapi/shared-glapi/libglapi.la \ $(top_builddir)/src/util/libmesautil.la \ $(EGL_LIB_DEPS) diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c index 42bca61cfda..c67117212c8 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -64,6 +64,7 @@ #include "loader/loader.h" #include "util/u_atomic.h" #include "util/u_vector.h" +#include "mapi/glapi/glapi.h" /* The kernel header drm_fourcc.h defines the DRM formats below. We duplicate * some of the definitions here so that building Mesa won't bleeding-edge @@ -1556,7 +1557,7 @@ dri2_get_proc_address(_EGLDriver *drv, const char *procname) { struct dri2_egl_driver *dri2_drv = dri2_egl_driver(drv); - return dri2_drv->get_proc_address(procname); + return _glapi_get_proc_address(procname); } static _EGLSurface* @@ -3159,7 +3160,6 @@ dri2_unload(_EGLDriver *drv) { struct dri2_egl_driver *dri2_drv = dri2_egl_driver(drv); - dlclose(dri2_drv->handle); free(dri2_drv); } @@ -3167,49 +3167,17 @@ static EGLBoolean dri2_load(_EGLDriver *drv) { struct dri2_egl_driver *dri2_drv = dri2_egl_driver(drv); -#ifdef HAVE_ANDROID_PLATFORM - const char *libname = "libglapi.so"; -#elif defined(__APPLE__) - const char *libname = "libglapi.0.dylib"; -#elif defined(__CYGWIN__) - const char *libname = "cygglapi-0.dll"; -#else - const char *libname = "libglapi.so.0"; -#endif - void *handle; - - /* RTLD_GLOBAL to make sure glapi symbols are visible to DRI drivers */ - handle = dlopen(libname, RTLD_LAZY | RTLD_GLOBAL); - if (!handle) { - _eglLog(_EGL_WARNING, "DRI2: failed to open glapi provider"); - goto no_handle; - } - - dri2_drv->get_proc_address = (_EGLProc (*)(const char *)) - dlsym(handle, "_glapi_get_proc_address"); - - /* if glapi is not available, loading DRI drivers will fail */ - if (!dri2_drv->get_proc_address) { - _eglLog(_EGL_WARNING, "DRI2: failed to find _glapi_get_proc_address"); - goto no_symbol; - } dri2_drv->glFlush = (void (*)(void)) - dri2_drv->get_proc_address("glFlush"); + _glapi_get_proc_address("glFlush"); /* if glFlush is not available things are horribly broken */ if (!dri2_drv->glFlush) { _eglLog(_EGL_WARNING, "DRI2: failed to find glFlush entry point"); - goto no_symbol; + return EGL_FALSE; } - dri2_drv->handle = handle; return EGL_TRUE; - -no_symbol: - dlclose(handle); -no_handle: - return EGL_FALSE; } /** diff --git a/src/egl/drivers/dri2/egl_dri2.h b/src/egl/drivers/dri2/egl_dri2.h index 10a41518172..c70a84bb917 100644 --- a/src/egl/drivers/dri2/egl_dri2.h +++ b/src/egl/drivers/dri2/egl_dri2.h @@ -83,8 +83,6 @@ struct dri2_egl_driver { _EGLDriver base; - void *handle; - _EGLProc (*get_proc_address)(const char *procname); void (*glFlush)(void); }; -- 2.14.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev