summaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorNicolai Hähnle <[email protected]>2017-06-30 10:52:48 +0200
committerNicolai Hähnle <[email protected]>2017-08-02 09:50:56 +0200
commit9435b9c544ec9b8339f31fc89322a9b88af36af5 (patch)
treeaaaa2c4eff12cb5f20a93b57a108c4c1f77014a5 /include
parent78476cfe071af2ea565c60c5b3234091f39822ec (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 <[email protected]>
Diffstat (limited to 'include')
-rw-r--r--include/GL/internal/dri_interface.h20
1 files changed, 18 insertions, 2 deletions
diff --git a/include/GL/internal/dri_interface.h b/include/GL/internal/dri_interface.h
index 457fc6308c5..31f1eba9871 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;
/**