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