diff options
Diffstat (limited to 'src/egl')
-rw-r--r-- | src/egl/Android.mk | 1 | ||||
-rw-r--r-- | src/egl/Makefile.am | 2 | ||||
-rw-r--r-- | src/egl/drivers/dri2/egl_dri2.c | 42 | ||||
-rw-r--r-- | src/egl/drivers/dri2/egl_dri2.h | 2 |
4 files changed, 7 insertions, 40 deletions
diff --git a/src/egl/Android.mk b/src/egl/Android.mk index d7a6e88918f..2de842ca417 100644 --- a/src/egl/Android.mk +++ b/src/egl/Android.mk @@ -53,6 +53,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 f140f5d6412..eeb745f973a 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 adcaae0bab7..c2b16d11732 100644 --- a/src/egl/drivers/dri2/egl_dri2.c +++ b/src/egl/drivers/dri2/egl_dri2.c @@ -62,6 +62,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 @@ -1564,9 +1565,7 @@ dri2_surface_get_dri_drawable(_EGLSurface *surf) static _EGLProc 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* @@ -3169,7 +3168,6 @@ dri2_unload(_EGLDriver *drv) { struct dri2_egl_driver *dri2_drv = dri2_egl_driver(drv); - dlclose(dri2_drv->handle); free(dri2_drv); } @@ -3177,49 +3175,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); }; |