Mesa (master): gbm: dlopen libglapi so gbm_create_device works

Emil Velikov evelikov at kemper.freedesktop.org
Tue Jun 23 16:07:39 UTC 2015


Module: Mesa
Branch: master
Commit: 828f13330c9384f2b55c8b0f962d93a74ecd0601
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=828f13330c9384f2b55c8b0f962d93a74ecd0601

Author: Frank Henigman <fjhenigman at chromium.org>
Date:   Thu Nov  6 16:29:26 2014 -0500

gbm: dlopen libglapi so gbm_create_device works

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.

Cc: "10.5 10.6" <mesa-stable at lists.freedesktop.org>
Signed-off-by: Frank Henigman <fjhenigman at google.com>
[Emil Velikov: Drop misleading bugzilla link, mention that libname differs]
Reviewed-by: Emil Velikov <emil.l.velikov at gmail.com>

---

 src/gbm/backends/dri/gbm_dri.c |    8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c
index 62bdf89..ccc3cc6 100644
--- a/src/gbm/backends/dri/gbm_dri.c
+++ b/src/gbm/backends/dri/gbm_dri.c
@@ -311,6 +311,14 @@ 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.
+    */
+   /* XXX: Library name differs on per platforms basis. Update this as
+    * osx/cygwin/windows/bsd gets support for GBM..
+    */
+   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) {




More information about the mesa-commit mailing list