Mesa (master): gbm: Add support for the new __driDriverGetExtensions interface.

Eric Anholt anholt at kemper.freedesktop.org
Thu Oct 24 21:48:09 UTC 2013


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

Author: Eric Anholt <eric at anholt.net>
Date:   Fri Oct 11 17:38:18 2013 -0700

gbm: Add support for the new __driDriverGetExtensions interface.

v2: Fix uninitialized variable use in the old-ABI case.

Reviewed-by: Chad Versace <chad.versace at linux.intel.com> (v1)
Reviewed-by: Emil Velikov <emil.l.velikov at gmail.com>

---

 src/gbm/backends/dri/gbm_dri.c |   17 +++++++++++++++--
 1 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/src/gbm/backends/dri/gbm_dri.c b/src/gbm/backends/dri/gbm_dri.c
index ba148ec..ee05ed8 100644
--- a/src/gbm/backends/dri/gbm_dri.c
+++ b/src/gbm/backends/dri/gbm_dri.c
@@ -169,8 +169,9 @@ dri_bind_extensions(struct gbm_dri_device *dri,
 static int
 dri_load_driver(struct gbm_dri_device *dri)
 {
-   const __DRIextension **extensions;
+   const __DRIextension **extensions = NULL;
    char path[PATH_MAX], *search_paths, *p, *next, *end;
+   char *get_extensions_name;
 
    search_paths = NULL;
    if (geteuid() == getuid()) {
@@ -209,7 +210,19 @@ dri_load_driver(struct gbm_dri_device *dri)
       return -1;
    }
 
-   extensions = dlsym(dri->driver, __DRI_DRIVER_EXTENSIONS);
+   if (asprintf(&get_extensions_name, "%s_%s",
+                __DRI_DRIVER_GET_EXTENSIONS, dri->base.driver_name) != -1) {
+      const __DRIextension **(*get_extensions)(void);
+
+      get_extensions = dlsym(dri->driver, get_extensions_name);
+      free(get_extensions_name);
+
+      if (get_extensions)
+         extensions = get_extensions();
+   }
+
+   if (!extensions)
+      extensions = dlsym(dri->driver, __DRI_DRIVER_EXTENSIONS);
    if (extensions == NULL) {
       fprintf(stderr, "gbm: driver exports no extensions (%s)", dlerror());
       dlclose(dri->driver);




More information about the mesa-commit mailing list