blob: 2f1c123b340ba6babd342fa47621f14c06bead3a [file] [log] [blame]
Name
EXT_visual_info
Name Strings
GLX_EXT_visual_info
Version
$Date: 1995/10/06 00:47:08 $ $Revision: 1.14 $
Number
28
Dependencies
SGIS_multisample affects the definition of this extension
Overview
This extension allows the user to request a particular X visual
type to be associated with a GLX visual, and allows the user
to query the X visual type underlying a GLX visual.
In addition, this extension provides a means to request a visual
with a transparent pixel and to query whether a visual supports a
transparent pixel value and the value of the transparent pixel.
Note that the notion of level and transparent pixels are orthogonal as
both layer 1 and layer 0 visuals may or may not have a transparent pixel
value.
Issues
The X server allows two types of transparency: pixel and mask.
For mask, any pixel matching the transparency mask is transparent.
Do we want to include masks? GLX_TRANSPARENT_PIXEL has been changed
from a boolean to an enum to allow for this possibility.
Alpha is no longer included in the transparent pixel, although it
may be useful in the future. Thus, we allow the TRANSPARENT_ALPHA_VALUE
to be queried -- even though it is not used. In the future
a GLX_TRANSPARENT_ALPHA or GLX_TRANSPARENT_RGBA transparency
mode could be added.
Keep tokens for GRAY_SCALE and STATIC_GRAY for future use, even
though they don't match visuals now.
Should glXChooseVisual ignore GLX_TRANSPARENT_INDEX_VALUE_EXT,
GLX_TRANSPARENT_RED_VALUE_EXT, GLX_TRANSPARENT_GREEN_VALUE_EXT,
GLX_TRANSPARENT_BLUE_VALUE_EXT, and GLX_TRANSPARENT_ALPHA_VALUE_EXT
settings in attrib_list if GLX_TRANSPARENT_TYPE_EXT is not set (either
explicitly or implicitly) to a value other than GLX_NONE_EXT? Maybe it
should just match the requested attributes -- even if the request doesn't
make sense.
New Procedures and Functions
None
New Tokens
Accepted by the <attrib> parameter of glXGetConfig, and by the
<attrib_list> parameter of glXChooseVisual:
GLX_X_VISUAL_TYPE_EXT 0x22
GLX_TRANSPARENT_TYPE_EXT 0x23
GLX_TRANSPARENT_INDEX_VALUE_EXT 0x24
GLX_TRANSPARENT_RED_VALUE_EXT 0x25
GLX_TRANSPARENT_GREEN_VALUE_EXT 0x26
GLX_TRANSPARENT_BLUE_VALUE_EXT 0x27
GLX_TRANSPARENT_ALPHA_VALUE_EXT 0x28
Returned by glXGetConfig, and accepted by the <attrib_list>
parameter of glXChooseVisual (following the GLX_X_VISUAL_TYPE_EXT
token):
GLX_TRUE_COLOR_EXT 0x8002
GLX_DIRECT_COLOR_EXT 0x8003
GLX_PSEUDO_COLOR_EXT 0x8004
GLX_STATIC_COLOR_EXT 0x8005
GLX_GRAY_SCALE_EXT 0x8006
GLX_STATIC_GRAY_EXT 0x8007
Returned by glXGetConfig, and accepted by the <attrib_list>
parameter of glXChooseVisual (following the GLX_TRANSPARENT_TYPE_EXT
token):
GLX_NONE_EXT 0x8000
GLX_TRANSPARENT_RGB_EXT 0x8008
GLX_TRANSPARENT_INDEX_EXT 0x8009
Additions to Chapter 2 of the 1.0 Specification (OpenGL Operation)
None
Additions to Chapter 3 of the 1.0 Specification (Rasterization)
None
Additions to Chapter 4 of the 1.0 Specification (Per-Fragment Operations and
the Framebuffer)
Additions to Chapter 5 of the 1.0 Specification (Special Functions)
None
Additions to Chapter 6 of the 1.0 Specification (State and State Requests)
None
Additions to the GLX Specification
The X visual type of a GLX visual can be queried using glXGetConfig().
The visual attribute GLX_TRANSPARENT_TYPE_EXT indicates whether or not
the visual supports transparency, and if it does support transparency,
what type of transparency is available. If the attribute is set to
GLX_NONE_EXT then windows created with the visual will not have any
transparent pixels. If the attribute is GLX_TRANSPARENT_RGB_EXT or
GLX_TRANSPARENT_INDEX_EXT then the visual supports transparency.
GLX_TRANSPARENT_RGB_EXT is only applicable to TrueColor and DirectColor
visuals: a transparent pixel will be drawn when the red, green and blue
values which are read from the framebuffer are equal to
GLX_TRANSPARENT_RED_VALUE_EXT, GLX_TRANSPARENT_GREEN_VALUE_EXT and
GLX_TRANSPARENT_BLUE_VALUE_EXT, respectively. For PseudoColor and
StaticColor the transparency mode GLX_TRANSPARENT_INDEX_EXT is used.
In this case, a transparent pixel will be drawn when the index value that
is read from the framebuffer is equal to GLX_TRANSPARENT_INDEX_VALUE_EXT.
If GLX_TRANSPARENT_TYPE_EXT is GLX_NONE_EXT or GLX_TRANSPARENT_RGB_EXT,
then the value returned for GLX_TRANSPARENT_INDEX_VALUE_EXT is undefined.
If GLX_TRANSPARENT_TYPE_EXT is GLX_NONE_EXT or GLX_TRANSPARENT_INDEX_EXT,
then the values returned for GLX_TRANSPARENT_RED_VALUE_EXT,
GLX_TRANSPARENT_GREEN_VALUE_EXT, and GLX_TRANSPARENT_BLUE_VALUE_EXT are
undefined. When defined, GLX_TRANSPARENT_RED_VALUE_EXT,
GLX_TRANSPARENT_GREEN_VALUE_EXT, and GLX_TRANSPARENT_BLUE_VALUE_EXT are
integer framebuffer values between 0 and the maximum framebuffer value for
the component. For example, GLX_TRANSPARENT_RED_VALUE_EXT will range
between 0 and (2**GLX_RED_SIZE)-1. (GLX_TRANSPARENT_ALPHA_VALUE_EXT is
for future use.)
Attribute Type Notes
--------- ---- -----
GLX_USE_GL boolean True if OpenGL rendering is supported
GLX_BUFFER_SIZE integer depth of the color buffer
GLX_LEVEL integer frame buffer level
GLX_RGBA boolean True if in RGBA rendering is supported
GLX_DOUBLEBUFFER boolean True if color buffers have front/back pairs
GLX_STEREO boolean True if color buffers have left/right pairs
GLX_AUX_BUFFERS integer number of auxiliary color buffers
GLX_RED_SIZE integer number of bits of Red in the framebuffer
GLX_GREEN_SIZE integer number of bits of Green in the framebuffer
GLX_BLUE_SIZE integer number of bits of Blue in the framebuffer
GLX_ALPHA_SIZE integer number of bits of Alpha in the framebuffer
GLX_DEPTH_SIZE integer number of bits in the depth buffer
GLX_STENCIL_SIZE integer number of bits in the stencil buffer
GLX_ACCUM_RED_SIZE integer number of bits of Red in the accumulation buffer
GLX_ACCUM_GREEN_SIZE integer number of bits of Green in the accumulation buffer
GLX_ACCUM_BLUE_SIZE integer number of bits of Blue in the accumulation buffer
GLX_ACCUM_ALPHA_SIZE integer number of bits of Alpha in the accumulation buffer
GLX_SAMPLE_BUFFERS_SGIS integer number of multisample buffers
GLX_SAMPLES_SGIS integer number of samples stored in each multisample buffer
GLX_X_VISUAL_TYPE_EXT integer X visual type of the GLX visual
GLX_TRANSPARENT_TYPE_EXT enum None, TRANSPARENT_RGB_EXT, or TRANSPARENT_INDEX_EXT
GLX_TRANSPARENT_INDEX_VALUE_EXT integer transparent index value.
GLX_TRANSPARENT_RED_VALUE_EXT integer transparent red value.
GLX_TRANSPARENT_GREEN_VALUE_EXT integer transparent green value.
GLX_TRANSPARENT_BLUE_VALUE_EXT integer transparent blue value.
GLX_TRANSPARENT_ALPHA_VALUE_EXT integer transparent alpha value.
Table 1: Configuration attributes
glXGetConfig returns one of the values in table 2 (below) when called
with attribute name GLX_X_VISUAL_TYPE_EXT.
GLX token name X Visual Type
-------------- -------------
GLX_TRUE_COLOR_EXT TrueColor
GLX_DIRECT_COLOR_EXT DirectColor
GLX_PSEUDO_COLOR_EXT PseudoColor
GLX_STATIC_COLOR_EXT StaticColor
GLX_GRAY_SCALE_EXT GrayScale
GLX_STATIC_GRAY_EXT StaticGray
Table 2: X visual type token values
Replace the GLX specification discussion of glXChooseVisual with
the following text:
glXChooseVisual is used to find a visual that matches the client's
specified attributes.
XVisualInfo* glXChooseVisual( Display *dpy, int screen,
int *attrib_list );
glXChooseVisual returns a pointer to an XVisualInfo structure
describing the visual that best meets a minimum specification. The
boolean GLX attributes of the visual that is returned will match the
specification exactly. The integer GLX attributes will meet or exceed
the specified minimum values. The enumerated GLX attributes are
matched in an attribute-specific manner. If no conforming visual
exists, NULL is returned.
The enumerated attribute GLX_X_VISUAL_TYPE_EXT specifies which X
visual type is required for the requested GLX visual.
If GLX_RGBA is in <attrib_list>, then only GLX_TRUE_COLOR_EXT and
GLX_DIRECT_COLOR_EXT can produce a match. If GLX_X_VISUAL_TYPE_EXT
is not in <attrib_list>, and if all other attributes are equivalent,
then a TrueColor visual will be chosen in preference to a DirectColor
visual.
If GLX_RGBA is not in <attrib_list>, then only GLX_PSEUDO_COLOR_EXT and
GLX_STATIC_COLOR_EXT can produce a match. If GLX_X_VISUAL_TYPE_EXT
is not in <attrib_list>, and if all other attributes are equivalent,
then a PseudoColor visual will be chosen in preference to a StaticColor
visual.
The tokens GLX_GRAY_SCALE_EXT and GLX_STATIC_GRAY_EXT will not match
current OpenGL enabled visuals, but are included for future use.
If GLX_TRANSPARENT_TYPE_EXT is not included in <attrib_list>,
then the attribute will be treated as a "don't care" and a
visual with or without a transparent pixel may be chosen.
If GLX_TRANSPARENT_TYPE_EXT is not included in <attrib_list>, or if it
is set to GLX_NONE_EXT, then inclusion of GLX_TRANSPARENT_INDEX_VALUE_EXT,
GLX_TRANSPARENT_RED_VALUE_EXT, GLX_TRANSPARENT_GREEN_VALUE_EXT,
GLX_TRANSPARENT_BLUE_VALUE_EXT, or GLX_TRANSPARENT_ALPHA_VALUE_EXT
will be ignored.
All boolean GLX attributes default to False except GLX_USE_GL, which
defaults to True. All integer attributes default to zero.
Default specifications are superseded by the attributes included in
<attrib_list>. Integer attributes are immediately followed by the
corresponding desired value. Boolean attributes appearing in
<attrib_list> have an implicit True value; such attributes are never
followed by an explicit True or False value. The list is terminated
with None.
To free the data returned, use XFree().
NULL is returned if an undefined GLX attribute is encountered, or
if an unacceptable enumerated attribute value is encountered.
GLX Protocol
Seven new property type/property value pairs are included in the property
list of each visual returned by glXGetVisualConfigs. The property
type/property value pairs are encoded as
4 ENUM property type
0x22 GLX_X_VISUAL_TYPE_EXT
4 ENUM property value
0x8002 GLX_TRUE_COLOR_EXT
0x8003 GLX_DIRECT_COLOR_EXT
0x8004 GLX_PSEUDO_COLOR_EXT
0x8005 GLX_STATIC_COLOR_EXT
0x8006 GLX_GRAY_SCALE_EXT
0x8007 GLX_STATIC_GRAY_EXT
4 ENUM property type
0x23 GLX_TRANSPARENT_TYPE_EXT
4 ENUM property value
0x8000 GLX_NONE_EXT
0x8008 GLX_TRANSPARENT_RGB_EXT
0x8009 GLX_TRANSPARENT_INDEX_EXT
4 ENUM property type
0x24 GLX_TRANSPARENT_INDEX_VALUE_EXT
4 BOOL32 property value
4 ENUM property type
0x25 GLX_TRANSPARENT_RED_VALUE_EXT
4 INT32 property value
4 ENUM property type
0x26 GLX_TRANSPARENT_GREEN_VALUE_EXT
4 INT32 property value
4 ENUM property type
0x27 GLX_TRANSPARENT_BLUE_VALUE_EXT
4 INT32 property value
4 ENUM property type
0x28 GLX_TRANSPARENT_ALPHA_VALUE_EXT
4 INT32 property value
Dependencies on SGIS_multisample
If SGIS_multisample is not supported, references to
GLX_SAMPLE_BUFFERS_SGIS and GLX_SAMPLES_SGIS in this document are
invalid and should be ignored.
Errors
None
New State
None
New Implementation Dependent State
Get Value Get Command Type
--------- ----------- ----
GLX_X_VISUAL_TYPE_EXT glXGetConfig Z6
GLX_TRANSPARENT_TYPE_EXT glXGetConfig
GLX_TRANSPARENT_INDEX_VALUE_EXT glXGetConfig
GLX_TRANSPARENT_RED_VALUE_EXT glXGetConfig
GLX_TRANSPARENT_GREEN_VALUE_EXT glXGetConfig
GLX_TRANSPARENT_BLUE_VALUE_EXT glXGetConfig
GLX_TRANSPARENT_ALPHA_VALUE_EXT glXGetConfig