diff options
author | Nicolai Hähnle <nicolai.haehnle@amd.com> | 2017-06-30 10:52:48 +0200 |
---|---|---|
committer | Nicolai Hähnle <nicolai.haehnle@amd.com> | 2017-08-02 09:50:56 +0200 |
commit | 9435b9c544ec9b8339f31fc89322a9b88af36af5 (patch) | |
tree | aaaa2c4eff12cb5f20a93b57a108c4c1f77014a5 /include | |
parent | 78476cfe071af2ea565c60c5b3234091f39822ec (diff) |
dri: define a version 2 of the DRI_ConfigOptions extension
The new function is defined to return a malloc'ed pointer. In the
following patches, this helps avoid leaking library handles when pipe
drivers are linked dynamically.
It also allows us to generate the XML string on the fly in the future.
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/GL/internal/dri_interface.h | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h index 457fc6308c..31f1eba987 100644 --- a/include/GL/internal/dri_interface.h +++ b/include/GL/internal/dri_interface.h @@ -1655,13 +1655,29 @@ typedef struct __DRInoErrorExtensionRec { * * This extension provides the XML string containing driver options for use by * the loader in supporting the driconf application. + * + * v2: + * - Add the getXml getter function which allows the driver more flexibility in + * how the XML is provided. + * - Deprecate the direct xml pointer. It is only provided as a fallback for + * older versions of libGL and must not be used by clients that are aware of + * the newer version. Future driver versions may set it to NULL. */ #define __DRI_CONFIG_OPTIONS "DRI_ConfigOptions" -#define __DRI_CONFIG_OPTIONS_VERSION 1 +#define __DRI_CONFIG_OPTIONS_VERSION 2 typedef struct __DRIconfigOptionsExtensionRec { __DRIextension base; - const char *xml; + const char *xml; /**< deprecated since v2, use getXml instead */ + + /** + * Get an XML string that describes available driver options for use by a + * config application. + * + * The returned string must be heap-allocated. The caller is responsible for + * freeing it. + */ + char *(*getXml)(const char *driver_name); } __DRIconfigOptionsExtension; /** |