On Sat, Sep 23, 2017 at 1:38 PM, Tomasz Figa <tf...@chromium.org> wrote: > On Wed, Sep 20, 2017 at 2:19 AM, Emil Velikov <emil.l.veli...@gmail.com> > wrote: >> 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. > > Thanks Emil, nice cleanup. Will test with Chrome OS ARC++ build on Monday.
Seems to build and work fine with our build setup when applied on current master. Tested-by: Tomasz Figa <tf...@chromium.org> Best regards, Tomasz > > Best regards, > Tomasz > >> >> 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