diff options
author | Eric Anholt <[email protected]> | 2013-06-26 15:15:57 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2013-10-24 14:04:20 -0700 |
commit | cf5d8fc310dbf59a61e4859b79219b3ac3b223ac (patch) | |
tree | 7b9e509193702046b0c01a7af1bc272699091f8e /src/glx | |
parent | 80806c98ef9892abb225965f29027c9b201749ec (diff) |
dri: Allow config options to be passed to the loader through extensions.
Turns out already we have this nice mechanism for providing optional
things from the driver to the loader, and I was going to have to rename
the public global symbol to avoid conflicts when doing megadrivers.
While the former __driConfigOptions is technically loader interface, this
is the only loader that made use of that symbol. Continue paying
attention to it if we can't find the new option, to retain compatibility
with old drivers.
Reviewed-by: Matt Turner <[email protected]>
Reviewed-by: Chad Versace <[email protected]>
Reviewed-by: Emil Velikov <[email protected]>
Diffstat (limited to 'src/glx')
-rw-r--r-- | src/glx/dri_glx.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/src/glx/dri_glx.c b/src/glx/dri_glx.c index faed9d0d16d..a1475b02ba6 100644 --- a/src/glx/dri_glx.c +++ b/src/glx/dri_glx.c @@ -184,10 +184,21 @@ _X_EXPORT const char * glXGetDriverConfig(const char *driverName) { void *handle = driOpenDriver(driverName); - if (handle) - return dlsym(handle, "__driConfigOptions"); - else + const __DRIextension **extensions; + + if (!handle) return NULL; + + extensions = driGetDriverExtensions(handle); + if (extensions) { + for (int i = 0; extensions[i]; i++) { + if (strcmp(extensions[i]->name, __DRI_CONFIG_OPTIONS) == 0) + return ((__DRIconfigOptionsExtension *)extensions[i])->xml; + } + } + + /* Fall back to the old method */ + return dlsym(handle, "__driConfigOptions"); } #ifdef XDAMAGE_1_1_INTERFACE |