| 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 |