mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 22:38:05 +02:00
glx: Massive update of comments in struct extension_info
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@intel.com> Cc: Emil Velikov <emil.l.velikov@gmail.com>
This commit is contained in:
parent
a582b22c63
commit
2c7e289d8b
1 changed files with 65 additions and 4 deletions
|
|
@ -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* */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue