[Mesa-dev] [PATCH] glx: Massive update of comments in struct extension_info
Ian Romanick
idr at freedesktop.org
Wed Apr 15 11:36:45 PDT 2015
From: Ian Romanick <ian.d.romanick at intel.com>
In response to another patch, Emil asked for some clarification how this
stuff works. Rather than just reply to the e-mail, I decided to update
the exlanation in the code.
Signed-off-by: Ian Romanick <ian.d.romanick at intel.com>
Cc: Emil Velikov <emil.l.velikov at gmail.com>
---
src/glx/glxextensions.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 65 insertions(+), 4 deletions(-)
diff --git a/src/glx/glxextensions.c b/src/glx/glxextensions.c
index a326f0d..cb8cd66 100644
--- a/src/glx/glxextensions.c
+++ b/src/glx/glxextensions.c
@@ -61,12 +61,73 @@ struct extension_info
*/
unsigned char version_major;
unsigned char version_minor;
+
+ /**
+ * The client (i.e., libGL) supports this extension.
+ *
+ * Except during bring up, all extensions should have this set to Y. There
+ * are a few cases of extensions that have partial (or speculative)
+ * support, but these are rare. There also shouldn't be any new ones
+ * added.
+ *
+ * Generally, extensions require server support and ::client_support to be
+ * enabled. If the display is capable of direct rendering,
+ * ::direct_support is also required.
+ *
+ * \sa ::client_only
+ */
unsigned char client_support;
+
+ /**
+ * The direct-renderer (e.g., i965_dri.so) supports this extension.
+ *
+ * For cases where all of the infrastructure to support the extension is a
+ * required part of the loader/driver interface, this can default to Y.
+ * For most cases, extended functionality, usually in the form of DRI2
+ * extensions, is necessary to support the extension. The loader will set
+ * the flag true if all the requirements are met.
+ *
+ * If the display is capable of direct rendering, ::direct_support is
+ * required for the extension to be enabled.
+ */
unsigned char direct_support;
- unsigned char client_only; /** Is the extension client-side only? */
- unsigned char direct_only; /** Is the extension for direct
- * contexts only?
- */
+
+ /**
+ * The extension depends only on client support.
+ *
+ * This is for extensions like GLX_ARB_get_proc_address that are contained
+ * entirely in the client library. There is no dependency on the server or
+ * the direct-renderer.
+ *
+ * These extensions will be enabled if ::client_support is set.
+ *
+ * \note
+ * An extension \b cannot be both client-only and direct-only because being
+ * direct-only implies a dependency on the direct renderer.
+ *
+ * \sa ::client_support, ::direct_only
+ */
+ unsigned char client_only;
+
+ /**
+ * The extension only functions with direct-rendering contexts
+ *
+ * The extension has no GLX protocol, and, therefore, no explicit
+ * dependency on the server. The functionality is contained entirely in
+ * the client library and the direct renderer. A few of the swap-related
+ * extensions are intended to behave this way.
+ *
+ * These extensions will be enabled if both ::client_support and
+ * ::direct_support are set.
+ *
+ * \note
+ * An extension \b cannot be both client-only and direct-only because being
+ * client-only implies that all functionality is outside the
+ * direct-renderer.
+ *
+ * \sa ::direct_support, ::client_only
+ */
+ unsigned char direct_only;
};
/* *INDENT-OFF* */
--
2.1.0
More information about the mesa-dev
mailing list