[Mesa-dev] [PATCH] gbm: dlopen libglapi so gbm_create_device works

Frank Henigman fjhenigman at google.com
Thu Nov 6 13:29:26 PST 2014


From: Frank Henigman <fjhenigman at chromium.org>

Dri driver libs are not linked to pull in libglapi so gbm_create_device()
fails when it tries to dlopen them (unless the application is linked
with something that does pull in libglapi, like libGL).
Until dri drivers can be fixed properly, dlopen libglapi before trying
to dlopen them.
https://bugs.freedesktop.org/show_bug.cgi?id=57702

Signed-off-by: Frank Henigman <fjhenigman at google.com>
---
 src/gbm/backends/dri/gbm_dri.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c
index f637e32..6ea2294 100644
--- a/src/gbm/backends/dri/gbm_dri.c
+++ b/src/gbm/backends/dri/gbm_dri.c
@@ -311,6 +311,11 @@ dri_open_driver(struct gbm_dri_device *dri)
    if (search_paths == NULL)
       search_paths = DEFAULT_DRIVER_DIR;
 
+   /* Temporarily work around dri driver libs that need symbols in libglapi
+    * but don't automatically link it in.
+    */
+   dlopen("libglapi.so.0", RTLD_LAZY | RTLD_GLOBAL);
+
    dri->driver = NULL;
    end = search_paths + strlen(search_paths);
    for (p = search_paths; p < end && dri->driver == NULL; p = next + 1) {
-- 
2.1.0.rc2.206.gedb03e5



More information about the mesa-dev mailing list