<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
              "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
<refentry id="glXGetFBConfigAttrib">
    <refmeta>
        <refmetainfo>
            <copyright>
                <year>1991-2006</year>
                <holder>Silicon Graphics, Inc.</holder>
            </copyright>
        </refmetainfo>
        <refentrytitle>glXGetFBConfigAttrib</refentrytitle>
        <manvolnum>3G</manvolnum>
    </refmeta>
    <refnamediv>
        <refname>glXGetFBConfigAttrib</refname>
        <refpurpose>return information about a GLX frame buffer configuration</refpurpose>
    </refnamediv>
    <refsynopsisdiv><title>C Specification</title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>int <function>glXGetFBConfigAttrib</function></funcdef>
                <paramdef>Display * <parameter>dpy</parameter></paramdef>
                <paramdef>GLXFBConfig <parameter>config</parameter></paramdef>
                <paramdef>int <parameter>attribute</parameter></paramdef>
                <paramdef>int * <parameter>value</parameter></paramdef>
            </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>
    <!-- eqn: ignoring delim $$ -->
    <refsect1 id="parameters"><title>Parameters</title>
        <variablelist>
        <varlistentry>
            <term><parameter>dpy</parameter></term>
            <listitem>
                <para>
                    Specifies the connection to the X server.
                </para>
            </listitem>
        </varlistentry>
        <varlistentry>
            <term><parameter>config</parameter></term>
            <listitem>
                <para>
                    Specifies the GLX frame buffer configuration to be queried.
                </para>
            </listitem>
        </varlistentry>
        <varlistentry>
            <term><parameter>attribute</parameter></term>
            <listitem>
                <para>
                    Specifies the attribute to be returned.
                </para>
            </listitem>
        </varlistentry>
        <varlistentry>
            <term><parameter>value</parameter></term>
            <listitem>
                <para>
                    Returns the requested value.
                </para>
            </listitem>
        </varlistentry>
        </variablelist>
    </refsect1>
    <refsect1 id="description"><title>Description</title>
        <para>
            <function>glXGetFBConfigAttrib</function> sets <parameter>value</parameter> to the <parameter>attribute</parameter> value of GLX drawables
            created with respect to <parameter>config</parameter>.
            <function>glXGetFBConfigAttrib</function> returns an error code if it fails for any reason.
            Otherwise, <constant>Success</constant> is returned.
        </para>
        <para>
            <parameter>attribute</parameter> is one of the following:
        </para>
        <para>
        </para>
        <variablelist>
            <varlistentry>
                <term><constant>GLX_FBCONFIG_ID</constant></term>
                <listitem>
                    <para>
                        XID of the given GLXFBConfig.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_BUFFER_SIZE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Number of bits per color buffer.
                        If the frame buffer configuration supports RGBA contexts, then
                        <constant>GLX_BUFFER_SIZE</constant> is the sum of
                        <constant>GLX_RED_SIZE</constant>,
                        <constant>GLX_GREEN_SIZE</constant>,
                        <constant>GLX_BLUE_SIZE</constant>, and
                        <constant>GLX_ALPHA_SIZE</constant>.
                        If the frame buffer configuration supports only color index contexts,
                        <constant>GLX_BUFFER_SIZE</constant> is the size of the
                        color indexes.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_LEVEL</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Frame buffer level of the configuration.
                        Level zero is the default frame buffer.
                        Positive levels correspond to frame buffers that overlay the default buffer,
                        and negative levels correspond to frame buffers that underlie the default
                        buffer.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_DOUBLEBUFFER</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        <constant>True</constant> if color buffers exist in front/back pairs that can be swapped,
                        <constant>False</constant> otherwise.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_STEREO</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        <constant>True</constant> if color buffers exist in left/right pairs,
                        <constant>False</constant> otherwise.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_AUX_BUFFERS</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Number of auxiliary color buffers that are available.
                        Zero indicates that no auxiliary color buffers exist.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_RED_SIZE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Number of bits of red stored in each color buffer.
                        Undefined if RGBA contexts are not supported by the frame buffer configuration.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_GREEN_SIZE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Number of bits of green stored in each color buffer.
                        Undefined if RGBA contexts are not supported by the frame buffer configuration.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_BLUE_SIZE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Number of bits of blue stored in each color buffer.
                        Undefined if RGBA contexts are not supported by the frame buffer configuration.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_ALPHA_SIZE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Number of bits of alpha stored in each color buffer.
                        Undefined if RGBA contexts are not supported by the frame buffer configuration.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_DEPTH_SIZE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Number of bits in the depth buffer.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_STENCIL_SIZE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Number of bits in the stencil buffer.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_ACCUM_RED_SIZE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Number of bits of red stored in the accumulation buffer.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_ACCUM_GREEN_SIZE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Number of bits of green stored in the accumulation buffer.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_ACCUM_BLUE_SIZE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Number of bits of blue stored in the accumulation buffer.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_ACCUM_ALPHA_SIZE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Number of bits of alpha stored in the accumulation buffer.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_RENDER_TYPE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Mask indicating what type of GLX contexts can be made
                        current to the frame buffer configuration. Valid bits are 
                        <constant>GLX_RGBA_BIT</constant> and
                        <constant>GLX_COLOR_INDEX_BIT</constant>.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_DRAWABLE_TYPE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Mask indicating what drawable types the frame buffer configuration
                        supports. Valid bits are <constant>GLX_WINDOW_BIT</constant>,
                        <constant>GLX_PIXMAP_BIT</constant>, and <constant>GLX_PBUFFER_BIT</constant>.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_X_RENDERABLE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        <constant>True</constant> if drawables created with the 
                        frame buffer configuration can be rendered to by X.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_VISUAL_ID</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        XID of the corresponding visual, or zero 
                        if there is no associated visual (i.e., if
                        <constant>GLX_X_RENDERABLE</constant> is <constant>False</constant> or
                        <constant>GLX_DRAWABLE_TYPE</constant> does not have the
                        <constant>GLX_WINDOW_BIT</constant> bit set).
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_X_VISUAL_TYPE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Visual type of associated visual. The returned value will be one of:
                        <constant>GLX_TRUE_COLOR</constant>, <constant>GLX_DIRECT_COLOR</constant>, <constant>GLX_PSEUDO_COLOR</constant>,
                        <constant>GLX_STATIC_COLOR</constant>, <constant>GLX_GRAY_SCALE</constant>, <constant>GLX_STATIC_GRAY</constant>,
                        or <constant>GLX_NONE</constant>, if there is no associated visual (i.e., if
                        <constant>GLX_X_RENDERABLE</constant> is <constant>False</constant> or
                        <constant>GLX_DRAWABLE_TYPE</constant> does not have the
                        <constant>GLX_WINDOW_BIT</constant> bit set).
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_CONFIG_CAVEAT</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        One of <constant>GLX_NONE</constant>,
                        <constant>GLX_SLOW_CONFIG</constant>, or 
                        <constant>GLX_NON_CONFORMANT_CONFIG</constant>, indicating
                        that the frame buffer configuration has no caveats,
                        some aspect of the frame buffer configuration runs slower
                        than other frame buffer configurations, or some aspect of the
                        frame buffer configuration is nonconformant, respectively.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_TRANSPARENT_TYPE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        One of <constant>GLX_NONE</constant>,
                        <constant>GLX_TRANSPARENT_RGB</constant>,
                        <constant>GLX_TRANSPARENT_INDEX</constant>, indicating that 
                        the frame buffer configuration is opaque, is transparent for particular
                        values of red, green, and blue, or is transparent for
                        particular index values, respectively.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_TRANSPARENT_INDEX_VALUE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Integer value between 0 and the maximum
                        frame buffer value for indices, indicating the transparent
                        index value for the frame buffer configuration. 
                        Undefined if <constant>GLX_TRANSPARENT_TYPE</constant>
                        is not <constant>GLX_TRANSPARENT_INDEX</constant>.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_TRANSPARENT_RED_VALUE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Integer value between 0 and the maximum
                        frame buffer value for red, indicating the transparent
                        red value for the frame buffer configuration. 
                        Undefined if <constant>GLX_TRANSPARENT_TYPE</constant>
                        is not <constant>GLX_TRANSPARENT_RGB</constant>.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_TRANSPARENT_GREEN_VALUE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Integer value between 0 and the maximum
                        frame buffer value for green, indicating the transparent
                        green value for the frame buffer configuration. 
                        Undefined if <constant>GLX_TRANSPARENT_TYPE</constant>
                        is not <constant>GLX_TRANSPARENT_RGB</constant>.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_TRANSPARENT_BLUE_VALUE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Integer value between 0 and the maximum
                        frame buffer value for blue, indicating the transparent
                        blue value for the frame buffer configuration. 
                        Undefined if <constant>GLX_TRANSPARENT_TYPE</constant>
                        is not <constant>GLX_TRANSPARENT_RGB</constant>.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_TRANSPARENT_ALPHA_VALUE</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        Integer value between 0 and the maximum
                        frame buffer value for alpha, indicating the transparent
                        blue value for the frame buffer configuration. 
                        Undefined if <constant>GLX_TRANSPARENT_TYPE</constant>
                        is not <constant>GLX_TRANSPARENT_RGB</constant>.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_MAX_PBUFFER_WIDTH</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        The maximum width that can be specified to 
                        <citerefentry><refentrytitle>glXCreatePbuffer</refentrytitle></citerefentry>.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_MAX_PBUFFER_HEIGHT</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        The maximum height that can be specified to 
                        <citerefentry><refentrytitle>glXCreatePbuffer</refentrytitle></citerefentry>.
                    </para>
                </listitem>
            </varlistentry>
            <varlistentry>
                <term><constant>GLX_MAX_PBUFFER_PIXELS</constant></term>
                <listitem>
                    <para>
                    </para>
                    <para>
                        The maximum number of pixels (width times height) for a 
                        pixel buffer. Note that this value may be less than
                        <constant>GLX_MAX_PBUFFER_WIDTH</constant> times
                        <constant>GLX_MAX_PBUFFER_HEIGHT</constant>. Also, this
                        value is static and assumes that no other pixel buffers 
                        or X resources are contending for the frame buffer memory. 
                        As a result, it may not be possible to allocate a pixel buffer of
                        the size given by <constant>GLX_MAX_PBUFFER_PIXELS</constant>.
                    </para>
                </listitem>
            </varlistentry>
        </variablelist>
        <para>
            Applications should choose the frame buffer configuration that most closely
            meets their requirements.
            Creating windows, GLX pixmaps, or GLX pixel buffers with unnecessary buffers 
            can result in
            reduced rendering performance as well as poor resource allocation.
        </para>
    </refsect1>
    <refsect1 id="notes"><title>Notes</title>
        <para>
            <function>glXGetFBConfigAttrib</function> is available only if the GLX version is 1.3 or greater.
        </para>
        <para>
            If the GLX version is 1.1 or 1.0, the GL version must be 1.0.
            If the GLX version is 1.2, then the GL version must be 1.1.
            If the GLX version is 1.3, then the GL version must be 1.2.
        </para>
    </refsect1>
    <refsect1 id="errors"><title>Errors</title>
        <para>
            <constant>GLX_NO_EXTENSION</constant> is returned if <parameter>dpy</parameter> does not support the GLX
            extension.
            <constant>GLX_BAD_ATTRIBUTE</constant> is returned if <parameter>attribute</parameter> is not a valid GLX attribute.
        </para>
    </refsect1>
    <refsect1 id="seealso"><title>See Also</title>
        <para>
            <citerefentry><refentrytitle>glXGetFBConfigs</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>glXChooseFBConfig</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>glXGetVisualFromFBConfig</refentrytitle></citerefentry>,
            <citerefentry><refentrytitle>glXGetConfig</refentrytitle></citerefentry>
        </para>
    </refsect1>
    <refsect1 id="Copyright"><title>Copyright</title>
        <para>
            Copyright <trademark class="copyright"></trademark> 1991-2006
            Silicon Graphics, Inc. This document is licensed under the SGI
            Free Software B License. For details, see
            <ulink url="http://oss.sgi.com/projects/FreeB/">http://oss.sgi.com/projects/FreeB/</ulink>.
        </para>
    </refsect1>
</refentry>
