summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolai Hähnle <nicolai.haehnle@amd.com>2017-06-30 10:52:48 +0200
committerNicolai Hähnle <nicolai.haehnle@amd.com>2017-07-31 15:38:46 +0200
commit6a2346725b69d67490f6fa59bc90929efd206dda (patch)
treed92c4516489045d6fcc1c49b87abe16992d82f3c
parent601093f95ddf6b49a79baa91dc51d4f163dfc8de (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>
-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 c314a43faa..e08448e4ff 100644
--- a/include/GL/internal/dri_interface.h
+++ b/include/GL/internal/dri_interface.h
@@ -1651,13 +1651,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;
/**